mirror of
https://codeberg.org/davrot/forgejo.git
synced 2025-04-21 23:36:43 +02:00
Compare commits
93 commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
12a277ed65 | ||
![]() |
e43b9edc36 | ||
![]() |
c131de73a5 | ||
![]() |
b8fc56885e | ||
![]() |
7f4efb1c34 | ||
![]() |
779ed6cf3f | ||
![]() |
11bb77313e | ||
![]() |
c2f99a5a1f | ||
![]() |
d1c4670e45 | ||
![]() |
fe35a17dbe | ||
![]() |
d66a184f45 | ||
![]() |
932801ae18 | ||
![]() |
d6d6561295 | ||
![]() |
18b60db6ae | ||
![]() |
1b36e34fc4 | ||
![]() |
d2d161ad28 | ||
![]() |
f2f2d7dab2 | ||
![]() |
1667fece88 | ||
![]() |
044cd5cf7e | ||
![]() |
dfd1b2fdcd | ||
![]() |
bf1839aed3 | ||
![]() |
26f0a7e779 | ||
![]() |
a7f4346f5e | ||
![]() |
d2ee58fb2a | ||
![]() |
aec4a0dd59 | ||
![]() |
5ffa1ee883 | ||
![]() |
3cd20d7d37 | ||
![]() |
d8c8fa9bae | ||
![]() |
d7e2fd555c | ||
![]() |
1f9104d96f | ||
![]() |
ea5a8c7809 | ||
![]() |
5ae3b81f3c | ||
![]() |
6d2c29ae85 | ||
![]() |
0496e72d15 | ||
![]() |
e90a48fd4b | ||
![]() |
e2ffe12e50 | ||
![]() |
2c0c6f408e | ||
![]() |
092cb967b0 | ||
![]() |
d62cbfe923 | ||
![]() |
43bad93715 | ||
![]() |
eb80c9429e | ||
![]() |
946a10a8d5 | ||
![]() |
a7165d1fb0 | ||
![]() |
47b67fcafc | ||
![]() |
7d3a013e5e | ||
![]() |
4cb10ff28a | ||
![]() |
00e5c68060 | ||
![]() |
700e9f027b | ||
![]() |
9ee88e965e | ||
![]() |
0ae05e1000 | ||
![]() |
2ff9e77dba | ||
![]() |
4ddf4a8fd3 | ||
![]() |
4c7fef22f6 | ||
![]() |
01e7095968 | ||
![]() |
f1e413eb7c | ||
![]() |
67b9b0c76e | ||
![]() |
56f9ddc9af | ||
![]() |
00749b3a8f | ||
![]() |
8da48fead3 | ||
![]() |
b835f0a1b0 | ||
![]() |
f8c0a352ab | ||
![]() |
859fa4e489 | ||
![]() |
e8a67571a1 | ||
![]() |
28c8a889bb | ||
![]() |
3003195ad7 | ||
![]() |
c400f26e6c | ||
![]() |
0a0a3cea1b | ||
![]() |
cb88d55837 | ||
![]() |
e1e7299bd9 | ||
![]() |
d8ae7d9e96 | ||
![]() |
b28a070a52 | ||
![]() |
b2483b2ae0 | ||
![]() |
14c7055494 | ||
![]() |
81b9977540 | ||
![]() |
a75862bd7d | ||
![]() |
99baeb47e5 | ||
![]() |
7d45c1c6c7 | ||
![]() |
5442b0a6b1 | ||
![]() |
da0c4ab199 | ||
![]() |
658ed564cb | ||
![]() |
eb4f1de8ec | ||
![]() |
ba7da0af31 | ||
![]() |
74712e3400 | ||
![]() |
6c16834d28 | ||
![]() |
81308159fd | ||
![]() |
2f1a737769 | ||
![]() |
5b6d8a303d | ||
![]() |
d26b7902ec | ||
![]() |
1a8f1482af | ||
![]() |
84718e7b17 | ||
![]() |
232179aa3d | ||
![]() |
300e01f733 | ||
![]() |
d727757cfb |
147 changed files with 8584 additions and 2426 deletions
2
.forgejo/testdata/build-release/go.mod
vendored
2
.forgejo/testdata/build-release/go.mod
vendored
|
@ -1,3 +1,3 @@
|
|||
module code.gitea.io/gitea
|
||||
|
||||
go 1.23.1
|
||||
go 1.23.2
|
||||
|
|
|
@ -25,7 +25,7 @@ jobs:
|
|||
if: ${{ !startsWith(vars.ROLE, 'forgejo-') }}
|
||||
runs-on: self-hosted
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- id: forgejo
|
||||
uses: https://code.forgejo.org/actions/setup-forgejo@v1
|
||||
|
|
|
@ -27,7 +27,7 @@ jobs:
|
|||
# root is used for testing, allow it
|
||||
if: vars.ROLE == 'forgejo-integration' || github.repository_owner == 'root'
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
|
@ -37,7 +37,7 @@ jobs:
|
|||
repository="${{ github.repository }}"
|
||||
echo "value=${repository##*/}" >> "$GITHUB_OUTPUT"
|
||||
|
||||
- uses: https://code.forgejo.org/actions/setup-node@v3
|
||||
- uses: https://code.forgejo.org/actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20
|
||||
|
||||
|
@ -87,7 +87,7 @@ jobs:
|
|||
|
||||
- name: cache node_modules
|
||||
id: node
|
||||
uses: https://code.forgejo.org/actions/cache@v3
|
||||
uses: https://code.forgejo.org/actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
node_modules
|
||||
|
|
|
@ -39,7 +39,7 @@ jobs:
|
|||
runs-on: self-hosted
|
||||
if: vars.DOER != '' && vars.FORGEJO != '' && vars.TO_OWNER != '' && vars.FROM_OWNER != '' && secrets.TOKEN != ''
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: copy & sign
|
||||
uses: https://code.forgejo.org/forgejo/forgejo-build-publish/publish@v5
|
||||
|
|
|
@ -11,7 +11,7 @@ jobs:
|
|||
container:
|
||||
image: 'code.forgejo.org/oci/node:20-bookworm'
|
||||
steps:
|
||||
- uses: https://code.forgejo.org/actions/checkout@v3
|
||||
- uses: https://code.forgejo.org/actions/checkout@v4
|
||||
|
||||
- uses: https://code.forgejo.org/actions/setup-go@v4
|
||||
with:
|
||||
|
|
|
@ -12,7 +12,7 @@ jobs:
|
|||
container:
|
||||
image: 'code.forgejo.org/oci/node:20-bookworm'
|
||||
steps:
|
||||
- uses: https://code.forgejo.org/actions/checkout@v3
|
||||
- uses: https://code.forgejo.org/actions/checkout@v4
|
||||
|
||||
- name: event
|
||||
run: |
|
||||
|
|
|
@ -19,7 +19,7 @@ jobs:
|
|||
cat <<'EOF'
|
||||
${{ toJSON(github) }}
|
||||
EOF
|
||||
- uses: https://code.forgejo.org/actions/checkout@v3
|
||||
- uses: https://code.forgejo.org/actions/checkout@v4
|
||||
- uses: https://code.forgejo.org/actions/setup-go@v4
|
||||
with:
|
||||
go-version-file: "go.mod"
|
||||
|
@ -39,7 +39,7 @@ jobs:
|
|||
container:
|
||||
image: 'code.forgejo.org/oci/node:20-bookworm'
|
||||
steps:
|
||||
- uses: https://code.forgejo.org/actions/checkout@v3
|
||||
- uses: https://code.forgejo.org/actions/checkout@v4
|
||||
- run: make deps-frontend
|
||||
- run: make lint-frontend
|
||||
- run: make checks-frontend
|
||||
|
@ -66,7 +66,7 @@ jobs:
|
|||
MINIO_ROOT_USER: 123456
|
||||
MINIO_ROOT_PASSWORD: 12345678
|
||||
steps:
|
||||
- uses: https://code.forgejo.org/actions/checkout@v3
|
||||
- uses: https://code.forgejo.org/actions/checkout@v4
|
||||
- uses: https://code.forgejo.org/actions/setup-go@v4
|
||||
with:
|
||||
go-version-file: "go.mod"
|
||||
|
@ -131,7 +131,7 @@ jobs:
|
|||
image: ${{ matrix.cacher.image }}
|
||||
options: ${{ matrix.cacher.options }}
|
||||
steps:
|
||||
- uses: https://code.forgejo.org/actions/checkout@v3
|
||||
- uses: https://code.forgejo.org/actions/checkout@v4
|
||||
- uses: https://code.forgejo.org/actions/setup-go@v4
|
||||
with:
|
||||
go-version-file: "go.mod"
|
||||
|
@ -183,7 +183,7 @@ jobs:
|
|||
#
|
||||
MYSQL_EXTRA_FLAGS: --innodb-adaptive-flushing=OFF --innodb-buffer-pool-size=4G --innodb-log-buffer-size=128M --innodb-flush-log-at-trx-commit=0 --innodb-flush-log-at-timeout=30 --innodb-flush-method=nosync --innodb-fsync-threshold=1000000000
|
||||
steps:
|
||||
- uses: https://code.forgejo.org/actions/checkout@v3
|
||||
- uses: https://code.forgejo.org/actions/checkout@v4
|
||||
- uses: https://code.forgejo.org/actions/setup-go@v4
|
||||
with:
|
||||
go-version-file: "go.mod"
|
||||
|
@ -237,7 +237,7 @@ jobs:
|
|||
POSTGRES_DB: test
|
||||
POSTGRES_PASSWORD: postgres
|
||||
steps:
|
||||
- uses: https://code.forgejo.org/actions/checkout@v3
|
||||
- uses: https://code.forgejo.org/actions/checkout@v4
|
||||
- uses: https://code.forgejo.org/actions/setup-go@v4
|
||||
with:
|
||||
go-version-file: "go.mod"
|
||||
|
@ -280,7 +280,7 @@ jobs:
|
|||
container:
|
||||
image: 'code.forgejo.org/oci/node:20-bookworm'
|
||||
steps:
|
||||
- uses: https://code.forgejo.org/actions/checkout@v3
|
||||
- uses: https://code.forgejo.org/actions/checkout@v4
|
||||
- uses: https://code.forgejo.org/actions/setup-go@v4
|
||||
with:
|
||||
go-version-file: "go.mod"
|
||||
|
@ -329,7 +329,7 @@ jobs:
|
|||
container:
|
||||
image: 'code.forgejo.org/oci/node:20-bookworm'
|
||||
steps:
|
||||
- uses: https://code.forgejo.org/actions/checkout@v3
|
||||
- uses: https://code.forgejo.org/actions/checkout@v4
|
||||
- uses: https://code.forgejo.org/actions/setup-go@v4
|
||||
with:
|
||||
go-version-file: "go.mod"
|
||||
|
|
11
cmd/serv.go
11
cmd/serv.go
|
@ -147,6 +147,12 @@ func runServ(c *cli.Context) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
defer func() {
|
||||
if err := recover(); err != nil {
|
||||
_ = fail(ctx, "Internal Server Error", "Panic: %v\n%s", err, log.Stack(2))
|
||||
}
|
||||
}()
|
||||
|
||||
keys := strings.Split(c.Args().First(), "-")
|
||||
if len(keys) != 2 || keys[0] != "key" {
|
||||
return fail(ctx, "Key ID format error", "Invalid key argument: %s", c.Args().First())
|
||||
|
@ -193,10 +199,7 @@ func runServ(c *cli.Context) error {
|
|||
}
|
||||
|
||||
verb := words[0]
|
||||
repoPath := words[1]
|
||||
if repoPath[0] == '/' {
|
||||
repoPath = repoPath[1:]
|
||||
}
|
||||
repoPath := strings.TrimPrefix(words[1], "/")
|
||||
|
||||
var lfsVerb string
|
||||
if verb == lfsAuthenticateVerb {
|
||||
|
|
|
@ -529,7 +529,8 @@ INTERNAL_TOKEN =
|
|||
;; HMAC to encode urls with, it **is required** if camo is enabled.
|
||||
;HMAC_KEY =
|
||||
;; Set to true to use camo for https too lese only non https urls are proxyed
|
||||
;ALLWAYS = false
|
||||
;; ALLWAYS is deprecated and will be removed in the future
|
||||
;ALWAYS = false
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
|
6
go.mod
6
go.mod
|
@ -1,6 +1,6 @@
|
|||
module code.gitea.io/gitea
|
||||
|
||||
go 1.23.1
|
||||
go 1.23.2
|
||||
|
||||
require (
|
||||
code.forgejo.org/f3/gof3/v3 v3.7.0
|
||||
|
@ -75,7 +75,7 @@ require (
|
|||
github.com/meilisearch/meilisearch-go v0.28.0
|
||||
github.com/mholt/archiver/v3 v3.5.1
|
||||
github.com/microcosm-cc/bluemonday v1.0.27
|
||||
github.com/minio/minio-go/v7 v7.0.74
|
||||
github.com/minio/minio-go/v7 v7.0.77
|
||||
github.com/msteinert/pam v1.2.0
|
||||
github.com/nektos/act v0.2.52
|
||||
github.com/niklasfasching/go-org v1.7.0
|
||||
|
@ -250,7 +250,7 @@ require (
|
|||
github.com/rhysd/actionlint v1.6.27 // indirect
|
||||
github.com/rivo/uniseg v0.4.7 // indirect
|
||||
github.com/rogpeppe/go-internal v1.12.0 // indirect
|
||||
github.com/rs/xid v1.5.0 // indirect
|
||||
github.com/rs/xid v1.6.0 // indirect
|
||||
github.com/russross/blackfriday/v2 v2.1.0 // indirect
|
||||
github.com/sagikazarmark/locafero v0.4.0 // indirect
|
||||
github.com/sagikazarmark/slog-shim v0.1.0 // indirect
|
||||
|
|
8
go.sum
8
go.sum
|
@ -502,8 +502,8 @@ github.com/miekg/dns v1.1.59 h1:C9EXc/UToRwKLhK5wKU/I4QVsBUc8kE6MkHBkeypWZs=
|
|||
github.com/miekg/dns v1.1.59/go.mod h1:nZpewl5p6IvctfgrckopVx2OlSEHPRO/U4SYkRklrEk=
|
||||
github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34=
|
||||
github.com/minio/md5-simd v1.1.2/go.mod h1:MzdKDxYpY2BT9XQFocsiZf/NKVtR7nkE4RoEpN+20RM=
|
||||
github.com/minio/minio-go/v7 v7.0.74 h1:fTo/XlPBTSpo3BAMshlwKL5RspXRv9us5UeHEGYCFe0=
|
||||
github.com/minio/minio-go/v7 v7.0.74/go.mod h1:qydcVzV8Hqtj1VtEocfxbmVFa2siu6HGa+LDEPogjD8=
|
||||
github.com/minio/minio-go/v7 v7.0.77 h1:GaGghJRg9nwDVlNbwYjSDJT1rqltQkBFDsypWX1v3Bw=
|
||||
github.com/minio/minio-go/v7 v7.0.77/go.mod h1:AVM3IUN6WwKzmwBxVdjzhH8xq+f57JSbbvzqvUzR6eg=
|
||||
github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw=
|
||||
github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw=
|
||||
github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s=
|
||||
|
@ -599,8 +599,8 @@ github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4
|
|||
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
|
||||
github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
|
||||
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
|
||||
github.com/rs/xid v1.5.0 h1:mKX4bl4iPYJtEIxp6CYiUuLQ/8DYMoz0PUdtGgMFRVc=
|
||||
github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
|
||||
github.com/rs/xid v1.6.0 h1:fV591PaemRlL6JfRxGDEPl69wICngIQ3shQtzfy2gxU=
|
||||
github.com/rs/xid v1.6.0/go.mod h1:7XoLgs4eV+QndskICGsho+ADou8ySMSjJKDIan90Nz0=
|
||||
github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
|
||||
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
||||
github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ=
|
||||
|
|
|
@ -118,21 +118,23 @@ func DeleteScheduleTaskByRepo(ctx context.Context, id int64) error {
|
|||
return committer.Commit()
|
||||
}
|
||||
|
||||
func CleanRepoScheduleTasks(ctx context.Context, repo *repo_model.Repository) error {
|
||||
func CleanRepoScheduleTasks(ctx context.Context, repo *repo_model.Repository, cancelPreviousJobs bool) error {
|
||||
// If actions disabled when there is schedule task, this will remove the outdated schedule tasks
|
||||
// There is no other place we can do this because the app.ini will be changed manually
|
||||
if err := DeleteScheduleTaskByRepo(ctx, repo.ID); err != nil {
|
||||
return fmt.Errorf("DeleteCronTaskByRepo: %v", err)
|
||||
}
|
||||
// cancel running cron jobs of this repository and delete old schedules
|
||||
if err := CancelPreviousJobs(
|
||||
ctx,
|
||||
repo.ID,
|
||||
repo.DefaultBranch,
|
||||
"",
|
||||
webhook_module.HookEventSchedule,
|
||||
); err != nil {
|
||||
return fmt.Errorf("CancelPreviousJobs: %v", err)
|
||||
if cancelPreviousJobs {
|
||||
// cancel running cron jobs of this repository and delete old schedules
|
||||
if err := CancelPreviousJobs(
|
||||
ctx,
|
||||
repo.ID,
|
||||
repo.DefaultBranch,
|
||||
"",
|
||||
webhook_module.HookEventSchedule,
|
||||
); err != nil {
|
||||
return fmt.Errorf("CancelPreviousJobs: %v", err)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -34,6 +34,7 @@ type ActivityStats struct {
|
|||
OpenedPRAuthorCount int64
|
||||
MergedPRs issues_model.PullRequestList
|
||||
MergedPRAuthorCount int64
|
||||
ActiveIssues issues_model.IssueList
|
||||
OpenedIssues issues_model.IssueList
|
||||
OpenedIssueAuthorCount int64
|
||||
ClosedIssues issues_model.IssueList
|
||||
|
@ -172,7 +173,7 @@ func (stats *ActivityStats) MergedPRPerc() int {
|
|||
|
||||
// ActiveIssueCount returns total active issue count
|
||||
func (stats *ActivityStats) ActiveIssueCount() int {
|
||||
return stats.OpenedIssueCount() + stats.ClosedIssueCount()
|
||||
return len(stats.ActiveIssues)
|
||||
}
|
||||
|
||||
// OpenedIssueCount returns open issue count
|
||||
|
@ -285,13 +286,21 @@ func (stats *ActivityStats) FillIssues(ctx context.Context, repoID int64, fromTi
|
|||
stats.ClosedIssueAuthorCount = count
|
||||
|
||||
// New issues
|
||||
sess = issuesForActivityStatement(ctx, repoID, fromTime, false, false)
|
||||
sess = newlyCreatedIssues(ctx, repoID, fromTime)
|
||||
sess.OrderBy("issue.created_unix ASC")
|
||||
stats.OpenedIssues = make(issues_model.IssueList, 0)
|
||||
if err = sess.Find(&stats.OpenedIssues); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Active issues
|
||||
sess = activeIssues(ctx, repoID, fromTime)
|
||||
sess.OrderBy("issue.created_unix ASC")
|
||||
stats.ActiveIssues = make(issues_model.IssueList, 0)
|
||||
if err = sess.Find(&stats.ActiveIssues); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Opened issue authors
|
||||
sess = issuesForActivityStatement(ctx, repoID, fromTime, false, false)
|
||||
if _, err = sess.Select("count(distinct issue.poster_id) as `count`").Table("issue").Get(&count); err != nil {
|
||||
|
@ -317,6 +326,23 @@ func (stats *ActivityStats) FillUnresolvedIssues(ctx context.Context, repoID int
|
|||
return sess.Find(&stats.UnresolvedIssues)
|
||||
}
|
||||
|
||||
func newlyCreatedIssues(ctx context.Context, repoID int64, fromTime time.Time) *xorm.Session {
|
||||
sess := db.GetEngine(ctx).Where("issue.repo_id = ?", repoID).
|
||||
And("issue.is_pull = ?", false). // Retain the is_pull check to exclude pull requests
|
||||
And("issue.created_unix >= ?", fromTime.Unix()) // Include all issues created after fromTime
|
||||
|
||||
return sess
|
||||
}
|
||||
|
||||
func activeIssues(ctx context.Context, repoID int64, fromTime time.Time) *xorm.Session {
|
||||
sess := db.GetEngine(ctx).Where("issue.repo_id = ?", repoID).
|
||||
And("issue.is_pull = ?", false).
|
||||
And("issue.created_unix >= ?", fromTime.Unix()).
|
||||
Or("issue.closed_unix >= ?", fromTime.Unix())
|
||||
|
||||
return sess
|
||||
}
|
||||
|
||||
func issuesForActivityStatement(ctx context.Context, repoID int64, fromTime time.Time, closed, unresolved bool) *xorm.Session {
|
||||
sess := db.GetEngine(ctx).Where("issue.repo_id = ?", repoID).
|
||||
And("issue.is_closed = ?", closed)
|
||||
|
|
|
@ -94,3 +94,22 @@
|
|||
content: "test markup light/dark-mode-only "
|
||||
created_unix: 946684813
|
||||
updated_unix: 946684813
|
||||
|
||||
-
|
||||
id: 11
|
||||
type: 22 # review
|
||||
poster_id: 5
|
||||
issue_id: 3 # in repo_id 1
|
||||
content: "reviewed by user5"
|
||||
review_id: 21
|
||||
created_unix: 946684816
|
||||
|
||||
-
|
||||
id: 12
|
||||
type: 27 # review request
|
||||
poster_id: 2
|
||||
issue_id: 3 # in repo_id 1
|
||||
content: "review request for user5"
|
||||
review_id: 22
|
||||
assignee_id: 5
|
||||
created_unix: 946684817
|
||||
|
|
|
@ -179,3 +179,22 @@
|
|||
content: "Review Comment"
|
||||
updated_unix: 946684810
|
||||
created_unix: 946684810
|
||||
|
||||
-
|
||||
id: 21
|
||||
type: 2
|
||||
reviewer_id: 5
|
||||
issue_id: 3
|
||||
content: "reviewed by user5"
|
||||
commit_id: 4a357436d925b5c974181ff12a994538ddc5a269
|
||||
updated_unix: 946684816
|
||||
created_unix: 946684816
|
||||
|
||||
-
|
||||
id: 22
|
||||
type: 4
|
||||
reviewer_id: 5
|
||||
issue_id: 3
|
||||
content: "review request for user5"
|
||||
updated_unix: 946684817
|
||||
created_unix: 946684817
|
||||
|
|
|
@ -408,7 +408,7 @@ func (pr *PullRequest) getReviewedByLines(ctx context.Context, writer io.Writer)
|
|||
|
||||
// Note: This doesn't page as we only expect a very limited number of reviews
|
||||
reviews, err := FindLatestReviews(ctx, FindReviewOptions{
|
||||
Type: ReviewTypeApprove,
|
||||
Types: []ReviewType{ReviewTypeApprove},
|
||||
IssueID: pr.IssueID,
|
||||
OfficialOnly: setting.Repository.PullRequest.DefaultMergeMessageOfficialApproversOnly,
|
||||
})
|
||||
|
|
|
@ -364,7 +364,7 @@ func GetCurrentReview(ctx context.Context, reviewer *user_model.User, issue *Iss
|
|||
return nil, nil
|
||||
}
|
||||
reviews, err := FindReviews(ctx, FindReviewOptions{
|
||||
Type: ReviewTypePending,
|
||||
Types: []ReviewType{ReviewTypePending},
|
||||
IssueID: issue.ID,
|
||||
ReviewerID: reviewer.ID,
|
||||
})
|
||||
|
|
|
@ -92,7 +92,7 @@ func (reviews ReviewList) LoadIssues(ctx context.Context) error {
|
|||
// FindReviewOptions represent possible filters to find reviews
|
||||
type FindReviewOptions struct {
|
||||
db.ListOptions
|
||||
Type ReviewType
|
||||
Types []ReviewType
|
||||
IssueID int64
|
||||
ReviewerID int64
|
||||
OfficialOnly bool
|
||||
|
@ -107,8 +107,8 @@ func (opts *FindReviewOptions) toCond() builder.Cond {
|
|||
if opts.ReviewerID > 0 {
|
||||
cond = cond.And(builder.Eq{"reviewer_id": opts.ReviewerID})
|
||||
}
|
||||
if opts.Type != ReviewTypeUnknown {
|
||||
cond = cond.And(builder.Eq{"type": opts.Type})
|
||||
if len(opts.Types) > 0 {
|
||||
cond = cond.And(builder.In("type", opts.Types))
|
||||
}
|
||||
if opts.OfficialOnly {
|
||||
cond = cond.And(builder.Eq{"official": true})
|
||||
|
|
|
@ -64,7 +64,7 @@ func TestReviewType_Icon(t *testing.T) {
|
|||
func TestFindReviews(t *testing.T) {
|
||||
require.NoError(t, unittest.PrepareTestDatabase())
|
||||
reviews, err := issues_model.FindReviews(db.DefaultContext, issues_model.FindReviewOptions{
|
||||
Type: issues_model.ReviewTypeApprove,
|
||||
Types: []issues_model.ReviewType{issues_model.ReviewTypeApprove},
|
||||
IssueID: 2,
|
||||
ReviewerID: 1,
|
||||
})
|
||||
|
@ -76,7 +76,7 @@ func TestFindReviews(t *testing.T) {
|
|||
func TestFindLatestReviews(t *testing.T) {
|
||||
require.NoError(t, unittest.PrepareTestDatabase())
|
||||
reviews, err := issues_model.FindLatestReviews(db.DefaultContext, issues_model.FindReviewOptions{
|
||||
Type: issues_model.ReviewTypeApprove,
|
||||
Types: []issues_model.ReviewType{issues_model.ReviewTypeApprove},
|
||||
IssueID: 11,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
|
10
models/organization/TestInconsistentOwnerTeam/team.yml
Normal file
10
models/organization/TestInconsistentOwnerTeam/team.yml
Normal file
|
@ -0,0 +1,10 @@
|
|||
-
|
||||
id: 1000
|
||||
org_id: 1000
|
||||
lower_name: owners
|
||||
name: Owners
|
||||
authorize: 4 # owner
|
||||
num_repos: 0
|
||||
num_members: 0
|
||||
includes_all_repositories: true
|
||||
can_create_org_repo: true
|
59
models/organization/TestInconsistentOwnerTeam/team_unit.yml
Normal file
59
models/organization/TestInconsistentOwnerTeam/team_unit.yml
Normal file
|
@ -0,0 +1,59 @@
|
|||
-
|
||||
id: 1000
|
||||
team_id: 1000
|
||||
type: 1
|
||||
access_mode: 0 # None
|
||||
|
||||
-
|
||||
id: 1001
|
||||
team_id: 1000
|
||||
type: 2
|
||||
access_mode: 0
|
||||
|
||||
-
|
||||
id: 1002
|
||||
team_id: 1000
|
||||
type: 3
|
||||
access_mode: 0
|
||||
|
||||
-
|
||||
id: 1003
|
||||
team_id: 1000
|
||||
type: 4
|
||||
access_mode: 0
|
||||
|
||||
-
|
||||
id: 1004
|
||||
team_id: 1000
|
||||
type: 5
|
||||
access_mode: 0
|
||||
|
||||
-
|
||||
id: 1005
|
||||
team_id: 1000
|
||||
type: 6
|
||||
access_mode: 0
|
||||
|
||||
-
|
||||
id: 1006
|
||||
team_id: 1000
|
||||
type: 7
|
||||
access_mode: 0
|
||||
|
||||
-
|
||||
id: 1007
|
||||
team_id: 1000
|
||||
type: 8
|
||||
access_mode: 0
|
||||
|
||||
-
|
||||
id: 1008
|
||||
team_id: 1000
|
||||
type: 9
|
||||
access_mode: 0
|
||||
|
||||
-
|
||||
id: 1009
|
||||
team_id: 1000
|
||||
type: 10
|
||||
access_mode: 0
|
|
@ -268,3 +268,43 @@ func IncrTeamRepoNum(ctx context.Context, teamID int64) error {
|
|||
_, err := db.GetEngine(ctx).Incr("num_repos").ID(teamID).Update(new(Team))
|
||||
return err
|
||||
}
|
||||
|
||||
// CountInconsistentOwnerTeams returns the amount of owner teams that have all of
|
||||
// their access modes set to "None".
|
||||
func CountInconsistentOwnerTeams(ctx context.Context) (int64, error) {
|
||||
return db.GetEngine(ctx).Table("team").
|
||||
Join("INNER", "team_unit", "`team`.id = `team_unit`.team_id").
|
||||
Where("`team`.lower_name = ?", strings.ToLower(OwnerTeamName)).
|
||||
GroupBy("`team_unit`.team_id").
|
||||
Having("SUM(`team_unit`.access_mode) = 0").
|
||||
Count()
|
||||
}
|
||||
|
||||
// FixInconsistentOwnerTeams fixes inconsistent owner teams that have all of
|
||||
// their access modes set to "None", it sets it back to "Owner".
|
||||
func FixInconsistentOwnerTeams(ctx context.Context) (int64, error) {
|
||||
teamIDs := []int64{}
|
||||
if err := db.GetEngine(ctx).Table("team").
|
||||
Select("`team`.id").
|
||||
Join("INNER", "team_unit", "`team`.id = `team_unit`.team_id").
|
||||
Where("`team`.lower_name = ?", strings.ToLower(OwnerTeamName)).
|
||||
GroupBy("`team_unit`.team_id").
|
||||
Having("SUM(`team_unit`.access_mode) = 0").
|
||||
Find(&teamIDs); err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
if err := db.Iterate(ctx, builder.In("team_id", teamIDs), func(ctx context.Context, bean *TeamUnit) error {
|
||||
if bean.Type == unit.TypeExternalTracker || bean.Type == unit.TypeExternalWiki {
|
||||
bean.AccessMode = perm.AccessModeRead
|
||||
} else {
|
||||
bean.AccessMode = perm.AccessModeOwner
|
||||
}
|
||||
_, err := db.GetEngine(ctx).ID(bean.ID).Table("team_unit").Cols("access_mode").Update(bean)
|
||||
return err
|
||||
}); err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
return int64(len(teamIDs)), nil
|
||||
}
|
||||
|
|
|
@ -4,11 +4,14 @@
|
|||
package organization_test
|
||||
|
||||
import (
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
"code.gitea.io/gitea/models/db"
|
||||
"code.gitea.io/gitea/models/organization"
|
||||
"code.gitea.io/gitea/models/perm"
|
||||
"code.gitea.io/gitea/models/unittest"
|
||||
"code.gitea.io/gitea/modules/setting"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
@ -198,3 +201,50 @@ func TestUsersInTeamsCount(t *testing.T) {
|
|||
test([]int64{1, 2, 3, 4, 5}, []int64{2, 5}, 2) // userid 2,4
|
||||
test([]int64{1, 2, 3, 4, 5}, []int64{2, 3, 5}, 3) // userid 2,4,5
|
||||
}
|
||||
|
||||
func TestInconsistentOwnerTeam(t *testing.T) {
|
||||
defer unittest.OverrideFixtures(
|
||||
unittest.FixturesOptions{
|
||||
Dir: filepath.Join(setting.AppWorkPath, "models/fixtures/"),
|
||||
Base: setting.AppWorkPath,
|
||||
Dirs: []string{"models/organization/TestInconsistentOwnerTeam/"},
|
||||
},
|
||||
)()
|
||||
require.NoError(t, unittest.PrepareTestDatabase())
|
||||
|
||||
unittest.AssertExistsAndLoadBean(t, &organization.TeamUnit{ID: 1000, TeamID: 1000, AccessMode: perm.AccessModeNone})
|
||||
unittest.AssertExistsAndLoadBean(t, &organization.TeamUnit{ID: 1001, TeamID: 1000, AccessMode: perm.AccessModeNone})
|
||||
unittest.AssertExistsAndLoadBean(t, &organization.TeamUnit{ID: 1002, TeamID: 1000, AccessMode: perm.AccessModeNone})
|
||||
unittest.AssertExistsAndLoadBean(t, &organization.TeamUnit{ID: 1003, TeamID: 1000, AccessMode: perm.AccessModeNone})
|
||||
unittest.AssertExistsAndLoadBean(t, &organization.TeamUnit{ID: 1004, TeamID: 1000, AccessMode: perm.AccessModeNone})
|
||||
unittest.AssertExistsAndLoadBean(t, &organization.TeamUnit{ID: 1005, TeamID: 1000, AccessMode: perm.AccessModeNone})
|
||||
unittest.AssertExistsAndLoadBean(t, &organization.TeamUnit{ID: 1006, TeamID: 1000, AccessMode: perm.AccessModeNone})
|
||||
unittest.AssertExistsAndLoadBean(t, &organization.TeamUnit{ID: 1007, TeamID: 1000, AccessMode: perm.AccessModeNone})
|
||||
unittest.AssertExistsAndLoadBean(t, &organization.TeamUnit{ID: 1008, TeamID: 1000, AccessMode: perm.AccessModeNone})
|
||||
unittest.AssertExistsAndLoadBean(t, &organization.TeamUnit{ID: 1009, TeamID: 1000, AccessMode: perm.AccessModeNone})
|
||||
|
||||
count, err := organization.CountInconsistentOwnerTeams(db.DefaultContext)
|
||||
require.NoError(t, err)
|
||||
require.EqualValues(t, 1, count)
|
||||
|
||||
count, err = organization.FixInconsistentOwnerTeams(db.DefaultContext)
|
||||
require.NoError(t, err)
|
||||
require.EqualValues(t, 1, count)
|
||||
|
||||
count, err = organization.CountInconsistentOwnerTeams(db.DefaultContext)
|
||||
require.NoError(t, err)
|
||||
require.EqualValues(t, 0, count)
|
||||
|
||||
unittest.AssertExistsAndLoadBean(t, &organization.TeamUnit{ID: 1000, AccessMode: perm.AccessModeOwner})
|
||||
unittest.AssertExistsAndLoadBean(t, &organization.TeamUnit{ID: 1001, AccessMode: perm.AccessModeOwner})
|
||||
unittest.AssertExistsAndLoadBean(t, &organization.TeamUnit{ID: 1002, AccessMode: perm.AccessModeOwner})
|
||||
unittest.AssertExistsAndLoadBean(t, &organization.TeamUnit{ID: 1003, AccessMode: perm.AccessModeOwner})
|
||||
unittest.AssertExistsAndLoadBean(t, &organization.TeamUnit{ID: 1004, AccessMode: perm.AccessModeOwner})
|
||||
unittest.AssertExistsAndLoadBean(t, &organization.TeamUnit{ID: 1007, AccessMode: perm.AccessModeOwner})
|
||||
unittest.AssertExistsAndLoadBean(t, &organization.TeamUnit{ID: 1008, AccessMode: perm.AccessModeOwner})
|
||||
unittest.AssertExistsAndLoadBean(t, &organization.TeamUnit{ID: 1009, AccessMode: perm.AccessModeOwner})
|
||||
|
||||
// External wiki and issue
|
||||
unittest.AssertExistsAndLoadBean(t, &organization.TeamUnit{ID: 1005, AccessMode: perm.AccessModeRead})
|
||||
unittest.AssertExistsAndLoadBean(t, &organization.TeamUnit{ID: 1006, AccessMode: perm.AccessModeRead})
|
||||
}
|
||||
|
|
|
@ -421,6 +421,10 @@ func (u *User) IsIndividual() bool {
|
|||
return u.Type == UserTypeIndividual
|
||||
}
|
||||
|
||||
func (u *User) IsUser() bool {
|
||||
return u.Type == UserTypeIndividual || u.Type == UserTypeBot
|
||||
}
|
||||
|
||||
// IsBot returns whether or not the user is of type bot
|
||||
func (u *User) IsBot() bool {
|
||||
return u.Type == UserTypeBot
|
||||
|
|
|
@ -18,8 +18,32 @@ func FullSteps(task *actions_model.ActionTask) []*actions_model.ActionTaskStep {
|
|||
return fullStepsOfEmptySteps(task)
|
||||
}
|
||||
|
||||
firstStep := task.Steps[0]
|
||||
// firstStep is the first step that has run or running, not include preStep.
|
||||
// For example,
|
||||
// 1. preStep(Success) -> step1(Success) -> step2(Running) -> step3(Waiting) -> postStep(Waiting): firstStep is step1.
|
||||
// 2. preStep(Success) -> step1(Skipped) -> step2(Success) -> postStep(Success): firstStep is step2.
|
||||
// 3. preStep(Success) -> step1(Running) -> step2(Waiting) -> postStep(Waiting): firstStep is step1.
|
||||
// 4. preStep(Success) -> step1(Skipped) -> step2(Skipped) -> postStep(Skipped): firstStep is nil.
|
||||
// 5. preStep(Success) -> step1(Cancelled) -> step2(Cancelled) -> postStep(Cancelled): firstStep is nil.
|
||||
var firstStep *actions_model.ActionTaskStep
|
||||
// lastHasRunStep is the last step that has run.
|
||||
// For example,
|
||||
// 1. preStep(Success) -> step1(Success) -> step2(Running) -> step3(Waiting) -> postStep(Waiting): lastHasRunStep is step1.
|
||||
// 2. preStep(Success) -> step1(Success) -> step2(Success) -> step3(Success) -> postStep(Success): lastHasRunStep is step3.
|
||||
// 3. preStep(Success) -> step1(Success) -> step2(Failure) -> step3 -> postStep(Waiting): lastHasRunStep is step2.
|
||||
// So its Stopped is the Started of postStep when there are no more steps to run.
|
||||
var lastHasRunStep *actions_model.ActionTaskStep
|
||||
|
||||
var logIndex int64
|
||||
for _, step := range task.Steps {
|
||||
if firstStep == nil && (step.Status.HasRun() || step.Status.IsRunning()) {
|
||||
firstStep = step
|
||||
}
|
||||
if step.Status.HasRun() {
|
||||
lastHasRunStep = step
|
||||
}
|
||||
logIndex += step.LogLength
|
||||
}
|
||||
|
||||
preStep := &actions_model.ActionTaskStep{
|
||||
Name: preStepName,
|
||||
|
@ -28,32 +52,17 @@ func FullSteps(task *actions_model.ActionTask) []*actions_model.ActionTaskStep {
|
|||
Status: actions_model.StatusRunning,
|
||||
}
|
||||
|
||||
if firstStep.Status.HasRun() || firstStep.Status.IsRunning() {
|
||||
// No step has run or is running, so preStep is equal to the task
|
||||
if firstStep == nil {
|
||||
preStep.Stopped = task.Stopped
|
||||
preStep.Status = task.Status
|
||||
} else {
|
||||
preStep.LogLength = firstStep.LogIndex
|
||||
preStep.Stopped = firstStep.Started
|
||||
preStep.Status = actions_model.StatusSuccess
|
||||
} else if task.Status.IsDone() {
|
||||
preStep.Stopped = task.Stopped
|
||||
preStep.Status = actions_model.StatusFailure
|
||||
if task.Status.IsSkipped() {
|
||||
preStep.Status = actions_model.StatusSkipped
|
||||
}
|
||||
}
|
||||
logIndex += preStep.LogLength
|
||||
|
||||
// lastHasRunStep is the last step that has run.
|
||||
// For example,
|
||||
// 1. preStep(Success) -> step1(Success) -> step2(Running) -> step3(Waiting) -> postStep(Waiting): lastHasRunStep is step1.
|
||||
// 2. preStep(Success) -> step1(Success) -> step2(Success) -> step3(Success) -> postStep(Success): lastHasRunStep is step3.
|
||||
// 3. preStep(Success) -> step1(Success) -> step2(Failure) -> step3 -> postStep(Waiting): lastHasRunStep is step2.
|
||||
// So its Stopped is the Started of postStep when there are no more steps to run.
|
||||
var lastHasRunStep *actions_model.ActionTaskStep
|
||||
for _, step := range task.Steps {
|
||||
if step.Status.HasRun() {
|
||||
lastHasRunStep = step
|
||||
}
|
||||
logIndex += step.LogLength
|
||||
}
|
||||
if lastHasRunStep == nil {
|
||||
lastHasRunStep = preStep
|
||||
}
|
||||
|
|
|
@ -137,6 +137,25 @@ func TestFullSteps(t *testing.T) {
|
|||
{Name: postStepName, Status: actions_model.StatusSkipped, LogIndex: 0, LogLength: 0, Started: 0, Stopped: 0},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "first step is skipped",
|
||||
task: &actions_model.ActionTask{
|
||||
Steps: []*actions_model.ActionTaskStep{
|
||||
{Status: actions_model.StatusSkipped, LogIndex: 0, LogLength: 0, Started: 0, Stopped: 0},
|
||||
{Status: actions_model.StatusSuccess, LogIndex: 10, LogLength: 80, Started: 10010, Stopped: 10090},
|
||||
},
|
||||
Status: actions_model.StatusSuccess,
|
||||
Started: 10000,
|
||||
Stopped: 10100,
|
||||
LogLength: 100,
|
||||
},
|
||||
want: []*actions_model.ActionTaskStep{
|
||||
{Name: preStepName, Status: actions_model.StatusSuccess, LogIndex: 0, LogLength: 10, Started: 10000, Stopped: 10010},
|
||||
{Status: actions_model.StatusSkipped, LogIndex: 0, LogLength: 0, Started: 0, Stopped: 0},
|
||||
{Status: actions_model.StatusSuccess, LogIndex: 10, LogLength: 80, Started: 10010, Stopped: 10090},
|
||||
{Name: postStepName, Status: actions_model.StatusSuccess, LogIndex: 90, LogLength: 10, Started: 10090, Stopped: 10100},
|
||||
},
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
|
|
|
@ -97,12 +97,12 @@ func SetExecutablePath(path string) error {
|
|||
}
|
||||
|
||||
if gitVersion.LessThan(versionRequired) {
|
||||
moreHint := "get git: https://git-scm.com/download/"
|
||||
moreHint := "get git: https://git-scm.com/downloads"
|
||||
if runtime.GOOS == "linux" {
|
||||
// there are a lot of CentOS/RHEL users using old git, so we add a special hint for them
|
||||
if _, err = os.Stat("/etc/redhat-release"); err == nil {
|
||||
// ius.io is the recommended official(git-scm.com) method to install git
|
||||
moreHint = "get git: https://git-scm.com/download/linux and https://ius.io"
|
||||
moreHint = "get git: https://git-scm.com/downloads/linux and https://ius.io"
|
||||
}
|
||||
}
|
||||
return fmt.Errorf("installed git version %q is not supported, Gitea requires git version >= %q, %s", gitVersion.Original(), RequiredVersion, moreHint)
|
||||
|
|
|
@ -96,7 +96,7 @@ func Code(fileName, language, code string) (output template.HTML, lexerName stri
|
|||
}
|
||||
|
||||
if lexer == nil {
|
||||
lexer = lexers.Match(fileName)
|
||||
lexer = lexers.Match(strings.ToLower(fileName))
|
||||
if lexer == nil {
|
||||
lexer = lexers.Fallback
|
||||
}
|
||||
|
@ -165,7 +165,7 @@ func File(fileName, language string, code []byte) ([]template.HTML, string, erro
|
|||
|
||||
lexer = lexers.Get(guessLanguage)
|
||||
if lexer == nil {
|
||||
lexer = lexers.Match(fileName)
|
||||
lexer = lexers.Match(strings.ToLower(fileName))
|
||||
if lexer == nil {
|
||||
lexer = lexers.Fallback
|
||||
}
|
||||
|
|
|
@ -109,6 +109,12 @@ c=2
|
|||
),
|
||||
lexerName: "Python",
|
||||
},
|
||||
{
|
||||
name: "DOS.PAS",
|
||||
code: "",
|
||||
want: lines(""),
|
||||
lexerName: "ObjectPascal",
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
|
|
|
@ -76,7 +76,8 @@ func HandleGenericETagTimeCache(req *http.Request, w http.ResponseWriter, etag s
|
|||
w.Header().Set("Etag", etag)
|
||||
}
|
||||
if lastModified != nil && !lastModified.IsZero() {
|
||||
w.Header().Set("Last-Modified", lastModified.Format(http.TimeFormat))
|
||||
// http.TimeFormat required a UTC time, refer to https://pkg.go.dev/net/http#TimeFormat
|
||||
w.Header().Set("Last-Modified", lastModified.UTC().Format(http.TimeFormat))
|
||||
}
|
||||
|
||||
if len(etag) > 0 {
|
||||
|
|
|
@ -79,6 +79,7 @@ func ServeSetHeaders(w http.ResponseWriter, opts *ServeHeaderOptions) {
|
|||
httpcache.SetCacheControlInHeader(header, duration)
|
||||
|
||||
if !opts.LastModified.IsZero() {
|
||||
// http.TimeFormat required a UTC time, refer to https://pkg.go.dev/net/http#TimeFormat
|
||||
header.Set("Last-Modified", opts.LastModified.UTC().Format(http.TimeFormat))
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,6 +20,7 @@ import (
|
|||
indexer_internal "code.gitea.io/gitea/modules/indexer/internal"
|
||||
inner_elasticsearch "code.gitea.io/gitea/modules/indexer/internal/elasticsearch"
|
||||
"code.gitea.io/gitea/modules/json"
|
||||
"code.gitea.io/gitea/modules/log"
|
||||
"code.gitea.io/gitea/modules/setting"
|
||||
"code.gitea.io/gitea/modules/timeutil"
|
||||
"code.gitea.io/gitea/modules/typesniffer"
|
||||
|
@ -197,8 +198,33 @@ func (b *Indexer) Index(ctx context.Context, repo *repo_model.Repository, sha st
|
|||
return nil
|
||||
}
|
||||
|
||||
// Delete deletes indexes by ids
|
||||
// Delete entries by repoId
|
||||
func (b *Indexer) Delete(ctx context.Context, repoID int64) error {
|
||||
if err := b.doDelete(ctx, repoID); err != nil {
|
||||
// Maybe there is a conflict during the delete operation, so we should retry after a refresh
|
||||
log.Warn("Deletion of entries of repo %v within index %v was erroneus. Trying to refresh index before trying again", repoID, b.inner.VersionedIndexName(), err)
|
||||
if err := b.refreshIndex(ctx); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := b.doDelete(ctx, repoID); err != nil {
|
||||
log.Error("Could not delete entries of repo %v within index %v", repoID, b.inner.VersionedIndexName())
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (b *Indexer) refreshIndex(ctx context.Context) error {
|
||||
if _, err := b.inner.Client.Refresh(b.inner.VersionedIndexName()).Do(ctx); err != nil {
|
||||
log.Error("Error while trying to refresh index %v", b.inner.VersionedIndexName(), err)
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// Delete entries by repoId
|
||||
func (b *Indexer) doDelete(ctx context.Context, repoID int64) error {
|
||||
_, err := b.inner.Client.DeleteByQuery(b.inner.VersionedIndexName()).
|
||||
Query(elastic.NewTermsQuery("repo_id", repoID)).
|
||||
Do(ctx)
|
||||
|
|
|
@ -38,7 +38,7 @@ func camoHandleLink(link string) string {
|
|||
if setting.Camo.Enabled {
|
||||
lnkURL, err := url.Parse(link)
|
||||
if err == nil && lnkURL.IsAbs() && !strings.HasPrefix(link, setting.AppURL) &&
|
||||
(setting.Camo.Allways || lnkURL.Scheme != "https") {
|
||||
(setting.Camo.Always || lnkURL.Scheme != "https") {
|
||||
return CamoEncode(link)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@ func TestCamoHandleLink(t *testing.T) {
|
|||
"https://image.proxy/eivin43gJwGVIjR9MiYYtFIk0mw/aHR0cDovL3Rlc3RpbWFnZXMub3JnL2ltZy5qcGc",
|
||||
camoHandleLink("http://testimages.org/img.jpg"))
|
||||
|
||||
setting.Camo.Allways = true
|
||||
setting.Camo.Always = true
|
||||
assert.Equal(t,
|
||||
"https://gitea.com/img.jpg",
|
||||
camoHandleLink("https://gitea.com/img.jpg"))
|
||||
|
|
|
@ -39,8 +39,8 @@ const (
|
|||
var (
|
||||
reName = regexp.MustCompile(`^[a-zA-Z0-9@._+-]+$`)
|
||||
reVer = regexp.MustCompile(`^[a-zA-Z0-9:_.+]+-+[0-9]+$`)
|
||||
reOptDep = regexp.MustCompile(`^[a-zA-Z0-9@._+-]+([<>]?=?[a-zA-Z0-9@._+-]+)?(:.*)?$`)
|
||||
rePkgVer = regexp.MustCompile(`^[a-zA-Z0-9@._+-]+([<>]?=?[a-zA-Z0-9@._+-]+)?$`)
|
||||
reOptDep = regexp.MustCompile(`^[a-zA-Z0-9@._+-]+([<>]?=?([0-9]+:)?[a-zA-Z0-9@._+-]+)?(:.*)?$`)
|
||||
rePkgVer = regexp.MustCompile(`^[a-zA-Z0-9@._+-]+([<>]?=?([0-9]+:)?[a-zA-Z0-9@._+-]+)?$`)
|
||||
|
||||
magicZSTD = []byte{0x28, 0xB5, 0x2F, 0xFD}
|
||||
magicXZ = []byte{0xFD, 0x37, 0x7A, 0x58, 0x5A}
|
||||
|
@ -71,7 +71,7 @@ type VersionMetadata struct {
|
|||
Conflicts []string `json:"conflicts,omitempty"`
|
||||
Replaces []string `json:"replaces,omitempty"`
|
||||
Backup []string `json:"backup,omitempty"`
|
||||
Xdata []string `json:"xdata,omitempty"`
|
||||
XData []string `json:"xdata,omitempty"`
|
||||
}
|
||||
|
||||
// FileMetadata Metadata related to specific package file.
|
||||
|
@ -125,7 +125,7 @@ func ParsePackage(r *packages.HashedBuffer) (*Package, error) {
|
|||
defer tarball.Close()
|
||||
|
||||
var pkg *Package
|
||||
var mtree bool
|
||||
var mTree bool
|
||||
|
||||
for {
|
||||
f, err := tarball.Read()
|
||||
|
@ -135,24 +135,24 @@ func ParsePackage(r *packages.HashedBuffer) (*Package, error) {
|
|||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer f.Close()
|
||||
|
||||
switch f.Name() {
|
||||
case ".PKGINFO":
|
||||
pkg, err = ParsePackageInfo(tarballType, f)
|
||||
if err != nil {
|
||||
_ = f.Close()
|
||||
return nil, err
|
||||
}
|
||||
case ".MTREE":
|
||||
mtree = true
|
||||
mTree = true
|
||||
}
|
||||
_ = f.Close()
|
||||
}
|
||||
|
||||
if pkg == nil {
|
||||
return nil, util.NewInvalidArgumentErrorf(".PKGINFO file not found")
|
||||
}
|
||||
|
||||
if !mtree {
|
||||
if !mTree {
|
||||
return nil, util.NewInvalidArgumentErrorf(".MTREE file not found")
|
||||
}
|
||||
|
||||
|
@ -220,7 +220,7 @@ func ParsePackageInfo(compressType string, r io.Reader) (*Package, error) {
|
|||
case "replaces":
|
||||
p.VersionMetadata.Replaces = append(p.VersionMetadata.Replaces, value)
|
||||
case "xdata":
|
||||
p.VersionMetadata.Xdata = append(p.VersionMetadata.Xdata, value)
|
||||
p.VersionMetadata.XData = append(p.VersionMetadata.XData, value)
|
||||
case "builddate":
|
||||
bd, err := strconv.ParseInt(value, 10, 64)
|
||||
if err != nil {
|
||||
|
@ -260,48 +260,43 @@ func ValidatePackageSpec(p *Package) error {
|
|||
return util.NewInvalidArgumentErrorf("invalid project URL")
|
||||
}
|
||||
}
|
||||
for _, cd := range p.VersionMetadata.CheckDepends {
|
||||
if !rePkgVer.MatchString(cd) {
|
||||
return util.NewInvalidArgumentErrorf("invalid check dependency: %s", cd)
|
||||
for _, checkDepend := range p.VersionMetadata.CheckDepends {
|
||||
if !rePkgVer.MatchString(checkDepend) {
|
||||
return util.NewInvalidArgumentErrorf("invalid check dependency: %s", checkDepend)
|
||||
}
|
||||
}
|
||||
for _, d := range p.VersionMetadata.Depends {
|
||||
if !rePkgVer.MatchString(d) {
|
||||
return util.NewInvalidArgumentErrorf("invalid dependency: %s", d)
|
||||
for _, depend := range p.VersionMetadata.Depends {
|
||||
if !rePkgVer.MatchString(depend) {
|
||||
return util.NewInvalidArgumentErrorf("invalid dependency: %s", depend)
|
||||
}
|
||||
}
|
||||
for _, md := range p.VersionMetadata.MakeDepends {
|
||||
if !rePkgVer.MatchString(md) {
|
||||
return util.NewInvalidArgumentErrorf("invalid make dependency: %s", md)
|
||||
for _, makeDepend := range p.VersionMetadata.MakeDepends {
|
||||
if !rePkgVer.MatchString(makeDepend) {
|
||||
return util.NewInvalidArgumentErrorf("invalid make dependency: %s", makeDepend)
|
||||
}
|
||||
}
|
||||
for _, p := range p.VersionMetadata.Provides {
|
||||
if !rePkgVer.MatchString(p) {
|
||||
return util.NewInvalidArgumentErrorf("invalid provides: %s", p)
|
||||
for _, provide := range p.VersionMetadata.Provides {
|
||||
if !rePkgVer.MatchString(provide) {
|
||||
return util.NewInvalidArgumentErrorf("invalid provides: %s", provide)
|
||||
}
|
||||
}
|
||||
for _, p := range p.VersionMetadata.Conflicts {
|
||||
if !rePkgVer.MatchString(p) {
|
||||
return util.NewInvalidArgumentErrorf("invalid conflicts: %s", p)
|
||||
for _, conflict := range p.VersionMetadata.Conflicts {
|
||||
if !rePkgVer.MatchString(conflict) {
|
||||
return util.NewInvalidArgumentErrorf("invalid conflicts: %s", conflict)
|
||||
}
|
||||
}
|
||||
for _, p := range p.VersionMetadata.Replaces {
|
||||
if !rePkgVer.MatchString(p) {
|
||||
return util.NewInvalidArgumentErrorf("invalid replaces: %s", p)
|
||||
for _, replace := range p.VersionMetadata.Replaces {
|
||||
if !rePkgVer.MatchString(replace) {
|
||||
return util.NewInvalidArgumentErrorf("invalid replaces: %s", replace)
|
||||
}
|
||||
}
|
||||
for _, p := range p.VersionMetadata.Replaces {
|
||||
if !rePkgVer.MatchString(p) {
|
||||
return util.NewInvalidArgumentErrorf("invalid xdata: %s", p)
|
||||
for _, optDepend := range p.VersionMetadata.OptDepends {
|
||||
if !reOptDep.MatchString(optDepend) {
|
||||
return util.NewInvalidArgumentErrorf("invalid optional dependency: %s", optDepend)
|
||||
}
|
||||
}
|
||||
for _, od := range p.VersionMetadata.OptDepends {
|
||||
if !reOptDep.MatchString(od) {
|
||||
return util.NewInvalidArgumentErrorf("invalid optional dependency: %s", od)
|
||||
}
|
||||
}
|
||||
for _, bf := range p.VersionMetadata.Backup {
|
||||
if strings.HasPrefix(bf, "/") {
|
||||
for _, b := range p.VersionMetadata.Backup {
|
||||
if strings.HasPrefix(b, "/") {
|
||||
return util.NewInvalidArgumentErrorf("backup file contains leading forward slash")
|
||||
}
|
||||
}
|
||||
|
|
|
@ -48,6 +48,7 @@ type Metadata struct {
|
|||
Homepage string `json:"homepage,omitempty"`
|
||||
License Licenses `json:"license,omitempty"`
|
||||
Authors []Author `json:"authors,omitempty"`
|
||||
Bin []string `json:"bin,omitempty"`
|
||||
Autoload map[string]any `json:"autoload,omitempty"`
|
||||
AutoloadDev map[string]any `json:"autoload-dev,omitempty"`
|
||||
Extra map[string]any `json:"extra,omitempty"`
|
||||
|
|
|
@ -3,18 +3,28 @@
|
|||
|
||||
package setting
|
||||
|
||||
import "code.gitea.io/gitea/modules/log"
|
||||
import (
|
||||
"strconv"
|
||||
|
||||
"code.gitea.io/gitea/modules/log"
|
||||
)
|
||||
|
||||
var Camo = struct {
|
||||
Enabled bool
|
||||
ServerURL string `ini:"SERVER_URL"`
|
||||
HMACKey string `ini:"HMAC_KEY"`
|
||||
Allways bool
|
||||
Always bool
|
||||
}{}
|
||||
|
||||
func loadCamoFrom(rootCfg ConfigProvider) {
|
||||
mustMapSetting(rootCfg, "camo", &Camo)
|
||||
if Camo.Enabled {
|
||||
oldValue := rootCfg.Section("camo").Key("ALLWAYS").MustString("")
|
||||
if oldValue != "" {
|
||||
log.Warn("camo.ALLWAYS is deprecated, use camo.ALWAYS instead")
|
||||
Camo.Always, _ = strconv.ParseBool(oldValue)
|
||||
}
|
||||
|
||||
if Camo.ServerURL == "" || Camo.HMACKey == "" {
|
||||
log.Fatal(`Camo settings require "SERVER_URL" and HMAC_KEY`)
|
||||
}
|
||||
|
|
|
@ -34,7 +34,7 @@ func AvatarHTML(src string, size int, class, name string) template.HTML {
|
|||
name = "avatar"
|
||||
}
|
||||
|
||||
return template.HTML(`<img class="` + class + `" src="` + src + `" title="` + html.EscapeString(name) + `" width="` + sizeStr + `" height="` + sizeStr + `"/>`)
|
||||
return template.HTML(`<img loading="lazy" class="` + class + `" src="` + src + `" title="` + html.EscapeString(name) + `" width="` + sizeStr + `" height="` + sizeStr + `"/>`)
|
||||
}
|
||||
|
||||
// Avatar renders user avatars. args: user, size (int), class (string)
|
||||
|
|
|
@ -225,6 +225,15 @@ func Iif[T any](condition bool, trueVal, falseVal T) T {
|
|||
return falseVal
|
||||
}
|
||||
|
||||
// IfZero returns "def" if "v" is a zero value, otherwise "v"
|
||||
func IfZero[T comparable](v, def T) T {
|
||||
var zero T
|
||||
if v == zero {
|
||||
return def
|
||||
}
|
||||
return v
|
||||
}
|
||||
|
||||
func ReserveLineBreakForTextarea(input string) string {
|
||||
// Since the content is from a form which is a textarea, the line endings are \r\n.
|
||||
// It's a standard behavior of HTML.
|
||||
|
|
|
@ -142,6 +142,11 @@ filter.not_fork = ليست اشتقاقات
|
|||
filter.not_archived = ليس مؤرشف
|
||||
filter.public = علني
|
||||
filter.private = خاص
|
||||
new_repo.title = مستودع جديد
|
||||
new_migrate.title = انتقال جديد
|
||||
new_org.title = منظمة جديدة
|
||||
new_repo.link = مستودع جديد
|
||||
new_migrate.link = انتقال جديد
|
||||
|
||||
[install]
|
||||
db_name = اسم قاعدة البيانات
|
||||
|
@ -1982,4 +1987,10 @@ match_tooltip = قم بتضمين النتائج التي تطابق مصطلح
|
|||
repo_kind = بحث في المستودعات...
|
||||
user_kind = بحث عن المستخدمين...
|
||||
team_kind = بحث عن الفرق ...
|
||||
code_kind = بحث في الكود...
|
||||
code_kind = بحث في الكود...
|
||||
project_kind = البحث ضمن المشاريع...
|
||||
branch_kind = البحث ضمن الفروع...
|
||||
no_results = لا توجد نتائج مطابقة.
|
||||
issue_kind = البحث ضمن الأعطال...
|
||||
pull_kind = البحث ضمن طلبات السحب...
|
||||
keyword_search_unavailable = البحث من خلال الكلمات المفتاحية ليس متوفر حالياً. رجاءاً تواصل مع مشرف الموقع.
|
|
@ -168,6 +168,7 @@ versions.view_all = Вижте всички
|
|||
dependencies = Зависимости
|
||||
published_by_in = Публикуван %[1]s от <a href="%[2]s">%[3]s</a> в <a href="%[4]s"><strong>%[5]s</strong></a>
|
||||
published_by = Публикуван %[1]s от <a href="%[2]s">%[3]s</a>
|
||||
generic.download = Изтеглете пакета от командния ред:
|
||||
|
||||
[tool]
|
||||
hours = %d часа
|
||||
|
@ -632,9 +633,9 @@ editor.file_delete_success = Файлът „%s“ е изтрит.
|
|||
projects.type.uncategorized = Некатегоризирано
|
||||
projects.column.set_default = Задаване по подразбиране
|
||||
projects.column.assigned_to = Възложено на
|
||||
issues.reopen_comment_issue = Коментиране и отваряне
|
||||
issues.reopen_comment_issue = Отваряне наново с коментар
|
||||
issues.reopen_issue = Отваряне наново
|
||||
issues.close_comment_issue = Коментиране и Затваряне
|
||||
issues.close_comment_issue = Затваряне с коментар
|
||||
milestones.filter_sort.latest_due_date = Най-далечен краен срок
|
||||
diff.view_file = Преглед на файла
|
||||
release.deletion_success = Изданието е изтрито.
|
||||
|
@ -940,7 +941,7 @@ pulls.approve_count_1 = %d одобрение
|
|||
pulls.can_auto_merge_desc = Тази заявка за сливане може да бъде слята автоматично.
|
||||
pulls.num_conflicting_files_1 = %d конфликтен файл
|
||||
activity.git_stats_commit_n = %d подавания
|
||||
settings.event_issues = Задачи
|
||||
settings.event_issues = Модификация
|
||||
branch.delete_head = Изтриване
|
||||
branch.delete = Изтриване на клона „%s“
|
||||
branch.delete_html = Изтриване на клона
|
||||
|
@ -1020,7 +1021,7 @@ pulls.title_desc_one = иска да слее %[1]d подаване от <code>
|
|||
pulls.showing_specified_commit_range = Показани са само промените между %[1]s..%[2]s
|
||||
pulls.merged_title_desc_one = сля %[1]d подаване от <code>%[2]s</code> в <code>%[3]s</code> %[4]s
|
||||
pulls.no_merge_access = Не сте упълномощени за сливане на тази заявка за сливане.
|
||||
activity.navbar.code_frequency = Честота на кода
|
||||
activity.navbar.code_frequency = Честота на промените
|
||||
activity.git_stats_pushed_1 = е изтласкал
|
||||
activity.git_stats_push_to_branch = към %s и
|
||||
contributors.contribution_type.commits = Подавания
|
||||
|
@ -1081,11 +1082,11 @@ pulls.commit_ref_at = `спомена тази заявка за сливане
|
|||
issues.change_ref_at = `промени препратката от <b><strike>%s</strike></b> на <b>%s</b> %s`
|
||||
diff.review.reject = Поискване на промени
|
||||
diff.bin_not_shown = Двоичният файл не е показан.
|
||||
settings.units.units = Елементи на хранилището
|
||||
settings.units.units = Елементи
|
||||
settings.delete_notices_fork_1 = - Разклоненията на това хранилище ще станат независими след изтриване.
|
||||
settings.actions_desc = Включване на интегрираните CI/CD pipelines с Forgejo Actions
|
||||
settings.packages_desc = Включване на регистъра на пакетите за хранилището
|
||||
settings.units.add_more = Добавяне...
|
||||
settings.units.add_more = Включване на повече
|
||||
settings.use_external_issue_tracker = Използване на външен тракер за задачи
|
||||
settings.releases_desc = Включване на изданията за хранилището
|
||||
settings.projects_desc = Включване на проектите за хранилището
|
||||
|
@ -1183,6 +1184,19 @@ diff.hide_file_tree = Скриване на файловото дърво
|
|||
tag.ahead.target = в %s след този маркер
|
||||
diff.file_image_width = Широчина
|
||||
activity.unresolved_conv_label = Отворено
|
||||
invisible_runes_line = `Този ред съдържа невидими Уникод знаци`
|
||||
code.desc = Достъп до програмния код, файловете, подаванията и клоновете.
|
||||
settings.branches.update_default_branch = Обновяване на стандартния клон
|
||||
settings.default_branch_desc = Изберете стандартен клон за хранилището, за заявки за сливане и подавания на код:
|
||||
settings.transfer.button = Прехвърляне на притежанието
|
||||
settings.transfer.modal.title = Прехвърляне на притежанието
|
||||
ambiguous_runes_line = `Този ред съдържа двусмислени Уникод знаци`
|
||||
ambiguous_character = `%[1]c [U+%04[1]X] може да бъде объркан с %[2]c [U+%04[2]X]`
|
||||
invisible_runes_header = `Този файл съдържа невидими Уникод знаци`
|
||||
issues.all_title = Общо
|
||||
issues.new.assign_to_me = Възлагане на мен
|
||||
ext_wiki = Външно уики
|
||||
ext_issues = Външни задачи
|
||||
|
||||
[modal]
|
||||
confirm = Потвърждаване
|
||||
|
@ -1279,6 +1293,7 @@ members.member = Участник
|
|||
members.private_helper = Да е видим
|
||||
teams.no_desc = Този екип няма описание
|
||||
settings.delete_org_desc = Тази организация ще бъде изтрита перманентно. Продължаване?
|
||||
open_dashboard = Отваряне на таблото
|
||||
|
||||
[install]
|
||||
admin_password = Парола
|
||||
|
@ -1378,6 +1393,7 @@ followers.title.few = Последователи
|
|||
followers.title.one = Последовател
|
||||
following.title.one = Следван
|
||||
following.title.few = Следвани
|
||||
public_activity.visibility_hint.self_public = Вашата дейност е видима за всички, с изключение на взаимодействията в частни пространства. <a href="%s">Конфигуриране</a>.
|
||||
|
||||
[home]
|
||||
filter = Други филтри
|
||||
|
@ -1544,6 +1560,8 @@ push_tag = изтласка маркер <a href="%[2]s">%[3]s</a> към <a hre
|
|||
approve_pull_request = `одобри <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
reject_pull_request = `предложи промени за <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
compare_branch = Сравняване
|
||||
compare_commits_general = Сравняване на подавания
|
||||
compare_commits = Сравнете %d подавания
|
||||
|
||||
[auth]
|
||||
tab_openid = OpenID
|
||||
|
@ -1572,6 +1590,12 @@ tab_signin = Влизане
|
|||
tab_signup = Регистриране
|
||||
password_pwned = Паролата, която сте избрали, е в <a target="_blank" rel="noopener noreferrer" href="%s">списък с откраднати пароли</a>, разкрити преди това при публични пробиви на данни. Моля, опитайте отново с различна парола.
|
||||
confirmation_mail_sent_prompt = Ново ел. писмо за потвърждение е изпратено до <b>%s</b>. За да завършите процеса на регистрация, моля, проверете входящата си кутия и последвайте предоставената връзка в рамките на следващите %s. Ако адресът за ел. поща е неправилен, можете да влезете и да поискате друго ел. писмо за потвърждение да бъде изпратено на различен адрес.
|
||||
hint_login = Вече имате акаунт? <a href="%s">Влезте!</a>
|
||||
hint_register = Нуждаете се от акаунт? <a href="%s">Регистрирайте се.</a>
|
||||
sign_up_button = Регистрирайте се.
|
||||
back_to_sign_in = Назад към Вход
|
||||
sign_in_openid = Продължаване с OpenID
|
||||
send_reset_mail = Изпращане на ел. писмо за възстановяване
|
||||
|
||||
[aria]
|
||||
footer.software = Относно този софтуер
|
||||
|
@ -1582,7 +1606,7 @@ footer = Долен колонтитул
|
|||
install = Лесен за инсталиране
|
||||
lightweight = Лек
|
||||
license = Отворен код
|
||||
install_desc = Просто <a target="_blank" rel="noopener noreferrer" href="%[1]s">стартирайте двоичния файл</a> за вашата платформа, използвайте <a target="_blank" rel="noopener noreferrer" href="%[2]s">Docker</a>, или го получете <a target="_blank" rel="noopener noreferrer" href="%[3]s">пакетирано</a>.
|
||||
install_desc = Просто <a target="_blank" rel="noopener noreferrer" href="%[1]s">стартирайте двоичния файл</a> за вашата платформа, използвайте <a target="_blank" rel="noopener noreferrer" href="%[2]s">Docker</a>, или го получете <a target="_blank" rel="noopener noreferrer" href="%[3]s">пакетиран</a>.
|
||||
app_desc = Безпроблемна Git услуга със самостоятелен хостинг
|
||||
platform = Междуплатформен
|
||||
lightweight_desc = Forgejo има ниски минимални изисквания и може да работи на икономичен Raspberry Pi. Спестете енергията на вашата машина!
|
||||
|
@ -1670,6 +1694,7 @@ contributors.what = приноси
|
|||
recent_commits.what = скорошни подавания
|
||||
component_loading = Зареждане на %s...
|
||||
component_loading_info = Това може да отнеме известно време…
|
||||
code_frequency.what = честота на промените
|
||||
|
||||
[projects]
|
||||
type-1.display_name = Индивидуален проект
|
||||
|
|
|
@ -33,7 +33,7 @@ password=Heslo
|
|||
access_token=Přístupový token
|
||||
re_type=Potvrzení hesla
|
||||
captcha=CAPTCHA
|
||||
twofa=Dvoufaktorové ověřování
|
||||
twofa=Dvoufázové ověření
|
||||
twofa_scratch=Dvoufaktorový kód
|
||||
passcode=Přístupový kód
|
||||
|
||||
|
@ -434,7 +434,7 @@ non_local_account=Externě ověřovaní uživatelé nemohou změnit své heslo p
|
|||
verify=Ověřit
|
||||
scratch_code=Záložní kód
|
||||
use_scratch_code=Použít záložní kód
|
||||
twofa_scratch_used=Použili jste váš záložní kód. Byli jste přesměrování na stránku s nastavením dvoufaktorového ověřování, kde můžete odstranit registraci vašeho zařízení nebo vygenerovat nový záložní kód.
|
||||
twofa_scratch_used=Použili jste svůj záložní kód. Byli jste přesměrování na stránku s nastavením dvoufázového ověření, kde můžete odstranit registraci vašeho zařízení nebo vygenerovat nový záložní kód.
|
||||
twofa_passcode_incorrect=Vaše heslo je neplatné. Pokud jste ztratili vaše zařízení, použijte záložní kód k přihlášení.
|
||||
twofa_scratch_token_incorrect=Váš záložní kód není správný.
|
||||
login_userpass=Přihlásit se
|
||||
|
@ -478,6 +478,7 @@ hint_register = Nemáte účet? <a href="%s">Zaregistrujte se nyní.</a>
|
|||
sign_up_button = Zaregistrujte se nyní.
|
||||
back_to_sign_in = Zpět na přihlášení
|
||||
sign_in_openid = Pokračovat s OpenID
|
||||
unauthorized_credentials = Údaje jsou nesprávné nebo vypršely. Opakujte svůj příkaz nebo se podívejte na %s pro více informací
|
||||
|
||||
[mail]
|
||||
view_it_on=Zobrazit na %s
|
||||
|
@ -488,11 +489,11 @@ hi_user_x=Ahoj <b>%s</b>,
|
|||
activate_account=Prosíme, aktivujte si váš účet
|
||||
activate_account.title=%s, prosím aktivujte si váš účet
|
||||
activate_account.text_1=Ahoj <b>%[1]s</b>, děkujeme za registraci na %[2]s!
|
||||
activate_account.text_2=Pro aktivaci vašeho účtu do <b>%s</b> klikněte na následující odkaz:
|
||||
activate_account.text_2=Pro aktivaci vašeho účtu klikněte <b>%s</b> na následující odkaz :
|
||||
|
||||
activate_email=Ověřte vaši e-mailovou adresu
|
||||
activate_email.title=%s, prosím ověřte vaši e-mailovou adresu
|
||||
activate_email.text=Pro aktivaci vašeho účtu do <b>%s</b> klikněte na následující odkaz:
|
||||
activate_email.text=Pro ověření vaší e-mailové adresy klikněte <b>%s</b> na následující odkaz:
|
||||
|
||||
register_notify=Vítejte v %s
|
||||
register_notify.title=%[1]s vítejte v %[2]s
|
||||
|
@ -622,7 +623,7 @@ repository_files_already_exist.adopt=Soubory pro tento repozitář již existuj
|
|||
repository_files_already_exist.delete=Soubory pro tento repozitář již existují. Musíte je odstranit.
|
||||
repository_files_already_exist.adopt_or_delete=Soubory pro tento repozitář již existují. Přijměte je, nebo je odstraňte.
|
||||
visit_rate_limit=Dosaženo limitu rychlosti dotazů při vzdáleném přístupu.
|
||||
2fa_auth_required=Vzdálený přístup vyžaduje dvoufaktorové ověřování.
|
||||
2fa_auth_required=Vzdálený přístup vyžaduje dvoufázové ověření.
|
||||
org_name_been_taken=Název organizace je již použit.
|
||||
team_name_been_taken=Název týmu je již použit.
|
||||
team_no_units_error=Povolit přístup alespoň do jedné sekce repozitáře.
|
||||
|
@ -732,11 +733,11 @@ applications=Aplikace
|
|||
orgs=Organizace
|
||||
repos=Repozitáře
|
||||
delete=Smazat účet
|
||||
twofa=Dvoufaktorové ověřování (TOTP)
|
||||
twofa=Dvoufázové ověření (TOTP)
|
||||
account_link=Propojené účty
|
||||
organization=Organizace
|
||||
uid=UID
|
||||
webauthn=Dvoufaktorové ověřování (bezpečnostní klíče)
|
||||
webauthn=Dvoufázové ověření (bezpečnostní klíče)
|
||||
|
||||
public_profile=Veřejný profil
|
||||
biography_placeholder=Řekněte nám něco o sobě! (Můžete použít Markdown)
|
||||
|
@ -806,7 +807,7 @@ manage_emails=Správa e-mailových adres
|
|||
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.
|
||||
theme_desc=Toto bude váš výchozí motiv vzhledu na tomto webu.
|
||||
primary=Hlavní
|
||||
activated=Aktivován
|
||||
requires_activation=Vyžaduje aktivaci
|
||||
|
@ -842,8 +843,8 @@ add_key=Přidat klíč
|
|||
ssh_desc=Tyto veřejné klíče SSH jsou propojeny s vaším účtem. Odpovídající soukromé klíče umožní plný přístup k vašim repozitářům. Klíče SSH, které byly ověřeny, mohou být použity pro ověření Git commitů podepsaných přes SSH.
|
||||
principal_desc=Tyto SSH Principal certifikáty jsou přidruženy k vašemu účtu a umožňují plný přístup do vašich repozitářů.
|
||||
gpg_desc=Tyto veřejné klíče GPG jsou propojeny s vaším účtem a používají se k ověření vašich commitů. Uložte je na bezpečné místo, jelikož umožňují podepsat commity vaší identitou.
|
||||
ssh_helper=<strong>Potřebujete pomoct?</strong> Podívejte se do příručky GitHubu na to <a href="%s">vytvoření vlastních klíčů SSH</a> nebo vyřešte <a href="%s">běžné problémy</a>, se kterými se můžete potkat při použití SSH.
|
||||
gpg_helper=<strong>Potřebujete pomoct?</strong> Podívejte se do příručky GitHubu <a href="%s">o GPG</a>.
|
||||
ssh_helper=<strong>Potřebujete pomoct?</strong> Podívejte se do příručky, jak <a href="%s">vytvořit vlastní klíče SSH</a> nebo vyřešte <a href="%s">běžné problémy</a>, se kterými se můžete potkat při použití SSH.
|
||||
gpg_helper=<strong>Potřebujete pomoct?</strong> Podívejte se do příručky <a href="%s">o GPG</a>.
|
||||
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“
|
||||
|
@ -898,7 +899,7 @@ ssh_principal_deletion_success=SSH Principal certifikát byl odstraněn.
|
|||
added_on=Přidáno %s
|
||||
valid_until_date=Platné do %s
|
||||
valid_forever=Platné navždy
|
||||
last_used=Naposledy použito dne
|
||||
last_used=Naposledy použito
|
||||
no_activity=Žádná aktuální aktivita
|
||||
can_read_info=Čtení
|
||||
can_write_info=Zápis
|
||||
|
@ -928,17 +929,17 @@ access_token_deletion_cancel_action=Zrušit
|
|||
access_token_deletion_confirm_action=Smazat
|
||||
access_token_deletion_desc=Smazání tokenu zruší přístup k vašemu účtu pro aplikace, které jej používají. Tuto akci nelze vrátit. Pokračovat?
|
||||
delete_token_success=Token byl odstraněn. Aplikace, které jej používají již nemají přístup k vašemu účtu.
|
||||
repo_and_org_access=Repozitář a přístup organizace
|
||||
permissions_public_only=Pouze veřejnost
|
||||
repo_and_org_access=Přístup k repozitářům a organizacím
|
||||
permissions_public_only=Pouze veřejné
|
||||
permissions_access_all=Vše (veřejné, soukromé a omezené)
|
||||
select_permissions=Vyberte oprávnění
|
||||
permission_no_access=Bez přístupu
|
||||
permission_read=Přečtené
|
||||
permission_no_access=Žádný přístup
|
||||
permission_read=Čtení
|
||||
permission_write=Čtení a zápis
|
||||
at_least_one_permission=Musíte vybrat alespoň jedno oprávnění pro vytvoření tokenu
|
||||
permissions_list=Oprávnění:
|
||||
|
||||
manage_oauth2_applications=Spravovat aplikace OAuth2
|
||||
manage_oauth2_applications=Správa aplikací OAuth2
|
||||
edit_oauth2_application=Upravit OAuth2 aplikaci
|
||||
oauth2_applications_desc=OAuth2 aplikace umožní aplikacím třetích stran bezpečně ověřit uživatele v této instanci Forgejo.
|
||||
remove_oauth2_application=Odstranit OAuth2 aplikaci
|
||||
|
@ -949,8 +950,8 @@ create_oauth2_application_button=Vytvořit aplikaci
|
|||
create_oauth2_application_success=Úspěšně jste vytvořili novou OAuth2 aplikaci.
|
||||
update_oauth2_application_success=Úspěšně jste aktualizovali OAuth2 aplikaci.
|
||||
oauth2_application_name=Název aplikace
|
||||
oauth2_confidential_client=Důvěrný klient. Zvolte jej pro aplikace, které ukládají soubor secret, například webové aplikace. Nevybírejte jej pro nativní aplikace včetně aplikací pro počítače a mobilní zařízení.
|
||||
oauth2_redirect_uris=Přesměrování URI. Použijte nový řádek pro každou URI.
|
||||
oauth2_confidential_client=Důvěrný klient. Vyberte pro aplikace, které udržují tajný klíč v bezpečí, například webové aplikace. Nevybírejte pro nativní aplikace včetně aplikací pro počítače a mobilní zařízení.
|
||||
oauth2_redirect_uris=Přesměrování URI. Zadejte každou URI na vlastní řádek.
|
||||
save_application=Uložit
|
||||
oauth2_client_id=ID klienta
|
||||
oauth2_client_secret=Tajný klíč klienta
|
||||
|
@ -958,12 +959,12 @@ oauth2_regenerate_secret=Obnovit tajný klíč
|
|||
oauth2_regenerate_secret_hint=Ztratili jste svůj tajný klíč?
|
||||
oauth2_client_secret_hint=Tajný klíč se znovu nezobrazí po opuštění nebo obnovení této stránky. Ujistěte se, že jste si jej uložili.
|
||||
oauth2_application_edit=Upravit
|
||||
oauth2_application_create_description=OAuth2 aplikace poskytuje přístup aplikacím třetích stran k uživatelským účtům na této instanci.
|
||||
oauth2_application_create_description=Aplikace OAuth2 poskytují přístup vašim aplikacím třetích stran k uživatelským účtům na této instanci.
|
||||
oauth2_application_remove_description=Odebráním OAuth2 aplikace zabrání přístupu ověřeným uživatelům na této instanci. Pokračovat?
|
||||
oauth2_application_locked=Gitea předregistruje některé OAuth2 aplikace při spuštění, pokud je to povoleno v konfiguraci. Aby se zabránilo neočekávanému chování, nelze je upravovat ani odstranit. Více informací naleznete v dokumentaci OAuth2.
|
||||
|
||||
authorized_oauth2_applications=Autorizovat aplikaci OAuth2
|
||||
authorized_oauth2_applications_description=Úspěšně jste povolili přístup k vašemu osobnímu účtu této aplikaci třetí strany. Zrušte prosím přístup aplikacím, které již nejsou používány.
|
||||
authorized_oauth2_applications=Autorizované aplikace OAuth2
|
||||
authorized_oauth2_applications_description=Těmto aplikacím třetích stran jste udělili přístup ke svému osobnímu účtu Forgejo. Zrušte prosím přístup aplikacím, které již nejsou používány.
|
||||
revoke_key=Zrušit
|
||||
revoke_oauth2_grant=Zrušit přístup
|
||||
revoke_oauth2_grant_description=Zrušením přístupu této aplikaci třetí strany ji zabráníte v přístupu k vašim datům. Jste si jisti?
|
||||
|
@ -971,24 +972,24 @@ revoke_oauth2_grant_success=Přístup byl úspěšně zrušen.
|
|||
|
||||
twofa_desc=Dvoufaktorový způsob ověřování zvýší zabezpečení vašeho účtu.
|
||||
twofa_recovery_tip=Pokud ztratíte své zařízení, budete moci použít jednorázový obnovovací klíč k získání přístupu k vašemu účtu.
|
||||
twofa_is_enrolled=Váš účet aktuálně <strong>používá</strong> dvoufaktorové ověřování.
|
||||
twofa_not_enrolled=Váš účet aktuálně nepoužívá dvoufaktorové ověřování.
|
||||
twofa_disable=Zakázat dvoufaktorové ověřování
|
||||
twofa_is_enrolled=Váš účet aktuálně <strong>používá</strong> dvoufázové ověření.
|
||||
twofa_not_enrolled=Váš účet aktuálně nepoužívá dvoufázové ověření.
|
||||
twofa_disable=Zakázat dvoufázové ověření
|
||||
twofa_scratch_token_regenerate=Znovu vygenerovat jednorázový klíč pro obnovení
|
||||
twofa_scratch_token_regenerated=Váš jednorázový klíč pro obnovení je nyní %s. Uložte jej na bezpečné místo, protože se znovu nezobrazí.
|
||||
twofa_enroll=Povolit dvoufaktorové ověřování
|
||||
twofa_disable_note=Dvoufaktorové ověřování můžete zakázat, když bude potřeba.
|
||||
twofa_disable_desc=Zakážete-li dvoufaktorové ověřování, bude váš účet méně zabezpečený. Pokračovat?
|
||||
twofa_enroll=Povolit dvoufázové ověření
|
||||
twofa_disable_note=Dvoufázové ověření můžete v případě potřeby zakázat.
|
||||
twofa_disable_desc=Zakázáním dvoufázového ověření bude váš účet méně bezpečný. Pokračovat?
|
||||
regenerate_scratch_token_desc=Pokud jste ztratili svůj klíč pro obnovení nebo jste jej již použili k přihlášení, můžete jej resetovat zde.
|
||||
twofa_disabled=Dvoufaktorové ověřování bylo zakázáno.
|
||||
twofa_disabled=Dvoufázové ověření bylo zakázáno.
|
||||
scan_this_image=Naskenujte tento obrázek s vaší ověřovací aplikací:
|
||||
or_enter_secret=Nebo zadejte tajný kód: %s
|
||||
then_enter_passcode=A zadejte přístupový kód zobrazený ve vaší aplikaci:
|
||||
passcode_invalid=Přístupový kód není platný. Zkuste to znovu.
|
||||
twofa_enrolled=Ve vašem účtu bylo povoleno dvoufaktorové ověřování. Uložte si jednorázový obnovovací klíč (%s) na bezpečné místo, jelikož již nebude znovu zobrazen.
|
||||
twofa_enrolled=Ve vašem účtu bylo povoleno dvoufázové ověření. Uložte si jednorázový obnovovací klíč (%s) na bezpečné místo, jelikož již nebude znovu zobrazen.
|
||||
twofa_failed_get_secret=Nepodařilo se získat tajemství.
|
||||
|
||||
webauthn_desc=Bezpečnostní klíče jsou hardwarová zařízení obsahující kryptografické klíče. Mohou být použity pro dvoufaktorové ověřování. Bezpečnostní klíče musí podporovat <a rel="noreferrer" target="_blank" href="%s">WebAuthn Authenticator</a> standard.
|
||||
webauthn_desc=Bezpečnostní klíče jsou hardwarová zařízení obsahující kryptografické klíče. Mohou být použity pro dvoufázové ověření. Bezpečnostní klíče musí podporovat standard <a rel="noreferrer" target="_blank" href="%s">WebAuthn Authenticator</a>.
|
||||
webauthn_register_key=Přidat bezpečnostní klíč
|
||||
webauthn_nickname=Přezdívka
|
||||
webauthn_delete_key=Odebrat bezpečnostní klíč
|
||||
|
@ -997,7 +998,7 @@ webauthn_key_loss_warning=Pokud ztratíte své bezpečnostní klíče, ztratíte
|
|||
webauthn_alternative_tip=Možná budete chtít nakonfigurovat další metodu ověřování.
|
||||
|
||||
manage_account_links=Propojené účty
|
||||
manage_account_links_desc=Tyto externí účty jsou propojeny s vaším Forgejo účtem.
|
||||
manage_account_links_desc=Tyto externí účty jsou propojeny s vaším účtem Forgejo.
|
||||
account_links_not_available=K vašemu Forgejo účtu nejsou aktuálně připojené žádné externí účty.
|
||||
link_account=Propojit účet
|
||||
remove_account_link=Odstranit propojený účet
|
||||
|
@ -1009,7 +1010,7 @@ hooks.desc=Přidat webhooky, které budou spouštěny pro <strong>všechny repoz
|
|||
orgs_none=Nejste členem žádné organizace.
|
||||
repos_none=Nevlastníte žádné repozitáře.
|
||||
|
||||
delete_account=Odstranit svůj účet
|
||||
delete_account=Odstranit účet
|
||||
delete_prompt=Tato operace natrvalo odstraní váš uživatelský účet. <strong>NELZE</strong> ji vrátit zpět.
|
||||
delete_with_all_comments=Váš účet je mladší než %s. Pro zabránění fantomovým komentářům budou společně s ním odstraněny všechny komentáře u problémů a ŽS.
|
||||
confirm_delete_account=Potvrdit odstranění
|
||||
|
@ -1037,10 +1038,10 @@ 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 = Navrhnout povolení dalších jednotek úložiště
|
||||
additional_repo_units_hint = Navrhnout povolení dalších jednotek repozitáře
|
||||
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.
|
||||
additional_repo_units_hint_description = Zobrazit tip „Povolit další“ u repozitářů, které nemají povolené všechny dostupné jednotky.
|
||||
pronouns = Zájmena
|
||||
pronouns_custom = Vlastní
|
||||
pronouns_unspecified = Neurčená
|
||||
|
@ -1058,7 +1059,7 @@ repo_name_helper=Dobrý název repozitáře většinou používá krátká, zapa
|
|||
repo_size=Velikost repozitáře
|
||||
template=Šablona
|
||||
template_select=Vyberte šablonu
|
||||
template_helper=Z repozitáře vytvořit šablonu
|
||||
template_helper=Nastavit repozitář jako šablonu
|
||||
template_description=Šablony repozitářů umožňují uživatelům generovat nové repositáře se stejnou strukturou, soubory a volitelnými nastaveními.
|
||||
visibility=Viditelnost
|
||||
visibility_description=Pouze majitelé nebo členové organizace to budou moci vidět, pokud mají práva.
|
||||
|
@ -1069,7 +1070,7 @@ clone_helper=Potřebujete pomoci s klonováním? Navštivte <a target="_blank" r
|
|||
fork_repo=Fork repozitáře
|
||||
fork_from=Fork z
|
||||
already_forked=Již jsi rozštěpil %s
|
||||
fork_to_different_account=Rozštěpit na jiný účet
|
||||
fork_to_different_account=Vytvořit fork na jiném účtu
|
||||
fork_visibility_helper=Viditelnost rozštěpeného repozitáře nemůže být změněna.
|
||||
fork_branch=Větev, která má být klonována pro fork
|
||||
all_branches=Všechny větve
|
||||
|
@ -1165,7 +1166,7 @@ template.items=Položky šablony
|
|||
template.git_content=Obsah Gitu (výchozí větev)
|
||||
template.git_hooks=Git hooks
|
||||
template.git_hooks_tooltip=Momentálně nemůžete po přidání upravovat nebo odebírat Git hooky. Vyberte pouze v případě, že důvěřujete šabloně repozitáře.
|
||||
template.webhooks=Webové háčky
|
||||
template.webhooks=Webhooky
|
||||
template.topics=Témata
|
||||
template.avatar=Avatar
|
||||
template.issue_labels=Štítky problémů
|
||||
|
@ -1238,7 +1239,7 @@ migrate.cancel_migrating_confirm=Chcete zrušit tuto migraci?
|
|||
mirror_from=zrcadlo
|
||||
forked_from=rozštěpen z
|
||||
generated_from=generováno z
|
||||
fork_from_self=Nemůžete rozštěpit váš vlastní repozitář.
|
||||
fork_from_self=Nemůžete vytvořit fork vašeho vlastního repozitáře.
|
||||
fork_guest_user=Přihlaste se pro vytvoření forku tohoto repozitáře.
|
||||
watch_guest_user=Pro sledování tohoto repozitáře se přihlaste.
|
||||
star_guest_user=Pro hodnocení tohoto repozitáře se přihlaste.
|
||||
|
@ -1246,7 +1247,7 @@ unwatch=Přestat sledovat
|
|||
watch=Sledovat
|
||||
unstar=Oblíbené
|
||||
star=Oblíbit
|
||||
fork=Rozštěpit
|
||||
fork=Fork
|
||||
download_archive=Stáhnout repozitář
|
||||
more_operations=Další operace
|
||||
|
||||
|
@ -1337,7 +1338,7 @@ editor.cannot_edit_non_text_files=Binární soubory nemohou být upravovány př
|
|||
editor.edit_this_file=Upravit soubor
|
||||
editor.this_file_locked=Soubor je uzamčen
|
||||
editor.must_be_on_a_branch=Musíte mít zvolenu větev pro úpravu či návrh změn tohoto souboru.
|
||||
editor.fork_before_edit=Musíte rozštěpit tento repozitář pro vytvoření nebo navržení změny tohoto souboru.
|
||||
editor.fork_before_edit=Pro vytvoření nebo navržení změn v tomto souboru musíte vytvořit fork tohoto repozitáře.
|
||||
editor.delete_this_file=Odstranit soubor
|
||||
editor.must_have_write_access=Musíte mít přístup pro zápis pro dělání či navrhování změn tohoto souboru.
|
||||
editor.file_delete_success=Soubor „%s“ byl odstraněn.
|
||||
|
@ -1345,9 +1346,9 @@ editor.name_your_file=Pojmenujte váš soubor…
|
|||
editor.filename_help=Přidejte adresář zapsáním jeho jména následovaného lomítkem („/“). Adresář odeberete stiskem backspace na začátku vstupního pole.
|
||||
editor.or=nebo
|
||||
editor.cancel_lower=Zrušit
|
||||
editor.commit_signed_changes=Commitnout podepsané změny
|
||||
editor.commit_changes=Commitnout změny
|
||||
editor.add_tmpl=Přidat „<nazevsouboru>“
|
||||
editor.commit_signed_changes=Odeslat podepsané změny
|
||||
editor.commit_changes=Odeslat změny
|
||||
editor.add_tmpl=Přidán „<filename>“
|
||||
editor.add=Přidat %s
|
||||
editor.update=Aktualizovat %s
|
||||
editor.delete=Odstranit %s
|
||||
|
@ -1357,7 +1358,7 @@ editor.fail_to_apply_patch=Nelze použít záplatu „%s“
|
|||
editor.new_patch=Nová záplata
|
||||
editor.commit_message_desc=Přidat volitelný rozšířený popis…
|
||||
editor.signoff_desc=Přidat Signed-off-by podpis přispěvatele na konec zprávy o commitu.
|
||||
editor.commit_directly_to_this_branch=Odevzdat přímo do větve <strong class="branch-name">%s</strong>.
|
||||
editor.commit_directly_to_this_branch=Odeslat přímo do větve <strong class="branch-name">%s</strong>.
|
||||
editor.create_new_branch=Vytvořit <strong>novou větev</strong> pro tento commit a vytvořit žádost o sloučení.
|
||||
editor.create_new_branch_np=Vytvořte <strong>novou větev</strong> z tohoto commitu.
|
||||
editor.propose_file_change=Navrhnout změnu souboru
|
||||
|
@ -1375,8 +1376,8 @@ editor.file_editing_no_longer_exists=Upravovaný soubor „%s“ již není sou
|
|||
editor.file_deleting_no_longer_exists=Odstraňovaný soubor „%s“ již není součástí tohoto repozitáře.
|
||||
editor.file_changed_while_editing=Obsah souboru se od zahájení úprav změnil. <a target="_blank" rel="noopener noreferrer" href="%s">Klikněte sem</a> pro jejich zobrazení nebo <strong>proveďte commit změn ještě jednou</strong> pro jejich přepsání.
|
||||
editor.file_already_exists=Soubor „%s“ již existuje v tomto repozitáři.
|
||||
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.commit_empty_file_header=Odeslat prázdný soubor
|
||||
editor.commit_empty_file_text=Soubor, který se chystáte odeslat, 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á zpráva:
|
||||
|
@ -1386,9 +1387,9 @@ 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.
|
||||
editor.upload_files_to_dir=Nahrát soubory do „%s“
|
||||
editor.upload_files_to_dir=Nahrány soubory do „%s“
|
||||
editor.cannot_commit_to_protected_branch=Nelze vytvořit commit v chráněné větvi „%s“.
|
||||
editor.no_commit_to_branch=Nelze odevzdat přímo do větve, protože:
|
||||
editor.no_commit_to_branch=Nepodařilo se odeslat přímo do větve:
|
||||
editor.user_no_push_to_branch=Uživatel nemůže nahrávat do větve
|
||||
editor.require_signed_commit=Větev vyžaduje podepsaný commit
|
||||
editor.cherry_pick=Cherry-pick %s na:
|
||||
|
@ -1427,7 +1428,7 @@ commitstatus.failure=Chyba
|
|||
commitstatus.pending=Čekající
|
||||
commitstatus.success=Úspěch
|
||||
|
||||
ext_issues=Přístup k externím problémům
|
||||
ext_issues=Externí problémy
|
||||
ext_issues.desc=Odkaz na externí systém problémů.
|
||||
|
||||
projects=Projekty
|
||||
|
@ -1608,9 +1609,9 @@ issues.no_content=K dispozici není žádný popis.
|
|||
issues.close=Zavřít problém
|
||||
issues.comment_pull_merged_at=sloučený commit %[1]s do %[2]s %[3]s
|
||||
issues.comment_manually_pull_merged_at=ručně sloučený commit %[1]s do %[2]s %[3]s
|
||||
issues.close_comment_issue=Okomentovat a zavřít
|
||||
issues.close_comment_issue=Zavřít s komentářem
|
||||
issues.reopen_issue=Znovu otevřít
|
||||
issues.reopen_comment_issue=Okomentovat a znovu otevřít
|
||||
issues.reopen_comment_issue=Znovu otevřít s komentářem
|
||||
issues.create_comment=Okomentovat
|
||||
issues.closed_at=`uzavřel/a tento problém <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||
issues.reopened_at=`znovu otevřel/a tento problém <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||
|
@ -1909,7 +1910,7 @@ pulls.has_merged=Chyba: žádost byla sloučena, nelze ji znovu sloučit nebo zm
|
|||
pulls.push_rejected=Push selhal: nahrání bylo zamítnuto. Zkontrolujte Git hooky pro tento repozitář.
|
||||
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.open_unmerged_pull_exists=`Nemůžete provést operaci opětovného otevření, protože máte čekající žádost o sloučení (#%d) s identickými vlastnostmi.`
|
||||
pulls.status_checking=Některé kontroly jsou nedořešeny
|
||||
pulls.status_checks_success=Všechny kontroly byly úspěšné
|
||||
pulls.status_checks_warning=Některé kontroly nahlásily varování
|
||||
|
@ -1925,8 +1926,8 @@ pulls.update_branch_success=Aktualizace větve byla úspěšná
|
|||
pulls.update_not_allowed=Nemáte oprávnění aktualizovat větev
|
||||
pulls.outdated_with_base_branch=Tato větev je zastaralá oproti základní větvi
|
||||
pulls.close=Zavřít žádost o sloučení
|
||||
pulls.closed_at=`uzavřel/a tento požadavek na natažení <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||
pulls.reopened_at=`znovuotevřel/a tento požadavek na natažení <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||
pulls.closed_at=`uzavřel/a tuto žádost o sloučení <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||
pulls.reopened_at=`znovu otevřel/a tuto žádost o sloučení <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||
pulls.cmd_instruction_hint=Zobrazit instrukce příkazové řádky
|
||||
pulls.cmd_instruction_checkout_desc=Z vašeho repositáře projektu se podívejte na novou větev a vyzkoušejte změny.
|
||||
pulls.cmd_instruction_merge_title=Sloučit
|
||||
|
@ -1935,18 +1936,18 @@ pulls.clear_merge_message=Vymazat zprávu o sloučení
|
|||
|
||||
pulls.auto_merge_button_when_succeed=(Když kontroly uspějí)
|
||||
pulls.auto_merge_when_succeed=Automaticky sloučit, když všechny kontroly uspějí
|
||||
pulls.auto_merge_newly_scheduled=Požadavek na natažení byl naplánován na sloučení, jakmile všechny kontroly uspějí.
|
||||
pulls.auto_merge_has_pending_schedule=%[1]s naplánoval/a tento požadavek na natažení pro automatické sloučení, když všechny kontroly uspějí v %[2]s.
|
||||
pulls.auto_merge_newly_scheduled=Žádost o sloučení bude sloučena, jakmile budou všechny kontroly úspěšné.
|
||||
pulls.auto_merge_has_pending_schedule=%[1]s naplánoval/a tuto žádost o sloučení na automatické sloučení, jakmile budou všechny kontroly úspěšné %[2]s.
|
||||
|
||||
pulls.auto_merge_cancel_schedule=Zrušit automatické sloučení
|
||||
pulls.auto_merge_not_scheduled=Tento požadavek na natažení není naplánován na automatické sloučení.
|
||||
pulls.auto_merge_canceled_schedule=Automatické sloučení bylo zrušeno pro tento požadavek na natažení.
|
||||
pulls.auto_merge_not_scheduled=Tato žádost o sloučení nebude automaticky sloučena.
|
||||
pulls.auto_merge_canceled_schedule=Automatické sloučení bylo u této žádosti o sloučení zrušeno.
|
||||
|
||||
pulls.auto_merge_newly_scheduled_comment=`požadavek na automatické sloučení tohoto požadavku na natažení je naplánován, když všechny kontroly uspějí %[1]s`
|
||||
pulls.auto_merge_canceled_schedule_comment=`zrušil/a automatické sloučení tohoto požadavku na natažení, když všechny kontroly uspějí %[1]s`
|
||||
pulls.auto_merge_newly_scheduled_comment=`naplánoval/a tuto žádost o sloučení na automatické sloučení, jakmile budou všechny kontroly úspěšné %[1]s`
|
||||
pulls.auto_merge_canceled_schedule_comment=`zrušil/a automatické sloučení této žádosti o sloučení, jakmile budou všechny kontroly úspěšné %[1]s`
|
||||
|
||||
pulls.delete.title=Odstranit tento požadavek na natažení?
|
||||
pulls.delete.text=Opravdu chcete tento požadavek na natažení smazat? (Tím se trvale odstraní veškerý obsah. Pokud jej hodláte archivovat, zvažte raději jeho uzavření.)
|
||||
pulls.delete.title=Odstranit tuto žádost o sloučení?
|
||||
pulls.delete.text=Opravdu chcete odstranit tuto žádost o sloučení? (Tímto trvale odstraníte všechen obsah. Pokud jej chcete archivovat, zvažte raději jeho uzavření)
|
||||
|
||||
|
||||
pull.deleted_branch=(odstraněno):%s
|
||||
|
@ -1987,15 +1988,15 @@ signing.wont_sign.nokey=Tato instance nemá žádný klíč k podepsání tohoto
|
|||
signing.wont_sign.never=Commity nejsou nikdy podepsány.
|
||||
signing.wont_sign.always=Commity jsou vždy podepsány.
|
||||
signing.wont_sign.pubkey=Commit nebude podepsán, protože nemáte veřejný klíč spojený s vaším účtem.
|
||||
signing.wont_sign.twofa=Pro podepsání commitů musíte mít povoleno dvoufaktorové ověření.
|
||||
signing.wont_sign.twofa=Pro podepisování commitů musíte mít zapnuto dvoufázové ověření.
|
||||
signing.wont_sign.parentsigned=Commit nebude podepsán, protože nadřazený commit není podepsán.
|
||||
signing.wont_sign.basesigned=Sloučení nebude podepsáno, protože základní commit není podepsaný.
|
||||
signing.wont_sign.headsigned=Sloučení nebude podepsáno, protože hlavní revize není podepsána.
|
||||
signing.wont_sign.commitssigned=Sloučení nebude podepsáno, protože všechny přidružené revize nejsou podepsány.
|
||||
signing.wont_sign.approved=Sloučení nebude podepsáno, protože požadavek na natažení není schválen.
|
||||
signing.wont_sign.approved=Sloučení nebude podepsáno, protože žádost o sloučení není schválena.
|
||||
signing.wont_sign.not_signed_in=Nejste přihlášeni.
|
||||
|
||||
ext_wiki=Přístup k externí Wiki
|
||||
ext_wiki=Externí wiki
|
||||
ext_wiki.desc=Odkaz do externí Wiki.
|
||||
|
||||
wiki=Wiki
|
||||
|
@ -2114,7 +2115,7 @@ settings.collaboration.write=Zápis
|
|||
settings.collaboration.read=Čtení
|
||||
settings.collaboration.owner=Vlastník
|
||||
settings.collaboration.undefined=Neurčeno
|
||||
settings.hooks=Webové háčky
|
||||
settings.hooks=Webhooky
|
||||
settings.githooks=Git hooky
|
||||
settings.basic_settings=Základní nastavení
|
||||
settings.mirror_settings=Nastavení zrcadla
|
||||
|
@ -2125,7 +2126,7 @@ settings.mirror_settings.docs.no_new_mirrors=Váš repozitář zrcadlí změny d
|
|||
settings.mirror_settings.docs.can_still_use=I když nemůžete upravit stávající zrcadla nebo vytvořit nová, stále můžete použít své stávající zrcadlo.
|
||||
settings.mirror_settings.docs.more_information_if_disabled=Více informací o zrcadlech pro nahrání a natažení naleznete zde:
|
||||
settings.mirror_settings.docs.doc_link_title=Jak mohu zrcadlit repozitáře?
|
||||
settings.mirror_settings.docs.pulling_remote_title=Stažení ze vzdáleného úložiště
|
||||
settings.mirror_settings.docs.pulling_remote_title=Stahování ze vzdáleného repozitáře
|
||||
settings.mirror_settings.mirrored_repository=Zrcadlený repozitář
|
||||
settings.mirror_settings.direction=Směr
|
||||
settings.mirror_settings.direction.pull=Natáhnout
|
||||
|
@ -2264,23 +2265,23 @@ settings.delete_team_tip=Tento tým má přístup ke všem repositářům a nem
|
|||
settings.remove_team_success=Přístup týmu k repozitáři byl odstraněn.
|
||||
settings.add_webhook=Přidat webhook
|
||||
settings.add_webhook.invalid_channel_name=Kanál webového háčku nemůže být prázdný a nemůže obsahovat pouze znak #.
|
||||
settings.hooks_desc=Webové háčky automaticky vytvářejí dotazy HTTP POST na server, když nastane určitá událost v Forgejo. Čtěte více v <a target="_blank" rel="noopener noreferrer" href="%s">příručce webových háčků</a>.
|
||||
settings.hooks_desc=Webhooky automaticky vytvářejí dotazy HTTP POST na server, když nastane určitá událost ve Forgejo. Více informací v <a target="_blank" rel="noopener noreferrer" href="%s">příručce webhooků</a>.
|
||||
settings.webhook_deletion=Odstranit webhook
|
||||
settings.webhook_deletion_desc=Odstranění webového háčku smaže jeho nastavení a historii doručení. Pokračovat?
|
||||
settings.webhook_deletion_success=Webový háček byl smazán.
|
||||
settings.webhook_deletion_success=Webhook byl smazán.
|
||||
settings.webhook.test_delivery=Test doručitelnosti
|
||||
settings.webhook.test_delivery_desc=Vyzkoušet tento webový háček pomocí falešné události.
|
||||
settings.webhook.test_delivery_desc_disabled=Chcete-li tento webový háček otestovat s falešnou událostí, aktivujte ho.
|
||||
settings.webhook.test_delivery_desc=Otestovat tento webhook pomocí falešné události.
|
||||
settings.webhook.test_delivery_desc_disabled=Chcete-li pomocí falešné události otestovat tento webhook, aktivujte ho.
|
||||
settings.webhook.request=Požadavek
|
||||
settings.webhook.response=Odpověď
|
||||
settings.webhook.headers=Hlavičky
|
||||
settings.webhook.payload=Obsah
|
||||
settings.webhook.body=Tělo zprávy
|
||||
settings.webhook.replay.description=Zopakovat tento webový háček.
|
||||
settings.webhook.replay.description_disabled=Chcete-li znovu spustit tento webový háček, aktivujte jej.
|
||||
settings.webhook.replay.description=Zopakovat tento webhook.
|
||||
settings.webhook.replay.description_disabled=Chcete-li zopakovat tento webhook, aktivujte jej.
|
||||
settings.webhook.delivery.success=Událost byla přidána do fronty doručení. Může to trvat několik sekund, než se zobrazí v historii doručení.
|
||||
settings.githooks_desc=Git hooks jsou spravovány samotným Gitem. Níže můžete upravit soubory hooků pro nastavení vlastních operací.
|
||||
settings.githook_edit_desc=Je-li háček neaktivní, bude zobrazen vzorový obsah. Nebude-li zadán žádný obsah, háček bude vypnut.
|
||||
settings.githook_edit_desc=Je-li webhook neaktivní, bude zobrazen vzorový obsah. Ponechte prázdné pro zakázání tohoto webhooku.
|
||||
settings.githook_name=Název hooku
|
||||
settings.githook_content=Obsah hooku
|
||||
settings.update_githook=Upravit hook
|
||||
|
@ -2303,7 +2304,7 @@ settings.event_create=Vytvořit
|
|||
settings.event_create_desc=Větev nebo značka vytvořena.
|
||||
settings.event_delete=Smazat
|
||||
settings.event_delete_desc=Větev nebo značka smazána.
|
||||
settings.event_fork=Rozštěpit
|
||||
settings.event_fork=Fork
|
||||
settings.event_fork_desc=Repozitář rozštěpen.
|
||||
settings.event_wiki=Wiki
|
||||
settings.event_wiki_desc=Wiki stránka vytvořena, přejmenována nebo smazána.
|
||||
|
@ -2314,32 +2315,32 @@ settings.event_push_desc=Nahrání pomocí Gitu do repozitáře.
|
|||
settings.event_repository=Repozitář
|
||||
settings.event_repository_desc=Repozitář vytvořen nebo smazán.
|
||||
settings.event_header_issue=Události problémů
|
||||
settings.event_issues=Problémy
|
||||
settings.event_issues=Úprava
|
||||
settings.event_issues_desc=Problém otevřen, uzavřen, znovu otevřen nebo upraven.
|
||||
settings.event_issue_assign=Problém přiřazen
|
||||
settings.event_issue_assign=Přiřazení
|
||||
settings.event_issue_assign_desc=Problém přiřazen nebo nepřiřazen.
|
||||
settings.event_issue_label=Problém označen
|
||||
settings.event_issue_label_desc=Štítky problému upraveny nebo vymazány.
|
||||
settings.event_issue_milestone=K problému přidán milník
|
||||
settings.event_issue_milestone_desc=K problému přidán nebo odebrán milník.
|
||||
settings.event_issue_comment=Komentář k problému
|
||||
settings.event_issue_label=Štítky
|
||||
settings.event_issue_label_desc=Štítky problému přidány nebo odstraněny.
|
||||
settings.event_issue_milestone=Milníky
|
||||
settings.event_issue_milestone_desc=Milník přidán, odstraněn nebo upraven.
|
||||
settings.event_issue_comment=Komentáře
|
||||
settings.event_issue_comment_desc=Přidán, upraven nebo smazán komentář problému.
|
||||
settings.event_header_pull_request=Události žádosti o sloučení
|
||||
settings.event_pull_request=Žádost o sloučení
|
||||
settings.event_pull_request=Úprava
|
||||
settings.event_pull_request_desc=Požadavek na natažení otevřen, uzavřen, znovu otevřen nebo upraven.
|
||||
settings.event_pull_request_assign=Žádost o sloučení přiřazena
|
||||
settings.event_pull_request_assign=Přiřazení
|
||||
settings.event_pull_request_assign_desc=Požadavek na natažení přiřazen nebo nepřiřazen.
|
||||
settings.event_pull_request_label=Žádost o sloučení označena
|
||||
settings.event_pull_request_label_desc=Štítky požadavku na natažení aktualizovány nebo vymazány.
|
||||
settings.event_pull_request_milestone=K žádosti o sloučení přidán milník
|
||||
settings.event_pull_request_milestone_desc=Požadavku na natažení přidán nebo odebrán milník.
|
||||
settings.event_pull_request_comment=Žádost o sloučení okomentována
|
||||
settings.event_pull_request_label=Štítky
|
||||
settings.event_pull_request_label_desc=Štítky žádosti o sloučení přidány nebo odstraněny.
|
||||
settings.event_pull_request_milestone=Milníky
|
||||
settings.event_pull_request_milestone_desc=Milník přidán, odstraněn nebo upraven.
|
||||
settings.event_pull_request_comment=Komentáře
|
||||
settings.event_pull_request_comment_desc=Komentář požadavku na natažení vytvořen, upraven nebo odstraněn.
|
||||
settings.event_pull_request_review=Žádost o sloučení zkontrolována
|
||||
settings.event_pull_request_review_desc=Požadavek na natažení schválen, odmítnut nebo zkontrolován.
|
||||
settings.event_pull_request_sync=Žádost o sloučení synchronizována
|
||||
settings.event_pull_request_sync_desc=Požadavek na natažení synchronizován.
|
||||
settings.event_pull_request_review_request=Vyžádána kontrola žádosti o sloučení
|
||||
settings.event_pull_request_review=Kontroly
|
||||
settings.event_pull_request_review_desc=Žádost o sloučení schválena, zamítnuta nebo byl přidán komentář kontroly.
|
||||
settings.event_pull_request_sync=Synchronizováno
|
||||
settings.event_pull_request_sync_desc=Větev automaticky aktualizována s cílovou větví.
|
||||
settings.event_pull_request_review_request=Žádosti o kontrolu
|
||||
settings.event_package=Balíček
|
||||
settings.event_package_desc=Balíček vytvořen nebo odstraněn v repozitáři.
|
||||
settings.branch_filter=Filtr větví
|
||||
|
@ -2348,9 +2349,9 @@ settings.authorization_header=Autorizační hlavička
|
|||
settings.authorization_header_desc=Pokud vyplněno, bude připojeno k požadavkům jako autorizační hlavička. Příklady: %s.
|
||||
settings.active=Aktivní
|
||||
settings.active_helper=Informace o spuštěných událostech budou odeslány na URL webového háčku.
|
||||
settings.add_hook_success=Webový háček byl přidán.
|
||||
settings.add_hook_success=Webhook byl přidán.
|
||||
settings.update_webhook=Upravit webhook
|
||||
settings.update_hook_success=Webový háček byl aktualizován.
|
||||
settings.update_hook_success=Webhook byl aktualizován.
|
||||
settings.delete_webhook=Odstranit webhook
|
||||
settings.recent_deliveries=Nedávná doručení
|
||||
settings.hook_type=Typ hooku
|
||||
|
@ -2436,7 +2437,7 @@ settings.protect_branch_name_pattern=Vzor jména chráněné větve
|
|||
settings.protect_branch_name_pattern_desc=Vzory názvů chráněných větví. Pro vzorovou syntaxi viz <a href="%s">dokumentace</a>. Příklady: main, release/**
|
||||
settings.protect_patterns=Vzory
|
||||
settings.protect_protected_file_patterns=Vzory chráněných souborů (oddělené středníkem „;“)
|
||||
settings.protect_protected_file_patterns_desc=Chráněné soubory, které nemají povoleno být měněny přímo, i když uživatel má právo přidávat, upravovat nebo mazat soubory v této větvi. Více vzorů lze oddělit pomocí středníku („;“). Podívejte se na <a href="%s">github.com/gobwas/glob</a> dokumentaci pro syntaxi vzoru. Příklady: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
|
||||
settings.protect_protected_file_patterns_desc=Chráněné soubory, které nemají povoleno být měněny přímo, i když uživatel má právo přidávat, upravovat nebo mazat soubory v této větvi. Více vzorů lze oddělit pomocí středníku („;“). Podívejte se na dokumentaci <a href="%[1]s">%[2]s</a> pro syntaxi vzoru. Příklady: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
|
||||
settings.protect_unprotected_file_patterns=Vzory nechráněných souborů (oddělené středníkem „;“)
|
||||
settings.protect_unprotected_file_patterns_desc=Nechráněné soubory, které je možné měnit přímo, pokud má uživatel právo zápisu, čímž se obejde omezení push. Více vzorů lze oddělit pomocí středníku („;“). Podívejte se na <a href="%[1]s">%[2]s</a> dokumentaci pro syntaxi vzoru. Příklady: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
|
||||
settings.add_protected_branch=Zapnout ochranu
|
||||
|
@ -2582,7 +2583,7 @@ diff.hide_file_tree=Skrýt souborový strom
|
|||
|
||||
releases.desc=Sledování verzí projektu a souborů ke stažení.
|
||||
release.releases=Vydání
|
||||
release.detail=Podrobnosti vydání
|
||||
release.detail=Podrobnosti o vydání
|
||||
release.tags=Značky
|
||||
release.new_release=Nové vydání
|
||||
release.draft=Koncept
|
||||
|
@ -2718,7 +2719,7 @@ issues.label_archive = Štítek archivu
|
|||
milestones.new_subheader = Milníky vám pomohou zorganizovat problémy a sledovat jejich pokrok.
|
||||
pulls.nothing_to_compare_have_tag = Vybraná větev a značka jsou shodné.
|
||||
activity.navbar.recent_commits = Nedávné commity
|
||||
settings.units.units = Jednotky repozitáře
|
||||
settings.units.units = Jednotky
|
||||
pulls.blocked_by_user = V tomto repozitáři nemůžete vytvořit žádost o sloučení, protože jste byli zablokováni jeho majitelem.
|
||||
pulls.clear_merge_message_hint = Vymazáním zprávy o sloučení pouze odstraníte obsah zprávy commitu a ponecháte vygenerované git trailery, jako „Co-Authored-By …“.
|
||||
pulls.agit_explanation = Vytvořeno pomocí workflow AGit. AGit umožňuje přispěvatelům navrhovat změny pomocí „git push“ bez vytváření forku nebo nové větve.
|
||||
|
@ -2727,7 +2728,7 @@ settings.pull_mirror_sync_in_progress = Probíhá načítání změn ze vzdálen
|
|||
settings.enter_repo_name = Zadejte majitele a repozitář přesně tak, jak je vidíte níže:
|
||||
settings.mirror_settings.docs.disabled_push_mirror.pull_mirror_warning = Tuto akci lze v současné chvíli provést pouze v nabídce „Nová migrace“. Pro více informací viz:
|
||||
settings.new_owner_blocked_doer = Nový majitel vás zablokoval.
|
||||
settings.mirror_settings.pushed_repository = Pushnutý repozitář
|
||||
settings.mirror_settings.pushed_repository = Odeslaný repozitář
|
||||
settings.add_collaborator_blocked_our = Nepodařilo se přidat spolupracovníka, jelikož byl zablokován majitelem repozitáře.
|
||||
pulls.commit_ref_at = `se odkázal na tuto žádost o sloučení z commitu <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||
settings.wiki_rename_branch_main = Normalizovat název větve Wiki
|
||||
|
@ -2744,7 +2745,7 @@ activity.navbar.contributors = Přispěvatelé
|
|||
settings.mirror_settings.docs.pull_mirror_instructions = Pro nastavení pull zrcadla viz:
|
||||
settings.mirror_settings.docs.doc_link_pull_section = sekci „Pulling from a remote repository“ v dokumentaci.
|
||||
settings.units.overview = Přehled
|
||||
settings.units.add_more = Přidat další...
|
||||
settings.units.add_more = Povolit další
|
||||
settings.push_mirror_sync_in_progress = Probíhá odesílání změn na vzdálený %s.
|
||||
settings.wiki_globally_editable = Umožnit komukoli editovat wiki
|
||||
settings.confirmation_string = Potvrzovací řetězec
|
||||
|
@ -2783,8 +2784,8 @@ settings.enforce_on_admins_desc = Správci repozitáře nemohou obejít toto pra
|
|||
issues.num_participants_one = %d účastník
|
||||
size_format = %[1]s: %[2]s, %[3]s: %[4]s
|
||||
issues.archived_label_description = (Archivován) %s
|
||||
release.download_count_one = %d stažení
|
||||
release.download_count_few = %d stažení
|
||||
release.download_count_one = %s stažení
|
||||
release.download_count_few = %s stažení
|
||||
release.system_generated = Tato příloha byla automaticky vygenerována.
|
||||
settings.add_webhook.invalid_path = Cesta nesmí obsahovat část, která je „.“ nebo „..“ nebo prázdný řetězec. Nesmí začínat ani končit lomítkem.
|
||||
settings.web_hook_name_sourcehut_builds = Sestavení SourceHut
|
||||
|
@ -2841,6 +2842,9 @@ mirror_denied_combination = Nelze použít kombinaci ověřování pomocí veře
|
|||
mirror_public_key = Veřejný klíč SSH
|
||||
settings.mirror_settings.push_mirror.none_ssh = Žádné
|
||||
mirror_use_ssh.not_available = Ověřování SSH není dostupné.
|
||||
issues.new.assign_to_me = Přiřadit mně
|
||||
issues.all_title = Vše
|
||||
settings.discord_icon_url.exceeds_max_length = Adresa URL ikony musí mít méně než 2048 znaků
|
||||
|
||||
[graphs]
|
||||
component_loading_info = Tohle může chvíli trvat…
|
||||
|
@ -2885,7 +2889,7 @@ settings.email=Kontaktní e-mail
|
|||
settings.website=Webové stránky
|
||||
settings.location=Umístění
|
||||
settings.permission=Oprávnění
|
||||
settings.repoadminchangeteam=Správce úložišť může týmům přidávat a odebírat přístup
|
||||
settings.repoadminchangeteam=Správce repozitářů může týmům přidávat a odebírat přístup
|
||||
settings.visibility=Viditelnost
|
||||
settings.visibility.public=Veřejná
|
||||
settings.visibility.limited=Omezená (viditelné pouze pro ověřené uživatele)
|
||||
|
@ -2904,7 +2908,7 @@ settings.delete_prompt=Organizace bude trvale odstraněna. Tato změna <strong>N
|
|||
settings.confirm_delete_account=Potvrdit odstranění
|
||||
settings.delete_org_title=Odstranit organizaci
|
||||
settings.delete_org_desc=Tato organizace bude trvale smazána. Pokračovat?
|
||||
settings.hooks_desc=Přidat webové háčky, které budou spouštěny pro <strong>všechny repozitáře</strong> v této organizaci.
|
||||
settings.hooks_desc=Přidat webhooky, které budou spouštěny pro <strong>všechny repozitáře</strong> v této organizaci.
|
||||
|
||||
settings.labels_desc=Přidejte štítky, které mohou být použity pro problémy <strong>všech repozitářů</strong> v rámci této organizace.
|
||||
|
||||
|
@ -2983,7 +2987,7 @@ identity_access=Identita a přístup
|
|||
users=Uživatelské účty
|
||||
organizations=Organizace
|
||||
repositories=Repozitáře
|
||||
hooks=Webové háčky
|
||||
hooks=Webhooky
|
||||
integrations=Integrace
|
||||
authentication=Zdroje ověření
|
||||
emails=Uživatelské e-maily
|
||||
|
@ -3183,12 +3187,12 @@ packages.size=Velikost
|
|||
packages.published=Publikováno
|
||||
|
||||
defaulthooks=Výchozí webhooky
|
||||
defaulthooks.add_webhook=Přidat výchozí webový háček
|
||||
defaulthooks.update_webhook=Aktualizovat výchozí webový háček
|
||||
defaulthooks.add_webhook=Přidat výchozí webhook
|
||||
defaulthooks.update_webhook=Aktualizovat výchozí webhook
|
||||
|
||||
systemhooks=Systémové webhooky
|
||||
systemhooks.add_webhook=Přidat systémový webový háček
|
||||
systemhooks.update_webhook=Aktualizovat systémový webový háček
|
||||
systemhooks.add_webhook=Přidat systémový webhook
|
||||
systemhooks.update_webhook=Aktualizovat systémový webhook
|
||||
|
||||
auths.auth_manage_panel=Správa zdrojů ověřování
|
||||
auths.new=Přidat zdroj ověřování
|
||||
|
@ -3589,7 +3593,7 @@ future=budoucí
|
|||
1y=1 rokem
|
||||
seconds=%d sekundami
|
||||
minutes=%d minutami
|
||||
hours=%d hodinami
|
||||
hours=%d hodin
|
||||
days=%d dny
|
||||
weeks=%d týdny
|
||||
months=%d měsíci
|
||||
|
@ -3636,7 +3640,7 @@ error.unit_not_allowed=Nejste oprávněni přistupovat k této části repozitá
|
|||
[packages]
|
||||
title=Balíčky
|
||||
desc=Správa balíčků repozitáře.
|
||||
empty=Zatím nejsou žádné balíčky.
|
||||
empty=Zatím zde nejsou žádné balíčky.
|
||||
empty.documentation=Další informace o registru balíčků naleznete v <a target="_blank" rel="noopener noreferrer" href="%s">dokumentaci</a>.
|
||||
empty.repo=Nahráli jste balíček, ale nezobrazil se zde? Přejděte na <a href="%[1]s">nastavení balíčku</a> a propojte jej s tímto repozitářem.
|
||||
registry.documentation=Další informace o registru %s naleznete v <a target="_blank" rel="noopener noreferrer" href="%s">dokumentaci</a>.
|
||||
|
@ -3754,7 +3758,7 @@ settings.delete.success=Balíček byl odstraněn.
|
|||
settings.delete.error=Nepodařilo se odstranit balíček.
|
||||
owner.settings.cargo.title=Index registru Cargo
|
||||
owner.settings.cargo.initialize=Inicializovat index
|
||||
owner.settings.cargo.initialize.description=Pro použití Cargo registru je zapotřebí speciální index Git. Použití této možnosti (znovu)vytvoří repozitář a automaticky jej nastaví.
|
||||
owner.settings.cargo.initialize.description=Pro použití registru Cargo je zapotřebí speciální index Git. Použití této možnosti (znovu) vytvoří repozitář a automaticky jej nastaví.
|
||||
owner.settings.cargo.initialize.error=Nepodařilo se inicializovat Cargo index: %v
|
||||
owner.settings.cargo.initialize.success=Index Cargo byl úspěšně vytvořen.
|
||||
owner.settings.cargo.rebuild=Znovu vytvořit index
|
||||
|
@ -3822,7 +3826,7 @@ management=Správa tajných klíčů
|
|||
[actions]
|
||||
actions=Akce
|
||||
|
||||
unit.desc=Spravovat integrované pipeliny CI/CD pomocí funkce Forgejo Actions
|
||||
unit.desc=Spravovat integrované pipeliny CI/CD pomocí funkce Forgejo Actions.
|
||||
|
||||
status.unknown=Neznámý
|
||||
status.waiting=Čekání
|
||||
|
@ -3893,7 +3897,7 @@ workflow.disabled=Pracovní postup je zakázán.
|
|||
variables=Proměnné
|
||||
variables.management=Správa proměnných
|
||||
variables.creation=Přidat proměnnou
|
||||
variables.none=Zatím nejsou žádné proměnné.
|
||||
variables.none=Zatím zde nejsou žádné proměnné.
|
||||
variables.deletion=Odstranit proměnnou
|
||||
variables.deletion.description=Odstranění proměnné je trvalé a nelze jej vrátit zpět. Pokračovat?
|
||||
variables.description=Proměnné budou předány určitým akcím a nelze je přečíst jinak.
|
||||
|
@ -3970,6 +3974,8 @@ pull_kind = Hledat pully...
|
|||
union = Sdružené
|
||||
union_tooltip = Zahrnout výsledky, které odpovídají jakýmkoli slovům odděleným mezerami
|
||||
milestone_kind = Hledat milníky...
|
||||
regexp = RegExp
|
||||
regexp_tooltip = Interpretovat hledaný výraz jako regulární výraz
|
||||
|
||||
[markup]
|
||||
filepreview.lines = Řádky %[1]d až %[2]d v souboru %[3]s
|
||||
|
@ -3987,4 +3993,24 @@ eib = EiB
|
|||
|
||||
|
||||
[translation_meta]
|
||||
test = diky vsem za pomoc :)
|
||||
test = diky vsem za pomoc :)
|
||||
|
||||
[repo.permissions]
|
||||
pulls.write = <b>Zapisovat:</b> Zavírat žádosti o sloučení a spravovat metadata jako štítky, milníky, zpracovatele, data dokončení a závislosti.
|
||||
packages.write = <b>Zapisovat:</b> Zveřejňovat a mazat balíčky připojené k repozitáři.
|
||||
projects.read = <b>Číst:</b> Přístup k projektovým nástěnkám repozitáře.
|
||||
code.write = <b>Zapisovat:</b> Odesílat změny do repozitáře, vytvářet větve a značky.
|
||||
issues.write = <b>Zapisovat:</b> Zavírat problémy a spravovat metadata jako štítky, milníky, zpracovatele, data dokončení a závislosti.
|
||||
pulls.read = <b>Číst:</b> Číst a vytvářet žádosti o sloučení.
|
||||
releases.read = <b>Číst:</b> Zobrazovat a stahovat vydání.
|
||||
releases.write = <b>Zapisovat:</b> Zveřejňovat, upravovat a mazat vydání a jejich soubory.
|
||||
wiki.read = <b>Číst:</b> Číst integrovanou wiki a její historii.
|
||||
wiki.write = <b>Zapisovat:</b> Vytvářet, aktualizovat a mazat stránky v integrované wiki.
|
||||
projects.write = <b>Zapisovat:</b> Vytvářet projekty a sloupce a upravovat je.
|
||||
packages.read = <b>Číst:</b> Zobrazovat a stahovat balíčky připojené k repozitáři.
|
||||
actions.read = <b>Číst:</b> Zobrazovat integrované pipeliny CI/CD a jejich protokoly.
|
||||
actions.write = <b>Zapisovat:</b> Ručně spouštět, restartovat, rušit nebo schvalovat čekající pipeliny CI/CD.
|
||||
ext_wiki = Přístup k odkazu v externí wiki. Oprávnění jsou spravována externě.
|
||||
code.read = <b>Číst:</b> Přístup a klonování kódu v repozitáři.
|
||||
issues.read = <b>Číst:</b> Číst a vytvářet problémy a komentáře.
|
||||
ext_issues = Přístup k odkazu v externím sledovacím systému problémů. Oprávnění jsou spravována externě.
|
|
@ -318,7 +318,7 @@ run_user_not_match=Der „Ausführen als“-Benutzername ist nicht der aktuelle
|
|||
internal_token_failed=Fehler beim Generieren des internen Tokens: %v
|
||||
secret_key_failed=Fehler beim Generieren des geheimen Schlüssels: %v
|
||||
save_config_failed=Fehler beim Speichern der Konfiguration: %v
|
||||
invalid_admin_setting=Administrator-Konto Einstellungen sind ungültig: %v
|
||||
invalid_admin_setting=Die Administratorkonto-Einstellungen sind ungültig: %v
|
||||
invalid_log_root_path=Pfad zum Log-Verzeichnis ist ungültig: %v
|
||||
default_keep_email_private=E-Mail-Adressen standardmäßig verbergen
|
||||
default_keep_email_private.description=E-Mail-Adressen von neuen Benutzern standardmäßig verbergen, damit diese nicht direkt nach der Registrierung öffentlich wird.
|
||||
|
@ -476,6 +476,7 @@ back_to_sign_in = Zurück zur Anmeldung
|
|||
sign_in_openid = Mit OpenID fortfahren
|
||||
hint_login = Hast du bereits ein Konto? <a href="%s">Jetzt anmelden!</a>
|
||||
hint_register = Brauchst du ein Konto? <a href="%s">Jetzt registrieren.</a>
|
||||
unauthorized_credentials = Die Zugangsdaten sind inkorrekt oder abgelaufen. Versuchen es erneut oder siehe %s für mehr Informationen
|
||||
|
||||
[mail]
|
||||
view_it_on=Auf %s ansehen
|
||||
|
@ -1038,7 +1039,7 @@ hints = Hinweise
|
|||
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.
|
||||
additional_repo_units_hint_description = Einen „Mehr aktivieren“-Hinweis für Repositories, welche nicht alle verfügbaren Einheiten aktiviert haben, anzeigen.
|
||||
pronouns = Pronomen
|
||||
pronouns_custom = Eigene
|
||||
pronouns_unspecified = Nicht spezifiziert
|
||||
|
@ -1208,12 +1209,12 @@ migrate.migrate_items_options=Zugangs-Token wird benötigt, um zusätzliche Elem
|
|||
migrated_from=Migriert von <a href="%[1]s">%[2]s</a>
|
||||
migrated_from_fake=Migriert von %[1]s
|
||||
migrate.migrate=Migrieren von %s
|
||||
migrate.migrating=Migriere von <b>%s</b> ...
|
||||
migrate.migrating=Migriere von <b>%s</b> …
|
||||
migrate.migrating_failed=Migrieren von <b>%s</b> fehlgeschlagen.
|
||||
migrate.migrating_failed.error=Migration fehlgeschlagen: %s
|
||||
migrate.migrating_failed_no_addr=Migration fehlgeschlagen.
|
||||
migrate.github.description=Daten von github.com oder GitHub-Enterprise-Server migrieren.
|
||||
migrate.git.description=Ein Repository von einem beliebigen Git Service klonen.
|
||||
migrate.git.description=Ein Repository von einem beliebigen Git-Service klonen.
|
||||
migrate.gitlab.description=Daten von gitlab.com oder anderen GitLab-Instanzen migrieren.
|
||||
migrate.gitea.description=Daten von gitea.com oder anderen Gitea-Instanzen migrieren.
|
||||
migrate.gogs.description=Daten von notabug.org oder anderen Gogs-Instanzen migrieren.
|
||||
|
@ -1275,7 +1276,7 @@ org_labels_desc_manage=verwalten
|
|||
milestones=Meilensteine
|
||||
commits=Commits
|
||||
commit=Commit
|
||||
release=Erscheinungsdatum
|
||||
release=Release
|
||||
releases=Releases
|
||||
tag=Tag
|
||||
released_this=hat released
|
||||
|
@ -1299,7 +1300,7 @@ ambiguous_character=`%[1]c [U+%04[1]X] kann mit %[2]c [U+%04[2]X] verwechselt we
|
|||
escape_control_characters=Escapen
|
||||
unescape_control_characters=Unescapen
|
||||
file_copy_permalink=Permalink kopieren
|
||||
view_git_blame=Git Blame ansehen
|
||||
view_git_blame=„git blame“ ansehen
|
||||
video_not_supported_in_browser=Dein Browser unterstützt das HTML5-„video“-Tag nicht.
|
||||
audio_not_supported_in_browser=Dein Browser unterstützt das HTML5-„audio“-Tag nicht.
|
||||
stored_lfs=Gespeichert mit Git LFS
|
||||
|
@ -1316,7 +1317,7 @@ commit.load_referencing_branches_and_tags=Lade Branches und Tags, die diesen Com
|
|||
blame=Blame
|
||||
download_file=Datei herunterladen
|
||||
normal_view=Normale Ansicht
|
||||
line=zeile
|
||||
line=Zeile
|
||||
lines=Zeilen
|
||||
from_comment=(Kommentar)
|
||||
|
||||
|
@ -1420,7 +1421,7 @@ commitstatus.failure=Fehler
|
|||
commitstatus.pending=Ausstehend
|
||||
commitstatus.success=Erfolg
|
||||
|
||||
ext_issues=Zugriff auf Externe Issues
|
||||
ext_issues=Externe Issues
|
||||
ext_issues.desc=Link zu externem Issuetracker.
|
||||
|
||||
projects=Projekte
|
||||
|
@ -1521,7 +1522,7 @@ issues.remove_milestone_at=`hat dieses Issue %[2]s vom <b>%[1]s</b> Meilenstein
|
|||
issues.remove_project_at=`hat dies vom Projekt <b>%s</b> %s entfernt`
|
||||
issues.deleted_milestone=`(gelöscht)`
|
||||
issues.deleted_project=`(gelöscht)`
|
||||
issues.self_assign_at=`hat sich das Issue %s selbst zugewiesen`
|
||||
issues.self_assign_at=`hat sich %s selbst zugewiesen`
|
||||
issues.add_assignee_at=`wurde von <b>%s</b> %s zugewiesen`
|
||||
issues.remove_assignee_at=`wurde von <b>%s</b> von der Zuweisung %s befreit`
|
||||
issues.remove_self_assignment=`hat die Selbstzuweisung %s entfernt`
|
||||
|
@ -1601,9 +1602,9 @@ issues.no_content=Keine Beschreibung angegeben.
|
|||
issues.close=Issue schließen
|
||||
issues.comment_pull_merged_at=hat Commit %[1]s in %[2]s %[3]s zusammengeführt
|
||||
issues.comment_manually_pull_merged_at=hat Commit %[1]s in %[2]s %[3]s manuell zusammengeführt
|
||||
issues.close_comment_issue=Kommentieren und schließen
|
||||
issues.close_comment_issue=Mit Kommentar schließen
|
||||
issues.reopen_issue=Wieder öffnen
|
||||
issues.reopen_comment_issue=Kommentieren und wieder öffnen
|
||||
issues.reopen_comment_issue=Mit Kommentar wieder öffnen
|
||||
issues.create_comment=Kommentieren
|
||||
issues.closed_at=`hat diesen Issue <a id="%[1]s" href="#%[1]s">%[2]s</a> geschlossen`
|
||||
issues.reopened_at=`hat dieses Issue <a id="%[1]s" href="#%[1]s">%[2]s</a> wieder geöffnet`
|
||||
|
@ -1647,7 +1648,7 @@ issues.label_archive_tooltip=Archivierte Labels werden bei der Suche nach Labels
|
|||
issues.label_exclusive_desc=Nenn das Label <code>Bereich/Element</code>, um es gegenseitig ausschließend mit anderen <code>Bereich/</code>-Labels zu machen.
|
||||
issues.label_exclusive_warning=Alle im Konflikt stehenden Labels werden beim Bearbeiten der Labels eines Issues oder eines Pull-Requests entfernt.
|
||||
issues.label_count=%d Labels
|
||||
issues.label_open_issues=%d offene Issues
|
||||
issues.label_open_issues=%d offene Issues/Pull-Requests
|
||||
issues.label_edit=Bearbeiten
|
||||
issues.label_delete=Löschen
|
||||
issues.label_modify=Label bearbeiten
|
||||
|
@ -1851,7 +1852,7 @@ pulls.still_in_progress=Noch in Bearbeitung?
|
|||
pulls.add_prefix=Präfix „<strong>%s</strong>“ hinzufügen
|
||||
pulls.remove_prefix=Präfix „<strong>%s</strong>“ entfernen
|
||||
pulls.data_broken=Dieser Pull-Requests ist kaputt, da Fork-Informationen gelöscht wurden.
|
||||
pulls.files_conflicted=Dieser Pull-Request hat Änderungen, die im Widerspruch zum Ziel-Branch stehen.
|
||||
pulls.files_conflicted=Dieser Pull-Request hat Änderungen, die Konflikte mit dem Ziel-Branch haben.
|
||||
pulls.is_checking=Die Merge-Konfliktprüfung läuft noch. Bitte aktualisiere die Seite in wenigen Augenblicken.
|
||||
pulls.is_ancestor=Dieser Branch ist bereits im Zielbranch enthalten. Es existiert nichts zusammenzuführen.
|
||||
pulls.is_empty=Die Änderungen an diesem Branch sind bereits auf dem Zielbranch. Dies wird ein leerer Commit sein.
|
||||
|
@ -1984,7 +1985,7 @@ signing.wont_sign.commitssigned=Der Merge-Commit wird nicht signiert werden, da
|
|||
signing.wont_sign.approved=Der Merge-Commit wird nicht signiert werden, da der Pull-Request nicht genehmigt wurde.
|
||||
signing.wont_sign.not_signed_in=Du bist nicht eingeloggt.
|
||||
|
||||
ext_wiki=Zugriff auf externes Wiki
|
||||
ext_wiki=Externes Wiki
|
||||
ext_wiki.desc=Verweis auf externes Wiki.
|
||||
|
||||
wiki=Wiki
|
||||
|
@ -2308,32 +2309,32 @@ settings.event_push_desc=Git push in ein Repository.
|
|||
settings.event_repository=Repository
|
||||
settings.event_repository_desc=Repository erstellt oder gelöscht.
|
||||
settings.event_header_issue=Issue-Ereignisse
|
||||
settings.event_issues=Issues
|
||||
settings.event_issues=Änderung
|
||||
settings.event_issues_desc=Issue geöffnet, geschlossen, wieder geöffnet oder bearbeitet.
|
||||
settings.event_issue_assign=Issue zugewiesen
|
||||
settings.event_issue_assign=Zuweisung
|
||||
settings.event_issue_assign_desc=Issue zugewiesen oder Zuweisung entfernt.
|
||||
settings.event_issue_label=Issue mit Label versehen
|
||||
settings.event_issue_label_desc=Issue-Labels aktualisiert oder geleert.
|
||||
settings.event_issue_milestone=Meilenstein einem Issue zugewiesen
|
||||
settings.event_issue_milestone_desc=Meilenstein zu Issue hinzugefügt oder entfernt.
|
||||
settings.event_issue_comment=Issue-Kommentar
|
||||
settings.event_issue_label=Labels
|
||||
settings.event_issue_label_desc=Issue-Labels hinzugefügt oder entfernt.
|
||||
settings.event_issue_milestone=Meilensteine
|
||||
settings.event_issue_milestone_desc=Meilenstein hinzugefügt, entfernt oder verändert.
|
||||
settings.event_issue_comment=Kommentare
|
||||
settings.event_issue_comment_desc=Issue-Kommentar angelegt, geändert oder gelöscht.
|
||||
settings.event_header_pull_request=Pull-Request-Ereignisse
|
||||
settings.event_pull_request=Pull-Request
|
||||
settings.event_pull_request=Änderung
|
||||
settings.event_pull_request_desc=Pull-Request geöffnet, geschlossen, wieder geöffnet oder bearbeitet.
|
||||
settings.event_pull_request_assign=Pull-Request zugewiesen
|
||||
settings.event_pull_request_assign=Zuweisung
|
||||
settings.event_pull_request_assign_desc=Pull-Request zugewiesen oder Zuweisung entfernt.
|
||||
settings.event_pull_request_label=Pull-Request mit Label versehen
|
||||
settings.event_pull_request_label_desc=Pull-Request-Labels aktualisiert oder geleert.
|
||||
settings.event_pull_request_milestone=Pull-Request zum Meilenstein hinzugefügt
|
||||
settings.event_pull_request_milestone_desc=Pull-Request zum Meilenstein hinzugefügt oder entfernt.
|
||||
settings.event_pull_request_comment=Pull-Request-Kommentar
|
||||
settings.event_pull_request_label=Labels
|
||||
settings.event_pull_request_label_desc=Pull-Request-Labels hinzugefügt oder entfernt.
|
||||
settings.event_pull_request_milestone=Meilensteine
|
||||
settings.event_pull_request_milestone_desc=Meilenstein hinzugefügt, entfernt oder bearbeitet.
|
||||
settings.event_pull_request_comment=Kommentare
|
||||
settings.event_pull_request_comment_desc=Pull-Request-Kommentar angelegt, geändert oder gelöscht.
|
||||
settings.event_pull_request_review=Pull-Request überprüft
|
||||
settings.event_pull_request_review_desc=Pull-Request genehmigt, abgelehnt oder Kommentar hinterlassen.
|
||||
settings.event_pull_request_sync=Pull-Request synchronisiert
|
||||
settings.event_pull_request_sync_desc=Pull-Request synchronisiert.
|
||||
settings.event_pull_request_review_request=Überprüfung des Pull-Requests angefragt
|
||||
settings.event_pull_request_review=Reviews
|
||||
settings.event_pull_request_review_desc=Pull-Request genehmigt, abgelehnt oder Review-Kommentare hinterlassen.
|
||||
settings.event_pull_request_sync=Synchronisiert
|
||||
settings.event_pull_request_sync_desc=Branch automatisch mit Zielbranch aktualisiert.
|
||||
settings.event_pull_request_review_request=Review-Anfragen
|
||||
settings.event_pull_request_review_request_desc=Überprüfung des Pull-Requests angefragt oder die Anfrage entfernt.
|
||||
settings.event_pull_request_approvals=Genehmigungen zum Pull-Request
|
||||
settings.event_pull_request_merge=Pull-Request-Merge
|
||||
|
@ -2434,7 +2435,7 @@ settings.require_signed_commits_desc=Pushes auf diesen Branch ablehnen, wenn Com
|
|||
settings.protect_branch_name_pattern=Muster für geschützte Branchnamen
|
||||
settings.protect_patterns=Muster
|
||||
settings.protect_protected_file_patterns=Geschützte Dateimuster (durch Semikolon „;“ getrennt)
|
||||
settings.protect_protected_file_patterns_desc=Geschützte Dateien dürfen nicht direkt geändert werden, auch wenn der Benutzer Rechte hat, Dateien in diesem Branch hinzuzufügen, zu bearbeiten oder zu löschen. Mehrere Muster können mit Semikolon („;“) getrennt werden. Siehe <a href="%s">github.com/gobwas/glob</a> Dokumentation zur Mustersyntax. Beispiele: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
|
||||
settings.protect_protected_file_patterns_desc=Geschützte Dateien dürfen nicht direkt geändert werden, auch wenn der Benutzer Rechte hat, Dateien in diesem Branch hinzuzufügen, zu bearbeiten oder zu löschen. Mehrere Muster können mit Semikolon („;“) getrennt werden. Siehe <a href="%s">%s</a> Dokumentation zur Mustersyntax. Beispiele: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
|
||||
settings.protect_unprotected_file_patterns=Ungeschützte Dateimuster (durch Semikolon „;“ getrennt)
|
||||
settings.protect_unprotected_file_patterns_desc=Ungeschützte Dateien, die direkt geändert werden dürfen, wenn der Benutzer Schreibzugriff hat, können die Push-Beschränkung umgehen. Mehrere Muster können mit Semikolon („;“) getrennt werden. Siehe <a href="%[1]s">%[2]s</a> Dokumentation zur Mustersyntax. Beispiele: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
|
||||
settings.add_protected_branch=Schutz aktivieren
|
||||
|
@ -2503,7 +2504,7 @@ settings.lfs_invalid_locking_path=Ungültiger Pfad: %s
|
|||
settings.lfs_invalid_lock_directory=Verzeichnis kann nicht gesperrt werden: %s
|
||||
settings.lfs_lock_already_exists=Sperre existiert bereits: %s
|
||||
settings.lfs_lock=Sperren
|
||||
settings.lfs_lock_path=Zu sperrender Dateipfad...
|
||||
settings.lfs_lock_path=Zu sperrender Dateipfad …
|
||||
settings.lfs_locks_no_locks=Keine Sperren
|
||||
settings.lfs_lock_file_no_exist=Gesperrte Datei existiert nicht im Standard-Branch
|
||||
settings.lfs_force_unlock=Freigabe erzwingen
|
||||
|
@ -2684,7 +2685,7 @@ rss.must_be_on_branch = Du musst auf einem Branch sein, um einen RSS-Feed zu hab
|
|||
new_repo_helper = Ein Repository enthält alle Projektdateien inklusive der Revisionshistorie. Bereits woanders gehostet? <a href="%s">Repository migrieren.</a>
|
||||
issues.comment.blocked_by_user = Du kannst kein Kommentar für dieses Issue erstellen, weil du vom Repository-Besitzer oder dem Autoren des Issues blockiert wurdest.
|
||||
clone_in_vscodium = In VSCodium klonen
|
||||
settings.units.add_more = Mehr hinzufügen …
|
||||
settings.units.add_more = Mehr aktivieren
|
||||
settings.wiki_rename_branch_main_desc = Den Branch, der intern vom Wiki benutzt wird, zu „%s“ umbenennen. Dies ist permanent und kann nicht rückgängig gemacht werden.
|
||||
desc.sha256 = SHA256
|
||||
object_format_helper = Objektformat des Repositorys. Kann später nicht geändert werden. SHA1 ist am kompatibelsten.
|
||||
|
@ -2727,7 +2728,7 @@ pulls.fast_forward_only_merge_pull_request = Nur Fast-forward
|
|||
pulls.cmd_instruction_checkout_desc = Checke einen neuen Branch aus deinem Projekt-Repository aus und teste die Änderungen.
|
||||
pulls.cmd_instruction_merge_title = Zusammenführen
|
||||
pulls.cmd_instruction_merge_desc = Die Änderungen zusammenführen und auf Forgejo aktualisieren.
|
||||
settings.units.units = Repository-Einheiten
|
||||
settings.units.units = Einheiten
|
||||
settings.units.overview = Übersicht
|
||||
settings.wiki_rename_branch_main_notices_1 = Diese Aktion <strong>KANN NICHT</strong> rückgängig gemacht werden.
|
||||
settings.wiki_rename_branch_main_notices_2 = Dies wird den internen Branch des Repository-Wikis von %s permanent umbenennen. Existierende Checkouts müssen aktualisiert werden.
|
||||
|
@ -2826,6 +2827,9 @@ mirror_denied_combination = Authentifizierung mittels öffentlichem Schlüssel u
|
|||
settings.mirror_settings.push_mirror.none_ssh = Nichts
|
||||
settings.mirror_settings.push_mirror.copy_public_key = Öffentlichen Schlüssel kopieren
|
||||
mirror_use_ssh.not_available = SSH-Authentifizierung ist nicht verfügbar.
|
||||
issues.new.assign_to_me = Mir selbst zuweisen
|
||||
issues.all_title = Alle
|
||||
settings.discord_icon_url.exceeds_max_length = Die Icon-URL darf eine Länge von 2048 Zeichen nicht überschreiten
|
||||
|
||||
[graphs]
|
||||
|
||||
|
@ -3265,12 +3269,12 @@ auths.tip.bitbucket=Registriere einen neuen OAuth-Consumer unter %s
|
|||
auths.tip.nextcloud=Registriere einen neuen OAuth-Consumer auf deiner Instanz über das folgende Menü: „Settings -> Security -> OAuth 2.0 client“
|
||||
auths.tip.dropbox=Erstelle eine neue App auf %s
|
||||
auths.tip.facebook=Erstelle eine neue Anwendung auf %s und füge das Produkt „Facebook Login“ hinzu
|
||||
auths.tip.github=Erstelle unter %s eine neue OAuth-Anwendung.
|
||||
auths.tip.github=Registriere unter %s eine neue OAuth-Anwendung
|
||||
auths.tip.gitlab=Erstelle unter https://gitlab.com/profile/applications eine neue Anwendung.
|
||||
auths.tip.google_plus=Du erhältst die OAuth2-Client-Zugangsdaten in der Google-API-Konsole unter %s
|
||||
auths.tip.openid_connect=Benutze die OpenID-Connect-Discovery-URL (<server>/.well-known/openid-configuration), um die Endpunkte zu spezifizieren
|
||||
auths.tip.twitter=Gehe auf %s, erstelle eine Anwendung und stelle sicher, dass die Option „Allow this application to be used to Sign in with Twitter“ aktiviert ist
|
||||
auths.tip.discord=Erstelle unter %s eine neue Anwendung.
|
||||
auths.tip.discord=Registriere unter %s eine neue Anwendung
|
||||
auths.tip.gitea=Registriere eine neue OAuth2-Anwendung. Eine Anleitung findest du unter %s
|
||||
auths.tip.yandex=`Erstelle eine neue Anwendung auf %s. Wähle folgende Berechtigungen aus dem Abschnitt „Yandex.Passport API“: „Zugriff auf E-Mail-Adresse“, „Zugriff auf Benutzeravatar“ und „Zugriff auf Benutzername, Vor- und Nachname, Geschlecht“`
|
||||
auths.tip.mastodon=Gib eine benutzerdefinierte URL für die Mastodon-Instanz ein, mit der du dich authentifizieren möchtest (oder benutze die standardmäßige)
|
||||
|
@ -3792,7 +3796,7 @@ management=Secrets verwalten
|
|||
[actions]
|
||||
actions=Actions
|
||||
|
||||
unit.desc=Integrierte CI/CD-Pipelines mit Forgejo-Actions verwalten
|
||||
unit.desc=Integrierte CI/CD-Pipelines mit Forgejo-Actions verwalten.
|
||||
|
||||
status.unknown=Unbekannt
|
||||
status.waiting=Wartend
|
||||
|
@ -3947,6 +3951,8 @@ pull_kind = Pulls durchsuchen …
|
|||
union = Vereinigungsmenge
|
||||
union_tooltip = Ergebnisse, die auf ein beliebiges von den Whitespace getrennten Schlüsselwörtern passen, einbinden
|
||||
milestone_kind = Meilensteine suchen …
|
||||
regexp = RegExp
|
||||
regexp_tooltip = Suchbegriff als regulären Ausdruck interpretieren
|
||||
|
||||
[markup]
|
||||
filepreview.line = Zeile %[1]d in %[2]s
|
||||
|
@ -3964,4 +3970,24 @@ eib = EiB
|
|||
|
||||
|
||||
[translation_meta]
|
||||
test = ok
|
||||
test = ok
|
||||
|
||||
[repo.permissions]
|
||||
code.write = <b>Schreiben:</b> In das Repository pushen, Branches und Tags erstellen.
|
||||
code.read = <b>Lesen:</b> Zugriff auf das Repository und Klonen.
|
||||
issues.read = <b>Lesen:</b> Issues und Kommentare lesen und erstellen.
|
||||
issues.write = <b>Schreiben:</b> Issues schließen und Metadaten wie Labels, Meilensteine, Zuweisungen, Fälligkeitsdaten und Abhängigkeiten verwalten.
|
||||
pulls.read = <b>Lesen:</b> Pull-Requests lesen und erstellen.
|
||||
releases.read = <b>Lesen:</b> Releases ansehen und herunterladen.
|
||||
releases.write = <b>Schreiben:</b> Releases und ihre Assets veröffentlichen, bearbeiten und löschen.
|
||||
wiki.read = <b>Lesen:</b> Das integrierte Wiki und seine Historie lesen.
|
||||
wiki.write = <b>Schreiben:</b> Seiten im integrierten Wiki erstellen, aktualisieren und löschen.
|
||||
projects.read = <b>Lesen:</b> Zugriff auf Projektboards des Repositories.
|
||||
projects.write = <b>Schreiben:</b> Projekte und Spalten erstellen und bearbeiten.
|
||||
packages.read = <b>Lesen:</b> Pakete dieses Repositories betrachten und herunterladen.
|
||||
packages.write = <b>Schreiben:</b> Pakete dieses Repositories veröffentlichen und löschen.
|
||||
actions.read = <b>Lesen:</b> Integrierte CI/CD-Pipelines und ihre Logs betrachten.
|
||||
actions.write = <b>Schreiben:</b> Ausstehende CI/CD-Pipelines manuell auslösen, neustarten, abbrechen oder genehmigen.
|
||||
ext_issues = Zugriff auf den Link zu einem externen Issue-Tracker. Die Berechtigungen werden extern verwaltet.
|
||||
ext_wiki = Zugriff auf den Link zu einem externen Wiki. Die Berechtigungen werden extern verwaltet.
|
||||
pulls.write = <b>Schreiben:</b> Pull-Requests schließen und Metadaten wie Labels, Meilensteine, Zuweisungen, Fälligkeitsdaten und Abhängigkeiten verwalten.
|
|
@ -51,7 +51,7 @@ webauthn_error_empty=Πρέπει να ορίσετε ένα όνομα για
|
|||
webauthn_error_timeout=Το χρονικό όριο έφτασε πριν το κλειδί να διαβαστεί. Παρακαλώ ανανεώστε τη σελίδα και προσπαθήστε ξανά.
|
||||
webauthn_reload=Ανανέωση
|
||||
|
||||
repository=Αποθετήριο
|
||||
repository=Repository
|
||||
organization=Οργανισμός
|
||||
mirror=Αντίγραφο
|
||||
new_repo=Νέο αποθετήριο
|
||||
|
@ -129,7 +129,7 @@ archived=Αρχειοθετήθηκε
|
|||
|
||||
concept_system_global=Γενικό
|
||||
concept_user_individual=Ατομικό
|
||||
concept_code_repository=Αποθετήριο
|
||||
concept_code_repository=Repository
|
||||
concept_user_organization=Οργανισμός
|
||||
|
||||
show_timestamps=Εμφάνιση χρονοσημάνσεων
|
||||
|
@ -160,11 +160,11 @@ invalid_data = Τα δεδομένα δεν είναι έγκυρα: %v
|
|||
test = Τεστ
|
||||
copy_generic = Αντιγραφή στο πρόχειρο
|
||||
error413 = Έχετε εξαντλήσει τους διαθέσιμους πόρους σας.
|
||||
new_repo.link = Νέο αποθετήριο
|
||||
new_repo.link = Νέο repository
|
||||
new_migrate.link = Νέα μεταφορά
|
||||
new_org.link = Νέος οργανισμός
|
||||
new_migrate.title = Νέα μεταφορά
|
||||
new_repo.title = Νέο αποθετήριο
|
||||
new_repo.title = Νέο repository
|
||||
new_org.title = Νέος οργανισμός
|
||||
|
||||
[aria]
|
||||
|
@ -504,8 +504,8 @@ reset_password.text=Εφόσον το αίτημα δημιουργήθηκε α
|
|||
|
||||
register_success=Η εγγραφή ολοκληρώθηκε επιτυχώς
|
||||
|
||||
issue_assigned.pull=Ο/Η @%[1]s σας έχει αναθέσει στο pull request %[2]s στο αποθετήριο %[3]s.
|
||||
issue_assigned.issue=Ο/Η @%[1]s σας ανέθεσε το ζήτημα %[2]s στο αποθετήριο %[3]s.
|
||||
issue_assigned.pull=Ο/Η @%[1]s σας έχει αναθέσει στο pull request %[2]s στο repository %[3]s.
|
||||
issue_assigned.issue=Ο/Η @%[1]s σας ανέθεσε το ζήτημα %[2]s στο repository %[3]s.
|
||||
|
||||
issue.x_mentioned_you=Ο/Η <b>@%s</b> σας ανέφερε:
|
||||
issue.action.force_push=Ο/Η <b>%[1]s</b> έκανε force-push το <b>%[2]s</b> από %[3]s σε %[4]s.
|
||||
|
@ -530,13 +530,13 @@ release.downloads=Λήψεις:
|
|||
release.download.zip=Πηγαίος Κώδικας (ZIP)
|
||||
release.download.targz=Πηγαίος Κώδικας (TAR.GZ)
|
||||
|
||||
repo.transfer.subject_to=Ο/Η %s θα ήθελε να μεταφέρει το αποθετήριο «%s» σε %s
|
||||
repo.transfer.subject_to_you=Ο/Η %s θα ήθελε να σας μεταφέρει το αποθετήριο «%s»
|
||||
repo.transfer.subject_to=Ο/Η %s θα ήθελε να μεταφέρει το repository «%s» στο %s
|
||||
repo.transfer.subject_to_you=Ο/Η %s θα ήθελε να σας μεταφέρει το repository «%s»
|
||||
repo.transfer.to_you=εσάς
|
||||
repo.transfer.body=Για να αποδεχτείτε ή να απορρίψετε το αίτημα αυτό, επισκεφθείτε το %s ή απλά αγνοήστε το.
|
||||
|
||||
repo.collaborator.added.subject=Ο/Η %s σας πρόσθεσε στο %s ως συνεργάτη
|
||||
repo.collaborator.added.text=Είστε πλέον συνεργάτης στο αποθετήριο:
|
||||
repo.collaborator.added.text=Είστε πλέον συνεργάτης στο repository:
|
||||
|
||||
team_invite.subject=Ο/Η %[1]s σας προσκάλεσε να συμμετέχετε στον οργανισμό %[2]s
|
||||
team_invite.text_1=Ο/Η %[1]s σας προσκάλεσε να συμμετέχετε στην ομάδα %[2]s του οργανισμού %[3]s.
|
||||
|
@ -615,10 +615,10 @@ username_change_not_local_user=Δεν επιτρέπεται στους μη τ
|
|||
username_has_not_been_changed=Το όνομα χρήστη δεν άλλαξε
|
||||
repo_name_been_taken=Το όνομα του αποθετηρίου χρησιμοποιείται ήδη.
|
||||
repository_force_private=Η επιλογή Μόνο Ιδιωτικά είναι ενεργοποιημένη: τα ιδιωτικά αποθετήρια δεν μπορούν να δημοσιευθούν.
|
||||
repository_files_already_exist=Αρχεία υπάρχουν ήδη για αυτό το αποθετήριο. Επικοινωνήστε με το διαχειριστή του συστήματος.
|
||||
repository_files_already_exist.adopt=Αρχεία υπάρχουν ήδη για αυτό το αποθετήριο και μπορούν να Υιοθετηθούν μόνο.
|
||||
repository_files_already_exist.delete=Τα αρχεία υπάρχουν ήδη για αυτόν το αποθετήριο. Πρέπει να τα διαγράψετε.
|
||||
repository_files_already_exist.adopt_or_delete=Τα αρχεία υπάρχουν ήδη για αυτόν το αποθετήριο. Είτε υιοθετήστε τα είτε διαγράψτε τα.
|
||||
repository_files_already_exist=Αρχεία υπάρχουν ήδη για αυτό το repository. Επικοινωνήστε με το διαχειριστή του συστήματος.
|
||||
repository_files_already_exist.adopt=Αρχεία υπάρχουν ήδη για αυτό το repository και μπορούν μόνο να υιοθετηθούν.
|
||||
repository_files_already_exist.delete=Τα αρχεία υπάρχουν ήδη για αυτόν το repository. Πρέπει να τα διαγράψετε.
|
||||
repository_files_already_exist.adopt_or_delete=Υπάρχουν ήδη τα αρχεία για αυτό το repository. Πρέπει να τα υιοθετήσετε ή να τα διαγράψετε.
|
||||
visit_rate_limit=Συναντήθηκε το όριο ρυθμού κατά την απομακρυσμένη πρόσβαση.
|
||||
2fa_auth_required=Απαιτήθηκε ταυτοποίηση δύο παραγόντων κατά την απομακρυσμένη πρόσβαση.
|
||||
org_name_been_taken=Το όνομα του οργανισμού χρησιμοποιείται ήδη.
|
||||
|
@ -925,7 +925,7 @@ access_token_deletion_cancel_action=Άκυρο
|
|||
access_token_deletion_confirm_action=Διαγραφή
|
||||
access_token_deletion_desc=Η διαγραφή ενός διακριτικού θα ανακαλέσει οριστικά την πρόσβαση στο λογαριασμό σας για εφαρμογές που το χρησιμοποιούν. Συνέχεια;
|
||||
delete_token_success=Το διακριτικό έχει διαγραφεί. Οι εφαρμογές που το χρησιμοποιούν δεν έχουν πλέον πρόσβαση στο λογαριασμό σας.
|
||||
repo_and_org_access=Πρόσβαση στο Αποθετήριο και Οργανισμό
|
||||
repo_and_org_access=Πρόσβαση στο repository και οργανισμό
|
||||
permissions_public_only=Δημόσια μόνο
|
||||
permissions_access_all=Όλα (δημόσια, ιδιωτικά, και περιορισμένα)
|
||||
select_permissions=Επιλογή δικαιωμάτων
|
||||
|
@ -1005,7 +1005,7 @@ remove_account_link_success=Ο συνδεδεμένος λογαριασμός
|
|||
hooks.desc=Προσθήκη webhooks που θα ενεργοποιούνται για <strong>όλα τα αποθετήρια</strong> που σας ανήκουν.
|
||||
|
||||
orgs_none=Δεν είστε μέλος σε κάποιο οργανισμό.
|
||||
repos_none=Δεν σας ανήκει κανένα κάποιο αποθετήριο.
|
||||
repos_none=Δεν υπάρχει κάποιο repository που σας ανήκει.
|
||||
|
||||
delete_account=Διαγραφή του λογαριασμού σας
|
||||
delete_prompt=Αυτή η ενέργεια θα διαγράψει μόνιμα το λογαριασμό σας. <strong>ΔΕΝ ΘΑ ΜΠΟΡΕΙ</strong> να επανέλθει.
|
||||
|
@ -1047,7 +1047,7 @@ language.localization_project = Βοηθήστε μας να μεταφράσο
|
|||
language.description = Από εδώ και στο εξής, αυτή η γλώσσα θα χρησιμοποιείται από προεπιλογή για τον λογαριασμό σας.
|
||||
|
||||
[repo]
|
||||
new_repo_helper=Ένα αποθετήριο περιέχει όλα τα αρχεία έργου, συμπεριλαμβανομένου του ιστορικού εκδόσεων. Ήδη φιλοξενείται αλλού; <a href="%s">Μετεγκατάσταση αποθετηρίου.</a>
|
||||
new_repo_helper=Ένα repository περιέχει όλα τα αρχεία έργου, συμπεριλαμβανομένου του ιστορικού εκδόσεων. Έχετε ήδη ένα που φιλοξενείται κάπου αλλού; <a href="%s">Μεταφορά αποθετηρίου.</a>
|
||||
owner=Ιδιοκτήτης
|
||||
owner_helper=Ορισμένοι οργανισμοί ενδέχεται να μην εμφανίζονται στο αναπτυσσόμενο μενού λόγω του μέγιστου αριθμού αποθετηρίων.
|
||||
repo_name=Όνομα αποθετηρίου
|
||||
|
@ -1055,7 +1055,7 @@ repo_name_helper=Τα καλά ονόματα αποθετηρίων χρησι
|
|||
repo_size=Μέγεθος Αποθετηρίου
|
||||
template=Πρότυπο
|
||||
template_select=Επιλέξτε ένα πρότυπο
|
||||
template_helper=Μετατροπή σε πρότυπο αποθετήριο
|
||||
template_helper=Μετατροπή σε πρότυπο repository
|
||||
template_description=Τα πρότυπα αποθετήρια επιτρέπουν στους χρήστες να δημιουργήσουν νέα αποθετήρια με την ίδια δομή, αρχεία και προαιρετικές ρυθμίσεις.
|
||||
visibility=Ορατότητα
|
||||
visibility_description=Μόνο ο ιδιοκτήτης ή τα μέλη του οργανισμού εάν έχουν δικαιώματα, θα είναι σε θέση να το δουν.
|
||||
|
@ -1070,7 +1070,7 @@ fork_to_different_account=Fork σε διαφορετικό λογαριασμό
|
|||
fork_visibility_helper=Η ορατότητα ενός fork αποθετηρίου δεν μπορεί να αλλάξει.
|
||||
fork_branch=Κλάδος που θα κλωνοποιηθεί στο fork
|
||||
all_branches=Όλοι οι κλάδοι
|
||||
fork_no_valid_owners=Αυτό το αποθετήριο δεν μπορεί να γίνει fork επειδή δεν υπάρχουν έγκυροι ιδιοκτήτες.
|
||||
fork_no_valid_owners=Αυτό το repository δεν μπορεί να γίνει fork, επειδή δεν υπάρχουν έγκυροι ιδιοκτήτες.
|
||||
use_template=Χρήση αυτού του πρότυπου
|
||||
clone_in_vsc=Κλωνοποίηση στο VS Code
|
||||
download_zip=Λήψη ZIP
|
||||
|
@ -1120,7 +1120,7 @@ mirror_password_blank_placeholder=(Μη ορισμένο)
|
|||
mirror_password_help=Αλλάξτε το όνομα χρήστη για να διαγράψετε έναν αποθηκευμένο κωδικό πρόσβασης.
|
||||
watchers=Παρατηρητές
|
||||
stargazers=Θαυμαστές
|
||||
stars_remove_warning=Αυτό θα αφαιρέσει όλα τα αστέρια από αυτό το αποθετήριο.
|
||||
stars_remove_warning=Αυτό θα αφαιρέσει όλα τα αστέρια από αυτό το repository.
|
||||
forks=Forks
|
||||
reactions_more=και %d περισσότερα
|
||||
unit_disabled=Ο διαχειριστής του ιστότοπου έχει απενεργοποιήσει αυτήν την ενότητα αποθετηρίου.
|
||||
|
@ -1129,7 +1129,7 @@ adopt_search=Εισάγετε όνομα χρήστη για αναζήτηση
|
|||
adopt_preexisting_label=Υιοθέτηση αρχείων
|
||||
adopt_preexisting=Υιοθετήστε τα προϋπάρχοντα αρχεία
|
||||
adopt_preexisting_content=Δημιουργία αποθετηρίου από %s
|
||||
adopt_preexisting_success=Υιοθετήθηκαν αρχεία και δημιουργήθηκε το αποθετήριο από %s
|
||||
adopt_preexisting_success=Υιοθετήθηκαν αρχεία και δημιουργήθηκε το repository από %s
|
||||
delete_preexisting_label=Διαγραφή
|
||||
delete_preexisting=Διαγραφή αρχείων που προϋπήρχαν
|
||||
delete_preexisting_content=Διαγραφή αρχείων στο %s
|
||||
|
@ -1159,17 +1159,17 @@ desc.archived=Αρχειοθετημένο
|
|||
template.items=Αντικείμενα προτύπου
|
||||
template.git_content=Περιεχόμενο Git (Προεπιλεγμένος κλάδος)
|
||||
template.git_hooks=Git hooks
|
||||
template.git_hooks_tooltip=Δεν θα μπορέσετε να αφαιρέσετε ή να τροποποιήσετε τα Git hook αφού τα έχετε προσθέσει. Επιλέξτε την ρύθμιση αυτή μόνο αν εμπιστεύεστε το πρότυπο αποθετήριο.
|
||||
template.git_hooks_tooltip=Δεν θα μπορέσετε να αφαιρέσετε ή να τροποποιήσετε τα Git hook αφού τα έχετε προσθέσει. Επιλέξτε την ρύθμιση αυτή μόνο αν εμπιστεύεστε το πρότυπο repository.
|
||||
template.webhooks=Webhooks
|
||||
template.topics=Θέματα
|
||||
template.avatar=Εικόνα
|
||||
template.issue_labels=Ταμπέλες ζητημάτων
|
||||
template.one_item=Πρέπει να επιλέξετε τουλάχιστον ένα αντικείμενο στο πρότυπο
|
||||
template.invalid=Πρέπει να επιλέξετε ένα πρότυπο αποθετήριο
|
||||
template.invalid=Πρέπει να επιλέξετε ένα πρότυπο repository
|
||||
|
||||
archive.title=Αυτό το αποθετήρειο αρχειοθετήθηκε. Μπορείτε να προβάλετε αρχεία και να τα κλωνοποιήσετε, αλλά δεν μπορείτε να ωθήσετε ή να ανοίξετε ζητήματα ή pull requests.
|
||||
archive.title_date=Αυτό το αποθετήριο έχει αρχειοθετηθεί στο %s. Μπορείτε να προβάλετε αρχεία και να κλωνοποιήσετε, αλλά δεν μπορείτε να ωθήσετε ή να ανοίξετε ζητήματα ή pull requests.
|
||||
archive.issue.nocomment=Αυτό το αποθετήριο αρχειοθετήθηκε. Δεν μπορείτε να σχολιάσετε σε ζητήματα.
|
||||
archive.title_date=Αυτό το repository αρχειοθετήθηκε στις %s. Μπορείτε να δείτε τα αρχεία του και να το κλωνοποιήσετε, αλλά δεν μπορείτε να κάνετε push, να ανοίξετε ζητήματα ή pull requests.
|
||||
archive.issue.nocomment=Αυτό το repository έχει αρχειοθετηθεί. Δεν μπορείτε να σχολιάσετε σε ζητήματα.
|
||||
archive.pull.nocomment=Αυτό το repo αρχειοθετήθηκε. Δεν μπορείτε να σχολιάσετε στα pull requests.
|
||||
|
||||
form.reach_limit_of_creation_1=Έχετε ήδη συμπληρώσει το όριο του %d αποθετηρίου.
|
||||
|
@ -1180,7 +1180,7 @@ form.name_pattern_not_allowed=Το μοτίβο «%s» δεν επιτρέπετ
|
|||
need_auth=Εξουσιοδότηση
|
||||
migrate_options=Ρυθμίσεις μεταφοράς
|
||||
migrate_service=Υπηρεσία Μεταφοράς
|
||||
migrate_options_mirror_helper=Αυτό το αποθετήριο θα είναι είδωλο
|
||||
migrate_options_mirror_helper=Αυτό το repository θα είναι είδωλο
|
||||
migrate_options_lfs=Μεταφορά αρχείων LFS
|
||||
migrate_options_lfs_endpoint.label=Άκρο LFS
|
||||
migrate_options_lfs_endpoint.description=Η μεταφορά θα προσπαθήσει να χρησιμοποιήσει το Git remote για να <a target="_blank" rel="noopener noreferrer" href="%s">καθορίσει τον διακομιστή LFS</a>. Μπορείτε επίσης να καθορίσετε ένα δικό σας endpoint αν τα δεδομένα LFS του αποθετηρίου αποθηκεύονται κάπου αλλού.
|
||||
|
@ -1233,10 +1233,10 @@ migrate.cancel_migrating_confirm=Θέλετε να ακυρώσετε αυτή
|
|||
mirror_from=είδωλο του
|
||||
forked_from=forked από
|
||||
generated_from=παραγμένο από
|
||||
fork_from_self=Δεν μπορείτε να κάνετε fork σε ένα αποθετήριο που κατέχετε.
|
||||
fork_guest_user=Συνδεθείτε για να κάνετε fork αυτό το αποθετήριο.
|
||||
watch_guest_user=Συνδεθείτε για να παρακολουθήσετε αυτό το αποθετήριο.
|
||||
star_guest_user=Συνδεθείτε για να δώσετε ένα αστέρι σε αυτό το αποθετήριο.
|
||||
fork_from_self=Δεν μπορείτε να κάνετε fork ένα repository που σας ανήκει.
|
||||
fork_guest_user=Συνδεθείτε για να κάνετε fork αυτό το repository.
|
||||
watch_guest_user=Συνδεθείτε για να παρακολουθήσετε αυτό το repository.
|
||||
star_guest_user=Συνδεθείτε για να δώσετε ένα αστέρι σε αυτό το repository.
|
||||
unwatch=Παύση ακολούθησης
|
||||
watch=Παρακολούθηση
|
||||
unstar=Αφαίρεση αστεριού
|
||||
|
@ -1248,11 +1248,11 @@ more_operations=Περισσότερες λειτουργίες
|
|||
no_desc=Χωρίς περιγραφή
|
||||
quick_guide=Γρήγορος οδηγός
|
||||
clone_this_repo=Κλωνοποίηση αυτού του αποθετηρίου
|
||||
cite_this_repo=Αναφορά σε αυτό το αποθετήριο
|
||||
cite_this_repo=Αναφορά σε αυτό το repository
|
||||
create_new_repo_command=Δημιουργία νέου αποθετηρίου στη γραμμή εντολών
|
||||
push_exist_repo=Προώθηση ενός υπάρχοντος αποθετηρίου από τη γραμμή εντολών
|
||||
empty_message=Αυτό το αποθετήριο δεν έχει περιεχόμενο.
|
||||
broken_message=Τα δεδομένα Git που διέπουν αυτό το αποθετήριο δεν μπορούν να διαβαστούν. Επικοινωνήστε με το διαχειριστή ή διαγράψτε αυτό το αποθετήριο.
|
||||
empty_message=Αυτό το repository δεν έχει περιεχόμενο.
|
||||
broken_message=Τα δεδομένα Git που διέπουν αυτό το αποθετήριο δεν μπορούν να διαβαστούν. Επικοινωνήστε με το διαχειριστή ή διαγράψτε αυτό το repository.
|
||||
|
||||
code=Κώδικας
|
||||
code.desc=Πρόσβαση στον πηγαίο κώδικα, αρχεία, υποβολές και κλάδους.
|
||||
|
@ -1330,7 +1330,7 @@ editor.cannot_edit_non_text_files=Τα δυαδικά αρχεία δεν μπο
|
|||
editor.edit_this_file=Επεξεργασία αρχείου
|
||||
editor.this_file_locked=Το αρχείο είναι κλειδωμένο
|
||||
editor.must_be_on_a_branch=Πρέπει να βρίσκεστε σε έναν κλάδο για να κάνετε ή να προτείνετε αλλαγές σε αυτό το αρχείο.
|
||||
editor.fork_before_edit=Πρέπει να κάνετε fork αυτό το αποθετήριο για να κάνετε ή να προτείνετε αλλαγές σε αυτό το αρχείο.
|
||||
editor.fork_before_edit=Πρέπει να κάνετε fork αυτό το repository για να κάνετε ή να προτείνετε αλλαγές σε αυτό το αρχείο.
|
||||
editor.delete_this_file=Διαγραφή αρχείου
|
||||
editor.must_have_write_access=Πρέπει να έχετε πρόσβαση εγγραφής για να κάνετε ή να προτείνετε αλλαγές σε αυτό το αρχείο.
|
||||
editor.file_delete_success=Το αρχείο «%s» έχει διαγραφεί.
|
||||
|
@ -1359,15 +1359,15 @@ editor.new_branch_name_desc=Όνομα νέου κλάδου…
|
|||
editor.cancel=Ακύρωση
|
||||
editor.filename_cannot_be_empty=Το όνομα αρχείου δεν μπορεί να είναι κενό.
|
||||
editor.filename_is_invalid=Το όνομα αρχείου δεν είναι έγκυρο: "%s".
|
||||
editor.branch_does_not_exist=Ο κλάδος "%s" δεν υπάρχει σε αυτό το αποθετήριο.
|
||||
editor.branch_already_exists=Ο κλάδος «%s» υπάρχει ήδη σε αυτό το αποθετήριο.
|
||||
editor.directory_is_a_file=Το όνομα φακέλου «%s» χρησιμοποιείται ήδη ως όνομα αρχείου σε αυτό το αποθετήριο.
|
||||
editor.branch_does_not_exist=Ο κλάδος "%s" δεν υπάρχει σε αυτό το repository.
|
||||
editor.branch_already_exists=Ο κλάδος «%s» υπάρχει ήδη σε αυτό το repository.
|
||||
editor.directory_is_a_file=Το όνομα φακέλου «%s» χρησιμοποιείται ήδη ως όνομα αρχείου σε αυτό το repository.
|
||||
editor.file_is_a_symlink=`Το «%s» είναι συμβολικός σύνδεσμος. Οι συμβολικοί σύνδεσμοι δεν μπορούν να επεξεργαστούν στην ενσωματωμένη εφαρμογή`
|
||||
editor.filename_is_a_directory=Το όνομα αρχείου «%s» χρησιμοποιείται ήδη ως όνομα φακέλου σε αυτό το αποθετήριο.
|
||||
editor.file_editing_no_longer_exists=Το αρχείο «%s», το οποίο επεξεργάζεστε, δεν υπάρχει πλέον σε αυτό το αποθετήριο.
|
||||
editor.file_deleting_no_longer_exists=Το αρχείο «%s», το οποίο διαγράφεται, δεν υπάρχει πλέον σε αυτό το αποθετήριο.
|
||||
editor.filename_is_a_directory=Το όνομα αρχείου «%s» χρησιμοποιείται ήδη ως όνομα φακέλου σε αυτό το repository.
|
||||
editor.file_editing_no_longer_exists=Το αρχείο «%s», το οποίο επεξεργάζεστε, δεν υπάρχει πλέον σε αυτό το repository.
|
||||
editor.file_deleting_no_longer_exists=Το αρχείο «%s», το οποίο διαγράφεται, δεν υπάρχει πλέον σε αυτό το repository.
|
||||
editor.file_changed_while_editing=Προέκυψαν κάποιες αλλαγές στα περιεχόμενα του αρχείου από τότε που ξεκινήσατε να τα επεξεργάζεστε. <a target="_blank" rel="noopener noreferrer" href="%s">Κάντε κλικ εδώ</a> για να τα δείτε ή <strong>ξανακάντε μία υποβολή των αλλαγών σας</strong> για να τις αντικαταστήσετε.
|
||||
editor.file_already_exists=Υπάρχει ήδη ένα αρχείο με το όνομα «%s» σε αυτό το αποθετήριο.
|
||||
editor.file_already_exists=Υπάρχει ήδη ένα αρχείο με το όνομα «%s» σε αυτό το repository.
|
||||
editor.commit_empty_file_header=Υποβολή ενός κενού αρχείου
|
||||
editor.commit_empty_file_text=Το αρχείο που πρόκειται να υποβληθεί είναι κενό. Συνέχεια;
|
||||
editor.no_changes_to_show=Δεν υπάρχουν αλλαγές για εμφάνιση.
|
||||
|
@ -1620,13 +1620,13 @@ issues.author_helper=Αυτός ο χρήστης είναι ο συγγραφέ
|
|||
issues.role.owner=Ιδιοκτήτης
|
||||
issues.role.owner_helper=Αυτός ο χρήστης είναι ο ιδιοκτήτης αυτού του αποθετηρίου.
|
||||
issues.role.member=Μέλος
|
||||
issues.role.member_helper=Αυτός ο χρήστης είναι μέλος του οργανισμού, του οποίου ανήκει το αποθετήριο.
|
||||
issues.role.member_helper=Αυτός ο χρήστης είναι μέλος του οργανισμού, του οποίου ανήκει το repository.
|
||||
issues.role.collaborator=Συνεργάτης
|
||||
issues.role.collaborator_helper=Ο χρήστης έλαβε πρόσκληση συνεργασίας στο αποθετήριο.
|
||||
issues.role.collaborator_helper=Ο χρήστης έλαβε πρόσκληση συνεργασίας στο repository.
|
||||
issues.role.first_time_contributor=Συντελεστής για πρώτη φορά
|
||||
issues.role.first_time_contributor_helper=Αυτή είναι η πρώτη συνεισφορά αυτού του χρήστη στο αποθετήριο.
|
||||
issues.role.first_time_contributor_helper=Αυτή είναι η πρώτη συνεισφορά αυτού του χρήστη στο repository.
|
||||
issues.role.contributor=Συντελεστής
|
||||
issues.role.contributor_helper=Αυτός ο χρήστης έχει προηγούμενές υποβολές (commits) στο αποθετήριο.
|
||||
issues.role.contributor_helper=Αυτός ο χρήστης έχει προηγούμενές υποβολές (commits) στο repository.
|
||||
issues.re_request_review=Επαναίτηση ανασκόπησης
|
||||
issues.is_stale=Έχουν υπάρξει αλλαγές σε αυτό το PR από αυτή την αναθεώρηση
|
||||
issues.remove_request_review=Αφαίρεση αιτήματος αναθεώρησης
|
||||
|
@ -1678,7 +1678,7 @@ issues.unlock_comment=: ξεκλείδωσε αυτή τη συνομιλία %s
|
|||
issues.lock_confirm=Κλείδωμα
|
||||
issues.unlock_confirm=Ξεκλείδωμα
|
||||
issues.lock.notice_1=- Άλλοι χρήστες δεν μπορούν να αφήσουν νέα σχόλια σε αυτό το ζήτημα.
|
||||
issues.lock.notice_2=- Εσείς και άλλοι συνεργάτες που έχουν πρόσβαση στο αποθετήριο θα μπορείτε ακόμα να αφήσετε σχόλια που θα είναι ορατά σε άλλους.
|
||||
issues.lock.notice_2=- Εσείς, μαζί με τους συνεργάτες σας που έχουν πρόσβαση στο repository, θα μπορείτε ακόμα να αφήσετε σχόλια που θα μπορούν να βλέπουν και άλλοι.
|
||||
issues.lock.notice_3=- Θα μπορείτε να ξεκλειδώσετε αυτό το ζήτημα πιο μετά.
|
||||
issues.unlock.notice_1=- Όλοι θα βρίσκονται πάλι σε θέση να αφήσουν σχόλιο σε αυτό το ζήτημα.
|
||||
issues.unlock.notice_2=- Θα μπορείτε πάντα να ξανακλειδώσετε αυτό το ζήτημα πιο μετά.
|
||||
|
@ -1759,7 +1759,7 @@ issues.dependency.add_error_dep_issue_not_exist=Εξαρτώμενο ζήτημ
|
|||
issues.dependency.add_error_dep_not_exist=Δεν υπάρχει η Εξάρτηση.
|
||||
issues.dependency.add_error_dep_exists=Η Εξάρτηση υπάρχει ήδη.
|
||||
issues.dependency.add_error_cannot_create_circular=Δεν μπορείτε να δημιουργήσετε μια εξάρτηση με δύο ζητήματα που μπλοκάρουν το ένα το άλλο.
|
||||
issues.dependency.add_error_dep_not_same_repo=Και τα δύο ζητήματα πρέπει να βρίσκονται στο ίδιο αποθετήριο.
|
||||
issues.dependency.add_error_dep_not_same_repo=Και τα δύο ζητήματα πρέπει να βρίσκονται στο ίδιο repository.
|
||||
issues.review.self.approval=Δεν μπορείτε να εγκρίνετε το δικό σας pull request.
|
||||
issues.review.self.rejection=Δεν μπορείτε να ζητήσετε αλλαγές στο δικό σας pull request.
|
||||
issues.review.approve=ενέκρινε τις αλλαγές %s
|
||||
|
@ -1922,7 +1922,7 @@ pulls.closed_at=`έκλεισε αυτό το pull request <a id="%[1]s" href="#
|
|||
pulls.reopened_at=`άνοιξε ξανά αυτό το pull request <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||
pulls.cmd_instruction_hint=Προβολή οδηγιών γραμμής εντολών
|
||||
pulls.cmd_instruction_checkout_title=Έλεγχος
|
||||
pulls.cmd_instruction_checkout_desc=Από το αποθετήριο του έργου σας, ελέγξτε έναν νέο κλάδο και δοκιμάστε τις αλλαγές.
|
||||
pulls.cmd_instruction_checkout_desc=Από το repository του έργου σας, ελέγξτε έναν νέο κλάδο και δοκιμάστε τις αλλαγές.
|
||||
pulls.cmd_instruction_merge_title=Συγχώνευση
|
||||
pulls.cmd_instruction_merge_desc=Συγχώνευση των αλλαγών και ενημέρωση στο Gitea.
|
||||
pulls.clear_merge_message=Εκκαθάριση μηνύματος συγχώνευσης
|
||||
|
@ -2101,8 +2101,8 @@ search.code_no_results=Δεν βρέθηκε πηγαίος κώδικας πο
|
|||
search.code_search_unavailable=Η αναζήτηση κώδικα δεν είναι διαθέσιμη αυτή τη στιγμή. Παρακαλώ επικοινωνήστε με το διαχειριστή.
|
||||
|
||||
settings=Ρυθμίσεις
|
||||
settings.desc=Στις Ρυθμίσεις μπορείτε να διαχειριστείτε τις ρυθμίσεις για το αποθετήριο
|
||||
settings.options=Αποθετήριο
|
||||
settings.desc=Στις Ρυθμίσεις μπορείτε να διαχειριστείτε τις ρυθμίσεις για το repository
|
||||
settings.options=Repository
|
||||
settings.collaboration=Συνεργάτες
|
||||
settings.collaboration.admin=Διαχειριστής
|
||||
settings.collaboration.write=Εγγραφή
|
||||
|
@ -2113,18 +2113,18 @@ 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=Ρυθμίστε τον αυτόματο συγχρονισμό των commit, ετικετών και κλάδων του αποθετηρίου σας σε ένα άλλο repository.
|
||||
settings.mirror_settings.docs.disabled_pull_mirror.instructions=Ρυθμίστε τον αυτόματο συγχρονισμό των commit, ετικετών και κλάδων του έργου σας με ένα άλλο repository. Τα είδωλα τύπου λήψης έχουν απενεργοποιηθεί από τον διαχειριστή σας.
|
||||
settings.mirror_settings.docs.disabled_push_mirror.instructions=Ρυθμίστε την αυτόματη λήψη υποβολών, ετικετών και κλάδων από ένα άλλο repository.
|
||||
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=Το αποθετήριο σας αντιγράφει τις αλλαγές προς ή από ένα άλλο αποθετήριο. Λάβετε υπόψη ότι δεν μπορείτε να δημιουργήσετε νέα είδωλα αυτή τη στιγμή.
|
||||
settings.mirror_settings.docs.no_new_mirrors=Το repository σας αντιγράφει τις αλλαγές προς ή από ένα άλλο repository. Λάβετε υπόψη ότι δεν μπορείτε να δημιουργήσετε νέα είδωλα αυτή τη στιγμή.
|
||||
settings.mirror_settings.docs.can_still_use=Αν και δεν μπορείτε να τροποποιήσετε τα υπάρχοντα είδωλα ή να δημιουργήσετε νέα, μπορείτε να χρησιμοποιείται ακόμα το υπάρχων είδωλο.
|
||||
settings.mirror_settings.docs.pull_mirror_instructions=Για να ορίσετε έναν είδωλο έλξης, παρακαλούμε συμβουλευθείτε:
|
||||
settings.mirror_settings.docs.more_information_if_disabled=Μπορείτε να μάθετε περισσότερα για τα είδωλα ώθησης και έλξης εδώ:
|
||||
settings.mirror_settings.docs.doc_link_title=Πώς μπορώ να αντιγράψω αποθετήρια;
|
||||
settings.mirror_settings.docs.doc_link_pull_section=το κεφάλαιο "Pulling from a remote repository" της τεκμηρίωσης.
|
||||
settings.mirror_settings.docs.pulling_remote_title=Έλξη από ένα απομακρυσμένο αποθετήριο
|
||||
settings.mirror_settings.docs.pulling_remote_title=Pull από ένα απομακρυσμένο repository
|
||||
settings.mirror_settings.mirrored_repository=Είδωλο αποθετηρίου
|
||||
settings.mirror_settings.direction=Κατεύθυνση
|
||||
settings.mirror_settings.direction.pull=Pull
|
||||
|
@ -2188,33 +2188,33 @@ settings.reindex_button=Προσθήκη στην ουρά Reindex
|
|||
settings.reindex_requested=Αιτήθηκε reindex
|
||||
settings.admin_enable_close_issues_via_commit_in_any_branch=Κλείσιμο ενός ζητήματος μέσω μιας υποβολής που έγινε σε έναν μη προεπιλεγμένο κλάδο
|
||||
settings.danger_zone=Ζώνη κινδύνου
|
||||
settings.new_owner_has_same_repo=Ο νέος ιδιοκτήτης έχει ήδη ένα αποθετήριο με το ίδιο όνομα. Παρακαλώ επιλέξτε ένα άλλο όνομα.
|
||||
settings.convert=Μετατροπή σε κανονικό αποθετήριο
|
||||
settings.convert_desc=Μπορείτε να μετατρέψετε αυτόν το είδωλο σε κανονικό αποθετήριο. Αυτό δεν μπορεί να αναιρεθεί.
|
||||
settings.convert_notices_1=Αυτή η λειτουργία θα μετατρέψει το είδωλο σε ένα κανονικό αποθετήριο και δεν μπορεί να αναιρεθεί.
|
||||
settings.new_owner_has_same_repo=Ο νέος ιδιοκτήτης έχει ήδη ένα repository με το ίδιο όνομα. Παρακαλώ επιλέξτε ένα άλλο όνομα.
|
||||
settings.convert=Μετατροπή σε κανονικό repository
|
||||
settings.convert_desc=Μπορείτε να μετατρέψετε αυτόν το είδωλο σε κανονικό repository. Αυτό δεν μπορεί να αναιρεθεί.
|
||||
settings.convert_notices_1=Αυτή η λειτουργία θα μετατρέψει το είδωλο σε ένα κανονικό repository και δεν μπορεί να αναιρεθεί.
|
||||
settings.convert_confirm=Μετατροπή αποθετηρίου
|
||||
settings.convert_succeed=Το είδωλο έχει μετατραπεί σε κανονικό αποθετήριο.
|
||||
settings.convert_fork=Μετατροπή σε κανονικό αποθετήριο
|
||||
settings.convert_fork_desc=Μπορείτε να μετατρέψετε αυτό το fork σε κανονικό αποθετήριο. Αυτό δεν μπορεί να αναιρεθεί.
|
||||
settings.convert_fork_notices_1=Αυτή η λειτουργία θα μετατρέψει το fork σε ένα κανονικό αποθετήριο και δεν μπορεί να αναιρεθεί.
|
||||
settings.convert_succeed=Το είδωλο έχει μετατραπεί σε κανονικό repository.
|
||||
settings.convert_fork=Μετατροπή σε κανονικό repository
|
||||
settings.convert_fork_desc=Μπορείτε να μετατρέψετε αυτό το fork σε κανονικό repository. Αυτό δεν μπορεί να αναιρεθεί.
|
||||
settings.convert_fork_notices_1=Αυτή η λειτουργία θα μετατρέψει το fork σε ένα κανονικό repository και δεν μπορεί να αναιρεθεί.
|
||||
settings.convert_fork_confirm=Μετατροπή αποθετηρίου
|
||||
settings.convert_fork_succeed=Το fork έχει μετατραπεί σε κανονικό αποθετήριο.
|
||||
settings.convert_fork_succeed=Το fork έχει μετατραπεί σε κανονικό repository.
|
||||
settings.transfer.title=Μεταβίβαση ιδιοκτησίας
|
||||
settings.transfer.rejected=Η μεταβίβαση του αποθετηρίου απορρίφθηκε.
|
||||
settings.transfer.success=Η μεταβίβαση του αποθετηρίου ήταν επιτυχής.
|
||||
settings.transfer_abort=Ακύρωση μεταβίβασης
|
||||
settings.transfer_abort_invalid=Δεν μπορείτε να ακυρώσετε μια ανύπαρκτη μεταβίβαση αποθετηρίου.
|
||||
settings.transfer_abort_success=Η μεταφορά αποθετηρίου στο %s ακυρώθηκε με επιτυχία.
|
||||
settings.transfer_desc=Μεταβιβάστε αυτό το αποθετήριο σε έναν χρήστη ή σε έναν οργανισμό για τον οποίο έχετε δικαιώματα διαχειριστή.
|
||||
settings.transfer_desc=Μεταβιβάστε αυτό το repository σε έναν χρήστη ή σε έναν οργανισμό για τον οποίο έχετε δικαιώματα διαχειριστή.
|
||||
settings.transfer_form_title=Εισάγετε το όνομα του αποθετηρίου ως επιβεβαίωση:
|
||||
settings.transfer_in_progress=Αυτή τη στιγμή υπάρχει μια εν εξελίξει μεταβίβαση. Παρακαλούμε ακυρώστε την αν θέλετε να μεταβιβάσετε αυτό το αποθετήριο σε άλλο χρήστη.
|
||||
settings.transfer_notices_1=- Θα χάσετε την πρόσβαση στο αποθετήριο αν το μεταβιβάσετε σε έναν μεμονωμένο χρήστη.
|
||||
settings.transfer_notices_2=- Θα διατηρήσετε την πρόσβαση στο αποθετήριο αν το μεταβιβάσετε σε έναν οργανισμό που είστε (συν)ιδιοκτήτης.
|
||||
settings.transfer_notices_3=- Εάν το αποθετήριο είναι ιδιωτικό και μεταβιβάζεται σε μεμονωμένο χρήστη, αυτή η ενέργεια εξασφαλίζει ότι ο χρήστης έχει τουλάχιστον άδεια ανάγνωσης (και αλλάζει τα δικαιώματα εάν είναι απαραίτητο).
|
||||
settings.transfer_in_progress=Αυτή τη στιγμή υπάρχει μια εν εξελίξει μεταβίβαση. Παρακαλούμε ακυρώστε την αν θέλετε να μεταβιβάσετε αυτό το repository σε άλλο χρήστη.
|
||||
settings.transfer_notices_1=- Θα χάσετε την πρόσβαση στο repository αν το μεταβιβάσετε σε έναν μεμονωμένο χρήστη.
|
||||
settings.transfer_notices_2=- Θα διατηρήσετε την πρόσβαση στο repository αν το μεταβιβάσετε σε έναν οργανισμό που είστε (συν)ιδιοκτήτης.
|
||||
settings.transfer_notices_3=- Εάν το repository είναι ιδιωτικό και μεταβιβάζεται σε μεμονωμένο χρήστη, αυτή η ενέργεια εξασφαλίζει ότι ο χρήστης έχει τουλάχιστον άδεια ανάγνωσης (και αλλάζει τα δικαιώματα εάν είναι απαραίτητο).
|
||||
settings.transfer_owner=Νέος ιδιοκτήτης
|
||||
settings.transfer_perform=Εκτέλεση μεταφοράς
|
||||
settings.transfer_started=`Αυτό το αποθετήριο έχει επισημανθεί για μεταφορά και αναμένει επιβεβαίωση από το "%s"`
|
||||
settings.transfer_succeed=Το αποθετήριο έχει μεταφερθεί.
|
||||
settings.transfer_started=`Αυτό το repository έχει επισημανθεί για μεταφορά και αναμένει επιβεβαίωση από το "%s"`
|
||||
settings.transfer_succeed=Το repository έχει μεταφερθεί.
|
||||
settings.signing_settings=Ρυθμίσεις επαλήθευσης υπογραφών
|
||||
settings.trust_model=Μοντέλο εμπιστοσύνης υπογραφών
|
||||
settings.trust_model.default=Προεπιλεγμένο μοντέλο εμπιστοσύνης
|
||||
|
@ -2236,33 +2236,33 @@ settings.wiki_deletion_success=Τα δεδομένα wiki του αποθετη
|
|||
settings.delete=Διαγραφή αυτόυ του αποθετηρίου
|
||||
settings.delete_desc=Η διαγραφή ενός αποθετηρίου είναι μόνιμη και δεν μπορεί να αναιρεθεί.
|
||||
settings.delete_notices_1=- Αυτή η ενέργεια <strong>ΔΕΝ ΜΠΟΡΕΙ</strong> να αναιρεθεί.
|
||||
settings.delete_notices_2=- Αυτή η ενέργεια θα διαγράψει μόνιμα το αποθετήριο <strong>%s</strong> μαζί με τον κώδικα, τα ζητημάτα, τα σχόλια, τα δεδομένα των wiki και τις ρυθμίσεις συνεργατών που βρίσκονται μέσα σε αυτό.
|
||||
settings.delete_notices_2=- Αυτή η ενέργεια θα διαγράψει μόνιμα το repository <strong>%s</strong> μαζί με τον κώδικα, τα ζητημάτα, τα σχόλια, τα δεδομένα των wiki και τις ρυθμίσεις συνεργατών που βρίσκονται μέσα σε αυτό.
|
||||
settings.delete_notices_fork_1=- Τα Forks αυτού του αποθετηρίου θα γίνουν ανεξάρτητα μετά τη διαγραφή.
|
||||
settings.deletion_success=Το αποθετήριο έχει διαγραφεί.
|
||||
settings.deletion_success=Το repository έχει διαγραφεί.
|
||||
settings.update_settings_success=Οι ρυθμίσεις του αποθετηρίου έχουν ενημερωθεί.
|
||||
settings.update_settings_no_unit=Το αποθετήριο θα πρέπει να επιτρέπει τουλάχιστον κάποιο είδος αλληλεπίδρασης.
|
||||
settings.update_settings_no_unit=Το repository θα πρέπει να επιτρέπει τουλάχιστον κάποιο είδος αλληλεπίδρασης.
|
||||
settings.confirm_delete=Διαγραφή αποθετηρίου
|
||||
settings.add_collaborator=Προσθήκη συνεργάτη
|
||||
settings.add_collaborator_success=Ο συνεργάτης προστέθηκε.
|
||||
settings.add_collaborator_inactive_user=Δεν είναι δυνατή η προσθήκη ενός ανενεργού χρήστη ως συνεργάτη.
|
||||
settings.add_collaborator_owner=Δεν είναι δυνατή η προσθήκη ενός ιδιοκτήτη σαν συνεργάτη.
|
||||
settings.add_collaborator_duplicate=Ο συνεργάτης έχει ήδη προστεθεί σε αυτό το αποθετήριο.
|
||||
settings.add_collaborator_duplicate=Ο συνεργάτης έχει ήδη προστεθεί σε αυτό το repository.
|
||||
settings.delete_collaborator=Κατάργηση
|
||||
settings.collaborator_deletion=Κατάργηση συνεργάτη
|
||||
settings.collaborator_deletion_desc=Η κατάργηση ενός συνεργάτη θα αφαιρέσει και την πρόσβασή του στο αποθετήριο. Είστε βέβαιοι;
|
||||
settings.collaborator_deletion_desc=Η κατάργηση ενός συνεργάτη θα αφαιρέσει και την πρόσβασή του στο repository. Είστε βέβαιοι;
|
||||
settings.remove_collaborator_success=Ο συνεργάτης έχει καταργηθεί.
|
||||
settings.search_user_placeholder=Αναζήτηση χρήστη…
|
||||
settings.org_not_allowed_to_be_collaborator=Δεν μπορείτε να προσθέσετε έναν οργανισμό ως συνεργάτη.
|
||||
settings.change_team_access_not_allowed=Η αλλαγή της πρόσβασης ομάδας για το αποθετήριο έχει περιοριστεί στον ιδιοκτήτη του οργανισμού
|
||||
settings.team_not_in_organization=Η ομάδα δεν είναι στον ίδιο οργανισμό με το αποθετήριο
|
||||
settings.change_team_access_not_allowed=Η αλλαγή της πρόσβασης ομάδας για το repository έχει περιοριστεί στον ιδιοκτήτη του οργανισμού
|
||||
settings.team_not_in_organization=Η ομάδα δεν είναι στον ίδιο οργανισμό με το repository
|
||||
settings.teams=Ομάδες
|
||||
settings.add_team=Προσθήκη ομάδας
|
||||
settings.add_team_duplicate=Η ομάδα έχει ήδη το αποθετήριο
|
||||
settings.add_team_success=Η ομάδα έχει πλέον πρόσβαση στο αποθετήριο.
|
||||
settings.add_team_duplicate=Η ομάδα έχει ήδη το repository
|
||||
settings.add_team_success=Η ομάδα έχει πλέον πρόσβαση στο repository.
|
||||
settings.search_team=Αναζήτηση Ομάδας…
|
||||
settings.change_team_permission_tip=Τα δικαιώματα της ομάδας έχουν οριστεί στη σελίδα ρυθμίσεων της ομάδας και δεν μπορούν να αλλάξουν ανά αποθετήριο
|
||||
settings.change_team_permission_tip=Τα δικαιώματα της ομάδας έχουν οριστεί στη σελίδα ρυθμίσεων της ομάδας και δεν μπορούν να αλλάξουν ανά repository
|
||||
settings.delete_team_tip=Αυτή η ομάδα έχει πρόσβαση σε όλα τα αποθετήρια και δεν μπορεί να αφαιρεθεί
|
||||
settings.remove_team_success=Έχει αφαιρεθεί η πρόσβαση της ομάδας στο αποθετήριο.
|
||||
settings.remove_team_success=Έχει αφαιρεθεί η πρόσβαση της ομάδας στο repository.
|
||||
settings.add_webhook=Προσθήκη webhook
|
||||
settings.add_webhook.invalid_channel_name=Το όνομα του καναλιού Webhook δεν μπορεί να είναι κενό και δεν μπορεί να περιέχει μόνο έναν χαρακτήρα #.
|
||||
settings.hooks_desc=Τα Webhooks κάνουν αυτόματα αιτήσεις HTTP POST σε ένα διακομιστή όταν ενεργοποιούνται ορισμένα γεγονότα στο Forgejo. Διαβάστε περισσότερα στον <a target="_blank" rel="noopener noreferrer" href="%s">οδηγό webhooks</a>.
|
||||
|
@ -2305,15 +2305,15 @@ settings.event_create_desc=Ο κλάδος ή η ετικέτα δημιουργ
|
|||
settings.event_delete=Διαγραφή
|
||||
settings.event_delete_desc=Ο κλάδος ή η ετικέτα διαγράφηκε.
|
||||
settings.event_fork=Fork
|
||||
settings.event_fork_desc=Το αποθετήριο έγινε fork.
|
||||
settings.event_fork_desc=Το repository έγινε fork.
|
||||
settings.event_wiki=Wiki
|
||||
settings.event_wiki_desc=Η σελίδα Wiki δημιουργήθηκε, μετονομάστηκε, επεξεργάστηκε ή διαγράφηκε.
|
||||
settings.event_release=Κυκλοφορία
|
||||
settings.event_release_desc=Η έκδοση δημοσιεύτηκε, ενημερώθηκε ή διαγράφηκε από ένα αποθετήριο.
|
||||
settings.event_push=Push
|
||||
settings.event_push_desc=Git push σε ένα αποθετήριο.
|
||||
settings.event_repository=Αποθετήριο
|
||||
settings.event_repository_desc=Το αποθετήριο δημιουργήθηκε ή διαγράφηκε.
|
||||
settings.event_push_desc=Git push σε ένα repository.
|
||||
settings.event_repository=Repository
|
||||
settings.event_repository_desc=Το repository δημιουργήθηκε ή διαγράφηκε.
|
||||
settings.event_header_issue=Συμβάντα ζητημάτων
|
||||
settings.event_issues=Ζητήματα
|
||||
settings.event_issues_desc=Το ζήτημα άνοιξε, έκλεισε, ανοίχθηκε εκ νέου ή επεξεργάστηκε.
|
||||
|
@ -2345,7 +2345,7 @@ settings.event_pull_request_review_request_desc=Ζητήθηκε η αξιολό
|
|||
settings.event_pull_request_approvals=Εγκρίσεις pull request
|
||||
settings.event_pull_request_merge=Συγχώνευση pull request
|
||||
settings.event_package=Πακέτο
|
||||
settings.event_package_desc=Το πακέτο δημιουργήθηκε ή διαγράφηκε σε ένα αποθετήριο.
|
||||
settings.event_package_desc=Το πακέτο δημιουργήθηκε ή διαγράφηκε σε ένα repository.
|
||||
settings.branch_filter=Φίλτρο κλάδου
|
||||
settings.branch_filter_desc=Λίστα επιτρεπόμενων κλάδων για ωθήσεις, δημιουργία κλάδων και γεγονότα διαγραφής κλάδων, που ορίζονται ως μοτίβο glob. Εάν είναι κενό ή <code>*</code>, αναφέρονται συμβάντα για όλους τους κλάδους. Δείτε τη τεκμηρίωση<a href="%[1]s">%[2]s</a> για σύνταξη. Παραδείγματα: <code>master</code>, <code>{master,release*}</code>.
|
||||
settings.authorization_header=Κεφαλίδα authorization
|
||||
|
@ -2361,7 +2361,7 @@ settings.hook_type=Είδος hook
|
|||
settings.slack_token=Διακριτικό
|
||||
settings.slack_domain=Domain
|
||||
settings.slack_channel=Κανάλι
|
||||
settings.add_web_hook_desc=Ενσωμάτωσε το <a target="_blank" rel="noreferrer" href="%s">%s</a> στο αποθετήριο σας.
|
||||
settings.add_web_hook_desc=Ενσωμάτωσε το <a target="_blank" rel="noreferrer" href="%s">%s</a> στο repository σας.
|
||||
settings.web_hook_name_gitea=Gitea
|
||||
settings.web_hook_name_forgejo = Forgejo
|
||||
settings.web_hook_name_gogs=Gogs
|
||||
|
@ -2381,9 +2381,9 @@ settings.packagist_api_token=Διακριτικό API
|
|||
settings.packagist_package_url=URL πακέτων Packagist
|
||||
settings.deploy_keys=Κλειδιά διάθεσης
|
||||
settings.add_deploy_key=Προσθήκη κλειδιού διάθεσης
|
||||
settings.deploy_key_desc=Τα κλειδιά διάθεσης έχουν πρόσβαση μόνο-ανάγνωσης στο αποθετήριο.
|
||||
settings.deploy_key_desc=Τα κλειδιά διάθεσης έχουν πρόσβαση μόνο-ανάγνωσης στο repository.
|
||||
settings.is_writable=Ενεργοποίηση πρόσβασης εγγραφής
|
||||
settings.is_writable_info=Επιτρέψτε σε αυτό το κλειδί διάθεσης να <strong>ωθήσει</strong> στο αποθετήριο.
|
||||
settings.is_writable_info=Επιτρέψτε σε αυτό το κλειδί διάθεσης να <strong>ωθήσει</strong> στο repository.
|
||||
settings.no_deploy_keys=Δεν υπάρχουν ακόμα κλειδιά διάθεσης.
|
||||
settings.title=Τίτλος
|
||||
settings.deploy_key_content=Περιεχόμενο
|
||||
|
@ -2391,7 +2391,7 @@ settings.key_been_used=Ένα κλειδί διάθεσης με το ίδιο
|
|||
settings.key_name_used=Ένα κλειδί διάθεσης με το ίδιο όνομα υπάρχει ήδη.
|
||||
settings.add_key_success=Το κλειδί διάθεσης «%s» προστέθηκε.
|
||||
settings.deploy_key_deletion=Αφαίρεση κλειδιού διάθεσης
|
||||
settings.deploy_key_deletion_desc=Η κατάργηση ενός κλειδί διάθεσης θα ανακαλέσει την πρόσβασή του σε αυτό το αποθετήριο. Συνέχεια;
|
||||
settings.deploy_key_deletion_desc=Η κατάργηση ενός κλειδί διάθεσης θα ανακαλέσει την πρόσβασή του σε αυτό το repository. Συνέχεια;
|
||||
settings.deploy_key_deletion_success=Το κλειδί διάθεσης έχει αφαιρεθεί.
|
||||
settings.branches=Κλάδοι
|
||||
settings.protected_branch=Προστασία κλάδου
|
||||
|
@ -2424,7 +2424,7 @@ settings.protect_check_status_contexts=Ενεργοποίηση ελέγχου
|
|||
settings.protect_status_check_patterns=Μοτίβα ελέγχου κατάστασης:
|
||||
settings.protect_status_check_patterns_desc=Ορίστε μοτίβα για να καθορίσετε ποιοι έλεγχοι κατάστασης πρέπει να περάσουν πριν οι κλάδοι να μπορούν να συγχωνευτούν σε έναν κλάδο που ταιριάζει με αυτόν τον κανόνα. Κάθε γραμμή καθορίζει ένα μοτίβο. Τα μοτίβα δεν μπορούν να είναι κενά.
|
||||
settings.protect_check_status_contexts_desc=Απαιτείται έλεγχος κατάστασης για να περάσει το pull request πριν από τη συγχώνευση. Επιλέξτε ποιοι έλεγχοι κατάστασης πρέπει να περάσουν πριν κλάδοι μπορούν να συγχωνευτούν σε έναν κλάδο που ταιριάζει με αυτόν τον κανόνα. Όταν είναι ενεργοποιημένο, οι υποβολές πρέπει πρώτα να γίνονται push σε άλλο κλάδο, στη συνέχεια, να συγχωνεύονται ή γίνονται push απευθείας σε ένα κλάδο που ταιριάζει με αυτόν τον κανόνα, αφού έχουν ολοκληρωθεί οι έλεγχοι κατάστασης. Αν δεν επιλεχθεί κανένα πλαίσιο, η τελευταία υποβολή πρέπει να είναι επιτυχής ανεξάρτητα από το πλαίσιο.
|
||||
settings.protect_check_status_contexts_list=Έλεγχοι κατάστασης που βρέθηκαν την τελευταία εβδομάδα για αυτό το αποθετήριο
|
||||
settings.protect_check_status_contexts_list=Έλεγχοι κατάστασης που βρέθηκαν την τελευταία εβδομάδα για αυτό το repository
|
||||
settings.protect_status_check_matched=Ταιριάζει
|
||||
settings.protect_invalid_status_check_pattern=Μη έγκυρο μοτίβο ελέγχου κατάστασης: "%s".
|
||||
settings.protect_no_valid_status_check_patterns=Μη έγκυρα μοτίβα ελέγχου κατάστασης.
|
||||
|
@ -2442,7 +2442,7 @@ settings.protect_branch_name_pattern=Μοτίβο προστατευμένου
|
|||
settings.protect_branch_name_pattern_desc=Μοτίβα ονόματος προστατευμένων κλάδων. Συμβολευτείτε <a href="%s">την τεκμηρίωση</a> για την σύνταξη ενός μοτίβου. Παραδείγματα: main, release/**
|
||||
settings.protect_patterns=Μοτίβα
|
||||
settings.protect_protected_file_patterns=Μοτίβα προστατευμένων αρχείων (διαχωρισμός με semicolon «;» και ΟΧΙ το ελληνικό ερωτηματικό):
|
||||
settings.protect_protected_file_patterns_desc=Τα προστατευόμενα αρχεία δεν επιτρέπεται να αλλάξουν άμεσα, ακόμη και αν ο χρήστης έχει δικαιώματα να προσθέσει, να επεξεργαστεί ή να διαγράψει αρχεία σε αυτόν τον κλάδο. Επιπλέων μοτίβα μπορούν να διαχωριστούν με semicolon («;») (ΟΧΙ ερωτηματικό). Για να συντάξετε μοτίβα, συμβουλευτείται την τεκμηρίωση <a href='%s'>github.com/gobwas/glob</a>. Παράδειγμα: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
|
||||
settings.protect_protected_file_patterns_desc=Τα προστατευόμενα αρχεία δεν επιτρέπεται να αλλάξουν άμεσα, ακόμη και αν ο χρήστης έχει δικαιώματα να προσθέσει, να επεξεργαστεί ή να διαγράψει αρχεία σε αυτόν τον κλάδο. Επιπλέων μοτίβα μπορούν να διαχωριστούν με semicolon («;») (ΟΧΙ ερωτηματικό). Για να συντάξετε μοτίβα, συμβουλευτείται την τεκμηρίωση <a href='%s'>%s</a>. Παράδειγμα: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
|
||||
settings.protect_unprotected_file_patterns=Μοτίβα μη προστατευμένων αρχείων (διαχωρισμένα με semicolon «;» και ΟΧΙ το ελληνικό ερωτηματικό):
|
||||
settings.protect_unprotected_file_patterns_desc=Μη προστατευμένα αρχεία που επιτρέπεται να αλλάξουν απευθείας εάν ο χρήστης έχει πρόσβαση εγγραφής, παρακάμπτοντας τον περιορισμό ώθησης. Επιπλέων μοτίβα μπορούν να διαχωριστούν με ερωτηματικό (';'). Δείτε την τεκμηρίωση <a href='%[1]s'>%[2]s</a> για τη σύνταξη του μοτίβου. Πχ: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
|
||||
settings.add_protected_branch=Ενεργοποίηση προστασίας
|
||||
|
@ -2486,20 +2486,20 @@ settings.matrix.message_type=Είδος μηνύματος
|
|||
settings.archive.button=Αρχειοθέτηση αποθετηρίου
|
||||
settings.archive.header=Αρχειοθέτηση αποθετηρίου
|
||||
settings.archive.text=Η αρχειοθέτηση του αποθετηρίου θα το αλλάξει σε μόνο για ανάγνωση. Δε θα φαίνεται στον αρχικό πίνακα. Κανείς (ακόμα και εσείς!) δε θα μπορεί να κάνει νέες υποβολές, ή να ανοίξει ζητήματα ή pull request.
|
||||
settings.archive.success=Το αποθετήριο αρχειοθετήθηκε με επιτυχία.
|
||||
settings.archive.success=Το repository αρχειοθετήθηκε με επιτυχία.
|
||||
settings.archive.error=Παρουσιάστηκε σφάλμα κατά την προσπάθεια αρχειοθέτησης του αποθετηρίου. Δείτε το αρχείο καταγραφής για περισσότερες λεπτομέρειες.
|
||||
settings.archive.error_ismirror=Δε μπορείτε να αρχειοθετήσετε ένα είδωλο αποθετηρίου.
|
||||
settings.archive.branchsettings_unavailable=Οι ρυθμίσεις του κλάδου δεν είναι διαθέσιμες αν το αποθετήριο είναι αρχειοθετημένο.
|
||||
settings.archive.tagsettings_unavailable=Οι ρυθμίσεις της ετικέτας δεν είναι διαθέσιμες αν το αποθετήριο είναι αρχειοθετημένο.
|
||||
settings.archive.branchsettings_unavailable=Οι ρυθμίσεις του κλάδου δεν είναι διαθέσιμες αν το repository είναι αρχειοθετημένο.
|
||||
settings.archive.tagsettings_unavailable=Οι ρυθμίσεις της ετικέτας δεν είναι διαθέσιμες αν το repository είναι αρχειοθετημένο.
|
||||
settings.unarchive.button=Αναίρεση αρχειοθέτησης αποθετηρίου
|
||||
settings.unarchive.header=Απο-Αρχειοθέτηση του αποθετηρίου
|
||||
settings.unarchive.text=Η απο-αρχειοθέτηση του αποθετηρίου θα αποκαταστήσει την ικανότητά του να λαμβάνει υποβολές και ωθήσεις, καθώς και νέα ζητήματα και pull-requests.
|
||||
settings.unarchive.success=Το αποθετήριο απο-αρχειοθετήθηκε με επιτυχία.
|
||||
settings.unarchive.success=Το repository απο-αρχειοθετήθηκε με επιτυχία.
|
||||
settings.unarchive.error=Παρουσιάστηκε σφάλμα κατά την προσπάθεια απο-αρχειοθέτησης του αποθετηρίου. Δείτε τις καταγραφές για περισσότερες λεπτομέρειες.
|
||||
settings.update_avatar_success=Η εικόνα του αποθετηρίου έχει ενημερωθεί.
|
||||
settings.lfs=LFS
|
||||
settings.lfs_filelist=Αρχεία LFS σε αυτό το αποθετήριο
|
||||
settings.lfs_no_lfs_files=Δεν υπάρχουν αρχεία LFS σε αυτό το αποθετήριο
|
||||
settings.lfs_filelist=Αρχεία LFS σε αυτό το repository
|
||||
settings.lfs_no_lfs_files=Δεν υπάρχουν αρχεία LFS σε αυτό το repository
|
||||
settings.lfs_findcommits=Εύρεση υποβολών
|
||||
settings.lfs_lfs_file_no_commits=Δεν βρέθηκαν υποβολές για αυτό το αρχείο LFS
|
||||
settings.lfs_noattribute=Αυτή η διαδρομή δεν έχει λειτουργία κλειδώματος στον προεπιλεγμένο κλάδο
|
||||
|
@ -2518,7 +2518,7 @@ settings.lfs_force_unlock=Εξαγκαναστικό ξεκλείδωμα
|
|||
settings.lfs_pointers.found=Βρέθηκαν %d δείκτης(ες) blob - %d συσχετίστηκαν, %d δεν συσχετίστηκαν (%d λείπουν από το χώρο αποθήκευσης)
|
||||
settings.lfs_pointers.sha=Blob hash
|
||||
settings.lfs_pointers.oid=OID
|
||||
settings.lfs_pointers.inRepo=Στο αποθετήριο
|
||||
settings.lfs_pointers.inRepo=Στο repository
|
||||
settings.lfs_pointers.exists=Υπάρχει στο χώρο αποθήκευσης
|
||||
settings.lfs_pointers.accessible=Προσβάσιμο στον χρήστη
|
||||
settings.lfs_pointers.associateAccessible=Συσχετισμός προσιτών %d OID
|
||||
|
@ -2621,7 +2621,7 @@ release.delete_tag=Διαγραφή ετικέτας
|
|||
release.deletion=Διαγραφή κυκλοφορίας
|
||||
release.deletion_desc=Διαγράφοντας μια κυκλοφορία, αυτή αφαιρείται μόνο από το Gitea. Δε θα επηρεάσει την ετικέτα Git, τα περιεχόμενα του αποθετηρίου σας ή το ιστορικό της. Συνέχεια;
|
||||
release.deletion_success=Η κυκλοφορία έχει διαγραφεί.
|
||||
release.deletion_tag_desc=Θα διαγράψει αυτή την ετικέτα από το αποθετήριο. Τα περιεχόμενα του αποθετηρίου και το ιστορικό παραμένουν αμετάβλητα. Συνέχεια;
|
||||
release.deletion_tag_desc=Θα διαγράψει αυτή την ετικέτα από το repository. Τα περιεχόμενα του repository και το ιστορικό δεν θα πειραχτούν. Να γίνει συνέχεια;
|
||||
release.deletion_tag_success=Η ετικέτα έχει διαγραφεί.
|
||||
release.tag_name_already_exist=Υπάρχει ήδη μια έκδοση με αυτό το όνομα ετικέτας.
|
||||
release.tag_name_invalid=Το όνομα της ετικέτας δεν είναι έγκυρο.
|
||||
|
@ -2646,7 +2646,7 @@ branch.delete_branch_has_new_commits=Ο κλάδος «%s» δεν μπορεί
|
|||
branch.create_branch=Δημιουργία κλάδου %s
|
||||
branch.create_from=`από το «%s»`
|
||||
branch.create_success=Ο κλάδος «%s» δημιουργήθηκε.
|
||||
branch.branch_already_exists=Ο κλάδος «%s» υπάρχει ήδη σε αυτό το αποθετήριο.
|
||||
branch.branch_already_exists=Ο κλάδος «%s» υπάρχει ήδη σε αυτό το repository.
|
||||
branch.branch_name_conflict=Το όνομα του κλάδου «%s» συγκρούεται με το ήδη υπάρχον κλάδο «%s».
|
||||
branch.tag_collision=Ο κλάδος «%s» δεν μπορεί να δημιουργηθεί επειδή μια ετικέτα με το ίδιο όνομα υπάρχει ήδη στο αποθετήριο.
|
||||
branch.deleted_by=Διαγράφηκε από %s
|
||||
|
@ -2691,7 +2691,7 @@ error.csv.invalid_field_count=Δεν είναι δυνατή η απόδοση
|
|||
commits.renamed_from = Μετονομάστηκε από %σ
|
||||
settings.wiki_rename_branch_main_desc = Ο κλάδος, ο οποίος χρησιμοποιείται εσωτερικά από το wiki, θα μετονομαστεί (μόνιμα και μη αναστράψιμα) σε «%s».
|
||||
issues.comment.blocked_by_user = Δεν μπορείτε να αφήσετε σχόλιο σε αυτό το ζήτημα, επειδή ο κάτοχος του αποθετηρίου ή το άτομο που δημιούργησε το ζήτημα σας έχει αποκλείσει.
|
||||
pulls.blocked_by_user = Δεν μπορείτε να δημιουργήσετε pull request σε αυτό το αποθετήριο, επειδή ο κάτοχος του αποθετηρίου σας έχει αποκλείσει.
|
||||
pulls.blocked_by_user = Δεν μπορείτε να δημιουργήσετε pull request σε αυτό το repository, επειδή ο κάτοχος του repository σας έχει αποκλείσει.
|
||||
pulls.made_using_agit = AGit
|
||||
wiki.cancel = Ακύρωση
|
||||
settings.units.add_more = Προσθήκη μονάδων...
|
||||
|
@ -2710,13 +2710,13 @@ rss.must_be_on_branch = Για να αποκτήσετε ένα RSS feed, πρέ
|
|||
clone_in_vscodium = Κλωνοποίηση στο VSCodium
|
||||
editor.invalid_commit_mail = Αυτή η διεύθυνση email δεν είναι έγκυρη για την δημιουργία μίας υποβολής.
|
||||
pulls.nothing_to_compare_have_tag = Ο επιλεγμένος κλάδος/tag είναι όμοιος.
|
||||
issues.blocked_by_user = Δεν μπορείτε να δημιουργήσετε ζητήματα σε αυτό το αποθετήριο, επειδή ο κάτοχος του αποθετηρίου σας έχει αποκλείσει.
|
||||
issues.blocked_by_user = Δεν μπορείτε να δημιουργήσετε ζητήματα σε αυτό το repository, επειδή ο κάτοχος του repository σας έχει αποκλείσει.
|
||||
pulls.agit_explanation = Δημιουργημένο μέσω του AGit. Το AGit επιτρέπει σε συνεισφέροντες να προτείνουν αλλαγές χρησιμοποιώντας την εντολή «git push», χωρίς την δημιουργία fork ή έναν νέο κλάδο.
|
||||
activity.navbar.recent_commits = Πρόσφατες υποβολές
|
||||
settings.wiki_globally_editable = Να επιτρέπεται η επεξεργασία του wiki σε όλους
|
||||
admin.manage_flags = Διαχείριση σημάνσεων
|
||||
admin.enabled_flags = Το αποθετήριο έχει τις εξής σημάνσεις:
|
||||
settings.mirror_settings.pushed_repository = Προοριζόμενο αποθετήριο
|
||||
admin.enabled_flags = Το repository έχει τις εξής σημάνσεις:
|
||||
settings.mirror_settings.pushed_repository = Προοριζόμενο repository
|
||||
admin.flags_replaced = Οι σημάνσεις του αποθετηρίου αντικαταστάθηκαν
|
||||
activity.navbar.code_frequency = Συχνότητα κώδικα
|
||||
settings.wiki_branch_rename_success = Το όνομα κλάδου wiki του αποθετηρίου κανονικοποιήθηκε επιτυχώς.
|
||||
|
@ -2767,7 +2767,7 @@ editor.commit_id_not_matching = Το αρχείο άλλαξε όσο το επ
|
|||
settings.sourcehut_builds.visibility = Ορατότητα εργασιών
|
||||
object_format = Μορφή αντικειμένων («object format»)
|
||||
settings.ignore_stale_approvals_desc = Οι εγκρίσεις, οι οποίες αναφέρονται σε παλαιότερες υποβολές, δεν θα προσμετρούνται στο σύνολο των απαιτούμενων εγκρίσεων του pull request. Εφόσον αυτές οι εγκρίσεις έχουν ήδη ανακληθεί, τότε αυτή η ρύθμιση δεν θα παίξει κάποιον ρόλο.
|
||||
settings.archive.mirrors_unavailable = Οι λειτουργίες ειδώλου δεν είναι διαθέσιμες εφόσον το αποθετήριο έχει αρχειοθετηθεί.
|
||||
settings.archive.mirrors_unavailable = Οι λειτουργίες ειδώλου δεν είναι διαθέσιμες εφόσον το repository έχει αρχειοθετηθεί.
|
||||
settings.web_hook_name_sourcehut_builds = SourceHut Builds
|
||||
settings.enforce_on_admins = Εφαρμογή κανόνα σε διαχειριστές του αποθετηρίου
|
||||
object_format_helper = Η μορφή αντικειμένων («object format») του αποθετηρίου. Δεν θα μπορείτε να το αλλάξετε μεταγενέστερα. Η πιο συμβατή μορφή είναι η SHA1.
|
||||
|
@ -2805,7 +2805,7 @@ release.type_attachment = Συνημμένο
|
|||
activity.published_prerelease_label = Προδημοσίευση
|
||||
activity.published_tag_label = Ετικέτα
|
||||
settings.pull_mirror_sync_quota_exceeded = Έχετε υπερβεί τους διαθέσιμους πόρους σας, για αυτό δεν θα γίνει λήψη των πιο πρόσφατων αλλαγών.
|
||||
settings.transfer_quota_exceeded = Ο νέος ιδιοκτήτης (%s) έχει υπερβεί τους διαθέσιμους πόρους του. Το αποθετήριο δεν μπορεί να μεταφερθεί.
|
||||
settings.transfer_quota_exceeded = Ο νέος ιδιοκτήτης (%s) έχει υπερβεί τους διαθέσιμους πόρους του. Το repository δεν μπορεί να μεταφερθεί.
|
||||
release.asset_name = Όνομα αρχείου
|
||||
release.asset_external_url = Εξωτερικό URL
|
||||
release.invalid_external_url = Μη έγκυρο εξωτερικό URL: «%s»
|
||||
|
@ -2815,6 +2815,8 @@ no_eol.tooltip = Αυτό το αρχείο δεν περιέχει έναν χ
|
|||
release.add_external_asset = Προσθήκη εξωτερικού αρχείου
|
||||
milestones.filter_sort.name = Όνομα
|
||||
release.type_external_asset = Εξωτερικό αρχείο
|
||||
mirror_public_key = Δημόσιο κλειδί SSH
|
||||
mirror_use_ssh.helper = το Forgejo θα κατοπτρίσει το αποθετήριο μέσω Git με τη χρήση SSH και θα δημιουργήσει ένα ζεύγος κλειδιών. Πρέπει να εξασφαλίσετε πως το δημιουργημένο κλειδί είναι εξουσιοδοτημένο να ωθεί στο αποθετήριο προορισμού. Εφόσον το έχετε επιλέξει, δε μπορείτε να χρησιμοποιήσετε εξουσιοδότηση συνθηματικού.
|
||||
|
||||
[graphs]
|
||||
component_loading_failed = Δεν ήταν δυνατή η φόρτωση του %s
|
||||
|
@ -2901,7 +2903,7 @@ teams.join=Συμμετοχή
|
|||
teams.leave=Αποχώρηση
|
||||
teams.leave.detail=Σίγουρα θέλετε να αποχωρήσετε από την ομάδα %s;
|
||||
teams.can_create_org_repo=Δημιουργία αποθετηρίων
|
||||
teams.can_create_org_repo_helper=Τα μέλη μπορούν να δημιουργήσουν νέα αποθετήρια στον οργανισμό. Ο δημιουργός θα αποκτήσει πρόσβαση διαχειριστή στο νέο αποθετήριο.
|
||||
teams.can_create_org_repo_helper=Τα μέλη μπορούν να δημιουργήσουν νέα αποθετήρια στον οργανισμό. Ο δημιουργός θα αποκτήσει πρόσβαση διαχειριστή στο νέο repository.
|
||||
teams.none_access=Καμία πρόσβαση
|
||||
teams.none_access_helper=Τα μέλη δεν μπορούν να δουν ή να κάνουν οποιαδήποτε άλλη ενέργεια σε αυτή τη μονάδα.
|
||||
teams.general_access=Γενική πρόσβαση
|
||||
|
@ -2922,7 +2924,7 @@ teams.add_team_member=Προσθήκη μέλους ομάδας
|
|||
teams.invite_team_member=Πρόσκληση στην ομάδα %s
|
||||
teams.invite_team_member.list=Εκκρεμείς προσκλήσεις
|
||||
teams.delete_team_title=Διαγραφή ομάδας
|
||||
teams.delete_team_desc=Η διαγραφή μιας ομάδας ανακαλεί τη πρόσβαση στο αποθετήριο από τα μέλη της. Συνέχεια;
|
||||
teams.delete_team_desc=Η διαγραφή μιας ομάδας ανακαλεί τη πρόσβαση στο repository από τα μέλη της. Συνέχεια;
|
||||
teams.delete_team_success=Η ομάδα έχει διαγραφεί.
|
||||
teams.read_permission_desc=Αυτή η ομάδα χορηγεί πρόσβαση <strong>Ανάγνωσης</strong>: τα μέλη μπορούν να δουν και να κλωνοποιήσουν τα αποθετήρια της ομάδας.
|
||||
teams.write_permission_desc=Αυτή η ομάδα χορηγεί πρόσβαση <strong>Εγγραφής</strong>: τα μέλη μπορούν να διαβάσουν και να κάνουν push στα αποθετήρια της ομάδας.
|
||||
|
@ -2934,9 +2936,9 @@ teams.remove_all_repos_title=Αφαίρεση όλων των αποθετηρί
|
|||
teams.remove_all_repos_desc=Αυτό θα αφαιρέσει όλα τα αποθετήρια από την ομάδα.
|
||||
teams.add_all_repos_title=Προσθήκη όλων των αποθετηρίων
|
||||
teams.add_all_repos_desc=Αυτό θα προσθέσει όλα τα αποθετήρια του οργανισμού στην ομάδα.
|
||||
teams.add_nonexistent_repo=Το αποθετήριο που προσπαθείτε να προσθέσετε δεν υπάρχει, παρακαλώ δημιουργήστε το πρώτα.
|
||||
teams.add_nonexistent_repo=Το repository που προσπαθείτε να προσθέσετε δεν υπάρχει, παρακαλώ δημιουργήστε το πρώτα.
|
||||
teams.add_duplicate_users=Ο χρήστης είναι ήδη μέλος της ομάδας.
|
||||
teams.repos.none=Αυτή η ομάδα δεν έχει πρόσβαση σε κανένα αποθετήριο.
|
||||
teams.repos.none=Αυτή η ομάδα δεν έχει πρόσβαση σε κανένα repository.
|
||||
teams.members.none=Δεν υπάρχουν μέλη σε αυτήν την ομάδα.
|
||||
teams.specific_repositories=Συγκεκριμένα αποθετήρια
|
||||
teams.specific_repositories_helper=Τα μέλη θα έχουν πρόσβαση μόνο σε αποθετήρια που προστίθενται ρητά στην ομάδα. Επιλέγοντας το <strong>δεν θα</strong> θα αφαιρεθούν αυτόματα τα αποθετήρια που έχουν ήδη προστεθεί με το <i>Όλα τα αποθετήρια</i>.
|
||||
|
@ -3154,7 +3156,7 @@ packages.creator=Δημιουργός
|
|||
packages.name=Όνομα
|
||||
packages.version=Έκδοση
|
||||
packages.type=Τύπος
|
||||
packages.repository=Αποθετήριο
|
||||
packages.repository=Repository
|
||||
packages.size=Μέγεθος
|
||||
packages.published=Δημοσιευμένα
|
||||
|
||||
|
@ -3473,7 +3475,7 @@ notices.inverse_selection=Αντιστροφή επιλογής
|
|||
notices.delete_selected=Διαγραφή επιλεγμένων
|
||||
notices.delete_all=Διαγραφή όλων των ειδοποιήσεων
|
||||
notices.type=Τύπος
|
||||
notices.type_1=Αποθετήριο
|
||||
notices.type_1=Repository
|
||||
notices.type_2=Εργασία
|
||||
notices.desc=Περιγραφή
|
||||
notices.op=Λειτ.
|
||||
|
@ -3511,7 +3513,7 @@ users.organization_creation.description = Να επιτρέπεται η δημ
|
|||
|
||||
[action]
|
||||
create_repo=δημιούργησε το αποθετήριο <a href="%s">%s</a>
|
||||
rename_repo=μετονόμασε το αποθετήριο από <code>%[1]s</code> σε <a href="%[2]s">%[3]s</a>
|
||||
rename_repo=μετονόμασε το repository από <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>
|
||||
create_issue=`άνοιξε το ζήτημα <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
close_issue=`έκλεισε το ζήτημα <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
|
@ -3523,7 +3525,7 @@ comment_issue=`άφησε σχόλιο στο ζήτημα <a href="%[1]s">%[3]s
|
|||
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>`
|
||||
transfer_repo=μετέφερε το αποθετήριο <code>%s</code> σε <a href="%s">%s</a>
|
||||
transfer_repo=μετέφερε το repository <code>%s</code> σε <a href="%s">%s</a>
|
||||
push_tag=ώθησε την ετικέτα <a href="%[2]s">%[3]s</a> σε <a href="%[1]s">%[4]s</a>
|
||||
delete_tag=διέγραψε την ετικέτα %[2]s από <a href="%[1]s">%[3]s</a>
|
||||
delete_branch=διέγραψε το κλάδο %[2]s από <a href="%[1]s">%[3]s</a>
|
||||
|
@ -3603,7 +3605,7 @@ title=Πακέτα
|
|||
desc=Διαχείριση πακέτων μητρώου.
|
||||
empty=Δεν υπάρχουν πακέτα ακόμα.
|
||||
empty.documentation=Για περισσότερες πληροφορίες σχετικά με το μητρώο πακέτων, συμβουλευτείτε <a target="_blank" rel="noopener noreferrer" href="%s">τον οδηγό</a>.
|
||||
empty.repo=Μήπως ανεβάσατε ένα πακέτο, αλλά δεν εμφανίζεται εδώ; Πηγαίνετε στις <a href="%[1]s">ρυθμίσεις πακέτων</a> και συνδέστε το σε αυτό το αποθετήριο.
|
||||
empty.repo=Μήπως ανεβάσατε ένα πακέτο, αλλά δεν εμφανίζεται εδώ; Πηγαίνετε στις <a href="%[1]s">ρυθμίσεις πακέτων</a> και συνδέστε το σε αυτό το repository.
|
||||
registry.documentation=Για περισσότερες πληροφορίες σχετικά με το μητρώο %s, συμβουλευτείτε τον <a target="_blank" rel="noopener noreferrer" href="%s">οδηγό</a>.
|
||||
filter.type=Τύπος
|
||||
filter.type.all=Όλα
|
||||
|
@ -3644,10 +3646,10 @@ composer.registry=Ρυθμίστε αυτό το μητρώο στο αρχεί
|
|||
composer.install=Για να εγκαταστήσετε το πακέτο χρησιμοποιώντας το Composer, εκτελέστε την ακόλουθη εντολή:
|
||||
composer.dependencies=Εξαρτήσεις
|
||||
composer.dependencies.development=Εξαρτήσεις Ανάπτυξης
|
||||
conan.details.repository=Αποθετήριο
|
||||
conan.details.repository=Repository
|
||||
conan.registry=Ρυθμίστε αυτό το μητρώο από τη γραμμή εντολών:
|
||||
conan.install=Για να εγκαταστήσετε το πακέτο χρησιμοποιώντας το Conan, εκτελέστε την ακόλουθη εντολή:
|
||||
conda.registry=Ρυθμίστε αυτό το μητρώο ως αποθετήριο Conda στο αρχείο <code>.condarc</code>:
|
||||
conda.registry=Ρυθμίστε αυτό το μητρώο ως repository Conda στο αρχείο <code>.condarc</code>:
|
||||
conda.install=Για να εγκαταστήσετε το πακέτο χρησιμοποιώντας το Conda, εκτελέστε την ακόλουθη εντολή:
|
||||
container.details.type=Τύπος Εικόνας
|
||||
container.details.platform=Πλατφόρμα
|
||||
|
@ -3705,8 +3707,8 @@ swift.registry=Ρυθμίστε αυτό το μητρώο από τη γραμ
|
|||
swift.install=Προσθέστε το πακέτο στο αρχείο <code>Package.swift</code>:
|
||||
swift.install2=και εκτελέστε την ακόλουθη εντολή:
|
||||
vagrant.install=Για προσθήκη ενός κυτίου Vagrant, εκτελέστε την ακόλουθη εντολή:
|
||||
settings.link=Σύνδεση αυτού του πακέτου με ένα αποθετήριο
|
||||
settings.link.description=Εάν συνδέσετε ένα πακέτο με ένα αποθετήριο, το πακέτο περιλαμβάνεται στη λίστα πακέτων του αποθετηρίου.
|
||||
settings.link=Σύνδεση αυτού του πακέτου με ένα repository
|
||||
settings.link.description=Εάν συνδέσετε ένα πακέτο με ένα repository, το πακέτο περιλαμβάνεται στη λίστα πακέτων του repository.
|
||||
settings.link.select=Επιλογή Αποθετηρίου
|
||||
settings.link.button=Ενημέρωση Συνδέσμου Αποθετηρίου
|
||||
settings.link.success=Ο σύνδεσμος αποθετηρίου ενημερώθηκε επιτυχώς.
|
||||
|
@ -3718,7 +3720,7 @@ settings.delete.success=Το πακέτο έχει διαγραφεί.
|
|||
settings.delete.error=Αποτυχία διαγραφής του πακέτου.
|
||||
owner.settings.cargo.title=Ευρετήριο μητρώου Cargo
|
||||
owner.settings.cargo.initialize=Αρχικοποίηση ευρετηρίου
|
||||
owner.settings.cargo.initialize.description=Απαιτείται ένα ειδικό αποθετήριο ευρετηρίου Git για τη χρήση του μητρώου Cargo. Χρησιμοποιώντας αυτή την επιλογή θα δημιουργηθεί ξανά το αποθετήριο και θα ρυθμιστεί αυτόματα.
|
||||
owner.settings.cargo.initialize.description=Απαιτείται ένα ειδικό repository ευρετηρίου Git για τη χρήση του μητρώου Cargo. Χρησιμοποιώντας αυτή την επιλογή θα δημιουργηθεί ξανά το repository και θα ρυθμιστεί αυτόματα.
|
||||
owner.settings.cargo.initialize.error=Αποτυχία αρχικοποίησης ευρετηρίου Cargo: %v
|
||||
owner.settings.cargo.initialize.success=Ο ευρετήριο Cargo δημιουργήθηκε με επιτυχία.
|
||||
owner.settings.cargo.rebuild=Ανανέωση ευρετηρίου
|
||||
|
@ -3811,7 +3813,7 @@ runners.task_list=Πρόσφατες εργασίες στον εκτελεστ
|
|||
runners.task_list.no_tasks=Δεν υπάρχει καμία εργασία ακόμα.
|
||||
runners.task_list.run=Εκτέλεση
|
||||
runners.task_list.status=Κατάσταση
|
||||
runners.task_list.repository=Αποθετήριο
|
||||
runners.task_list.repository=Repository
|
||||
runners.task_list.commit=Υποβολή
|
||||
runners.task_list.done_at=Ολοκλήρωσε Στις
|
||||
runners.edit_runner=Επεξεργασία Εκτελεστή
|
||||
|
|
|
@ -231,7 +231,6 @@ string.desc = Z - A
|
|||
[error]
|
||||
occurred = An error occurred
|
||||
report_message = If you believe that this is a Forgejo bug, please search for issues on <a href="%s" target="_blank">Codeberg</a> or open a new issue if necessary.
|
||||
invalid_csrf = Bad Request: invalid CSRF token
|
||||
not_found = The target couldn't be found.
|
||||
network_error = Network error
|
||||
server_internal = Internal server error
|
||||
|
@ -437,6 +436,8 @@ reset_password_wrong_user = You are signed in as %s, but the account recovery li
|
|||
password_too_short = Password length cannot be less than %d characters.
|
||||
non_local_account = Non-local users cannot update their password through the Forgejo web interface.
|
||||
verify = Verify
|
||||
;As https://codeberg.org/forgejo/forgejo/issues/2809 progresses, please update this error message if possible
|
||||
unauthorized_credentials = Credentials are incorrect or have expired. Retry your command or see %s for more information
|
||||
scratch_code = Scratch code
|
||||
use_scratch_code = Use a scratch code
|
||||
twofa_scratch_used = You have used your scratch code. You have been redirected to the two-factor settings page so you may remove your device enrollment or generate a new scratch code.
|
||||
|
@ -761,7 +762,7 @@ language.localization_project = Help us translate Forgejo into your language! <a
|
|||
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_description = Display an "Enable more" hint for repositories that do not have all available units enabled.
|
||||
update_hints = Update hints
|
||||
update_hints_success = Hints have been updated.
|
||||
hidden_comment_types = Hidden comment types
|
||||
|
@ -1506,6 +1507,7 @@ issues.new.closed_milestone = Closed milestones
|
|||
issues.new.assignees = Assignees
|
||||
issues.new.clear_assignees = Clear assignees
|
||||
issues.new.no_assignees = No assignees
|
||||
issues.new.assign_to_me = Assign to me
|
||||
issues.new.no_reviewers = No reviewers
|
||||
issues.edit.already_changed = Unable to save changes to the issue. It appears the content has already been changed by another user. Please refresh the page and try editing again to avoid overwriting their changes
|
||||
issues.choose.get_started = Get started
|
||||
|
@ -2175,9 +2177,9 @@ settings.mirror_settings.push_mirror.add = Add push mirror
|
|||
settings.mirror_settings.push_mirror.edit_sync_time = Edit mirror sync interval
|
||||
settings.mirror_settings.push_mirror.none_ssh = None
|
||||
|
||||
settings.units.units = Repository units
|
||||
settings.units.units = Units
|
||||
settings.units.overview = Overview
|
||||
settings.units.add_more = Add more...
|
||||
settings.units.add_more = Enable more
|
||||
|
||||
settings.sync_mirror = Synchronize now
|
||||
settings.mirror_settings.push_mirror.copy_public_key = Copy public key
|
||||
|
@ -2283,7 +2285,7 @@ settings.trust_model.collaboratorcommitter.desc = Valid signatures by collaborat
|
|||
settings.wiki_rename_branch_main = Normalize the Wiki branch name
|
||||
settings.wiki_rename_branch_main_desc = Rename the branch used internally by the Wiki to "%s". This change is permanent and cannot be undone.
|
||||
settings.wiki_rename_branch_main_notices_1 = This operation <strong>CANNOT</strong> be undone.
|
||||
settings.wiki_rename_branch_main_notices_2 = This will permanently rename the the internal branch of %s's repository wiki. Existing checkouts will need to be updated.
|
||||
settings.wiki_rename_branch_main_notices_2 = This will permanently rename the internal branch of %s's repository wiki. Existing checkouts will need to be updated.
|
||||
settings.wiki_branch_rename_success = The repository wiki's branch name has been successfully normalized.
|
||||
settings.wiki_branch_rename_failure = Failed to normalize the repository wiki's branch name.
|
||||
settings.confirm_wiki_branch_rename = Rename the wiki branch
|
||||
|
@ -2355,6 +2357,7 @@ settings.slack_icon_url = Icon URL
|
|||
settings.slack_color = Color
|
||||
settings.discord_username = Username
|
||||
settings.discord_icon_url = Icon URL
|
||||
settings.discord_icon_url.exceeds_max_length = Icon URL must be less than or equal to 2048 characters
|
||||
settings.event_desc = Trigger on:
|
||||
settings.event_push_only = Push events
|
||||
settings.event_send_everything = All events
|
||||
|
@ -2375,32 +2378,32 @@ settings.event_push_desc = Git push to a repository.
|
|||
settings.event_repository = Repository
|
||||
settings.event_repository_desc = Repository created or deleted.
|
||||
settings.event_header_issue = Issue events
|
||||
settings.event_issues = Issues
|
||||
settings.event_issues = Modification
|
||||
settings.event_issues_desc = Issue opened, closed, reopened, or edited.
|
||||
settings.event_issue_assign = Issue assigned
|
||||
settings.event_issue_assign = Assignment
|
||||
settings.event_issue_assign_desc = Issue assigned or unassigned.
|
||||
settings.event_issue_label = Issue labeled
|
||||
settings.event_issue_label_desc = Issue labels updated or cleared.
|
||||
settings.event_issue_milestone = Issue milestoned
|
||||
settings.event_issue_milestone_desc = Issue milestoned or demilestoned.
|
||||
settings.event_issue_comment = Issue comment
|
||||
settings.event_issue_label = Labels
|
||||
settings.event_issue_label_desc = Issue labels added or removed.
|
||||
settings.event_issue_milestone = Milestones
|
||||
settings.event_issue_milestone_desc = Milestone added, removed or modified.
|
||||
settings.event_issue_comment = Comments
|
||||
settings.event_issue_comment_desc = Issue comment created, edited, or deleted.
|
||||
settings.event_header_pull_request = Pull request events
|
||||
settings.event_pull_request = Pull request
|
||||
settings.event_pull_request = Modification
|
||||
settings.event_pull_request_desc = Pull request opened, closed, reopened, or edited.
|
||||
settings.event_pull_request_assign = Pull request assigned
|
||||
settings.event_pull_request_assign = Assignment
|
||||
settings.event_pull_request_assign_desc = Pull request assigned or unassigned.
|
||||
settings.event_pull_request_label = Pull request labeled
|
||||
settings.event_pull_request_label_desc = Pull request labels updated or cleared.
|
||||
settings.event_pull_request_milestone = Pull request milestoned
|
||||
settings.event_pull_request_milestone_desc = Pull request milestoned or demilestoned.
|
||||
settings.event_pull_request_comment = Pull request comment
|
||||
settings.event_pull_request_label = Labels
|
||||
settings.event_pull_request_label_desc = Pull request labels added or removed.
|
||||
settings.event_pull_request_milestone = Milestones
|
||||
settings.event_pull_request_milestone_desc = Milestone added, removed or modified.
|
||||
settings.event_pull_request_comment = Comments
|
||||
settings.event_pull_request_comment_desc = Pull request comment created, edited, or deleted.
|
||||
settings.event_pull_request_review = Pull request reviewed
|
||||
settings.event_pull_request_review_desc = Pull request approved, rejected, or review comment.
|
||||
settings.event_pull_request_sync = Pull request synchronized
|
||||
settings.event_pull_request_sync_desc = Pull request synchronized.
|
||||
settings.event_pull_request_review_request = Pull request review requested
|
||||
settings.event_pull_request_review = Reviews
|
||||
settings.event_pull_request_review_desc = Pull request approved, rejected, or review comments added.
|
||||
settings.event_pull_request_sync = Synchronized
|
||||
settings.event_pull_request_sync_desc = Branch updated automatically with target branch.
|
||||
settings.event_pull_request_review_request = Review requests
|
||||
settings.event_pull_request_review_request_desc = Pull request review requested or review request removed.
|
||||
settings.event_pull_request_approvals = Pull request approvals
|
||||
settings.event_pull_request_merge = Pull request merge
|
||||
|
|
|
@ -29,7 +29,7 @@ your_profile = Profilo
|
|||
sign_out = Adiaŭi
|
||||
settings = Agordoj
|
||||
logo = Emblemo
|
||||
toc = Listo de enhavo
|
||||
toc = Enhavotabelo
|
||||
admin_panel = Retejadministrado
|
||||
webauthn_unsupported_browser = Via retfoliumilo ne jam subtenas la salutmanieron WebAuthn.
|
||||
new_org = Novan organizaĵon
|
||||
|
@ -53,7 +53,7 @@ template = Ŝablono
|
|||
webauthn_press_button = Bonvolu premi la butonon sur via sekurŝlosilo…
|
||||
signed_in_as = Salutinta kiel
|
||||
sign_up = Registriĝi
|
||||
enable_javascript = Ĉi tiu retejo bezonas JavaScript’on.
|
||||
enable_javascript = Ĉi tiu retejo bezonas JavaSkripton.
|
||||
home = Hejmo
|
||||
email = Retpoŝtadreso
|
||||
your_settings = Agordoj
|
||||
|
@ -65,7 +65,7 @@ collaborative = Kunlaboraj
|
|||
pull_requests = Tirpetoj
|
||||
cancel = Nuligi
|
||||
preview = Antaŭvido
|
||||
disabled = Malŝaltita
|
||||
disabled = Malaktivigita
|
||||
go_back = Reiri
|
||||
copy_content = Kopii enhavon
|
||||
archived = Arĥivita
|
||||
|
@ -108,12 +108,12 @@ unknown = Nekonata
|
|||
issues = Eraroj
|
||||
error404 = Aŭ tiu ĉi paĝo <strong>ne ekzistas</strong> aŭ <strong>vi ne rajtas</strong> vidi ĝin.
|
||||
retry = Reprovi
|
||||
activities = Agoj
|
||||
activities = Aktivecoj
|
||||
confirm_delete_selected = Konfirmi forigon de ĉiu elektito?
|
||||
forks = Disbranĉiĝaj
|
||||
forks = Disbranĉigoj
|
||||
new_mirror = Novan spegulon
|
||||
re_type = Retajpu pasvorton
|
||||
new_fork = Novan disbranĉiĝon de deponejo
|
||||
new_fork = Novan disbranĉiĝo de deponejo
|
||||
new_project_column = Novan kolumnon
|
||||
new_migrate = Novan enporton
|
||||
mirror = Spegulo
|
||||
|
@ -122,12 +122,12 @@ remove = Forigi
|
|||
filter = Filtri
|
||||
filter.is_archived = Arĥivita
|
||||
filter.not_archived = Nearĥivita
|
||||
filter.is_fork = Disbranĉigita
|
||||
filter.not_fork = Nedisbranĉigita
|
||||
filter.is_mirror = Spegulita
|
||||
filter.not_mirror = Nespegulita
|
||||
filter.is_template = Ŝablono
|
||||
filter.not_template = Neŝablono
|
||||
filter.is_fork = Disbranĉigoj
|
||||
filter.not_fork = Ne disbranĉigoj
|
||||
filter.is_mirror = Speguloj
|
||||
filter.not_mirror = Ne speguloj
|
||||
filter.is_template = Ŝablonoj
|
||||
filter.not_template = Ne ŝablonoj
|
||||
filter.public = Publika
|
||||
filter.private = Privata
|
||||
dashboard = Labortablo
|
||||
|
@ -142,6 +142,14 @@ copy_generic = Kopii al tondujo
|
|||
confirm_delete_artifact = Ĉu vi certas, ke vi volas forigi la artefakton "%s"?
|
||||
artifacts = Artefaktoj
|
||||
new_repo.title = Novan deponejon
|
||||
filter.clear = Forigi filtrilojn
|
||||
new_migrate.title = Novan migrigon
|
||||
new_org.title = Novan organizaĵon
|
||||
new_repo.link = Novan deponejon
|
||||
new_migrate.link = Novan migrigon
|
||||
new_org.link = Novan organizaĵon
|
||||
error413 = Vi plenkonsumis vian kvoton.
|
||||
twofa_scratch = Sukuranta kodo por duobla aŭtentikigo
|
||||
|
||||
[editor]
|
||||
buttons.list.ordered.tooltip = Aldoni nombran liston
|
||||
|
@ -158,10 +166,12 @@ buttons.mention.tooltip = Mencii uzanton aŭ grupon
|
|||
buttons.italic.tooltip = Aldoni oblikvan tekston
|
||||
buttons.link.tooltip = Aldoni ligilon
|
||||
buttons.disable_monospace_font = Malsalti egallarĝan signoformaron
|
||||
buttons.indent.tooltip = Krommarĝeni erojn je unu nivelo
|
||||
buttons.unindent.tooltip = Malkrommarĝeni erojn je unu nivelo
|
||||
|
||||
[aria]
|
||||
navbar = Esplora breto
|
||||
footer.software = Pri programaro
|
||||
footer.software = Pri ĉi tiu programaro
|
||||
footer.links = Ligiloj
|
||||
footer = Piedo
|
||||
|
||||
|
@ -176,13 +186,16 @@ network_error = Reteraro
|
|||
invalid_csrf = Malvalida peto: malvalida CSRF-kodo
|
||||
occurred = Eraris iel
|
||||
missing_csrf = Malvalida peto: neniu CSRF-kodo
|
||||
server_internal = Eraris interno de servilo
|
||||
server_internal = Ena servila eraro
|
||||
|
||||
[heatmap]
|
||||
less = Malpli
|
||||
number_of_contributions_in_the_last_12_months = %s kontribuoj dum la pasintaj 12 monatoj
|
||||
contributions_zero = Neniu kontribuo
|
||||
more = Pli
|
||||
contributions_format = {contributions} la {day}-an de {month} {year}
|
||||
contributions_one = kontribuaĵo
|
||||
contributions_few = kontribuaĵoj
|
||||
|
||||
[startpage]
|
||||
app_desc = Senpena kaj memgastigebla Git-servo
|
||||
|
@ -199,37 +212,37 @@ license_desc = Ek, prenu <a target="_blank" rel="noopener noreferrer" href="%[1]
|
|||
title = Komenca agordado
|
||||
install = Instalado
|
||||
db_name = Datumbazonomo
|
||||
run_user = Rulu kiel uzanto
|
||||
run_user = Ruli kiel tiu uzanto
|
||||
log_root_path = Protokola dosiervojo
|
||||
err_admin_name_is_invalid = Uzantonomo de administranto malvalidas
|
||||
log_root_path_helper = Protokoloj skribiĝos en ĉi tiun dosierujon.
|
||||
allow_only_external_registration.description = Permesi registriĝojn sole per fremdaj servoj
|
||||
allow_only_external_registration.description = Uzantoj rajtas krei novajn kontojn nur uzante agorditajn fremdajn servojn.
|
||||
user = Uzantonomo
|
||||
smtp_addr = SMTP adreso
|
||||
smtp_port = SMTP adrespordo
|
||||
disable_registration = Malŝalti registriĝon
|
||||
disable_registration = Malaktivigi registriĝon
|
||||
reinstall_confirm_check_3 = Vi asertas ke vi plencertas ke tiu ĉi Forgejo ruliĝas per la ĝusta app.ini, kaj ke vi certas ke devas reinstali. Vi asertas ke vi bone komprenas la supre menciitajn danĝerojn.
|
||||
federated_avatar_lookup.description = Ŝaltas serĉadon de profilbildoj el federaj fontoj per Libravatar.
|
||||
federated_avatar_lookup.description = Serĉi profilbildojn per Libravatar.
|
||||
mailer_password = SMTP pasvorto
|
||||
repo_path = Deponeja dosiervojo
|
||||
err_empty_admin_email = La retpoŝtadreso de administranto ne malplenu.
|
||||
app_url_helper = Baza URL por HTTP(S) elŝutaj ligiloj kaj retleteroj.
|
||||
mailer_user = SMTP uzantonomo
|
||||
openid_signup = Ŝalti registriĝon per OpenID
|
||||
mailer_user = SMTP uzantnomo
|
||||
openid_signup = Aktivigi registriĝon per OpenID
|
||||
reinstall_confirm_check_2 = Deponejoj kaj agordoj eble devos re-interakordiĝi. Ŝaltinte tiun ĉi skatolon, vi asertas ke vi permane interakordigos kaj la hokojn por la deponejoj kaj authorized_keys. Vi asertas, ke deponejaj kaj spegulaj agordoj pravas.
|
||||
path = Vojo
|
||||
no_admin_and_disable_registration = Neeblas malŝalti memregistradon sen kreiĝo de administranta konto.
|
||||
disable_gravatar.description = Malŝaltas Gravatar kaj fremdajn fontojn de profilbildoj. Implicita profilbildo uziĝos, krom se la uzanto alŝutus loke profilbildon.
|
||||
offline_mode.description = Malŝaltas uzon de fremdaj serviloj por datumosendoj, ĉio datumo sendiĝos deloke.
|
||||
no_admin_and_disable_registration = Neeblas malaktivigi memregistradon sen krei administrantan konton.
|
||||
disable_gravatar.description = Malaktivigas Gravatar-on kaj aliajn fremdajn fontojn de profilbildoj. Defaŭltaj profilbildoj uziĝos, krom se la uzanto alŝutus loke profilbildon.
|
||||
offline_mode.description = Malaktivigi uzon de fremdaj serviloj por datumosendaĵoj kaj okupiĝas pri ciuj datumoj loke.
|
||||
reinstall_confirm_message = Reinstalado al jamekzistanta Forgejo-datumbazo povas okazigi plurajn problemojn. Vi kredeble anstataŭe rulu Forgejon kun via jama «app.ini». Sed se vi certas, ke vi komprenas kion vi faras, asertu jene:
|
||||
run_user_helper = Forgejo ruliĝos sub tiu ĉi uzanto de via operaciumo. Sciu, ke tiu ĉi uzanto bezonos aliron al la dosiervojon de deponejoj.
|
||||
domain = Retnomo
|
||||
err_admin_name_pattern_not_allowed = Uzantonomo de administranto malvalidas, ĉar la nomo akordas rezervan ŝablonon
|
||||
disable_registration.description = Malŝaltas registriĝojn. Sole administrantoj rajtos krei novajn kontojn.
|
||||
disable_registration.description = Malaktivigas registriĝojn. Sole administrantoj rajtos krei novajn kontojn.
|
||||
db_schema = Skemo
|
||||
reinstall_error = Vi provas instali al jamekzistanta Forgejo-datumbazo
|
||||
err_empty_admin_password = La pasvorto de administranto ne malplenu.
|
||||
disable_gravatar = Malŝalti profilbildojn per Gravatar
|
||||
disable_gravatar = Malaktivigi Gravatar-on
|
||||
repo_path_helper = Foraj Git-deponejoj konserviĝos al tiu ĉi dosierujo.
|
||||
sqlite_helper = Dosiervojo por la datumbazo SQLite3.<br>Enigu absolutan vojon se vi rulas Forgejon kiel servo.
|
||||
enable_captcha = Ŝalti dumregistriĝan teston de homeco
|
||||
|
@ -237,7 +250,7 @@ require_db_desc = Forgejo bezonas kiel datumbazo MySQL, PostgreSQL, SQLite3, aŭ
|
|||
smtp_from = Sendu retleterojn kiel
|
||||
general_title = Ĝeneralaj agordoj
|
||||
password = Pasvorto
|
||||
lfs_path_helper = Dosieroj spurataj de Git LFS konserviĝos en tiu ĉi dosierujo. Lasu malplena por malŝalti.
|
||||
lfs_path_helper = Dosieroj spurataj de Git LFS konserviĝos en tiu ĉi dosierujo. Lasu malplena por malaktivigi.
|
||||
openid_signin = Ŝalti salutadon per OpenID
|
||||
host = Gastiganto
|
||||
docker_helper = Se vi rulas Forgejon per Docker, bonvolu legi la <a target="_blank" rel="noopener noreferrer" href="%s">gvidpaĝojn</a> antaŭ ajna agordoŝanĝo.
|
||||
|
@ -245,67 +258,71 @@ federated_avatar_lookup = Ŝalti federajn profilbildojn
|
|||
optional_title = Malnepraj agordoj
|
||||
domain_helper = Retnomo aŭ adreso de la servilo.
|
||||
mail_notify = Ŝalti retpoŝtajn sciigojn
|
||||
app_url = Forgejo Baza URL
|
||||
app_url = Baza URL
|
||||
ssl_mode = SSL
|
||||
db_title = Datumbazaj agordoj
|
||||
err_empty_db_path = La datumbazovojo de SQLite3 ne malplenu.
|
||||
openid_signin.description = Ŝaltas salutadon per OpenID.
|
||||
openid_signin.description = Permesas al la uzantoj ensaluti per OpenID.
|
||||
smtp_from_helper = Retpoŝtadreson kiun uzos Forgejo. Enmetu ordinaran adreson aŭ laŭ la formo «"Name" <email@example.com>».
|
||||
enable_captcha.description = Postulas teston de homeco dum registriĝoj.
|
||||
ssh_port_helper = Adresporda numero kiun atentas via SSH-servilo. Lasu malplena por malŝalti.
|
||||
enable_captcha.description = Postuli teston de homeco al la uzantoj kreantaj kontojn.
|
||||
ssh_port_helper = Adresporda numero kiu estos uzata de la SSH-servilo. Lasu malplena por malaktivigi la SSH-servilon.
|
||||
lfs_path = Git LFS dosiervojo
|
||||
app_name_helper = Vi povas enmeti la nomon de via kompanio ĉi tien.
|
||||
http_port_helper = Adresporda numero kiun atentos la HTTP-servilo de Forgejo.
|
||||
http_port = Forgejo HTTP adrespordo
|
||||
app_name_helper = Vi povas enmeti la nomon de via kompanio ĉi tien. Ĝi montriĝos en ĉiuj retpaĝoj.
|
||||
http_port_helper = Adresporda numero kiu estos uzta de la HTTP-servilo de Forgejo.
|
||||
http_port = HTTP adrespordo
|
||||
db_schema_helper = Lasu malplena por implicita («public»).
|
||||
ssh_port = SSH adrespordo
|
||||
err_admin_name_is_reserved = Uzantonomo de administranto malvalidas, tiu uzantonomo estas rezerva
|
||||
openid_signup.description = Ŝaltas uzantregistriĝon per OpenID.
|
||||
openid_signup.description = Permesi al la uzantoj krei kontojn per OpenID se reĝitriĝo aktivas.
|
||||
db_type = Datumbazospeco
|
||||
email_title = Retpoŝtaj agordoj
|
||||
offline_mode = Ŝalti lokan reĝimon
|
||||
reinstall_confirm_check_1 = La datumoj ĉifritaj per la ŝlosilo SECRET_KEY en app.ini eble perdiĝos; eblas ke uzantoj ne povos saluti per dumaniera-saluto aŭ unufojaj pasvortoj, kaj ke spegulado ne funkcios ĝuste. Ŝaltinte tiun ĉi skatolon, vi asertas ke la nuna app.ini dosiero enhavas la ĝustan SECRET_KEY.
|
||||
app_name = Retejonomo
|
||||
server_service_title = Servilaj kaj fremdservaj agordoj
|
||||
require_sign_in_view = Postuli saluton por vidi paĝojn
|
||||
require_sign_in_view = Postuli saluton por vidi instancan enhavon
|
||||
register_confirm = Postuli retpoŝtan kontrolon por registri
|
||||
admin_password = Pasvorto
|
||||
admin_title = Administrantaj kontagordoj
|
||||
admin_email = Retpoŝtadreso
|
||||
install_btn_confirm = Instali Forgejon
|
||||
require_sign_in_view.description = Kaŝi paĝon de ajna nesalutinto. Vizitantoj sole vidos salutajn kaj registriĝajn paĝojn.
|
||||
require_sign_in_view.description = Kaŝi paĝon de ajna nesalutinto. Vizitantoj nur vidos salutajn kaj registriĝajn paĝojn.
|
||||
invalid_db_setting = La datumbazaj agordoj malvalidas: %v
|
||||
invalid_db_table = La datumbaza tabelo «%s» malvalidas: %v
|
||||
sqlite3_not_available = Ĉi tiu versio de Forgejo ne subtenas SQLite3. Bonvolu elŝuti la oficialan ruldosieron de %s (ne la version «gobuild»).
|
||||
invalid_app_data_path = La programdatuma dosiervojo malvalidas: %s
|
||||
test_git_failed = Ne povis testi programon «git»: %v
|
||||
test_git_failed = Ne povis testi "git" komandon: %v
|
||||
confirm_password = Konfirmi pasvorton
|
||||
invalid_repo_path = La deponeja dosiervojo malvalidas: %v
|
||||
admin_name = Administranto uzantonomo
|
||||
admin_setting.description = Krei administranton estas malnepra. La unue registrota uzanto memage iĝos administranto.
|
||||
run_user_not_match = La «rulu kiel» uzantonomo ne samas al la nuna uzantonomo: %s -> %s
|
||||
admin_name = Administranta uzantnomo
|
||||
admin_setting.description = Krei administrantan konton malnepras. La unua registrota uzanto aŭtomate iĝos administranto.
|
||||
run_user_not_match = La "ruli kiel tiu uzanto" uzantnomo ne samas al la nuna uzantnomo: %s -> %s
|
||||
secret_key_failed = Malsukcesis kreante sekretan ŝlosilon: %v
|
||||
save_config_failed = Malsukcesis konservante agordojn: %v
|
||||
invalid_admin_setting = Agordoj de administranta konto malvalidas: %v
|
||||
enable_update_checker_helper_forgejo = Foje serĉas novajn versiojn de Forgejo per kontrolado de DNS TXT registraĵo ĉe release.forgejo.org.
|
||||
enable_update_checker_helper_forgejo = Periode serĉos novajn versiojn de Forgejo kontrolante DNS TXT registraĵon ĉe release.forgejo.org.
|
||||
invalid_log_root_path = La protokola dosiervojo malvalidas: %v
|
||||
default_enable_timetracking = Ŝalti tempospuradon implicite
|
||||
default_enable_timetracking.description = Ŝaltus tempospuradon por novaj deponejoj implicite.
|
||||
default_keep_email_private.description = Kaŝus retpoŝtadresojn de novaj kontoj implicite.
|
||||
default_allow_create_organization = Permesi kreadon de organizaĵoj implicite
|
||||
default_enable_timetracking = Aktivigi tempospuradon defaŭlte
|
||||
default_enable_timetracking.description = Aktivigas tempospuradon por novaj deponejoj defaŭlte.
|
||||
default_keep_email_private.description = Kaŝi defaŭlte retpoŝtadresojn por novaj uzantoj por ke iliaj informoj ne senprokraste likiĝas post reĝistriĝo.
|
||||
default_allow_create_organization = Permesi kreadon de organizaĵoj defaŭlte
|
||||
allow_dots_in_usernames = Permesi ĉeeston de punktoj en uzantonomoj. Ne efikas je jamaj kontoj.
|
||||
no_reply_address = Retnomo de retpoŝtaj kaŝadresoj
|
||||
default_keep_email_private = Kaŝi retpoŝtadresojn implicite
|
||||
default_allow_create_organization.description = Permesus novajn uzantojn krei organizaĵojn implicite.
|
||||
no_reply_address = Retnomo por kaŝitaj retpoŝtadresoj
|
||||
default_keep_email_private = Kaŝi retpoŝtadresojn defaŭlte
|
||||
default_allow_create_organization.description = Permesi al novaj uzantoj krei organizaĵojn defaŭlte. Kiam ĉi tiu opcio malaktiviĝas, administranto devos permesi al novaj uzantoj krei organizaĵojn.
|
||||
env_config_keys_prompt = La jenaj mediaj variantoj ankaŭ fandiĝos kun via agordodosiero:
|
||||
no_reply_address_helper = Retnomo kiu uziĝus por uzantoj kun kaŝita retpoŝtadreso. Ekzemple, la uzanto «adamo» protokoliĝus je Git kiel «adamo@nerespondu.ekzemplo.org» se la adreskaŝa retnomo estus «nerespondu.ekzemplo.org».
|
||||
enable_update_checker = Ŝalti novversian kontrolanton
|
||||
enable_update_checker = Aktivigi novversian kontrolanton
|
||||
password_algorithm = Pasvorthaketiga algoritmo
|
||||
env_config_keys = Mediagordoj
|
||||
invalid_password_algorithm = Malvalida pasvorthakeita algoritmo
|
||||
password_algorithm_helper = Agordas la pasvorthaketigan algoritmon. Algoritmoj havas malsamajn postulojn kaj efikecojn. La algoritmo argon2 sufiĉe sekuras, sed postulas multan memoron kaj eble ne taŭgas por nepotencaj serviloj.
|
||||
internal_token_failed = Malsukcesis krei internan ĵetonon: %v
|
||||
smtp_from_invalid = La «Sendu retleterojn kiel» adreso malvalidas
|
||||
allow_only_external_registration = Permesi registriĝon nur per fremdaj servoj
|
||||
app_slogan = Instanca frapfrazo
|
||||
app_slogan_helper = Enigu vian instancan frapfrazon ĉi tien. Lasu malplena por malaktivigi.
|
||||
config_location_hint = Ĉi tiuj agordoj konserviĝos en:
|
||||
|
||||
[admin]
|
||||
config.app_data_path = Programdatuja doseiervojo
|
||||
|
@ -315,8 +332,8 @@ config.allow_dots_in_usernames = Permesi ĉeeston de punktoj en uzantonomoj. Ne
|
|||
filter = Aliaj filtriloj
|
||||
show_archived = Arĥivita
|
||||
search_repos = Serĉi deponejon…
|
||||
my_orgs = Miaj organizaĵoj
|
||||
uname_holder = Uzantonomo aŭ Retpoŝtadreso
|
||||
my_orgs = Organizaĵoj
|
||||
uname_holder = Uzantnomo aŭ retpoŝtadreso
|
||||
my_repos = Deponejoj
|
||||
show_both_archived_unarchived = Montras arĥivitajn kaj nearĥivitajn
|
||||
feed_of = Fluo de «%s»
|
||||
|
@ -333,7 +350,7 @@ show_only_unarchived = Montras sole nearĥivitajn
|
|||
my_mirrors = Miaj speguloj
|
||||
show_only_archived = Montras sole arĥivitajn
|
||||
view_home = Vidi %s
|
||||
switch_dashboard_context = Ŝanĝi labortablon
|
||||
switch_dashboard_context = Baskuli la kuntekston de la kontrolpanelo
|
||||
|
||||
[explore]
|
||||
search.match.tooltip = Inkluzivu sole rezultojn kiuj akordas precize la serĉomendon
|
||||
|
@ -355,22 +372,26 @@ code_search_results = Serĉrezultoj je «%s»
|
|||
relevant_repositories = Sole montras aktualajn deponejojn, <a href="%s">montri senfiltrajn rezultojn</a>.
|
||||
code_last_indexed_at = Plejfreŝe esplorita je %s
|
||||
code_no_results = Neniu fontkodo akorda laŭ via serĉomendo trovita.
|
||||
forks_few = %d disbranĉigoj
|
||||
stars_one = %d stelo
|
||||
forks_one = %d disbranĉigo
|
||||
stars_few = %d steloj
|
||||
|
||||
[auth]
|
||||
disable_register_mail = Retpoŝta konfirmado dum registriĝo estas malŝaltita.
|
||||
disable_register_mail = Retpoŝta konfirmado dum registriĝo estas malaktivigita.
|
||||
sign_up_successful = Konto sukcese kreita. Bonvenon!
|
||||
forgot_password = Ĉu forgesis pasvorton?
|
||||
sign_up_now = Ĉu bezonas konton? Registriĝu nun.
|
||||
forgot_password_title = Forgesis pasvorton
|
||||
social_register_helper_msg = Ĉu vi jam havas konton? Alligu ĝin nun!
|
||||
create_new_account = Registri konton
|
||||
disable_register_prompt = Registrado estas malŝaltita. Bonvolu sciigi vian retejestron.
|
||||
disable_register_prompt = Registrado estas malaktivigita. Bonvolu sciigi vian retejestron.
|
||||
register_helper_msg = Ĉu vi jam havas konton? Salutu nun!
|
||||
manual_activation_only = Kunparolu vian retejestron por finpretigi vian konton.
|
||||
authorization_failed_desc = La aprobo malsukcesis ĉar ni rimarkis malvalidan peton. Bonvolu sciigi la prizorganton de la programo kiun vi provis aprobi.
|
||||
oauth_signin_tab = LIgi al jama konto
|
||||
oauth_signin_tab = Ligi al jama konto
|
||||
invalid_password = Via pasvorto ne samas tiun uzitan dum kreiĝo de via konto.
|
||||
send_reset_mail = Sendi retleteron por rehavigo de konto
|
||||
send_reset_mail = Sendi retleteron de rehavigo
|
||||
oauth_signin_title = Salutu por aprobi kontligiĝon
|
||||
reset_password_helper = Rehavigi konton
|
||||
tab_openid = OpenID
|
||||
|
@ -382,7 +403,7 @@ login_userpass = Saluti
|
|||
password_too_short = Pasvortoj devas longi minimume %d signojn.
|
||||
resend_mail = Klaki ĉi tien por resendi vian konfirmleteron
|
||||
change_unconfirmed_email_error = Ne povis ŝanĝi la retpoŝtadreson: %v
|
||||
authorize_application_description = Se vi permesus aliron, ĝi povos aliri kaj redakti ĉiujn viajn kontinformojn, inkluzivante privatajn deponejojn kaj organizaĵojn.
|
||||
authorize_application_description = Se vi permesus aliron, ĝi povos aliri kaj redakti ĉiujn viajn kontinformojn, inkluzive privatajn deponejojn kaj organizaĵojn.
|
||||
allow_password_change = Postuli novan pasvorton de la uzanto (rekomendita)
|
||||
oauth.signin.error.access_denied = La aprobpeto malakceptiĝis.
|
||||
authorize_title = Aprobi aliron de via konto al «%s»?
|
||||
|
@ -394,15 +415,15 @@ disable_forgot_password_mail = Rehavigo de konto estas malsaltita ĉar neniu ret
|
|||
last_admin = Vi ne povas forigi la lastan administranton. Nepras havi almenaŭ unu administranton.
|
||||
reset_password_wrong_user = Vi salutis kiel %s, sed la kontrehaviga ligilo estas celata al %s
|
||||
openid_connect_title = Konekti jaman konton
|
||||
confirmation_mail_sent_prompt = Sendis novan konfirmleteron al <b>%s</b>. Bonvolu kontroli vian retleterkeston antaŭ la venonta %s. Se la retpoŝtadreso malĝustas, vi povus saluti kaj peti sendon de plia konfirmletero al alian adreson.
|
||||
confirmation_mail_sent_prompt = Sendis konfirmleteron al <b>%s</b>. Por fini la reĝistriĝon, bonvolu kontroli vian retleterkeston kaj sekvi la provizotan ligilon antaŭ la venonta %s. Se la retletero malĝustas, vi povas saluti kaj peti ke alian konfirmleteron estas sendota al malsama retpoŝtadreso.
|
||||
password_pwned = La pasvorton kiun vi elektis listiĝas ĉe <a target="_blank" rel="noopener noreferrer" href="%s">listo de ŝtelitaj pasvortoj</a> kiu publikiĝis pro datumŝtelo. Bonvolu reprovi kun alia pasvorto, kaj konsideru anstataŭigon de ĉi tiu pasvorto ĉe aliaj kontoj.
|
||||
authorize_application_created_by = Ĉi tiun programon kreis %s.
|
||||
prohibit_login = Salutado malpermesita
|
||||
prohibit_login = La konto estas suspendita
|
||||
openid_register_title = Krei novan konton
|
||||
email_domain_blacklisted = Vi ne povas registriĝi per via retpoŝtadreso.
|
||||
verify = Konfirmi
|
||||
oauth_signup_submit = Finfari konton
|
||||
prohibit_login_desc = Salutado per via konto estas malpermesita, bonvolu kunparoli vian retejestron.
|
||||
prohibit_login_desc = Via konto estas suspendita kaj ne povas interagi kun la instanco. Bonvolu kontakti vian retejestron por regajni aliron.
|
||||
openid_connect_desc = La elektita OpenID URI estas nekonata. Ligu ĝin al nova konto ĉi tie.
|
||||
oauth.signin.error = Eraris traktante aprobpeton. Se plu eraros, bonvolu kunparoli la retejestron.
|
||||
invalid_code = Via konfirmkodo malvalidas aŭ eksdatiĝis.
|
||||
|
@ -412,7 +433,7 @@ email_not_associate = Tiu retpoŝtadreso estas ligita al neniu konto.
|
|||
openid_signin_desc = Enmetu vian OpenID URI. Ekzemple: sofia.openid.example.org aŭ https://openid.example.org/sofia.
|
||||
disable_forgot_password_mail_admin = Rehavigo de konto sole uzeblas se retpoŝto estas agordita. Bonvolu agordi retpoŝton por ŝalti kontrehavigon.
|
||||
change_unconfirmed_email = Se vi donis la malĝustan retpoŝtadreson dum registriĝo, vi povas ŝanĝi ĝin sube, kaj konfirmletero sendiĝus al tiu anstataŭe.
|
||||
reset_password_mail_sent_prompt = Sendis novan konfirmleteron al <b>%s</b>. Bonvolu kontroli vian retleterkeston antaŭ la venonta %s, por daŭrigi rehavigon de konto.
|
||||
reset_password_mail_sent_prompt = Sendis konfirmleteron al <b>%s</b>. Por fini la rehavigon de konto, bonvolu kontroli vian retleterkeston kaj sekvi la provizotan ligilon antaŭ la venonta %s.
|
||||
openid_register_desc = La elektita OpenID URI estas nekonata. Ligi ĝin al nova konto ĉi tie.
|
||||
reset_password = Rehavigo de konto
|
||||
sspi_auth_failed = SSPI aŭtentikigo malsukcesis
|
||||
|
@ -424,6 +445,16 @@ change_unconfirmed_email_summary = Ŝanĝi al retpoŝtadreson al kiu la aktiviga
|
|||
invalid_code_forgot_password = Via konfirmkodo malvalidas aŭ jam eksdatiĝis. Klaku <a href="%s">ĉi tien</a> por komenci novan saluton.
|
||||
authorize_redirect_notice = Vi alidirektiĝos al %s se vi aprobus ĉi tiun programon.
|
||||
active_your_account = Aktivigi vian konton
|
||||
unauthorized_credentials = Viaj salutiloj malĝustas aŭ eksdatiĝis. Reprovu vian komandon aŭ vidu %s por pli da informoj
|
||||
scratch_code = Sukuranta kodo
|
||||
use_scratch_code = Uzi sukurantan kodon
|
||||
twofa_scratch_used = Vi uzis vian sukurantan kodon. Vi redirektiĝis al la agorda retpaĝo por forigi la duoblan aŭtentikigon el via aparato aŭ generi novan sukurantan kodon.
|
||||
twofa_passcode_incorrect = Via paskodo malĝustas. Se vi mislokis vian aparaton, uzu vian sukurantan kodo por saluti.
|
||||
twofa_scratch_token_incorrect = Via sukuranta kodo malĝustas.
|
||||
hint_login = Ĉu vi jam havas konton? <a href="%s">Salutu nun!</a>
|
||||
hint_register = Ĉu vi bezonas konton? <a href="%s">Reĝistriĝi nun.</a>
|
||||
sign_up_button = Reĝistriĝi nun.
|
||||
sign_in_openid = Daŭrigi kun OpenID
|
||||
|
||||
[mail]
|
||||
activate_account.text_1 = Saluton <b>%[1]s</b>, dankon pro via registriĝo ĉe %[2]s!
|
||||
|
@ -437,7 +468,7 @@ link_not_working_do_paste = ĉu ne funkcias? Provu kopii kaj alglui al via retfo
|
|||
repo.transfer.body = Akceptu per vizito al %s, malakceptu per malatento.
|
||||
team_invite.text_3 = Noto: Ĉi tiu invito estas alcelita al %[1]s. Se vi ne atendis tiun ĉi invito, vi povus simple malatenti tiun ĉi retletero.
|
||||
repo.collaborator.added.subject = %s aldonis vin al %3
|
||||
team_invite.subject = %[1]s invitis vin aliĝi la organizaĵon %[2]
|
||||
team_invite.subject = %[1]s invitis vin aliĝi la organizaĵon %[2]s
|
||||
reset_password.text = Bonvolu klaki la sekvontan ligilon por rehavigi vian konton ĝis <b>%</b>:
|
||||
issue.action.reopen = <b>@%[1]s</b> remalfermis #%[2]d.
|
||||
issue.action.approve = <b>@%[1]s</b> aprobis tiun ĉi tirpeton.
|
||||
|
@ -459,7 +490,7 @@ admin.new_user.subject = Nova uzanto %s ĵus registriĝis
|
|||
register_notify.text_3 = Se iu alia kreis ĉi tiun konton anstataŭ vi, bonvolu <a href="%s">ŝanĝi vian pasvorton</a> tuj.
|
||||
release.new.subject = %s en %s eldoniĝis
|
||||
view_it_on = Vidu ĝin ĉe %s
|
||||
register_notify.text_2 = Vi nun povas saluti per la uzantonomo: %s.
|
||||
register_notify.text_2 = Vi povas saluti per la uzantonomo: %s
|
||||
team_invite.text_1 = %[1]s invitis vin aliĝi grupon %[2]s en organizaĵo %[3]s.
|
||||
reset_password.title = %s, vi petis rehavigon de via konto
|
||||
repo.collaborator.added.text = Vi aldoniĝis kiel kunlaboranto de deponejo:
|
||||
|
@ -475,6 +506,13 @@ issue.action.push_n = <b>@%[1]s</b> puŝis %[3]d enmetojn al %[2]s
|
|||
activate_account = Bonvolu aktivigi vian konton
|
||||
activate_account.title = %s, bonvolu aktivigi vian konton
|
||||
activate_account.text_2 = Bonvolu klaki la jenan ligilon por aktivigi vian konton antaŭ <b>%s</b>:
|
||||
primary_mail_change.text_1 = La ĉefa retpoŝtadreso de via konto ĵus ŝanĝiĝis en %[1]s. Tio volas diri ke ĉi tiu retpoŝtadreso ne ricevos plu sciigojn pri via konto.
|
||||
totp_disabled.subject = TOTP ĵus malaktiviĝis
|
||||
password_change.subject = Via pasvorto ŝanĝiĝis
|
||||
password_change.text_1 = La pasvorto de via konto ĵus ŝanĝiĝis.
|
||||
primary_mail_change.subject = Via ĉefa retpoŝtadreso ŝanĝiĝis
|
||||
totp_disabled.text_1 = La tempobazita unufoja pasvorto (TOTP) en via konto ĵus malaktiviĝis.
|
||||
admin.new_user.text = Bonvolu <a href="%s">klaki ĉi tie</a> por konduki ĉi tiun uzanton el la administranta agordilo.
|
||||
|
||||
[form]
|
||||
TeamName = Gruponomo
|
||||
|
@ -559,7 +597,7 @@ yes = Jes
|
|||
[settings]
|
||||
applications = Programoj
|
||||
password = Pasvorto
|
||||
twofa_disabled = Duobla aŭtentikigo malŝaltita.
|
||||
twofa_disabled = Duobla aŭtentikigo malaktivigita.
|
||||
appearance = Aspekto
|
||||
repos = Deponejoj
|
||||
delete = Forigi konton
|
||||
|
@ -574,11 +612,11 @@ account_link = Ligitaj kontoj
|
|||
organization = Organizaĵoj
|
||||
public_profile = Publika profilo
|
||||
openid_desc = OpenID povigas vin utiligi foran servilon por aŭtentikigo.
|
||||
twofa_disable_note = Vi povas malŝalti duoblan aŭtentikigon, laŭbezone.
|
||||
twofa_disable_note = Vi povas malaktivigi duoblan aŭtentikigon, laŭbezone.
|
||||
security = Sekureco
|
||||
account = Konto
|
||||
ssh_gpg_keys = SSH / GPG-ŝlosiloj
|
||||
twofa_disable = Malŝalti duoblan aŭtentikigon
|
||||
twofa_disable = Malaktivigi duoblan aŭtentikigon
|
||||
twofa_enroll = Ŝalti duoblan aŭtentikigon
|
||||
orgs = Mastrumi organizaĵojn
|
||||
blocked_users = Blokitaj uzantoj
|
||||
|
@ -647,7 +685,7 @@ update_user_avatar_success = Profilbildo de uzanto ĝisdatigita.
|
|||
manage_oauth2_applications = Mastrumi OAuth2-programojn
|
||||
activations_pending = Atendas konfirmiĝon
|
||||
primary = Ĉefa
|
||||
ssh_disabled = SSH malŝaltita
|
||||
ssh_disabled = SSH malaktivigita
|
||||
update_avatar_success = Via profilbildo konserviĝis.
|
||||
keep_email_private = Kaŝi retpoŝtadreson
|
||||
manage_openid = Mastrumi OpenID-adresojn
|
||||
|
@ -813,4 +851,30 @@ npm.details.tag = Etikedo
|
|||
|
||||
|
||||
[search]
|
||||
search = Serĉi...
|
||||
search = Serĉi...
|
||||
regexp = RegEsp
|
||||
milestone_kind = Serĉi celojn...
|
||||
code_search_by_git_grep = Nunaj rezultoj de kodoserĉo estas provizitaj de "git grep". Eble estas plibonaj rezultoj se la retejestro aktivigas la indeksilon de kodo.
|
||||
code_search_unavailable = Kodoserĉo ne haveblas nune. Bonvolu kontakti la retejestron.
|
||||
package_kind = Serĉi pakojn...
|
||||
type_tooltip = Serĉotipo
|
||||
user_kind = Serĉi uzantojn...
|
||||
fuzzy_tooltip = Inkluzivas rezultojn proksime kongruantajn kun la serĉoterminoj
|
||||
repo_kind = Serĉi deponejojn...
|
||||
org_kind = Serĉi organizaĵojn...
|
||||
code_kind = Serĉi kodon...
|
||||
project_kind = Serĉi projektojn...
|
||||
team_kind = Serĉi teamojn...
|
||||
keyword_search_unavailable = Serĉo per ŝlosilvortoj ne haveblas nune. Bonvolu kontakti la retejestron.
|
||||
union = Ŝlosilvortoj
|
||||
union_tooltip = Inkluzivas rezultojn kongruantajn kun la ajnaj blankaspacitaj ŝlosilvortoj
|
||||
commit_kind = Serĉi enmetojn...
|
||||
no_results = Ne trovis kongruantajn rezultojn.
|
||||
exact = Ĝusta
|
||||
exact_tooltip = Inkluzivas nur rezultojn kongruantajn kun la ĝustaj serĉoterminoj
|
||||
issue_kind = Serĉi erarojn...
|
||||
regexp_tooltip = Interpretas la serĉoterminoj kiel regulesprimo
|
||||
fuzzy = Svaga
|
||||
branch_kind = Serĉi disbranĉigojn...
|
||||
runner_kind = Serĉi rulantojn...
|
||||
pull_kind = Serĉi tirpetojn...
|
|
@ -1598,9 +1598,9 @@ issues.no_content=No se ha proporcionado una descripción.
|
|||
issues.close=Cerrar incidencia
|
||||
issues.comment_pull_merged_at=commit fusionado %[1]s en %[2]s %[3]s
|
||||
issues.comment_manually_pull_merged_at=commit manualmente fusionado %[1]s en %[2]s %[3]s
|
||||
issues.close_comment_issue=Comentar y cerrar
|
||||
issues.close_comment_issue=Cerrar con comentario
|
||||
issues.reopen_issue=Reabrir
|
||||
issues.reopen_comment_issue=Comentar y reabrir
|
||||
issues.reopen_comment_issue=Reabrir con comentario
|
||||
issues.create_comment=Comentar
|
||||
issues.closed_at=`cerró esta incidencia <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||
issues.reopened_at=`reabrió esta incidencia <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||
|
@ -2431,7 +2431,7 @@ settings.require_signed_commits_desc=Rechazar push en esta rama si los commits n
|
|||
settings.protect_branch_name_pattern=Patrón de nombre de ramas protegidas
|
||||
settings.protect_patterns=Patrones
|
||||
settings.protect_protected_file_patterns=Patrones de archivos protegidos (separados con punto y coma ';')
|
||||
settings.protect_protected_file_patterns_desc=No está permitido cambiar archivos directamente incluso si el usuario tiene permiso para agregar, editar o borrar archivos en esta rama. Múltiples patrones pueden separarse usando punto y coma (';'). Refvisa la documentación de <a href='%s'>github.com/gobwas/glob</a> para la sintaxis de patrones. Ejemplos: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
|
||||
settings.protect_protected_file_patterns_desc=No está permitido cambiar archivos directamente incluso si el usuario tiene permiso para agregar, editar o borrar archivos en esta rama. Múltiples patrones pueden separarse usando punto y coma (';'). Refvisa la documentación de <a href='%s'>%s</a> para la sintaxis de patrones. Ejemplos: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
|
||||
settings.protect_unprotected_file_patterns=Patrones de archivos sin protección (separados con punto y coma ";")
|
||||
settings.protect_unprotected_file_patterns_desc=Los archivos sin protección se pueden cambiar directamente si el usuario tiene acceso de escritura, evitando la restricción push. Múltiples patrones pueden separarse usando punto y coma (';'). Vea la documentación de <a href='%[1]s'>%[2]s</a> para la sintaxis de patrones. Ejemplos: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
|
||||
settings.add_protected_branch=Activar protección
|
||||
|
@ -3770,6 +3770,7 @@ variables.id_not_exist = Variable con id %d no existe.
|
|||
type-1.display_name=Proyecto individual
|
||||
type-2.display_name=Proyecto repositorio
|
||||
type-3.display_name=Proyecto de organización
|
||||
deleted.display_name = Proyecto borrado
|
||||
|
||||
[git.filemode]
|
||||
changed_filemode=%[1]s → %[2]s
|
||||
|
@ -3807,4 +3808,8 @@ exact = Exacto
|
|||
exact_tooltip = Incluir sólo los resultados que corresponden al término de búsqueda exacto
|
||||
issue_kind = Buscar incidencias…
|
||||
fuzzy = Difusa
|
||||
runner_kind = Buscar ejecutores…
|
||||
runner_kind = Buscar ejecutores…
|
||||
|
||||
[markup]
|
||||
filepreview.lines = Líneas %[1]d a %[2]d en %[3]s
|
||||
filepreview.line = Línea %[1]d en %[2]s
|
|
@ -15,9 +15,9 @@ page=صفحه
|
|||
template=قالب
|
||||
language=زبان
|
||||
notifications=اعلانها
|
||||
active_stopwatch=فعال کردن ثبت زمان
|
||||
active_stopwatch=فعال کردن ردیاب زمان
|
||||
create_new=ایجاد…
|
||||
user_profile_and_more=پروفایل و تنظیمات…
|
||||
user_profile_and_more=نمایه و تنظیمات…
|
||||
signed_in_as=ورود به عنوان
|
||||
toc=فهرست محتویات
|
||||
licenses=گواهینامه ها
|
||||
|
@ -26,11 +26,11 @@ return_to_forgejo=بازگشت به Forgejo
|
|||
username=نام کاربری
|
||||
email=نشانی رایانامه
|
||||
password=رمز عبور
|
||||
access_token=ژتون دسترسی
|
||||
access_token=توکن دسترسی
|
||||
re_type=تأیید گذرواژه
|
||||
captcha=کپچا
|
||||
twofa=احراز هویت دو مرحلهای
|
||||
twofa_scratch=کد احراز هویت
|
||||
twofa_scratch=کد احراز هویت دو محله ای
|
||||
passcode=رمز عبور
|
||||
|
||||
|
||||
|
@ -40,7 +40,7 @@ mirror=قرینه
|
|||
new_repo=مخزن جدید
|
||||
new_migrate=انتقال جدید
|
||||
new_mirror=آینه جدید
|
||||
new_fork=انشعاب مخزن جدید
|
||||
new_fork=انشعاب جدید از مخزن
|
||||
new_org=سازمان جدید
|
||||
new_project=پروژه جدید
|
||||
manage_org=مدیریت سازمانها
|
||||
|
@ -118,7 +118,21 @@ unpin = حذف سنجاق
|
|||
locked = قفل شده
|
||||
copy_hash = رونوشت هش
|
||||
unknown = نامشخص
|
||||
copy_type_unsupported = این نوع از فایل نمیتواند رونوشت شود.
|
||||
copy_type_unsupported = این نوع از فایل نمیتواند رونوشت شود
|
||||
webauthn_insert_key = کلید امنیتی خود را وارد کنید
|
||||
webauthn_sign_in = دکمۀ روی کلید امنیتی را فشار دهید. اگر کلید امنیتی شما دکمهای ندارد، آن را دوباره وارد کنید.
|
||||
webauthn_use_twofa = از یک کد دومرحلهای از تلفنتان استفاده کنید
|
||||
webauthn_error = کلید امنیتی شما نتوانست خوانده شود.
|
||||
more_items = موارد بیشتر
|
||||
webauthn_error_duplicated = کلید امنیتی برای این درخواست مجاز نیست. لطفاً مطمئن شوید که این کلید در حال حاضر ثبت نشده است.
|
||||
webauthn_error_timeout = مهلت زمانی قبل از اینکه کلید شما خوانده شود تمام شد. لطفاً این صفحه را تازهسازی کرده و مجدد تلاش کنید.
|
||||
new_org.link = سازمان جدید
|
||||
new_org.title = سازمان جدید
|
||||
new_migrate.link = مهاجرت جدید
|
||||
webauthn_error_empty = شما باید یک نام برای این کلید انتخاب کنید.
|
||||
new_repo.title = مخزن جدید
|
||||
new_migrate.title = مهاجرت جدید
|
||||
new_repo.link = مخزن جدید
|
||||
|
||||
[aria]
|
||||
|
||||
|
@ -204,7 +218,7 @@ offline_mode.description=غیر فعال کردن شبکه های شخص ثال
|
|||
disable_gravatar=غیر فعال کردن Gravatar
|
||||
disable_gravatar.description=غیر فعال کردن کلیک و منابع آواتار شخص ثالث. مگر در مواردی که کاربر محلی بارگزاری آواتار پیش فرض استفاده خواهد شد.
|
||||
federated_avatar_lookup=فعال سازی آواتار مشترک
|
||||
federated_avatar_lookup.description=مراجعه مشترک آواتار با استفاده از Libravatar را قادر می سازد.
|
||||
federated_avatar_lookup.description=پیدا کردن آواتار با استفاده از Libravatar.
|
||||
disable_registration=غیرفعالکردن خود ثبت نامی
|
||||
disable_registration.description=غیرفعال کردن ثبت نام کاربر. تنها مدیر ها قادر خواهند بود حساب کاربری جدید اضافه کنند.
|
||||
allow_only_external_registration.description=اجازه ثبت نام فقط از طریق خدمات خارجی
|
||||
|
@ -594,7 +608,7 @@ ssh_helper=<strong>آیا نمی دانید چگونه؟</strong>راهنمای
|
|||
gpg_helper=<strong>به کمک نیاز دارید؟</strong> نگاهی به در GitHub را راهنمای <a href="%s">مورد GPG</a> است.
|
||||
add_new_key=اضافه کردن کلید SSH
|
||||
add_new_gpg_key=اضافه کردن کلید GPG
|
||||
key_content_ssh_placeholder=معمولا با 'ssh-ed25519', 'ssh-rsa', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com', یا 'sk-ssh-ed25519@openssh.com' شروع میشود.
|
||||
key_content_ssh_placeholder=معمولا با 'ssh-ed25519', 'ssh-rsa', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com', یا 'sk-ssh-ed25519@openssh.com' شروع میشود.
|
||||
key_content_gpg_placeholder=با عبارت -----BEGIN PGP PUBLIC KEY BLOCK----- شروع میشود
|
||||
add_new_principal=یک کلید اصلی اضافه کنید
|
||||
ssh_key_been_used=این کلید SSH پیش از این به سرور افزوده شده است.
|
||||
|
@ -667,7 +681,7 @@ manage_oauth2_applications=مدیریت برنامههای OAuth2
|
|||
edit_oauth2_application=ویرایش برنامه OAuth2
|
||||
oauth2_applications_desc=برنامههای OAuth2 احراز هویت برنامه های شخص ثالث را با بستری امن میسر میکند.
|
||||
remove_oauth2_application=حذف برنامه OAuth2
|
||||
remove_oauth2_application_desc=حذف برنامه OAuth2 دسترسی تمام برنامه های متصل با آن را از بین میبرد. آیا ادامه میدهید؟
|
||||
remove_oauth2_application_desc=حذف برنامه OAuth2 دسترسی تمام برنامه های متصل با آن را از بین میبرد. آیا ادامه میدهید؟
|
||||
remove_oauth2_application_success=برنامه حذف شده است.
|
||||
create_oauth2_application=ساختن یک برنامه OAuth2 جدید
|
||||
create_oauth2_application_button=ایجاد برنامه
|
||||
|
@ -1440,7 +1454,7 @@ wiki.page=صفحه
|
|||
wiki.filter_page=صافی صفحه
|
||||
wiki.new_page=صفحه
|
||||
wiki.default_commit_message=نوشتن متنی پیرامون بهروزرسانی این صفحه (اختیاری).
|
||||
wiki.save_page=نوشتن متنی پیرامون بهروزرسانی این صفحه (اختیاری).
|
||||
wiki.save_page=ذخیره صفحه
|
||||
wiki.last_commit_info=%s این صفحه %s را ویرایش کرده است
|
||||
wiki.edit_page_button=ویرایش
|
||||
wiki.new_page_button=صفحه جدید
|
||||
|
@ -2633,13 +2647,31 @@ runners.task_list.commit=کامیت
|
|||
runners.status.active=فعال
|
||||
|
||||
runs.commit=کامیت
|
||||
variables.edit = تغییر متغیر
|
||||
variables.deletion.success = متغیر حذف شد.
|
||||
variables.deletion = حذف متغیر
|
||||
variables.creation.success = متغیر "%s" ایجاد شد.
|
||||
variables = متغیرها
|
||||
variables.management = مدیریت متغیرها
|
||||
variables.update.failed = عدم موفقیت در تغییر متغیر
|
||||
variables.update.success = تغییر متغیر با موفقیت انجام شد.
|
||||
variables.creation = افزودن متغیر
|
||||
variables.none = هیچ متغیری هنوز وجود ندارد.
|
||||
|
||||
|
||||
|
||||
|
||||
[projects]
|
||||
type-1.display_name = پروژه ی مستقل
|
||||
type-2.display_name = مخزن پروژه
|
||||
type-3.display_name = سازمان پروژه
|
||||
deleted.display_name = پاک کردن پروژه
|
||||
|
||||
[git.filemode]
|
||||
; Ordered by git filemode value, ascending. E.g. directory has "040000", normal file has "100644", …
|
||||
symbolic_link=پیوند نمادین
|
||||
executable_file = فایل اجرایی
|
||||
normal_file = فایل معمولی
|
||||
changed_filemode = %[1] ها ← %[2] ها
|
||||
directory = پوشه
|
||||
|
||||
|
|
|
@ -52,7 +52,7 @@ organization=Organisaatio
|
|||
mirror=Peili
|
||||
new_repo=Uusi repo
|
||||
new_migrate=Uusi migraatio
|
||||
new_mirror=Uusi peilaus
|
||||
new_mirror=Uusi peilipalvelin
|
||||
new_fork=Uusi repositorio
|
||||
new_org=Uusi organisaatio
|
||||
new_project=Uusi projekti
|
||||
|
@ -147,13 +147,27 @@ value = Arvo
|
|||
rerun = Suorita uudelleen
|
||||
filter.clear = Tyhjennä suodattimet
|
||||
invalid_data = Virheellistä dataa: %v
|
||||
new_repo.title = Uusi repositorio
|
||||
new_org.title = Uusi organisaatio
|
||||
new_org.link = Uusi organisaatio
|
||||
new_repo.link = Uusi repositorio
|
||||
new_migrate.link = Uusi siirto
|
||||
rerun_all = Uudelleensuorita kaikki työt
|
||||
artifacts = Artifaktit
|
||||
confirm_delete_artifact = Oletko varma, että haluat poistaa artifaktin "%s" ?
|
||||
new_migrate.title = Uusi migraatio
|
||||
test = Testi
|
||||
concept_system_global = Globaali
|
||||
sign_in_with_provider = Kirjaudu %s-tilillä
|
||||
|
||||
[aria]
|
||||
footer.links = Linkit
|
||||
navbar = Navigaatiopalkki
|
||||
|
||||
[heatmap]
|
||||
less = Vähemmän
|
||||
more = Enemmän
|
||||
number_of_contributions_in_the_last_12_months = %s kontribuutiota viimeisimmän vuoden aikana
|
||||
|
||||
[editor]
|
||||
buttons.code.tooltip = Lisää koodia
|
||||
|
@ -161,6 +175,13 @@ buttons.link.tooltip = Lisää linkki
|
|||
buttons.mention.tooltip = Mainitse käyttäjä tai tiimi
|
||||
buttons.list.task.tooltip = Lisää tehtävälista
|
||||
buttons.disable_monospace_font = Poista tasalevyinen fontti käytöstä
|
||||
buttons.heading.tooltip = Lisää otsikko
|
||||
buttons.bold.tooltip = Lisää lihavoitua tekstiä
|
||||
buttons.italic.tooltip = Lisää kursivoitua tekstiä
|
||||
buttons.list.unordered.tooltip = Lisää järjestämätön lista
|
||||
buttons.list.ordered.tooltip = Lisää numeroitu lista
|
||||
buttons.switch_to_legacy.tooltip = Käytä vanhentunutta tekstieditoria
|
||||
buttons.indent.tooltip = Sisennä yhden tason verran
|
||||
|
||||
[filter]
|
||||
string.asc = A - Ö
|
||||
|
@ -172,6 +193,7 @@ missing_csrf=Virheellinen pyyntö: CSRF-tunnusta ei ole olemassa
|
|||
invalid_csrf=Virheellinen pyyntö: Virheellinen CSRF-tunniste
|
||||
not_found=Kohdetta ei löytynyt.
|
||||
network_error=Verkkovirhe
|
||||
server_internal = Palvelinvirhe
|
||||
|
||||
[startpage]
|
||||
app_desc=Kivuton, itsehostattu Git-palvelu
|
||||
|
@ -188,8 +210,8 @@ install=Asennus
|
|||
title=Alkuperäiset asetukset
|
||||
docker_helper=Jos ajat Forgejoa Dockerin sisällä, lue <a target="_blank" rel="noopener noreferrer" href="%s">ohjeet</a> ennen minkään asetuksen muuttamista.
|
||||
require_db_desc=Forgejo tarvitsee toimiakseen MySQL, PostgreSQL, SQLite3 tai TiDB (MySQL protokolla) tietokannan.
|
||||
db_title=Tietokanta asetukset
|
||||
db_type=Tietokanta tyyppi
|
||||
db_title=Tietokanta-asetukset
|
||||
db_type=Tietokantatyyppi
|
||||
host=Isäntä
|
||||
user=Käyttäjätunnus
|
||||
password=Salasana
|
||||
|
@ -213,48 +235,48 @@ err_admin_name_is_invalid=Ylläpitäjän käyttäjätunnus on virheellinen
|
|||
general_title=Yleiset asetukset
|
||||
app_name=Sivuston otsikko
|
||||
app_name_helper=Voit syöttää yrityksesi nimen tähän.
|
||||
repo_path=Repon juuren polku
|
||||
repo_path=Repositorion juuren polku
|
||||
repo_path_helper=Muualla olevat git-repositoriot tullaan tallentamaan tähän kansioon.
|
||||
lfs_path=Git LFS -juuripolku
|
||||
lfs_path_helper=Git LFS:n ylläpitämät tiedostot tullaan tallentamaan tähän hakemistoon. Jätä tyhjäksi kytkeäksesi toiminnon pois.
|
||||
run_user=Aja käyttäjänä
|
||||
domain=Palvelimen verkkotunnus
|
||||
ssh_port=SSH-palvelimen portti
|
||||
ssh_port_helper=Porttinumero, jossa SSH-palvelimesi kuuntelee. Jätä tyhjäksi kytkeäksesi pois.
|
||||
http_port=Forgejon HTTP-kuunteluportti
|
||||
ssh_port_helper=Porttinumero, jossa SSH-palvelimesi kuuntelee. Jätä tyhjäksi kytkeäksesi SSH-palvelimen pois päältä.
|
||||
http_port=HTTP-kuunteluportti
|
||||
http_port_helper=Portti, jossa Forgejon web-palvelin kuuntelee.
|
||||
app_url=Forgejon juuriosoite
|
||||
app_url=Juuriosoite
|
||||
app_url_helper=Juuriosoite HTTP(S)-klooniosoitteille ja sähköpostimuistutuksille.
|
||||
log_root_path=Lokin polku
|
||||
log_root_path=Lokitiedostojen polku
|
||||
log_root_path_helper=Lokitiedostot kirjoitetaan tähän kansioon.
|
||||
|
||||
optional_title=Valinnaiset asetukset
|
||||
email_title=Sähköpostiasetukset
|
||||
smtp_addr=SMTP isäntä
|
||||
smtp_port=SMTP portti
|
||||
smtp_port=SMTP-portti
|
||||
smtp_from=Lähetä sähköpostit osoitteella
|
||||
smtp_from_helper=Sähköpostiosoite, jota Forgejo käyttää. Kirjoita osoite ”nimi” <email@example.com> -muodossa.
|
||||
mailer_user=SMTP-käyttäjätunnus
|
||||
mailer_password=SMTP-salasana
|
||||
register_confirm=Vaadi sähköpostin vahvistaminen rekisteröintiin
|
||||
mail_notify=Ota käyttöön sähköpostiilmoitukset
|
||||
server_service_title=Palvelin ja kolmansien osapuolten palveluiden asetukset
|
||||
register_confirm=Vaadi sähköpostinvahvistus rekisteröinnin edellytykseksi
|
||||
mail_notify=Ota sähköposti-ilmoitukset käyttöön
|
||||
server_service_title=Palvelimen ja kolmansien osapuolten palveluiden asetukset
|
||||
offline_mode=Ota käyttöön lokaali tila
|
||||
offline_mode.description=Poista kolmannen osapuolen sisällöstä jakeluverkot ja tarjoa kaikki resurssit paikallisesti.
|
||||
offline_mode.description=Poista kolmannen osapuolen sisällönjakeluverkot ja tarjoa kaikki resurssit paikallisesti.
|
||||
disable_gravatar=Poista Gravatar käytöstä
|
||||
disable_gravatar.description=Poista Gravatar ja kolmannen osapuolen avaratir käytöstä. Oletus-avatar näytetään, ellei käyttäjä ole ladannut omaansa.
|
||||
federated_avatar_lookup=Käytä ulkopuolisia profiilikuvia
|
||||
federated_avatar_lookup.description=Enable federated avatars lookup to use federated open source service based on libravatar.
|
||||
federated_avatar_lookup=Käytä federoituja profiilikuvia
|
||||
federated_avatar_lookup.description=Käytä Libravatar-palvelua profiilikuvien hakemiseen.
|
||||
disable_registration=Poista rekisteröinti käytöstä
|
||||
disable_registration.description=Poista käyttäjän itse-rekisteröinti, vain ylläpito voi luoda tilejä.
|
||||
allow_only_external_registration.description=Salli rekisteröinti vain ulkopuolisista palveluista
|
||||
openid_signin=Ota OpenID kirjautuminen käyttöön
|
||||
openid_signin.description=Ota käyttöön kirjautuminen OpenID:n kautta.
|
||||
openid_signup=Ota käyttöön OpenID itse-rekisteröinti
|
||||
openid_signup.description=Ota käyttöön OpenID-pohjainen käyttäjän itse-rekisteröinti.
|
||||
allow_only_external_registration.description=Käyttäjät voivat luoda uusia käyttäjiä vain erikseen konfiguroituja ulkoisia palveluja käyttäen.
|
||||
openid_signin=Ota OpenID-kirjautuminen käyttöön
|
||||
openid_signin.description=Salli OpenID:n kautta kirjautuminen.
|
||||
openid_signup=Ota OpenID-itserekisteröinti käyttöön
|
||||
openid_signup.description=Salli OpenID:n kautta rekisteröinti mikäli itserekisteröinti on käytössä.
|
||||
enable_captcha=Ota käyttöön CAPTCHA rekisteröityessä
|
||||
enable_captcha.description=Pakollinen captcha käyttäjän itse rekisteröityessä.
|
||||
require_sign_in_view=Vaadi sisäänkirjautuminen sivujen näkemiseksi
|
||||
enable_captcha.description=Vaadi CAPTCHA rekisteröinnin yhteydessä.
|
||||
require_sign_in_view=Vaadi sisäänkirjautuminen sisällön näkemiseksi
|
||||
admin_setting.description=Ylläpitotilin luominen on valinnaista. Ensimmäisestä rekisteröityneestä käyttäjästä tulee automaattisesti ylläpitäjä.
|
||||
admin_title=Ylläpitotilin asetukset
|
||||
admin_name=Ylläpitäjän käyttäjätunnus
|
||||
|
@ -262,20 +284,39 @@ admin_password=Salasana
|
|||
confirm_password=Varmista salasana
|
||||
admin_email=Sähköpostiosoite
|
||||
install_btn_confirm=Asenna Forgejo
|
||||
test_git_failed=Epäonnistui testata 'git' komentoa: %v
|
||||
sqlite3_not_available=Tämä Forgejo versio ei tue SQLite3. Lataa virallinen binääriversio kohteesta %s (ei 'gobuild' versio).
|
||||
test_git_failed=Komennon 'git' testaus ei onnistunut: %v
|
||||
sqlite3_not_available=Tämä Forgejo-versio ei tue SQLite3-ohjelmistoa. Lataa virallinen binääriversio kohteesta %s (ei 'gobuild'-versio).
|
||||
invalid_db_setting=Tietokanta-asetukset ovat väärin: %v
|
||||
invalid_repo_path=Repojen juuri polku on virheellinen: %v
|
||||
invalid_app_data_path=Sovelluksen datapolku on virheellinen: %v
|
||||
internal_token_failed=Sisäisen pääsymerkin luonti epäonnistui: %v
|
||||
save_config_failed=Asetusten tallentaminen epäonnistui: %v
|
||||
default_keep_email_private=Piilota sähköpostiosoitteet oletuksena
|
||||
default_keep_email_private.description=Piilota oletusarvoisesti uusien käyttäjätilien sähköpostiosoitteet.
|
||||
default_enable_timetracking=Ota ajan seuranta oletusarvoisesti käyttöön
|
||||
default_enable_timetracking.description=Ota käyttöön uusien repojen aikaseuranta oletusarvoisesti.
|
||||
default_keep_email_private.description=Piilota oletusarvoisesti uusien käyttäjätilien sähköpostiosoitteet estääksesi tietojen vuotamisen rekisteröinnin yhteydessä.
|
||||
default_enable_timetracking=Ota ajanseuranta oletusarvoisesti käyttöön
|
||||
default_enable_timetracking.description=Salli uusien repositorioiden aikaseurannan käyttöönotto oletusarvoisesti.
|
||||
no_reply_address=Piilotettu sähköpostin verkkotunnus
|
||||
no_reply_address_helper=Verkkotunnuksen nimi käyttäjille, joilla on piilotettu sähköpostiosoite. Esimerkiksi käyttäjätunnus 'joe' kirjataan Git nimellä 'joe@noreply.example.org' jos piilotettu sähköpostiosoite on asetettu 'noreply.example.org'.
|
||||
no_reply_address_helper=Verkkotunnuksen nimi käyttäjille, joilla on piilotettu sähköpostiosoite. Esimerkiksi käyttäjätunnus 'joe' kirjataan Git-palveluun nimellä 'joe@noreply.example.org' jos piilotetun sähköpostiosoitteen arvoksi on asetettu 'noreply.example.org'.
|
||||
password_algorithm=Salasanan hajautusalgoritmi
|
||||
enable_update_checker_helper_forgejo = Se tarkistaa tietyin väliajoin uusia Forgejo-versioita tutkimalla sen TXT DNS record -tietoja osoitteesta release.forgejo.org .
|
||||
invalid_admin_setting = Järjestelmänvalvojatilin asetukset eivät kelpaa: %v
|
||||
env_config_keys = Ympäristökonfiguraatio
|
||||
run_user_helper = Käyttöjärjestelmätason käyttäjänimi, jona Forgejo ajetaan. Huomaa, että kyseinen käyttäjä tarvitsee pääsyn repositorion juuripolkuun.
|
||||
env_config_keys_prompt = Seuraavat ympäristömuuttujat sisällytetään myös asetustiedostoonne:
|
||||
secret_key_failed = Salausavaimen generointi epäonnistui: %v
|
||||
default_allow_create_organization.description = Salli organisaatioiden luonti uusille käyttäjille oletuksena. Järjestelmänvalvojan tarvitsee antaa lupa luoda organisaatioita mikäli tämä asetus on pois päältä.
|
||||
config_location_hint = Tallennettujen asetusten sijainti:
|
||||
invalid_db_table = Tietokantataulu "%s" ei kelpaa: %v
|
||||
invalid_password_algorithm = Salasananhajautusalgoritmi ei kelpaa
|
||||
password_algorithm_helper = Aseta salasananhajautusalgoritmi. Eri algoritmeilla on erilaisia vaatimuksia ja vahvuuksia - argon2-algoritmi on erityisen turvallinen mutta vaatii paljon muistia ja voi näin ollen olla pienille järjestelmille soveltumaton.
|
||||
db_schema_helper = Jätä tyhjäksi käyttääksesi oletusarvoa ("public").
|
||||
run_user_not_match = Tämänhetkinen käyttäjänimi ei täsmää tiettynä käyttäjänä ajettavan käyttäjänimen kanssa: %s -> %s
|
||||
invalid_log_root_path = Lokitiedoston polku ei kelpaa: %v
|
||||
require_sign_in_view.description = Rajoita sisältö vain kirjautuneille. Vieraat pääsevät vain autentikaatiosivuille.
|
||||
allow_only_external_registration = Salli rekisteröinti vain ulkoisia palveluja käyttäen
|
||||
default_allow_create_organization = Salli organisaatioiden luonti oletuksena
|
||||
allow_dots_in_usernames = Salli pisteiden käyttö käyttäjänimissä. Ei vaikuta olemassaoleviin käyttäjiin.
|
||||
enable_update_checker = Ota päivitystentarkistus käyttöön
|
||||
|
||||
[home]
|
||||
uname_holder=Käyttäjätunnus tai sähköpostiosoite
|
||||
|
@ -316,6 +357,9 @@ user_no_results=Vastaavia käyttäjiä ei löytynyt.
|
|||
org_no_results=Ei löytynyt vastaavia organisaatioita.
|
||||
code_no_results=Hakuehtoasi vastaavaa lähdekoodia ei löytynyt.
|
||||
code_last_indexed_at=Viimeksi indeksoitu %s
|
||||
stars_one = %d tähti
|
||||
stars_few = %d tähteä
|
||||
relevant_repositories = Vain relevantit repositoriot näytetään, <a href="%s">näytä suodattamattomat tulokset</a>.
|
||||
|
||||
[auth]
|
||||
create_new_account=Rekisteröi tili
|
||||
|
@ -327,10 +371,10 @@ remember_me=Muista tämä laite
|
|||
forgot_password_title=Unohtuiko salasana
|
||||
forgot_password=Unohtuiko salasana?
|
||||
sign_up_now=Tarvitsetko tilin? Rekisteröidy nyt.
|
||||
confirmation_mail_sent_prompt=Uusi varmistussähköposti on lähetetty osoitteeseen <b>%s</b>, ole hyvä ja tarkista saapuneet seuraavan %s tunnin sisällä saadaksesi rekisteröintiprosessin valmiiksi.
|
||||
confirmation_mail_sent_prompt=Uusi varmistussähköposti on lähetetty osoitteeseen <b>%s</b>. Tarkista sähköpostisi ja seuraa saamaasi linkkiä seuraavan %s aikana saadaksesi rekisteröintiprosessin valmiiksi. Mikäli annettu sähköpostiosoite on väärin, voit kirjautua sisään ja pyytää uutta varmistussähköpostia toiseen osoitteeseen.
|
||||
must_change_password=Vaihda salasanasi
|
||||
allow_password_change=Vaadi käyttäjää vaihtamaan salasanansa (suositeltava)
|
||||
reset_password_mail_sent_prompt=Varmistussähköposti on lähetetty osoitteeseen <b>%s</b>. Tarkista saapuneet seuraavan %s tunnin sisällä saadaksesi tilin palauttamisen valmiiksi.
|
||||
reset_password_mail_sent_prompt=Varmistussähköposti on lähetetty osoitteeseen <b>%s</b>. Tarkista sähköpostisi ja seuraa annettua linkkiä seuraavan %s aikana saadaksesi tilin palauttamisen valmiiksi.
|
||||
active_your_account=Aktivoi tilisi
|
||||
account_activated=Tili on aktivoitu
|
||||
prohibit_login=Kirjautuminen estetty
|
||||
|
@ -372,6 +416,11 @@ authorize_application_description=Jos myönnät valtuuden, sovellus voi käyttä
|
|||
authorize_title=Valtuutatko "%s" pääsemään tilillesi?
|
||||
authorization_failed=Käyttöoikeuden varmistus epäonnistui
|
||||
sspi_auth_failed=SSPI todennus epäonnistui
|
||||
sign_up_successful = Käyttäjätili luotiin onnistuneesti. Tervetuloa!
|
||||
hint_login = Onko sinulla jo käyttäjätili? <a href="%s">Kirjaudu sisään!</a>
|
||||
hint_register = Tarvitsetko käyttäjätilin? <a href="%s">Rekisteröidy nyt.</a>
|
||||
sign_up_button = Rekisteröidy nyt.
|
||||
manual_activation_only = Ota yhteyttä järjestelmänvalvojaanne viimeistelläksesi aktivoinnin.
|
||||
|
||||
[mail]
|
||||
view_it_on=Näytä %s
|
||||
|
@ -1788,17 +1837,102 @@ runners.task_list.repository=Repo
|
|||
runners.task_list.commit=Commit
|
||||
|
||||
runs.commit=Commit
|
||||
status.success = Onnistunut
|
||||
status.unknown = Tuntematon
|
||||
status.waiting = Odotustilassa
|
||||
status.running = Käynnissä
|
||||
status.blocked = Estetty
|
||||
status.failure = Epäonnistunut
|
||||
status.cancelled = Peruttu
|
||||
status.skipped = Ohitettu
|
||||
runners.none = Testinajajia ei saatavilla
|
||||
runners.status.unspecified = Tuntematon
|
||||
runners.update_runner = Päivitä muutokset
|
||||
runners.edit_runner = Muokkaa testinajajaa
|
||||
runners.update_runner_success = Testinajaja päivitetty onnistuneesti
|
||||
runners.delete_runner_success = Testinajaja poistettu onnistuneesti
|
||||
runners.reset_registration_token = Uudelleenaseta rekisteröintiavain
|
||||
runs.scheduled = Ajastettu
|
||||
runs.status = Tila
|
||||
runs.empty_commit_message = (tyhjä commit-viesti)
|
||||
variables.deletion = Poista muuttuja
|
||||
runners.new_notice = Testinajajan aloitusohjeet
|
||||
workflow.dispatch.input_required = Arvo syötteelle "%s" vaadittu.
|
||||
runners.status.active = Aktiivinen
|
||||
runs.no_workflows.documentation = Katso lisätietoja Forgejo Actions -ohjelmistosta <a target="_blank" rel="noopener noreferrer" href="%s">dokumentaatiosta</a>.
|
||||
variables.description = Muuttujat asetetaan tietyille toiminnoille eikä niitä voida lukea muutoin.
|
||||
runners.labels = Tunnisteet
|
||||
runners.delete_runner_failed = Testinajajan poisto epäonnistui
|
||||
runners.delete_runner_header = Varmista testinajajan poisto
|
||||
runners.task_list.status = Tila
|
||||
runners.reset_registration_token_success = Testiajajan rekisteröintiavain uudelleenasetettu onnistuneesti
|
||||
variables.none = Muuttujia ei ole vielä määritelty.
|
||||
runners.id = Tunniste
|
||||
runners.status = Tila
|
||||
runners.task_list = Ajajan viimeisimmät tehtävät
|
||||
runners.task_list.no_tasks = Tehtäviä ei ole vielä määritelty.
|
||||
runners.last_online = Viimeisin käynnissäoloajankohta
|
||||
runners.runner_title = Testinajaja
|
||||
runners.task_list.done_at = Valmistunut ajankohtana
|
||||
runs.no_matching_online_runner_helper = Testiajajaa tunnisteella %s ei löytynyt
|
||||
runs.no_results = Ei tuloksia.
|
||||
runners.delete_runner = Poista testinajaja
|
||||
variables.deletion.description = Muuttujan poistaminen on lopullista eikä sitä voi peruuttaa. Jatketaanko?
|
||||
workflow.dispatch.invalid_input_type = Syötetyyppi "%s" ei kelpaa.
|
||||
workflow.dispatch.warn_input_limit = Näytetään vain ensimmäiset %d syötettä.
|
||||
runners.runner_manage_panel = Hallinnoi testinajajia
|
||||
variables = Muuttujat
|
||||
variables.management = Hallinnoi muuttujia
|
||||
variables.creation = Lisää muuttuja
|
||||
runs.no_workflows.quick_start = Etkö tiedä kuinka Forgejo Actions toimii? Katso <a target="_blank" rel="noopener noreferrer" href="%s" >aloitusohje</a>.
|
||||
runners.new = Luo uusi testinajaja
|
||||
runners.version = Versio
|
||||
runs.expire_log_message = Lokitiedostot on tyhjätty vanhenemisen vuoksi.
|
||||
runners.delete_runner_notice = Mikäli testinajajalla on keskeneräinen tehtävä, se pysäytetään ja merkitään epäonnistuneeksi. Tämä saattaa johtaa testinajoprosessin rikkoutumiseen.
|
||||
runners.update_runner_failed = Testinajajan päivitys epäonnistui
|
||||
variables.deletion.success = Muuttuja poistettu.
|
||||
variables.edit = Muokkaa muuttujaa
|
||||
variables.creation.success = Muuttuja "%s" lisätty.
|
||||
variables.deletion.failed = Muuttujan poisto epäonnistui.
|
||||
variables.creation.failed = Muuttujan lisäys epäonnistui.
|
||||
variables.update.failed = Muuttujan muokkaus epäonnistui.
|
||||
variables.update.success = Muuttuja muokattu.
|
||||
variables.id_not_exist = Muuttujaa tunnisteella %d ei ole olemassa.
|
||||
|
||||
|
||||
|
||||
|
||||
[projects]
|
||||
type-1.display_name = Yksittäinen projekti
|
||||
deleted.display_name = Poistettu projekti
|
||||
|
||||
[git.filemode]
|
||||
changed_filemode = %[1]s -> %[2]s
|
||||
executable_file = Ajettava tiedosto
|
||||
symbolic_link = Symbolinen linkki
|
||||
normal_file = Tavallinen tiedosto
|
||||
directory = Kansio
|
||||
; Ordered by git filemode value, ascending. E.g. directory has "040000", normal file has "100644", …
|
||||
|
||||
|
||||
|
||||
[search]
|
||||
search = Hae...
|
||||
type_tooltip = Haun tyyppi
|
||||
type_tooltip = Haun tyyppi
|
||||
fuzzy_tooltip = Sisällytä tulokset, jotka myös melkein vastaavat hakusanaa
|
||||
regexp = RegExp
|
||||
regexp_tooltip = Tulkitse hakutermi säännöllisenä lausekkeena
|
||||
package_kind = Etsi paketteja...
|
||||
exact = Täsmällinen
|
||||
exact_tooltip = Sisällytä vain täsmälleen hakusanaa vastaavat tulokset
|
||||
team_kind = Etsi ryhmiä...
|
||||
code_kind = Etsi koodia...
|
||||
code_search_unavailable = Koodihaku ei tällä hetkellä ole saatavilla. Ota yhteyttä järjestelmänvalvojaan.
|
||||
union = yhdistelmähaku
|
||||
union_tooltip = Sisällytä minkä tahansa yksittäisen avainsanan kanssa täsmänneet tulokset
|
||||
project_kind = Etsi projekteja...
|
||||
no_results = Hakutuloksia ei löytynyt.
|
||||
keyword_search_unavailable = Avainsanahaku ei tällä hetkellä ole saatavilla. Ota yhteyttä järjestelmänvalvojaan.
|
||||
repo_kind = Etsi repositorioita...
|
||||
user_kind = Etsi käyttäjiä...
|
||||
org_kind = Etsi organisaatioita...
|
|
@ -1883,7 +1883,7 @@ issues.dependency.no_permission_n = Wala kang pahintulot na basahin ang mga %d d
|
|||
issues.dependency.removed_dependency = `nagtanggal ng dependency %s`
|
||||
settings.mirror_settings.push_mirror.add = Magdagdag ng salaming pangtulak
|
||||
settings.mirror_settings.last_update = Huling nabago
|
||||
settings.units.add_more = Magdagdag ng higit pa...
|
||||
settings.units.add_more = Paganahin ang higit pa
|
||||
activity.closed_issues_count_n = Mga saradong isyu
|
||||
activity.new_issues_count_1 = Bagong isyu
|
||||
settings.branches.add_new_rule = Magdagdag ng bagong patakaran
|
||||
|
@ -2008,6 +2008,8 @@ settings.mirror_settings.docs.disabled_push_mirror.info = Na-disable ng iyong ta
|
|||
settings.mirror_settings.docs.disabled_push_mirror.instructions = I-set up ang iyong proyekto na awtomatikong hilahin ang mga commit, tag at branch mula sa isa pang repositoryo.
|
||||
settings.mirror_settings.docs.disabled_pull_mirror.instructions = I-set up ang iyong proyekto na awtomatikong magtulak ng mga commit, tag at branch sa isa pang repositoryo. Na-disable ng iyong tagapangasiwa ng site ang mga pull mirror.
|
||||
activity.overview = Pangkalahatang Ideya
|
||||
mirror_public_key = Pampublikong susi ng SSH
|
||||
milestones.cancel =
|
||||
|
||||
[search]
|
||||
commit_kind = Maghanap ng mga commit...
|
||||
|
|
|
@ -207,7 +207,7 @@ string.desc=Z - A
|
|||
|
||||
[error]
|
||||
occurred=Une erreur s’est produite
|
||||
report_message=Si vous pensez qu'il s'agit d'un bug Forgejo, veuillez consulter notre board <a href="%s" target="_blank">Codeberg</a> ou ouvrir un nouveau ticket si nécessaire.
|
||||
report_message=Si vous pensez qu'il s'agit d'un bug Forgejo, veuillez consulter les tickets de <a href="%s" target="_blank">Codeberg</a> ou ouvrir un nouveau ticket si nécessaire.
|
||||
missing_csrf=Requête incorrecte : aucun jeton CSRF présent
|
||||
invalid_csrf=Requête incorrecte : jeton CSRF invalide
|
||||
not_found=La cible n'a pu être trouvée.
|
||||
|
@ -223,7 +223,7 @@ platform_desc=Forgejo est confirmé fonctionner sur des systèmes d'exploitation
|
|||
lightweight=Léger
|
||||
lightweight_desc=Forgejo utilise peu de ressources. Il peut même tourner sur un Raspberry Pi très bon marché. Économisez l'énergie de vos serveurs !
|
||||
license=Open Source
|
||||
license_desc=Toutes les sources sont sur <a target="_blank" rel="noopener noreferrer" href="%[1]s">Forgejo</a> ! Rejoignez-nous et <a target="_blank" rel="noopener noreferrer" href="https ://codeberg.org/forgejo/forgejo">contribuez</a> à rendre ce projet encore meilleur !
|
||||
license_desc=Toutes les sources sont sur <a target="_blank" rel="noopener noreferrer" href="%[1]s">Forgejo</a> ! Rejoignez-nous et <a target="_blank" rel="noopener noreferrer" href="https ://codeberg.org/forgejo/forgejo">contribuez</a> à rendre ce projet encore meilleur. Ne craignez pas de devenir un·e contributeur·trice !
|
||||
|
||||
[install]
|
||||
install=Installation
|
||||
|
@ -478,11 +478,12 @@ sign_up_button = Creation d'un compte.
|
|||
hint_login = Vous avez déjà un compte ? <a href="%s">Connectez vous maintenant !</a>
|
||||
back_to_sign_in = Retour à la connexion
|
||||
sign_in_openid = Continuer avec OpenID
|
||||
unauthorized_credentials = Vos identifiants sont invalides ou ont expiré. Réessayez votre commande, ou allez à %s pour plus d'informations
|
||||
|
||||
[mail]
|
||||
view_it_on=Voir sur %s
|
||||
reply=ou répondez directement à ce courriel
|
||||
link_not_working_do_paste=Le lien ne fonctionne pas ? Essayez de le copier-coller dans barre de navigation de votre navigateur.
|
||||
link_not_working_do_paste=Le lien ne fonctionne pas ? Essayez de le copier-coller dans la barre de navigation de votre navigateur.
|
||||
hi_user_x=Bonjour <b>%s</b>,
|
||||
|
||||
activate_account=Veuillez activer votre compte
|
||||
|
@ -545,19 +546,24 @@ team_invite.text_1=%[1]s vous a invité à rejoindre l’équipe %[2]s dans l’
|
|||
team_invite.text_2=Veuillez cliquer sur le lien suivant pour rejoindre l'équipe :
|
||||
team_invite.text_3=Remarque : Cette invitation était destinée à %[1]s. Si vous n’attendiez pas cette invitation, vous pouvez ignorer ce courriel.
|
||||
admin.new_user.user_info = Information à propos de l'utilisateur
|
||||
admin.new_user.text = Veuillez <a href="%s">clicker ici</a> afin de gérer l'utilisateur depuis la page d'administration.
|
||||
admin.new_user.text = Veuillez <a href="%s">cliquer ici</a> afin de gérer l'utilisateur depuis la page d'administration.
|
||||
admin.new_user.subject = L'utilisateur %s vient de créer un compte
|
||||
reset_password.text_1 = Le mot de passe de votre compte vient d'être modifié.
|
||||
password_change.subject = Votre mot de passe a été modifié
|
||||
password_change.text_1 = Le mot de passe de votre compte vient d'être modifié.
|
||||
primary_mail_change.subject = Votre courriel principal a été modifié
|
||||
primary_mail_change.text_1 = Le courriel principal de votre compte vient d'être modifié en %[1]s.
|
||||
primary_mail_change.text_1 = Le courriel principal de votre compte vient d'être modifié en %[1]s. Cela signifie que cette adresse e-mail ne recevra plus de notifications par e-mail pour votre compte.
|
||||
totp_disabled.no_2fa = Il n'y a plus de méthodes 2FA configurées ce qui signifie qu'il n'est plus nécessaire d'utiliser 2FA pour se connecter à votre compte.
|
||||
totp_disabled.text_1 = Mot de passe à usage unique basé sur le temps (TOTP) vient d'être désactivé pour votre compte.
|
||||
removed_security_key.subject = Une clé de sécurité a été supprimée
|
||||
totp_disabled.subject = TOTP a été désactivé
|
||||
removed_security_key.no_2fa = Il n'y a plus de méthodes 2FA configurées ce qui signifie qu'il n'est plus nécessaire d'utiliser 2FA pour se connecter à votre compte.
|
||||
account_security_caution.text_1 = Si vous êtes à l’origine de cette action, vous pouvez ignorer ce courriel.
|
||||
totp_enrolled.text_1.no_webauthn = Vous venez d'activer TOTP pour votre compte. Cela signifie que pour toutes les prochaines connexions à votre compte, vous devrez utiliser TOTP comme méthode 2FA.
|
||||
totp_enrolled.subject = Vous avez activé TOTP comme méthode 2FA
|
||||
totp_enrolled.text_1.has_webauthn = Vous venez d'activer TOTP pour votre compte. Cela signifie que pour toutes les prochaines connexions à votre compte, vous pouvez utiliser TOTP comme méthode 2FA ou l'une de vos clés de sécurité.
|
||||
removed_security_key.text_1 = La clé de sécurité « %[1]s » vient d'être supprimée de votre compte.
|
||||
account_security_caution.text_2 = S'il ne s'agissait pas de vous, votre compte est compromis. Veuillez contacter les administrateurs du site.
|
||||
|
||||
[modal]
|
||||
yes=Oui
|
||||
|
@ -823,7 +829,7 @@ add_new_email=Ajouter une nouvelle adresse e-mail
|
|||
add_new_openid=Ajouter une nouvelle URI OpenID
|
||||
add_email=Ajouter une adresse courriel
|
||||
add_openid=Ajouter une URI OpenID
|
||||
add_email_confirmation_sent=Un e-mail de confirmation a été envoyé à "%s". Veuillez vérifier votre boîte de réception dans les %s suivants pour confirmer votre adresse e-mail.
|
||||
add_email_confirmation_sent=Un courriel de confirmation a été envoyé à « %s ». Pour confirmer votre adresse de courriel, veuillez vérifier votre boîte de réception et suivre le lien indiqué dans les prochains %s.
|
||||
add_email_success=La nouvelle adresse e-mail a été ajoutée.
|
||||
email_preference_set_success=L'e-mail de préférence a été défini avec succès.
|
||||
add_openid_success=La nouvelle adresse OpenID a été ajoutée.
|
||||
|
@ -1033,7 +1039,7 @@ user_unblock_success = Cet utilisateur a été débloqué avec succès.
|
|||
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_description = Afficher un bouton "Ajouter en plus..." pour les dépôts qui n'ont pas toutes les unités disponibles activées.
|
||||
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.
|
||||
|
@ -1042,6 +1048,8 @@ pronouns = Pronoms
|
|||
pronouns_unspecified = Non spécifiés
|
||||
language.title = Langue par défaut
|
||||
keep_activity_private.description = Vous seul pourrez voir votre <a href="%s">activité publique</a>, ainsi que les administrateurs de l'instance.
|
||||
language.localization_project = Aidez-nous à traduire Forgejo dans votre langue ! <a href="%s">En savoir plus</a>.
|
||||
language.description = Cette langue sera enregistrée dans votre compte et utilisée comme langue par défaut après votre connexion.
|
||||
|
||||
[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>
|
||||
|
@ -1421,7 +1429,7 @@ commitstatus.failure=Échec
|
|||
commitstatus.pending=En attente
|
||||
commitstatus.success=Succès
|
||||
|
||||
ext_issues=Accès aux tickets externes
|
||||
ext_issues=Tickets externes
|
||||
ext_issues.desc=Lien vers un gestionnaire de tickets externe.
|
||||
|
||||
projects=Projets
|
||||
|
@ -1602,9 +1610,9 @@ issues.no_content=Sans contenu.
|
|||
issues.close=Fermer le ticket
|
||||
issues.comment_pull_merged_at=a fusionné la révision %[1]s dans %[2]s %[3]s
|
||||
issues.comment_manually_pull_merged_at=a fusionné manuellement la révision %[1]s dans %[2]s %[3]s
|
||||
issues.close_comment_issue=Commenter et fermer
|
||||
issues.close_comment_issue=Fermer avec le commentaire
|
||||
issues.reopen_issue=Rouvrir
|
||||
issues.reopen_comment_issue=Commenter et réouvrir
|
||||
issues.reopen_comment_issue=Réouvrir avec le commentaire
|
||||
issues.create_comment=Commenter
|
||||
issues.closed_at=`a fermé ce ticket <a id="%[1]s" href="#%[1]s">%[2]s</a>.`
|
||||
issues.reopened_at=`a réouvert ce ticket <a id="%[1]s" href="#%[1]s">%[2]s</a>.`
|
||||
|
@ -1993,7 +2001,7 @@ signing.wont_sign.commitssigned=La fusion ne sera pas signée car ses révisions
|
|||
signing.wont_sign.approved=La fusion ne sera pas signée car la demande d'ajout n'a pas été approuvée.
|
||||
signing.wont_sign.not_signed_in=Vous n'êtes pas connecté.
|
||||
|
||||
ext_wiki=Accès au wiki externe
|
||||
ext_wiki=Wiki externe
|
||||
ext_wiki.desc=Lier un wiki externe.
|
||||
|
||||
wiki=Wiki
|
||||
|
@ -2067,7 +2075,7 @@ activity.unresolved_conv_label=Ouvrir
|
|||
activity.title.releases_1=%d publication
|
||||
activity.title.releases_n=%d publications
|
||||
activity.title.releases_published_by=%s publiée par %s
|
||||
activity.published_release_label=Publiée
|
||||
activity.published_release_label=Publication
|
||||
activity.no_git_activity=Il n'y a pas eu de nouvelle révision dans cette période.
|
||||
activity.git_stats_exclude_merges=En excluant les fusions,
|
||||
activity.git_stats_author_1=%d auteur
|
||||
|
@ -2321,32 +2329,32 @@ settings.event_push_desc=Soumission Git.
|
|||
settings.event_repository=Dépôt
|
||||
settings.event_repository_desc=Dépôt créé ou supprimé.
|
||||
settings.event_header_issue=Événements de ticket
|
||||
settings.event_issues=Ticket
|
||||
settings.event_issues=Modification
|
||||
settings.event_issues_desc=Ticket ouvert, rouvert, fermé ou modifié.
|
||||
settings.event_issue_assign=Ticket assigné
|
||||
settings.event_issue_assign=Assigné
|
||||
settings.event_issue_assign_desc=Ticket assigné ou dé-assigné.
|
||||
settings.event_issue_label=Ticket étiqueté
|
||||
settings.event_issue_label=Étiqueté
|
||||
settings.event_issue_label_desc=Labels attribués ou retirés.
|
||||
settings.event_issue_milestone=Ticket jalonné
|
||||
settings.event_issue_milestone=Jalonné
|
||||
settings.event_issue_milestone_desc=Ticket jalonné ou dé-jalonné.
|
||||
settings.event_issue_comment=Ticket commenté
|
||||
settings.event_issue_comment=Commenté
|
||||
settings.event_issue_comment_desc=Commentaire créé, modifié ou supprimé.
|
||||
settings.event_header_pull_request=Événements de demande d'ajout
|
||||
settings.event_pull_request=Demande d'ajout
|
||||
settings.event_pull_request_desc=Demande d’ajout ouverte, rouverte, fermée ou modifiée.
|
||||
settings.event_pull_request_assign=Demande d'ajout assignée
|
||||
settings.event_pull_request_assign=Assignée
|
||||
settings.event_pull_request_assign_desc=Demande d'ajout assignée ou non assignée.
|
||||
settings.event_pull_request_label=Demande d'ajout étiquetée
|
||||
settings.event_pull_request_label=Étiquetée
|
||||
settings.event_pull_request_label_desc=Label attribué ou retiré.
|
||||
settings.event_pull_request_milestone=Demande d'ajout jalonnée
|
||||
settings.event_pull_request_milestone_desc=Demande d'ajout jalonnée ou dé-jalonnée.
|
||||
settings.event_pull_request_comment=Commentaire sur une demande d'ajout
|
||||
settings.event_pull_request_milestone=Jalonnée
|
||||
settings.event_pull_request_milestone_desc=Jalonnée ou dé-jalonnée.
|
||||
settings.event_pull_request_comment=Commentaires
|
||||
settings.event_pull_request_comment_desc=Commentaire créé, modifié ou supprimé.
|
||||
settings.event_pull_request_review=Demande d'ajout évaluée
|
||||
settings.event_pull_request_review_desc=Demande d’ajout approuvée, rejetée ou commentée.
|
||||
settings.event_pull_request_sync=Demande d'ajout synchronisée
|
||||
settings.event_pull_request_sync_desc=Demande d'ajout synchronisée.
|
||||
settings.event_pull_request_review_request=Requête d’évaluation d'une demande d'ajout
|
||||
settings.event_pull_request_review=Évaluations
|
||||
settings.event_pull_request_review_desc=Demande d’ajout approuvée, rejetée ou commentaires d'évaluation ajoutés.
|
||||
settings.event_pull_request_sync=Synchronisée
|
||||
settings.event_pull_request_sync_desc=Branche mise à jour automatiquement avec la branche cible.
|
||||
settings.event_pull_request_review_request=Requête d’évaluation
|
||||
settings.event_pull_request_review_request_desc=Création ou suppresion de demandes d’évaluation.
|
||||
settings.event_pull_request_approvals=Approbations de demande d'ajout
|
||||
settings.event_pull_request_merge=Fusion de demande d'ajout
|
||||
|
@ -2418,28 +2426,28 @@ settings.protect_enable_merge_desc=Toute personne ayant un accès en écriture s
|
|||
settings.protect_whitelist_committers=Liste blanche des soumissions (push)
|
||||
settings.protect_whitelist_committers_desc=Seuls les utilisateurs ou les équipes autorisés pourront soumettre sur cette branche (sans forcer).
|
||||
settings.protect_whitelist_deploy_keys=Mettez les clés de déploiement sur liste blanche avec accès en écriture pour soumettre.
|
||||
settings.protect_whitelist_users=Utilisateurs sur liste blanche :
|
||||
settings.protect_whitelist_users=Utilisateurs sur liste blanche pour pousser
|
||||
settings.protect_whitelist_search_users=Rechercher des utilisateurs…
|
||||
settings.protect_whitelist_teams=Équipes sur liste blanche :
|
||||
settings.protect_whitelist_teams=Équipes sur liste blanche pour pousser
|
||||
settings.protect_whitelist_search_teams=Rechercher des équipes…
|
||||
settings.protect_merge_whitelist_committers=Activer la liste blanche pour la fusion
|
||||
settings.protect_merge_whitelist_committers_desc=N'autoriser que les utilisateurs et les équipes en liste blanche d'appliquer les demandes de fusion sur cette branche.
|
||||
settings.protect_merge_whitelist_users=Utilisateurs en liste blanche de fusion :
|
||||
settings.protect_merge_whitelist_teams=Équipes en liste blanche de fusion :
|
||||
settings.protect_merge_whitelist_users=Utilisateurs en liste blanche pour fusionner
|
||||
settings.protect_merge_whitelist_teams=Équipes en liste blanche pour fusionner
|
||||
settings.protect_check_status_contexts=Activer le contrôle de status
|
||||
settings.protect_status_check_patterns=Motifs de vérification des statuts :
|
||||
settings.protect_status_check_patterns=Motifs de vérification des statuts
|
||||
settings.protect_status_check_patterns_desc=Entrez des motifs pour spécifier quelles vérifications doivent réussir avant que des branches puissent être fusionnées. Un motif par ligne. Un motif ne peut être vide.
|
||||
settings.protect_check_status_contexts_desc=Exiger le status « succès » avant de fusionner. Quand activée, une branche protégée ne peux accepter que des soumissions ou des fusions ayant le status « succès ». Lorsqu'il n'y a pas de contexte, la dernière révision fait foi.
|
||||
settings.protect_check_status_contexts_list=Contrôles qualité trouvés au cours de la semaine dernière pour ce dépôt
|
||||
settings.protect_status_check_matched=Correspondant
|
||||
settings.protect_invalid_status_check_pattern=Motif de vérification des statuts incorrect : « %s ».
|
||||
settings.protect_no_valid_status_check_patterns=Aucun motif de vérification des statuts valide.
|
||||
settings.protect_required_approvals=Minimum d'approbations requis :
|
||||
settings.protect_required_approvals=Approbations requises
|
||||
settings.protect_required_approvals_desc=Permet de fusionner les demandes d’ajout lorsque suffisamment d’évaluation sont positives.
|
||||
settings.protect_approvals_whitelist_enabled=Restreindre les approbations aux utilisateurs ou aux équipes en liste blanche
|
||||
settings.protect_approvals_whitelist_enabled_desc=Seuls les évaluations des utilisateurs ou des équipes suivantes compteront dans les approbations requises. Si laissé vide, les évaluations de toute personne ayant un accès en écriture seront comptabilisées à la place.
|
||||
settings.protect_approvals_whitelist_users=Évaluateurs autorisés :
|
||||
settings.protect_approvals_whitelist_teams=Équipes d’évaluateurs autorisés :
|
||||
settings.protect_approvals_whitelist_users=Évaluateurs autorisés
|
||||
settings.protect_approvals_whitelist_teams=Équipes d’évaluateurs autorisés
|
||||
settings.dismiss_stale_approvals=Révoquer automatiquement les approbations périmées
|
||||
settings.dismiss_stale_approvals_desc=Lorsque des nouvelles révisions changent le contenu de la demande d’ajout, les approbations existantes sont révoquées.
|
||||
settings.ignore_stale_approvals=Ignorer les approbations obsolètes
|
||||
|
@ -2449,9 +2457,9 @@ settings.require_signed_commits_desc=Rejeter les soumissions sur cette branche l
|
|||
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="%s">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 (";"). Veuillez voir <a href="%s">github.com/gobwas/glob</a> la documentation pour la syntaxe des motifs. Exemples : <code>.drone.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_protected_file_patterns=Motifs de fichiers 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 (";"). Veuillez voir <a href="%[1]s">%[2]s</a> la documentation pour la syntaxe des motifs. Exemples : <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
|
||||
settings.protect_unprotected_file_patterns=Motifs de fichiers non protégés (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 (";"). Veuillez voir <a href="%[1]s">%[2]s</a> la documentation pour la syntaxe des motifs. Exemples : <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
|
||||
settings.add_protected_branch=Activer la protection
|
||||
settings.delete_protected_branch=Désactiver la protection
|
||||
|
@ -2682,9 +2690,9 @@ branch.renamed=La branche %s à été renommée en %s.
|
|||
tag.create_tag=Créer l'étiquette %s
|
||||
tag.create_tag_operation=Créer une étiquette
|
||||
tag.confirm_create_tag=Créer une étiquette
|
||||
tag.create_tag_from=`Créer une nouvelle étiquette à partir de "%s"`
|
||||
tag.create_tag_from=Créer une nouvelle étiquette à partir de « %s »
|
||||
|
||||
tag.create_success=L'étiquette "%s" a été créée.
|
||||
tag.create_success=L'étiquette « %s » a été créée.
|
||||
|
||||
topic.manage_topics=Gérer les sujets
|
||||
topic.done=Terminé
|
||||
|
@ -2737,11 +2745,11 @@ settings.add_collaborator_blocked_our = Il n'est pas possible d'ajouter ce colla
|
|||
settings.wiki_rename_branch_main_notices_1 = Cette operation <strong>NE PEUT PAS</strong> être annulée.
|
||||
settings.wiki_branch_rename_failure = Le nom de la branche associée au wiki du dépôt n'a pu être normalisé.
|
||||
pulls.reopen_failed.head_branch = La pull request ne peut pas être re-ouverte car la branch d'origine n'existe plus.
|
||||
settings.units.units = Fonctionnalités des dépôt
|
||||
settings.units.units = Fonctionnalités
|
||||
pulls.fast_forward_only_merge_pull_request = Fast-forward uniquement
|
||||
pulls.reopen_failed.base_branch = La pull request ne peut pas être re-ouverte car la branche de destination n'existe plus.
|
||||
settings.units.overview = Vue générale
|
||||
settings.units.add_more = Ajouter en plus...
|
||||
settings.units.add_more = Ajouter en plus
|
||||
activity.navbar.pulse = Pouls
|
||||
activity.navbar.contributors = Contributeurs
|
||||
contributors.contribution_type.commits = Commits
|
||||
|
@ -2811,6 +2819,32 @@ settings.federation_following_repos = Les URL des dépôts suivis séparés par
|
|||
settings.federation_not_enabled = La fédération n'est pas activée pour votre instance.
|
||||
comments.edit.already_changed = Impossible de sauvegarder les changements du commentaire car son contenu a déjà été modifié par un autre utilisateur. Veuillez recharger la page et essayer de l'éditer à nouveau pour éviter d'écraser ses changements
|
||||
settings.federation_apapiurl = URL de fédération de ce dépôt. A copier-coller dans les paramètres de fédérations d'un autre dépôt comme URL d'un dépôt à suivre.
|
||||
mirror_denied_combination = Il n'est pas possible de combiner une authentification par clé publique et par mot de passe.
|
||||
mirror_public_key = Clé SSH publique
|
||||
mirror_use_ssh.text = Utiliser l'authentification SSH
|
||||
mirror_use_ssh.helper = Forgejo va créer un miroir du dépôt via Git sur SSH et créer une paire de clés pour vous lorsque vous sélectionnez cette option. Vous devez vous assurer que la clé publique générée est autorisée à pousser dans le dépôt de destination. Il n'est pas possible d'utiliser l'autorisation basée sur un mot de passe si vous choisissez cette option.
|
||||
no_eol.text = Pas d'EOL
|
||||
mirror_use_ssh.not_available = L'authentification par SSH n'est pas disponible.
|
||||
no_eol.tooltip = Ce fichier ne contient pas de caractère final de fin de ligne.
|
||||
release.type_attachment = Pièce jointe
|
||||
settings.transfer_quota_exceeded = Le nouvel utilisateur (%s) a dépassé son quota. Le dépôt n'a pas été transféré.
|
||||
settings.pull_mirror_sync_quota_exceeded = Quota dépassé, les modifications ne sont pas tirées.
|
||||
activity.commit = Activité de commit
|
||||
settings.mirror_settings.push_mirror.copy_public_key = Copier la clé publique
|
||||
release.asset_external_url = URL externe
|
||||
release.invalid_external_url = URL externe non valable : « %s »
|
||||
milestones.filter_sort.name = Nom
|
||||
settings.mirror_settings.push_mirror.none_ssh = Aucun
|
||||
settings.protect_new_rule = Créer une nouvelle règle de protection de branche
|
||||
pulls.cmd_instruction_merge_warning = <b>Avertissement :</b> Le paramètre "détection automatique de la fusion manuelle" n'est pas activé pour ce dépôt, vous devrez marquer cette demande d'ajout comme manuellement fusionnée après.
|
||||
release.type_external_asset = Actif Externe
|
||||
activity.published_prerelease_label = Pré-version
|
||||
activity.published_tag_label = Étiquette
|
||||
release.asset_name = Nom de l'actif
|
||||
release.add_external_asset = Ajouter un actif externe
|
||||
issues.new.assign_to_me = Assigner à moi-même
|
||||
issues.all_title = Tous
|
||||
settings.discord_icon_url.exceeds_max_length = L'URL de l’icône ne doit pas dépasser 2048 caractères
|
||||
|
||||
[graphs]
|
||||
component_loading=Chargement de %s…
|
||||
|
@ -2897,8 +2931,8 @@ teams.leave.detail=Êtes vous certain·e de vouloir quitter l'équipe «%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
|
||||
teams.none_access_helper=Les membres ne peuvent voir ou faire quoi que ce soit sur cette partie. Sans effet pour les dépôts publics.
|
||||
teams.general_access=Accès général
|
||||
teams.none_access_helper=L'option "Aucun accès" n'a pas d'effet sur les dépôts privés.
|
||||
teams.general_access=Accès personnalisé
|
||||
teams.general_access_helper=Les permissions des membres seront déterminées par la table des permissions ci-dessous.
|
||||
teams.read_access=Lecture
|
||||
teams.read_access_helper=Les membres peuvent voir et cloner les dépôts de l'équipe.
|
||||
|
@ -3043,10 +3077,10 @@ dashboard.delete_old_actions.started=Suppression de toutes les anciennes activit
|
|||
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
|
||||
dashboard.stop_zombie_tasks=Arrêter les tâches zombies
|
||||
dashboard.stop_endless_tasks=Arrêter les tâches sans fin
|
||||
dashboard.cancel_abandoned_jobs=Annuler les jobs abandonnés
|
||||
dashboard.start_schedule_tasks=Démarrer les tâches planifiées
|
||||
dashboard.stop_zombie_tasks=Arrêter les actions zombies
|
||||
dashboard.stop_endless_tasks=Arrêter les actions sans fin
|
||||
dashboard.cancel_abandoned_jobs=Annuler les actions abandonnées
|
||||
dashboard.start_schedule_tasks=Démarrer les actions planifiées
|
||||
dashboard.sync_branch.started=Début de la synchronisation des branches
|
||||
dashboard.sync_tag.started=Synchronisation des étiquettes
|
||||
dashboard.rebuild_issue_indexer=Reconstruire l’indexeur des tickets
|
||||
|
@ -3130,7 +3164,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 candidat à l'adoption n'a été trouvé
|
||||
repos.unadopted.no_more=Aucun dépôt candidat à l'adoption n'a été trouvé.
|
||||
repos.owner=Propriétaire
|
||||
repos.name=Nom
|
||||
repos.private=Privé
|
||||
|
@ -3500,6 +3534,16 @@ config.cache_test_slow = Test du cache réussi, mais le temps de réponse est le
|
|||
config.cache_test_failed = Échec du contrôle du cache : %v.
|
||||
config.cache_test = Tester le cache
|
||||
config.cache_test_succeeded = Test du cache réussi, réponse obtenue en %s.
|
||||
emails.delete_desc = Êtes-vous sûr de vouloir supprimer cette adresse courriel ?
|
||||
users.organization_creation.description = Autoriser la création de nouvelles organisations.
|
||||
emails.deletion_success = L'adresse courriel a été supprimée.
|
||||
emails.delete = Supprimer le courriel
|
||||
emails.delete_primary_email_error = Vous ne pouvez pas supprimer l'adresse courriel principale.
|
||||
users.activated.description = Achèvement de la vérification de courriel. Le propriétaire d'un compte non activé ne pourra pas se connecter tant que la vérification de courriel n'est pas terminée.
|
||||
users.block.description = Bloquer cet utilisateur d'interagir avec ce service via son compte et interdire la connexion.
|
||||
users.admin.description = Accorder à cet utilisateur un accès complet à toutes les fonctionnalités administratives disponibles via l'interface web et l'API.
|
||||
users.restricted.description = Autoriser uniquement l'interaction avec les dépôts et les organisations où cet utilisateur est ajouté en tant que collaborateur. Cela empêche l'accès aux dépôts publics sur cette instance.
|
||||
users.local_import.description = Autoriser l'importation de dépôts à partir du système de fichiers local du serveur. Cela peut poser un problème de sécurité.
|
||||
|
||||
[action]
|
||||
create_repo=a créé le dépôt <a href="%s">%s</a>
|
||||
|
@ -3746,6 +3790,22 @@ 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
|
||||
arch.pacman.helper.gpg = Ajouter un certificat de confiance pour pacman :
|
||||
arch.pacman.repo.multi = %s a la même version dans différentes distributions.
|
||||
arch.pacman.repo.multi.item = Configuration pour %s
|
||||
arch.pacman.conf = Ajouter un serveur associées à la distribution et l'architecture dans <code>/etc/pacman.conf</code> :
|
||||
arch.pacman.sync = Synchroniser le paquet avec pacman :
|
||||
arch.version.properties = Propriétés de version
|
||||
arch.version.description = Description
|
||||
arch.version.provides = Fournit
|
||||
arch.version.groups = Groupe
|
||||
arch.version.depends = Dépend
|
||||
arch.version.optdepends = Dépendances optionnelles
|
||||
arch.version.checkdepends = Vérifier les dépendances
|
||||
arch.version.conflicts = Conflits
|
||||
arch.version.replaces = Remplace
|
||||
arch.version.backup = Sauvegarde
|
||||
arch.version.makedepends = Faire des dépendances
|
||||
|
||||
[secrets]
|
||||
secrets=Secrets
|
||||
|
@ -3765,7 +3825,7 @@ management=Gestion des secrets
|
|||
[actions]
|
||||
actions=Actions
|
||||
|
||||
unit.desc=Gérer l'intégration continue avec Forgejo Actions
|
||||
unit.desc=Gérer l'intégration continue avec Forgejo Actions.
|
||||
|
||||
status.unknown=Inconnu
|
||||
status.waiting=En attente
|
||||
|
@ -3866,11 +3926,13 @@ workflow.dispatch.success = L'exécution du workflow a bien été demandée.
|
|||
workflow.dispatch.input_required = Le champ "%s" est obligatoire.
|
||||
workflow.dispatch.invalid_input_type = Type invalide pour le champ "%s".
|
||||
workflow.dispatch.warn_input_limit = Affichage des %d premiers champs seulement.
|
||||
runs.expire_log_message = Les journaux ont été purgés car ils étaient trop anciens.
|
||||
|
||||
[projects]
|
||||
type-1.display_name=Projet personnel
|
||||
type-2.display_name=Projet du dépôt
|
||||
type-3.display_name=Projet de l'organisation
|
||||
deleted.display_name = Projet Supprimé
|
||||
|
||||
[git.filemode]
|
||||
changed_filemode=%[1]s → %[2]s
|
||||
|
@ -3922,6 +3984,8 @@ union = Union
|
|||
union_tooltip = Inclus les résultats contenant au moins un des mots clé séparés par des espaces
|
||||
pull_kind = Rechercher dans les demande d'ajout...
|
||||
milestone_kind = Recherche dans les jalons...
|
||||
regexp_tooltip = Interpréter le terme de recherche comme une expression régulière
|
||||
regexp = RegExp
|
||||
|
||||
|
||||
[munits.data]
|
||||
|
@ -3936,4 +4000,27 @@ eib = Eio
|
|||
[markup]
|
||||
filepreview.line = Ligne %[1]d dans %[2]s
|
||||
filepreview.lines = Lignes %[1]d jusqu'à %[2]d dans %[3]s
|
||||
filepreview.truncated = L'aperçu a été tronqué
|
||||
filepreview.truncated = L'aperçu a été tronqué
|
||||
|
||||
[repo.permissions]
|
||||
pulls.write = <b>Écrire :</b> Fermer des demandes de tirage et gérer les métadonnées telles que les étiquettes, les jalons, les assignés, les dates d'échéance et les dépendances.
|
||||
actions.read = <b>Lire :</b> Voir les pipelines CI/CD intégrés et leurs journaux.
|
||||
releases.read = <b>Lire:</b> Voir et télécharger les versions.
|
||||
releases.write = <b>Écrire :</b> Publier, modifier et supprimer des versions et leurs ressources.
|
||||
projects.write = <b>Écrire :</b> Créer des projets, des colonnes et les modifier.
|
||||
code.read = <b>Lire :</b> Accéder au code du dépôt et le cloner.
|
||||
ext_issues = Accéder au lien vers un système externe de suivi des problèmes. Les autorisations sont gérées de manière externe.
|
||||
code.write = <b>Écrire :</b> Pousser vers le dépôt, créer des branches et des étiquettes.
|
||||
issues.read = <b>Lire :</b> Lire et créer des tickets et des commentaires.
|
||||
wiki.read = <b>Lire :</b> Lire le wiki intégré et son historique.
|
||||
wiki.write = <b>Écrire :</b> Créer, mettre à jour et supprimer des pages dans le wiki intégré.
|
||||
projects.read = <b>Lire :</b> Accéder aux tableaux de projet du dépôt.
|
||||
packages.read = <b>Lire :</b> Voir et télécharger les paquets assignés au dépôt.
|
||||
packages.write = <b>Écrire :</b> Publier et supprimer des paquets assignés au dépôt.
|
||||
actions.write = <b>Écrire :</b> Déclencher manuellement, redémarrer, annuler ou approuver les pipelines CI/CD en attente.
|
||||
ext_wiki = Accéder au lien vers un wiki externe. Les autorisations sont gérées de manière externe.
|
||||
issues.write = <b>Écrire :</b> Fermer des tickets et gérer les métadonnées telles que les étiquettes, les jalons, les assignés, les dates d'échéance et les dépendances.
|
||||
pulls.read = <b>Lire :</b> Lire et créer des demandes de tirage.
|
||||
|
||||
[translation_meta]
|
||||
test = Ceci est une chaîne de test. Elle n'est pas affichée dans l'interface de Forgejo mais est utilisée à des fins de test. N'hésitez pas à entrer 'ok' pour gagner du temps (ou un fait amusant de votre choix) pour atteindre ce doux 100 % de complétion :)
|
|
@ -2,5 +2,26 @@
|
|||
|
||||
|
||||
[common]
|
||||
dashboard = डैशबोर्ड
|
||||
home = घर
|
||||
dashboard = नियंत्रण कक्ष
|
||||
home = मुख्य पृष्ठ
|
||||
help = सहायता
|
||||
logo = चिह्न
|
||||
explore = अन्वेषण करें
|
||||
sign_in = प्रवेश करें
|
||||
sign_in_with_provider = %s के साथ प्रवेश करें
|
||||
sign_in_or = या
|
||||
sign_out = बाहर निकलें
|
||||
sign_up = पंजीकरण
|
||||
register = पंजीकरण
|
||||
version = संस्करण
|
||||
powered_by = द्वारा संचालित %s
|
||||
page = पृष्ठ
|
||||
template = सांचा
|
||||
language = भाषा
|
||||
active_stopwatch = सक्रिय समय ट्रैकर
|
||||
create_new = बनाएँ…
|
||||
signed_in_as = साइन इन किया गया है
|
||||
link_account = खाता लिंक करें
|
||||
notifications = सूचनाएँ
|
||||
tracked_time_summary = समस्याओं की सूची के फ़िल्टर के आधार पर ट्रैक किए गए समय का सारांश
|
||||
user_profile_and_more = प्रोफ़ाइल और सेटिंग्स…
|
|
@ -128,14 +128,51 @@ ok = OK
|
|||
copy_generic = Másolás vágólapra
|
||||
copy_url = URL másolása
|
||||
webauthn_error_insecure = A WebAuthn csak biztonságos kapcsolatokat támogat. HTTP-n keresztüli tesztelés esetén használja a "localhost" vagy "127.0.0.1"-es elérési pontokat
|
||||
filter.clear = Szűrők törlése
|
||||
enable_javascript = Az oldal működéséhez engedélyezni kell a JavaScriptet.
|
||||
webauthn_sign_in = Nyomja meg a gombot a biztonsági kulcsán! Ha nincs rajta gomb, próbálja meg újra behelyezni!
|
||||
webauthn_use_twofa = Kétlépcsős bejelentkezési kód használata telefonról
|
||||
webauthn_error_timeout = Időtúllépés a kulcs beolvasása közben. Kérjük töltse be újra ezt az oldalt, és próbálkozzon újra.
|
||||
copy_branch = Elágazás nevének másolása
|
||||
test = Teszt
|
||||
copy_type_unsupported = Ezt a fájltípust nem lehet másolni
|
||||
copy_error = Sikertelen másolás
|
||||
invalid_data = Érvénytelen adatok: %v
|
||||
unpin = Rögzítés feloldása
|
||||
concept_user_individual = Egyéni
|
||||
toggle_menu = Menü megjelenítése/elrejtése
|
||||
concept_system_global = Globális
|
||||
error413 = Felhasználta a kvótáját.
|
||||
remove_label_str = "%s" eltávolítása
|
||||
rerun_all = Minden feladat újrafuttatása
|
||||
rerun = Újrafuttatás
|
||||
show_full_screen = Teljes képernyő
|
||||
rss_feed = RSS csatorna
|
||||
copy = Másolás
|
||||
retry = Újra
|
||||
new_repo.title = Új tároló
|
||||
new_repo.link = Új tároló
|
||||
new_migrate.title = Új migráció
|
||||
new_migrate.link = Új migráció
|
||||
new_org.title = Új szervezet
|
||||
new_org.link = Új szervezet
|
||||
filter.is_fork = Másolatok
|
||||
webauthn_error_duplicated = A biztonsági kulcs nem engedélyezett ehhez a kéréshez. Kérlek győződj meg róla, hogy a kulcs nincs-e már használatban.
|
||||
filter.is_mirror = Tükrök
|
||||
|
||||
[aria]
|
||||
footer.links = Hivatkozások
|
||||
footer = Lábléc
|
||||
navbar = Navigációs eszközsor
|
||||
footer.software = A programról
|
||||
|
||||
[heatmap]
|
||||
less = Kevesebb
|
||||
more = Több
|
||||
number_of_contributions_in_the_last_12_months = %s hozzájárulás az elmúlt 12 hónapban
|
||||
contributions_zero = Nincsenek hozzájárulások
|
||||
contributions_one = hozzájárulás
|
||||
contributions_few = hozzájárulás
|
||||
|
||||
[editor]
|
||||
buttons.heading.tooltip = Fejléc hozzáadása
|
||||
|
@ -145,6 +182,12 @@ buttons.italic.tooltip = Dőlt szöveg hozzáadása
|
|||
buttons.quote.tooltip = Szöveg idézése
|
||||
buttons.link.tooltip = Hivatkozás hozzáadása
|
||||
buttons.indent.tooltip = Elemek behúzása egy szinttel
|
||||
buttons.mention.tooltip = Felhasználó vagy csapat említése
|
||||
buttons.list.ordered.tooltip = Számozott lista hozzáadása
|
||||
buttons.list.task.tooltip = Feladatlista hozzáadása
|
||||
buttons.list.unordered.tooltip = Felsorolás hozzáadása
|
||||
buttons.switch_to_legacy.tooltip = A régi szerkesztő használata
|
||||
buttons.unindent.tooltip = Elemek behúzásának csökkentése egy szinttel
|
||||
|
||||
[filter]
|
||||
string.asc = A - Z
|
||||
|
@ -154,6 +197,7 @@ string.desc = Z - A
|
|||
occurred = Hiba történt
|
||||
server_internal = Belső szerverhiba
|
||||
network_error = Hálózati hiba
|
||||
not_found = A cél nem található.
|
||||
|
||||
[startpage]
|
||||
app_desc=Fájdalommentes, saját gépre telepíthető Git szolgáltatás
|
||||
|
@ -1726,6 +1770,9 @@ runs.commit=Commit
|
|||
; Ordered by git filemode value, ascending. E.g. directory has "040000", normal file has "100644", …
|
||||
symbolic_link=Szimbolikus hivatkozás
|
||||
submodule = Almodul
|
||||
executable_file = Futtatható fájl
|
||||
normal_file = Általános fájl
|
||||
directory = Könyvtár
|
||||
|
||||
|
||||
|
||||
|
@ -1740,4 +1787,15 @@ user_kind = Felhasználók keresése...
|
|||
repo_kind = Tárak keresése...
|
||||
org_kind = Szervezetek keresése...
|
||||
team_kind = Csapatok keresése...
|
||||
exact = Pontos
|
||||
exact = Pontos
|
||||
code_search_by_git_grep = A kódkeresés jelenleg a "git grep" parancsot használja. Lehet, hogy jobb találatok is lennének, ha a webhely adminisztrátora bekapcsolja a forráskód indexelését.
|
||||
milestone_kind = Mérföldkövek keresése...
|
||||
fuzzy_tooltip = A keresési kifejezéshez hasonló találatok mutatása
|
||||
fuzzy = Hasonlók
|
||||
union = Kulcsszavakra
|
||||
union_tooltip = A szóközzel elválasztott kulcsszavak bármelyikét tartalmazó találatok mutatása
|
||||
branch_kind = Ágak keresése...
|
||||
no_results = Nincsenek megfelelő találatok.
|
||||
issue_kind = Hibajegyek keresése...
|
||||
exact_tooltip = Csak a keresési kifejezést pontosan tartalmazó találatok mutatása
|
||||
keyword_search_unavailable = A kulcsszó alapú keresés jelenleg nem elérhető. Kérlek értesítsd az oldal rendszergazdáját.
|
|
@ -3,7 +3,7 @@ home=Forsíða
|
|||
dashboard=Stjórnborð
|
||||
explore=Vafra
|
||||
help=Hjálp
|
||||
sign_in=Skrá Inn
|
||||
sign_in=Skrá inn
|
||||
sign_in_or=eða
|
||||
sign_out=Skrá Út
|
||||
sign_up=Nýskráning
|
||||
|
@ -15,9 +15,9 @@ page=Síða
|
|||
template=Sniðmát
|
||||
language=Tungumál
|
||||
notifications=Tilkynningar
|
||||
active_stopwatch=Virk Tímamæling
|
||||
active_stopwatch=Virk tímamæling
|
||||
create_new=Skapa…
|
||||
user_profile_and_more=Notandasíða og Stillingar…
|
||||
user_profile_and_more=Notandasíða og stillingar…
|
||||
signed_in_as=Skráð(ur) inn sem
|
||||
toc=Efnisyfirlit
|
||||
licenses=Hugbúnaðarleyfi
|
||||
|
@ -111,6 +111,8 @@ concept_code_repository=Hugbúnaðarsafn
|
|||
|
||||
name=Heiti
|
||||
value=Gildi
|
||||
sign_in_with_provider = Skrá inn með %s
|
||||
enable_javascript = Þessi síða krefst JavaScript.
|
||||
|
||||
[aria]
|
||||
|
||||
|
|
|
@ -340,7 +340,7 @@ allow_dots_in_usernames = Consenti l'uso del punto nel nome utente. Non impatta
|
|||
config_location_hint = Queste opzioni di configurazione saranno salvate in:
|
||||
allow_only_external_registration = Permetti la registrazione solo tramite servizi esterni
|
||||
app_slogan = Slogan dell'istanza
|
||||
app_slogan_helper = Inserire qui lo slogan dell'istanza. Lasciare vuoto per disabilitare.
|
||||
app_slogan_helper = Inserisci qui lo slogan della tua istanza. Lasciala vuota per disabilitarlo.
|
||||
|
||||
[home]
|
||||
uname_holder=Nome utente o indirizzo e-mail
|
||||
|
@ -406,10 +406,10 @@ remember_me=Ricorda questo dispositivo
|
|||
forgot_password_title=Password dimenticata
|
||||
forgot_password=Password dimenticata?
|
||||
sign_up_now=Hai bisogno di un account? Registrati adesso.
|
||||
confirmation_mail_sent_prompt=Una nuova email di conferma è stata inviata a <b>%s</b>. Per favore controlla la tua posta in arrivo nelle prossime %s per completare il processo di registrazione.
|
||||
confirmation_mail_sent_prompt=Una nuova e-mail di conferma è stata inviata a <b>%s</b>. Per completare la registrazione, controlla la tua posta in arrivo e clicca sul link in allegato entro i prossimi %s secondi. Se la tua e-mail è errata o incorretta, puoi accedere all'account e richiedere un'altra e-mail di conferma ad un'altro indirizzo.
|
||||
must_change_password=Aggiorna la tua password
|
||||
allow_password_change=Richiede all'utente di cambiare la password (scelta consigliata)
|
||||
reset_password_mail_sent_prompt=Una email di conferma è stata inviata a <b>%s</b>. Per favore controlla la tua posta in arrivo nelle prossime %s per completare il processo di reset della password.
|
||||
reset_password_mail_sent_prompt=Un'e-mail di conferma è stata inviata a <b>%s</b>. Per completare il processo di recupero dell'account, controlla la tua posta in arrivo e clicca sul link entro i prossimi %s secondi.
|
||||
active_your_account=Attiva il tuo account
|
||||
account_activated=L'account è stato attivato
|
||||
prohibit_login=L'accesso è proibito
|
||||
|
@ -471,6 +471,11 @@ openid_signin_desc = Inserisci il tuo URI OpenID. Per esempio: alice.openid.exam
|
|||
password_pwned = La password che hai scelto è in un <a target="_blank" rel="noopener noreferrer" href="%s">elenco di password rubate</a> precedentemente esposte a violazioni di dati pubblici. Riprova con una password diversa e valuta di modificare questa password anche altrove.
|
||||
tab_signup = Registrati
|
||||
tab_signin = Accedi
|
||||
back_to_sign_in = Torna alla schermata d'accesso
|
||||
sign_in_openid = Procedi con OpenID
|
||||
hint_login = Hai già un'utenza? <a href="%s">Accedi!</a>
|
||||
hint_register = Non hai un'utenza? <a href="%s">Registrati ora.</a>
|
||||
sign_up_button = Registrati ora.
|
||||
|
||||
[mail]
|
||||
view_it_on=Visualizza su %s
|
||||
|
@ -539,6 +544,21 @@ activate_email.title = %s, verifica il tuo indirizzo email
|
|||
admin.new_user.text = <a href="%s">Clicca qui</a> per gestire questo utente dal pannello di amministrazione.
|
||||
team_invite.text_1 = %[1]s ti ha invitato a far parte del team %[2]s nell'organizzazione %[3]s.
|
||||
team_invite.text_3 = Nota: Questo invito è destinato a %[1]s. Se non ti aspettavi questo invito, puoi ignorare questa email.
|
||||
primary_mail_change.subject = La tua mail principale è stata cambiata
|
||||
removed_security_key.no_2fa = Non ci sono più altri metodi di autenticazione a due fattori configurati, ergo non c'è più bisogno di accedere alla tua utenza tramite tale autenticazione.
|
||||
primary_mail_change.text_1 = La mail principale della tua utenza è appena stata cambiata in %[1]s. Ciò significa che questo indirizzo di posta elettronica non riceverà più notifiche mail da quest'utenza.
|
||||
totp_disabled.subject = La TOTP è stata disabilitata
|
||||
totp_disabled.no_2fa = Non ci sono più altri metodi d'autenticazione a due fattori configurati, ergo non c'è più bisogno di accedere alla tua utenza con tale autenticazione.
|
||||
removed_security_key.subject = È stata rimossa una chiave di sicurezza
|
||||
removed_security_key.text_1 = La chiave di sicurezza "%[1]s" è appena stata rimossa dalla tua utenza.
|
||||
totp_disabled.text_1 = La password a tempo usa e getta (TOTP) della tua utenza è appena stata disabilitata.
|
||||
totp_enrolled.subject = Hai attivato la TOTP come metodo d'autenticazione a due fattori
|
||||
totp_enrolled.text_1.no_webauthn = Hai appena attivato la TOTP per la tua utenza. Ciò significa che dovrai usarla come metodo d'autenticazione a due fattori per tutti i tuoi accessi futuri.
|
||||
totp_enrolled.text_1.has_webauthn = Hai appena attivato la TOTP per la tua utenza. Ciò significa che dovrai usare come metodo d'autenticazione a due fattori per i tuoi accessi futuri tale TOTP o una delle tue chiavi di sicurezza.
|
||||
password_change.subject = La tua password è stata modificata
|
||||
password_change.text_1 = La password della tua utenza è appena stata modificata.
|
||||
account_security_caution.text_1 = Se sei statə tu, puoi ignorare questa mail.
|
||||
account_security_caution.text_2 = Se non sei statə tu, la tua utenza è compromessa. Contatta l'amministrazione del sito.
|
||||
|
||||
|
||||
[modal]
|
||||
|
@ -1022,6 +1042,8 @@ pronouns = Pronomi
|
|||
pronouns_custom = Personalizzato
|
||||
pronouns_unspecified = Non specificato
|
||||
language.title = Lingua predefinita
|
||||
language.description = Questa lingua verrà salvata nella tua utenza e verrà usata come predefinita ogni volta che farai l'accesso.
|
||||
language.localization_project = Aiutaci a tradurre Forgejo nella tua lingua! <a href="%s">Più informazioni</a>.
|
||||
|
||||
[repo]
|
||||
owner=Proprietario
|
||||
|
@ -2164,23 +2186,23 @@ settings.protect_enable_push_desc=Chiunque con accesso in scrittura sarà autori
|
|||
settings.protect_whitelist_committers=Limita immissione alla whitelist
|
||||
settings.protect_whitelist_committers_desc=Solo gli utenti o i team nella whitelist potranno pushare su questo ramo (ma non forzare il push).
|
||||
settings.protect_whitelist_deploy_keys=Chiavi di deploy in whitelist con permessi di scrittura per il push.
|
||||
settings.protect_whitelist_users=Utenti nella whitelist per pushare:
|
||||
settings.protect_whitelist_users=Utenti nella whitelist per pushare
|
||||
settings.protect_whitelist_search_users=Cerca utenti…
|
||||
settings.protect_whitelist_teams=Team nella whitelist per pushare:
|
||||
settings.protect_whitelist_teams=Team nella whitelist per pushare
|
||||
settings.protect_whitelist_search_teams=Ricerca team…
|
||||
settings.protect_merge_whitelist_committers=Attiva la whitelist per le fusioni
|
||||
settings.protect_merge_whitelist_committers_desc=Consentire soltanto agli utenti o ai team in whitelist il permesso di unire le pull request di questo branch.
|
||||
settings.protect_merge_whitelist_users=Utenti nella whitelist per il merging:
|
||||
settings.protect_merge_whitelist_teams=Team nella whitelist per il merging:
|
||||
settings.protect_merge_whitelist_users=Utenti nella whitelist per il merging
|
||||
settings.protect_merge_whitelist_teams=Team nella whitelist per il merging
|
||||
settings.protect_check_status_contexts=Abilita controllo dello stato
|
||||
settings.protect_check_status_contexts_desc=Richiedi il superamento di controlli di stato prima dell'unione di due rami. Scegliere quali controlli di stato devono passare prima che i rami possano essere uniti in un ramo che corrisponde a questa regola. Se abilitato, i commit devono prima essere inviati a un altro ramo, quindi uniti o pushati direttamente a un ramo che corrisponde a questa regola dopo aver superato i controlli di stato. Se non viene selezionato alcuna regola, l'ultimo commit avrá successo indipendentemente dal contesto.
|
||||
settings.protect_check_status_contexts_list=Controlli di stato trovati nell'ultima settimana per questo repository
|
||||
settings.protect_required_approvals=Approvazioni richieste:
|
||||
settings.protect_required_approvals=Approvazioni richieste
|
||||
settings.protect_required_approvals_desc=Permetti solo di unire la richiesta pull con abbastanza recensioni positive.
|
||||
settings.protect_approvals_whitelist_enabled=Limita le approvazioni agli utenti o ai team nella whitelist
|
||||
settings.protect_approvals_whitelist_enabled_desc=Solo le recensioni di utenti o team nella whitelist saranno contate alle approvazioni richieste. Senza approvazione nella whitelist, le recensioni di chiunque abbia i permessi di scrittura nella repository verrá contato nelle approvazioni richieste.
|
||||
settings.protect_approvals_whitelist_users=Utenti autorizzati:
|
||||
settings.protect_approvals_whitelist_teams=Team nella whitelist per le revisioni:
|
||||
settings.protect_approvals_whitelist_users=Utenti autorizzati
|
||||
settings.protect_approvals_whitelist_teams=Team nella whitelist per le revisioni
|
||||
settings.dismiss_stale_approvals=Ignora impostazione vecchie
|
||||
settings.dismiss_stale_approvals_desc=Quando i nuovi commit che cambiano il contenuto della pull request vengono pushati nel branch, le vecchie approvazioni verranno eliminate.
|
||||
settings.require_signed_commits=Richiedi commit firmati
|
||||
|
@ -2629,7 +2651,7 @@ wiki.page_title = Titolo della pagina
|
|||
wiki.page_content = Contenuto della pagina
|
||||
settings.mirror_settings.pushed_repository = Repositorio immesso
|
||||
settings.mirror_settings.push_mirror.edit_sync_time = Modifica intervallo di sincronizzazione degli specchi
|
||||
settings.units.units = Unità del repositorio
|
||||
settings.units.units = Unità della repository
|
||||
settings.units.add_more = Aggiungi ancora...
|
||||
settings.wiki_globally_editable = Consenti a tutti di modificare la wiki
|
||||
settings.pull_mirror_sync_in_progress = Prelevando cambiamenti dal progetto remoto %s.
|
||||
|
@ -2706,11 +2728,11 @@ settings.protected_branch.save_rule = Salva regola
|
|||
settings.protected_branch.delete_rule = Elimina regola
|
||||
settings.protect_invalid_status_check_pattern = Sequenza per il controllo dello stato non valida: "%s".
|
||||
settings.protect_status_check_matched = Coincide
|
||||
settings.protect_status_check_patterns = Sequenze per il controllo dello stato:
|
||||
settings.protect_status_check_patterns = Sequenze per il controllo dello stato
|
||||
settings.protect_enable_merge = Abilita fusione
|
||||
settings.protect_enable_merge_desc = Chiunque con permesso di scrittura potrà fondere richieste di modifica in questo ramo.
|
||||
settings.protect_unprotected_file_patterns = Sequenze dei file non protetti (separate da punto e virgola ";"):
|
||||
settings.protect_protected_file_patterns = Sequenze dei file protetti (separate da punto e virgola ";"):
|
||||
settings.protect_unprotected_file_patterns = Sequenze dei file non protetti (separate da punto e virgola ";")
|
||||
settings.protect_protected_file_patterns = Sequenze dei file protetti (separate da punto e virgola ";")
|
||||
settings.protect_branch_name_pattern_desc = Sequenze di nome di rami protetti. Vedi <a href="%s">la documentazione</a> per la sintassi delle sequenze. Esempi: main, release/**
|
||||
settings.protect_branch_name_pattern = Sequenza nome di ramo
|
||||
settings.ignore_stale_approvals_desc = Non contare le approvazione fatte su vecchi commit (revisioni stantie) nel calcolo delle approvazioni della RM. Irrilevante se le revisioni stantie sono già state respinte.
|
||||
|
@ -2720,7 +2742,7 @@ settings.protect_status_check_patterns_desc = Inserisci sequenze per specificare
|
|||
settings.authorization_header_desc = Verrà inclusa come intestazione dell'autorizzazione per le richieste quando presente. Esempi: %s.
|
||||
pulls.title_desc_one = vuole fondere %[1]d commit da <code>%[2]s</code> in <code id="branch_target">%[3]s</code>
|
||||
settings.protect_unprotected_file_patterns_desc = File non protetti dei quali è consentita la modifica direttamente se l'utente ha permesso di scrittura, saltandole restrizioni di immissione. Più sequenze possono essere separate usando il punto e virgola (";"). Vedi la documentazione su <a href="%[1]s">%[2]s</a> per la sintassi delle sequenze glob. Esempi <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
|
||||
settings.protect_protected_file_patterns_desc = I file non protetti non possono essere modificati direttamente neanche se l'utente ha il permesso di aggiungere, modificare o eliminare file in questo ramo. Più sequenze possono essere separate usando il punto e virgola (";"). Vedi la documentazione su <a href="%s">github.com/gobwas/glob</a> per la sintassi della sequenze. Esempi: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
|
||||
settings.protect_protected_file_patterns_desc = I file non protetti non possono essere modificati direttamente neanche se l'utente ha il permesso di aggiungere, modificare o eliminare file in questo ramo. Più sequenze possono essere separate usando il punto e virgola (";"). Vedi la documentazione su <a href="%s">%s</a> per la sintassi della sequenze. Esempi: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
|
||||
settings.protect_no_valid_status_check_patterns = Nessuna sequenza valida per il controllo dello stato.
|
||||
settings.event_pull_request_review_request_desc = Richiesta la revisione della richiesta di modifica o richiesta di revisione rimossa.
|
||||
stars = Stelle
|
||||
|
@ -3863,6 +3885,7 @@ exact_tooltip = Includi solo i risultati che corrispondono esattamente al termin
|
|||
issue_kind = Cerca segnalazioni...
|
||||
pull_kind = Cerca richieste...
|
||||
exact = Esatto
|
||||
milestone_kind = Ricerca tappe...
|
||||
|
||||
[munits.data]
|
||||
gib = GiB
|
||||
|
|
|
@ -158,6 +158,14 @@ filter.not_template = テンプレートではない
|
|||
invalid_data = 無効なデータ: %v
|
||||
more_items = さらに表示
|
||||
copy_generic = クリップボードへコピー
|
||||
new_repo.title = 新しいリポジトリ
|
||||
new_migrate.title = 新しいマイグレーション
|
||||
new_org.title = 新しい組織
|
||||
new_repo.link = 新しいリポジトリ
|
||||
new_migrate.link = 新しいマイグレーション
|
||||
new_org.link = 新しい組織
|
||||
test = テスト
|
||||
error413 = 割り当て量を使い切りしました。
|
||||
|
||||
[aria]
|
||||
navbar=ナビゲーションバー
|
||||
|
@ -189,6 +197,8 @@ buttons.ref.tooltip=イシューまたはプルリクエストを参照
|
|||
buttons.switch_to_legacy.tooltip=レガシーエディタを使用する
|
||||
buttons.enable_monospace_font=等幅フォントを有効にする
|
||||
buttons.disable_monospace_font=等幅フォントを無効にする
|
||||
buttons.unindent.tooltip = アイテムを1つずつネストの解除をする
|
||||
buttons.indent.tooltip = アイテムを1つずつネストする
|
||||
|
||||
[filter]
|
||||
string.asc=A - Z
|
||||
|
@ -245,7 +255,7 @@ err_admin_name_is_invalid=管理者のユーザー名が不正です
|
|||
|
||||
general_title=基本設定
|
||||
app_name=インスタンス名
|
||||
app_name_helper=企業名をここに入れることができます。
|
||||
app_name_helper=ここにインスタンス名を入力します。これはすべてのページに表示されます。
|
||||
repo_path=リポジトリのルートパス
|
||||
repo_path_helper=リモートGitリポジトリはこのディレクトリに保存されます。
|
||||
lfs_path=Git LFSルートパス
|
||||
|
@ -279,7 +289,7 @@ offline_mode.description=外部のCDNサービスを使わず、すべてのリ
|
|||
disable_gravatar=Gravatarを無効にする
|
||||
disable_gravatar.description=Gravatarと外部のアバターソースを無効にします。 アバターをローカルにアップロードしていないユーザーには、デフォルトのアバターが使用されます。
|
||||
federated_avatar_lookup=フェデレーテッド・アバターを有効にする
|
||||
federated_avatar_lookup.description=Libravatarを使用したフェデレーテッド・アバター検索を有効にします。
|
||||
federated_avatar_lookup.description=Libravatar を使用してアバターを検索します。
|
||||
disable_registration=セルフ登録を無効にする
|
||||
disable_registration.description=管理者だけが新しいユーザー アカウントを作成できます。誰もが利用できるパブリックインスタンスをホストし、大量のスパムアカウントに対処する準備ができていない限り、登録を無効にしておくことを強くお勧めします。
|
||||
allow_only_external_registration.description=設定された外部サービスを使用してのみ新しいアカウントを作成できます。
|
||||
|
@ -398,14 +408,14 @@ forgot_password_title=パスワードを忘れた
|
|||
forgot_password=パスワードをお忘れですか?
|
||||
sign_up_now=アカウントが必要ですか? 今すぐ登録しましょう。
|
||||
sign_up_successful=アカウントは無事に作成されました。ようこそ!
|
||||
confirmation_mail_sent_prompt=<b>%s</b> に確認メールを送信しました。 %s以内に受信トレイを確認し、登録手続きを完了してください。
|
||||
confirmation_mail_sent_prompt=新しい確認メールが <b>%s</b> に送信されました。登録プロセスを完了するには、受信トレイを確認し、 %s 以内に提供されたリンクをクリックして下さい。メールが間違っている場合は、ログインして別のアドレスに確認メールを再送信するようリクエストできます。
|
||||
must_change_password=パスワードの更新
|
||||
allow_password_change=ユーザーはパスワードの変更が必要 (推奨)
|
||||
reset_password_mail_sent_prompt=<b>%s</b> に確認メールを送信しました。 %s以内に受信トレイを確認し、アカウント回復手続きを完了してください。
|
||||
reset_password_mail_sent_prompt=確認メールが <b>%s</b> に送信されました。アカウント回復手続きを完了するには、受信トレイを確認し、%s 以内に提供されたリンクに従ってください。
|
||||
active_your_account=アカウントの有効化
|
||||
account_activated=アカウントがアクティベートされました
|
||||
prohibit_login=サインイン禁止
|
||||
prohibit_login_desc=あなたのアカウントはサインインを禁止されています。 サイト管理者にお問い合わせください。
|
||||
prohibit_login=アカウントが停止されました
|
||||
prohibit_login_desc=あなたのアカウントはインスタンスとのやり取りが停止されています。アクセスを回復するには、インスタンス管理者に問い合わせてください。
|
||||
resent_limit_prompt=少し前に、あなたからアクティベーションメールが要求されています。 3分待ったのち、もう一度試してください。
|
||||
has_unconfirmed_mail=こんにちは %s さん、あなたのメール アドレス (<b>%s</b>) は確認がとれていません。 確認メールを受け取っていない場合や、改めて送信したい場合は、下のボタンをクリックしてください。
|
||||
resend_mail=アクティベーションメールを再送信するにはここをクリック
|
||||
|
@ -448,7 +458,7 @@ email_domain_blacklisted=あなたのメールアドレスでは登録するこ
|
|||
authorize_application=アプリケーションを許可
|
||||
authorize_redirect_notice=このアプリケーションを許可すると %s にリダイレクトします。
|
||||
authorize_application_created_by=このアプリケーションは %s が作成しました。
|
||||
authorize_application_description=アクセスを許可すると、このアプリケーションは、プライベート リポジトリや組織を含むあなたのすべてのアカウント情報に対して、アクセスと書き込みができるようになります。
|
||||
authorize_application_description=アクセスを許可すると、プライベートリポジトリや組織を含むすべてのアカウント情報にアクセスして書き込むことができるようになります。
|
||||
authorize_title=`"%s"にあなたのアカウントへのアクセスを許可しますか?`
|
||||
authorization_failed=認可失敗
|
||||
authorization_failed_desc=無効なリクエストを検出したため認可が失敗しました。 認可しようとしたアプリの開発者に連絡してください。
|
||||
|
@ -461,6 +471,12 @@ change_unconfirmed_email_summary = アクティベーションメールの送信
|
|||
last_admin=最後の管理者は削除できません。少なくとも一人の管理者が必要です。
|
||||
tab_signin = サインイン
|
||||
tab_signup = サインアップ
|
||||
sign_in_openid = OpenIDで続行
|
||||
back_to_sign_in = サインインに戻る
|
||||
unauthorized_credentials = 資格情報が正しくないか、期限が切れています。コマンドを再試行するか、詳細については %s を参照してください
|
||||
sign_up_button = 今すぐ登録して下さい。
|
||||
hint_login = すでにアカウントをお持ちですか? <a href="%s">今すぐサインイン!</a>
|
||||
hint_register = アカウントが必要ですか? <a href="%s">今すぐ登録してください。</a>
|
||||
|
||||
[mail]
|
||||
view_it_on=%s で見る
|
||||
|
@ -530,6 +546,21 @@ team_invite.text_3=注: この招待は %[1]s 宛です。 招待に心当たり
|
|||
admin.new_user.user_info = ユーザー情報
|
||||
admin.new_user.subject = 新しいユーザー、 %sがサインアップしました
|
||||
admin.new_user.text = 管理パネルからこのユーザーを管理するには、<a href="%s">ここ</a>をクリックしてください。
|
||||
totp_enrolled.text_1.has_webauthn = アカウントで TOTP が有効になりました。今後のアカウントへのログインで、2要素認証として TOTP を使用したり、任意のセキュリティ キーを使用することができます。
|
||||
totp_enrolled.subject = 2要素認証としてTOTPを有効にしました
|
||||
totp_enrolled.text_1.no_webauthn = アカウントで TOTP が有効になりました。今後アカウントにログインするときに、2要素認証として TOTP を使用する必要があります。
|
||||
password_change.text_1 = アカウントのパスワードが変更されました。
|
||||
password_change.subject = パスワードが変更されました
|
||||
primary_mail_change.subject = プライマリメールが変更されました
|
||||
primary_mail_change.text_1 = あなたのアカウントのプライマリメールが %[1]s に変更されました。これにより、この電子メール アドレスはあなたのアカウントに関する電子メール通知を受信しなくなります。
|
||||
totp_disabled.subject = TOTPが無効になりました
|
||||
totp_disabled.text_1 = あなたのアカウントの時間ベースのワンタイムパスワード (TOTP) が無効になりました。
|
||||
totp_disabled.no_2fa = 他の 2要素認証は設定されていないため、2要素認証を使用してアカウントにログインする必要はなくなりました。
|
||||
removed_security_key.subject = セキュリティキーが削除されました
|
||||
removed_security_key.text_1 = セキュリティキー "%[1]s" がアカウントから削除されました。
|
||||
account_security_caution.text_1 = もしこれがあなたの操作であれば、このメールは無視しても問題ありません。
|
||||
account_security_caution.text_2 = もしこれがあなたの操作でない場合、アカウントが不正利用されている可能性があります。このサイトの管理者に連絡してください。
|
||||
removed_security_key.no_2fa = 他の 2要素認証は設定されていないため、2要素認証を使用してアカウントにログインする必要はなくなりました。
|
||||
|
||||
[modal]
|
||||
yes=はい
|
||||
|
@ -668,16 +699,24 @@ settings=ユーザー設定
|
|||
form.name_reserved=ユーザー名 "%s" は予約されています。
|
||||
form.name_pattern_not_allowed=`"%s" の形式はユーザー名に使用できません。`
|
||||
form.name_chars_not_allowed=ユーザー名 "%s" には無効な文字が含まれています。
|
||||
block_user.detail_2 = このユーザーは、リポジトリ、作成されたイシュー、コメントを操作できません。
|
||||
block_user.detail_1 = このユーザーからのフォローが解除されています。
|
||||
block_user.detail_2 = このユーザーは、あなたが所有するリポジトリや、あなたが作成した問題やコメントを操作することはできません。
|
||||
block_user.detail_1 = お互いのフォローが停止され、フォローできなくなります。
|
||||
follow_blocked_user = あなたはこのユーザーをフォローできません。なぜなら、あなたはこのユーザーをブロックしたか、このユーザーはあなたをブロックしているからです。
|
||||
block_user.detail_3 = このユーザーはあなたをコラボレーターとして追加することはできませんし、あなたも彼らをコラボレーターに追加できません。
|
||||
block_user.detail_3 = お互いをリポジトリの共同作業者として追加することはできません。
|
||||
block_user = ユーザーをブロック
|
||||
unblock = ブロックを解除
|
||||
block = ブロック
|
||||
block_user.detail = このユーザーをブロックした場合、下記の事などが起こります。例えば:
|
||||
block_user.detail = ユーザーをブロックすると、次のような影響があります:
|
||||
followers_one = %d 人のフォロワー
|
||||
following_one = %d 人をフォロー中
|
||||
public_activity.visibility_hint.self_public = あなたのアクティビティは、プライベート スペースでのやり取りを除き、すべてのユーザーに表示されます。<a href="%s">設定</a>。
|
||||
public_activity.visibility_hint.admin_public = このアクティビティは誰でも見ることができますが、管理者はプライベート スペースでのやり取りも見ることができます。
|
||||
public_activity.visibility_hint.self_private = あなたのアクティビティはあなたとインスタンス管理者にのみ表示されます。<a href="%s">設定</a>。
|
||||
public_activity.visibility_hint.admin_private = このアクティビティは管理者であるあなたには表示されますが、ユーザーは非公開にしたいと考えています。
|
||||
following.title.one = フォロー中
|
||||
following.title.few = フォロー中
|
||||
followers.title.one = フォロワー
|
||||
followers.title.few = フォロワー
|
||||
|
||||
[settings]
|
||||
profile=プロフィール
|
||||
|
@ -787,12 +826,12 @@ add_new_email=新しいメールアドレスを追加
|
|||
add_new_openid=新しいOpenID URIを追加
|
||||
add_email=メールアドレスを追加
|
||||
add_openid=OpenID URIを追加する
|
||||
add_email_confirmation_sent=`"%s" に確認メールを送信しました。 %s以内に受信トレイを確認し、メールアドレス確認を行ってください。`
|
||||
add_email_confirmation_sent=確認メールが"%s"に送信されました。メールアドレスを確認するには、受信トレイを確認し、%s以内に提供されたリンクをクリックしてください。
|
||||
add_email_success=新しいメールアドレスを追加しました。
|
||||
email_preference_set_success=メール設定を保存しました。
|
||||
add_openid_success=新しいOpenIDアドレスを追加しました。
|
||||
keep_email_private=メールアドレスを隠す
|
||||
keep_email_private_popup=これによりプロフィールでメールアドレスが隠され、Webインターフェースでのプルリクエスト作成やファイル編集でもメールアドレスが隠されます。 プッシュ済みのコミットは変更されません。
|
||||
keep_email_private_popup=これにより、プロフィールからメールアドレスが非表示になります。ファイルのアップロードや編集など、ウェブインターフェース経由で行われるコミットのデフォルトとして使用されなくなり、マージコミットにも使用されません。代わりに、コミットをあなたのアカウントに関連付けるために特別なアドレス%sを使用できます。このオプションを変更しても、既存のコミットには影響しないことに注意してください。
|
||||
openid_desc=OpenIDを使うと外部プロバイダーに認証を委任することができます。
|
||||
|
||||
manage_ssh_keys=SSHキーの管理
|
||||
|
@ -1000,11 +1039,14 @@ pronouns = 代名詞
|
|||
pronouns_custom = カスタム
|
||||
pronouns_unspecified = 未指定
|
||||
update_hints = ヒントを更新
|
||||
additional_repo_units_hint_description = 利用可能なすべての機能が有効になっていないリポジトリに対して、「機能を追加...」ボタンを表示します。
|
||||
additional_repo_units_hint_description = 利用可能なすべての機能が有効になっていないリポジトリに対して、「さらに有効にする」ヒントを表示します。
|
||||
update_hints_success = ヒントが更新されました。
|
||||
hints = ヒント
|
||||
additional_repo_units_hint = リポジトリでより多くの機能を有効にすることを推奨する
|
||||
language.title = 既定の言語
|
||||
keep_activity_private.description = <a href="%s">公開アクティビティ</a>は、あなたとインスタンス管理者にのみ表示されます。
|
||||
language.description = この言語はアカウントに保存され、ログイン後にデフォルトとして使用されます。
|
||||
language.localization_project = Forgejo をあなたの言語に翻訳するのを手伝ってください。<a href="%s">詳細はこちら</a>。
|
||||
|
||||
[repo]
|
||||
new_repo_helper=リポジトリには、プロジェクトのすべてのファイルとリビジョン履歴が入ります。 すでにほかの場所でホストしていますか? <a href="%s">リポジトリを移行</a> もどうぞ。
|
||||
|
@ -1021,7 +1063,7 @@ visibility=公開/非公開
|
|||
visibility_description=オーナー、または権限を持つ組織のメンバーだけが、リポジトリを見ることができます。
|
||||
visibility_helper=リポジトリをプライベートにする
|
||||
visibility_helper_forced=サイト管理者の設定により、新しいリポジトリは強制的にプライベートになります。
|
||||
visibility_fork_helper=(この変更はすべてのフォークに適用されます)
|
||||
visibility_fork_helper=(この変更はすべてのフォークの可視性に影響します。)
|
||||
clone_helper=クローンに関してお困りであれば<a target="_blank" rel="noopener noreferrer" href="%s">ヘルプ</a>を参照しましょう。
|
||||
fork_repo=リポジトリをフォーク
|
||||
fork_from=フォーク元
|
||||
|
@ -1043,15 +1085,15 @@ repo_desc_helper=簡単な説明を入力してください (オプション)
|
|||
repo_lang=言語
|
||||
repo_gitignore_helper=.gitignoreテンプレートを選択してください。
|
||||
repo_gitignore_helper_desc=一般的な言語のテンプレートリストから、追跡しないファイルの設定を選択します。 各言語のビルドツールが生成する典型的なファイルが、デフォルトで.gitignoreに含まれます。
|
||||
issue_labels=イシューラベル
|
||||
issue_labels_helper=イシューのラベルセットを選択
|
||||
issue_labels=ラベル
|
||||
issue_labels_helper=ラベルセットを選択
|
||||
license=ライセンス
|
||||
license_helper=ライセンス ファイルを選択してください。
|
||||
license_helper=ライセンス ファイルを選択してください
|
||||
license_helper_desc=ライセンスにより、他人があなたのコードに対して何ができて何ができないのかを規定します。 どれがプロジェクトにふさわしいか迷っていますか? <a target="_blank" rel="noopener noreferrer" href="%s">ライセンス選択サイト</a> も確認してみてください。
|
||||
object_format=オブジェクトのフォーマット
|
||||
object_format_helper=リポジトリのオブジェクトフォーマット。後で変更することはできません。SHA1 は最も互換性があります。
|
||||
object_format_helper=リポジトリのオブジェクトフォーマット。後で変更することはできません。SHA1 が最も互換性があります。
|
||||
readme=README
|
||||
readme_helper=READMEファイル テンプレートを選択してください。
|
||||
readme_helper=READMEファイル テンプレートを選択してください
|
||||
readme_helper_desc=プロジェクトについての説明をひととおり書く場所です。
|
||||
auto_init=リポジトリの初期設定 (.gitignore、ライセンスファイル、READMEファイルの追加)
|
||||
trust_model_helper=署名検証のトラストモデルを選択します。 選択肢は次のとおりです:
|
||||
|
@ -1383,7 +1425,7 @@ commitstatus.failure=失敗
|
|||
commitstatus.pending=保留
|
||||
commitstatus.success=成功
|
||||
|
||||
ext_issues=外部イシューへのアクセス
|
||||
ext_issues=外部イシュー
|
||||
ext_issues.desc=外部のイシュートラッカーへのリンク。
|
||||
|
||||
projects=プロジェクト
|
||||
|
@ -1418,7 +1460,7 @@ projects.column.set_default_desc=この列を未分類のイシューやプル
|
|||
projects.column.unset_default=デフォルトを解除
|
||||
projects.column.unset_default_desc=この列からデフォルト列の設定を解除します
|
||||
projects.column.delete=列を削除
|
||||
projects.column.deletion_desc=プロジェクト列を削除すると、関連するすべてのイシューが '未分類' に移動します。 続行しますか?
|
||||
projects.column.deletion_desc=プロジェクト列を削除すると、関連するすべてのイシューがデフォルトの列に移動します。 続行しますか?
|
||||
projects.column.color=カラー
|
||||
projects.open=オープン
|
||||
projects.close=クローズ
|
||||
|
@ -1466,10 +1508,10 @@ issues.new_label=新しいラベル
|
|||
issues.new_label_placeholder=ラベル名
|
||||
issues.new_label_desc_placeholder=説明
|
||||
issues.create_label=ラベルを作成
|
||||
issues.label_templates.title=定義済みラベルセットの読み込み
|
||||
issues.label_templates.info=ラベルがまだありません。"新しいラベル"でラベルを作成するか、次の定義済みのラベルセットを使用してください:
|
||||
issues.label_templates.helper=ラベルセットを選択
|
||||
issues.label_templates.use=ラベルセットを使用
|
||||
issues.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.add_label=がラベル %s を追加 %s
|
||||
issues.add_labels=がラベル %s を追加 %s
|
||||
|
@ -1589,7 +1631,7 @@ issues.role.collaborator_helper=このユーザーはリポジトリ上で共同
|
|||
issues.role.first_time_contributor=初めての貢献者
|
||||
issues.role.first_time_contributor_helper=これは、このユーザーによるリポジトリへの最初の貢献です。
|
||||
issues.role.contributor=貢献者
|
||||
issues.role.contributor_helper=このユーザーは以前にリポジトリにコミットしています。
|
||||
issues.role.contributor_helper=このユーザーは以前にこのリポジトリにコミットしています。
|
||||
issues.re_request_review=レビューを再依頼
|
||||
issues.is_stale=このレビューのあと、このPRに変更がありました
|
||||
issues.remove_request_review=レビュー依頼を取り消し
|
||||
|
@ -1604,7 +1646,7 @@ issues.label_title=名前
|
|||
issues.label_description=説明
|
||||
issues.label_color=カラー
|
||||
issues.label_exclusive=排他
|
||||
issues.label_archive=アーカイブ ラベル
|
||||
issues.label_archive=ラベルをアーカイブ
|
||||
issues.label_archived_filter=アーカイブされたラベルを表示
|
||||
issues.label_archive_tooltip=アーカイブされたラベルは、ラベルによる検索時のサジェストからデフォルトで除外されます。
|
||||
issues.label_exclusive_desc=ラベル名を <code>スコープ/アイテム</code> の形にすることで、他の <code>スコープ/</code> ラベルと排他的になります。
|
||||
|
@ -1636,8 +1678,8 @@ issues.lock.unknown_reason=未定義の理由ではイシューをロックで
|
|||
issues.lock_duplicate=イシューは二重にロックできません。
|
||||
issues.unlock_error=ロックされていないイシューをアンロックできません。
|
||||
issues.lock_with_reason=が<strong>%s</strong>のためロックし会話を共同作業者に限定 %s
|
||||
issues.lock_no_reason=がロックして会話を共同作業者に限定 %s
|
||||
issues.unlock_comment=がこの会話をアンロック %s
|
||||
issues.lock_no_reason=ロックされており、会話が共同作業者に制限されています %s
|
||||
issues.unlock_comment=この会話のロックを解除 %s
|
||||
issues.lock_confirm=ロック
|
||||
issues.unlock_confirm=アンロック
|
||||
issues.lock.notice_1=- 他のユーザーはこのイシューに新しいコメントを追加できません。
|
||||
|
@ -1662,9 +1704,9 @@ issues.stop_tracking=タイマー 終了
|
|||
issues.stop_tracking_history=`が作業を終了 %s`
|
||||
issues.cancel_tracking=中止
|
||||
issues.cancel_tracking_history=`がタイムトラッキングを中止 %s`
|
||||
issues.add_time=手で時間を入力
|
||||
issues.add_time=手動で時間を入力
|
||||
issues.del_time=このタイムログを削除
|
||||
issues.add_time_short=時間入力
|
||||
issues.add_time_short=時間を入力
|
||||
issues.add_time_cancel=キャンセル
|
||||
issues.add_time_history=`が作業時間を追加 %s`
|
||||
issues.del_time_history=`が作業時間を削除 %s`
|
||||
|
@ -1691,7 +1733,7 @@ issues.due_date_added=が期日 %s を追加 %s
|
|||
issues.due_date_modified=が期日を %[2]s から %[1]s に変更 %[3]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.issue_no_dependencies=依存関係が設定されていません。
|
||||
issues.dependency.pr_no_dependencies=依存関係が設定されていません。
|
||||
|
@ -1709,7 +1751,7 @@ issues.dependency.issue_closing_blockedby=このイシューのクローズは
|
|||
issues.dependency.issue_close_blocks=このイシューは、これらのイシューのクローズをブロックしています
|
||||
issues.dependency.pr_close_blocks=このプルリクエストは、これらのイシューのクローズをブロックしています
|
||||
issues.dependency.issue_close_blocked=このイシューをクローズするには、ブロックしているイシューをすべてクローズする必要があります。
|
||||
issues.dependency.issue_batch_close_blocked=選択したイシューの一括クローズはできません。 イシュー #%d に、まだオープン中の依存関係があります。
|
||||
issues.dependency.issue_batch_close_blocked=イシュー #%d にまだ依存関係があるため、選択したイシューを一括で閉じることはできません
|
||||
issues.dependency.pr_close_blocked=このプルリクエストを操作するには、ブロックしているイシューをすべてクローズする必要があります。
|
||||
issues.dependency.blocks_short=ブロック対象
|
||||
issues.dependency.blocked_by_short=依存先
|
||||
|
@ -1824,7 +1866,7 @@ pulls.required_status_check_administrator=管理者であるため、このプ
|
|||
pulls.blocked_by_approvals=このプルリクエストはまだ承認数が足りません。 %[1]d/%[2]dの承認を得ています。
|
||||
pulls.blocked_by_rejection=このプルリクエストは公式レビューアにより変更要請されています。
|
||||
pulls.blocked_by_official_review_requests=このプルリクエストには公式レビュー依頼があります。
|
||||
pulls.blocked_by_outdated_branch=このプルリクエストは遅れのためブロックされています。
|
||||
pulls.blocked_by_outdated_branch=このプルリクエストは古いためブロックされています。
|
||||
pulls.blocked_by_changed_protected_files_1=このプルリクエストは保護しているファイルを変更するためブロックされています:
|
||||
pulls.blocked_by_changed_protected_files_n=このプルリクエストは保護しているファイルを変更するためブロックされています:
|
||||
pulls.can_auto_merge_desc=このプルリクエストは自動的にマージできます。
|
||||
|
@ -1854,17 +1896,17 @@ pulls.merge_commit_id=マージコミットID
|
|||
pulls.require_signed_wont_sign=ブランチでは署名されたコミットが必須ですが、このマージでは署名がされません
|
||||
|
||||
pulls.invalid_merge_option=このプルリクエストでは、指定したマージ方法は使えません。
|
||||
pulls.merge_conflict=マージ失敗: マージ中にコンフリクトがありました。 ヒント: 別のストラテジーを試してみてください
|
||||
pulls.merge_conflict=マージ失敗: マージ中にコンフリクトがありました。 ヒント: 別の方法を試してみてください
|
||||
pulls.merge_conflict_summary=エラーメッセージ
|
||||
pulls.rebase_conflict=マージ失敗: コミット %[1]s のリベース中にコンフリクトがありました。 ヒント: 別のストラテジーを試してみてください
|
||||
pulls.rebase_conflict=マージ失敗: コミット %[1]s のリベース中にコンフリクトがありました。 ヒント: 別の方法を試してみてください
|
||||
pulls.rebase_conflict_summary=エラーメッセージ
|
||||
pulls.unrelated_histories=マージ失敗: マージHEADとベースには共通する履歴がありません。 ヒント: 別のストラテジーを試してみてください
|
||||
pulls.merge_out_of_date=マージ失敗: マージの生成中にベースが更新されました。 ヒント: もう一度試してみてください
|
||||
pulls.head_out_of_date=マージ失敗: マージの生成中に head が更新されました。 ヒント: もう一度試してみてください
|
||||
pulls.unrelated_histories=マージ失敗: マージHEADとベースには共通する履歴がありません。 ヒント: 別の方法を試してみてください
|
||||
pulls.merge_out_of_date=マージ失敗: マージの生成中にベースが更新されました。 ヒント: もう一度試してみてください。
|
||||
pulls.head_out_of_date=マージ失敗: マージの生成中に head が更新されました。 ヒント: もう一度試してみてください。
|
||||
pulls.has_merged=失敗: プルリクエストはマージされていました。再度マージしたり、ターゲットブランチを変更することはできません。
|
||||
pulls.push_rejected=マージ失敗: プッシュは拒否されました。 このリポジトリのGitフックを見直してください。
|
||||
pulls.push_rejected_summary=拒否メッセージ全体:
|
||||
pulls.push_rejected_no_message=マージ失敗: プッシュは拒否され、リモートからのメッセージはありません。<br>このリポジトリのGitフックを見直してください
|
||||
pulls.push_rejected_no_message=マージ失敗: プッシュは拒否され、リモートからのメッセージはありません。このリポジトリのGitフックを確認して下さい
|
||||
pulls.open_unmerged_pull_exists=`同じ条件のプルリクエスト (#%d) が未処理のため、再オープンはできません。`
|
||||
pulls.status_checking=いくつかのステータスチェックが待機中です
|
||||
pulls.status_checks_success=ステータスチェックはすべて成功しました
|
||||
|
@ -1883,7 +1925,7 @@ pulls.outdated_with_base_branch=このブランチはベースブランチに対
|
|||
pulls.close=プルリクエストをクローズ
|
||||
pulls.closed_at=`がプルリクエストをクローズ <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||
pulls.reopened_at=`がプルリクエストを再オープン <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||
pulls.cmd_instruction_hint=`コマンドラインの手順 を表示します。`
|
||||
pulls.cmd_instruction_hint=コマンドラインの手順を表示
|
||||
pulls.cmd_instruction_checkout_title=チェックアウト
|
||||
pulls.cmd_instruction_checkout_desc=プロジェクトリポジトリから新しいブランチをチェックアウトし、変更内容をテストします。
|
||||
pulls.cmd_instruction_merge_title=マージ
|
||||
|
@ -1942,7 +1984,7 @@ milestones.filter_sort.least_issues=イシューの少ない順
|
|||
|
||||
signing.will_sign=このコミットは鍵 "%s" で署名されます。
|
||||
signing.wont_sign.error=コミットの署名可否を確認中にエラーが発生しました。
|
||||
signing.wont_sign.nokey=このコミットに署名するための鍵がありません。
|
||||
signing.wont_sign.nokey=このインスタンスには、このコミットに署名するための鍵がありません。
|
||||
signing.wont_sign.never=コミットが署名されることはありません。
|
||||
signing.wont_sign.always=コミットは常に署名されます。
|
||||
signing.wont_sign.pubkey=アカウントに公開鍵が登録されていないため、コミットは署名されません。
|
||||
|
@ -1954,7 +1996,7 @@ signing.wont_sign.commitssigned=関連するコミットすべてが署名され
|
|||
signing.wont_sign.approved=PRが未承認のため、マージは署名されません。
|
||||
signing.wont_sign.not_signed_in=サインインしていません。
|
||||
|
||||
ext_wiki=外部Wikiへのアクセス
|
||||
ext_wiki=外部Wiki
|
||||
ext_wiki.desc=外部Wikiへのリンク。
|
||||
|
||||
wiki=Wiki
|
||||
|
@ -1972,8 +2014,8 @@ wiki.save_page=ページを保存
|
|||
wiki.last_commit_info=%s が %s にこのページを編集
|
||||
wiki.edit_page_button=編集
|
||||
wiki.new_page_button=新規ページ
|
||||
wiki.file_revision=ページ・リビジョン
|
||||
wiki.wiki_page_revisions=Wikiページのリビジョン
|
||||
wiki.file_revision=ページの改訂履歴
|
||||
wiki.wiki_page_revisions=Wikiページの改訂履歴
|
||||
wiki.back_to_wiki=Wikiページに戻る
|
||||
wiki.delete_page_button=ページを削除
|
||||
wiki.delete_page_notice_1=Wikiページ "%s" の削除は元に戻せません。 続行しますか?
|
||||
|
@ -2027,7 +2069,7 @@ activity.unresolved_conv_label=オープン
|
|||
activity.title.releases_1=%d件のリリース
|
||||
activity.title.releases_n=%d件のリリース
|
||||
activity.title.releases_published_by=%sが%sによって発行されました
|
||||
activity.published_release_label=発行
|
||||
activity.published_release_label=リリース
|
||||
activity.no_git_activity=この期間にはコミットのアクティビティがありません。
|
||||
activity.git_stats_exclude_merges=マージを除くと、
|
||||
activity.git_stats_author_1=%d人の作成者
|
||||
|
@ -2103,12 +2145,12 @@ settings.sync_mirror=今すぐ同期
|
|||
settings.pull_mirror_sync_in_progress=現在、リモート %s から変更をプルしています。
|
||||
settings.push_mirror_sync_in_progress=現在、リモート %s へ変更をプッシュしています。
|
||||
settings.site=Webサイト
|
||||
settings.update_settings=設定を更新
|
||||
settings.update_settings=設定を保存
|
||||
settings.update_mirror_settings=ミラーリング設定を更新
|
||||
settings.branches.switch_default_branch=デフォルトブランチを切り替え
|
||||
settings.branches.update_default_branch=デフォルトブランチを更新
|
||||
settings.branches.add_new_rule=新しいルールを追加
|
||||
settings.advanced_settings=拡張設定
|
||||
settings.advanced_settings=詳細設定
|
||||
settings.wiki_desc=Wikiを有効にする
|
||||
settings.use_internal_wiki=ビルトインのWikiを使用する
|
||||
settings.use_external_wiki=外部のWikiを使用する
|
||||
|
@ -2139,14 +2181,14 @@ settings.pulls.allow_rebase_update=リベースでプルリクエストのブラ
|
|||
settings.pulls.default_delete_branch_after_merge=デフォルトでプルリクエストのブランチをマージ後に削除する
|
||||
settings.pulls.default_allow_edits_from_maintainers=デフォルトでメンテナからの編集を許可する
|
||||
settings.releases_desc=リリースを有効にする
|
||||
settings.packages_desc=リポジトリパッケージレジストリを有効にする
|
||||
settings.projects_desc=リポジトリプロジェクトを有効にする
|
||||
settings.actions_desc=Actionsを有効にする
|
||||
settings.admin_settings=管理者用設定
|
||||
settings.packages_desc=パッケージレジストリを有効にする
|
||||
settings.projects_desc=プロジェクトを有効にする
|
||||
settings.actions_desc=Forgejo Actionsを使用して統合CI/CDパイプラインを有効化する
|
||||
settings.admin_settings=管理者設定
|
||||
settings.admin_enable_health_check=リポジトリのヘルスチェックを有効にする (git fsck)
|
||||
settings.admin_code_indexer=コードインデクサ
|
||||
settings.admin_stats_indexer=コード統計インデクサ
|
||||
settings.admin_indexer_commit_sha=最新インデックス済みSHA
|
||||
settings.admin_indexer_commit_sha=最新インデックス済みコミット
|
||||
settings.admin_indexer_unindexed=未インデックス
|
||||
settings.reindex_button=インデックス再作成キューに追加
|
||||
settings.reindex_requested=再インデックスを要求しました
|
||||
|
@ -2259,7 +2301,7 @@ settings.slack_icon_url=アイコンのURL
|
|||
settings.slack_color=色
|
||||
settings.discord_username=ユーザー名
|
||||
settings.discord_icon_url=アイコンのURL
|
||||
settings.event_desc=トリガー:
|
||||
settings.event_desc=通知トリガー:
|
||||
settings.event_push_only=プッシュのイベント
|
||||
settings.event_send_everything=すべてのイベント
|
||||
settings.event_choose=イベントを指定…
|
||||
|
@ -2279,32 +2321,32 @@ settings.event_push_desc=Gitがリポジトリにプッシュを行ったとき
|
|||
settings.event_repository=リポジトリ
|
||||
settings.event_repository_desc=リポジトリが作成・削除されたとき。
|
||||
settings.event_header_issue=イシューのイベント
|
||||
settings.event_issues=イシュー
|
||||
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_desc=イシューのラベルが更新・クリアされたとき。
|
||||
settings.event_issue_milestone=イシューのマイルストーン
|
||||
settings.event_issue_milestone_desc=イシューのマイルストーンが設定・解除されたとき。
|
||||
settings.event_issue_comment=イシューへのコメント
|
||||
settings.event_issue_label=ラベル
|
||||
settings.event_issue_label_desc=イシューのラベルが追加・削除されたとき。
|
||||
settings.event_issue_milestone=マイルストーン
|
||||
settings.event_issue_milestone_desc=マイルストーンが追加・削除・変更されたとき。
|
||||
settings.event_issue_comment=コメント
|
||||
settings.event_issue_comment_desc=イシューへのコメントが作成・編集・削除されたとき。
|
||||
settings.event_header_pull_request=プルリクエストのイベント
|
||||
settings.event_pull_request=プルリクエスト
|
||||
settings.event_pull_request=変更
|
||||
settings.event_pull_request_desc=プルリクエストがオープン・クローズ・再オープン・編集されたとき。
|
||||
settings.event_pull_request_assign=プルリクエストのアサイン
|
||||
settings.event_pull_request_assign=アサイン
|
||||
settings.event_pull_request_assign_desc=プルリクエストの担当者が割り当て・解除されたとき。
|
||||
settings.event_pull_request_label=プルリクエストのラベル
|
||||
settings.event_pull_request_label_desc=プルリクエストのラベルが更新・クリアされたとき。
|
||||
settings.event_pull_request_milestone=プルリクエストのマイルストーン
|
||||
settings.event_pull_request_milestone_desc=プルリクエストのマイルストーンが設定・解除されたとき。
|
||||
settings.event_pull_request_comment=プルリクエストへのコメント
|
||||
settings.event_pull_request_label=ラベル
|
||||
settings.event_pull_request_label_desc=プルリクエストのラベルが追加・削除されたとき。
|
||||
settings.event_pull_request_milestone=マイルストーン
|
||||
settings.event_pull_request_milestone_desc=マイルストーンが追加・削除・変更されたとき。
|
||||
settings.event_pull_request_comment=コメント
|
||||
settings.event_pull_request_comment_desc=プルリクエストへのコメントが作成・編集・削除されたとき。
|
||||
settings.event_pull_request_review=プルリクエストのレビュー
|
||||
settings.event_pull_request_review=レビュー
|
||||
settings.event_pull_request_review_desc=プルリクエストの承認・拒否、またはレビューコメントが付いたとき。
|
||||
settings.event_pull_request_sync=プルリクエストの同期
|
||||
settings.event_pull_request_sync_desc=プルリクエストが同期されたとき。
|
||||
settings.event_pull_request_review_request=プルリクエストのレビュー依頼
|
||||
settings.event_pull_request_sync=同期
|
||||
settings.event_pull_request_sync_desc=ターゲットブランチが自動で更新されたとき。
|
||||
settings.event_pull_request_review_request=レビュー依頼
|
||||
settings.event_pull_request_review_request_desc=プルリクエストのレビューが依頼されたとき、または依頼が削除されたとき。
|
||||
settings.event_pull_request_approvals=プルリクエストの承認
|
||||
settings.event_pull_request_merge=プルリクエストのマージ
|
||||
|
@ -2392,12 +2434,12 @@ settings.protect_check_status_contexts_list=この1週間に、このリポジ
|
|||
settings.protect_status_check_matched=マッチ
|
||||
settings.protect_invalid_status_check_pattern=`不正なステータスチェックパターン: "%s"`
|
||||
settings.protect_no_valid_status_check_patterns=有効なステータスチェックパターンがありません。
|
||||
settings.protect_required_approvals=必要な承認数:
|
||||
settings.protect_required_approvals=必要な承認数
|
||||
settings.protect_required_approvals_desc=肯定的なレビューの数を満たしたプルリクエストしかマージできないようにします。
|
||||
settings.protect_approvals_whitelist_enabled=ホワイトリストに登録したユーザーやチームに承認を制限
|
||||
settings.protect_approvals_whitelist_enabled_desc=ホワイトリストに登録したユーザーやチームによるレビューのみを、必要な承認とみなします。 承認のホワイトリストが無い場合は、書き込み権限がある人によるレビューを必要な承認とみなします。
|
||||
settings.protect_approvals_whitelist_users=ホワイトリストに含めるレビューア:
|
||||
settings.protect_approvals_whitelist_teams=ホワイトリストに含めるレビューチーム:
|
||||
settings.protect_approvals_whitelist_users=ホワイトリストに含めるレビューア
|
||||
settings.protect_approvals_whitelist_teams=ホワイトリストに含めるレビューチーム
|
||||
settings.dismiss_stale_approvals=古くなった承認を取り消す
|
||||
settings.dismiss_stale_approvals_desc=プルリクエストの内容を変える新たなコミットがブランチにプッシュされた場合、以前の承認を取り消します。
|
||||
settings.require_signed_commits=コミット署名必須
|
||||
|
@ -2406,7 +2448,7 @@ settings.protect_branch_name_pattern=保護ブランチ名のパターン
|
|||
settings.protect_branch_name_pattern_desc=保護ブランチ名のパターン。書き方については <a href="%s">ドキュメント</a> を参照してください。例: main, release/**
|
||||
settings.protect_patterns=パターン
|
||||
settings.protect_protected_file_patterns=保護されるファイルのパターン (セミコロン';'で区切る):
|
||||
settings.protect_protected_file_patterns_desc=保護されたファイルは、このブランチにファイルを追加・編集・削除する権限を持つユーザーであっても、直接変更することができなくなります。 セミコロン(';')で区切って複数のパターンを指定できます。 パターンの文法については <a href='%s'>github.com/gobwas/glob</a> を参照してください。 例: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>
|
||||
settings.protect_protected_file_patterns_desc=保護されたファイルは、このブランチにファイルを追加・編集・削除する権限を持つユーザーであっても、直接変更することができなくなります。 セミコロン(';')で区切って複数のパターンを指定できます。 パターンの文法については <a href='%s'>%s</a> を参照してください。 例: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>
|
||||
settings.protect_unprotected_file_patterns=保護しないファイルのパターン (セミコロン';'で区切る):
|
||||
settings.protect_unprotected_file_patterns_desc=保護しないファイルは、ユーザーに書き込み権限があればプッシュ制限をバイパスして直接変更できます。 セミコロン(';')で区切って複数のパターンを指定できます。 パターンの文法については <a href='%[1]s'>%[2]s</a> を参照してください。 例: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>
|
||||
settings.add_protected_branch=保護を有効にする
|
||||
|
@ -2574,10 +2616,10 @@ release.tag_helper_existing=存在するタグです。
|
|||
release.title=リリース タイトル
|
||||
release.title_empty=タイトルは空にできません。
|
||||
release.message=このリリースの説明
|
||||
release.prerelease_desc=プレリリース
|
||||
release.prerelease_desc=プレリリースとしてマーク
|
||||
release.prerelease_helper=このリリースが本番使用に適さないことを示します。
|
||||
release.cancel=キャンセル
|
||||
release.publish=リリースを発行
|
||||
release.publish=リリースを公開
|
||||
release.save_draft=下書きを保存
|
||||
release.edit_release=リリースを更新
|
||||
release.delete_release=リリースを削除
|
||||
|
@ -2594,7 +2636,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 のタグ
|
||||
|
||||
|
@ -2689,15 +2731,15 @@ commits.renamed_from = %sから名前を変更
|
|||
pulls.made_using_agit = Agit
|
||||
pulls.agit_explanation = Agitによるワークフローを作成します。Agitでは、貢献者は変更をforkしたりブランチを作るのではなく、"git push"して提案します。
|
||||
contributors.contribution_type.deletions = 削除
|
||||
settings.units.add_more = さらに...
|
||||
settings.wiki_globally_editable = 誰にでもWikiの編集を許す
|
||||
settings.units.add_more = さらに有効にする
|
||||
settings.wiki_globally_editable = 誰でもWikiを編集できる様にする
|
||||
settings.confirmation_string = 確認
|
||||
settings.wiki_rename_branch_main_notices_1 = この操作は 取り消し<strong>できません</strong> 。
|
||||
stars = スター
|
||||
n_tag_few = %s のタグ
|
||||
settings.graphql_url = GraphQL URL
|
||||
n_branch_one = %s のブランチ
|
||||
settings.units.units = リポジトリ機能
|
||||
settings.units.units = 機能設定
|
||||
settings.wiki_rename_branch_main_notices_2 = これにより、%s のリポジトリ wiki の内部ブランチの名前が永久に変更されます。既存のチェックアウトを更新する必要があります。
|
||||
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.enforce_on_admins = リポジトリ管理者にこのルールを適用する
|
||||
|
@ -2747,6 +2789,43 @@ form.string_too_long = 指定された文字列は %d 文字より長いです
|
|||
project = プロジェクト
|
||||
subscribe.issue.guest.tooltip = このイシューを購読するにはサインインしてください。
|
||||
subscribe.pull.guest.tooltip = このプルリクエストを購読するにはサインインしてください。
|
||||
issues.author.tooltip.pr = このユーザーはこのプルリクエストの作成者です。
|
||||
issues.author.tooltip.issue = このユーザーはこの問題の作成者です。
|
||||
mirror_public_key = 公開SSHキー
|
||||
mirror_use_ssh.text = SSH認証を使用する
|
||||
mirror_use_ssh.helper = このオプションを選択すると、Forgejo は SSH 経由の Git でリポジトリをミラーリングし、キーペアを作成します。生成された公開キーが宛先リポジトリにプッシュできるように承認されていることを確認する必要があります。このオプションを選択した場合、パスワードベースの認証は使用できません。
|
||||
comments.edit.already_changed = コメントの変更を保存できません。コンテンツは既に別のユーザーによって変更されているようです。変更が上書きされないように、ページを更新して再度編集してください
|
||||
no_eol.tooltip = このファイルには末尾の行末文字が含まれていません。
|
||||
issues.edit.already_changed = イシューの変更を保存できません。コンテンツは既に別のユーザーによって変更されているようです。変更が上書きされないように、ページを更新して再度編集してください
|
||||
no_eol.text = EOLなし
|
||||
pulls.edit.already_changed = プルリクエストの変更を保存できません。コンテンツは既に別のユーザーによって変更されているようです。変更が上書きされないように、ページを更新して再度編集してください
|
||||
pulls.cmd_instruction_merge_warning = <b>警告:</b> このリポジトリでは「手動マージの自動検出」設定が有効になっていません。後でこのプル リクエストを手動でマージ済みとしてマークする必要があります。
|
||||
n_release_one = %s リリース
|
||||
n_release_few = %s リリース
|
||||
milestones.filter_sort.name = 名前
|
||||
mirror_use_ssh.not_available = SSH認証は利用できません。
|
||||
mirror_denied_combination = 公開鍵とパスワードベースの認証を組み合わせて使用することはできません。
|
||||
activity.navbar.pulse = 活動状況
|
||||
activity.published_prerelease_label = プレリリース
|
||||
activity.published_tag_label = タグ
|
||||
settings.transfer_quota_exceeded = 新しい所有者 (%s) は割り当て量を超えています。リポジトリは転送されていません。
|
||||
settings.pull_mirror_sync_quota_exceeded = 割り当て量を超過したため、変更はプルされません。
|
||||
activity.commit = コミットアクティビティ
|
||||
settings.federation_settings = フェデレーション設定
|
||||
settings.federation_not_enabled = インスタンスでフェデレーションが有効になっていません。
|
||||
settings.federation_apapiurl = このリポジトリのフェデレーション URL。これをコピーして、フォロー リポジトリの URL として別のリポジトリのフェデレーション設定に貼り付けます。
|
||||
settings.federation_following_repos = フォローしているリポジトリの URL。空白なしで";"で区切られます。
|
||||
settings.mirror_settings.push_mirror.copy_public_key = 公開鍵をコピー
|
||||
release.invalid_external_url = 無効な外部URL: "%s"
|
||||
release.type_attachment = 添付ファイル
|
||||
release.asset_external_url = 外部URL
|
||||
release.type_external_asset = 外部アセット
|
||||
release.asset_name = アセット名
|
||||
release.add_external_asset = 外部アセットを追加
|
||||
issues.all_title = 全て
|
||||
settings.protect_new_rule = 新しいブランチ保護ルールを作成する
|
||||
settings.discord_icon_url.exceeds_max_length = アイコンのURLは 2048 文字以下にする必要があります
|
||||
issues.new.assign_to_me = 自分に割り当て
|
||||
|
||||
[graphs]
|
||||
component_loading = %s の読み込み中...
|
||||
|
@ -2831,18 +2910,18 @@ members.invite_now=今すぐ招待
|
|||
|
||||
teams.join=参加
|
||||
teams.leave=脱退
|
||||
teams.leave.detail=%s から脱退しますか?
|
||||
teams.leave.detail=本当に %s から脱退しますか?
|
||||
teams.can_create_org_repo=リポジトリを作成
|
||||
teams.can_create_org_repo_helper=メンバーは組織のリポジトリを新たに作成できます。作成者には新しいリポジトリの管理者権限が与えられます。
|
||||
teams.none_access=アクセスなし
|
||||
teams.none_access_helper=メンバは、このユニットで表示や他の操作を行うことはできません。
|
||||
teams.general_access=一般的なアクセス
|
||||
teams.none_access_helper=「アクセスなし」オプションはプライベートリポジトリにのみ影響します。
|
||||
teams.general_access=カスタム権限
|
||||
teams.general_access_helper=メンバーの権限は下記の権限テーブルで決定されます。
|
||||
teams.read_access=読み取り
|
||||
teams.read_access_helper=メンバーはチームリポジトリの閲覧とクローンが可能です。
|
||||
teams.write_access=書き込み
|
||||
teams.write_access_helper=メンバーはチームリポジトリの読み取りとプッシュが可能です。
|
||||
teams.admin_access=管理者アクセス権
|
||||
teams.admin_access=管理者権限
|
||||
teams.admin_access_helper=メンバーは、チームリポジトリへのプル、プッシュ、共同作業者の追加が可能です。
|
||||
teams.no_desc=このチームには説明がありません。
|
||||
teams.settings=設定
|
||||
|
@ -2858,7 +2937,7 @@ teams.delete_team_desc=チームを削除すると、メンバーはこのリポ
|
|||
teams.delete_team_success=チームを削除しました。
|
||||
teams.read_permission_desc=このチームは<strong>読み取り</strong>アクセス権を持ちます: メンバーはチームリポジトリの閲覧とクローンが可能です。
|
||||
teams.write_permission_desc=このチームは<strong>書き込み</strong>アクセス権を持ちます: メンバーはチームリポジトリの読み取りとプッシュが可能です。
|
||||
teams.admin_permission_desc=このチームは<strong>管理者</strong>アクセス権を持ちます: メンバーはチームリポジトリの読み取り、プッシュ、共同作業者の追加が可能です。
|
||||
teams.admin_permission_desc=このチームは<strong>管理者</strong>アクセス権が付与されます: メンバーはチームリポジトリの読み取り、プッシュ、共同作業者の追加が可能です。
|
||||
teams.create_repo_permission_desc=さらに、このチームには<strong>リポジトリの作成</strong>権限が与えられています: メンバーは組織のリポジトリを新たに作成できます。
|
||||
teams.repositories=チームのリポジトリ
|
||||
teams.search_repo_placeholder=リポジトリを検索…
|
||||
|
@ -2888,7 +2967,7 @@ dashboard=ダッシュボード
|
|||
identity_access=アイデンティティとアクセス
|
||||
users=ユーザーアカウント
|
||||
organizations=組織
|
||||
assets=コード アセット
|
||||
assets=コードアセット
|
||||
repositories=リポジトリ
|
||||
hooks=Webhook
|
||||
integrations=連携
|
||||
|
@ -2937,14 +3016,14 @@ dashboard.archive_cleanup=古いリポジトリアーカイブの削除
|
|||
dashboard.deleted_branches_cleanup=削除ブランチのクリーンアップ
|
||||
dashboard.update_migration_poster_id=移行する投稿者IDの更新
|
||||
dashboard.git_gc_repos=すべてのリポジトリでガベージコレクションを実行
|
||||
dashboard.resync_all_sshkeys='.ssh/authorized_keys' ファイルをForgejo上のSSHキーで更新
|
||||
dashboard.resync_all_sshprincipals='.ssh/authorized_principals' ファイルをForgejo上のSSHプリンシパルで更新
|
||||
dashboard.resync_all_hooks=すべてのリポジトリの pre-receive, update, post-receive フックを更新する。
|
||||
dashboard.resync_all_sshkeys=Forgejo SSH キーを使用して".ssh/authorized_keys"ファイルを更新します。
|
||||
dashboard.resync_all_sshprincipals=Forgejo SSH プリンシパルを使用して".ssh/authorized_principals"ファイルを更新します。
|
||||
dashboard.resync_all_hooks=すべてのリポジトリの pre-receive, update, post-receive フックを更新する
|
||||
dashboard.reinit_missing_repos=レコードが存在するが見当たらないすべてのGitリポジトリを再初期化する
|
||||
dashboard.sync_external_users=外部ユーザーデータの同期
|
||||
dashboard.cleanup_hook_task_table=hook_taskテーブルのクリーンアップ
|
||||
dashboard.cleanup_packages=期限切れパッケージのクリーンアップ
|
||||
dashboard.cleanup_actions=Actionsの期限切れのログとアーティファクトのクリーンアップ
|
||||
dashboard.cleanup_actions=Actionsから期限切れのログとアーティファクトのクリーンアップする
|
||||
dashboard.server_uptime=サーバーの稼働時間
|
||||
dashboard.current_goroutine=現在のGoroutine数
|
||||
dashboard.current_memory_usage=現在のメモリ使用量
|
||||
|
@ -3001,7 +3080,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=認証ソース
|
||||
|
@ -3012,21 +3091,21 @@ users.update_profile_success=ユーザーアカウントを更新しました。
|
|||
users.edit_account=ユーザーアカウントの編集
|
||||
users.max_repo_creation=リポジトリ数の上限
|
||||
users.max_repo_creation_desc=( -1を設定するとデフォルトの制限が適用されます)
|
||||
users.is_activated=ユーザーアカウントはアクティベート済み
|
||||
users.prohibit_login=サインイン無効
|
||||
users.is_activated=有効化されたアカウント
|
||||
users.prohibit_login=アカウントが停止されました
|
||||
users.is_admin=管理者
|
||||
users.is_restricted=制限あり
|
||||
users.allow_git_hook=Gitフックを作成可
|
||||
users.is_restricted=制限付きアカウント
|
||||
users.allow_git_hook=Gitフックを作成可能
|
||||
users.allow_git_hook_tooltip=Gitフックは、Forgejoを実行しているOSユーザーの権限で実行され、同じレベルのホストアクセス権を持つようになります。 その結果、この特別なGitフック権限を持つユーザーは、Forgejo上のすべてのリポジトリとForgejoで使用されているデータベースにアクセスし、変更を加えることができます。 したがって、Forgejoの管理者権限を取得することもできます。
|
||||
users.allow_import_local=ローカルリポジトリをインポート可
|
||||
users.allow_create_organization=組織を作成可
|
||||
users.allow_import_local=ローカルリポジトリをインポート可能
|
||||
users.allow_create_organization=組織を作成可能
|
||||
users.update_profile=ユーザーアカウントを更新
|
||||
users.delete_account=ユーザーアカウントを削除
|
||||
users.cannot_delete_self=自分自身を削除することはできません
|
||||
users.still_own_repo=このユーザーはまだ1つ以上のリポジトリを所有しています。 先にそれらのリポジトリを削除するか移転してください。
|
||||
users.still_has_org=このユーザーは組織のメンバーになっています。 先に組織からこのユーザーを削除してください。
|
||||
users.purge=ユーザーを抹消
|
||||
users.purge_help=強制的にユーザーとそのユーザーが所有していたリポジトリ、組織、パッケージを削除します。コメントもすべて削除します。
|
||||
users.purge=ユーザーを消去
|
||||
users.purge_help=強制的にユーザーとそのユーザーが所有していたリポジトリ、組織、パッケージを削除します。コメントとイシューもすべて削除します。
|
||||
users.still_own_packages=このユーザーはまだ1つ以上のパッケージを所有しています。先にそれらのパッケージを削除してください。
|
||||
users.deletion_success=ユーザーアカウントを削除しました。
|
||||
users.reset_2fa=2要素認証をリセット
|
||||
|
@ -3423,6 +3502,20 @@ self_check.database_collation_case_insensitive = データベースは %s とい
|
|||
config_settings = 設定
|
||||
config_summary = 概要
|
||||
self_check.database_inconsistent_collation_columns = データベースは %s という collation を用いていますが、これらのカラムは別のcollationを用いています。これは想定外の問題を引き起こす可能性があります。
|
||||
users.organization_creation.description = 新しい組織の作成を許可します。
|
||||
users.restricted.description = このユーザーが共同作業者として追加されているリポジトリおよび組織とのやり取りのみを許可します。これにより、このインスタンス上のパブリックリポジトリへのアクセスが防止されます。
|
||||
users.activated.description = メール認証の完了。アクティブ化されていないアカウントの所有者は、メール認証が完了するまでログインできません。
|
||||
users.admin.description = このユーザーに、Web UI および API を通じて利用できるすべての管理機能へのフルアクセス権を付与します。
|
||||
users.local_import.description = サーバーのローカルファイル システムからリポジトリをインポートできるようにします。これはセキュリティ上の問題になる可能性があります。
|
||||
users.block.description = このユーザーが自分のアカウントを通じてこのサービスとやり取りすることをブロックし、サインインを禁止します。
|
||||
emails.delete = メールアドレスを削除
|
||||
emails.delete_desc = このメールアドレスを削除してもよろしいですか?
|
||||
config.cache_test_succeeded = キャッシュ テストが成功しました。%s で応答が返されました。
|
||||
config.cache_test_slow = キャッシュ テストは成功しましたが、応答が遅いです: %s。
|
||||
emails.deletion_success = メールアドレスは削除されました。
|
||||
emails.delete_primary_email_error = プライマリメールを削除することはできません。
|
||||
config.app_slogan = インスタンスのスローガン
|
||||
config.cache_test = テストキャッシュ
|
||||
|
||||
|
||||
[action]
|
||||
|
@ -3778,6 +3871,14 @@ runs.no_workflows.documentation = Forgejo Action の詳細については、<a t
|
|||
variables.id_not_exist = idが%dの変数は存在しません。
|
||||
runs.workflow = ワークフロー
|
||||
runs.no_job_without_needs = ワークフローには、依存関係のないジョブが少なくとも 1 つ含まれている必要があります。
|
||||
workflow.dispatch.run = ワークフローを実行
|
||||
workflow.dispatch.success = ワークフローの実行が正常にリクエストされました。
|
||||
workflow.dispatch.trigger_found = このワークフローには <c>workflow_dispatch</c> イベントトリガーがあります。
|
||||
workflow.dispatch.use_from = ワークフローを使用する
|
||||
workflow.dispatch.input_required = 入力 "%s" に値が必要です。
|
||||
workflow.dispatch.invalid_input_type = 入力タイプ「%s」が無効です。
|
||||
workflow.dispatch.warn_input_limit = 最初の %d 個の入力のみを表示します。
|
||||
runs.no_job = ワークフローには少なくとも1つのジョブが含まれている必要があります
|
||||
|
||||
[projects]
|
||||
type-1.display_name=個人プロジェクト
|
||||
|
@ -3816,6 +3917,14 @@ no_results = 一致する結果が見つかりませんでした。
|
|||
fuzzy_tooltip = 入力された語句に近いものも結果に含める
|
||||
match = 一致
|
||||
match_tooltip = 検索語句に厳密に一致するもののみ結果に含める
|
||||
milestone_kind = マイルストーンを検索...
|
||||
union_tooltip = 空白で区切られたキーワードのいずれかに一致する結果を含める
|
||||
exact_tooltip = 検索語句と完全に一致する結果のみを含める
|
||||
issue_kind = イシューを検索...
|
||||
pull_kind = プルを検索...
|
||||
exact = 完全一致
|
||||
regexp_tooltip = 検索語句を正規表現として解釈する
|
||||
regexp = 正規表現
|
||||
|
||||
|
||||
[munits.data]
|
||||
|
@ -3830,4 +3939,27 @@ b = B
|
|||
[markup]
|
||||
filepreview.lines = %[3]s の %[1]d 行目から %[2]d 行目
|
||||
filepreview.line = %[2]s の %[1]d 行目
|
||||
filepreview.truncated = プレビューは途中から省略されています
|
||||
filepreview.truncated = プレビューは途中から省略されています
|
||||
|
||||
[repo.permissions]
|
||||
actions.write = <b>書き込み:</b> 保留中の CI/CD パイプラインを手動でトリガー、再起動、キャンセル、または承認します。
|
||||
ext_issues = 外部のイシュー追跡へのリンクにアクセスします。権限は外部で管理されます。
|
||||
ext_wiki = 外部 Wiki へのリンクにアクセスします。権限は外部で管理されます。
|
||||
projects.write = <b>書き込み:</b> プロジェクトと列を作成し、編集します。
|
||||
packages.read = <b>読み取り:</b> リポジトリに割り当てられたパッケージを表示およびダウンロードします。
|
||||
packages.write = <b>書き込み:</b> リポジトリに割り当てられたパッケージを公開および削除します。
|
||||
code.read = <b>読み取り:</b> リポジトリのコードにアクセスしてクローンを作成します。
|
||||
code.write = <b>書き込み:</b> リポジトリにプッシュし、ブランチとタグを作成します。
|
||||
issues.read = <b>読み取り:</b> イシューとコメントを読んで作成します。
|
||||
issues.write = <b>書き込み:</b> イシューを解決し、ラベル、マイルストーン、担当者、期限、依存関係などのメタデータを管理します。
|
||||
pulls.read = <b>読み取り:</b> プルリクエストの読み取りと作成。
|
||||
releases.read = <b>読み取り:</b> リリースを表示およびダウンロードします。
|
||||
releases.write = <b>書き込み:</b> リリースとそのアセットを公開、編集、削除します。
|
||||
pulls.write = <b>書き込み:</b> プルリクエストをクローズし、ラベル、マイルストーン、担当者、期限、依存関係などのメタデータを管理します。
|
||||
wiki.read = <b>読み取り:</b> 統合された wiki とその履歴を読み取れます。
|
||||
wiki.write = <b>書き込み:</b> 統合された Wiki 内のページを作成、更新、削除します。
|
||||
projects.read = <b>読み取り:</b> リポジトリ プロジェクト ボードにアクセスします。
|
||||
actions.read = <b>読み取り:</b> 統合された CI/CD パイプラインとそのログを表示します。
|
||||
|
||||
[translation_meta]
|
||||
test = これはテスト文字列です。Forgejo UI には表示されませんが、テスト目的で使用されます。早く済ませるために"ok"と入力するか楽しかった出来事を入力して下さい。そうすれば、完了することができます :)
|
|
@ -159,6 +159,20 @@ fuzzy_tooltip = Įtraukti rezultatus, kurie taip pat labai atitinka paieškos te
|
|||
repo_kind = Ieškoti saugyklų...
|
||||
code_search_unavailable = Kodų paieška šiuo metu nepasiekiama. Kreipkis į svetainės administratorių.
|
||||
org_kind = Ieškoti organizacijų...
|
||||
union = Bendrinis
|
||||
code_search_by_git_grep = Dabartiniai kodo paieškos rezultatai pateikiami atliekant „git grep“. Rezultatai gali būti geresni, jei svetainės administratorius įjungs kodo indeksuotoją.
|
||||
package_kind = Ieškoti paketų...
|
||||
project_kind = Ieškoti projektų...
|
||||
commit_kind = Ieškoti įsipareigojimų...
|
||||
runner_kind = Ieškoti vykdyklių...
|
||||
no_results = Nerasta atitinkamų rezultatų.
|
||||
issue_kind = Ieškoti problemų...
|
||||
branch_kind = Ieškoti šakų...
|
||||
milestone_kind = Ieškoti gairių...
|
||||
pull_kind = Ieškoti sujungimų...
|
||||
keyword_search_unavailable = Ieškoti pagal raktažodį šiuo metu nepasiekiamas. Susisiekite su svetainės administratoriumi.
|
||||
regexp = Reguliarusis reiškinys
|
||||
regexp_tooltip = Interpretuoti paieškos terminą kaip reguliariąją reiškinį
|
||||
|
||||
[actions]
|
||||
workflow.disable = Išjungti darbo eigą
|
||||
|
@ -171,6 +185,9 @@ runs.empty_commit_message = (tuščias įsipareigojimo pranešimas)
|
|||
submodule = Pomodulis
|
||||
changed_filemode = %[1]s → %[2]s
|
||||
symbolic_link = Virtualusis aplankas
|
||||
directory = Katalogas
|
||||
executable_file = Vykdomasis failas
|
||||
normal_file = Įprastas failas
|
||||
|
||||
[projects]
|
||||
deleted.display_name = Ištrintas projektas
|
||||
|
@ -182,4 +199,82 @@ type-3.display_name = Organizacijos projektas
|
|||
filepreview.truncated = Peržiūra buvo sutrumpinta
|
||||
|
||||
[mail]
|
||||
reset_password.text = Jei tai buvote jūs, spustelėkite toliau esančią nuorodą, kad atkurtumėte savo paskyrą per <b>%s</b>:
|
||||
reset_password.text = Jei tai buvote jūs, spustelėkite toliau esančią nuorodą, kad atkurtumėte savo paskyrą per <b>%s</b>:
|
||||
|
||||
[heatmap]
|
||||
contributions_one = įnašas
|
||||
contributions_few = įnašai
|
||||
less = Mažiau
|
||||
more = Daugiau
|
||||
number_of_contributions_in_the_last_12_months = %s įnašų per pastaruosius 12 mėnesių
|
||||
contributions_zero = Įnašų nėra
|
||||
contributions_format = {contributions} {year} {month} {day}
|
||||
|
||||
[aria]
|
||||
navbar = Naršymo juosta
|
||||
footer = Puslapinė poraštė
|
||||
footer.software = Apie šią programinę įrangą
|
||||
footer.links = Nuorodos
|
||||
|
||||
[editor]
|
||||
buttons.quote.tooltip = Cituoti tekstą
|
||||
buttons.code.tooltip = Pridėti kodą
|
||||
buttons.link.tooltip = Pridėti nuorodą
|
||||
buttons.heading.tooltip = Pridėti antraštę
|
||||
buttons.bold.tooltip = Pridėti pusjuodį tekstą
|
||||
buttons.italic.tooltip = Pridėti kursyvinį tekstą
|
||||
buttons.list.unordered.tooltip = Pridėti punktų sąrašą
|
||||
buttons.list.ordered.tooltip = Pridėti numeruotą sąrašą
|
||||
buttons.list.task.tooltip = Pridėti užduočių sąrašą
|
||||
buttons.mention.tooltip = Minėti naudotoją arba komandą
|
||||
buttons.ref.tooltip = Nurodyti į problemą arba sujungimo prašymą
|
||||
buttons.switch_to_legacy.tooltip = Vietoj to naudoti senąjį rengyklę
|
||||
buttons.enable_monospace_font = Įjungti vienspalvį šriftą
|
||||
buttons.disable_monospace_font = Išjungti vienspalvį šriftą
|
||||
buttons.indent.tooltip = Įdėti elementus vienu lygiu
|
||||
buttons.unindent.tooltip = Išdėti elementus vienu lygiu
|
||||
|
||||
[error]
|
||||
network_error = Tinklo klaida
|
||||
server_internal = Vidinio serverio klaida
|
||||
occurred = Įvyko klaida.
|
||||
report_message = Jei manote, kad tai „Forgejo“ riktas, ieškokite problemų platformoje <a href="%s" target="_blank">„Codeberg“</a> arba, jei reikia, atidarykite naują problemą.
|
||||
|
||||
[startpage]
|
||||
app_desc = Nesudėtinga, savarankiškai teikiama „Git“ paslauga
|
||||
install = Lengva įdiegti
|
||||
license = Atvirojo kodo
|
||||
|
||||
[install]
|
||||
path = Kelias
|
||||
err_admin_name_is_reserved = Administratoriaus naudotojo vardas netinkamas. Naudotojo vardas yra rezervuotas.
|
||||
enable_update_checker = Įjungti naujinimų tikrintuvą
|
||||
env_config_keys = Aplinkos konfigūracija
|
||||
db_title = Duomenų bazės nustatymai
|
||||
db_type = Duomenų bazės tipas
|
||||
user = Naudotojo vardas
|
||||
password = Slaptažodis
|
||||
db_name = Duomenų bazės pavadinimas
|
||||
db_schema = Schema
|
||||
ssl_mode = SSL
|
||||
host = Pagrindinis komputeris
|
||||
general_title = Bendrieji nustatymai
|
||||
email_title = El. pašto nustatymai
|
||||
federated_avatar_lookup.description = Ieškokite pseudoportretų naudojant „Libravatar“.
|
||||
db_schema_helper = Palikite tuščią, jei tai numatytoji duomenų bazė („public“).
|
||||
err_empty_admin_password = Administratoriaus slaptažodis negali būti tuščias.
|
||||
err_empty_admin_email = Administratoriaus el. paštas negali būti tuščias.
|
||||
install = Diegimas
|
||||
|
||||
[explore]
|
||||
go_to = Eiti į
|
||||
code = Kodas
|
||||
|
||||
[auth]
|
||||
remember_me = Prisiminti šį įrenginį
|
||||
forgot_password_title = Pamirštas slaptažodis
|
||||
forgot_password = Pamiršote slaptažodį?
|
||||
|
||||
[filter]
|
||||
string.asc = A – Ž
|
||||
string.desc = Ž – A
|
|
@ -2323,7 +2323,7 @@ settings.protect_branch_name_pattern=Aizsargātā zara šablons
|
|||
settings.protect_branch_name_pattern_desc=Aizsargāto atzaru nosaukumu šabloni. Šablonu pierakstu skatīt <a href="%s">dokumentācijā</a>. Piemēri: main, release/**
|
||||
settings.protect_patterns=Šabloni
|
||||
settings.protect_protected_file_patterns=Aizsargāto failu šablons (vairākus var norādīt atdalot ar semikolu ';'):
|
||||
settings.protect_protected_file_patterns_desc=Aizsargātie faili, ko nevar mainīt, pat ja lietotājam ir tiesības veidot jaunus, labot vai dzēst failus šajā atzarā. Vairākus šablons ir iespējams norādīt atdalot tos ar semikolu (';'). Sīkāka informācija par šabloniem pieejama <a href='%s'>github.com/gobwas/glob</a> dokumentācijā. Piemēram, <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
|
||||
settings.protect_protected_file_patterns_desc=Aizsargātie faili, ko nevar mainīt, pat ja lietotājam ir tiesības veidot jaunus, labot vai dzēst failus šajā atzarā. Vairākus šablons ir iespējams norādīt atdalot tos ar semikolu (';'). Sīkāka informācija par šabloniem pieejama <a href='%s'>%s</a> dokumentācijā. Piemēram, <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
|
||||
settings.protect_unprotected_file_patterns=Neaizsargāto failu šablons (vairākus var norādīt atdalot ar semikolu ';'):
|
||||
settings.protect_unprotected_file_patterns_desc=Neaizsargātie faili, ko iespējams mainīt apejot iesūtīšanas ierobežojumus, ja lietotājam ir tiesības iesūtīt izmaiņas šajā atzarā. Vairākus šablons ir iespējams norādīt atdalot tos ar semikolu (';'). Sīkāka informācija par šabloniem pieejama <a href='%[1]s'>%[2]s</a> dokumentācijā. Piemēram, <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
|
||||
settings.add_protected_branch=Iespējot aizsargāšanu
|
||||
|
|
|
@ -23,4 +23,115 @@ language = Språk
|
|||
notifications = Varslinger
|
||||
create_new = Opprett…
|
||||
user_profile_and_more = Profil og innstillinger…
|
||||
signed_in_as = Logget inn som
|
||||
signed_in_as = Logget inn som
|
||||
confirm_delete_selected = Bekreft sletting av alle valgte elementer?
|
||||
dashboard = Dashbord
|
||||
download_logs = Last ned logger
|
||||
copy_hash = Kopier hash
|
||||
more_items = Flere elementer
|
||||
passcode = Adgangskode
|
||||
webauthn_insert_key = Skriv inn din sikkerhetsnøkkel
|
||||
webauthn_use_twofa = Bruk tofaktorkode fra din mobil
|
||||
organization = Organisasjon
|
||||
mirror = Speil
|
||||
new_mirror = Ny speiling
|
||||
repository = Repositorium
|
||||
new_project = Nytt prosjekt
|
||||
new_project_column = Ny kolonne
|
||||
webauthn_error = Klarte ikke lese sikkerhetsnøkkelen.
|
||||
webauthn_unsupported_browser = Nettleseren din støtter ikke WebAuthn.
|
||||
webauthn_error_unknown = En ukjent feil oppstod. Vennligst prøv igjen.
|
||||
webauthn_error_insecure = WebAuhn støtter kun sikre forbindelser. For testing over HTTP kan du bruke verten "localhost" eller "127.0.0.1"
|
||||
admin_panel = Nettsideadministrasjon
|
||||
settings = Innstillinger
|
||||
your_profile = Profil
|
||||
your_starred = Stjernemerket
|
||||
your_settings = Innstillinger
|
||||
new_repo.title = Nytt repositorium
|
||||
new_migrate.title = Ny migrasjon
|
||||
new_org.title = Ny organisasjon
|
||||
new_repo.link = Nytt repositorium
|
||||
new_migrate.link = Ny migrasjon
|
||||
new_org.link = Ny organisasjon
|
||||
all = Alle
|
||||
sources = Kilder
|
||||
mirrors = Speilinger
|
||||
activities = Aktiviteter
|
||||
rss_feed = RSS feed
|
||||
retry = Prøv igjen
|
||||
rerun = Kjør på nytt
|
||||
rerun_all = Kjør alle jobber på nytt
|
||||
save = Lagre
|
||||
cancel = Avbryt
|
||||
forks = Forks
|
||||
milestones = Milepæler
|
||||
ok = OK
|
||||
test = Test
|
||||
loading = Laster inn…
|
||||
error = Feil
|
||||
go_back = Gå tilbake
|
||||
never = Aldri
|
||||
invalid_data = Ugyldig data: %v
|
||||
unknown = Ukjent
|
||||
pin = Pin
|
||||
artifacts = Artefakter
|
||||
archived = Arkivert
|
||||
concept_system_global = Global
|
||||
add = Legg til
|
||||
add_all = Legg til alle
|
||||
remove = Fjern
|
||||
remove_all = Fjern alle
|
||||
remove_label_str = Fjern element "%s"
|
||||
edit = Rediger
|
||||
view = Vis
|
||||
enabled = Aktivert
|
||||
disabled = Deaktivert
|
||||
locked = Låst
|
||||
copy = Kopier
|
||||
copy_generic = Kopier til utklippstavlen
|
||||
copy_url = Kopier URL
|
||||
copy_content = Kopier innhold
|
||||
copy_success = Kopiert!
|
||||
copy_error = Kopiering mislyktes
|
||||
copy_type_unsupported = Denne filtypen kan ikke kopieres
|
||||
write = Skriv
|
||||
preview = Forhåndsvis
|
||||
concept_user_individual = Individuell
|
||||
concept_code_repository = Repositorium
|
||||
concept_user_organization = Organisasjon
|
||||
show_timestamps = Vis tidsstempler
|
||||
show_log_seconds = Vis sekunder
|
||||
show_full_screen = Vis fullskjerm
|
||||
name = Navn
|
||||
value = Verdi
|
||||
filter = Filter
|
||||
filter.clear = Tøm filtre
|
||||
filter.is_archived = Arkivert
|
||||
filter.not_archived = Ikke arkivert
|
||||
filter.is_mirror = Speilinger
|
||||
filter.not_mirror = Ikke speilinger
|
||||
filter.is_template = Maler
|
||||
filter.not_template = Ikke maler
|
||||
filter.public = Offentlig
|
||||
filter.private = Privat
|
||||
explore = Utforsk
|
||||
active_stopwatch = Aktiv tidsregistrering
|
||||
home = Hjem
|
||||
help = Hjelp
|
||||
logo = Logo
|
||||
sign_in = Logg inn
|
||||
sign_in_with_provider = Logg inn med %s
|
||||
sign_in_or = eller
|
||||
sign_out = Logg ut
|
||||
sign_up = Opprett konto
|
||||
confirm_delete_artifact = Er du sikker på at du vil slette artefakten "%s" ?
|
||||
|
||||
[search]
|
||||
search = Søk...
|
||||
type_tooltip = Søketype
|
||||
fuzzy = Fuzzy
|
||||
union = Union
|
||||
|
||||
[auth]
|
||||
verify = Bekreft
|
||||
sign_up_button = Opprett konto nå.
|
3478
options/locale/locale_nds.ini
Normal file
3478
options/locale/locale_nds.ini
Normal file
File diff suppressed because it is too large
Load diff
|
@ -476,6 +476,7 @@ hint_register = Heb je een account nodig? <a href="%s"> Registreer nu.</a>
|
|||
sign_up_button = Registreer nu.
|
||||
back_to_sign_in = Terug naar aanmelden
|
||||
sign_in_openid = Ga verder met OpenID
|
||||
unauthorized_credentials = Je inloggegevens zijn foutief of vervallen. Probeer opnieuw of zie %s voor meer informatie
|
||||
|
||||
[mail]
|
||||
view_it_on=Bekijk het op %s
|
||||
|
@ -1038,7 +1039,7 @@ additional_repo_units_hint = Stel voor om extra repositorie units in te schakele
|
|||
update_hints = Tips bijwerken
|
||||
update_hints_success = Tips zijn bijgewerkt.
|
||||
hints = Tips
|
||||
additional_repo_units_hint_description = Toon een "Voeg meer eenheden toe..." knop voor repositories die niet alle beschikbare eenheden hebben ingeschakeld.
|
||||
additional_repo_units_hint_description = Toon een “Meer activeren” hint voor repositories die niet alle beschikbare eenheden hebben ingeschakeld.
|
||||
pronouns = Persoonlijke voornaamwoord
|
||||
pronouns_custom = Aangepast
|
||||
pronouns_unspecified = Ongedefinieerd
|
||||
|
@ -1356,7 +1357,7 @@ commit.cherry-pick-content=Selecteer een branch om te cherry-pick op:
|
|||
commitstatus.error=Fout
|
||||
commitstatus.pending=In behandeling
|
||||
|
||||
ext_issues=Toegang tot externe issues
|
||||
ext_issues=Externe issues
|
||||
ext_issues.desc=Koppelen aan een externe kwestie-tracker.
|
||||
|
||||
projects=Projecten
|
||||
|
@ -1503,9 +1504,9 @@ issues.context.quote_reply=Citeer antwoord
|
|||
issues.context.reference_issue=Verwijs in een nieuwe issue
|
||||
issues.context.edit=Bewerken
|
||||
issues.context.delete=Verwijder
|
||||
issues.close_comment_issue=Reageer en sluit
|
||||
issues.close_comment_issue=Sluit met commentaar
|
||||
issues.reopen_issue=Heropen
|
||||
issues.reopen_comment_issue=Reageer en heropen
|
||||
issues.reopen_comment_issue=Heropen met commentaar
|
||||
issues.create_comment=Reageer
|
||||
issues.closed_at=`heeft dit probleem gesloten <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||
issues.reopened_at=`heropende dit probleem <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||
|
@ -1811,7 +1812,7 @@ milestones.filter_sort.most_issues=Meeste problemen
|
|||
milestones.filter_sort.least_issues=Minste problemen
|
||||
|
||||
|
||||
ext_wiki=Toegang tot externe wiki
|
||||
ext_wiki=Externe wiki
|
||||
ext_wiki.desc=Koppelen aan een externe wiki.
|
||||
|
||||
wiki=Wiki
|
||||
|
@ -2692,7 +2693,7 @@ settings.wiki_rename_branch_main_notices_2 = Dit zal de interne branch van %s's
|
|||
settings.trust_model.collaborator.desc = Geldige handtekeningen van samenwerkers van deze repository worden als "vertrouwd" gemarkeerd - (of ze nu overeenkomen met de committer of niet). Anders worden geldige handtekeningen gemarkeerd als "niet-vertrouwd" als de handtekening overeenkomt met de committer en "niet-gematcht" als dat niet het geval is.
|
||||
settings.trust_model.committer.desc = Geldige handtekeningen zullen alleen "vertrouwd" gemarkeerd worden als ze overeenkomen met de committer, anders zullen ze gemarkeerd worden als "ongeëvenaard". Dit dwingt Forgejo om de committer te zijn op ondertekende commits met de werkelijke committer gemarkeerd als Co-authored-by: en Co-committed-by: aanhanger in de commit. De standaard Forgejo sleutel moet overeenkomen met een gebruiker in de database.
|
||||
settings.pulls.enable_autodetect_manual_merge = Handmatig samenvoegen met autodetectie inschakelen (Opmerking: In sommige speciale gevallen kunnen hierdoor verkeerde beoordelingen optreden)
|
||||
settings.protect_protected_file_patterns_desc = Beschermde bestanden mogen niet direct gewijzigd worden, zelfs als de gebruiker rechten heeft om bestanden in deze branch toe te voegen, te bewerken of te verwijderen. Meerdere patronen kunnen gescheiden worden met een puntkomma (";"). Zie <a href="%s">github.com/gobwas/glob</a> documentatie voor patroon syntax. Voorbeelden: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
|
||||
settings.protect_protected_file_patterns_desc = Beschermde bestanden mogen niet direct gewijzigd worden, zelfs als de gebruiker rechten heeft om bestanden in deze branch toe te voegen, te bewerken of te verwijderen. Meerdere patronen kunnen gescheiden worden met een puntkomma (";"). Zie <a href="%s">%s</a> documentatie voor patroon syntax. Voorbeelden: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
|
||||
wiki.delete_page_notice_1 = Het verwijderen van de wikipagina "%s" kan niet ongedaan worden gemaakt. Doorgaan?
|
||||
wiki.reserved_page = De wikipaginanaam "%s" is gereserveerd.
|
||||
activity.navbar.pulse = Puls
|
||||
|
@ -2707,13 +2708,13 @@ settings.mirror_settings.docs.pull_mirror_instructions = Raadpleeg voor het inst
|
|||
settings.mirror_settings.docs.more_information_if_disabled = Hier vindt u meer informatie over duw- en pull mirrors:
|
||||
settings.mirror_settings.docs.pulling_remote_title = Pullen uit een externe repository
|
||||
settings.mirror_settings.pushed_repository = Gepusht repository
|
||||
settings.units.units = Repository-eenheden
|
||||
settings.units.units = Eenheden
|
||||
settings.mirror_settings.push_mirror.remote_url = Git externe repository URL
|
||||
settings.units.overview = Overzicht
|
||||
settings.mirror_settings.push_mirror.edit_sync_time = Synchronisatie-interval van mirror bewerken
|
||||
settings.push_mirror_sync_in_progress = Wijzigingen worden momenteel naar de externe %s gepusht.
|
||||
settings.pull_mirror_sync_in_progress = Haalt momenteel wijzigingen op van de externe %s.
|
||||
settings.units.add_more = Meer toevoegen...
|
||||
settings.units.add_more = Meer activeren
|
||||
settings.update_mirror_settings = Mirrorinstellingen bijwerken
|
||||
settings.branches.switch_default_branch = Wissel standaard branch
|
||||
settings.branches.add_new_rule = Voeg nieuwe regel toe
|
||||
|
@ -2821,6 +2822,9 @@ mirror_public_key = Publieke SSH-sleutel
|
|||
mirror_use_ssh.helper = Forgejo zal deze repository mirroren via Git over SSH en een sleutelpaar voor je aanmaken als je deze optie selecteert. Je moet ervoor zorgen dat de gegenereerde publieke sleutel geautoriseerd is om naar het doel-repository te pushen. Je kunt geen wachtwoord-gebaseerde autorisatie gebruiken als je dit selecteert.
|
||||
settings.mirror_settings.push_mirror.none_ssh = Geen
|
||||
mirror_use_ssh.not_available = SSH-authenticatie is niet beschikbaar.
|
||||
issues.new.assign_to_me = Aan mij toewijzen
|
||||
issues.all_title = Alles
|
||||
settings.discord_icon_url.exceeds_max_length = Icoon-URL moet 2048 tekens of minder zijn
|
||||
|
||||
|
||||
|
||||
|
@ -3183,7 +3187,7 @@ auths.tip.github=Registreer een nieuwe OAuth toepassing op %s
|
|||
auths.tip.gitlab=Registreer een nieuwe applicatie op https://gitlab.com/profile/applicaties
|
||||
auths.tip.google_plus=Verkrijg OAuth2 client referenties van de Google API console op %s
|
||||
auths.tip.openid_connect=Gebruik de OpenID Connect Discovery URL (<server>/.well-known/openid-configuration) om de eindpunten op te geven
|
||||
auths.tip.yandex=`Maak een nieuwe applicatie aan op %s. Selecteer de volgende machtigingen van de "Yandex". assport API sectie: "Toegang tot e-mailadres", "Toegang tot avatar" en "Toegang tot gebruikersnaam, voornaam en achternaam, geslacht"`
|
||||
auths.tip.yandex=Maak een nieuwe toepassing op %s. Selecteer de volgende rechten in het gedeelte “Yandex.Passport API”: “Toegang tot e-mailadres”, ‘Toegang tot gebruikersavatar’ en ‘Toegang tot gebruikersnaam, voor- en achternaam, geslacht’
|
||||
auths.edit=Authenticatiebron bewerken
|
||||
auths.activated=Deze authenticatiebron is geactiveerd
|
||||
auths.update_success=De authenticatie-bron is bijgewerkt.
|
||||
|
@ -3404,10 +3408,10 @@ auths.oauth2_required_claim_value_helper = Stel deze waarde in om het aanmelden
|
|||
users.remote = Externe
|
||||
users.list_status_filter.not_2fa_enabled = 2FA uitgeschakeld
|
||||
users.reserved = Gereserveerd
|
||||
defaulthooks.desc = Webhooks doen automatisch HTTP POST verzoeken naar een server wanneer bepaalde Forgejo gebeurtenissen zich voordoen. Webhooks die hier gedefinieerd zijn, zijn standaard en worden gekopieerd naar alle nieuwe repositories.. Lees meer in de <a target="_blank" rel="noopener" href="%s">webhooks gids</a>.
|
||||
defaulthooks.desc = Webhooks doen automatisch HTTP POST verzoeken naar een server wanneer bepaalde Forgejo gebeurtenissen zich voordoen. Webhooks defined here are defaults and will be copied into all new repositories. Read more in the <a target="_blank" rel="noopener" href="%s">webhooks guide</a>.
|
||||
auths.verify_group_membership = Controleer het groepslidmaatschap in LDAP (laat het filter leeg om over te slaan)
|
||||
dashboard.rebuild_issue_indexer = Herbouw issue indexer
|
||||
systemhooks.desc = Webhooks doen automatisch HTTP POST verzoeken naar een server wanneer bepaalde Forgejo gebeurtenissen zich voordoen. Webhooks die hier gedefinieerd zijn, werken op alle repositories op het systeem, dus houd rekening met mogelijke gevolgen voor de prestaties. Lees meer in de <a target="_blank" rel="noopener" href="%s">webhooks gids</a>.
|
||||
systemhooks.desc = Webhooks doen automatisch HTTP POST verzoeken naar een server wanneer bepaalde Forgejo gebeurtenissen zich voordoen. Webhooks die hier gedefinieerd zijn, werken op alle repositories op het systeem, dus houd rekening met mogelijke gevolgen voor de prestaties. Lees meer in de <a target="_blank" rel="noopener" href="%s">webhooks guide</a>.
|
||||
hooks = Webhooks
|
||||
integrations = Integraties
|
||||
dashboard.new_version_hint = Forgejo %s is nu beschikbaar, u gebruikt versie %s. Zie <a target="_blank" rel="noreferrer" href="%s">de blog</a> voor meer details.
|
||||
|
@ -3455,7 +3459,7 @@ auths.oauth2_icon_url = Pictogram URL
|
|||
auths.pam_email_domain = PAM e-maildomein (optioneel)
|
||||
auths.tip.gitea = Registreer een nieuwe OAuth2-toepassing. De handleiding is te vinden op %s
|
||||
auths.tip.discord = Registreer een nieuwe toepassing op %s
|
||||
auths.tip.bitbucket = Registreer een nieuwe OAuth consumer op %s
|
||||
auths.tip.bitbucket = Registreer een nieuwe OAuth consumer op %s en voeg de rechten “Account” - “Read” toe
|
||||
auths.tips.oauth2.general.tip = Bij het registreren van een nieuwe OAuth2-authenticatie moet de callback/redirect URL zijn:
|
||||
config.ssh_domain = SSH-server domein
|
||||
auths.login_source_of_type_exist = Er bestaat al een authenticatiebron van dit type.
|
||||
|
@ -3862,7 +3866,7 @@ runs.actors_no_select = Alle acteurs
|
|||
runs.status_no_select = Alle statussen
|
||||
runs.no_results = Geen resultaten gevonden.
|
||||
runs.no_workflows = Er zijn nog geen workflows.
|
||||
unit.desc = Beheer geïntegreerde CI/CD-pijplijnen met Forgejo Actions
|
||||
unit.desc = Beheer geïntegreerde CI/CD-pijplijnen met Forgejo Actions.
|
||||
runs.no_workflows.documentation = Voor meer informatie over Forgejo acties, zie <a target="_blank" rel="noopener noreferrer" href="%s">de documentatie</a>.
|
||||
workflow.disable_success = Workflow "%s" is succesvol uitgeschakeld.
|
||||
variables.none = Er zijn nog geen variabelen.
|
||||
|
@ -3942,6 +3946,8 @@ pull_kind = Zoek pulls...
|
|||
union = Trefwoorden
|
||||
union_tooltip = Neem resultaten op die overeenkomen met een van de trefwoorden gescheiden door spaties
|
||||
milestone_kind = Zoek mijlpalen...
|
||||
regexp_tooltip = Interpreteer de zoekterm als een reguliere expressie
|
||||
regexp = RegExp
|
||||
|
||||
[munits.data]
|
||||
b = B
|
||||
|
@ -3959,4 +3965,24 @@ filepreview.truncated = Voorbeeld is ingekort
|
|||
|
||||
|
||||
[translation_meta]
|
||||
test = Oké
|
||||
test = Oké
|
||||
|
||||
[repo.permissions]
|
||||
code.write = <b>Schrijven:</b> Push naar de repositorie, maak branches en tags.
|
||||
code.read = <b>Lezen:</b> Toegang en clone de code van de repository.
|
||||
issues.read = <b>Lezen:</b> Lees en maak issues en commentaren.
|
||||
pulls.read = <b>Lezen:</b> Lezen en pull requests maken.
|
||||
releases.read = <b>Lezen:</b> Bekijk en download releases.
|
||||
ext_issues = Toegang tot de link naar een externe issue tracker. De rechten worden extern beheerd.
|
||||
ext_wiki = Toegang tot de link naar een externe wiki. De rechten worden extern beheerd.
|
||||
actions.write = <b>Write:</b> Handmatig starten, herstarten, annuleren of goedkeuren van hangende CI/CD-pijplijnen.
|
||||
pulls.write = <b>Schrijven:</b> Sluit pull requests af en beheer metadata zoals labels, mijlpalen, verantwoordelijken, vervaldatums en afhankelijkheden.
|
||||
releases.write = <b>Schrijven:</b> Publiceren, bewerken en verwijderen van releases en hun assets.
|
||||
wiki.read = <b>Lezen:</b> Lees de geïntegreerde wiki en zijn geschiedenis.
|
||||
wiki.write = <b>Schrijven:</b> Pagina's maken, bijwerken en verwijderen in de geïntegreerde wiki.
|
||||
projects.read = <b>Lezen:</b> Toegang tot projectboards van repository's.
|
||||
projects.write = <b>Schrijven:</b> Projecten en kolommen maken en bewerken.
|
||||
packages.read = <b>Lezen:</b> Bekijk en download pakketten die aan de repository is toegewezen.
|
||||
packages.write = <b>Schrijven:</b> Publiceer en verwijder pakketten die aan de repository is toegewezen.
|
||||
actions.read = <b>Lezen:</b> Bekijk geïntegreerde CI/CD-pijplijnen en hun logboeken.
|
||||
issues.write = <b>Schrijven:</b> Sluit issues af en beheer metadata zoals labels, mijlpalen, verantwoordelijken, vervaldatums en afhankelijkheden.
|
|
@ -552,6 +552,7 @@ removed_security_key.subject = Klucz bezpieczeństwa został usunięty
|
|||
removed_security_key.text_1 = Klucz bezpieczeństwa "%[1]s" został właśnie usunięty z twojego konta.
|
||||
totp_enrolled.text_1.has_webauthn = Właśnie włączyłeś TOTP dla swojego konta. Oznacza to, że dla wszystkich przyszłych logowań do konta możesz użyć TOTP jako metody 2FA lub użyć dowolnego klucza bezpieczeństwa.
|
||||
team_invite.text_2 = Kliknij poniższy link, aby dołączyć do zespołu:
|
||||
issue.action.merge = połączone
|
||||
|
||||
|
||||
[modal]
|
||||
|
@ -685,7 +686,7 @@ avatar=Awatar
|
|||
ssh_gpg_keys=Klucze SSH / GPG
|
||||
social=Konta społecznościowe
|
||||
applications=Aplikacje
|
||||
orgs=Zarządzaj organizacjami
|
||||
orgs=Organizacje
|
||||
repos=Repozytoria
|
||||
delete=Usuń konto
|
||||
twofa=Autoryzacja dwuetapowa
|
||||
|
@ -698,7 +699,7 @@ password_username_disabled=Użytkownicy nielokalni nie mogą zmieniać swoich na
|
|||
full_name=Imię i nazwisko
|
||||
website=Strona
|
||||
location=Lokalizacja
|
||||
update_theme=Zaktualizuj motyw
|
||||
update_theme=Zmień motyw
|
||||
update_profile=Zaktualizuj profil
|
||||
update_language_success=Język został zaktualizowany.
|
||||
update_profile_success=Twój profil został zaktualizowany.
|
||||
|
@ -729,15 +730,15 @@ password_change_disabled=Konta niebędące lokalnymi nie mogą zmienić swojego
|
|||
|
||||
emails=Adresy e-mail
|
||||
manage_emails=Zarządzaj adresami e-mail
|
||||
manage_themes=Wybierz motyw domyślny
|
||||
manage_openid=Zarządzanie adresami OpenID
|
||||
manage_themes=Domyślny motyw
|
||||
manage_openid=Adresy OpenID
|
||||
theme_desc=Będzie to domyślny motyw na całej stronie.
|
||||
primary=Podstawowy
|
||||
activated=Aktywowany
|
||||
requires_activation=Wymaga aktywacji
|
||||
primary_email=Ustaw jako podstawowy
|
||||
activate_email=Wyślij aktywację
|
||||
activations_pending=Aktywacje oczekujące
|
||||
activate_email=Wyślij email aktywacyjny
|
||||
activations_pending=Oczekujące aktywacje
|
||||
delete_email=Usuń
|
||||
email_deletion=Usuń adres email
|
||||
email_deletion_desc=Adres e-mail i powiązane informacje zostaną usunięte z Twojego konta. Commity za pomocą tego adresu e-mail pozostaną niezmienione. Kontynuować?
|
||||
|
@ -747,7 +748,7 @@ theme_update_error=Wybrany motyw nie istnieje.
|
|||
openid_deletion=Usuń adres OpenID
|
||||
openid_deletion_desc=Usunięcie tego adresu OpenID z Twojego konta uniemożliwi Ci logowanie się za jego pomocą. Kontynuować?
|
||||
openid_deletion_success=Adres OpenID został usunięty.
|
||||
add_new_email=Dodaj nowy e-mail
|
||||
add_new_email=Dodaj e-mail
|
||||
add_new_openid=Dodaj nowy URI OpenID
|
||||
add_email=Dodaj adres e-mail
|
||||
add_openid=Dodaj OpenID URI
|
||||
|
@ -760,13 +761,13 @@ openid_desc=OpenID pozwala na delegowanie uwierzytelniania do zewnętrznego oper
|
|||
manage_ssh_keys=Zarządzaj kluczami SSH
|
||||
manage_gpg_keys=Zarządzaj kluczami GPG
|
||||
add_key=Dodaj klucz
|
||||
ssh_desc=Te publiczne klucze SSH są powiązane z Twoim kontem. Odpowiadające im klucze prywatne umożliwiają pełny dostęp do Twoich repozytoriów.
|
||||
gpg_desc=Te publiczne klucze GPG są powiązane z Twoim kontem. Dbaj o bezpieczeństwo kluczy prywatnych, gdyż pozwalają one na weryfikację commitów.
|
||||
ssh_desc=Te publiczne klucze SSH są powiązane z Twoim kontem. Odpowiadające im klucze prywatne umożliwiają pełny dostęp do Twoich repozytoriów. Klucze SSH, które zostały zweryfikowane mogą zostać użyte do weryfikacji commitów podpisanych kluczem SSH.
|
||||
gpg_desc=Te publiczne klucze GPG są powiązane z Twoim kontem i będą używane do weryfikacji twoich commitów. Dbaj o bezpieczeństwo kluczy prywatnych, gdyż pozwalają one na podpisywanie commitów.
|
||||
ssh_helper=<strong>Potrzebujesz pomocy?</strong> Sprawdź na GitHubie przewodnik <a href="%s">generowania kluczy SSH</a> lub rozwiązywanie <a href="%s">typowych problemów z SSH</a>.
|
||||
gpg_helper=<strong>Potrzebujesz pomocy?</strong> Przeczytaj na GitHubie poradnik <a href="%s">na temat GPG</a>.
|
||||
add_new_key=Dodaj klucz SSH
|
||||
add_new_gpg_key=Dodaj klucz GPG
|
||||
key_content_gpg_placeholder=Zaczyna się od '-----BEGIN PGP PUBLICZNEJ BLOKI KLUCZOWEJ PGP---'
|
||||
key_content_gpg_placeholder=Zaczyna się od "-----BEGIN PGP PUBLIC KEY BLOCK-----"
|
||||
ssh_key_been_used=Ten klucz SSH został już dodany do tego serwera.
|
||||
ssh_key_name_used=Klucz SSH z tą nazwą został już dodany do Twojego konta.
|
||||
ssh_principal_been_used=Ten klucz SSH został już dodany do tego serwera.
|
||||
|
@ -783,7 +784,7 @@ gpg_token=Token
|
|||
gpg_token_help=Możesz wygenerować podpis za pomocą:
|
||||
gpg_token_code=echo "%s" | gpg -a --default-key %s --detach-sig
|
||||
gpg_token_signature=Wzmocniony podpis GPG
|
||||
key_signature_gpg_placeholder=Zaczyna się od '-----BEGIN PGP SIGNATURE-----'
|
||||
key_signature_gpg_placeholder=Zaczyna się od "-----BEGIN PGP SIGNATURE-----"
|
||||
ssh_key_verified=Zweryfikowany klucz
|
||||
ssh_key_verified_long=Klucz został zweryfikowany tokenem i może być użyty do weryfikacji zmian pasujących do wszystkich aktywowanych adresów e-mail tego użytkownika.
|
||||
ssh_key_verify=Weryfikuj
|
||||
|
@ -791,7 +792,7 @@ ssh_token_required=Musisz podać podpis poniższego tokenu
|
|||
ssh_token=Token
|
||||
ssh_token_help=Możesz wygenerować podpis używając:
|
||||
ssh_token_signature=Wzmocniony podpis SSH
|
||||
key_signature_ssh_placeholder=Zaczyna się od '-----BEGIN SSH SIGNATURE-----'
|
||||
key_signature_ssh_placeholder=Zaczyna się od "-----BEGIN SSH SIGNATURE-----"
|
||||
subkeys=Podklucze
|
||||
key_id=ID klucza
|
||||
key_name=Nazwa klucza
|
||||
|
@ -821,10 +822,10 @@ ssh_externally_managed=Ten klucz SSH jest zarządzany zewnętrznie dla tego uży
|
|||
manage_social=Zarządzaj powiązanymi kontami społecznościowymi
|
||||
unbind=Rozłącz
|
||||
|
||||
manage_access_token=Zarządzaj tokenami dostępu
|
||||
manage_access_token=Tokeny dostępu
|
||||
generate_new_token=Wygeneruj nowy token
|
||||
tokens_desc=Te tokeny dostępu udzielają dostępu do Twojego konta za pomocą API Forgejo.
|
||||
token_name=Nazwa tokena
|
||||
token_name=Nazwa tokenu
|
||||
generate_token=Wygeneruj token
|
||||
generate_token_success=Twój nowy token został wygenerowany. Skopiuj go teraz, gdyż nie zostanie ujawniony ponownie.
|
||||
generate_token_name_duplicate=<strong>%s</strong> istnieje już jako nazwa aplikacji. Użyj nowej.
|
||||
|
@ -854,15 +855,15 @@ oauth2_application_create_description=Aplikacje OAuth2 umożliwiają Twojej apli
|
|||
|
||||
authorized_oauth2_applications=Autoryzowane aplikacje OAuth2
|
||||
revoke_key=Odwołaj
|
||||
revoke_oauth2_grant=Odwołaj dostęp
|
||||
revoke_oauth2_grant=Zabierz dostęp
|
||||
revoke_oauth2_grant_description=Odwołanie dostępu dla tej aplikacji uniemożliwi jej korzystanie z Twoich danych. Czy jesteś pewny(-a)?
|
||||
|
||||
twofa_desc=Weryfikacja dwuskładnikowa zwiększa bezpieczeństwo Twojego konta.
|
||||
twofa_is_enrolled=Twoje konto ma obecnie <strong>włączoną</strong> autoryzację dwuetapową.
|
||||
twofa_not_enrolled=Twoje konto obecnie nie ma włączonej autoryzacji dwuetapowej.
|
||||
twofa_disable=Wyłącz weryfikację dwuetapową
|
||||
twofa_scratch_token_regenerate=Wygeneruj ponownie kod jednorazowy
|
||||
twofa_enroll=Włącz weryfikację dwuskładnikową
|
||||
twofa_scratch_token_regenerate=Ponownie wygeneruj jednorazowy kod odzyskiwania
|
||||
twofa_enroll=Włącz weryfikację dwuetapową
|
||||
twofa_disable_note=W każdej chwili możesz wyłączyć weryfikację dwuskładnikową.
|
||||
twofa_disable_desc=Wyłączenie weryfikacji dwuetapowej sprawi, że Twoje konto będzie mniej bezpieczne. Kontynuować?
|
||||
regenerate_scratch_token_desc=Jeśli zgubiłeś(-aś) lub zużyłeś(-aś) swój kod jednorazowy, możesz go wygenerować ponownie tutaj.
|
||||
|
@ -878,7 +879,7 @@ webauthn_register_key=Dodaj klucz bezpieczeństwa
|
|||
webauthn_delete_key=Usuń klucz bezpieczeństwa
|
||||
webauthn_delete_key_desc=Jeżeli usuniesz klucz bezpieczeństwa, utracisz możliwość zalogowania się z jego użyciem. Kontynuować?
|
||||
|
||||
manage_account_links=Zarządzaj powiązanymi kontami
|
||||
manage_account_links=Powiązane konta
|
||||
manage_account_links_desc=Te konta zewnętrzne są powiązane z Twoim kontem Forgejo.
|
||||
account_links_not_available=Obecnie nie ma żadnych zewnętrznych kont powiązanych z tym kontem Forgejo.
|
||||
link_account=Powiąż konto
|
||||
|
@ -893,7 +894,7 @@ delete_account=Usuń swoje konto
|
|||
delete_prompt=Ta operacja permanentnie usunie Twoje konto użytkownika i jest <strong>NIEODWRACALNA</strong>.
|
||||
delete_with_all_comments=Twoje konto jest młodsze niż %s. Aby uniknąć fałszywych komentarzy, wszystkie komentarze zgłoszenia/PR zostaną z nim usunięte.
|
||||
confirm_delete_account=Potwierdź usunięcie
|
||||
delete_account_title=Usuń swoje konto
|
||||
delete_account_title=Usuń konto użytkownika
|
||||
delete_account_desc=Czy na pewno chcesz permanentnie usunąć to konto użytkownika?
|
||||
|
||||
email_notifications.enable=Włącz powiadomienia e-mail
|
||||
|
@ -932,7 +933,7 @@ template_description=Szablony repozytoriów pozwalają użytkownikom generować
|
|||
visibility=Widoczność
|
||||
visibility_description=Tylko właściciel lub członkowie organizacji, jeśli mają odpowiednie uprawnienia, będą mogli to zobaczyć.
|
||||
visibility_helper_forced=Administrator strony wymaga, aby nowe repozytoria były prywatne.
|
||||
visibility_fork_helper=(Zmiana tej wartości wpłynie na wszystkie forki.)
|
||||
visibility_fork_helper=(Zmiana tej wartości wpłynie na widoczność wszystkich forków.)
|
||||
clone_helper=Potrzebujesz pomocy z klonowaniem? Odwiedź <a target="_blank" rel="noopener noreferrer" href="%s">pomoc</a>.
|
||||
fork_repo=Forkuj repozytorium
|
||||
fork_from=Forkuj z
|
||||
|
@ -942,13 +943,13 @@ clone_in_vsc=Klonuj w VS Code
|
|||
download_zip=Pobierz ZIP
|
||||
download_tar=Pobierz TAR.GZ
|
||||
download_bundle=Pobierz BUNDLE
|
||||
generate_repo=Generuj repozytorium
|
||||
generate_from=Generuj z
|
||||
generate_repo=Wygeneruj repozytorium
|
||||
generate_from=Wygeneruj z
|
||||
repo_desc=Opis
|
||||
repo_desc_helper=Wprowadź krótki opis (opcjonalnie)
|
||||
repo_lang=Język
|
||||
repo_gitignore_helper=Wybierz szablony pliku .gitignore.
|
||||
issue_labels=Etykiety zgłoszenia
|
||||
issue_labels=Etykiety
|
||||
issue_labels_helper=Wybierz zestaw etykiet zgłoszeń
|
||||
license=Licencja
|
||||
license_helper=Wybierz plik licencji
|
||||
|
@ -959,14 +960,14 @@ readme_helper_desc=To jest miejsce, w którym możesz napisać pełny opis swoje
|
|||
auto_init=Inicjalizuj repozytorium (dodaje .gitignore, licencję i README)
|
||||
trust_model_helper_default=Domyślnie: Użyj domyślnego modelu zaufania dla tej instalacji
|
||||
create_repo=Utwórz repozytorium
|
||||
default_branch=Domyślna gałąź
|
||||
default_branch=Domyślny branch
|
||||
default_branch_helper=Domyślny branch jest podstawowym branch'em dla pull requestów i commit'ów kodu.
|
||||
mirror_prune=Wyczyść
|
||||
mirror_prune_desc=Usuń przestarzałe odwołania do zdalnych śledzeń
|
||||
mirror_interval_invalid=Interwał lustrzanej kopii jest niepoprawny.
|
||||
mirror_address=Sklonuj z adresu URL
|
||||
mirror_lfs=Duże przechowywanie plików (LFS)
|
||||
mirror_lfs_endpoint=Punkt końcowy LFS
|
||||
mirror_lfs_endpoint=Endpoint LFS
|
||||
mirror_lfs_endpoint_desc=Synchronizacja spróbuje użyć adresu URL klonowania, aby <a target="_blank" rel="noopener noreferrer" href="%s">określić serwer LFS</a>. Możesz również określić niestandardowy punkt końcowy, jeśli dane repozytorium LFS są przechowywane gdzieś indziej.
|
||||
mirror_last_synced=Ostatnio zsynchronizowano
|
||||
mirror_password_placeholder=(Nie zmieniono)
|
||||
|
@ -1912,8 +1913,8 @@ settings.protect_whitelist_teams=Zespoły dopuszczone do pushowania
|
|||
settings.protect_whitelist_search_teams=Szukaj zespołów…
|
||||
settings.protect_merge_whitelist_committers=Włącz dopuszczenie scalania
|
||||
settings.protect_merge_whitelist_committers_desc=Zezwól jedynie dopuszczonym użytkownikom lub zespołom na scalanie Pull Requestów w tej gałęzi.
|
||||
settings.protect_merge_whitelist_users=Użytkownicy dopuszczeni do scalania:
|
||||
settings.protect_merge_whitelist_teams=Zespoły dopuszczone do scalania:
|
||||
settings.protect_merge_whitelist_users=Użytkownicy dopuszczeni do scalania
|
||||
settings.protect_merge_whitelist_teams=Zespoły dopuszczone do scalania
|
||||
settings.protect_check_status_contexts=Włącz kontrolę stanu
|
||||
settings.protect_check_status_contexts_desc=Wymagaj powodzenia kontroli stanów przed scalaniem. Wybierz które kontrole stanów muszą zostać ukończone pomyślnie, zanim gałęzie będą mogły zostać scalone z gałęzią, która pokrywa się z tą zasadą. Kiedy włączone, commity muszą być najpierw wypchnięte do innej gałęzi, a następnie scalone lub wypchnięte bezpośrednio do gałęzi, która pokrywa się z tą zasadą po pomyślnej kontroli stanów. Jeżeli nie zostaną wybrane konteksty, ostatni commit musi zakończyć się powodzeniem niezależnie od kontekstu.
|
||||
settings.protect_check_status_contexts_list=Kontrole stanów w poprzednim tygodniu dla tego repozytorium
|
||||
|
@ -2866,4 +2867,5 @@ exact = Dokładnie
|
|||
exact_tooltip = Uwzględniaj tylko wyniki pasujące do wyszukiwanego hasła
|
||||
issue_kind = Wyszukaj problemy...
|
||||
pull_kind = Wyszukaj pull requesty...
|
||||
union = Unia
|
||||
union = Unia
|
||||
regexp = RegExp
|
File diff suppressed because it is too large
Load diff
|
@ -2458,7 +2458,7 @@ settings.protect_branch_name_pattern=Padrão do nome do ramo protegido
|
|||
settings.protect_branch_name_pattern_desc=Padrões de nomes de ramos protegidos. Consulte <a href="%s">a documentação</a> para ver a sintaxe dos padrões. Exemplos: main, release/**
|
||||
settings.protect_patterns=Padrões
|
||||
settings.protect_protected_file_patterns=Padrões de ficheiros protegidos (separados com ponto e vírgula ";")
|
||||
settings.protect_protected_file_patterns_desc=Ficheiros protegidos não podem ser modificados imediatamente, mesmo que o utilizador tenha direitos para adicionar, editar ou eliminar ficheiros neste ramo. Múltiplos padrões podem ser separados com ponto e vírgula (";"). Veja a documentação em <a href="%s">github.com/gobwas/glob</a> para ver a sintaxe. Exemplos: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
|
||||
settings.protect_protected_file_patterns_desc=Ficheiros protegidos não podem ser modificados imediatamente, mesmo que o utilizador tenha direitos para adicionar, editar ou eliminar ficheiros neste ramo. Múltiplos padrões podem ser separados com ponto e vírgula (";"). Veja a documentação em <a href="%s">%s</a> para ver a sintaxe. Exemplos: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
|
||||
settings.protect_unprotected_file_patterns=Padrões de ficheiros desprotegidos (separados com ponto e vírgula ";")
|
||||
settings.protect_unprotected_file_patterns_desc=Ficheiros desprotegidos que podem ser modificados imediatamente se o utilizador tiver direitos de escrita, contornando a restrição no envio. Padrões múltiplos podem ser separados com ponto e vírgula (";"). Veja a documentação em <a href="%[1]s">%[2]s</a> para ver a sintaxe. Exemplos: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
|
||||
settings.add_protected_branch=Habilitar salvaguarda
|
||||
|
@ -3938,6 +3938,8 @@ pull_kind = Procurar pedidos de integração...
|
|||
union = Palavras-chave
|
||||
union_tooltip = Incluir resultados correspondentes a qualquer das palavras-chave separadas por espaços em branco
|
||||
milestone_kind = Procurar etapas...
|
||||
regexp_tooltip = Interpreta o termo de pesquisa como um expressão regular
|
||||
regexp = ExpReg
|
||||
|
||||
[munits.data]
|
||||
kib = KiB
|
||||
|
@ -3954,4 +3956,24 @@ filepreview.line = Linha %[1]d em %[2]s
|
|||
filepreview.truncated = A previsão foi truncada
|
||||
|
||||
[translation_meta]
|
||||
test = ok
|
||||
test = ok
|
||||
|
||||
[repo.permissions]
|
||||
code.read = <b>Ler:</b> Aceder e clonar o código-fonte do repositório.
|
||||
releases.read = <b>Ler:</b> Ver e descarregar lançamentos.
|
||||
projects.read = <b>Ler:</b> Aceder aos quadros de planeamento do repositório.
|
||||
projects.write = <b>Escrever:</b> Criar planeamentos e colunas e editá-las.
|
||||
packages.read = <b>Ler:</b> Ver e descarregar pacotes atribuídos ao repositório.
|
||||
packages.write = <b>Escrever:</b> Publicar e eliminar pacotes atribuídos ao repositório.
|
||||
actions.read = <b>Ler:</b> Ver canais CI/CD integrados e os seus registos.
|
||||
actions.write = <b>Escrever:</b> Despoletar, reiniciar, cancelar ou aprovar manualmente canais CI/CD pendentes.
|
||||
ext_issues = Aceder à ligação para um rastreador de questões externo. As permissões são geridas externamente.
|
||||
ext_wiki = Aceder à ligação para um wiki externo. As permissões são geridas externamente.
|
||||
issues.write = <b>Escrever:</b> Fechar questões e gerir metadados, tais como rótulos, etapas, encarregados, datas de vencimento e dependências.
|
||||
pulls.read = <b>Ler:</b> Ler e criar pedidos de integração.
|
||||
releases.write = <b>Escrever:</b> Publicar, editar e eliminar lançamentos e seus recursos.
|
||||
wiki.read = <b>Ler:</b> Ler o wiki integrado e o seu histórico.
|
||||
wiki.write = <b>Escrever:</b> Criar, modificar e eliminar páginas no wiki integrado.
|
||||
code.write = <b>Escrever:</b> Enviar para o repositório, criar ramos e etiquetas.
|
||||
issues.read = <b>Ler:</b> Ler e criar questões e comentários.
|
||||
pulls.write = <b>Escrever:</b> Fechar pedidos de integração e gerir metadados, tais como rótulos, etapas, encarregados, datas de vencimento e dependências.
|
|
@ -387,8 +387,8 @@ user_no_results=Подходящие пользователи не найден
|
|||
org_no_results=Подходящие организации не найдены.
|
||||
code_no_results=Соответствующий поисковому запросу исходный код не найден.
|
||||
code_search_results=Результаты поиска «%s»
|
||||
code_last_indexed_at=Последний проиндексированный %s
|
||||
relevant_repositories_tooltip=Репозитории, являющиеся ответвлениями или не имеющие ни темы, ни значка, ни описания, скрыты.
|
||||
code_last_indexed_at=Последняя индексация %s
|
||||
relevant_repositories_tooltip=Скрыты ответвления и репозитории, не имеющие ни темы, ни значка, ни описания.
|
||||
relevant_repositories=Показаны только релевантные репозитории, <a href="%s">показать результаты без фильтрации</a>.
|
||||
forks_one = %d ответвление
|
||||
forks_few = %d ответвлений
|
||||
|
@ -411,7 +411,7 @@ sign_up_successful=Учётная запись успешно создана. Д
|
|||
confirmation_mail_sent_prompt=Новое письмо для подтверждения было отправлено на <b>%s</b>. Для завершения регистрации, пожалуйста, перейдите по ссылке внутри в течение %s. Если был введён неправильный адрес, вы можете войти и изменить его.
|
||||
must_change_password=Обновите пароль
|
||||
allow_password_change=Требовать смену пароля пользователем (рекомендуется)
|
||||
reset_password_mail_sent_prompt=Письмо для подтверждения было отправлено на <b>%s</b>. Чтобы выполнить восстановление учётной записи, перейдите по ссылке внутри в течение %s.
|
||||
reset_password_mail_sent_prompt=Письмо для подтверждения было отправлено на <b>%s</b>. Чтобы завершить процесс восстановления учётной записи, перейдите по указанной в нём ссылке в течение %s.
|
||||
active_your_account=Активация учётной записи
|
||||
account_activated=Учётная запись активирована
|
||||
prohibit_login=Учётная запись приостановлена
|
||||
|
@ -476,6 +476,7 @@ sign_up_button = Зарегистрироваться.
|
|||
back_to_sign_in = Назад ко входу
|
||||
sign_in_openid = Продолжить с OpenID
|
||||
hint_login = Уже есть учётная запись? <a href="%s">Войдите!</a>
|
||||
unauthorized_credentials = Учётные данные неверны или истекли. Попробуйте повторить команду или ознакомьтесь с подробностями по ссылке: %s
|
||||
|
||||
[mail]
|
||||
view_it_on=Посмотреть на %s
|
||||
|
@ -514,10 +515,10 @@ issue.action.push_n=<b>@%[1]s</b> отправил(а) %[3]d изменений
|
|||
issue.action.close=<b>@%[1]s</b> закрыл(а) #%[2]d.
|
||||
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> одобрил(а) этот запрос на слияние.
|
||||
issue.action.approve=<b>@%[1]s</b> слияние одобрено.
|
||||
issue.action.reject=<b>@%[1]s</b> запросил(а) изменения в этом запросе на слияние.
|
||||
issue.action.review=<b>@%[1]s</b> прокомментировал(а) этот запрос на слияние.
|
||||
issue.action.review_dismissed=<b>@%[1]s</b> отклонил(а) последний отзыв с %[2]s для этого запроса на слияние.
|
||||
issue.action.review_dismissed=<b>@%[1]s</b> отклонена последняя рецензия с %[2]s для этого запроса на слияние.
|
||||
issue.action.ready_for_review=<b>@%[1]s</b> отметил(а) этот запрос на слияние как готовый к рассмотрению.
|
||||
issue.action.new=<b>@%[1]s</b> создал(а) #%[2]d.
|
||||
issue.in_tree_path=В %s:
|
||||
|
@ -1019,7 +1020,7 @@ visibility.public=Публичный
|
|||
visibility.public_tooltip=Виден всем, кто может открыть этот сайт
|
||||
visibility.limited=Ограниченный
|
||||
visibility.limited_tooltip=Виден только зарегистрированным пользователям сайта
|
||||
visibility.private=Частный
|
||||
visibility.private=Скрытый
|
||||
visibility.private_tooltip=Виден только участникам организаций, в которых вы состоите
|
||||
blocked_users_none = Заблокированных пользователей нет.
|
||||
user_block_success = Пользователь заблокирован.
|
||||
|
@ -1037,7 +1038,7 @@ hints = Подсказки
|
|||
additional_repo_units_hint = Предлагать включить больше разделов в репозиториях
|
||||
update_hints = Обновить подсказки
|
||||
update_hints_success = Подсказки обновлены.
|
||||
additional_repo_units_hint_description = Показывать кнопку "Добавить больше разделов" в репозиториях, в которых включены не все разделы.
|
||||
additional_repo_units_hint_description = Показывать подсказку "Включить больше разделов" в репозиториях, в которых включены не все разделы.
|
||||
pronouns_custom = Другие
|
||||
pronouns = Местоимения
|
||||
pronouns_unspecified = Не указаны
|
||||
|
@ -1337,8 +1338,8 @@ editor.fail_to_apply_patch=Невозможно применить патч «%s
|
|||
editor.new_patch=Новая правка
|
||||
editor.commit_message_desc=Добавьте необязательное расширенное описание…
|
||||
editor.signoff_desc=Добавить трейлер Signed-off-by с автором коммита в конце сообщения коммита.
|
||||
editor.commit_directly_to_this_branch=Сделайте коммит напрямую в ветвь <strong class="branch-name">%s</strong>.
|
||||
editor.create_new_branch=Создайте <strong>новую ветвь</strong> для этого коммита, и сделайте запрос на слияние.
|
||||
editor.commit_directly_to_this_branch=Сохранить коммит напрямую в ветвь <strong class="branch-name">%s</strong>.
|
||||
editor.create_new_branch=Сохранить коммит в <strong>новую ветвь</strong> и начать запрос на слияние.
|
||||
editor.create_new_branch_np=Создать <strong>новую ветвь</strong> для этого коммита.
|
||||
editor.propose_file_change=Предложить изменение файла
|
||||
editor.new_branch_name=Укажите название новой ветви для этого коммита
|
||||
|
@ -1406,7 +1407,7 @@ commitstatus.failure=Неудача
|
|||
commitstatus.pending=Ожидание
|
||||
commitstatus.success=Успешно
|
||||
|
||||
ext_issues=Доступ ко внешним задачам
|
||||
ext_issues=Внешние задачи
|
||||
ext_issues.desc=Ссылка на внешнюю систему отслеживания задач.
|
||||
|
||||
projects=Проекты
|
||||
|
@ -1587,9 +1588,9 @@ issues.no_content=Описание отсутствует.
|
|||
issues.close=Закрыть задачу
|
||||
issues.comment_pull_merged_at=коммит %[1]s был добавлен в %[2]s %[3]s
|
||||
issues.comment_manually_pull_merged_at=коммит %[1]s был вручную добавлен в %[2]s %[3]s
|
||||
issues.close_comment_issue=Прокомментировать и закрыть
|
||||
issues.close_comment_issue=Закрыть комментарием
|
||||
issues.reopen_issue=Открыть снова
|
||||
issues.reopen_comment_issue=Прокомментировать и открыть снова
|
||||
issues.reopen_comment_issue=Открыть снова комментарием
|
||||
issues.create_comment=Комментировать
|
||||
issues.closed_at=`задача была закрыта <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||
issues.reopened_at=`задача была открыта снова <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||
|
@ -1614,9 +1615,9 @@ issues.role.first_time_contributor_helper=Это первое участие п
|
|||
issues.role.contributor=Соавтор
|
||||
issues.re_request_review=Повторить запрос на отзыв
|
||||
issues.is_stale=Со времени этого обзора в этот PR были внесены некоторые изменения
|
||||
issues.remove_request_review=Удалить запрос на отзыв
|
||||
issues.remove_request_review_block=Невозможно удалить запрос на отзыв
|
||||
issues.dismiss_review=Отклонить отзыв
|
||||
issues.remove_request_review=Отменить запрос рецензии
|
||||
issues.remove_request_review_block=Не удалось отменить запрос рецензии
|
||||
issues.dismiss_review=Отклонить рецензию
|
||||
issues.dismiss_review_warning=Вы уверены, что хотите отклонить эту рецензию?
|
||||
issues.sign_in_require_desc=<a href="%s">Войдите</a>, чтобы присоединиться к обсуждению.
|
||||
issues.edit=Изменить
|
||||
|
@ -1747,17 +1748,17 @@ issues.dependency.add_error_cannot_create_circular=Вы не можете соз
|
|||
issues.dependency.add_error_dep_not_same_repo=Обе задачи должны находиться в одном репозитории.
|
||||
issues.review.self.approval=Вы не можете одобрить собственный запрос на слияние.
|
||||
issues.review.self.rejection=Невозможно запрашивать изменения своего запроса на слияние.
|
||||
issues.review.approve=одобрил(а) эти изменения %s
|
||||
issues.review.comment=рассмотрел(а) изменения %s
|
||||
issues.review.dismissed=отклонил(а) отзыв %s %s
|
||||
issues.review.approve=изменения одобрены %s
|
||||
issues.review.comment=оставлена рецензия %s
|
||||
issues.review.dismissed=отклонена рецензия %s %s
|
||||
issues.review.dismissed_label=Отклонено
|
||||
issues.review.left_comment=оставил комментарий
|
||||
issues.review.content.empty=Запрашивая изменения, вы обязаны оставить комментарий с пояснением своих пожеланий относительно запроса на слияние.
|
||||
issues.review.reject=запросил(а) изменения %s
|
||||
issues.review.reject=запрошены изменения %s
|
||||
issues.review.wait=был запрошен для отзыва %s
|
||||
issues.review.add_review_request=запросил(а) отзыв от %s %s
|
||||
issues.review.remove_review_request=удалил(а )заявку на отзыв для %s %s
|
||||
issues.review.remove_review_request_self=отказался добавлять отзыв %s
|
||||
issues.review.add_review_request=запрошена рецензия у %s %s
|
||||
issues.review.remove_review_request=отменён запрос рецензии для %s %s
|
||||
issues.review.remove_review_request_self=отказ от рецензирования %s
|
||||
issues.review.pending=Ожидание
|
||||
issues.review.pending.tooltip=Этот комментарий в настоящее время не виден другим пользователям. Чтобы отправить отложенные комментарии, выберите «%s» → «%s/%s/%s» в верхней части страницы.
|
||||
issues.review.review=Рецензия
|
||||
|
@ -1822,7 +1823,7 @@ pulls.tab_conversation=Обсуждение
|
|||
pulls.tab_commits=Коммиты
|
||||
pulls.tab_files=Изменённые файлы
|
||||
pulls.reopen_to_merge=Пожалуйста, переоткройте этот запрос на слияние для выполнения слияния.
|
||||
pulls.cant_reopen_deleted_branch=Этот запрос на слияние не может быть открыт заново, потому что ветвь была удалена.
|
||||
pulls.cant_reopen_deleted_branch=Этот запрос на слияние не может быть открыт повторно, потому что ветвь была удалена.
|
||||
pulls.merged=Слито
|
||||
pulls.merged_success=Запрос на слияние удовлетворён и закрыт
|
||||
pulls.closed=Запрос на слияние закрыт
|
||||
|
@ -1896,7 +1897,7 @@ pulls.update_branch_rebase=Обновить ветвь перебазирова
|
|||
pulls.update_branch_success=Ветвь успешно обновлена
|
||||
pulls.update_not_allowed=Недостаточно прав для обновления ветви
|
||||
pulls.outdated_with_base_branch=Эта ветвь отстает от базовой ветви
|
||||
pulls.close=Закрыть запрос на слияние
|
||||
pulls.close=Закрыть запрос слияния
|
||||
pulls.closed_at=`закрыл этот запрос на слияние <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||
pulls.reopened_at=`переоткрыл этот запрос на слияние <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||
pulls.cmd_instruction_hint=Показать инструкции для командной строки
|
||||
|
@ -1918,7 +1919,7 @@ pulls.auto_merge_newly_scheduled_comment=`запланировал этот за
|
|||
pulls.auto_merge_canceled_schedule_comment=`отменил автоматическое слияние этого запроса после прохождения всех проверок %[1]s`
|
||||
|
||||
pulls.delete.title=Удалить этот запрос на слияние?
|
||||
pulls.delete.text=Вы точно хотите удалить этот запрос на слияние? (Это навсегда удалит всё его содержимое. Возможно, лучше закрыть его в архивных целях)
|
||||
pulls.delete.text=Вы точно хотите удалить этот запрос на слияние? (Это навсегда удалит всё его содержимое. Возможно, будет лучше закрыть его в архивных целях)
|
||||
|
||||
|
||||
pull.deleted_branch=(удалена):%s
|
||||
|
@ -1964,7 +1965,7 @@ signing.wont_sign.commitssigned=Слияние не будет подписан
|
|||
signing.wont_sign.approved=Слияние не будет подписано, так как запрос на слияние не одобрен.
|
||||
signing.wont_sign.not_signed_in=Вы не вошли в систему.
|
||||
|
||||
ext_wiki=Доступ ко внешней вики
|
||||
ext_wiki=Внешняя вики
|
||||
ext_wiki.desc=Ссылка на внешнюю вики.
|
||||
|
||||
wiki=Вики
|
||||
|
@ -2149,7 +2150,7 @@ settings.packages_desc=Включить реестр пакетов
|
|||
settings.projects_desc=Включить проекты
|
||||
settings.actions_desc=Включить интеграцию конвейеров CI/CD с Forgejo Actions
|
||||
settings.admin_settings=Настройки администратора
|
||||
settings.admin_enable_health_check=Проверять целостность данных в этом репозитории (git fsck)
|
||||
settings.admin_enable_health_check=Выполнять проверки целостности данных (git fsck)
|
||||
settings.admin_code_indexer=Индексатор кода
|
||||
settings.admin_stats_indexer=Индексатор статистики кода
|
||||
settings.admin_indexer_commit_sha=Последний индексированный коммит
|
||||
|
@ -2239,7 +2240,7 @@ settings.hooks_desc=Веб-хуки позволяют внешним служб
|
|||
settings.webhook_deletion=Удаление веб-хука
|
||||
settings.webhook_deletion_desc=Удаление этого веб-хука приведет к удалению всей связанной с ним информации, включая историю. Хотите продолжить?
|
||||
settings.webhook_deletion_success=Веб-хук был удалён.
|
||||
settings.webhook.test_delivery=Проверить доставку
|
||||
settings.webhook.test_delivery=Проверить отправку
|
||||
settings.webhook.test_delivery_desc=Отправить тестовое событие для тестирования настройки веб-хука.
|
||||
settings.webhook.request=Запрос
|
||||
settings.webhook.response=Ответ
|
||||
|
@ -2253,7 +2254,7 @@ settings.githook_edit_desc=Если хук не активен, будет по
|
|||
settings.githook_name=Название хукa
|
||||
settings.githook_content=Содержимое хука
|
||||
settings.update_githook=Обновить хук
|
||||
settings.add_webhook_desc=Forgejo будет оправлять <code>POST</code>-запросы на указанный URL адрес с указанным заголовком «Content-Type». Подробности в <a target="_blank" rel="noopener noreferrer" href="%s">инструкции по использованию веб-хуков</a>.
|
||||
settings.add_webhook_desc=Forgejo будет оправлять <code>POST</code>-запросы на указанный URL обработчика с указанным заголовком «Content-Type». Подробности доступны в <a target="_blank" rel="noopener noreferrer" href="%s">инструкции по использованию веб-хуков</a>.
|
||||
settings.payload_url=URL обработчика
|
||||
settings.http_method=HTTP-метод
|
||||
settings.content_type=Тип содержимого POST
|
||||
|
@ -2264,10 +2265,10 @@ settings.slack_color=Цвет
|
|||
settings.discord_username=Имя пользователя
|
||||
settings.discord_icon_url=URL иконки
|
||||
settings.event_desc=Срабатывать на:
|
||||
settings.event_push_only=События отправки
|
||||
settings.event_push_only=События отправки (push)
|
||||
settings.event_send_everything=Все события
|
||||
settings.event_choose=Другие события…
|
||||
settings.event_header_repository=События репозитория
|
||||
settings.event_choose=Выбранные события…
|
||||
settings.event_header_repository=События репозиториев
|
||||
settings.event_create=Создание
|
||||
settings.event_create_desc=Создание ветвей и тегов.
|
||||
settings.event_delete=Удаление
|
||||
|
@ -2283,33 +2284,33 @@ settings.event_push_desc=Отправка изменений в репозито
|
|||
settings.event_repository=Репозиторий
|
||||
settings.event_repository_desc=Создание и удаление репозиториев.
|
||||
settings.event_header_issue=События задач
|
||||
settings.event_issues=Задачи
|
||||
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_desc=Изменение и очистка меток задач.
|
||||
settings.event_issue_milestone=Этапы задач
|
||||
settings.event_issue_milestone_desc=Добавление задач в этапы и удаление.
|
||||
settings.event_issue_comment=Комментарии задач
|
||||
settings.event_issue_label=Метки
|
||||
settings.event_issue_label_desc=Добавление и удаление меток задач.
|
||||
settings.event_issue_milestone=Этапы
|
||||
settings.event_issue_milestone_desc=Добавление задач в этапы, удаление и изменение.
|
||||
settings.event_issue_comment=Комментарии
|
||||
settings.event_issue_comment_desc=Добавление, изменение и удаление комментариев в задачах.
|
||||
settings.event_header_pull_request=События запросов слияний
|
||||
settings.event_pull_request=Запросы слияния
|
||||
settings.event_pull_request=Изменение
|
||||
settings.event_pull_request_desc=Создание, закрытие, переоткрытие и изменение запросов слияния.
|
||||
settings.event_pull_request_assign=Назначение запросов
|
||||
settings.event_pull_request_assign=Назначение
|
||||
settings.event_pull_request_assign_desc=Выдача и снятие назначения запроса на слияние.
|
||||
settings.event_pull_request_label=Метки запросов слияния
|
||||
settings.event_pull_request_label_desc=Изменение и очистка меток запроса слияния.
|
||||
settings.event_pull_request_milestone=Этапы запросов слияния
|
||||
settings.event_pull_request_milestone_desc=Добавление запроса слияния в этап и удаление.
|
||||
settings.event_pull_request_comment=Комментарии запросов на слияние
|
||||
settings.event_pull_request_label=Метки
|
||||
settings.event_pull_request_label_desc=Добавление и удаление меток запроса слияния.
|
||||
settings.event_pull_request_milestone=Этапы
|
||||
settings.event_pull_request_milestone_desc=Добавление запросов слияния в этапы, удаление и изменение.
|
||||
settings.event_pull_request_comment=Комментарии
|
||||
settings.event_pull_request_comment_desc=Добавление, изменение и удаление комментариев в запросах на слияние.
|
||||
settings.event_pull_request_review=Запрос на слияние рассмотрен
|
||||
settings.event_pull_request_review_desc=Запрос на слияние утвержден, отклонён или оставлен комментарий.
|
||||
settings.event_pull_request_sync=Запрос на слияние синхронизирован
|
||||
settings.event_pull_request_sync_desc=Запрос на слияние синхронизирован.
|
||||
settings.event_pull_request_review_request=Запрошена рецензия для запроса на слияние
|
||||
settings.event_pull_request_review_request_desc=Создан или удалён запрос на рецензию для запроса на слияние.
|
||||
settings.event_pull_request_review=Рецензии
|
||||
settings.event_pull_request_review_desc=Изменения в запросе слияния одобрены, отклонены прокомментированы.
|
||||
settings.event_pull_request_sync=Синхронизация
|
||||
settings.event_pull_request_sync_desc=Ветвь синхронизирована с целевой ветвью автоматически.
|
||||
settings.event_pull_request_review_request=Запросы рецензий
|
||||
settings.event_pull_request_review_request_desc=Создание и отмена запросов рецензий в запросах слияний.
|
||||
settings.event_pull_request_approvals=Одобрения запросов слияний
|
||||
settings.event_pull_request_merge=Слияние запроса на слияние
|
||||
settings.event_package=Пакеты
|
||||
|
@ -2318,15 +2319,15 @@ settings.branch_filter=Фильтр ветвей
|
|||
settings.branch_filter_desc=Белый список ветвей для событий Push, создания ветвей и удаления ветвей, указанных в виде глоб-шаблона. Если пустой или <code>*</code>, то все событий для всех ветвей будут зарегистрированы. Перейдите по ссылке <a href="%[1]s">%[2]s</a> на документацию по синтаксису. Примеры: <code>master</code>, <code>{master,release*}</code>.
|
||||
settings.authorization_header=Заголовок авторизации
|
||||
settings.authorization_header_desc=Будет включён в качестве заголовка авторизации для запросов. Примеры: %s.
|
||||
settings.active=Активный
|
||||
settings.active=Активен
|
||||
settings.active_helper=Информация о происходящих событиях будет отправляться на URL этого веб-хука.
|
||||
settings.add_hook_success=Веб-хук добавлен.
|
||||
settings.update_webhook=Обновить веб-хук
|
||||
settings.update_hook_success=Веб-хук обновлён.
|
||||
settings.delete_webhook=Удалить веб-хук
|
||||
settings.recent_deliveries=Недавние рассылки
|
||||
settings.hook_type=Тип хука
|
||||
settings.slack_token=Slack токен
|
||||
settings.recent_deliveries=Недавние отправки
|
||||
settings.hook_type=Тип веб-хука
|
||||
settings.slack_token=Токен
|
||||
settings.slack_domain=Домен
|
||||
settings.slack_channel=Канал
|
||||
settings.add_web_hook_desc=Интегрируйте <a target="_blank" rel="noreferrer" href="%s">%s</a> с этим репозиторием .
|
||||
|
@ -2410,7 +2411,7 @@ settings.protect_branch_name_pattern=Шаблон названий защищё
|
|||
settings.protect_branch_name_pattern_desc=Шаблоны названий защищённых ветвей. О синтаксисе шаблонов читайте в <a href="%s">документации</a>. Примеры: main, release/**
|
||||
settings.protect_patterns=Шаблоны
|
||||
settings.protect_protected_file_patterns=Шаблоны защищённых файлов, разделённые точкой с запятой «;»
|
||||
settings.protect_protected_file_patterns_desc=Защищенные файлы нельзя изменить напрямую, даже если пользователь имеет право добавлять, редактировать или удалять файлы в этой ветви. Можно указать несколько шаблонов, разделяя их точкой с запятой («;»). О синтаксисе шаблонов читайте в документации <a href="%s">github.com/gobwas/glob</a> . Примеры: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
|
||||
settings.protect_protected_file_patterns_desc=Защищенные файлы нельзя изменить напрямую, даже если пользователь имеет право добавлять, редактировать или удалять файлы в этой ветви. Можно указать несколько шаблонов, разделяя их точкой с запятой («;»). О синтаксисе шаблонов читайте в документации <a href="%s">%s</a> . Примеры: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
|
||||
settings.protect_unprotected_file_patterns=Шаблоны незащищённых файлов, разделённые точкой с запятой «;»
|
||||
settings.protect_unprotected_file_patterns_desc=Незащищенные файлы, которые допускается изменять напрямую, если пользователь имеет право на запись, несмотря на ограничение отправки изменений. Можно указать несколько шаблонов, разделяя их точкой с запятой («;»). О синтаксисе шаблонов читайте в документации <a href="%[1]s">%[2]s</a> . Примеры: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
|
||||
settings.add_protected_branch=Включить защиту
|
||||
|
@ -2717,11 +2718,11 @@ settings.wiki_globally_editable = Разрешить редактировани
|
|||
settings.webhook.test_delivery_desc_disabled = Активируйте этот веб-хук для проверки тестовым событием.
|
||||
commits.browse_further = Смотреть далее
|
||||
vendored = Сторонний
|
||||
settings.units.add_more = Доб. больше...
|
||||
settings.units.add_more = Вкл. больше
|
||||
pulls.fast_forward_only_merge_pull_request = Только fast-forward
|
||||
settings.units.overview = Обзор
|
||||
settings.units.units = Разделы репозитория
|
||||
pulls.reopen_failed.head_branch = Этот запрос на слияние не может быть открыт заново, потому что головная ветвь больше не существует.
|
||||
settings.units.units = Разделы
|
||||
pulls.reopen_failed.head_branch = Этот запрос на слияние не может быть открыт повторно, так как исходная ветвь больше не существует.
|
||||
pulls.reopen_failed.base_branch = Этот запрос на слияние не может быть открыт заново, потому что базовая ветвь больше не существует.
|
||||
settings.ignore_stale_approvals = Игнорировать устаревшие одобрения
|
||||
contributors.contribution_type.commits = Коммиты
|
||||
|
@ -2825,6 +2826,9 @@ mirror_use_ssh.helper = Forgejo будет синхронизировать из
|
|||
mirror_denied_combination = Невозможно одновременно использовать аутентификацию по SSH и по паролю.
|
||||
settings.mirror_settings.push_mirror.none_ssh = Нет
|
||||
settings.mirror_settings.push_mirror.copy_public_key = Копировать публичный ключ
|
||||
issues.new.assign_to_me = Назначить себе
|
||||
issues.all_title = Все
|
||||
settings.discord_icon_url.exceeds_max_length = URL иконки не может быть длиннее 2048 символов
|
||||
|
||||
[graphs]
|
||||
|
||||
|
@ -2845,9 +2849,9 @@ org_desc=Описание
|
|||
team_name=Название команды
|
||||
team_desc=Описание
|
||||
team_name_helper=Названия команд должны быть короткими и запоминающимися.
|
||||
team_desc_helper=Опишите назначение или роль команды.
|
||||
team_access_desc=Доступ к репозиторию
|
||||
team_permission_desc=Разрешение
|
||||
team_desc_helper=Назначение или роль этой команды.
|
||||
team_access_desc=Доступ к репозиториям
|
||||
team_permission_desc=Разрешения
|
||||
team_unit_desc=Разрешить доступ к разделам репозитория
|
||||
team_unit_disabled=(Отключено)
|
||||
|
||||
|
@ -3142,7 +3146,7 @@ repos.lfs_size=Размер LFS
|
|||
|
||||
packages.package_manage_panel=Управление пакетами
|
||||
packages.total_size=Общий размер: %s
|
||||
packages.unreferenced_size=Размер по ссылке: %s
|
||||
packages.unreferenced_size=Неуказанный размер: %s
|
||||
packages.cleanup=Очистить устаревшие данные
|
||||
packages.cleanup.success=Очистка устаревших данных успешно завершена
|
||||
packages.owner=Владелец
|
||||
|
@ -3332,7 +3336,7 @@ config.allow_only_external_registration=Регистрация только че
|
|||
config.enable_openid_signup=Саморегистрация через OpenID
|
||||
config.enable_openid_signin=Вход через OpenID
|
||||
config.show_registration_button=Кнопка регистрации
|
||||
config.require_sign_in_view=Для просмотра содержимого необходима авторизация
|
||||
config.require_sign_in_view=Требовать авторизацию для просмотра содержимого
|
||||
config.mail_notify=Уведомления по эл. почте
|
||||
config.enable_captcha=CAPTCHA
|
||||
config.active_code_lives=Срок действия кода активации учётной записи
|
||||
|
@ -3446,7 +3450,7 @@ monitor.queue.activeworkers=Активные обработчики
|
|||
monitor.queue.maxnumberworkers=Макс. количество обработчиков
|
||||
monitor.queue.numberinqueue=Позиция в очереди
|
||||
monitor.queue.settings.title=Настройки пула
|
||||
monitor.queue.settings.desc=Пулы увеличиваются динамически в ответ на блокировку очередей своих обработчиков.
|
||||
monitor.queue.settings.desc=Пулы динамически растут в зависимости от блокировки очередей их рабочих.
|
||||
monitor.queue.settings.maxnumberworkers=Макс. количество обработчиков
|
||||
monitor.queue.settings.maxnumberworkers.placeholder=В настоящий момент %[1]d
|
||||
monitor.queue.settings.maxnumberworkers.error=Максимальное количество обработчиков должно быть числом
|
||||
|
@ -3526,17 +3530,17 @@ comment_issue=`оставлен комментарий под задачей <a
|
|||
comment_pull=`отставлен комментарий под запросом на слияние <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
merge_pull_request=`принят запрос на слияние <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
auto_merge_pull_request=`автоматически принят запрос на слияние <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
transfer_repo=передан репозиторий <code>%s</code> <a href="%s">%s</a>
|
||||
push_tag=создан тег <a href="%[2]s">%[3]s</a> в <a href="%[1]s">%[4]s</a>
|
||||
delete_tag=удалён тэг %[2]s из <a href="%[1]s">%[3]s</a>
|
||||
delete_branch=удалена ветвь %[2]s из <a href="%[1]s">%[3]s</a>
|
||||
transfer_repo=репозиторий <code>%s</code> был передан: <a href="%s">%s</a>
|
||||
push_tag=отправлен тег <a href="%[2]s">%[3]s</a> в <a href="%[1]s">%[4]s</a>
|
||||
delete_tag=удалён тег %[2]s в <a href="%[1]s">%[3]s</a>
|
||||
delete_branch=удалена ветвь %[2]s в <a href="%[1]s">%[3]s</a>
|
||||
compare_branch=Сравнить
|
||||
compare_commits=Сравнить %d коммитов
|
||||
compare_commits_general=Сравнить коммиты
|
||||
mirror_sync_push=синхронизировал(а) коммиты <a href="%[2]s">%[3]s</a> в <a href="%[1]s">%[4]s</a> из зеркала
|
||||
mirror_sync_create=синхронизировал(а) новую ссылку <a href="%[2]s">%[3]s</a> в <a href="%[1]s">%[4]s</a> из зеркала
|
||||
mirror_sync_delete=синхронизированные и удалённые ссылки <code>%[2]s</code> на <a href="%[1]s">%[3]s</a> из зеркала
|
||||
approve_pull_request=`одобрен <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
approve_pull_request=`одобрен запрос слияния <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
reject_pull_request=`предложил(а) изменения для <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
publish_release=`выпуск <a href="%[2]s">%[4]s</a> опубликован в <a href="%[1]s">%[3]s</a>`
|
||||
review_dismissed=`отклонён отзыв от <b>%[4]s</b> для <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
|
@ -3758,7 +3762,7 @@ owner.settings.cleanuprules.success.delete=Правило очистки уда
|
|||
owner.settings.chef.title=Реестр Chef
|
||||
owner.settings.chef.keypair=Создать пару ключей
|
||||
owner.settings.cleanuprules.none = Правил очистки пока нет.
|
||||
owner.settings.cargo.rebuild.description = Пересборка может быть полезной в случае, если индекс не синхронизирован с сохранёнными пакетами Cargo.
|
||||
owner.settings.cargo.rebuild.description = Пересборка может быть полезна в случае, если индекс не синхронизирован с хранящимися пакетами Cargo.
|
||||
rpm.repository = О репозитории
|
||||
rpm.repository.architectures = Архитектуры
|
||||
rpm.repository.multiple_groups = Этот пакет доступен в нескольких группах.
|
||||
|
@ -3800,7 +3804,7 @@ management=Управление секретами
|
|||
[actions]
|
||||
actions=Действия
|
||||
|
||||
unit.desc=Управление встроенными конвейерами CI/CD с Действиями Forgejo
|
||||
unit.desc=Управление встроенными конвейерами CI/CD с Действиями Forgejo.
|
||||
|
||||
status.unknown=Неизвестно
|
||||
status.waiting=Ожидает
|
||||
|
@ -3955,6 +3959,8 @@ pull_kind = Поиск слияний...
|
|||
union_tooltip = Включает результаты с совпавшими ключевыми словами, разделёнными пробелами
|
||||
union = Обычный
|
||||
milestone_kind = Поиск этапов...
|
||||
regexp = Регулярное выражение
|
||||
regexp_tooltip = Интерпретировать поисковый запрос как регулярное выражение
|
||||
|
||||
|
||||
[markup]
|
||||
|
@ -3963,4 +3969,24 @@ filepreview.lines = Строки с %[1]d по %[2]d в %[3]s
|
|||
filepreview.truncated = Предпросмотр был обрезан
|
||||
|
||||
[translation_meta]
|
||||
test = хи-хи!
|
||||
test = смайлик :)
|
||||
|
||||
[repo.permissions]
|
||||
code.write = <b>Запись:</b> отправка изменений в репозиторий, создание веток и тегов.
|
||||
code.read = <b>Чтение:</b> просмотр и клонирование исходного кода репозитория.
|
||||
issues.read = <b>Чтение:</b> просмотр и создание задач и комментариев.
|
||||
pulls.read = <b>Чтение:</b> просмотр и открытие запросов слияний.
|
||||
releases.read = <b>Чтение:</b> просмотр выпусков и скачивание файлов.
|
||||
releases.write = <b>Запись:</b> публикация, изменение и удаление выпусков и их файлов.
|
||||
wiki.read = <b>Чтение:</b> просмотр страниц и истории редактирования встроенной вики.
|
||||
projects.write = <b>Запись:</b> создание и изменение проектов и колонок.
|
||||
packages.write = <b>Запись:</b> публикация и удаление пакетов в репозитории.
|
||||
projects.read = <b>Чтение:</b> просмотр проектов в репозитории.
|
||||
ext_wiki = Доступ ко ссылке на внешнюю вики. Настройка разрешений выполняется вне сайта.
|
||||
actions.read = <b>Чтение:</b> просмотр интегрированных конвейеров CI/CD и их логов.
|
||||
pulls.write = <b>Запись:</b> закрытие запросов слияний и изменение их метаданных: меток, этапа, назначений, срока выполнения и зависимостей и пр.
|
||||
issues.write = <b>Запись:</b> закрытие задач и изменение их метаданных: меток, этапа, назначений, срока выполнения и зависимостей и пр.
|
||||
actions.write = <b>Запись:</b> ручной запуск, перезапуск, отмена и одобрение работы конвейеров CI/CD.
|
||||
wiki.write = <b>Запись:</b> создание, изменение и удаление страниц во встроенной вики.
|
||||
packages.read = <b>Чтение:</b> просмотр и скачивание пакетов в репозитории.
|
||||
ext_issues = Доступ к ссылке на внешний трекер задач. Настройка разрешений выполняется вне сайта.
|
|
@ -555,7 +555,7 @@ repo.collaborator.added.subject = %s vas je dodal v %s
|
|||
team_invite.subject = %[1]s vas je povabil, da se pridružite organizaciji %[2]s
|
||||
issue.action.new = <b>@%[1]s</b> ustvaril #%[2]d.
|
||||
team_invite.text_1 = %[1]s vas je povabil, da se pridružite ekipi %[2]s v organizaciji %[3]s.
|
||||
team_invite.text_3 = Opomba: To vabilo je bilo namenjeno %[1]. Če tega vabila niste pričakovali, ga lahko ignorirate.
|
||||
team_invite.text_3 = Opomba: To vabilo je bilo namenjeno %[1]s. Če tega vabila niste pričakovali, ga lahko ignorirate.
|
||||
reply = ali neposredno odgovorite na to e-poštno sporočilo
|
||||
activate_email = Preverite svoj e-poštni naslov
|
||||
activate_email.title = %s, preverite svoj e-poštni naslov
|
||||
|
|
|
@ -16,7 +16,7 @@ template=Mall
|
|||
language=Språk
|
||||
notifications=Notiser
|
||||
create_new=Skapa…
|
||||
user_profile_and_more=Profil och Inställningar…
|
||||
user_profile_and_more=Profil och inställningar…
|
||||
signed_in_as=Inloggad som
|
||||
toc=Innehållsförteckning
|
||||
licenses=Licenser
|
||||
|
@ -38,7 +38,7 @@ organization=Organisation
|
|||
mirror=Spegel
|
||||
new_repo=Ny utvecklingskatalog
|
||||
new_migrate=Ny migrering
|
||||
new_mirror=Ny Spegling
|
||||
new_mirror=Ny spegling
|
||||
new_fork=Ny förgrening av utvecklingskatalog
|
||||
new_org=Ny organisation
|
||||
new_project=Nytt projekt
|
||||
|
@ -94,16 +94,73 @@ name=Namn
|
|||
logo = Logotyp
|
||||
sign_in_with_provider = Logga in med %s
|
||||
enable_javascript = Denna webbplats kräver JavaScript.
|
||||
ok = OK
|
||||
more_items = Fler saker
|
||||
webauthn_sign_in = Tryck på knappen på din säkerhetsnyckel. Om din säkerhetsnycket inte har en knapp, dra ut den och sätt in den igen.
|
||||
new_project_column = Ny kolumn
|
||||
copy_type_unsupported = Den här filtypen kan inte kopieras
|
||||
error = Fel
|
||||
retry = Försök igen
|
||||
rerun_all = Kör om alla jobb
|
||||
copy_success = Kopierad!
|
||||
locked = Låst
|
||||
copy = Kopiera
|
||||
copy_url = Kopiera URL
|
||||
copy_error = Kopiering misslyckades
|
||||
copy_content = Kopiera innehåll
|
||||
webauthn_insert_key = Skriv in din säkerhetsnyckel
|
||||
webauthn_press_button = Var god tryck på knappen på din säkerhetsnyckel…
|
||||
webauthn_error = Kunde inte läsa din säkerhetsnyckel.
|
||||
webauthn_unsupported_browser = Din webbläsare har inte ännu stöd för WebAuthn.
|
||||
webauthn_error_unknown = Ett okänt fel har inträffat. Var god försök igen.
|
||||
webauthn_error_empty = Du måste ange ett namn för den här nyckeln.
|
||||
new_org.title = Ny organisation
|
||||
new_org.link = Ny organisation
|
||||
test = Test
|
||||
concept_system_global = Global
|
||||
concept_user_individual = Individuell
|
||||
rss_feed = RSS-flöde
|
||||
never = Aldrig
|
||||
unknown = Okänd
|
||||
confirm_delete_artifact = Är du säker på att du vill ta bort artefakten "%s"?
|
||||
artifacts = Artefakter
|
||||
show_timestamps = Visa tidsstämpel
|
||||
show_full_screen = Visa i fullskärm
|
||||
download_logs = Ladda ner loggar
|
||||
go_back = Gå tillbaka
|
||||
show_log_seconds = Visa sekunder
|
||||
|
||||
[aria]
|
||||
footer.software = Om den här mjukvaran
|
||||
footer.links = Länkar
|
||||
|
||||
[heatmap]
|
||||
contributions_one = bidrag
|
||||
contributions_zero = Inga bidrag
|
||||
contributions_format = {contributions} på {day} {month}, {year}
|
||||
contributions_few = bidrag
|
||||
less = Mindre
|
||||
more = Mer
|
||||
number_of_contributions_in_the_last_12_months = %s bidrag under de senaste 12 månaderna
|
||||
|
||||
[editor]
|
||||
buttons.quote.tooltip = Citera text
|
||||
buttons.code.tooltip = Lägg till kod
|
||||
buttons.link.tooltip = Lägg till en länk
|
||||
buttons.heading.tooltip = Lägg till rubrik
|
||||
buttons.bold.tooltip = Lägg till fetstilt text
|
||||
buttons.italic.tooltip = Lägg till kursiv text
|
||||
buttons.list.unordered.tooltip = Lägg till en punktlista
|
||||
buttons.list.ordered.tooltip = Lägg till en numrerad lista
|
||||
buttons.list.task.tooltip = Lägg till en lista med sysslor
|
||||
buttons.mention.tooltip = Nämn en användare eller ett team
|
||||
|
||||
[filter]
|
||||
|
||||
[error]
|
||||
occurred = Ett fel har inträffat
|
||||
server_internal = Internt serverfel
|
||||
network_error = Nätverksfel
|
||||
|
||||
[startpage]
|
||||
app_desc=En smidig, självhostad Git-tjänst
|
||||
|
@ -140,48 +197,48 @@ err_admin_name_is_invalid=Administratörsanvändarnamnet är ogiltigt
|
|||
|
||||
general_title=Allmänna inställningar
|
||||
app_name=Sajtens namn
|
||||
app_name_helper=Du kan ange ditt företagsnamn här.
|
||||
app_name_helper=Skriv in din instans namn här. Det kommer att visas på varje sida.
|
||||
repo_path=Rotsökväg för utvecklingskatalog
|
||||
repo_path_helper=Fjärrutvecklingskataloger kommer att sparas i denna katalog.
|
||||
lfs_path=LFS Rotsökväg
|
||||
lfs_path=LFS rotsökväg
|
||||
lfs_path_helper=Filer hanterade av Git LFS kommer att sparas i denna mapp. Lämna tom för att avaktivera.
|
||||
run_user=Kör som användarnamn
|
||||
run_user=Användare att köra som
|
||||
ssh_port=SSH-serverport
|
||||
ssh_port_helper=Portnumret som din SSH-server lyssnar på. Lämna tom för att inaktivera.
|
||||
http_port=Forgejo HTTP-lyssningsport
|
||||
http_port_helper=Portnumret som Forgejos webbserver kommer lyssna på.
|
||||
app_url=Forgejo URL
|
||||
http_port=HTTP-lyssningsport
|
||||
http_port_helper=Portnumret som kommer att användas av Forgejos webbserver.
|
||||
app_url=Bas-URL
|
||||
app_url_helper=Basadressen för HTTP(S)-kloningslänkar och mejlnotifikationer.
|
||||
log_root_path=Loggsökväg
|
||||
log_root_path_helper=Loggfiler kommer skrivas till denna katalog.
|
||||
|
||||
optional_title=Övriga inställningar
|
||||
email_title=Mejlinställningar
|
||||
email_title=E-postinställningar
|
||||
smtp_addr=SMTP-server
|
||||
smtp_port=SMTP-port
|
||||
smtp_from=Skicka Mejl Som
|
||||
smtp_from=Skicka E-post som
|
||||
smtp_from_helper=Mejladress som Forgejo kommer att använda. Anges i simpelt ('email@example.com') eller fullständigt ('Name <email@example.com>') format.
|
||||
mailer_user=SMTP-Användarnamn
|
||||
mailer_password=SMTP-Lösenord
|
||||
register_confirm=Kräv Bekräftelse Via Mejl För Att Registrera
|
||||
mail_notify=Aktivera Mejlnotifikationer
|
||||
server_service_title=Inställningar för Server- och Tredjepartstjänster
|
||||
offline_mode=Aktivera Lokalt Läge
|
||||
mailer_user=SMTP-användarnamn
|
||||
mailer_password=SMTP-lösenord
|
||||
register_confirm=Kräv bekräftelse via E-post för att registrera
|
||||
mail_notify=Aktivera E-postnotifikationer
|
||||
server_service_title=Inställningar för server- och tredjepartstjänster
|
||||
offline_mode=Aktivera lokalt läge
|
||||
offline_mode.description=Inaktivera CDN från tredjepart och distribuera samtliga resurser lokalt istället.
|
||||
disable_gravatar=Inaktivera Gravatar
|
||||
disable_gravatar.description=Inaktivera Gravatar- och avatarskällor från tredjepart. Om användaren inte laddar upp en avatar så kommer en standardavatar att användas.
|
||||
federated_avatar_lookup=Aktivera Federerade Avatarer
|
||||
federated_avatar_lookup=Aktivera federerade avatarer
|
||||
federated_avatar_lookup.description=Använd libravatar vid förenad uppslagning av avatarer.
|
||||
disable_registration=Inaktivera Självregistrering
|
||||
disable_registration=Inaktivera självregistrering
|
||||
disable_registration.description=Inaktivera självregistrering av användare. Endast administratörer kommer kunna skapa nya konton.
|
||||
allow_only_external_registration.description=Tillåt registrering endast via externa tjänster
|
||||
allow_only_external_registration.description=Användare kommer endast kunna skapa nya konton genom att använda konfigurerade externa tjänster.
|
||||
openid_signin=Aktivera OpenID-inloggning
|
||||
openid_signin.description=Aktivera användarinloggning via OpenID.
|
||||
openid_signin.description=Tillåt användare att logga in via OpenID.
|
||||
openid_signup=Aktivera självregistrering genom OpenID
|
||||
openid_signup.description=Aktivera OpenID-baserad självregistrering av användare.
|
||||
openid_signup.description=Tillåt användare att skapa konton via OpenID om självregistrering är aktiverad.
|
||||
enable_captcha=Aktivera CAPTCHA registrering
|
||||
enable_captcha.description=Kräv captcha för användarregistrering.
|
||||
require_sign_in_view=Kräv Inloggning För Att Visa Sidor
|
||||
require_sign_in_view=Kräv inloggning för att visa instanssidor
|
||||
admin_setting.description=Skapandet av administratörskonto är frivilligt. Den första användaren som registreras blir automatiskt administratör.
|
||||
admin_title=Inställningar för Administratörskonto
|
||||
admin_name=Användarnamn för Administratör
|
||||
|
@ -205,6 +262,13 @@ default_enable_timetracking=Aktivera tidredovisning som Standard
|
|||
default_enable_timetracking.description=Aktivera tidsredovisning för nya utvecklingskataloger som standard.
|
||||
no_reply_address=Dold mejldomän
|
||||
no_reply_address_helper=Domännamn för användare med en dold mailadress. Exempelvis kommer användarnamnet 'joe' att loggas i Git som 'joe@noreply.example.org' om dold maildomän är satt till 'noreply.example.org'.
|
||||
require_db_desc = Forgejo kräver MySQL, PostgreSQL, SQLite3 eller TiDB (MySQL-protokoll).
|
||||
allow_only_external_registration = Tillåt registrering endast via externa tjänster
|
||||
app_slogan = Instansslogan
|
||||
app_slogan_helper = Skriv in din slogan här. Lämna tom för att stänga av.
|
||||
domain = Serverdomän
|
||||
domain_helper = Domän eller värdadress för servern.
|
||||
reinstall_error = Du försöker att installera i en existerande Forgejo-databas
|
||||
|
||||
[home]
|
||||
uname_holder=Användarnamn eller Mejladress
|
||||
|
@ -2076,3 +2140,7 @@ runs.commit=Commit
|
|||
; Ordered by git filemode value, ascending. E.g. directory has "040000", normal file has "100644", …
|
||||
symbolic_link=Symbolisk länk
|
||||
|
||||
|
||||
|
||||
[search]
|
||||
milestone_kind = Sök milstolpar...
|
|
@ -1041,9 +1041,9 @@ blame.ignore_revs=<a href="%s">.git-blame-ignore-revs</a> dosyasındaki sürüml
|
|||
blame.ignore_revs.failed=<a href="%s">.git-blame-ignore-revs</a> dosyasındaki sürümler yok sayılamadı.
|
||||
author_search_tooltip=En fazla 30 kullanıcı görüntüler
|
||||
|
||||
tree_path_not_found_commit=%[1] yolu, %[2]s işlemesinde mevcut değil
|
||||
tree_path_not_found_branch=%[1] yolu, %[2]s dalında mevcut değil
|
||||
tree_path_not_found_tag=%[1] yolu, %[2]s etiketinde mevcut değil
|
||||
tree_path_not_found_commit=%[1]s yolu, %[2]s işlemesinde mevcut değil
|
||||
tree_path_not_found_branch=%[1]s yolu, %[2]s dalında mevcut değil
|
||||
tree_path_not_found_tag=%[1]s yolu, %[2]s etiketinde mevcut değil
|
||||
|
||||
transfer.accept=Aktarımı Kabul Et
|
||||
transfer.accept_desc=`"%s" tarafına aktar`
|
||||
|
@ -2344,7 +2344,7 @@ settings.protect_branch_name_pattern=Korunmuş Dal Adı Deseni
|
|||
settings.protect_branch_name_pattern_desc=Korunmuş dal isim desenleri. Desen sözdizimi için <a href="%s">belgelere</a> bakabilirsiniz. Örnekler: main, release/**
|
||||
settings.protect_patterns=Desenler
|
||||
settings.protect_protected_file_patterns=Korumalı dosya kalıpları (noktalı virgülle ayrılmış ';'):
|
||||
settings.protect_protected_file_patterns_desc=Kullanıcının bu dalda dosya ekleme, düzenleme veya silme hakları olsa bile doğrudan değiştirilmesine izin verilmeyen korumalı dosyalar. Birden çok desen noktalı virgül (';') kullanılarak ayrılabilir. Desen sözdizimi için <a href='%s'>github.com/gobwas/glob</a> belgelerine bakın. Örnekler: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
|
||||
settings.protect_protected_file_patterns_desc=Kullanıcının bu dalda dosya ekleme, düzenleme veya silme hakları olsa bile doğrudan değiştirilmesine izin verilmeyen korumalı dosyalar. Birden çok desen noktalı virgül (';') kullanılarak ayrılabilir. Desen sözdizimi için <a href='%s'>%s</a> belgelerine bakın. Örnekler: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
|
||||
settings.protect_unprotected_file_patterns=Korunmasız dosya desenleri (noktalı virgülle ayrılmış ';'):
|
||||
settings.protect_unprotected_file_patterns_desc=Kullanıcının yazma erişimi, itme kısıtlamasını atlama hakkı olduğunda doğrudan değiştirmesine izin verilen korunmasız dosyalar. Birden çok desen noktalı virgül (';') kullanılarak ayrılabilir. Desen söz dizimi için <a href='%[1]s'>%[2]s</a> belgelerine bakın. Örnekler: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
|
||||
settings.add_protected_branch=Korumayı etkinleştir
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -60,7 +60,7 @@ forks = Các phân nhánh
|
|||
activities = Hoạt động
|
||||
pull_requests = Yêu cầu thêm mã
|
||||
save = Lưu
|
||||
issues =
|
||||
issues =
|
||||
enabled = Bật
|
||||
disabled = Tắt
|
||||
copy = Chép
|
||||
|
@ -84,4 +84,6 @@ signed_in_as = Đăng nhập bằng
|
|||
re_type = Xác nhận mật khẩu
|
||||
webauthn_sign_in = Nhấn nút trên khóa bảo mật, nếu không có nút thì bạn hãy rút ra rồi cắm lại.
|
||||
new_org.link = Tạo tổ chức
|
||||
error404 = Trang bạn đang tìm <strong>không tồn tại</strong> hoặc <strong>bạn không có quyền xem</strong>.
|
||||
error404 = Trang bạn đang tìm <strong>không tồn tại</strong> hoặc <strong>bạn không có quyền xem</strong>.
|
||||
edit = Chỉnh sửa
|
||||
filter = Lọc
|
|
@ -1,6 +1,6 @@
|
|||
[common]
|
||||
home=首页
|
||||
dashboard=首页
|
||||
dashboard=控制面板
|
||||
explore=探索
|
||||
help=帮助
|
||||
logo=徽标
|
||||
|
@ -12,15 +12,15 @@ sign_up=注册
|
|||
link_account=链接账户
|
||||
register=注册
|
||||
version=当前版本
|
||||
powered_by=Powered by %s
|
||||
powered_by=由 %s 提供支持
|
||||
page=页面
|
||||
template=模板
|
||||
language=语言选项
|
||||
notifications=通知
|
||||
active_stopwatch=活动时间跟踪器
|
||||
tracked_time_summary=基于问题列表过滤器的跟踪时间概要
|
||||
active_stopwatch=活跃时间跟踪器
|
||||
tracked_time_summary=基于工单列表过滤器的跟踪时间概要
|
||||
create_new=创建…
|
||||
user_profile_and_more=个人信息和设置…
|
||||
user_profile_and_more=个人信息与设置…
|
||||
signed_in_as=已登录用户
|
||||
enable_javascript=此网站需要 JavaScript。
|
||||
toc=目录
|
||||
|
@ -30,11 +30,11 @@ return_to_forgejo=返回 Forgejo
|
|||
username=用户名
|
||||
email=电子邮件地址
|
||||
password=密码
|
||||
access_token=访问令牌(Access Token)
|
||||
access_token=访问令牌
|
||||
re_type=确认密码
|
||||
captcha=验证码
|
||||
twofa=两步验证
|
||||
twofa_scratch=两步验证口令
|
||||
twofa_scratch=两步验证备用验证码
|
||||
passcode=验证码
|
||||
|
||||
webauthn_insert_key=插入安全密钥
|
||||
|
@ -56,17 +56,17 @@ organization=组织
|
|||
mirror=镜像
|
||||
new_repo=创建仓库
|
||||
new_migrate=迁移外部仓库
|
||||
new_mirror=创建新的镜像
|
||||
new_fork=新的派生仓库
|
||||
new_mirror=创建镜像
|
||||
new_fork=创建派生仓库
|
||||
new_org=创建组织
|
||||
new_project=创建项目
|
||||
new_project_column=创建列
|
||||
manage_org=管理我的组织
|
||||
admin_panel=管理后台
|
||||
admin_panel=网站管理
|
||||
account_settings=帐户设置
|
||||
settings=设置
|
||||
your_profile=个人信息
|
||||
your_starred=已点赞
|
||||
your_starred=点赞
|
||||
your_settings=设置
|
||||
|
||||
all=所有
|
||||
|
@ -77,7 +77,7 @@ forks=派生
|
|||
|
||||
activities=最近活动
|
||||
pull_requests=合并请求
|
||||
issues=工单管理
|
||||
issues=工单
|
||||
milestones=里程碑
|
||||
|
||||
ok=确定
|
||||
|
@ -109,7 +109,7 @@ copy_type_unsupported=无法复制此类型的文件内容
|
|||
|
||||
write=撰写
|
||||
preview=预览
|
||||
loading=正在加载...
|
||||
loading=正在加载…
|
||||
|
||||
error=错误
|
||||
error404=您正尝试访问的页面 <strong>不存在</strong> 或 <strong>您尚未被授权</strong> 查看该页面。
|
||||
|
@ -120,7 +120,7 @@ unknown=未知
|
|||
|
||||
rss_feed=RSS 订阅源
|
||||
|
||||
pin=固定
|
||||
pin=置顶
|
||||
unpin=取消置顶
|
||||
|
||||
artifacts=制品
|
||||
|
@ -146,12 +146,12 @@ filter = 筛选
|
|||
filter.clear = 清除筛选条件
|
||||
filter.is_archived = 已归档
|
||||
filter.not_archived = 未归档
|
||||
filter.is_fork = 已派生
|
||||
filter.not_fork = 未派生
|
||||
filter.is_mirror = 已镜像
|
||||
filter.not_mirror = 未镜像
|
||||
filter.is_template = 模板
|
||||
filter.not_template = 非模板
|
||||
filter.is_fork = 是派生
|
||||
filter.not_fork = 不是派生
|
||||
filter.is_mirror = 是镜像
|
||||
filter.not_mirror = 不是镜像
|
||||
filter.is_template = 是模板
|
||||
filter.not_template = 不是模板
|
||||
filter.public = 公开
|
||||
filter.private = 私有
|
||||
toggle_menu = 切换菜单
|
||||
|
@ -160,12 +160,12 @@ more_items = 显示更多
|
|||
copy_generic = 复制到剪贴板
|
||||
test = 测试
|
||||
error413 = 您已用尽您的配额。
|
||||
new_repo.title = 新仓库
|
||||
new_migrate.title = 新迁移
|
||||
new_org.title = 新组织
|
||||
new_repo.link = 新仓库
|
||||
new_migrate.link = 新迁移
|
||||
new_org.link = 新组织
|
||||
new_repo.title = 创建仓库
|
||||
new_migrate.title = 开始迁移
|
||||
new_org.title = 创建组织
|
||||
new_repo.link = 创建仓库
|
||||
new_migrate.link = 开始迁移
|
||||
new_org.link = 创建组织
|
||||
|
||||
[aria]
|
||||
navbar=导航栏
|
||||
|
@ -176,10 +176,10 @@ footer.links=链接
|
|||
[heatmap]
|
||||
number_of_contributions_in_the_last_12_months=一年内 %s 次贡献
|
||||
contributions_zero=目前还没有贡献
|
||||
less=更少的
|
||||
more=更多的
|
||||
less=显示更少
|
||||
more=显示更多
|
||||
contributions_format = {year}{month}{day} 当日有 {contributions}
|
||||
contributions_few = 项贡献
|
||||
contributions_few = 贡献
|
||||
contributions_one = 贡献
|
||||
|
||||
[editor]
|
||||
|
@ -206,7 +206,7 @@ string.desc=Z - A
|
|||
|
||||
[error]
|
||||
occurred=发生了一个错误
|
||||
report_message=如果您确定这是一个 Forgejo bug,请在 <a href="%s" target="_blank">Codeberg</a> 上搜索问题,或在必要时创建一个新工单。
|
||||
report_message=如果您确定这是一个 Forgejo 的 bug,请在 <a href="%s" target="_blank">Codeberg</a> 上搜索相关问题或在必要时创建一个新工单。
|
||||
missing_csrf=错误的请求:没有 CSRF 令牌
|
||||
invalid_csrf=错误的请求:无效的 CSRF 令牌
|
||||
not_found=找不到目标。
|
||||
|
@ -216,13 +216,13 @@ server_internal = 服务器内部错误
|
|||
[startpage]
|
||||
app_desc=一款极易搭建的自助 Git 服务
|
||||
install=易安装
|
||||
install_desc=通过 <a target="_blank" rel="noopener noreferrer" href="%[1]s">二进制</a> 来运行;或者通过 <a target="_blank" rel="noopener noreferrer" href="%[2]s">docker</a> 来运行;或者通过 <a target="_blank" rel="noopener noreferrer" href="%[3]s">安装包</a> 来运行
|
||||
install_desc=通过<a target="_blank" rel="noopener noreferrer" href="%[1]s">二进制</a>来运行;或者通过<a target="_blank" rel="noopener noreferrer" href="%[2]s">Docker</a> 来运行;或者通过<a target="_blank" rel="noopener noreferrer" href="%[3]s">安装包</a> 来运行。
|
||||
platform=跨平台
|
||||
platform_desc=已证实可以在 Linux 和 FreeBSD 等自由操作系统以及不同的 CPU 架构上运行 Forgejo。挑一个您喜欢的就行!
|
||||
lightweight=轻量级
|
||||
lightweight_desc=一个廉价的树莓派的配置足以满足 Forgejo 的最低系统硬件要求。最大程度上节省您的服务器资源!
|
||||
license=开源化
|
||||
license_desc=所有的代码都开源在 <a target="_blank" rel="noopener noreferrer" href="%[1]s">Forgejo</a> 上,赶快加入我们来共同发展这个伟大的项目!还等什么?成为贡献者吧!
|
||||
license_desc=取得 <a target="_blank" rel="noopener noreferrer" href="%[1]s">Forgejo</a>!赶快<a target="_blank" rel="noopener noreferrer" href="%[2]s">加入我们</a>来共同发展这个伟大的项目!还等什么?成为贡献者吧!
|
||||
|
||||
[install]
|
||||
install=安装页面
|
||||
|
@ -235,7 +235,7 @@ host=数据库主机
|
|||
user=用户名
|
||||
password=数据库用户密码
|
||||
db_name=数据库名称
|
||||
db_schema=Schema
|
||||
db_schema=架构模式
|
||||
db_schema_helper=留空则数据库中默认值为("public")。
|
||||
ssl_mode=SSL
|
||||
path=数据库文件路径
|
||||
|
@ -246,7 +246,7 @@ reinstall_confirm_check_1=使用 app.ini 中 SECRET KEY 加密的数据可能会
|
|||
reinstall_confirm_check_2=代码仓库和设置可能需要重新同步。勾选此框,表示您确认将手动重新同步仓库和 SSH authorized_keys 的钩子。您确认您将确保代码仓库和镜像设置是正确的。
|
||||
reinstall_confirm_check_3=你确认你绝对肯定这个 Forgejo 在正确的 app.ini 位置上运行,而且你确定你必须重新安装。你确认你知晓上述风险。
|
||||
err_empty_db_path=SQLite 数据库文件路径不能为空。
|
||||
no_admin_and_disable_registration=您不能够在未创建管理员用户的情况下禁止注册。
|
||||
no_admin_and_disable_registration=您不能够在未创建管理员账号的情况下禁止注册。
|
||||
err_empty_admin_password=管理员密码不能为空。
|
||||
err_empty_admin_email=管理员电子邮件不能为空。
|
||||
err_admin_name_is_reserved=管理员用户名无效,用户名是保留的
|
||||
|
@ -259,8 +259,8 @@ app_name_helper=在此处输入您的实例名称。它将显示在所有页面
|
|||
repo_path=仓库根目录
|
||||
repo_path_helper=所有远程 Git 仓库将保存到此目录。
|
||||
lfs_path=LFS 根目录
|
||||
lfs_path_helper=存储为Git LFS的文件将被存储在此目录。留空禁用LFS
|
||||
run_user=以用户运行
|
||||
lfs_path_helper=存储为Git LFS的文件将被存储在此目录。留空以禁用LFS。
|
||||
run_user=要使用的用户身份
|
||||
run_user_helper=输入 Forgejo 运行的操作系统用户名。请注意,此用户必须具有对仓库根路径的访问权限。
|
||||
domain=服务器域名
|
||||
domain_helper=服务器的域名或主机地址。
|
||||
|
@ -291,14 +291,14 @@ disable_gravatar.description=禁用 Gravatar 和第三方头像源。除非用
|
|||
federated_avatar_lookup=启用联邦头像
|
||||
federated_avatar_lookup.description=使用 Libravatar 查找头像。
|
||||
disable_registration=禁止用户自助注册
|
||||
disable_registration.description=只有实例管理员才能创建新的用户帐户。强烈建议保持注册禁用,除非您打算为所有人托管一个公共实例并准备好处理大量垃圾帐户。
|
||||
disable_registration.description=只有实例管理员才能创建新的帐户。强烈建议保持注册禁用,除非您打算为所有人托管一个公共实例并准备好处理大量垃圾帐户。
|
||||
allow_only_external_registration.description=仅允许使用已配置的外部服务来创建新帐户。
|
||||
openid_signin=启用 OpenID 登录
|
||||
openid_signin.description=允许用户通过 OpenID 登录。
|
||||
openid_signup=启用 OpenID 自助注册
|
||||
openid_signup.description=如果启用了自助注册,则允许用户通过 OpenID 创建帐户。
|
||||
enable_captcha=启用注册验证码
|
||||
enable_captcha.description=要求用户通过 CAPTCHA 验证才能创建帐户。
|
||||
enable_captcha.description=要求用户通过验证码才能创建帐户。
|
||||
require_sign_in_view=启用页面访问限制
|
||||
require_sign_in_view.description=仅允许已登录用户访问页面。访客只能看到注册和登录页。
|
||||
admin_setting.description=创建管理员帐户是可选的。第一个注册用户将自动成为管理员。
|
||||
|
@ -325,7 +325,7 @@ default_keep_email_private.description=默认为新用户启用电子邮件地
|
|||
default_allow_create_organization=默认情况下允许创建组织
|
||||
default_allow_create_organization.description=默认允许新用户创建组织。禁用此选项时,管理员必须向新用户授予创建组织的权限。
|
||||
default_enable_timetracking=默认情况下启用时间跟踪
|
||||
default_enable_timetracking.description=默认允许新存储库使用时间跟踪功能。
|
||||
default_enable_timetracking.description=默认允许新仓库使用时间跟踪功能。
|
||||
no_reply_address=隐藏电子邮件
|
||||
no_reply_address_helper=用于设置隐藏电子邮件地址的用户使用的电子邮件域名。例如,如果用于隐藏电子邮件地址的域名设为“noreply.example.org”,则用户名 “joe” 在 Git 中将以 “joe@noreply.example.org” 表示。
|
||||
password_algorithm=密码哈希算法
|
||||
|
@ -388,7 +388,7 @@ org_no_results=未找到匹配的组织。
|
|||
code_no_results=未找到与搜索字词匹配的源代码。
|
||||
code_search_results=“%s” 的搜索结果是
|
||||
code_last_indexed_at=最后索引于 %s
|
||||
relevant_repositories_tooltip=派生的仓库,以及缺少主题、图标和描述的仓库将被隐藏。
|
||||
relevant_repositories_tooltip=派生的、缺少主题、图标和描述的仓库已被隐藏。
|
||||
relevant_repositories=只显示相关的仓库, <a href="%s">显示未过滤结果</a>。
|
||||
stars_one = %d 点赞
|
||||
stars_few = %d 点赞
|
||||
|
@ -416,7 +416,7 @@ active_your_account=激活您的帐户
|
|||
account_activated=帐户已激活
|
||||
prohibit_login=账号已暂停
|
||||
prohibit_login_desc=您的账号已暂停与实例交互。请与实例管理员联系以重新获得访问权限。
|
||||
resent_limit_prompt=您请求发送激活邮件过于频繁,请等待 3 分钟后再试!
|
||||
resent_limit_prompt=您请求发送激活邮件过于频繁,请等待 3 分钟后再试。
|
||||
has_unconfirmed_mail=%s 您好,系统检测到您有一封发送至 <b>%s</b> 但未被确认的邮件。如果您未收到激活邮件,或需要重新发送,请单击下方的按钮。
|
||||
resend_mail=单击此处重新发送确认邮件
|
||||
email_not_associate=您输入的邮箱地址未被关联到任何帐号!
|
||||
|
@ -426,7 +426,7 @@ invalid_code=此确认密钥无效或已过期。
|
|||
invalid_code_forgot_password=你的确认码无效或者已过期,点击 <a href="%s">这里</a> 开始新的会话。
|
||||
invalid_password=您的密码与用于创建账户的密码不匹配。
|
||||
reset_password_helper=恢复账户
|
||||
reset_password_wrong_user=您以 %s 登录,但恢复账号链接是用于 %s。
|
||||
reset_password_wrong_user=您以 %s 登录,但恢复账号链接适用于 %s
|
||||
password_too_short=密码长度不能少于 %d 位。
|
||||
non_local_account=非本地帐户不能通过 Forgejo 的 web 界面更改密码。
|
||||
verify=验证
|
||||
|
@ -443,7 +443,7 @@ oauth_signup_submit=完成账号
|
|||
oauth_signin_tab=绑定到现有帐号
|
||||
oauth_signin_title=登录以授权绑定帐户
|
||||
oauth_signin_submit=绑定账号
|
||||
oauth.signin.error=处理授权请求时出错。 如果此错误仍然存在,请联系站点管理员。
|
||||
oauth.signin.error=处理授权请求时出错。如果此错误仍然存在,请联系站点管理员。
|
||||
oauth.signin.error.access_denied=授权请求被拒绝。
|
||||
oauth.signin.error.temporarily_unavailable=授权失败,因为认证服务器暂时不可用。请稍后再试。
|
||||
openid_connect_submit=连接
|
||||
|
@ -457,7 +457,7 @@ disable_forgot_password_mail_admin=帐户恢复仅在设置电子邮件后可用
|
|||
email_domain_blacklisted=您不能使用您的电子邮件地址注册。
|
||||
authorize_application=应用授权
|
||||
authorize_redirect_notice=如果您授权此应用,您将会被重定向到 %s。
|
||||
authorize_application_created_by=此应用由%s创建。
|
||||
authorize_application_created_by=此应用由 %s 创建。
|
||||
authorize_application_description=如果您允许,它将能够读取和修改您的所有帐户信息,包括私人仓库和组织。
|
||||
authorize_title=授权 %s 访问您的帐户?
|
||||
authorization_failed=授权失败
|
||||
|
@ -471,11 +471,12 @@ change_unconfirmed_email_summary = 修改用来接收激活邮件的邮箱地址
|
|||
change_unconfirmed_email_error = 无法修改邮箱地址: %v
|
||||
tab_signin = 登录
|
||||
tab_signup = 注册
|
||||
hint_login = 已创建账户?<a href="%s">立即登录</a>
|
||||
hint_login = 已经有账户了吗?<a href="%s">立即登录!</a>
|
||||
back_to_sign_in = 返回登录
|
||||
sign_in_openid = 继续使用 OpenID
|
||||
sign_up_button = 立即注册。
|
||||
hint_register = 需要账号?<a href="%s">立即注册。</a>
|
||||
unauthorized_credentials = 凭据不正确或已过期。请重试您的命令,或查看 %s 以获取更多信息
|
||||
|
||||
[mail]
|
||||
view_it_on=在 %s 上查看
|
||||
|
@ -517,8 +518,8 @@ issue.action.merge=<b>@%[1]s</b> 将 #%[2]d 合并到 #%[3]s。
|
|||
issue.action.approve=<b>@%[1]s</b> 批准了此合并请求。
|
||||
issue.action.reject=<b>@%[1]s</b> 请求更改此合并请求。
|
||||
issue.action.review=<b>@%[1]s</b> 评论了这个合并请求。
|
||||
issue.action.review_dismissed=<b>@%[1]s</b> 拒绝了 %[2]s 对此合并请求的上个审核。
|
||||
issue.action.ready_for_review=<b>@%[1]s</b> 标记此合并请求已评审通过。
|
||||
issue.action.review_dismissed=<b>@%[1]s</b> 取消了 %[2]s 对此合并请求的上一个评审。
|
||||
issue.action.ready_for_review=<b>@%[1]s</b> 标记了此合并请求为已准备好接受评审。
|
||||
issue.action.new=<b>@%[1]s</b> 创建了 #%[2]d.
|
||||
issue.in_tree_path=在 %s 中:
|
||||
|
||||
|
@ -675,7 +676,7 @@ Pronouns = 代称
|
|||
Biography = 简历
|
||||
|
||||
[user]
|
||||
change_avatar=修改头像
|
||||
change_avatar=修改头像…
|
||||
joined_on=加入于 %s
|
||||
repositories=仓库列表
|
||||
activity=公开活动
|
||||
|
@ -759,7 +760,7 @@ language=界面语言
|
|||
ui=主题
|
||||
hidden_comment_types=隐藏的评论类型
|
||||
hidden_comment_types_description=此处选中的注释类型不会显示在问题页面中。比如,勾选”标签“删除所有 "<user> 添加/删除的 <label>" 注释。
|
||||
hidden_comment_types.ref_tooltip=注释此问题在何处被提及过,如另一个问题、代码提交等
|
||||
hidden_comment_types.ref_tooltip=注释此问题在何处被提及过,如另一个问题、代码提交等…
|
||||
hidden_comment_types.issue_ref_tooltip=注释用户在何处更改了与此问题相关联的分支/标签
|
||||
comment_type_group_reference=引用
|
||||
comment_type_group_label=标签
|
||||
|
@ -771,7 +772,7 @@ comment_type_group_time_tracking=时间跟踪
|
|||
comment_type_group_deadline=截止日期
|
||||
comment_type_group_dependency=依赖项
|
||||
comment_type_group_lock=锁定状态
|
||||
comment_type_group_review_request=审核请求
|
||||
comment_type_group_review_request=评审请求
|
||||
comment_type_group_pull_request_push=添加的提交
|
||||
comment_type_group_project=项目
|
||||
comment_type_group_issue_ref=工单引用
|
||||
|
@ -795,7 +796,7 @@ update_password=更新密码
|
|||
old_password=当前密码
|
||||
new_password=新的密码
|
||||
retype_new_password=确认新密码
|
||||
password_incorrect=当前密码不正确!
|
||||
password_incorrect=当前密码不正确。
|
||||
change_password_success=您的密码已更新。从现在开始使用您的新密码登录。
|
||||
password_change_disabled=非本地帐户不能通过 Forgejo 的 web 界面更改密码。
|
||||
|
||||
|
@ -841,16 +842,16 @@ ssh_desc=这些 SSH 公钥已经关联到你的账号。相应的私钥拥有完
|
|||
principal_desc=这些SSH证书规则已关联到你的账号将允许完全访问你的所有仓库。
|
||||
gpg_desc=这些 GPG 公钥已经关联到你的账号,并用于验证您的提交。请妥善保管你的私钥,因为这些私钥可以用于以你的身份签名提交。
|
||||
ssh_helper=<strong>需要帮助?</strong> 请查看有关 <a href="%s">如何生成 SSH 密钥</a> 或 <a href="%s">常见 SSH 问题</a> 寻找答案。
|
||||
gpg_helper=<strong>需要帮助吗?</strong>看一看 GitHub <a href="%s">关于GPG</a> 的指导。
|
||||
gpg_helper=<strong>需要帮助吗?</strong>建议看一看 GitHub 的 <a href="%s">关于GPG</a> 的指导。
|
||||
add_new_key=增加 SSH 密钥
|
||||
add_new_gpg_key=添加的 GPG 密钥
|
||||
key_content_ssh_placeholder=以“ssh-ed25519”、“ssh-rsa”、“ecdsa-sha2-nistp256”、“ecdsa-sha2-nistp384”、“ecdsa-sha2-nistp521”、“sk-ecdsa-sha2-nistp256@openssh.com” 或 “sk-ssh-ed25519@openssh.com” 开头
|
||||
key_content_gpg_placeholder=以 “-----BEGIN PGP PUBLIC KEY BLOCK-----” 开头
|
||||
add_new_principal=添加规则
|
||||
ssh_key_been_used=此 SSH 密钥已添加到服务器。
|
||||
ssh_key_name_used=使用相同名称的SSH公钥已经存在!
|
||||
ssh_key_name_used=使用相同名称的SSH公钥已存在。
|
||||
ssh_principal_been_used=此规则已经加入到了服务器。
|
||||
gpg_key_id_used=使用相同名称的GPG公钥已经存在!
|
||||
gpg_key_id_used=具有相同 ID 的 GPG 公钥已存在。
|
||||
gpg_no_key_email_found=此 GPG 密钥与您帐户关联的任何已激活电子邮件地址均不匹配。如果您在提供的令牌上签名,它仍然可以被添加。
|
||||
gpg_key_matched_identities=匹配的身份:
|
||||
gpg_key_matched_identities_long=此密钥中包含的身份信息与下面这个该用户已激活电子邮件地址是相匹配的。因此,能与这些电子邮件地址相匹配的提交可以通过此密钥进行验证。
|
||||
|
@ -1003,7 +1004,7 @@ remove_account_link=删除已绑定的账号
|
|||
remove_account_link_desc=删除已绑定帐户将吊销其对您的 Forgejo 帐户的访问权限。继续?
|
||||
remove_account_link_success=已取消绑定帐户。
|
||||
|
||||
hooks.desc=添加 Webhooks,它们将会在您拥有的<strong>所有仓库</strong>上触发
|
||||
hooks.desc=添加 Web 钩子,它们将会在您拥有的<strong>所有仓库</strong>上触发
|
||||
|
||||
orgs_none=您现在还不是任何组织的成员。
|
||||
repos_none=你并不拥有任何仓库。
|
||||
|
@ -1037,7 +1038,7 @@ change_password = 更改密码
|
|||
additional_repo_units_hint = 建议仓库启用更多功能
|
||||
hints = 提示
|
||||
update_hints = 更新提示
|
||||
additional_repo_units_hint_description = 在所有存在未启用的功能的仓库内显示一个“选择更多功能…”按钮。
|
||||
additional_repo_units_hint_description = 在所有存在未启用的功能的仓库内显示“启用更多”提示。
|
||||
update_hints_success = 提示更改成功。
|
||||
pronouns_custom = 自定义
|
||||
pronouns = 代词
|
||||
|
@ -1217,7 +1218,7 @@ migrate.migrating=正在从 <b>%s</b> 迁移...
|
|||
migrate.migrating_failed=从 <b>%s</b> 迁移失败。
|
||||
migrate.migrating_failed.error=迁移失败:%s
|
||||
migrate.migrating_failed_no_addr=迁移失败。
|
||||
migrate.github.description=从 github.com 或其他 GitHub 实例迁移数据
|
||||
migrate.github.description=从 github.com 或 GitHub Enterprise 服务器迁移数据
|
||||
migrate.git.description=从任意 Git 服务迁移仓库。
|
||||
migrate.gitlab.description=从 gitlab.com 或其他 GitLab 实例迁移数据
|
||||
migrate.gitea.description=从 gitea.com 或其他 Gitea/Forgejo 实例迁移数据
|
||||
|
@ -1238,7 +1239,7 @@ migrate.cancel_migrating_confirm=您想要取消此次迁移吗?
|
|||
mirror_from=镜像自地址
|
||||
forked_from=派生自
|
||||
generated_from=生成自
|
||||
fork_from_self=无法派生已经拥有的仓库!
|
||||
fork_from_self=无法派生您拥有的仓库。
|
||||
fork_guest_user=登录并 派生 这个仓库。
|
||||
watch_guest_user=请登录后再关注此仓库
|
||||
star_guest_user=请登录后再点赞此仓库
|
||||
|
@ -1320,7 +1321,7 @@ commit_graph.color=彩色
|
|||
commit.contained_in=这个提交包含在:
|
||||
commit.contained_in_default_branch=此提交是默认分支的一部分
|
||||
commit.load_referencing_branches_and_tags=加载引用该提交的分支和标签
|
||||
blame=Blame
|
||||
blame=责任归属
|
||||
download_file=下载文件
|
||||
normal_view=普通视图
|
||||
line=行
|
||||
|
@ -1341,7 +1342,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=取消
|
||||
|
@ -1355,14 +1356,14 @@ editor.patch=应用补丁
|
|||
editor.patching=打补丁:
|
||||
editor.fail_to_apply_patch=无法应用补丁 %s
|
||||
editor.new_patch=新补丁
|
||||
editor.commit_message_desc=添加一个可选的扩展描述...
|
||||
editor.commit_message_desc=添加一个可选的扩展描述…
|
||||
editor.signoff_desc=在提交日志消息末尾添加签署人信息。
|
||||
editor.commit_directly_to_this_branch=直接提交至 <strong class="branch-name">%s</strong> 分支。
|
||||
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 无效
|
||||
|
@ -1383,7 +1384,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
|
||||
|
@ -1407,7 +1408,7 @@ commits.message=备注
|
|||
commits.date=提交日期
|
||||
commits.older=更旧的提交
|
||||
commits.newer=更新的提交
|
||||
commits.signed_by=签署人:
|
||||
commits.signed_by=签署人
|
||||
commits.signed_by_untrusted_user=由未授信的用户签名
|
||||
commits.signed_by_untrusted_user_unmatched=由与提交者不匹配的未授信的用户签名
|
||||
commits.gpg_key_id=GPG 密钥 ID
|
||||
|
@ -1418,8 +1419,8 @@ commit.operations=操作
|
|||
commit.revert=还原
|
||||
commit.revert-header=还原: %s
|
||||
commit.revert-content=选择要还原的分支:
|
||||
commit.cherry-pick=Cherry-pick
|
||||
commit.cherry-pick-header=Cherry-pick: %s
|
||||
commit.cherry-pick=拣选
|
||||
commit.cherry-pick-header=Cherry-pick:%s
|
||||
commit.cherry-pick-content=选择 cherry-pick 的目标分支:
|
||||
|
||||
commitstatus.error=错误
|
||||
|
@ -1427,7 +1428,7 @@ commitstatus.failure=失败
|
|||
commitstatus.pending=待定
|
||||
commitstatus.success=成功
|
||||
|
||||
ext_issues=访问外部工单
|
||||
ext_issues=外部工单
|
||||
ext_issues.desc=链接到外部工单跟踪系统。
|
||||
|
||||
projects=项目
|
||||
|
@ -1464,7 +1465,7 @@ projects.column.unset_default_desc=取消此列为默认值
|
|||
projects.column.delete=删除列
|
||||
projects.column.deletion_desc=删除项目列会将所有相关工单移到默认的列。是否继续?
|
||||
projects.column.color=颜色
|
||||
projects.open=开启
|
||||
projects.open=开放中
|
||||
projects.close=关闭
|
||||
projects.column.assigned_to=指派给
|
||||
projects.card_type.desc=卡片预览
|
||||
|
@ -1476,7 +1477,7 @@ issues.filter_assignees=筛选指派人
|
|||
issues.filter_milestones=筛选里程碑
|
||||
issues.filter_projects=筛选项目
|
||||
issues.filter_labels=筛选标签
|
||||
issues.filter_reviewers=筛选审核者
|
||||
issues.filter_reviewers=筛选评审员
|
||||
issues.new=创建工单
|
||||
issues.new.title_empty=标题不能为空
|
||||
issues.new.labels=标签
|
||||
|
@ -1485,18 +1486,18 @@ issues.new.clear_labels=清除选中标签
|
|||
issues.new.projects=项目
|
||||
issues.new.clear_projects=清除项目
|
||||
issues.new.no_projects=暂无项目
|
||||
issues.new.open_projects=开启的项目
|
||||
issues.new.open_projects=开放中的项目
|
||||
issues.new.closed_projects=已关闭的项目
|
||||
issues.new.no_items=无可选项
|
||||
issues.new.milestone=里程碑
|
||||
issues.new.no_milestone=未选择里程碑
|
||||
issues.new.clear_milestone=取消选中里程碑
|
||||
issues.new.open_milestone=开启的里程碑
|
||||
issues.new.open_milestone=开放中的里程碑
|
||||
issues.new.closed_milestone=已关闭的里程碑
|
||||
issues.new.assignees=指派成员
|
||||
issues.new.clear_assignees=取消指派成员
|
||||
issues.new.no_assignees=未指派成员
|
||||
issues.new.no_reviewers=无审核者
|
||||
issues.new.no_reviewers=无评审员
|
||||
issues.choose.get_started=开始
|
||||
issues.choose.open_external_link=开启
|
||||
issues.choose.blank=默认模板
|
||||
|
@ -1575,7 +1576,7 @@ issues.filter_sort.feweststars=点赞由少到多
|
|||
issues.filter_sort.mostforks=派生由多到少
|
||||
issues.filter_sort.fewestforks=派生由少到多
|
||||
issues.keyword_search_unavailable=关键词搜索目前不可用。请联系网站管理员。
|
||||
issues.action_open=开启
|
||||
issues.action_open=开放
|
||||
issues.action_close=关闭
|
||||
issues.action_label=标签
|
||||
issues.action_milestone=里程碑
|
||||
|
@ -1592,7 +1593,7 @@ issues.opened_by_fake=由 %[2]s 于 %[1]s 打开
|
|||
issues.closed_by_fake=由 %[2]s 创建,被关闭于 %[1]s
|
||||
issues.previous=上一页
|
||||
issues.next=下一页
|
||||
issues.open_title=开启中
|
||||
issues.open_title=开放中
|
||||
issues.closed_title=已关闭
|
||||
issues.draft_title=草稿
|
||||
issues.num_comments_1=%d 评论
|
||||
|
@ -1608,15 +1609,15 @@ issues.no_content=没有提供说明。
|
|||
issues.close=关闭工单
|
||||
issues.comment_pull_merged_at=已合并提交 %[1]s 到 %[2]s %[3]s
|
||||
issues.comment_manually_pull_merged_at=手动合并提交 %[1]s 到 %[2]s %[3]s
|
||||
issues.close_comment_issue=评论并关闭
|
||||
issues.reopen_issue=重新开启
|
||||
issues.reopen_comment_issue=评论并重新开启
|
||||
issues.close_comment_issue=关闭评论
|
||||
issues.reopen_issue=重新开放
|
||||
issues.reopen_comment_issue=重新打开评论
|
||||
issues.create_comment=评论
|
||||
issues.closed_at=`于 <a id="%[1]s" href="#%[1]s">%[2]s</a> 关闭此工单`
|
||||
issues.reopened_at=`重新打开此问题 <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||
issues.commit_ref_at=`于 <a id="%[1]s" href="#%[1]s">%[2]s</a> 在代码提交中引用了该工单`
|
||||
issues.ref_issue_from=`于 <a id="%[1]s" href="#%[1]s">%[2]s</a> <a href="%[3]s">引用了工单 %[4]s</a> `
|
||||
issues.ref_pull_from=`于 <a id="%[1]s" href="#%[1]s">%[2]s</a> <a href="%[3]s">引用了合并请求 %[4]s</a> `
|
||||
issues.ref_issue_from=`<a href="%[3]s">引用了工单 %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||
issues.ref_pull_from=`<a href="%[3]s">引用了合并请求 %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||
issues.ref_closing_from=`于 <a id="%[1]s" href="#%[1]s">%[2]s</a> <a href="%[3]s">引用了合并请求 %[4]s 将关闭此工单</a>`
|
||||
issues.ref_reopening_from=`于 <a id="%[1]s" href="#%[1]s">%[2]s</a> <a href="%[3]s"> 引用了合并请求 %[4]s 将重新讨论此工单</a> `
|
||||
issues.ref_closed_from=`<a href="%[3]s">关闭了这个工单 %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||
|
@ -1634,10 +1635,10 @@ issues.role.first_time_contributor=首次贡献者
|
|||
issues.role.first_time_contributor_helper=这是该用户对仓库的第一次贡献。
|
||||
issues.role.contributor=贡献者
|
||||
issues.role.contributor_helper=该用户之前已提交至该仓库。
|
||||
issues.re_request_review=再次请求审核
|
||||
issues.re_request_review=再次请求评审
|
||||
issues.is_stale=此评审之后代码有更新
|
||||
issues.remove_request_review=移除审核请求
|
||||
issues.remove_request_review_block=无法移除审核请求
|
||||
issues.remove_request_review=移除评审请求
|
||||
issues.remove_request_review_block=无法移除评审请求
|
||||
issues.dismiss_review=取消评审
|
||||
issues.dismiss_review_warning=您确定要取消此评审吗?
|
||||
issues.sign_in_require_desc=<a href="%s">登录</a> 并参与到对话中。
|
||||
|
@ -1654,7 +1655,7 @@ issues.label_archive_tooltip=在标签搜索时,默认情况下存档标签将
|
|||
issues.label_exclusive_desc=命名标签为 <code>scope/item</code> 以使其与其他以 <code>scope/</code> 开头的标签互斥。
|
||||
issues.label_exclusive_warning=在编辑工单或合并请求的标签时,任何冲突的范围标签都将被删除。
|
||||
issues.label_count=%d 个标签
|
||||
issues.label_open_issues=%d 个开启的工单
|
||||
issues.label_open_issues=%d 个开放中的工单
|
||||
issues.label_edit=编辑
|
||||
issues.label_delete=删除
|
||||
issues.label_modify=编辑标签
|
||||
|
@ -1683,7 +1684,7 @@ issues.lock_with_reason=于 %[2]s 以 <strong>%[1]s</strong> 锁定本工单,
|
|||
issues.lock_no_reason=于 %s 锁定本议题并限制仅协作者可发言
|
||||
issues.unlock_comment=于 %s 解锁此议题
|
||||
issues.lock_confirm=锁定
|
||||
issues.unlock_confirm=解锁
|
||||
issues.unlock_confirm=解锁
|
||||
issues.lock.notice_1=- 其他用户不能评论此工单。
|
||||
issues.lock.notice_2=- 您和仓库其他协作者仍可评论并可见。
|
||||
issues.lock.notice_3=- 您可以在未来再次解锁这个工单。
|
||||
|
@ -1742,7 +1743,7 @@ issues.dependency.pr_no_dependencies=没有设置依赖项。
|
|||
issues.dependency.no_permission_1=您没有读取 %d 依赖关系的权限
|
||||
issues.dependency.no_permission_n=您没有读取 %d 依赖关系的权限
|
||||
issues.dependency.no_permission.can_remove=您没有读取此依赖关系的权限,但可以删除此依赖关系
|
||||
issues.dependency.add=添加依赖工单...
|
||||
issues.dependency.add=添加依赖工单…
|
||||
issues.dependency.cancel=取消
|
||||
issues.dependency.remove=删除
|
||||
issues.dependency.remove_info=删除此依赖项
|
||||
|
@ -1776,10 +1777,10 @@ issues.review.dismissed_label=已取消
|
|||
issues.review.left_comment=留下了一条评论
|
||||
issues.review.content.empty=您需要留下一个注释,表明需要的更改。
|
||||
issues.review.reject=于 %s 请求变更
|
||||
issues.review.wait=于 %s 请求审核
|
||||
issues.review.wait=于 %s 请求评审
|
||||
issues.review.add_review_request=于 %[2]s 请求 %[1]s 评审
|
||||
issues.review.remove_review_request=于 %[2]s 取消对 %[1]s 的评审请求
|
||||
issues.review.remove_review_request_self=于 %s 拒绝审核
|
||||
issues.review.remove_review_request_self=于 %s 拒绝评审
|
||||
issues.review.pending=待定
|
||||
issues.review.pending.tooltip=此评论目前对其他用户不可见。 若要提交您的待定评论,请在页面顶部选择 %s -> %s/%s/%s。
|
||||
issues.review.review=评审
|
||||
|
@ -1817,7 +1818,7 @@ pulls.allow_edits_from_maintainers_desc=对基础分支有写入权限的用户
|
|||
pulls.allow_edits_from_maintainers_err=更新失败
|
||||
pulls.compare_changes_desc=选择合并的目标分支和源分支。
|
||||
pulls.has_viewed_file=已查看
|
||||
pulls.has_changed_since_last_review=自您上次审核以来已更改
|
||||
pulls.has_changed_since_last_review=自您上次评审以来已有更改
|
||||
pulls.viewed_files_label=%[1]d / %[2]d 文件已查看
|
||||
pulls.expand_files=展开所有文件
|
||||
pulls.collapse_files=折叠所有文件
|
||||
|
@ -1828,11 +1829,11 @@ pulls.switch_head_and_base=切换 head 和 base
|
|||
pulls.filter_branch=过滤分支
|
||||
pulls.no_results=未找到结果
|
||||
pulls.show_all_commits=显示所有提交
|
||||
pulls.show_changes_since_your_last_review=显示自您上次审核以来的更改
|
||||
pulls.show_changes_since_your_last_review=显示自您上次评审以来的更改
|
||||
pulls.showing_only_single_commit=仅显示提交 %[1]s 的更改
|
||||
pulls.showing_specified_commit_range=仅显示 %[1]s...%[2]s 之间的更改
|
||||
pulls.select_commit_hold_shift_for_range=选择提交。按住 Shift + 单击选择一个范围
|
||||
pulls.review_only_possible_for_full_diff=只有在查看全部差异时才能进行审核
|
||||
pulls.review_only_possible_for_full_diff=只有在查看全部差异时才能进行评审
|
||||
pulls.filter_changes_by_commit=按提交筛选
|
||||
pulls.nothing_to_compare=分支内容相同,无需创建合并请求。
|
||||
pulls.nothing_to_compare_have_tag=所选分支/标签相同。
|
||||
|
@ -1867,8 +1868,8 @@ pulls.required_status_check_failed=一些必要的检查没有成功
|
|||
pulls.required_status_check_missing=缺少一些必要的检查。
|
||||
pulls.required_status_check_administrator=作为管理员,您仍可合并此合并请求
|
||||
pulls.blocked_by_approvals=此合并请求当前还没有通过审批。已获取审批数%d个,共需要审批数%d个。
|
||||
pulls.blocked_by_rejection=此合并请求有官方审核员请求的更改。
|
||||
pulls.blocked_by_official_review_requests=此合并请求需要一名或多名审核员审阅批准。
|
||||
pulls.blocked_by_rejection=此合并请求有官方评审员请求的更改。
|
||||
pulls.blocked_by_official_review_requests=此合并请求需要一名或多名评审员审阅批准。
|
||||
pulls.blocked_by_outdated_branch=此合并请求因过期而被阻止。
|
||||
pulls.blocked_by_changed_protected_files_1=此合并请求因修改了下列被保护的文件而被阻止:
|
||||
pulls.blocked_by_changed_protected_files_n=此合并请求因修改了下列被保护的文件而被阻止:
|
||||
|
@ -1881,14 +1882,14 @@ pulls.approve_count_1=%d 项批准
|
|||
pulls.approve_count_n=%d 项批准
|
||||
pulls.reject_count_1=%d 变更请求
|
||||
pulls.reject_count_n=%d 变更请求
|
||||
pulls.waiting_count_1=%d 个正在等待审核
|
||||
pulls.waiting_count_n=%d 个正在等待审核
|
||||
pulls.waiting_count_1=%d 个正在等待评审
|
||||
pulls.waiting_count_n=%d 个正在等待评审
|
||||
pulls.wrong_commit_id=提交 ID 必须是目标分支上的提交的 ID
|
||||
|
||||
pulls.no_merge_desc=由于未启用合并选项,此合并请求无法被合并。
|
||||
pulls.no_merge_helper=在仓库设置中启用合并选项或者手工合并请求。
|
||||
pulls.no_merge_wip=这个合并请求无法合并,因为被标记为尚未完成的工作。
|
||||
pulls.no_merge_not_ready=此拉取请求尚未准备好合并,请检查审核状态和状态检查。
|
||||
pulls.no_merge_not_ready=此拉取请求尚未准备好被合并,请检查评审状态和状态检查。
|
||||
pulls.no_merge_access=您无权合并此拉取请求。
|
||||
pulls.merge_pull_request=创建合并提交
|
||||
pulls.rebase_merge_pull_request=变基后快进
|
||||
|
@ -1951,7 +1952,7 @@ pulls.auto_merge_canceled_schedule_comment=`已取消当所有检查成功后自
|
|||
pulls.delete.title=删除此拉取请求?
|
||||
pulls.delete.text=你真的要删除这个拉取请求吗? (这将永久删除所有内容。如果你打算将内容存档,请考虑关闭它)
|
||||
|
||||
pulls.recently_pushed_new_branches=您已经于%[2]s推送了分支 <strong>%[1]s</strong>
|
||||
pulls.recently_pushed_new_branches=您已于%[2]s推送了分支 <a href="%[3]s"><strong>%[1]s</strong></a>
|
||||
|
||||
pull.deleted_branch=(已删除): %s
|
||||
|
||||
|
@ -1959,10 +1960,10 @@ milestones.new=新的里程碑
|
|||
milestones.closed=于 %s关闭
|
||||
milestones.update_ago=已更新 %s
|
||||
milestones.no_due_date=暂无截止日期
|
||||
milestones.open=开启中
|
||||
milestones.open=开放中
|
||||
milestones.close=关闭
|
||||
milestones.new_subheader=里程碑可以帮助您组织工单并跟踪其进度。
|
||||
milestones.completeness=%d%% 完成
|
||||
milestones.completeness=<strong>%d%%</strong> 已完成
|
||||
milestones.create=创建里程碑
|
||||
milestones.title=标题
|
||||
milestones.desc=描述
|
||||
|
@ -1999,12 +2000,12 @@ signing.wont_sign.commitssigned=合并将不会被签名,因为所有相关的
|
|||
signing.wont_sign.approved=合并将不会被签名,因为合并请求未被批准。
|
||||
signing.wont_sign.not_signed_in=您还没有登录。
|
||||
|
||||
ext_wiki=访问外部百科
|
||||
ext_wiki=外部百科
|
||||
ext_wiki.desc=链接到外部 wiki。
|
||||
|
||||
wiki=百科
|
||||
wiki.welcome=欢迎来到百科!
|
||||
wiki.welcome_desc=百科允许你撰写和与协作者分享文档
|
||||
wiki.welcome_desc=百科允许你撰写并与协作者分享文档。
|
||||
wiki.desc=撰写和与协作者分享文档
|
||||
wiki.create_first_page=创建第一个页面
|
||||
wiki.page=页面
|
||||
|
@ -2165,14 +2166,14 @@ settings.external_wiki_url=外部百科链接
|
|||
settings.external_wiki_url_error=外部百科链接无效
|
||||
settings.external_wiki_url_desc=当点击百科标签时,访问者将被重定向到外部百科系统的URL。
|
||||
settings.issues_desc=启用仓库工单系统
|
||||
settings.use_internal_issue_tracker=使用内置的工单管理系统
|
||||
settings.use_external_issue_tracker=使用外部的工单管理系统
|
||||
settings.use_internal_issue_tracker=使用内置的工单系统
|
||||
settings.use_external_issue_tracker=使用外部的工单系统
|
||||
settings.external_tracker_url=外部工单系统 URL
|
||||
settings.external_tracker_url_error=外部百科链接无效
|
||||
settings.external_tracker_url_desc=当点击工单标签时,访问者将被重定向到外部工单系统的URL。
|
||||
settings.tracker_url_format=外部工单管理系统的 URL 格式
|
||||
settings.tracker_url_format=外部工单系统的 URL 格式
|
||||
settings.tracker_url_format_error=外部工单链接无效
|
||||
settings.tracker_issue_style=外部工单管理系统的编号格式
|
||||
settings.tracker_issue_style=外部工单系统的编号格式
|
||||
settings.tracker_issue_style.numeric=纯数字形式
|
||||
settings.tracker_issue_style.alphanumeric=英文字母数字组合形式
|
||||
settings.tracker_issue_style.regexp=正则表达式
|
||||
|
@ -2328,32 +2329,32 @@ settings.event_push_desc=Git 仓库推送
|
|||
settings.event_repository=仓库
|
||||
settings.event_repository_desc=创建或删除仓库
|
||||
settings.event_header_issue=工单事件
|
||||
settings.event_issues=工单
|
||||
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_desc=工单标签被更新或清除。
|
||||
settings.event_issue_milestone=工单已被收入里程碑中
|
||||
settings.event_issue_milestone_desc=工单被收入或取消收入里程碑中。
|
||||
settings.event_issue_comment=工单评论
|
||||
settings.event_issue_label=标签
|
||||
settings.event_issue_label_desc=工单标签被添加或移除。
|
||||
settings.event_issue_milestone=里程碑
|
||||
settings.event_issue_milestone_desc=里程碑被添加、移除或修改。
|
||||
settings.event_issue_comment=评论
|
||||
settings.event_issue_comment_desc=工单评论被创建、编辑或删除
|
||||
settings.event_header_pull_request=合并请求事件
|
||||
settings.event_pull_request=合并请求
|
||||
settings.event_pull_request=修改
|
||||
settings.event_pull_request_desc=合并请求被打开、被关闭、被重新打开或被编辑。
|
||||
settings.event_pull_request_assign=合并请求被指派
|
||||
settings.event_pull_request_assign=指派
|
||||
settings.event_pull_request_assign_desc=合并请求被指派或取消指派。
|
||||
settings.event_pull_request_label=合并请求被贴上标签
|
||||
settings.event_pull_request_label_desc=合并请求的标签被更新或清除。
|
||||
settings.event_pull_request_milestone=合并请求被记录于里程碑中
|
||||
settings.event_pull_request_milestone_desc=合并请求被记录或取消记录于里程碑中。
|
||||
settings.event_pull_request_comment=合并请求被评论
|
||||
settings.event_pull_request_label=标签
|
||||
settings.event_pull_request_label_desc=合并请求的标签被添加或移除。
|
||||
settings.event_pull_request_milestone=里程碑
|
||||
settings.event_pull_request_milestone_desc=里程碑被添加、移除或修改。
|
||||
settings.event_pull_request_comment=评论
|
||||
settings.event_pull_request_comment_desc=合并请求评论被创建、编辑或删除。
|
||||
settings.event_pull_request_review=已审核的合并请求
|
||||
settings.event_pull_request_review_desc=合并请求被批准、拒绝或提出审查意见
|
||||
settings.event_pull_request_sync=合并请求被同步
|
||||
settings.event_pull_request_sync_desc=合并请求被同步。
|
||||
settings.event_pull_request_review_request=发起合并请求评审
|
||||
settings.event_pull_request_review=评审
|
||||
settings.event_pull_request_review_desc=合并请求被批准、拒绝或提出评审意见。
|
||||
settings.event_pull_request_sync=被同步
|
||||
settings.event_pull_request_sync_desc=分支自动更新为目标分支。
|
||||
settings.event_pull_request_review_request=评审请求
|
||||
settings.event_pull_request_review_request_desc=合并请求评审已请求或已取消
|
||||
settings.event_pull_request_approvals=合并请求批准
|
||||
settings.event_pull_request_merge=合并请求合并
|
||||
|
@ -2442,9 +2443,9 @@ settings.protect_status_check_matched=匹配
|
|||
settings.protect_invalid_status_check_pattern=无效的状态检查规则:“%s”。
|
||||
settings.protect_no_valid_status_check_patterns=没有有效的状态检查规则。
|
||||
settings.protect_required_approvals=所需的批准
|
||||
settings.protect_required_approvals_desc=只允许合并有足够审核人数的拉取请求。
|
||||
settings.protect_required_approvals_desc=只允许合并有足够评审人数的拉取请求。
|
||||
settings.protect_approvals_whitelist_enabled=批准仅限列入白名单的用户或团队
|
||||
settings.protect_approvals_whitelist_enabled_desc=只有白名单用户或团队的审核才能计数。 没有批准的白名单,来自任何有写访问权限的人的审核都将计数。
|
||||
settings.protect_approvals_whitelist_enabled_desc=只有白名单用户或团队的评审才能被计入需要的批准数量。 没有白名单时,来自任何有写入权限的人的评审都将计数。
|
||||
settings.protect_approvals_whitelist_users=审查者白名单
|
||||
settings.protect_approvals_whitelist_teams=审查团队白名单
|
||||
settings.dismiss_stale_approvals=取消过时的批准
|
||||
|
@ -2457,7 +2458,7 @@ settings.protect_branch_name_pattern=受保护的分支名称正则
|
|||
settings.protect_branch_name_pattern_desc=分支保护的名称匹配规则。语法请参阅<a href="%s">文档</a> 。如:main, release/**
|
||||
settings.protect_patterns=规则
|
||||
settings.protect_protected_file_patterns=受保护的文件模式(使用半角分号“;”分隔)
|
||||
settings.protect_protected_file_patterns_desc=即使用户有权添加、编辑或删除此分支中的文件,也不允许直接更改受保护的文件。 可以使用半角分号(“;”)分隔多个模式。 见<a href='%s'>github.com/gobwas/glob</a>文档了解模式语法。例如: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>。
|
||||
settings.protect_protected_file_patterns_desc=即使用户有权添加、编辑或删除此分支中的文件,也不允许直接更改受保护的文件。 可以使用半角分号(“;”)分隔多个模式。 见<a href='%s'>%s</a>文档了解模式语法。例如: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>。
|
||||
settings.protect_unprotected_file_patterns=不受保护的文件模式(使用半角分号“;”分隔)
|
||||
settings.protect_unprotected_file_patterns_desc=在用户有写权限的情况下允许绕过限制,直接修改设为不保护的文件。如有多个匹配模式,则可用半角分号(“;”)分隔开。见 <a href="%[1]s">%[2]s</a> 的文档以了解匹配模式的格式。例子: <code>.drone.yml</code>、<code>/docs/**/*.txt</code>。
|
||||
settings.add_protected_branch=启用保护
|
||||
|
@ -2467,16 +2468,16 @@ settings.remove_protected_branch_success=移除分支保护规则"%s"成功。
|
|||
settings.remove_protected_branch_failed=移除分支保护规则"%s"失败。
|
||||
settings.protected_branch_deletion=禁用分支保护
|
||||
settings.protected_branch_deletion_desc=禁用分支保护允许具有写入权限的用户推送提交到此分支。继续?
|
||||
settings.block_rejected_reviews=拒绝审核阻止了此合并
|
||||
settings.block_rejected_reviews=有拒绝评审时阻止合并
|
||||
settings.block_rejected_reviews_desc=如果官方审查人员要求作出改动,即使有足够的批准,合并也不允许。
|
||||
settings.block_on_official_review_requests=有官方审核阻止了代码合并
|
||||
settings.block_on_official_review_requests=有官方评审请求时阻止代码合并
|
||||
settings.block_on_official_review_requests_desc=处于评审状态时,即使有足够的批准,也不能合并。
|
||||
settings.block_outdated_branch=如果拉取请求已经过时,阻止合并
|
||||
settings.block_outdated_branch_desc=当头部分支落后基础分支时,不能合并。
|
||||
settings.default_branch_desc=请选择一个默认的分支用于合并请求和提交:
|
||||
settings.merge_style_desc=合并方式
|
||||
settings.default_merge_style_desc=默认合并方式
|
||||
settings.choose_branch=选择一个分支...
|
||||
settings.choose_branch=选择一个分支…
|
||||
settings.no_protected_branch=没有受保护的分支
|
||||
settings.edit_protected_branch=编辑
|
||||
settings.protected_branch_required_rule_name=必须填写规则名称
|
||||
|
@ -2489,7 +2490,7 @@ settings.tags.protection.allowed=允许列表
|
|||
settings.tags.protection.allowed.users=允许的账号
|
||||
settings.tags.protection.allowed.teams=允许的团队
|
||||
settings.tags.protection.allowed.noone=无
|
||||
settings.tags.protection.create=新建规则
|
||||
settings.tags.protection.create=添加规则
|
||||
settings.tags.protection.none=没有受保护的Git标签
|
||||
settings.tags.protection.pattern.description=你可以使用单个名称或 glob 模式匹配或正则表达式来匹配多个标签。了解详情请访问 <a target="_blank" rel="noopener" href="%s">受保护Git标签指南</a>。
|
||||
settings.bot_token=机器人令牌
|
||||
|
@ -2562,7 +2563,7 @@ diff.whitespace_ignore_all_whitespace=比较行时忽略空白符号
|
|||
diff.whitespace_ignore_amount_changes=忽略空白符号数量的变化
|
||||
diff.whitespace_ignore_at_eol=忽略行末空白符号的更改
|
||||
diff.stats_desc=共有 <strong> %d 个文件被更改</strong>,包括 <strong>%d 次插入</strong> 和 <strong>%d 次删除</strong>
|
||||
diff.stats_desc_file=变更 %d 行:新增 %d 行,删除 %d 行
|
||||
diff.stats_desc_file=更改 %d 行:新增 %d 行,删除 %d 行
|
||||
diff.bin=二进制
|
||||
diff.bin_not_shown=二进制文件未显示。
|
||||
diff.view_file=查看文件
|
||||
|
@ -2585,7 +2586,7 @@ diff.comment.add_single_comment=添加单条评论
|
|||
diff.comment.add_review_comment=添加评论
|
||||
diff.comment.start_review=开始评审
|
||||
diff.comment.reply=回复
|
||||
diff.review=完成审核
|
||||
diff.review=完成评审
|
||||
diff.review.header=提交评审
|
||||
diff.review.placeholder=评审意见
|
||||
diff.review.comment=评论
|
||||
|
@ -2720,7 +2721,7 @@ issues.comment.blocked_by_user = 你无法对此工单进行评论,因为你
|
|||
settings.wiki_rename_branch_main_desc = 将百科内部使用的分支重命名为“%s”。此更改是永久性的且不可撤销。
|
||||
generated = 已生成
|
||||
editor.invalid_commit_mail = 用于创建提交的邮件地址无效。
|
||||
pulls.blocked_by_user = 你无法在此存储库上创建合并请求,因为您已被仓库所有者屏蔽。
|
||||
pulls.blocked_by_user = 你无法在此仓库上创建合并请求,因为您已被仓库所有者屏蔽。
|
||||
migrate.forgejo.description = 从 codeberg.org 或其他 Forgejo 实例迁移数据。
|
||||
commits.browse_further = 浏览更多
|
||||
commits.renamed_from = 重命名自 %s
|
||||
|
@ -2737,16 +2738,16 @@ settings.confirm_wiki_branch_rename = 重命名百科分支
|
|||
pulls.commit_ref_at = `在提交 <a id="%[1]s" href="#%[1]s">%[2]s</a> 中引用了此合并请求`
|
||||
desc.sha256 = SHA256
|
||||
settings.ignore_stale_approvals = 忽略过时的批准
|
||||
settings.ignore_stale_approvals_desc = 不对旧的提交(过时的审查)计入已批准的合并请求数量。注:如过期的审核已被取消,则无需设置。
|
||||
settings.ignore_stale_approvals_desc = 不将旧的提交(陈旧的评审)计入已批准的合并请求数量。注:如过期的评审已被取消,则无需设置。
|
||||
settings.archive.mirrors_unavailable = 不能镜像已归档的仓库。
|
||||
settings.wiki_rename_branch_main_notices_2 = 这将预先重命名 %s 的存储库百科的内部分支。 现存的检出方式需要更新。
|
||||
settings.wiki_branch_rename_failure = 无法标准化存储库百科的分支名称。
|
||||
settings.wiki_rename_branch_main_notices_2 = 这将永久重命名 %s 的仓库百科的内部分支。现存的检出方式需要更新。
|
||||
settings.wiki_branch_rename_failure = 无法标准化仓库百科的分支名称。
|
||||
settings.add_collaborator_blocked_our = 因仓库所有者已将其拉黑,不能添加该用户为协作者。
|
||||
settings.add_collaborator_blocked_them = 因该用户已将仓库所有者拉黑,不能添加该用户为协作者。
|
||||
settings.units.units = 仓库功能
|
||||
pulls.fast_forward_only_merge_pull_request = 仅快速向前
|
||||
settings.units.overview = 概览
|
||||
settings.units.add_more = 添加更多…
|
||||
settings.units.add_more = 启用更多
|
||||
file_follow = 跟随符号链接
|
||||
pulls.reopen_failed.head_branch = 因头部分支不再存在,该合并请求不能再被重新打开。
|
||||
pulls.reopen_failed.base_branch = 因基础分支不再存在,该合并请求不能再被重新打开。
|
||||
|
@ -2807,7 +2808,7 @@ pulls.edit.already_changed = 无法保存对合并请求的更改。内容似乎
|
|||
comments.edit.already_changed = 无法保存对评论的更改。内容似乎已经被另一个用户修改了,为了防止修改被覆盖,请刷新页面后再次尝试编辑
|
||||
subscribe.issue.guest.tooltip = 登录以订阅工单。
|
||||
subscribe.pull.guest.tooltip = 登录以订阅此拉取请求。
|
||||
settings.federation_following_repos = 关注仓库的 URL。以“;”分隔,无空格。
|
||||
settings.federation_following_repos = 关注的仓库URL地址,多个地址以 “;” 分隔,不需要前后空格。
|
||||
settings.federation_settings = 邦联设置
|
||||
settings.federation_apapiurl = 此仓库的邦联URL地址。将其作为关注的仓库URL地址填写到另一个仓库的邦联设置中。
|
||||
settings.federation_not_enabled = 当前实例未启用邦联功能。
|
||||
|
@ -2836,6 +2837,9 @@ mirror_use_ssh.helper = 选择此选项后,Forgejo 将通过 SSH 以 Git 方
|
|||
settings.mirror_settings.push_mirror.copy_public_key = 复制公钥
|
||||
settings.mirror_settings.push_mirror.none_ssh = 无
|
||||
mirror_use_ssh.not_available = SSH 验证不可用。
|
||||
issues.new.assign_to_me = 指派给我
|
||||
issues.all_title = 全部
|
||||
settings.discord_icon_url.exceeds_max_length = 图标 URL 必须小于或等于 2048 个字符
|
||||
|
||||
[graphs]
|
||||
component_loading=正在加载 %s...
|
||||
|
@ -2857,7 +2861,7 @@ teams=团队
|
|||
code=代码
|
||||
lower_members=名成员
|
||||
lower_repositories=个仓库
|
||||
create_new_team=新建团队
|
||||
create_new_team=创建团队
|
||||
create_team=创建团队
|
||||
org_desc=组织描述
|
||||
team_name=团队名称
|
||||
|
@ -2946,7 +2950,7 @@ teams.delete_team_title=删除团队
|
|||
teams.delete_team_desc=删除一个团队将删除团队成员的访问权限,继续?
|
||||
teams.delete_team_success=该团队已被删除。
|
||||
teams.read_permission_desc=该团队拥有对所属仓库的 <strong>读取</strong> 权限,团队成员可以进行查看和克隆等只读操作。
|
||||
teams.write_permission_desc=该团队拥有对所属仓库的 <strong>读取</strong> 和 <strong>写入</strong> 的权限。
|
||||
teams.write_permission_desc=该团队拥有对所属仓库的<strong>写入</strong>权限:成员可以查看和推送至团队仓库。
|
||||
teams.admin_permission_desc=此团队授予<strong>管理员</strong>访问权限:成员可从团队仓库中读取、推送和添加协作者。
|
||||
teams.create_repo_permission_desc=此外,该团队拥有了 <strong>创建仓库</strong> 的权限:成员可以在组织中创建新的仓库。
|
||||
teams.repositories=团队仓库
|
||||
|
@ -2960,7 +2964,7 @@ teams.add_duplicate_users=用户已经是团队成员。
|
|||
teams.repos.none=此团队无法访问任何仓库。
|
||||
teams.members.none=团队中没有成员。
|
||||
teams.specific_repositories=指定仓库
|
||||
teams.specific_repositories_helper=团队成员将只能访问添加到团队的仓库。 选择此项 <strong>将不会</strong> 自动删除已经添加的仓库。
|
||||
teams.specific_repositories_helper=团队成员将只能访问添加到团队的仓库。 选择此项<strong>将不会</strong>自动删除通过<i>所有仓库</i>添加的仓库。
|
||||
teams.all_repositories=所有仓库
|
||||
teams.all_repositories_helper=团队可以访问所有仓库。选择此选项将 <strong>添加所有现有的</strong> 仓库到指定团队。
|
||||
teams.all_repositories_read_permission_desc=此团队授予<strong>读取</strong><strong>所有仓库</strong>的访问权限: 成员可以查看和克隆仓库。
|
||||
|
@ -3253,7 +3257,7 @@ auths.openIdConnectAutoDiscoveryURL=OpenID 连接自动发现 URL
|
|||
auths.oauth2_use_custom_url=使用自定义的 URL 而不是默认的 URL
|
||||
auths.oauth2_tokenURL=令牌 URL
|
||||
auths.oauth2_authURL=授权 URL
|
||||
auths.oauth2_profileURL=Profile URL
|
||||
auths.oauth2_profileURL=个人信息 URL
|
||||
auths.oauth2_emailURL=电子邮件 URL
|
||||
auths.skip_local_two_fa=跳过本地两步验证
|
||||
auths.skip_local_two_fa_helper=不设置意味着设置了两步验证的本地用户仍然需要通过两步验证才能登录
|
||||
|
@ -3274,7 +3278,7 @@ auths.sspi_auto_create_users_helper=允许 SSPI 认证在用户第一次登录
|
|||
auths.sspi_auto_activate_users=自动激活用户
|
||||
auths.sspi_auto_activate_users_helper=允许 SSPI 认证自动激活新用户
|
||||
auths.sspi_strip_domain_names=从用户名中删除域名部分
|
||||
auths.sspi_strip_domain_names_helper=如果选中此项,域名将从登录名中删除(例如,"DOMAIN\user"和"user@example.org",两者都将变成只是“用户”)。
|
||||
auths.sspi_strip_domain_names_helper=如果选中此项,域名将从登录名中删除(例如,"DOMAIN\user"和"user@example.org",两者都将变成只是 "user")。
|
||||
auths.sspi_separator_replacement=要使用的分隔符代替\, / 和 @
|
||||
auths.sspi_separator_replacement_helper=用于替换下级登录名称分隔符的字符 (例如 "DOMAIN\user") 中的 \ 和用户主名字(如"user@example.org"中的 @)。
|
||||
auths.sspi_default_language=默认语言
|
||||
|
@ -3544,10 +3548,10 @@ rename_repo=重命名仓库 <code>%[1]s</code> 为 <a href="%[2]s">%[3]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>`
|
||||
reopen_issue=`重新开放了工单 <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
create_pull_request=`创建了合并请求 <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
close_pull_request=`关闭了合并请求 <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
reopen_pull_request=`重新开启了合并请求 <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
reopen_pull_request=`重新开放了合并请求 <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
comment_issue=`评论了工单 <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
comment_pull=`评论了合并请求 <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
merge_pull_request=`合并了合并请求 <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
|
@ -3578,9 +3582,9 @@ future=将来
|
|||
1m=1分钟
|
||||
1h=1 小时
|
||||
1d=1 天
|
||||
1w=1周
|
||||
1w=1 周
|
||||
1mon=1 个月
|
||||
1y=1年
|
||||
1y=1 年
|
||||
seconds=%d 秒
|
||||
minutes=%d 分钟
|
||||
hours=%d 小时
|
||||
|
@ -3599,10 +3603,10 @@ remove_file=移除文件
|
|||
|
||||
[notification]
|
||||
notifications=通知
|
||||
unread=未读消息
|
||||
read=已读消息
|
||||
unread=未读
|
||||
read=已读
|
||||
no_unread=没有未读通知。
|
||||
no_read=没有未读通知。
|
||||
no_read=没有已读通知。
|
||||
pin=Pin 通知
|
||||
mark_as_read=标记为已读
|
||||
mark_as_unread=标记为未读
|
||||
|
@ -3682,7 +3686,7 @@ container.details.type=镜像类型
|
|||
container.details.platform=平台
|
||||
container.pull=从命令行拉取镜像:
|
||||
container.digest=摘要:
|
||||
container.multi_arch=OS / Arch
|
||||
container.multi_arch=操作系统 / 架构
|
||||
container.layers=镜像层
|
||||
container.labels=标签
|
||||
container.labels.key=键
|
||||
|
@ -3748,7 +3752,7 @@ settings.delete.success=软件包已被删除。
|
|||
settings.delete.error=删除软件包失败。
|
||||
owner.settings.cargo.title=Cargo 注册中心索引
|
||||
owner.settings.cargo.initialize=初始化索引
|
||||
owner.settings.cargo.initialize.description=使用 Cargo 注册中心时需要一个特殊索引的 Git 仓库。使用此选项将(重新)创建存储库并自动配置它。
|
||||
owner.settings.cargo.initialize.description=使用 Cargo 注册中心时需要一个特殊索引的 Git 仓库。使用此选项将(重新)创建仓库并自动配置它。
|
||||
owner.settings.cargo.initialize.error=初始化Cargo索引失败: %v
|
||||
owner.settings.cargo.initialize.success=Cargo索引已经成功创建。
|
||||
owner.settings.cargo.rebuild=重建索引
|
||||
|
@ -3782,7 +3786,7 @@ rpm.repository = 仓库信息
|
|||
rpm.repository.architectures = 架构
|
||||
rpm.repository.multiple_groups = 该软件包可在多个组中使用。
|
||||
owner.settings.cargo.rebuild.no_index = 无法重建,未初始化任何索引。
|
||||
npm.dependencies.bundle = 捆绑依赖项
|
||||
npm.dependencies.bundle = 捆绑的依赖项
|
||||
arch.pacman.helper.gpg = 为 pacman 添加信任证书:
|
||||
arch.pacman.repo.multi = %s 在不同的发行版中有相同的版本。
|
||||
arch.pacman.repo.multi.item = %s 的配置
|
||||
|
@ -3818,7 +3822,7 @@ management=密钥管理
|
|||
[actions]
|
||||
actions=Actions
|
||||
|
||||
unit.desc=使用 Forgejo Actions 管理集成的 CI/CD 管道
|
||||
unit.desc=使用 Forgejo Actions 管理集成的 CI/CD 管道。
|
||||
|
||||
status.unknown=未知
|
||||
status.waiting=等待中
|
||||
|
@ -3958,11 +3962,13 @@ match_tooltip = 仅包含与搜索词完全匹配的结果
|
|||
fuzzy_tooltip = 在搜索结果中包含与搜索词相近的项目
|
||||
exact = 精确
|
||||
issue_kind = 搜索工单...
|
||||
pull_kind = 搜索拉取...
|
||||
exact_tooltip = 仅包含与精确搜索词匹配的结果
|
||||
pull_kind = 搜索合并请求...
|
||||
exact_tooltip = 仅包含与搜索词精确匹配的结果
|
||||
milestone_kind = 搜索里程碑…
|
||||
union_tooltip = 包括与任何空格分隔的关键字匹配的结果
|
||||
union = 关键字
|
||||
regexp = 正则表达式
|
||||
regexp_tooltip = 将搜索内容解释为正则表达式
|
||||
|
||||
|
||||
[munits.data]
|
||||
|
@ -3980,4 +3986,24 @@ filepreview.lines = %[3]s 中的第 %[1]d 到 %[2]d 行
|
|||
filepreview.truncated = 预览已被截断
|
||||
|
||||
[translation_meta]
|
||||
test = 好的
|
||||
test = 好的
|
||||
|
||||
[repo.permissions]
|
||||
code.write = <b>写入:</b>推送到仓库,创建分支和标签。
|
||||
code.read = <b>读取:</b>访问并克隆仓库的代码。
|
||||
actions.read = <b>读取:</b>查看集成的 CI/CD 管道及其日志。
|
||||
issues.write = <b>写入:</b>关闭工单并管理元数据,如标签、里程碑、指派成员、截止日期和依赖。
|
||||
releases.write = <b>写入:</b>发布、编辑和删除版本发布及其资产。
|
||||
issues.read = <b>读取:</b>阅读并创建工单和评论。
|
||||
pulls.read = <b>读取:</b>阅读并创建合并请求。
|
||||
releases.read = <b>读取:</b>查看并下载版本发布。
|
||||
wiki.read = <b>读取:</b>阅读集成的百科及其历史。
|
||||
wiki.write = <b>写入:</b>在集成的百科中创建、更新和删除页面。
|
||||
projects.read = <b>读取:</b>访问仓库项目看板。
|
||||
packages.read = <b>读取:</b>查看并下载指派给仓库的软件包。
|
||||
packages.write = <b>写入:</b>发布并删除指派给仓库的软件包。
|
||||
actions.write = <b>写入:</b>手动触发、重启、取消或批准待处理的 CI/CD 管道。
|
||||
ext_issues = 访问外部工单系统的链接。权限由外部管理。
|
||||
ext_wiki = 访问外部百科的链接。权限由外部管理。
|
||||
projects.write = <b>写入:</b>创建项目和列并进行编辑。
|
||||
pulls.write = <b>写入:</b>关闭合并请求并管理元数据,如标签、里程碑、指派成员、截止日期和依赖。
|
|
@ -2288,7 +2288,7 @@ settings.require_signed_commits=僅接受經簽署的提交
|
|||
settings.require_signed_commits_desc=拒絕未經簽署或未經驗證的提交推送到此分支。
|
||||
settings.protect_branch_name_pattern=受保護的分支名稱式樣
|
||||
settings.protect_protected_file_patterns=受保護的檔案式樣 (以分號區隔「;」):
|
||||
settings.protect_protected_file_patterns_desc=即便使用者有權限新增、修改、刪除此分支的檔案,仍不允許直接修改受保護的檔案。可以用半形分號「;」分隔多個式樣。請於 <a href='%s'>github.com/gobwas/glob</a> 文件查看模式格式。範例: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>。
|
||||
settings.protect_protected_file_patterns_desc=即便使用者有權限新增、修改、刪除此分支的檔案,仍不允許直接修改受保護的檔案。可以用半形分號「;」分隔多個式樣。請於 <a href='%s'>%s</a> 文件查看模式格式。範例: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>。
|
||||
settings.protect_unprotected_file_patterns=未受保護的檔案模式 (以分號區隔「;」):
|
||||
settings.protect_unprotected_file_patterns_desc=當使用者有寫入權限時,可繞過推送限制,直接修改未受保護的檔案。可以用半形分號「;」分隔多個模式。請於 <a href='%[1]s'>%[2]s</a> 文件查看模式格式。範例: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>。
|
||||
settings.add_protected_branch=啟用保護
|
||||
|
|
498
package-lock.json
generated
498
package-lock.json
generated
|
@ -33,7 +33,7 @@
|
|||
"mermaid": "11.2.1",
|
||||
"mini-css-extract-plugin": "2.9.1",
|
||||
"minimatch": "10.0.1",
|
||||
"monaco-editor": "0.50.0",
|
||||
"monaco-editor": "0.51.0",
|
||||
"monaco-editor-webpack-plugin": "7.1.0",
|
||||
"pdfobject": "2.3.0",
|
||||
"postcss": "8.4.47",
|
||||
|
@ -51,11 +51,11 @@
|
|||
"tributejs": "5.1.3",
|
||||
"uint8-to-base64": "0.2.0",
|
||||
"vanilla-colorful": "0.7.2",
|
||||
"vue": "3.5.8",
|
||||
"vue": "3.5.10",
|
||||
"vue-chartjs": "5.3.1",
|
||||
"vue-loader": "17.4.2",
|
||||
"vue3-calendar-heatmap": "2.0.5",
|
||||
"webpack": "5.94.0",
|
||||
"webpack": "5.95.0",
|
||||
"webpack-cli": "5.1.4",
|
||||
"wrap-ansi": "9.0.0"
|
||||
},
|
||||
|
@ -3661,9 +3661,9 @@
|
|||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@rollup/rollup-android-arm-eabi": {
|
||||
"version": "4.21.3",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.3.tgz",
|
||||
"integrity": "sha512-MmKSfaB9GX+zXl6E8z4koOr/xU63AMVleLEa64v7R0QF/ZloMs5vcD1sHgM64GXXS1csaJutG+ddtzcueI/BLg==",
|
||||
"version": "4.22.5",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.22.5.tgz",
|
||||
"integrity": "sha512-SU5cvamg0Eyu/F+kLeMXS7GoahL+OoizlclVFX3l5Ql6yNlywJJ0OuqTzUx0v+aHhPHEB/56CT06GQrRrGNYww==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
|
@ -3675,9 +3675,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-android-arm64": {
|
||||
"version": "4.21.3",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.3.tgz",
|
||||
"integrity": "sha512-zrt8ecH07PE3sB4jPOggweBjJMzI1JG5xI2DIsUbkA+7K+Gkjys6eV7i9pOenNSDJH3eOr/jLb/PzqtmdwDq5g==",
|
||||
"version": "4.22.5",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.22.5.tgz",
|
||||
"integrity": "sha512-S4pit5BP6E5R5C8S6tgU/drvgjtYW76FBuG6+ibG3tMvlD1h9LHVF9KmlmaUBQ8Obou7hEyS+0w+IR/VtxwNMQ==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
|
@ -3689,9 +3689,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-darwin-arm64": {
|
||||
"version": "4.21.3",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.3.tgz",
|
||||
"integrity": "sha512-P0UxIOrKNBFTQaXTxOH4RxuEBVCgEA5UTNV6Yz7z9QHnUJ7eLX9reOd/NYMO3+XZO2cco19mXTxDMXxit4R/eQ==",
|
||||
"version": "4.22.5",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.22.5.tgz",
|
||||
"integrity": "sha512-250ZGg4ipTL0TGvLlfACkIxS9+KLtIbn7BCZjsZj88zSg2Lvu3Xdw6dhAhfe/FjjXPVNCtcSp+WZjVsD3a/Zlw==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
|
@ -3703,9 +3703,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-darwin-x64": {
|
||||
"version": "4.21.3",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.3.tgz",
|
||||
"integrity": "sha512-L1M0vKGO5ASKntqtsFEjTq/fD91vAqnzeaF6sfNAy55aD+Hi2pBI5DKwCO+UNDQHWsDViJLqshxOahXyLSh3EA==",
|
||||
"version": "4.22.5",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.22.5.tgz",
|
||||
"integrity": "sha512-D8brJEFg5D+QxFcW6jYANu+Rr9SlKtTenmsX5hOSzNYVrK5oLAEMTUgKWYJP+wdKyCdeSwnapLsn+OVRFycuQg==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
|
@ -3717,9 +3717,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
|
||||
"version": "4.21.3",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.3.tgz",
|
||||
"integrity": "sha512-btVgIsCjuYFKUjopPoWiDqmoUXQDiW2A4C3Mtmp5vACm7/GnyuprqIDPNczeyR5W8rTXEbkmrJux7cJmD99D2g==",
|
||||
"version": "4.22.5",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.22.5.tgz",
|
||||
"integrity": "sha512-PNqXYmdNFyWNg0ma5LdY8wP+eQfdvyaBAojAXgO7/gs0Q/6TQJVXAXe8gwW9URjbS0YAammur0fynYGiWsKlXw==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
|
@ -3731,9 +3731,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-arm-musleabihf": {
|
||||
"version": "4.21.3",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.3.tgz",
|
||||
"integrity": "sha512-zmjbSphplZlau6ZTkxd3+NMtE4UKVy7U4aVFMmHcgO5CUbw17ZP6QCgyxhzGaU/wFFdTfiojjbLG3/0p9HhAqA==",
|
||||
"version": "4.22.5",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.22.5.tgz",
|
||||
"integrity": "sha512-kSSCZOKz3HqlrEuwKd9TYv7vxPYD77vHSUvM2y0YaTGnFc8AdI5TTQRrM1yIp3tXCKrSL9A7JLoILjtad5t8pQ==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
|
@ -3745,9 +3745,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-arm64-gnu": {
|
||||
"version": "4.21.3",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.3.tgz",
|
||||
"integrity": "sha512-nSZfcZtAnQPRZmUkUQwZq2OjQciR6tEoJaZVFvLHsj0MF6QhNMg0fQ6mUOsiCUpTqxTx0/O6gX0V/nYc7LrgPw==",
|
||||
"version": "4.22.5",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.22.5.tgz",
|
||||
"integrity": "sha512-oTXQeJHRbOnwRnRffb6bmqmUugz0glXaPyspp4gbQOPVApdpRrY/j7KP3lr7M8kTfQTyrBUzFjj5EuHAhqH4/w==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
|
@ -3759,9 +3759,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-arm64-musl": {
|
||||
"version": "4.21.3",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.3.tgz",
|
||||
"integrity": "sha512-MnvSPGO8KJXIMGlQDYfvYS3IosFN2rKsvxRpPO2l2cum+Z3exiExLwVU+GExL96pn8IP+GdH8Tz70EpBhO0sIQ==",
|
||||
"version": "4.22.5",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.22.5.tgz",
|
||||
"integrity": "sha512-qnOTIIs6tIGFKCHdhYitgC2XQ2X25InIbZFor5wh+mALH84qnFHvc+vmWUpyX97B0hNvwNUL4B+MB8vJvH65Fw==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
|
@ -3773,9 +3773,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
|
||||
"version": "4.21.3",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.3.tgz",
|
||||
"integrity": "sha512-+W+p/9QNDr2vE2AXU0qIy0qQE75E8RTwTwgqS2G5CRQ11vzq0tbnfBd6brWhS9bCRjAjepJe2fvvkvS3dno+iw==",
|
||||
"version": "4.22.5",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.22.5.tgz",
|
||||
"integrity": "sha512-TMYu+DUdNlgBXING13rHSfUc3Ky5nLPbWs4bFnT+R6Vu3OvXkTkixvvBKk8uO4MT5Ab6lC3U7x8S8El2q5o56w==",
|
||||
"cpu": [
|
||||
"ppc64"
|
||||
],
|
||||
|
@ -3787,9 +3787,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
|
||||
"version": "4.21.3",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.3.tgz",
|
||||
"integrity": "sha512-yXH6K6KfqGXaxHrtr+Uoy+JpNlUlI46BKVyonGiaD74ravdnF9BUNC+vV+SIuB96hUMGShhKV693rF9QDfO6nQ==",
|
||||
"version": "4.22.5",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.22.5.tgz",
|
||||
"integrity": "sha512-PTQq1Kz22ZRvuhr3uURH+U/Q/a0pbxJoICGSprNLAoBEkyD3Sh9qP5I0Asn0y0wejXQBbsVMRZRxlbGFD9OK4A==",
|
||||
"cpu": [
|
||||
"riscv64"
|
||||
],
|
||||
|
@ -3801,9 +3801,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-s390x-gnu": {
|
||||
"version": "4.21.3",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.3.tgz",
|
||||
"integrity": "sha512-R8cwY9wcnApN/KDYWTH4gV/ypvy9yZUHlbJvfaiXSB48JO3KpwSpjOGqO4jnGkLDSk1hgjYkTbTt6Q7uvPf8eg==",
|
||||
"version": "4.22.5",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.22.5.tgz",
|
||||
"integrity": "sha512-bR5nCojtpuMss6TDEmf/jnBnzlo+6n1UhgwqUvRoe4VIotC7FG1IKkyJbwsT7JDsF2jxR+NTnuOwiGv0hLyDoQ==",
|
||||
"cpu": [
|
||||
"s390x"
|
||||
],
|
||||
|
@ -3815,9 +3815,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-x64-gnu": {
|
||||
"version": "4.21.3",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.3.tgz",
|
||||
"integrity": "sha512-kZPbX/NOPh0vhS5sI+dR8L1bU2cSO9FgxwM8r7wHzGydzfSjLRCFAT87GR5U9scj2rhzN3JPYVC7NoBbl4FZ0g==",
|
||||
"version": "4.22.5",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.5.tgz",
|
||||
"integrity": "sha512-N0jPPhHjGShcB9/XXZQWuWBKZQnC1F36Ce3sDqWpujsGjDz/CQtOL9LgTrJ+rJC8MJeesMWrMWVLKKNR/tMOCA==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
|
@ -3829,9 +3829,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-x64-musl": {
|
||||
"version": "4.21.3",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.3.tgz",
|
||||
"integrity": "sha512-S0Yq+xA1VEH66uiMNhijsWAafffydd2X5b77eLHfRmfLsRSpbiAWiRHV6DEpz6aOToPsgid7TI9rGd6zB1rhbg==",
|
||||
"version": "4.22.5",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.22.5.tgz",
|
||||
"integrity": "sha512-uBa2e28ohzNNwjr6Uxm4XyaA1M/8aTgfF2T7UIlElLaeXkgpmIJ2EitVNQxjO9xLLLy60YqAgKn/AqSpCUkE9g==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
|
@ -3843,9 +3843,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-win32-arm64-msvc": {
|
||||
"version": "4.21.3",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.3.tgz",
|
||||
"integrity": "sha512-9isNzeL34yquCPyerog+IMCNxKR8XYmGd0tHSV+OVx0TmE0aJOo9uw4fZfUuk2qxobP5sug6vNdZR6u7Mw7Q+Q==",
|
||||
"version": "4.22.5",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.22.5.tgz",
|
||||
"integrity": "sha512-RXT8S1HP8AFN/Kr3tg4fuYrNxZ/pZf1HemC5Tsddc6HzgGnJm0+Lh5rAHJkDuW3StI0ynNXukidROMXYl6ew8w==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
|
@ -3857,9 +3857,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-win32-ia32-msvc": {
|
||||
"version": "4.21.3",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.3.tgz",
|
||||
"integrity": "sha512-nMIdKnfZfzn1Vsk+RuOvl43ONTZXoAPUUxgcU0tXooqg4YrAqzfKzVenqqk2g5efWh46/D28cKFrOzDSW28gTA==",
|
||||
"version": "4.22.5",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.22.5.tgz",
|
||||
"integrity": "sha512-ElTYOh50InL8kzyUD6XsnPit7jYCKrphmddKAe1/Ytt74apOxDq5YEcbsiKs0fR3vff3jEneMM+3I7jbqaMyBg==",
|
||||
"cpu": [
|
||||
"ia32"
|
||||
],
|
||||
|
@ -3871,9 +3871,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-win32-x64-msvc": {
|
||||
"version": "4.21.3",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.3.tgz",
|
||||
"integrity": "sha512-fOvu7PCQjAj4eWDEuD8Xz5gpzFqXzGlxHZozHP4b9Jxv9APtdxL6STqztDzMLuRXEc4UpXGGhx029Xgm91QBeA==",
|
||||
"version": "4.22.5",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.5.tgz",
|
||||
"integrity": "sha512-+lvL/4mQxSV8MukpkKyyvfwhH266COcWlXE/1qxwN08ajovta3459zrjLghYMgDerlzNwLAcFpvU+WWE5y6nAQ==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
|
@ -4313,9 +4313,9 @@
|
|||
"license": "Apache-2.0"
|
||||
},
|
||||
"node_modules/@stoplight/spectral-rulesets": {
|
||||
"version": "1.20.1",
|
||||
"resolved": "https://registry.npmjs.org/@stoplight/spectral-rulesets/-/spectral-rulesets-1.20.1.tgz",
|
||||
"integrity": "sha512-LrJ9lm/Jy9uUrPyBVO03zOkRVRVB2EfzrbtMegTiGs6ju02YGH/0mPu0DKJy+749aKGiSjpXTiLZgsbDJniEew==",
|
||||
"version": "1.20.2",
|
||||
"resolved": "https://registry.npmjs.org/@stoplight/spectral-rulesets/-/spectral-rulesets-1.20.2.tgz",
|
||||
"integrity": "sha512-7Y8orZuNyGyeHr9n50rMfysgUJ+/zzIEHMptt66jiy82GUWl+0nr865DkMuXdC5GryfDYhtjoRTUCVsXu80Nkg==",
|
||||
"dev": true,
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
|
@ -4531,9 +4531,9 @@
|
|||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "22.5.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.5.tgz",
|
||||
"integrity": "sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA==",
|
||||
"version": "22.7.4",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.4.tgz",
|
||||
"integrity": "sha512-y+NPi1rFzDs1NdQHHToqeiX2TIS79SWEAw9GYhkkx8bD0ChpfqC+n2j5OXOCpzfojBEBt6DnEnnG9MY0zk1XLg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"undici-types": "~6.19.2"
|
||||
|
@ -4570,17 +4570,17 @@
|
|||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@typescript-eslint/eslint-plugin": {
|
||||
"version": "8.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.5.0.tgz",
|
||||
"integrity": "sha512-lHS5hvz33iUFQKuPFGheAB84LwcJ60G8vKnEhnfcK1l8kGVLro2SFYW6K0/tj8FUhRJ0VHyg1oAfg50QGbPPHw==",
|
||||
"version": "8.7.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.7.0.tgz",
|
||||
"integrity": "sha512-RIHOoznhA3CCfSTFiB6kBGLQtB/sox+pJ6jeFu6FxJvqL8qRxq/FfGO/UhsGgQM9oGdXkV4xUgli+dt26biB6A==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@eslint-community/regexpp": "^4.10.0",
|
||||
"@typescript-eslint/scope-manager": "8.5.0",
|
||||
"@typescript-eslint/type-utils": "8.5.0",
|
||||
"@typescript-eslint/utils": "8.5.0",
|
||||
"@typescript-eslint/visitor-keys": "8.5.0",
|
||||
"@typescript-eslint/scope-manager": "8.7.0",
|
||||
"@typescript-eslint/type-utils": "8.7.0",
|
||||
"@typescript-eslint/utils": "8.7.0",
|
||||
"@typescript-eslint/visitor-keys": "8.7.0",
|
||||
"graphemer": "^1.4.0",
|
||||
"ignore": "^5.3.1",
|
||||
"natural-compare": "^1.4.0",
|
||||
|
@ -4604,16 +4604,16 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/parser": {
|
||||
"version": "8.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.5.0.tgz",
|
||||
"integrity": "sha512-gF77eNv0Xz2UJg/NbpWJ0kqAm35UMsvZf1GHj8D9MRFTj/V3tAciIWXfmPLsAAF/vUlpWPvUDyH1jjsr0cMVWw==",
|
||||
"version": "8.7.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.7.0.tgz",
|
||||
"integrity": "sha512-lN0btVpj2unxHlNYLI//BQ7nzbMJYBVQX5+pbNXvGYazdlgYonMn4AhhHifQ+J4fGRYA/m1DjaQjx+fDetqBOQ==",
|
||||
"dev": true,
|
||||
"license": "BSD-2-Clause",
|
||||
"dependencies": {
|
||||
"@typescript-eslint/scope-manager": "8.5.0",
|
||||
"@typescript-eslint/types": "8.5.0",
|
||||
"@typescript-eslint/typescript-estree": "8.5.0",
|
||||
"@typescript-eslint/visitor-keys": "8.5.0",
|
||||
"@typescript-eslint/scope-manager": "8.7.0",
|
||||
"@typescript-eslint/types": "8.7.0",
|
||||
"@typescript-eslint/typescript-estree": "8.7.0",
|
||||
"@typescript-eslint/visitor-keys": "8.7.0",
|
||||
"debug": "^4.3.4"
|
||||
},
|
||||
"engines": {
|
||||
|
@ -4633,14 +4633,14 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/scope-manager": {
|
||||
"version": "8.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.5.0.tgz",
|
||||
"integrity": "sha512-06JOQ9Qgj33yvBEx6tpC8ecP9o860rsR22hWMEd12WcTRrfaFgHr2RB/CA/B+7BMhHkXT4chg2MyboGdFGawYg==",
|
||||
"version": "8.7.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.7.0.tgz",
|
||||
"integrity": "sha512-87rC0k3ZlDOuz82zzXRtQ7Akv3GKhHs0ti4YcbAJtaomllXoSO8hi7Ix3ccEvCd824dy9aIX+j3d2UMAfCtVpg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@typescript-eslint/types": "8.5.0",
|
||||
"@typescript-eslint/visitor-keys": "8.5.0"
|
||||
"@typescript-eslint/types": "8.7.0",
|
||||
"@typescript-eslint/visitor-keys": "8.7.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
|
||||
|
@ -4651,14 +4651,14 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/type-utils": {
|
||||
"version": "8.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.5.0.tgz",
|
||||
"integrity": "sha512-N1K8Ix+lUM+cIDhL2uekVn/ZD7TZW+9/rwz8DclQpcQ9rk4sIL5CAlBC0CugWKREmDjBzI/kQqU4wkg46jWLYA==",
|
||||
"version": "8.7.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.7.0.tgz",
|
||||
"integrity": "sha512-tl0N0Mj3hMSkEYhLkjREp54OSb/FI6qyCzfiiclvJvOqre6hsZTGSnHtmFLDU8TIM62G7ygEa1bI08lcuRwEnQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@typescript-eslint/typescript-estree": "8.5.0",
|
||||
"@typescript-eslint/utils": "8.5.0",
|
||||
"@typescript-eslint/typescript-estree": "8.7.0",
|
||||
"@typescript-eslint/utils": "8.7.0",
|
||||
"debug": "^4.3.4",
|
||||
"ts-api-utils": "^1.3.0"
|
||||
},
|
||||
|
@ -4676,9 +4676,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/types": {
|
||||
"version": "8.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.5.0.tgz",
|
||||
"integrity": "sha512-qjkormnQS5wF9pjSi6q60bKUHH44j2APxfh9TQRXK8wbYVeDYYdYJGIROL87LGZZ2gz3Rbmjc736qyL8deVtdw==",
|
||||
"version": "8.7.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.7.0.tgz",
|
||||
"integrity": "sha512-LLt4BLHFwSfASHSF2K29SZ+ZCsbQOM+LuarPjRUuHm+Qd09hSe3GCeaQbcCr+Mik+0QFRmep/FyZBO6fJ64U3w==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
|
@ -4690,14 +4690,14 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/typescript-estree": {
|
||||
"version": "8.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.5.0.tgz",
|
||||
"integrity": "sha512-vEG2Sf9P8BPQ+d0pxdfndw3xIXaoSjliG0/Ejk7UggByZPKXmJmw3GW5jV2gHNQNawBUyfahoSiCFVov0Ruf7Q==",
|
||||
"version": "8.7.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.7.0.tgz",
|
||||
"integrity": "sha512-MC8nmcGHsmfAKxwnluTQpNqceniT8SteVwd2voYlmiSWGOtjvGXdPl17dYu2797GVscK30Z04WRM28CrKS9WOg==",
|
||||
"dev": true,
|
||||
"license": "BSD-2-Clause",
|
||||
"dependencies": {
|
||||
"@typescript-eslint/types": "8.5.0",
|
||||
"@typescript-eslint/visitor-keys": "8.5.0",
|
||||
"@typescript-eslint/types": "8.7.0",
|
||||
"@typescript-eslint/visitor-keys": "8.7.0",
|
||||
"debug": "^4.3.4",
|
||||
"fast-glob": "^3.3.2",
|
||||
"is-glob": "^4.0.3",
|
||||
|
@ -4735,16 +4735,16 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/utils": {
|
||||
"version": "8.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.5.0.tgz",
|
||||
"integrity": "sha512-6yyGYVL0e+VzGYp60wvkBHiqDWOpT63pdMV2CVG4LVDd5uR6q1qQN/7LafBZtAtNIn/mqXjsSeS5ggv/P0iECw==",
|
||||
"version": "8.7.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.7.0.tgz",
|
||||
"integrity": "sha512-ZbdUdwsl2X/s3CiyAu3gOlfQzpbuG3nTWKPoIvAu1pu5r8viiJvv2NPN2AqArL35NCYtw/lrPPfM4gxrMLNLPw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@eslint-community/eslint-utils": "^4.4.0",
|
||||
"@typescript-eslint/scope-manager": "8.5.0",
|
||||
"@typescript-eslint/types": "8.5.0",
|
||||
"@typescript-eslint/typescript-estree": "8.5.0"
|
||||
"@typescript-eslint/scope-manager": "8.7.0",
|
||||
"@typescript-eslint/types": "8.7.0",
|
||||
"@typescript-eslint/typescript-estree": "8.7.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
|
||||
|
@ -4758,13 +4758,13 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/visitor-keys": {
|
||||
"version": "8.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.5.0.tgz",
|
||||
"integrity": "sha512-yTPqMnbAZJNy2Xq2XU8AdtOW9tJIr+UQb64aXB9f3B1498Zx9JorVgFJcZpEc9UBuCCrdzKID2RGAMkYcDtZOw==",
|
||||
"version": "8.7.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.7.0.tgz",
|
||||
"integrity": "sha512-b1tx0orFCCh/THWPQa2ZwWzvOeyzzp36vkJYOpVg0u8UVOIsfVrnuC9FqAw9gRKn+rG2VmWQ/zDJZzkxUnj/XQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@typescript-eslint/types": "8.5.0",
|
||||
"@typescript-eslint/types": "8.7.0",
|
||||
"eslint-visitor-keys": "^3.4.3"
|
||||
},
|
||||
"engines": {
|
||||
|
@ -4921,9 +4921,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@vitest/mocker/node_modules/@types/estree": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
|
||||
"integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
|
||||
"integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
|
@ -5028,39 +5028,39 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@vue/compiler-core": {
|
||||
"version": "3.5.8",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.8.tgz",
|
||||
"integrity": "sha512-Uzlxp91EPjfbpeO5KtC0KnXPkuTfGsNDeaKQJxQN718uz+RqDYarEf7UhQJGK+ZYloD2taUbHTI2J4WrUaZQNA==",
|
||||
"version": "3.5.10",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.10.tgz",
|
||||
"integrity": "sha512-iXWlk+Cg/ag7gLvY0SfVucU8Kh2CjysYZjhhP70w9qI4MvSox4frrP+vDGvtQuzIcgD8+sxM6lZvCtdxGunTAA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.25.3",
|
||||
"@vue/shared": "3.5.8",
|
||||
"@vue/shared": "3.5.10",
|
||||
"entities": "^4.5.0",
|
||||
"estree-walker": "^2.0.2",
|
||||
"source-map-js": "^1.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/compiler-dom": {
|
||||
"version": "3.5.8",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.8.tgz",
|
||||
"integrity": "sha512-GUNHWvoDSbSa5ZSHT9SnV5WkStWfzJwwTd6NMGzilOE/HM5j+9EB9zGXdtu/fCNEmctBqMs6C9SvVPpVPuk1Eg==",
|
||||
"version": "3.5.10",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.10.tgz",
|
||||
"integrity": "sha512-DyxHC6qPcktwYGKOIy3XqnHRrrXyWR2u91AjP+nLkADko380srsC2DC3s7Y1Rk6YfOlxOlvEQKa9XXmLI+W4ZA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vue/compiler-core": "3.5.8",
|
||||
"@vue/shared": "3.5.8"
|
||||
"@vue/compiler-core": "3.5.10",
|
||||
"@vue/shared": "3.5.10"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/compiler-sfc": {
|
||||
"version": "3.5.8",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.8.tgz",
|
||||
"integrity": "sha512-taYpngQtSysrvO9GULaOSwcG5q821zCoIQBtQQSx7Uf7DxpR6CIHR90toPr9QfDD2mqHQPCSgoWBvJu0yV9zjg==",
|
||||
"version": "3.5.10",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.10.tgz",
|
||||
"integrity": "sha512-to8E1BgpakV7224ZCm8gz1ZRSyjNCAWEplwFMWKlzCdP9DkMKhRRwt0WkCjY7jkzi/Vz3xgbpeig5Pnbly4Tow==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.25.3",
|
||||
"@vue/compiler-core": "3.5.8",
|
||||
"@vue/compiler-dom": "3.5.8",
|
||||
"@vue/compiler-ssr": "3.5.8",
|
||||
"@vue/shared": "3.5.8",
|
||||
"@vue/compiler-core": "3.5.10",
|
||||
"@vue/compiler-dom": "3.5.10",
|
||||
"@vue/compiler-ssr": "3.5.10",
|
||||
"@vue/shared": "3.5.10",
|
||||
"estree-walker": "^2.0.2",
|
||||
"magic-string": "^0.30.11",
|
||||
"postcss": "^8.4.47",
|
||||
|
@ -5077,63 +5077,63 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@vue/compiler-ssr": {
|
||||
"version": "3.5.8",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.8.tgz",
|
||||
"integrity": "sha512-W96PtryNsNG9u0ZnN5Q5j27Z/feGrFV6zy9q5tzJVyJaLiwYxvC0ek4IXClZygyhjm+XKM7WD9pdKi/wIRVC/Q==",
|
||||
"version": "3.5.10",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.10.tgz",
|
||||
"integrity": "sha512-hxP4Y3KImqdtyUKXDRSxKSRkSm1H9fCvhojEYrnaoWhE4w/y8vwWhnosJoPPe2AXm5sU7CSbYYAgkt2ZPhDz+A==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vue/compiler-dom": "3.5.8",
|
||||
"@vue/shared": "3.5.8"
|
||||
"@vue/compiler-dom": "3.5.10",
|
||||
"@vue/shared": "3.5.10"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/reactivity": {
|
||||
"version": "3.5.8",
|
||||
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.8.tgz",
|
||||
"integrity": "sha512-mlgUyFHLCUZcAYkqvzYnlBRCh0t5ZQfLYit7nukn1GR96gc48Bp4B7OIcSfVSvlG1k3BPfD+p22gi1t2n9tsXg==",
|
||||
"version": "3.5.10",
|
||||
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.10.tgz",
|
||||
"integrity": "sha512-kW08v06F6xPSHhid9DJ9YjOGmwNDOsJJQk0ax21wKaUYzzuJGEuoKNU2Ujux8FLMrP7CFJJKsHhXN9l2WOVi2g==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vue/shared": "3.5.8"
|
||||
"@vue/shared": "3.5.10"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/runtime-core": {
|
||||
"version": "3.5.8",
|
||||
"resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.8.tgz",
|
||||
"integrity": "sha512-fJuPelh64agZ8vKkZgp5iCkPaEqFJsYzxLk9vSC0X3G8ppknclNDr61gDc45yBGTaN5Xqc1qZWU3/NoaBMHcjQ==",
|
||||
"version": "3.5.10",
|
||||
"resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.10.tgz",
|
||||
"integrity": "sha512-9Q86I5Qq3swSkFfzrZ+iqEy7Vla325M7S7xc1NwKnRm/qoi1Dauz0rT6mTMmscqx4qz0EDJ1wjB+A36k7rl8mA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vue/reactivity": "3.5.8",
|
||||
"@vue/shared": "3.5.8"
|
||||
"@vue/reactivity": "3.5.10",
|
||||
"@vue/shared": "3.5.10"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/runtime-dom": {
|
||||
"version": "3.5.8",
|
||||
"resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.8.tgz",
|
||||
"integrity": "sha512-DpAUz+PKjTZPUOB6zJgkxVI3GuYc2iWZiNeeHQUw53kdrparSTG6HeXUrYDjaam8dVsCdvQxDz6ZWxnyjccUjQ==",
|
||||
"version": "3.5.10",
|
||||
"resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.10.tgz",
|
||||
"integrity": "sha512-t3x7ht5qF8ZRi1H4fZqFzyY2j+GTMTDxRheT+i8M9Ph0oepUxoadmbwlFwMoW7RYCpNQLpP2Yx3feKs+fyBdpA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vue/reactivity": "3.5.8",
|
||||
"@vue/runtime-core": "3.5.8",
|
||||
"@vue/shared": "3.5.8",
|
||||
"@vue/reactivity": "3.5.10",
|
||||
"@vue/runtime-core": "3.5.10",
|
||||
"@vue/shared": "3.5.10",
|
||||
"csstype": "^3.1.3"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/server-renderer": {
|
||||
"version": "3.5.8",
|
||||
"resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.8.tgz",
|
||||
"integrity": "sha512-7AmC9/mEeV9mmXNVyUIm1a1AjUhyeeGNbkLh39J00E7iPeGks8OGRB5blJiMmvqSh8SkaS7jkLWSpXtxUCeagA==",
|
||||
"version": "3.5.10",
|
||||
"resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.10.tgz",
|
||||
"integrity": "sha512-IVE97tt2kGKwHNq9yVO0xdh1IvYfZCShvDSy46JIh5OQxP1/EXSpoDqetVmyIzL7CYOWnnmMkVqd7YK2QSWkdw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vue/compiler-ssr": "3.5.8",
|
||||
"@vue/shared": "3.5.8"
|
||||
"@vue/compiler-ssr": "3.5.10",
|
||||
"@vue/shared": "3.5.10"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"vue": "3.5.8"
|
||||
"vue": "3.5.10"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/shared": {
|
||||
"version": "3.5.8",
|
||||
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.8.tgz",
|
||||
"integrity": "sha512-mJleSWbAGySd2RJdX1RBtcrUBX6snyOc0qHpgk3lGi4l9/P/3ny3ELqFWqYdkXIwwNN/kdm8nD9ky8o6l/Lx2A==",
|
||||
"version": "3.5.10",
|
||||
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.10.tgz",
|
||||
"integrity": "sha512-VkkBhU97Ki+XJ0xvl4C9YJsIZ2uIlQ7HqPpZOS3m9VCvmROPaChZU6DexdMJqvz9tbgG+4EtFVrSuailUq5KGQ==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@vue/test-utils": {
|
||||
|
@ -5538,9 +5538,9 @@
|
|||
"license": "Python-2.0"
|
||||
},
|
||||
"node_modules/aria-query": {
|
||||
"version": "5.3.1",
|
||||
"resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.1.tgz",
|
||||
"integrity": "sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g==",
|
||||
"version": "5.3.2",
|
||||
"resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz",
|
||||
"integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==",
|
||||
"dev": true,
|
||||
"license": "Apache-2.0",
|
||||
"engines": {
|
||||
|
@ -5972,9 +5972,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/browserslist": {
|
||||
"version": "4.23.3",
|
||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz",
|
||||
"integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==",
|
||||
"version": "4.24.0",
|
||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.0.tgz",
|
||||
"integrity": "sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "opencollective",
|
||||
|
@ -5991,8 +5991,8 @@
|
|||
],
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"caniuse-lite": "^1.0.30001646",
|
||||
"electron-to-chromium": "^1.5.4",
|
||||
"caniuse-lite": "^1.0.30001663",
|
||||
"electron-to-chromium": "^1.5.28",
|
||||
"node-releases": "^2.0.18",
|
||||
"update-browserslist-db": "^1.1.0"
|
||||
},
|
||||
|
@ -6112,9 +6112,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/caniuse-lite": {
|
||||
"version": "1.0.30001660",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001660.tgz",
|
||||
"integrity": "sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==",
|
||||
"version": "1.0.30001664",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001664.tgz",
|
||||
"integrity": "sha512-AmE7k4dXiNKQipgn7a2xg558IRqPN3jMQY/rOsbxDhrd0tyChwbITBfiwtnqz8bi2M5mIWbxAYBvk7W7QBUS2g==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "opencollective",
|
||||
|
@ -6384,9 +6384,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/codemirror": {
|
||||
"version": "5.65.17",
|
||||
"resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.17.tgz",
|
||||
"integrity": "sha512-1zOsUx3lzAOu/gnMAZkQ9kpIHcPYOc9y1Fbm2UVk5UBPkdq380nhkelG0qUwm1f7wPvTbndu9ZYlug35EwAZRQ==",
|
||||
"version": "5.65.18",
|
||||
"resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.18.tgz",
|
||||
"integrity": "sha512-Gaz4gHnkbHMGgahNt3CA5HBk5lLQBqmD/pBgeB4kQU6OedZmqMBjlRF0LSrp2tJ4wlLNPm2FfaUd1pDy0mdlpA==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/codemirror-spell-checker": {
|
||||
|
@ -7461,9 +7461,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/dom-input-range": {
|
||||
"version": "1.1.6",
|
||||
"resolved": "https://registry.npmjs.org/dom-input-range/-/dom-input-range-1.1.6.tgz",
|
||||
"integrity": "sha512-4o/SkTpscD0n81BeErrrtmE58lG8vTks++92vk//ld0NmkQTb4AVJ2rexh2yor6rtBf5IMte26u+fF3EgCppPQ==",
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/dom-input-range/-/dom-input-range-1.2.0.tgz",
|
||||
"integrity": "sha512-8HVA5Oy5Vt872S7IXsjjp6/5Hqsm5YZLhurxwwQXp80T9qVsj8/mEUH3sQlFujLLUoWfxiaThHHuJ3/q1MHVuA==",
|
||||
"license": "MIT",
|
||||
"workspaces": [
|
||||
"demos"
|
||||
|
@ -7514,9 +7514,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/dompurify": {
|
||||
"version": "3.1.6",
|
||||
"resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.6.tgz",
|
||||
"integrity": "sha512-cTOAhc36AalkjtBpfG6O8JimdTMWNXjiePT2xQH/ppBGi/4uIpmj8eKyIkMJErXWARyINV/sB38yf8JCLF5pbQ==",
|
||||
"version": "3.1.7",
|
||||
"resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.7.tgz",
|
||||
"integrity": "sha512-VaTstWtsneJY8xzy7DekmYWEOZcmzIe3Qb3zPd4STve1OBTa+e+WmS1ITQec1fZYXI3HCsOZZiSMpG6oxoWMWQ==",
|
||||
"license": "(MPL-2.0 OR Apache-2.0)"
|
||||
},
|
||||
"node_modules/domutils": {
|
||||
|
@ -7599,9 +7599,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/electron-to-chromium": {
|
||||
"version": "1.5.23",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.23.tgz",
|
||||
"integrity": "sha512-mBhODedOXg4v5QWwl21DjM5amzjmI1zw9EPrPK/5Wx7C8jt33bpZNrC7OhHUG3pxRtbLpr3W2dXT+Ph1SsfRZA==",
|
||||
"version": "1.5.29",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.29.tgz",
|
||||
"integrity": "sha512-PF8n2AlIhCKXQ+gTpiJi0VhcHDb69kYX4MtCiivctc2QD3XuNZ/XIOlbGzt7WAjjEev0TtaH6Cu3arZExm5DOw==",
|
||||
"license": "ISC"
|
||||
},
|
||||
"node_modules/emoji-regex": {
|
||||
|
@ -8088,9 +8088,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/eslint-module-utils": {
|
||||
"version": "2.11.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.11.0.tgz",
|
||||
"integrity": "sha512-gbBE5Hitek/oG6MUVj6sFuzEjA/ClzNflVrLovHi/JgLdC7fiN5gLAY1WIPW1a0V5I999MnsrvVrCOGmmVqDBQ==",
|
||||
"version": "2.12.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz",
|
||||
"integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
|
@ -8129,9 +8129,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/eslint-plugin-escompat": {
|
||||
"version": "3.11.1",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-escompat/-/eslint-plugin-escompat-3.11.1.tgz",
|
||||
"integrity": "sha512-j/H70uveM+G9M0onQJOYM+h5trTjQfmBnhGzxAxwGrqARfgXwkfjs+SkvJ1j/a4ofyCIYpBQsGg7q+TowwPNmA==",
|
||||
"version": "3.11.3",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-escompat/-/eslint-plugin-escompat-3.11.3.tgz",
|
||||
"integrity": "sha512-Gz/eTJzl7fK9SPBkvB3t+xc1iribxRc5Fgu6Z7206b5q1d7kG0t8Drtin8MRY4UgGBg8Zu1HG6RGzR35LCUpLA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
|
@ -8527,9 +8527,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/eslint-plugin-react": {
|
||||
"version": "7.36.1",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.36.1.tgz",
|
||||
"integrity": "sha512-/qwbqNXZoq+VP30s1d4Nc1C5GTxjJQjk4Jzs4Wq2qzxFM7dSmuG2UkIjg2USMLh3A/aVcUNrK7v0J5U1XEGGwA==",
|
||||
"version": "7.37.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.0.tgz",
|
||||
"integrity": "sha512-IHBePmfWH5lKhJnJ7WB1V+v/GolbB0rjS8XYVCSQCZKaQCAUhMoVoOEn1Ef8Z8Wf0a7l8KTJvuZg5/e4qrZ6nA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
|
@ -9302,9 +9302,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/eslint-visitor-keys": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz",
|
||||
"integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==",
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz",
|
||||
"integrity": "sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==",
|
||||
"dev": true,
|
||||
"license": "Apache-2.0",
|
||||
"engines": {
|
||||
|
@ -9394,15 +9394,15 @@
|
|||
}
|
||||
},
|
||||
"node_modules/espree": {
|
||||
"version": "10.1.0",
|
||||
"resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz",
|
||||
"integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==",
|
||||
"version": "10.2.0",
|
||||
"resolved": "https://registry.npmjs.org/espree/-/espree-10.2.0.tgz",
|
||||
"integrity": "sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==",
|
||||
"dev": true,
|
||||
"license": "BSD-2-Clause",
|
||||
"dependencies": {
|
||||
"acorn": "^8.12.0",
|
||||
"acorn-jsx": "^5.3.2",
|
||||
"eslint-visitor-keys": "^4.0.0"
|
||||
"eslint-visitor-keys": "^4.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
|
||||
|
@ -9542,9 +9542,9 @@
|
|||
"license": "MIT"
|
||||
},
|
||||
"node_modules/fast-uri": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz",
|
||||
"integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==",
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.2.tgz",
|
||||
"integrity": "sha512-GR6f0hD7XXyNJa25Tb9BuIdN0tdr+0BMi6/CJPH3wJO1JjNG3n/VsSw38AwRdKZABm8lGbPfakLRkYzx2V9row==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/fastest-levenshtein": {
|
||||
|
@ -12114,9 +12114,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/monaco-editor": {
|
||||
"version": "0.50.0",
|
||||
"resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.50.0.tgz",
|
||||
"integrity": "sha512-8CclLCmrRRh+sul7C08BmPBP3P8wVWfBHomsTcndxg5NRCEPfu/mc2AGU8k37ajjDVXcXFc12ORAMUkmk+lkFA==",
|
||||
"version": "0.51.0",
|
||||
"resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.51.0.tgz",
|
||||
"integrity": "sha512-xaGwVV1fq343cM7aOYB6lVE4Ugf0UyimdD/x5PWcWBMKENwectaEu77FAN7c5sFiyumqeJdX1RPTh1ocioyDjw==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/monaco-editor-webpack-plugin": {
|
||||
|
@ -12545,9 +12545,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/package-json-from-dist": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz",
|
||||
"integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==",
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
|
||||
"integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
|
||||
"license": "BlueOak-1.0.0"
|
||||
},
|
||||
"node_modules/package-manager-detector": {
|
||||
|
@ -13943,9 +13943,9 @@
|
|||
"license": "Unlicense"
|
||||
},
|
||||
"node_modules/rollup": {
|
||||
"version": "2.79.1",
|
||||
"resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz",
|
||||
"integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==",
|
||||
"version": "2.79.2",
|
||||
"resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz",
|
||||
"integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"bin": {
|
||||
|
@ -14345,9 +14345,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/solid-js": {
|
||||
"version": "1.8.22",
|
||||
"resolved": "https://registry.npmjs.org/solid-js/-/solid-js-1.8.22.tgz",
|
||||
"integrity": "sha512-VBzN5j+9Y4rqIKEnK301aBk+S7fvFSTs9ljg+YEdFxjNjH0hkjXPiQRcws9tE5fUzMznSS6KToL5hwMfHDgpLA==",
|
||||
"version": "1.9.1",
|
||||
"resolved": "https://registry.npmjs.org/solid-js/-/solid-js-1.9.1.tgz",
|
||||
"integrity": "sha512-Gd6QWRFfO2XKKZqVK4YwbhWZkr0jWw1dYHOt+VYebomeyikGP0SuMflf42XcDuU9HAEYDArFJIYsBNjlE7iZsw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"csstype": "^3.1.0",
|
||||
|
@ -15272,9 +15272,9 @@
|
|||
"license": "ISC"
|
||||
},
|
||||
"node_modules/terser": {
|
||||
"version": "5.32.0",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.32.0.tgz",
|
||||
"integrity": "sha512-v3Gtw3IzpBJ0ugkxEX8U0W6+TnPKRRCWGh1jC/iM/e3Ki5+qvO1L1EAZ56bZasc64aXHwRHNIQEzm6//i5cemQ==",
|
||||
"version": "5.34.1",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.34.1.tgz",
|
||||
"integrity": "sha512-FsJZ7iZLd/BXkz+4xrRTGJ26o/6VTjQytUk8b8OxkwcD2I+79VPJlz7qss1+zE7h8GNIScFqXcDyJ/KqBYZFVA==",
|
||||
"license": "BSD-2-Clause",
|
||||
"dependencies": {
|
||||
"@jridgewell/source-map": "^0.3.3",
|
||||
|
@ -15854,9 +15854,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/update-browserslist-db": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz",
|
||||
"integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==",
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz",
|
||||
"integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "opencollective",
|
||||
|
@ -15873,8 +15873,8 @@
|
|||
],
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"escalade": "^3.1.2",
|
||||
"picocolors": "^1.0.1"
|
||||
"escalade": "^3.2.0",
|
||||
"picocolors": "^1.1.0"
|
||||
},
|
||||
"bin": {
|
||||
"update-browserslist-db": "cli.js"
|
||||
|
@ -15956,9 +15956,9 @@
|
|||
"license": "MIT"
|
||||
},
|
||||
"node_modules/vite": {
|
||||
"version": "5.4.5",
|
||||
"resolved": "https://registry.npmjs.org/vite/-/vite-5.4.5.tgz",
|
||||
"integrity": "sha512-pXqR0qtb2bTwLkev4SE3r4abCNioP3GkjvIDLlzziPpXtHgiJIjuKl+1GN6ESOT3wMjG3JTeARopj2SwYaHTOA==",
|
||||
"version": "5.4.8",
|
||||
"resolved": "https://registry.npmjs.org/vite/-/vite-5.4.8.tgz",
|
||||
"integrity": "sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
|
@ -16045,9 +16045,9 @@
|
|||
"license": "BSD-2-Clause"
|
||||
},
|
||||
"node_modules/vite/node_modules/@types/estree": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
|
||||
"integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
|
||||
"integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
|
@ -16067,13 +16067,13 @@
|
|||
}
|
||||
},
|
||||
"node_modules/vite/node_modules/rollup": {
|
||||
"version": "4.21.3",
|
||||
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.3.tgz",
|
||||
"integrity": "sha512-7sqRtBNnEbcBtMeRVc6VRsJMmpI+JU1z9VTvW8D4gXIYQFz0aLcsE6rRkyghZkLfEgUZgVvOG7A5CVz/VW5GIA==",
|
||||
"version": "4.22.5",
|
||||
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.22.5.tgz",
|
||||
"integrity": "sha512-WoinX7GeQOFMGznEcWA1WrTQCd/tpEbMkc3nuMs9BT0CPjMdSjPMTVClwWd4pgSQwJdP65SK9mTCNvItlr5o7w==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@types/estree": "1.0.5"
|
||||
"@types/estree": "1.0.6"
|
||||
},
|
||||
"bin": {
|
||||
"rollup": "dist/bin/rollup"
|
||||
|
@ -16083,22 +16083,22 @@
|
|||
"npm": ">=8.0.0"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@rollup/rollup-android-arm-eabi": "4.21.3",
|
||||
"@rollup/rollup-android-arm64": "4.21.3",
|
||||
"@rollup/rollup-darwin-arm64": "4.21.3",
|
||||
"@rollup/rollup-darwin-x64": "4.21.3",
|
||||
"@rollup/rollup-linux-arm-gnueabihf": "4.21.3",
|
||||
"@rollup/rollup-linux-arm-musleabihf": "4.21.3",
|
||||
"@rollup/rollup-linux-arm64-gnu": "4.21.3",
|
||||
"@rollup/rollup-linux-arm64-musl": "4.21.3",
|
||||
"@rollup/rollup-linux-powerpc64le-gnu": "4.21.3",
|
||||
"@rollup/rollup-linux-riscv64-gnu": "4.21.3",
|
||||
"@rollup/rollup-linux-s390x-gnu": "4.21.3",
|
||||
"@rollup/rollup-linux-x64-gnu": "4.21.3",
|
||||
"@rollup/rollup-linux-x64-musl": "4.21.3",
|
||||
"@rollup/rollup-win32-arm64-msvc": "4.21.3",
|
||||
"@rollup/rollup-win32-ia32-msvc": "4.21.3",
|
||||
"@rollup/rollup-win32-x64-msvc": "4.21.3",
|
||||
"@rollup/rollup-android-arm-eabi": "4.22.5",
|
||||
"@rollup/rollup-android-arm64": "4.22.5",
|
||||
"@rollup/rollup-darwin-arm64": "4.22.5",
|
||||
"@rollup/rollup-darwin-x64": "4.22.5",
|
||||
"@rollup/rollup-linux-arm-gnueabihf": "4.22.5",
|
||||
"@rollup/rollup-linux-arm-musleabihf": "4.22.5",
|
||||
"@rollup/rollup-linux-arm64-gnu": "4.22.5",
|
||||
"@rollup/rollup-linux-arm64-musl": "4.22.5",
|
||||
"@rollup/rollup-linux-powerpc64le-gnu": "4.22.5",
|
||||
"@rollup/rollup-linux-riscv64-gnu": "4.22.5",
|
||||
"@rollup/rollup-linux-s390x-gnu": "4.22.5",
|
||||
"@rollup/rollup-linux-x64-gnu": "4.22.5",
|
||||
"@rollup/rollup-linux-x64-musl": "4.22.5",
|
||||
"@rollup/rollup-win32-arm64-msvc": "4.22.5",
|
||||
"@rollup/rollup-win32-ia32-msvc": "4.22.5",
|
||||
"@rollup/rollup-win32-x64-msvc": "4.22.5",
|
||||
"fsevents": "~2.3.2"
|
||||
}
|
||||
},
|
||||
|
@ -16227,16 +16227,16 @@
|
|||
"license": "MIT"
|
||||
},
|
||||
"node_modules/vue": {
|
||||
"version": "3.5.8",
|
||||
"resolved": "https://registry.npmjs.org/vue/-/vue-3.5.8.tgz",
|
||||
"integrity": "sha512-hvuvuCy51nP/1fSRvrrIqTLSvrSyz2Pq+KQ8S8SXCxTWVE0nMaOnSDnSOxV1eYmGfvK7mqiwvd1C59CEEz7dAQ==",
|
||||
"version": "3.5.10",
|
||||
"resolved": "https://registry.npmjs.org/vue/-/vue-3.5.10.tgz",
|
||||
"integrity": "sha512-Vy2kmJwHPlouC/tSnIgXVg03SG+9wSqT1xu1Vehc+ChsXsRd7jLkKgMltVEFOzUdBr3uFwBCG+41LJtfAcBRng==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vue/compiler-dom": "3.5.8",
|
||||
"@vue/compiler-sfc": "3.5.8",
|
||||
"@vue/runtime-dom": "3.5.8",
|
||||
"@vue/server-renderer": "3.5.8",
|
||||
"@vue/shared": "3.5.8"
|
||||
"@vue/compiler-dom": "3.5.10",
|
||||
"@vue/compiler-sfc": "3.5.10",
|
||||
"@vue/runtime-dom": "3.5.10",
|
||||
"@vue/server-renderer": "3.5.10",
|
||||
"@vue/shared": "3.5.10"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"typescript": "*"
|
||||
|
@ -16379,9 +16379,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/webpack": {
|
||||
"version": "5.94.0",
|
||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz",
|
||||
"integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==",
|
||||
"version": "5.95.0",
|
||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.95.0.tgz",
|
||||
"integrity": "sha512-2t3XstrKULz41MNMBF+cJ97TyHdyQ8HCt//pqErqDvNjU9YQBnZxIHa11VXsi7F3mb5/aO2tuDxdeTPdU7xu9Q==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@types/estree": "^1.0.5",
|
||||
|
@ -16494,9 +16494,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/webpack/node_modules/@types/estree": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
|
||||
"integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
|
||||
"integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/webpack/node_modules/ajv": {
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
"mermaid": "11.2.1",
|
||||
"mini-css-extract-plugin": "2.9.1",
|
||||
"minimatch": "10.0.1",
|
||||
"monaco-editor": "0.50.0",
|
||||
"monaco-editor": "0.51.0",
|
||||
"monaco-editor-webpack-plugin": "7.1.0",
|
||||
"pdfobject": "2.3.0",
|
||||
"postcss": "8.4.47",
|
||||
|
@ -50,11 +50,11 @@
|
|||
"tributejs": "5.1.3",
|
||||
"uint8-to-base64": "0.2.0",
|
||||
"vanilla-colorful": "0.7.2",
|
||||
"vue": "3.5.8",
|
||||
"vue": "3.5.10",
|
||||
"vue-chartjs": "5.3.1",
|
||||
"vue-loader": "17.4.2",
|
||||
"vue3-calendar-heatmap": "2.0.5",
|
||||
"webpack": "5.94.0",
|
||||
"webpack": "5.95.0",
|
||||
"webpack-cli": "5.1.4",
|
||||
"wrap-ansi": "9.0.0"
|
||||
},
|
||||
|
|
5
release-notes/5372.md
Normal file
5
release-notes/5372.md
Normal file
|
@ -0,0 +1,5 @@
|
|||
feat: [commit](https://codeberg.org/forgejo/forgejo/commit/9d3473119893ffde0ab36d98e7a0e41c5d0ba9a3) Add bin to Composer Metadata.
|
||||
fix: [commit](https://codeberg.org/forgejo/forgejo/commit/f709de24039ab7e605d3e09e3b61240836381603) Fix wrong last modify time.
|
||||
fix: [commit](https://codeberg.org/forgejo/forgejo/commit/2675a24649af2fff34f5c7e416d6ff78591d8d9c) Repo Activity: count new issues that were closed.
|
||||
fix: [commit](https://codeberg.org/forgejo/forgejo/commit/526054332acb221e061d3900bba2dc6e012da52d) Fix incorrect /tokens api.
|
||||
fix: [commit](https://codeberg.org/forgejo/forgejo/commit/0cafec4c7a2faf810953e9d522faf5dc019e1522) Do not escape relative path in RPM primary index.
|
2
release-notes/5418.md
Normal file
2
release-notes/5418.md
Normal file
|
@ -0,0 +1,2 @@
|
|||
fix: [commit](https://codeberg.org/forgejo/forgejo/commit/0a0a3cea1b54d9cd7c95faf9318f6c3cdf1469a9) After migrating a repository that contains merged pull requests, the branch is missing and cannot be deleted.
|
||||
fix: [commit](https://codeberg.org/forgejo/forgejo/commit/14c7055494b995476d9d2ec1948784bf36dd9e4d) Forgejo Actions artifact v4 upload above 8MB.
|
2
release-notes/5480.md
Normal file
2
release-notes/5480.md
Normal file
|
@ -0,0 +1,2 @@
|
|||
fix: [commit](https://codeberg.org/forgejo/forgejo/commit/7d3a013e5e81bbc054f4a730923e08f61814bf66) PR creation on forked repositories.
|
||||
fix: [commit](https://codeberg.org/forgejo/forgejo/commit/700e9f027bce8c783b74de07b3f29e09be045fa7) the logic of finding the latest pull review commit ID is incorrect.
|
|
@ -123,6 +123,54 @@ func listChunksByRunID(st storage.ObjectStorage, runID int64) (map[int64][]*chun
|
|||
return chunksMap, nil
|
||||
}
|
||||
|
||||
func listChunksByRunIDV4(st storage.ObjectStorage, runID, artifactID int64, blist *BlockList) ([]*chunkFileItem, error) {
|
||||
storageDir := fmt.Sprintf("tmpv4%d", runID)
|
||||
var chunks []*chunkFileItem
|
||||
chunkMap := map[string]*chunkFileItem{}
|
||||
dummy := &chunkFileItem{}
|
||||
for _, name := range blist.Latest {
|
||||
chunkMap[name] = dummy
|
||||
}
|
||||
if err := st.IterateObjects(storageDir, func(fpath string, obj storage.Object) error {
|
||||
baseName := filepath.Base(fpath)
|
||||
if !strings.HasPrefix(baseName, "block-") {
|
||||
return nil
|
||||
}
|
||||
// when read chunks from storage, it only contains storage dir and basename,
|
||||
// no matter the subdirectory setting in storage config
|
||||
item := chunkFileItem{Path: storageDir + "/" + baseName, ArtifactID: artifactID}
|
||||
var size int64
|
||||
var b64chunkName string
|
||||
if _, err := fmt.Sscanf(baseName, "block-%d-%d-%s", &item.RunID, &size, &b64chunkName); err != nil {
|
||||
return fmt.Errorf("parse content range error: %v", err)
|
||||
}
|
||||
rchunkName, err := base64.URLEncoding.DecodeString(b64chunkName)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to parse chunkName: %v", err)
|
||||
}
|
||||
chunkName := string(rchunkName)
|
||||
item.End = item.Start + size - 1
|
||||
if _, ok := chunkMap[chunkName]; ok {
|
||||
chunkMap[chunkName] = &item
|
||||
}
|
||||
return nil
|
||||
}); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
for i, name := range blist.Latest {
|
||||
chunk, ok := chunkMap[name]
|
||||
if !ok || chunk.Path == "" {
|
||||
return nil, fmt.Errorf("missing Chunk (%d/%d): %s", i, len(blist.Latest), name)
|
||||
}
|
||||
chunks = append(chunks, chunk)
|
||||
if i > 0 {
|
||||
chunk.Start = chunkMap[blist.Latest[i-1]].End + 1
|
||||
chunk.End += chunk.Start
|
||||
}
|
||||
}
|
||||
return chunks, nil
|
||||
}
|
||||
|
||||
func mergeChunksForRun(ctx *ArtifactContext, st storage.ObjectStorage, runID int64, artifactName string) error {
|
||||
// read all db artifacts by name
|
||||
artifacts, err := db.Find[actions.ActionArtifact](ctx, actions.FindArtifactsOptions{
|
||||
|
@ -230,7 +278,7 @@ func mergeChunksForArtifact(ctx *ArtifactContext, chunks []*chunkFileItem, st st
|
|||
rawChecksum := hash.Sum(nil)
|
||||
actualChecksum := hex.EncodeToString(rawChecksum)
|
||||
if !strings.HasSuffix(checksum, actualChecksum) {
|
||||
return fmt.Errorf("update artifact error checksum is invalid")
|
||||
return fmt.Errorf("update artifact error checksum is invalid %v vs %v", checksum, actualChecksum)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -24,8 +24,15 @@ package actions
|
|||
// PUT: http://localhost:3000/twirp/github.actions.results.api.v1.ArtifactService/UploadArtifact?sig=mO7y35r4GyjN7fwg0DTv3-Fv1NDXD84KLEgLpoPOtDI=&expires=2024-01-23+21%3A48%3A37.20833956+%2B0100+CET&artifactName=test&taskID=75&comp=block
|
||||
// 1.3. Continue Upload Zip Content to Blobstorage (unauthenticated request), repeat until everything is uploaded
|
||||
// PUT: http://localhost:3000/twirp/github.actions.results.api.v1.ArtifactService/UploadArtifact?sig=mO7y35r4GyjN7fwg0DTv3-Fv1NDXD84KLEgLpoPOtDI=&expires=2024-01-23+21%3A48%3A37.20833956+%2B0100+CET&artifactName=test&taskID=75&comp=appendBlock
|
||||
// 1.4. Unknown xml payload to Blobstorage (unauthenticated request), ignored for now
|
||||
// 1.4. BlockList xml payload to Blobstorage (unauthenticated request)
|
||||
// Files of about 800MB are parallel in parallel and / or out of order, this file is needed to enshure the correct order
|
||||
// PUT: http://localhost:3000/twirp/github.actions.results.api.v1.ArtifactService/UploadArtifact?sig=mO7y35r4GyjN7fwg0DTv3-Fv1NDXD84KLEgLpoPOtDI=&expires=2024-01-23+21%3A48%3A37.20833956+%2B0100+CET&artifactName=test&taskID=75&comp=blockList
|
||||
// Request
|
||||
// <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
// <BlockList>
|
||||
// <Latest>blockId1</Latest>
|
||||
// <Latest>blockId2</Latest>
|
||||
// </BlockList>
|
||||
// 1.5. FinalizeArtifact
|
||||
// Post: /twirp/github.actions.results.api.v1.ArtifactService/FinalizeArtifact
|
||||
// Request
|
||||
|
@ -82,6 +89,7 @@ import (
|
|||
"crypto/hmac"
|
||||
"crypto/sha256"
|
||||
"encoding/base64"
|
||||
"encoding/xml"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
|
@ -153,31 +161,34 @@ func ArtifactsV4Routes(prefix string) *web.Route {
|
|||
return m
|
||||
}
|
||||
|
||||
func (r artifactV4Routes) buildSignature(endp, expires, artifactName string, taskID int64) []byte {
|
||||
func (r artifactV4Routes) buildSignature(endp, expires, artifactName string, taskID, artifactID int64) []byte {
|
||||
mac := hmac.New(sha256.New, setting.GetGeneralTokenSigningSecret())
|
||||
mac.Write([]byte(endp))
|
||||
mac.Write([]byte(expires))
|
||||
mac.Write([]byte(artifactName))
|
||||
mac.Write([]byte(fmt.Sprint(taskID)))
|
||||
mac.Write([]byte(fmt.Sprint(artifactID)))
|
||||
return mac.Sum(nil)
|
||||
}
|
||||
|
||||
func (r artifactV4Routes) buildArtifactURL(endp, artifactName string, taskID int64) string {
|
||||
func (r artifactV4Routes) buildArtifactURL(endp, artifactName string, taskID, artifactID int64) string {
|
||||
expires := time.Now().Add(60 * time.Minute).Format("2006-01-02 15:04:05.999999999 -0700 MST")
|
||||
uploadURL := strings.TrimSuffix(setting.AppURL, "/") + strings.TrimSuffix(r.prefix, "/") +
|
||||
"/" + endp + "?sig=" + base64.URLEncoding.EncodeToString(r.buildSignature(endp, expires, artifactName, taskID)) + "&expires=" + url.QueryEscape(expires) + "&artifactName=" + url.QueryEscape(artifactName) + "&taskID=" + fmt.Sprint(taskID)
|
||||
"/" + endp + "?sig=" + base64.URLEncoding.EncodeToString(r.buildSignature(endp, expires, artifactName, taskID, artifactID)) + "&expires=" + url.QueryEscape(expires) + "&artifactName=" + url.QueryEscape(artifactName) + "&taskID=" + fmt.Sprint(taskID) + "&artifactID=" + fmt.Sprint(artifactID)
|
||||
return uploadURL
|
||||
}
|
||||
|
||||
func (r artifactV4Routes) verifySignature(ctx *ArtifactContext, endp string) (*actions.ActionTask, string, bool) {
|
||||
rawTaskID := ctx.Req.URL.Query().Get("taskID")
|
||||
rawArtifactID := ctx.Req.URL.Query().Get("artifactID")
|
||||
sig := ctx.Req.URL.Query().Get("sig")
|
||||
expires := ctx.Req.URL.Query().Get("expires")
|
||||
artifactName := ctx.Req.URL.Query().Get("artifactName")
|
||||
dsig, _ := base64.URLEncoding.DecodeString(sig)
|
||||
taskID, _ := strconv.ParseInt(rawTaskID, 10, 64)
|
||||
artifactID, _ := strconv.ParseInt(rawArtifactID, 10, 64)
|
||||
|
||||
expecedsig := r.buildSignature(endp, expires, artifactName, taskID)
|
||||
expecedsig := r.buildSignature(endp, expires, artifactName, taskID, artifactID)
|
||||
if !hmac.Equal(dsig, expecedsig) {
|
||||
log.Error("Error unauthorized")
|
||||
ctx.Error(http.StatusUnauthorized, "Error unauthorized")
|
||||
|
@ -272,6 +283,8 @@ func (r *artifactV4Routes) createArtifact(ctx *ArtifactContext) {
|
|||
return
|
||||
}
|
||||
artifact.ContentEncoding = ArtifactV4ContentEncoding
|
||||
artifact.FileSize = 0
|
||||
artifact.FileCompressedSize = 0
|
||||
if err := actions.UpdateArtifactByID(ctx, artifact.ID, artifact); err != nil {
|
||||
log.Error("Error UpdateArtifactByID: %v", err)
|
||||
ctx.Error(http.StatusInternalServerError, "Error UpdateArtifactByID")
|
||||
|
@ -280,7 +293,7 @@ func (r *artifactV4Routes) createArtifact(ctx *ArtifactContext) {
|
|||
|
||||
respData := CreateArtifactResponse{
|
||||
Ok: true,
|
||||
SignedUploadUrl: r.buildArtifactURL("UploadArtifact", artifactName, ctx.ActionTask.ID),
|
||||
SignedUploadUrl: r.buildArtifactURL("UploadArtifact", artifactName, ctx.ActionTask.ID, artifact.ID),
|
||||
}
|
||||
r.sendProtbufBody(ctx, &respData)
|
||||
}
|
||||
|
@ -306,38 +319,77 @@ func (r *artifactV4Routes) uploadArtifact(ctx *ArtifactContext) {
|
|||
comp := ctx.Req.URL.Query().Get("comp")
|
||||
switch comp {
|
||||
case "block", "appendBlock":
|
||||
// get artifact by name
|
||||
artifact, err := r.getArtifactByName(ctx, task.Job.RunID, artifactName)
|
||||
if err != nil {
|
||||
log.Error("Error artifact not found: %v", err)
|
||||
ctx.Error(http.StatusNotFound, "Error artifact not found")
|
||||
return
|
||||
}
|
||||
blockid := ctx.Req.URL.Query().Get("blockid")
|
||||
if blockid == "" {
|
||||
// get artifact by name
|
||||
artifact, err := r.getArtifactByName(ctx, task.Job.RunID, artifactName)
|
||||
if err != nil {
|
||||
log.Error("Error artifact not found: %v", err)
|
||||
ctx.Error(http.StatusNotFound, "Error artifact not found")
|
||||
return
|
||||
}
|
||||
|
||||
if comp == "block" {
|
||||
artifact.FileSize = 0
|
||||
artifact.FileCompressedSize = 0
|
||||
_, err = appendUploadChunk(r.fs, ctx, artifact, artifact.FileSize, ctx.Req.ContentLength, artifact.RunID)
|
||||
if err != nil {
|
||||
log.Error("Error runner api getting task: task is not running")
|
||||
ctx.Error(http.StatusInternalServerError, "Error runner api getting task: task is not running")
|
||||
return
|
||||
}
|
||||
artifact.FileCompressedSize += ctx.Req.ContentLength
|
||||
artifact.FileSize += ctx.Req.ContentLength
|
||||
if err := actions.UpdateArtifactByID(ctx, artifact.ID, artifact); err != nil {
|
||||
log.Error("Error UpdateArtifactByID: %v", err)
|
||||
ctx.Error(http.StatusInternalServerError, "Error UpdateArtifactByID")
|
||||
return
|
||||
}
|
||||
} else {
|
||||
_, err := r.fs.Save(fmt.Sprintf("tmpv4%d/block-%d-%d-%s", task.Job.RunID, task.Job.RunID, ctx.Req.ContentLength, base64.URLEncoding.EncodeToString([]byte(blockid))), ctx.Req.Body, -1)
|
||||
if err != nil {
|
||||
log.Error("Error runner api getting task: task is not running")
|
||||
ctx.Error(http.StatusInternalServerError, "Error runner api getting task: task is not running")
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
_, err = appendUploadChunk(r.fs, ctx, artifact, artifact.FileSize, ctx.Req.ContentLength, artifact.RunID)
|
||||
ctx.JSON(http.StatusCreated, "appended")
|
||||
case "blocklist":
|
||||
rawArtifactID := ctx.Req.URL.Query().Get("artifactID")
|
||||
artifactID, _ := strconv.ParseInt(rawArtifactID, 10, 64)
|
||||
_, err := r.fs.Save(fmt.Sprintf("tmpv4%d/%d-%d-blocklist", task.Job.RunID, task.Job.RunID, artifactID), ctx.Req.Body, -1)
|
||||
if err != nil {
|
||||
log.Error("Error runner api getting task: task is not running")
|
||||
ctx.Error(http.StatusInternalServerError, "Error runner api getting task: task is not running")
|
||||
return
|
||||
}
|
||||
artifact.FileCompressedSize += ctx.Req.ContentLength
|
||||
artifact.FileSize += ctx.Req.ContentLength
|
||||
if err := actions.UpdateArtifactByID(ctx, artifact.ID, artifact); err != nil {
|
||||
log.Error("Error UpdateArtifactByID: %v", err)
|
||||
ctx.Error(http.StatusInternalServerError, "Error UpdateArtifactByID")
|
||||
return
|
||||
}
|
||||
ctx.JSON(http.StatusCreated, "appended")
|
||||
case "blocklist":
|
||||
ctx.JSON(http.StatusCreated, "created")
|
||||
}
|
||||
}
|
||||
|
||||
type BlockList struct {
|
||||
Latest []string `xml:"Latest"`
|
||||
}
|
||||
|
||||
type Latest struct {
|
||||
Value string `xml:",chardata"`
|
||||
}
|
||||
|
||||
func (r *artifactV4Routes) readBlockList(runID, artifactID int64) (*BlockList, error) {
|
||||
blockListName := fmt.Sprintf("tmpv4%d/%d-%d-blocklist", runID, runID, artifactID)
|
||||
s, err := r.fs.Open(blockListName)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
xdec := xml.NewDecoder(s)
|
||||
blockList := &BlockList{}
|
||||
err = xdec.Decode(blockList)
|
||||
|
||||
delerr := r.fs.Delete(blockListName)
|
||||
if delerr != nil {
|
||||
log.Warn("Failed to delete blockList %s: %v", blockListName, delerr)
|
||||
}
|
||||
return blockList, err
|
||||
}
|
||||
|
||||
func (r *artifactV4Routes) finalizeArtifact(ctx *ArtifactContext) {
|
||||
var req FinalizeArtifactRequest
|
||||
|
||||
|
@ -356,18 +408,34 @@ func (r *artifactV4Routes) finalizeArtifact(ctx *ArtifactContext) {
|
|||
ctx.Error(http.StatusNotFound, "Error artifact not found")
|
||||
return
|
||||
}
|
||||
chunkMap, err := listChunksByRunID(r.fs, runID)
|
||||
|
||||
var chunks []*chunkFileItem
|
||||
blockList, err := r.readBlockList(runID, artifact.ID)
|
||||
if err != nil {
|
||||
log.Error("Error merge chunks: %v", err)
|
||||
ctx.Error(http.StatusInternalServerError, "Error merge chunks")
|
||||
return
|
||||
}
|
||||
chunks, ok := chunkMap[artifact.ID]
|
||||
if !ok {
|
||||
log.Error("Error merge chunks")
|
||||
ctx.Error(http.StatusInternalServerError, "Error merge chunks")
|
||||
return
|
||||
log.Warn("Failed to read BlockList, fallback to old behavior: %v", err)
|
||||
chunkMap, err := listChunksByRunID(r.fs, runID)
|
||||
if err != nil {
|
||||
log.Error("Error merge chunks: %v", err)
|
||||
ctx.Error(http.StatusInternalServerError, "Error merge chunks")
|
||||
return
|
||||
}
|
||||
chunks, ok = chunkMap[artifact.ID]
|
||||
if !ok {
|
||||
log.Error("Error merge chunks")
|
||||
ctx.Error(http.StatusInternalServerError, "Error merge chunks")
|
||||
return
|
||||
}
|
||||
} else {
|
||||
chunks, err = listChunksByRunIDV4(r.fs, runID, artifact.ID, blockList)
|
||||
if err != nil {
|
||||
log.Error("Error merge chunks: %v", err)
|
||||
ctx.Error(http.StatusInternalServerError, "Error merge chunks")
|
||||
return
|
||||
}
|
||||
artifact.FileSize = chunks[len(chunks)-1].End + 1
|
||||
artifact.FileCompressedSize = chunks[len(chunks)-1].End + 1
|
||||
}
|
||||
|
||||
checksum := ""
|
||||
if req.Hash != nil {
|
||||
checksum = req.Hash.Value
|
||||
|
@ -468,7 +536,7 @@ func (r *artifactV4Routes) getSignedArtifactURL(ctx *ArtifactContext) {
|
|||
}
|
||||
}
|
||||
if respData.SignedUrl == "" {
|
||||
respData.SignedUrl = r.buildArtifactURL("DownloadArtifact", artifactName, ctx.ActionTask.ID)
|
||||
respData.SignedUrl = r.buildArtifactURL("DownloadArtifact", artifactName, ctx.ActionTask.ID, artifact.ID)
|
||||
}
|
||||
r.sendProtbufBody(ctx, &respData)
|
||||
}
|
||||
|
|
|
@ -65,6 +65,20 @@ func reqPackageAccess(accessMode perm.AccessMode) func(ctx *context.Context) {
|
|||
ctx.Error(http.StatusUnauthorized, "reqPackageAccess", "user should have specific permission or be a site admin")
|
||||
return
|
||||
}
|
||||
|
||||
// check if scope only applies to public resources
|
||||
publicOnly, err := scope.PublicOnly()
|
||||
if err != nil {
|
||||
ctx.Error(http.StatusForbidden, "tokenRequiresScope", "parsing public resource scope failed: "+err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
if publicOnly {
|
||||
if ctx.Package != nil && ctx.Package.Owner.Visibility.IsPrivate() {
|
||||
ctx.Error(http.StatusForbidden, "reqToken", "token scope is limited to public packages")
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -175,18 +189,20 @@ func CommonRoutes() *web.Route {
|
|||
arch.PushPackage(ctx)
|
||||
return
|
||||
} else if isDelete {
|
||||
if groupLen < 2 {
|
||||
if groupLen < 3 {
|
||||
ctx.Status(http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
if groupLen == 2 {
|
||||
if groupLen == 3 {
|
||||
ctx.SetParams("group", "")
|
||||
ctx.SetParams("package", pathGroups[0])
|
||||
ctx.SetParams("version", pathGroups[1])
|
||||
ctx.SetParams("arch", pathGroups[2])
|
||||
} else {
|
||||
ctx.SetParams("group", strings.Join(pathGroups[:groupLen-2], "/"))
|
||||
ctx.SetParams("package", pathGroups[groupLen-2])
|
||||
ctx.SetParams("version", pathGroups[groupLen-1])
|
||||
ctx.SetParams("group", strings.Join(pathGroups[:groupLen-3], "/"))
|
||||
ctx.SetParams("package", pathGroups[groupLen-3])
|
||||
ctx.SetParams("version", pathGroups[groupLen-2])
|
||||
ctx.SetParams("arch", pathGroups[groupLen-1])
|
||||
}
|
||||
reqPackageAccess(perm.AccessModeWrite)(ctx)
|
||||
if ctx.Written() {
|
||||
|
|
|
@ -9,12 +9,14 @@ import (
|
|||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
"path/filepath"
|
||||
"regexp"
|
||||
"strings"
|
||||
|
||||
packages_model "code.gitea.io/gitea/models/packages"
|
||||
packages_module "code.gitea.io/gitea/modules/packages"
|
||||
arch_module "code.gitea.io/gitea/modules/packages/arch"
|
||||
"code.gitea.io/gitea/modules/sync"
|
||||
"code.gitea.io/gitea/modules/util"
|
||||
"code.gitea.io/gitea/routers/api/packages/helper"
|
||||
"code.gitea.io/gitea/services/context"
|
||||
|
@ -25,6 +27,8 @@ import (
|
|||
var (
|
||||
archPkgOrSig = regexp.MustCompile(`^.*\.pkg\.tar\.\w+(\.sig)*$`)
|
||||
archDBOrSig = regexp.MustCompile(`^.*.db(\.tar\.gz)*(\.sig)*$`)
|
||||
|
||||
locker = sync.NewExclusivePool()
|
||||
)
|
||||
|
||||
func apiError(ctx *context.Context, status int, obj any) {
|
||||
|
@ -33,6 +37,14 @@ func apiError(ctx *context.Context, status int, obj any) {
|
|||
})
|
||||
}
|
||||
|
||||
func refreshLocker(ctx *context.Context, group string) func() {
|
||||
key := fmt.Sprintf("pkg_%d_arch_pkg_%s", ctx.Package.Owner.ID, group)
|
||||
locker.CheckIn(key)
|
||||
return func() {
|
||||
locker.CheckOut(key)
|
||||
}
|
||||
}
|
||||
|
||||
func GetRepositoryKey(ctx *context.Context) {
|
||||
_, pub, err := arch_service.GetOrCreateKeyPair(ctx, ctx.Package.Owner.ID)
|
||||
if err != nil {
|
||||
|
@ -48,7 +60,8 @@ func GetRepositoryKey(ctx *context.Context) {
|
|||
|
||||
func PushPackage(ctx *context.Context) {
|
||||
group := ctx.Params("group")
|
||||
|
||||
releaser := refreshLocker(ctx, group)
|
||||
defer releaser()
|
||||
upload, needToClose, err := ctx.UploadStream()
|
||||
if err != nil {
|
||||
apiError(ctx, http.StatusInternalServerError, err)
|
||||
|
@ -154,6 +167,7 @@ func PushPackage(ctx *context.Context) {
|
|||
})
|
||||
if err != nil {
|
||||
apiError(ctx, http.StatusInternalServerError, err)
|
||||
return
|
||||
}
|
||||
if err = arch_service.BuildPacmanDB(ctx, ctx.Package.Owner.ID, group, p.FileMetadata.Arch); err != nil {
|
||||
apiError(ctx, http.StatusInternalServerError, err)
|
||||
|
@ -169,7 +183,7 @@ func GetPackageOrDB(ctx *context.Context) {
|
|||
arch = ctx.Params("arch")
|
||||
)
|
||||
if archPkgOrSig.MatchString(file) {
|
||||
pkg, err := arch_service.GetPackageFile(ctx, group, file, ctx.Package.Owner.ID)
|
||||
pkg, u, pf, err := arch_service.GetPackageFile(ctx, group, file, ctx.Package.Owner.ID)
|
||||
if err != nil {
|
||||
if errors.Is(err, util.ErrNotExist) {
|
||||
apiError(ctx, http.StatusNotFound, err)
|
||||
|
@ -178,15 +192,12 @@ func GetPackageOrDB(ctx *context.Context) {
|
|||
}
|
||||
return
|
||||
}
|
||||
|
||||
ctx.ServeContent(pkg, &context.ServeHeaderOptions{
|
||||
Filename: file,
|
||||
})
|
||||
helper.ServePackageFile(ctx, pkg, u, pf)
|
||||
return
|
||||
}
|
||||
|
||||
if archDBOrSig.MatchString(file) {
|
||||
pkg, err := arch_service.GetPackageDBFile(ctx, group, arch, ctx.Package.Owner.ID,
|
||||
pkg, u, pf, err := arch_service.GetPackageDBFile(ctx, group, arch, ctx.Package.Owner.ID,
|
||||
strings.HasSuffix(file, ".sig"))
|
||||
if err != nil {
|
||||
if errors.Is(err, util.ErrNotExist) {
|
||||
|
@ -196,9 +207,7 @@ func GetPackageOrDB(ctx *context.Context) {
|
|||
}
|
||||
return
|
||||
}
|
||||
ctx.ServeContent(pkg, &context.ServeHeaderOptions{
|
||||
Filename: file,
|
||||
})
|
||||
helper.ServePackageFile(ctx, pkg, u, pf)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -207,10 +216,13 @@ func GetPackageOrDB(ctx *context.Context) {
|
|||
|
||||
func RemovePackage(ctx *context.Context) {
|
||||
var (
|
||||
group = ctx.Params("group")
|
||||
pkg = ctx.Params("package")
|
||||
ver = ctx.Params("version")
|
||||
group = ctx.Params("group")
|
||||
pkg = ctx.Params("package")
|
||||
ver = ctx.Params("version")
|
||||
pkgArch = ctx.Params("arch")
|
||||
)
|
||||
releaser := refreshLocker(ctx, group)
|
||||
defer releaser()
|
||||
pv, err := packages_model.GetVersionByNameAndVersion(
|
||||
ctx, ctx.Package.Owner.ID, packages_model.TypeArch, pkg, ver,
|
||||
)
|
||||
|
@ -229,7 +241,13 @@ func RemovePackage(ctx *context.Context) {
|
|||
}
|
||||
deleted := false
|
||||
for _, file := range files {
|
||||
if file.CompositeKey == group {
|
||||
extName := fmt.Sprintf("-%s.pkg.tar%s", pkgArch, filepath.Ext(file.LowerName))
|
||||
if strings.HasSuffix(file.LowerName, ".sig") {
|
||||
extName = fmt.Sprintf("-%s.pkg.tar%s.sig", pkgArch,
|
||||
filepath.Ext(strings.TrimSuffix(file.LowerName, filepath.Ext(file.LowerName))))
|
||||
}
|
||||
if file.CompositeKey == group &&
|
||||
strings.HasSuffix(file.LowerName, extName) {
|
||||
deleted = true
|
||||
err := packages_service.RemovePackageFileAndVersionIfUnreferenced(ctx, ctx.ContextUser, file)
|
||||
if err != nil {
|
||||
|
@ -242,6 +260,7 @@ func RemovePackage(ctx *context.Context) {
|
|||
err = arch_service.BuildCustomRepositoryFiles(ctx, ctx.Package.Owner.ID, group)
|
||||
if err != nil {
|
||||
apiError(ctx, http.StatusInternalServerError, err)
|
||||
return
|
||||
}
|
||||
ctx.Status(http.StatusNoContent)
|
||||
} else {
|
||||
|
|
|
@ -117,7 +117,9 @@ func serveMavenMetadata(ctx *context.Context, params parameters) {
|
|||
xmlMetadataWithHeader := append([]byte(xml.Header), xmlMetadata...)
|
||||
|
||||
latest := pds[len(pds)-1]
|
||||
ctx.Resp.Header().Set("Last-Modified", latest.Version.CreatedUnix.Format(http.TimeFormat))
|
||||
// http.TimeFormat required a UTC time, refer to https://pkg.go.dev/net/http#TimeFormat
|
||||
lastModifed := latest.Version.CreatedUnix.AsTime().UTC().Format(http.TimeFormat)
|
||||
ctx.Resp.Header().Set("Last-Modified", lastModifed)
|
||||
|
||||
ext := strings.ToLower(filepath.Ext(params.Filename))
|
||||
if isChecksumExtension(ext) {
|
||||
|
|
|
@ -274,6 +274,62 @@ func reqPackageAccess(accessMode perm.AccessMode) func(ctx *context.APIContext)
|
|||
}
|
||||
}
|
||||
|
||||
func checkTokenPublicOnly() func(ctx *context.APIContext) {
|
||||
return func(ctx *context.APIContext) {
|
||||
if !ctx.PublicOnly {
|
||||
return
|
||||
}
|
||||
|
||||
requiredScopeCategories, ok := ctx.Data["requiredScopeCategories"].([]auth_model.AccessTokenScopeCategory)
|
||||
if !ok || len(requiredScopeCategories) == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
// public Only permission check
|
||||
switch {
|
||||
case auth_model.ContainsCategory(requiredScopeCategories, auth_model.AccessTokenScopeCategoryRepository):
|
||||
if ctx.Repo.Repository != nil && ctx.Repo.Repository.IsPrivate {
|
||||
ctx.Error(http.StatusForbidden, "reqToken", "token scope is limited to public repos")
|
||||
return
|
||||
}
|
||||
case auth_model.ContainsCategory(requiredScopeCategories, auth_model.AccessTokenScopeCategoryIssue):
|
||||
if ctx.Repo.Repository != nil && ctx.Repo.Repository.IsPrivate {
|
||||
ctx.Error(http.StatusForbidden, "reqToken", "token scope is limited to public issues")
|
||||
return
|
||||
}
|
||||
case auth_model.ContainsCategory(requiredScopeCategories, auth_model.AccessTokenScopeCategoryOrganization):
|
||||
if ctx.Org.Organization != nil && ctx.Org.Organization.Visibility != api.VisibleTypePublic {
|
||||
ctx.Error(http.StatusForbidden, "reqToken", "token scope is limited to public orgs")
|
||||
return
|
||||
}
|
||||
if ctx.ContextUser != nil && ctx.ContextUser.IsOrganization() && ctx.ContextUser.Visibility != api.VisibleTypePublic {
|
||||
ctx.Error(http.StatusForbidden, "reqToken", "token scope is limited to public orgs")
|
||||
return
|
||||
}
|
||||
case auth_model.ContainsCategory(requiredScopeCategories, auth_model.AccessTokenScopeCategoryUser):
|
||||
if ctx.ContextUser != nil && ctx.ContextUser.IsUser() && ctx.ContextUser.Visibility != api.VisibleTypePublic {
|
||||
ctx.Error(http.StatusForbidden, "reqToken", "token scope is limited to public users")
|
||||
return
|
||||
}
|
||||
case auth_model.ContainsCategory(requiredScopeCategories, auth_model.AccessTokenScopeCategoryActivityPub):
|
||||
if ctx.ContextUser != nil && ctx.ContextUser.IsUser() && ctx.ContextUser.Visibility != api.VisibleTypePublic {
|
||||
ctx.Error(http.StatusForbidden, "reqToken", "token scope is limited to public activitypub")
|
||||
return
|
||||
}
|
||||
case auth_model.ContainsCategory(requiredScopeCategories, auth_model.AccessTokenScopeCategoryNotification):
|
||||
if ctx.Repo.Repository != nil && ctx.Repo.Repository.IsPrivate {
|
||||
ctx.Error(http.StatusForbidden, "reqToken", "token scope is limited to public notifications")
|
||||
return
|
||||
}
|
||||
case auth_model.ContainsCategory(requiredScopeCategories, auth_model.AccessTokenScopeCategoryPackage):
|
||||
if ctx.Package != nil && ctx.Package.Owner.Visibility.IsPrivate() {
|
||||
ctx.Error(http.StatusForbidden, "reqToken", "token scope is limited to public packages")
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// if a token is being used for auth, we check that it contains the required scope
|
||||
// if a token is not being used, reqToken will enforce other sign in methods
|
||||
func tokenRequiresScopes(requiredScopeCategories ...auth_model.AccessTokenScopeCategory) func(ctx *context.APIContext) {
|
||||
|
@ -289,9 +345,6 @@ func tokenRequiresScopes(requiredScopeCategories ...auth_model.AccessTokenScopeC
|
|||
return
|
||||
}
|
||||
|
||||
ctx.Data["ApiTokenScopePublicRepoOnly"] = false
|
||||
ctx.Data["ApiTokenScopePublicOrgOnly"] = false
|
||||
|
||||
// use the http method to determine the access level
|
||||
requiredScopeLevel := auth_model.Read
|
||||
if ctx.Req.Method == "POST" || ctx.Req.Method == "PUT" || ctx.Req.Method == "PATCH" || ctx.Req.Method == "DELETE" {
|
||||
|
@ -300,6 +353,18 @@ func tokenRequiresScopes(requiredScopeCategories ...auth_model.AccessTokenScopeC
|
|||
|
||||
// get the required scope for the given access level and category
|
||||
requiredScopes := auth_model.GetRequiredScopes(requiredScopeLevel, requiredScopeCategories...)
|
||||
allow, err := scope.HasScope(requiredScopes...)
|
||||
if err != nil {
|
||||
ctx.Error(http.StatusForbidden, "tokenRequiresScope", "checking scope failed: "+err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
if !allow {
|
||||
ctx.Error(http.StatusForbidden, "tokenRequiresScope", fmt.Sprintf("token does not have at least one of required scope(s): %v", requiredScopes))
|
||||
return
|
||||
}
|
||||
|
||||
ctx.Data["requiredScopeCategories"] = requiredScopeCategories
|
||||
|
||||
// check if scope only applies to public resources
|
||||
publicOnly, err := scope.PublicOnly()
|
||||
|
@ -308,21 +373,8 @@ func tokenRequiresScopes(requiredScopeCategories ...auth_model.AccessTokenScopeC
|
|||
return
|
||||
}
|
||||
|
||||
// this context is used by the middleware in the specific route
|
||||
ctx.Data["ApiTokenScopePublicRepoOnly"] = publicOnly && auth_model.ContainsCategory(requiredScopeCategories, auth_model.AccessTokenScopeCategoryRepository)
|
||||
ctx.Data["ApiTokenScopePublicOrgOnly"] = publicOnly && auth_model.ContainsCategory(requiredScopeCategories, auth_model.AccessTokenScopeCategoryOrganization)
|
||||
|
||||
allow, err := scope.HasScope(requiredScopes...)
|
||||
if err != nil {
|
||||
ctx.Error(http.StatusForbidden, "tokenRequiresScope", "checking scope failed: "+err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
if allow {
|
||||
return
|
||||
}
|
||||
|
||||
ctx.Error(http.StatusForbidden, "tokenRequiresScope", fmt.Sprintf("token does not have at least one of required scope(s): %v", requiredScopes))
|
||||
// assign to true so that those searching should only filter public repositories/users/organizations
|
||||
ctx.PublicOnly = publicOnly
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -334,25 +386,6 @@ func reqToken() func(ctx *context.APIContext) {
|
|||
return
|
||||
}
|
||||
|
||||
if true == ctx.Data["IsApiToken"] {
|
||||
publicRepo, pubRepoExists := ctx.Data["ApiTokenScopePublicRepoOnly"]
|
||||
publicOrg, pubOrgExists := ctx.Data["ApiTokenScopePublicOrgOnly"]
|
||||
|
||||
if pubRepoExists && publicRepo.(bool) &&
|
||||
ctx.Repo.Repository != nil && ctx.Repo.Repository.IsPrivate {
|
||||
ctx.Error(http.StatusForbidden, "reqToken", "token scope is limited to public repos")
|
||||
return
|
||||
}
|
||||
|
||||
if pubOrgExists && publicOrg.(bool) &&
|
||||
ctx.Org.Organization != nil && ctx.Org.Organization.Visibility != api.VisibleTypePublic {
|
||||
ctx.Error(http.StatusForbidden, "reqToken", "token scope is limited to public orgs")
|
||||
return
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
if ctx.IsSigned {
|
||||
return
|
||||
}
|
||||
|
@ -800,11 +833,11 @@ func Routes() *web.Route {
|
|||
m.Group("/user/{username}", func() {
|
||||
m.Get("", activitypub.Person)
|
||||
m.Post("/inbox", activitypub.ReqHTTPSignature(), activitypub.PersonInbox)
|
||||
}, context.UserAssignmentAPI())
|
||||
}, context.UserAssignmentAPI(), checkTokenPublicOnly())
|
||||
m.Group("/user-id/{user-id}", func() {
|
||||
m.Get("", activitypub.Person)
|
||||
m.Post("/inbox", activitypub.ReqHTTPSignature(), activitypub.PersonInbox)
|
||||
}, context.UserIDAssignmentAPI())
|
||||
}, context.UserIDAssignmentAPI(), checkTokenPublicOnly())
|
||||
m.Group("/actor", func() {
|
||||
m.Get("", activitypub.Actor)
|
||||
m.Post("/inbox", activitypub.ActorInbox)
|
||||
|
@ -871,7 +904,7 @@ func Routes() *web.Route {
|
|||
}, reqSelfOrAdmin(), reqBasicOrRevProxyAuth())
|
||||
|
||||
m.Get("/activities/feeds", user.ListUserActivityFeeds)
|
||||
}, context.UserAssignmentAPI(), individualPermsChecker)
|
||||
}, context.UserAssignmentAPI(), checkTokenPublicOnly(), individualPermsChecker)
|
||||
}, tokenRequiresScopes(auth_model.AccessTokenScopeCategoryUser))
|
||||
|
||||
// Users (requires user scope)
|
||||
|
@ -891,7 +924,7 @@ func Routes() *web.Route {
|
|||
}
|
||||
|
||||
m.Get("/subscriptions", user.GetWatchedRepos)
|
||||
}, context.UserAssignmentAPI())
|
||||
}, context.UserAssignmentAPI(), checkTokenPublicOnly())
|
||||
}, tokenRequiresScopes(auth_model.AccessTokenScopeCategoryUser), reqToken())
|
||||
|
||||
// Users (requires user scope)
|
||||
|
@ -988,7 +1021,7 @@ func Routes() *web.Route {
|
|||
m.Get("", user.IsStarring)
|
||||
m.Put("", user.Star)
|
||||
m.Delete("", user.Unstar)
|
||||
}, repoAssignment())
|
||||
}, repoAssignment(), checkTokenPublicOnly())
|
||||
}, tokenRequiresScopes(auth_model.AccessTokenScopeCategoryRepository))
|
||||
}
|
||||
m.Get("/times", repo.ListMyTrackedTimes)
|
||||
|
@ -1019,12 +1052,14 @@ func Routes() *web.Route {
|
|||
|
||||
// Repositories (requires repo scope, org scope)
|
||||
m.Post("/org/{org}/repos",
|
||||
// FIXME: we need org in context
|
||||
tokenRequiresScopes(auth_model.AccessTokenScopeCategoryOrganization, auth_model.AccessTokenScopeCategoryRepository),
|
||||
reqToken(),
|
||||
bind(api.CreateRepoOption{}),
|
||||
repo.CreateOrgRepoDeprecated)
|
||||
|
||||
// requires repo scope
|
||||
// FIXME: Don't expose repository id outside of the system
|
||||
m.Combo("/repositories/{id}", reqToken(), tokenRequiresScopes(auth_model.AccessTokenScopeCategoryRepository)).Get(repo.GetByID)
|
||||
|
||||
// Repos (requires repo scope)
|
||||
|
@ -1305,7 +1340,7 @@ func Routes() *web.Route {
|
|||
m.Post("", bind(api.UpdateRepoAvatarOption{}), repo.UpdateAvatar)
|
||||
m.Delete("", repo.DeleteAvatar)
|
||||
}, reqAdmin(), reqToken())
|
||||
}, repoAssignment())
|
||||
}, repoAssignment(), checkTokenPublicOnly())
|
||||
}, tokenRequiresScopes(auth_model.AccessTokenScopeCategoryRepository))
|
||||
|
||||
// Notifications (requires notifications scope)
|
||||
|
@ -1314,7 +1349,7 @@ func Routes() *web.Route {
|
|||
m.Combo("/notifications", reqToken()).
|
||||
Get(notify.ListRepoNotifications).
|
||||
Put(notify.ReadRepoNotifications)
|
||||
}, repoAssignment())
|
||||
}, repoAssignment(), checkTokenPublicOnly())
|
||||
}, tokenRequiresScopes(auth_model.AccessTokenScopeCategoryNotification))
|
||||
|
||||
// Issue (requires issue scope)
|
||||
|
@ -1428,7 +1463,7 @@ func Routes() *web.Route {
|
|||
Patch(reqToken(), reqRepoWriter(unit.TypeIssues, unit.TypePullRequests), bind(api.EditMilestoneOption{}), repo.EditMilestone).
|
||||
Delete(reqToken(), reqRepoWriter(unit.TypeIssues, unit.TypePullRequests), repo.DeleteMilestone)
|
||||
})
|
||||
}, repoAssignment())
|
||||
}, repoAssignment(), checkTokenPublicOnly())
|
||||
}, tokenRequiresScopes(auth_model.AccessTokenScopeCategoryIssue))
|
||||
|
||||
// NOTE: these are Gitea package management API - see packages.CommonRoutes and packages.DockerContainerRoutes for endpoints that implement package manager APIs
|
||||
|
@ -1439,14 +1474,14 @@ func Routes() *web.Route {
|
|||
m.Get("/files", reqToken(), packages.ListPackageFiles)
|
||||
})
|
||||
m.Get("/", reqToken(), packages.ListPackages)
|
||||
}, tokenRequiresScopes(auth_model.AccessTokenScopeCategoryPackage), context.UserAssignmentAPI(), context.PackageAssignmentAPI(), reqPackageAccess(perm.AccessModeRead))
|
||||
}, tokenRequiresScopes(auth_model.AccessTokenScopeCategoryPackage), context.UserAssignmentAPI(), context.PackageAssignmentAPI(), reqPackageAccess(perm.AccessModeRead), checkTokenPublicOnly())
|
||||
|
||||
// Organizations
|
||||
m.Get("/user/orgs", reqToken(), tokenRequiresScopes(auth_model.AccessTokenScopeCategoryUser, auth_model.AccessTokenScopeCategoryOrganization), org.ListMyOrgs)
|
||||
m.Group("/users/{username}/orgs", func() {
|
||||
m.Get("", reqToken(), org.ListUserOrgs)
|
||||
m.Get("/{org}/permissions", reqToken(), org.GetUserOrgsPermissions)
|
||||
}, tokenRequiresScopes(auth_model.AccessTokenScopeCategoryUser, auth_model.AccessTokenScopeCategoryOrganization), context.UserAssignmentAPI())
|
||||
}, tokenRequiresScopes(auth_model.AccessTokenScopeCategoryUser, auth_model.AccessTokenScopeCategoryOrganization), context.UserAssignmentAPI(), checkTokenPublicOnly())
|
||||
m.Post("/orgs", tokenRequiresScopes(auth_model.AccessTokenScopeCategoryOrganization), reqToken(), bind(api.CreateOrgOption{}), org.Create)
|
||||
m.Get("/orgs", org.GetAll, tokenRequiresScopes(auth_model.AccessTokenScopeCategoryOrganization))
|
||||
m.Group("/orgs/{org}", func() {
|
||||
|
@ -1513,7 +1548,7 @@ func Routes() *web.Route {
|
|||
m.Put("/unblock/{username}", org.UnblockUser)
|
||||
}, context.UserAssignmentAPI())
|
||||
}, reqToken(), reqOrgOwnership())
|
||||
}, tokenRequiresScopes(auth_model.AccessTokenScopeCategoryOrganization), orgAssignment(true))
|
||||
}, tokenRequiresScopes(auth_model.AccessTokenScopeCategoryOrganization), orgAssignment(true), checkTokenPublicOnly())
|
||||
m.Group("/teams/{teamid}", func() {
|
||||
m.Combo("").Get(reqToken(), org.GetTeam).
|
||||
Patch(reqToken(), reqOrgOwnership(), bind(api.EditTeamOption{}), org.EditTeam).
|
||||
|
@ -1533,7 +1568,7 @@ func Routes() *web.Route {
|
|||
Get(reqToken(), org.GetTeamRepo)
|
||||
})
|
||||
m.Get("/activities/feeds", org.ListTeamActivityFeeds)
|
||||
}, tokenRequiresScopes(auth_model.AccessTokenScopeCategoryOrganization), orgAssignment(false, true), reqToken(), reqTeamMembership())
|
||||
}, tokenRequiresScopes(auth_model.AccessTokenScopeCategoryOrganization), orgAssignment(false, true), reqToken(), reqTeamMembership(), checkTokenPublicOnly())
|
||||
|
||||
m.Group("/admin", func() {
|
||||
m.Group("/cron", func() {
|
||||
|
|
|
@ -192,7 +192,7 @@ func GetAll(ctx *context.APIContext) {
|
|||
// "$ref": "#/responses/OrganizationList"
|
||||
|
||||
vMode := []api.VisibleType{api.VisibleTypePublic}
|
||||
if ctx.IsSigned {
|
||||
if ctx.IsSigned && !ctx.PublicOnly {
|
||||
vMode = append(vMode, api.VisibleTypeLimited)
|
||||
if ctx.Doer.IsAdmin {
|
||||
vMode = append(vMode, api.VisibleTypePrivate)
|
||||
|
|
|
@ -149,7 +149,7 @@ func SearchIssues(ctx *context.APIContext) {
|
|||
Actor: ctx.Doer,
|
||||
}
|
||||
if ctx.IsSigned {
|
||||
opts.Private = true
|
||||
opts.Private = !ctx.PublicOnly
|
||||
opts.AllLimited = true
|
||||
}
|
||||
if ctx.FormString("owner") != "" {
|
||||
|
@ -839,10 +839,16 @@ func EditIssue(ctx *context.APIContext) {
|
|||
if (form.Deadline != nil || form.RemoveDeadline != nil) && canWrite {
|
||||
var deadlineUnix timeutil.TimeStamp
|
||||
|
||||
if (form.RemoveDeadline == nil || !*form.RemoveDeadline) && !form.Deadline.IsZero() {
|
||||
deadline := time.Date(form.Deadline.Year(), form.Deadline.Month(), form.Deadline.Day(),
|
||||
23, 59, 59, 0, form.Deadline.Location())
|
||||
deadlineUnix = timeutil.TimeStamp(deadline.Unix())
|
||||
if form.RemoveDeadline == nil || !*form.RemoveDeadline {
|
||||
if form.Deadline == nil {
|
||||
ctx.Error(http.StatusBadRequest, "", "The due_date cannot be empty")
|
||||
return
|
||||
}
|
||||
if !form.Deadline.IsZero() {
|
||||
deadline := time.Date(form.Deadline.Year(), form.Deadline.Month(), form.Deadline.Day(),
|
||||
23, 59, 59, 0, form.Deadline.Location())
|
||||
deadlineUnix = timeutil.TimeStamp(deadline.Unix())
|
||||
}
|
||||
}
|
||||
|
||||
if err := issues_model.UpdateIssueDeadline(ctx, issue, deadlineUnix, ctx.Doer); err != nil {
|
||||
|
|
|
@ -1112,9 +1112,20 @@ func parseCompareInfo(ctx *context.APIContext, form api.CreatePullRequestOption)
|
|||
// Check if current user has fork of repository or in the same repository.
|
||||
headRepo := repo_model.GetForkedRepo(ctx, headUser.ID, baseRepo.ID)
|
||||
if headRepo == nil && !isSameRepo {
|
||||
log.Trace("parseCompareInfo[%d]: does not have fork or in same repository", baseRepo.ID)
|
||||
ctx.NotFound("GetForkedRepo")
|
||||
return nil, nil, nil, "", ""
|
||||
err := baseRepo.GetBaseRepo(ctx)
|
||||
if err != nil {
|
||||
ctx.Error(http.StatusInternalServerError, "GetBaseRepo", err)
|
||||
return nil, nil, nil, "", ""
|
||||
}
|
||||
|
||||
// Check if baseRepo's base repository is the same as headUser's repository.
|
||||
if baseRepo.BaseRepo == nil || baseRepo.BaseRepo.OwnerID != headUser.ID {
|
||||
log.Trace("parseCompareInfo[%d]: does not have fork or in same repository", baseRepo.ID)
|
||||
ctx.NotFound("GetBaseRepo")
|
||||
return nil, nil, nil, "", ""
|
||||
}
|
||||
// Assign headRepo so it can be used below.
|
||||
headRepo = baseRepo.BaseRepo
|
||||
}
|
||||
|
||||
var headGitRepo *git.Repository
|
||||
|
|
|
@ -82,7 +82,6 @@ func ListPullReviews(ctx *context.APIContext) {
|
|||
|
||||
opts := issues_model.FindReviewOptions{
|
||||
ListOptions: utils.GetListOptions(ctx),
|
||||
Type: issues_model.ReviewTypeUnknown,
|
||||
IssueID: pr.IssueID,
|
||||
}
|
||||
|
||||
|
|
|
@ -130,6 +130,11 @@ func Search(ctx *context.APIContext) {
|
|||
// "422":
|
||||
// "$ref": "#/responses/validationError"
|
||||
|
||||
private := ctx.IsSigned && (ctx.FormString("private") == "" || ctx.FormBool("private"))
|
||||
if ctx.PublicOnly {
|
||||
private = false
|
||||
}
|
||||
|
||||
opts := &repo_model.SearchRepoOptions{
|
||||
ListOptions: utils.GetListOptions(ctx),
|
||||
Actor: ctx.Doer,
|
||||
|
@ -139,7 +144,7 @@ func Search(ctx *context.APIContext) {
|
|||
TeamID: ctx.FormInt64("team_id"),
|
||||
TopicOnly: ctx.FormBool("topic"),
|
||||
Collaborate: optional.None[bool](),
|
||||
Private: ctx.IsSigned && (ctx.FormString("private") == "" || ctx.FormBool("private")),
|
||||
Private: private,
|
||||
Template: optional.None[bool](),
|
||||
StarredByID: ctx.FormInt64("starredBy"),
|
||||
IncludeDescription: ctx.FormBool("includeDesc"),
|
||||
|
@ -1056,7 +1061,7 @@ func updateRepoArchivedState(ctx *context.APIContext, opts api.EditRepoOption) e
|
|||
ctx.Error(http.StatusInternalServerError, "ArchiveRepoState", err)
|
||||
return err
|
||||
}
|
||||
if err := actions_model.CleanRepoScheduleTasks(ctx, repo); err != nil {
|
||||
if err := actions_model.CleanRepoScheduleTasks(ctx, repo, true); err != nil {
|
||||
log.Error("CleanRepoScheduleTasks for archived repo %s/%s: %v", ctx.Repo.Owner.Name, repo.Name, err)
|
||||
}
|
||||
log.Trace("Repository was archived: %s/%s", ctx.Repo.Owner.Name, repo.Name)
|
||||
|
|
|
@ -118,6 +118,10 @@ func CreateAccessToken(ctx *context.APIContext) {
|
|||
ctx.Error(http.StatusBadRequest, "AccessTokenScope.Normalize", fmt.Errorf("invalid access token scope provided: %w", err))
|
||||
return
|
||||
}
|
||||
if scope == "" {
|
||||
ctx.Error(http.StatusBadRequest, "AccessTokenScope", "access token must have a scope")
|
||||
return
|
||||
}
|
||||
t.Scope = scope
|
||||
|
||||
if err := auth_model.NewAccessToken(ctx, t); err != nil {
|
||||
|
@ -129,6 +133,7 @@ func CreateAccessToken(ctx *context.APIContext) {
|
|||
Token: t.Token,
|
||||
ID: t.ID,
|
||||
TokenLastEight: t.TokenLastEight,
|
||||
Scopes: t.Scope.StringSlice(),
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
@ -10,6 +10,7 @@ import (
|
|||
|
||||
activities_model "code.gitea.io/gitea/models/activities"
|
||||
user_model "code.gitea.io/gitea/models/user"
|
||||
"code.gitea.io/gitea/modules/structs"
|
||||
"code.gitea.io/gitea/routers/api/v1/utils"
|
||||
"code.gitea.io/gitea/services/context"
|
||||
"code.gitea.io/gitea/services/convert"
|
||||
|
@ -68,11 +69,16 @@ func Search(ctx *context.APIContext) {
|
|||
maxResults = 1
|
||||
users = []*user_model.User{user_model.NewActionsUser()}
|
||||
default:
|
||||
var visible []structs.VisibleType
|
||||
if ctx.PublicOnly {
|
||||
visible = []structs.VisibleType{structs.VisibleTypePublic}
|
||||
}
|
||||
users, maxResults, err = user_model.SearchUsers(ctx, &user_model.SearchUserOptions{
|
||||
Actor: ctx.Doer,
|
||||
Keyword: ctx.FormTrim("q"),
|
||||
UID: uid,
|
||||
Type: user_model.UserTypeIndividual,
|
||||
Visible: visible,
|
||||
ListOptions: listOptions,
|
||||
})
|
||||
if err != nil {
|
||||
|
|
|
@ -507,21 +507,22 @@ func EditTeamPost(ctx *context.Context) {
|
|||
t.IncludesAllRepositories = includesAllRepositories
|
||||
}
|
||||
t.CanCreateOrgRepo = form.CanCreateOrgRepo
|
||||
|
||||
units := make([]*org_model.TeamUnit, 0, len(unitPerms))
|
||||
for tp, perm := range unitPerms {
|
||||
units = append(units, &org_model.TeamUnit{
|
||||
OrgID: t.OrgID,
|
||||
TeamID: t.ID,
|
||||
Type: tp,
|
||||
AccessMode: perm,
|
||||
})
|
||||
}
|
||||
t.Units = units
|
||||
} else {
|
||||
t.CanCreateOrgRepo = true
|
||||
}
|
||||
|
||||
t.Description = form.Description
|
||||
units := make([]*org_model.TeamUnit, 0, len(unitPerms))
|
||||
for tp, perm := range unitPerms {
|
||||
units = append(units, &org_model.TeamUnit{
|
||||
OrgID: t.OrgID,
|
||||
TeamID: t.ID,
|
||||
Type: tp,
|
||||
AccessMode: perm,
|
||||
})
|
||||
}
|
||||
t.Units = units
|
||||
|
||||
if ctx.HasError() {
|
||||
ctx.HTML(http.StatusOK, tplTeamNew)
|
||||
|
|
|
@ -395,7 +395,8 @@ func (h *serviceHandler) sendFile(ctx *context.Context, contentType, file string
|
|||
|
||||
ctx.Resp.Header().Set("Content-Type", contentType)
|
||||
ctx.Resp.Header().Set("Content-Length", fmt.Sprintf("%d", fi.Size()))
|
||||
ctx.Resp.Header().Set("Last-Modified", fi.ModTime().Format(http.TimeFormat))
|
||||
// http.TimeFormat required a UTC time, refer to https://pkg.go.dev/net/http#TimeFormat
|
||||
ctx.Resp.Header().Set("Last-Modified", fi.ModTime().UTC().Format(http.TimeFormat))
|
||||
http.ServeFile(ctx.Resp, ctx.Req, reqFile)
|
||||
}
|
||||
|
||||
|
|
|
@ -476,6 +476,7 @@ func issues(ctx *context.Context, milestoneID, projectID int64, isPullOption opt
|
|||
ctx.Data["PosterID"] = posterID
|
||||
ctx.Data["IsFuzzy"] = isFuzzy
|
||||
ctx.Data["Keyword"] = keyword
|
||||
ctx.Data["IsShowClosed"] = isShowClosed
|
||||
switch {
|
||||
case isShowClosed.Value():
|
||||
ctx.Data["State"] = "closed"
|
||||
|
|
|
@ -1031,7 +1031,7 @@ func SettingsPost(ctx *context.Context) {
|
|||
return
|
||||
}
|
||||
|
||||
if err := actions_model.CleanRepoScheduleTasks(ctx, repo); err != nil {
|
||||
if err := actions_model.CleanRepoScheduleTasks(ctx, repo, true); err != nil {
|
||||
log.Error("CleanRepoScheduleTasks for archived repo %s/%s: %v", ctx.Repo.Owner.Name, repo.Name, err)
|
||||
}
|
||||
|
||||
|
|
|
@ -122,7 +122,7 @@ func webAuth(authMethod auth_service.Method) func(*context.Context) {
|
|||
ar, err := common.AuthShared(ctx.Base, ctx.Session, authMethod)
|
||||
if err != nil {
|
||||
log.Error("Failed to verify user: %v", err)
|
||||
ctx.Error(http.StatusUnauthorized, "Verify")
|
||||
ctx.Error(http.StatusUnauthorized, ctx.Locale.TrString("auth.unauthorized_credentials", "https://codeberg.org/forgejo/forgejo/issues/2809"))
|
||||
return
|
||||
}
|
||||
ctx.Doer = ar.Doer
|
||||
|
@ -132,6 +132,8 @@ func webAuth(authMethod auth_service.Method) func(*context.Context) {
|
|||
// ensure the session uid is deleted
|
||||
_ = ctx.Session.Delete("uid")
|
||||
}
|
||||
|
||||
ctx.Csrf.PrepareForSessionUser(ctx)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -130,7 +130,7 @@ func notify(ctx context.Context, input *notifyInput) error {
|
|||
return nil
|
||||
}
|
||||
if unit_model.TypeActions.UnitGlobalDisabled() {
|
||||
if err := actions_model.CleanRepoScheduleTasks(ctx, input.Repo); err != nil {
|
||||
if err := actions_model.CleanRepoScheduleTasks(ctx, input.Repo, true); err != nil {
|
||||
log.Error("CleanRepoScheduleTasks: %v", err)
|
||||
}
|
||||
return nil
|
||||
|
@ -496,7 +496,7 @@ func handleSchedules(
|
|||
log.Error("CountSchedules: %v", err)
|
||||
return err
|
||||
} else if count > 0 {
|
||||
if err := actions_model.CleanRepoScheduleTasks(ctx, input.Repo); err != nil {
|
||||
if err := actions_model.CleanRepoScheduleTasks(ctx, input.Repo, false); err != nil {
|
||||
log.Error("CleanRepoScheduleTasks: %v", err)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -45,6 +45,7 @@ type APIContext struct {
|
|||
Package *Package
|
||||
QuotaGroup *quota_model.Group
|
||||
QuotaRule *quota_model.Rule
|
||||
PublicOnly bool // Whether the request is for a public endpoint
|
||||
}
|
||||
|
||||
func init() {
|
||||
|
|
|
@ -127,10 +127,8 @@ func Contexter() func(next http.Handler) http.Handler {
|
|||
csrfOpts := CsrfOptions{
|
||||
Secret: hex.EncodeToString(setting.GetGeneralTokenSigningSecret()),
|
||||
Cookie: setting.CSRFCookieName,
|
||||
SetCookie: true,
|
||||
Secure: setting.SessionConfig.Secure,
|
||||
CookieHTTPOnly: setting.CSRFCookieHTTPOnly,
|
||||
Header: "X-Csrf-Token",
|
||||
CookieDomain: setting.SessionConfig.Domain,
|
||||
CookiePath: setting.SessionConfig.CookiePath,
|
||||
SameSite: setting.SessionConfig.SameSite,
|
||||
|
@ -156,7 +154,7 @@ func Contexter() func(next http.Handler) http.Handler {
|
|||
ctx.Base.AppendContextValue(WebContextKey, ctx)
|
||||
ctx.Base.AppendContextValueFunc(gitrepo.RepositoryContextKey, func() any { return ctx.Repo.GitRepo })
|
||||
|
||||
ctx.Csrf = PrepareCSRFProtector(csrfOpts, ctx)
|
||||
ctx.Csrf = NewCSRFProtector(csrfOpts)
|
||||
|
||||
// Get the last flash message from cookie
|
||||
lastFlashCookie := middleware.GetSiteCookie(ctx.Req, CookieNameFlash)
|
||||
|
@ -193,8 +191,6 @@ func Contexter() func(next http.Handler) http.Handler {
|
|||
ctx.Resp.Header().Set(`X-Frame-Options`, setting.CORSConfig.XFrameOptions)
|
||||
|
||||
ctx.Data["SystemConfig"] = setting.Config()
|
||||
ctx.Data["CsrfToken"] = ctx.Csrf.GetToken()
|
||||
ctx.Data["CsrfTokenHtml"] = template.HTML(`<input type="hidden" name="_csrf" value="` + ctx.Data["CsrfToken"].(string) + `">`)
|
||||
|
||||
// FIXME: do we really always need these setting? There should be someway to have to avoid having to always set these
|
||||
ctx.Data["DisableMigrations"] = setting.Repository.DisableMigrations
|
||||
|
|
|
@ -20,64 +20,43 @@
|
|||
package context
|
||||
|
||||
import (
|
||||
"encoding/base32"
|
||||
"fmt"
|
||||
"html/template"
|
||||
"net/http"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"code.gitea.io/gitea/modules/log"
|
||||
"code.gitea.io/gitea/modules/setting"
|
||||
"code.gitea.io/gitea/modules/util"
|
||||
"code.gitea.io/gitea/modules/web/middleware"
|
||||
)
|
||||
|
||||
const (
|
||||
CsrfHeaderName = "X-Csrf-Token"
|
||||
CsrfFormName = "_csrf"
|
||||
CsrfErrorString = "Invalid CSRF token."
|
||||
)
|
||||
|
||||
// CSRFProtector represents a CSRF protector and is used to get the current token and validate the token.
|
||||
type CSRFProtector interface {
|
||||
// GetHeaderName returns HTTP header to search for token.
|
||||
GetHeaderName() string
|
||||
// GetFormName returns form value to search for token.
|
||||
GetFormName() string
|
||||
// GetToken returns the token.
|
||||
GetToken() string
|
||||
// Validate validates the token in http context.
|
||||
// PrepareForSessionUser prepares the csrf protector for the current session user.
|
||||
PrepareForSessionUser(ctx *Context)
|
||||
// Validate validates the csrf token in http context.
|
||||
Validate(ctx *Context)
|
||||
// DeleteCookie deletes the cookie
|
||||
// DeleteCookie deletes the csrf cookie
|
||||
DeleteCookie(ctx *Context)
|
||||
}
|
||||
|
||||
type csrfProtector struct {
|
||||
opt CsrfOptions
|
||||
// Token generated to pass via header, cookie, or hidden form value.
|
||||
Token string
|
||||
// This value must be unique per user.
|
||||
ID string
|
||||
}
|
||||
|
||||
// GetHeaderName returns the name of the HTTP header for csrf token.
|
||||
func (c *csrfProtector) GetHeaderName() string {
|
||||
return c.opt.Header
|
||||
}
|
||||
|
||||
// GetFormName returns the name of the form value for csrf token.
|
||||
func (c *csrfProtector) GetFormName() string {
|
||||
return c.opt.Form
|
||||
}
|
||||
|
||||
// GetToken returns the current token. This is typically used
|
||||
// to populate a hidden form in an HTML template.
|
||||
func (c *csrfProtector) GetToken() string {
|
||||
return c.Token
|
||||
// id must be unique per user.
|
||||
id string
|
||||
// token is the valid one which wil be used by end user and passed via header, cookie, or hidden form value.
|
||||
token string
|
||||
}
|
||||
|
||||
// CsrfOptions maintains options to manage behavior of Generate.
|
||||
type CsrfOptions struct {
|
||||
// The global secret value used to generate Tokens.
|
||||
Secret string
|
||||
// HTTP header used to set and get token.
|
||||
Header string
|
||||
// Form value used to set and get token.
|
||||
Form string
|
||||
// Cookie value used to set and get token.
|
||||
Cookie string
|
||||
// Cookie domain.
|
||||
|
@ -87,103 +66,64 @@ type CsrfOptions struct {
|
|||
CookieHTTPOnly bool
|
||||
// SameSite set the cookie SameSite type
|
||||
SameSite http.SameSite
|
||||
// Key used for getting the unique ID per user.
|
||||
SessionKey string
|
||||
// oldSessionKey saves old value corresponding to SessionKey.
|
||||
oldSessionKey string
|
||||
// If true, send token via X-Csrf-Token header.
|
||||
SetHeader bool
|
||||
// If true, send token via _csrf cookie.
|
||||
SetCookie bool
|
||||
// Set the Secure flag to true on the cookie.
|
||||
Secure bool
|
||||
// Disallow Origin appear in request header.
|
||||
Origin bool
|
||||
// Cookie lifetime. Default is 0
|
||||
CookieLifeTime int
|
||||
// sessionKey is the key used for getting the unique ID per user.
|
||||
sessionKey string
|
||||
// oldSessionKey saves old value corresponding to sessionKey.
|
||||
oldSessionKey string
|
||||
}
|
||||
|
||||
func prepareDefaultCsrfOptions(opt CsrfOptions) CsrfOptions {
|
||||
if opt.Secret == "" {
|
||||
randBytes, err := util.CryptoRandomBytes(8)
|
||||
if err != nil {
|
||||
// this panic can be handled by the recover() in http handlers
|
||||
panic(fmt.Errorf("failed to generate random bytes: %w", err))
|
||||
}
|
||||
opt.Secret = base32.StdEncoding.EncodeToString(randBytes)
|
||||
}
|
||||
if opt.Header == "" {
|
||||
opt.Header = "X-Csrf-Token"
|
||||
}
|
||||
if opt.Form == "" {
|
||||
opt.Form = "_csrf"
|
||||
}
|
||||
if opt.Cookie == "" {
|
||||
opt.Cookie = "_csrf"
|
||||
}
|
||||
if opt.CookiePath == "" {
|
||||
opt.CookiePath = "/"
|
||||
}
|
||||
if opt.SessionKey == "" {
|
||||
opt.SessionKey = "uid"
|
||||
}
|
||||
if opt.CookieLifeTime == 0 {
|
||||
opt.CookieLifeTime = int(CsrfTokenTimeout.Seconds())
|
||||
}
|
||||
|
||||
opt.oldSessionKey = "_old_" + opt.SessionKey
|
||||
return opt
|
||||
}
|
||||
|
||||
func newCsrfCookie(c *csrfProtector, value string) *http.Cookie {
|
||||
func newCsrfCookie(opt *CsrfOptions, value string) *http.Cookie {
|
||||
return &http.Cookie{
|
||||
Name: c.opt.Cookie,
|
||||
Name: opt.Cookie,
|
||||
Value: value,
|
||||
Path: c.opt.CookiePath,
|
||||
Domain: c.opt.CookieDomain,
|
||||
MaxAge: c.opt.CookieLifeTime,
|
||||
Secure: c.opt.Secure,
|
||||
HttpOnly: c.opt.CookieHTTPOnly,
|
||||
SameSite: c.opt.SameSite,
|
||||
Path: opt.CookiePath,
|
||||
Domain: opt.CookieDomain,
|
||||
MaxAge: int(CsrfTokenTimeout.Seconds()),
|
||||
Secure: opt.Secure,
|
||||
HttpOnly: opt.CookieHTTPOnly,
|
||||
SameSite: opt.SameSite,
|
||||
}
|
||||
}
|
||||
|
||||
// PrepareCSRFProtector returns a CSRFProtector to be used for every request.
|
||||
// Additionally, depending on options set, generated tokens will be sent via Header and/or Cookie.
|
||||
func PrepareCSRFProtector(opt CsrfOptions, ctx *Context) CSRFProtector {
|
||||
opt = prepareDefaultCsrfOptions(opt)
|
||||
x := &csrfProtector{opt: opt}
|
||||
|
||||
if opt.Origin && len(ctx.Req.Header.Get("Origin")) > 0 {
|
||||
return x
|
||||
func NewCSRFProtector(opt CsrfOptions) CSRFProtector {
|
||||
if opt.Secret == "" {
|
||||
panic("CSRF secret is empty but it must be set") // it shouldn't happen because it is always set in code
|
||||
}
|
||||
opt.Cookie = util.IfZero(opt.Cookie, "_csrf")
|
||||
opt.CookiePath = util.IfZero(opt.CookiePath, "/")
|
||||
opt.sessionKey = "uid"
|
||||
opt.oldSessionKey = "_old_" + opt.sessionKey
|
||||
return &csrfProtector{opt: opt}
|
||||
}
|
||||
|
||||
x.ID = "0"
|
||||
uidAny := ctx.Session.Get(opt.SessionKey)
|
||||
if uidAny != nil {
|
||||
func (c *csrfProtector) PrepareForSessionUser(ctx *Context) {
|
||||
c.id = "0"
|
||||
if uidAny := ctx.Session.Get(c.opt.sessionKey); uidAny != nil {
|
||||
switch uidVal := uidAny.(type) {
|
||||
case string:
|
||||
x.ID = uidVal
|
||||
c.id = uidVal
|
||||
case int64:
|
||||
x.ID = strconv.FormatInt(uidVal, 10)
|
||||
c.id = strconv.FormatInt(uidVal, 10)
|
||||
default:
|
||||
log.Error("invalid uid type in session: %T", uidAny)
|
||||
}
|
||||
}
|
||||
|
||||
oldUID := ctx.Session.Get(opt.oldSessionKey)
|
||||
uidChanged := oldUID == nil || oldUID.(string) != x.ID
|
||||
cookieToken := ctx.GetSiteCookie(opt.Cookie)
|
||||
oldUID := ctx.Session.Get(c.opt.oldSessionKey)
|
||||
uidChanged := oldUID == nil || oldUID.(string) != c.id
|
||||
cookieToken := ctx.GetSiteCookie(c.opt.Cookie)
|
||||
|
||||
needsNew := true
|
||||
if uidChanged {
|
||||
_ = ctx.Session.Set(opt.oldSessionKey, x.ID)
|
||||
_ = ctx.Session.Set(c.opt.oldSessionKey, c.id)
|
||||
} else if cookieToken != "" {
|
||||
// If cookie token presents, reuse existing unexpired token, else generate a new one.
|
||||
if issueTime, ok := ParseCsrfToken(cookieToken); ok {
|
||||
dur := time.Since(issueTime) // issueTime is not a monotonic-clock, the server time may change a lot to an early time.
|
||||
if dur >= -CsrfTokenRegenerationInterval && dur <= CsrfTokenRegenerationInterval {
|
||||
x.Token = cookieToken
|
||||
c.token = cookieToken
|
||||
needsNew = false
|
||||
}
|
||||
}
|
||||
|
@ -191,42 +131,33 @@ func PrepareCSRFProtector(opt CsrfOptions, ctx *Context) CSRFProtector {
|
|||
|
||||
if needsNew {
|
||||
// FIXME: actionId.
|
||||
x.Token = GenerateCsrfToken(x.opt.Secret, x.ID, "POST", time.Now())
|
||||
if opt.SetCookie {
|
||||
cookie := newCsrfCookie(x, x.Token)
|
||||
ctx.Resp.Header().Add("Set-Cookie", cookie.String())
|
||||
}
|
||||
c.token = GenerateCsrfToken(c.opt.Secret, c.id, "POST", time.Now())
|
||||
cookie := newCsrfCookie(&c.opt, c.token)
|
||||
ctx.Resp.Header().Add("Set-Cookie", cookie.String())
|
||||
}
|
||||
|
||||
if opt.SetHeader {
|
||||
ctx.Resp.Header().Add(opt.Header, x.Token)
|
||||
}
|
||||
return x
|
||||
ctx.Data["CsrfToken"] = c.token
|
||||
ctx.Data["CsrfTokenHtml"] = template.HTML(`<input type="hidden" name="_csrf" value="` + template.HTMLEscapeString(c.token) + `">`)
|
||||
}
|
||||
|
||||
func (c *csrfProtector) validateToken(ctx *Context, token string) {
|
||||
if !ValidCsrfToken(token, c.opt.Secret, c.ID, "POST", time.Now()) {
|
||||
if !ValidCsrfToken(token, c.opt.Secret, c.id, "POST", time.Now()) {
|
||||
c.DeleteCookie(ctx)
|
||||
if middleware.IsAPIPath(ctx.Req) {
|
||||
// currently, there should be no access to the APIPath with CSRF token. because templates shouldn't use the `/api/` endpoints.
|
||||
http.Error(ctx.Resp, "Invalid CSRF token.", http.StatusBadRequest)
|
||||
} else {
|
||||
ctx.Flash.Error(ctx.Tr("error.invalid_csrf"))
|
||||
ctx.Redirect(setting.AppSubURL + "/")
|
||||
}
|
||||
// currently, there should be no access to the APIPath with CSRF token. because templates shouldn't use the `/api/` endpoints.
|
||||
// FIXME: distinguish what the response is for: HTML (web page) or JSON (fetch)
|
||||
http.Error(ctx.Resp, CsrfErrorString, http.StatusBadRequest)
|
||||
}
|
||||
}
|
||||
|
||||
// Validate should be used as a per route middleware. It attempts to get a token from an "X-Csrf-Token"
|
||||
// HTTP header and then a "_csrf" form value. If one of these is found, the token will be validated.
|
||||
// If this validation fails, custom Error is sent in the reply.
|
||||
// If neither a header nor form value is found, http.StatusBadRequest is sent.
|
||||
// If this validation fails, http.StatusBadRequest is sent.
|
||||
func (c *csrfProtector) Validate(ctx *Context) {
|
||||
if token := ctx.Req.Header.Get(c.GetHeaderName()); token != "" {
|
||||
if token := ctx.Req.Header.Get(CsrfHeaderName); token != "" {
|
||||
c.validateToken(ctx, token)
|
||||
return
|
||||
}
|
||||
if token := ctx.Req.FormValue(c.GetFormName()); token != "" {
|
||||
if token := ctx.Req.FormValue(CsrfFormName); token != "" {
|
||||
c.validateToken(ctx, token)
|
||||
return
|
||||
}
|
||||
|
@ -234,9 +165,7 @@ func (c *csrfProtector) Validate(ctx *Context) {
|
|||
}
|
||||
|
||||
func (c *csrfProtector) DeleteCookie(ctx *Context) {
|
||||
if c.opt.SetCookie {
|
||||
cookie := newCsrfCookie(c, "")
|
||||
cookie.MaxAge = -1
|
||||
ctx.Resp.Header().Add("Set-Cookie", cookie.String())
|
||||
}
|
||||
cookie := newCsrfCookie(&c.opt, "")
|
||||
cookie.MaxAge = -1
|
||||
ctx.Resp.Header().Add("Set-Cookie", cookie.String())
|
||||
}
|
||||
|
|
|
@ -12,6 +12,7 @@ import (
|
|||
"code.gitea.io/gitea/models/db"
|
||||
issues_model "code.gitea.io/gitea/models/issues"
|
||||
"code.gitea.io/gitea/models/migrations"
|
||||
org_model "code.gitea.io/gitea/models/organization"
|
||||
repo_model "code.gitea.io/gitea/models/repo"
|
||||
"code.gitea.io/gitea/modules/log"
|
||||
"code.gitea.io/gitea/modules/setting"
|
||||
|
@ -177,6 +178,12 @@ func checkDBConsistency(ctx context.Context, logger log.Logger, autofix bool) er
|
|||
Fixer: auth_model.DeleteOrphanedOAuth2Applications,
|
||||
FixedMessage: "Removed",
|
||||
},
|
||||
{
|
||||
Name: "Owner teams with no admin access",
|
||||
Counter: org_model.CountInconsistentOwnerTeams,
|
||||
Fixer: org_model.FixInconsistentOwnerTeams,
|
||||
FixedMessage: "Fixed",
|
||||
},
|
||||
}
|
||||
|
||||
// TODO: function to recalc all counters
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue