Merge remote-tracking branch 'upstream/v12.0/forgejo' into v12.0/forgejo

This commit is contained in:
Minecon724 2025-09-06 07:43:07 +02:00
commit 613c73f256
Signed by: Minecon724
GPG key ID: A02E6E67AB961189
360 changed files with 8083 additions and 2629 deletions

View file

@ -28,7 +28,7 @@ jobs:
- uses: https://data.forgejo.org/actions/checkout@v4 - uses: https://data.forgejo.org/actions/checkout@v4
- id: forgejo - id: forgejo
uses: https://data.forgejo.org/actions/setup-forgejo@v2.0.4 uses: https://data.forgejo.org/actions/setup-forgejo@v3.0.1
with: with:
user: root user: root
password: admin1234 password: admin1234

View file

@ -164,7 +164,7 @@ jobs:
- name: build container & release - name: build container & release
if: ${{ secrets.TOKEN != '' }} if: ${{ secrets.TOKEN != '' }}
uses: https://data.forgejo.org/forgejo/forgejo-build-publish/build@v5.3.5 uses: https://data.forgejo.org/forgejo/forgejo-build-publish/build@v5.4.1
with: with:
forgejo: "${{ env.GITHUB_SERVER_URL }}" forgejo: "${{ env.GITHUB_SERVER_URL }}"
owner: "${{ env.GITHUB_REPOSITORY_OWNER }}" owner: "${{ env.GITHUB_REPOSITORY_OWNER }}"
@ -183,7 +183,7 @@ jobs:
- name: build rootless container - name: build rootless container
if: ${{ secrets.TOKEN != '' }} if: ${{ secrets.TOKEN != '' }}
uses: https://data.forgejo.org/forgejo/forgejo-build-publish/build@v5.3.5 uses: https://data.forgejo.org/forgejo/forgejo-build-publish/build@v5.4.1
with: with:
forgejo: "${{ env.GITHUB_SERVER_URL }}" forgejo: "${{ env.GITHUB_SERVER_URL }}"
owner: "${{ env.GITHUB_REPOSITORY_OWNER }}" owner: "${{ env.GITHUB_REPOSITORY_OWNER }}"

View file

@ -44,7 +44,7 @@ jobs:
- uses: https://data.forgejo.org/actions/checkout@v4 - uses: https://data.forgejo.org/actions/checkout@v4
- name: copy & sign - name: copy & sign
uses: https://data.forgejo.org/forgejo/forgejo-build-publish/publish@v5.3.5 uses: https://data.forgejo.org/forgejo/forgejo-build-publish/publish@v5.4.1
with: with:
from-forgejo: ${{ vars.FORGEJO }} from-forgejo: ${{ vars.FORGEJO }}
to-forgejo: ${{ vars.FORGEJO }} to-forgejo: ${{ vars.FORGEJO }}
@ -80,7 +80,7 @@ jobs:
label: trigger label: trigger
- name: upgrade v*.next.forgejo.org - name: upgrade v*.next.forgejo.org
uses: https://data.forgejo.org/infrastructure/next-digest@v1.1.0 uses: https://data.forgejo.org/infrastructure/next-digest@v1.2.0
with: with:
url: https://placeholder:${{ secrets.TOKEN_NEXT_DIGEST }}@invisible.forgejo.org/infrastructure/next-digest url: https://placeholder:${{ secrets.TOKEN_NEXT_DIGEST }}@invisible.forgejo.org/infrastructure/next-digest
ref_name: '${{ github.ref_name }}' ref_name: '${{ github.ref_name }}'

View file

@ -1,7 +1,8 @@
# #
# Additional integration tests designed to run once a day when # Additional integration tests designed to run once a day when
# `mirror.yml` pushes to https://codeberg.org/forgejo-integration/forgejo # `mirror.yml` pushes to https://codeberg.org/forgejo-integration/forgejo
# and send a notification via email should they fail. # and send a notification via email to the contact email of the
# organization should they fail.
# #
# For debug purposes: # For debug purposes:
# #
@ -22,6 +23,8 @@ on:
- 'forgejo' - 'forgejo'
- 'v*/forgejo' - 'v*/forgejo'
enable-email-notifications: true
jobs: jobs:
test-unit: test-unit:
# if: vars.ROLE == 'forgejo-coding' # if: vars.ROLE == 'forgejo-coding'

View file

@ -15,6 +15,7 @@ import (
"forgejo.org/modules/graceful" "forgejo.org/modules/graceful"
"forgejo.org/modules/log" "forgejo.org/modules/log"
"forgejo.org/modules/process" "forgejo.org/modules/process"
"forgejo.org/modules/proxy"
"forgejo.org/modules/setting" "forgejo.org/modules/setting"
"github.com/caddyserver/certmagic" "github.com/caddyserver/certmagic"
@ -76,6 +77,12 @@ func runACME(listenAddr string, m http.Handler) error {
ListenHost: setting.HTTPAddr, ListenHost: setting.HTTPAddr,
AltTLSALPNPort: altTLSALPNPort, AltTLSALPNPort: altTLSALPNPort,
AltHTTPPort: altHTTPPort, AltHTTPPort: altHTTPPort,
HTTPProxy: proxy.Proxy(),
}
// Preserve behavior to use Let's encrypt test CA when Let's encrypt is CA.
if certmagic.DefaultACME.CA == certmagic.LetsEncryptProductionCA {
certmagic.DefaultACME.TestCA = certmagic.LetsEncryptStagingCA
} }
magic := certmagic.NewDefault() magic := certmagic.NewDefault()

4
go.mod
View file

@ -2,7 +2,7 @@ module forgejo.org
go 1.24 go 1.24
toolchain go1.24.4 toolchain go1.24.6
require ( require (
code.forgejo.org/f3/gof3/v3 v3.11.0 code.forgejo.org/f3/gof3/v3 v3.11.0
@ -91,7 +91,7 @@ require (
github.com/sergi/go-diff v1.4.0 github.com/sergi/go-diff v1.4.0
github.com/stretchr/testify v1.10.0 github.com/stretchr/testify v1.10.0
github.com/syndtr/goleveldb v1.0.0 github.com/syndtr/goleveldb v1.0.0
github.com/ulikunitz/xz v0.5.12 github.com/ulikunitz/xz v0.5.15
github.com/urfave/cli/v3 v3.3.3 github.com/urfave/cli/v3 v3.3.3
github.com/valyala/fastjson v1.6.4 github.com/valyala/fastjson v1.6.4
github.com/yohcop/openid-go v1.0.1 github.com/yohcop/openid-go v1.0.1

4
go.sum
View file

@ -527,8 +527,8 @@ github.com/tinylib/msgp v1.3.0 h1:ULuf7GPooDaIlbyvgAxBV/FI7ynli6LZ1/nVUNu+0ww=
github.com/tinylib/msgp v1.3.0/go.mod h1:ykjzy2wzgrlvpDCRc4LA8UXy6D8bzMSuAF3WD57Gok0= github.com/tinylib/msgp v1.3.0/go.mod h1:ykjzy2wzgrlvpDCRc4LA8UXy6D8bzMSuAF3WD57Gok0=
github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
github.com/ulikunitz/xz v0.5.9/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/ulikunitz/xz v0.5.9/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
github.com/ulikunitz/xz v0.5.12 h1:37Nm15o69RwBkXM0J6A5OlE67RZTfzUxTj8fB3dfcsc= github.com/ulikunitz/xz v0.5.15 h1:9DNdB5s+SgV3bQ2ApL10xRc35ck0DuIX/isZvIk+ubY=
github.com/ulikunitz/xz v0.5.12/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/ulikunitz/xz v0.5.15/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
github.com/urfave/cli/v3 v3.3.3 h1:byCBaVdIXuLPIDm5CYZRVG6NvT7tv1ECqdU4YzlEa3I= github.com/urfave/cli/v3 v3.3.3 h1:byCBaVdIXuLPIDm5CYZRVG6NvT7tv1ECqdU4YzlEa3I=
github.com/urfave/cli/v3 v3.3.3/go.mod h1:FJSKtM/9AiiTOJL4fJ6TbMUkxBXn7GO9guZqoZtpYpo= github.com/urfave/cli/v3 v3.3.3/go.mod h1:FJSKtM/9AiiTOJL4fJ6TbMUkxBXn7GO9guZqoZtpYpo=
github.com/valyala/fastjson v1.6.4 h1:uAUNq9Z6ymTgGhcm0UynUAB6tlbakBrz6CQFax3BXVQ= github.com/valyala/fastjson v1.6.4 h1:uAUNq9Z6ymTgGhcm0UynUAB6tlbakBrz6CQFax3BXVQ=

View file

@ -132,6 +132,13 @@ func (opts FindArtifactsOptions) ToConds() builder.Cond {
return cond return cond
} }
var _ db.FindOptionsOrder = FindArtifactsOptions{}
// ToOrders implements db.FindOptionsOrder, to have a stable order
func (opts FindArtifactsOptions) ToOrders() string {
return "id"
}
// ActionArtifactMeta is the meta data of an artifact // ActionArtifactMeta is the meta data of an artifact
type ActionArtifactMeta struct { type ActionArtifactMeta struct {
ArtifactName string ArtifactName string

View file

@ -473,8 +473,11 @@ func GetFeeds(ctx context.Context, opts GetFeedsOptions) (ActionList, int64, err
return nil, 0, err return nil, 0, err
} }
sess := db.GetEngine(ctx).Where(cond).
Select("`action`.*"). // this line will avoid select other joined table's columns
Join("INNER", "repository", "`repository`.id = `action`.repo_id")
opts.SetDefaultValues() opts.SetDefaultValues()
sess := db.GetEngine(ctx).Where(cond)
sess = db.SetSessionPagination(sess, &opts) sess = db.SetSessionPagination(sess, &opts)
actions := make([]*Action, 0, opts.PageSize) actions := make([]*Action, 0, opts.PageSize)

View file

@ -227,6 +227,24 @@ func TestNotifyWatchers(t *testing.T) {
}) })
} }
func TestGetFeedsCorrupted(t *testing.T) {
require.NoError(t, unittest.PrepareTestDatabase())
user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1})
unittest.AssertExistsAndLoadBean(t, &activities_model.Action{
ID: 8,
RepoID: 1700,
})
actions, count, err := activities_model.GetFeeds(db.DefaultContext, activities_model.GetFeedsOptions{
RequestedUser: user,
Actor: user,
IncludePrivate: true,
})
require.NoError(t, err)
assert.Empty(t, actions)
assert.Equal(t, int64(0), count)
}
func TestConsistencyUpdateAction(t *testing.T) { func TestConsistencyUpdateAction(t *testing.T) {
if !setting.Database.Type.IsSQLite3() { if !setting.Database.Type.IsSQLite3() {
t.Skip("Test is only for SQLite database.") t.Skip("Test is only for SQLite database.")

View file

@ -141,7 +141,7 @@ func TxContext(parentCtx context.Context) (*Context, Committer, error) {
return nil, nil, err return nil, nil, err
} }
return newContext(DefaultContext, sess, true), sess, nil return newContext(parentCtx, sess, true), sess, nil
} }
// WithTx represents executing database operations on a transaction, if the transaction exist, // WithTx represents executing database operations on a transaction, if the transaction exist,

View file

@ -84,4 +84,16 @@ func TestTxContext(t *testing.T) {
return nil return nil
})) }))
} }
t.Run("Reuses parent context", func(t *testing.T) {
type unique struct{}
ctx := context.WithValue(db.DefaultContext, unique{}, "yes!")
assert.False(t, db.InTransaction(ctx))
require.NoError(t, db.WithTx(ctx, func(ctx context.Context) error {
assert.Equal(t, "yes!", ctx.Value(unique{}))
return nil
}))
})
} }

View file

@ -121,6 +121,7 @@ type ErrInvalidCloneAddr struct {
IsInvalidPath bool IsInvalidPath bool
IsProtocolInvalid bool IsProtocolInvalid bool
IsPermissionDenied bool IsPermissionDenied bool
HasCredentials bool
LocalPath bool LocalPath bool
} }
@ -143,6 +144,9 @@ func (err *ErrInvalidCloneAddr) Error() string {
if err.IsURLError { if err.IsURLError {
return fmt.Sprintf("migration/cloning from '%s' is not allowed: the provided url is invalid", err.Host) return fmt.Sprintf("migration/cloning from '%s' is not allowed: the provided url is invalid", err.Host)
} }
if err.HasCredentials {
return fmt.Sprintf("migration/cloning from '%s' is not allowed: the provided url contains credentials", err.Host)
}
return fmt.Sprintf("migration/cloning from '%s' is not allowed", err.Host) return fmt.Sprintf("migration/cloning from '%s' is not allowed", err.Host)
} }

View file

@ -0,0 +1,21 @@
-
id: 1
status: 1
reporter_id: 2 # @user2
content_type: 4 # Comment
content_id: 18 # user2/repo2/issues/2#issuecomment-18
category: 2 # Spam
remarks: The comment I'm reporting is pure SPAM.
shadow_copy_id: null
created_unix: 1752697980 # 2025-07-16 20:33:00
-
id: 2
status: 1 # Open
reporter_id: 2 # @user2
content_type: 1 # User (users or organizations)
content_id: 1002 # @alexsmith
category: 2 # Spam
remarks: This user just posted a spammy comment on my issue.
shadow_copy_id: null
created_unix: 1752698010 # 2025-07-16 20:33:30

View file

@ -0,0 +1,7 @@
- # This is a spam comment (abusive content), created for testing moderation functionalities.
id: 18
type: 0 # Standard comment
poster_id: 1002 # @alexsmith
issue_id: 7 # user2/repo2#2
content: If anyone needs help for promoting their business online using SEO, just contact me (check my profile page).
created_unix: 1752697860 # 2025-07-16 20:31:00

View file

@ -0,0 +1,22 @@
- # This user is a spammer and will create abusive content (for testing moderation functionalities).
id: 1002
lower_name: alexsmith
name: alexsmith
full_name: Alex Smith
email: alexsmith@example.org
keep_email_private: false
passwd: passwdSalt:password
passwd_hash_algo: dummy
type: 0
location: '@master@seo.net'
website: http://promote-your-business.biz
pronouns: SEO
salt: passwdSalt
description: I can help you promote your business online using SEO.
created_unix: 1752697800 # 2025-07-16 20:30:00
is_active: true
is_admin: false
is_restricted: false
avatar: avatar-hash-1002
avatar_email: alexsmith@example.org
use_custom_avatar: false

View file

@ -0,0 +1,16 @@
-
id: 23
repo_id: 2
index: 3
poster_id: 2
original_author_id: 0
name: protected branch pull
content: pull request to a protected branch
milestone_id: 0
priority: 0
is_pull: true
is_closed: false
num_comments: 0
created_unix: 1707270422
updated_unix: 1707270422
is_locked: false

View file

@ -0,0 +1,28 @@
- id: 1
repo_id: 2
branch_name: protected-main
can_push: false
enable_whitelist: true
whitelist_user_i_ds: [1]
whitelist_team_i_ds: []
enable_merge_whitelist: true
whitelist_deploy_keys: false
merge_whitelist_user_i_ds: [1]
merge_whitelist_team_i_ds: []
enable_status_check: false
status_check_contexts: []
enable_approvals_whitelist: true
approvals_whitelist_user_i_ds: []
approvals_whitelist_team_i_ds: [1]
required_approvals: 1
block_on_rejected_reviews: true
block_on_official_review_requests: true
block_on_outdated_branch: true
dismiss_stale_approvals: true
ignore_stale_approvals: false
require_signed_commits: false
protected_file_patterns: ""
unprotected_file_patterns: ""
apply_to_admins: true
created_unix: 1752513073
updated_unix: 1752513073

View file

@ -0,0 +1,12 @@
-
id: 11
type: 0 # gitea pull request
status: 2 # mergeable
issue_id: 23
index: 3
head_repo_id: 2
base_repo_id: 2
head_branch: feature/protected-branch-pr
base_branch: protected-main
merge_base: 4a357436d925b5c974181ff12a994538ddc5a269
has_merged: false

View file

@ -59,6 +59,14 @@
created_unix: 1603011540 # grouped with id:7 created_unix: 1603011540 # grouped with id:7
- id: 8 - id: 8
user_id: 1
op_type: 12 # close issue
act_user_id: 1
repo_id: 1700 # dangling intentional
is_private: false
created_unix: 1603011541
- id: 9
user_id: 34 user_id: 34
op_type: 12 # close issue op_type: 12 # close issue
act_user_id: 34 act_user_id: 34

View file

@ -3,3 +3,9 @@
owner_id: 2 owner_id: 2
lower_name: oldrepo1 lower_name: oldrepo1
redirect_repo_id: 1 redirect_repo_id: 1
-
id: 2
owner_id: 17
lower_name: oldrepo24
redirect_repo_id: 24

View file

@ -3,3 +3,15 @@
lower_name: olduser1 lower_name: olduser1
redirect_user_id: 1 redirect_user_id: 1
created_unix: 1730000000 created_unix: 1730000000
-
id: 2
lower_name: oldorg22
redirect_user_id: 22
created_unix: 1730000000
-
id: 3
lower_name: oldorg23
redirect_user_id: 23
created_unix: 1730000000

View file

@ -109,6 +109,8 @@ var migrations = []*Migration{
NewMigration("Add `notify-email` column to `action_run` table", AddNotifyEmailToActionRun), NewMigration("Add `notify-email` column to `action_run` table", AddNotifyEmailToActionRun),
// v34 -> v35 // v34 -> v35
NewMigration("Noop because of https://codeberg.org/forgejo/forgejo/issues/8373", NoopAddIndexToActionRunStopped), NewMigration("Noop because of https://codeberg.org/forgejo/forgejo/issues/8373", NoopAddIndexToActionRunStopped),
// v35 -> v36
NewMigration("Fix wiki unit default permission", FixWikiUnitDefaultPermission),
} }
// GetCurrentDBVersion returns the current Forgejo database version. // GetCurrentDBVersion returns the current Forgejo database version.

View file

@ -12,6 +12,7 @@ import (
"strconv" "strconv"
"strings" "strings"
"forgejo.org/models/db"
"forgejo.org/models/packages" "forgejo.org/models/packages"
"forgejo.org/modules/json" "forgejo.org/modules/json"
"forgejo.org/modules/log" "forgejo.org/modules/log"
@ -52,55 +53,50 @@ type mavenPackageResult struct {
// ChangeMavenArtifactConcatenation resolves old dash-concatenated Maven coordinates and regenerates metadata. // ChangeMavenArtifactConcatenation resolves old dash-concatenated Maven coordinates and regenerates metadata.
// Note: runs per-owner in a single transaction; failures roll back all owners. // Note: runs per-owner in a single transaction; failures roll back all owners.
func ChangeMavenArtifactConcatenation(x *xorm.Engine) error { func ChangeMavenArtifactConcatenation(x *xorm.Engine) error {
sess := x.NewSession() return db.WithTx(db.DefaultContext, func(ctx context.Context) error {
defer sess.Close() // get unique owner IDs of Maven packages
var ownerIDs []*int64
if err := sess.Begin(); err != nil { if err := db.GetEngine(ctx).
return err Table("package").
} Select("package.owner_id").
Where("package.type = 'maven'").
// get unique owner IDs of Maven packages GroupBy("package.owner_id").
var ownerIDs []*int64 OrderBy("package.owner_id DESC").
if err := sess. Find(&ownerIDs); err != nil {
Table("package"). return err
Select("package.owner_id").
Where("package.type = 'maven'").
GroupBy("package.owner_id").
OrderBy("package.owner_id DESC").
Find(&ownerIDs); err != nil {
return err
}
for _, id := range ownerIDs {
if err := fixMavenArtifactPerOwner(sess, id); err != nil {
log.Error("owner %d migration failed: %v", id, err)
return err // rollback all
} }
}
return sess.Commit() for _, id := range ownerIDs {
if err := fixMavenArtifactPerOwner(ctx, id); err != nil {
log.Error("owner %d migration failed: %v", id, err)
return err // rollback all
}
}
return nil
})
} }
func fixMavenArtifactPerOwner(sess *xorm.Session, ownerID *int64) error { func fixMavenArtifactPerOwner(ctx context.Context, ownerID *int64) error {
results, err := getMavenPackageResultsToUpdate(sess, ownerID) results, err := getMavenPackageResultsToUpdate(ctx, ownerID)
if err != nil { if err != nil {
return err return err
} }
if err = resolvePackageCollisions(results, sess); err != nil { if err = resolvePackageCollisions(ctx, results); err != nil {
return err return err
} }
if err = processPackageVersions(results, sess); err != nil { if err = processPackageVersions(ctx, results); err != nil {
return err return err
} }
return processPackageFiles(results, sess) return processPackageFiles(ctx, results)
} }
// processPackageFiles updates Maven package files and versions in the database // processPackageFiles updates Maven package files and versions in the database
// Returns an error if any database or processing operation fails. // Returns an error if any database or processing operation fails.
func processPackageFiles(results []*mavenPackageResult, sess *xorm.Session) error { func processPackageFiles(ctx context.Context, results []*mavenPackageResult) error {
processedVersion := make(map[string][]*mavenPackageResult) processedVersion := make(map[string][]*mavenPackageResult)
for _, r := range results { for _, r := range results {
@ -113,7 +109,7 @@ func processPackageFiles(results []*mavenPackageResult, sess *xorm.Session) erro
if r.PackageVersion.ID != r.PackageFile.VersionID { if r.PackageVersion.ID != r.PackageFile.VersionID {
pattern := strings.TrimSuffix(r.PackageFile.Name, ".pom") + "%" pattern := strings.TrimSuffix(r.PackageFile.Name, ".pom") + "%"
// Per routers/api/packages/maven/maven.go:338, POM files already have the `IsLead`, so no update needed for this prop // Per routers/api/packages/maven/maven.go:338, POM files already have the `IsLead`, so no update needed for this prop
if _, err := sess.Exec("UPDATE package_file SET version_id = ? WHERE version_id = ? and name like ?", r.PackageVersion.ID, r.PackageFile.VersionID, pattern); err != nil { if _, err := db.GetEngine(ctx).Exec("UPDATE package_file SET version_id = ? WHERE version_id = ? and name like ?", r.PackageVersion.ID, r.PackageFile.VersionID, pattern); err != nil {
return err return err
} }
} }
@ -128,14 +124,14 @@ func processPackageFiles(results []*mavenPackageResult, sess *xorm.Session) erro
rs := packageResults[0] rs := packageResults[0]
pf, md, err := parseMetadata(sess, rs) pf, md, err := parseMetadata(ctx, rs)
if err != nil { if err != nil {
return err return err
} }
if pf != nil && md != nil && md.GroupID == rs.GroupID && md.ArtifactID == rs.ArtifactID { if pf != nil && md != nil && md.GroupID == rs.GroupID && md.ArtifactID == rs.ArtifactID {
if pf.VersionID != rs.PackageFile.VersionID { if pf.VersionID != rs.PackageFile.VersionID {
if _, err := sess.ID(pf.ID).Cols("version_id").Update(pf); err != nil { if _, err := db.GetEngine(ctx).ID(pf.ID).Cols("version_id").Update(pf); err != nil {
return err return err
} }
} }
@ -150,11 +146,9 @@ func processPackageFiles(results []*mavenPackageResult, sess *xorm.Session) erro
// parseMetadata retrieves metadata for a Maven package file from the database and decodes it into a Metadata object. // parseMetadata retrieves metadata for a Maven package file from the database and decodes it into a Metadata object.
// Returns the associated PackageFile, Metadata, and any error encountered during processing. // Returns the associated PackageFile, Metadata, and any error encountered during processing.
func parseMetadata(sess *xorm.Session, snapshot *mavenPackageResult) (*packages.PackageFile, *Metadata, error) { func parseMetadata(ctx context.Context, snapshot *mavenPackageResult) (*packages.PackageFile, *Metadata, error) {
ctx := context.Background()
var pf packages.PackageFile var pf packages.PackageFile
found, err := sess.Table(pf). found, err := db.GetEngine(ctx).Table(pf).
Where("version_id = ?", snapshot.PackageFile.VersionID). // still the old id Where("version_id = ?", snapshot.PackageFile.VersionID). // still the old id
And("lower_name = ?", "maven-metadata.xml"). And("lower_name = ?", "maven-metadata.xml").
Get(&pf) Get(&pf)
@ -183,7 +177,7 @@ func parseMetadata(sess *xorm.Session, snapshot *mavenPackageResult) (*packages.
// processPackageVersions processes Maven package versions by updating metadata or inserting new records as necessary. // processPackageVersions processes Maven package versions by updating metadata or inserting new records as necessary.
// It avoids redundant updates by tracking already processed versions using a map. Returns an error on failure. // It avoids redundant updates by tracking already processed versions using a map. Returns an error on failure.
func processPackageVersions(results []*mavenPackageResult, sess *xorm.Session) error { func processPackageVersions(ctx context.Context, results []*mavenPackageResult) error {
processedVersion := make(map[string]int64) processedVersion := make(map[string]int64)
for _, r := range results { for _, r := range results {
@ -196,14 +190,14 @@ func processPackageVersions(results []*mavenPackageResult, sess *xorm.Session) e
// for non collisions, just update the metadata // for non collisions, just update the metadata
if r.PackageVersion.PackageID == r.Package.ID { if r.PackageVersion.PackageID == r.Package.ID {
if _, err := sess.ID(r.PackageVersion.ID).Cols("metadata_json").Update(r.PackageVersion); err != nil { if _, err := db.GetEngine(ctx).ID(r.PackageVersion.ID).Cols("metadata_json").Update(r.PackageVersion); err != nil {
return err return err
} }
} else { } else {
log.Info("Create new maven package version for %s:%s", r.PackageName, r.PackageVersion.Version) log.Info("Create new maven package version for %s:%s", r.PackageName, r.PackageVersion.Version)
r.PackageVersion.ID = 0 r.PackageVersion.ID = 0
r.PackageVersion.PackageID = r.Package.ID r.PackageVersion.PackageID = r.Package.ID
if _, err := sess.Insert(r.PackageVersion); err != nil { if _, err := db.GetEngine(ctx).Insert(r.PackageVersion); err != nil {
return err return err
} }
} }
@ -216,10 +210,9 @@ func processPackageVersions(results []*mavenPackageResult, sess *xorm.Session) e
// getMavenPackageResultsToUpdate retrieves Maven package results that need updates based on the owner ID. // getMavenPackageResultsToUpdate retrieves Maven package results that need updates based on the owner ID.
// It processes POM metadata, fixes package inconsistencies, and filters corrupted package versions. // It processes POM metadata, fixes package inconsistencies, and filters corrupted package versions.
func getMavenPackageResultsToUpdate(sess *xorm.Session, ownerID *int64) ([]*mavenPackageResult, error) { func getMavenPackageResultsToUpdate(ctx context.Context, ownerID *int64) ([]*mavenPackageResult, error) {
ctx := context.Background()
var candidates []*mavenPackageResult var candidates []*mavenPackageResult
if err := sess. if err := db.GetEngine(ctx).
Table("package_file"). Table("package_file").
Select("package_file.*, package_version.*, package.*"). Select("package_file.*, package_version.*, package.*").
Join("INNER", "package_version", "package_version.id = package_file.version_id"). Join("INNER", "package_version", "package_version.id = package_file.version_id").
@ -265,7 +258,7 @@ func getMavenPackageResultsToUpdate(sess *xorm.Session, ownerID *int64) ([]*mave
// resolvePackageCollisions handles name collisions by keeping the first existing record and inserting new Package records for subsequent collisions. // resolvePackageCollisions handles name collisions by keeping the first existing record and inserting new Package records for subsequent collisions.
// Returns a map from PackageName to its resolved Package.ID. // Returns a map from PackageName to its resolved Package.ID.
func resolvePackageCollisions(results []*mavenPackageResult, sess *xorm.Session) error { func resolvePackageCollisions(ctx context.Context, results []*mavenPackageResult) error {
// Group new names by lowerName // Group new names by lowerName
collisions := make(map[string][]string) collisions := make(map[string][]string)
for _, r := range results { for _, r := range results {
@ -292,7 +285,7 @@ func resolvePackageCollisions(results []*mavenPackageResult, sess *xorm.Session)
} else if list[0] == r.PackageName { } else if list[0] == r.PackageName {
pkgIDByName[r.PackageName] = r.Package.ID pkgIDByName[r.PackageName] = r.Package.ID
if _, err = sess.ID(r.Package.ID).Cols("name", "lower_name").Update(r.Package); err != nil { if _, err = db.GetEngine(ctx).ID(r.Package.ID).Cols("name", "lower_name").Update(r.Package); err != nil {
return err return err
} }
// create a new entry // create a new entry
@ -300,7 +293,7 @@ func resolvePackageCollisions(results []*mavenPackageResult, sess *xorm.Session)
log.Info("Create new maven package for %s", r.Package.Name) log.Info("Create new maven package for %s", r.Package.Name)
r.Package.ID = 0 r.Package.ID = 0
if _, err = sess.Insert(r.Package); err != nil { if _, err = db.GetEngine(ctx).Insert(r.Package); err != nil {
return err return err
} }

View file

@ -0,0 +1,55 @@
// Copyright 2025 The Forgejo Authors. All rights reserved.
// SPDX-License-Identifier: GPL-3.0-or-later
package forgejo_migrations //nolint:revive
import (
"xorm.io/xorm"
)
func FixWikiUnitDefaultPermission(x *xorm.Engine) error {
// Type is Unit's Type
type Type int
// Enumerate all the unit types
const (
TypeInvalid Type = iota // 0 invalid
TypeCode // 1 code
TypeIssues // 2 issues
TypePullRequests // 3 PRs
TypeReleases // 4 Releases
TypeWiki // 5 Wiki
TypeExternalWiki // 6 ExternalWiki
TypeExternalTracker // 7 ExternalTracker
TypeProjects // 8 Projects
TypePackages // 9 Packages
TypeActions // 10 Actions
)
// RepoUnitAccessMode specifies the users access mode to a repo unit
type UnitAccessMode int
const (
// UnitAccessModeUnset - no unit mode set
UnitAccessModeUnset UnitAccessMode = iota // 0
// UnitAccessModeNone no access
UnitAccessModeNone // 1
// UnitAccessModeRead read access
UnitAccessModeRead // 2
// UnitAccessModeWrite write access
UnitAccessModeWrite // 3
)
_ = UnitAccessModeNone
_ = UnitAccessModeWrite
type RepoUnit struct {
DefaultPermissions UnitAccessMode `xorm:"NOT NULL DEFAULT 0"`
}
_, err := x.Where("type = ?", TypeWiki).
Where("default_permissions = ?", UnitAccessModeRead).
Cols("default_permissions").
Update(RepoUnit{
DefaultPermissions: UnitAccessModeUnset,
})
return err
}

View file

@ -1156,7 +1156,7 @@ func UpdateComment(ctx context.Context, c *Comment, contentVersion int, doer *us
defer committer.Close() defer committer.Close()
// If the comment was reported as abusive, a shadow copy should be created before first update. // If the comment was reported as abusive, a shadow copy should be created before first update.
if err := IfNeededCreateShadowCopyForComment(ctx, c); err != nil { if err := IfNeededCreateShadowCopyForComment(ctx, c, true); err != nil {
return err return err
} }
@ -1197,7 +1197,7 @@ func DeleteComment(ctx context.Context, comment *Comment) error {
e := db.GetEngine(ctx) e := db.GetEngine(ctx)
// If the comment was reported as abusive, a shadow copy should be created before deletion. // If the comment was reported as abusive, a shadow copy should be created before deletion.
if err := IfNeededCreateShadowCopyForComment(ctx, comment); err != nil { if err := IfNeededCreateShadowCopyForComment(ctx, comment, false); err != nil {
return err return err
} }

View file

@ -87,13 +87,19 @@ func IfNeededCreateShadowCopyForIssue(ctx context.Context, issue *Issue) error {
// IfNeededCreateShadowCopyForComment checks if for the given comment there are any reports of abusive content submitted // IfNeededCreateShadowCopyForComment checks if for the given comment there are any reports of abusive content submitted
// and if found a shadow copy of relevant comment fields will be stored into DB and linked to the above report(s). // and if found a shadow copy of relevant comment fields will be stored into DB and linked to the above report(s).
// This function should be called before a comment is deleted or updated. // This function should be called before a comment is deleted or updated.
func IfNeededCreateShadowCopyForComment(ctx context.Context, comment *Comment) error { func IfNeededCreateShadowCopyForComment(ctx context.Context, comment *Comment, forUpdates bool) error {
shadowCopyNeeded, err := moderation.IsShadowCopyNeeded(ctx, moderation.ReportedContentTypeComment, comment.ID) shadowCopyNeeded, err := moderation.IsShadowCopyNeeded(ctx, moderation.ReportedContentTypeComment, comment.ID)
if err != nil { if err != nil {
return err return err
} }
if shadowCopyNeeded { if shadowCopyNeeded {
if forUpdates {
// get the unaltered comment fields (for updates the provided variable is already altered but not yet saved)
if comment, err = GetCommentByID(ctx, comment.ID); err != nil {
return err
}
}
commentData := newCommentData(comment) commentData := newCommentData(comment)
content, err := json.Marshal(commentData) content, err := json.Marshal(commentData)
if err != nil { if err != nil {

View file

@ -781,10 +781,6 @@ func AddTeamReviewRequest(ctx context.Context, issue *Issue, reviewer *organizat
official, err := IsOfficialReviewerTeam(ctx, issue, reviewer) official, err := IsOfficialReviewerTeam(ctx, issue, reviewer)
if err != nil { if err != nil {
return nil, fmt.Errorf("isOfficialReviewerTeam(): %w", err) return nil, fmt.Errorf("isOfficialReviewerTeam(): %w", err)
} else if !official {
if official, err = IsOfficialReviewer(ctx, issue, doer); err != nil {
return nil, fmt.Errorf("isOfficialReviewer(): %w", err)
}
} }
if review, err = CreateReview(ctx, CreateReviewOptions{ if review, err = CreateReview(ctx, CreateReviewOptions{
@ -797,12 +793,6 @@ func AddTeamReviewRequest(ctx context.Context, issue *Issue, reviewer *organizat
return nil, err return nil, err
} }
if official {
if _, err := db.Exec(ctx, "UPDATE `review` SET official=? WHERE issue_id=? AND reviewer_team_id=?", false, issue.ID, reviewer.ID); err != nil {
return nil, err
}
}
comment, err := CreateComment(ctx, &CreateCommentOptions{ comment, err := CreateComment(ctx, &CreateCommentOptions{
Type: CommentTypeReviewRequest, Type: CommentTypeReviewRequest,
Doer: doer, Doer: doer,

View file

@ -8,6 +8,7 @@ import (
"forgejo.org/models/db" "forgejo.org/models/db"
issues_model "forgejo.org/models/issues" issues_model "forgejo.org/models/issues"
organization_model "forgejo.org/models/organization"
repo_model "forgejo.org/models/repo" repo_model "forgejo.org/models/repo"
"forgejo.org/models/unittest" "forgejo.org/models/unittest"
user_model "forgejo.org/models/user" user_model "forgejo.org/models/user"
@ -319,3 +320,80 @@ func TestAddReviewRequest(t *testing.T) {
require.Error(t, err) require.Error(t, err)
assert.True(t, issues_model.IsErrReviewRequestOnClosedPR(err)) assert.True(t, issues_model.IsErrReviewRequestOnClosedPR(err))
} }
func TestAddTeamReviewRequest(t *testing.T) {
defer unittest.OverrideFixtures("models/fixtures/TestAddTeamReviewRequest")()
require.NoError(t, unittest.PrepareTestDatabase())
setupForProtectedBranch := func() (*issues_model.Issue, *user_model.User) {
// From override models/fixtures/TestAddTeamReviewRequest/issue.yml; issue #23 is a PR into a protected branch
issue := unittest.AssertExistsAndLoadBean(t, &issues_model.Issue{ID: 23})
require.NoError(t, issue.LoadRepo(db.DefaultContext))
doer := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 4})
return issue, doer
}
t.Run("Protected branch, not official team", func(t *testing.T) {
issue, doer := setupForProtectedBranch()
// Team 2 is not part of the whitelist for this protected branch
team := unittest.AssertExistsAndLoadBean(t, &organization_model.Team{ID: 2})
comment, err := issues_model.AddTeamReviewRequest(db.DefaultContext, issue, team, doer)
require.NoError(t, err)
require.NotNil(t, comment)
review, err := issues_model.GetTeamReviewerByIssueIDAndTeamID(db.DefaultContext, issue.ID, team.ID)
require.NoError(t, err)
require.NotNil(t, review)
assert.Equal(t, issues_model.ReviewTypeRequest, review.Type)
assert.Equal(t, team.ID, review.ReviewerTeamID)
// This review request should not be marked official because it is not a request for a team in the branch
// protection rule's whitelist...
assert.False(t, review.Official)
})
t.Run("Protected branch, official team", func(t *testing.T) {
issue, doer := setupForProtectedBranch()
// Team 1 is part of the whitelist for this protected branch
team := unittest.AssertExistsAndLoadBean(t, &organization_model.Team{ID: 1})
comment, err := issues_model.AddTeamReviewRequest(db.DefaultContext, issue, team, doer)
require.NoError(t, err)
require.NotNil(t, comment)
review, err := issues_model.GetTeamReviewerByIssueIDAndTeamID(db.DefaultContext, issue.ID, team.ID)
require.NoError(t, err)
require.NotNil(t, review)
assert.Equal(t, issues_model.ReviewTypeRequest, review.Type)
assert.Equal(t, team.ID, review.ReviewerTeamID)
// Expected to be considered official because team 1 is in the review whitelist for this protected branch
assert.True(t, review.Official)
})
t.Run("Unprotected branch, official team", func(t *testing.T) {
// Working on a PR into a branch that is not protected, issue #2
issue := unittest.AssertExistsAndLoadBean(t, &issues_model.Issue{ID: 2})
require.NoError(t, issue.LoadRepo(db.DefaultContext))
doer := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1})
// team is a team that has write perms against the repo
team := unittest.AssertExistsAndLoadBean(t, &organization_model.Team{ID: 1})
comment, err := issues_model.AddTeamReviewRequest(db.DefaultContext, issue, team, doer)
require.NoError(t, err)
require.NotNil(t, comment)
review, err := issues_model.GetTeamReviewerByIssueIDAndTeamID(db.DefaultContext, issue.ID, team.ID)
require.NoError(t, err)
require.NotNil(t, review)
assert.Equal(t, issues_model.ReviewTypeRequest, review.Type)
assert.Equal(t, team.ID, review.ReviewerTeamID)
// Will not be marked as official because PR #2 there's no branch protection rule that enables whitelist
// approvals (verifying logic in `IsOfficialReviewerTeam` indirectly)
assert.False(t, review.Official)
// Adding the same team review request again should be a noop
comment, err = issues_model.AddTeamReviewRequest(db.DefaultContext, issue, team, doer)
require.NoError(t, err)
require.Nil(t, comment)
})
}

View file

@ -125,7 +125,7 @@ func (pt Type) Name() string {
case TypeRpm: case TypeRpm:
return "RPM" return "RPM"
case TypeAlt: case TypeAlt:
return "Alt" return "ALT"
case TypeRubyGems: case TypeRubyGems:
return "RubyGems" return "RubyGems"
case TypeSwift: case TypeSwift:

View file

@ -14,8 +14,9 @@ import (
// ErrRedirectNotExist represents a "RedirectNotExist" kind of error. // ErrRedirectNotExist represents a "RedirectNotExist" kind of error.
type ErrRedirectNotExist struct { type ErrRedirectNotExist struct {
OwnerID int64 OwnerID int64
RepoName string RepoName string
MissingPermission bool
} }
// IsErrRedirectNotExist check if an error is an ErrRepoRedirectNotExist. // IsErrRedirectNotExist check if an error is an ErrRepoRedirectNotExist.
@ -49,8 +50,8 @@ func init() {
db.RegisterModel(new(Redirect)) db.RegisterModel(new(Redirect))
} }
// LookupRedirect look up if a repository has a redirect name // GetRedirect returns the redirect for a given pair of ownerID and repository name.
func LookupRedirect(ctx context.Context, ownerID int64, repoName string) (int64, error) { func GetRedirect(ctx context.Context, ownerID int64, repoName string) (int64, error) {
repoName = strings.ToLower(repoName) repoName = strings.ToLower(repoName)
redirect := &Redirect{OwnerID: ownerID, LowerName: repoName} redirect := &Redirect{OwnerID: ownerID, LowerName: repoName}
if has, err := db.GetEngine(ctx).Get(redirect); err != nil { if has, err := db.GetEngine(ctx).Get(redirect); err != nil {

View file

@ -10,21 +10,9 @@ import (
repo_model "forgejo.org/models/repo" repo_model "forgejo.org/models/repo"
"forgejo.org/models/unittest" "forgejo.org/models/unittest"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
) )
func TestLookupRedirect(t *testing.T) {
require.NoError(t, unittest.PrepareTestDatabase())
repoID, err := repo_model.LookupRedirect(db.DefaultContext, 2, "oldrepo1")
require.NoError(t, err)
assert.EqualValues(t, 1, repoID)
_, err = repo_model.LookupRedirect(db.DefaultContext, unittest.NonexistentID, "doesnotexist")
assert.True(t, repo_model.IsErrRedirectNotExist(err))
}
func TestNewRedirect(t *testing.T) { func TestNewRedirect(t *testing.T) {
// redirect to a completely new name // redirect to a completely new name
require.NoError(t, unittest.PrepareTestDatabase()) require.NoError(t, unittest.PrepareTestDatabase())

View file

@ -41,27 +41,30 @@ func (err ErrUnitTypeNotExist) Unwrap() error {
} }
// RepoUnitAccessMode specifies the users access mode to a repo unit // RepoUnitAccessMode specifies the users access mode to a repo unit
// Only UnitAccessModeWrite is used by the wiki, to mark it as instance-writable
type UnitAccessMode int type UnitAccessMode int
const ( const (
// UnitAccessModeUnset - no unit mode set // UnitAccessModeUnset - no unit mode set
UnitAccessModeUnset UnitAccessMode = iota // 0 UnitAccessModeUnset UnitAccessMode = iota // 0
// UnitAccessModeNone no access // UnitAccessModeNone no access
UnitAccessModeNone // 1 // UnitAccessModeNone UnitAccessMode = 1
// UnitAccessModeRead read access // UnitAccessModeRead read access
UnitAccessModeRead // 2 // UnitAccessModeRead UnitAccessMode = 2
// UnitAccessModeWrite write access // UnitAccessModeWrite write access
UnitAccessModeWrite // 3 UnitAccessModeWrite UnitAccessMode = 3
) )
func (mode UnitAccessMode) ToAccessMode(modeIfUnset perm.AccessMode) perm.AccessMode { func (mode UnitAccessMode) ToAccessMode(modeIfUnset perm.AccessMode) perm.AccessMode {
switch mode { switch mode {
case UnitAccessModeUnset: case UnitAccessModeUnset:
return modeIfUnset return modeIfUnset
case UnitAccessModeNone: // case UnitAccessModeNone:
return perm.AccessModeNone // return perm.AccessModeNone
case UnitAccessModeRead: // case UnitAccessModeRead:
return perm.AccessModeRead // return perm.AccessModeRead
case UnitAccessModeWrite: case UnitAccessModeWrite:
return perm.AccessModeWrite return perm.AccessModeWrite
default: default:
@ -333,5 +336,8 @@ func getUnitsByRepoID(ctx context.Context, repoID int64) (units []*RepoUnit, err
// UpdateRepoUnit updates the provided repo unit // UpdateRepoUnit updates the provided repo unit
func UpdateRepoUnit(ctx context.Context, unit *RepoUnit) error { func UpdateRepoUnit(ctx context.Context, unit *RepoUnit) error {
_, err := db.GetEngine(ctx).ID(unit.ID).Update(unit) _, err := db.GetEngine(ctx).ID(unit.ID).Update(unit)
return err if err != nil {
return fmt.Errorf("UpdateRepoUnit: %v", err)
}
return nil
} }

View file

@ -34,8 +34,8 @@ func TestActionsConfig(t *testing.T) {
} }
func TestRepoUnitAccessMode(t *testing.T) { func TestRepoUnitAccessMode(t *testing.T) {
assert.Equal(t, perm.AccessModeNone, UnitAccessModeNone.ToAccessMode(perm.AccessModeAdmin)) // assert.Equal(t, perm.AccessModeNone, UnitAccessModeNone.ToAccessMode(perm.AccessModeAdmin))
assert.Equal(t, perm.AccessModeRead, UnitAccessModeRead.ToAccessMode(perm.AccessModeAdmin)) // assert.Equal(t, perm.AccessModeRead, UnitAccessModeRead.ToAccessMode(perm.AccessModeAdmin))
assert.Equal(t, perm.AccessModeWrite, UnitAccessModeWrite.ToAccessMode(perm.AccessModeAdmin)) assert.Equal(t, perm.AccessModeWrite, UnitAccessModeWrite.ToAccessMode(perm.AccessModeAdmin))
assert.Equal(t, perm.AccessModeRead, UnitAccessModeUnset.ToAccessMode(perm.AccessModeRead)) assert.Equal(t, perm.AccessModeRead, UnitAccessModeUnset.ToAccessMode(perm.AccessModeRead))
} }

View file

@ -41,6 +41,10 @@ func NewMockWebServer(t *testing.T, liveServerBaseURL, testDataDir string, liveM
log.Info("Mock HTTP Server: got request for path %s", r.URL.Path) log.Info("Mock HTTP Server: got request for path %s", r.URL.Path)
// TODO check request method (support POST?) // TODO check request method (support POST?)
fixturePath := fmt.Sprintf("%s/%s_%s", testDataDir, r.Method, url.PathEscape(path)) fixturePath := fmt.Sprintf("%s/%s_%s", testDataDir, r.Method, url.PathEscape(path))
if strings.Contains(path, "test_repo.git") {
// We got a git clone request against our mock server
fixturePath = fmt.Sprintf("%s/%s", testDataDir, strings.TrimLeft(r.URL.Path, "/"))
}
if liveMode { if liveMode {
liveURL := fmt.Sprintf("%s%s", liveServerBaseURL, path) liveURL := fmt.Sprintf("%s%s", liveServerBaseURL, path)

View file

@ -73,16 +73,20 @@ var userDataColumnNames = sync.OnceValue(func() []string {
// and if found a shadow copy of relevant user fields will be stored into DB and linked to the above report(s). // and if found a shadow copy of relevant user fields will be stored into DB and linked to the above report(s).
// This function should be called before a user is deleted or updated. // This function should be called before a user is deleted or updated.
// //
// In case the User object was already altered before calling this method, just provide the userID and
// nil for unalteredUser; when it is decided that a shadow copy should be created and unalteredUser is nil,
// the user will be retrieved from DB based on the provided userID.
//
// For deletions alteredCols argument must be omitted. // For deletions alteredCols argument must be omitted.
// //
// In case of updates it will first checks whether any of the columns being updated (alteredCols argument) // In case of updates it will first checks whether any of the columns being updated (alteredCols argument)
// is relevant for moderation purposes (i.e. included in the UserData struct). // is relevant for moderation purposes (i.e. included in the UserData struct).
func IfNeededCreateShadowCopyForUser(ctx context.Context, user *User, alteredCols ...string) error { func IfNeededCreateShadowCopyForUser(ctx context.Context, userID int64, unalteredUser *User, alteredCols ...string) error {
// TODO: this can be triggered quite often (e.g. by routers/web/repo/middlewares.go SetDiffViewStyle()) // TODO: this can be triggered quite often (e.g. by routers/web/repo/middlewares.go SetDiffViewStyle())
shouldCheckIfNeeded := len(alteredCols) == 0 // no columns being updated, therefore a deletion shouldCheckIfNeeded := len(alteredCols) == 0 // no columns being updated, therefore a deletion
if !shouldCheckIfNeeded { if !shouldCheckIfNeeded {
// for updates we need to go further only if certain column are being changed // for updates we need to go further only if certain columns are being changed
for _, colName := range userDataColumnNames() { for _, colName := range userDataColumnNames() {
if shouldCheckIfNeeded = slices.Contains(alteredCols, colName); shouldCheckIfNeeded { if shouldCheckIfNeeded = slices.Contains(alteredCols, colName); shouldCheckIfNeeded {
break break
@ -94,18 +98,23 @@ func IfNeededCreateShadowCopyForUser(ctx context.Context, user *User, alteredCol
return nil return nil
} }
shadowCopyNeeded, err := moderation.IsShadowCopyNeeded(ctx, moderation.ReportedContentTypeUser, user.ID) shadowCopyNeeded, err := moderation.IsShadowCopyNeeded(ctx, moderation.ReportedContentTypeUser, userID)
if err != nil { if err != nil {
return err return err
} }
if shadowCopyNeeded { if shadowCopyNeeded {
userData := newUserData(user) if unalteredUser == nil {
if unalteredUser, err = GetUserByID(ctx, userID); err != nil {
return err
}
}
userData := newUserData(unalteredUser)
content, err := json.Marshal(userData) content, err := json.Marshal(userData)
if err != nil { if err != nil {
return err return err
} }
return moderation.CreateShadowCopyForUser(ctx, user.ID, string(content)) return moderation.CreateShadowCopyForUser(ctx, userID, string(content))
} }
return nil return nil

View file

@ -40,8 +40,8 @@ func GetUserOpenIDs(ctx context.Context, uid int64) ([]*UserOpenID, error) {
return openids, nil return openids, nil
} }
// isOpenIDUsed returns true if the openid has been used. // IsOpenIDUsed returns true if the openid has been used.
func isOpenIDUsed(ctx context.Context, uri string) (bool, error) { func IsOpenIDUsed(ctx context.Context, uri string) (bool, error) {
if len(uri) == 0 { if len(uri) == 0 {
return true, nil return true, nil
} }
@ -71,7 +71,7 @@ func (err ErrOpenIDAlreadyUsed) Unwrap() error {
// AddUserOpenID adds an pre-verified/normalized OpenID URI to given user. // AddUserOpenID adds an pre-verified/normalized OpenID URI to given user.
// NOTE: make sure openid.URI is normalized already // NOTE: make sure openid.URI is normalized already
func AddUserOpenID(ctx context.Context, openid *UserOpenID) error { func AddUserOpenID(ctx context.Context, openid *UserOpenID) error {
used, err := isOpenIDUsed(ctx, openid.URI) used, err := IsOpenIDUsed(ctx, openid.URI)
if err != nil { if err != nil {
return err return err
} else if used { } else if used {

View file

@ -21,7 +21,8 @@ import (
// ErrUserRedirectNotExist represents a "UserRedirectNotExist" kind of error. // ErrUserRedirectNotExist represents a "UserRedirectNotExist" kind of error.
type ErrUserRedirectNotExist struct { type ErrUserRedirectNotExist struct {
Name string Name string
MissingPermission bool
} }
// IsErrUserRedirectNotExist check if an error is an ErrUserRedirectNotExist. // IsErrUserRedirectNotExist check if an error is an ErrUserRedirectNotExist.
@ -81,15 +82,6 @@ func GetUserRedirect(ctx context.Context, userName string) (*Redirect, error) {
return redirect, nil return redirect, nil
} }
// LookupUserRedirect look up userID if a user has a redirect name
func LookupUserRedirect(ctx context.Context, userName string) (int64, error) {
redirect, err := GetUserRedirect(ctx, userName)
if err != nil {
return 0, err
}
return redirect.RedirectUserID, nil
}
// NewUserRedirect create a new user redirect // NewUserRedirect create a new user redirect
func NewUserRedirect(ctx context.Context, ID int64, oldUserName, newUserName string) error { func NewUserRedirect(ctx context.Context, ID int64, oldUserName, newUserName string) error {
oldUserName = strings.ToLower(oldUserName) oldUserName = strings.ToLower(oldUserName)

View file

@ -1,26 +0,0 @@
// Copyright 2020 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package user_test
import (
"testing"
"forgejo.org/models/db"
"forgejo.org/models/unittest"
user_model "forgejo.org/models/user"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestLookupUserRedirect(t *testing.T) {
require.NoError(t, unittest.PrepareTestDatabase())
userID, err := user_model.LookupUserRedirect(db.DefaultContext, "olduser1")
require.NoError(t, err)
assert.EqualValues(t, 1, userID)
_, err = user_model.LookupUserRedirect(db.DefaultContext, "doesnotexist")
assert.True(t, user_model.IsErrUserRedirectNotExist(err))
}

View file

@ -927,7 +927,9 @@ func UpdateUserCols(ctx context.Context, u *User, cols ...string) error {
// If the user was reported as abusive and any of the columns being updated is relevant // If the user was reported as abusive and any of the columns being updated is relevant
// for moderation purposes a shadow copy should be created before first update. // for moderation purposes a shadow copy should be created before first update.
if err := IfNeededCreateShadowCopyForUser(ctx, u, cols...); err != nil { // Since u is already altered at this point we are sending nil instead as an argument
// so that the unaltered version will be retrieved from DB.
if err := IfNeededCreateShadowCopyForUser(ctx, u.ID, nil, cols...); err != nil {
return err return err
} }
@ -1161,8 +1163,8 @@ func GetUserByEmail(ctx context.Context, email string) (*User, error) {
email = strings.ToLower(email) email = strings.ToLower(email)
// Otherwise, check in alternative list for activated email addresses // Otherwise, check in alternative list for activated email addresses
emailAddress := &EmailAddress{LowerEmail: email, IsActivated: true} emailAddress := &EmailAddress{}
has, err := db.GetEngine(ctx).Get(emailAddress) has, err := db.GetEngine(ctx).Where("lower_email = ? AND is_activated = ?", email, true).Get(emailAddress)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View file

@ -835,3 +835,25 @@ func TestPronounsPrivacy(t *testing.T) {
assert.Equal(t, "any", user.GetPronouns(true)) assert.Equal(t, "any", user.GetPronouns(true))
}) })
} }
func TestGetUserByEmail(t *testing.T) {
require.NoError(t, unittest.PrepareTestDatabase())
t.Run("Normal", func(t *testing.T) {
u, err := user_model.GetUserByEmail(t.Context(), "user2@example.com")
require.NoError(t, err)
assert.EqualValues(t, 2, u.ID)
})
t.Run("Not activated", func(t *testing.T) {
u, err := user_model.GetUserByEmail(t.Context(), "user11@example.com")
require.ErrorIs(t, err, user_model.ErrUserNotExist{Name: "user11@example.com"})
assert.Nil(t, u)
})
t.Run("Not primary", func(t *testing.T) {
u, err := user_model.GetUserByEmail(t.Context(), "user1-3@example.com")
require.NoError(t, err)
assert.EqualValues(t, 1, u.ID)
})
}

View file

@ -56,14 +56,7 @@ func Local(name, base string, sub ...string) *Layer {
panic(fmt.Sprintf("Unable to get absolute path for %q: %v", base, err)) panic(fmt.Sprintf("Unable to get absolute path for %q: %v", base, err))
} }
root := util.FilePathJoinAbs(base, sub...) root := util.FilePathJoinAbs(base, sub...)
fsRoot, err := os.OpenRoot(root) return &Layer{name: name, fs: os.DirFS(root), localPath: root}
if err != nil {
if errors.Is(err, fs.ErrNotExist) {
return nil
}
panic(fmt.Sprintf("Unable to open layer %q", err))
}
return &Layer{name: name, fs: fsRoot.FS(), localPath: root}
} }
// Bindata returns a new Layer with the given name, it serves files from the given bindata asset. // Bindata returns a new Layer with the given name, it serves files from the given bindata asset.
@ -80,7 +73,7 @@ type LayeredFS struct {
// Layered returns a new LayeredFS with the given layers. The first layer is the top layer. // Layered returns a new LayeredFS with the given layers. The first layer is the top layer.
func Layered(layers ...*Layer) *LayeredFS { func Layered(layers ...*Layer) *LayeredFS {
return &LayeredFS{layers: slices.DeleteFunc(layers, func(layer *Layer) bool { return layer == nil })} return &LayeredFS{layers: layers}
} }
// Open opens the named file. The caller is responsible for closing the file. // Open opens the named file. The caller is responsible for closing the file.

View file

@ -1,4 +1,5 @@
// Copyright 2023 The Gitea Authors. All rights reserved. // Copyright 2023 The Gitea Authors. All rights reserved.
// Copyright 2025 The Forgejo Authors. All rights reserved.
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
package assetfs package assetfs
@ -108,3 +109,30 @@ func TestLayered(t *testing.T) {
assert.Equal(t, "l1", assets.GetFileLayerName("f1")) assert.Equal(t, "l1", assets.GetFileLayerName("f1"))
assert.Equal(t, "l2", assets.GetFileLayerName("f2")) assert.Equal(t, "l2", assets.GetFileLayerName("f2"))
} }
// Allow layers to read symlink outside the layer root.
func TestLayeredSymlink(t *testing.T) {
dir := t.TempDir()
dirl1 := filepath.Join(dir, "l1")
require.NoError(t, os.MkdirAll(dirl1, 0o755))
// Open layer in dir/l1
layer := Local("l1", dirl1)
// Create a file in dir/outside
fileContents := []byte("I am outside the layer")
require.NoError(t, os.WriteFile(filepath.Join(dir, "outside"), fileContents, 0o600))
// Symlink dir/l1/outside to dir/outside
require.NoError(t, os.Symlink(filepath.Join(dir, "outside"), filepath.Join(dirl1, "outside")))
// Open dir/l1/outside.
f, err := layer.Open("outside")
require.NoError(t, err)
defer f.Close()
// Confirm it contains the output of dir/outside
contents, err := io.ReadAll(f)
require.NoError(t, err)
assert.Equal(t, fileContents, contents)
}

View file

@ -10,8 +10,6 @@ import (
"io" "io"
"strconv" "strconv"
"strings" "strings"
"forgejo.org/modules/log"
) )
// ParseTreeEntries parses the output of a `git ls-tree -l` command. // ParseTreeEntries parses the output of a `git ls-tree -l` command.
@ -55,19 +53,9 @@ func parseTreeEntries(data []byte, ptree *Tree) ([]*TreeEntry, error) {
entry.sized = true entry.sized = true
} }
switch string(entryMode) { entry.entryMode, err = parseMode(string(entryMode))
case "100644": if err != nil {
entry.entryMode = EntryModeBlob return nil, err
case "100755":
entry.entryMode = EntryModeExec
case "120000":
entry.entryMode = EntryModeSymlink
case "160000":
entry.entryMode = EntryModeCommit
case "040000", "040755": // git uses 040000 for tree object, but some users may get 040755 for unknown reasons
entry.entryMode = EntryModeTree
default:
return nil, fmt.Errorf("unknown type: %v", string(entryMode))
} }
entry.ID, err = NewIDFromString(string(entryObjectID)) entry.ID, err = NewIDFromString(string(entryObjectID))
@ -108,23 +96,10 @@ loop:
sz -= int64(count) sz -= int64(count)
entry := new(TreeEntry) entry := new(TreeEntry)
entry.ptree = ptree entry.ptree = ptree
entry.entryMode, err = parseMode(string(mode))
switch string(mode) { if err != nil {
case "100644": return nil, err
entry.entryMode = EntryModeBlob
case "100755":
entry.entryMode = EntryModeExec
case "120000":
entry.entryMode = EntryModeSymlink
case "160000":
entry.entryMode = EntryModeCommit
case "40000", "40755": // git uses 40000 for tree object, but some users may get 40755 for unknown reasons
entry.entryMode = EntryModeTree
default:
log.Debug("Unknown mode: %v", string(mode))
return nil, fmt.Errorf("unknown mode: %v", string(mode))
} }
entry.ID = objectFormat.MustID(sha) entry.ID = objectFormat.MustID(sha)
entry.name = string(fname) entry.name = string(fname)
entries = append(entries, entry) entries = append(entries, entry)
@ -135,3 +110,31 @@ loop:
return entries, nil return entries, nil
} }
// Parse the file mode, we cannot hardcode the modes that we expect for
// a variety of reasons (that is not known to us) the permissions bits
// of files can vary, usually the result because of tooling that uses Git in
// a funny way. So we have to parse the mode as a integer and do bit tricks.
func parseMode(modeStr string) (EntryMode, error) {
mode, err := strconv.ParseUint(modeStr, 8, 64)
if err != nil {
return 0, fmt.Errorf("cannot parse mode: %v", err)
}
switch mode & 0o170000 {
case 0o040000:
return EntryModeTree, nil
case 0o120000:
return EntryModeSymlink, nil
case 0o160000:
return EntryModeCommit, nil
case 0o100000:
// Check for the permission bit on the owner.
if mode&0o100 == 0o100 {
return EntryModeExec, nil
}
return EntryModeBlob, nil
}
return 0, fmt.Errorf("unknown mode: %o", mode)
}

View file

@ -101,3 +101,38 @@ func TestParseTreeEntriesInvalid(t *testing.T) {
require.Error(t, err) require.Error(t, err)
assert.Empty(t, entries) assert.Empty(t, entries)
} }
func TestParseMode(t *testing.T) {
ok := func(t *testing.T, mode string, entry EntryMode) {
t.Helper()
actualEntry, err := parseMode(mode)
require.NoError(t, err)
assert.Equal(t, entry, actualEntry)
}
fail := func(t *testing.T, mode string) {
t.Helper()
entry, err := parseMode(mode)
require.Error(t, err)
assert.Zero(t, entry)
}
ok(t, "100644", EntryModeBlob)
ok(t, "100755", EntryModeExec)
ok(t, "100754", EntryModeExec)
ok(t, "100700", EntryModeExec)
ok(t, "100744", EntryModeExec)
ok(t, "120000", EntryModeSymlink)
ok(t, "120644", EntryModeSymlink)
ok(t, "160000", EntryModeCommit)
ok(t, "160644", EntryModeCommit)
ok(t, "040000", EntryModeTree)
ok(t, "040755", EntryModeTree)
ok(t, "040775", EntryModeTree)
ok(t, "040754", EntryModeTree)
fail(t, "not-a-number")
fail(t, "000000")
fail(t, "400000")
fail(t, "111111")
}

View file

@ -18,6 +18,7 @@ import (
"strings" "strings"
"time" "time"
"forgejo.org/modules/log"
"forgejo.org/modules/proxy" "forgejo.org/modules/proxy"
"forgejo.org/modules/setting" "forgejo.org/modules/setting"
"forgejo.org/modules/util" "forgejo.org/modules/util"
@ -160,24 +161,89 @@ func CloneWithArgs(ctx context.Context, args TrustedCmdArgs, from, to string, op
if len(opts.Branch) > 0 { if len(opts.Branch) > 0 {
cmd.AddArguments("-b").AddDynamicArguments(opts.Branch) cmd.AddArguments("-b").AddDynamicArguments(opts.Branch)
} }
cmd.AddDashesAndList(from, to)
if strings.Contains(from, "://") && strings.Contains(from, "@") { envs := os.Environ()
cmd.SetDescription(fmt.Sprintf("clone branch %s from %s to %s (shared: %t, mirror: %t, depth: %d)", opts.Branch, util.SanitizeCredentialURLs(from), to, opts.Shared, opts.Mirror, opts.Depth)) parsedFromURL, err := url.Parse(from)
} else { if err == nil {
cmd.SetDescription(fmt.Sprintf("clone branch %s from %s to %s (shared: %t, mirror: %t, depth: %d)", opts.Branch, from, to, opts.Shared, opts.Mirror, opts.Depth)) envs = proxy.EnvWithProxy(parsedFromURL)
} }
fromURL := from
sanitizedFrom := from
// If the clone URL has credentials, sanitize it and store the credentials in
// a temporary file that git will access.
if strings.Contains(from, "://") && strings.Contains(from, "@") {
sanitizedFrom = util.SanitizeCredentialURLs(from)
if parsedFromURL != nil {
if pwd, has := parsedFromURL.User.Password(); has {
parsedFromURL.User = url.User(parsedFromURL.User.Username())
fromURL = parsedFromURL.String()
credentialsFile, err := os.CreateTemp(os.TempDir(), "forgejo-clone-credentials")
if err != nil {
return err
}
credentialsPath := credentialsFile.Name()
defer func() {
_ = credentialsFile.Close()
if err := util.Remove(credentialsPath); err != nil {
log.Warn("Unable to remove temporary file %q: %v", credentialsPath, err)
}
}()
// Make it read-write.
if err := credentialsFile.Chmod(0o600); err != nil {
return err
}
// Write the password.
if _, err := fmt.Fprint(credentialsFile, pwd); err != nil {
return err
}
askpassFile, err := os.CreateTemp(os.TempDir(), "forgejo-askpass")
if err != nil {
return err
}
askpassPath := askpassFile.Name()
defer func() {
_ = askpassFile.Close()
if err := util.Remove(askpassPath); err != nil {
log.Warn("Unable to remove temporary file %q: %v", askpassPath, err)
}
}()
// Make it executable.
if err := askpassFile.Chmod(0o700); err != nil {
return err
}
// Write the password script.
if _, err := fmt.Fprintf(askpassFile, "exec cat %s", credentialsPath); err != nil {
return err
}
// Close it, so that Git can use it and no busy errors arise.
_ = askpassFile.Close()
_ = credentialsFile.Close()
// Use environments to specify that git should ask for credentials, this
// takes precedences over anything else https://git-scm.com/docs/gitcredentials#_requesting_credentials.
envs = append(envs, "GIT_ASKPASS="+askpassPath)
}
}
}
cmd.SetDescription(fmt.Sprintf("clone branch %s from %s to %s (shared: %t, mirror: %t, depth: %d)", opts.Branch, sanitizedFrom, to, opts.Shared, opts.Mirror, opts.Depth))
cmd.AddDashesAndList(fromURL, to)
if opts.Timeout <= 0 { if opts.Timeout <= 0 {
opts.Timeout = -1 opts.Timeout = -1
} }
envs := os.Environ()
u, err := url.Parse(from)
if err == nil {
envs = proxy.EnvWithProxy(u)
}
stderr := new(bytes.Buffer) stderr := new(bytes.Buffer)
if err = cmd.Run(&RunOpts{ if err = cmd.Run(&RunOpts{
Timeout: opts.Timeout, Timeout: opts.Timeout,

View file

@ -183,6 +183,17 @@ func (repo *Repository) GetDiffShortStat(base, head string) (numFiles, totalAddi
return numFiles, totalAdditions, totalDeletions, err return numFiles, totalAdditions, totalDeletions, err
} }
// GetCommitStat returns the number of files, total additions and total deletions the commit has.
func (repo *Repository) GetCommitShortStat(commitID string) (numFiles, totalAdditions, totalDeletions int, err error) {
cmd := NewCommand(repo.Ctx, "diff-tree", "--shortstat", "--no-commit-id", "--root").AddDynamicArguments(commitID)
stdout, _, err := cmd.RunStdString(&RunOpts{Dir: repo.Path})
if err != nil {
return 0, 0, 0, err
}
return parseDiffStat(stdout)
}
// GetDiffShortStat counts number of changed files, number of additions and deletions // GetDiffShortStat counts number of changed files, number of additions and deletions
func GetDiffShortStat(ctx context.Context, repoPath string, trustedArgs TrustedCmdArgs, dynamicArgs ...string) (numFiles, totalAdditions, totalDeletions int, err error) { func GetDiffShortStat(ctx context.Context, repoPath string, trustedArgs TrustedCmdArgs, dynamicArgs ...string) (numFiles, totalAdditions, totalDeletions int, err error) {
// Now if we call: // Now if we call:

View file

@ -1,4 +1,5 @@
// Copyright 2018 The Gitea Authors. All rights reserved. // Copyright 2018 The Gitea Authors. All rights reserved.
// Copyright 2025 The Forgejo Authors. All rights reserved.
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
package git package git
@ -162,3 +163,83 @@ func TestGetCommitFilesChanged(t *testing.T) {
assert.ElementsMatch(t, tc.files, changedFiles) assert.ElementsMatch(t, tc.files, changedFiles)
} }
} }
func TestGetCommitShortStat(t *testing.T) {
t.Run("repo1_bare", func(t *testing.T) {
repo, err := openRepositoryWithDefaultContext(filepath.Join(testReposDir, "repo1_bare"))
if err != nil {
require.NoError(t, err)
return
}
defer repo.Close()
numFiles, totalAddition, totalDeletions, err := repo.GetCommitShortStat("ce064814f4a0d337b333e646ece456cd39fab612")
require.NoError(t, err)
assert.Equal(t, 0, numFiles)
assert.Equal(t, 0, totalAddition)
assert.Equal(t, 0, totalDeletions)
numFiles, totalAddition, totalDeletions, err = repo.GetCommitShortStat("feaf4ba6bc635fec442f46ddd4512416ec43c2c2")
require.NoError(t, err)
assert.Equal(t, 0, numFiles)
assert.Equal(t, 0, totalAddition)
assert.Equal(t, 0, totalDeletions)
numFiles, totalAddition, totalDeletions, err = repo.GetCommitShortStat("37991dec2c8e592043f47155ce4808d4580f9123")
require.NoError(t, err)
assert.Equal(t, 1, numFiles)
assert.Equal(t, 1, totalAddition)
assert.Equal(t, 0, totalDeletions)
numFiles, totalAddition, totalDeletions, err = repo.GetCommitShortStat("6fbd69e9823458e6c4a2fc5c0f6bc022b2f2acd1")
require.NoError(t, err)
assert.Equal(t, 2, numFiles)
assert.Equal(t, 2, totalAddition)
assert.Equal(t, 0, totalDeletions)
numFiles, totalAddition, totalDeletions, err = repo.GetCommitShortStat("8006ff9adbf0cb94da7dad9e537e53817f9fa5c0")
require.NoError(t, err)
assert.Equal(t, 2, numFiles)
assert.Equal(t, 2, totalAddition)
assert.Equal(t, 0, totalDeletions)
numFiles, totalAddition, totalDeletions, err = repo.GetCommitShortStat("8d92fc957a4d7cfd98bc375f0b7bb189a0d6c9f2")
require.NoError(t, err)
assert.Equal(t, 1, numFiles)
assert.Equal(t, 1, totalAddition)
assert.Equal(t, 0, totalDeletions)
numFiles, totalAddition, totalDeletions, err = repo.GetCommitShortStat("95bb4d39648ee7e325106df01a621c530863a653")
require.NoError(t, err)
assert.Equal(t, 1, numFiles)
assert.Equal(t, 1, totalAddition)
assert.Equal(t, 0, totalDeletions)
})
t.Run("repo6_blame_sha256", func(t *testing.T) {
repo, err := openRepositoryWithDefaultContext(filepath.Join(testReposDir, "repo6_blame_sha256"))
if err != nil {
require.NoError(t, err)
return
}
defer repo.Close()
numFiles, totalAddition, totalDeletions, err := repo.GetCommitShortStat("e2f5660e15159082902960af0ed74fc144921d2b0c80e069361853b3ece29ba3")
require.NoError(t, err)
assert.Equal(t, 1, numFiles)
assert.Equal(t, 1, totalAddition)
assert.Equal(t, 0, totalDeletions)
numFiles, totalAddition, totalDeletions, err = repo.GetCommitShortStat("9347b0198cd1f25017579b79d0938fa89dba34ad2514f0dd92f6bc975ed1a2fe")
require.NoError(t, err)
assert.Equal(t, 1, numFiles)
assert.Equal(t, 1, totalAddition)
assert.Equal(t, 1, totalDeletions)
numFiles, totalAddition, totalDeletions, err = repo.GetCommitShortStat("ab2b57a4fa476fb2edb74dafa577caf918561abbaa8fba0c8dc63c412e17a7cc")
require.NoError(t, err)
assert.Equal(t, 1, numFiles)
assert.Equal(t, 6, totalAddition)
assert.Equal(t, 0, totalDeletions)
})
}

View file

@ -4,7 +4,15 @@
package git package git
import ( import (
"bytes"
"encoding/base64"
"io/fs"
"net/http"
"net/http/httptest"
"net/url"
"os"
"path/filepath" "path/filepath"
"strings"
"testing" "testing"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
@ -54,3 +62,80 @@ func TestRepoGetDivergingCommits(t *testing.T) {
Behind: 2, Behind: 2,
}, do) }, do)
} }
func TestCloneCredentials(t *testing.T) {
calledWithoutPassword := false
askpassFile := ""
credentialsFile := ""
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
if req.URL.Path != "/info/refs" {
return
}
// Get basic authorization.
auth, ok := strings.CutPrefix(req.Header.Get("Authorization"), "Basic ")
if !ok {
w.Header().Set("WWW-Authenticate", `Basic realm="Forgejo"`)
http.Error(w, "require credentials", http.StatusUnauthorized)
return
}
rawAuth, err := base64.StdEncoding.DecodeString(auth)
require.NoError(t, err)
user, password, ok := bytes.Cut(rawAuth, []byte{':'})
assert.True(t, ok)
// First time around Git tries without password (that's specified in the clone URL).
// It demonstrates it doesn't immediately uses askpass.
if len(password) == 0 {
assert.EqualValues(t, "oauth2", user)
calledWithoutPassword = true
w.Header().Set("WWW-Authenticate", `Basic realm="Forgejo"`)
http.Error(w, "require credentials", http.StatusUnauthorized)
return
}
assert.EqualValues(t, "oauth2", user)
assert.EqualValues(t, "some_token", password)
tmpDir := os.TempDir()
// Verify that the askpass implementation was used.
files, err := fs.Glob(os.DirFS(tmpDir), "forgejo-askpass*")
require.NoError(t, err)
for _, fileName := range files {
fileContent, err := os.ReadFile(filepath.Join(tmpDir, fileName))
require.NoError(t, err)
credentialsPath, ok := bytes.CutPrefix(fileContent, []byte(`exec cat `))
assert.True(t, ok)
fileContent, err = os.ReadFile(string(credentialsPath))
require.NoError(t, err)
assert.EqualValues(t, "some_token", fileContent)
askpassFile = filepath.Join(tmpDir, fileName)
credentialsFile = string(credentialsPath)
}
}))
serverURL, err := url.Parse(server.URL)
require.NoError(t, err)
serverURL.User = url.UserPassword("oauth2", "some_token")
require.NoError(t, Clone(t.Context(), serverURL.String(), t.TempDir(), CloneRepoOptions{}))
assert.True(t, calledWithoutPassword)
assert.NotEmpty(t, askpassFile)
assert.NotEmpty(t, credentialsFile)
// Check that the helper files are gone.
_, err = os.Stat(askpassFile)
require.ErrorIs(t, err, fs.ErrNotExist)
_, err = os.Stat(credentialsFile)
require.ErrorIs(t, err, fs.ErrNotExist)
}

View file

@ -97,7 +97,7 @@ func HighlightSearchResultCode(filename string, lineNums []int, highlightRanges
conv := hcd.ConvertToPlaceholders(string(hl)) conv := hcd.ConvertToPlaceholders(string(hl))
convLines := strings.Split(conv, "\n") convLines := strings.Split(conv, "\n")
// each highlightRange is of the form [line number, start pos, end pos] // each highlightRange is of the form [line number, start byte offset, end byte offset]
for _, highlightRange := range highlightRanges { for _, highlightRange := range highlightRanges {
ln, start, end := highlightRange[0], highlightRange[1], highlightRange[2] ln, start, end := highlightRange[0], highlightRange[1], highlightRange[2]
line := convLines[ln] line := convLines[ln]
@ -105,15 +105,18 @@ func HighlightSearchResultCode(filename string, lineNums []int, highlightRanges
continue continue
} }
sr := strings.NewReader(line)
sb := strings.Builder{} sb := strings.Builder{}
count := -1 count := -1
isOpen := false isOpen := false
for _, r := range line { for r, size, err := sr.ReadRune(); err == nil; r, size, err = sr.ReadRune() {
if token, ok := hcd.PlaceholderTokenMap[r]; if token, ok := hcd.PlaceholderTokenMap[r];
// token was not found // token was not found
!ok || !ok {
// token was marked as used count += size
token == "" || } else if
// token was marked as used
token == "" ||
// the token is not an valid html tag emitted by chroma // the token is not an valid html tag emitted by chroma
!(len(token) > 6 && (token[0:5] == "<span" || token[0:6] == "</span")) { !(len(token) > 6 && (token[0:5] == "<span" || token[0:6] == "</span")) {
count++ count++
@ -132,15 +135,15 @@ func HighlightSearchResultCode(filename string, lineNums []int, highlightRanges
continue continue
} }
switch count { switch {
case end: case count >= end:
// if tag is not open, no need to close // if tag is not open, no need to close
if !isOpen { if !isOpen {
break break
} }
sb.WriteRune(endTag) sb.WriteRune(endTag)
isOpen = false isOpen = false
case start: case count >= start:
// if tag is open, do not open again // if tag is open, do not open again
if isOpen { if isOpen {
break break
@ -161,7 +164,7 @@ func HighlightSearchResultCode(filename string, lineNums []int, highlightRanges
highlightedLines := strings.Split(hcd.Recover(conv), "\n") highlightedLines := strings.Split(hcd.Recover(conv), "\n")
// The lineNums outputted by highlight.Code might not match the original lineNums, because "highlight" removes the last `\n` // The lineNums outputted by highlight.Code might not match the original lineNums, because "highlight" removes the last `\n`
lines := make([]ResultLine, min(len(highlightedLines), len(lineNums))) lines := make([]ResultLine, min(len(highlightedLines), len(lineNums)))
for i := 0; i < len(lines); i++ { for i := range len(lines) {
lines[i].Num = lineNums[i] lines[i].Num = lineNums[i]
lines[i].FormattedContent = template.HTML(highlightedLines[i]) lines[i].FormattedContent = template.HTML(highlightedLines[i])
} }

View file

@ -0,0 +1,122 @@
// Copyright 2025 The Forgejo Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package code
import (
"html/template"
"strings"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestHighlightSearchResultCode(t *testing.T) {
opts := []struct {
Title string
File string
Lines []int
Range [][3]int
Code string
Result []template.HTML
}{
{
Title: "One Match Text",
File: "test.txt",
Range: [][3]int{{1, 5, 9}},
Code: "First Line\nMark this only\nThe End",
Result: []template.HTML{
"First Line",
"Mark <span class=\"search-highlight\">this</span> only",
"The End",
},
},
{
Title: "Two Match Text",
File: "test.txt",
Range: [][3]int{
{1, 5, 9},
{2, 5, 9},
},
Code: "First Line\nMark this only\nMark this too\nThe End",
Result: []template.HTML{
"First Line",
"Mark <span class=\"search-highlight\">this</span> only",
"Mark <span class=\"search-highlight\">this</span> too",
"The End",
},
},
{
Title: "Unicode Before",
File: "test.txt",
Range: [][3]int{{1, 10, 14}},
Code: "First Line\nMark 👉 this only\nThe End",
Result: []template.HTML{
"First Line",
"Mark 👉 <span class=\"search-highlight\">this</span> only",
"The End",
},
},
{
Title: "Unicode Between",
File: "test.txt",
Range: [][3]int{{1, 5, 14}},
Code: "First Line\nMark this 😊 only\nThe End",
Result: []template.HTML{
"First Line",
"Mark <span class=\"search-highlight\">this 😊</span> only",
"The End",
},
},
{
Title: "Unicode Before And Between",
File: "test.txt",
Range: [][3]int{{1, 10, 19}},
Code: "First Line\nMark 👉 this 😊 only\nThe End",
Result: []template.HTML{
"First Line",
"Mark 👉 <span class=\"search-highlight\">this 😊</span> only",
"The End",
},
},
{
Title: "Golang",
File: "test.go",
Range: [][3]int{{1, 14, 23}},
Code: "func main() {\n\tfmt.Println(\"mark this\")\n}",
Result: []template.HTML{
"<span class=\"kd\">func</span> <span class=\"nf\">main</span><span class=\"p\">(</span><span class=\"p\">)</span> <span class=\"p\">{</span>",
"\t<span class=\"nx\">fmt</span><span class=\"p\">.</span><span class=\"nf\">Println</span><span class=\"p\">(</span><span class=\"s\">&#34;<span class=\"search-highlight\">mark this</span>&#34;</span><span class=\"p\">)</span>",
"<span class=\"p\">}</span>",
},
},
{
Title: "Golang Unicode",
File: "test.go",
Range: [][3]int{{1, 14, 28}},
Code: "func main() {\n\tfmt.Println(\"mark this 😊\")\n}",
Result: []template.HTML{
"<span class=\"kd\">func</span> <span class=\"nf\">main</span><span class=\"p\">(</span><span class=\"p\">)</span> <span class=\"p\">{</span>",
"\t<span class=\"nx\">fmt</span><span class=\"p\">.</span><span class=\"nf\">Println</span><span class=\"p\">(</span><span class=\"s\">&#34;<span class=\"search-highlight\">mark this 😊</span>&#34;</span><span class=\"p\">)</span>",
"<span class=\"p\">}</span>",
},
},
}
for _, o := range opts {
t.Run(o.Title, func(t *testing.T) {
lines := []int{}
for i := range strings.Count(strings.TrimSuffix(o.Code, "\n"), "\n") + 1 {
lines = append(lines, i+1)
}
res := HighlightSearchResultCode(o.File, lines, o.Range, o.Code)
assert.Len(t, res, len(o.Result))
assert.Len(t, res, len(lines))
for i, r := range res {
require.Equal(t, lines[i], r.Num)
require.Equal(t, o.Result[i], r.FormattedContent)
}
})
}
}

View file

@ -46,7 +46,7 @@ var (
// https://www.debian.org/doc/debian-policy/ch-controlfields.html#source // https://www.debian.org/doc/debian-policy/ch-controlfields.html#source
namePattern = regexp.MustCompile(`\A[a-z0-9][a-z0-9+-.]+\z`) namePattern = regexp.MustCompile(`\A[a-z0-9][a-z0-9+-.]+\z`)
// https://www.debian.org/doc/debian-policy/ch-controlfields.html#version // https://www.debian.org/doc/debian-policy/ch-controlfields.html#version
versionPattern = regexp.MustCompile(`\A(?:[0-9]:)?[a-zA-Z0-9.+~]+(?:-[a-zA-Z0-9.+-~]+)?\z`) versionPattern = regexp.MustCompile(`\A(?:[1-9]?[0-9]:)?[a-zA-Z0-9.+~]+(?:-[a-zA-Z0-9.+-~]+)?\z`)
) )
type Package struct { type Package struct {

View file

@ -167,6 +167,14 @@ func TestParseControlFile(t *testing.T) {
require.ErrorIs(t, err, ErrInvalidArchitecture) require.ErrorIs(t, err, ErrInvalidArchitecture)
}) })
t.Run("ValidVersionEpoch", func(t *testing.T) {
for _, version := range []string{"0:1.2.3-test", "1:1.2.3-test", "9:1.2.3-test", "10:1.2.3-test", "37:1.2.3-test", "99:1.2.3-test"} {
p, err := ParseControlFile(buildContent(packageName, version, packageArchitecture))
require.NoError(t, err)
assert.NotNil(t, p)
}
})
t.Run("Valid", func(t *testing.T) { t.Run("Valid", func(t *testing.T) {
content := buildContent(packageName, packageVersion, packageArchitecture) content := buildContent(packageName, packageVersion, packageArchitecture)
full := content.String() full := content.String()

View file

@ -232,9 +232,10 @@ func getEntries(h *rpmutils.RpmHeader, namesTag, versionsTag, flagsTag int, repo
case "alt": case "alt":
for i := range names { for i := range names {
e := &Entry{ e := &Entry{
Name: names[i],
AltFlags: uint32(flags[i]), AltFlags: uint32(flags[i]),
Version: versions[i],
} }
e.Version = versions[i]
entries = append(entries, e) entries = append(entries, e)
} }
} }

View file

@ -35,6 +35,7 @@ var (
PasswordHashAlgo string PasswordHashAlgo string
PasswordCheckPwn bool PasswordCheckPwn bool
SuccessfulTokensCacheSize int SuccessfulTokensCacheSize int
DisableQueryAuthToken bool
CSRFCookieName = "_csrf" CSRFCookieName = "_csrf"
CSRFCookieHTTPOnly = true CSRFCookieHTTPOnly = true
) )
@ -159,4 +160,14 @@ func loadSecurityFrom(rootCfg ConfigProvider) {
PasswordComplexity = append(PasswordComplexity, name) PasswordComplexity = append(PasswordComplexity, name)
} }
} }
sectionHasDisableQueryAuthToken := sec.HasKey("DISABLE_QUERY_AUTH_TOKEN")
// TODO: default value should be true in future releases
DisableQueryAuthToken = sec.Key("DISABLE_QUERY_AUTH_TOKEN").MustBool(false)
// warn if the setting is set to false explicitly
if sectionHasDisableQueryAuthToken && !DisableQueryAuthToken {
log.Warn("Enabling Query API Auth tokens is not recommended. DISABLE_QUERY_AUTH_TOKEN will be removed in Forgejo v13.0.0.")
}
} }

View file

@ -16,6 +16,8 @@ import (
"forgejo.org/modules/json" "forgejo.org/modules/json"
"forgejo.org/modules/log" "forgejo.org/modules/log"
"forgejo.org/modules/util" "forgejo.org/modules/util"
"github.com/caddyserver/certmagic"
) )
// Scheme describes protocol types // Scheme describes protocol types
@ -206,7 +208,7 @@ func loadServerFrom(rootCfg ConfigProvider) {
EnableAcme = sec.Key("ENABLE_LETSENCRYPT").MustBool(false) EnableAcme = sec.Key("ENABLE_LETSENCRYPT").MustBool(false)
} }
if EnableAcme { if EnableAcme {
AcmeURL = sec.Key("ACME_URL").MustString("") AcmeURL = sec.Key("ACME_URL").MustString(certmagic.LetsEncryptProductionCA)
AcmeCARoot = sec.Key("ACME_CA_ROOT").MustString("") AcmeCARoot = sec.Key("ACME_CA_ROOT").MustString("")
if sec.HasKey("ACME_ACCEPTTOS") { if sec.HasKey("ACME_ACCEPTTOS") {

View file

@ -76,8 +76,13 @@ var getBucketVersioning = func(ctx context.Context, minioClient *minio.Client, b
return err return err
} }
var initializationTimeout = 30 * time.Second
// NewMinioStorage returns a minio storage // NewMinioStorage returns a minio storage
func NewMinioStorage(ctx context.Context, cfg *setting.Storage) (ObjectStorage, error) { func NewMinioStorage(ctx context.Context, cfg *setting.Storage) (ObjectStorage, error) {
initCtx, cancel := context.WithTimeout(ctx, initializationTimeout)
defer cancel()
config := cfg.MinioConfig config := cfg.MinioConfig
if config.ChecksumAlgorithm != "" && config.ChecksumAlgorithm != "default" && config.ChecksumAlgorithm != "md5" { if config.ChecksumAlgorithm != "" && config.ChecksumAlgorithm != "default" && config.ChecksumAlgorithm != "md5" {
return nil, fmt.Errorf("invalid minio checksum algorithm: %s", config.ChecksumAlgorithm) return nil, fmt.Errorf("invalid minio checksum algorithm: %s", config.ChecksumAlgorithm)
@ -112,7 +117,7 @@ func NewMinioStorage(ctx context.Context, cfg *setting.Storage) (ObjectStorage,
// Otherwise even if the request itself fails (403, 404, etc), the code should still continue because the parameters seem "good" enough. // Otherwise even if the request itself fails (403, 404, etc), the code should still continue because the parameters seem "good" enough.
// Keep in mind that GetBucketVersioning requires "owner" to really succeed, so it can't be used to check the existence. // Keep in mind that GetBucketVersioning requires "owner" to really succeed, so it can't be used to check the existence.
// Not using "BucketExists (HeadBucket)" because it doesn't include detailed failure reasons. // Not using "BucketExists (HeadBucket)" because it doesn't include detailed failure reasons.
err = getBucketVersioning(ctx, minioClient, config.Bucket) err = getBucketVersioning(initCtx, minioClient, config.Bucket)
if err != nil { if err != nil {
errResp, ok := err.(minio.ErrorResponse) errResp, ok := err.(minio.ErrorResponse)
if !ok { if !ok {
@ -125,13 +130,13 @@ func NewMinioStorage(ctx context.Context, cfg *setting.Storage) (ObjectStorage,
} }
// Check to see if we already own this bucket // Check to see if we already own this bucket
exists, err := minioClient.BucketExists(ctx, config.Bucket) exists, err := minioClient.BucketExists(initCtx, config.Bucket)
if err != nil { if err != nil {
return nil, convertMinioErr(err) return nil, convertMinioErr(err)
} }
if !exists { if !exists {
if err := minioClient.MakeBucket(ctx, config.Bucket, minio.MakeBucketOptions{ if err := minioClient.MakeBucket(initCtx, config.Bucket, minio.MakeBucketOptions{
Region: config.Location, Region: config.Location,
}); err != nil { }); err != nil {
return nil, convertMinioErr(err) return nil, convertMinioErr(err)

View file

@ -9,8 +9,10 @@ import (
"net/http/httptest" "net/http/httptest"
"os" "os"
"testing" "testing"
"time"
"forgejo.org/modules/setting" "forgejo.org/modules/setting"
"forgejo.org/modules/test"
"github.com/minio/minio-go/v7" "github.com/minio/minio-go/v7"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
@ -217,3 +219,41 @@ func TestMinioCredentials(t *testing.T) {
}) })
}) })
} }
func TestNewMinioStorageInitializationTimeout(t *testing.T) {
defer test.MockVariableValue(&getBucketVersioning, func(ctx context.Context, minioClient *minio.Client, bucket string) error {
select {
case <-ctx.Done():
return ctx.Err()
case <-time.After(1 * time.Millisecond):
return minio.ErrorResponse{
StatusCode: http.StatusBadRequest,
Code: "TestError",
Message: "Mocked error for testing",
}
}
})()
settings := &setting.Storage{
MinioConfig: setting.MinioStorageConfig{
Endpoint: "localhost",
AccessKeyID: "123456",
SecretAccessKey: "12345678",
Bucket: "bucket",
Location: "us-east-1",
},
}
// Verify that we reach `getBucketVersioning` and return the error from our mock.
storage, err := NewMinioStorage(t.Context(), settings)
require.ErrorContains(t, err, "Mocked error for testing")
assert.Nil(t, storage)
defer test.MockVariableValue(&initializationTimeout, 1*time.Nanosecond)()
// Now that the timeout is super low, verify that we get a context deadline exceeded error from our mock.
storage, err = NewMinioStorage(t.Context(), settings)
require.Error(t, err)
require.ErrorIs(t, err, context.DeadlineExceeded, "err must be a context deadline exceeded error, but was %v", err)
assert.Nil(t, storage)
}

View file

@ -3,7 +3,11 @@
package util package util
import "testing" import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestShellEscape(t *testing.T) { func TestShellEscape(t *testing.T) {
tests := []struct { tests := []struct {
@ -79,13 +83,23 @@ func TestShellEscape(t *testing.T) {
"Single quotes don't need to escape except for '...", "Single quotes don't need to escape except for '...",
"~/<gitea> ${gitea} `gitea` (gitea) !gitea! \"gitea\" \\gitea\\ 'gitea'", "~/<gitea> ${gitea} `gitea` (gitea) !gitea! \"gitea\" \\gitea\\ 'gitea'",
"~/'<gitea> ${gitea} `gitea` (gitea) !gitea! \"gitea\" \\gitea\\ '\\''gitea'\\'", "~/'<gitea> ${gitea} `gitea` (gitea) !gitea! \"gitea\" \\gitea\\ '\\''gitea'\\'",
}, {
"Inline command",
"some`echo foo`thing",
"\"some\\`echo foo\\`thing\"",
}, {
"Substitution",
`;${HOME}`,
`";\${HOME}"`,
}, {
"ANSI Escape codes (not escaped)",
"\033[31;1;4mHello\033[0m",
"\"\x1b[31;1;4mHello\x1b[0m\"",
}, },
} }
for _, tt := range tests { for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
if got := ShellEscape(tt.toEscape); got != tt.want { assert.Equal(t, tt.want, ShellEscape(tt.toEscape))
t.Errorf("ShellEscape(%q):\nGot: %s\nWanted: %s", tt.toEscape, got, tt.want)
}
}) })
} }
} }

View file

@ -95,3 +95,25 @@ func UnsafeBytesToString(b []byte) string {
func UnsafeStringToBytes(s string) []byte { func UnsafeStringToBytes(s string) []byte {
return unsafe.Slice(unsafe.StringData(s), len(s)) return unsafe.Slice(unsafe.StringData(s), len(s))
} }
// AsciiEqualFold is taken from Golang, but reimplemented here, since the original is not exposed to public
// Taken from: https://cs.opensource.google/go/go/+/refs/tags/go1.24.4:src/net/http/internal/ascii/print.go
func ASCIIEqualFold(s, t string) bool {
if len(s) != len(t) {
return false
}
for i := 0; i < len(s); i++ {
if ASCIILower(s[i]) != ASCIILower(t[i]) {
return false
}
}
return true
}
// AsciiLower returns the ASCII lowercase version of b.
func ASCIILower(b byte) byte {
if 'A' <= b && b <= 'Z' {
return b + ('a' - 'A')
}
return b
}

View file

@ -45,3 +45,29 @@ func TestToSnakeCase(t *testing.T) {
assert.Equal(t, expected, ToSnakeCase(input)) assert.Equal(t, expected, ToSnakeCase(input))
} }
} }
func TestASCIIEqualFold(t *testing.T) {
cases := map[string]struct {
First string
Second string
Expected bool
}{
"Empty String": {First: "", Second: "", Expected: true},
"Single Letter Ident": {First: "h", Second: "h", Expected: true},
"Single Letter Equal": {First: "h", Second: "H", Expected: true},
"Single Letter Unequal": {First: "h", Second: "g", Expected: false},
"Simple Match Ident": {First: "someString", Second: "someString", Expected: true},
"Simple Match Equal": {First: "someString", Second: "someSTRIng", Expected: true},
"Simple Match Unequal": {First: "someString", Second: "sameString", Expected: false},
"Different Length": {First: "abcdef", Second: "abcdefg", Expected: false},
"Unicode Kelvin": {First: "ghijklm", Second: "GHIJ\u212ALM", Expected: false},
}
for name := range cases {
c := cases[name]
t.Run(name, func(t *testing.T) {
Actual := ASCIIEqualFold(c.First, c.Second)
assert.Equal(t, c.Expected, Actual)
})
}
}

View file

@ -72,16 +72,23 @@ func validateEmailBasic(email string) error {
} }
func validateEmailDomain(email string) error { func validateEmailDomain(email string) error {
if !IsEmailDomainAllowed(email) { if _, ok := IsEmailDomainAllowed(email); !ok {
return ErrEmailInvalid{email} return ErrEmailInvalid{email}
} }
return nil return nil
} }
func IsEmailDomainAllowed(email string) bool { func IsEmailDomainAllowed(email string) (validEmail, ok bool) {
return isEmailDomainAllowedInternal( // Normalized the address. This strips for example comments which could be
email, // used to smuggle a different domain
parsedAddress, err := mail.ParseAddress(email)
if err != nil {
return false, false
}
return true, isEmailDomainAllowedInternal(
parsedAddress.Address,
setting.Service.EmailDomainAllowList, setting.Service.EmailDomainAllowList,
setting.Service.EmailDomainBlockList) setting.Service.EmailDomainBlockList)
} }

View file

@ -67,8 +67,3 @@ func TestEmailAddressValidate(t *testing.T) {
}) })
} }
} }
func TestEmailDomainAllowList(t *testing.T) {
res := IsEmailDomainAllowed("someuser@localhost.localdomain")
assert.True(t, res)
}

File diff suppressed because it is too large Load diff

View file

@ -7,10 +7,20 @@ sign_in = Увайсці
sign_in_or = або sign_in_or = або
sign_out = Выйсці sign_out = Выйсці
sign_up = Зарэгістравацца sign_up = Зарэгістравацца
link_account = Звязаць Уліковы запіс link_account = Звязаць уліковы запіс
register = Рэгістрацыя register = Рэгістрацыя
version = Версія version = Версія
powered_by = Працуе на ℅s powered_by = Працуе на ℅s
page = Старонка page = Старонка
home = Галоўная Старонка home = Галоўная Старонка
sign_in_with_provider = Увайсці з %s sign_in_with_provider = Увайсці з %s
template = Шаблон
language = Мова
notifications = Апавяшчэнні
create_new = Стварыць…
user_profile_and_more = Профіль і налады…
signed_in_as = Увайшоў як
enable_javascript = Гэты вэб-сайт патрабуе JavaScript.
toc = Змест
licenses = Ліцэнзіі
return_to_forgejo = Вярнуцца да Forgejo

View file

@ -142,6 +142,8 @@ webauthn_error = Неуспешно прочитане на вашия ключ
webauthn_unsupported_browser = Вашият браузър в момента не поддържа WebAuthn. webauthn_unsupported_browser = Вашият браузър в момента не поддържа WebAuthn.
webauthn_error_duplicated = Ключът за сигурност не е разрешен за тази заявка. Моля, уверете се, че ключът не е вече регистриран. webauthn_error_duplicated = Ключът за сигурност не е разрешен за тази заявка. Моля, уверете се, че ключът не е вече регистриран.
tracked_time_summary = Обобщение на проследеното време въз основа на филтрите в списъка със задачи
[settings] [settings]
ui = Тема ui = Тема
delete_key = Премахване delete_key = Премахване
@ -324,7 +326,7 @@ permissions_list = Разрешения:
edit_oauth2_application = Редактиране на OAuth2 приложение edit_oauth2_application = Редактиране на OAuth2 приложение
remove_oauth2_application = Премахване на OAuth2 приложение remove_oauth2_application = Премахване на OAuth2 приложение
twofa_recovery_tip = Ако загубите устройството си, ще можете да използвате ключ за еднократно възстановяване, за да си върнете достъпа до акаунта. twofa_recovery_tip = Ако загубите устройството си, ще можете да използвате ключ за еднократно възстановяване, за да си върнете достъпа до акаунта.
visibility.private_tooltip = Видим само за членове на организации, в които участвате visibility.private_tooltip = Видим само за участници в организации, в които участвате
quota.applies_to_user = Следните правила за квота се прилагат за вашия акаунт quota.applies_to_user = Следните правила за квота се прилагат за вашия акаунт
quota.rule.no_limit = Неограничена quota.rule.no_limit = Неограничена
hints = Подсказки hints = Подсказки
@ -381,6 +383,20 @@ comment_type_group_lock = Състояние на заключване
can_not_add_email_activations_pending = Има чакаща активация, опитайте отново след няколко минути, ако искате да добавите нова ел. поща. can_not_add_email_activations_pending = Има чакаща активация, опитайте отново след няколко минути, ако искате да добавите нова ел. поща.
storage_overview = Преглед на съхранението storage_overview = Преглед на съхранението
webauthn = Двуфакторно удостоверяване (Ключове за сигурност)
quota.sizes.all = Всички
quota.sizes.repos.all = Хранилища
quota.sizes.repos.public = Публични хранилища
quota.sizes.repos.private = Частни хранилища
quota.sizes.git.all = Git съдържание
quota.sizes.git.lfs = Git LFS
quota.sizes.assets.attachments.all = Прикачени файлове
quota.sizes.assets.attachments.issues = Прикачени файлове към задачи
quota.sizes.assets.attachments.releases = Прикачени файлове към издания
quota.sizes.assets.artifacts = Артефакти
quota.sizes.assets.packages.all = Пакети
quota.sizes.wiki = Уики
[packages] [packages]
container.labels.value = Стойност container.labels.value = Стойност
alpine.repository.repositories = Хранилища alpine.repository.repositories = Хранилища
@ -439,6 +455,113 @@ arch.version.conflicts = В конфликт
alpine.repository.branches = Клонове alpine.repository.branches = Клонове
arch.pacman.repo.multi.item = Конфигурация за %s arch.pacman.repo.multi.item = Конфигурация за %s
desc = Управление на пакетите на хранилището.
alpine.registry = Настройте този регистър, като добавите URL адреса във вашия файл <code>/etc/apk/repositories</code>:
alpine.registry.key = Изтеглете публичния RSA ключ на регистъра в папката <code>/etc/apk/keys/</code>, за да проверите подписа на индекса:
alpine.registry.info = Изберете $branch и $repository от списъка по-долу.
alpine.install = За да инсталирате пакета, изпълнете следната команда:
arch.version.properties = Свойства на версията
arch.version.makedepends = Зависимости за изграждането
arch.version.checkdepends = Зависимости за проверката
chef.registry = Настройте този регистър във вашия файл <code>~/.chef/config.rb</code>:
chef.install = За да инсталирате пакета, изпълнете следната команда:
composer.registry = Настройте този регистър във вашия файл <code>~/.composer/config.json</code>:
composer.install = За да инсталирате пакета с Composer, изпълнете следната команда:
composer.dependencies = Зависимости
conan.details.repository = Хранилище
conan.registry = Настройте този регистър от командния ред:
conan.install = За да инсталирате пакета с Conan, изпълнете следната команда:
conda.registry = Настройте този регистър като Conda хранилище във вашия файл <code>.condarc</code>:
conda.install = За да инсталирате пакета с Conda, изпълнете следната команда:
container.pull = Издърпайте образа от командния ред:
container.multi_arch = ОС / Архитектура
container.layers = Слоеве на образа
cran.registry = Настройте този регистър във вашия файл <code>Rprofile.site</code>:
cran.install = За да инсталирате пакета, изпълнете следната команда:
debian.registry = Настройте този регистър от командния ред:
debian.registry.info = Изберете $distribution и $component от списъка по-долу.
debian.install = За да инсталирате пакета, изпълнете следната команда:
debian.repository = Информация за хранилището
debian.repository.distributions = Дистрибуции
debian.repository.components = Компоненти
debian.repository.architectures = Архитектури
helm.registry = Настройте този регистър от командния ред:
helm.install = За да инсталирате пакета, изпълнете следната команда:
maven.registry = Настройте този регистър във файла на вашия проект <code>pom.xml</code>:
maven.install = За да използвате пакета, включете следното в блока <code>dependencies</code> във файла <code>pom.xml</code>:
maven.install2 = Изпълнете през командния ред:
maven.download = За да изтеглите зависимостта, изпълнете през командния ред:
nuget.registry = Настройте този регистър от командния ред:
nuget.install = За да инсталирате пакета с NuGet, изпълнете следната команда:
nuget.dependency.framework = Целева платформа
npm.registry = Настройте този регистър във файла на вашия проект <code>.npmrc</code>:
npm.install = За да инсталирате пакета с npm, изпълнете следната команда:
npm.install2 = или го добавете във файла package.json:
npm.dependencies.optional = Опционални зависимости
npm.details.tag = Маркер
pub.install = За да инсталирате пакета с Dart, изпълнете следната команда:
pypi.requires = Изисква Python
pypi.install = За да инсталирате пакета с pip, изпълнете следната команда:
rpm.registry = Настройте този регистър от командния ред:
rpm.distros.redhat = на дистрибуции, базирани на RedHat
rpm.distros.suse = на дистрибуции, базирани на SUSE
rpm.install = За да инсталирате пакета, изпълнете следната команда:
rpm.repository = Информация за хранилището
rpm.repository.architectures = Архитектури
rpm.repository.multiple_groups = Този пакет е наличен в няколко групи.
alt.registry = Настройте този регистър от командния ред:
alt.registry.install = За да инсталирате пакета, изпълнете следната команда:
alt.install = Инсталиране на пакет
alt.setup = Добавете хранилище към списъка със свързани хранилища (изберете необходимата архитектура вместо „_arch_“):
alt.repository = Информация за хранилището
alt.repository.architectures = Архитектури
alt.repository.multiple_groups = Този пакет е наличен в няколко групи.
swift.registry = Настройте този регистър от командния ред:
swift.install = Добавете пакета във вашия файл <code>Package.swift</code>:
swift.install2 = и изпълнете следната команда:
vagrant.install = За да добавите Vagrant box, изпълнете следната команда:
settings.link = Свързване на този пакет с хранилище
settings.link.description = Ако свържете пакет с хранилище, пакетът се изброява в списъка с пакети на хранилището.
settings.link.select = Изберете хранилище
settings.link.button = Обновяване на връзката на хранилището
settings.link.success = Връзката на хранилището беше успешно обновена.
settings.link.error = Неуспешно обновяване на връзката на хранилището.
settings.delete.description = Изтриването на пакет е трайно и не може да бъде отменено.
settings.delete.notice = На път сте да изтриете %s (%s). Тази операция е необратима, сигурни ли сте?
owner.settings.cargo.title = Индекс на регистъра на Cargo
owner.settings.cargo.initialize = Инициализиране на индекс
owner.settings.cargo.initialize.description = Необходимо е специално Git хранилище за индекс, за да се използва регистърът на Cargo. Използването на тази опция ще (пре)създаде хранилището и ще го конфигурира автоматично.
owner.settings.cargo.initialize.error = Неуспешно инициализиране на индекса на Cargo: %v
owner.settings.cargo.initialize.success = Индексът на Cargo беше успешно създаден.
owner.settings.cargo.rebuild = Преизграждане на индекс
owner.settings.cargo.rebuild.description = Преизграждането може да бъде полезно, ако индексът не е синхронизиран със съхранените Cargo пакети.
owner.settings.cargo.rebuild.error = Неуспешно преизграждане на индекса на Cargo: %v
owner.settings.cargo.rebuild.success = Индексът на Cargo беше успешно преизграден.
owner.settings.cargo.rebuild.no_index = Не може да се преизгради, няма инициализиран индекс.
owner.settings.cleanuprules.title = Правила за почистване
owner.settings.cleanuprules.add = Добавяне на правило за почистване
owner.settings.cleanuprules.edit = Редактиране на правилото за почистване
owner.settings.cleanuprules.none = Все още няма правила за почистване.
owner.settings.cleanuprules.preview = Преглед на правило за почистване
owner.settings.cleanuprules.preview.overview = %d пакета са насрочени за премахване.
owner.settings.cleanuprules.preview.none = Правилото за почистване не съвпада с нито един пакет.
owner.settings.cleanuprules.enabled = Включено
owner.settings.cleanuprules.pattern_full_match = Прилагане на шаблона към пълното име на пакета
owner.settings.cleanuprules.keep.title = Версиите, които съответстват на тези правила, се запазват, дори ако съответстват на правило за премахване по-долу.
owner.settings.cleanuprules.keep.count = Запазване на най-новите
owner.settings.cleanuprules.keep.count.1 = 1 версия на пакет
owner.settings.cleanuprules.keep.count.n = %d версии на пакет
owner.settings.cleanuprules.keep.pattern = Запазване на версии, съответстващи на
owner.settings.cleanuprules.keep.pattern.container = Версията <code>latest</code> винаги се запазва за Container пакети.
owner.settings.cleanuprules.remove.title = Версиите, които съответстват на тези правила, се премахват, освен ако правило по-горе не казва да се запазят.
owner.settings.cleanuprules.remove.days = Премахване на версии, по-стари от
owner.settings.cleanuprules.remove.pattern = Премахване на версии, съответстващи на
owner.settings.cleanuprules.success.update = Правилото за почистване е обновено.
owner.settings.cleanuprules.success.delete = Правилото за почистване е изтрито.
owner.settings.chef.title = Регистър на Chef
owner.settings.chef.keypair = Генериране на двойка ключове
owner.settings.chef.keypair.description = Заявките, изпратени до регистъра на Chef, трябва да бъдат криптографски подписани като средство за удостоверяване. При генериране на двойка ключове, само публичният ключ се съхранява във Forgejo. Частният ключ ви се предоставя, за да се използва с knife. Генерирането на нова двойка ключове ще презапише предишната.
[tool] [tool]
hours = %d часа hours = %d часа
now = сега now = сега
@ -940,9 +1063,9 @@ editor.no_changes_to_show = Няма промени за показване.
issues.choose.get_started = Първи стъпки issues.choose.get_started = Първи стъпки
issues.change_milestone_at = `промени етапа от <b>%s</b> на <b>%s</b> %s` issues.change_milestone_at = `промени етапа от <b>%s</b> на <b>%s</b> %s`
issues.change_project_at = `промени проекта от <b>%s</b> на <b>%s</b> %s` issues.change_project_at = `промени проекта от <b>%s</b> на <b>%s</b> %s`
issues.self_assign_at = `си само-възложи това %s` issues.self_assign_at = `си самовъзложи това %s`
issues.remove_assignee_at = `е премахнат като изпълнител от <b>%s</b> %s` issues.remove_assignee_at = `е премахнат като изпълнител от <b>%s</b> %s`
issues.remove_self_assignment = `се само-премахна като изпълнител %s` issues.remove_self_assignment = `се самопремахна като изпълнител %s`
issues.add_assignee_at = `му бе възложено това от <b>%s</b> %s` issues.add_assignee_at = `му бе възложено това от <b>%s</b> %s`
pulls.merged_by = от <a href="%[2]s">%[3]s</a> бе слята %[1]s pulls.merged_by = от <a href="%[2]s">%[3]s</a> бе слята %[1]s
pulls.merged_by_fake = от %[2]s бе слята %[1]s pulls.merged_by_fake = от %[2]s бе слята %[1]s
@ -1272,7 +1395,7 @@ issues.review.show_resolved = Показване на решено
issues.review.hide_resolved = Скриване на решено issues.review.hide_resolved = Скриване на решено
issues.review.resolve_conversation = Решаване на обсъждането issues.review.resolve_conversation = Решаване на обсъждането
diff.comment.markdown_info = Поддържа се стилизиране с Маркдаун. diff.comment.markdown_info = Поддържа се стилизиране с Маркдаун.
diff.file_suppressed = Разликите не са показани, защото са твърде много diff.file_suppressed = Разликите във файла са потиснати, защото са твърде много
pulls.reject_count_n = %d поискани промени pulls.reject_count_n = %d поискани промени
settings.pulls.default_allow_edits_from_maintainers = Позволяване на редакции от поддържащите по подразбиране settings.pulls.default_allow_edits_from_maintainers = Позволяване на редакции от поддържащите по подразбиране
fork_branch = Клон за клониране в разклонението fork_branch = Клон за клониране в разклонението
@ -1347,7 +1470,7 @@ settings.default_branch_desc = Изберете стандартен клон з
settings.transfer.button = Прехвърляне на притежанието settings.transfer.button = Прехвърляне на притежанието
settings.transfer.modal.title = Прехвърляне на притежанието settings.transfer.modal.title = Прехвърляне на притежанието
ambiguous_runes_line = `Този ред съдържа двусмислени Уникод знаци` ambiguous_runes_line = `Този ред съдържа двусмислени Уникод знаци`
ambiguous_character = `%[1]c [U+%04[1]X] може да бъде объркан с %[2]c [U+%04[2]X]` ambiguous_character = `%[1]c [U+%04[1]X] може да бъде объркан със %[2]c [U+%04[2]X]`
invisible_runes_header = `Този файл съдържа невидими Уникод знаци` invisible_runes_header = `Този файл съдържа невидими Уникод знаци`
issues.all_title = Общо issues.all_title = Общо
issues.new.assign_to_me = Възлагане на мен issues.new.assign_to_me = Възлагане на мен
@ -1446,7 +1569,7 @@ generated_from = генерирано от
clear_ref = `Изчистване на текущата препратка` clear_ref = `Изчистване на текущата препратка`
file_follow = Последване на символната връзка file_follow = Последване на символната връзка
commitstatus.failure = Неуспех commitstatus.failure = Неуспех
issues.filter_label_exclude = `Използвайте <code>alt</code> + <code>click/enter</code>, за да изключите етикети` issues.filter_label_exclude = Използвайте <kbd>Alt</kbd> + <kbd>Click</kbd>, за да изключите етикети
migrate.migrating_failed = Мигрирането от <b>%s</b> е неуспешно. migrate.migrating_failed = Мигрирането от <b>%s</b> е неуспешно.
migrate.migrating_issues = Мигриране на задачи migrate.migrating_issues = Мигриране на задачи
mirror_from = огледално на mirror_from = огледално на
@ -1576,6 +1699,178 @@ issues.force_push_compare = Сравняване
pulls.status_checking = Някои проверки са в очакване pulls.status_checking = Някои проверки са в очакване
pulls.nothing_to_compare = Тези клонове са равни. Не е нужно да създавате заявка за сливане. pulls.nothing_to_compare = Тези клонове са равни. Не е нужно да създавате заявка за сливане.
rss.must_be_on_branch = Трябва да сте на клон, за да имате RSS емисия.
admin.manage_flags = Управление на флаговете
admin.enabled_flags = Флагове, включени за хранилището:
admin.update_flags = Обновяване на флаговете
admin.failed_to_replace_flags = Неуспешна замяна на флаговете на хранилището
admin.flags_replaced = Флаговете на хранилището са заменени
fork_to_different_account = Разклоняване в друг акаунт
mirror_interval = Интервал на огледалото (валидни единици за време са „h“, „m“, „s“). 0 за изключване на периодичната синхронизация. (Минимален интервал: %s)
mirror_interval_invalid = Интервалът на огледалото не е валиден.
mirror_use_ssh.text = Използване на SSH удостоверяване
mirror_use_ssh.helper = Forgejo ще създаде огледало на хранилището чрез Git през SSH и ще генерира двойка ключове за вас, когато изберете тази опция. Трябва да се уверите, че генерираният публичен ключ е упълномощен да изтласква към целевото хранилище. Не можете да използвате удостоверяване, базирано на парола, когато избирате това.
mirror_use_ssh.not_available = SSH удостоверяването не е налично.
mirror_denied_combination = Не може да се използва удостоверяване с публичен ключ и парола едновременно.
mirror_sync_on_commit = Синхронизиране при изтласкване на подавания
mirror_address_desc = Поставете всички необходими данни за удостоверяване в секцията „Упълномощаване“.
mirror_address_url_invalid = Предоставеният URL е невалиден. Трябва да екранирате правилно всички компоненти на URL адреса.
mirror_address_protocol_invalid = Предоставеният URL е невалиден. Само http(s):// или git:// адреси могат да се използват за огледални хранилища.
mirror_lfs = Съхранение на големи файлове (LFS)
mirror_password_help = Променете потребителското име, за да изтриете запазена парола.
unit_disabled = Администраторът на сайта е изключил тази секция на хранилището.
summary_card_alt = Карта с обобщение на хранилище %s
template.items = Елементи на шаблона
template.git_content = Git съдържание (стандартен клон)
template.git_hooks = Git куки
template.git_hooks_tooltip = В момента не можете да променяте или премахвате Git куки, след като са добавени. Изберете това само ако се доверявате на шаблонното хранилище.
template.one_item = Трябва да изберете поне един елемент от шаблона
template.invalid = Трябва да изберете шаблонно хранилище
migrate.cancel_migrating_title = Отказ от миграцията
migrate.cancel_migrating_confirm = Искате ли да откажете тази миграция?
invisible_runes_description = `Този файл съдържа невидими Уникод знаци, които са неразличими за хората, но могат да бъдат обработени по различен начин от компютър. Ако смятате, че това е умишлено, можете спокойно да пренебрегнете това предупреждение. Използвайте бутона „Екраниране“, за да ги разкриете.`
ambiguous_runes_header = `Този файл съдържа двусмислени Уникод знаци`
ambiguous_runes_description = `Този файл съдържа Уникод знаци, които могат да бъдат объркани с други знаци. Ако смятате, че това е умишлено, можете спокойно да пренебрегнете това предупреждение. Използвайте бутона „Екраниране“, за да ги разкриете.`
file_copy_permalink = Копиране на постоянна връзка
view_git_blame = Преглед на git blame
video_not_supported_in_browser = Вашият браузър не поддържа HTML5 тага „video“.
audio_not_supported_in_browser = Вашият браузър не поддържа HTML5 тага „audio“.
stored_lfs = Съхранено с Git LFS
commit_graph.select = Изберете клонове
editor.cannot_edit_lfs_files = LFS файлове не могат да се редактират в уеб интерфейса.
editor.filename_help = Добавете директория, като въведете името ѝ, последвано от наклонена черта („/“). Премахнете директория, като натиснете backspace в началото на полето за въвеждане.
editor.commit_signed_changes = Подаване на подписани промени
editor.require_signed_commit = Клонът изисква подписано подаване
editor.commit_email = Ел. поща на подаването
commits.desc = Разглеждане на историята на промените в програмния код.
commits.search.tooltip = Можете да добавите префикс към ключовите думи с „author:“, „committer:“, „after:“ или „before:“, напр. „revert author:Alice before:2019-01-13“.
commits.signed_by = Подписано от
commits.signed_by_untrusted_user = Подписано от недоверен потребител
commits.signed_by_untrusted_user_unmatched = Подписано от недоверен потребител, който не съвпада с подаващия
commits.ssh_key_fingerprint = Отпечатък на SSH ключ
commits.view_single_diff = Преглед на промените в този файл, въведени в това подаване
commit.revert = Връщане
commit.revert-header = Връщане: %s
commit.revert-content = Изберете клон, върху който да се върне:
issues.desc = Организирайте доклади за грешки, задачи и етапи.
issues.choose.ignore_invalid_templates = Невалидните шаблони са игнорирани
issues.choose.invalid_config = Конфигурацията на задачите съдържа грешки:
issues.filter_type.all_pull_requests = Всички заявки за сливане
issues.role.member_helper = Този потребител е участник в организацията, притежаваща това хранилище.
issues.lock.unknown_reason = Не може да се заключи задача с неизвестна причина.
issues.lock_duplicate = Задача не може да бъде заключена два пъти.
issues.unlock_error = Не може да се отключи задача, която не е заключена.
issues.lock.notice_1 = - Други потребители не могат да добавят нови коментари към тази задача.
issues.lock.notice_2 = - Вие и други сътрудници с достъп до това хранилище все още можете да оставяте коментари, които другите да виждат.
issues.lock.notice_3 = - Винаги можете да отключите тази задача отново в бъдеще.
issues.unlock.notice_1 = - Всеки ще може отново да коментира тази задача.
issues.unlock.notice_2 = - Винаги можете да заключите тази задача отново в бъдеще.
issues.lock.title = Заключване на обсъждането по тази задача.
issues.unlock.title = Отключване на обсъждането по тази задача.
issues.comment_on_locked = Не можете да коментирате заключена задача.
issues.delete.text = Наистина ли искате да изтриете тази задача? (Това ще премахне трайно цялото съдържание. Помислете дали вместо това да не я затворите, ако възнамерявате да я запазите архивирана)
issues.cancel_tracking_history = `отмени проследяването на времето %s`
issues.add_time_sum_to_small = Не е въведено време.
issues.due_date_form = гггг-мм-дд
issues.due_date_invalid = Крайният срок е невалиден или извън обхвата. Моля, използвайте формата „гггг-мм-дд“.
issues.dependency.no_permission_1 = Нямате разрешение да прочетете %d зависимост
issues.dependency.no_permission_n = Нямате разрешение да прочетете %d зависимости
issues.dependency.no_permission.can_remove = Нямате разрешение да прочетете тази зависимост, но можете да я премахнете
issues.dependency.issue_batch_close_blocked = Не могат да бъдат затворени групово избраните задачи, защото задача #%d все още има отворени зависимости
issues.dependency.blocked_by_short = Зависи от
issues.dependency.setting = Включване на зависимости за задачи и заявки за сливане
issues.dependency.add_error_same_issue = Не можете да направите задача зависима от самата нея.
issues.dependency.add_error_dep_issue_not_exist = Зависимата задача не съществува.
issues.dependency.add_error_cannot_create_circular = Не можете да създадете зависимост с две задачи, които се блокират взаимно.
issues.dependency.add_error_dep_not_same_repo = И двете задачи трябва да са в едно и също хранилище.
issues.review.self.rejection = Не можете да поискате промени в собствената си заявка за сливане.
issues.review.dismissed = отхвърли рецензията на %s %s
issues.review.content.empty = Трябва да оставите коментар, посочващ исканите промени.
issues.review.add_review_requests = поиска рецензии от %[1]s %[2]s
issues.review.remove_review_request = премахна заявката за рецензия за %[1]s %[2]s
issues.review.remove_review_requests = премахна заявките за рецензия за %[1]s %[2]s
issues.review.remove_review_request_self = отказа да рецензира %s
issues.review.pending.tooltip = Този коментар в момента не е видим за други потребители. За да изпратите изчакващите си коментари, изберете „%s“ -> „%s/%s/%s“ в горната част на страницата.
issues.review.outdated = Остарял
issues.review.outdated_description = Съдържанието е променено, след като е направен този коментар
issues.review.show_outdated = Показване на остарели
issues.review.hide_outdated = Скриване на остарели
issues.content_history.options = Опции
issues.blocked_by_user = Не можете да създавате задачи в това хранилище, защото сте блокирани от притежателя на хранилището.
comment.blocked_by_user = Коментирането не е възможно, защото сте блокирани от притежателя на хранилището или от автора.
issues.reopen.blocked_by_user = Не можете да отворите наново тази задача, защото сте блокирани от притежателя на хранилището или от автора на тази задача.
compare.compare_base = основа
compare.compare_head = сравняване
pulls.desc = Включване на заявки за сливане и рецензии на код.
pulls.view = Преглед на заявката за сливане
pulls.allow_edits_from_maintainers_desc = Потребители с право на запис в основния клон могат също да изтласкват към този клон
pulls.allow_edits_from_maintainers_err = Обновяването е неуспешно
pulls.has_changed_since_last_review = Променено след последната ви рецензия
pulls.switch_comparison_type = Превключване на типа сравнение
pulls.filter_branch = Филтриране на клон
pulls.review_only_possible_for_full_diff = Рецензирането е възможно само при преглед на пълните разлики
pulls.wrong_commit_id = ID на подаването трябва да бъде ID на подаване в целевия клон
pulls.blocked_by_user = Не можете да създадете заявка за сливане в това хранилище, защото сте блокирани от притежателя на хранилището.
pulls.no_merge_desc = Тази заявка за сливане не може да бъде слята, защото всички опции за сливане в хранилището са изключени.
pulls.no_merge_helper = Включете опциите за сливане в настройките на хранилището или слейте заявката за сливане ръчно.
pulls.no_merge_wip = Тази заявка за сливане не може да бъде слята, защото е отбелязана като в процес на работа.
pulls.squash_merge_pull_request = Създаване на сплескано подаване
pulls.merge_manually = Ръчно слята
pulls.merge_commit_id = ID на подаването със сливане
pulls.require_signed_wont_sign = Клонът изисква подписани подавания, но това сливане няма да бъде подписано
pulls.merge_conflict = Сливането е неуспешно: Възникна конфликт по време на сливането. Подсказка: Опитайте различна стратегия
pulls.merge_conflict_summary = Съобщение за грешка
pulls.rebase_conflict_summary = Съобщение за грешка
pulls.has_merged = Неуспешно: Заявката за сливане е слята, не можете да слеете отново или да промените целевия клон.
pulls.push_rejected = Изтласкването е неуспешно: Изтласкването е отхвърлено. Прегледайте Git куките за това хранилище.
pulls.push_rejected_no_message = Изтласкването е неуспешно: Изтласкването е отхвърлено, но няма отдалечено съобщение. Прегледайте Git куките за това хранилище
pulls.update_not_allowed = Нямате разрешение да обновявате клона
pulls.outdated_with_base_branch = Този клон е остарял спрямо основния клон
pulls.cmd_instruction_merge_warning = <b>Предупреждение:</b> Настройката „Автоматично откриване на ръчно сливане“ не е включена за това хранилище, ще трябва да отбележите тази заявка за сливане като ръчно слята след това.
pulls.editable_explanation = Тази заявка за сливане позволява редакции от поддържащите. Можете да допринесете директно към нея.
pulls.auto_merge_button_when_succeed = (Когато проверките са успешни)
pulls.auto_merge_when_succeed = Автоматично сливане, когато всички проверки са успешни
pulls.auto_merge_newly_scheduled = Заявката за сливане е насрочена за сливане, когато всички проверки са успешни.
pulls.auto_merge_has_pending_schedule = %[1]s насрочи тази заявка за сливане за автоматично сливане, когато всички проверки са успешни %[2]s.
pulls.auto_merge_cancel_schedule = Отмяна на автоматичното сливане
pulls.auto_merge_not_scheduled = Тази заявка за сливане не е насрочена за автоматично сливане.
pulls.auto_merge_canceled_schedule = Автоматичното сливане е отменено за тази заявка за сливане.
pulls.auto_merge_newly_scheduled_comment = `насрочи тази заявка за сливане за автоматично сливане, когато всички проверки са успешни %[1]s`
pulls.auto_merge_canceled_schedule_comment = `отмени автоматичното сливане на тази заявка за сливане, когато всички проверки са успешни %[1]s`
pulls.delete.title = Да се изтрие ли тази заявка за сливане?
pulls.delete.text = Наистина ли искате да изтриете тази заявка за сливане? (Това ще премахне трайно цялото съдържание. Помислете дали вместо това да не я затворите, ако възнамерявате да я запазите архивирана)
diff.data_not_available = Съдържанието на разликите не е налично
diff.bin = ДВОИЧЕН
diff.file_suppressed_line_too_long = Разликите във файла са потиснати, защото един или повече редове са твърде дълги
diff.too_many_files = Някои файлове не бяха показани, защото твърде много файлове имат промени в тези разлики
diff.show_more = Показване на още
diff.generated = генериран
diff.comment.add_line_comment = Добавяне на коментар към ред
diff.comment.add_review_comment = Добавяне на коментар
diff.review.self_reject = Авторите на заявки за сливане не могат да поискват промени в собствените си заявки
diff.review.self_approve = Авторите на заявки за сливане не могат да одобряват собствените си заявки
diff.image.side_by_side = Едно до друго
diff.image.swipe = Плъзгане
diff.image.overlay = Наслагване
diff.has_escaped = Този ред има скрити Уникод знаци
release.tag_name_protected = Името на маркера е защитено.
release.add_tag_msg = Използване на заглавието и съдържанието на изданието като съобщение на маркера.
release.hide_archive_links = Скриване на автоматично генерираните архиви
release.hide_archive_links_helper = Скрийте автоматично генерираните архиви с програмен код за това издание. Например, ако качвате свои собствени.
release.asset_external_url = Външен URL адрес
release.summary_card_alt = Карта с обобщение на издание със заглавие „%s“ в хранилище %s
branch.protected_deletion_failed = Клонът „%s“ е защитен. Не може да бъде изтрит.
branch.default_deletion_failed = Клонът „%s“ е стандартният клон. Не може да бъде изтрит.
branch.included_desc = Този клон е част от стандартния клон
branch.included = Включен
branch.warning_rename_default_branch = Преименувате стандартния клон.
topic.count_prompt = Не можете да изберете повече от 25 теми
find_file.no_matching = Не е намерен съвпадащ файл
error.csv.too_large = Не може да се визуализира този файл, защото е твърде голям.
error.csv.unexpected = Не може да се визуализира този файл, защото съдържа неочакван знак на ред %d и колона %d.
error.csv.invalid_field_count = Не може да се визуализира този файл, защото има грешен брой полета на ред %d.
error.broken_git_hook = Git куките на това хранилище изглеждат повредени. Моля, последвайте <a target="_blank" rel="noreferrer" href="%s">документацията</a>, за да ги поправите, след което изтласкайте подавания, за да обновите статуса.
[modal] [modal]
confirm = Потвърждаване confirm = Потвърждаване
no = Не no = Не
@ -1663,18 +1958,18 @@ follow_blocked_user = Не можете да следвате тази орга
settings.delete_prompt = Организацията ще бъде премахната завинаги. Това <strong>НЕ МОЖЕ</strong> да бъде отменено! settings.delete_prompt = Организацията ще бъде премахната завинаги. Това <strong>НЕ МОЖЕ</strong> да бъде отменено!
settings.labels_desc = Добавете етикети, които могат да се използват за задачи за <strong>всички хранилища</strong> в тази организация. settings.labels_desc = Добавете етикети, които могат да се използват за задачи за <strong>всички хранилища</strong> в тази организация.
teams.none_access = Без достъп teams.none_access = Без достъп
teams.members.none = Няма членове в този екип. teams.members.none = Няма участници в този екип.
repo_updated = Обновено %s repo_updated = Обновено %s
teams.delete_team_success = Екипът е изтрит. teams.delete_team_success = Екипът е изтрит.
teams.search_repo_placeholder = Потърсете хранилище… teams.search_repo_placeholder = Потърсете хранилище…
teams.delete_team_title = Изтриване на екипа teams.delete_team_title = Изтриване на екипа
teams.add_team_member = Добавяне на член на екипа teams.add_team_member = Добавяне на участник в екипа
teams.read_access_helper = Членовете могат да преглеждат и клонират хранилищата на екипа. teams.read_access_helper = Членовете могат да преглеждат и клонират хранилищата на екипа.
teams.invite.description = Моля, щракнете върху бутона по-долу, за да се присъедините към екипа. teams.invite.description = Моля, щракнете върху бутона по-долу, за да се присъедините към екипа.
teams.invite.title = Поканени сте да се присъедините към екип <strong>%s</strong> в организация <strong>%s</strong>. teams.invite.title = Поканени сте да се присъедините към екип <strong>%s</strong> в организация <strong>%s</strong>.
team_permission_desc = Разрешение team_permission_desc = Разрешение
members.public_helper = Да е скрит members.public_helper = Да е скрит
teams.members = Членове на екипа teams.members = Участници в екипа
teams.delete_team = Изтриване на екипа teams.delete_team = Изтриване на екипа
members.owner = Притежател members.owner = Притежател
members.member_role = Роля на участника: members.member_role = Роля на участника:
@ -1685,6 +1980,38 @@ settings.delete_org_desc = Тази организация ще бъде изт
open_dashboard = Отваряне на таблото open_dashboard = Отваряне на таблото
settings.change_orgname_prompt = Бележка: Промяната на името на организацията ще промени и URL адреса на вашата организация и ще освободи старото име. settings.change_orgname_prompt = Бележка: Промяната на името на организацията ще промени и URL адреса на вашата организация и ще освободи старото име.
team_access_desc = Достъп до хранилище
team_unit_desc = Разрешаване на достъп до секции на хранилището
team_unit_disabled = (Изключено)
form.name_reserved = Името на организацията „%s“ е резервирано.
form.name_pattern_not_allowed = Шаблонът „%s“ не е разрешен в име на организация.
form.create_org_not_allowed = Нямате разрешение да създавате организация.
settings.update_setting_success = Настройките на организацията са обновени.
settings.change_orgname_redirect_prompt = Старото име ще се пренасочва, докато не бъде взето.
settings.change_orgname_redirect_prompt.with_cooldown.one = Старото име на организацията ще бъде достъпно за всички след период на изчакване от %[1]d ден. Все още можете да си върнете старото име по време на периода на изчакване.
settings.change_orgname_redirect_prompt.with_cooldown.few = Старото име на организацията ще бъде достъпно за всички след период на изчакване от %[1]d дни. Все още можете да си върнете старото име по време на периода на изчакване.
settings.update_avatar_success = Профилната снимка на организацията е обновена.
settings.hooks_desc = Добавете уеб-куки, които ще се задействат за <strong>всички хранилища</strong> в тази организация.
members.membership_visibility = Видимост на участничеството:
members.public = Видим
members.private = Скрит
members.invite_desc = Добавяне на нов участник към %s:
members.invite_now = Поканване сега
teams.admin_access = Администраторски достъп
teams.invite_team_member = Поканване в %s
teams.invite_team_member.list = Чакащи покани
teams.delete_team_desc = Изтриването на екип отнема достъпа до хранилището от неговите участници. Продължаване?
teams.remove_all_repos_desc = Това ще премахне всички хранилища от екипа.
teams.add_all_repos_title = Добавяне на всички хранилища
teams.add_all_repos_desc = Това ще добави всички хранилища на организацията към екипа.
teams.add_nonexistent_repo = Хранилището, което се опитвате да добавите, не съществува, моля, първо го създайте.
teams.add_duplicate_users = Потребителят вече е участник в екипа.
teams.repos.none = Няма хранилища, до които този екип да има достъп.
teams.specific_repositories = Конкретни хранилища
teams.specific_repositories_helper = Участниците ще имат достъп само до хранилища, изрично добавени към екипа. Избирането на това <strong>няма</strong> автоматично да премахне хранилища, вече добавени с <i>Всички хранилища</i>.
teams.all_repositories_helper = Екипът има достъп до всички хранилища. Избирането на това ще <strong>добави всички съществуващи</strong> хранилища към екипа.
teams.invite.by = Поканен от %s
[install] [install]
admin_password = Парола admin_password = Парола
user = Потребителско име user = Потребителско име
@ -1978,14 +2305,14 @@ Pronouns = Местоимения
Biography = Биография Biography = Биография
Website = Уебсайт Website = Уебсайт
Location = Местоположение Location = Местоположение
cannot_add_org_to_team = Организация не може да бъде добавена като член на екип. cannot_add_org_to_team = Организация не може да бъде добавена като участник в екип.
auth_failed = Неуспешно удостоверяване: %v auth_failed = Неуспешно удостоверяване: %v
team_no_units_error = Разрешете достъп до поне една секция на хранилището. team_no_units_error = Разрешете достъп до поне една секция на хранилището.
password_uppercase_one = Поне един голям знак password_uppercase_one = Поне един голям знак
CommitSummary = Обобщение на подаването CommitSummary = Обобщение на подаването
username_error = ` може да съдържа само буквено-цифрови знаци („0-9“, „a-z“, „A-Z“), тире („-“), долна черта („_“) и точка („.“). Не може да започва или завършва с не-буквено-цифрови знаци, като също така са забранени и последователни не-буквено-цифрови знаци.` username_error = ` може да съдържа само буквено-цифрови знаци („0-9“, „a-z“, „A-Z“), тире („-“), долна черта („_“) и точка („.“). Не може да започва или завършва с не-буквено-цифрови знаци, като също така са забранени и последователни не-буквено-цифрови знаци.`
username_error_no_dots = ` може да съдържа само буквено-цифрови знаци („0-9“, „a-z“, „A-Z“), тире („-“) и долна черта („_“). Не може да започва или завършва с не-буквено-цифрови знаци, като също така са забранени и последователни не-буквено-цифрови знаци.` username_error_no_dots = ` може да съдържа само буквено-цифрови знаци („0-9“, „a-z“, „A-Z“), тире („-“) и долна черта („_“). Не може да започва или завършва с не-буквено-цифрови знаци, като също така са забранени и последователни не-буквено-цифрови знаци.`
duplicate_invite_to_team = Потребителят вече е поканен като член на екипа. duplicate_invite_to_team = Потребителят вече е поканен като участник в екипа.
must_use_public_key = Ключът, който предоставихте, е частен ключ. Моля, не качвайте частния си ключ никъде. Вместо това използвайте публичния си ключ. must_use_public_key = Ключът, който предоставихте, е частен ключ. Моля, не качвайте частния си ключ никъде. Вместо това използвайте публичния си ключ.
org_still_own_packages = Тази организация все още притежава един или повече пакети, първо ги изтрийте. org_still_own_packages = Тази организация все още притежава един или повече пакети, първо ги изтрийте.
admin_cannot_delete_self = Не можете да изтриете себе си, когато сте администратор. Моля, първо премахнете администраторските си привилегии. admin_cannot_delete_self = Не можете да изтриете себе си, когато сте администратор. Моля, първо премахнете администраторските си привилегии.
@ -2006,7 +2333,7 @@ enterred_invalid_repo_name = Името на хранилището, което
enterred_invalid_org_name = Името на организацията, което въведохте, е неправилно. enterred_invalid_org_name = Името на организацията, което въведохте, е неправилно.
enterred_invalid_password = Паролата, която въведохте, е неправилна. enterred_invalid_password = Паролата, която въведохте, е неправилна.
organization_leave_success = Успешно напуснахте организацията %s. organization_leave_success = Успешно напуснахте организацията %s.
still_has_org = Вашият акаунт е член на една или повече организации, първо ги напуснете. still_has_org = Вашият акаунт е участник в една или повече организации, първо ги напуснете.
org_still_own_repo = Тази организация все още притежава едно или повече хранилища, първо ги изтрийте или прехвърлете. org_still_own_repo = Тази организация все още притежава едно или повече хранилища, първо ги изтрийте или прехвърлете.
target_branch_not_exist = Целевият клон не съществува. target_branch_not_exist = Целевият клон не съществува.
glob_pattern_error = ` glob шаблонът е невалиден: %s.` glob_pattern_error = ` glob шаблонът е невалиден: %s.`
@ -2017,6 +2344,18 @@ AdminEmail = Администраторски адрес за ел. поща
email_domain_is_not_allowed = Домейнът на адреса за ел. поща на потребителя <b>%s</b> е в конфликт с EMAIL_DOMAIN_ALLOWLIST или EMAIL_DOMAIN_BLOCKLIST. Уверете се, че сте въвели правилно адреса за ел. поща. email_domain_is_not_allowed = Домейнът на адреса за ел. поща на потребителя <b>%s</b> е в конфликт с EMAIL_DOMAIN_ALLOWLIST или EMAIL_DOMAIN_BLOCKLIST. Уверете се, че сте въвели правилно адреса за ел. поща.
email_been_used = Адресът за ел. поща вече се използва. email_been_used = Адресът за ел. поща вече се използва.
NewBranchName = Име на новия клон
git_ref_name_error = ` трябва да е правилно форматирано име на Git препратка.`
regex_pattern_error = ` шаблонът на регулярния израз е невалиден: %s.`
repository_files_already_exist = Вече съществуват файлове за това хранилище. Свържете се със системния администратор.
repository_files_already_exist.delete = Вече съществуват файлове за това хранилище. Трябва да ги изтриете.
enterred_invalid_owner_name = Името на новия притежател не е валидно.
last_org_owner = Не можете да премахнете последния потребител от екипа на „притежателите“. Трябва да има поне един притежател за организация.
invalid_ssh_key = Не може да се потвърди вашият SSH ключ: %s
invalid_gpg_key = Не може да се потвърди вашият GPG ключ: %s
unable_verify_ssh_key = Не може да се потвърди SSH ключът, проверете го отново за грешки.
required_prefix = Въведеният текст трябва да започва с „%s“
[action] [action]
close_issue = `затвори задача <a href="%[1]s">%[3]s#%[2]s</a>` close_issue = `затвори задача <a href="%[1]s">%[3]s#%[2]s</a>`
rename_repo = преименува хранилище от <code>%[1]s</code> на <a href="%[2]s">%[3]s</a> rename_repo = преименува хранилище от <code>%[1]s</code> на <a href="%[2]s">%[3]s</a>
@ -2045,6 +2384,12 @@ compare_branch = Сравняване
compare_commits_general = Сравняване на подавания compare_commits_general = Сравняване на подавания
compare_commits = Сравнете %d подавания compare_commits = Сравнете %d подавания
transfer_repo = прехвърли хранилище <code>%s</code> към <a href="%s">%s</a>
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> от огледало
review_dismissed = `отхвърли рецензия от <b>%[4]s</b> за <a href="%[1]s">%[3]s#%[2]s</a>`
[auth] [auth]
tab_openid = OpenID tab_openid = OpenID
openid_connect_submit = Свързване openid_connect_submit = Свързване
@ -2178,6 +2523,15 @@ variables.not_found = Променливата не е открита.
variables.id_not_exist = Променлива с идентификатор %d не съществува. variables.id_not_exist = Променлива с идентификатор %d не съществува.
runners.owner_type = Тип runners.owner_type = Тип
unit.desc = Управление на интегрирани CI/CD pipelines с Forgejo Actions.
status.unknown = Неизвестно
status.waiting = Изчаква се
status.running = Изпълнява се
status.success = Успешно
status.failure = Неуспешно
status.cancelled = Отменено
status.skipped = Пропуснато
[heatmap] [heatmap]
less = По-малко less = По-малко
number_of_contributions_in_the_last_12_months = %s приноса през последните 12 месеца number_of_contributions_in_the_last_12_months = %s приноса през последните 12 месеца
@ -2258,3 +2612,32 @@ eib = ЕиБ
[translation_meta] [translation_meta]
test = окей test = окей
[repo.permissions]
code.read = <b>Четене:</b> Достъп и клониране на кода на хранилището.
code.write = <b>Писане:</b> Изтласкване към хранилището, създаване на клонове и маркери.
issues.read = <b>Четене:</b> Четене и създаване на задачи и коментари.
issues.write = <b>Писане:</b> Затваряне на задачи и управление на метаданни като етикети, етапи, изпълнители, крайни срокове и зависимости.
pulls.read = <b>Четене:</b> Четене и създаване на заявки за сливане.
pulls.write = <b>Писане:</b> Затваряне на заявки за сливане и управление на метаданни като етикети, етапи, изпълнители, крайни срокове и зависимости.
releases.read = <b>Четене:</b> Преглед и изтегляне на издания.
wiki.read = <b>Четене:</b> Четене на интегрираното уики и неговата история.
wiki.write = <b>Писане:</b> Създаване, обновяване и изтриване на страници в интегрираното уики.
projects.read = <b>Четене:</b> Достъп до проектните табла на хранилището.
projects.write = <b>Писане:</b> Създаване и редактиране на проекти и колони.
[gpg]
default_key = Подписано с ключ по подразбиране
error.extract_sign = Неуспешно извличане на подпис
error.generate_hash = Неуспешно генериране на хеш на подаването
error.no_committer_account = Няма акаунт, свързан с адреса за ел. поща на подаващия
error.no_gpg_keys_found = Не е намерен известен ключ за този подпис в базата данни
error.not_signed_commit = Не е подписано подаване
error.failed_retrieval_gpg_keys = Неуспешно извличане на ключ, свързан с акаунта на подаващия
error.probable_bad_signature = ВНИМАНИЕ! Въпреки че има ключ с това ID в базата данни, той не потвърждава това подаване! Това подаване е ПОДОЗРИТЕЛНО.
error.probable_bad_default_signature = ВНИМАНИЕ! Въпреки че ключът по подразбиране има това ID, той не потвърждава това подаване! Това подаване е ПОДОЗРИТЕЛНО.
[units]
unit = Елемент
error.no_unit_allowed_repo = Нямате разрешение за достъп до никоя секция на това хранилище.
error.unit_not_allowed = Нямате разрешение за достъп до тази секция на хранилището.

View file

@ -153,26 +153,26 @@ fuzzy = Difusa
search = Cerca... search = Cerca...
type_tooltip = Tipus de cerca type_tooltip = Tipus de cerca
fuzzy_tooltip = Inclou resultats que s'assemblen al terme de la cerca fuzzy_tooltip = Inclou resultats que s'assemblen al terme de la cerca
repo_kind = Cerca repos... repo_kind = Cerca repos
user_kind = Cerca usuaris... user_kind = Cerca usuaris
code_search_unavailable = La cerca de codi no està disponible actualment. Si us plau concteu amb l'administrador del lloc. code_search_unavailable = La cerca de codi no està disponible actualment. Si us plau concteu amb l'administrador del lloc.
code_search_by_git_grep = Els resultats actuals de la cerca de codi són proporcionats per "git grep". Podríen haver-hi millors resultats si l'administrador del lloc habilita l'indexador de codi. code_search_by_git_grep = Els resultats actuals de la cerca de codi són proporcionats per "git grep". Podríen haver-hi millors resultats si l'administrador del lloc habilita l'indexador de codi.
package_kind = Cerca paquets... package_kind = Cerca paquets
project_kind = Cerca projectes... project_kind = Cerca projectes
branch_kind = Cerca branques... branch_kind = Cerca branques
commit_kind = Cerca commits... commit_kind = Cerca commits
runner_kind = Cerca executors... runner_kind = Cerca executors
no_results = Cap resultat coincident trobat. no_results = Cap resultat coincident trobat.
keyword_search_unavailable = La cerca per paraula clau no està disponible ara mateix. Si us plau contacteu amb l'administrador del lloc. keyword_search_unavailable = La cerca per paraula clau no està disponible ara mateix. Si us plau contacteu amb l'administrador del lloc.
union = Paraules clau union = Paraules clau
union_tooltip = Inclou resultats que encaixen amb qualsevol paraula clau separada per espais union_tooltip = Inclou resultats que encaixen amb qualsevol paraula clau separada per espais
org_kind = Cerca organitzacions... org_kind = Cerca organitzacions
team_kind = Cerca teams... team_kind = Cerca teams
code_kind = Cerca codi... code_kind = Cerca codi
pull_kind = Cerca "pulls"... pull_kind = Cerca "pulls"
exact = Exacte exact = Exacte
exact_tooltip = Inclou només resultats que són exactament el terme de cerca exact_tooltip = Inclou només resultats que són exactament el terme de cerca
issue_kind = Cerca problemes... issue_kind = Cerca problemes
regexp = RegExp regexp = RegExp
regexp_tooltip = Interpreta el terme de cerca com una expressió regular regexp_tooltip = Interpreta el terme de cerca com una expressió regular

View file

@ -13,7 +13,7 @@ link_account=Propojit účet
register=Registrace register=Registrace
version=Verze version=Verze
powered_by=Běží na %s powered_by=Běží na %s
page=Strana page=Stránka
template=Šablona template=Šablona
language=Jazyk language=Jazyk
notifications=Oznámení notifications=Oznámení
@ -724,7 +724,7 @@ following_one = %d sledovaný
followers.title.one = Sledující followers.title.one = Sledující
followers.title.few = Sledující followers.title.few = Sledující
following.title.one = Sleduje following.title.one = Sleduje
following.title.few = Sleudje following.title.few = Sleduje
public_activity.visibility_hint.self_private = Vaše aktivita je viditelná pouze vám a správcům instance. <a href="%s">Nastavení</a>. public_activity.visibility_hint.self_private = Vaše aktivita je viditelná pouze vám a správcům instance. <a href="%s">Nastavení</a>.
public_activity.visibility_hint.admin_private = Tato aktivita je pro vás viditelná, protože jste administrátor, ale uživatel chce, aby zůstala soukromá. public_activity.visibility_hint.admin_private = Tato aktivita je pro vás viditelná, protože jste administrátor, ale uživatel chce, aby zůstala soukromá.
public_activity.visibility_hint.self_public = Vaše aktivita je viditelná všem, mimo interakcí v soukromých prostorech. <a href="%s">Nastavení</a>. public_activity.visibility_hint.self_public = Vaše aktivita je viditelná všem, mimo interakcí v soukromých prostorech. <a href="%s">Nastavení</a>.
@ -1063,7 +1063,7 @@ language.localization_project = Pomozte nám s překladem Forgejo do vašeho jaz
user_block_yourself = Nemůžete zablokovat sami sebe. user_block_yourself = Nemůžete zablokovat sami sebe.
pronouns_custom_label = Vlastní zájmena pronouns_custom_label = Vlastní zájmena
change_username_redirect_prompt.with_cooldown.few = Staré uživatelské jméno bude dostupné ostatním po %[1]d dnech. Do té doby budete moci své staré uživatelské jméno znovu získat. change_username_redirect_prompt.with_cooldown.few = Staré uživatelské jméno bude dostupné ostatním po %[1]d dnech. Do té doby budete moci své staré uživatelské jméno znovu získat.
change_username_redirect_prompt.with_cooldown.one = Staré uživatelské jméno bude dostupné ostatním po %[1]d dni. Do té doby budete moci své staré uživatelské jméno znovu získat. change_username_redirect_prompt.with_cooldown.one = Staré uživatelské jméno bude dostupné ostatním po %[1]d dnu. Do té doby budete moci své staré uživatelské jméno znovu získat.
keep_pronouns_private = Zobrazovat zájmena pouze přihlášeným uživatelům keep_pronouns_private = Zobrazovat zájmena pouze přihlášeným uživatelům
keep_pronouns_private.description = Toto nastavení skryje vaše zájmena před návštěvníky, kteří nejsou přihlášeni. keep_pronouns_private.description = Toto nastavení skryje vaše zájmena před návštěvníky, kteří nejsou přihlášeni.
quota = Kvóta quota = Kvóta
@ -1091,6 +1091,8 @@ regenerate_token = Resetovat
access_token_regeneration = Znovu vygenerovat přístupový token access_token_regeneration = Znovu vygenerovat přístupový token
access_token_regeneration_desc = Opětovným vygenerováním tokenu znemožníte přístup k vašemu účtu aplikacím, které jej používají. Tato akce je nevratná. Chcete pokračovat? access_token_regeneration_desc = Opětovným vygenerováním tokenu znemožníte přístup k vašemu účtu aplikacím, které jej používají. Tato akce je nevratná. Chcete pokračovat?
ssh_token_help_ssh_agent = nebo, pokud používáte agenta SSH (s nastavenou proměnnou SSH_AUTH_SOCK):
[repo] [repo]
new_repo_helper=Repozitář obsahuje všechny soubory projektu, včetně historie revizí. Už jej hostujete jinde? <a href="%s">Migrovat repozitář</a>. new_repo_helper=Repozitář obsahuje všechny soubory projektu, včetně historie revizí. Už jej hostujete jinde? <a href="%s">Migrovat repozitář</a>.
owner=Vlastník owner=Vlastník
@ -1556,7 +1558,7 @@ issues.label_templates.info=Zatím nebyly vytvořeny žádné štítky. Vytvořt
issues.label_templates.helper=Vyberte přednastavené značky issues.label_templates.helper=Vyberte přednastavené značky
issues.label_templates.use=Použít přednastavené štítky issues.label_templates.use=Použít přednastavené štítky
issues.label_templates.fail_to_load_file=Nepodařilo se načíst soubor šablony popisku „%s“: %v issues.label_templates.fail_to_load_file=Nepodařilo se načíst soubor šablony popisku „%s“: %v
issues.add_label=přidal/a %s štítek %s issues.add_label=přidal/a štítek %s %s
issues.add_labels=přidal/a %s štítky %s issues.add_labels=přidal/a %s štítky %s
issues.remove_label=odstranil/a %s štítek %s issues.remove_label=odstranil/a %s štítek %s
issues.remove_labels=odstranil/a %s štítky %s issues.remove_labels=odstranil/a %s štítky %s
@ -1579,7 +1581,7 @@ issues.remove_ref_at=`odstranil/a referenci <b>%s</b> %s`
issues.add_ref_at=`přidal/a referenci <b>%s</b> %s` issues.add_ref_at=`přidal/a referenci <b>%s</b> %s`
issues.delete_branch_at=`odstranil/a větev <b>%s</b> %s` issues.delete_branch_at=`odstranil/a větev <b>%s</b> %s`
issues.filter_label=Štítek issues.filter_label=Štítek
issues.filter_label_exclude=`Chcete-li vyloučit štítky, použijte <code>alt</code> + <code>click/enter</code>` issues.filter_label_exclude=Chcete-li vyloučit štítky, použijte <kbd>Alt</kbd> + <kbd>kliknutí</kbd>
issues.filter_label_no_select=Všechny štítky issues.filter_label_no_select=Všechny štítky
issues.filter_label_select_no_label=Bez štítku issues.filter_label_select_no_label=Bez štítku
issues.filter_milestone=Milník issues.filter_milestone=Milník
@ -1763,7 +1765,7 @@ issues.error_modifying_due_date=Změna termínu dokončení selhala.
issues.error_removing_due_date=Odstranění termínu dokončení selhalo. issues.error_removing_due_date=Odstranění termínu dokončení selhalo.
issues.push_commit_1=přidal/a %d revizi %s issues.push_commit_1=přidal/a %d revizi %s
issues.push_commits_n=přidal/a %d revize %s issues.push_commits_n=přidal/a %d revize %s
issues.force_push_codes=`vynucené nahrání %[1]s od <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> do <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> %[6]s` issues.force_push_codes=`vynutil/a nahrání %[1]s od <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> do <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> %[6]s`
issues.force_push_compare=Porovnat issues.force_push_compare=Porovnat
issues.due_date_form=rrrr-mm-dd issues.due_date_form=rrrr-mm-dd
issues.due_date_form_add=Přidat termín dokončení issues.due_date_form_add=Přidat termín dokončení
@ -1813,7 +1815,7 @@ issues.review.approve=schválil/a tyto změny %s
issues.review.comment=posoudil/a %s issues.review.comment=posoudil/a %s
issues.review.dismissed=zamítl/a posouzení uživatele %s %s issues.review.dismissed=zamítl/a posouzení uživatele %s %s
issues.review.dismissed_label=Zamítnuto issues.review.dismissed_label=Zamítnuto
issues.review.left_comment=zanechal komentář issues.review.left_comment=zanechal/a komentář
issues.review.content.empty=Je potřeba zanechat poznámku s uvedením požadované změny (požadovaných změn). issues.review.content.empty=Je potřeba zanechat poznámku s uvedením požadované změny (požadovaných změn).
issues.review.reject=požádal/a o změny %s issues.review.reject=požádal/a o změny %s
issues.review.wait=byl/a požádán/a o posouzení %s issues.review.wait=byl/a požádán/a o posouzení %s
@ -3058,7 +3060,7 @@ teams.invite.by=Pozvání od %s
teams.invite.description=Pro připojení k týmu klikněte na tlačítko níže. teams.invite.description=Pro připojení k týmu klikněte na tlačítko níže.
follow_blocked_user = Tuto organizaci nemůžete sledovat, protože jste v ní zablokováni. follow_blocked_user = Tuto organizaci nemůžete sledovat, protože jste v ní zablokováni.
open_dashboard = Otevřít nástěnku open_dashboard = Otevřít nástěnku
settings.change_orgname_redirect_prompt.with_cooldown.one = Starý název organizace bude dostupný ostatním po %[1]d dni. Do té doby budete moci staré jméno znovu získat. settings.change_orgname_redirect_prompt.with_cooldown.one = Starý název organizace bude dostupný ostatním po %[1]d dnu. Do té doby budete moci staré jméno znovu získat.
settings.change_orgname_redirect_prompt.with_cooldown.few = Starý název organizace bude dostupný ostatním po %[1]d dnech. Do té doby budete moci starý název znovu získat. settings.change_orgname_redirect_prompt.with_cooldown.few = Starý název organizace bude dostupný ostatním po %[1]d dnech. Do té doby budete moci starý název znovu získat.
[admin] [admin]
@ -3991,7 +3993,7 @@ variables.update.success=Proměnná byla upravena.
runners.none = Nejsou dostupné žádné runnery runners.none = Nejsou dostupné žádné runnery
runs.workflow = Workflow runs.workflow = Workflow
runners = Runnery runners = Runnery
runs.pushed_by = pushnuto uživatelem runs.pushed_by = pushnuta uživatelem
need_approval_desc = Potřebovat schválení pro spouštění workflowů pro žádosti o sloučení forků. need_approval_desc = Potřebovat schválení pro spouštění workflowů pro žádosti o sloučení forků.
runners.runner_manage_panel = Správa runnerů runners.runner_manage_panel = Správa runnerů
runs.no_job_without_needs = Workflow musí obsahovat alespoň jednu práci bez závislostí. runs.no_job_without_needs = Workflow musí obsahovat alespoň jednu práci bez závislostí.

View file

@ -1,6 +1,3 @@
[common] [common]
home = Hjem home = Hjem
dashboard = Instrumentpanel dashboard = Instrumentpanel
@ -978,8 +975,8 @@ delete_with_all_comments = Din konto er yngre end %s. For at undgå spøgelsesko
delete_account_title = Slet brugerkonto delete_account_title = Slet brugerkonto
user_block_yourself = Du kan ikke blokere dig selv. user_block_yourself = Du kan ikke blokere dig selv.
pronouns_custom_label = Brugerdefinerede stedord pronouns_custom_label = Brugerdefinerede stedord
change_username_redirect_prompt.with_cooldown.one = Det gamle brugernavn vil være tilgængeligt for alle efter en nedkølingsperiode på %[1]d dag, du kan stadig kræve det gamle brugernavn tilbage i nedkølingsperioden. change_username_redirect_prompt.with_cooldown.one = Det gamle brugernavn vil være tilgængeligt for alle efter en nedkølingsperiode på %[1]d dag, år. Du kan stadig kræve det gamle brugernavn tilbage i nedkølingsperioden.
change_username_redirect_prompt.with_cooldown.few = Det gamle brugernavn vil være tilgængeligt for alle efter en nedkølingsperiode på %[1]d dage, du kan stadig kræve det gamle brugernavn tilbage i nedkølingsperioden. change_username_redirect_prompt.with_cooldown.few = Det gamle brugernavn vil være tilgængeligt for alle efter en nedkølingsperiode på %[1]d dage, år. Du kan stadig kræve det gamle brugernavn tilbage i nedkølingsperioden.
keep_pronouns_private = Vis kun stedord til godkendte brugere keep_pronouns_private = Vis kun stedord til godkendte brugere
keep_pronouns_private.description = Dette vil skjule dine stedord for besøgende, der ikke er logget ind. keep_pronouns_private.description = Dette vil skjule dine stedord for besøgende, der ikke er logget ind.
quota.applies_to_user = Følgende kvoteregler gælder for din konto quota.applies_to_user = Følgende kvoteregler gælder for din konto
@ -1520,13 +1517,13 @@ issues.add_labels = tilføjede %s etiketterne %s
issues.add_remove_labels = tilføjede %s og fjernede %s etiketter %s issues.add_remove_labels = tilføjede %s og fjernede %s etiketter %s
issues.add_milestone_at = `føjede dette til <b>%s</b> milepælen %s` issues.add_milestone_at = `føjede dette til <b>%s</b> milepælen %s`
issues.add_project_at = `føjede dette til <b>%s</b>- projektet %s` issues.add_project_at = `føjede dette til <b>%s</b>- projektet %s`
issues.ref_reopening_from = `<a href="%[2]s">henviste til dette problem fra en pull-anmodning %[3]s, der vil genåbne den</a>, %[1]s` issues.ref_reopening_from = `<a href="%[2]s">henviste til dette problem fra en pull-anmodning %[3]s, der vil genåbne det</a>, %[1]s`
issues.ref_closed_from = `<a href="%[3]s">lukkede dette problem %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2 ]s</a>` issues.ref_closed_from = `<a href="%[3]s">lukkede dette problem %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2 ]s</a>`
issues.ref_reopened_from = `<a href="%[3]s">genåbnede dette problem %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2 ]s</a>` issues.ref_reopened_from = `<a href="%[3]s">genåbnede dette problem %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2 ]s</a>`
issues.ref_from = `fra %[1]s` issues.ref_from = `fra %[1]s`
issues.author = Forfatter issues.author = Forfatter
issues.commit_ref_at = `henviste til dette problem fra en commit %s` issues.commit_ref_at = `henviste til dette problem fra en commit %s`
issues.ref_issue_from = `<a href="%[2]s">henviste til dette problem %[3]s</a> <a id="%[1]s" href="#%[1]s">%[2 ]s</a>` issues.ref_issue_from = `<a href="%[2]s">henviste til dette problem %[3]s</a> %[1]s`
issues.ref_pull_from = `<a href="%[2]s">henviste til denne pull-anmodning %[3]s</a> %[1]s` issues.ref_pull_from = `<a href="%[2]s">henviste til denne pull-anmodning %[3]s</a> %[1]s`
issues.ref_closing_from = `<a href="%[2]s">henviste til dette problem fra en pull-anmodning %[3]s, der vil lukke det</a>, %[1]s` issues.ref_closing_from = `<a href="%[2]s">henviste til dette problem fra en pull-anmodning %[3]s, der vil lukke det</a>, %[1]s`
issues.author.tooltip.issue = Denne bruger er forfatteren til dette problem. issues.author.tooltip.issue = Denne bruger er forfatteren til dette problem.
@ -1582,7 +1579,7 @@ issues.change_ref_at = `ændret reference fra <b><strike>%s</strike></b> til <b>
issues.remove_ref_at = `fjernet reference <b>%s</b> %s` issues.remove_ref_at = `fjernet reference <b>%s</b> %s`
issues.add_ref_at = `tilføjet reference <b>%s</b> %s` issues.add_ref_at = `tilføjet reference <b>%s</b> %s`
issues.delete_branch_at = `slettet gren <b>%s</b> %s` issues.delete_branch_at = `slettet gren <b>%s</b> %s`
issues.filter_label_exclude = `Brug <code>alt</code> + <code>klik/enter</code> for at ekskludere etiketter` issues.filter_label_exclude = Brug <kbd>Alt</kbd> + <kbd>klik</kbd> for at ekskludere etiketter
issues.filter_milestone = Milepæl issues.filter_milestone = Milepæl
issues.filter_milestone_all = Alle milepæle issues.filter_milestone_all = Alle milepæle
issues.filter_milestone_none = Ingen milepæle issues.filter_milestone_none = Ingen milepæle
@ -2833,8 +2830,8 @@ team_permission_desc = Tilladelse
members.member = Medlem members.member = Medlem
settings.change_orgname_prompt = Bemærk: Ændring af organisationens navn vil også ændre din organisations URL og frigøre det gamle navn. settings.change_orgname_prompt = Bemærk: Ændring af organisationens navn vil også ændre din organisations URL og frigøre det gamle navn.
settings.change_orgname_redirect_prompt = Det gamle navn vil omdirigere, indtil det gøres krav på. settings.change_orgname_redirect_prompt = Det gamle navn vil omdirigere, indtil det gøres krav på.
settings.change_orgname_redirect_prompt.with_cooldown.one = Det gamle organisationsnavn vil være tilgængeligt for alle efter en nedkølingsperiode på %[1]d dag, du kan stadig kræve det gamle navn tilbage i nedkølingsperioden. settings.change_orgname_redirect_prompt.with_cooldown.one = Det gamle organisationsnavn vil være tilgængeligt for alle efter en nedkølingsperiode på %[1]d dag, år. Du kan stadig kræve det gamle navn tilbage i nedkølingsperioden.
settings.change_orgname_redirect_prompt.with_cooldown.few = Det gamle organisationsnavn vil være tilgængeligt for alle efter en nedkølingsperiode på %[1]d dage, du kan stadig kræve det gamle navn tilbage i . settings.change_orgname_redirect_prompt.with_cooldown.few = Det gamle organisationsnavn vil være tilgængeligt for alle efter en nedkølingsperiode på %[1]d dage, år. Du kan stadig kræve det gamle navn tilbage i.
settings.update_avatar_success = Organisationens avatar er blevet opdateret. settings.update_avatar_success = Organisationens avatar er blevet opdateret.
members.public_helper = Gør skjult members.public_helper = Gør skjult
members.private = Skjult members.private = Skjult

View file

@ -251,12 +251,12 @@ db_schema_helper=Leer lassen, um den Datenbank-Standardwert („public“) zu ve
ssl_mode=SSL ssl_mode=SSL
path=Pfad path=Pfad
sqlite_helper=Dateipfad zur SQLite3-Datenbank.<br>Gib einen absoluten Pfad an, wenn Forgejo als Service gestartet wird. sqlite_helper=Dateipfad zur SQLite3-Datenbank.<br>Gib einen absoluten Pfad an, wenn Forgejo als Service gestartet wird.
reinstall_error=Du versuchst, in eine bereits existierende Forgejo Datenbank zu installieren reinstall_error=Du versuchst, in eine bereits existierende Forgejo-Datenbank zu installieren
reinstall_confirm_message=Eine Neuinstallation mit einer bestehenden Forgejo-Datenbank kann mehrere Probleme verursachen. In den meisten Fällen solltest du deine vorhandene „app.ini“ verwenden, um Forgejo auszuführen. Wenn du weißt, was du tust, bestätige die folgenden Angaben: reinstall_confirm_message=Eine Neuinstallation mit einer bestehenden Forgejo-Datenbank kann mehrere Probleme verursachen. In den meisten Fällen solltest du deine vorhandene „app.ini“ verwenden, um Forgejo auszuführen. Wenn du weißt, was du tust, bestätige die folgenden Angaben:
reinstall_confirm_check_1=Die von der SECRET_KEY in app.ini verschlüsselten Daten können verloren gehen: Benutzer können sich unter Umständen nicht mit 2FA/OTP einloggen und Spiegel könnten nicht mehr richtig funktionieren. Mit der Ankreuzung dieses Kästchens bestätigst du, dass die aktuelle app.ini-Datei den korrekten SECRET_KEY enthält. reinstall_confirm_check_1=Die von der SECRET_KEY in app.ini verschlüsselten Daten können verloren gehen: Benutzer können sich unter Umständen nicht mit 2FA/OTP einloggen und Spiegel könnten nicht mehr richtig funktionieren. Mit der Ankreuzung dieses Kästchens bestätigst du, dass die aktuelle app.ini-Datei den korrekten SECRET_KEY enthält.
reinstall_confirm_check_2=Die Repositorys und Einstellungen müssen eventuell neu synchronisiert werden. Durch das Ankreuzen dieses Kästchens bestätigst du, dass du die Hooks für die Repositorys und die authorized_keys-Datei manuell neu synchronisierst. Du bestätigst, dass du sicherstellst, dass die Repository- und Spiegeleinstellungen korrekt sind. reinstall_confirm_check_2=Die Repositorys und Einstellungen müssen eventuell neu synchronisiert werden. Durch das Ankreuzen dieses Kästchens bestätigst du, dass du die Hooks für die Repositorys und die authorized_keys-Datei manuell neu synchronisierst. Du bestätigst, dass du sicherstellst, dass die Repository- und Spiegeleinstellungen korrekt sind.
reinstall_confirm_check_3=Du bestätigst, dass du absolut sicher bist, dass diese Forgejo mit der richtigen app.ini läuft, und du sicher bist, dass du neu installieren musst. Du bestätigst, dass du die oben genannten Risiken anerkennst. reinstall_confirm_check_3=Du bestätigst, dass du absolut sicher bist, dass diese Forgejo mit der richtigen app.ini läuft, und du sicher bist, dass du neu installieren musst. Du bestätigst, dass du die oben genannten Risiken anerkennst.
err_empty_db_path=Der SQLite3 Datenbankpfad darf nicht leer sein. err_empty_db_path=Der SQLite3-Datenbankpfad darf nicht leer sein.
no_admin_and_disable_registration=Du kannst Selbst-Registrierungen nicht deaktivieren, ohne ein Administratorkonto zu erstellen. no_admin_and_disable_registration=Du kannst Selbst-Registrierungen nicht deaktivieren, ohne ein Administratorkonto zu erstellen.
err_empty_admin_password=Das Administrator-Passwort darf nicht leer sein. err_empty_admin_password=Das Administrator-Passwort darf nicht leer sein.
err_empty_admin_email=Die Administrator-E-Mail darf nicht leer sein. err_empty_admin_email=Die Administrator-E-Mail darf nicht leer sein.
@ -463,7 +463,7 @@ openid_register_title=Neues Konto einrichten
openid_register_desc=Die gewählte OpenID-URI ist unbekannt. Ordne sie hier einem neuen Account zu. openid_register_desc=Die gewählte OpenID-URI ist unbekannt. Ordne sie hier einem neuen Account zu.
openid_signin_desc=Gib deine OpenID-URI ein, zum Beispiel alice.openid.example.org oder https://openid.example.org/alice. openid_signin_desc=Gib deine OpenID-URI ein, zum Beispiel alice.openid.example.org oder https://openid.example.org/alice.
disable_forgot_password_mail=Die Kontowiederherstellung ist deaktiviert, da keine E-Mail eingerichtet ist. Bitte kontaktiere den zuständigen Administrator. disable_forgot_password_mail=Die Kontowiederherstellung ist deaktiviert, da keine E-Mail eingerichtet ist. Bitte kontaktiere den zuständigen Administrator.
disable_forgot_password_mail_admin=Die Kontowiederherstellung ist nur verfügbar, wenn eine E-Mail eingerichtet wurde. Bitte richte eine E-Mail Adresse ein, um die Kontowiederherstellung freizuschalten. disable_forgot_password_mail_admin=Die Kontowiederherstellung ist nur verfügbar, wenn eine E-Mail eingerichtet wurde. Bitte richte eine E-Mail-Adresse ein, um die Kontowiederherstellung freizuschalten.
email_domain_blacklisted=Du kannst dich nicht mit deiner E-Mail-Adresse registrieren. email_domain_blacklisted=Du kannst dich nicht mit deiner E-Mail-Adresse registrieren.
authorize_application=Anwendung autorisieren authorize_application=Anwendung autorisieren
authorize_redirect_notice=Du wirst zu %s weitergeleitet, wenn du diese Anwendung autorisierst. authorize_redirect_notice=Du wirst zu %s weitergeleitet, wenn du diese Anwendung autorisierst.
@ -530,8 +530,8 @@ issue.action.merge=<b>@%[1]s</b> hat #%[2]d in %[3]s zusammengeführt.
issue.action.approve=<b>@%[1]s</b> hat diesen Pull-Request genehmigt. issue.action.approve=<b>@%[1]s</b> hat diesen Pull-Request genehmigt.
issue.action.reject=<b>@%[1]s</b> hat Änderungen auf diesem Pull-Request angefordert. issue.action.reject=<b>@%[1]s</b> hat Änderungen auf diesem Pull-Request angefordert.
issue.action.review=<b>@%[1]s</b> hat diesen Pull-Request kommentiert. issue.action.review=<b>@%[1]s</b> hat diesen Pull-Request kommentiert.
issue.action.review_dismissed=<b>@%[1]s</b> hat das letzte Review von %[2]s für diesen Pull-Request verworfen. issue.action.review_dismissed=<b>@%[1]s</b> hat die letzte Sichtung von %[2]s für diesen Pull-Request verworfen.
issue.action.ready_for_review=<b>@%[1]s</b> hat diesen Pull-Request zum Review freigegeben. issue.action.ready_for_review=<b>@%[1]s</b> hat diesen Pull-Request für die Sichtung freigegeben.
issue.action.new=<b>@%[1]s</b> hat #%[2]d geöffnet. issue.action.new=<b>@%[1]s</b> hat #%[2]d geöffnet.
issue.in_tree_path=In %s: issue.in_tree_path=In %s:
@ -540,8 +540,8 @@ release.new.text=<b>@%[1]s</b> hat %[2]s in %[3]s released
release.title=Titel: %s release.title=Titel: %s
release.note=Anmerkung: release.note=Anmerkung:
release.downloads=Downloads: release.downloads=Downloads:
release.download.zip=Quellcode (ZIP Datei) release.download.zip=Quellcode (ZIP)
release.download.targz=Quellcode (TAR.GZ Datei) release.download.targz=Quellcode (TAR.GZ)
repo.transfer.subject_to=%s möchte „%s“ an %s übertragen repo.transfer.subject_to=%s möchte „%s“ an %s übertragen
repo.transfer.subject_to_you=%s möchte dir „%s“ übertragen repo.transfer.subject_to_you=%s möchte dir „%s“ übertragen
@ -633,7 +633,7 @@ repository_files_already_exist=Dateien für dieses Repository sind bereits vorha
repository_files_already_exist.adopt=Dateien für dieses Repository existieren bereits und können nur übernommen werden. repository_files_already_exist.adopt=Dateien für dieses Repository existieren bereits und können nur übernommen werden.
repository_files_already_exist.delete=Dateien für dieses Repository sind bereits vorhanden. Du must sie löschen. repository_files_already_exist.delete=Dateien für dieses Repository sind bereits vorhanden. Du must sie löschen.
repository_files_already_exist.adopt_or_delete=Dateien für dieses Repository existieren bereits. Du musst sie entweder übernehmen oder löschen. repository_files_already_exist.adopt_or_delete=Dateien für dieses Repository existieren bereits. Du musst sie entweder übernehmen oder löschen.
visit_rate_limit=Das Rate-Limit bei der Gegenseite wurde erreicht. visit_rate_limit=Die Ratenbegrenzung bei der Gegenseite wurde erreicht.
2fa_auth_required=Die Gegenseite benötigt Zweifaktorauthentifikation. 2fa_auth_required=Die Gegenseite benötigt Zweifaktorauthentifikation.
org_name_been_taken=Der Organisationsname ist bereits vergeben. org_name_been_taken=Der Organisationsname ist bereits vergeben.
team_name_been_taken=Der Teamname ist bereits vergeben. team_name_been_taken=Der Teamname ist bereits vergeben.
@ -750,9 +750,9 @@ twofa=Zwei-Faktor-Authentifizierung (TOTP)
account_link=Verknüpfte Benutzerkonten account_link=Verknüpfte Benutzerkonten
organization=Organisationen organization=Organisationen
uid=UID uid=UID
webauthn=Hardware-Sicherheitsschlüssel webauthn=Zwei-Faktor-Authentifizierung (Sicherheitsschlüssel)
public_profile=Öffentliches Profil public_profile=Öffentliches profil
biography_placeholder=Erzähle anderen ein wenig über dich selbst! (Markdown wird unterstützt) biography_placeholder=Erzähle anderen ein wenig über dich selbst! (Markdown wird unterstützt)
location_placeholder=Teile deinen ungefähren Standort mit anderen location_placeholder=Teile deinen ungefähren Standort mit anderen
profile_desc=Über dich profile_desc=Über dich
@ -787,7 +787,7 @@ comment_type_group_time_tracking=Zeiterfassung
comment_type_group_deadline=Frist comment_type_group_deadline=Frist
comment_type_group_dependency=Abhängigkeit comment_type_group_dependency=Abhängigkeit
comment_type_group_lock=Sperrstatus comment_type_group_lock=Sperrstatus
comment_type_group_review_request=Angeforderte Reviews comment_type_group_review_request=Angeforderte Sichtungen
comment_type_group_pull_request_push=Hinzugefügte Commits comment_type_group_pull_request_push=Hinzugefügte Commits
comment_type_group_project=Projekt comment_type_group_project=Projekt
comment_type_group_issue_ref=Issue-Referenz comment_type_group_issue_ref=Issue-Referenz
@ -873,7 +873,7 @@ gpg_key_matched_identities_long=Die eingebetteten Identitäten in diesem Schlüs
gpg_key_verified=Verifizierter Schlüssel gpg_key_verified=Verifizierter Schlüssel
gpg_key_verified_long=Der Schlüssel wurde mit einem Token verifiziert. Er kann verwendet werden, um Commits zu verifizieren, die mit irgendeiner für diesen Nutzer aktivierten E-Mail-Adresse und irgendeiner Identität dieses Schlüssels übereinstimmen. gpg_key_verified_long=Der Schlüssel wurde mit einem Token verifiziert. Er kann verwendet werden, um Commits zu verifizieren, die mit irgendeiner für diesen Nutzer aktivierten E-Mail-Adresse und irgendeiner Identität dieses Schlüssels übereinstimmen.
gpg_key_verify=Verifizieren gpg_key_verify=Verifizieren
gpg_invalid_token_signature=Der GPG-Key, die Signatur, und das Token stimmen nicht überein, oder das Token ist veraltet. gpg_invalid_token_signature=Der GPG-Key, die Signatur und das Token stimmen nicht überein, oder das Token ist veraltet.
gpg_token_required=Du musst eine Signatur für das folgende Token angeben gpg_token_required=Du musst eine Signatur für das folgende Token angeben
gpg_token=Token gpg_token=Token
gpg_token_help=Du kannst eine Signatur wie folgt generieren: gpg_token_help=Du kannst eine Signatur wie folgt generieren:
@ -885,9 +885,9 @@ ssh_key_verified=Verifizierter Schlüssel
ssh_key_verified_long=Der Schlüssel wurde mit einem Token verifiziert. Er kann verwendet werden, um Commits zu verifizieren, die mit irgendeiner für diesen Nutzer aktivierten E-Mail-Adresse und irgendeiner Identität dieses Schlüssels übereinstimmen. ssh_key_verified_long=Der Schlüssel wurde mit einem Token verifiziert. Er kann verwendet werden, um Commits zu verifizieren, die mit irgendeiner für diesen Nutzer aktivierten E-Mail-Adresse und irgendeiner Identität dieses Schlüssels übereinstimmen.
ssh_key_verify=Verifizieren ssh_key_verify=Verifizieren
ssh_invalid_token_signature=Der gegebene SSH-Schlüssel, Signatur oder Token stimmen nicht überein oder der Token ist veraltet. ssh_invalid_token_signature=Der gegebene SSH-Schlüssel, Signatur oder Token stimmen nicht überein oder der Token ist veraltet.
ssh_token_required=Du musst eine Signatur für den Token unten angeben ssh_token_required=Sie müssen eine Signatur für das Token unten angeben
ssh_token=Token ssh_token=Token
ssh_token_help=Du kannst eine Signatur wie folgt generieren: ssh_token_help=Sie können eine Signatur wie folgt generieren:
ssh_token_signature=SSH-Textsignatur (armored signature) ssh_token_signature=SSH-Textsignatur (armored signature)
key_signature_ssh_placeholder=Beginnt mit „-----BEGIN SSH SIGNATURE-----“ key_signature_ssh_placeholder=Beginnt mit „-----BEGIN SSH SIGNATURE-----“
verify_ssh_key_success=SSH-Key „%s“ wurde verifiziert. verify_ssh_key_success=SSH-Key „%s“ wurde verifiziert.
@ -902,10 +902,10 @@ add_principal_success=Die SSH-Zertifikatsidentität „%s“ wurde hinzugefügt.
delete_key=Entfernen delete_key=Entfernen
ssh_key_deletion=SSH-Schlüssel entfernen ssh_key_deletion=SSH-Schlüssel entfernen
gpg_key_deletion=GPG-Schlüssel entfernen gpg_key_deletion=GPG-Schlüssel entfernen
ssh_principal_deletion=SSH-Zertifik-Identität entfernen ssh_principal_deletion=SSH-Zertifikats-Principal entfernen
ssh_key_deletion_desc=Wenn du einen SSH-Key entfernst, hast du mit diesem Key keinen Zugriff mehr. Fortfahren? ssh_key_deletion_desc=Wenn du einen SSH-Key entfernst, hast du mit diesem Key keinen Zugriff mehr. Fortfahren?
gpg_key_deletion_desc=Wenn du einen GPG-Schlüssel entfernst, können damit unterschriebene Commits nicht mehr verifiziert werden. Fortfahren? gpg_key_deletion_desc=Wenn du einen GPG-Schlüssel entfernst, können damit unterschriebene Commits nicht mehr verifiziert werden. Fortfahren?
ssh_principal_deletion_desc=Das Entfernen einer SSH-Zertifikat-Identität entzieht den Zugriff auf dein Konto. Fortfahren? ssh_principal_deletion_desc=Das Entfernen eines SSH-Zertifikats-Principals entzieht den Zugriff auf dein Konto. Fortfahren?
ssh_key_deletion_success=Der SSH-Schlüssel wurde entfernt. ssh_key_deletion_success=Der SSH-Schlüssel wurde entfernt.
gpg_key_deletion_success=Der GPG-Schlüssel wurde entfernt. gpg_key_deletion_success=Der GPG-Schlüssel wurde entfernt.
ssh_principal_deletion_success=Die Identität wurde entfernt. ssh_principal_deletion_success=Die Identität wurde entfernt.
@ -931,7 +931,7 @@ unbind_success=Das soziale Konto wurde erfolgreich entfernt.
manage_access_token=Zugriffstokens manage_access_token=Zugriffstokens
generate_new_token=Neuen Token erzeugen generate_new_token=Neuen Token erzeugen
tokens_desc=Diese Tokens gewähren vollen Zugriff auf dein Konto via die Forgejo-API. tokens_desc=Diese Tokens gewähren vollen Zugriff auf dein Konto mit der Forgejo-API.
token_name=Token-Name token_name=Token-Name
generate_token=Token generieren generate_token=Token generieren
generate_token_success=Ein neuer Token wurde generiert. Kopiere diesen jetzt, da er nicht erneut angezeigt wird. generate_token_success=Ein neuer Token wurde generiert. Kopiere diesen jetzt, da er nicht erneut angezeigt wird.
@ -970,8 +970,8 @@ save_application=Speichern
oauth2_client_id=Client-ID oauth2_client_id=Client-ID
oauth2_client_secret=Client-Geheimnis oauth2_client_secret=Client-Geheimnis
oauth2_regenerate_secret=Geheimnis neu generieren oauth2_regenerate_secret=Geheimnis neu generieren
oauth2_regenerate_secret_hint=Secret verloren? oauth2_regenerate_secret_hint=Geheimnis verloren?
oauth2_client_secret_hint=Das Secret wird nach dem Verlassen oder Aktualisieren dieser Seite nicht mehr angezeigt. Bitte stelle sicher, dass du es gespeichert hast. oauth2_client_secret_hint=Das Geheimnis wird nach dem Verlassen oder Aktualisieren dieser Seite nicht mehr angezeigt. Bitte stelle sicher, dass du es gespeichert hast.
oauth2_application_edit=Bearbeiten oauth2_application_edit=Bearbeiten
oauth2_application_create_description=OAuth2-Anwendungen geben deiner Drittanwendung Zugriff auf Benutzeraccounts dieser Forgejo-Instanz. oauth2_application_create_description=OAuth2-Anwendungen geben deiner Drittanwendung Zugriff auf Benutzeraccounts dieser Forgejo-Instanz.
oauth2_application_remove_description=Das Entfernen einer OAuth2-Anwendung hat zur Folge, dass diese nicht mehr auf autorisierte Benutzeraccounts auf dieser Instanz zugreifen kann. Möchtest Du fortfahren? oauth2_application_remove_description=Das Entfernen einer OAuth2-Anwendung hat zur Folge, dass diese nicht mehr auf autorisierte Benutzeraccounts auf dieser Instanz zugreifen kann. Möchtest Du fortfahren?
@ -996,11 +996,11 @@ twofa_disable_desc=Wenn du die Zwei-Faktor-Authentifizierung deaktivierst, wird
regenerate_scratch_token_desc=Wenn du deinen Wiederherstellungsschlüssel verlegst oder es bereits benutzt hast, kannst du es hier zurücksetzen. regenerate_scratch_token_desc=Wenn du deinen Wiederherstellungsschlüssel verlegst oder es bereits benutzt hast, kannst du es hier zurücksetzen.
twofa_disabled=Zwei-Faktor-Authentifizierung wurde deaktiviert. twofa_disabled=Zwei-Faktor-Authentifizierung wurde deaktiviert.
scan_this_image=Scanne diese Grafik mit deiner Authentifizierungs-App: scan_this_image=Scanne diese Grafik mit deiner Authentifizierungs-App:
or_enter_secret=Oder gib das Secret ein: %s or_enter_secret=Oder gib das Geheimnis ein: %s
then_enter_passcode=Und gib dann die angezeigte PIN der Anwendung ein: then_enter_passcode=Und gib dann die angezeigte PIN der Anwendung ein:
passcode_invalid=Die PIN ist falsch. Probiere es erneut. passcode_invalid=Die PIN ist falsch. Probiere es erneut.
twofa_enrolled=Die Zwei-Faktor-Authentifizierung wurde für dein Konto aktiviert. Bewahre deinen einmalig verwendbaren Wiederherstellungsschlüssel (%s) an einem sicheren Ort auf, da er nicht wieder angezeigt werden wird. twofa_enrolled=Die Zwei-Faktor-Authentifizierung wurde für dein Konto aktiviert. Bewahre deinen einmalig verwendbaren Wiederherstellungsschlüssel (%s) an einem sicheren Ort auf, da er nicht wieder angezeigt werden wird.
twofa_failed_get_secret=Fehler beim Abrufen des Secrets. twofa_failed_get_secret=Fehler beim Abrufen des Geheimnisses.
webauthn_desc=Sicherheitsschlüssel sind Geräte, die kryptografische Schlüssel beeinhalten. Diese können für die Zwei-Faktor-Authentifizierung verwendet werden. Der Sicherheitsschlüssel muss den Standard „<a rel="noreferrer" target="_blank" href="%s">WebAuthn</a>“ unterstützen. webauthn_desc=Sicherheitsschlüssel sind Geräte, die kryptografische Schlüssel beeinhalten. Diese können für die Zwei-Faktor-Authentifizierung verwendet werden. Der Sicherheitsschlüssel muss den Standard „<a rel="noreferrer" target="_blank" href="%s">WebAuthn</a>“ unterstützen.
webauthn_register_key=Sicherheitsschlüssel hinzufügen webauthn_register_key=Sicherheitsschlüssel hinzufügen
@ -1093,6 +1093,8 @@ access_token_regeneration = Zugangstoken regenerieren
access_token_regeneration_desc = Einen Token zu regenerieren, wird den Zugriff auf deinen Account von Anwendungen, die ihn nutzen, zurückziehen. Dies kann nicht rückgängig gemacht werden. Fortsetzen? access_token_regeneration_desc = Einen Token zu regenerieren, wird den Zugriff auf deinen Account von Anwendungen, die ihn nutzen, zurückziehen. Dies kann nicht rückgängig gemacht werden. Fortsetzen?
regenerate_token = Regenerieren regenerate_token = Regenerieren
ssh_token_help_ssh_agent = , oder, falls Sie einen SSH-Agenten benutzen (mit der Variable SSH_AUTH_SOCK gesetzt):
[repo] [repo]
owner=Besitzer owner=Besitzer
owner_helper=Einige Organisationen könnten in der Dropdown-Liste nicht angezeigt werden, da die Anzahl an Repositorys begrenzt ist. owner_helper=Einige Organisationen könnten in der Dropdown-Liste nicht angezeigt werden, da die Anzahl an Repositorys begrenzt ist.
@ -1185,9 +1187,9 @@ blame.ignore_revs=Revisionen in <a href="%s">.git-blame-ignore-revs</a> werden i
blame.ignore_revs.failed=Fehler beim Ignorieren der Revisionen in <a href="%s">.git-blame-ignore-revs</a>. blame.ignore_revs.failed=Fehler beim Ignorieren der Revisionen in <a href="%s">.git-blame-ignore-revs</a>.
author_search_tooltip=Zeigt maximal 30 Benutzer author_search_tooltip=Zeigt maximal 30 Benutzer
tree_path_not_found_commit=Pfad %[1]s existiert nicht in Commit%[2]s tree_path_not_found_commit=Pfad %[1]s existiert nicht im Commit %[2]s
tree_path_not_found_branch=Pfad %[1]s existiert nicht in Branch %[2]s tree_path_not_found_branch=Pfad %[1]s existiert nicht im Branch %[2]s
tree_path_not_found_tag=Pfad %[1]s existiert nicht in Tag %[2]s tree_path_not_found_tag=Pfad %[1]s existiert nicht im Tag %[2]s
transfer.accept=Übertragung akzeptieren transfer.accept=Übertragung akzeptieren
transfer.accept_desc=Übertragung nach „%s“ transfer.accept_desc=Übertragung nach „%s“
@ -1248,7 +1250,7 @@ migrate.clone_local_path=oder ein lokaler Serverpfad
migrate.permission_denied=Du hast keine Berechtigung zum Importieren lokaler Repositorys. migrate.permission_denied=Du hast keine Berechtigung zum Importieren lokaler Repositorys.
migrate.permission_denied_blocked=Du kannst von keinen nicht erlaubten Hosts importieren. Bitte fragen deinen Administrator, die Einstellungen ALLOWED_DOMAINS/ALLOW_LOCALNETWORKS/BLOCKED_DOMAINS zu überprüfen. migrate.permission_denied_blocked=Du kannst von keinen nicht erlaubten Hosts importieren. Bitte fragen deinen Administrator, die Einstellungen ALLOWED_DOMAINS/ALLOW_LOCALNETWORKS/BLOCKED_DOMAINS zu überprüfen.
migrate.invalid_local_path=Der lokale Pfad ist ungültig. Er existiert nicht oder ist kein Verzeichnis. migrate.invalid_local_path=Der lokale Pfad ist ungültig. Er existiert nicht oder ist kein Verzeichnis.
migrate.invalid_lfs_endpoint=Ungültiger LFS Endpunkt. migrate.invalid_lfs_endpoint=Der LFS-Endpunkt ist nicht gültig.
migrate.failed=Fehler bei der Migration: %v migrate.failed=Fehler bei der Migration: %v
migrate.migrate_items_options=Zugangs-Token wird benötigt, um zusätzliche Elemente zu migrieren migrate.migrate_items_options=Zugangs-Token wird benötigt, um zusätzliche Elemente zu migrieren
migrated_from=Migriert von <a href="%[1]s">%[2]s</a> migrated_from=Migriert von <a href="%[1]s">%[2]s</a>
@ -1324,7 +1326,7 @@ commit=Commit
release=Release release=Release
releases=Releases releases=Releases
tag=Tag tag=Tag
released_this=hat released released_this=hat releast
tagged_this=hat getaggt tagged_this=hat getaggt
file.title=%s an %s file.title=%s an %s
file_raw=Originalformat file_raw=Originalformat
@ -1448,7 +1450,7 @@ commits.older=Älter
commits.newer=Neuer commits.newer=Neuer
commits.signed_by=Signiert von commits.signed_by=Signiert von
commits.signed_by_untrusted_user=Signiert von nicht vertrauenswürdigen Benutzern commits.signed_by_untrusted_user=Signiert von nicht vertrauenswürdigen Benutzern
commits.signed_by_untrusted_user_unmatched=Signiert von nicht vertrauenswürdigen Benutzern, der nicht mit dem Committer übereinstimmt commits.signed_by_untrusted_user_unmatched=Von einem nicht vertrauenswürdigen Benutzer, der nicht auf den Committer passt, signiert
commits.gpg_key_id=GPG-Schlüssel-ID commits.gpg_key_id=GPG-Schlüssel-ID
commits.ssh_key_fingerprint=SSH-Schlüssel-Fingerabdruck commits.ssh_key_fingerprint=SSH-Schlüssel-Fingerabdruck
commits.view_path=An diesem Punkt im Verlauf anzeigen commits.view_path=An diesem Punkt im Verlauf anzeigen
@ -1459,7 +1461,7 @@ commit.revert-header=Setze zurück: %s
commit.revert-content=Branch auswählen, der zurückgesetzt werden soll: commit.revert-content=Branch auswählen, der zurückgesetzt werden soll:
commit.cherry-pick=Cherry-Pick commit.cherry-pick=Cherry-Pick
commit.cherry-pick-header=Cherry-Picke: %s commit.cherry-pick-header=Cherry-Picke: %s
commit.cherry-pick-content=Branch auswählen, auf dem Cherry-Picked werden soll: commit.cherry-pick-content=Branch auswählen, zu dem das Ergebnis des Cherry-Picks angewendet werden soll:
commitstatus.error=Fehler commitstatus.error=Fehler
commitstatus.failure=Fehler commitstatus.failure=Fehler
@ -1515,7 +1517,7 @@ issues.filter_assignees=Verantwortliche filtern
issues.filter_milestones=Meilenstein filtern issues.filter_milestones=Meilenstein filtern
issues.filter_projects=Projekt filtern issues.filter_projects=Projekt filtern
issues.filter_labels=Label filtern issues.filter_labels=Label filtern
issues.filter_reviewers=Reviewer filtern issues.filter_reviewers=Prüfer filtern
issues.new=Neues Issue issues.new=Neues Issue
issues.new.title_empty=Der Titel kann nicht leer sein issues.new.title_empty=Der Titel kann nicht leer sein
issues.new.labels=Labels issues.new.labels=Labels
@ -1535,7 +1537,7 @@ issues.new.closed_milestone=Geschlossene Meilensteine
issues.new.assignees=Zuständige issues.new.assignees=Zuständige
issues.new.clear_assignees=Zuständige entfernen issues.new.clear_assignees=Zuständige entfernen
issues.new.no_assignees=Niemand zuständig issues.new.no_assignees=Niemand zuständig
issues.new.no_reviewers=Keine Reviewer issues.new.no_reviewers=Keine Prüfer
issues.choose.get_started=Los geht's issues.choose.get_started=Los geht's
issues.choose.open_external_link=Öffnen issues.choose.open_external_link=Öffnen
issues.choose.blank=Standard issues.choose.blank=Standard
@ -1598,8 +1600,8 @@ issues.filter_type.all_issues=Alle Issues
issues.filter_type.assigned_to_you=Dir zugewiesen issues.filter_type.assigned_to_you=Dir zugewiesen
issues.filter_type.created_by_you=Von dir erstellt issues.filter_type.created_by_you=Von dir erstellt
issues.filter_type.mentioning_you=Hat dich erwähnt issues.filter_type.mentioning_you=Hat dich erwähnt
issues.filter_type.review_requested=Review angefordert issues.filter_type.review_requested=Sichtung angefordert
issues.filter_type.reviewed_by_you=Von dir gereviewt issues.filter_type.reviewed_by_you=Von dir überprüft
issues.filter_sort=Sortieren issues.filter_sort=Sortieren
issues.filter_sort.latest=Neueste issues.filter_sort.latest=Neueste
issues.filter_sort.oldest=Älteste issues.filter_sort.oldest=Älteste
@ -1621,8 +1623,8 @@ issues.action_milestone=Meilenstein
issues.action_milestone_no_select=Kein Meilenstein issues.action_milestone_no_select=Kein Meilenstein
issues.action_assignee=Zuständig issues.action_assignee=Zuständig
issues.action_assignee_no_select=Niemand zuständig issues.action_assignee_no_select=Niemand zuständig
issues.action_check=Auswählen/Auswahl aufheben issues.action_check=Auswählen / Auswahl aufheben
issues.action_check_all=Alles auswählen/Auswahl aufheben issues.action_check_all=Alles auswählen / Auswahl aufheben
issues.opened_by=%[1]s von <a href="%[2]s">%[3]s</a> geöffnet issues.opened_by=%[1]s von <a href="%[2]s">%[3]s</a> geöffnet
pulls.merged_by=von <a href="%[2]s">%[3]s</a> wurde %[1]s zusammengeführt pulls.merged_by=von <a href="%[2]s">%[3]s</a> wurde %[1]s zusammengeführt
pulls.merged_by_fake=von %[2]s %[1]s zusammengeführt pulls.merged_by_fake=von %[2]s %[1]s zusammengeführt
@ -1654,7 +1656,7 @@ issues.create_comment=Kommentieren
issues.closed_at=`hat dieses Issue %s geschlossen` issues.closed_at=`hat dieses Issue %s geschlossen`
issues.reopened_at=`hat dieses Issue %s wieder geöffnet` issues.reopened_at=`hat dieses Issue %s wieder geöffnet`
issues.commit_ref_at=`hat dieses Issue %s aus einem Commit referenziert` issues.commit_ref_at=`hat dieses Issue %s aus einem Commit referenziert`
issues.ref_issue_from=`<a href="%[2]s">hat</a> %[1]s <a href="%[2]s">auf dieses Issue verwiesen %[3]s</a>` issues.ref_issue_from=`<a href="%[2]s">auf dieses Issue verwiesen %[3]s</a> %[1]s`
issues.ref_pull_from=`<a href="%[2]s">referenzierte diesen Pull-Request %[3]s</a> %[1]s` issues.ref_pull_from=`<a href="%[2]s">referenzierte diesen Pull-Request %[3]s</a> %[1]s`
issues.ref_closing_from=`<a href="%[2]s">referenzierte dieses Issue aus einem Pull-Request %[3]s der es schließen wird</a>, %[1]s` issues.ref_closing_from=`<a href="%[2]s">referenzierte dieses Issue aus einem Pull-Request %[3]s der es schließen wird</a>, %[1]s`
issues.ref_reopening_from=`<a href="%[2]s">referenzierte dieses Issue aus einem Pull-Request %[3]s der es wieder öffnen wird</a>, %[1]s` issues.ref_reopening_from=`<a href="%[2]s">referenzierte dieses Issue aus einem Pull-Request %[3]s der es wieder öffnen wird</a>, %[1]s`
@ -1673,12 +1675,12 @@ issues.role.first_time_contributor=Erstmaliger Mitwirkender
issues.role.first_time_contributor_helper=Dies ist der erste Beitrag dieses Benutzers zum Repository. issues.role.first_time_contributor_helper=Dies ist der erste Beitrag dieses Benutzers zum Repository.
issues.role.contributor=Mitwirkender issues.role.contributor=Mitwirkender
issues.role.contributor_helper=Dieser Benutzer hat schon zuvor zu dem Repository beigetragen. issues.role.contributor_helper=Dieser Benutzer hat schon zuvor zu dem Repository beigetragen.
issues.re_request_review=Review erneut anfordern issues.re_request_review=Sichtung erneut anfordern
issues.is_stale=Seit diesem Review gab es Änderungen an diesem PR issues.is_stale=Seit dieser Sichtung gab es Änderungen an diesem PR
issues.remove_request_review=Review-Anfrage entfernen issues.remove_request_review=Sichtungsanfrage entfernen
issues.remove_request_review_block=Review-Anfrage kann nicht entfernt werden issues.remove_request_review_block=Sichtungsanfrage kann nicht entfernt werden
issues.dismiss_review=Review verwerfen issues.dismiss_review=Sichtung verwerfen
issues.dismiss_review_warning=Bist du dir sicher, dass du dieses Review verwerfen willst? issues.dismiss_review_warning=Bist du dir sicher, dass du diese Sichtung verwerfen willst?
issues.sign_in_require_desc=<a href="%s">Anmelden</a>, um an der Diskussion teilzunehmen. issues.sign_in_require_desc=<a href="%s">Anmelden</a>, um an der Diskussion teilzunehmen.
issues.edit=Bearbeiten issues.edit=Bearbeiten
issues.cancel=Abbrechen issues.cancel=Abbrechen
@ -1809,20 +1811,20 @@ issues.dependency.add_error_dep_not_same_repo=Beide Issues müssen sich im selbe
issues.review.self.approval=Du kannst nicht dein eigenen Pull-Request genehmigen. issues.review.self.approval=Du kannst nicht dein eigenen Pull-Request genehmigen.
issues.review.self.rejection=Du kannst keine Änderungen an deinem eigenen Pull-Request anfragen. issues.review.self.rejection=Du kannst keine Änderungen an deinem eigenen Pull-Request anfragen.
issues.review.approve=hat die Änderungen %s genehmigt issues.review.approve=hat die Änderungen %s genehmigt
issues.review.comment=hat %s gereviewt issues.review.comment=hat %s überprüft
issues.review.dismissed=verwarf %ss Review %s issues.review.dismissed=verwarf %ss Review %s
issues.review.dismissed_label=Verworfen issues.review.dismissed_label=Verworfen
issues.review.left_comment=hat einen Kommentar hinterlassen issues.review.left_comment=hat einen Kommentar hinterlassen
issues.review.content.empty=Du musst einen Kommentar hinterlassen, der die gewünschte(n) Änderung(en) beschreibt. issues.review.content.empty=Du musst einen Kommentar hinterlassen, der die gewünschte(n) Änderung(en) beschreibt.
issues.review.reject=hat %s Änderungen angefragt issues.review.reject=hat %s Änderungen angefragt
issues.review.wait=wurde für ein Review %s angefragt issues.review.wait=wurde für eine Sichtung von %s angefragt
issues.review.add_review_request=hat ein Review von %[1]s %[2]s angefragt issues.review.add_review_request=hat eine Sichtung von %[1]s %[2]s angefragt
issues.review.remove_review_request=hat die Aufforderung zum Review an %[1]s %[2]s entfernt issues.review.remove_review_request=hat die Sichtungsanfrage an %[1]s %[2]s entfernt
issues.review.remove_review_request_self=hat das Review verweigert %s issues.review.remove_review_request_self=hat die Sichtung %s verweigert
issues.review.pending=Ausstehend issues.review.pending=Ausstehend
issues.review.pending.tooltip=Dieser Kommentar ist derzeit nicht für andere Benutzer sichtbar. Um deine ausstehenden Kommentare einzureichen, wähle „%s“ -> „%s/%s/%s“ oben auf der Seite. issues.review.pending.tooltip=Dieser Kommentar ist derzeit nicht für andere Benutzer sichtbar. Um deine ausstehenden Kommentare einzureichen, wähle „%s“ -> „%s/%s/%s“ oben auf der Seite.
issues.review.review=Review issues.review.review=Review
issues.review.reviewers=Reviewer issues.review.reviewers=Prüfer
issues.review.outdated=Veraltet issues.review.outdated=Veraltet
issues.review.outdated_description=Der Inhalt hat sich geändert, seit dieser Kommentar abgegeben wurde issues.review.outdated_description=Der Inhalt hat sich geändert, seit dieser Kommentar abgegeben wurde
issues.review.option.show_outdated_comments=Veraltete Kommentare anzeigen issues.review.option.show_outdated_comments=Veraltete Kommentare anzeigen
@ -1833,7 +1835,7 @@ issues.review.show_resolved=Erledigte anzeigen
issues.review.hide_resolved=Erledigte ausblenden issues.review.hide_resolved=Erledigte ausblenden
issues.review.resolve_conversation=Diskussion als „erledigt“ markieren issues.review.resolve_conversation=Diskussion als „erledigt“ markieren
issues.review.un_resolve_conversation=Diskussion als „nicht erledigt“ markieren issues.review.un_resolve_conversation=Diskussion als „nicht erledigt“ markieren
issues.review.resolved_by=markierte diese Unterhaltung als gelöst issues.review.resolved_by=markierte diese Unterhaltung als „erledigt“
issues.assignee.error=Aufgrund eines unerwarteten Fehlers konnten nicht alle Zuständigen hinzugefügt werden. issues.assignee.error=Aufgrund eines unerwarteten Fehlers konnten nicht alle Zuständigen hinzugefügt werden.
issues.reference_issue.body=Beschreibung issues.reference_issue.body=Beschreibung
issues.content_history.deleted=gelöscht issues.content_history.deleted=gelöscht
@ -1847,7 +1849,7 @@ issues.reference_link=Referenz: %s
compare.compare_base=Basis compare.compare_base=Basis
compare.compare_head=vergleichen compare.compare_head=vergleichen
pulls.desc=Pull-Requests und Code-Reviews aktivieren. pulls.desc=Pull-Requests und Code-Sichtungen aktivieren.
pulls.new=Neuer Pull-Request pulls.new=Neuer Pull-Request
pulls.view=Pull-Request ansehen pulls.view=Pull-Request ansehen
pulls.compare_changes=Neuer Pull-Request pulls.compare_changes=Neuer Pull-Request
@ -1856,7 +1858,7 @@ pulls.allow_edits_from_maintainers_desc=Nutzer mit Schreibzugriff auf den Basisb
pulls.allow_edits_from_maintainers_err=Aktualisieren fehlgeschlagen pulls.allow_edits_from_maintainers_err=Aktualisieren fehlgeschlagen
pulls.compare_changes_desc=Wähle den Zielbranch, in das zusammengeführt werden soll, und den Quellbranch, von dem gepullt werden soll, aus. pulls.compare_changes_desc=Wähle den Zielbranch, in das zusammengeführt werden soll, und den Quellbranch, von dem gepullt werden soll, aus.
pulls.has_viewed_file=Gesehen pulls.has_viewed_file=Gesehen
pulls.has_changed_since_last_review=Seit deinem letzten Review geändert pulls.has_changed_since_last_review=Seit deiner letzten Sichtung geändert
pulls.viewed_files_label=%[1]d / %[2]d Dateien betrachtet pulls.viewed_files_label=%[1]d / %[2]d Dateien betrachtet
pulls.expand_files=Alle Dateien ausklappen pulls.expand_files=Alle Dateien ausklappen
pulls.collapse_files=Alle Dateien einklappen pulls.collapse_files=Alle Dateien einklappen
@ -1867,11 +1869,11 @@ pulls.switch_head_and_base=Head und Base vertauschen
pulls.filter_branch=Branch filtern pulls.filter_branch=Branch filtern
pulls.no_results=Keine Ergebnisse verfügbar. pulls.no_results=Keine Ergebnisse verfügbar.
pulls.show_all_commits=Alle Commits anzeigen pulls.show_all_commits=Alle Commits anzeigen
pulls.show_changes_since_your_last_review=Zeige Änderungen seit deinem letzten Review pulls.show_changes_since_your_last_review=Zeige Änderungen seit deiner letzten Sichtung
pulls.showing_only_single_commit=Nur Änderungen aus Commit %[1]s werden angezeigt pulls.showing_only_single_commit=Nur Änderungen aus Commit %[1]s werden angezeigt
pulls.showing_specified_commit_range=Zeige nur die Änderungen zwischen %[1]s..%[2]s pulls.showing_specified_commit_range=Zeige nur die Änderungen zwischen %[1]s..%[2]s
pulls.select_commit_hold_shift_for_range=Commit auswählen. Halte Shift + klicke, um eine Reihe auszuwählen pulls.select_commit_hold_shift_for_range=Commit auswählen. Halte Shift + klicke, um eine Reihe auszuwählen
pulls.review_only_possible_for_full_diff=Ein Review ist nur möglich, wenn das vollständige Diff angezeigt wird pulls.review_only_possible_for_full_diff=Eine Sichtung ist nur möglich, wenn der vollständige Diff angezeigt wird
pulls.filter_changes_by_commit=Nach Commit filtern pulls.filter_changes_by_commit=Nach Commit filtern
pulls.nothing_to_compare=Diese Branches sind identisch. Es muss kein Pull-Request erstellt werden. pulls.nothing_to_compare=Diese Branches sind identisch. Es muss kein Pull-Request erstellt werden.
pulls.nothing_to_compare_and_allow_empty_pr=Diese Branches sind gleich. Der Pull-Request wird leer sein. pulls.nothing_to_compare_and_allow_empty_pr=Diese Branches sind gleich. Der Pull-Request wird leer sein.
@ -1905,8 +1907,8 @@ pulls.required_status_check_failed=Einige erforderliche Prüfungen waren nicht e
pulls.required_status_check_missing=Einige erforderliche Prüfungen fehlen. pulls.required_status_check_missing=Einige erforderliche Prüfungen fehlen.
pulls.required_status_check_administrator=Als Administrator kannst du diesen Pull-Request weiterhin zusammenführen. pulls.required_status_check_administrator=Als Administrator kannst du diesen Pull-Request weiterhin zusammenführen.
pulls.blocked_by_approvals=Dieser Pull-Request hat noch nicht genügend Genehmigungen. %d von %d Genehmigungen erteilt. pulls.blocked_by_approvals=Dieser Pull-Request hat noch nicht genügend Genehmigungen. %d von %d Genehmigungen erteilt.
pulls.blocked_by_rejection=Dieser Pull-Request hat Änderungen, die von einem offiziellen Reviewer angefragt wurden. pulls.blocked_by_rejection=Dieser Pull-Request hat Änderungen, die von einem offiziellen Prüfer angefragt wurden.
pulls.blocked_by_official_review_requests=Dieser Pull-Request ist blockiert, weil ihm die Genehmigung von einem oder mehreren offiziellen Reviewern fehlt. pulls.blocked_by_official_review_requests=Dieser Pull-Request ist blockiert, weil ihm die Genehmigung von einem oder mehreren offiziellen Prüfern fehlt.
pulls.blocked_by_outdated_branch=Dieser Pull-Request ist blockiert, da er veraltet ist. pulls.blocked_by_outdated_branch=Dieser Pull-Request ist blockiert, da er veraltet ist.
pulls.blocked_by_changed_protected_files_1=Dieser Pull-Request ist blockiert, weil er eine geschützte Datei ändert: pulls.blocked_by_changed_protected_files_1=Dieser Pull-Request ist blockiert, weil er eine geschützte Datei ändert:
pulls.blocked_by_changed_protected_files_n=Dieser Pull-Request ist blockiert, weil er geschützte Dateien ändert: pulls.blocked_by_changed_protected_files_n=Dieser Pull-Request ist blockiert, weil er geschützte Dateien ändert:
@ -1919,14 +1921,14 @@ pulls.approve_count_1=%d Genehmigung
pulls.approve_count_n=%d Genehmigungen pulls.approve_count_n=%d Genehmigungen
pulls.reject_count_1=%d Änderungsanfrage pulls.reject_count_1=%d Änderungsanfrage
pulls.reject_count_n=%d Änderungsanfragen pulls.reject_count_n=%d Änderungsanfragen
pulls.waiting_count_1=%d wartendes Review pulls.waiting_count_1=%d wartende Sichtung
pulls.waiting_count_n=%d wartende Reviews pulls.waiting_count_n=%d wartende Sichtungen
pulls.wrong_commit_id=die Commit-ID muss eine Commit-ID auf dem Zielbranch sein pulls.wrong_commit_id=die Commit-ID muss eine Commit-ID auf dem Zielbranch sein
pulls.no_merge_desc=Dieser Pull-Request kann nicht zusammengeführt werden, da alle Repository-Merge-Optionen deaktiviert sind. pulls.no_merge_desc=Dieser Pull-Request kann nicht zusammengeführt werden, da alle Repository-Merge-Optionen deaktiviert sind.
pulls.no_merge_helper=Aktiviere Mergeoptionen in den Repositoryeinstellungen oder führe den Pull-Request manuell zusammen. pulls.no_merge_helper=Aktiviere Mergeoptionen in den Repositoryeinstellungen oder führe den Pull-Request manuell zusammen.
pulls.no_merge_wip=Dieser Pull-Request kann nicht zusammengeführt werden, da er als „Work in Progress“ (in Bearbeitung) markiert ist. pulls.no_merge_wip=Dieser Pull-Request kann nicht zusammengeführt werden, da er als „Work in Progress“ (in Bearbeitung) markiert ist.
pulls.no_merge_not_ready=Dieser Pull-Request kann nicht zusammengeführt werden, überprüfe den Reviewstatus und die Statusprüfungen. pulls.no_merge_not_ready=Dieser Pull-Request kann nicht zusammengeführt werden, überprüfe den Sichtungsstatus und die Statusprüfungen.
pulls.no_merge_access=Du bist nicht berechtigt, diesen Pull-Request zusammenzuführen. pulls.no_merge_access=Du bist nicht berechtigt, diesen Pull-Request zusammenzuführen.
pulls.merge_pull_request=Merge-Commit erstellen pulls.merge_pull_request=Merge-Commit erstellen
pulls.rebase_merge_pull_request=Rebasen und dann fast-forwarden pulls.rebase_merge_pull_request=Rebasen und dann fast-forwarden
@ -2202,7 +2204,7 @@ settings.tracker_issue_style.numeric=Numerisch
settings.tracker_issue_style.alphanumeric=Alphanumerisch settings.tracker_issue_style.alphanumeric=Alphanumerisch
settings.tracker_issue_style.regexp=Regulärer Ausdruck settings.tracker_issue_style.regexp=Regulärer Ausdruck
settings.tracker_issue_style.regexp_pattern=Regulärer Ausdruck settings.tracker_issue_style.regexp_pattern=Regulärer Ausdruck
settings.tracker_issue_style.regexp_pattern_desc=Die erste gecapturte Gruppe wird statt <code>{index}</code> verwendet. settings.tracker_issue_style.regexp_pattern_desc=Die erste gefundene Gruppe wird statt <code>{index}</code> verwendet.
settings.tracker_url_format_desc=Du kannst die Platzhalter <code>{user}</code>, <code>{repo}</code>, <code>{index}</code> für den Benutzernamen, den Namen des Repositorys und die Issue-Nummer verwenden. settings.tracker_url_format_desc=Du kannst die Platzhalter <code>{user}</code>, <code>{repo}</code>, <code>{index}</code> für den Benutzernamen, den Namen des Repositorys und die Issue-Nummer verwenden.
settings.enable_timetracker=Zeiterfassung aktivieren settings.enable_timetracker=Zeiterfassung aktivieren
settings.allow_only_contributors_to_track_time=Nur Mitarbeitern erlauben, die Zeiterfassung zu nutzen settings.allow_only_contributors_to_track_time=Nur Mitarbeitern erlauben, die Zeiterfassung zu nutzen
@ -2261,14 +2263,14 @@ settings.trust_model.collaborator=Mitarbeiter
settings.trust_model.collaborator.long=Mitarbeiter: Vertraue Signaturen von Mitarbeitern settings.trust_model.collaborator.long=Mitarbeiter: Vertraue Signaturen von Mitarbeitern
settings.trust_model.collaborator.desc=Gültige Signaturen von Mitarbeitern dieses Projekts werden als „vertrauenswürdig“ markiert (egal, ob sie mit dem Committer übereinstimmen oder nicht). Andernfalls werden gültige Signaturen als „nicht vertrauenswürdig“ markiert, falls die Signatur zum Committer passt, ansonsten werden sie als „nicht übereinstimmend“ markiert. settings.trust_model.collaborator.desc=Gültige Signaturen von Mitarbeitern dieses Projekts werden als „vertrauenswürdig“ markiert (egal, ob sie mit dem Committer übereinstimmen oder nicht). Andernfalls werden gültige Signaturen als „nicht vertrauenswürdig“ markiert, falls die Signatur zum Committer passt, ansonsten werden sie als „nicht übereinstimmend“ markiert.
settings.trust_model.committer=Committer settings.trust_model.committer=Committer
settings.trust_model.committer.long=Committer: Vertraue Signaturen, die zu Committern passen (Dies stimmt mit GitHub überein und zwingt signierte Commits von Forgejo dazu, Forgejo als Committer zu haben) settings.trust_model.committer.long=Committer: Vertraue Signaturen, die zu Committern passen (dies stimmt mit GitHub überein und zwingt signierte Commits von Forgejo dazu, Forgejo als Committer zu haben)
settings.trust_model.committer.desc=Gültige Signaturen werden nur dann als „vertrauenswürdig“ gekennzeichnet, wenn sie mit ihrem Committer übereinstimmen. Ansonsten werden sie als „nicht übereinstimmend“ markiert. Das führt dazu, dass Forgejo auf signierten Commits, bei denen der echte Committer als „Co-authored-by:“ oder „Co-committed-by:“ in der Beschreibung eingetragen wurde, als Committer gilt. Der Forgejo-Standard-Key muss zu einem Benutzer in der Datenbank passen. settings.trust_model.committer.desc=Gültige Signaturen werden nur dann als „vertrauenswürdig“ gekennzeichnet, wenn sie mit ihrem Committer übereinstimmen. Ansonsten werden sie als „nicht übereinstimmend“ markiert. Das führt dazu, dass Forgejo auf signierten Commits, bei denen der echte Committer als „Co-authored-by:“ oder „Co-committed-by:“ in der Beschreibung eingetragen wurde, als Committer gilt. Der Forgejo-Standard-Key muss zu einem Benutzer in der Datenbank passen.
settings.trust_model.collaboratorcommitter=Mitarbeiter+Committer settings.trust_model.collaboratorcommitter=Mitarbeiter+Committer
settings.trust_model.collaboratorcommitter.long=Mitarbeiter+Committer: Signaturen der Mitarbeiter vertrauen die mit dem Committer übereinstimmen settings.trust_model.collaboratorcommitter.long=Mitarbeiter+Committer: Signaturen der Mitarbeiter vertrauen die mit dem Committer übereinstimmen
settings.trust_model.collaboratorcommitter.desc=Gültige Signaturen von Mitarbeitern dieses Projekts werden als „vertrauenswürdig“ markiert, wenn sie mit dem Committer übereinstimmen. Andernfalls werden gültige Signaturen als „nicht vertrauenswürdig“ markiert, wenn die Signatur mit dem Committer übereinstimmt. Ansonsten werden sie als „nicht übereinstimmend“ markiert. Dies zwingt Forgejo, als Committer bei signierten Commits mit dem echten Committer als „Co-Authored-By:“ und „Co-Committed-By:“ im Commit zu markieren. Der Standard-Forgejo-Schlüssel muss mit einem Benutzer in der Datenbank übereinstimmen. settings.trust_model.collaboratorcommitter.desc=Gültige Signaturen von Mitarbeitern dieses Projekts werden als „vertrauenswürdig“ markiert, wenn sie mit dem Committer übereinstimmen. Andernfalls werden gültige Signaturen als „nicht vertrauenswürdig“ markiert, wenn die Signatur mit dem Committer übereinstimmt. Ansonsten werden sie als „nicht übereinstimmend“ markiert. Dies zwingt Forgejo, als Committer bei signierten Commits mit dem echten Committer als „Co-Authored-By:“ und „Co-Committed-By:“ im Commit zu markieren. Der Standard-Forgejo-Schlüssel muss mit einem Benutzer in der Datenbank übereinstimmen.
settings.wiki_delete=Wiki-Daten löschen settings.wiki_delete=Wiki-Daten löschen
settings.wiki_delete_desc=Das Löschen von Wiki-Daten kann nicht rückgängig gemacht werden. Bitte sei vorsichtig. settings.wiki_delete_desc=Das Löschen von Wiki-Daten kann nicht rückgängig gemacht werden. Bitte sei vorsichtig.
settings.wiki_delete_notices_1= Dies löscht und deaktiviert das Wiki für %s. settings.wiki_delete_notices_1= Dies wird das Repository-Wiki für %s dauerhaft löschen und deaktivieren.
settings.confirm_wiki_delete=Wiki-Daten löschen settings.confirm_wiki_delete=Wiki-Daten löschen
settings.wiki_deletion_success=Repository-Wiki-Daten wurden gelöscht. settings.wiki_deletion_success=Repository-Wiki-Daten wurden gelöscht.
settings.delete=Dieses Repository löschen settings.delete=Dieses Repository löschen
@ -2327,7 +2329,7 @@ settings.add_webhook_desc=Forgejo sendet eine <code>POST</code>-Anfrage mit fest
settings.payload_url=Ziel-URL settings.payload_url=Ziel-URL
settings.http_method=HTTP-Methode settings.http_method=HTTP-Methode
settings.content_type=POST-Content-Type settings.content_type=POST-Content-Type
settings.secret=Secret settings.secret=Geheimnis
settings.slack_username=Benutzername settings.slack_username=Benutzername
settings.slack_icon_url=Icon-URL settings.slack_icon_url=Icon-URL
settings.slack_color=Farbe settings.slack_color=Farbe
@ -2374,12 +2376,12 @@ settings.event_pull_request_milestone=Meilensteine
settings.event_pull_request_milestone_desc=Meilenstein hinzugefügt, entfernt oder bearbeitet. settings.event_pull_request_milestone_desc=Meilenstein hinzugefügt, entfernt oder bearbeitet.
settings.event_pull_request_comment=Kommentare 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_comment_desc=Pull-Request-Kommentar angelegt, geändert oder gelöscht.
settings.event_pull_request_review=Reviews settings.event_pull_request_review=Sichtungen
settings.event_pull_request_review_desc=Pull-Request genehmigt, abgelehnt oder Review-Kommentare hinterlassen. settings.event_pull_request_review_desc=Pull-Request genehmigt, abgelehnt oder Sichtungskommentare hinterlassen.
settings.event_pull_request_sync=Synchronisiert settings.event_pull_request_sync=Synchronisiert
settings.event_pull_request_sync_desc=Branch automatisch mit Zielbranch aktualisiert. 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=Sichtungsanfragen
settings.event_pull_request_review_request_desc=Überprüfung des Pull-Requests angefragt oder die Anfrage entfernt. settings.event_pull_request_review_request_desc=Pull-Request-Sichtung angefragt oder Sichtungsanfrage entfernt.
settings.event_pull_request_approvals=Genehmigungen zum Pull-Request settings.event_pull_request_approvals=Genehmigungen zum Pull-Request
settings.event_pull_request_merge=Pull-Request-Merge settings.event_pull_request_merge=Pull-Request-Merge
settings.event_package=Paket settings.event_package=Paket
@ -2467,11 +2469,11 @@ settings.protect_status_check_matched=Übereinstimmung
settings.protect_invalid_status_check_pattern=Ungültiges Statusprüfungspattern: „%s“. settings.protect_invalid_status_check_pattern=Ungültiges Statusprüfungspattern: „%s“.
settings.protect_no_valid_status_check_patterns=Keine gültigen Statuscheck-Muster. settings.protect_no_valid_status_check_patterns=Keine gültigen Statuscheck-Muster.
settings.protect_required_approvals=Erforderliche Genehmigungen settings.protect_required_approvals=Erforderliche Genehmigungen
settings.protect_required_approvals_desc=Erlaube das Zusammenführen des Pull-Requests nur mit genügend positiven Reviews. settings.protect_required_approvals_desc=Erlaube das Zusammenführen des Pull-Requests nur mit genügend positiven Sichtungen.
settings.protect_approvals_whitelist_enabled=Genehmigungen auf Benutzer oder Teams auf der Positivliste beschränken settings.protect_approvals_whitelist_enabled=Genehmigungen auf Benutzer oder Teams auf der Positivliste beschränken
settings.protect_approvals_whitelist_enabled_desc=Nur Reviews von Benutzern oder Teams auf der Positivliste zählen zu den erforderlichen Genehmigungen. Existiert keine Positivliste, so zählen Reviews von jedem mit Schreibzugriff zu den erforderlichen Genehmigungen. settings.protect_approvals_whitelist_enabled_desc=Nur Sichtungen von Benutzern oder Teams auf der Positivliste zählen zu den erforderlichen Genehmigungen. Existiert keine Positivliste, so zählen Sichtungen von jedem mit Schreibzugriff zu den erforderlichen Genehmigungen.
settings.protect_approvals_whitelist_users=Nutzer, die reviewen dürfen settings.protect_approvals_whitelist_users=Autorisierte Prüfer
settings.protect_approvals_whitelist_teams=Teams, die reviewen dürfen settings.protect_approvals_whitelist_teams=Teams, autorisiert zum Prüfen
settings.dismiss_stale_approvals=Entferne alte Genehmigungen settings.dismiss_stale_approvals=Entferne alte Genehmigungen
settings.dismiss_stale_approvals_desc=Wenn neue Commits gepusht werden, die den Inhalt des Pull-Requests ändern, werden alte Genehmigungen entfernt. settings.dismiss_stale_approvals_desc=Wenn neue Commits gepusht werden, die den Inhalt des Pull-Requests ändern, werden alte Genehmigungen entfernt.
settings.require_signed_commits=Signierte Commits erforderlich settings.require_signed_commits=Signierte Commits erforderlich
@ -2489,10 +2491,10 @@ settings.remove_protected_branch_success=Branchschutzregel „%s“ wurde entfer
settings.remove_protected_branch_failed=Entfernen der Branchschutzregel „%s“ fehlgeschlagen. settings.remove_protected_branch_failed=Entfernen der Branchschutzregel „%s“ fehlgeschlagen.
settings.protected_branch_deletion=Branch-Schutz löschen settings.protected_branch_deletion=Branch-Schutz löschen
settings.protected_branch_deletion_desc=Wenn du den Branch-Schutz deaktivierst, können alle Nutzer mit Schreibrechten auf den Branch pushen. Fortfahren? settings.protected_branch_deletion_desc=Wenn du den Branch-Schutz deaktivierst, können alle Nutzer mit Schreibrechten auf den Branch pushen. Fortfahren?
settings.block_rejected_reviews=Zusammenführung bei abgelehnten Reviews blockieren settings.block_rejected_reviews=Zusammenführung bei abgelehnten Sichtungen blockieren
settings.block_rejected_reviews_desc=Merge ist nicht möglich, wenn Änderungen durch offizielle Reviewer angefragt werden, auch wenn genügend Genehmigungen existieren. settings.block_rejected_reviews_desc=Merge ist nicht möglich, wenn Änderungen durch offizielle Prüfer angefragt werden, auch wenn genügend Genehmigungen existieren.
settings.block_on_official_review_requests=Merge bei offiziellen Review-Anfragen blockieren settings.block_on_official_review_requests=Merge bei offiziellen Sichtungsanfragen blockieren
settings.block_on_official_review_requests_desc=Merge ist nicht möglich, wenn offizielle Review-Anfrangen vorliegen, selbst wenn genügend Genehmigungen existieren. settings.block_on_official_review_requests_desc=Merge ist nicht möglich, wenn offizielle Sichtungsanfrangen vorliegen, selbst wenn genügend Genehmigungen existieren.
settings.block_outdated_branch=Merge blockieren, wenn der Pull-Request veraltet ist settings.block_outdated_branch=Merge blockieren, wenn der Pull-Request veraltet ist
settings.block_outdated_branch_desc=Merge ist nicht möglich, wenn der Head-Branch hinter dem Basis-Branch ist. settings.block_outdated_branch_desc=Merge ist nicht möglich, wenn der Head-Branch hinter dem Basis-Branch ist.
settings.default_branch_desc=Wähle einen Standardbranch für Pull-Requests und Code-Commits: settings.default_branch_desc=Wähle einen Standardbranch für Pull-Requests und Code-Commits:
@ -2539,7 +2541,7 @@ settings.lfs_filelist=LFS-Dateien, die in diesem Repository gespeichert sind
settings.lfs_no_lfs_files=In diesem Repository sind keine LFS-Dateien gespeichert settings.lfs_no_lfs_files=In diesem Repository sind keine LFS-Dateien gespeichert
settings.lfs_findcommits=Commits finden settings.lfs_findcommits=Commits finden
settings.lfs_lfs_file_no_commits=Keine Commits für diese LFS-Datei gefunden settings.lfs_lfs_file_no_commits=Keine Commits für diese LFS-Datei gefunden
settings.lfs_noattribute=Dieser Pfad hat nicht das sperrbare Attribut im Standard-Branch settings.lfs_noattribute=Dieser Pfad hat nicht das „lockable“-Attribut im Standard-Branch
settings.lfs_delete=LFS-Datei mit OID %s löschen settings.lfs_delete=LFS-Datei mit OID %s löschen
settings.lfs_delete_warning=Das Löschen einer LFS-Datei kann dazu führen, dass „Objekt existiert nicht“-Fehler beim Checkout auftreten. Bist du sicher? settings.lfs_delete_warning=Das Löschen einer LFS-Datei kann dazu führen, dass „Objekt existiert nicht“-Fehler beim Checkout auftreten. Bist du sicher?
settings.lfs_findpointerfiles=Pointer-Dateien finden settings.lfs_findpointerfiles=Pointer-Dateien finden
@ -2580,8 +2582,8 @@ diff.show_unified_view=Gesamtansicht
diff.whitespace_button=Leerzeichen diff.whitespace_button=Leerzeichen
diff.whitespace_show_everything=Alle Änderungen anzeigen diff.whitespace_show_everything=Alle Änderungen anzeigen
diff.whitespace_ignore_all_whitespace=Ignoriere Leerzeichen beim Zeilen vergleichen diff.whitespace_ignore_all_whitespace=Ignoriere Leerzeichen beim Zeilen vergleichen
diff.whitespace_ignore_amount_changes=Ignoriere whitespace-Änderungen diff.whitespace_ignore_amount_changes=Änderungen in der Anzahl der Leerzeichen und ähnlichen Zeichen ignorieren
diff.whitespace_ignore_at_eol=Ignoriere EOL-whitespace-Änderungen diff.whitespace_ignore_at_eol=Änderungen an den Leerzeichen und ähnlichen Zeichen am Zeilenende ignorieren
diff.stats_desc=<strong> %d geänderte Dateien</strong> mit <strong>%d neuen</strong> und <strong>%d gelöschten</strong> Zeilen diff.stats_desc=<strong> %d geänderte Dateien</strong> mit <strong>%d neuen</strong> und <strong>%d gelöschten</strong> Zeilen
diff.stats_desc_file=%d Änderungen: %d Ergänzungen und %d Löschungen diff.stats_desc_file=%d Änderungen: %d Ergänzungen und %d Löschungen
diff.bin=BIN diff.bin=BIN
@ -2604,11 +2606,11 @@ diff.comment.placeholder=Kommentieren
diff.comment.markdown_info=Styling mit Markdown wird unterstützt. diff.comment.markdown_info=Styling mit Markdown wird unterstützt.
diff.comment.add_single_comment=Einzelnen Kommentar hinzufügen diff.comment.add_single_comment=Einzelnen Kommentar hinzufügen
diff.comment.add_review_comment=Kommentar hinzufügen diff.comment.add_review_comment=Kommentar hinzufügen
diff.comment.start_review=Review starten diff.comment.start_review=Sichtung starten
diff.comment.reply=Antworten diff.comment.reply=Antworten
diff.review=Review abschließen diff.review=Sichtung abschließen
diff.review.header=Review einreichen diff.review.header=Sichtung einreichen
diff.review.placeholder=Kommentar zum Review diff.review.placeholder=Kommentar zur Sichtung
diff.review.comment=Kommentieren diff.review.comment=Kommentieren
diff.review.approve=Genehmigen diff.review.approve=Genehmigen
diff.review.self_reject=Pull-Request-Autoren können keine Änderungen an ihren eigenen Pull-Request anfordern diff.review.self_reject=Pull-Request-Autoren können keine Änderungen an ihren eigenen Pull-Request anfordern
@ -2656,7 +2658,7 @@ release.edit_release=Release aktualisieren
release.delete_release=Release löschen release.delete_release=Release löschen
release.delete_tag=Tag löschen release.delete_tag=Tag löschen
release.deletion=Release löschen release.deletion=Release löschen
release.deletion_desc=Beim Entfernen wird ein Release nur von Forgejo gelöscht. Es betrifft weder den Git-Tag, noch den Inhalt des Repos oder seinen Änderungsverlauf. Fortfahren? release.deletion_desc=Beim Entfernen wird ein Release nur von Forgejo gelöscht. Es betrifft weder den Git-Tag noch den Inhalt des Repos oder seinen Änderungsverlauf. Fortfahren?
release.deletion_success=Das Release wurde gelöscht. release.deletion_success=Das Release wurde gelöscht.
release.deletion_tag_desc=Löscht dieses Tag aus dem Projektarchiv. Repository-Inhalt und Verlauf bleiben unverändert. Fortfahren? release.deletion_tag_desc=Löscht dieses Tag aus dem Projektarchiv. Repository-Inhalt und Verlauf bleiben unverändert. Fortfahren?
release.deletion_tag_success=Der Tag wurde gelöscht. release.deletion_tag_success=Der Tag wurde gelöscht.
@ -2666,7 +2668,7 @@ release.tag_name_protected=Der Tag-Name ist geschützt.
release.tag_already_exist=Dieser Tag-Name existiert bereits. release.tag_already_exist=Dieser Tag-Name existiert bereits.
release.downloads=Downloads release.downloads=Downloads
release.download_count=Downloads: %s release.download_count=Downloads: %s
release.add_tag_msg=Titel und Beschreibung des Releases als Tag Nachricht verwenden. release.add_tag_msg=Titel und Beschreibung des Releases als Tag-Nachricht verwenden.
release.add_tag=Tag erstellen release.add_tag=Tag erstellen
release.releases_for=Releases für %s release.releases_for=Releases für %s
release.tags_for=Tags für %s release.tags_for=Tags für %s
@ -2766,7 +2768,7 @@ wiki.cancel = Abbrechen
settings.wiki_globally_editable = Allen erlauben, das Wiki zu bearbeiten settings.wiki_globally_editable = Allen erlauben, das Wiki zu bearbeiten
settings.protect_branch_name_pattern_desc = Geschützte Branch-Namens-Patterns. Siehe <a href="%s">die Dokumentation</a> für Pattern-Syntax. Beispiele: main, release/** settings.protect_branch_name_pattern_desc = Geschützte Branch-Namens-Patterns. Siehe <a href="%s">die Dokumentation</a> für Pattern-Syntax. Beispiele: main, release/**
settings.ignore_stale_approvals = Abgestandene Genehmigungen ignorieren settings.ignore_stale_approvals = Abgestandene Genehmigungen ignorieren
settings.ignore_stale_approvals_desc = Genehmigungen, welche für ältere Commits gemacht wurden (abgestandene Reviews), nicht in die Gesamtzahl der Genehmigung des PRs mitzählen. Irrelevant, falls abgestandene Reviews bereits verworfen werden. settings.ignore_stale_approvals_desc = Genehmigungen, welche für ältere Commits gemacht wurden (abgestandene Sichtungen), nicht in die Gesamtzahl der Genehmigung des PRs mitzählen. Irrelevant, falls abgestandene Sichtungen bereits verworfen werden.
pulls.commit_ref_at = `referenzierte diesen Pull-Request aus einem Commit %s` pulls.commit_ref_at = `referenzierte diesen Pull-Request aus einem Commit %s`
pulls.fast_forward_only_merge_pull_request = Nur Fast-forward 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_checkout_desc = Checke einen neuen Branch aus deinem Projekt-Repository aus und teste die Änderungen.
@ -2782,7 +2784,7 @@ activity.navbar.contributors = Mitwirkende
contributors.contribution_type.deletions = Löschungen contributors.contribution_type.deletions = Löschungen
contributors.contribution_type.additions = Einfügungen contributors.contribution_type.additions = Einfügungen
contributors.contribution_type.filter_label = Art des Beitrags: contributors.contribution_type.filter_label = Art des Beitrags:
vendored = Vendored vendored = Gevendort
activity.navbar.pulse = Puls activity.navbar.pulse = Puls
pulls.made_using_agit = AGit pulls.made_using_agit = AGit
settings.confirmation_string = Bestätigungsstring settings.confirmation_string = Bestätigungsstring
@ -2795,7 +2797,7 @@ pulls.merged_title_desc_one = hat %[1]d Commit von <code>%[2]s</code> nach <code
pulls.title_desc_one = möchte %[1]d Commit von <code>%[2]s</code> nach <code id="%[4]s">%[3]s</code> zusammenführen pulls.title_desc_one = möchte %[1]d Commit von <code>%[2]s</code> nach <code id="%[4]s">%[3]s</code> zusammenführen
open_with_editor = Öffnen mit %s open_with_editor = Öffnen mit %s
commits.search_branch = Dieser Branch commits.search_branch = Dieser Branch
pulls.ready_for_review = Bereit zum Review? pulls.ready_for_review = Bereit zur Sichtung?
settings.rename_branch_failed_protected = Branch %s kann nicht umbenannt werden, weil er ein geschützter Branch ist. settings.rename_branch_failed_protected = Branch %s kann nicht umbenannt werden, weil er ein geschützter Branch ist.
editor.commit_id_not_matching = Die Datei wurde geändert, während du sie bearbeitet hast. Committe in einen neuen Branch, dann führe einen Merge durch. editor.commit_id_not_matching = Die Datei wurde geändert, während du sie bearbeitet hast. Committe in einen neuen Branch, dann führe einen Merge durch.
editor.push_out_of_date = Der Push scheint veraltet zu sein. editor.push_out_of_date = Der Push scheint veraltet zu sein.
@ -2824,7 +2826,7 @@ settings.sourcehut_builds.secrets_helper = Dem Job zugriff auf die Build-Geheimn
settings.web_hook_name_sourcehut_builds = SourceHut-Builds settings.web_hook_name_sourcehut_builds = SourceHut-Builds
settings.graphql_url = GraphQL-URL settings.graphql_url = GraphQL-URL
settings.matrix.room_id_helper = Die Raum-ID kann über den Element-Webclient ermittelt werden: Raumeinstellungen > erweitert > interne Raum-ID. Beispielsweise %s. settings.matrix.room_id_helper = Die Raum-ID kann über den Element-Webclient ermittelt werden: Raumeinstellungen > erweitert > interne Raum-ID. Beispielsweise %s.
settings.sourcehut_builds.access_token_helper = Zugangstoken, der die JOBS:RW-Freigabe hat. Generiere auf meta.sr.ht einen <a target="_blank" rel="noopener noreferrer" href="%s">builds.sr.ht-Token</a> oder einen <a target="_blank" rel="noopener noreferrer" href="%s">builds.sr.ht-Token mit Zugriff auf die Secrets</a>. settings.sourcehut_builds.access_token_helper = Zugangstoken, der die JOBS:RW-Freigabe hat. Generiere auf meta.sr.ht einen <a target="_blank" rel="noopener noreferrer" href="%s">builds.sr.ht-Token</a> oder einen <a target="_blank" rel="noopener noreferrer" href="%s">builds.sr.ht-Token mit Zugriff auf die Geheimnisse</a>.
settings.matrix.access_token_helper = Es wird empfohlen, hierfür ein dediziertes Matrix-Konto anzulegen. Der Zugangstoken kann in einem Inkognito-Tab über den Element-Webclient geholt werden: Benutzermenü (oben links) > alle Einstellungen > Hilfe & Info > erweitert > Zugriffstoken (direkt unter der Heim-Server-URL). Schließe dann den Inkognito-Tab (Abmelden würde den Token ungültig machen). settings.matrix.access_token_helper = Es wird empfohlen, hierfür ein dediziertes Matrix-Konto anzulegen. Der Zugangstoken kann in einem Inkognito-Tab über den Element-Webclient geholt werden: Benutzermenü (oben links) > alle Einstellungen > Hilfe & Info > erweitert > Zugriffstoken (direkt unter der Heim-Server-URL). Schließe dann den Inkognito-Tab (Abmelden würde den Token ungültig machen).
release.hide_archive_links = Automatisch generierte Archive verstecken release.hide_archive_links = Automatisch generierte Archive verstecken
release.hide_archive_links_helper = Verstecke automatisch generierte Quellcodearchive für diesen Release. Zum Beispiel, wenn du deine eigenen hochlädst. release.hide_archive_links_helper = Verstecke automatisch generierte Quellcodearchive für diesen Release. Zum Beispiel, wenn du deine eigenen hochlädst.
@ -2873,9 +2875,9 @@ mirror_use_ssh.not_available = SSH-Authentifizierung ist nicht verfügbar.
issues.new.assign_to_me = Mir selbst zuweisen issues.new.assign_to_me = Mir selbst zuweisen
issues.all_title = Alle issues.all_title = Alle
settings.discord_icon_url.exceeds_max_length = Die Icon-URL darf eine Länge von 2048 Zeichen nicht überschreiten settings.discord_icon_url.exceeds_max_length = Die Icon-URL darf eine Länge von 2048 Zeichen nicht überschreiten
issues.review.add_review_requests = hat Reviews von %[1]s %[2]s angefragt issues.review.add_review_requests = hat Sichtungen von %[1]s %[2]s angefragt
issues.review.remove_review_requests = hat Aufforderungen zum Review an %[1]s %[2]s entfernt issues.review.remove_review_requests = hat die Sichtungsanfragen an %[1]s %[2]s entfernt
issues.review.add_remove_review_requests = hat Reviews von %[1]s angefragt und hat die Aufforderungen zum Review an %[2]s %[3]s entfernt issues.review.add_remove_review_requests = hat Sichtungen von %[1]s angefragt und die Sichtungsanfragen an %[2]s %[3]s entfernt
pulls.delete_after_merge.head_branch.is_default = Der Head-Branch, den du löschen willst, ist der Standardbranch und kann nicht gelöscht werden. pulls.delete_after_merge.head_branch.is_default = Der Head-Branch, den du löschen willst, ist der Standardbranch und kann nicht gelöscht werden.
pulls.delete_after_merge.head_branch.is_protected = Der Head-Branch, den du löschen willst, ist ein geschützter Branch und kann nicht gelöscht werden. pulls.delete_after_merge.head_branch.is_protected = Der Head-Branch, den du löschen willst, ist ein geschützter Branch und kann nicht gelöscht werden.
pulls.delete_after_merge.head_branch.insufficient_branch = Du hast keine Erlaubnis, den Head-Branch zu löschen. pulls.delete_after_merge.head_branch.insufficient_branch = Du hast keine Erlaubnis, den Head-Branch zu löschen.
@ -2883,9 +2885,9 @@ issues.filter_sort.relevance = Relevanz
diff.git-notes.add = Anmerkung hinzufügen diff.git-notes.add = Anmerkung hinzufügen
diff.git-notes.remove-header = Anmerkung entfernen diff.git-notes.remove-header = Anmerkung entfernen
diff.git-notes.remove-body = Diese Anmerkung wird entfernt. diff.git-notes.remove-body = Diese Anmerkung wird entfernt.
issues.num_reviews_one = %d Review issues.num_reviews_one = %d Sichtung
issues.summary_card_alt = Zusammenfassung eines Issues mit dem Titel „%s“ im Repository %s issues.summary_card_alt = Zusammenfassung eines Issues mit dem Titel „%s“ im Repository %s
issues.num_reviews_few = %d Reviews issues.num_reviews_few = %d Sichtungen
editor.add_tmpl.filename = Dateiname editor.add_tmpl.filename = Dateiname
settings.default_update_style_desc = Standard-Aktualisierungsart um Pull-Requests zu aktualisieren, die hinter dem Base-Branch sind. settings.default_update_style_desc = Standard-Aktualisierungsart um Pull-Requests zu aktualisieren, die hinter dem Base-Branch sind.
new_advanced = Erweiterte Einstellungen new_advanced = Erweiterte Einstellungen
@ -2902,7 +2904,7 @@ issues.reaction.alt_add = Füge %[1]s Reaktion zum Kommentar hinzu.
issues.reaction.alt_remove = Entferne %[1]s Reaktion von diesem Kommentar. issues.reaction.alt_remove = Entferne %[1]s Reaktion von diesem Kommentar.
summary_card_alt = Zusammenfassungskarte des Repositorys %s summary_card_alt = Zusammenfassungskarte des Repositorys %s
release.summary_card_alt = Übersichtskarte eines Releases mit dem Titel „%s“ im Repository %s release.summary_card_alt = Übersichtskarte eines Releases mit dem Titel „%s“ im Repository %s
archive.pull.noreview = Dieses Repository ist archiviert. Pull-Requests können nicht gereviewt werden. archive.pull.noreview = Dieses Repository ist archiviert. Pull-Requests können nicht überprüft werden.
editor.commit_email = Commit-E-Mail editor.commit_email = Commit-E-Mail
commits.view_single_diff = Änderungen an dieser Datei, die in diesem Commit eingeführt wurden, betrachten commits.view_single_diff = Änderungen an dieser Datei, die in diesem Commit eingeführt wurden, betrachten
pulls.editable = Bearbeitbar pulls.editable = Bearbeitbar
@ -2922,7 +2924,7 @@ settings.event_action_success_desc = Action-Run war erfolgreich.
settings.event_action_failure = Fehlschlag settings.event_action_failure = Fehlschlag
settings.event_action_success = Erfolg settings.event_action_success = Erfolg
settings.event_header_action = Action-Run-Ereignisse settings.event_header_action = Action-Run-Ereignisse
settings.event_action_recover_desc = Action-Run war erfolgreich, nachdem der letzte Action-Run im selben Arbeitsablauf fehlgeschlagen ist. settings.event_action_recover_desc = Action-Run war erfolgreich, nachdem der letzte Action-Run im selben Workflow fehlgeschlagen ist.
settings.event_action_recover = Wiederherstellen settings.event_action_recover = Wiederherstellen
issues.filter_type.all_pull_requests = Alle Pull-Requests issues.filter_type.all_pull_requests = Alle Pull-Requests
@ -3116,7 +3118,7 @@ dashboard.repo_health_check=Healthchecks für alle Repositorys ausführen
dashboard.check_repo_stats=Überprüfe alle Repository-Statistiken dashboard.check_repo_stats=Überprüfe alle Repository-Statistiken
dashboard.archive_cleanup=Alte Repository-Archive löschen dashboard.archive_cleanup=Alte Repository-Archive löschen
dashboard.deleted_branches_cleanup=Gelöschte Branches bereinigen dashboard.deleted_branches_cleanup=Gelöschte Branches bereinigen
dashboard.update_migration_poster_id=Migration Poster-IDs updaten dashboard.update_migration_poster_id=Migrations-Poster-IDs aktualisieren
dashboard.git_gc_repos=Garbage-Collection für alle Repositorys ausführen dashboard.git_gc_repos=Garbage-Collection für alle Repositorys ausführen
dashboard.resync_all_sshkeys=Die Datei „.ssh/authorized_keys“ mit Forgejo-SSH-Schlüsseln aktualisieren. dashboard.resync_all_sshkeys=Die Datei „.ssh/authorized_keys“ mit Forgejo-SSH-Schlüsseln aktualisieren.
dashboard.resync_all_sshprincipals=Aktualisiere die Datei „.ssh/authorized_principals“ mit Forgejo-SSH-Principals. dashboard.resync_all_sshprincipals=Aktualisiere die Datei „.ssh/authorized_principals“ mit Forgejo-SSH-Principals.
@ -3159,7 +3161,7 @@ dashboard.delete_old_actions=Alle alten Aktivitäten aus der Datenbank löschen
dashboard.delete_old_actions.started=Löschen aller alten Aktivitäten aus der Datenbank gestartet. dashboard.delete_old_actions.started=Löschen aller alten Aktivitäten aus der Datenbank gestartet.
dashboard.update_checker=Update-Checker dashboard.update_checker=Update-Checker
dashboard.delete_old_system_notices=Alle alten Systemmeldungen aus der Datenbank löschen dashboard.delete_old_system_notices=Alle alten Systemmeldungen aus der Datenbank löschen
dashboard.gc_lfs=Garbage-Collection für LFS Meta-Objekte ausführen dashboard.gc_lfs=Garbage-Collection für LFS-Meta-Objekte ausführen
dashboard.stop_zombie_tasks=Zombie-Actions-Aufgaben stoppen dashboard.stop_zombie_tasks=Zombie-Actions-Aufgaben stoppen
dashboard.stop_endless_tasks=Endlose Actions-Aufgaben stoppen dashboard.stop_endless_tasks=Endlose Actions-Aufgaben stoppen
dashboard.cancel_abandoned_jobs=Aufgegebene Actions-Jobs abbrechen dashboard.cancel_abandoned_jobs=Aufgegebene Actions-Jobs abbrechen
@ -3335,7 +3337,7 @@ auths.pam_email_domain=PAM-E-Mail-Domain (optional)
auths.oauth2_provider=OAuth2-Anbieter auths.oauth2_provider=OAuth2-Anbieter
auths.oauth2_icon_url=Symbol-URL auths.oauth2_icon_url=Symbol-URL
auths.oauth2_clientID=Client-ID (Schlüssel) auths.oauth2_clientID=Client-ID (Schlüssel)
auths.oauth2_clientSecret=Client-Secret auths.oauth2_clientSecret=Client-Geheimnis
auths.openIdConnectAutoDiscoveryURL=OpenID-Connect-Auto-Discovery-URL auths.openIdConnectAutoDiscoveryURL=OpenID-Connect-Auto-Discovery-URL
auths.oauth2_use_custom_url=Benutzerdefinierte URLs anstelle von Standard-URLs verwenden auths.oauth2_use_custom_url=Benutzerdefinierte URLs anstelle von Standard-URLs verwenden
auths.oauth2_tokenURL=Token-URL auths.oauth2_tokenURL=Token-URL
@ -3343,14 +3345,14 @@ auths.oauth2_authURL=Authorisierungs-URL
auths.oauth2_profileURL=Profil-URL auths.oauth2_profileURL=Profil-URL
auths.oauth2_emailURL=E-Mail-URL auths.oauth2_emailURL=E-Mail-URL
auths.skip_local_two_fa=Lokale 2FA überspringen auths.skip_local_two_fa=Lokale 2FA überspringen
auths.skip_local_two_fa_helper=Leer lassen bedeutet, dass lokale User die 2FA immer noch bestehen müssen, um sich anzumelden auths.skip_local_two_fa_helper=Das Leerlassen bedeutet, dass lokale User die 2FA immer noch bestehen müssen, um sich anzumelden
auths.oauth2_tenant=Inhaber auths.oauth2_tenant=Inhaber
auths.oauth2_scopes=Zusätzliche Bereiche auths.oauth2_scopes=Zusätzliche Bereiche
auths.oauth2_required_claim_name=Benötigter Claim-Name auths.oauth2_required_claim_name=Benötigter Claim-Name
auths.oauth2_required_claim_name_helper=Setze diesen Namen, damit Nutzer aus dieser Quelle sich nur anmelden dürfen, wenn sie einen Claim mit diesem Namen besitzen auths.oauth2_required_claim_name_helper=Setze diesen Namen, damit Nutzer aus dieser Quelle sich nur anmelden dürfen, wenn sie einen Claim mit diesem Namen besitzen
auths.oauth2_required_claim_value=Benötigter Claim-Wert auths.oauth2_required_claim_value=Benötigter Claim-Wert
auths.oauth2_required_claim_value_helper=Setze diesen Wert, damit Nutzer aus dieser Quelle sich nur anmelden dürfen, wenn sie einen Claim mit diesem Namen und Wert besitzen auths.oauth2_required_claim_value_helper=Setze diesen Wert, damit Nutzer aus dieser Quelle sich nur anmelden dürfen, wenn sie einen Claim mit diesem Namen und Wert besitzen
auths.oauth2_group_claim_name=Claim-Name, der Gruppennamen für diese Quelle angibt. (Optional) auths.oauth2_group_claim_name=Claim-Name, der Gruppennamen für diese Quelle angibt (optional).
auths.oauth2_admin_group=Gruppen-Claim-Wert für Administratoren (optional erfordert Claim-Namen oben). auths.oauth2_admin_group=Gruppen-Claim-Wert für Administratoren (optional erfordert Claim-Namen oben).
auths.oauth2_restricted_group=Gruppen-Claim-Wert für eingeschränkte User. (Optional erfordert Claim-Namen oben) auths.oauth2_restricted_group=Gruppen-Claim-Wert für eingeschränkte User. (Optional erfordert Claim-Namen oben)
auths.oauth2_map_group_to_team=Gruppen aus OAuth-Claims den Organisationsteams zuordnen (optional oben muss der Name des Claims angegeben werden). auths.oauth2_map_group_to_team=Gruppen aus OAuth-Claims den Organisationsteams zuordnen (optional oben muss der Name des Claims angegeben werden).
@ -3395,7 +3397,7 @@ auths.still_in_used=Diese Authentifizierungsquelle wird noch verwendet. Bearbeit
auths.deletion_success=Die Authentifizierungsquelle „%s“ wurde gelöscht. auths.deletion_success=Die Authentifizierungsquelle „%s“ wurde gelöscht.
auths.login_source_exist=Die Authentifizierungsquelle „%s“ existiert bereits. auths.login_source_exist=Die Authentifizierungsquelle „%s“ existiert bereits.
auths.login_source_of_type_exist=Eine Authentifizierungart dieses Typs existiert bereits. auths.login_source_of_type_exist=Eine Authentifizierungart dieses Typs existiert bereits.
auths.unable_to_initialize_openid=OpenID Connect Provider konnte nicht initialisiert werden: %s auths.unable_to_initialize_openid=Provider für OpenID Connect konnte nicht initialisiert werden: %s
auths.invalid_openIdConnectAutoDiscoveryURL=Ungültige Auto-Discovery-URL (dies muss eine gültige URL sein, die mit http:// oder https:// beginnt) auths.invalid_openIdConnectAutoDiscoveryURL=Ungültige Auto-Discovery-URL (dies muss eine gültige URL sein, die mit http:// oder https:// beginnt)
config.server_config=Serverkonfiguration config.server_config=Serverkonfiguration
@ -3526,7 +3528,7 @@ config.git_pull_timeout=Zeitlimit für Pull
config.git_gc_timeout=Zeitlimit für GC config.git_gc_timeout=Zeitlimit für GC
config.log_config=Protokollierungs-Konfiguration config.log_config=Protokollierungs-Konfiguration
config.logger_name_fmt=Logger: %s config.logger_name_fmt=Protokollierer: %s
config.disabled_logger=Deaktiviert config.disabled_logger=Deaktiviert
config.access_log_mode=Zugriffsprotokoll-Modus config.access_log_mode=Zugriffsprotokoll-Modus
config.access_log_template=Zugriffsprotokoll-Vorlage config.access_log_template=Zugriffsprotokoll-Vorlage
@ -3650,7 +3652,7 @@ mirror_sync_delete=hat die Referenz des Spiegels <code>%[2]s</code> in <a href="
approve_pull_request=`hat <a href="%[1]s">%[3]s#%[2]s</a> genehmigt` approve_pull_request=`hat <a href="%[1]s">%[3]s#%[2]s</a> genehmigt`
reject_pull_request=`schlug Änderungen für <a href="%[1]s">%[3]s#%[2]s</a> vor` reject_pull_request=`schlug Änderungen für <a href="%[1]s">%[3]s#%[2]s</a> vor`
publish_release=`veröffentlichte Release <a href="%[2]s">%[4]s</a> in <a href="%[1]s">%[3]s</a>` publish_release=`veröffentlichte Release <a href="%[2]s">%[4]s</a> in <a href="%[1]s">%[3]s</a>`
review_dismissed=`verwarf das Review von <b>%[4]s</b> in <a href="%[1]s">%[3]s#%[2]s</a>` review_dismissed=`verwarf die Sichtung von <b>%[4]s</b> in <a href="%[1]s">%[3]s#%[2]s</a>`
review_dismissed_reason=Grund: review_dismissed_reason=Grund:
create_branch=legte den Branch <a href="%[2]s">%[3]s</a> in <a href="%[1]s">%[4]s</a> an create_branch=legte den Branch <a href="%[2]s">%[3]s</a> in <a href="%[1]s">%[4]s</a> an
starred_repo=favorisierte <a href="%[1]s">%[2]s</a> starred_repo=favorisierte <a href="%[1]s">%[2]s</a>
@ -3765,9 +3767,9 @@ conda.registry=Richte diese Registry als Conda-Repository in deiner <code>.conda
conda.install=Um das Paket mit Conda zu installieren, führe den folgenden Befehl aus: conda.install=Um das Paket mit Conda zu installieren, führe den folgenden Befehl aus:
container.details.type=Abbildtyp container.details.type=Abbildtyp
container.details.platform=Plattform container.details.platform=Plattform
container.pull=Downloade das Container-Image aus der Kommandozeile: container.pull=Lade das Container-Image von der Kommandozeile aus herunter:
container.digest=Prüfsumme container.digest=Prüfsumme
container.multi_arch=Betriebsystem / Architektur container.multi_arch=Betriebsystem/Architektur
container.layers=Abbildebenen container.layers=Abbildebenen
container.labels=Labels container.labels=Labels
container.labels.key=Schlüssel container.labels.key=Schlüssel
@ -3781,7 +3783,7 @@ debian.repository=Repository-Informationen
debian.repository.distributions=Distributionen debian.repository.distributions=Distributionen
debian.repository.components=Komponenten debian.repository.components=Komponenten
debian.repository.architectures=Architekturen debian.repository.architectures=Architekturen
generic.download=Downloade das Paket aus der Kommandozeile: generic.download=Lade das Paket mit der Kommandozeile herunter:
go.install=Installiere das Paket über die Kommandozeile: go.install=Installiere das Paket über die Kommandozeile:
helm.registry=Diese Paketverwaltung über die Kommandozeile einrichten: helm.registry=Diese Paketverwaltung über die Kommandozeile einrichten:
helm.install=Nutze folgenden Befehl, um das Paket zu installieren: helm.install=Nutze folgenden Befehl, um das Paket zu installieren:
@ -3813,10 +3815,10 @@ rubygems.install=Um das Paket mit gem zu installieren, führe den folgenden Befe
rubygems.install2=oder füg es zum Gemfile hinzu: rubygems.install2=oder füg es zum Gemfile hinzu:
rubygems.dependencies.runtime=Laufzeitabhängigkeiten rubygems.dependencies.runtime=Laufzeitabhängigkeiten
rubygems.dependencies.development=Entwicklungsabhängigkeiten rubygems.dependencies.development=Entwicklungsabhängigkeiten
rubygems.required.ruby=Benötigt Ruby Version rubygems.required.ruby=Benötigt Ruby-Version
rubygems.required.rubygems=Benötigt RubyGem Version rubygems.required.rubygems=Benötigt RubyGem-Version
swift.registry=Diese Registry über die Kommandozeile einrichten: swift.registry=Diese Registry über die Kommandozeile einrichten:
swift.install=Füge das Paket deiner <code>Package.swift</code> Datei hinzu: swift.install=Füge das Paket deiner <code>Package.swift</code>-Datei hinzu:
swift.install2=und führe den folgenden Befehl aus: swift.install2=und führe den folgenden Befehl aus:
vagrant.install=Um eine Vagrant-Box hinzuzufügen, führe den folgenden Befehl aus: vagrant.install=Um eine Vagrant-Box hinzuzufügen, führe den folgenden Befehl aus:
settings.link=Dieses Paket einem Repository zuweisen settings.link=Dieses Paket einem Repository zuweisen
@ -3892,19 +3894,19 @@ alt.repository.architectures = Architekturen
alt.repository.multiple_groups = Dieses Paket ist in verschiedenen Gruppen verfügbar. alt.repository.multiple_groups = Dieses Paket ist in verschiedenen Gruppen verfügbar.
[secrets] [secrets]
secrets=Secrets secrets=Geheimnisse
description=Secrets werden an bestimmte Aktionen weitergegeben und können nicht anderweitig ausgelesen werden. description=Geheimnisse werden an bestimmte Aktionen weitergegeben und können nicht anderweitig ausgelesen werden.
none=Noch keine Secrets vorhanden. none=Noch keine Geheimnisse vorhanden.
creation=Secret hinzufügen creation=Geheimnis hinzufügen
creation.name_placeholder=Groß-/Kleinschreibung wird ignoriert, nur alphanumerische Zeichen oder Unterstriche, darf nicht mit GITEA_ oder GITHUB_ beginnen creation.name_placeholder=Groß-/Kleinschreibung wird ignoriert, nur alphanumerische Zeichen oder Unterstriche, darf nicht mit GITEA_ oder GITHUB_ beginnen
creation.value_placeholder=Beliebigen Inhalt eingeben. Leerzeichen am Anfang und Ende werden weggelassen. creation.value_placeholder=Beliebigen Inhalt eingeben. Leerzeichen am Anfang und Ende werden weggelassen.
creation.success=Das Secret „%s“ wurde hinzugefügt. creation.success=Das Geheimnis „%s“ wurde hinzugefügt.
creation.failed=Secret konnte nicht hinzugefügt werden. creation.failed=Geheimnis konnte nicht hinzugefügt werden.
deletion=Secret entfernen deletion=Geheimnis entfernen
deletion.description=Das Entfernen eines Secrets kann nicht rückgängig gemacht werden. Fortfahren? deletion.description=Das Entfernen eines Geheimnisses kann nicht rückgängig gemacht werden. Fortfahren?
deletion.success=Das Secret wurde entfernt. deletion.success=Das Geheimnis wurde entfernt.
deletion.failed=Secret konnte nicht entfernt werden. deletion.failed=Geheimnis konnte nicht entfernt werden.
management=Secrets verwalten management=Geheimnisse verwalten
[actions] [actions]
actions=Actions actions=Actions

View file

@ -3939,12 +3939,12 @@ submodule=Υπομονάδα
[search] [search]
code_search_unavailable = Η αναζήτηση κώδικα δεν είναι επί του παρόντος διαθέσιμη. Παρακαλώ επικοινωνήστε με τον διαχειριστή σας. code_search_unavailable = Η αναζήτηση κώδικα δεν είναι επί του παρόντος διαθέσιμη. Παρακαλώ επικοινωνήστε με τον διαχειριστή σας.
keyword_search_unavailable = Η αναζήτηση με την χρήση λέξεων-κλειδιών δεν είναι επί του παρόντος διαθέσιμη. Παρακαλώ επικοινωνήστε με τον διαχειριστή σας. keyword_search_unavailable = Η αναζήτηση με την χρήση λέξεων-κλειδιών δεν είναι επί του παρόντος διαθέσιμη. Παρακαλώ επικοινωνήστε με τον διαχειριστή σας.
runner_kind = Αναζήτηση runner... runner_kind = Αναζήτηση runner
code_search_by_git_grep = Για την αναζήτηση κώδικα, χρησιμοποιείται η εντολή «git grep». Ίσως να παρουσιαστούν καλύτερα αποτελέσματα, αν ο διαχειριστής σας ενεργοποιήσει ένα ευρετήριο για αποθετήρια («Repository Indexer»). code_search_by_git_grep = Για την αναζήτηση κώδικα, χρησιμοποιείται η εντολή «git grep». Ίσως να παρουσιαστούν καλύτερα αποτελέσματα, αν ο διαχειριστής σας ενεργοποιήσει ένα ευρετήριο για αποθετήρια («Repository Indexer»).
package_kind = Αναζήτηση πακέτων… package_kind = Αναζήτηση πακέτων…
project_kind = Αναζήτηση έργων... project_kind = Αναζήτηση έργων
branch_kind = Αναζήτηση κλάδων… branch_kind = Αναζήτηση κλάδων…
commit_kind = Αναζήτηση commit... commit_kind = Αναζήτηση commit
no_results = Δεν βρέθηκαν κατάλληλα αποτελέσματα. no_results = Δεν βρέθηκαν κατάλληλα αποτελέσματα.
search = Αναζήτηση… search = Αναζήτηση…
type_tooltip = Είδος αναζήτησης type_tooltip = Είδος αναζήτησης
@ -3958,8 +3958,8 @@ org_kind = Αναζήτηση οργανισμών…
team_kind = Αναζήτηση ομαδών… team_kind = Αναζήτηση ομαδών…
code_kind = Αναζήτηση κώδικα… code_kind = Αναζήτηση κώδικα…
exact_tooltip = Να συμπεριληφθούν μόνο αποτελέσματα που ταιριάζουν με τον όρο αναζήτησης exact_tooltip = Να συμπεριληφθούν μόνο αποτελέσματα που ταιριάζουν με τον όρο αναζήτησης
issue_kind = Αναζήτηση ζητημάτων... issue_kind = Αναζήτηση ζητημάτων
pull_kind = Αναζήτηση pull... pull_kind = Αναζήτηση pull
exact = Ακριβής exact = Ακριβής
milestone_kind = Αναζήτηση ορόσημων... milestone_kind = Αναζήτηση ορόσημων...
union = Ένωση union = Ένωση

View file

@ -895,6 +895,7 @@ ssh_invalid_token_signature = The provided SSH key, signature or token do not ma
ssh_token_required = You must provide a signature for the below token ssh_token_required = You must provide a signature for the below token
ssh_token = Token ssh_token = Token
ssh_token_help = You can generate a signature using: ssh_token_help = You can generate a signature using:
ssh_token_help_ssh_agent = or, if you're using an SSH agent (with the SSH_AUTH_SOCK variable set):
ssh_token_signature = Armored SSH signature ssh_token_signature = Armored SSH signature
key_signature_ssh_placeholder = Begins with "-----BEGIN SSH SIGNATURE-----" key_signature_ssh_placeholder = Begins with "-----BEGIN SSH SIGNATURE-----"
verify_ssh_key_success = SSH key "%s" has been verified. verify_ssh_key_success = SSH key "%s" has been verified.

View file

@ -630,7 +630,7 @@ account = Konto
ssh_gpg_keys = SSH / GPG-ŝlosiloj ssh_gpg_keys = SSH / GPG-ŝlosiloj
twofa_disable = Malaktivigi duoblan aŭtentikigon twofa_disable = Malaktivigi duoblan aŭtentikigon
twofa_enroll = Ŝalti duoblan aŭtentikigon twofa_enroll = Ŝalti duoblan aŭtentikigon
orgs = Mastrumi organizaĵojn orgs = Organizaĵoj
blocked_users = Blokitaj uzantoj blocked_users = Blokitaj uzantoj
profile = Profilo profile = Profilo
ui = Haŭto ui = Haŭto
@ -686,7 +686,7 @@ verify_ssh_key_success = SSH-ŝlosilo «%s» jam konfirmiĝis.
edit_oauth2_application = Redakti OAuth2-programon edit_oauth2_application = Redakti OAuth2-programon
gpg_key_deletion = Forigi GPG-ŝlosilon gpg_key_deletion = Forigi GPG-ŝlosilon
gpg_key_matched_identities = Akordaj identecoj: gpg_key_matched_identities = Akordaj identecoj:
manage_themes = Elekti implicitan haŭton manage_themes = Defaŭlta temo
ssh_key_deletion = Forigi SSH-ŝlosilon ssh_key_deletion = Forigi SSH-ŝlosilon
key_state_desc = Ĉi tiu ŝlosilo uziĝis dum la pasintaj 7 tagoj key_state_desc = Ĉi tiu ŝlosilo uziĝis dum la pasintaj 7 tagoj
valid_forever = Validos dumĉiame valid_forever = Validos dumĉiame
@ -700,7 +700,7 @@ primary = Ĉefa
ssh_disabled = SSH malaktivigita ssh_disabled = SSH malaktivigita
update_avatar_success = Via profilbildo konserviĝis. update_avatar_success = Via profilbildo konserviĝis.
keep_email_private = Kaŝi retpoŝtadreson keep_email_private = Kaŝi retpoŝtadreson
manage_openid = Mastrumi OpenID-adresojn manage_openid = OpenID-adresoj
delete_current_avatar = Forigi nunan profilbildon delete_current_avatar = Forigi nunan profilbildon
email_preference_set_success = Retpoŝta prefero konserviĝis sukcese. email_preference_set_success = Retpoŝta prefero konserviĝis sukcese.
permissions_access_all = Ĉiu (publika, privata, kaj limigita) permissions_access_all = Ĉiu (publika, privata, kaj limigita)
@ -884,9 +884,9 @@ commit_kind = Serĉi enmetojn…
no_results = Ne trovis kongruantajn rezultojn. no_results = Ne trovis kongruantajn rezultojn.
exact = Ĝusta exact = Ĝusta
exact_tooltip = Inkluzivas nur rezultojn kongruantajn kun la ĝustaj serĉoterminoj exact_tooltip = Inkluzivas nur rezultojn kongruantajn kun la ĝustaj serĉoterminoj
issue_kind = Serĉi erarojn... issue_kind = Serĉi erarojn
regexp_tooltip = Interpretas la serĉoterminoj kiel regulesprimo regexp_tooltip = Interpretas la serĉoterminoj kiel regulesprimo
fuzzy = Svaga fuzzy = Svaga
branch_kind = Serĉi disbranĉigojn… branch_kind = Serĉi disbranĉigojn…
runner_kind = Serĉi rulantojn... runner_kind = Serĉi rulantojn
pull_kind = Serĉi tirpetojn... pull_kind = Serĉi tirpetojn

View file

@ -740,7 +740,7 @@ avatar=Avatar
ssh_gpg_keys=Claves SSH / GPG ssh_gpg_keys=Claves SSH / GPG
social=Redes sociales social=Redes sociales
applications=Aplicaciones applications=Aplicaciones
orgs=Administrar organizaciones orgs=Organizaciones
repos=Repositorios repos=Repositorios
delete=Eliminar cuenta delete=Eliminar cuenta
twofa=Autenticación de dos factores (TOTP) twofa=Autenticación de dos factores (TOTP)
@ -1075,8 +1075,8 @@ keep_pronouns_private = Mostrar pronombres solo a personas autenticadas
storage_overview = Resumen del almacenamiento storage_overview = Resumen del almacenamiento
quota.sizes.assets.artifacts = Artefactos quota.sizes.assets.artifacts = Artefactos
quota.sizes.assets.attachments.releases = Archivos adjuntos del lanzamiento quota.sizes.assets.attachments.releases = Archivos adjuntos del lanzamiento
change_username_redirect_prompt.with_cooldown.few = El antiguo nombre de usuario estará disponible para todos después un periodo de tiempo de espera de %[1]d días, aún puedes reclamar el antiguo nombre de usuario durante el periodo de tiempo de espera. change_username_redirect_prompt.with_cooldown.few = El antiguo nombre de usuario estará disponible para todos después un periodo de tiempo de espera de %[1]d días. Aún puedes reclamar el antiguo nombre de usuario durante el periodo de tiempo de espera.
change_username_redirect_prompt.with_cooldown.one = El antiguo nombre de usuario estará disponible para todos después un periodo de tiempo de espera de %[1]d día, aún puedes reclamar el antiguo nombre de usuario durante el periodo de tiempo de espera. change_username_redirect_prompt.with_cooldown.one = El antiguo nombre de usuario estará disponible para todos después un periodo de tiempo de espera de %[1]d día. Aún puedes reclamar el antiguo nombre de usuario durante el periodo de tiempo de espera.
quota.rule.exceeded = Excedido quota.rule.exceeded = Excedido
quota.rule.no_limit = Ilimitado quota.rule.no_limit = Ilimitado
quota.sizes.assets.all = Activos quota.sizes.assets.all = Activos
@ -1574,7 +1574,7 @@ issues.remove_ref_at=`eliminó la referencia <b>%s</b> %s`
issues.add_ref_at=`añadió la referencia <b>%s</b> %s` issues.add_ref_at=`añadió la referencia <b>%s</b> %s`
issues.delete_branch_at=`eliminó la rama <b>%s</b> %s` issues.delete_branch_at=`eliminó la rama <b>%s</b> %s`
issues.filter_label=Etiqueta issues.filter_label=Etiqueta
issues.filter_label_exclude=`Usa <code>alt</code> + <code>clic/enter</code> para excluir etiquetas` issues.filter_label_exclude=Usa <kbd>Alt</kbd> + <kbd>Click</kbd> para excluir etiquetas
issues.filter_label_no_select=Todas las etiquetas issues.filter_label_no_select=Todas las etiquetas
issues.filter_label_select_no_label=Sin etiqueta issues.filter_label_select_no_label=Sin etiqueta
issues.filter_milestone=Hito issues.filter_milestone=Hito
@ -2888,6 +2888,9 @@ summary_card_alt = Tarjeta de resumen del repositorio %s
settings.pull_mirror_sync_quota_exceeded = Cuota excedida, no se empujan los cambios. settings.pull_mirror_sync_quota_exceeded = Cuota excedida, no se empujan los cambios.
archive.nocomment = No es posible hacer comentarios porque el repositorio está archivado. archive.nocomment = No es posible hacer comentarios porque el repositorio está archivado.
sync_fork.branch_behind_one = Esta rama esta %[1]d cambios detrás de %[2]s
sync_fork.branch_behind_few = Esta rama está %[1]d confirmaciones detrás de %[2]s
[graphs] [graphs]
component_loading = Cargando %s… component_loading = Cargando %s…
component_loading_failed = No se pudo cargar %s component_loading_failed = No se pudo cargar %s

View file

@ -1,67 +1,67 @@
[common] [common]
tracked_time_summary = Kokkuvõte jälgitavast ajast, mis põhineb probleemide nimekirja filtritel tracked_time_summary = Kokkuvõte jälgitavast ajast, mis põhineb probleemide nimekirja filtritel
your_settings = Seaded your_settings = Seadistused
home = Avaleht home = Avaleht
dashboard = Armatuurlaud dashboard = Töölaud
explore = Uurige explore = Uuri
help = Abi help = Abiteave
logo = Logo logo = Logo
sign_in = Logi sisse sign_in = Logi sisse
sign_in_with_provider = Logi sisse koos %s sign_in_with_provider = Logi sisse kasutajakontoga: %s
sign_in_or = või sign_in_or = või
sign_out = Registreeru välja sign_out = Logi välja
sign_up = Registreeru sign_up = Registreeru
link_account = Lingi konto link_account = Lingi väline kasutajakonto
register = Registreeru register = Registreeru
version = Versioon version = Versioon
page = Lehekülg page = Lehekülg
template = Mall template = Mall
language = Keel language = Keel
notifications = Teated notifications = Teavitused
active_stopwatch = Aktiivne aja jälgimine active_stopwatch = Aktiivne aja jälgimine
create_new = Loo… create_new = Loo…
user_profile_and_more = Profiil ja seaded… user_profile_and_more = Profiil ja seadistused…
signed_in_as = Sisselogitud kui signed_in_as = Sisselogitud kui
enable_javascript = See veebileht nõuab JavaScripti. enable_javascript = See veebileht eeldab JavaScripti kasutamise lubamist.
toc = Sisukord toc = Sisukord
licenses = Litsentsid licenses = Litsentsid
username = Kasutajanimi username = Kasutajanimi
webauthn_error_unable_to_process = Server ei saanud teie taotlust töödelda. webauthn_error_unable_to_process = Server ei saanud sinu päringut töödelda.
webauthn_error_duplicated = Turvalisuse võti ei ole selle taotluse puhul lubatud. Palun veenduge, et võti ei ole juba registreeritud. webauthn_error_duplicated = Turvavõti ei ole selle päringu puhul lubatud. Palun veendu, et võti ei ole juba registreeritud.
return_to_forgejo = Tagasi Forgejo'sse return_to_forgejo = Tagasi Forgejo'sse
toggle_menu = Lülitage menüü toggle_menu = Lülita menüü sisse/välja
more_items = Rohkem esemeid more_items = Rohkem objekte
email = E-posti aadress email = E-posti aadress
password = Parool password = Salasõna
access_token = Juurdepääsutähis access_token = Tunnusluba
re_type = Kinnita parool re_type = Kinnita salasõna
twofa = Kahefaktoriline autentimine twofa = Kahefaktoriline autentimine
twofa_scratch = Kahefaktoriline kriipsukood twofa_scratch = Kahefaktoriline kriipsukood
passcode = Passkood passcode = Salakood
webauthn_insert_key = Sisestage oma turvavõti webauthn_insert_key = Sisesta oma turvavõti
webauthn_sign_in = Vajutage turvavõtme nuppu. Kui teie turvavõtmel ei ole nuppu, sisestage see uuesti. webauthn_sign_in = Vajuta turvavõtme nuppu. Kui sinu turvavõtmel ei ole nuppu, sisesta see uuesti.
webauthn_press_button = Palun vajutage turvavõtme nuppu… webauthn_press_button = Palun vajuta turvavõtme nuppu…
webauthn_use_twofa = Kasutage oma telefonist kahefaktorilist koodi webauthn_use_twofa = Sisesta oma telefonist kahefaktorilise autentimise kood
webauthn_error = Teie turvavõti ei saanud lugeda. webauthn_error = Sinu turvavõtit ei saanud lugeda.
webauthn_unsupported_browser = Teie brauser ei toeta praegu WebAuthn. webauthn_unsupported_browser = Sinu veebibrauser ei toeta praegu WebAuthn-liidestust.
webauthn_error_unknown = Tekkis tundmatu viga. Palun proovige uuesti. webauthn_error_unknown = Tekkis tundmatu viga. Palun proovi uuesti.
webauthn_error_insecure = WebAuthn toetab ainult turvalisi ühendusi. HTTP kaudu testimiseks võite kasutada päritolu "localhost" või "127.0.0.1" webauthn_error_insecure = WebAuthn toetab ainult turvalisi ühendusi. HTTP kaudu testimiseks võid kasutada lähteaadressina „localhost“ või „127.0.0.1“
webauthn_error_empty = Sellele võtmele tuleb määrata nimi. webauthn_error_empty = Palun lisa sellele võtmele täisnimi.
webauthn_error_timeout = Ajakatkestus saavutati enne võtme lugemist. Palun laadige see lehekülg uuesti ja proovige uuesti. webauthn_error_timeout = Päring aegus enne võtme lugemist. Palun laadi see lehekülg uuesti ja proovi uuesti.
repository = Hoidla repository = Hoidla
organization = Organisatsioon organization = Organisatsioon
new_fork = Uus hoidla haru new_fork = Uus lähekoodihoidla haru
new_project = Uus projekt new_project = Uus projekt
new_project_column = Uus veerg new_project_column = Uus veerg
admin_panel = Saidi administreerimine admin_panel = Saidi haldus
settings = Seaded settings = Seadistused
your_profile = Profiil your_profile = Profiil
your_starred = Tähistatud tärniga your_starred = Tähistatud tärniga
new_repo.title = Uus hoidla new_repo.title = Uus lähtekoodi hoidla
new_migrate.title = Uus sisseränne new_migrate.title = Uus kolimine
new_org.title = Uus organisatsioon new_org.title = Uus organisatsioon
new_repo.link = Uus hoidla new_repo.link = Uus lähtekoodi hoidla
new_migrate.link = Uus sisseränne new_migrate.link = Uus kolimine
new_org.link = Uus organisatsioon new_org.link = Uus organisatsioon
all = Kõik all = Kõik
sources = Allikad sources = Allikad
@ -69,10 +69,10 @@ mirror = Peegelpilt
mirrors = Peegelpildid mirrors = Peegelpildid
forks = Harud forks = Harud
activities = Tegevused activities = Tegevused
pull_requests = Tõmbepäringud pull_requests = Päringud koodi mestimiseks
issues = Probleemid issues = Veahaldus
milestones = Verstapostid milestones = Verstapostid
ok = OK ok = Sobib
cancel = Tühista cancel = Tühista
retry = Proovi uuesti retry = Proovi uuesti
rerun = Käivita uuesti rerun = Käivita uuesti
@ -81,120 +81,139 @@ add = Lisa
add_all = Lisa kõik add_all = Lisa kõik
remove = Eemalda remove = Eemalda
remove_all = Eemalda kõik remove_all = Eemalda kõik
remove_label_str = Eemalda ühik "%s" remove_label_str = Eemalda „%s“ objekt
edit = Redigeeri edit = Muuda
view = Vaata view = Vaata
test = Test test = Testi
enabled = Võimaldatud enabled = Kasutusel
disabled = Välja lülitatud disabled = Pole kasutusel
locked = Lukkus locked = Lukustatud
copy = Kopeeri copy = Kopeeri
copy_url = Kopeeri URL copy_url = Kopeeri võrguaadress
copy_hash = Kooperi hash copy_hash = Kopeeri räsi
copy_content = Kopeeri sisu copy_content = Kopeeri sisu
copy_branch = Kopeeri haru nimi copy_branch = Kopeeri haru nimi
copy_success = Kopeeritud! copy_success = Kopeeritud!
copy_error = Kopeerimine ebaõnnestus copy_error = Kopeerimine ei õnnestunud
copy_type_unsupported = Seda failitüüpi ei saa kopeerida copy_type_unsupported = Seda failitüüpi ei saa kopeerida
write = Kirjuta write = Kirjuta
preview = Eelvaade preview = Eelvaade
loading = Laadimine loading = Laadin
error = Viga error = Viga
error404 = Lehekülge, millele te üritate jõuda, kas <strong>ei ole olemas</strong> või <strong>teil ei ole õigust</strong> seda vaadata. error404 = Lehekülge, millele sa üritad jõuda, kas <strong>ei ole olemas</strong>, <strong>ta on eemaldatud</strong> või <strong>sul ei ole õigust</strong> seda vaadata.
error413 = Sa oled oma kvoodi ammendanud. error413 = Sa oled oma kvoodi ammendanud.
go_back = Mine tagasi go_back = Mine tagasi
invalid_data = Kehtetud andmed: %v invalid_data = Vigased andmed: %v
never = Mitte kunagi never = Mitte kunagi
unknown = Teadmata unknown = Teadmata
rss_feed = RSS infovoog rss_feed = RSS-voog
confirm_delete_artifact = Kas oled kindel et soovite artefakti "%s" kustutada? confirm_delete_artifact = Kas oled kindel et soovid „%s“ artefakti kustutada?
pin = pin =Tõsta esile
artifacts = Artefaktid artifacts = Artefaktid
archived = Arhiveeritud archived = Arhiveeritud
concept_system_global = Ülemaailmne concept_system_global = Üldine
concept_user_individual = Individuaalne concept_user_individual = Individuaalne
concept_code_repository = Hoidla concept_code_repository = Lähtekoodi hoidla
concept_user_organization = Organisatsioon concept_user_organization = Organisatsioon
show_timestamps = Näita ajatemplid show_timestamps = Näita ajatempleid
show_log_seconds = Näita sekundit show_log_seconds = Näita sekundeid
download_logs = Logide allalaadimine download_logs = Laadi logid alla
name = Nimi name = Nimi
value = Väärtus value = Väärtus
filter = Filter filter = Filter
filter.clear = Tühjendage filtrid filter.clear = Tühjenda filtrid
filter.is_archived = Arhiveeritud filter.is_archived = Arhiveeritud
filter.not_archived = Mitte arhiveeritud filter.not_archived = Arhiveerimata
filter.is_fork = Harud filter.is_fork = Koodiharud
filter.not_fork = Mitte harud filter.not_fork = Pole koodiharud
filter.is_mirror = Peegelpiltid filter.is_mirror = Peegelpildid
filter.not_mirror = Mitte peegelpiltid filter.not_mirror = Pole peegelpilte
filter.is_template = Mallid filter.is_template = Mallid
filter.not_template = Mitte Mallid filter.not_template = Pole mallid
filter.public = Avalik filter.public = Avalik
filter.private = Privaatne filter.private = Privaatne
rerun_all = Käivita uuesti kõik tööd rerun_all = Käivita uuesti kõik tööd
new_mirror = Uus peegelpilt new_mirror = Uus peegelpilt
copy_generic = Kopeeri lõikelauale copy_generic = Kopeeri lõikelauale
confirm_delete_selected = Kinnitage et kustutada kõik valitud elemendid? confirm_delete_selected = Kas kinnitad kõikide valitud objektide kustutamise?
show_full_screen = Näita täisekraanil show_full_screen = Näita täisekraanivaates
powered_by = Siin on kasutusel %s
captcha = Robotilõks
copy_path = Kopeeri asukoht
unpin = Lõpeta esiletõstmine
[search] [search]
search = Otsi... search = Otsi
fuzzy = Hägus fuzzy = Hägus
fuzzy_tooltip = Lisage tulemused mis vastavad ka otsingu terminile fuzzy_tooltip = Lisa tulemused mis lähedalt vastavad otsingusõnale
union = Märksõnad union = Märksõnad
exact = Täpne exact = Täpne
exact_tooltip = Sisaldab ainult tulemusi mis vastavad täpsele otsingusõnale exact_tooltip = Sisaldab ainult tulemusi, mis vastavad täpsele otsingusõnale
repo_kind = Otsi hoidlad... repo_kind = Otsi lähtekoodihoidlad…
user_kind = Otsi kasutajaid... user_kind = Otsi kasutajaid
org_kind = Otsi organisatsioone... org_kind = Otsi organisatsioone
team_kind = Otsi meeskonnad... team_kind = Otsi tiime…
code_kind = Otsi koodi... code_kind = Otsi koodi
code_search_by_git_grep = Praeguse koodi otsingu tulemused annab "git grep". Paremaid tulemusi võib saada, kui saidi administraator lubab koodi indekseerija. code_search_by_git_grep = Praeguse koodi otsingu tulemused annab "git grep". Paremaid tulemusi võib saada, kui saidi administraator lubab koodi indekseerija.
package_kind = Otsi pakette... package_kind = Otsi pakette
project_kind = Otsi projekte... project_kind = Otsi projekte
branch_kind = Otsi harusid... branch_kind = Otsi harusid
commit_kind = Otsi kommiteid... commit_kind = Otsi kommiteid
runner_kind = Otsi jooksjaid... runner_kind = Otsi jooksjaid
no_results = Sobivaid tulemusi ei leitud. no_results = Sobivaid tulemusi ei leitud.
issue_kind = Otsi probleeme... issue_kind = Otsi probleeme
milestone_kind = Otsi verstapostid... milestone_kind = Otsi verstapostid...
type_tooltip = Otsingu tüüp type_tooltip = Otsingu tüüp
code_search_unavailable = Koodide otsing ei ole praegu saadaval. Palun võtke ühendust saidi administraatoriga. code_search_unavailable = Koodiotsing ei ole praegu saadaval. Palun võta ühendust saidi administraatoriga.
union_tooltip = Sisaldab tulemused mis vastavad mis tahes tühikutega eraldatud võtmesõnadele union_tooltip = Kaasa tulemusi, mis vastavad mis tahes tühikutega eraldatud märksõnadele
keyword_search_unavailable = Otsing märksõna järgi ei ole praegu saadaval. Palun võtke ühendust saidi administraatoriga. keyword_search_unavailable = Otsing märksõna järgi ei ole praegu saadaval. Palun võtke ühendust saidi haldajaga.
pull_kind = Otsi tõmbepäringuid... pull_kind = Otsi tõmbepäringuid
[aria] [aria]
navbar = Navigatsiooniriba navbar = Navigatsiooniriba
footer.software = Selle tarkvara kohta footer.software = Teave selle tarkvara kohta
footer.links = Lingid footer.links = Lingid
footer = Jalus
[heatmap] [heatmap]
number_of_contributions_in_the_last_12_months = %s panused viimase 12 kuu jooksul number_of_contributions_in_the_last_12_months = %s kaastööd viimase 12 kuu jooksul
contributions_zero = Panused ei ole contributions_zero = Kaastöid ei ole
contributions_format = {contributions} {day} {month}, {year} contributions_format = {contributions} {day} {month}, {year}
contributions_few = panused contributions_few = kaastööd
less = Vähem less = Vähem
more = Rohkem more = Rohkem
contributions_one = panus contributions_one = kaastöö
[editor] [editor]
buttons.heading.tooltip = Lisa pealkiri buttons.heading.tooltip = Lisa pealkiri
buttons.italic.tooltip = Lisa kursiivne tekst buttons.italic.tooltip = Lisa kaldkirjas tekst
buttons.quote.tooltip = Tsitaadi tekst buttons.quote.tooltip = Tsiteeri teksti
buttons.code.tooltip = Lisa kood buttons.code.tooltip = Lisa kood
buttons.link.tooltip = Lisa link buttons.link.tooltip = Lisa link
buttons.list.ordered.tooltip = Lisa nummerdatud nimekiri buttons.list.ordered.tooltip = Lisa nummerdatud nimekiri
buttons.list.unordered.tooltip = Lisa nimekiri buttons.list.unordered.tooltip = Lisa nimekiri
buttons.list.task.tooltip = Lisa ülesannete nimekiri buttons.list.task.tooltip = Lisa ülesannete nimekiri
buttons.ref.tooltip = Viide probleemile või tõmbepäringule buttons.ref.tooltip = Viide probleemile või mestimispäringule
buttons.switch_to_legacy.tooltip = Kasutage selle asemel pärandredaktorit buttons.switch_to_legacy.tooltip = Selle asemel kasuta pärandredaktorit
buttons.enable_monospace_font = Võimalda püsisammkiri buttons.enable_monospace_font = Kasuta püsisammkirja
buttons.disable_monospace_font = Lülita välja püsisammkiri buttons.disable_monospace_font = Lülita püsisammkiri välja
buttons.indent.tooltip = Pesa esemed ühe taseme võrra buttons.indent.tooltip = Liiguta objekte ühe taseme võrra
buttons.bold.tooltip = Lisa rasvane tekst buttons.bold.tooltip = Lisa paks tekst
buttons.mention.tooltip = Mainige kasutajat või meeskonda buttons.mention.tooltip = Maini kasutajat või tiimi
buttons.unindent.tooltip = Võta tagasi objektide liigutamine ühe taseme võrra
buttons.new_table.tooltip = Lisa tabel
table_modal.header = Lisa tabel
table_modal.placeholder.header = Päis
table_modal.placeholder.content = Sisu
table_modal.label.rows = Read
table_modal.label.columns = Veerud
link_modal.header = Lisa link
link_modal.url = Võrguaadress
link_modal.description = Kirjeldus
link_modal.paste_reminder = Soovitus: kui link on uba lõikelaual olemas, siis võis ta otse lisada ja link luuakse automaatselt.
[filter] [filter]
string.asc = A - Z string.asc = A - Z
@ -205,114 +224,179 @@ occurred = Tekkis viga
invalid_csrf = Halb taotlus: vigane CSRF token invalid_csrf = Halb taotlus: vigane CSRF token
not_found = Sihtmärki ei leitud. not_found = Sihtmärki ei leitud.
network_error = Võrguviga network_error = Võrguviga
server_internal = Sisemine serveri viga server_internal = Serveri sisemine viga
report_message = Kui usute et tegemist on Forgejo veaga siis otsige probleeme <a href="%s" target="_blank">Codebergist</a> või avage vajadusel uus probleem. report_message = Kui usud, et tegemist on Forgejo veaga, siis otsige sarnaseid vigu <a href="%s" target="_blank">Codebergist</a> või vajadusel koosta uus veakirjeldus.
[startpage] [startpage]
app_desc = Valutu, isehostitatud Git'i teenus app_desc = Muretu Git'i teenus sinu omas serveris
install = Lihtne paigaldada install = Lihtne paigaldada
platform = Platvormiülene platform = Platvormiülene
platform_desc = Forgejo on kinnitust leidnud et töötab nii libre operatsioonisüsteemides nagu Linux ja FreeBSD, kui ka erinevatel protsessorarhitektuuridel. Valige see mis teile meeldib! platform_desc = On kinnitust leidnud, et Forgejo töötab nii avatud operatsioonisüsteemides nagu Linux ja FreeBSD, kui ka erinevatel protsessorarhitektuuridel. Vali see mis sulle meeldib!
lightweight = Kergekaaluline lightweight = Kergekaaluline
lightweight_desc = Forgejo on väikeste miinimumnõuetega ja seda saab kasutada odaval Raspberry Pi'l. Säästa oma masina energiat! lightweight_desc = Forgejo on väikeste miinimumnõuetega ja seda saad kasutada odaval Raspberry Pi'l. Säästa oma masina energiat!
license = Avatud lähtekood license = Avatud lähtekood
install_desc = Lihtsalt <a target="_blank" rel="noopener noreferrer" href="%[1]s">käivitage oma platvormi binaarsüsteem</a>, tarnige see koos <a target="_blank" rel="noopener noreferrer" href="%[2]s">Dockeriga</a>, või saada see <a target="_blank" rel="noopener noreferrer" href="%[3]s">pakendatud</a>. install_desc = Lihtsalt <a target="_blank" rel="noopener noreferrer" href="%[1]s">käivita rakenduse fail oma platvormil</a>, pane ta tööle <a target="_blank" rel="noopener noreferrer" href="%[2]s">Dockeriga</a> või laadi ta <a target="_blank" rel="noopener noreferrer" href="%[3]s">pakendatuna</a>.
license_desc = Mine võta <a target="_blank" rel="noopener noreferrer" href="%[1]s">Forgejo</a>! Liitu meiega andes <a target="_blank" rel="noopener noreferrer" href="%[2]s">oma panuse</a> et muuta see projekt veelgi paremaks. Ärge häbenege olla kaasaaitaja! license_desc = Laadi <a target="_blank" rel="noopener noreferrer" href="%[1]s">Forgejo</a> alla! Liitu meiega andes <a target="_blank" rel="noopener noreferrer" href="%[2]s">oma panuse</a>, et muuta see projekt veelgi paremaks. Ära pelga osalemist!
[install] [install]
install = Paigaldamine install = Paigaldamine
title = Esialgne konfiguratsioon title = Esialgne konfiguratsioon
docker_helper = Kui käivitate Forgejo't Dockeri sees, lugege <a target="_blank" rel="noopener noreferrer" href="%s">dokumentatsiooni</a> enne seadete muutmine. docker_helper = Kui käivitad Forgejo't Dockeris, loe enne seadistuste muutmist <a target="_blank" rel="noopener noreferrer" href="%s">dokumentatsiooni</a>.
require_db_desc = Forgejo vajab MySQL, PostgreSQL, SQLite3 või TiDB (MySQL protokoll). require_db_desc = Forgejo vajab tööks ühte järgnevast andmebaasidest: MySQL, PostgreSQL, SQLite3 või TiDB (MySQL protokoll).
db_title = Andmebaasi seaded db_title = Andmebaasi seadistused
db_type = Andmebaasi tüüp db_type = Andmebaasi tüüp
host = Vastuvõtja host = Server
user = Kasutajanimi user = Kasutajanimi
password = Parool password = Salasõna
db_name = Andmebaasi nimi db_name = Andmebaasi nimi
db_schema = Skeem db_schema = Andmeskeem
db_schema_helper = Jäta tühjaks andmebaasi vaikimisi ("avalik"). db_schema_helper = Vaikimisi valiku kasutamiseks jäta tühjaks („public“).
ssl_mode = SSL ssl_mode = SSL
path = Tee path = Asukoht
sqlite_helper = SQLite3 andmebaasi failitee.<br>Sisestage absoluutne tee, kui käivitate Forgejo't teenusena. sqlite_helper = SQLite3 andmebaasi aukoht.<br>Kui käivitad Forgejo'd teenusena, siis sisesta absoluutne asukoht.
reinstall_error = Sa üritad installeerida olemasolevasse Forgejo andmebaasi reinstall_error = Sa üritad paigaldada olemasolevasse Forgejo andmebaasi
reinstall_confirm_message = Olemasoleva Forgejo andmebaasi uuesti paigaldamine võib põhjustada mitmeid probleeme. Enamasti peaksite Forgejo käivitamiseks kasutama olemasolevat "app.ini". Kui te teate, mida teete, kinnitage järgmist: reinstall_confirm_message = Olemasoleva Forgejo andmebaasi uuesti paigaldamine võib põhjustada mitmeid probleeme. Enamasti peaksid Forgejo käivitamiseks kasutama olemasolevat „app.ini“. Kui te tead, mida teed, kinnita järgmist:
reinstall_confirm_check_1 = Andmed, mis on krüpteeritud SECRET_KEY'ga app.ini's, võivad kaduda: kasutajad ei pruugi saada 2FA/OTP-ga sisse logima ja peegelpiltid ei pruugi õigesti toimida. Selle kasti märkimisega kinnitate, et praegune app.ini fail sisaldab õiget SECRET_KEY'd. reinstall_confirm_check_1 = Andmed, mis on krüpteeritud SECRET_KEY'ga app.ini's, võivad kaduda: kasutajad ei pruugi saada sisselogimisel kaasutada 2FA/OTP võimalusi ja peegelpildid ei pruugi õigesti toimida. Selle kasti märkimisega kinnitad, et praegune app.ini fail sisaldab õiget SECRET_KEY'd.
reinstall_confirm_check_3 = Te kinnitate, et olete täiesti kindel, et see Forgejo töötab õiges app.ini asukohas ja et olete kindel, et peate uuesti installima. Te kinnitate, et tunnistate ülaltoodud riske. reinstall_confirm_check_3 = Sa kinnitad, et oled täiesti kindel, et see Forgejo töötab õiges app.ini asukohas ja et oled kindel, et pead uuesti paigaldama. Sa kinnitad, et oled teadlik ülaltoodud riskidest.
err_empty_db_path = SQLite3 andmebaasi tee ei saa olla tühi. err_empty_db_path = SQLite3 andmebaasi asukoht ei saa olla tühi.
no_admin_and_disable_registration = Kasutajate iseregistreerimist ei saa keelata ilma administraatori kontot loomata. no_admin_and_disable_registration = Kasutajate iseregistreerimist ei saa keelata ilma peakasutaja kontot loomata.
err_empty_admin_password = Administraatori parool ei saa olla tühi. err_empty_admin_password = Peakasutaja salasõna ei saa olla tühi.
err_empty_admin_email = Administraatori e-posti aadress ei saa olla tühi. err_empty_admin_email = Peakasutaja e-posti aadress ei saa olla tühi.
err_admin_name_is_reserved = Administraatori kasutajanimi on kehtetu, kasutajanimi on reserveeritud err_admin_name_is_reserved = Peakasutaja kasutajanimi on vigane, kasutajanimi on reserveeritud
err_admin_name_pattern_not_allowed = Administraatori kasutajanimi on kehtetu, kasutajanimi vastab reserveeritud mustrile err_admin_name_pattern_not_allowed = Peakasutaja kasutajanimi on vigane, kasutajanimi vastab reserveeritud mustrile
err_admin_name_is_invalid = Administraatori kasutajanimi on kehtetu err_admin_name_is_invalid = Peakasutaja kasutajanimi on vigane
general_title = Üldised seaded general_title = Üldised seadistused
app_name = Instantsi pealkiri app_name = Serveri nimi või pealkiri
app_name_helper = Sisestage siia oma instantsi nimi. See kuvatakse igal leheküljel. app_name_helper = Sisestage siia oma serveri või teenuse nimi. See kuvatakse igal leheküljel.
app_slogan = Instantse loosung app_slogan = Serveri tunnuslause
repo_path = Hoidla juurte tee repo_path = Hoidla juurkausta asukoht
lfs_path = Git LFS'i juurte tee lfs_path = Git LFS'i juurkausta asukoht
lfs_path_helper = Failid jälgitatud Git LFS'ist salvestatakse sellesse kaustale. Jätke tühjaks et välja lülitada. lfs_path_helper = Git LFS'ist jälgitud failid salvestatakse siia kausta. Kui jätad tühjaks, siis pole see võimalus kasutusel.
run_user = Kasutaja kellena käivitada run_user = Kasutaja kellena käivitada
run_user_helper = Operatsioonisüsteemi kasutajanimi, mille all Forgejo töötab. Pange tähele, et sellel kasutajal peab olema juurdepääs hoidlate juurte teele. run_user_helper = Operatsioonisüsteemi kasutajanimi, kellena Forgejo töötab. Pane tähele, et sellel kasutajal peab olema juurdepääs hoidlate juurkaustale.
domain = Serveri domeen domain = Serveri domeen
domain_helper = Serveri domeen või hostiaadress. domain_helper = Serveri domeen või hosti aadress.
ssh_port = SSH-serveri port ssh_port = SSH-serveri port
ssh_port_helper = Pordi number, mida SSH-server kasutab. Jätke tühjaks et välja lülitada SSH-serveri. ssh_port_helper = Pordi number, mida SSH-server kasutab. SSH-serveri väljalülitamiseks jäta tühjaks.
http_port = HTTP-kuulamise port http_port = Serveri HTTP port
http_port_helper = Pordi number, mida Forgejo veebiserver kasutab. http_port_helper = Pordi number, mida Forgejo veebiserver kasutab.
app_url = Baasi URL app_url = Juur-võrguaadress
app_url_helper = Baasaadress HTTP(S) kloonimise URL-ide ja e-posti teadete jaoks. app_url_helper = Lähteaadress HTTP(S) kloonimise võrguaadresside ja e-posti teadete jaoks.
log_root_path = Logi tee log_root_path = Logi asukoht
log_root_path_helper = Logifailid kirjutatakse sellesse kaustale. log_root_path_helper = Logifailid kirjutatakse siia kausta.
optional_title = Vabatahtlikud seaded optional_title = Täiendavad seadistused
email_title = E-posti seaded email_title = E-posti seadistused
smtp_addr = SMTP vastuvõtja smtp_addr = SMTP server
smtp_port = SMTP port smtp_port = SMTP port
smtp_from = Saada e-kirjad nagu smtp_from = Saada e-kirjad nagu
smtp_from_invalid = "Saada e-kirjad nagu" aadress on kehtetu smtp_from_invalid = „Saada e-kirjad nagu“ aadress on vigane
smtp_from_helper = E-posti aadress, mida Forgejo kasutab. Sisestage tavaline e-posti aadress või kasutage formaati "Nimi" <email@example.com>. smtp_from_helper = E-posti aadress, mida Forgejo kasutab. Sisesta tavaline e-posti aadress või kasutage vormingut "Nimi" <email@example.com>.
mailer_user = SMTP kasutajanimi mailer_user = SMTP kasutajanimi
mailer_password = SMTP parool mailer_password = SMTP salasõna
register_confirm = Registreerimiseks on vaja e-posti kinnitust register_confirm = Registreerimiseks on vaja e-posti kinnitamist
mail_notify = Lubage e-posti teated mail_notify = Kasuta teavitamist e-posti teel
server_service_title = Serveri ja kolmanda osapoole teenuste seaded server_service_title = Serveri ja kolmanda osapoole teenuste seadistused
offline_mode = Lülita sisse lokaalse režiimi offline_mode = Lülita sisse lokaalne režiim
disable_gravatar = Lülita välja Gravatar disable_gravatar = Lülita Gravatar välja
federated_avatar_lookup = Lülita sisse föderaalsed avatarid federated_avatar_lookup = Kaasuta födereeritud tunnuspilte
federated_avatar_lookup.description = Otsige avatare kasutades Libravatar'i. federated_avatar_lookup.description = Otsi tunnuspilte Libravatari teenusest.
disable_registration = Lülita välja iseregistreerimine disable_registration = Lülita välja iseregistreerimine
allow_only_external_registration = Luba registreerimine ainult väliste teenuste kaudu allow_only_external_registration = Luba registreerimine ainult väliste teenuste kaudu
allow_only_external_registration.description = Kasutajad saavad uusi kontosid luua ainult seadistatud väliste teenuste abil. allow_only_external_registration.description = Kasutajad saavad uusi kontosid luua ainult seadistatud väliste teenuste abil.
openid_signin = Lülita sisse OpenID sisselogimise openid_signin = Kasuta OpenID abil sisselogimist
openid_signin.description = Luba kasutajatel OpenID kaudu sisse logida. openid_signin.description = Luba kasutajatel OpenID abil sisse logida.
openid_signup = Lülita sisse OpenID iseregistreerimine openid_signup = Kasuta OpenID abil iseregistreerimist
enable_captcha = Lülita sisse registreerimise CAPTCHA enable_captcha = Kasuta registreerimisel robotilõksu
enable_captcha.description = Nõudke kasutajatelt CAPTCHA läbimist kontode loomiseks. enable_captcha.description = Eelda, et kasutajad lahendavad registreerimisel robotilõksu ülesande.
require_sign_in_view = Nõua sisselogimist et vaadata instantsi sisu require_sign_in_view = Serveri sisu vaatamiseks eelda sisselogimist
default_keep_email_private = Peida e-posti aadressid vaikimisi default_keep_email_private = Vaikimisi peida e-posti aadressid
default_keep_email_private.description = Lülita sisse uute kasutajate e-posti aadressi varjamine vaikimisi, et see teave ei lekiks kohe pärast registreerimist. default_keep_email_private.description = Lülita sisse uute kasutajate e-posti aadresside vaikimisi varjamine - see väldib vastava teabe lekkimist kohe pärast registreerimist.
default_allow_create_organization = Lubada organisatsioonide loomine vaikimisi default_allow_create_organization = Vaikimisi luba organisatsioonide loomine
default_enable_timetracking = Aja jälgimise sisselülitamine vaikimisi default_enable_timetracking = Vaikimisi lülita sisse aja jälgimine
default_enable_timetracking.description = Lubage uute repositooriumide jaoks vaikimisi aja jälgimise funktsiooni kasutamine. default_enable_timetracking.description = Vaikimisi luba uute lähtekoodihoidlate jaoks aja jälgimise funktsiooni kasutamise.
admin_title = Administraatori konto seaded admin_title = Peakasutaja konto seaded
admin_setting.description = Administraatori konto loomine on vabatahtlik. Esimesest registreeritud kasutajast saab automaatselt administraator. admin_setting.description = Peakasutaja konto loomine on vabatahtlik. Esimesest registreeritud kasutajast saab automaatselt peakasutaja.
admin_name = Administraatori kasutajanimi admin_name = Peakasutaja kasutajanimi
admin_password = Parool admin_password = Salasõna
confirm_password = Parooli kinnitamine confirm_password = Kinnita salasõna
admin_email = E-posti aadress admin_email = E-posti aadress
config_location_hint = Need konfiguratsioonivalikud salvestatakse sees: config_location_hint = Need konfiguratsioonivalikud salvestatakse siin:
install_btn_confirm = Paigalda Forgejo install_btn_confirm = Paigalda Forgejo
test_git_failed = Ei saanud testida käsku "git": %v test_git_failed = Ei saanud testida käsku „git“: %v
invalid_db_setting = Andmebaasi seaded on vigased: %v invalid_db_setting = Andmebaasi seadistused on vigased: %v
invalid_db_table = Andmebaasi tabel "%s" on vigane: %v invalid_db_table = Andmebaasi tabel „%s“ on vigane: %v
allow_dots_in_usernames = Luba kasutajatel kasutada oma kasutajanimedes punkte. Ei mõjuta olemasolevaid kontosid. allow_dots_in_usernames = Luba kasutajatel kasutada oma kasutajanimedes punkte. Ei mõjuta olemasolevaid kontosid.
default_allow_create_organization.description = Lubage uutel kasutajatel vaikimisi luua organisatsioone. Kui see valik on välja lülitatud, peab administraator andma uutele kasutajatele organisatsioonide loomise loa. default_allow_create_organization.description = Luba uutel kasutajatel vaikimisi luua organisatsioone. Kui see valik on välja lülitatud, peab peakasutaja andma uutele kasutajatele organisatsioonide loomise loa.
disable_gravatar.description = Lülita välja Gravatari või muude kolmandate osapoolte avatariallikate kasutamine. Kasutajate avatarite jaoks kasutatakse vaikimisi pilte, kui nad ei lae oma avatari üles. disable_gravatar.description = Lülita välja Gravatari või muude kolmandate osapoolte tunnuspiltide allikate kasutamine. Kasutajate tunnuspiltidena kasutatakse vaikimisi pilte, kui nad enda oma ei laadi üles.
openid_signup.description = Luba kasutajatel luua kontosid OpenID kaudu, kui iseregistreerimine on sisse lülitatud. openid_signup.description = Kui iseregistreerimine on kasutusel, luba kasutajatel luua kontosid OpenID abil.
require_sign_in_view.description = Piirake sisule juurdepääsu sisselogitud kasutajatele. Külalised saavad külastada ainult autentimislehti. require_sign_in_view.description = Piira juurdepääsu vaid sisselogitud kasutajatega. Külalised saavad külastada ainult autentimislehti.
reinstall_confirm_check_2 = Hoidlad ja seadeid võib olla vaja uuesti sünkroniseerida. Selle kasti märkimisega kinnitate, et sünkroniseerite hoidlate ja authorized_keys'i faili konksud käsitsi uuesti. Te kinnitate, et tagate, et hoidlate ja peegelpilti seaded on õiged. reinstall_confirm_check_2 = Hoidlad ja seadistused võivad uuesti vajada sünkroniseerimist. Selle kasti märkimisega kinnitad, et sünkroniseerid hoidlate ja authorized_keys'i faili haagid käsitsi uuesti. Sa kinnitad, et tagad, et hoidlate ja peegelpiltide seadistused on õiged.
app_slogan_helper = Sisestage siia oma loosung. Jätke tühjaks, et välja lülitada. app_slogan_helper = Sisesta siia oma serveri tunnuslause. Kui jätad tühjaks, siis pole tunnuslause kasutusel.
repo_path_helper = Kauged Git-hoidlad salvestatakse sellesse kaustale. repo_path_helper = Kaugseadmete Git-hoidlad salvestatakse siia kausta.
sqlite3_not_available = See Forgejo versioon ei toeta SQLite3. Palun laadige alla ametlik binaarversioon %s (mitte "gobuild"i versioon). sqlite3_not_available = See Forgejo versioon ei toeta SQLite3 andmebaasi. Palun laadi alla ametlik binaarversioon %s (mitte „gobuild“-versioon).
offline_mode.description = Lülitage kolmandate osapoolte sisu edastamise võrgud välja ja teenindage kõiki ressursse lokaalselt. offline_mode.description = Lülitage kolmandate osapoolte sisuedastusvõrgud välja ja jaga kõiki ressursse kohalikust serverist.
password_algorithm = Salasõna räsialgoritm
invalid_password_algorithm = Vigane salasõna räsialgoritm
[auth]
forgot_password_title = Ununenud salasõna
forgot_password = Kas salasõna ununes?
must_change_password = Muuda oma salasõna
allow_password_change = Eelda, et kasutajad muudavad oma salasõna (soovitatav)
[mail]
password_change.subject = Sinu salasõna on muutunud
password_change.text_1 = Sinu kasutajakonto salasõna on just muutunud.
totp_disabled.text_1 = Lisaautentimine ehk ajapõhise salasõna (TOTP) kasutamine on sinu kasutajakontol just välja lülitatud.
[form]
Password = Salasõna
Retype = Korda salasõna
password_not_match = Salasõnad ei klapi.
username_password_incorrect = Kassutajanimi või salasõna pole õige.
[settings]
update_password = Muuda salasõna
old_password = Senine salasõna
new_password = Uus salasõna
retype_new_password = Korda uut salasõna
password_incorrect = Senine salasõna pole õige.
change_password_success = Sina salasõna on nüüd muudetud. Edaspidi kasuta sisselogimiseks seda uut salasõna.
[repo]
mirror_interval_invalid = Peegelpildi välp pole korrektne.
mirror_public_key = Avalik SSH-võti
mirror_use_ssh.text = Kasuta SSH-autentimist
mirror_sync = sünkroonis
mirror_sync_on_commit = Sünkrooni sissekannete tegemisel
mirror_address = Klooni võrguaadressilt
mirror_password_placeholder = (Muutmata)
mirror_password_blank_placeholder = (Seadistamata)
mirror_password_help = Salvestatud salasõna kustutamiseks muuda kasutajanime.
commits.search_branch = See haru
commits.search_all = Kõik harud
commits.author = Autor
commits.message = Sõnum
commits.browse_further = Sirvi edasi
commits.renamed_from = Nimi muudetud, vana nimi oli „%s“
commits.date = Kuupäev
commits.older = Vanemad
commits.newer = Uuemad
commitstatus.error = Viga
commitstatus.failure = Tõrge
commitstatus.pending = Ootel
commitstatus.success = Valmis
ext_issues = Välised vead
projects = Projektid
[admin]
users.password_helper = Kui sa ei taha salasõna muuta, siis jäta väli tühjaks.
auths.bind_password = Seo salasõna
config.reset_password_code_lives = Taastekoodi aegumine
[actions]
variables = Muutujad
variables.management = Halda muutujaid
variables.creation = Lisa muutuja
variables.none = Muutujaid veel pole.
variables.deletion = Eemalda muutuja

View file

@ -301,7 +301,7 @@ federated_avatar_lookup=فعال سازی آواتار مشترک
federated_avatar_lookup.description=پیدا کردن آواتار با استفاده از Libravatar. federated_avatar_lookup.description=پیدا کردن آواتار با استفاده از Libravatar.
disable_registration=غیرفعال‌کردن خود ثبت نامی disable_registration=غیرفعال‌کردن خود ثبت نامی
disable_registration.description=غیرفعال کردن ثبت نام کاربر. تنها مدیر ها قادر خواهند بود حساب کاربری جدید اضافه کنند. disable_registration.description=غیرفعال کردن ثبت نام کاربر. تنها مدیر ها قادر خواهند بود حساب کاربری جدید اضافه کنند.
allow_only_external_registration.description=اجازه ثبت نام فقط از طریق خدمات خارجی allow_only_external_registration.description=اجازه ثبت نام فقط از طریق خدمات خارجی.
openid_signin=فعالسازی ورود با OpenID openid_signin=فعالسازی ورود با OpenID
openid_signin.description=فعالسازی ورود کاربر با OpenID. openid_signin.description=فعالسازی ورود کاربر با OpenID.
openid_signup=فعالسازی ثبت نام با OpenID openid_signup=فعالسازی ثبت نام با OpenID
@ -608,7 +608,7 @@ avatar=آواتار
ssh_gpg_keys=کلید‌های SSH / GPG ssh_gpg_keys=کلید‌های SSH / GPG
social=حساب های اجتماعی social=حساب های اجتماعی
applications=برنامه‌ها applications=برنامه‌ها
orgs=مدیریت سازمان‌ها orgs=سازمان‌ها
repos=مخازن repos=مخازن
delete=حذف حساب کاربری delete=حذف حساب کاربری
twofa=احراز هویت دوگانه twofa=احراز هویت دوگانه
@ -653,8 +653,8 @@ password_change_disabled=کاربران غیر محلی نمیتوانند گذ
emails=نشانی‌های ایمیل emails=نشانی‌های ایمیل
manage_emails=مدیریت نشانی‌های ایمیل manage_emails=مدیریت نشانی‌های ایمیل
manage_themes=تم پیش فرض را انتخاب کنید manage_themes=تم پیش فرض
manage_openid=مدیریت نشانی‌های OpenID manage_openid=آدرس‌های OpenID
theme_desc=این پوشته پیش فرض شما در سراسر سایت می باشد. theme_desc=این پوشته پیش فرض شما در سراسر سایت می باشد.
primary=اصلی primary=اصلی
activated=فعال شده activated=فعال شده
@ -2762,27 +2762,27 @@ directory = پوشه
[search] [search]
type_tooltip = جستجو گونه type_tooltip = جستجو گونه
search = جستجو... search = جستجو
fuzzy = درهم fuzzy = درهم
fuzzy_tooltip = پیامدهایی را درج کنید که دقیقا با عبارت جستجو همخوانی داشته باشند fuzzy_tooltip = پیامدهایی را درج کنید که دقیقا با عبارت جستجو همخوانی داشته باشند
regexp = عبارات باقاعده regexp = عبارات باقاعده
pull_kind = جستجو واکشی‌ها... pull_kind = جستجو واکشی‌ها
no_results = نتیجه درخوری یافت نشد. no_results = نتیجه درخوری یافت نشد.
runner_kind = جستجو دونده‌ها... runner_kind = جستجو دونده‌ها
keyword_search_unavailable = جستجو کلیدواژه اکنون در درسترس نیست. لطفا با مدیر سایت در میان بگذارید. keyword_search_unavailable = جستجو کلیدواژه اکنون در درسترس نیست. لطفا با مدیر سایت در میان بگذارید.
repo_kind = جستجو مخازن... repo_kind = جستجو مخازن
regexp_tooltip = اصطلاح جستجو شده را با عبارات باقاعده تفسیر کن regexp_tooltip = اصطلاح جستجو شده را با عبارات باقاعده تفسیر کن
user_kind = جستجو کاربران... user_kind = جستجو کاربران
org_kind = جستجو سازمان‌ها... org_kind = جستجو سازمان‌ها
team_kind = جستجو گروه‌ها... team_kind = جستجو گروه‌ها
package_kind = جستجو بسته‌ها... package_kind = جستجو بسته‌ها
project_kind = جستجو پروژه‌ها... project_kind = جستجو پروژه‌ها
code_search_unavailable = جستجوی کد اکنون در دسترس نیست. لطفا با مدیر سایت درمیان بگذارید. code_search_unavailable = جستجوی کد اکنون در دسترس نیست. لطفا با مدیر سایت درمیان بگذارید.
code_kind = جستجو کدها... code_kind = جستجو کدها
union = بهم پیوستگی union = بهم پیوستگی
union_tooltip = نتایجی را در بر بگیر که با هر یک از کلیدواژه‌های جدا شده از فضای‌خالی مطابقت دارد union_tooltip = نتایجی را در بر بگیر که با هر یک از کلیدواژه‌های جدا شده از فضای‌خالی مطابقت دارد
branch_kind = جستجو شاخه‌ها... branch_kind = جستجو شاخه‌ها
commit_kind = جستجو سپرده‌ها... commit_kind = جستجو سپرده‌ها
issue_kind = جستجو مشکلات... issue_kind = جستجو مشکلات
exact = مو به مو exact = مو به مو
exact_tooltip = نتایجی را در بر بگیر که مو به مو با اصطلاح جستجو شده یکی باشد exact_tooltip = نتایجی را در بر بگیر که مو به مو با اصطلاح جستجو شده یکی باشد

View file

@ -669,6 +669,13 @@ username_claiming_cooldown = Käyttäjänimeä ei voi ottaa käyttöön, koska s
email_domain_is_not_allowed = Käyttäjän sähköpostiosoitteen <b>%s</b> verkkotunnus on ristiriidassa EMAIL_DOMAIN_ALLOWLIST:in tai EMAIL_DOMAIN_BLOCKLIST:in kanssa. Varmista, että olen asettanut sähköpostiosoitteen oikein. email_domain_is_not_allowed = Käyttäjän sähköpostiosoitteen <b>%s</b> verkkotunnus on ristiriidassa EMAIL_DOMAIN_ALLOWLIST:in tai EMAIL_DOMAIN_BLOCKLIST:in kanssa. Varmista, että olen asettanut sähköpostiosoitteen oikein.
invalid_group_team_map_error = ` kuvaus ei ole kelvollinen: %s`
visit_rate_limit = Etävierailujen pyyntörajoitukset.
2fa_auth_required = Etävierailu vaati kaksivaiheisen todennuksen.
unset_password = Kirjautuneen käyttäjän salasanaa ei ole asetettu.
unsupported_login_type = Tällä kirjautumistavalla ei voi poistaa tunnusta.
invalid_ssh_principal = Väärä toimija: %s
[user] [user]
change_avatar=Vaihda profiilikuvasi… change_avatar=Vaihda profiilikuvasi…
repositories=Tietovarastot repositories=Tietovarastot
@ -1038,6 +1045,9 @@ then_enter_passcode = Kirjoita sovelluksessa näkyvä pääsykoodi:
gpg_key_matched_identities_long = Tähän avaimeen upotetut identiteetit vastaavat tämän käyttäjän seuraavia aktivoituja sähköpostiosoitteita. Kommitit, jotka vastaavat näitä sähköpostiosoitteita, voidaan vahvistaa tällä avaimella. gpg_key_matched_identities_long = Tähän avaimeen upotetut identiteetit vastaavat tämän käyttäjän seuraavia aktivoituja sähköpostiosoitteita. Kommitit, jotka vastaavat näitä sähköpostiosoitteita, voidaan vahvistaa tällä avaimella.
twofa_failed_get_secret = Salaisuuden saaminen epäonnistui. twofa_failed_get_secret = Salaisuuden saaminen epäonnistui.
uid = UID
hidden_comment_types.ref_tooltip = Kommentit missä tähän ongelmaan viitattiin toisesta ongelmasta/kommitista/…
[repo] [repo]
owner=Omistaja owner=Omistaja
owner_helper=Jotkin organisaatiot eivät välttämättä näy pudotusvalikossa, koska tietovarastojen enimmäismäärää on rajoitettu. owner_helper=Jotkin organisaatiot eivät välttämättä näy pudotusvalikossa, koska tietovarastojen enimmäismäärää on rajoitettu.
@ -2255,14 +2265,14 @@ pulls.cmd_instruction_merge_warning = <b>Varoitus:</b> Asetusta ”Tunnista manu
pulls.cmd_instruction_merge_desc = Yhdistä muutokset ja päivitä Forgejossa. pulls.cmd_instruction_merge_desc = Yhdistä muutokset ja päivitä Forgejossa.
pulls.cannot_auto_merge_desc = Tätä vetopyyntöä ei voida yhdistää automaattisesti ristiriitojen vuoksi. pulls.cannot_auto_merge_desc = Tätä vetopyyntöä ei voida yhdistää automaattisesti ristiriitojen vuoksi.
adopt_preexisting_success = Omaksuttu tiedostot ja luotu tietovarasto lähteestä %s adopt_preexisting_success = Omaksuttu tiedostot ja luotu tietovarasto lähteestä %s
issues.comment_manually_pull_merged_at = manuaalisesti yhdistetty kommitti %[1]s %[2]s tietovarastoon %[3]s issues.comment_manually_pull_merged_at = manuaalisesti yhdisti kommitin %[1]s %[2]s tietovarastoon %[3]s
pulls.cmd_instruction_merge_title = Yhdistä pulls.cmd_instruction_merge_title = Yhdistä
pulls.has_merged = Epäonnistui: vetopyyntö on yhdistetty, joten et voi yhdistää uudelleen tai muuttaa kohdehaaraa. pulls.has_merged = Epäonnistui: vetopyyntö on yhdistetty, joten et voi yhdistää uudelleen tai muuttaa kohdehaaraa.
pulls.cmd_instruction_checkout_title = Uloskuittaus pulls.cmd_instruction_checkout_title = Uloskuittaus
pulls.cmd_instruction_checkout_desc = Kuittaa ulos uusi haara projektitietovarastostasi ja testaa muutokset. pulls.cmd_instruction_checkout_desc = Kuittaa ulos uusi haara projektitietovarastostasi ja testaa muutokset.
pulls.clear_merge_message_hint = Yhdistämisviestin tyhjentäminen poistaa vain kommittiviestin sisällön ja säilyttää luodut git-trailerit, kuten "Co-Authored-By…". pulls.clear_merge_message_hint = Yhdistämisviestin tyhjentäminen poistaa vain kommittiviestin sisällön ja säilyttää luodut git-trailerit, kuten "Co-Authored-By…".
settings.protect_check_status_contexts_desc = Vaadi tilatarkistusten läpäisy ennen yhdistämistä. Kun käytössä, kommitit on ensin työnnettävä toiseen haaraan ja sitten yhdistettävä tai työnnettävä suoraan tätä sääntöä vastaavaan haaraan tilantarkistuksen jälkeen. Jos konteksteja ei löydy, viimeisen kommitin on oltava onnistunut kontekstista riippumatta. settings.protect_check_status_contexts_desc = Vaadi tilatarkistusten läpäisy ennen yhdistämistä. Kun käytössä, kommitit on ensin työnnettävä toiseen haaraan ja sitten yhdistettävä tai työnnettävä suoraan tätä sääntöä vastaavaan haaraan tilantarkistuksen jälkeen. Jos konteksteja ei löydy, viimeisen kommitin on oltava onnistunut kontekstista riippumatta.
issues.comment_pull_merged_at = yhdistetty kommitti %[1]s %[2]s tietovarastoon %[3]s issues.comment_pull_merged_at = yhdisti kommitin %[1]s %[2]s haaraan %[3]s
settings.pulls.enable_autodetect_manual_merge = Ota Tunnista manuaalinen yhdistäminen automaattisesti -asetus käyttöön (Huomaa: joissakin erityistapauksissa voi esiintyä virhearviointeja) settings.pulls.enable_autodetect_manual_merge = Ota Tunnista manuaalinen yhdistäminen automaattisesti -asetus käyttöön (Huomaa: joissakin erityistapauksissa voi esiintyä virhearviointeja)
pulls.no_merge_desc = Tätä vetopyyntöä ei voida yhdistää, koska kaikki tietovaraston yhdistämisvaihtoehdot ovat poistettu käytöstä. pulls.no_merge_desc = Tätä vetopyyntöä ei voida yhdistää, koska kaikki tietovaraston yhdistämisvaihtoehdot ovat poistettu käytöstä.
pulls.no_merge_not_ready = Tämä vetopyyntö ei ole valmis yhdistettäväksi. Tarkista katselmoinnin tila ja tilantarkistukset. pulls.no_merge_not_ready = Tämä vetopyyntö ei ole valmis yhdistettäväksi. Tarkista katselmoinnin tila ja tilantarkistukset.

View file

@ -699,7 +699,7 @@ security = Seguridad
avatar = Avatar avatar = Avatar
ssh_gpg_keys = Mga SSH / GPG key ssh_gpg_keys = Mga SSH / GPG key
applications = Mga Aplikasyon applications = Mga Aplikasyon
orgs = Ipamahala ang mga organisasyon orgs = Mga organisasyon
repos = Mga Repositoryo repos = Mga Repositoryo
delete = Burahin ang account delete = Burahin ang account
twofa = Authentikasyong two-factor (TOTP) twofa = Authentikasyong two-factor (TOTP)
@ -707,7 +707,7 @@ account_link = Mga naka-link na account
uid = UID uid = UID
webauthn = Authentikasyong two-factor (Mga security key) webauthn = Authentikasyong two-factor (Mga security key)
blocked_users = Mga hinarang na user blocked_users = Mga hinarang na user
public_profile = Pampublikong Profile public_profile = Pampublikong profile
location_placeholder = Ibahagi ang iyong tinatayang lokasyon sa iba location_placeholder = Ibahagi ang iyong tinatayang lokasyon sa iba
password_username_disabled = Ang mga di-lokal na gumagamit ay hindi pinapayagan na baguhin ang kanilang username. Mangyaring makipag-ugnayan sa iyong tagapangasiwa ng site para sa higit pang mga detalye. password_username_disabled = Ang mga di-lokal na gumagamit ay hindi pinapayagan na baguhin ang kanilang username. Mangyaring makipag-ugnayan sa iyong tagapangasiwa ng site para sa higit pang mga detalye.
full_name = Buong pangalan full_name = Buong pangalan
@ -1034,6 +1034,8 @@ regenerate_token = I-regenerate
access_token_regeneration_desc = Ang pag-regenerate ng token ay babawiin ang access sa iyong account para sa mga application na gumagamit nito. Hindi ito mababawi. Magpatuloy? access_token_regeneration_desc = Ang pag-regenerate ng token ay babawiin ang access sa iyong account para sa mga application na gumagamit nito. Hindi ito mababawi. Magpatuloy?
regenerate_token_success = Na-generate muli ang token. Ang mga application na gumagamit nito ay hindi na maa-access ang iyong account at dapat ma-update gamit ang bagong token. regenerate_token_success = Na-generate muli ang token. Ang mga application na gumagamit nito ay hindi na maa-access ang iyong account at dapat ma-update gamit ang bagong token.
ssh_token_help_ssh_agent = o, kung gumagamit ka ng SSH agent (na nakatakda ang variable na SSH_AUTH_SOCK):
[repo] [repo]
template_description = Ang mga template na repositoryo ay pinapayagan ang mga gumagamit na mag-generate ng mga bagong repositoryo na may magkatulad na istraktura ng direktoryo, mga file, at opsyonal na mga setting. template_description = Ang mga template na repositoryo ay pinapayagan ang mga gumagamit na mag-generate ng mga bagong repositoryo na may magkatulad na istraktura ng direktoryo, mga file, at opsyonal na mga setting.
clone_helper = Kailangan ng tulong sa pagpili? Bisitahin ang <a target="_blank" rel="noopener noreferrer" href="%s">Tulong</a>. clone_helper = Kailangan ng tulong sa pagpili? Bisitahin ang <a target="_blank" rel="noopener noreferrer" href="%s">Tulong</a>.

View file

@ -773,7 +773,7 @@ language=Langue
ui=Thème ui=Thème
hidden_comment_types=Catégories de commentaires masqués hidden_comment_types=Catégories de commentaires masqués
hidden_comment_types_description=Cochez les catégories suivantes pour masquer les commentaires correspondants des fils d'activité. Par exemple, « Label » cache les commentaires du genre « Cerise a attribué le label Bug il y a 2 heures». hidden_comment_types_description=Cochez les catégories suivantes pour masquer les commentaires correspondants des fils d'activité. Par exemple, « Label » cache les commentaires du genre « Cerise a attribué le label Bug il y a 2 heures».
hidden_comment_types.ref_tooltip=Commentaires où ce ticket a été référencé sur un autre ticket, révision, etc. hidden_comment_types.ref_tooltip=Commentaires où ce ticket a été référencé sur un autre ticket/révision/…
hidden_comment_types.issue_ref_tooltip=Commentaires où lutilisateur change la branche/étiquette associée au ticket hidden_comment_types.issue_ref_tooltip=Commentaires où lutilisateur change la branche/étiquette associée au ticket
comment_type_group_reference=Référence comment_type_group_reference=Référence
comment_type_group_label=Label comment_type_group_label=Label
@ -1091,6 +1091,8 @@ keep_pronouns_private.description = Cela masquera votre pronoms aux visiteurs qu
storage_overview = Vue d'ensemble du stockage storage_overview = Vue d'ensemble du stockage
quota = Quota quota = Quota
ssh_token_help_ssh_agent = ou, si vous utilisez un agent SSH (avec la variable SSH_AUTH_SOCK affectée) :
[repo] [repo]
new_repo_helper=Un dépôt contient tous les fichiers dun projet, ainsi que lhistorique de leurs modifications. Vous avez déjà ça ailleurs ? <a href="%s">Migrez-le ici.</a>. new_repo_helper=Un dépôt contient tous les fichiers dun projet, ainsi que lhistorique de leurs modifications. Vous avez déjà ça ailleurs ? <a href="%s">Migrez-le ici.</a>.
owner=Propriétaire owner=Propriétaire
@ -1579,7 +1581,7 @@ issues.remove_ref_at=`a supprimé la référence <b>%s</b> %s.`
issues.add_ref_at=`a ajouté la référence <b>%s</b> %s.` issues.add_ref_at=`a ajouté la référence <b>%s</b> %s.`
issues.delete_branch_at=`a supprimé la branche <b>%s</b> %s.` issues.delete_branch_at=`a supprimé la branche <b>%s</b> %s.`
issues.filter_label=Label issues.filter_label=Label
issues.filter_label_exclude=`Utilisez <code>Alt</code> + <code>Clic/entrée</code> pour exclure les labels.` issues.filter_label_exclude=`Utilisez <kbd>Alt</kbd> + <kbd>Click</kbd> pour exclure les étiquettes.`
issues.filter_label_no_select=Toutes les labels issues.filter_label_no_select=Toutes les labels
issues.filter_label_select_no_label=Aucun label issues.filter_label_select_no_label=Aucun label
issues.filter_milestone=Jalon issues.filter_milestone=Jalon
@ -4091,4 +4093,4 @@ issues.write = <b>Écrire :</b> Fermer des tickets et gérer les métadonnées t
pulls.read = <b>Lire :</b> Lire et créer des demandes de tirage. pulls.read = <b>Lire :</b> Lire et créer des demandes de tirage.
[translation_meta] [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 difficile 100 % de complétion. :-) test = Ceci est une chaîne de test. Elle n'est pas affichée dans Forgejo même 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 difficile 100 % de complétion. :-)

View file

@ -132,20 +132,20 @@ fuzzy = Doiléir
fuzzy_tooltip = Cuir san áireamh torthaí a mheaitseálann an téarma cuardaigh go dlúth freisin fuzzy_tooltip = Cuir san áireamh torthaí a mheaitseálann an téarma cuardaigh go dlúth freisin
exact = Beacht exact = Beacht
exact_tooltip = Ní chuir san áireamh ach torthaí a mheaitseálann leis an téarma exact_tooltip = Ní chuir san áireamh ach torthaí a mheaitseálann leis an téarma
repo_kind = Cuardaigh stórtha... repo_kind = Cuardaigh stórtha
user_kind = Cuardaigh úsáideoirí... user_kind = Cuardaigh úsáideoirí
org_kind = Cuardaigh eagraíochtaí... org_kind = Cuardaigh eagraíochtaí
team_kind = Cuardaigh foirne... team_kind = Cuardaigh foirne
code_kind = Cód cuardaigh... code_kind = Cód cuardaigh
code_search_unavailable = Níl cuardach cód ar fáil faoi láthair. Déan teagmháil le riarthóir an láithreáin. code_search_unavailable = Níl cuardach cód ar fáil faoi láthair. Déan teagmháil le riarthóir an láithreáin.
package_kind = Cuardaigh pacáistí... package_kind = Cuardaigh pacáistí
project_kind = Cuardaigh tionscadail... project_kind = Cuardaigh tionscadail
branch_kind = Cuardaigh brainsí... branch_kind = Cuardaigh brainsí
commit_kind = Cuardaigh tiomáintí... commit_kind = Cuardaigh tiomáintí
runner_kind = Cuardaigh reathaithe... runner_kind = Cuardaigh reathaithe
no_results = Níl aon torthaí meaitseála le fáil. no_results = Níl aon torthaí meaitseála le fáil.
issue_kind = Saincheisteanna cuardaigh... issue_kind = Saincheisteanna cuardaigh
pull_kind = Cuardaigh iarratais tarraingthe... pull_kind = Cuardaigh iarratais tarraingthe
keyword_search_unavailable = Níl cuardach de réir eochairfhocal ar fáil faoi láthair. Déan teagmháil le riarthóir an láithreáin. keyword_search_unavailable = Níl cuardach de réir eochairfhocal ar fáil faoi láthair. Déan teagmháil le riarthóir an láithreáin.
[aria] [aria]
@ -507,12 +507,12 @@ avatar = Abhatár
ssh_gpg_keys = Eochracha SSH/GPG ssh_gpg_keys = Eochracha SSH/GPG
applications = Iarratais applications = Iarratais
repos = Stórais repos = Stórais
delete = Scrios Cuntas delete = Scrios cuntas
twofa = Fíordheimhniú Dhá Fachtóir (TOTP) twofa = Fíordheimhniú Dhá Fachtóir (TOTP)
organization = Eagraíochtaí organization = Eagraíochtaí
uid = UID uid = UID
webauthn = Fíordheimhniú Dhá-Fachtóir (Eochracha Slándála) webauthn = Fíordheimhniú Dhá-Fachtóir (Eochracha Slándála)
public_profile = Próifíl Phoiblí public_profile = Próifíl phoiblí
location_placeholder = Comhroinn do shuíomh thart le daoine eile location_placeholder = Comhroinn do shuíomh thart le daoine eile
full_name = Ainm Iomlán full_name = Ainm Iomlán
website = Láithreán Gréasáin website = Láithreán Gréasáin

View file

@ -196,29 +196,29 @@ link_modal.paste_reminder = Consello: Coa URL no portapapeis, podes pegala direc
[search] [search]
search = Buscar... search = Buscar...
type_tooltip = Tipo de procura type_tooltip = Tipo de procura
repo_kind = Buscar repositorios... repo_kind = Buscar repositorios
user_kind = Buscar usuarios... user_kind = Buscar usuarios
regexp = RegExp regexp = RegExp
regexp_tooltip = Interpretar o termo da procura como expresión regular regexp_tooltip = Interpretar o termo da procura como expresión regular
org_kind = Procurar organizacións... org_kind = Procurar organizacións
team_kind = Procurar equipos... team_kind = Procurar equipos
code_kind = Procurar código... code_kind = Procurar código
code_search_unavailable = A procura de código non está dispoñible neste momento. Por favor contacte coa persoa responsable da administración da páxina. code_search_unavailable = A procura de código non está dispoñible neste momento. Por favor contacte coa persoa responsable da administración da páxina.
package_kind = Buscar paquetes... package_kind = Buscar paquetes
fuzzy = Difusa fuzzy = Difusa
fuzzy_tooltip = Incluír resultados que tamén coincidan estreitamente co termo da procura fuzzy_tooltip = Incluír resultados que tamén coincidan estreitamente co termo da procura
union = Palabras clave union = Palabras clave
union_tooltip = Incluír resultados correspondentes a calquera dal palabras clave separadas por espazos en branco union_tooltip = Incluír resultados correspondentes a calquera dal palabras clave separadas por espazos en branco
exact = Exacta exact = Exacta
exact_tooltip = Incluír só resultados correspondentes ao termo exacto da procura exact_tooltip = Incluír só resultados correspondentes ao termo exacto da procura
issue_kind = Procurar incidencias... issue_kind = Procurar incidencias
project_kind = Buscar proxectos... project_kind = Buscar proxectos
branch_kind = Buscar ramas... branch_kind = Buscar ramas
no_results = Non se atoparon resultados coincidentes. no_results = Non se atoparon resultados coincidentes.
keyword_search_unavailable = A busca por palabra clave non está dispoñible actualmente. Póñase en contacto co administrador do sitio. keyword_search_unavailable = A busca por palabra clave non está dispoñible actualmente. Póñase en contacto co administrador do sitio.
commit_kind = Buscar achegas... commit_kind = Buscar achegas
runner_kind = Buscar executores... runner_kind = Buscar executores
pull_kind = Buscar pulls... pull_kind = Buscar pulls
[startpage] [startpage]
platform = Multiplataforma platform = Multiplataforma
@ -229,6 +229,9 @@ license = Código aberto
lightweight_desc = Forgejo precisa duns requerimentos mínimos e pode funcionar nunha Raspberry Pi barata. Aforra enerxía na túa máquina! lightweight_desc = Forgejo precisa duns requerimentos mínimos e pode funcionar nunha Raspberry Pi barata. Aforra enerxía na túa máquina!
lightweight = Lixeiro lightweight = Lixeiro
platform_desc = Forgejo funciona en sistemas operativos libres como Linux e FreeBSD, como tamén en diferentes arquitecturas CPU. Escolle a túa prefereida!
license_desc = Vai a <a target="_blank" rel="noopener noreferrer" href="%[1]s">Forgejo</a>! Únete e <a target="_blank" rel="noopener noreferrer" href="%[2]s">colabora</a> para facer este proxecto incluso mellor. Non teñas vergoña en convertirte en colaboradora!
[error] [error]
occurred = Ocorreu un erro occurred = Ocorreu un erro
missing_csrf = Solicitude incorrecta: non hai ningún token CSRF presente missing_csrf = Solicitude incorrecta: non hai ningún token CSRF presente
@ -296,6 +299,18 @@ domain = Dominio do servidor
ssh_port = Porto do servidor SSH ssh_port = Porto do servidor SSH
require_db_desc = Forgejo precisa MySQL, PostgreSQL, SQLite3 ou TiDB (protocolo MySQL). require_db_desc = Forgejo precisa MySQL, PostgreSQL, SQLite3 ou TiDB (protocolo MySQL).
docker_helper = Se Forgejo está correndo dentro de Docker, por favor le a <a target="_blank" rel="noopener noreferrer" href="%s">documentación</a> antes de cambiar algunha configuración.
host = Servidor
lfs_path_helper = Os arquivos trackeados por Git LFS gárdanse neste directorio. Deixao en branco para deshabilitar.
run_user_helper = O usuario do sistema operativo que executa Forgejo. Ten en conta que este usuario debe poder acceder á raíz do repositorio.
domain_helper = Dominio ou enderezo do servidor.
ssh_port_helper = Número do porto que se usa para o servidor SSH. Déixao en branco para deshabilitar o servidor SSH.
smtp_from_helper = Enderezo email que usa Forgejo. Podes poñer simplemente un email ou usar o formato "Nome" <email@exemplo.com>.
register_confirm = Esixir a confirmación do email para rexistrarse
mail_notify = Permitir notificacións por email
server_service_title = Configuración do servidor e de servizos de terceiros
offline_mode = Habilitar o modo local
[repo] [repo]
sync_fork.branch_behind_few = Esta rama ten %d achegas por detrás de %s sync_fork.branch_behind_few = Esta rama ten %d achegas por detrás de %s
sync_fork.button = Sincronizar sync_fork.button = Sincronizar

View file

@ -1,6 +1,3 @@
[common] [common]
webauthn_error_unable_to_process = שרת זה נכשל בעיבוד בקשתך. webauthn_error_unable_to_process = שרת זה נכשל בעיבוד בקשתך.
help = עזרה help = עזרה
@ -150,24 +147,24 @@ union = מילות מפתח
exact = מדויק exact = מדויק
exact_tooltip = תוצאות יתאימו במדויק לתוכן תיבת החיפוש exact_tooltip = תוצאות יתאימו במדויק לתוכן תיבת החיפוש
regexp = רג'קס regexp = רג'קס
user_kind = חיפוש אנשים... user_kind = חיפוש אנשים
code_kind = חיפוש קוד... code_kind = חיפוש קוד
team_kind = חיפוש צוותים... team_kind = חיפוש צוותים
no_results = לא נמצאו תוצאות. no_results = לא נמצאו תוצאות.
union_tooltip = תוצאות יכללו לפחות מילת מפתח אחת; אפשר להפריד מילות מפתח עם רווחים union_tooltip = תוצאות יכללו לפחות מילת מפתח אחת; אפשר להפריד מילות מפתח עם רווחים
org_kind = חיפוש ארגונים... org_kind = חיפוש ארגונים
package_kind = חיפוש חבילות... package_kind = חיפוש חבילות
project_kind = חיפוש פרוייקטים... project_kind = חיפוש פרוייקטים
branch_kind = חיפוש ענפים... branch_kind = חיפוש ענפים
commit_kind = חיפוש קומיטים... commit_kind = חיפוש קומיטים
issue_kind = חיפוש סוגיות... issue_kind = חיפוש סוגיות
fuzzy_tooltip = תוצאות יתאימו לתוכן תיבת החיפוש בקירוב; מומלץ כנגד שגיאות כתיב fuzzy_tooltip = תוצאות יתאימו לתוכן תיבת החיפוש בקירוב; מומלץ כנגד שגיאות כתיב
repo_kind = חיפוש קרפיפים... repo_kind = חיפוש קרפיפים
code_search_by_git_grep = תוצאות החיפוש יוצרו על ידי "git grep"; יכול להיות שיתקבלו תוצאות טובות יותר אם מנהלי המערכת יפעילו את המפתחן. code_search_by_git_grep = תוצאות החיפוש יוצרו על ידי "git grep"; יכול להיות שיתקבלו תוצאות טובות יותר אם מנהלי המערכת יפעילו את המפתחן.
runner_kind = חיפוש מריצים... runner_kind = חיפוש מריצים
keyword_search_unavailable = חיפוש מילות מפתח לא זמין. נא לדווח למנהלי המערכת. keyword_search_unavailable = חיפוש מילות מפתח לא זמין. נא לדווח למנהלי המערכת.
code_search_unavailable = חיפוש קוד לא זמין. נא לדווח למנהלי המערכת. code_search_unavailable = חיפוש קוד לא זמין. נא לדווח למנהלי המערכת.
pull_kind = חיפוש בקשות מיזוג... pull_kind = חיפוש בקשות מיזוג
[heatmap] [heatmap]
number_of_contributions_in_the_last_12_months = % תרומות ב־12 החודשים האחרונים number_of_contributions_in_the_last_12_months = % תרומות ב־12 החודשים האחרונים
@ -385,6 +382,9 @@ account_activated = חשבונך הופעל
resent_limit_prompt = כבר ביקשת מייל אימות בשלושת הדקות האחרונות. נא לחכות ולנסות שוב. resent_limit_prompt = כבר ביקשת מייל אימות בשלושת הדקות האחרונות. נא לחכות ולנסות שוב.
has_unconfirmed_mail = שלום %s, חשבונך משויך לכתובת אימייל לא מאומתת (<b>%s</b>). אם לא קיבלת הודעת אימות באימייל, או שאתה צריך חדשה, נא ללחוץ על הכפתור למטה. has_unconfirmed_mail = שלום %s, חשבונך משויך לכתובת אימייל לא מאומתת (<b>%s</b>). אם לא קיבלת הודעת אימות באימייל, או שאתה צריך חדשה, נא ללחוץ על הכפתור למטה.
confirmation_mail_sent_prompt = אימייל אימות חדש נשלח ל־<b>%s</b>. יש לבדוק את תיבת הדואר וללחוץ על הלינק תוך %s על מנת להשלים את רישום החשבון. אם כתובת המייל שגוייה, אפשר להיכנס לחשבון ולבקש דוא"ל אימות לכתובת אחרת.
reset_password_mail_sent_prompt = אימייל אימות חדש נשלח ל־<b>%s</b>. יש לבדוק את תיבת הדואר וללחוץ על הלינק תוך %s על מנת להשלים את רישום החשבון.
[settings] [settings]
key_content = תוכן key_content = תוכן
principal_content = תוכן principal_content = תוכן
@ -469,7 +469,7 @@ uploaded_avatar_not_a_image = הקובץ שהועלה לא תמונה.
[repo] [repo]
new_advanced = הגדרות מתקדמות new_advanced = הגדרות מתקדמות
new_advanced_expand = new_advanced_expand =
owner = בעלים owner = בעלים
repo_name = שם הקרפיף repo_name = שם הקרפיף
repo_name_helper = שמות קרפיפים טובים הם זכירים, קצרים וייחודיים. repo_name_helper = שמות קרפיפים טובים הם זכירים, קצרים וייחודיים.
@ -662,6 +662,10 @@ issues.label_archive = לארכיון
issues.label_archived_filter = הצגת תוויות מהארכיון issues.label_archived_filter = הצגת תוויות מהארכיון
issues.label_archive_tooltip = תוויות בארכיון לא מוצעות בחיפוש על־בסיס תווית כברירת מחדל. issues.label_archive_tooltip = תוויות בארכיון לא מוצעות בחיפוש על־בסיס תווית כברירת מחדל.
issues.deleted_milestone = נמחק
issues.deleted_project = נמחק
issues.self_assign_at = `שייךה עצמית %s`
[translation_meta] [translation_meta]
test = ואהבת לרעך כמוך test = ואהבת לרעך כמוך

View file

@ -39,4 +39,170 @@ organization = संगठन
mirror = छवि mirror = छवि
settings = सेटिंग्स settings = सेटिंग्स
your_settings = आपकी सेटिंग्स your_settings = आपकी सेटिंग्स
return_to_forgejo = फ़ोर्जेगो पे वापस जाएं return_to_forgejo = फ़ोर्जेगो पे वापस जाएं
toggle_menu = चालू-बंद करें
access_token = एक्सेस टोकन
webauthn_insert_key = अपनी सिक्योरिटी की डालें
webauthn_sign_in = सिक्योरिटी की का बटन दबाएं, नहीं है तो फिर से प्लग करें।
webauthn_press_button = अपनी सिक्योरिटी की पर बटन दबाएं…
webauthn_use_twofa = अपने फ़ोन से दो फैक्टर कोड लाएं
webauthn_error = सिक्योरिटी की रीड नहीं हो पा रही।
webauthn_unsupported_browser = आपका ब्राउज़र वेबौथ सपोर्ट नहीं करता।
webauthn_error_unknown = कोई अंजान एरर हुई, फिर से कोशिश करें।
webauthn_error_insecure = वेबौथ पर सिर्फ सुरक्षित कनेक्शन हो. HTTP टेस्ट के लिए ओरिजिन “लोकलहोस्ट” या “127.0.0.1”
webauthn_error_unable_to_process = सर्वर आपकी रिक्वेस्ट प्रोसेस नहीं कर पाया।
webauthn_error_duplicated = सिक्योरिटी की इस रिक्वेस्ट के लिए नहीं है। कृपया देखें की पहले से रजिस्टर्ड तो नहीं।
webauthn_error_empty = कृपया इस चाभी का नाम रखें।
webauthn_error_timeout = आपकी की पढ़ने से पहले टाइमआउट हो गया। पृष्ट रीलोड करें और फिर कोशिश करें।
new_mirror = नया मिरर
new_fork = नयी रिपॉजिटरी फोर्क
new_project = नया प्रोजेक्ट
new_project_column = नया स्तम्भ
admin_panel = वेबसाइट प्रबंधन
your_profile = प्रोफाइल
your_starred = सीतारित
new_repo.title = नई रिपॉजिटरी
new_migrate.title = नया प्रवासन
new_org.title = नई संस्था
new_repo.link = नई रिपॉजिटरी
new_migrate.link = नया प्रवासन
new_org.link = नई संस्था
all = सब
sources = स्रोत
mirrors = मिर्रोर्स
collaborative = सहयोगी
forks = फोर्क्स
activities = गतिविधियाँ
pull_requests = पुल्ल करें
issues = इश्यूज
milestones = महत्वपूर्ण
ok = ओके
cancel = रद्द करें
retry = फिर से करें
rerun = फिर से
rerun_all = फिर से सारे काम करें
save = सेव करें
add = जोड़ें
add_all = सब जोड़ें
remove = हटाएं
remove_all = सारा हटाएं
remove_label_str = हटाएं आइटम “%s”
edit = संपादित करना
view = देखें
test = टेस्ट
enabled = सक्षम किया गया
disabled = असक्षम किया गया
locked = लॉक्ड
copy = कॉपी
copy_generic = क्लिपबोर्ड पर कॉपी करें
copy_url = URL कॉपी करें
copy_hash = कॉपी हैश
copy_path = राह कॉपी करें
copy_content = विषय-वस्तु कॉपी करें
copy_branch = शाखा नाम कॉपी करें
copy_success = कॉपी हो गया!
copy_error = कॉपी नहीं हुआ
copy_type_unsupported = इस तरह की फाइल कॉपी नहीं होगी
write = लिखें
preview = पूर्वावलोकन
loading = लोड हो रहा…
error = त्रुटि
error404 = जो पृष्ट आप देखना चाहते हैं या <strong> तो है ही नहीं </strong>, <strong> हटा दिया गया </strong> या <strong> आप देखने को अधिकृत नहीं </strong> की देख पाएं।
error413 = आपका कोटा ख़तम हो गया।
go_back = वापस जाएं
invalid_data = डाटा मान्य नहीं: %v
never = कभी नहीं
unknown = अनजान
rss_feed = RSS फीड
pin = पिन
unpin = पिन हटाएं
artifacts = पुरावशेष
confirm_delete_artifact = क्या आप ये पुरावशेष हटाना चाहते हैं "%s" ?
archived = संग्रहीत
concept_system_global = वैश्विक
concept_user_individual = एकल
concept_code_repository = रिपॉजिटरी
concept_user_organization = संस्था
show_timestamps = समय-मोहर दिखाएं
show_log_seconds = सेकंड दिखाएं
show_full_screen = पूरी स्क्रीन पे दिखाएं
download_logs = लॉग डाउनलोड करें
confirm_delete_selected = ये सारे डिलीट कर दें?
name = नाम
value = मूल्य
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.public = सार्वजनिक
filter.private = निजी
[search]
search = ढूंढें…
type_tooltip = ढूंढ़ने का जैसे
fuzzy = फ़ज़्ज़ी
fuzzy_tooltip = जो उपाय ढूंढे गए टर्म से जुड़े हैं भी दिखाएं
union = केंद्र
union_tooltip = वो उपाय भी दिखाएं जो जगह छोढ़े कीवर्ड्स से मिलते हैं
exact = एकदम
exact_tooltip = सिर्फ वो रिजल्ट दिखाएं जो एकदम सर्च टर्म से मिलते हैं
regexp = रेगएक्सप्
regexp_tooltip = व्याख्या करें सर्च टर्म की व्यावहारिक तरीके से
repo_kind = रेपो ढूंढें…
user_kind = यूजर ढूंढें…
org_kind = संस्था ढूंढें…
team_kind = टीम ढूंढें…
code_kind = कोड ढूंढें…
code_search_unavailable = कोड ढूंढ़ना अभी नहीं हो सकता। कृपया एडमिनिस्ट्रेटर से बात करें।
package_kind = पैकेजेस ढूंढें…
project_kind = प्रोजेक्ट्स ढूंढें…
branch_kind = शाखा ढूंढें…
commit_kind = कमिट्स ढूढें…
runner_kind = रनर्स ढूंढें…
no_results = मिलता उपाय नहीं है।
issue_kind = इश्यूज ढूंढें…
pull_kind = पुल्स ढूंढें…
keyword_search_unavailable = कीवर्ड से ढूंढ़ना अभी नहीं हो सकता। कृपया एडमिनिस्ट्रेटर से बात करें।
[aria]
navbar = संचालन बार
footer = फुटर
footer.software = इस सॉफ्टवेयर के बारे में
footer.links = संयोजक
[heatmap]
number_of_contributions_in_the_last_12_months = %s योगदान पिछले 12 महीनो में
contributions_zero = कोई योगदान नहीं
contributions_format = {योगदान} आज {दिन} {महीना} {साल}
contributions_one = योगदान
contributions_few = योगदानों
less = कम
more = ज़्यादा
[editor]
buttons.heading.tooltip = शीर्षक जोड़ें
buttons.bold.tooltip = बोल्ड लेख जोड़ें
buttons.italic.tooltip = इटैलिक लेख जोड़ें
buttons.quote.tooltip = पाठ जोड़ें
buttons.code.tooltip = कोड जोड़ें
buttons.link.tooltip = संयोजक जोड़ें
buttons.list.unordered.tooltip = बुलेट लिस्ट जोड़ें
buttons.list.ordered.tooltip = अंकित लिस्ट जोड़ें
buttons.list.task.tooltip = कार्यों की सूचि जोड़ें
buttons.mention.tooltip = यूजर या टीम को ज़ाहिर करें
buttons.ref.tooltip = इशू या पुल्ल निवेदन ज़ाहिर करें
buttons.switch_to_legacy.tooltip = पुराना एडिटर इस्तेमाल करें
buttons.enable_monospace_font = एकसमान रिक्ति फ़ॉन्ट चालू करें
buttons.disable_monospace_font = एकसमान रिक्ति फ़ॉन्ट बंद करें
buttons.indent.tooltip = चीज़ों को एक लेवल नेस्ट करें
buttons.unindent.tooltip = चीज़ों को एक लेवल नेस्ट से निकालें
buttons.new_table.tooltip = टेबल जोड़ें
table_modal.header = टेबल जोड़ें
table_modal.placeholder.header = शीर्षक
table_modal.placeholder.content = विषयवस्तु

View file

@ -330,7 +330,7 @@ code_no_results=Nincs találat a keresési kifejezésedre.
code_last_indexed_at=Utoljára indexelve: %s code_last_indexed_at=Utoljára indexelve: %s
[auth] [auth]
create_new_account=Regisztráció create_new_account=Fiók regisztrálása
register_helper_msg=Van már felhasználói fiókja? Jelentkezzen be! register_helper_msg=Van már felhasználói fiókja? Jelentkezzen be!
social_register_helper_msg=Van már felhasználói fiókja? Csatlakoztassa most! social_register_helper_msg=Van már felhasználói fiókja? Csatlakoztassa most!
disable_register_prompt=Regisztráció le van tiltva. Kérjük, lépjen kapcsolatba az oldal adminisztrátorával. disable_register_prompt=Regisztráció le van tiltva. Kérjük, lépjen kapcsolatba az oldal adminisztrátorával.
@ -532,8 +532,8 @@ password_change_disabled=A nem helyi felhasználók nem frissíthetik jelszavuka
emails=E-mail címek emails=E-mail címek
manage_emails=E-mail címek kezelése manage_emails=E-mail címek kezelése
manage_themes=Válassza ki az alapértelmezett témát manage_themes=Alapértelmezett téma
manage_openid=OpenID címek kezelése manage_openid=OpenID címek
theme_desc=Ez lesz az alapértelmezett téma az oldalon. theme_desc=Ez lesz az alapértelmezett téma az oldalon.
primary=Elsődleges primary=Elsődleges
activated=Aktivált activated=Aktivált
@ -1779,14 +1779,14 @@ directory = Könyvtár
[search] [search]
search = Keresés... search = Keresés...
type_tooltip = Keresés típusa type_tooltip = Keresés típusa
code_kind = Kód keresése... code_kind = Kód keresése
code_search_unavailable = A kódban való keresés jelenleg nem elérhető. Kérem vegye fel a kapcsolatot az oldal adminisztrátorával. code_search_unavailable = A kódban való keresés jelenleg nem elérhető. Kérem vegye fel a kapcsolatot az oldal adminisztrátorával.
package_kind = Csomagok keresése... package_kind = Csomagok keresése
project_kind = Projektek keresése... project_kind = Projektek keresése
user_kind = Felhasználók keresése... user_kind = Felhasználók keresése
repo_kind = Tárak keresése... repo_kind = Tárak keresése
org_kind = Szervezetek keresése... org_kind = Szervezetek keresése
team_kind = Csapatok 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. 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... milestone_kind = Mérföldkövek keresése...
@ -1794,8 +1794,8 @@ fuzzy_tooltip = A keresési kifejezéshez hasonló találatok mutatása
fuzzy = Hasonlók fuzzy = Hasonlók
union = Kulcsszavakra union = Kulcsszavakra
union_tooltip = A szóközzel elválasztott kulcsszavak bármelyikét tartalmazó találatok mutatása union_tooltip = A szóközzel elválasztott kulcsszavak bármelyikét tartalmazó találatok mutatása
branch_kind = Ágak keresése... branch_kind = Ágak keresése
no_results = Nincsenek megfelelő találatok. no_results = Nincsenek megfelelő találatok.
issue_kind = Hibajegyek keresése... issue_kind = Hibajegyek keresése
exact_tooltip = Csak a keresési kifejezést pontosan tartalmazó találatok mutatása 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. keyword_search_unavailable = A kulcsszó alapú keresés jelenleg nem elérhető. Kérlek értesítsd az oldal rendszergazdáját.

View file

@ -206,9 +206,9 @@ email_title = Pengaturan email
smtp_from = Kirim Email Sebagai smtp_from = Kirim Email Sebagai
[home] [home]
uname_holder=Nama Pengguna atau Alamat Surel uname_holder=Nama pengguna atau alamat surel
password_holder=Kata Sandi password_holder=Kata Sandi
switch_dashboard_context=Alihkan Dasbor Konteks switch_dashboard_context=Alihkan dasbor konteks
my_repos=Repositori my_repos=Repositori
show_more_repos=Tampilkan repositori lainnya… show_more_repos=Tampilkan repositori lainnya…
collaborative_repos=Repositori Kolaboratif collaborative_repos=Repositori Kolaboratif
@ -236,7 +236,7 @@ org_no_results=Tidak ada organisasi yang cocok ditemukan.
code_no_results=Tidak ada kode sumber yang cocok dengan istilah yang anda cari. code_no_results=Tidak ada kode sumber yang cocok dengan istilah yang anda cari.
[auth] [auth]
create_new_account=Daftar Akun create_new_account=Daftar akun
register_helper_msg=Sudah memiliki akun? Masuk sekarang! register_helper_msg=Sudah memiliki akun? Masuk sekarang!
social_register_helper_msg=Sudah memiliki akun? Hubungkan sekarang! social_register_helper_msg=Sudah memiliki akun? Hubungkan sekarang!
disable_register_prompt=Maaf, pendaftaran telah dinonaktifkan. Silakan hubungi administrator situs. disable_register_prompt=Maaf, pendaftaran telah dinonaktifkan. Silakan hubungi administrator situs.
@ -269,11 +269,11 @@ twofa_passcode_incorrect=Kata sandi Anda salah. Jika Anda salah tempatkan perang
twofa_scratch_token_incorrect=Kode coretan anda tidak tepat. twofa_scratch_token_incorrect=Kode coretan anda tidak tepat.
login_userpass=Masuk login_userpass=Masuk
tab_openid=OpenID tab_openid=OpenID
oauth_signup_tab=Daftar Akun Baru oauth_signup_tab=Daftar akun baru
oauth_signup_submit=Akun Lengkap oauth_signup_submit=Akun lengkap
oauth_signin_tab=Tautkan ke Akun yang Tersedia oauth_signin_tab=Tautkan ke akun yang tersedia
oauth_signin_title=Masuk untuk Izinkan Akun Tertaut oauth_signin_title=Masuk untuk izinkan akun tertaut
oauth_signin_submit=Taut Akun oauth_signin_submit=Taut akun
openid_connect_submit=Sambungkan openid_connect_submit=Sambungkan
openid_connect_title=Sambungkan ke akun yang sudah ada openid_connect_title=Sambungkan ke akun yang sudah ada
openid_connect_desc=OpenID URI yang dipilih tak dikenal. Asosiasikan dengan akun baru disini. openid_connect_desc=OpenID URI yang dipilih tak dikenal. Asosiasikan dengan akun baru disini.
@ -398,14 +398,14 @@ avatar=Avatar
ssh_gpg_keys=Kunci SSH / GPG ssh_gpg_keys=Kunci SSH / GPG
social=Akun Sosial social=Akun Sosial
applications=Aplikasi applications=Aplikasi
orgs=Kelola organisasi orgs=Organisasi
repos=Repositori repos=Repositori
delete=Hapus Akun delete=Hapus akun
twofa=Otentikasi Dua-Faktor twofa=Otentikasi Dua-Faktor
account_link=Akun Tertaut account_link=Akun Tertaut
organization=Organisasi organization=Organisasi
public_profile=Profil Publik public_profile=Profil publik
password_username_disabled=Pengguna non-lokal tidak diizinkan untuk mengubah nama pengguna mereka. Silakan hubungi administrator sistem anda untuk lebih lanjut. password_username_disabled=Pengguna non-lokal tidak diizinkan untuk mengubah nama pengguna mereka. Silakan hubungi administrator sistem anda untuk lebih lanjut.
full_name=Nama Lengkap full_name=Nama Lengkap
website=Situs Web website=Situs Web
@ -438,8 +438,8 @@ password_change_disabled=Pengguna non-lokal tidak dapat mengganti kata sandi mer
emails=Alamat Surel emails=Alamat Surel
manage_emails=Kelola Alamat Surel manage_emails=Kelola Alamat Surel
manage_themes=Pilih tema default manage_themes=Tema default
manage_openid=Kelola alamat OpenID manage_openid=Alamat OpenID
theme_desc=Ini akan menjadi tema asal Anda pada keseluruhan situs. theme_desc=Ini akan menjadi tema asal Anda pada keseluruhan situs.
primary=Utama primary=Utama
activated=Diaktifkan activated=Diaktifkan
@ -1484,10 +1484,10 @@ search = Cari...
type_tooltip = Tipe pencarian type_tooltip = Tipe pencarian
fuzzy_tooltip = Termasuk juga hasil yang mendekati kata pencarian fuzzy_tooltip = Termasuk juga hasil yang mendekati kata pencarian
exact_tooltip = Hanya menampilkan hasil yang cocok dengan istilah pencarian exact_tooltip = Hanya menampilkan hasil yang cocok dengan istilah pencarian
repo_kind = Cari repo... repo_kind = Cari repo
user_kind = Telusuri pengguna... user_kind = Telusuri pengguna
org_kind = Cari organisasi... org_kind = Cari organisasi
team_kind = Cari tim... team_kind = Cari tim
code_kind = Cari kode... code_kind = Cari kode
code_search_unavailable = Pencarian kode saat ini tidak tersedia. Silahkan hubungi administrator. code_search_unavailable = Pencarian kode saat ini tidak tersedia. Silahkan hubungi administrator.
branch_kind = Cari cabang... branch_kind = Cari cabang

View file

@ -223,7 +223,7 @@ default_keep_email_private.description=Fela sjálfgefið netföng nýrra notenda
no_reply_address_helper=Lén fyrir notendur með falið netfang. Til dæmis notandanafnið „joe“ verður skráð í Git sem „joe@noreply.example.org“ ef falið tölvupóstlén er stillt á „noreply.example.org“. no_reply_address_helper=Lén fyrir notendur með falið netfang. Til dæmis notandanafnið „joe“ verður skráð í Git sem „joe@noreply.example.org“ ef falið tölvupóstlén er stillt á „noreply.example.org“.
[home] [home]
uname_holder=Notandanafn eða Netfang uname_holder=Notandanafn eða netfang
password_holder=Lykilorð password_holder=Lykilorð
my_repos=Hugbúnaðarsöfn my_repos=Hugbúnaðarsöfn
show_more_repos=Sýna fleiri hugbúnaðarsöfn… show_more_repos=Sýna fleiri hugbúnaðarsöfn…
@ -255,7 +255,7 @@ org_no_results=Engar samsvarandi stofnanir fundust.
code_no_results=Enginn samsvarandi frumkóði fannst eftur þínum leitarorðum. code_no_results=Enginn samsvarandi frumkóði fannst eftur þínum leitarorðum.
[auth] [auth]
create_new_account=Skrá Notanda create_new_account=Skrá notanda
register_helper_msg=Ertu nú þegar með notanda? Skráðu þig inn núna! register_helper_msg=Ertu nú þegar með notanda? Skráðu þig inn núna!
social_register_helper_msg=Ertu nú þegar með reikning? Tengdu hann núna! social_register_helper_msg=Ertu nú þegar með reikning? Tengdu hann núna!
manual_activation_only=Hafðu samband við stjórnanda vefsvæðisins til að ljúka virkjun. manual_activation_only=Hafðu samband við stjórnanda vefsvæðisins til að ljúka virkjun.
@ -276,13 +276,13 @@ verify=Staðfesta
scratch_code=Skrapkóði scratch_code=Skrapkóði
use_scratch_code=Nota skrapkóða use_scratch_code=Nota skrapkóða
twofa_scratch_token_incorrect=Skrapkóði þinn er rangur. twofa_scratch_token_incorrect=Skrapkóði þinn er rangur.
login_userpass=Skrá Inn login_userpass=Skrá inn
tab_openid=OpenID tab_openid=OpenID
oauth_signup_tab=Skrá Nýjan Notanda oauth_signup_tab=Skrá nýjan notanda
oauth_signup_title=Klára Nýjum Notanda oauth_signup_title=Klára nýjum notanda
oauth_signup_submit=Klára Notanda oauth_signup_submit=Klára notanda
oauth_signin_tab=Tengja Núverandi Reikning oauth_signin_tab=Tengja núverandi reikning
oauth_signin_submit=Tengja Notanda oauth_signin_submit=Tengja notanda
openid_connect_submit=Tengjast openid_connect_submit=Tengjast
openid_register_title=Skrá nýjan notanda openid_register_title=Skrá nýjan notanda
disable_forgot_password_mail=Endurheimting reiknings er óvirk vegna þess að enginn tölvupóstur er uppsettur. Vinsamlegast hafðu samband við síðustjórann þinn. disable_forgot_password_mail=Endurheimting reiknings er óvirk vegna þess að enginn tölvupóstur er uppsettur. Vinsamlegast hafðu samband við síðustjórann þinn.
@ -434,15 +434,15 @@ avatar=Notandamynd
ssh_gpg_keys=SSH og GPG Lyklar ssh_gpg_keys=SSH og GPG Lyklar
social=Félagsreikningar social=Félagsreikningar
applications=Forrit applications=Forrit
orgs=Stjórna Stofnunum orgs=Stofnanir
repos=Hugbúnaðarsöfn repos=Hugbúnaðarsöfn
delete=Eyða Reikningi delete=Eyða reikningi
twofa=Tvíþætt Auðkenning twofa=Tvíþætt Auðkenning
account_link=Tengdir Reikningar account_link=Tengdir Reikningar
organization=Stofnanir organization=Stofnanir
webauthn=Öryggislyklar webauthn=Öryggislyklar
public_profile=Opinber Notandasíða public_profile=Opinber notandasíða
password_username_disabled=Notendum utan staðarins er ekki heimilt að breyta notendanafni sínu. Vinsamlegast hafðu samband við síðustjórann þinn til að fá frekari upplýsingar. password_username_disabled=Notendum utan staðarins er ekki heimilt að breyta notendanafni sínu. Vinsamlegast hafðu samband við síðustjórann þinn til að fá frekari upplýsingar.
full_name=Fullt Nafn full_name=Fullt Nafn
website=Vefsíða website=Vefsíða

View file

@ -423,7 +423,7 @@ allow_password_change=Richiede all'utente di cambiare la password (scelta consig
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. 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 active_your_account=Attiva il tuo account
account_activated=L'account è stato attivato account_activated=L'account è stato attivato
prohibit_login=L'accesso è proibito prohibit_login=L'account è sospeso
resent_limit_prompt=Hai già richiesto un'e-mail d'attivazione recentemente. Si prega di attenere 3 minuti e poi riprovare. resent_limit_prompt=Hai già richiesto un'e-mail d'attivazione recentemente. Si prega di attenere 3 minuti e poi riprovare.
has_unconfirmed_mail=Ciao %s, hai un indirizzo di posta elettronica non confermato (<b>%s</b>). Se non hai ricevuto una e-mail di conferma o vuoi riceverla nuovamente, fare clic sul pulsante qui sotto. has_unconfirmed_mail=Ciao %s, hai un indirizzo di posta elettronica non confermato (<b>%s</b>). Se non hai ricevuto una e-mail di conferma o vuoi riceverla nuovamente, fare clic sul pulsante qui sotto.
resend_mail=Clicca qui per inviare nuovamente l'e-mail di attivazione resend_mail=Clicca qui per inviare nuovamente l'e-mail di attivazione
@ -742,7 +742,7 @@ avatar=Avatar
ssh_gpg_keys=Chiavi SSH / GPG ssh_gpg_keys=Chiavi SSH / GPG
social=Account Sociali social=Account Sociali
applications=Applicazioni applications=Applicazioni
orgs=Gestisci le organizzazioni orgs=Organizzazioni
repos=Repositori repos=Repositori
delete=Elimina account delete=Elimina account
twofa=Verifica in due passaggi twofa=Verifica in due passaggi
@ -803,8 +803,8 @@ password_change_disabled=Gli utenti non locali non possono cambiare la loro pass
emails=Indirizzi email emails=Indirizzi email
manage_emails=Gestisci indirizzi email manage_emails=Gestisci indirizzi email
manage_themes=Seleziona il tema predefinito manage_themes=Tema predefinito
manage_openid=Gestisci gli indirizzi OpenID manage_openid=Indirizzi OpenID
theme_desc=Questo sarà il tuo tema di predefinito in tutto il sito. theme_desc=Questo sarà il tuo tema di predefinito in tutto il sito.
primary=Primario primary=Primario
activated=Attivato activated=Attivato
@ -4014,25 +4014,25 @@ type_tooltip = Tipo ricerca
search = Cerca… search = Cerca…
fuzzy = Approssimativa fuzzy = Approssimativa
match = Precisa match = Precisa
org_kind = Cerca organizzazioni... org_kind = Cerca organizzazioni
package_kind = Ricerca pacchetti... package_kind = Ricerca pacchetti
code_search_unavailable = La ricerca del codice non è attualmente disponibile. Contatta l'amministratorə del sito. code_search_unavailable = La ricerca del codice non è attualmente disponibile. Contatta l'amministratorə del sito.
code_kind = Cerca nel codice... code_kind = Cerca nel codice
team_kind = Cerca team... team_kind = Cerca team
code_search_by_git_grep = I risultati della ricerca del codice sono forniti da "git grep". Potrebbero esserci risultati migliori se l'amministratore del sito avesse abilitato l'indicizzatore del codice. code_search_by_git_grep = I risultati della ricerca del codice sono forniti da "git grep". Potrebbero esserci risultati migliori se l'amministratore del sito avesse abilitato l'indicizzatore del codice.
project_kind = Ricerca progetti... project_kind = Ricerca progetti
commit_kind = Ricerca commit... commit_kind = Ricerca commit
branch_kind = Ricerca rami... branch_kind = Ricerca rami
no_results = Non è stato trovato alcun risultato. no_results = Non è stato trovato alcun risultato.
keyword_search_unavailable = La ricerca per parole chiave non è attualmente disponibile. Contatta l'amministratore del sito. keyword_search_unavailable = La ricerca per parole chiave non è attualmente disponibile. Contatta l'amministratore del sito.
runner_kind = Ricerca esecutori... runner_kind = Ricerca esecutori
match_tooltip = Includi solo risultati che corrispondono precisamente al termine di ricerca match_tooltip = Includi solo risultati che corrispondono precisamente al termine di ricerca
fuzzy_tooltip = Includi anche risultati che corrispondono approssimativamente al termine di ricerca fuzzy_tooltip = Includi anche risultati che corrispondono approssimativamente al termine di ricerca
user_kind = Cerca utenti... user_kind = Cerca utenti
repo_kind = Cerca repo... repo_kind = Cerca repo
exact_tooltip = Includi solo i risultati che corrispondono esattamente al termine di ricerca exact_tooltip = Includi solo i risultati che corrispondono esattamente al termine di ricerca
issue_kind = Cerca segnalazioni... issue_kind = Cerca segnalazioni
pull_kind = Cerca richieste... pull_kind = Cerca richieste
exact = Esatto exact = Esatto
milestone_kind = Ricerca tappe... milestone_kind = Ricerca tappe...
regexp_tooltip = Interpreta i termini di ricerca come un'espressione regolare regexp_tooltip = Interpreta i termini di ricerca come un'espressione regolare

View file

@ -250,7 +250,7 @@ err_empty_db_path=SQLite3のデータベースパスを空にすることはで
no_admin_and_disable_registration=管理者アカウントを作成せずに、セルフ登録を無効にすることはできません。 no_admin_and_disable_registration=管理者アカウントを作成せずに、セルフ登録を無効にすることはできません。
err_empty_admin_password=管理者パスワードは空にできません。 err_empty_admin_password=管理者パスワードは空にできません。
err_empty_admin_email=管理者のメールアドレスは空にできません。 err_empty_admin_email=管理者のメールアドレスは空にできません。
err_admin_name_is_reserved=管理者のユーザー名が不正です。予約済みのユーザー名です err_admin_name_is_reserved=管理者のユーザー名が不正です。予約済みのユーザー名です
err_admin_name_pattern_not_allowed=管理者のユーザー名が不正です。 予約済みのパターンにマッチしています err_admin_name_pattern_not_allowed=管理者のユーザー名が不正です。 予約済みのパターンにマッチしています
err_admin_name_is_invalid=管理者のユーザー名が不正です err_admin_name_is_invalid=管理者のユーザー名が不正です
@ -1048,6 +1048,8 @@ keep_activity_private.description = <a href="%s">公開アクティビティ</a>
language.description = この言語はアカウントに保存され、ログイン後にデフォルトとして使用されます。 language.description = この言語はアカウントに保存され、ログイン後にデフォルトとして使用されます。
language.localization_project = Forgejo をあなたの言語に翻訳するのを手伝ってください。<a href="%s">詳細はこちら</a>。 language.localization_project = Forgejo をあなたの言語に翻訳するのを手伝ってください。<a href="%s">詳細はこちら</a>。
quota = クオータ
[repo] [repo]
new_repo_helper=リポジトリには、プロジェクトのすべてのファイルとリビジョン履歴が入ります。 すでにほかの場所でホストしていますか? <a href="%s">リポジトリを移行</a> もどうぞ。 new_repo_helper=リポジトリには、プロジェクトのすべてのファイルとリビジョン履歴が入ります。 すでにほかの場所でホストしていますか? <a href="%s">リポジトリを移行</a> もどうぞ。
owner=オーナー owner=オーナー
@ -3903,20 +3905,20 @@ submodule=サブモジュール
[search] [search]
search = 検索... search = 検索...
type_tooltip = 検索タイプ type_tooltip = 検索タイプ
org_kind = 組織の検索... org_kind = 組織を検索…
code_kind = コードの検索... code_kind = コードを検索…
fuzzy = あいまい fuzzy = あいまい
repo_kind = リポジトリの検索... repo_kind = リポジトリを検索…
code_search_unavailable = コード検索は現在利用できません。サイト管理者にお問い合わせください。 code_search_unavailable = コード検索は現在利用できません。サイト管理者にお問い合わせください。
branch_kind = ブランチの検索... branch_kind = ブランチを検索…
commit_kind = コミットの検索... commit_kind = コミットを検索…
user_kind = ユーザーの検索... user_kind = ユーザーを検索…
team_kind = チームの検索... team_kind = チームを検索…
code_search_by_git_grep = 現在のコード検索結果は「git grep」によって提供されます。サイト管理者がコード インデクサーを有効にすると、より良い結果が得られる可能性があります。 code_search_by_git_grep = 現在のコード検索結果は「git grep」によって提供されます。サイト管理者がコード インデクサーを有効にすると、より良い結果が得られる可能性があります。
package_kind = パッケージの検索... package_kind = パッケージを検索…
project_kind = プロジェクトの検索... project_kind = プロジェクトを検索…
keyword_search_unavailable = キーワードによる検索は現在ご利用いただけません。サイト管理者にお問い合わせください。 keyword_search_unavailable = キーワードによる検索は現在ご利用いただけません。サイト管理者にお問い合わせください。
runner_kind = ランナーの検索... runner_kind = ランナーを検索…
no_results = 一致する結果が見つかりませんでした。 no_results = 一致する結果が見つかりませんでした。
fuzzy_tooltip = 入力された語句に近いものも結果に含める fuzzy_tooltip = 入力された語句に近いものも結果に含める
match = 一致 match = 一致
@ -3924,8 +3926,8 @@ match_tooltip = 検索語句に厳密に一致するもののみ結果に含め
milestone_kind = マイルストーンを検索... milestone_kind = マイルストーンを検索...
union_tooltip = 空白で区切られたキーワードのいずれかに一致する結果を含める union_tooltip = 空白で区切られたキーワードのいずれかに一致する結果を含める
exact_tooltip = 検索語句と完全に一致する結果のみを含める exact_tooltip = 検索語句と完全に一致する結果のみを含める
issue_kind = イシューを検索... issue_kind = イシューを検索
pull_kind = プルを検索... pull_kind = プルを検索
exact = 完全一致 exact = 完全一致
regexp_tooltip = 検索語句を正規表現として解釈する regexp_tooltip = 検索語句を正規表現として解釈する
regexp = 正規表現 regexp = 正規表現

View file

@ -384,7 +384,7 @@ allow_password_change=사용자에게 비밀번호 변경을 요청 (권장됨)
reset_password_mail_sent_prompt=확인 메일이 <b>%s</b>로 전송되었습니다. 받은 편지함으로 도착한 메일을 %s 안에 확인해서 비밀번호 찾기 절차를 완료하십시오. reset_password_mail_sent_prompt=확인 메일이 <b>%s</b>로 전송되었습니다. 받은 편지함으로 도착한 메일을 %s 안에 확인해서 비밀번호 찾기 절차를 완료하십시오.
active_your_account=계정 활성화 active_your_account=계정 활성화
account_activated=계정이 활성화 되었습니다 account_activated=계정이 활성화 되었습니다
prohibit_login = prohibit_login =
resent_limit_prompt=활성화를 위한 이메일을 이미 전송했습니다. 3분 내로 이메일을 받지 못한 경우 재시도해주세요. resent_limit_prompt=활성화를 위한 이메일을 이미 전송했습니다. 3분 내로 이메일을 받지 못한 경우 재시도해주세요.
has_unconfirmed_mail=안녕하세요 %s, 이메일 주소(<b>%s</b>)가 확인되지 않았습니다. 확인 메일을 받으시지 못하겼거나 새로운 확인 메일이 필요하다면, 아래 버튼을 클릭해 재발송하실 수 있습니다. has_unconfirmed_mail=안녕하세요 %s, 이메일 주소(<b>%s</b>)가 확인되지 않았습니다. 확인 메일을 받으시지 못하겼거나 새로운 확인 메일이 필요하다면, 아래 버튼을 클릭해 재발송하실 수 있습니다.
resend_mail=여기를 눌러 확인 메일 재전송 resend_mail=여기를 눌러 확인 메일 재전송
@ -588,8 +588,8 @@ password_change_disabled=로컬 유저가 아닌 경우 Forgejo 웹 인터페이
emails=이메일 주소 emails=이메일 주소
manage_emails=이메일 주소 관리 manage_emails=이메일 주소 관리
manage_themes=기본 테마 선택 manage_themes=기본 테마
manage_openid=OpenID 주소 관리 manage_openid=OpenID 주소
theme_desc=이 테마가 사이트 전체 기본 테마가 됩니다. theme_desc=이 테마가 사이트 전체 기본 테마가 됩니다.
primary=대표 primary=대표
activated=활성화됨 activated=활성화됨
@ -1900,9 +1900,9 @@ runs.commit=커밋
[search] [search]
code_search_by_git_grep = 현재 코드 검색 결과는 "git grep"에 의해 제공됩니다.관리자가 코드 인덱서를 활성화하면 더 나은 결과가 제공될 수 있습니다. code_search_by_git_grep = 현재 코드 검색 결과는 "git grep"에 의해 제공됩니다.관리자가 코드 인덱서를 활성화하면 더 나은 결과가 제공될 수 있습니다.
branch_kind = 브랜치 검색... branch_kind = 브랜치 검색
keyword_search_unavailable = 지금은 키워드로 검색이 지원되지 않습니다. 사이트 관리자에게 문의하십시오. keyword_search_unavailable = 지금은 키워드로 검색이 지원되지 않습니다. 사이트 관리자에게 문의하십시오.
commit_kind = 커밋 검색... commit_kind = 커밋 검색
no_results = 일치하는 결과를 찾을 수 없습니다. no_results = 일치하는 결과를 찾을 수 없습니다.
search = 검색… search = 검색…
type_tooltip = 검색 타입 type_tooltip = 검색 타입
@ -1910,11 +1910,11 @@ fuzzy_tooltip = 검색어와 밀접하게 일치하는 결과도 포함
repo_kind = 저장소 검색… repo_kind = 저장소 검색…
user_kind = 사용자 검색… user_kind = 사용자 검색…
org_kind = 조직 검색… org_kind = 조직 검색…
team_kind = 팀 검색... team_kind = 팀 검색
code_kind = 코드 검색... code_kind = 코드 검색
code_search_unavailable = 코드 검색은 현재 허용되지 않았습니다. 사이트 관리자와 연락하세요. code_search_unavailable = 코드 검색은 현재 허용되지 않았습니다. 사이트 관리자와 연락하세요.
package_kind = 패키지 검색... package_kind = 패키지 검색
project_kind = 프로젝트 검색... project_kind = 프로젝트 검색
exact_tooltip = 검색어와 정확하게 일치하는 결과만 포함 exact_tooltip = 검색어와 정확하게 일치하는 결과만 포함
issue_kind = 이슈 검색… issue_kind = 이슈 검색…
pull_kind = 풀 검색… pull_kind = 풀 검색…

View file

@ -149,24 +149,24 @@ fuzzy = Tikslintinas
union_tooltip = Įtraukti rezultatus, atitinkančius bet kurį iš matomą tarpą atskirtų raktažodžių union_tooltip = Įtraukti rezultatus, atitinkančius bet kurį iš matomą tarpą atskirtų raktažodžių
exact = Tiksliai exact = Tiksliai
exact_tooltip = Įtraukti tik tuos rezultatus, kurie atitinka tikslią paieškos frazę exact_tooltip = Įtraukti tik tuos rezultatus, kurie atitinka tikslią paieškos frazę
user_kind = Ieškoti naudotojų... user_kind = Ieškoti naudotojų
team_kind = Ieškoti komandų... team_kind = Ieškoti komandų
code_kind = Ieškoti kodo... code_kind = Ieškoti kodo
fuzzy_tooltip = Įtraukti rezultatus, kurie taip pat labai atitinka paieškos terminą fuzzy_tooltip = Įtraukti rezultatus, kurie taip pat labai atitinka paieškos terminą
repo_kind = Ieškoti saugyklų... repo_kind = Ieškoti saugyklų
code_search_unavailable = Kodų paieška šiuo metu nepasiekiama. Kreipkis į svetainės administratorių. code_search_unavailable = Kodų paieška šiuo metu nepasiekiama. Kreipkis į svetainės administratorių.
org_kind = Ieškoti organizacijų... org_kind = Ieškoti organizacijų
union = Bendrinis 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ą. 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ų... package_kind = Ieškoti paketų
project_kind = Ieškoti projektų... project_kind = Ieškoti projektų
commit_kind = Ieškoti įsipareigojimų... commit_kind = Ieškoti įsipareigojimų
runner_kind = Ieškoti vykdyklių... runner_kind = Ieškoti vykdyklių
no_results = Nerasta atitinkamų rezultatų. no_results = Nerasta atitinkamų rezultatų.
issue_kind = Ieškoti problemų... issue_kind = Ieškoti problemų
branch_kind = Ieškoti šakų... branch_kind = Ieškoti šakų
milestone_kind = Ieškoti gairių... milestone_kind = Ieškoti gairių...
pull_kind = Ieškoti sujungimų... pull_kind = Ieškoti sujungimų
keyword_search_unavailable = Ieškoti pagal raktažodį šiuo metu nepasiekiamas. Susisiekite su svetainės administratoriumi. keyword_search_unavailable = Ieškoti pagal raktažodį šiuo metu nepasiekiamas. Susisiekite su svetainės administratoriumi.
regexp = Reguliarusis reiškinys regexp = Reguliarusis reiškinys
regexp_tooltip = Interpretuoti paieškos terminą kaip reguliariąją reiškinį regexp_tooltip = Interpretuoti paieškos terminą kaip reguliariąją reiškinį

View file

@ -1090,6 +1090,8 @@ access_token_regeneration = Izveidot piekļuves pilnvaru no jauna
regenerate_token_success = Pilnvara tika izveidota no jauna. Lietotnēm, kas to izmanto, vairs nav piekļuve kontam, un tajās ir jāizmanto jaunā pilnvara. regenerate_token_success = Pilnvara tika izveidota no jauna. Lietotnēm, kas to izmanto, vairs nav piekļuve kontam, un tajās ir jāizmanto jaunā pilnvara.
access_token_regeneration_desc = Pilnvaras izveidošana no jauna atsauks piekļuvi kontam lietotnēm, kuras to izmanto. Darbība ir neatgriezeniska. Turpināt? access_token_regeneration_desc = Pilnvaras izveidošana no jauna atsauks piekļuvi kontam lietotnēm, kuras to izmanto. Darbība ir neatgriezeniska. Turpināt?
ssh_token_help_ssh_agent = vai, ja izmanto SSH aģentu (ar iestatītu mainīgo SSH_AUTH_SOCK):
[repo] [repo]
new_repo_helper=Glabātava satur visas projekta datnes, tajā skaitā izmaiņu vēsturi. Jau tiek izmantota kaut kur citur? <a href="%s">Pārcelt glabātavu</a>. new_repo_helper=Glabātava satur visas projekta datnes, tajā skaitā izmaiņu vēsturi. Jau tiek izmantota kaut kur citur? <a href="%s">Pārcelt glabātavu</a>.
owner=Īpašnieks owner=Īpašnieks
@ -1577,7 +1579,7 @@ issues.remove_ref_at=`noņēma atsauci no <b>%s</b> %s`
issues.add_ref_at=`pievienoja atsauci uz <b>%s</b> %s` issues.add_ref_at=`pievienoja atsauci uz <b>%s</b> %s`
issues.delete_branch_at=`izdzēsa zaru <b>%s</b> %s` issues.delete_branch_at=`izdzēsa zaru <b>%s</b> %s`
issues.filter_label=Iezīme issues.filter_label=Iezīme
issues.filter_label_exclude=`Jāizmanto <code>alt</code> + <code>klikšķis/Enter</code>, lai neiekļautu iezīmes` issues.filter_label_exclude=Jāizmanto <kbd>Alt</kbd> + <kbd>klikšķis</kbd>, lai neiekļautu iezīmes
issues.filter_label_no_select=Visas iezīmes issues.filter_label_no_select=Visas iezīmes
issues.filter_label_select_no_label=Bez iezīmes issues.filter_label_select_no_label=Bez iezīmes
issues.filter_milestone=Atskaites punkts issues.filter_milestone=Atskaites punkts

View file

@ -356,7 +356,7 @@ avatar=അവതാര്‍
ssh_gpg_keys=SSH / GPG കീകള്‍ ssh_gpg_keys=SSH / GPG കീകള്‍
social=സോഷ്യൽ അക്കൗണ്ടുകൾ social=സോഷ്യൽ അക്കൗണ്ടുകൾ
applications=അപ്ലിക്കേഷനുകൾ applications=അപ്ലിക്കേഷനുകൾ
orgs=സംഘടനകളെ നിയന്ത്രിക്കുക orgs=സംഘടനക
repos=കലവറകള്‍ repos=കലവറകള്‍
delete=അക്കൗണ്ട് ഇല്ലാതാക്കുക delete=അക്കൗണ്ട് ഇല്ലാതാക്കുക
twofa=ഇരട്ട ഘടക പ്രാമാണീകരണം twofa=ഇരട്ട ഘടക പ്രാമാണീകരണം
@ -400,8 +400,8 @@ password_change_disabled=പ്രാദേശിക ഇതര ഉപയോക
emails=ഇ-മെയില്‍ വിലാസങ്ങള്‍ emails=ഇ-മെയില്‍ വിലാസങ്ങള്‍
manage_emails=ഇമെയിൽ വിലാസങ്ങൾ നിയന്ത്രിക്കുക manage_emails=ഇമെയിൽ വിലാസങ്ങൾ നിയന്ത്രിക്കുക
manage_themes=സ്ഥിരസ്ഥിതി പ്രമേയം തിരഞ്ഞെടുക്കുക manage_themes=ഡിഫോൾട്ട് തീം
manage_openid=ഓപ്പൺഐഡി വിലാസങ്ങൾ നിയന്ത്രിക്കുക manage_openid=OpenID വിലാസങ്ങൾ
email_desc=അറിയിപ്പുകൾക്കും മറ്റ് പ്രവർത്തനങ്ങൾക്കുമായി നിങ്ങളുടെ പ്രാഥമിക ഇമെയിൽ വിലാസം ഉപയോഗിക്കും. email_desc=അറിയിപ്പുകൾക്കും മറ്റ് പ്രവർത്തനങ്ങൾക്കുമായി നിങ്ങളുടെ പ്രാഥമിക ഇമെയിൽ വിലാസം ഉപയോഗിക്കും.
theme_desc=സൈറ്റിലുടനീളം ഇത് നിങ്ങളുടെ സ്ഥിരസ്ഥിതി പ്രമേയം ആയിരിക്കും. theme_desc=സൈറ്റിലുടനീളം ഇത് നിങ്ങളുടെ സ്ഥിരസ്ഥിതി പ്രമേയം ആയിരിക്കും.
primary=പ്രാഥമികം primary=പ്രാഥമികം

View file

@ -60,7 +60,7 @@ rerun = Kjør på nytt
rerun_all = Kjør alle jobber på nytt rerun_all = Kjør alle jobber på nytt
save = Lagre save = Lagre
cancel = Avbryt cancel = Avbryt
forks = Forks forks = Kopier
milestones = Milepæler milestones = Milepæler
ok = OK ok = OK
test = Test test = Test
@ -134,14 +134,44 @@ webauthn_error_timeout = Et tidsavbrudd oppsto før nøkkelen din kunne leses. V
new_fork = Ny fork av repository new_fork = Ny fork av repository
collaborative = Samarbeidende collaborative = Samarbeidende
tracked_time_summary = Oppsummering av sporet tid basert på problemfiltre
pull_requests = Pull requests
issues = Saker
copy_branch = Kopier branch navn
error404 = Siden du forsøker å nå <strong>eksisterer ikke</strong>, <strong>er blitt fjernet</strong> eller <strong>du har ikke tilgang til å se den</strong>.
error413 = Du har brukt opp kvoten din.
unpin = Løsne
filter.is_fork = Forks
filter.not_fork = Ikke forks
[search] [search]
search = Søk... search = Søk
type_tooltip = Søketype type_tooltip = Søketype
fuzzy = Fuzzy fuzzy = Fuzzy
union = Union union = Union
regexp = RegExp regexp = RegExp
exact = Nøyaktig exact = Nøyaktig
fuzzy_tooltip = Inkluder resultater som også stemmer godt overens med søketermen
union_tooltip = Inkluder resultater som samsvarer med ett eller flere av nøkkelordene adskilt med mellomrom
exact_tooltip = Inkluder kun resultater som samsvarer nøyaktig med søkeordet
regexp_tooltip = Tolk søkeordet som et regulæruttrykk
repo_kind = Søk i repositorer…
user_kind = Søk i brukere…
org_kind = Søk i organisasjoner…
team_kind = Søk i teams…
code_kind = Søk i kode…
code_search_unavailable = Kodesøk er ikke tilgjengelig. Kontakt administratoren.
package_kind = Søk i pakker…
project_kind = Søk i prosjekter…
branch_kind = Søk i brancher…
commit_kind = Søk i commits…
runner_kind = Søk i runners…
no_results = Ingen treff funnet.
issue_kind = Søk i saker…
pull_kind = Søk i pulls…
keyword_search_unavailable = Søk etter nøkkelord er for øyeblikket ikke tilgjengelig. Kontakt administratoren.
[auth] [auth]
verify = Bekreft verify = Bekreft
sign_up_button = Opprett konto nå. sign_up_button = Opprett konto nå.
@ -152,4 +182,88 @@ oauth_signup_title = Fullfør ny konto
oauth_signup_submit = Fullfør konto oauth_signup_submit = Fullfør konto
[home] [home]
uname_holder = Brukernavn eller e-postadresse uname_holder = Brukernavn eller e-postadresse
[aria]
navbar = Navigasjonslinje
footer = Bunntekst
footer.software = Om dette programmet
footer.links = Linker
[heatmap]
number_of_contributions_in_the_last_12_months = %s bidrag de siste 12 månedene
contributions_zero = Ingen bidrag
contributions_format = {contributions} den {day} {month} {year}
contributions_one = bidrag
contributions_few = bidrag
less = Mindre
more = Mer
[editor]
buttons.heading.tooltip = Legg til overskrift
buttons.bold.tooltip = Legg til uthevet tekst
buttons.italic.tooltip = Legg til kursiv text
buttons.quote.tooltip = Siter tekst
buttons.code.tooltip = Legg til kode
buttons.link.tooltip = Legg til link
buttons.list.unordered.tooltip = Legg til punktliste
buttons.list.ordered.tooltip = Legg til nummerert liste
buttons.list.task.tooltip = Legg til liste over saker
buttons.mention.tooltip = Nevn en bruker eller team
buttons.ref.tooltip = Referanse til en sak eller pull request
buttons.switch_to_legacy.tooltip = Bruk den gamle editoren istedenfor
buttons.enable_monospace_font = Aktiver monospace font
buttons.disable_monospace_font = Deaktiver monospace font
buttons.indent.tooltip = Grupper elementene med et nivå
buttons.unindent.tooltip = Pakk ut elementene med et nivå
buttons.new_table.tooltip = Legg til tabell
table_modal.header = Legg til tabell
table_modal.placeholder.header = Overskrift
table_modal.placeholder.content = Innhold
table_modal.label.rows = Rader
table_modal.label.columns = Kolonner
link_modal.header = Legg til en link
link_modal.url = Url
link_modal.description = Beskrivelse
link_modal.paste_reminder = Tips: Når du har en URL i utklippstavlen kan du lime den direkte inn i editoren for å lage en lenke.
[filter]
string.asc = A - Z
string.desc = Z - A
[error]
occurred = En feil oppstod
report_message = Hvis du mener dette er en feil i Forgejo kan du søke på <a href="%s" target="_blank">Codeberg</a> eller åpne en ny sak.
not_found = Kunne ikke finne målet.
network_error = Nettverks feil
server_internal = Intern server feil
[startpage]
app_desc = En enkel Git-tjeneste du kan drifte selv
install = Enkel å installere
install_desc = Du kan enkelt <a target="_blank" rel="noopener noreferrer" href="%[1]s">kjøre programfilen</a> for din platform, bruke <a target="_blank" rel="noopener noreferrer" href="%[2]s">Docker</a>, eller hente den som en <a target="_blank" rel="noopener noreferrer" href="%[3]s">ferdig pakke</a>.
platform = Plattformuavhengig
platform_desc = Forgejo fungerer på frie operativsystemer som Linux og FreeBSD, og støtter flere CPU-arkitekturer. Velg den plattformen du foretrekker!
lightweight = Lettvekt
lightweight_desc = Forgejo krever lite ressurser og kan kjøres på en rimelig Raspberry Pi. Spar strøm og miljøet!
license = Åpen kildekode
license_desc = Last ned <a target="_blank" rel="noopener noreferrer" href="%[1]s">Forgejo</a>! Bli med ved å <a target="_blank" rel="noopener noreferrer" href="%[2]s">bidra</a> for å gjøre prosjektet enda bedre. Ikke vær redd for å bli en bidragsyter!
[install]
install = Installasjon
title = Førstegangsoppsett
docker_helper = Dersom du bruker Forgejo med Docker, anbefales det å lese <a target="_blank" rel="noopener noreferrer" href="%s">dokumentasjonen</a> før du gjør endringer i konfigurasjonen.
require_db_desc = Forgejo krever MySQL, PostgreSQL, SQLite3 eller TiDB (MySQL protokoll).
db_title = Database innstillinger
db_type = Database type
host = Server
user = Brukernavn
password = Passord
db_name = Database navn
db_schema = Skjema
db_schema_helper = La stå tomt for databasens standardverdi ("public").
ssl_mode = SSL
path = Sti
sqlite_helper = Sti til SQLite3-databasen.<br>Bruk absolutt filsti dersom Forgejo kjøres som en tjeneste.
reinstall_error = Du prøver å installere i en eksisterende Forgejo-database
reinstall_confirm_message = Å installere på nytt med en eksisterende Forgejo-database kan føre til problemer. I de fleste tilfeller bør du bruke din eksisterende "app.ini" for å kjøre Forgejo. Hvis du vet hva du gjør, og vil fortsette, bekreft følgende:

View file

@ -568,7 +568,7 @@ organization = Vereenigungen
uid = UID uid = UID
webauthn = Twee-Faktooren-Anmellen (Sekerheids-Slötels) webauthn = Twee-Faktooren-Anmellen (Sekerheids-Slötels)
blocked_users = Blockeert Brukers blocked_users = Blockeert Brukers
public_profile = Publikes Profil public_profile = Publikes profil
location_placeholder = Deel waar du umslags büst mit Annerns location_placeholder = Deel waar du umslags büst mit Annerns
pronouns = Pronomens pronouns = Pronomens
pronouns_custom = Eegene pronouns_custom = Eegene
@ -888,6 +888,8 @@ regenerate_token = Neei maken
access_token_regeneration_desc = Wenn du een Teken neei maakst, verlesen Anwennens, wat t bruken, Togang to dienem Konto. Dat kann nich torüggnohmen worden. Wiedermaken? access_token_regeneration_desc = Wenn du een Teken neei maakst, verlesen Anwennens, wat t bruken, Togang to dienem Konto. Dat kann nich torüggnohmen worden. Wiedermaken?
regenerate_token_success = Dat Teken is neei maakt worden. Anwennens, wat t bruken, hebben keenen Togang to dienem Konto mehr un mutten mit de nejen Teken verneeit worden. regenerate_token_success = Dat Teken is neei maakt worden. Anwennens, wat t bruken, hebben keenen Togang to dienem Konto mehr un mutten mit de nejen Teken verneeit worden.
ssh_token_help_ssh_agent = of, wenn du eenen SSH-Agenten bruukst (un de SSH_AUTH_SOCK-Variaabel sett is):
[repo] [repo]
rss.must_be_on_branch = Du muttst up eenem Twieg wesen, um eenen RSS-Schuuv to hebben. rss.must_be_on_branch = Du muttst up eenem Twieg wesen, um eenen RSS-Schuuv to hebben.
admin.manage_flags = Flaggen verwalten admin.manage_flags = Flaggen verwalten
@ -1552,7 +1554,7 @@ issues.dependency.pr_close_blocks = Deeser Haalvörslag blockeert dat Dichtmaken
issues.dependency.issue_batch_close_blocked = Kann de utköört Gefallens nich all tosamen dichtmaken, denn Gefall #%d hett noch open Ofhangens issues.dependency.issue_batch_close_blocked = Kann de utköört Gefallens nich all tosamen dichtmaken, denn Gefall #%d hett noch open Ofhangens
issues.dependency.pr_close_blocked = Du muttst all Gefallens, wat deesen Haalvörslag blockeren, dichtmaken, ehr du dat hier tosamenföhren kannst. issues.dependency.pr_close_blocked = Du muttst all Gefallens, wat deesen Haalvörslag blockeren, dichtmaken, ehr du dat hier tosamenföhren kannst.
issues.dependency.blocks_short = Blockeert issues.dependency.blocks_short = Blockeert
issues.dependency.blocked_by_short = Hang of vun issues.dependency.blocked_by_short = Hangt of vun
issues.dependency.remove_header = Ofhangen wegdoon issues.dependency.remove_header = Ofhangen wegdoon
issues.dependency.setting = Ofhangens för Gefallens un Haalvörslagen anknipsen issues.dependency.setting = Ofhangens för Gefallens un Haalvörslagen anknipsen
issues.dependency.add_error_same_issue = Du kannst een Gefall nich vun sik sülvst ofhangen laten. issues.dependency.add_error_same_issue = Du kannst een Gefall nich vun sik sülvst ofhangen laten.

View file

@ -559,7 +559,7 @@ team_invite.text_2 = Klik alstublieft op de volgende link om aan het team deel t
admin.new_user.text = <a href="%s">Klik hier</a> om deze gebruiker te beheren vanuit het beheerderspaneel. admin.new_user.text = <a href="%s">Klik hier</a> om deze gebruiker te beheren vanuit het beheerderspaneel.
password_change.subject = Uw wachtwoord is gewijzigd password_change.subject = Uw wachtwoord is gewijzigd
password_change.text_1 = Het wachtwoord voor je account is zojuist gewijzigd. password_change.text_1 = Het wachtwoord voor je account is zojuist gewijzigd.
reset_password.text_1 = reset_password.text_1 =
totp_disabled.subject = TOTP is uitgeschakeld totp_disabled.subject = TOTP is uitgeschakeld
primary_mail_change.subject = Uw primaire e-mail is gewijzigd primary_mail_change.subject = Uw primaire e-mail is gewijzigd
totp_disabled.no_2fa = Er zijn geen andere 2FA methodes meer geconfigureerd, wat betekent dat het niet langer nodig is om in te loggen op uw account met 2FA. totp_disabled.no_2fa = Er zijn geen andere 2FA methodes meer geconfigureerd, wat betekent dat het niet langer nodig is om in te loggen op uw account met 2FA.
@ -1093,6 +1093,8 @@ regenerate_token = Opnieuw genereren
regenerate_token_success = De token is opnieuw gegenereerd. Toepassingen die het gebruiken, hebben niet langer toegang tot uw account en moeten worden bijgewerkt om de nieuwe token te gebruiken. regenerate_token_success = De token is opnieuw gegenereerd. Toepassingen die het gebruiken, hebben niet langer toegang tot uw account en moeten worden bijgewerkt om de nieuwe token te gebruiken.
access_token_regeneration_desc = Als u een token opnieuw genereert, wordt de toegang tot uw account ingetrokken voor toepassingen die de token gebruiken. Dit kan niet ongedaan worden gemaakt. Doorgaan? access_token_regeneration_desc = Als u een token opnieuw genereert, wordt de toegang tot uw account ingetrokken voor toepassingen die de token gebruiken. Dit kan niet ongedaan worden gemaakt. Doorgaan?
ssh_token_help_ssh_agent = of, als u een SSH-agent gebruikt (met de variabele SSH_AUTH_SOCK ingesteld):
[repo] [repo]
owner=Eigenaar owner=Eigenaar
owner_helper=Sommige organisaties kunnen niet worden weergegeven in de dropdown vanwege een limiet op het maximale aantal repositories. owner_helper=Sommige organisaties kunnen niet worden weergegeven in de dropdown vanwege een limiet op het maximale aantal repositories.
@ -1495,7 +1497,7 @@ issues.remove_ref_at=`heeft referentie <b>%s</b> verwijderd %s`
issues.add_ref_at=`heeft referentie <b>%s</b> toegevoegd %s` issues.add_ref_at=`heeft referentie <b>%s</b> toegevoegd %s`
issues.delete_branch_at=`heeft %[2]s de branch <b>%[1]s</b> verwijderd.` issues.delete_branch_at=`heeft %[2]s de branch <b>%[1]s</b> verwijderd.`
issues.filter_label=Label issues.filter_label=Label
issues.filter_label_exclude=Gebruik <code>alt</code> + <code>klik/voer</code> in om labels uit te sluiten issues.filter_label_exclude=Gebruik <kbd>alt</kbd> + <kbd>klik</kbd> om labels uit te sluiten
issues.filter_label_no_select=Alle labels issues.filter_label_no_select=Alle labels
issues.filter_milestone=Mijlpaal issues.filter_milestone=Mijlpaal
issues.filter_project=Project issues.filter_project=Project
@ -1554,8 +1556,8 @@ issues.close_comment_issue=Sluit met commentaar
issues.reopen_issue=Heropen issues.reopen_issue=Heropen
issues.reopen_comment_issue=Heropen met commentaar issues.reopen_comment_issue=Heropen met commentaar
issues.create_comment=Reageer issues.create_comment=Reageer
issues.closed_at=`heeft dit probleem gesloten %s` issues.closed_at=`heeft deze issue gesloten %s`
issues.reopened_at=`heropende dit probleem %s` issues.reopened_at=`heropende deze issue %s`
issues.commit_ref_at=`verwees naar dit probleem vanuit commit %s` issues.commit_ref_at=`verwees naar dit probleem vanuit commit %s`
issues.ref_issue_from=`<a href="%[2]s">refereerde aan dit issue %[3]s</a> %[1]s` issues.ref_issue_from=`<a href="%[2]s">refereerde aan dit issue %[3]s</a> %[1]s`
issues.ref_pull_from=`<a href="%[2]s">refereerde aan deze pull request %[3]s</a> %[1]s` issues.ref_pull_from=`<a href="%[2]s">refereerde aan deze pull request %[3]s</a> %[1]s`
@ -2915,6 +2917,15 @@ sync_fork.branch_behind_few = Deze branch is %[1]d commits achter %[2]s
issues.filter_type.all_pull_requests = Alle pull requests
settings.event_header_action = Actie run evenementen
settings.event_action_failure = Mislukking
settings.event_action_failure_desc = Action run is mislukt.
settings.event_action_recover = Herstel
settings.event_action_recover_desc = Action run is geslaagd nadat de laatste action run in dezelfde workflow is mislukt.
settings.event_action_success = Succes
settings.event_action_success_desc = Action run is geslaagd.
[graphs] [graphs]
component_loading_info = Dit kan even duren… component_loading_info = Dit kan even duren…
component_failed_to_load = Er is een onverwachte fout opgetreden. component_failed_to_load = Er is een onverwachte fout opgetreden.

View file

@ -1043,8 +1043,8 @@ language.title = Domyślny język
language.localization_project = Pomóż nam przetłumaczyć Forgejo na twój język! <a href="%s">Dowiedz się więcej</a>. language.localization_project = Pomóż nam przetłumaczyć Forgejo na twój język! <a href="%s">Dowiedz się więcej</a>.
update_hints = Zaktualizuj wskazówki update_hints = Zaktualizuj wskazówki
update_hints_success = Wskazówki zostały zaktualizowane. update_hints_success = Wskazówki zostały zaktualizowane.
change_username_redirect_prompt.with_cooldown.one = Stara nazwa użytkownika będzie dostępna dla każdego po okresie ochronnym wynoszącym %[1]d dzień, nadal możesz uzyskać z powrotem starą nazwę użytkownika podczas okresu ochronnego. change_username_redirect_prompt.with_cooldown.one = Stara nazwa użytkownika będzie dostępna dla każdego po okresie ochronnym wynoszącym %[1]d dzień. Nadal możesz uzyskać z powrotem starą nazwę użytkownika podczas okresu ochronnego.
change_username_redirect_prompt.with_cooldown.few = Stara nazwa użytkownika będzie dostępna dla każdego po okresie ochronnym wynoszącym %[1]d dni, nadal możesz uzyskać z powrotem starą nazwę użytkownika podczas okresu ochronnego. change_username_redirect_prompt.with_cooldown.few = Stara nazwa użytkownika będzie dostępna dla każdego po okresie ochronnym wynoszącym %[1]d dni. Nadal możesz uzyskać z powrotem starą nazwę użytkownika podczas okresu ochronnego.
language.description = Ten język zostanie zapisany na twoim koncie i będzie używany jako domyślny po zalogowaniu. language.description = Ten język zostanie zapisany na twoim koncie i będzie używany jako domyślny po zalogowaniu.
hidden_comment_types_description = Rodzaje komentarzy zaznaczone tutaj nie będą wyświetlały się na stronach zgłoszeń. Zaznaczenie "Etykieta" na przykład usunie wszystkie komentarze "<użytkownik> dodał/usunął <etykieta>". hidden_comment_types_description = Rodzaje komentarzy zaznaczone tutaj nie będą wyświetlały się na stronach zgłoszeń. Zaznaczenie "Etykieta" na przykład usunie wszystkie komentarze "<użytkownik> dodał/usunął <etykieta>".
principal_desc = Te podmioty certyfikatu SSH będą powiązane z twoim kontem i pozwolą na pełen dostęp do twoich repozytoriów. principal_desc = Te podmioty certyfikatu SSH będą powiązane z twoim kontem i pozwolą na pełen dostęp do twoich repozytoriów.
@ -3951,29 +3951,29 @@ normal_file = Zwykły plik
search = Wyszukaj... search = Wyszukaj...
type_tooltip = Typ wyszukiwania type_tooltip = Typ wyszukiwania
fuzzy = Przybliżone fuzzy = Przybliżone
package_kind = Wyszukaj pakiety... package_kind = Wyszukaj pakiety
fuzzy_tooltip = Uwzględnij wyniki, które są bliskie wyszukiwanemu hasłu fuzzy_tooltip = Uwzględnij wyniki, które są bliskie wyszukiwanemu hasłu
match = Dopasuj match = Dopasuj
match_tooltip = Uwzględniaj tylko wyniki pasujące do wyszukiwanego hasła match_tooltip = Uwzględniaj tylko wyniki pasujące do wyszukiwanego hasła
repo_kind = Wyszukaj repozytoria... repo_kind = Wyszukaj repozytoria
user_kind = Wyszukaj użytkownilków... user_kind = Wyszukaj użytkownilków
code_search_unavailable = Wyszukiwanie kodu jest obecnie niedostępne. Skontakuj sie z administratorem strony. code_search_unavailable = Wyszukiwanie kodu jest obecnie niedostępne. Skontakuj sie z administratorem strony.
no_results = Nie znaleziono pasujących wyników. no_results = Nie znaleziono pasujących wyników.
org_kind = Wyszukaj organizacje... org_kind = Wyszukaj organizacje
team_kind = Wyszukaj zespoły... team_kind = Wyszukaj zespoły
code_kind = Wyszukaj kod... code_kind = Wyszukaj kod
code_search_by_git_grep = Obecne wyniki wyszukiwania kodu są dostarczane przez "git grep". Wyniki mogą być lepsze, jeśli administrator witryny włączy indeksator kodu. code_search_by_git_grep = Obecne wyniki wyszukiwania kodu są dostarczane przez "git grep". Wyniki mogą być lepsze, jeśli administrator witryny włączy indeksator kodu.
project_kind = Wyszukaj projekty... project_kind = Wyszukaj projekty
branch_kind = Wyszukaj gałęzie... branch_kind = Wyszukaj gałęzie
commit_kind = Wyszukaj commity... commit_kind = Wyszukaj commity
runner_kind = Wyszukaj runnery... runner_kind = Wyszukaj runnery
keyword_search_unavailable = Wyszukiwanie według słów kluczowych jest obecnie niedostępne. Skontaktuj się z administratorem strony. keyword_search_unavailable = Wyszukiwanie według słów kluczowych jest obecnie niedostępne. Skontaktuj się z administratorem strony.
milestone_kind = Wyszukaj kamienie milowe... milestone_kind = Wyszukaj kamienie milowe...
union_tooltip = Uwzględnia wyniki pasujące do dowolnego słowa kluczowego rozdzielonego białymi znakami union_tooltip = Uwzględnia wyniki pasujące do dowolnego słowa kluczowego rozdzielonego białymi znakami
exact = Dokładne exact = Dokładne
exact_tooltip = Uwzględniaj tylko wyniki pasujące do wyszukiwanego hasła exact_tooltip = Uwzględniaj tylko wyniki pasujące do wyszukiwanego hasła
issue_kind = Wyszukaj zgłoszenia... issue_kind = Wyszukaj zgłoszenia
pull_kind = Wyszukaj pull requesty... pull_kind = Wyszukaj pull requesty
union = Unia union = Unia
regexp = RegExp regexp = RegExp
regexp_tooltip = Interpretuj wyszukiwane hasło jako wyrażenie regularne regexp_tooltip = Interpretuj wyszukiwane hasło jako wyrażenie regularne

View file

@ -1092,6 +1092,8 @@ regenerate_token_success = O token foi regenerado. Aplicações que usam este to
access_token_regeneration = Regenerar token de acesso access_token_regeneration = Regenerar token de acesso
access_token_regeneration_desc = Regenerar um token de acesso irá revogar o acesso a essa conta para as aplicações que estiverem utilizando este token. Isto não pode ser desfeito. Continuar? access_token_regeneration_desc = Regenerar um token de acesso irá revogar o acesso a essa conta para as aplicações que estiverem utilizando este token. Isto não pode ser desfeito. Continuar?
ssh_token_help_ssh_agent = ou, se você estiver usando um agente SSH (com a variável SSH_AUTH_SOCK definida):
[repo] [repo]
owner=Proprietário owner=Proprietário
owner_helper=Algumas organizações podem não aparecer no menu devido a um limite de contagem dos repositórios. owner_helper=Algumas organizações podem não aparecer no menu devido a um limite de contagem dos repositórios.
@ -1278,7 +1280,7 @@ star_guest_user=Entre para adicionar este repositório aos favoritos.
unwatch=Deixar de observar unwatch=Deixar de observar
watch=Observar watch=Observar
unstar=Retirar dos favoritos unstar=Retirar dos favoritos
star=Juntar aos favoritos star=Adicionar aos favoritos
fork=Fork fork=Fork
download_archive=Baixar repositório download_archive=Baixar repositório
more_operations=Mais operações more_operations=Mais operações
@ -1934,7 +1936,7 @@ pulls.status_checks_success=Todas as verificações foram bem sucedidas
pulls.status_checks_warning=Algumas verificações reportaram avisos pulls.status_checks_warning=Algumas verificações reportaram avisos
pulls.status_checks_failure=Algumas verificações falharam pulls.status_checks_failure=Algumas verificações falharam
pulls.status_checks_error=Algumas verificações reportaram erros pulls.status_checks_error=Algumas verificações reportaram erros
pulls.status_checks_requested=Obrigatário pulls.status_checks_requested=Obrigatório
pulls.status_checks_details=Detalhes pulls.status_checks_details=Detalhes
pulls.update_branch=Atualizar branch por merge pulls.update_branch=Atualizar branch por merge
pulls.update_branch_rebase=Atualizar branch por rebase pulls.update_branch_rebase=Atualizar branch por rebase
@ -2803,7 +2805,7 @@ mirror_use_ssh.helper = Forgejo irá espelhar o repositório via Git através de
mirror_denied_combination = Não é possível combinar o uso de chave pública e autenticação baseada em senha. mirror_denied_combination = Não é possível combinar o uso de chave pública e autenticação baseada em senha.
mirror_public_key = Chave SSH pública mirror_public_key = Chave SSH pública
mirror_use_ssh.text = Usar autenticação por SSH mirror_use_ssh.text = Usar autenticação por SSH
mirror_use_ssh.not_available = Autenticação por SSH não está disponível. mirror_use_ssh.not_available = A autenticação via SSH não está disponível.
settings.push_mirror_sync_in_progress = Fazendo push das mudanças para o remoto %s nesse momento. settings.push_mirror_sync_in_progress = Fazendo push das mudanças para o remoto %s nesse momento.
settings.federation_apapiurl = URL de federação deste repositório. Copie e cole isso nas Configurações de Federação de outro repositório como uma URL de um Repositório Seguidor. settings.federation_apapiurl = URL de federação deste repositório. Copie e cole isso nas Configurações de Federação de outro repositório como uma URL de um Repositório Seguidor.
pulls.agit_explanation = Criado usando o fluxo de trabalho AGit. AGit permite que contribuidores proponham mudanças usando "git push" sem criar um fork ou novo branch. pulls.agit_explanation = Criado usando o fluxo de trabalho AGit. AGit permite que contribuidores proponham mudanças usando "git push" sem criar um fork ou novo branch.
@ -2817,7 +2819,7 @@ settings.mirror_settings.pushed_repository = Repositório enviado
settings.mirror_settings.docs.disabled_pull_mirror.instructions = Configure seu projeto para automaticamente fazer push de commits, tags e branches para outro repositório. Espelhos de pull foram desativados pelo administrador do seu site. settings.mirror_settings.docs.disabled_pull_mirror.instructions = Configure seu projeto para automaticamente fazer push de commits, tags e branches para outro repositório. Espelhos de pull foram desativados pelo administrador do seu site.
settings.mirror_settings.docs.disabled_push_mirror.instructions = Configure seu projeto para automaticamente fazer pull de commits, tags e branches de outro repositório. settings.mirror_settings.docs.disabled_push_mirror.instructions = Configure seu projeto para automaticamente fazer pull de commits, tags e branches de outro repositório.
settings.mirror_settings.docs.doc_link_pull_section = a seção "Fazendo pull de um repositório remoto" da documentação. settings.mirror_settings.docs.doc_link_pull_section = a seção "Fazendo pull de um repositório remoto" da documentação.
subscribe.pull.guest.tooltip = Entre para receber notificações deste pull request. subscribe.pull.guest.tooltip = Inicie a sessão para receber notificações deste pull request.
settings.pull_mirror_sync_quota_exceeded = Cota excedida, não será feito pull das mudanças. settings.pull_mirror_sync_quota_exceeded = Cota excedida, não será feito pull das mudanças.
settings.mirror_settings.docs.more_information_if_disabled = Saiba mais sobre espelhos de push e pull aqui: settings.mirror_settings.docs.more_information_if_disabled = Saiba mais sobre espelhos de push e pull aqui:
settings.transfer_quota_exceeded = O novo dono (%s) excedeu a cota. O repositório não foi transferido. settings.transfer_quota_exceeded = O novo dono (%s) excedeu a cota. O repositório não foi transferido.
@ -3900,7 +3902,7 @@ deletion=Excluir segredo
deletion.description=A exclusão de um segredo é permanente e não pode ser desfeita. Continuar? deletion.description=A exclusão de um segredo é permanente e não pode ser desfeita. Continuar?
deletion.success=O segredo foi excluído. deletion.success=O segredo foi excluído.
deletion.failed=Falha ao excluir segredo. deletion.failed=Falha ao excluir segredo.
management=Gerenciar segredos management=Gerenciamento de segredos
[actions] [actions]
actions=Ações actions=Ações
@ -3909,12 +3911,12 @@ unit.desc=Gerenciar pipelines integradas de CI/CD com Forgejo Actions.
status.unknown=Desconhecido status.unknown=Desconhecido
status.waiting=Aguardando status.waiting=Aguardando
status.running=Rodando status.running=Executando
status.success=Sucesso status.success=Sucesso
status.failure=Falha status.failure=Falha
status.cancelled=Cancelado status.cancelled=Cancelada
status.skipped=Ignorado status.skipped=Ignorada
status.blocked=Bloqueado status.blocked=Bloqueada
runners=Runners runners=Runners
runners.runner_manage_panel=Gerenciar runners runners.runner_manage_panel=Gerenciar runners

View file

@ -1060,11 +1060,11 @@ user_unblock_success = O utilizador foi desbloqueado com sucesso.
language.title = Idioma predefinido language.title = Idioma predefinido
keep_activity_private.description = O seu <a href="%s">trabalho público</a> apenas estará visível para si e para os administradores da instância. keep_activity_private.description = O seu <a href="%s">trabalho público</a> apenas estará visível para si e para os administradores da instância.
language.description = Este idioma vai ser guardado na sua conta e ser usado como o predefinido depois de iniciar sessão. language.description = Este idioma vai ser guardado na sua conta e ser usado como o predefinido depois de iniciar sessão.
language.localization_project = Ajude-nos a traduzir o Forgejo para o seu idioma! <a href="%s">Ler mais</a>. language.localization_project = Ajude-nos a traduzir o Forgejo para o seu idioma! <a href="%s">Saiba mais</a>.
pronouns_custom_label = Pronomes personalizados pronouns_custom_label = Pronomes personalizados
user_block_yourself = Não se pode bloquear a si próprio. user_block_yourself = Não se pode bloquear a si próprio.
change_username_redirect_prompt.with_cooldown.one = O nome de utilizador antigo estará disponível para todos após um período de espera de %[1]d dia, podendo ainda reivindicar o nome de utilizador antigo durante o período de espera. change_username_redirect_prompt.with_cooldown.one = O nome de utilizador antigo estará disponível para todos após um período de espera de %[1]d dia. Pode ainda reivindicar o nome de utilizador antigo durante o período de espera.
change_username_redirect_prompt.with_cooldown.few = O nome de utilizador antigo ficará disponível para todos após um período de espera de %[1]d dias, podendo ainda reivindicar o nome de utilizador antigo durante o período de espera. change_username_redirect_prompt.with_cooldown.few = O nome de utilizador antigo ficará disponível para todos após um período de espera de %[1]d dias. Pode ainda reivindicar o nome de utilizador antigo durante o período de espera.
quota.applies_to_user = As seguintes regras de quotas aplicam-se à sua conta quota.applies_to_user = As seguintes regras de quotas aplicam-se à sua conta
quota.sizes.assets.artifacts = Artefactos quota.sizes.assets.artifacts = Artefactos
quota.rule.exceeded.helper = O tamanho total dos objectos para esta regra excedeu a quota. quota.rule.exceeded.helper = O tamanho total dos objectos para esta regra excedeu a quota.
@ -1583,7 +1583,7 @@ issues.remove_ref_at=`removeu a referência <b>%s</b> %s`
issues.add_ref_at=`adicionou a referência <b>%s</b> %s` issues.add_ref_at=`adicionou a referência <b>%s</b> %s`
issues.delete_branch_at=`eliminou o ramo <b>%s</b> %s` issues.delete_branch_at=`eliminou o ramo <b>%s</b> %s`
issues.filter_label=Rótulo issues.filter_label=Rótulo
issues.filter_label_exclude=`Use <code>alt</code> + <code>clique/enter</code> para excluir rótulos` issues.filter_label_exclude=Use <kbd>Alt</kbd> + <kbd>Clique</kbd> para excluir rótulos
issues.filter_label_no_select=Todos os rótulos issues.filter_label_no_select=Todos os rótulos
issues.filter_label_select_no_label=Sem rótulo issues.filter_label_select_no_label=Sem rótulo
issues.filter_milestone=Etapa issues.filter_milestone=Etapa
@ -2923,6 +2923,8 @@ settings.event_action_recover_desc = A execução de ação foi bem sucedida dep
settings.event_action_success = Sucesso settings.event_action_success = Sucesso
settings.event_action_success_desc = A Execução de ação foi bem sucedida. settings.event_action_success_desc = A Execução de ação foi bem sucedida.
issues.filter_type.all_pull_requests = Todos os pedidos de integração
[graphs] [graphs]
component_loading=A carregar %s… component_loading=A carregar %s…
component_loading_failed=Não foi possível carregar %s component_loading_failed=Não foi possível carregar %s
@ -3057,8 +3059,8 @@ teams.invite.by=Convidado(a) por %s
teams.invite.description=Clique no botão abaixo para se juntar à equipa. teams.invite.description=Clique no botão abaixo para se juntar à equipa.
follow_blocked_user = Não pode seguir esta organização porque esta organização bloqueou-o/a. follow_blocked_user = Não pode seguir esta organização porque esta organização bloqueou-o/a.
open_dashboard = Abrir painel de controlo open_dashboard = Abrir painel de controlo
settings.change_orgname_redirect_prompt.with_cooldown.one = O nome antigo da organização estará disponível para todos após um período de espera de %[1]d dia, podendo ainda reivindicar o nome antigo durante o período de espera. settings.change_orgname_redirect_prompt.with_cooldown.one = O nome antigo da organização estará disponível para todos após um período de espera de %[1]d dia. Pode ainda reivindicar o nome antigo durante o período de espera.
settings.change_orgname_redirect_prompt.with_cooldown.few = O nome antigo da organização estará disponível para todos após um período de espera de %[1]d dias, podendo ainda reivindicar o nome antigo durante o período de espera. settings.change_orgname_redirect_prompt.with_cooldown.few = O nome antigo da organização estará disponível para todos após um período de espera de %[1]d dias. Pode ainda reivindicar o nome antigo durante o período de espera.
[admin] [admin]
dashboard=Painel de controlo dashboard=Painel de controlo

View file

@ -1,6 +1,3 @@
[common] [common]
return_to_forgejo = Înapoi la Forgejo return_to_forgejo = Înapoi la Forgejo
explore = Explorează explore = Explorează
@ -18,7 +15,7 @@ concept_user_organization = Organizație
logo = Logo logo = Logo
help = Ajutor help = Ajutor
sign_up = Înregistrare sign_up = Înregistrare
link_account = Conectare cont link_account = Conectați conturi
register = Înregistrare register = Înregistrare
template = Șablon template = Șablon
language = Limbă language = Limbă
@ -91,7 +88,7 @@ remove_label_str = Șterge elementul "%s"
save = Salvează save = Salvează
remove = Șterge remove = Șterge
copy_path = Copiază cale copy_path = Copiază cale
error404 = Pagina pe care încerci să o vizitezi fie <strong>nu există</strong> sau <strong>nu ești autorizat</strong> să o vezi. error404 = Pagina pe care încercați să o vizitați fie <strong>nu există</strong>, <strong>a fost ștearsă</strong> sau <strong>nu sunteți autorizat</strong> să o puteți vedea.
filter.not_archived = Nearhivat filter.not_archived = Nearhivat
activities = Activități activities = Activități
confirm_delete_selected = Ștergi toate elementele selectate? confirm_delete_selected = Ștergi toate elementele selectate?
@ -104,9 +101,49 @@ home = Acasă
dashboard = Panou de Control dashboard = Panou de Control
version = Versiune version = Versiune
powered_by = Susținut de %s powered_by = Susținut de %s
active_stopwatch = Monitorizor de timp activ active_stopwatch = Contor timp activ
more_items = Mai multe elemente more_items = Mai multe elemente
tracked_time_summary = Rezumat al timpului monitorizat, bazat pe filtrele listei de probleme
signed_in_as = Conectat ca
toggle_menu = Afișează sau ascunde meniul
twofa_scratch = Cod de rezervă pentru autentificare prin doi factori
passcode = Cod de acces
repository = Repozitoriu
new_fork = Bifurcație de repozitoriu nouă
new_project_column = Coloană nouă
new_repo.title = Repozitoriu nou
new_repo.link = Repozitoriu nou
all = Tot
collaborative = Colaborativ
forks = Bifurcații
pull_requests = Cereri de extragere
issues = Probleme
milestones = Etape
rerun = Reporniți
rerun_all = Reporniți toate joburile
add_all = Adaugă toate
remove_all = Șterge toate
copy_branch = Copiați numele ramurii
write = Scrieți
error413 = V-ați epuizat cota.
invalid_data = Date invalide: %v
pin = Fixați
unpin = Desprindeți
concept_code_repository = Repozitoriu
show_timestamps = Afișați marcajele temporale
show_full_screen = Afișați pe tot ecranul
download_logs = Descărcați jurnalele
value = Valoare
filter.is_fork = Bifurcații
filter.not_fork = Nu sunt bifurcații
filter.is_mirror = Copii identice
filter.not_mirror = Nu sunt copii identice
filter.is_template = Șabloane
filter.not_template = Nu sunt șabloane
filter.public = Publice
filter.private = Private
[editor] [editor]
table_modal.header = Adaugă tabel table_modal.header = Adaugă tabel
table_modal.placeholder.content = Conținut table_modal.placeholder.content = Conținut
@ -122,6 +159,20 @@ buttons.code.tooltip = Adaugă cod
buttons.quote.tooltip = Citează text buttons.quote.tooltip = Citează text
buttons.link.tooltip = Adaugă un link buttons.link.tooltip = Adaugă un link
buttons.heading.tooltip = Adăugați titlu
buttons.list.unordered.tooltip = Adăugați o listă
buttons.list.task.tooltip = Adăugați o listă de sarcini
buttons.ref.tooltip = Faceți o referire la o problemă sau o cerere de extragere
buttons.switch_to_legacy.tooltip = Folosiți în schimb editorul vechi
buttons.enable_monospace_font = Activați fontul monospațiat
buttons.disable_monospace_font = Dezactivați fontul monospațiat
buttons.indent.tooltip = Indentați obiectele cu un nivel
buttons.unindent.tooltip = Nu mai indentați obiectele cu un nivel
link_modal.header = Adăugați un link
link_modal.url = URL
link_modal.description = Descriere
link_modal.paste_reminder = Indiciu: Cu un URL salvat în clipboard, puteți lipi direct în editor pentru a crea un link.
[filter] [filter]
string.asc = A - Z string.asc = A - Z
string.desc = Z - A string.desc = Z - A
@ -130,10 +181,16 @@ string.desc = Z - A
server_internal = Eroare internă a serverului server_internal = Eroare internă a serverului
network_error = Eroare de rețea network_error = Eroare de rețea
occurred = A apărut o eroare
report_message = Dacă credeți că aceasta este o problemă cu Forgejo, vă rugăm să căutați probleme pe <a href="%s" target="_blank">Codeberg</a> sau să deschideți o nouă problemă dacă este necesar.
not_found = Obiectul nu a putut fi găsit.
[startpage] [startpage]
install = Ușor de instalat install = Ușor de instalat
license = Sursă deschisă license = Sursă deschisă
app_desc = Un serviciu Git fără probleme, auto-găzduit
[install] [install]
require_db_desc = Forgejo are nevoie de MySQL, PostgreSQL, SQLite3 sau TiDB (protocol MySQL). require_db_desc = Forgejo are nevoie de MySQL, PostgreSQL, SQLite3 sau TiDB (protocol MySQL).
db_title = Setări bază de date db_title = Setări bază de date
@ -223,16 +280,33 @@ invalid_db_setting = Setările pentru bază de date sunt invalide: %v
no_reply_address = Domeniu pentru adrese de email ascunse no_reply_address = Domeniu pentru adrese de email ascunse
[search] [search]
user_kind = Caută utilizatori... user_kind = Căutați utilizatori…
team_kind = Caută echipe... team_kind = Căutați echipe…
code_kind = Caută cod... code_kind = Căutați cod…
project_kind = Caută proiecte... project_kind = Căutați proiecte…
package_kind = Caută pachete... package_kind = Căutați pachete…
org_kind = Caută organizații... org_kind = Căutați organizații…
code_search_unavailable = Căutarea de cod nu este disponibilă momentan. Te rog contactează administratorul site-ului. code_search_unavailable = Căutarea de cod nu este disponibilă momentan. Te rog contactează administratorul site-ului.
keyword_search_unavailable = Căutarea după cuvânt cheie nu este disponibilă momentan. Te rog contactează administratorul site-ului. keyword_search_unavailable = Căutarea după cuvânt cheie nu este disponibilă momentan. Te rog contactează administratorul site-ului.
no_results = Nu a fost găsit niciun rezultat corespunzător. no_results = Nu a fost găsit niciun rezultat corespunzător.
search = Căutați…
type_tooltip = Tipul căutării
fuzzy = Aproximată
fuzzy_tooltip = Includeți rezultate care sunt asemănătoare termenului de căutare
union = Cuvinte cheie
union_tooltip = Includeți rezultate care sunt asemănătoare cuvintelor cheie separate prin spațiu
exact = Exactă
exact_tooltip = Includeți doar rezultate care se potrivesc exact termenului de căutare
regexp = Expresie regulată
regexp_tooltip = Interpretați termenul de căutare ca o expresie regulată
repo_kind = Căutați repozitorii…
branch_kind = Căutați ramuri…
commit_kind = Căutați comiteri…
runner_kind = Căutați executori…
issue_kind = Căutați probleme…
pull_kind = Căutați cereri de extragere…
[aria] [aria]
navbar = Bară de navigare navbar = Bară de navigare
footer = Subsol footer = Subsol

View file

@ -755,7 +755,7 @@ public_profile=Публичный профиль
biography_placeholder=Кратко расскажите о себе другим! (Можно использовать Markdown) biography_placeholder=Кратко расскажите о себе другим! (Можно использовать Markdown)
location_placeholder=Пусть все знают, откуда вы location_placeholder=Пусть все знают, откуда вы
profile_desc=Ваш профиль profile_desc=Ваш профиль
password_username_disabled=Нелокальным пользователям запрещено изменение их имени пользователя. Для получения более подробной информации обратитесь к администратору сайта. password_username_disabled=Нелокальные пользователи не могут изменить имя. Для подробностей обратитесь к администрации сайта.
full_name=Полное имя full_name=Полное имя
website=Веб-сайт website=Веб-сайт
location=Местоположение location=Местоположение
@ -766,7 +766,7 @@ update_language_not_found=Язык «%s» недоступен.
update_language_success=Язык обновлён. update_language_success=Язык обновлён.
update_profile_success=Ваш профиль успешно обновлён. update_profile_success=Ваш профиль успешно обновлён.
change_username=Ваше имя пользователя было изменено. change_username=Ваше имя пользователя было изменено.
change_username_prompt=Обратите внимание: изменение имени пользователя также меняет URL вашей учётной записи. change_username_prompt=Учтите, что при изменении имени пользователя ссылка на ваш профиль тоже будет изменена.
change_username_redirect_prompt=Старое имя будет перенаправлять на новое до тех пор, пока оно не будет занято. change_username_redirect_prompt=Старое имя будет перенаправлять на новое до тех пор, пока оно не будет занято.
continue=Далее continue=Далее
cancel=Отмена cancel=Отмена
@ -1053,7 +1053,7 @@ hints = Подсказки
additional_repo_units_hint = Предлагать включить больше разделов в репозиториях additional_repo_units_hint = Предлагать включить больше разделов в репозиториях
update_hints = Обновить подсказки update_hints = Обновить подсказки
update_hints_success = Подсказки обновлены. update_hints_success = Подсказки обновлены.
additional_repo_units_hint_description = Показывать подсказку "Включить больше разделов" в репозиториях, в которых включены не все разделы. additional_repo_units_hint_description = Показывать подсказку «Включить больше разделов» в репозиториях, в которых включены не все разделы.
pronouns_custom = Другие pronouns_custom = Другие
pronouns = Местоимения pronouns = Местоимения
pronouns_unspecified = Не указаны pronouns_unspecified = Не указаны
@ -1063,7 +1063,7 @@ language.description = Выбранный язык будет сохранён
language.localization_project = Помогите с переводом Forgejo на свой язык! <a href="%s">Подробнее</a>. language.localization_project = Помогите с переводом Forgejo на свой язык! <a href="%s">Подробнее</a>.
user_block_yourself = Нельзя заблокировать себя. user_block_yourself = Нельзя заблокировать себя.
pronouns_custom_label = Другие местоимения pronouns_custom_label = Другие местоимения
change_username_redirect_prompt.with_cooldown.one = Прежнее имя будет доступно для использования другим пользователям после истечения защиты в %[1]d день. Вы сможете вернуть его себе во время срока защиты. change_username_redirect_prompt.with_cooldown.one = Прежнее имя будет доступно для использования другим пользователям после истечения простоя в %[1]d день. Вы сможете вернуть его себе во время срока простоя.
change_username_redirect_prompt.with_cooldown.few = Прежнее имя будет доступно для использования другим пользователям после истечения защиты в %[1]d дней. Вы сможете вернуть его себе во время срока защиты. change_username_redirect_prompt.with_cooldown.few = Прежнее имя будет доступно для использования другим пользователям после истечения защиты в %[1]d дней. Вы сможете вернуть его себе во время срока защиты.
keep_pronouns_private = Показывать местоимения только зарегистрированным пользователям keep_pronouns_private = Показывать местоимения только зарегистрированным пользователям
keep_pronouns_private.description = Местоимения будут скрыты от пользователей, не имеющих учётных записей на сервере. keep_pronouns_private.description = Местоимения будут скрыты от пользователей, не имеющих учётных записей на сервере.
@ -1092,6 +1092,8 @@ access_token_regeneration_desc = Будет создан новый токен,
regenerate_token_success = Токен был заменён. Приложения, использующие его, более не имеют доступа к этой учётной записи и должны получить новый токен. regenerate_token_success = Токен был заменён. Приложения, использующие его, более не имеют доступа к этой учётной записи и должны получить новый токен.
access_token_regeneration = Замена токена доступа access_token_regeneration = Замена токена доступа
ssh_token_help_ssh_agent = или, если вы используете SSH-агент, (с заданной переменной SSH_AUTH_SOCK):
[repo] [repo]
owner=Владелец owner=Владелец
owner_helper=Некоторые организации могут не отображаться в раскрывающемся списке из-за максимального ограничения количества репозиториев. owner_helper=Некоторые организации могут не отображаться в раскрывающемся списке из-за максимального ограничения количества репозиториев.
@ -1641,9 +1643,9 @@ issues.closed_at=`задача была закрыта %s`
issues.reopened_at=`задача была открыта снова %s` issues.reopened_at=`задача была открыта снова %s`
issues.commit_ref_at=`упоминание этой задачи в коммите %s` issues.commit_ref_at=`упоминание этой задачи в коммите %s`
issues.ref_issue_from=`<a href="%[2]s">упоминание этой задачи %[3]s</a> %[1]s` issues.ref_issue_from=`<a href="%[2]s">упоминание этой задачи %[3]s</a> %[1]s`
issues.ref_pull_from=`<a href="%[2]s">упоминание этого запроса слияния %[3]s</a> %[1]s` issues.ref_pull_from=`<a href="%[2]s">упомянул этот запрос на слияние %[3]s</a> %[1]s`
issues.ref_closing_from=`<a href="%[2]s">упоминание из запроса на слияние %[3]s, который закроет эту задачу</a> %[1]s` issues.ref_closing_from=`<a href="%[2]s">упомянул эту задачу в запросе на слияние %[3]s, который закроет её</a> %[1]s`
issues.ref_reopening_from=`<a href="%[2]s">упоминание из запроса на слияние %[3]s, который повторно откроет эту задачу</a> %[1]s` issues.ref_reopening_from=`<a href="%[2]s">упомянул эту задачу в запросе на слияние %[3]s, который переоткроет эту задачу</a> %[1]s`
issues.ref_closed_from=`<a href="%[3]s">закрыл этот запрос %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>` issues.ref_closed_from=`<a href="%[3]s">закрыл этот запрос %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>`
issues.ref_reopened_from=`<a href="%[3]s">задача была открыта снова %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>` issues.ref_reopened_from=`<a href="%[3]s">задача была открыта снова %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>`
issues.ref_from=`из %[1]s` issues.ref_from=`из %[1]s`
@ -1917,13 +1919,13 @@ pulls.merge_commit_id=ИД коммита слияния
pulls.require_signed_wont_sign=Данная ветвь ожидает подписанные коммиты, однако слияние не будет подписано pulls.require_signed_wont_sign=Данная ветвь ожидает подписанные коммиты, однако слияние не будет подписано
pulls.invalid_merge_option=Этот параметр слияния нельзя использовать для этого запроса на слияние. pulls.invalid_merge_option=Этот параметр слияния нельзя использовать для этого запроса на слияние.
pulls.merge_conflict=Слияние не удалось: произошел конфликт во время слияния. Совет: попробуйте другую стратегию pulls.merge_conflict=Слияние не удалось: при слиянии произошел конфликт. Попробуйте другую стратегию
pulls.merge_conflict_summary=Сообщение об ошибке pulls.merge_conflict_summary=Сообщение об ошибке
pulls.rebase_conflict=Слияние не удалось: произошел конфликт во время слияния: %[1]s. Совет: попробуйте другую стратегию pulls.rebase_conflict=Слияние не удалось: при перебазировании коммита произошел конфликт: %[1]s. Попробуйте другую стратегию
pulls.rebase_conflict_summary=Сообщение об ошибке pulls.rebase_conflict_summary=Сообщение об ошибке
pulls.unrelated_histories=Слияние не удалось: у источника и цели слияния нет общей истории. Совет: попробуйте другую стратегию pulls.unrelated_histories=Слияние не удалось: источник и целевая ветвь нет имеют общую историю. Попробуйте другую стратегию
pulls.merge_out_of_date=Слияние не удалось: при создании слияния база данных была обновлена. Подсказка: попробуйте ещё раз. pulls.merge_out_of_date=Слияние не удалось: при выполнении слияния база данных была обновлена. Попробуйте снова.
pulls.head_out_of_date=Слияние не удалось: во время слияния головной коммит был обновлён. Попробуйте ещё раз. pulls.head_out_of_date=Слияние не удалось: при слиянии был изменён головной коммит. Попробуйте снова.
pulls.push_rejected=Отправка была отклонена. Проверьте Git-хуки этого репозитория. pulls.push_rejected=Отправка была отклонена. Проверьте Git-хуки этого репозитория.
pulls.push_rejected_summary=Полная причина отклонения pulls.push_rejected_summary=Полная причина отклонения
pulls.push_rejected_no_message=Отправка была отклонена и удалённый сервер не указал причину. Проверьте Git-хуки этого репозитория pulls.push_rejected_no_message=Отправка была отклонена и удалённый сервер не указал причину. Проверьте Git-хуки этого репозитория
@ -2754,7 +2756,7 @@ settings.wiki_rename_branch_main_desc = Переименовать внутре
settings.wiki_branch_rename_success = Название ветви вики репозитория успешно нормализовано. settings.wiki_branch_rename_success = Название ветви вики репозитория успешно нормализовано.
ambiguous_runes_description = `Этот файл содержит символы Юникода, которые легко спутать с похожими. Если так и должно быть, можете спокойно игнорировать это предупреждение. Отобразить символы можно кнопкой Экранирования.` ambiguous_runes_description = `Этот файл содержит символы Юникода, которые легко спутать с похожими. Если так и должно быть, можете спокойно игнорировать это предупреждение. Отобразить символы можно кнопкой Экранирования.`
editor.invalid_commit_mail = Неправильная почта для создания коммита. editor.invalid_commit_mail = Неправильная почта для создания коммита.
pulls.has_merged = Слияние не удалось: запрос уже был слит, изменение целевой ветви или повторное слияние невозможно. pulls.has_merged = Не удалось: слияние уже выполнено изменение целевой ветви или повторное слияние невозможно.
settings.enter_repo_name = Введите имя владельца и название репозитория как указано: settings.enter_repo_name = Введите имя владельца и название репозитория как указано:
signing.wont_sign.error = Не удалось проверить возможность подписать коммит. signing.wont_sign.error = Не удалось проверить возможность подписать коммит.
signing.wont_sign.nokey = Сервер не предоставляет ключ для подписи коммита. signing.wont_sign.nokey = Сервер не предоставляет ключ для подписи коммита.

Some files were not shown because too many files have changed in this diff Show more