Template
1
0
Fork 0
mirror of https://codeberg.org/forgejo/forgejo synced 2024-11-25 11:16:11 +01:00

Merge branch 'forgejo' into escape_markdown_discord

This commit is contained in:
Marco De Araujo 2024-11-05 12:47:08 -04:00
commit 5555d46c8a
256 changed files with 7398 additions and 3520 deletions

View file

@ -137,9 +137,6 @@ code.gitea.io/gitea/modules/git
AddChangesWithArgs
CommitChanges
CommitChangesWithArgs
IsErrExecTimeout
ErrExecTimeout.Error
ErrUnsupportedVersion.Error
SetUpdateHook
openRepositoryWithDefaultContext
IsTagExist

View file

@ -45,7 +45,7 @@ jobs:
cat <<'EOF'
${{ toJSON(github) }}
EOF
- uses: https://code.forgejo.org/actions/git-backporting@v4.8.2
- uses: https://code.forgejo.org/actions/git-backporting@v4.8.4
with:
target-branch-pattern: "^backport/(?<target>(v.*))$"
strategy: ort

View file

@ -70,6 +70,14 @@ jobs:
# https://forgejo.org/docs/next/developer/infrastructure
curl -o /dev/null -sS https://v$major.next.forgejo.org/.well-known/wakeup-on-logs/forgejo-v$major
- name: upgrade v*.next.forgejo.org (k8s)
uses: https://code.forgejo.org/infrastructure/next-digest@v1.1.0
with:
url: https://placeholder:${{ secrets.TOKEN_NEXT_DIGEST }}@code.forgejo.org/infrastructure/next-digest
ref_name: '${{ github.ref_name }}'
image: 'codeberg.org/forgejo-experimental/forgejo'
tag_suffix: '-rootless'
- name: set up go for the DNS update below
if: vars.ROLE == 'forgejo-experimental' && secrets.OVH_APP_KEY != ''
uses: https://code.forgejo.org/actions/setup-go@v5

View file

@ -23,7 +23,7 @@ jobs:
runs-on: docker
container:
image: code.forgejo.org/forgejo-contrib/renovate:38.128.6
image: code.forgejo.org/forgejo-contrib/renovate:38.142.5
steps:
- name: Load renovate repo cache

View file

@ -49,7 +49,7 @@ GOVULNCHECK_PACKAGE ?= golang.org/x/vuln/cmd/govulncheck@v1 # renovate: datasour
DEADCODE_PACKAGE ?= golang.org/x/tools/cmd/deadcode@v0.26.0 # renovate: datasource=go
GOMOCK_PACKAGE ?= go.uber.org/mock/mockgen@v0.4.0 # renovate: datasource=go
GOPLS_PACKAGE ?= golang.org/x/tools/gopls@v0.16.2 # renovate: datasource=go
RENOVATE_NPM_PACKAGE ?= renovate@38.128.6 # renovate: datasource=docker packageName=code.forgejo.org/forgejo-contrib/renovate
RENOVATE_NPM_PACKAGE ?= renovate@38.142.5 # renovate: datasource=docker packageName=code.forgejo.org/forgejo-contrib/renovate
ifeq ($(HAS_GO), yes)
CGO_EXTRA_CFLAGS := -DSQLITE_MAX_VARIABLE_NUMBER=32766
@ -164,9 +164,8 @@ TAR_EXCLUDES := .git data indexers queues log node_modules $(EXECUTABLE) $(FOMAN
GO_DIRS := build cmd models modules routers services tests
WEB_DIRS := web_src/js web_src/css
ESLINT_FILES := web_src/js tools *.js *.mjs tests/e2e/*.js tests/e2e/shared/*.js
STYLELINT_FILES := web_src/css web_src/js/components/*.vue
SPELLCHECK_FILES := $(GO_DIRS) $(WEB_DIRS) docs/content templates options/locale/locale_en-US.ini .github $(wildcard *.go *.js *.md *.yml *.yaml *.toml)
SPELLCHECK_FILES := $(GO_DIRS) $(WEB_DIRS) docs/content templates options/locale/locale_en-US.ini .github $(wildcard *.go *.js *.ts *.vue *.md *.yml *.yaml *.toml)
GO_SOURCES := $(wildcard *.go)
GO_SOURCES += $(shell find $(GO_DIRS) -type f -name "*.go" ! -path modules/options/bindata.go ! -path modules/public/bindata.go ! -path modules/templates/bindata.go)
@ -418,7 +417,7 @@ lint-frontend: lint-js lint-css
lint-frontend-fix: lint-js-fix lint-css-fix
.PHONY: lint-backend
lint-backend: lint-go lint-go-vet lint-editorconfig lint-renovate
lint-backend: lint-go lint-go-vet lint-editorconfig lint-renovate lint-locale
.PHONY: lint-backend-fix
lint-backend-fix: lint-go-fix lint-go-vet lint-editorconfig
@ -437,11 +436,11 @@ lint-codespell-fix-i:
.PHONY: lint-js
lint-js: node_modules
npx eslint --color --max-warnings=0 $(ESLINT_FILES)
npx eslint --color --max-warnings=0
.PHONY: lint-js-fix
lint-js-fix: node_modules
npx eslint --color --max-warnings=0 $(ESLINT_FILES) --fix
npx eslint --color --max-warnings=0 --fix
.PHONY: lint-css
lint-css: node_modules
@ -461,6 +460,10 @@ lint-renovate: node_modules
@if grep --quiet --extended-regexp -e '^( WARN:|ERROR:)' .lint-renovate ; then cat .lint-renovate ; rm .lint-renovate ; exit 1 ; fi
@rm .lint-renovate
.PHONY: lint-locale
lint-locale:
$(GO) run build/lint-locale.go
.PHONY: lint-md
lint-md: node_modules
npx markdownlint docs *.md

View file

@ -6,6 +6,10 @@ A [patch or minor release](https://semver.org/spec/v2.0.0.html) (e.g. upgrading
The release notes of each release [are available in the corresponding milestone](https://codeberg.org/forgejo/forgejo/milestones), starting with [Forgejo 7.0.7](https://codeberg.org/forgejo/forgejo/milestone/7683) and [Forgejo 8.0.1](https://codeberg.org/forgejo/forgejo/milestone/7682).
## 9.0.1
The Forgejo v9.0.1 release notes are [available in the v9.0.1 milestone](https://codeberg.org/forgejo/forgejo/milestone/8544).
## 9.0.0
The Forgejo v9.0.0 release notes are [available in the v9.0.0 milestone](https://codeberg.org/forgejo/forgejo/milestone/7235).
@ -159,6 +163,10 @@ A [companion blog post](https://forgejo.org/2024-07-release-v8-0/) provides addi
- [PR](https://codeberg.org/forgejo/forgejo/pulls/2937): <!--number 2937 --><!--number--><!--description -->31 March updates<!--description-->
<!--end release-notes-assistant-->
## 7.0.10
The Forgejo v7.0.10 release notes are [available in the v7.0.10 milestone](https://codeberg.org/forgejo/forgejo/milestone/8286).
## 7.0.9
The Forgejo v7.0.9 release notes are [available in the v7.0.9 milestone](https://codeberg.org/forgejo/forgejo/milestone/8232).

View file

@ -567,7 +567,7 @@
{
"name": "github.com/gorilla/sessions",
"path": "github.com/gorilla/sessions/LICENSE",
"licenseText": "Copyright (c) 2023 The Gorilla Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n\t * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n\t * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n\t * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
"licenseText": "Copyright (c) 2024 The Gorilla Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n\t * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n\t * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n\t * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
},
{
"name": "github.com/hashicorp/go-cleanhttp",

156
build/lint-locale.go Normal file
View file

@ -0,0 +1,156 @@
// Copyright 2024 The Forgejo Authors. All rights reserved.
// SPDX-License-Identifier: MIT
//nolint:forbidigo
package main
import (
"fmt"
"html"
"io/fs"
"os"
"path/filepath"
"regexp"
"slices"
"strings"
"github.com/microcosm-cc/bluemonday"
"github.com/sergi/go-diff/diffmatchpatch"
"gopkg.in/ini.v1" //nolint:depguard
)
var (
policy *bluemonday.Policy
tagRemover *strings.Replacer
safeURL = "https://TO-BE-REPLACED.COM"
// Matches href="", href="#", href="%s", href="#%s", href="%[1]s" and href="#%[1]s".
placeHolderRegex = regexp.MustCompile(`href="#?(%s|%\[\d\]s)?"`)
)
func initBlueMondayPolicy() {
policy = bluemonday.NewPolicy()
policy.RequireParseableURLs(true)
policy.AllowURLSchemes("https")
// Only allow safe URL on href.
// Only allow target="_blank".
// Only allow rel="nopener noreferrer", rel="noopener" and rel="noreferrer".
// Only allow placeholder on id and class.
policy.AllowAttrs("href").Matching(regexp.MustCompile("^" + regexp.QuoteMeta(safeURL) + "$")).OnElements("a")
policy.AllowAttrs("target").Matching(regexp.MustCompile("^_blank$")).OnElements("a")
policy.AllowAttrs("rel").Matching(regexp.MustCompile("^(noopener|noreferrer|noopener noreferrer)$")).OnElements("a")
policy.AllowAttrs("id", "class").Matching(regexp.MustCompile(`^%s|%\[\d\]s$`)).OnElements("a")
// Only allow positional placeholder as class.
positionalPlaceholderRe := regexp.MustCompile(`^%\[\d\]s$`)
policy.AllowAttrs("class").Matching(positionalPlaceholderRe).OnElements("strong")
policy.AllowAttrs("id").Matching(positionalPlaceholderRe).OnElements("code")
// Allowed elements with no attributes. Must be a recognized tagname.
policy.AllowElements("strong", "br", "b", "strike", "code", "i")
// TODO: Remove <c> in `actions.workflow.dispatch.trigger_found`.
policy.AllowNoAttrs().OnElements("c")
}
func initRemoveTags() {
oldnew := []string{}
for _, el := range []string{
"email@example.com", "correu@example.com", "epasts@domens.lv", "email@exemplo.com", "eposta@ornek.com", "email@példa.hu", "email@esempio.it",
"user", "utente", "lietotājs", "gebruiker", "usuário", "Benutzer", "Bruker",
"server", "servidor", "kiszolgáló", "serveris",
"label", "etichetta", "etiķete", "rótulo", "Label", "utilizador",
"filename", "bestandsnaam", "dosyaadi", "fails", "nome do arquivo",
} {
oldnew = append(oldnew, "<"+el+">", "REPLACED-TAG")
}
tagRemover = strings.NewReplacer(oldnew...)
}
func preprocessTranslationValue(value string) string {
// href should be a parsable URL, replace placeholder strings with a safe url.
value = placeHolderRegex.ReplaceAllString(value, `href="`+safeURL+`"`)
// Remove tags that aren't tags but will be parsed as tags. We already know they are safe and sound.
value = tagRemover.Replace(value)
return value
}
func checkLocaleContent(localeContent []byte) []string {
// Same configuration as Forgejo uses.
cfg := ini.Empty(ini.LoadOptions{
IgnoreContinuation: true,
})
cfg.NameMapper = ini.SnackCase
if err := cfg.Append(localeContent); err != nil {
panic(err)
}
dmp := diffmatchpatch.New()
errors := []string{}
for _, section := range cfg.Sections() {
for _, key := range section.Keys() {
var trKey string
if section.Name() == "" || section.Name() == "DEFAULT" || section.Name() == "common" {
trKey = key.Name()
} else {
trKey = section.Name() + "." + key.Name()
}
keyValue := preprocessTranslationValue(key.Value())
if html.UnescapeString(policy.Sanitize(keyValue)) != keyValue {
// Create a nice diff of the difference.
diffs := dmp.DiffMain(keyValue, html.UnescapeString(policy.Sanitize(keyValue)), false)
diffs = dmp.DiffCleanupSemantic(diffs)
diffs = dmp.DiffCleanupEfficiency(diffs)
errors = append(errors, trKey+": "+dmp.DiffPrettyText(diffs))
}
}
}
return errors
}
func main() {
initBlueMondayPolicy()
initRemoveTags()
localeDir := filepath.Join("options", "locale")
localeFiles, err := os.ReadDir(localeDir)
if err != nil {
panic(err)
}
if !slices.ContainsFunc(localeFiles, func(e fs.DirEntry) bool { return strings.HasSuffix(e.Name(), ".ini") }) {
fmt.Println("No locale files found")
os.Exit(1)
}
exitCode := 0
for _, localeFile := range localeFiles {
if !strings.HasSuffix(localeFile.Name(), ".ini") {
continue
}
localeContent, err := os.ReadFile(filepath.Join(localeDir, localeFile.Name()))
if err != nil {
panic(err)
}
if err := checkLocaleContent(localeContent); len(err) > 0 {
fmt.Println(localeFile.Name())
fmt.Println(strings.Join(err, "\n"))
fmt.Println()
exitCode = 1
}
}
os.Exit(exitCode)
}

65
build/lint-locale_test.go Normal file
View file

@ -0,0 +1,65 @@
// Copyright 2024 The Forgejo Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package main
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestLocalizationPolicy(t *testing.T) {
initBlueMondayPolicy()
initRemoveTags()
t.Run("Remove tags", func(t *testing.T) {
assert.Empty(t, checkLocaleContent([]byte(`hidden_comment_types_description = Comment types checked here will not be shown inside issue pages. Checking "Label" for example removes all "<user> added/removed <label>" comments.`)))
assert.EqualValues(t, []string{"key: \x1b[31m<not-an-allowed-key>\x1b[0m REPLACED-TAG"}, checkLocaleContent([]byte(`key = "<not-an-allowed-key> <label>"`)))
assert.EqualValues(t, []string{"key: \x1b[31m<user@example.com>\x1b[0m REPLACED-TAG"}, checkLocaleContent([]byte(`key = "<user@example.com> <email@example.com>"`)))
assert.EqualValues(t, []string{"key: \x1b[31m<tag>\x1b[0m REPLACED-TAG \x1b[31m</tag>\x1b[0m"}, checkLocaleContent([]byte(`key = "<tag> <email@example.com> </tag>"`)))
})
t.Run("Specific exception", func(t *testing.T) {
assert.Empty(t, checkLocaleContent([]byte(`workflow.dispatch.trigger_found = This workflow has a <c>workflow_dispatch</c> event trigger.`)))
assert.Empty(t, checkLocaleContent([]byte(`pulls.title_desc_one = wants to merge %[1]d commit from <code>%[2]s</code> into <code id="%[4]s">%[3]s</code>`)))
assert.Empty(t, checkLocaleContent([]byte(`editor.commit_directly_to_this_branch = Commit directly to the <strong class="%[2]s">%[1]s</strong> branch.`)))
assert.EqualValues(t, []string{"workflow.dispatch.trigger_found: This workflow has a \x1b[31m<d>\x1b[0mworkflow_dispatch\x1b[31m</d>\x1b[0m event trigger."}, checkLocaleContent([]byte(`workflow.dispatch.trigger_found = This workflow has a <d>workflow_dispatch</d> event trigger.`)))
assert.EqualValues(t, []string{"key: <code\x1b[31m id=\"branch_targe\"\x1b[0m>%[3]s</code>"}, checkLocaleContent([]byte(`key = <code id="branch_targe">%[3]s</code>`)))
assert.EqualValues(t, []string{"key: <a\x1b[31m class=\"ui sh\"\x1b[0m href=\"https://TO-BE-REPLACED.COM\">"}, checkLocaleContent([]byte(`key = <a class="ui sh" href="%[3]s">`)))
assert.EqualValues(t, []string{"key: <a\x1b[31m class=\"js-click-me\"\x1b[0m href=\"https://TO-BE-REPLACED.COM\">"}, checkLocaleContent([]byte(`key = <a class="js-click-me" href="%[3]s">`)))
assert.EqualValues(t, []string{"key: <strong\x1b[31m class=\"branch-target\"\x1b[0m>%[1]s</strong>"}, checkLocaleContent([]byte(`key = <strong class="branch-target">%[1]s</strong>`)))
})
t.Run("General safe tags", func(t *testing.T) {
assert.Empty(t, checkLocaleContent([]byte("error404 = The page you are trying to reach either <strong>does not exist</strong> or <strong>you are not authorized</strong> to view it.")))
assert.Empty(t, checkLocaleContent([]byte("teams.specific_repositories_helper = Members will only have access to repositories explicitly added to the team. Selecting this <strong>will not</strong> automatically remove repositories already added with <i>All repositories</i>.")))
assert.Empty(t, checkLocaleContent([]byte("sqlite_helper = File path for the SQLite3 database.<br>Enter an absolute path if you run Forgejo as a service.")))
assert.Empty(t, checkLocaleContent([]byte("hi_user_x = Hi <b>%s</b>,")))
assert.EqualValues(t, []string{"error404: The page you are trying to reach either <strong\x1b[31m title='aaa'\x1b[0m>does not exist</strong> or <strong>you are not authorized</strong> to view it."}, checkLocaleContent([]byte("error404 = The page you are trying to reach either <strong title='aaa'>does not exist</strong> or <strong>you are not authorized</strong> to view it.")))
})
t.Run("<a>", func(t *testing.T) {
assert.Empty(t, checkLocaleContent([]byte(`admin.new_user.text = Please <a href="%s">click here</a> to manage this user from the admin panel.`)))
assert.Empty(t, checkLocaleContent([]byte(`access_token_desc = Selected token permissions limit authorization only to the corresponding <a href="%[1]s" target="_blank">API</a> routes. Read the <a href="%[2]s" target="_blank">documentation</a> for more information.`)))
assert.Empty(t, checkLocaleContent([]byte(`webauthn_desc = Security keys are hardware devices containing cryptographic keys. They can be used for two-factor authentication. Security keys must support the <a rel="noreferrer" target="_blank" href="%s">WebAuthn Authenticator</a> standard.`)))
assert.Empty(t, checkLocaleContent([]byte("issues.closed_at = `closed this issue <a id=\"%[1]s\" href=\"#%[1]s\">%[2]s</a>`")))
assert.EqualValues(t, []string{"key: \x1b[31m<a href=\"https://example.com\">\x1b[0m"}, checkLocaleContent([]byte(`key = <a href="https://example.com">`)))
assert.EqualValues(t, []string{"key: \x1b[31m<a href=\"javascript:alert('1')\">\x1b[0m"}, checkLocaleContent([]byte(`key = <a href="javascript:alert('1')">`)))
assert.EqualValues(t, []string{"key: <a href=\"https://TO-BE-REPLACED.COM\"\x1b[31m download\x1b[0m>"}, checkLocaleContent([]byte(`key = <a href="%s" download>`)))
assert.EqualValues(t, []string{"key: <a href=\"https://TO-BE-REPLACED.COM\"\x1b[31m target=\"_self\"\x1b[0m>"}, checkLocaleContent([]byte(`key = <a href="%s" target="_self">`)))
assert.EqualValues(t, []string{"key: \x1b[31m<a href=\"https://example.com/%s\">\x1b[0m"}, checkLocaleContent([]byte(`key = <a href="https://example.com/%s">`)))
assert.EqualValues(t, []string{"key: \x1b[31m<a href=\"https://example.com/?q=%s\">\x1b[0m"}, checkLocaleContent([]byte(`key = <a href="https://example.com/?q=%s">`)))
assert.EqualValues(t, []string{"key: \x1b[31m<a href=\"%s/open-redirect\">\x1b[0m"}, checkLocaleContent([]byte(`key = <a href="%s/open-redirect">`)))
assert.EqualValues(t, []string{"key: \x1b[31m<a href=\"%s?q=open-redirect\">\x1b[0m"}, checkLocaleContent([]byte(`key = <a href="%s?q=open-redirect">`)))
})
t.Run("Escaped HTML characters", func(t *testing.T) {
assert.Empty(t, checkLocaleContent([]byte("activity.git_stats_push_to_branch = `إلى %s و\"`")))
assert.EqualValues(t, []string{"key: و\x1b[31m&nbsp\x1b[0m\x1b[32m\u00a0\x1b[0m"}, checkLocaleContent([]byte(`key = و&nbsp;`)))
})
}

View file

@ -386,7 +386,7 @@ func (a *authService) addLdapSimpleAuth(c *cli.Context) error {
return a.createAuthSource(ctx, authSource)
}
// updateLdapBindDn updates a new LDAP (simple auth) authentication source.
// updateLdapSimpleAuth updates a new LDAP (simple auth) authentication source.
func (a *authService) updateLdapSimpleAuth(c *cli.Context) error {
ctx, cancel := installSignals()
defer cancel()

View file

@ -925,6 +925,24 @@ LEVEL = Info
;; Valid site url schemes for user profiles
;VALID_SITE_URL_SCHEMES=http,https
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;[service.explore]
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; Only allow signed in users to view the explore pages.
;REQUIRE_SIGNIN_VIEW = false
;;
;; Disable the users explore page.
;DISABLE_USERS_PAGE = false
;;
;; Disable the organizations explore page.
;DISABLE_ORGANIZATIONS_PAGE = false
;;
;; Disable the code explore page.
;DISABLE_CODE_PAGE = false
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

File diff suppressed because it is too large Load diff

10
go.mod
View file

@ -34,7 +34,7 @@ require (
github.com/editorconfig/editorconfig-core-go/v2 v2.6.2
github.com/emersion/go-imap v1.2.1
github.com/felixge/fgprof v0.9.5
github.com/fsnotify/fsnotify v1.7.0
github.com/fsnotify/fsnotify v1.8.0
github.com/gliderlabs/ssh v0.3.7
github.com/go-ap/activitypub v0.0.0-20231114162308-e219254dc5c9
github.com/go-ap/jsonld v0.0.0-20221030091449-f2a191312c73
@ -57,7 +57,7 @@ require (
github.com/google/pprof v0.0.0-20241017200806-017d972448fc
github.com/google/uuid v1.6.0
github.com/gorilla/feeds v1.2.0
github.com/gorilla/sessions v1.2.2
github.com/gorilla/sessions v1.4.0
github.com/h2non/gock v1.2.0
github.com/hashicorp/go-version v1.6.0
github.com/hashicorp/golang-lru/v2 v2.0.7
@ -72,7 +72,7 @@ require (
github.com/markbates/goth v1.80.0
github.com/mattn/go-isatty v0.0.20
github.com/mattn/go-sqlite3 v1.14.24
github.com/meilisearch/meilisearch-go v0.28.0
github.com/meilisearch/meilisearch-go v0.29.0
github.com/mholt/archiver/v3 v3.5.1
github.com/microcosm-cc/bluemonday v1.0.27
github.com/minio/minio-go/v7 v7.0.78
@ -97,7 +97,7 @@ require (
github.com/valyala/fastjson v1.6.4
github.com/xanzy/go-gitlab v0.109.0
github.com/yohcop/openid-go v1.0.1
github.com/yuin/goldmark v1.7.4
github.com/yuin/goldmark v1.7.8
github.com/yuin/goldmark-highlighting/v2 v2.0.0-20230729083705-37449abec8cc
go.uber.org/mock v0.4.0
golang.org/x/crypto v0.28.0
@ -293,6 +293,6 @@ replace github.com/hashicorp/go-version => github.com/6543/go-version v1.3.1
replace github.com/shurcooL/vfsgen => github.com/lunny/vfsgen v0.0.0-20220105142115-2c99e1ffdfa0
replace github.com/nektos/act => code.forgejo.org/forgejo/act v1.21.3
replace github.com/nektos/act => code.forgejo.org/forgejo/act v1.21.5
replace github.com/mholt/archiver/v3 => code.forgejo.org/forgejo/archiver/v3 v3.5.1

20
go.sum
View file

@ -4,8 +4,8 @@ code.forgejo.org/f3/gof3/v3 v3.7.0 h1:ZfuCP8CGm8ZJbWmL+V0pUu3E0X4FCAA7GfRDy/y5/K
code.forgejo.org/f3/gof3/v3 v3.7.0/go.mod h1:oNhOeqD4DZYjVcNjQXIOdDX9b/1tqxi9ITLS8H9/Csw=
code.forgejo.org/forgejo-contrib/go-libravatar v0.0.0-20191008002943-06d1c002b251 h1:HTZl3CBk3ABNYtFI6TPLvJgGKFIhKT5CBk0sbOtkDKU=
code.forgejo.org/forgejo-contrib/go-libravatar v0.0.0-20191008002943-06d1c002b251/go.mod h1:PphB88CPbx601QrWPMZATeorACeVmQlyv3u+uUMbSaM=
code.forgejo.org/forgejo/act v1.21.3 h1:EeJbrz0aar2QhIcBlOW5gjK1rjrQxcAvQSPpG/R1h5w=
code.forgejo.org/forgejo/act v1.21.3/go.mod h1:+PcvJ9iv+NTFeJSh79ra9Jbk9l0vvyA9D9me5/dbxYM=
code.forgejo.org/forgejo/act v1.21.5 h1:rWI+bhClocogdNwjRrM836rZYY7JBcHY3VUAwkYqEtw=
code.forgejo.org/forgejo/act v1.21.5/go.mod h1:+PcvJ9iv+NTFeJSh79ra9Jbk9l0vvyA9D9me5/dbxYM=
code.forgejo.org/forgejo/archiver/v3 v3.5.1 h1:UmmbA7D5550uf71SQjarmrn6yKwOGxtEjb3jaYYtmSE=
code.forgejo.org/forgejo/archiver/v3 v3.5.1/go.mod h1:e3dqJ7H78uzsRSEACH1joayhuSyhnonssnDhppzS1L4=
code.forgejo.org/forgejo/reply v1.0.2 h1:dMhQCHV6/O3L5CLWNTol+dNzDAuyCK88z4J/lCdgFuQ=
@ -221,8 +221,8 @@ github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHk
github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M=
github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E=
github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ=
github.com/gliderlabs/ssh v0.3.7 h1:iV3Bqi942d9huXnzEF2Mt+CY9gLu8DNM4Obd+8bODRE=
@ -381,8 +381,8 @@ github.com/gorilla/pat v0.0.0-20180118222023-199c85a7f6d1 h1:LqbZZ9sNMWVjeXS4NN5
github.com/gorilla/pat v0.0.0-20180118222023-199c85a7f6d1/go.mod h1:YeAe0gNeiNT5hoiZRI4yiOky6jVdNvfO2N6Kav/HmxY=
github.com/gorilla/securecookie v1.1.2 h1:YCIWL56dvtr73r6715mJs5ZvhtnY73hBvEF8kXD8ePA=
github.com/gorilla/securecookie v1.1.2/go.mod h1:NfCASbcHqRSY+3a8tlWJwsQap2VX5pwzwo4h3eOamfo=
github.com/gorilla/sessions v1.2.2 h1:lqzMYz6bOfvn2WriPUjNByzeXIlVzURcPmgMczkmTjY=
github.com/gorilla/sessions v1.2.2/go.mod h1:ePLdVu+jbEgHH+KWw8I1z2wqd0BAdAQh/8LRvBeoNcQ=
github.com/gorilla/sessions v1.4.0 h1:kpIYOp/oi6MG/p5PgxApU8srsSw9tuFbt46Lt7auzqQ=
github.com/gorilla/sessions v1.4.0/go.mod h1:FLWm50oby91+hl7p/wRxDth9bWSuk0qVL2emc7lT5ik=
github.com/h2non/gock v1.2.0 h1:K6ol8rfrRkUOefooBC8elXoaNGYkpp7y2qcxGG6BzUE=
github.com/h2non/gock v1.2.0/go.mod h1:tNhoxHYW2W42cYkYb1WqzdbYIieALC99kpYr7rH/BQk=
github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542 h1:2VTzZjLZBgl62/EtslCrtky5vbi9dd7HrQPQIx6wqiw=
@ -491,8 +491,8 @@ github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6T
github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
github.com/mattn/go-sqlite3 v1.14.24 h1:tpSp2G2KyMnnQu99ngJ47EIkWVmliIizyZBfPrBWDRM=
github.com/mattn/go-sqlite3 v1.14.24/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
github.com/meilisearch/meilisearch-go v0.28.0 h1:f3XJ66ZM+R8bANAOLqsjvoq/HhQNpVJPYoNt6QgNzME=
github.com/meilisearch/meilisearch-go v0.28.0/go.mod h1:Szcc9CaDiKIfjdgdt49jlmDKpEzjD+x+b6Y6heMdlQ0=
github.com/meilisearch/meilisearch-go v0.29.0 h1:HZ9NEKN59USINQ/DXJge/aaXq8IrsKbXGTdAoBaaDz4=
github.com/meilisearch/meilisearch-go v0.29.0/go.mod h1:2cRCAn4ddySUsFfNDLVPod/plRibQsJkXF/4gLhxbOk=
github.com/mholt/acmez/v2 v2.0.3 h1:CgDBlEwg3QBp6s45tPQmFIBrkRIkBT4rW4orMM6p4sw=
github.com/mholt/acmez/v2 v2.0.3/go.mod h1:pQ1ysaDeGrIMvJ9dfJMk5kJNkn7L2sb3UhyrX6Q91cw=
github.com/microcosm-cc/bluemonday v1.0.27 h1:MpEUotklkwCSLeH+Qdx1VJgNqLlpY2KXwXFM08ygZfk=
@ -692,8 +692,8 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
github.com/yuin/goldmark v1.4.15/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
github.com/yuin/goldmark v1.7.4 h1:BDXOHExt+A7gwPCJgPIIq7ENvceR7we7rOS9TNoLZeg=
github.com/yuin/goldmark v1.7.4/go.mod h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRlaOzY1E=
github.com/yuin/goldmark v1.7.8 h1:iERMLn0/QJeHFhxSt3p6PeN9mGnvIKSpG9YYorDMnic=
github.com/yuin/goldmark v1.7.8/go.mod h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRlaOzY1E=
github.com/yuin/goldmark-highlighting/v2 v2.0.0-20230729083705-37449abec8cc h1:+IAOyRda+RLrxa1WC7umKOZRsGq4QrFFMYApOeHzQwQ=
github.com/yuin/goldmark-highlighting/v2 v2.0.0-20230729083705-37449abec8cc/go.mod h1:ovIvrum6DQJA4QsJSovrkC4saKHQVs7TvcaeO8AIl5I=
github.com/zeebo/assert v1.1.0 h1:hU1L1vLTHsnO8x8c9KAR5GmM5QscxHg5RNU5z5qbUWY=

View file

@ -146,7 +146,11 @@ func (run *ActionRun) GetPushEventPayload() (*api.PushPayload, error) {
}
func (run *ActionRun) GetPullRequestEventPayload() (*api.PullRequestPayload, error) {
if run.Event == webhook_module.HookEventPullRequest || run.Event == webhook_module.HookEventPullRequestSync {
if run.Event == webhook_module.HookEventPullRequest ||
run.Event == webhook_module.HookEventPullRequestSync ||
run.Event == webhook_module.HookEventPullRequestAssign ||
run.Event == webhook_module.HookEventPullRequestMilestone ||
run.Event == webhook_module.HookEventPullRequestLabel {
var payload api.PullRequestPayload
if err := json.Unmarshal([]byte(run.EventPayload), &payload); err != nil {
return nil, err

View file

@ -10,6 +10,7 @@ import (
_ "code.gitea.io/gitea/models"
_ "code.gitea.io/gitea/models/actions"
_ "code.gitea.io/gitea/models/forgefed"
)
func TestMain(m *testing.M) {

View file

@ -12,6 +12,7 @@ import (
_ "code.gitea.io/gitea/models/actions"
_ "code.gitea.io/gitea/models/activities"
_ "code.gitea.io/gitea/models/auth"
_ "code.gitea.io/gitea/models/forgefed"
_ "code.gitea.io/gitea/models/perm/access"
)

View file

@ -0,0 +1 @@
[] # empty

View file

@ -0,0 +1 @@
[] # empty

View file

@ -10,6 +10,7 @@ import (
_ "code.gitea.io/gitea/models"
_ "code.gitea.io/gitea/models/actions"
_ "code.gitea.io/gitea/models/activities"
_ "code.gitea.io/gitea/models/forgefed"
)
func TestMain(m *testing.M) {

View file

@ -82,6 +82,8 @@ var migrations = []*Migration{
NewMigration("Add SSH keypair to `pull_mirror` table", AddSSHKeypairToPushMirror),
// v22 -> v23
NewMigration("Add `legacy` to `web_authn_credential` table", AddLegacyToWebAuthnCredential),
// v23 -> v24
NewMigration("Add `delete_branch_after_merge` to `auto_merge` table", AddDeleteBranchAfterMergeToAutoMerge),
}
// GetCurrentDBVersion returns the current Forgejo database version.

View file

@ -0,0 +1,16 @@
// Copyright 2024 The Forgejo Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package forgejo_migrations //nolint:revive
import "xorm.io/xorm"
// AddDeleteBranchAfterMergeToAutoMerge: add DeleteBranchAfterMerge column, setting existing rows to false
func AddDeleteBranchAfterMergeToAutoMerge(x *xorm.Engine) error {
type AutoMerge struct {
ID int64 `xorm:"pk autoincr"`
DeleteBranchAfterMerge bool `xorm:"NOT NULL DEFAULT false"`
}
return x.Sync(&AutoMerge{})
}

View file

@ -11,6 +11,7 @@ import (
_ "code.gitea.io/gitea/models"
_ "code.gitea.io/gitea/models/actions"
_ "code.gitea.io/gitea/models/activities"
_ "code.gitea.io/gitea/models/forgefed"
)
func TestMain(m *testing.M) {

View file

@ -222,43 +222,51 @@ func (r RoleInRepo) LocaleHelper(lang translation.Locale) string {
return lang.TrString("repo.issues.role." + string(r) + "_helper")
}
type RequestReviewTarget interface {
ID() int64
Name() string
Type() string
}
// Comment represents a comment in commit and issue page.
type Comment struct {
ID int64 `xorm:"pk autoincr"`
Type CommentType `xorm:"INDEX"`
PosterID int64 `xorm:"INDEX"`
Poster *user_model.User `xorm:"-"`
OriginalAuthor string
OriginalAuthorID int64
IssueID int64 `xorm:"INDEX"`
Issue *Issue `xorm:"-"`
LabelID int64
Label *Label `xorm:"-"`
AddedLabels []*Label `xorm:"-"`
RemovedLabels []*Label `xorm:"-"`
OldProjectID int64
ProjectID int64
OldProject *project_model.Project `xorm:"-"`
Project *project_model.Project `xorm:"-"`
OldMilestoneID int64
MilestoneID int64
OldMilestone *Milestone `xorm:"-"`
Milestone *Milestone `xorm:"-"`
TimeID int64
Time *TrackedTime `xorm:"-"`
AssigneeID int64
RemovedAssignee bool
Assignee *user_model.User `xorm:"-"`
AssigneeTeamID int64 `xorm:"NOT NULL DEFAULT 0"`
AssigneeTeam *organization.Team `xorm:"-"`
ResolveDoerID int64
ResolveDoer *user_model.User `xorm:"-"`
OldTitle string
NewTitle string
OldRef string
NewRef string
DependentIssueID int64 `xorm:"index"` // This is used by issue_service.deleteIssue
DependentIssue *Issue `xorm:"-"`
ID int64 `xorm:"pk autoincr"`
Type CommentType `xorm:"INDEX"`
PosterID int64 `xorm:"INDEX"`
Poster *user_model.User `xorm:"-"`
OriginalAuthor string
OriginalAuthorID int64
IssueID int64 `xorm:"INDEX"`
Issue *Issue `xorm:"-"`
LabelID int64
Label *Label `xorm:"-"`
AddedLabels []*Label `xorm:"-"`
RemovedLabels []*Label `xorm:"-"`
AddedRequestReview []RequestReviewTarget `xorm:"-"`
RemovedRequestReview []RequestReviewTarget `xorm:"-"`
OldProjectID int64
ProjectID int64
OldProject *project_model.Project `xorm:"-"`
Project *project_model.Project `xorm:"-"`
OldMilestoneID int64
MilestoneID int64
OldMilestone *Milestone `xorm:"-"`
Milestone *Milestone `xorm:"-"`
TimeID int64
Time *TrackedTime `xorm:"-"`
AssigneeID int64
RemovedAssignee bool
Assignee *user_model.User `xorm:"-"`
AssigneeTeamID int64 `xorm:"NOT NULL DEFAULT 0"`
AssigneeTeam *organization.Team `xorm:"-"`
ResolveDoerID int64
ResolveDoer *user_model.User `xorm:"-"`
OldTitle string
NewTitle string
OldRef string
NewRef string
DependentIssueID int64 `xorm:"index"` // This is used by issue_service.deleteIssue
DependentIssue *Issue `xorm:"-"`
CommitID int64
Line int64 // - previous line / + proposed line

View file

@ -875,7 +875,7 @@ func GetPinnedIssues(ctx context.Context, repoID int64, isPull bool) (IssueList,
return issues, nil
}
// IsNewPinnedAllowed returns if a new Issue or Pull request can be pinned
// IsNewPinAllowed returns if a new Issue or Pull request can be pinned
func IsNewPinAllowed(ctx context.Context, repoID int64, isPull bool) (bool, error) {
var maxPin int
_, err := db.GetEngine(ctx).SQL("SELECT COUNT(pin_order) FROM issue WHERE repo_id = ? AND is_pull = ? AND pin_order > 0", repoID, isPull).Get(&maxPin)

View file

@ -689,7 +689,7 @@ func GetPullRequestByIssueID(ctx context.Context, issueID int64) (*PullRequest,
return pr, pr.LoadAttributes(ctx)
}
// GetPullRequestsByBaseHeadInfo returns the pull request by given base and head
// GetPullRequestByBaseHeadInfo returns the pull request by given base and head
func GetPullRequestByBaseHeadInfo(ctx context.Context, baseID, headID int64, base, head string) (*PullRequest, error) {
pr := &PullRequest{}
sess := db.GetEngine(ctx).

View file

@ -13,6 +13,7 @@ import (
user_model "code.gitea.io/gitea/models/user"
_ "code.gitea.io/gitea/models/actions"
_ "code.gitea.io/gitea/models/forgefed"
_ "code.gitea.io/gitea/models/system"
"github.com/stretchr/testify/require"

View file

@ -11,6 +11,7 @@ import (
_ "code.gitea.io/gitea/models"
_ "code.gitea.io/gitea/models/actions"
_ "code.gitea.io/gitea/models/activities"
_ "code.gitea.io/gitea/models/forgefed"
_ "code.gitea.io/gitea/models/organization"
_ "code.gitea.io/gitea/models/repo"
_ "code.gitea.io/gitea/models/user"

View file

@ -10,6 +10,7 @@ import (
"code.gitea.io/gitea/models/db"
"code.gitea.io/gitea/models/packages"
debian_module "code.gitea.io/gitea/modules/packages/debian"
"code.gitea.io/gitea/modules/setting"
"xorm.io/builder"
)
@ -76,25 +77,41 @@ func ExistPackages(ctx context.Context, opts *PackageSearchOptions) (bool, error
// SearchPackages gets the packages matching the search options
func SearchPackages(ctx context.Context, opts *PackageSearchOptions, iter func(*packages.PackageFileDescriptor)) error {
return db.GetEngine(ctx).
Table("package_file").
Select("package_file.*").
Join("INNER", "package_version", "package_version.id = package_file.version_id").
Join("INNER", "package", "package.id = package_version.package_id").
Where(opts.toCond()).
Asc("package.lower_name", "package_version.created_unix").
Iterate(new(packages.PackageFile), func(_ int, bean any) error {
pf := bean.(*packages.PackageFile)
var start int
batchSize := setting.Database.IterateBufferSize
for {
select {
case <-ctx.Done():
return ctx.Err()
default:
beans := make([]*packages.PackageFile, 0, batchSize)
pfd, err := packages.GetPackageFileDescriptor(ctx, pf)
if err != nil {
if err := db.GetEngine(ctx).
Table("package_file").
Select("package_file.*").
Join("INNER", "package_version", "package_version.id = package_file.version_id").
Join("INNER", "package", "package.id = package_version.package_id").
Where(opts.toCond()).
Asc("package.lower_name", "package_version.created_unix").
Limit(batchSize, start).
Find(&beans); err != nil {
return err
}
if len(beans) == 0 {
return nil
}
start += len(beans)
iter(pfd)
for _, bean := range beans {
pfd, err := packages.GetPackageFileDescriptor(ctx, bean)
if err != nil {
return err
}
return nil
})
iter(pfd)
}
}
}
}
// GetDistributions gets all available distributions

View file

@ -0,0 +1,94 @@
// Copyright 2024 The Forgejo Authors. All rights reserved.
// SPDX-License-Identifier: GPL-3.0-or-later
package debian
import (
"strings"
"testing"
"code.gitea.io/gitea/models/db"
packages_model "code.gitea.io/gitea/models/packages"
"code.gitea.io/gitea/models/unittest"
user_model "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/modules/packages"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/test"
packages_service "code.gitea.io/gitea/services/packages"
_ "code.gitea.io/gitea/models"
_ "code.gitea.io/gitea/models/actions"
_ "code.gitea.io/gitea/models/activities"
_ "code.gitea.io/gitea/models/forgefed"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestMain(m *testing.M) {
unittest.MainTest(m)
}
func preparePackage(t *testing.T, owner *user_model.User, name string) {
t.Helper()
data, err := packages.CreateHashedBufferFromReader(strings.NewReader("data"))
require.NoError(t, err)
_, _, err = packages_service.CreatePackageOrAddFileToExisting(
db.DefaultContext,
&packages_service.PackageCreationInfo{
PackageInfo: packages_service.PackageInfo{
Owner: owner,
PackageType: packages_model.TypeDebian,
Name: name,
},
Creator: owner,
},
&packages_service.PackageFileCreationInfo{
PackageFileInfo: packages_service.PackageFileInfo{
Filename: name,
},
Data: data,
Creator: owner,
IsLead: true,
},
)
require.NoError(t, err)
}
func TestSearchPackages(t *testing.T) {
require.NoError(t, unittest.PrepareTestDatabase())
defer test.MockVariableValue(&setting.Database.IterateBufferSize, 1)()
user2 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
user3 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 3})
preparePackage(t, user2, "debian-1")
preparePackage(t, user2, "debian-2")
preparePackage(t, user3, "debian-1")
packageFiles := []string{}
require.NoError(t, SearchPackages(db.DefaultContext, &PackageSearchOptions{
OwnerID: user2.ID,
}, func(pfd *packages_model.PackageFileDescriptor) {
assert.NotNil(t, pfd)
packageFiles = append(packageFiles, pfd.File.Name)
}))
assert.Len(t, packageFiles, 2)
assert.Contains(t, packageFiles, "debian-1")
assert.Contains(t, packageFiles, "debian-2")
packageFiles = []string{}
require.NoError(t, SearchPackages(db.DefaultContext, &PackageSearchOptions{
OwnerID: user3.ID,
}, func(pfd *packages_model.PackageFileDescriptor) {
assert.NotNil(t, pfd)
packageFiles = append(packageFiles, pfd.File.Name)
}))
assert.Len(t, packageFiles, 1)
assert.Contains(t, packageFiles, "debian-1")
}

View file

@ -16,6 +16,7 @@ import (
_ "code.gitea.io/gitea/models"
_ "code.gitea.io/gitea/models/actions"
_ "code.gitea.io/gitea/models/activities"
_ "code.gitea.io/gitea/models/forgefed"
"github.com/stretchr/testify/require"
)

View file

@ -11,6 +11,7 @@ import (
_ "code.gitea.io/gitea/models"
_ "code.gitea.io/gitea/models/actions"
_ "code.gitea.io/gitea/models/activities"
_ "code.gitea.io/gitea/models/forgefed"
_ "code.gitea.io/gitea/models/repo"
_ "code.gitea.io/gitea/models/user"
)

View file

@ -15,13 +15,14 @@ import (
// AutoMerge represents a pull request scheduled for merging when checks succeed
type AutoMerge struct {
ID int64 `xorm:"pk autoincr"`
PullID int64 `xorm:"UNIQUE"`
DoerID int64 `xorm:"INDEX NOT NULL"`
Doer *user_model.User `xorm:"-"`
MergeStyle repo_model.MergeStyle `xorm:"varchar(30)"`
Message string `xorm:"LONGTEXT"`
CreatedUnix timeutil.TimeStamp `xorm:"created"`
ID int64 `xorm:"pk autoincr"`
PullID int64 `xorm:"UNIQUE"`
DoerID int64 `xorm:"INDEX NOT NULL"`
Doer *user_model.User `xorm:"-"`
MergeStyle repo_model.MergeStyle `xorm:"varchar(30)"`
Message string `xorm:"LONGTEXT"`
DeleteBranchAfterMerge bool `xorm:"NOT NULL DEFAULT false"`
CreatedUnix timeutil.TimeStamp `xorm:"created"`
}
// TableName return database table name for xorm
@ -49,7 +50,7 @@ func IsErrAlreadyScheduledToAutoMerge(err error) bool {
}
// ScheduleAutoMerge schedules a pull request to be merged when all checks succeed
func ScheduleAutoMerge(ctx context.Context, doer *user_model.User, pullID int64, style repo_model.MergeStyle, message string) error {
func ScheduleAutoMerge(ctx context.Context, doer *user_model.User, pullID int64, style repo_model.MergeStyle, message string, deleteBranch bool) error {
// Check if we already have a merge scheduled for that pull request
if exists, _, err := GetScheduledMergeByPullID(ctx, pullID); err != nil {
return err
@ -58,10 +59,11 @@ func ScheduleAutoMerge(ctx context.Context, doer *user_model.User, pullID int64,
}
_, err := db.GetEngine(ctx).Insert(&AutoMerge{
DoerID: doer.ID,
PullID: pullID,
MergeStyle: style,
Message: message,
DoerID: doer.ID,
PullID: pullID,
MergeStyle: style,
Message: message,
DeleteBranchAfterMerge: deleteBranch,
})
return err
}

View file

@ -11,6 +11,7 @@ import (
_ "code.gitea.io/gitea/models" // register table model
_ "code.gitea.io/gitea/models/actions"
_ "code.gitea.io/gitea/models/activities"
_ "code.gitea.io/gitea/models/forgefed"
_ "code.gitea.io/gitea/models/perm/access" // register table model
_ "code.gitea.io/gitea/models/repo" // register table model
_ "code.gitea.io/gitea/models/user" // register table model

View file

@ -249,6 +249,7 @@ type FindReleasesOptions struct {
IsDraft optional.Option[bool]
TagNames []string
HasSha1 optional.Option[bool] // useful to find draft releases which are created with existing tags
Keyword string
}
func (opts FindReleasesOptions) ToConds() builder.Cond {
@ -276,6 +277,15 @@ func (opts FindReleasesOptions) ToConds() builder.Cond {
cond = cond.And(builder.Eq{"sha1": ""})
}
}
if opts.Keyword != "" {
keywordCond := builder.NewCond()
keywordCond = keywordCond.Or(builder.Like{"lower_tag_name", strings.ToLower(opts.Keyword)})
keywordCond = keywordCond.Or(db.BuildCaseInsensitiveLike("title", opts.Keyword))
keywordCond = keywordCond.Or(db.BuildCaseInsensitiveLike("note", opts.Keyword))
cond = cond.And(keywordCond)
}
return cond
}

View file

@ -11,6 +11,7 @@ import (
_ "code.gitea.io/gitea/models" // register models
_ "code.gitea.io/gitea/models/actions"
_ "code.gitea.io/gitea/models/activities"
_ "code.gitea.io/gitea/models/forgefed"
_ "code.gitea.io/gitea/models/system" // register models of system
)

View file

@ -33,6 +33,11 @@ func NewMockWebServer(t *testing.T, liveServerBaseURL, testDataDir string, liveM
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
path := NormalizedFullPath(r.URL)
isGh := liveServerBaseURL == "https://api.github.com"
if isGh {
// Workaround for GitHub: trim `/api/v3` from the path
path = strings.TrimPrefix(path, "/api/v3")
}
log.Info("Mock HTTP Server: got request for path %s", r.URL.Path)
// TODO check request method (support POST?)
fixturePath := fmt.Sprintf("%s/%s_%s", testDataDir, r.Method, url.PathEscape(path))
@ -86,6 +91,10 @@ func NewMockWebServer(t *testing.T, liveServerBaseURL, testDataDir string, liveM
// replace any mention of the live HTTP service by the mocked host
stringFixture := strings.ReplaceAll(string(fixture), liveServerBaseURL, mockServerBaseURL)
if isGh {
// Workaround for GitHub: replace github.com by the mock server's base URL
stringFixture = strings.ReplaceAll(stringFixture, "https://github.com", mockServerBaseURL)
}
// parse back the fixture file into a series of HTTP headers followed by response body
lines := strings.Split(stringFixture, "\n")
for idx, line := range lines {

View file

@ -11,6 +11,7 @@ import (
_ "code.gitea.io/gitea/models"
_ "code.gitea.io/gitea/models/actions"
_ "code.gitea.io/gitea/models/activities"
_ "code.gitea.io/gitea/models/forgefed"
)
func TestMain(m *testing.M) {

View file

@ -4,28 +4,14 @@
package git
import (
"context"
"errors"
"fmt"
"strings"
"time"
"code.gitea.io/gitea/modules/util"
)
// ErrExecTimeout error when exec timed out
type ErrExecTimeout struct {
Duration time.Duration
}
// IsErrExecTimeout if some error is ErrExecTimeout
func IsErrExecTimeout(err error) bool {
_, ok := err.(ErrExecTimeout)
return ok
}
func (err ErrExecTimeout) Error() string {
return fmt.Sprintf("execution is timeout [duration: %v]", err.Duration)
}
// ErrNotExist commit not exist error
type ErrNotExist struct {
ID string
@ -62,21 +48,6 @@ func IsErrBadLink(err error) bool {
return ok
}
// ErrUnsupportedVersion error when required git version not matched
type ErrUnsupportedVersion struct {
Required string
}
// IsErrUnsupportedVersion if some error is ErrUnsupportedVersion
func IsErrUnsupportedVersion(err error) bool {
_, ok := err.(ErrUnsupportedVersion)
return ok
}
func (err ErrUnsupportedVersion) Error() string {
return fmt.Sprintf("Operation requires higher version [required: %s]", err.Required)
}
// ErrBranchNotExist represents a "BranchNotExist" kind of error.
type ErrBranchNotExist struct {
Name string
@ -185,3 +156,10 @@ func IsErrMoreThanOne(err error) bool {
func (err *ErrMoreThanOne) Error() string {
return fmt.Sprintf("ErrMoreThanOne Error: %v: %s\n%s", err.Err, err.StdErr, err.StdOut)
}
func IsErrCanceledOrKilled(err error) bool {
// When "cancel()" a git command's context, the returned error of "Run()" could be one of them:
// - context.Canceled
// - *exec.ExitError: "signal: killed"
return err != nil && (errors.Is(err, context.Canceled) || err.Error() == "signal: killed")
}

View file

@ -17,6 +17,7 @@ import (
"strings"
"time"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/setting"
)
@ -38,7 +39,7 @@ const (
type GrepOptions struct {
RefName string
MaxResultLimit int
MatchesPerFile int
MatchesPerFile int // >= git 2.38
ContextLineNumber int
Mode grepMode
PathSpec []setting.Glob
@ -92,8 +93,16 @@ func GrepSearch(ctx context.Context, repo *Repository, search string, opts GrepO
} else {
cmd.AddArguments("--fixed-strings", "--column")
}
cmd.AddOptionValues("--context", fmt.Sprint(opts.ContextLineNumber))
cmd.AddOptionValues("--max-count", fmt.Sprint(opts.MatchesPerFile))
// --max-count requires at least git 2.38
if CheckGitVersionAtLeast("2.38.0") == nil {
cmd.AddOptionValues("--max-count", fmt.Sprint(opts.MatchesPerFile))
} else {
log.Warn("git-grep: --max-count requires at least git 2.38")
}
words := []string{search}
if opts.Mode == FixedAnyGrepMode {
words = strings.Fields(search)

View file

@ -250,7 +250,7 @@ func (repo *Repository) GitAttributeChecker(treeish string, attributes ...string
err = e
}
if err != nil { // decorate the returned error
if err != nil && !IsErrCanceledOrKilled(err) { // decorate the returned error
err = fmt.Errorf("git check-attr (stderr: %q): %w", strings.TrimSpace(stdErr.String()), err)
ac.err.Store(err)
}

View file

@ -18,6 +18,7 @@ import (
_ "code.gitea.io/gitea/models"
_ "code.gitea.io/gitea/models/actions"
_ "code.gitea.io/gitea/models/activities"
_ "code.gitea.io/gitea/models/forgefed"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"

View file

@ -17,6 +17,7 @@ import (
_ "code.gitea.io/gitea/models"
_ "code.gitea.io/gitea/models/actions"
_ "code.gitea.io/gitea/models/activities"
_ "code.gitea.io/gitea/models/forgefed"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"

View file

@ -17,6 +17,7 @@ import (
_ "code.gitea.io/gitea/models"
_ "code.gitea.io/gitea/models/actions"
_ "code.gitea.io/gitea/models/activities"
_ "code.gitea.io/gitea/models/forgefed"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"

View file

@ -50,7 +50,7 @@ func (g *GitHubCalloutTransformer) Transform(node *ast.Document, reader text.Rea
return ast.WalkContinue, nil
}
firstTextNode, ok := firstParagraph.FirstChild().(*ast.Text)
if !ok || string(firstTextNode.Text(reader.Source())) != "[" {
if !ok || string(firstTextNode.Value(reader.Source())) != "[" {
return ast.WalkContinue, nil
}
secondTextNode, ok := firstTextNode.NextSibling().(*ast.Text)
@ -59,14 +59,14 @@ func (g *GitHubCalloutTransformer) Transform(node *ast.Document, reader text.Rea
}
// If the second node's text isn't one of the supported attention
// types, continue walking.
secondTextNodeText := secondTextNode.Text(reader.Source())
secondTextNodeText := secondTextNode.Value(reader.Source())
attentionType := strings.ToLower(strings.TrimPrefix(string(secondTextNodeText), "!"))
if _, has := supportedAttentionTypes[attentionType]; !has {
return ast.WalkContinue, nil
}
thirdTextNode, ok := secondTextNode.NextSibling().(*ast.Text)
if !ok || string(thirdTextNode.Text(reader.Source())) != "]" {
if !ok || string(thirdTextNode.Value(reader.Source())) != "]" {
return ast.WalkContinue, nil
}

View file

@ -7,6 +7,8 @@ package callout
import (
"strings"
"code.gitea.io/gitea/modules/markup/markdown/util"
"github.com/yuin/goldmark/ast"
"github.com/yuin/goldmark/parser"
"github.com/yuin/goldmark/text"
@ -40,7 +42,7 @@ func (g *GitHubLegacyCalloutTransformer) Transform(node *ast.Document, reader te
if !ok {
return ast.WalkContinue, nil
}
calloutText := string(calloutNode.Text(reader.Source()))
calloutText := string(util.Text(calloutNode, reader.Source()))
calloutType := strings.ToLower(calloutText)
// We only support "Note" and "Warning" callouts in legacy mode,
// match only those.

View file

@ -6,7 +6,7 @@ package markdown
import "regexp"
var (
hexRGB = regexp.MustCompile(`^#([0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$`)
hexRGB = regexp.MustCompile(`^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$`)
hsl = regexp.MustCompile(`^hsl\([ ]*([012]?[0-9]{1,2}|3[0-5][0-9]|360),[ ]*([0-9]{0,2}|100)\%,[ ]*([0-9]{0,2}|100)\%\)$`)
hsla = regexp.MustCompile(`^hsla\(([ ]*[012]?[0-9]{1,2}|3[0-5][0-9]|360),[ ]*([0-9]{0,2}|100)\%,[ ]*([0-9]{0,2}|100)\%,[ ]*(1|1\.0|0|(0\.[0-9]+))\)$`)
rgb = regexp.MustCompile(`^rgb\(([ ]*((([0-9]{1,2}|100)\%)|(([01]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))),){2}([ ]*((([0-9]{1,2}|100)\%)|(([01]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))))\)$`)

View file

@ -17,6 +17,7 @@ func TestMatchColor(t *testing.T) {
{"#ddeeffa0", true},
{"#ddeefe", true},
{"#abcdef", true},
{"#fffa", true},
{"#abcdeg", false},
{"#abcdefg0", false},
{"black", false},

View file

@ -9,6 +9,7 @@ import (
"strings"
"code.gitea.io/gitea/modules/markup"
mdutil "code.gitea.io/gitea/modules/markup/markdown/util"
"github.com/yuin/goldmark/ast"
"github.com/yuin/goldmark/renderer/html"
@ -49,7 +50,7 @@ func (r *HTMLRenderer) renderCodeSpan(w util.BufWriter, source []byte, n ast.Nod
}
func (g *ASTTransformer) transformCodeSpan(_ *markup.RenderContext, v *ast.CodeSpan, reader text.Reader) {
colorContent := v.Text(reader.Source())
colorContent := mdutil.Text(v, reader.Source())
if matchColor(strings.ToLower(string(colorContent))) {
v.AppendChild(v, NewColorPreview(colorContent))
}

View file

@ -19,7 +19,7 @@ func (g *ASTTransformer) transformHeading(_ *markup.RenderContext, v *ast.Headin
v.SetAttribute(attr.Name, []byte(fmt.Sprintf("%v", attr.Value)))
}
}
txt := v.Text(reader.Source())
txt := v.Lines().Value(reader.Source())
header := markup.Header{
Text: util.UnsafeBytesToString(txt),
Level: v.Level,

View file

@ -0,0 +1,26 @@
// Copyright 2024 The Forgejo Authors. All rights reserved.
// SPDX-License-Identifier: GPL-3.0-or-later
package util
import (
"bytes"
"github.com/yuin/goldmark/ast"
)
func textOfChildren(n ast.Node, src []byte, b *bytes.Buffer) {
for c := n.FirstChild(); c != nil; c = c.NextSibling() {
if t, ok := c.(*ast.Text); ok {
b.Write(t.Value(src))
} else {
textOfChildren(c, src, b)
}
}
}
func Text(n ast.Node, src []byte) []byte {
var b bytes.Buffer
textOfChildren(n, src, &b)
return b.Bytes()
}

View file

@ -46,7 +46,7 @@ func (r *stripRenderer) Render(w io.Writer, source []byte, doc ast.Node) error {
coalesce := prevSibIsText
r.processString(
w,
v.Text(source),
v.Value(source),
coalesce)
if v.SoftLineBreak() {
r.doubleSpace(w)

View file

@ -9,6 +9,7 @@ import (
"code.gitea.io/gitea/models/unittest"
_ "code.gitea.io/gitea/models/actions"
_ "code.gitea.io/gitea/models/forgefed"
)
func TestMain(m *testing.M) {

View file

@ -91,8 +91,10 @@ var Service = struct {
// Explore page settings
Explore struct {
RequireSigninView bool `ini:"REQUIRE_SIGNIN_VIEW"`
DisableUsersPage bool `ini:"DISABLE_USERS_PAGE"`
RequireSigninView bool `ini:"REQUIRE_SIGNIN_VIEW"`
DisableUsersPage bool `ini:"DISABLE_USERS_PAGE"`
DisableOrganizationsPage bool `ini:"DISABLE_ORGANIZATIONS_PAGE"`
DisableCodePage bool `ini:"DISABLE_CODE_PAGE"`
} `ini:"service.explore"`
}{
AllowedUserVisibilityModesSlice: []bool{true, true, true},

View file

@ -363,6 +363,7 @@ type IssuePayload struct {
Repository *Repository `json:"repository"`
Sender *User `json:"sender"`
CommitID string `json:"commit_id"`
Label *Label `json:"label,omitempty"`
}
// JSONPayload encodes the IssuePayload to JSON, with an indentation of two spaces.
@ -400,6 +401,7 @@ type PullRequestPayload struct {
Sender *User `json:"sender"`
CommitID string `json:"commit_id"`
Review *ReviewPayload `json:"review"`
Label *Label `json:"label,omitempty"`
}
// JSONPayload FIXME

View file

@ -182,6 +182,7 @@ func NewFuncMap() template.FuncMap {
"RenderMarkdownToHtml": RenderMarkdownToHtml,
"RenderLabel": RenderLabel,
"RenderLabels": RenderLabels,
"RenderReviewRequest": RenderReviewRequest,
// -----------------------------------------------------------------
// misc

View file

@ -11,6 +11,7 @@ import (
"code.gitea.io/gitea/modules/markup"
_ "code.gitea.io/gitea/models"
_ "code.gitea.io/gitea/models/forgefed"
_ "code.gitea.io/gitea/models/issues"
)

View file

@ -262,3 +262,15 @@ func RenderLabels(ctx context.Context, locale translation.Locale, labels []*issu
htmlCode += "</span>"
return template.HTML(htmlCode)
}
func RenderReviewRequest(users []issues_model.RequestReviewTarget) template.HTML {
usernames := make([]string, 0, len(users))
for _, user := range users {
usernames = append(usernames, template.HTMLEscapeString(user.Name()))
}
htmlCode := `<span class="review-request-list">`
htmlCode += strings.Join(usernames, ", ")
htmlCode += "</span>"
return template.HTML(htmlCode)
}

View file

@ -0,0 +1,66 @@
// Copyright 2024 The Forgejo Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package i18n
import (
"fmt"
"html/template"
"reflect"
"slices"
"strings"
)
type KeyLocale struct{}
var _ Locale = (*KeyLocale)(nil)
// HasKey implements Locale.
func (k *KeyLocale) HasKey(trKey string) bool {
return true
}
// TrHTML implements Locale.
func (k *KeyLocale) TrHTML(trKey string, trArgs ...any) template.HTML {
args := slices.Clone(trArgs)
for i, v := range args {
switch v := v.(type) {
case nil, bool, int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64, float32, float64, template.HTML:
// for most basic types (including template.HTML which is safe), just do nothing and use it
case string:
args[i] = template.HTMLEscapeString(v)
case fmt.Stringer:
args[i] = template.HTMLEscapeString(v.String())
default:
args[i] = template.HTMLEscapeString(fmt.Sprint(v))
}
}
return template.HTML(k.TrString(trKey, args...))
}
// TrString implements Locale.
func (k *KeyLocale) TrString(trKey string, trArgs ...any) string {
return FormatDummy(trKey, trArgs...)
}
func FormatDummy(trKey string, args ...any) string {
if len(args) == 0 {
return fmt.Sprintf("(%s)", trKey)
}
fmtArgs := make([]any, 0, len(args)+1)
fmtArgs = append(fmtArgs, trKey)
for _, arg := range args {
val := reflect.ValueOf(arg)
if val.Kind() == reflect.Slice {
for i := 0; i < val.Len(); i++ {
fmtArgs = append(fmtArgs, val.Index(i).Interface())
}
} else {
fmtArgs = append(fmtArgs, arg)
}
}
template := fmt.Sprintf("(%%s: %s)", strings.Join(slices.Repeat([]string{"%v"}, len(fmtArgs)-1), ", "))
return fmt.Sprintf(template, fmtArgs...)
}

View file

@ -0,0 +1,19 @@
// Copyright 2024 The Forgejo Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package i18n_test
import (
"testing"
"code.gitea.io/gitea/modules/translation/i18n"
"github.com/stretchr/testify/assert"
)
func TestFormatDummy(t *testing.T) {
assert.Equal(t, "(admin.config.git_max_diff_lines)", i18n.FormatDummy("admin.config.git_max_diff_lines"))
assert.Equal(t, "(dashboard)", i18n.FormatDummy("dashboard"))
assert.Equal(t, "(branch.create_branch: main)", i18n.FormatDummy("branch.create_branch", "main"))
assert.Equal(t, "(test.test: a, 1, true)", i18n.FormatDummy("test.test", "a", 1, true))
}

View file

@ -160,6 +160,16 @@ func NewLocale(lang string) Locale {
defer lock.RUnlock()
}
if lang == "dummy" {
l := &locale{
Locale: &i18n.KeyLocale{},
Lang: lang,
LangName: lang,
msgPrinter: message.NewPrinter(language.English),
}
return l
}
langName := "unknown"
if l, ok := allLangMap[lang]; ok {
langName = l.Name

View file

@ -26,8 +26,10 @@ func Locale(resp http.ResponseWriter, req *http.Request) translation.Locale {
}
}
// Check again in case someone changes the supported language list.
if lang != "" && !i18n.DefaultLocales.HasLang(lang) {
if lang == "dummy" {
changeLang = false
} else if lang != "" && !i18n.DefaultLocales.HasLang(lang) {
// Check again in case someone changes the supported language list.
lang = ""
changeLang = false
}

View file

@ -960,7 +960,7 @@ settings.recent_deliveries = التوصيل الأخيرة
projects.new = مشروع جديد
file_history = تاريخ
editor.directory_is_a_file = اسم المجلد "%s" مستخدم فعلا لاسم ملف في هذا المستودع.
editor.commit_directly_to_this_branch = أودع مباشرةً إلى فرع <strong class="branch-name">%s</strong>.
editor.commit_directly_to_this_branch = أودع مباشرةً إلى فرع <strong class="%[2]s">%[1]s</strong>.
editor.unable_to_upload_files = تعذر رفع الملفات إلى "%s" برسالة الخطأ: %v
settings.webhook.payload = المحتوى
invisible_runes_header = `يحتوي هذا الملف على محارف يونيكود غير مرئية`
@ -1105,7 +1105,7 @@ activity.git_stats_pushed_1 = دفع
activity.git_stats_pushed_n = دفعوا
activity.git_stats_commit_1 = %d إيداع
activity.git_stats_commit_n = %d إيداعا
activity.git_stats_push_to_branch = إلى %s و&nbsp;
activity.git_stats_push_to_branch = `إلى %s و"`
activity.git_stats_push_to_all_branches = إلى كل الفروع.
activity.git_stats_on_default_branch = في %s،
activity.git_stats_file_1 = %d ملف
@ -1115,7 +1115,7 @@ activity.git_stats_files_changed_n = تغيّروا
activity.git_stats_additions = وحدثت
activity.git_stats_addition_1 = %d إضافة
activity.git_stats_addition_n = %d إضافة
activity.git_stats_and_deletions = و&nbsp;
activity.git_stats_and_deletions = `و"`
activity.git_stats_deletion_1 = %d إزالة
activity.git_stats_deletion_n = %d إزالة
settings.mirror_settings.direction = الاتجاه

View file

@ -846,7 +846,7 @@ editor.propose_file_change = Предлагане на промяна на фа
editor.create_new_branch = Създаване на <strong>нов клон</strong> за това подаване и започване на заявка за сливане.
editor.create_new_branch_np = Създаване на <strong>нов клон</strong> за това подаване.
editor.filename_is_invalid = Името на файла е невалидно: „%s“.
editor.commit_directly_to_this_branch = Подаване директно към клона <strong class="branch-name">%s</strong>.
editor.commit_directly_to_this_branch = Подаване директно към клона <strong class="%[2]s">%[1]s</strong>.
editor.branch_already_exists = Клонът „%s“ вече съществува в това хранилище.
editor.file_already_exists = Файл с име „%s“ вече съществува в това хранилище.
editor.commit_empty_file_header = Подаване на празен файл
@ -997,7 +997,7 @@ pulls.cmd_instruction_hint = Вижте инструкциите за коман
pulls.showing_only_single_commit = Показани са само промените в подаване %[1]s
issues.lock_no_reason = заключи и ограничи обсъждането до сътрудници %s
pulls.expand_files = Разгъване на всички файлове
pulls.title_desc_few = иска да слее %[1]d подавания от <code>%[2]s</code> в <code id="branch_target">%[3]s</code>
pulls.title_desc_few = иска да слее %[1]d подавания от <code>%[2]s</code> в <code id="%[4]s">%[3]s</code>
issues.content_history.deleted = изтрито
activity.git_stats_exclude_merges = С изключение на сливанията,
activity.navbar.pulse = Последна дейност
@ -1017,7 +1017,7 @@ pulls.collapse_files = Свиване на всички файлове
pulls.show_all_commits = Показване на всички подавания
diff.whitespace_button = Празни знаци
issues.content_history.edited = редактирано
pulls.title_desc_one = иска да слее %[1]d подаване от <code>%[2]s</code> в <code id="branch_target">%[3]s</code>
pulls.title_desc_one = иска да слее %[1]d подаване от <code>%[2]s</code> в <code id="%[4]s">%[3]s</code>
pulls.showing_specified_commit_range = Показани са само промените между %[1]s..%[2]s
pulls.merged_title_desc_one = сля %[1]d подаване от <code>%[2]s</code> в <code>%[3]s</code> %[4]s
pulls.no_merge_access = Не сте упълномощени за сливане на тази заявка за сливане.

View file

@ -479,6 +479,7 @@ sign_up_button = Zaregistrujte se nyní.
back_to_sign_in = Zpět na přihlášení
sign_in_openid = Pokračovat s OpenID
unauthorized_credentials = Údaje jsou nesprávné nebo vypršely. Opakujte svůj příkaz nebo se podívejte na %s pro více informací
use_onetime_code = Použít jednorázový kód
[mail]
view_it_on=Zobrazit na %s
@ -1035,7 +1036,7 @@ blocked_users = Zablokovaní uživatelé
change_password = Změnit heslo
user_block_success = Uživatel byl úspěšně zablokován.
user_unblock_success = Uživatel byl úspěšně odblokován.
access_token_desc = Oprávnění vybraného tokenu omezují autorizaci pouze na příslušné cesty <a %s>API</a>. Pro více informací si přečtěte <a %s>dokumentaci</a>.
access_token_desc = Oprávnění vybraného tokenu omezují autorizaci pouze na příslušné cesty <a href="%[1]s" target="_blank">API</a>. Pro více informací si přečtěte <a href="%[2]s" target="_blank">dokumentaci</a>.
blocked_users_none = Nemáte žádné zablokované uživatele.
blocked_since = Zablokován od %s
hints = Nápovědy
@ -1359,7 +1360,7 @@ editor.fail_to_apply_patch=Nelze použít záplatu „%s“
editor.new_patch=Nová záplata
editor.commit_message_desc=Přidat volitelný rozšířený popis…
editor.signoff_desc=Přidat Signed-off-by podpis přispěvatele na konec zprávy o commitu.
editor.commit_directly_to_this_branch=Odeslat přímo do větve <strong class="branch-name">%s</strong>.
editor.commit_directly_to_this_branch=Odeslat přímo do větve <strong class="%[2]s">%[1]s</strong>.
editor.create_new_branch=Vytvořit <strong>novou větev</strong> pro tento commit a vytvořit žádost o sloučení.
editor.create_new_branch_np=Vytvořte <strong>novou větev</strong> z tohoto commitu.
editor.propose_file_change=Navrhnout změnu souboru
@ -1724,7 +1725,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.push_commit_1=přidal/a %d commit %s
issues.push_commits_n=přidal/a %d commity %s
issues.force_push_codes=`vynucené nahrání %[1]s od <a class="ui sha" href="%[3]s"><code>%[2]s</code></a> do <a class="ui sha" href="%[5]s"><code>%[4]s</code></a> %[6]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_compare=Porovnat
issues.due_date_form=rrrr-mm-dd
issues.due_date_form_add=Přidat termín dokončení
@ -1778,8 +1779,8 @@ issues.review.left_comment=zanechal 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.reject=požádal/a o změny %s
issues.review.wait=byl/a požádán/a o posouzení %s
issues.review.add_review_request=požádal/a o posouzení od %s %s
issues.review.remove_review_request=odstranil/a žádost o posouzení na %s %s
issues.review.add_review_request=požádal/a o kontrolu od %[1]s %[2]s
issues.review.remove_review_request=odstranil/a žádost o kontrolu u %[1]s %[2]s
issues.review.remove_review_request_self=odmítl/a posoudit %s
issues.review.pending=Čekající
issues.review.pending.tooltip=Tento komentář není momentálně viditelný pro ostatní uživatele. Chcete-li odeslat Vaše čekající komentáře, vyberte „%s“ → „%s/%s/%s“ v horní části stránky.
@ -1840,7 +1841,7 @@ pulls.nothing_to_compare_have_tag=Vybraná větev/značka je stejná.
pulls.nothing_to_compare_and_allow_empty_pr=Tyto větve jsou stejné. Tato žádost o sloučení bude prázdná.
pulls.has_pull_request=`Žádost o sloučení mezi těmito větvemi již existuje: <a href="%[1]s">%[2]s#%[3]d</a>`
pulls.create=Vytvořit žádost o sloučení
pulls.title_desc_few=chce sloučit %[1]d commity z větve <code>%[2]s</code> do <code id="branch_target">%[3]s</code>
pulls.title_desc_few=chce sloučit %[1]d commity z větve <code>%[2]s</code> do <code id="%[4]s">%[3]s</code>
pulls.merged_title_desc_few=sloučil %[1]d commity z větve <code>%[2]s</code> do větve <code>%[3]s</code> před %[4]s
pulls.change_target_branch_at=`změnil/a cílovou větev z <b>%s</b> na <b>%s</b> %s`
pulls.tab_conversation=Konverzace
@ -2764,7 +2765,7 @@ settings.protect_enable_merge_desc = Kdokoli s přístupem k zápisu bude moci s
settings.archive.text = Archivováním repozitáře jej celý převedete do stavu pouze pro čtení. Bude skryt z nástěnky. Nikdo (ani vy!) nebude moci vytvářet nové commity ani otevírat problémy a žádosti o sloučení.
settings.event_pull_request_review_request_desc = Bylo požádáno o posouzení žádosti o sloučení nebo bylo toto požádání odstraněno.
error.broken_git_hook = Zdá se, že u tohoto repozitáře jsou rozbité Git hooks. Pro jejich opravení se prosím řiďte pokyny v <a target="_blank" rel="noreferrer" href="%s">dokumentaci</a> a poté odešlete několik commitů pro obnovení stavu.
pulls.title_desc_one = žádá o sloučení %[1]d commitu z <code>%[2]s</code> do <code id="branch_target">%[3]s</code>
pulls.title_desc_one = žádá o sloučení %[1]d commitu z <code>%[2]s</code> do <code id="%[4]s">%[3]s</code>
pulls.merged_title_desc_one = sloučil %[1]d commit z <code>%[2]s</code> do <code>%[3]s</code> %[4]s
open_with_editor = Otevřít pomocí %s
commits.search_branch = Tato větev
@ -2846,6 +2847,12 @@ mirror_use_ssh.not_available = Ověřování SSH není dostupné.
issues.new.assign_to_me = Přiřadit mně
issues.all_title = Vše
settings.discord_icon_url.exceeds_max_length = Adresa URL ikony musí mít méně než 2048 znaků
issues.review.add_review_requests = požádal/a o kontroly od %[1]s %[2]s
issues.review.remove_review_requests = odstranil/a žádosti o kontrolu u %[1]s %[2]s
issues.review.add_remove_review_requests = požádal/a o kontroly od %[1]s a odstranil/a žádosti u %[2]s %[3]s
pulls.delete_after_merge.head_branch.is_default = Větev hlavy, kterou chcete odstranit, je výchozí větví a nelze ji odstranit.
pulls.delete_after_merge.head_branch.is_protected = Větev hlavy, kterou chcete odstranit, je chráněnou větví a nelze ji odstranit.
pulls.delete_after_merge.head_branch.insufficient_branch = Nemáte oprávnění k odstranění větve hlavy.
[graphs]
component_loading_info = Tohle může chvíli trvat…

View file

@ -477,6 +477,7 @@ sign_in_openid = Mit OpenID fortfahren
hint_login = Hast du bereits ein Konto? <a href="%s">Jetzt anmelden!</a>
hint_register = Brauchst du ein Konto? <a href="%s">Jetzt registrieren.</a>
unauthorized_credentials = Die Zugangsdaten sind inkorrekt oder abgelaufen. Versuchen es erneut oder siehe %s für mehr Informationen
use_onetime_code = Einen One-Time-Code benutzen
[mail]
view_it_on=Auf %s ansehen
@ -935,7 +936,7 @@ select_permissions=Berechtigungen auswählen
permission_no_access=Kein Zugriff
permission_read=Lesen
permission_write=Lesen und Schreiben
access_token_desc=Ausgewählte Token-Berechtigungen beschränken die Authentifizierung auf die entsprechenden <a %s>API</a>-Routen. Lies die <a %s>Dokumentation</a> für mehr Informationen.
access_token_desc=Ausgewählte Token-Berechtigungen beschränken die Authentifizierung auf die entsprechenden <a href="%[1]s" target="_blank">API</a>-Routen. Lies die <a href="%[2]s" target="_blank">Dokumentation</a> für mehr Informationen.
at_least_one_permission=Du musst mindestens eine Berechtigung auswählen, um ein Token zu erstellen
permissions_list=Berechtigungen:
@ -1352,7 +1353,7 @@ editor.fail_to_apply_patch=Patch „%s“ nicht anwendbar
editor.new_patch=Neuer Patch
editor.commit_message_desc=Eine ausführlichere (optionale) Beschreibung hinzufügen …
editor.signoff_desc=Am Ende der Commit-Nachricht einen „Signed-off-by“-Anhang vom Committer hinzufügen.
editor.commit_directly_to_this_branch=Direkt in den Branch „<strong class="branch-name">%s</strong>“ einchecken.
editor.commit_directly_to_this_branch=Direkt in den Branch „<strong class="%[2]s">%[1]s</strong>“ einchecken.
editor.create_new_branch=Einen <strong>neuen Branch</strong> für diesen Commit erstellen und einen Pull-Request starten.
editor.create_new_branch_np=Erstelle einen <strong>neuen Branch</strong> für diesen Commit.
editor.propose_file_change=Dateiänderung vorschlagen
@ -1718,7 +1719,7 @@ issues.error_modifying_due_date=Fehler beim Ändern des Fälligkeitsdatums.
issues.error_removing_due_date=Fehler beim Entfernen des Fälligkeitsdatums.
issues.push_commit_1=hat %d Commit %s hinzugefügt
issues.push_commits_n=hat %d Commits %s hinzugefügt
issues.force_push_codes=`hat %[6]s %[1]s von <a class="ui sha" href="%[3]s"><code>%[2]s</code></a> zu <a class="ui sha" href="%[5]s"><code>%[4]s</code></a> force-gepusht`
issues.force_push_codes=`hat %[6]s %[1]s von <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> zu <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> force-gepusht`
issues.force_push_compare=Vergleichen
issues.due_date_form=JJJJ-MM-TT
issues.due_date_form_add=Fälligkeitsdatum hinzufügen
@ -1772,8 +1773,8 @@ 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.reject=hat %s Änderungen angefragt
issues.review.wait=wurde für ein Review %s angefragt
issues.review.add_review_request=hat ein Review von %s %s angefragt
issues.review.remove_review_request=hat die Aufforderung zum Review an %s %s entfernt
issues.review.add_review_request=hat ein Review 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_self=hat das Review verweigert %s
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.
@ -1833,7 +1834,7 @@ pulls.nothing_to_compare=Diese Branches sind identisch. Es muss kein Pull-Reques
pulls.nothing_to_compare_and_allow_empty_pr=Diese Branches sind gleich. Der Pull-Request wird leer sein.
pulls.has_pull_request=`Es existiert bereits ein Pull-Request zwischen diesen beiden Branches: <a href="%[1]s">%[2]s#%[3]d</a>`
pulls.create=Pull-Request erstellen
pulls.title_desc_few=möchte %[1]d Commits von <code>%[2]s</code> nach <code id="branch_target">%[3]s</code> zusammenführen
pulls.title_desc_few=möchte %[1]d Commits von <code>%[2]s</code> nach <code id="%[4]s">%[3]s</code> zusammenführen
pulls.merged_title_desc_few=hat %[1]d Commits von <code>%[2]s</code> nach <code>%[3]s</code> %[4]s zusammengeführt
pulls.change_target_branch_at=`hat den Zielbranch von <b>%s</b> nach <b>%s</b> %s geändert`
pulls.tab_conversation=Diskussion
@ -2750,7 +2751,7 @@ activity.navbar.code_frequency = Code-Frequenz
file_follow = Symlink folgen
error.broken_git_hook = Die Git-Hooks des Repositorys scheinen kaputt zu sein. Bitte folge der <a target="_blank" rel="noreferrer" href="%s">Dokumentation</a> um sie zu reparieren, dann pushe einige Commits um den Status zu aktualisieren.
pulls.merged_title_desc_one = hat %[1]d Commit von <code>%[2]s</code> nach <code>%[3]s</code> %[4]s zusammengeführt
pulls.title_desc_one = möchte %[1]d Commit von <code>%[2]s</code> nach <code id="branch_target">%[3]s</code> 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
commits.search_branch = Dieser Branch
pulls.ready_for_review = Bereit zum Review?
@ -2831,6 +2832,12 @@ mirror_use_ssh.not_available = SSH-Authentifizierung ist nicht verfügbar.
issues.new.assign_to_me = Mir selbst zuweisen
issues.all_title = Alle
settings.discord_icon_url.exceeds_max_length = Die Icon-URL darf eine Länge von 2048 Zeichen nicht überschreiten
issues.review.add_review_requests = hat Reviews von %[1]s %[2]s angefragt
issues.review.remove_review_requests = hat Aufforderungen zum Review 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
pulls.delete_after_merge.head_branch.is_default = Der Head-Branch, den Sie löschen wollen, ist der Standardbranch und kann nicht gelöscht werden.
pulls.delete_after_merge.head_branch.is_protected = Der Head-Branch, den Sie löschen wollen, ist ein geschützter Branch und kann nicht gelöscht werden.
pulls.delete_after_merge.head_branch.insufficient_branch = Sie haben keine Erlaubnis, den Head-Branch zu löschen.
[graphs]

View file

@ -932,7 +932,7 @@ select_permissions=Επιλογή δικαιωμάτων
permission_no_access=Καμία πρόσβαση
permission_read=Αναγνωσμένες
permission_write=Ανάγνωση και εγγραφή
access_token_desc=Τα επιλεγμένα δικαιώματα διακριτικών περιορίζουν την άδεια μόνο στις αντίστοιχες διαδρομές <a %s>API</a>. Διαβάστε το εγχειρίδιο <a %s></a> για περισσότερες πληροφορίες.
access_token_desc=Τα επιλεγμένα δικαιώματα διακριτικών περιορίζουν την άδεια μόνο στις αντίστοιχες διαδρομές <a href="%[1]s" target="_blank">API</a>. Διαβάστε το εγχειρίδιο <a href="%[2]s" target="_blank"></a> για περισσότερες πληροφορίες.
at_least_one_permission=Πρέπει να επιλέξετε τουλάχιστον ένα δικαίωμα για να δημιουργήσετε ένα διακριτικό
permissions_list=Δικαιώματα:
@ -1350,7 +1350,7 @@ editor.fail_to_apply_patch=`Αδυναμία εφαρμογής της επιδ
editor.new_patch=Νέο patch
editor.commit_message_desc=Προσθήκη προαιρετικής εκτενούς περιγραφής…
editor.signoff_desc=Προσθέστε ένα πρόσθετο Signed-off-by στο τέλος του μηνύματος καταγραφής της υποβολής.
editor.commit_directly_to_this_branch=Υποβολή απευθείας στο κλάδο <strong class="branch-name">%s</strong>.
editor.commit_directly_to_this_branch=Υποβολή απευθείας στο κλάδο <strong class="%[2]s">%[1]s</strong>.
editor.create_new_branch=Δημιουργήστε έναν <strong>νέο κλάδο</strong> για αυτή την υποβολή και ξεκινήστε ένα pull request.
editor.create_new_branch_np=Δημιουργήστε έναν <strong>νέο κλάδο</strong> για αυτή την υποβολή.
editor.propose_file_change=Πρόταση αλλαγής αρχείου
@ -1716,7 +1716,7 @@ issues.error_modifying_due_date=Προέκυψε σφάλμα κατά την α
issues.error_removing_due_date=Προέκυψε σφάλμα κατά την κατάργηση ημερομηνίας παράδοσης.
issues.push_commit_1=πρόσθεσε %d υποβολή %s
issues.push_commits_n=πρόσθεσε %d υποβολές %s
issues.force_push_codes=`έκανε force-push %[1]s από το <a class="ui sha" href="%[3]s"><code>%[2]s</code></a> στο <a class="ui sha" href="%[5]s"><code>%[4]s</code></a> %[6]s`
issues.force_push_codes=`έκανε force-push %[1]s από το <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> στο <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> %[6]s`
issues.force_push_compare=Σύγκριση
issues.due_date_form=εεεε-μμ-ηη
issues.due_date_form_add=Προσθήκη ημερομηνίας παράδοσης
@ -1831,7 +1831,7 @@ pulls.nothing_to_compare=Αυτοί οι κλάδοι είναι ίδιοι. Δ
pulls.nothing_to_compare_and_allow_empty_pr=Αυτοί οι κλάδοι είναι ίδιοι. Αυτό το PR θα είναι κενό.
pulls.has_pull_request=`Υπάρχει ήδη pull request μεταξύ αυτών των κλάδων: <a href="%[1]s">%[2]s#%[3]d</a>`
pulls.create=Δημιουργία pull request
pulls.title_desc_few=θέλει να συγχωνεύσει %[1]d υποβολές από <code>%[2]s</code> σε <code id="branch_target">%[3]s</code>
pulls.title_desc_few=θέλει να συγχωνεύσει %[1]d υποβολές από <code>%[2]s</code> σε <code id="%[4]s">%[3]s</code>
pulls.merged_title_desc_few=συγχώνευσε %[1]d υποβολές από <code>%[2]s</code> σε <code>%[3]s</code> %[4]s
pulls.change_target_branch_at=`άλλαξε τον κλάδο προορισμού από <b>%s</b> σε <b>%s</b> %s`
pulls.tab_conversation=Συζήτηση
@ -2744,7 +2744,7 @@ n_commit_one = %s υποβολή
stars = Αστέρια
n_branch_one = %s κλάδος
commits.search_branch = Αυτός ο κλάδος
pulls.title_desc_one = : θα ήθελε να συγχωνεύσει %[1]d υποβολή από τον κλάδο <code>%[2]s</code> στον κλάδο <code id="branch_target">%[3]s</code>
pulls.title_desc_one = : θα ήθελε να συγχωνεύσει %[1]d υποβολή από τον κλάδο <code>%[2]s</code> στον κλάδο <code id="%[4]s">%[3]s</code>
pulls.merged_title_desc_one = συγχώνευσε %[1]d υποβολή από τον κλάδο <code>%[2]s</code> στον κλάδο <code>%[3]s</code> %[4]s
n_commit_few = %s υποβολές
settings.sourcehut_builds.secrets = Μυστικά

View file

@ -225,6 +225,13 @@ buttons.enable_monospace_font = Enable monospace font
buttons.disable_monospace_font = Disable monospace font
buttons.indent.tooltip = Nest items by one level
buttons.unindent.tooltip = Unnest items by one level
buttons.new_table.tooltip = Add table
table_modal.header = Add table
table_modal.placeholder.header = Header
table_modal.placeholder.content = Content
table_modal.label.rows = Rows
table_modal.label.columns = Columns
[filter]
string.asc = A - Z
@ -273,9 +280,9 @@ err_empty_db_path = The SQLite3 database path cannot be empty.
no_admin_and_disable_registration = You cannot disable user self-registration without creating an administrator account.
err_empty_admin_password = The administrator password cannot be empty.
err_empty_admin_email = The administrator email cannot be empty.
err_admin_name_is_reserved = Administrator Username is invalid, username is reserved
err_admin_name_is_reserved = Administrator username is invalid, username is reserved
err_admin_name_pattern_not_allowed = Administrator username is invalid, the username matches a reserved pattern
err_admin_name_is_invalid = Administrator Username is invalid
err_admin_name_is_invalid = Administrator username is invalid
general_title = General settings
app_name = Instance title
@ -442,6 +449,7 @@ verify = Verify
unauthorized_credentials = Credentials are incorrect or have expired. Retry your command or see %s for more information
scratch_code = Scratch code
use_scratch_code = Use a scratch code
use_onetime_code = Use a one-time code
twofa_scratch_used = You have used your scratch code. You have been redirected to the two-factor settings page so you may remove your device enrollment or generate a new scratch code.
twofa_passcode_incorrect = Your passcode is incorrect. If you misplaced your device, use your scratch code to sign in.
twofa_scratch_token_incorrect = Your scratch code is incorrect.
@ -737,7 +745,7 @@ webauthn = Two-factor authentication (Security keys)
blocked_users = Blocked users
public_profile = Public profile
biography_placeholder = Tell us a little bit about yourself! (You can use Markdown)
biography_placeholder = Tell others a little bit about yourself! (Markdown is supported)
location_placeholder = Share your approximate location with others
profile_desc = Control how your profile is shown to other users. Your primary email address will be used for notifications, password recovery and web-based Git operations.
password_username_disabled = Non-local users are not allowed to change their username. Please contact your site administrator for more details.
@ -934,7 +942,7 @@ select_permissions = Select permissions
permission_no_access = No access
permission_read = Read
permission_write = Read and write
access_token_desc = Selected token permissions limit authorization only to the corresponding <a %s>API</a> routes. Read the <a %s>documentation</a> for more information.
access_token_desc = Selected token permissions limit authorization only to the corresponding <a href="%[1]s" target="_blank">API</a> routes. Read the <a href="%[2]s" target="_blank">documentation</a> for more information.
at_least_one_permission = You must select at least one permission to create a token
permissions_list = Permissions:
@ -1371,7 +1379,7 @@ editor.fail_to_apply_patch = Unable to apply patch "%s"
editor.new_patch = New patch
editor.commit_message_desc = Add an optional extended description…
editor.signoff_desc = Add a Signed-off-by trailer by the committer at the end of the commit log message.
editor.commit_directly_to_this_branch = Commit directly to the <strong class="branch-name">%s</strong> branch.
editor.commit_directly_to_this_branch = Commit directly to the <strong class="%[2]s">%[1]s</strong> branch.
editor.create_new_branch = Create a <strong>new branch</strong> for this commit and start a pull request.
editor.create_new_branch_np = Create a <strong>new branch</strong> for this commit.
editor.propose_file_change = Propose file change
@ -1739,7 +1747,7 @@ issues.time_spent_from_all_authors = `Total time spent: %s`
issues.due_date = Due date
issues.push_commit_1 = added %d commit %s
issues.push_commits_n = added %d commits %s
issues.force_push_codes = `force-pushed %[1]s from <a class="ui sha" href="%[3]s"><code>%[2]s</code></a> to <a class="ui sha" href="%[5]s"><code>%[4]s</code></a> %[6]s`
issues.force_push_codes = `force-pushed %[1]s from <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> to <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> %[6]s`
issues.force_push_compare = Compare
issues.due_date_form = yyyy-mm-dd
issues.due_date_form_edit = Edit
@ -1791,9 +1799,12 @@ issues.review.left_comment = left a comment
issues.review.content.empty = You need to leave a comment indicating the requested change(s).
issues.review.reject = requested changes %s
issues.review.wait = was requested for review %s
issues.review.add_review_request = requested review from %s %s
issues.review.remove_review_request = removed review request for %s %s
issues.review.add_review_request = requested review from %[1]s %[2]s
issues.review.add_review_requests = requested reviews from %[1]s %[2]s
issues.review.remove_review_request = removed review request for %[1]s %[2]s
issues.review.remove_review_requests = removed review requests for %[1]s %[2]s
issues.review.remove_review_request_self = refused to review %s
issues.review.add_remove_review_requests = requested reviews from %[1]s and removed review requests for %[2]s %[3]s
issues.review.pending = Pending
issues.review.pending.tooltip = This comment is not currently visible to other users. To submit your pending comments, select "%s" -> "%s/%s/%s" at the top of the page.
issues.review.review = Review
@ -1855,8 +1866,8 @@ pulls.nothing_to_compare_have_tag = The selected branch/tag are equal.
pulls.nothing_to_compare_and_allow_empty_pr = These branches are equal. This PR will be empty.
pulls.has_pull_request = `A pull request between these branches already exists: <a href="%[1]s">%[2]s#%[3]d</a>`
pulls.create = Create pull request
pulls.title_desc_one = wants to merge %[1]d commit from <code>%[2]s</code> into <code id="branch_target">%[3]s</code>
pulls.title_desc_few = wants to merge %[1]d commits from <code>%[2]s</code> into <code id="branch_target">%[3]s</code>
pulls.title_desc_one = wants to merge %[1]d commit from <code>%[2]s</code> into <code id="%[4]s">%[3]s</code>
pulls.title_desc_few = wants to merge %[1]d commits from <code>%[2]s</code> into <code id="%[4]s">%[3]s</code>
pulls.merged_title_desc_one = merged %[1]d commit from <code>%[2]s</code> into <code>%[3]s</code> %[4]s
pulls.merged_title_desc_few = merged %[1]d commits from <code>%[2]s</code> into <code>%[3]s</code> %[4]s
pulls.change_target_branch_at = `changed target branch from <b>%s</b> to <b>%s</b> %s`
@ -1976,6 +1987,10 @@ pulls.auto_merge_canceled_schedule = The auto merge was canceled for this pull r
pulls.auto_merge_newly_scheduled_comment = `scheduled this pull request to auto merge when all checks succeed %[1]s`
pulls.auto_merge_canceled_schedule_comment = `canceled auto merging this pull request when all checks succeed %[1]s`
pulls.delete_after_merge.head_branch.is_default = The head branch you want to delete is the default branch and cannot be deleted.
pulls.delete_after_merge.head_branch.is_protected = The head branch you want to delete is a protected branch and cannot be deleted.
pulls.delete_after_merge.head_branch.insufficient_branch = You don't have permission to delete the head branch.
pulls.delete.title = Delete this pull request?
pulls.delete.text = Do you really want to delete this pull request? (This will permanently remove all content. Consider closing it instead, if you intend to keep it archived)
@ -2637,7 +2652,7 @@ diff.generated = generated
diff.vendored = vendored
diff.comment.add_line_comment = Add line comment
diff.comment.placeholder = Leave a comment
diff.comment.markdown_info = Styling with markdown is supported.
diff.comment.markdown_info = Styling with Markdown is supported.
diff.comment.add_single_comment = Add single comment
diff.comment.add_review_comment = Add comment
diff.comment.start_review = Start review
@ -2711,11 +2726,11 @@ release.releases_for = Releases for %s
release.tags_for = Tags for %s
release.system_generated = This attachment is automatically generated.
release.type_attachment = Attachment
release.type_external_asset = External Asset
release.asset_name = Asset Name
release.type_external_asset = External asset
release.asset_name = Asset name
release.asset_external_url = External URL
release.add_external_asset = Add External Asset
release.invalid_external_url = Invalid External URL: "%s"
release.add_external_asset = Add external asset
release.invalid_external_url = Invalid external URL: "%s"
branch.name = Branch name
branch.already_exists = A branch named "%s" already exists.

View file

@ -202,7 +202,6 @@ app_desc = Senpena kaj memgastigebla Git-servo
install = Facile instalebla
lightweight = Malpeza
license = Libera fontkodo
platform_desc = Forgejo ruleblas ĉie ajn <a target="_blank" rel="noopener noreferrer" href="%s">Go</a> bittradukeblas: Windows, macOS, Linux, ARM, etc. Elektu laŭplaĉe!
install_desc = Simple aŭ <a target="_blank" rel="noopener noreferrer" href="%[1]s">prenu la ruldosieron</a> por via operaciumo, aŭ instalu enuje per <a target="_blank" rel="noopener noreferrer" href="%[2]s">Docker</a>, aŭ instalu <a target="_blank" rel="noopener noreferrer" href="%[3]s">pakaĵe</a>.
lightweight_desc = Forgejo ne penigos vian servilon, kaj eĉ ruleblas je Raspberry Pi. Konservu vian komputpotencon!
platform = Plursistema

View file

@ -932,7 +932,7 @@ select_permissions=Seleccionar permisos
permission_no_access=Sin acceso
permission_read=Leídas
permission_write=Lectura y escritura
access_token_desc=Los permisos de los tokens seleccionados limitan la autorización sólo a las rutas <a %s>API</a> correspondientes. Lea la <a %s>documentación</a> para más información.
access_token_desc=Los permisos de los tokens seleccionados limitan la autorización sólo a las rutas <a href="%[1]s" target="_blank">>API</a> correspondientes. Lea la <a href="%[2]s" target="_blank">>documentación</a> para más información.
at_least_one_permission=Debe seleccionar al menos un permiso para crear un token
permissions_list=Permisos:
@ -1349,7 +1349,7 @@ editor.fail_to_apply_patch=`No se puede aplicar el parche "%s"`
editor.new_patch=Nuevo parche
editor.commit_message_desc=Añadir una descripción extendida opcional…
editor.signoff_desc=Añadir un trailer firmado por el committer al final del mensaje de registro de confirmación.
editor.commit_directly_to_this_branch=Hacer commit directamente en la rama <strong class="branch-name">%s</strong>.
editor.commit_directly_to_this_branch=Hacer commit directamente en la rama <strong class="%[2]s">%[1]s</strong>.
editor.create_new_branch=Crear una <strong>nueva rama</strong> para este commit y hacer un pull request.
editor.create_new_branch_np=Crear una <strong>nueva rama</strong> para este commit.
editor.propose_file_change=Proponer cambio de archivo
@ -1715,7 +1715,7 @@ issues.error_modifying_due_date=Fallo al modificar la fecha de vencimiento.
issues.error_removing_due_date=Fallo al eliminar la fecha de vencimiento.
issues.push_commit_1=añadió %d commit %s
issues.push_commits_n=añadió %d commits %s
issues.force_push_codes=`hizo push forzado %[1]s de <a class="ui sha" href="%[3]s"><code>%[2]s</code></a> a <a class="ui sha" href="%[5]s"><code>%[4]s</code></a> %[6]s`
issues.force_push_codes=`hizo push forzado %[1]s de <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> a <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> %[6]s`
issues.force_push_compare=Comparar
issues.due_date_form=aaaa-mm-dd
issues.due_date_form_add=Añadir fecha de vencimiento
@ -1830,7 +1830,7 @@ pulls.nothing_to_compare=Estas ramas son iguales. No hay necesidad para crear un
pulls.nothing_to_compare_and_allow_empty_pr=Estas ramas son iguales. Este PR estará vacío.
pulls.has_pull_request=`Ya existe un pull request entre estas ramas: <a href="%[1]s">%[2]s#%[3]d</a>`
pulls.create=Crear pull request
pulls.title_desc_few=quiere fusionar %[1]d commits de <code>%[2]s</code> en <code id="branch_target">%[3]s</code>
pulls.title_desc_few=quiere fusionar %[1]d commits de <code>%[2]s</code> en <code id="%[4]s">%[3]s</code>
pulls.merged_title_desc_few=fusionó %[1]d commits de <code>%[2]s</code> en <code>%[3]s</code> %[4]s
pulls.change_target_branch_at=`cambió la rama objetivo de <b>%s</b> a <b>%s</b> %s`
pulls.tab_conversation=Conversación
@ -2735,7 +2735,7 @@ pulls.blocked_by_user = No puedes crear una pull request en este repositorio por
issues.comment.blocked_by_user = No puedes crear un comentario en esta incidencia porque estás bloqueado por el propietario del repositorio o el autor de la incidencia.
comments.edit.already_changed = No fue posible guardar los cambios al comentario. Parece que el contenido ya fue modificado por otro usuario. Actualiza la página e intenta editar de nuevo para evitar sobrescribir los cambios
pulls.edit.already_changed = No fue posible guardar los cambios al pull request. Parece que el contenido ya fue modificado por otro usuario. Actualiza la página e intenta editar de nuevo para evitar sobrescribir los cambios
pulls.title_desc_one = quiere fusionar %[1]d commit de <code>%[2]s</code> en <code id="branch_target">%[3]s</code>
pulls.title_desc_one = quiere fusionar %[1]d commit de <code>%[2]s</code> en <code id="%[4]s">%[3]s</code>
pulls.ready_for_review = Listo para revisar?
activity.navbar.contributors = Contribuidores
pulls.cmd_instruction_hint = Ver instrucciones para la línea de comandos

View file

@ -149,7 +149,6 @@ missing_csrf=درخواست بد: بلیط CSRF ندارد
app_desc=یک سرویس گیت بی‌درد سر و راحت
install=راه‌اندازی ساده
platform=مستقل از سکو
platform_desc=گیت همه جا اجرا می‌شود <a target="_blank" rel="noopener noreferrer" href="http://golang.org/"> بریم!</a> می‌توانید Windows, macOS, Linux, ARM و ... هر کدام را دوست داشتید انتخاب کنید!
lightweight=ابزارک سبک
lightweight_desc=گیتی با حداقل منابع میتوانید برای روی دستگاه Raspberry Pi اجرا شود و مصرف انرژی شما را کاهش دهد!
license=متن باز
@ -985,7 +984,7 @@ editor.commit_changes=تغییرات کامیت
editor.add_tmpl=افزودن '<filename>'
editor.commit_message_desc=توضیحی تخصصی به دلخواه اضافه نمایید…
editor.signoff_desc=یک تریلر Signed-off-by توسط committer در انتهای پیام گزارش commit اضافه کنید.
editor.commit_directly_to_this_branch=ثبت کامیت به صورت مستقیم در انشعاب <strong class="branch-name">%s</strong>.
editor.commit_directly_to_this_branch=ثبت کامیت به صورت مستقیم در انشعاب <strong class="%[2]s">%[1]s</strong>.
editor.create_new_branch=یک <strong> شاخه جدید</strong> برای این commit ایجاد کنید و تقاضای واکشی را شروع کنید.
editor.create_new_branch_np=یک <strong> شاخه جدید </strong> برای کامیت بسازید.
editor.propose_file_change=پیشنهاد تغییر پرونده
@ -1254,7 +1253,7 @@ issues.error_modifying_due_date=تغییر موعد مقرر با شکست مو
issues.error_removing_due_date=حذف موعد مقرر با شکست مواجه شد.
issues.push_commit_1=%d اعمال تغییر اضافه شده است %s
issues.push_commits_n=%d اعمال تغییرات اضافه شده است %s
issues.force_push_codes=`پوش شده اجباری %[1]s از <a class="ui sha" href="%[3]s"><code>%[2]s</code></a> به <a class="ui sha" href="%[5]s"><code>%[4]s</code></a> %[6]s`
issues.force_push_codes=`پوش شده اجباری %[1]s از <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> به <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> %[6]s`
issues.force_push_compare=مقایسه
issues.due_date_form=yyyy-mm-dd
issues.due_date_form_add=افزودن موعد مقرر
@ -1340,7 +1339,7 @@ pulls.nothing_to_compare=این شاخه‎ها یکی هستند. نیازی ب
pulls.nothing_to_compare_and_allow_empty_pr=این شاخه ها برابر هستند. این PR خالی خواهد بود.
pulls.has_pull_request=`A درخواست pull بین این شاخه ها از قبل وجود دارد: <a href="%[1]s">%[2]s#%[3]d</a>`
pulls.create=ایجاد تقاضای واکشی
pulls.title_desc_few=قصد ادغام %[1]d تغییر را از <code>%[2]s</code> به <code id="branch_target">%[3]s</code> دارد
pulls.title_desc_few=قصد ادغام %[1]d تغییر را از <code>%[2]s</code> به <code id="%[4]s">%[3]s</code> دارد
pulls.merged_title_desc_few=%[1]d کامیت ادغام شده از <code>%[2]s</code> به <code>%[3]s</code> %[4]s
pulls.change_target_branch_at=`هدف شاخه از <b>%s</b> به <b>%s</b> %s تغییر کرد`
pulls.tab_conversation=گفتگو

File diff suppressed because it is too large Load diff

View file

@ -766,7 +766,7 @@ ssh_principal_deletion_success = Tinanggal na ang principal.
principal_state_desc = Ginamit ang principal na ito sa huling 7 araw
tokens_desc = Ang mga token na ito ay nagbibigay ng pag-access sa iyong account gamit ang Forgejo API.
generate_token_name_duplicate = Ginamit na ang <strong>%s</strong> bilang isang pangalan ng application. Gumamit ng bago.
access_token_desc = Ang mga piniling pahintulot sa token ay nililimitahan ang awtorisasyon sa mga kakulang na <a %s>API</a> route. Basahin ang <a %s>dokumentasyon</a> para sa higit pang impormasyon.
access_token_desc = Ang mga piniling pahintulot sa token ay nililimitahan ang awtorisasyon sa mga kakulang na <a href="%[1]s" target="_blank">API</a> route. Basahin ang <a href="%[2]s" target="_blank">dokumentasyon</a> para sa higit pang impormasyon.
uploaded_avatar_is_too_big = Ang laki ng na-upload na file (%d KiB) ay lumalagpas sa pinakamalaking laki (%d KiB).
update_avatar_success = Nabago na ang iyong avatar.
update_user_avatar_success = Nabago na ang avatar ng user.
@ -1482,7 +1482,7 @@ milestones.title = Pamagat
milestones.desc = paglalarawan
pulls.blocked_by_user = Hindi ka makakagawa ng hiling sa paghila sa repositoryo na ito dahil na-block ka ng may-ari ng repositoryo.
pulls.no_merge_access = Hindi ka pinapayagang isali ang [pull request] na ito.
editor.commit_directly_to_this_branch = Direktang mag-commit sa branch na <strong class="branch-name">%s</strong>.
editor.commit_directly_to_this_branch = Direktang mag-commit sa branch na <strong class="%[2]s">%[1]s</strong>.
editor.branch_already_exists = Umiiral na ang branch na "%s" sa repositoryo na ito.
editor.file_editing_no_longer_exists = Ang file na ine-edit, "%s", ay hindi na umiiral sa repositoryo na ito.
editor.filename_is_a_directory = Ang pangalan ng file "%s" ay ginagamit na bilang pangalan ng direktoryo sa repositoryo na ito.
@ -1584,12 +1584,12 @@ projects.column.new_title = Pangalan
projects.card_type.desc = Mga preview ng card
commits.desc = I-browse ang history ng pagbabago ng source code.
commits.search.tooltip = Maari kang mag-prefix ng mga keyword gamit ang "author:", "committer:", "after:", o "before:", hal. "revert author:Nijika before:2022-10-09".
issues.force_push_codes = `puwersahang itinulak ang %[1]s mula <a class="ui sha" href="%[3]s"><code>%[2]s</code></a> sa <a class="ui sha" href="%[5]s"><code>%[4]s</code></a> %[6]s`
issues.force_push_codes = `puwersahang itinulak ang %[1]s mula <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> sa <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> %[6]s`
issues.push_commit_1 = idinagdag ang %d commit %s
issues.push_commits_n = idinagdag ang %d mga [commit] %s
issues.new.no_reviewers = Walang mga tagasuri
pulls.title_desc_one = hinihiling na isama ang %[1]d commit mula <code>%[2]s</code> patungong <code id="branch_target">%[3]s</code>
pulls.title_desc_few = hiniling na isama ang %[1]d mga commit mula sa <code>%[2]s</code> patungong <code id="branch_target">%[3]s</code>
pulls.title_desc_one = hinihiling na isama ang %[1]d commit mula <code>%[2]s</code> patungong <code id="%[4]s">%[3]s</code>
pulls.title_desc_few = hiniling na isama ang %[1]d mga commit mula sa <code>%[2]s</code> patungong <code id="%[4]s">%[3]s</code>
issues.review.add_review_request = hiniling ang pagsuri mula kay %s %s
pulls.status_checks_details = Mga detalye
activity.git_stats_author_n = %d mga may-akda

View file

@ -223,7 +223,7 @@ platform_desc=Forgejo est confirmé fonctionner sur des systèmes d'exploitation
lightweight=Léger
lightweight_desc=Forgejo utilise peu de ressources. Il peut même tourner sur un Raspberry Pi très bon marché. Économisez l'énergie de vos serveurs !
license=Open Source
license_desc=Toutes les sources sont sur <a target="_blank" rel="noopener noreferrer" href="%[1]s">Forgejo</a>! Rejoignez-nous et <a target="_blank" rel="noopener noreferrer" href="https://codeberg.org/forgejo/forgejo">contribuez</a> à rendre ce projet encore meilleur. Ne craignez pas de devenir un·e contributeur·trice !
license_desc=Toutes les sources sont sur <a target="_blank" rel="noopener noreferrer" href="%[1]s">Forgejo</a>! Rejoignez-nous et <a target="_blank" rel="noopener noreferrer" href="%[2]s">contribuez</a> à rendre ce projet encore meilleur. Ne craignez pas de devenir un·e contributeur·trice !
[install]
install=Installation
@ -938,7 +938,7 @@ select_permissions=Sélectionner les autorisations
permission_no_access=Aucun accès
permission_read=Lecture
permission_write=Lecture et écriture
access_token_desc=Les autorisations des jetons sélectionnées se limitent aux <a %s>routes API</a> correspondantes. Lisez la <a %s>documentation</a> pour plus dinformations.
access_token_desc=Les autorisations des jetons sélectionnées se limitent aux <a href="%[1]s" target="_blank">routes API</a> correspondantes. Lisez la <a href="%[2]s" target="_blank">documentation</a> pour plus dinformations.
at_least_one_permission=Vous devez sélectionner au moins une permission pour créer un jeton
permissions_list=Autorisations :
@ -1360,7 +1360,7 @@ editor.fail_to_apply_patch=`Impossible d'appliquer le correctif "%s"`
editor.new_patch=Nouveau correctif
editor.commit_message_desc=Ajouter une description détaillée facultative…
editor.signoff_desc=Créditer l'auteur "Signed-off-by:" en pied de révision.
editor.commit_directly_to_this_branch=Réviser directement dans la branche <strong class="branch-name">%s</strong>.
editor.commit_directly_to_this_branch=Réviser directement dans la branche <strong class="%[2]s">%[1]s</strong>.
editor.create_new_branch=Créer une <strong>nouvelle branche</strong> pour cette révision et initier une demande d'ajout.
editor.create_new_branch_np=Créer une <strong>nouvelle branche</strong> pour cette révision.
editor.propose_file_change=Proposer une modification du fichier
@ -1726,7 +1726,7 @@ issues.error_modifying_due_date=Impossible de modifier l'échéance.
issues.error_removing_due_date=Impossible de supprimer l'échéance.
issues.push_commit_1=a ajouté %d révision %s
issues.push_commits_n=a ajouté %d révisions %s
issues.force_push_codes=`a forcé %[1]s de <a class="ui sha" href="%[3]s"><code>%[2]s</code></a> à <a class="ui sha" href="%[5]s"><code>%[4]s</code></a> %[6]s.`
issues.force_push_codes=`a forcé %[1]s de <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> à <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> %[6]s.`
issues.force_push_compare=Comparer
issues.due_date_form=aaaa-mm-jj
issues.due_date_form_add=Ajouter une échéance
@ -1841,7 +1841,7 @@ pulls.nothing_to_compare=Ces branches sont identiques. Il ny a pas besoin de
pulls.nothing_to_compare_and_allow_empty_pr=Ces branches sont égales. Cette demande d'ajout sera vide.
pulls.has_pull_request='Il existe déjà une demande d'ajout entre ces deux branches : <a href="%[1]s">%[2]s#%[3]d</a>'
pulls.create=Créer une demande d'ajout
pulls.title_desc_few=souhaite fusionner %[1]d révision(s) depuis <code>%[2]s</code> vers <code id="branch_target">%[3]s</code>
pulls.title_desc_few=souhaite fusionner %[1]d révision(s) depuis <code>%[2]s</code> vers <code id="%[4]s">%[3]s</code>
pulls.merged_title_desc_few=a fusionné %[1]d révision(s) à partir de <code>%[2]s</code> vers <code>%[3]s</code> %[4]s
pulls.change_target_branch_at=`a remplacée la branche cible <b>%s</b> par <b>%s</b> %s`
pulls.tab_conversation=Discussion
@ -2765,7 +2765,7 @@ error.broken_git_hook = Les hooks Git de ce dépôt semblent cassés. Référez
settings.confirmation_string = Chaine de confirmation
pulls.agit_explanation = Créé par le workflow AGit. AGit permet aux contributeurs de proposer des modifications en utilisant "git push" sans créer une bifurcation ou une nouvelle branche.
pulls.merged_title_desc_one = fusionné %[1]d commit depuis <code>%[2]s</code> vers <code>%[3]s</code> %[4]s
pulls.title_desc_one = veut fusionner %[1]d commit depuis <code>%[2]s</code> vers <code id="branch_target">%[3]s</code>
pulls.title_desc_one = veut fusionner %[1]d commit depuis <code>%[2]s</code> vers <code id="%[4]s">%[3]s</code>
stars = Étoiles
n_tag_few = %s étiquettes
editor.commit_id_not_matching = Le fichier a été modifié pendant que vous l'éditiez. Appliquez les modifications à une nouvelle branche puis procédez à la fusion.
@ -3291,7 +3291,7 @@ auths.tips=Conseils
auths.tips.oauth2.general=Authentification OAuth2
auths.tips.oauth2.general.tip=Lors de l'enregistrement d'une nouvelle authentification OAuth2, l'URL de rappel/redirection doit être :
auths.tip.oauth2_provider=Fournisseur OAuth2
auths.tip.bitbucket=`Créez un nouveau jeton OAuth sur %s
auths.tip.bitbucket=Créez un nouveau jeton OAuth sur %s
auths.tip.nextcloud=`Enregistrez un nouveau consommateur OAuth sur votre instance en utilisant le menu "Paramètres -> Sécurité -> Client OAuth 2.0"`
auths.tip.dropbox=Créez une nouvelle application sur %s
auths.tip.facebook=`Enregistrez une nouvelle application sur %s et ajoutez le produit "Facebook Login"`

View file

@ -181,8 +181,7 @@ user_kind = Buscar usuarios...
platform = Multiplataforma
app_desc = Um servizo Git autoxestionado e fácil de usar
install = Fácil de instalar
platform_desc = Forgejo execútase en calquera lugar onde <a target="_blank" rel="noopener noreferrer" href="%s">Go</a> poida compilar para: Windows, MacOS, Linux, ARM, etc. Escolla seu preferido!
install_desc = Simplemente <a target="_blank" rel="noopener noreferrer" href="%[1]s">executa o binario</a> para a túa plataforma, envíao con < un target="_blank" rel="noopener noreferrer" href="%[2]s">Docker</a> ou consígueo <a target="_blank" rel=" noopener noreferrer" href="%[3]s">empaquetado</a>.
install_desc = Simplemente <a target="_blank" rel="noopener noreferrer" href="%[1]s">executa o binario</a> para a túa plataforma, envíao con <a target="_blank" rel="noopener noreferrer" href="%[2]s">Docker</a> ou consígueo <a target="_blank" rel="noopener noreferrer" href="%[3]s">empaquetado</a>.
[error]
occurred = Ocorreu un erro

View file

@ -203,7 +203,6 @@ not_found = A cél nem található.
app_desc=Fájdalommentes, saját gépre telepíthető Git szolgáltatás
install=Könnyen telepíthető
platform=Keresztplatformos
platform_desc=A Forgejo minden platformon fut, ahol a <a target="_blank" rel="noopener noreferrer" href="%s">Go</a> fordíthat: Windows, macOS, Linux, ARM, stb. Válassza azt, amelyet szereti!
lightweight=Könnyűsúlyú
license=Nyílt forráskódú
@ -493,7 +492,7 @@ avatar=Profilkép
ssh_gpg_keys=SSH / GPG kulcsok
social=Közösségi fiókok
applications=Alkalmazások
orgs=Szervezetek kezelése
orgs=Szervezetek
repos=Tárolók
delete=Fiók törlése
twofa=Kétlépcsős hitelesítés
@ -665,6 +664,7 @@ email_notifications.submit=E-mail beállítások megadása
visibility.public=Nyilvános
visibility.private=Privát
appearance = Megjelenés
[repo]
owner=Tulajdonos
@ -811,7 +811,7 @@ editor.cancel_lower=Mégse
editor.commit_changes=Változások Véglegesítése
editor.add_tmpl='<filename>' hozzáadása
editor.commit_message_desc=Opcionális hosszabb leírás hozzáadása…
editor.commit_directly_to_this_branch=Mentés egyenesen a(z) <strong class="branch-name">%s</strong> ágba.
editor.commit_directly_to_this_branch=Mentés egyenesen a(z) <strong class="%[2]s">%[1]s</strong> ágba.
editor.create_new_branch=Hozzon létre egy <strong>új ágat</strong> ennek a commit-nak és indíts egy egyesítési kérést.
editor.propose_file_change=Változtatás ajánlása
editor.new_branch_name_desc=Új ág neve…
@ -1032,7 +1032,7 @@ pulls.filter_branch=Ágra szűrés
pulls.no_results=Nincs találat.
pulls.nothing_to_compare=Ezek az ágak egyenlőek. Nincs szükség egyesítési kérésre.
pulls.create=Egyesítési kérés létrehozása
pulls.title_desc_few=egyesíteni szeretné %[1]d változás(oka)t a(z) <code>%[2]s</code>-ból <code id="branch_target">%[3]s</code>-ba
pulls.title_desc_few=egyesíteni szeretné %[1]d változás(oka)t a(z) <code>%[2]s</code>-ból <code id="%[4]s">%[3]s</code>-ba
pulls.merged_title_desc_few=egyesítve %[1]d változás(ok) a <code>%[2]s</code>-ból <code>%[3]s</code>-ba %[4]s
pulls.tab_conversation=Beszélgetés
pulls.tab_commits=Commit-ok

View file

@ -98,7 +98,6 @@ name=Nama
app_desc=Sebuah layanan hosting Git sendiri yang tanpa kesulitan
install=Mudah dipasang
platform=Lintas platform
platform_desc=Forgejo bisa digunakan di mana <a target="_blank" rel="noopener noreferrer" href="%s">Go</a> bisa dijalankan: Windows, macOS, Linux, ARM, dll. Silahkan pilih yang Anda suka!
lightweight=Ringan
lightweight_desc=Forgejo hanya membutuhkan persyaratan minimal dan bisa berjalan pada Raspberry Pi yang murah. Bisa menghemat listrik!
license=Sumber Terbuka
@ -623,7 +622,7 @@ editor.cancel_lower=Batalkan
editor.commit_changes=Perubahan komitmen
editor.add_tmpl=Tambahkan '<filename>'
editor.commit_message_desc=Tambahkan deskripsi opsional yang panjang…
editor.commit_directly_to_this_branch=Komitmen langsung ke <strong class="branch-name">%s</strong> cabang.
editor.commit_directly_to_this_branch=Komitmen langsung ke <strong class="%[2]s">%[1]s</strong> cabang.
editor.create_new_branch=Membuat <strong>new branch</strong> untuk tarik komit ini mulai permintaan.
editor.create_new_branch_np=Buat <strong>cabang baru</strong> untuk komit ini.
editor.propose_file_change=Usul perubahan berkas
@ -752,7 +751,7 @@ pulls.compare_changes=Permintaan Tarik Baru
pulls.filter_branch=Penyaringan cabang
pulls.no_results=Hasil tidak ditemukan.
pulls.create=Buat Permintaan Tarik
pulls.title_desc_few=ingin menggabungkan komit %[1]d dari <code>%[2]s</code> menuju <code id="branch_target">%[3]s</code>
pulls.title_desc_few=ingin menggabungkan komit %[1]d dari <code>%[2]s</code> menuju <code id="%[4]s">%[3]s</code>
pulls.merged_title_desc_few=commit %[1]d telah digabungkan dari <code>%[2]s</code> menjadi <code>%[3]s</code> %[4]s
pulls.tab_conversation=Percakapan
pulls.tab_commits=Melakukan

View file

@ -133,7 +133,6 @@ network_error=Netkerfisvilla
app_desc=Þrautalaus og sjálfhýst Git þjónusta
install=Einföld uppsetning
platform=Fjölvettvangur
platform_desc=Forgejo virkar hvar sem að <a target="_blank" rel="noopener noreferrer" href="%s">Go</a> gerir: Linux, macOS, Windows, ARM o. s. frv. Veldu það sem þú vilt!
lightweight=Létt
lightweight_desc=Forgejo hefur lágar lágmarkskröfur og getur keyrt á ódýrum Raspberry Pi. Sparaðu orku!
license=Frjáls Hugbúnaður
@ -891,7 +890,7 @@ pulls.new=Ný Sameiningarbeiðni
pulls.view=Skoða Sameiningarbeiðni
pulls.compare_changes=Ný Sameiningarbeiðni
pulls.create=Skapa Sameiningarbeiðni
pulls.title_desc_few=vill sameina %[1]d framlög frá <code>%[2]s</code> í <code id="branch_target">%[3]s</code>
pulls.title_desc_few=vill sameina %[1]d framlög frá <code>%[2]s</code> í <code id="%[4]s">%[3]s</code>
pulls.tab_conversation=Umræða
pulls.tab_commits=Framlög
pulls.tab_files=Skráum Breytt

View file

@ -217,7 +217,6 @@ server_internal = Errore interno del server
app_desc=Un servizio auto-ospitato per Git pronto all'uso
install=Facile da installare
platform=Multipiattaforma
platform_desc=Forgejo funziona ovunque <a target="_blank" rel="noopener noreferrer" href="%s">Go</a> possa essere compilato: Windows, macOS, Linux, ARM, etc. Scegli ciò che ami!
lightweight=Leggero
lightweight_desc=Forgejo ha requisiti minimi bassi e può funzionare su un economico Raspberry Pi. Risparmia l'energia della tua macchina!
license=Open Source
@ -1000,7 +999,7 @@ valid_until_date = Valido fino a %s
ssh_signonly = SSH è attualmente disabilitato quindi queste chiavi sono usate solo per la firma di verifica dei commit.
social_desc = Questi profili social possono essere usati per accedere al tuo profilo. Assicurati di riconoscerli tutti.
permission_write = Leggi e scrivi
access_token_desc = I permessi token selezionati limitano l'autorizzazione solo alle corrispondenti vie <a %s>API</a>. Leggi la <a %s>documentazione</a> per ulteriori informazioni.
access_token_desc = I permessi token selezionati limitano l'autorizzazione solo alle corrispondenti vie <a href="%[1]s" target="_blank">API</a>. Leggi la <a href="%[2]s" target="_blank">documentazione</a> per ulteriori informazioni.
create_oauth2_application_success = Hai correttamente creato una nuova applicazione OAuth2.
update_oauth2_application_success = Hai correttamente aggiornato l'applicazione OAuth2.
oauth2_redirect_uris = URI per la reindirizzazione. Usa una nuova riga per ogni URI.
@ -1305,7 +1304,7 @@ editor.patching=Patching:
editor.new_patch=Nuova Patch
editor.commit_message_desc=Aggiungi una descrizione estesa facoltativa…
editor.signoff_desc=Aggiungi "firmato da" dal committer alla fine del messaggio di log di commit.
editor.commit_directly_to_this_branch=Fai un commit direttamente sul ramo <strong class="branch-name">%s</strong>.
editor.commit_directly_to_this_branch=Fai un commit direttamente sul ramo <strong class="%[2]s">%[1]s</strong>.
editor.create_new_branch=Crea un <strong> nuovo ramo</strong> per questo commit e avvia una richiesta di modifica.
editor.create_new_branch_np=Crea un <strong>nuovo ramo</strong> per questo commit.
editor.propose_file_change=Proponi la modifica del file
@ -1596,7 +1595,7 @@ issues.error_modifying_due_date=Impossibile modificare la scadenza.
issues.error_removing_due_date=Impossibile rimuovere la scadenza.
issues.push_commit_1=ha aggiunto %d commit %s
issues.push_commits_n=ha aggiunto %d commit %s
issues.force_push_codes=`ha forzato l'immissione %[1]s da <a class="ui sha" href="%[3]s"><code>%[2]s</code></a> a <a class="ui sha" href="%[5]s"><code>%[4]s</code></a> %[6]s`
issues.force_push_codes=`ha forzato l'immissione %[1]s da <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> a <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> %[6]s`
issues.force_push_compare=Confronta
issues.due_date_form=aaaa-mm-dd
issues.due_date_form_add=Aggiungi scadenza
@ -1693,7 +1692,7 @@ pulls.nothing_to_compare=Questi rami sono uguali. Non c'è bisogno di creare una
pulls.nothing_to_compare_and_allow_empty_pr=Questi rami sono uguali. Questa richiesta sarà vuota.
pulls.has_pull_request=`Una richiesta di modifica fra questi rami esiste già: <a href="%[1]s">%[2]s#%[3]d</a>`
pulls.create=Crea richiesta di modifica
pulls.title_desc_few=vuole unire %[1]d commit da <code>%[2]s</code> a <code id="branch_target">%[3]s</code>
pulls.title_desc_few=vuole unire %[1]d commit da <code>%[2]s</code> a <code id="%[4]s">%[3]s</code>
pulls.merged_title_desc_few=ha unito %[1]d commit da <code>%[2]s</code> a <code>%[3]s</code> %[4]s
pulls.change_target_branch_at=`cambiato il ramo di destinazione da <b>%s</b> a <b>%s</b> %s`
pulls.tab_conversation=Conversazione
@ -2740,7 +2739,7 @@ settings.ignore_stale_approvals = Ignora approvazioni stantie
settings.protected_branch_required_rule_name = Nome regola richiesta
settings.protect_status_check_patterns_desc = Inserisci sequenze per specificare quali controlli dello stato devono passare prima che i rami possano essere fusi con i rami che soddisfano questa regola. Ogni riga specifica una sequenza. Le sequenze non possono essere vuote.
settings.authorization_header_desc = Verrà inclusa come intestazione dell'autorizzazione per le richieste quando presente. Esempi: %s.
pulls.title_desc_one = vuole fondere %[1]d commit da <code>%[2]s</code> in <code id="branch_target">%[3]s</code>
pulls.title_desc_one = vuole fondere %[1]d commit da <code>%[2]s</code> in <code id="%[4]s">%[3]s</code>
settings.protect_unprotected_file_patterns_desc = File non protetti dei quali è consentita la modifica direttamente se l'utente ha permesso di scrittura, saltandole restrizioni di immissione. Più sequenze possono essere separate usando il punto e virgola (";"). Vedi la documentazione su <a href="%[1]s">%[2]s</a> per la sintassi delle sequenze glob. Esempi <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
settings.protect_protected_file_patterns_desc = I file non protetti non possono essere modificati direttamente neanche se l'utente ha il permesso di aggiungere, modificare o eliminare file in questo ramo. Più sequenze possono essere separate usando il punto e virgola (";"). Vedi la documentazione su <a href="%s">%s</a> per la sintassi della sequenze. Esempi: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
settings.protect_no_valid_status_check_patterns = Nessuna sequenza valida per il controllo dello stato.

View file

@ -218,7 +218,6 @@ app_desc=自分で立てる、超簡単 Git サービス
install=簡単インストール
install_desc=シンプルに、プラットフォームに応じて<a target="_blank" rel="noopener noreferrer" href="%[1]s">バイナリを実行</a>したり、<a target="_blank" rel="noopener noreferrer" href="%[2]s">Docker</a>で動かしたり、<a target="_blank" rel="noopener noreferrer" href="%[3]s">パッケージ</a>を使うだけ。
platform=クロスプラットフォーム
platform_desc=Forgejoは<a target="_blank" rel="noopener noreferrer" href="%s">Go</a>でコンパイルできる環境ならどこでも動きます: Windows、macOS、Linux、ARM等々、好きなものを選んでください!
lightweight=軽量
lightweight_desc=Forgejo の最小動作要件は小さくて、安価な Raspberry Pi でも動きます。エネルギー消費を節約しましょう!
license=オープンソース
@ -934,7 +933,7 @@ select_permissions=許可の選択
permission_no_access=アクセス不可
permission_read=読み取り
permission_write=読み取りと書き込み
access_token_desc=選択したトークン権限に応じて、関連する<a %s>API</a>ルートのみに許可が制限されます。 詳細は<a %s>ドキュメント</a>を参照してください。
access_token_desc=選択したトークン権限に応じて、関連する<a href="%[1]s" target="_blank">API</a>ルートのみに許可が制限されます。 詳細は<a href="%[2]s" target="_blank">ドキュメント</a>を参照してください。
at_least_one_permission=トークンを作成するには、少なくともひとつの許可を選択する必要があります
permissions_list=許可:
@ -1355,7 +1354,7 @@ editor.fail_to_apply_patch=`パッチを適用できません "%s"`
editor.new_patch=新しいパッチ
editor.commit_message_desc=詳細な説明を追加…
editor.signoff_desc=コミットログメッセージの最後にコミッターの Signed-off-by 行を追加
editor.commit_directly_to_this_branch=ブランチ<strong class="branch-name">%s</strong>へ直接コミットする。
editor.commit_directly_to_this_branch=ブランチ<strong class="%[2]s">%[1]s</strong>へ直接コミットする。
editor.create_new_branch=<strong>新しいブランチ</strong>にコミットしてプルリクエストを作成する。
editor.create_new_branch_np=<strong>新しいブランチ</strong>にコミットする。
editor.propose_file_change=ファイル修正を提案
@ -1721,7 +1720,7 @@ issues.error_modifying_due_date=期日を変更できませんでした。
issues.error_removing_due_date=期日を削除できませんでした。
issues.push_commit_1=が %d コミット追加 %s
issues.push_commits_n=が %d コミット追加 %s
issues.force_push_codes=`が %[1]s を強制プッシュ ( <a class="ui sha" href="%[3]s"><code>%[2]s</code></a> から <a class="ui sha" href="%[5]s"><code>%[4]s</code></a> へ ) %[6]s`
issues.force_push_codes=`が %[1]s を強制プッシュ ( <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> から <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> へ ) %[6]s`
issues.force_push_compare=比較
issues.due_date_form=yyyy-mm-dd
issues.due_date_form_add=期日の追加
@ -1836,7 +1835,7 @@ pulls.nothing_to_compare=同じブランチ同士のため、 プルリクエス
pulls.nothing_to_compare_and_allow_empty_pr=これらのブランチは内容が同じです。 空のプルリクエストになります。
pulls.has_pull_request=`同じブランチのプルリクエストはすでに存在します: <a href="%[1]s">%[2]s#%[3]d</a>`
pulls.create=プルリクエストを作成
pulls.title_desc_few=が <code>%[2]s</code> から <code id="branch_target">%[3]s</code> への %[1]d コミットのマージを希望しています
pulls.title_desc_few=が <code>%[2]s</code> から <code id="%[4]s">%[3]s</code> への %[1]d コミットのマージを希望しています
pulls.merged_title_desc_few=が %[1]d 個のコミットを <code>%[2]s</code> から <code>%[3]s</code> へマージ %[4]s
pulls.change_target_branch_at=`がターゲットブランチを <b>%s</b> から <b>%s</b> に変更 %s`
pulls.tab_conversation=会話
@ -2779,7 +2778,7 @@ issues.archived_label_description = (アーカイブ済) %s
settings.web_hook_name_sourcehut_builds = SourceHut Builds
settings.matrix.room_id_helper = ルームIDは、Element web clientのRoom Settings > Advanced > Internal room IDから取得できます。例%s。
pulls.merged_title_desc_one = %[4]s の <code>%[2]s</code> から %[1]d 件のコミットを <code>%[3]s</code> へマージした
pulls.title_desc_one = <code id="branch_target">%[3]s</code> から %[1]d 件のコミットを <code>%[2]s</code> へマージしたい
pulls.title_desc_one = <code id="%[4]s">%[3]s</code> から %[1]d 件のコミットを <code>%[2]s</code> へマージしたい
pulls.ready_for_review = レビューの準備ができていますか?
settings.transfer.button = 所有権を移送する
settings.transfer.modal.title = 所有権を移送

View file

@ -778,7 +778,7 @@ editor.or=혹은
editor.cancel_lower=취소
editor.commit_changes=변경 내용을 커밋
editor.commit_message_desc=선택적 확장 설명 추가…
editor.commit_directly_to_this_branch=<strong class="branch-name">%s</strong> 브랜치에서 직접 커밋해주세요.
editor.commit_directly_to_this_branch=<strong class="%[2]s">%[1]s</strong> 브랜치에서 직접 커밋해주세요.
editor.create_new_branch=이 커밋에 대한 <strong>새로운 브랜치</strong>를 만들고 끌어오기 요청을 시작합니다.
editor.new_branch_name_desc=새로운 브랜치 이름…
editor.cancel=취소
@ -973,7 +973,7 @@ pulls.compare_compare=다음으로부터 풀
pulls.filter_branch=Filter Branch
pulls.no_results=결과를 찾을 수 없습니다.
pulls.create=풀 리퀘스트 생성
pulls.title_desc_few=<code>%[2]s</code> 에서 <code id="branch_target">%[3]s</code> 로 %[1]d개의 커밋들을 병합하려함
pulls.title_desc_few=<code>%[2]s</code> 에서 <code id="%[4]s">%[3]s</code> 로 %[1]d개의 커밋들을 병합하려함
pulls.merged_title_desc_few=님이 <code>%[2]s</code> 에서 <code>%[3]s</code> 로 %[1]d 커밋을 %[4]s 병합함
pulls.tab_conversation=대화
pulls.tab_commits=커밋
@ -1081,7 +1081,6 @@ contributors.contribution_type.commits=커밋
search=검색
search.search_repo=저장소 검색
search.results="<a href=\"%s\">%s</a> 에서 \"%s\" 에 대한 검색 결과"
search.code_no_results=검색어와 일치하는 소스코드가 없습니다.
settings=설정

View file

@ -187,7 +187,6 @@ app_desc=Viegli uzstādāms Git serviss
install=Vienkārši instalējams
install_desc=Vienkārši <a target="_blank" rel="noopener noreferrer" href="%[1]s">jāpalaiž izpildāmais fails</a> vajadzīgajai platformai, jāizmanto <a target="_blank" rel="noopener noreferrer" href="%[2]s">Docker</a>, vai jāiegūst <a target="_blank" rel="noopener noreferrer" href="%[3]s">pakotne</a>.
platform=Pieejama dažādām platformām
platform_desc=Forgejo iespējams uzstādīt jebkur, kam <a target="_blank" rel="noopener noreferrer" href="http://golang.org/">Go</a> var nokompilēt: Windows, macOS, Linux, ARM utt. Izvēlies to, kas tev patīk!
lightweight=Viegla
lightweight_desc=Forgejo ir miminālas prasības un to var darbināt uz nedārga Raspberry Pi datora. Ietaupi savai ierīcei resursus!
license=Atvērtā pirmkoda
@ -830,7 +829,7 @@ select_permissions=Norādiet tiesības
permission_no_access=Nav piekļuves
permission_read=Skatīšanās
permission_write=Skatīšanās un raksīšanas
access_token_desc=Atzīmētie pilnvaras apgabali ierobežo autentifikāciju tikai atbilstošiem <a %s>API</a> izsaukumiem. Sīkāka informācija pieejama <a %s>dokumentācijā</a>.
access_token_desc=Atzīmētie pilnvaras apgabali ierobežo autentifikāciju tikai atbilstošiem <a href="%[1]s" target="_blank">>API</a> izsaukumiem. Sīkāka informācija pieejama <a href="%[2]s" target="_blank">>dokumentācijā</a>.
at_least_one_permission=Nepieciešams norādīt vismaz vienu tiesību, lai izveidotu pilnvaru
permissions_list=Tiesības:
@ -1231,7 +1230,7 @@ editor.fail_to_apply_patch=`Neizdevās pielietot ielāpu "%s"`
editor.new_patch=Jauns ielāps
editor.commit_message_desc=Pievienot neobligātu paplašinātu aprakstu…
editor.signoff_desc=Pievienot revīzijas žurnāla ziņojuma beigās Signed-off-by ar revīzijas autoru.
editor.commit_directly_to_this_branch=Apstiprināt revīzijas izmaiņas atzarā <strong class="branch-name">%s</strong>.
editor.commit_directly_to_this_branch=Apstiprināt revīzijas izmaiņas atzarā <strong class="%[2]s">%[1]s</strong>.
editor.create_new_branch=Izveidot <strong>jaunu atzaru</strong> un izmaiņu pieprasījumu šai revīzijai.
editor.create_new_branch_np=Izveidot <strong>jaunu atzaru</strong> šai revīzijai.
editor.propose_file_change=Ieteikt faila izmaiņas
@ -1597,7 +1596,7 @@ issues.error_modifying_due_date=Neizdevās izmainīt izpildes termiņu.
issues.error_removing_due_date=Neizdevās noņemt izpildes termiņu.
issues.push_commit_1=iesūtīja %d revīziju %s
issues.push_commits_n=iesūtīja %d revīzijas %s
issues.force_push_codes=`veica piespiedu izmaiņu iesūtīšanu atzarā %[1]s no revīzijas <a class="ui sha" href="%[3]s"><code>%[2]s</code></a> uz <a class="ui sha" href="%[5]s"><code>%[4]s</code></a> %[6]s`
issues.force_push_codes=`veica piespiedu izmaiņu iesūtīšanu atzarā %[1]s no revīzijas <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> uz <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> %[6]s`
issues.force_push_compare=Salīdzināt
issues.due_date_form=dd.mm.yyyy
issues.due_date_form_add=Pievienot izpildes termiņu
@ -1712,7 +1711,7 @@ pulls.nothing_to_compare=Nav ko salīdzināt, jo bāzes un salīdzināmie atzari
pulls.nothing_to_compare_and_allow_empty_pr=Šie atzari ir vienādi. Izveidotais izmaiņu pieprasījums būs tukšs.
pulls.has_pull_request=`Izmaiņu pieprasījums starp šiem atzariem jau eksistē: <a href="%[1]s">%[2]s#%[3]d</a>`
pulls.create=Izveidot izmaiņu pieprasījumu
pulls.title_desc_few=vēlas sapludināt %[1]d revīzijas no <code>%[2]s</code> uz <code id="branch_target">%[3]s</code>
pulls.title_desc_few=vēlas sapludināt %[1]d revīzijas no <code>%[2]s</code> uz <code id="%[4]s">%[3]s</code>
pulls.merged_title_desc_few=sapludināja %[1]d revīzijas no <code>%[2]s</code> uz <code>%[3]s</code> %[4]s
pulls.change_target_branch_at=`nomainīja mērķa atzaru no <b>%s</b> uz <b>%s</b> %s`
pulls.tab_conversation=Saruna

View file

@ -335,6 +335,7 @@ oauth.signin.error = Bim Verarbeiden vun de Anmellens-Anfraag is een Fehler u
openid_connect_desc = De utköört OpenID-URI is unbekannt. Verbinn dat hier mit eenem nejen Konto.
openid_signin_desc = Giff diene OpenID-URI in. Ton Bispööl: alice.openid.example.org of https://openid.example.org/alice.
password_pwned = Dat Passwoord, wat du utköört hest, is up eener <a target="_blank" rel="noopener noreferrer" href="%s">List vun klaut Passwoorden</a>, wat tovör in publiken Datenbröken blootmaakt worden is. Bidde versöök dat noch eenmaal mit eenem anner Passwoord, un överlegg di, of du deeses Passwoord ok annerwaar ännern willst.
use_onetime_code = Een Eenmaal-Bruuk-Passwoord bruken
[mail]
view_it_on = Up %s wiesen
@ -838,7 +839,7 @@ add_email_confirmation_sent = Eene Utwiesens-E-Mail is an »%s« schickt worden.
ssh_desc = Deese publiken SSH-Slötels sünd mit dienem Konto verbunnen. De tohörig privaate Slötel gifft kumpleten Togriep up diene Repositoriums. SSH-Slötels, wat utwiest worden sünd, könen bruukt worden, um SSH-unnerschreven Git-Kommitterens uttowiesen.
keep_email_private_popup = Dat word diene E-Mail-Adress vun dienem Profil verburgen. Dann is dat nich mehr de Normaalweert för Kommitterens, wat du över de Internett-Schnittstee maakst, so as Datei-Upladens un Bewarkens, un word nich in Tosamenföhrens-Kommitterens bruukt. In Stee daarvun kann eene besünnere Adress %s bruukt worden, um Kommitterens mit dienem Konto to verbinnen. Wees wiss, dat dat Ännern vun deeser Instellen bestahn Kommitterens nich ännert.
ssh_helper = <strong>Bruukst du Hülp?</strong> Kiek de Inföhren an, wo du <a href="%s">diene eegenen SSH-Slötels maakst</a> of hülp <a href="%s">gewohnten Probleemen</a> of, över wat man mit SSH mennigmaal strukelt.
access_token_desc = Utköört Teken-Verlöövnissen begrenzen dat Anmellen blots up de tohörig <a %s>API</a>-Padden. Lees de <a %s>Dokumenteren</a> för mehr Informatioonen.
access_token_desc = Utköört Teken-Verlöövnissen begrenzen dat Anmellen blots up de tohörig <a href="%[1]s" target="_blank">API</a>-Padden. Lees de <a href="%[2]s" target="_blank">Dokumenteren</a> för mehr Informatioonen.
oauth2_confidential_client = Diskreeter Klient. Köör dat för Programmen ut, wat dat Geheimnis diskreet behanneln, as Internett-Sieden. Köör dat nich för stedenwies Programmen ut, as Schrievdisk- un Telefoon-Programmens.
gpg_helper = <strong>Bruukst du Hülp?</strong> Kiek de Inföhren <a href="%s">över GPG</a> an.
gpg_desc = Deese publiken GPG-Slötels sünd mit dienem Konto verbunnen un worden bruukt, um diene Kommitterens uttowiesen. Holl de tohörig privaaten Slötels seker, denn daarmit kann man Kommitterens mit diener Unnerschrift unnerschrieven.
@ -1125,7 +1126,7 @@ editor.patching = Plackt:
editor.fail_to_apply_patch = Kann Plack »%s« nich anwennen
editor.new_patch = Nejer Plack
editor.commit_message_desc = Wenn du willst, föög een wiederes Beschrieven hento …
editor.commit_directly_to_this_branch = Kommitteer stracks up de <strong class="branch-name">%s</strong>-Twieg.
editor.commit_directly_to_this_branch = Kommitteer stracks up de <strong class="%[2]s">%[1]s</strong>-Twieg.
editor.propose_file_change = Datei-Ännern vörslagen
editor.new_branch_name = Benööm de Twieg för deeses Kommitteren
editor.new_branch_name_desc = Nejer Twig-Naam …
@ -1140,7 +1141,7 @@ editor.file_already_exists = Eene Datei mit de Naam »%s« gifft dat in deesem R
editor.commit_id_not_matching = De Datei is ännert worden, as du se bewarkt hest. Kommitteer up eenen nejen Twieg un föhr dann tosamen.
editor.push_out_of_date = De Schuuv schient verollt to wesen.
editor.commit_empty_file_header = Eene lege Datei kommitteren
editor.no_changes_to_show = 't gifft keene Ännerns to wiesen.
editor.no_changes_to_show = t gifft keene Ännerns to wiesen.
editor.fail_to_update_file_summary = Fehler-Naricht:
editor.push_rejected_summary = Kumpleete Oflehnens-Naricht:
editor.add_subdir = Verteeknis hentofögen …
@ -1526,7 +1527,7 @@ issues.review.dismissed_label = Ofseggt
issues.review.left_comment = hett kommenteert
issues.review.content.empty = Du muttst eenen Kommentaar geven, wat för Ännerns du hebben willst.
issues.review.reject = hett %s um Ännerns beden
issues.review.remove_review_request = hett de Nakieken-Anfraag för %s %s wegdaan
issues.review.remove_review_request = hett %[2]s de Nakieken-Anfraag för %[1]s wegdaan
issues.review.remove_review_request_self = hett %s dat Nakieken verweigert
issues.unlock_error = Kann een Gefall nich upsluten, wenn t nich tosloten is.
issues.lock_with_reason = hett dat um <strong>%s</strong> %s tosluten un Snack up Mitarbeiders begrenzt
@ -1560,14 +1561,14 @@ issues.due_date_invalid = Dat Anstahns-Datum is ungültig of buten de Rieg. Bidd
issues.dependency.remove = Wegdoon
issues.dependency.issue_close_blocks = Deeses Gefall blockeert dat Dichtmaken vun deesen Gefallens
issues.review.outdated_description = Inholl hett sik ännert, siet deeser Kommentaar schreven worden is
issues.force_push_codes = `hett %[1]s vun <a class="ui sha" href="%[3]s"><code>%[2]s</code></a> to <a class="ui sha" href="%[5]s"><code>%[4]s</code></a> %[6]s dwangsschuven`
issues.force_push_codes = `hett %[1]s vun <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> to <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> %[6]s dwangsschuven`
issues.dependency.pr_remove_text = Dat word de Ofhangen vun deesem Haalvörslag wegdoon. Wiedermaken?
issues.review.pending = Staht ut
issues.review.option.hide_outdated_comments = Verollte Kommentarens verbargen
issues.due_date_form = JJJJ-MM-DD
issues.dependency.added_dependency = `hett %s eene neje Ofhangen hentoföögt`
issues.review.wait = is %s um een Nakieken anfraggt worden
issues.review.add_review_request = hett um een Nakieken vun %s %s anfraggt
issues.review.add_review_request = hett %[2]s um een Nakieken vun %[1]s anfraggt
issues.review.show_outdated = Wies verollt
issues.review.hide_outdated = Verbarg verollt
issues.content_history.options = Instellens
@ -1598,7 +1599,7 @@ pulls.filter_changes_by_commit = Na Kommitteren filtern
pulls.nothing_to_compare = Deese Twiegen sünd gliek. t is nich nödig, eenen Haalvörslag to maken.
pulls.nothing_to_compare_have_tag = De utköört Twieg/Mark sünd gliek.
pulls.create = Haalvörslag maken
pulls.title_desc_one = will %[1]d Kommitteren vun <code>%[2]s</code> na <code id="branch_target">%[3]s</code> tosamenföhren
pulls.title_desc_one = will %[1]d Kommitteren vun <code>%[2]s</code> na <code id="%[4]s">%[3]s</code> tosamenföhren
pulls.merged_title_desc_one = hett %[1]d Kommitteren vun <code>%[2]s</code> na <code>%[3]s</code> %[4]s tosamenföhrt
pulls.change_target_branch_at = `hett de Enn-Twieg vun <b>%s</b> to <b>%s</b> %s ännert`
pulls.tab_conversation = Snack
@ -1648,7 +1649,7 @@ issues.content_history.delete_from_history = Ut Histoorje lösken
pulls.compare_changes = Nejer Haalvörslag
pulls.allow_edits_from_maintainers_desc = Brukers, well dat Recht hebben, to de Grund-Twieg to schrieven, düren ok up deesen Twieg schuuven
pulls.nothing_to_compare_and_allow_empty_pr = Deese Twiegen sünd gliek. De HV word leeg wesen.
pulls.title_desc_few = will %[1]d Kommitterens vun <code>%[2]s</code> na <code id="branch_target">%[3]s</code> tosamenföhren
pulls.title_desc_few = will %[1]d Kommitterens vun <code>%[2]s</code> na <code id="%[4]s">%[3]s</code> tosamenföhren
pulls.data_broken = Deeser Haalvörslag is kaputt, denn de Gabel-Informatioon fehlt.
pulls.waiting_count_1 = %d Nakieken staht ut
issues.content_history.deleted = lösket
@ -2524,11 +2525,17 @@ settings.sourcehut_builds.access_token_helper = Togang-Teken, wat de Verlöövni
settings.protect_unprotected_file_patterns_desc = Nich schütt Dateien, wat stracks ännert worden düren, wenn de Bruker Schriev-Togriep hett, an de Schuuv-Schüttens-Örders vörbi. Mennig Musters könen mit Semikolon (»;«) trennt worden. Kiek de Dokumenteren för <a href="%[1]s">">%[2]s</a> för de Syntax an. Bispölen: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
settings.protected_branch_required_rule_name = Ördernaam is nödig
settings.protect_protected_file_patterns_desc = Schütt Dateien, wat nich stracks ännert worden düren, sülvst wenn de Bruker dat Recht hett, Dateien in deesem Twieg hentotofögen, to bewarken of to lösken. Mennig Musters könen mit Semikolon (»;«) trennt worden. Kiek de Dokumenteren för <a href="%[1]s">">%[2]s</a> för de Syntax an. Bispölen: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
settings.branch_filter_desc = Twieg-Verlöövnis-List för Vörfallen över dat Schuven un dat Maken un Lösken vun Twiegen, angeven as een Glob-Muster. Wenn leeg of <code>*</code> worden Vörfallen för all Twiegen mellt. Kiek de Dokumenteren för <a href="%[1]s">">%[2]s</a> för de Syntax an. Bispölen: <code>master</code>, <code>{master,release*}</code>.
settings.branch_filter_desc = Twieg-Verlöövnis-List för Vörfallen över dat Schuven un dat Maken un Lösken vun Twiegen, angeven as een Glob-Muster. Wenn leeg of <code>*</code> worden Vörfallen för all Twiegen mellt. Kiek de Dokumenteren för <a href="%[1]s">%[2]s</a> för de Syntax an. Bispölen: <code>master</code>, <code>{master,release*}</code>.
settings.matrix.room_id_helper = De Ruum-ID kann vun de Element-Internett-Sied unner Ruum-Instellens → Verwiedert → Binnere Ruum-ID haalt worden. Bispööl: %s.
settings.tags.protection.pattern.description = Du kannst eenen enkelt Naam bruken of een Glob-Muster of Regel-Utdruck, um up mennig Markens to passen. Lees mehr in de <a target="_blank" rel="noopener" href="%s">Inföhren över schütt Markens</a>.
error.broken_git_hook = Git-Hakens in deesem Repositorium schienen kaputt to wesen. Bidde folg de <a target="_blank" rel="noreferrer" href="%s">Dokumenteren</a>, um se to repareren, dann schuuv een paar Kommitterens, um de Tostand to vernejen.
settings.matrix.access_token_helper = Dat word anraden, daarföör eegens een Matrix-Konto intorichten. Dat Togangs-Teken kann in de Element-Internett-Sied (in eener privaaten/anonymen Karteikaart) unner Brukermenü (boven links) → All Instellens → Hülp & Över → Togangs-Teken (stracks unner de Heimaadserver-URL) haalt worden. Maak de privaate/anonyme Karteikaart dicht (wenn du di avmellst, word dat Teken ungültig).
issues.review.add_remove_review_requests = hett %[3]s um Nakiekens vun %[1]s anfraggt un de Nakiekens-Anfragen för %[2]s wegdaan
issues.review.add_review_requests = hett %[2]s um Nakiekens vun %[1]s anfraggt
issues.review.remove_review_requests = hett %[2]s de Nakieken-Anfragen för %[1]s wegdaan
pulls.delete_after_merge.head_branch.is_protected = De Kopp-Twieg, wat du lösken willst, is een schütt Twieg un kann nich lösket worden.
pulls.delete_after_merge.head_branch.insufficient_branch = Du hest nich dat Recht, de Kopp-Twieg to lösken.
pulls.delete_after_merge.head_branch.is_default = De Kopp-Twieg, wat du lösken willst, is de Höövd-Twieg un kann nich lösket worden.
[repo.permissions]
code.read = <b>Lesen:</b> De Quelltext vun deesem Repositorium ankieken un klonen.

View file

@ -659,7 +659,7 @@ unable_verify_ssh_key = Kan de SSH-sleutel niet verifiëren, controleer deze voo
still_own_repo = Uw account is eigenaar van één of meer repositories, verwijder of draag deze eerst over.
admin_cannot_delete_self = U kan uzelf niet verwijderen als u een beheerder bent. Verwijder eerst uw beheerdersrechten.
username_error_no_dots = ` kan alleen alfanumerieke karakters ("0-9","a-z","A-Z"), streepje ("-") en liggend streepje ("_") bevatten. Niet-alfanumerieke karakters aan het begin of eind zijn verboden en aaneenvolgende niet alfanumerieke karakters zijn ook verboden.`
invalid_group_team_map_error = ` mapping is ongeldig: %s"
invalid_group_team_map_error = ` mapping is ongeldig: %s`
org_still_own_repo = Deze organisatie is eigenaar van één of meer repositories, verwijder of draag deze eerst over.
org_still_own_packages = Deze organisatie is eigenaar van één of meer pakketten, verwijder deze eerst.
unset_password = De inloggebruiker heeft het wachtwoord niet ingesteld.
@ -1028,7 +1028,7 @@ visibility.private_tooltip = Alleen zichtbaar voor leden van organisaties waarbi
user_unblock_success = De gebruiker is succesvol gedeblokkeerd.
user_block_success = De gebruiker is succesvol geblokkeerd.
blocked_since = Geblokkeerd sinds %s
access_token_desc = Geselecteerde token machtigingen beperken autorisatie alleen tot de bijbehorende <a %s>API</a> routes. Lees de <a %s>documentatie</a> voor meer informatie.
access_token_desc = Geselecteerde token machtigingen beperken autorisatie alleen tot de bijbehorende <a href="%[1]s" target="_blank">API</a> routes. Lees de <a href="%[2]s" target="_blank">documentatie</a> voor meer informatie.
oauth2_confidential_client = Vertrouwelijke client. Selecteer deze optie voor apps die het geheim bewaren, zoals webapps. Niet selecteren voor native apps, waaronder desktop- en mobiele apps.
authorized_oauth2_applications_description = Je hebt deze applicaties van derden toegang verleend tot je persoonlijke Forgejo-account. Trek de toegang in voor applicaties die niet langer in gebruik zijn.
hidden_comment_types.ref_tooltip = Reacties waarbij naar deze issue werd verwezen vanuit een ander issue/commit/…
@ -1309,7 +1309,7 @@ editor.patching=Patchen:
editor.new_patch=Nieuwe patch
editor.commit_message_desc=Voeg een optionele uitgebreide omschrijving toe…
editor.signoff_desc=Voeg een Signed-off-by toe aan het einde van het commit logbericht.
editor.commit_directly_to_this_branch=Commit direct naar de branch '<strong class="branch-name">%s</strong>'.
editor.commit_directly_to_this_branch=Commit direct naar de branch '<strong class="%[2]s">%[1]s</strong>'.
editor.create_new_branch=Maak een <strong>nieuwe branch</strong> voor deze commit en start van een pull request.
editor.create_new_branch_np=Maak een <strong>nieuwe branch</strong> voor deze commit.
editor.propose_file_change=Stel bestandswijziging voor
@ -1599,7 +1599,7 @@ issues.error_modifying_due_date=Deadline aanpassen mislukt.
issues.error_removing_due_date=Deadline verwijderen mislukt.
issues.push_commit_1=toegevoegd %d commit %s
issues.push_commits_n=toegevoegd %d commits %s
issues.force_push_codes=`force-push %[1]s van <a class="ui sha" href="%[3]s"><code>%[2]s</code></a> naar <a class="ui sha" href="%[5]s"><code>%[4]s</code></a> %[6]s`
issues.force_push_codes=`force-push %[1]s van <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> naar <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> %[6]s`
issues.force_push_compare=Vergelijk
issues.due_date_form=jjjj-mm-dd
issues.due_date_form_add=Vervaldatum toevoegen
@ -1696,7 +1696,7 @@ pulls.nothing_to_compare=Deze branches zijn gelijk. Er is geen pull request nodi
pulls.nothing_to_compare_and_allow_empty_pr=Deze branches zijn gelijk. Deze pull verzoek zal leeg zijn.
pulls.has_pull_request=`Een pull-verzoek tussen deze branches bestaat al: <a href="%[1]s">%[2]s#%[3]d</a>`
pulls.create=Pull request aanmaken
pulls.title_desc_few=wilt %[1]d commits van <code>%[2]s</code> samenvoegen met <code id="branch_target">%[3]s</code>
pulls.title_desc_few=wilt %[1]d commits van <code>%[2]s</code> samenvoegen met <code id="%[4]s">%[3]s</code>
pulls.merged_title_desc_few=heeft %[1]d commits samengevoegd van <code>%[2]s</code> naar <code>%[3]s</code> %[4]s
pulls.change_target_branch_at='doelbranch aangepast van <b>%s</b> naar <b>%s</b> %s'
pulls.tab_conversation=Discussie
@ -2745,7 +2745,7 @@ activity.navbar.code_frequency = Code frequentie
activity.navbar.recent_commits = Recente commits
file_follow = Volg symlink
error.broken_git_hook = it hooks van deze repository lijken kapot te zijn. Volg alsjeblieft <a target="_blank" rel="noreferrer" href="%s">de documentatie</a> om ze te repareren, push daarna wat commits om de status te vernieuwen.
pulls.title_desc_one = wilt %[1]d commit van <code>%[2]s</code> samenvoegen in <code id="branch_target">%[3]s</code>
pulls.title_desc_one = wilt %[1]d commit van <code>%[2]s</code> samenvoegen in <code id="%[4]s">%[3]s</code>
open_with_editor = Open met %s
commits.search_branch = Deze branch
pulls.merged_title_desc_one = heeft %[1]d commit van <code>%[2]s</code> samengevoegd in <code>%[3]s</code> %[4]s

View file

@ -1152,7 +1152,7 @@ editor.commit_signed_changes=Zatwierdź podpisane zmiany
editor.commit_changes=Zatwierdź zmiany
editor.add_tmpl=Dodanie '<filename>'
editor.commit_message_desc=Dodaj dodatkowy rozszerzony opis…
editor.commit_directly_to_this_branch=Zmieniaj bezpośrednio gałąź <strong class="branch-name">%s</strong>.
editor.commit_directly_to_this_branch=Zmieniaj bezpośrednio gałąź <strong class="%[2]s">%[1]s</strong>.
editor.create_new_branch=Stwórz <strong>nową gałąź</strong> dla tego commita i rozpocznij Pull Request.
editor.create_new_branch_np=Stwórz <strong>nową gałąź</strong> dla tego commita.
editor.propose_file_change=Zaproponuj zmiany w pliku
@ -1482,7 +1482,7 @@ pulls.no_results=Nie znaleziono wyników.
pulls.nothing_to_compare=Te gałęzie są sobie równe. Nie ma potrzeby tworzyć Pull Requesta.
pulls.nothing_to_compare_and_allow_empty_pr=Te gałęzie są równe. Ten PR będzie pusty.
pulls.create=Utwórz Pull Request
pulls.title_desc_few=chce scalić %[1]d commity/ów z <code>%[2]s</code> do <code id="branch_target">%[3]s</code>
pulls.title_desc_few=chce scalić %[1]d commity/ów z <code>%[2]s</code> do <code id="%[4]s">%[3]s</code>
pulls.merged_title_desc_few=scala %[1]d commity/ów z <code>%[2]s</code> do <code>%[3]s</code> %[4]s
pulls.change_target_branch_at=`zmienia gałąź docelową z <b>%s</b> na <b>%s</b> %s`
pulls.tab_conversation=Dyskusja

View file

@ -217,7 +217,6 @@ server_internal = Erro interno do servidor
app_desc=Um serviço de hospedagem Git amigável
install=Fácil de instalar
platform=Multi-plataforma
platform_desc=Forgejo roda em qualquer sistema em que <a target="_blank" rel="noopener noreferrer" href="%s">Go</a> consegue compilar: Windows, macOS, Linux, ARM, etc. Escolha qual você gosta mais!
lightweight=Leve e rápido
lightweight_desc=Forgejo utiliza poucos recursos e consegue mesmo rodar no barato Raspberry Pi. Economize energia elétrica da sua máquina!
license=Código aberto
@ -1032,7 +1031,7 @@ user_block_success = O usuário foi bloqueado.
twofa_recovery_tip = Caso perca o seu dispositivo, você poderá usar uma chave de uso único para recuperar o acesso à sua conta.
webauthn_key_loss_warning = Caso perca as suas chaves de segurança, você perderá o acesso à sua conta.
blocked_users_none = Nenhum usuário bloqueado.
access_token_desc = As permissões selecionadas para o token limitam o acesso apenas às <a %s>rotas da API</a> correspondentes. Veja a <a %s>documentação</a> para mais informações.
access_token_desc = As permissões selecionadas para o token limitam o acesso apenas às <a href="%[1]s" target="_blank">rotas da API</a> correspondentes. Veja a <a href="%[2]s" target="_blank">documentação</a> para mais informações.
webauthn_alternative_tip = Você talvez queira configurar um método adicional de autenticação.
change_password = Alterar senha
hints = Dicas
@ -1344,7 +1343,7 @@ editor.fail_to_apply_patch=`Não foi possível aplicar a correção "%s"`
editor.new_patch=Novo patch
editor.commit_message_desc=Adicione uma descrição detalhada (opcional)...
editor.signoff_desc=Adicione um assinado-por-committer no final do log do commit.
editor.commit_directly_to_this_branch=Commit diretamente no branch <strong class="branch-name">%s</strong>.
editor.commit_directly_to_this_branch=Commit diretamente no branch <strong class="%[2]s">%[1]s</strong>.
editor.create_new_branch=Crie um <strong>novo branch</strong> para este commit e crie um pull request.
editor.create_new_branch_np=Crie um <strong>novo branch</strong> para este commit.
editor.propose_file_change=Propor alteração de arquivo
@ -1699,7 +1698,7 @@ issues.error_modifying_due_date=Falha ao modificar a data limite.
issues.error_removing_due_date=Falha ao remover a data limite.
issues.push_commit_1=adicionou %d commit %s
issues.push_commits_n=adicionou %d commits %s
issues.force_push_codes=`forçou o push %[1]s de <a class="ui sha" href="%[3]s"><code>%[2]s</code></a> para <a class="ui sha" href="%[5]s"><code>%[4]s</code></a> %[6]s`
issues.force_push_codes=`forçou o push %[1]s de <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> para <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> %[6]s`
issues.force_push_compare=Comparar
issues.due_date_form=dd/mm/aaaa
issues.due_date_form_add=Adicionar data limite
@ -1752,8 +1751,8 @@ issues.review.left_comment=deixou um comentário
issues.review.content.empty=Você precisa deixar um comentário indicando as alterações solicitadas.
issues.review.reject=solicitou alterações %s
issues.review.wait=foi solicitado(a) para revisar %s
issues.review.add_review_request=solicitou uma revisão de %s %s
issues.review.remove_review_request=removeu a solicitação de revisão para %s %s
issues.review.add_review_request=solicitou revisão de %[1]s %[2]s
issues.review.remove_review_request=removeu a solicitação de revisão para %[1]s %[2]s
issues.review.remove_review_request_self=recusou-se a revisar %s
issues.review.pending=Pendente
issues.review.pending.tooltip=Este comentário não está atualmente visível para outros usuários. Para enviar seus comentários pendentes, selecione "%s" -> "%s/%s/%s" no topo da página.
@ -1813,7 +1812,7 @@ pulls.nothing_to_compare=Estes branches são iguais. Não há nenhuma necessidad
pulls.nothing_to_compare_and_allow_empty_pr=Estes branches são iguais. Este PR ficará vazio.
pulls.has_pull_request=`Um pull request entre esses branches já existe: <a href="%[1]s">%[2]s#%[3]d</a>`
pulls.create=Criar pull request
pulls.title_desc_few=quer mesclar %[1]d commits de <code>%[2]s</code> em <code id="branch_target">%[3]s</code>
pulls.title_desc_few=quer mesclar %[1]d commits de <code>%[2]s</code> em <code id="%[4]s">%[3]s</code>
pulls.merged_title_desc_few=mesclou %[1]d commits de <code>%[2]s</code> em <code>%[3]s</code> %[4]s
pulls.change_target_branch_at=`mudou o branch de destino de <b>%s</b> para <b>%s</b> %s`
pulls.tab_conversation=Conversação
@ -2691,7 +2690,7 @@ settings.confirm_wiki_branch_rename = Renomar o ramo da wiki
pulls.merged_title_desc_one = mesclou %[1]d commit de <code>%[2]s</code> em <code>%[3]s</code> %[4]s
activity.navbar.recent_commits = Commits recentes
size_format = %[1]s: %[2]s; %[3]s: %[4]s
pulls.title_desc_one = quer mesclar %[1]d commit de <code>%[2]s</code> em <code id="branch_target">%[3]s</code>
pulls.title_desc_one = quer mesclar %[1]d commit de <code>%[2]s</code> em <code id="%[4]s">%[3]s</code>
pulls.cmd_instruction_merge_desc = Mescle as alterações e enviar para o Forgejo.
pulls.ready_for_review = Pronto para revisão?
commits.search_branch = Este ramo
@ -2827,6 +2826,9 @@ release.deletion_desc = Eliminar um release apenas o remove do Forgejo. Isso nã
issues.all_title = Tudo
issues.new.assign_to_me = Designar a mim
settings.discord_icon_url.exceeds_max_length = A URL do ícone precisa ter 2048 caracteres ou menos
issues.review.add_review_requests = solicitou revisões de %[1]s %[2]s
issues.review.remove_review_requests = removeu pedidos de revisão para %[1]s %[2]s
issues.review.add_remove_review_requests = solicitou revisões de %[1]s e removeu pedidos de revisão para %[2]s %[3]s
[graphs]

View file

@ -476,6 +476,7 @@ hint_register = Precisa de uma conta? <a href="%s">Faça uma inscrição agora.<
sign_up_button = Faça uma inscrição agora.
back_to_sign_in = Voltar ao iniciar a sessão
sign_in_openid = Prosseguir com OpenID
unauthorized_credentials = As credenciais estão erradas ou expiraram. Tente o comando de novo ou veja %s para mais informação
[mail]
view_it_on=Ver em %s
@ -715,6 +716,7 @@ public_activity.visibility_hint.self_public = O seu trabalho está visível para
public_activity.visibility_hint.admin_public = Este trabalho está visível para todos, mas como administrador/a pode também ver o que consta em espaços privados.
public_activity.visibility_hint.self_private = O seu trabalho apenas está visível para si e para os administradores da instância. <a href="%s">Configurar</a>.
public_activity.visibility_hint.admin_private = Este trabalho está visível para si porque é um/a administrador/a, mas o/a utilizador/a quer permanecer privado/a.
public_activity.visibility_hint.self_private_profile = O seu trabalho está visível somente para si e para os administradores da instância porque o seu perfil é privado. <a href="%s">Configure</a>.
[settings]
profile=Perfil
@ -932,7 +934,7 @@ select_permissions=Escolher permissões
permission_no_access=Sem acesso
permission_read=Lidas
permission_write=Leitura e escrita
access_token_desc=As permissões dos códigos escolhidos limitam a autorização apenas às rotas da <a %s>API</a> correspondentes. Leia a <a %s>documentação</a> para obter mais informação.
access_token_desc=As permissões dos códigos escolhidos limitam a autorização apenas às rotas da <a href="%[1]s" target="_blank">API</a> correspondentes. Leia a <a href="%[2]s" target="_blank">documentação</a> para obter mais informação.
at_least_one_permission=Tem que escolher pelo menos uma permissão para criar um código
permissions_list=Permissões:
@ -1037,7 +1039,7 @@ hints = Sugestões
blocked_users = Utilizadores bloqueados
blocked_since = Bloqueado desde %s
user_block_success = O utilizador foi bloqueado com sucesso.
additional_repo_units_hint_description = Mostrar um botão "Adicionar mais unidades..." para repositórios que não têm todas as unidades disponíveis habilitadas.
additional_repo_units_hint_description = Mostrar uma sugestão "Habilitar mais" para repositórios que não têm todas as unidades disponíveis habilitadas.
update_hints_success = As sugestões foram modificadas.
blocked_users_none = Não há utilizadores bloqueados.
user_unblock_success = O utilizador foi desbloqueado com sucesso.
@ -1356,7 +1358,7 @@ editor.fail_to_apply_patch=`Não foi possível aplicar o remendo (patch) "%s"`
editor.new_patch=Novo remendo (patch)
editor.commit_message_desc=Adicionar uma descrição alargada opcional…
editor.signoff_desc=Adicionar "Assinado-por" seguido do autor do cometimento no fim da mensagem do registo de cometimentos.
editor.commit_directly_to_this_branch=Cometer imediatamente no ramo <strong class="branch-name">%s</strong>.
editor.commit_directly_to_this_branch=Cometer imediatamente no ramo <strong class="%[2]s">%[1]s</strong>.
editor.create_new_branch=Crie um <strong>novo ramo</strong> para este cometimento e inicie um pedido de integração.
editor.create_new_branch_np=Criar um <strong>novo ramo</strong> para este cometimento.
editor.propose_file_change=Propor modificação do ficheiro
@ -1426,7 +1428,7 @@ commitstatus.failure=Falha
commitstatus.pending=Pendente
commitstatus.success=Sucesso
ext_issues=Acesso a questões externas
ext_issues=Questões externas
ext_issues.desc=Ligação para um rastreador de questões externo.
projects=Planeamentos
@ -1607,9 +1609,9 @@ issues.no_content=Nenhuma descrição fornecida.
issues.close=Encerrar questão
issues.comment_pull_merged_at=cometimento %[1]s integrado em %[2]s %[3]s
issues.comment_manually_pull_merged_at=cometimento %[1]s integrado manualmente em %[2]s %[3]s
issues.close_comment_issue=Comentar e fechar
issues.close_comment_issue=Fechar com comentário
issues.reopen_issue=Reabrir
issues.reopen_comment_issue=Comentar e reabrir
issues.reopen_comment_issue=Reabrir com comentário
issues.create_comment=Comentar
issues.closed_at=`encerrou esta questão <a id="%[1]s" href="#%[1]s">%[2]s</a>`
issues.reopened_at=`reabriu esta questão <a id="%[1]s" href="#%[1]s">%[2]s</a>`
@ -1722,7 +1724,7 @@ issues.error_modifying_due_date=Falhou a modificação da data de vencimento.
issues.error_removing_due_date=Falhou a remoção da data de vencimento.
issues.push_commit_1=adicionou %d cometimento %s
issues.push_commits_n=adicionou %d cometimentos %s
issues.force_push_codes=`forçou o envio %[1]s de <a class="ui sha" href="%[3]s"><code>%[2]s</code></a> para <a class="ui sha" href="%[5]s"><code>%[4]s</code></a> %[6]s`
issues.force_push_codes=`forçou o envio %[1]s de <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> para <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> %[6]s`
issues.force_push_compare=Comparar
issues.due_date_form=aaaa-mm-dd
issues.due_date_form_add=Adicionar data de vencimento
@ -1838,7 +1840,7 @@ pulls.nothing_to_compare_have_tag=O ramo/etiqueta escolhidos são iguais.
pulls.nothing_to_compare_and_allow_empty_pr=Estes ramos são iguais. Este pedido de integração ficará vazio.
pulls.has_pull_request=`Já existe um pedido de integração entre estes ramos: <a href="%[1]s">%[2]s#%[3]d</a>`
pulls.create=Criar um pedido de integração
pulls.title_desc_few=quer integrar %[1]d cometimento(s) do ramo <code>%[2]s</code> no ramo <code id="branch_target">%[3]s</code>
pulls.title_desc_few=quer integrar %[1]d cometimento(s) do ramo <code>%[2]s</code> no ramo <code id="%[4]s">%[3]s</code>
pulls.merged_title_desc_few=integrou %[1]d cometimento(s) do ramo <code>%[2]s</code> no ramo <code>%[3]s</code> %[4]s
pulls.change_target_branch_at=`mudou o ramo de destino de <b>%s</b> para <b>%s</b> %s`
pulls.tab_conversation=Diálogo
@ -1999,7 +2001,7 @@ signing.wont_sign.commitssigned=A integração não irá ser assinada, uma vez q
signing.wont_sign.approved=A integração não irá ser assinada, uma vez que o pedido de integração não foi assinado.
signing.wont_sign.not_signed_in=Não tem a sessão iniciada.
ext_wiki=Acesso a wiki externo
ext_wiki=Wiki externo
ext_wiki.desc=Ligação para um wiki externo.
wiki=Wiki
@ -2329,32 +2331,32 @@ settings.event_push_desc=Envio do Git para um repositório.
settings.event_repository=Repositório
settings.event_repository_desc=Repositório criado ou eliminado.
settings.event_header_issue=Eventos da questão
settings.event_issues=Questões
settings.event_issues=Modificação
settings.event_issues_desc=Questão aberta, fechada, reaberta ou editada.
settings.event_issue_assign=Questão atribuída
settings.event_issue_assign=Atribuição
settings.event_issue_assign_desc=Encarregado atribuído ou retirado à questão.
settings.event_issue_label=Questão com rótulo
settings.event_issue_label_desc=Rótulos modificados ou retirados às questões.
settings.event_issue_milestone=Questão com etapa atribuída
settings.event_issue_milestone_desc=Etapa atribuída ou retirada à questão.
settings.event_issue_comment=Comentário da questão
settings.event_issue_label=Rótulos
settings.event_issue_label_desc=Rótulos adicionados ou retirados às questões.
settings.event_issue_milestone=Etapas
settings.event_issue_milestone_desc=Etapa atribuída, removida ou modificada.
settings.event_issue_comment=Comentários
settings.event_issue_comment_desc=Comentário da questão criado, editado ou eliminado.
settings.event_header_pull_request=Eventos de pedidos de integração
settings.event_pull_request=Pedido de integração
settings.event_pull_request=Modificação
settings.event_pull_request_desc=Pedido de integração aberto, fechado, reaberto ou editado.
settings.event_pull_request_assign=Encarregado atribuído ao pedido de integração
settings.event_pull_request_assign=Atribuição
settings.event_pull_request_assign_desc=Encarregado atribuído ou retirado ao pedido de integração.
settings.event_pull_request_label=Rótulo atribuído ao pedido de integração
settings.event_pull_request_label_desc=Rótulos modificados ou retirados aos pedidos de integração.
settings.event_pull_request_milestone=Etapa atribuída ao pedido de integração
settings.event_pull_request_milestone_desc=Etapa atribuída ou retirada ao pedido de integração.
settings.event_pull_request_comment=Comentário do pedido de integração
settings.event_pull_request_label=Rótulos
settings.event_pull_request_label_desc=Rótulos adicionados ou retirados aos pedidos de integração.
settings.event_pull_request_milestone=Etapas
settings.event_pull_request_milestone_desc=Etapas adicionadas, removidas ou modificadas.
settings.event_pull_request_comment=Comentários
settings.event_pull_request_comment_desc=Comentário do pedido de integração criado, editado ou eliminado.
settings.event_pull_request_review=Pedido de integração revisto
settings.event_pull_request_review=Revisões
settings.event_pull_request_review_desc=Pedido de integração aprovado, rejeitado ou comentado na revisão.
settings.event_pull_request_sync=Pedido de integração sincronizado
settings.event_pull_request_sync_desc=Pedido de integração sincronizado.
settings.event_pull_request_review_request=Solicitada a revisão do pedido de integração
settings.event_pull_request_sync=Sincronizado
settings.event_pull_request_sync_desc=Ramo sincronizado automaticamente com o ramo de destino.
settings.event_pull_request_review_request=Pedidos de revisão
settings.event_pull_request_review_request_desc=A revisão do pedido de integração foi solicitada ou a solicitação de revisão foi removida.
settings.event_pull_request_approvals=Aprovações do pedido de integração
settings.event_pull_request_merge=Integração constante no pedido
@ -2612,7 +2614,7 @@ release.draft=Rascunho
release.prerelease=Pré-lançamento
release.stable=Estável
release.compare=Comparar
release.edit=editar
release.edit=Editar
release.ahead.commits=<strong>%d</strong> cometimentos
release.ahead.target=para %s desde este lançamento
tag.ahead.target=para o ramo %s desde esta etiqueta
@ -2731,10 +2733,10 @@ migrate.forgejo.description = Migrar dados de codeberg.org ou de outras instânc
n_commit_one = %s cometimento
editor.commit_id_not_matching = O ficheiro foi modificado enquanto o estava a editar. Cometa para um ramo novo e depois integre.
commits.search_branch = Este ramo
pulls.title_desc_one = quer integrar %[1]d cometimento do ramo <code>%[2]s</code> no ramo <code id="branch_target">%[3]s</code>
pulls.title_desc_one = quer integrar %[1]d cometimento do ramo <code>%[2]s</code> no ramo <code id="%[4]s">%[3]s</code>
pulls.reopen_failed.base_branch = O pedido de integração não pode ser reaberto porque o ramo base já não existe.
activity.navbar.code_frequency = Frequência de programação
settings.units.add_more = Adicionar mais...
settings.units.add_more = Habilitar mais
settings.wiki_rename_branch_main_desc = Renomear o ramo usado internamente pelo Wiki para "%s". Esta operação é permanente e não poderá ser revertida.
settings.add_collaborator_blocked_our = Não foi possível adicionar o/a colaborador/a porque o/a proprietário/a do repositório bloqueou-os.
settings.add_webhook.invalid_path = A localização não pode conter "." ou ".." ou ficar em branco. Não pode começar ou terminar com uma barra.
@ -2757,7 +2759,7 @@ release.download_count_one = %s descarga
release.download_count_few = %s descargas
release.system_generated = Este anexo é gerado automaticamente.
pulls.ready_for_review = Pronto/a para rever?
settings.units.units = Unidades do repositório
settings.units.units = Unidades
error.broken_git_hook = Os automatismos git deste repositório parecem estar danificados. Consulte a <a target="_blank" rel="noreferrer" href="%s">documentação</a> sobre como os consertar e depois envie alguns cometimentos para refrescar o estado.
settings.rename_branch_failed_protected = Não é possível renomear o ramo %s porque é um ramo protegido.
settings.units.overview = Visão geral
@ -2822,6 +2824,9 @@ settings.mirror_settings.push_mirror.none_ssh = Nenhuma
settings.protect_new_rule = Criar uma nova regra de salvaguarda do ramo
mirror_use_ssh.helper = O Forgejo irá replicar o repositório via Git sobre SSH e criar um par de chaves para si quando escolher esta opção. Tem que se certificar que a chave pública gerada está autorizada a enviar para o repositório de destino. Não pode usar a autorização baseada numa senha quando escolher isto.
mirror_use_ssh.not_available = A autenticação por SSH não está disponível.
issues.new.assign_to_me = Atribuir a mim
issues.all_title = Todas
settings.discord_icon_url.exceeds_max_length = O URL do ícone tem que ter 2048 caracteres ou menos
[graphs]
component_loading=A carregar %s...
@ -3793,7 +3798,7 @@ management=Gerir segredos
[actions]
actions=Operações
unit.desc=Gerir sequências CI/CD integradas com Forgejo Actions
unit.desc=Gerir sequências CI/CD integradas com Forgejo Actions.
status.unknown=Desconhecido
status.waiting=Aguardando
@ -3938,7 +3943,7 @@ pull_kind = Procurar pedidos de integração...
union = Palavras-chave
union_tooltip = Incluir resultados correspondentes a qualquer das palavras-chave separadas por espaços em branco
milestone_kind = Procurar etapas...
regexp_tooltip = Interpreta o termo de pesquisa como um expressão regular
regexp_tooltip = Interpreta o termo de pesquisa como uma expressão regular
regexp = ExpReg
[munits.data]

View file

@ -477,6 +477,7 @@ back_to_sign_in = Назад ко входу
sign_in_openid = Продолжить с OpenID
hint_login = Уже есть учётная запись? <a href="%s">Войдите!</a>
unauthorized_credentials = Учётные данные неверны или истекли. Попробуйте повторить команду или ознакомьтесь с подробностями по ссылке: %s
use_onetime_code = Использовать одноразовый код
[mail]
view_it_on=Посмотреть на %s
@ -933,7 +934,7 @@ select_permissions=Выбрать разрешения
permission_no_access=Нет доступа
permission_read=Чтение
permission_write=Чтение и запись
access_token_desc=Выбранные области действия токена ограничивают авторизацию только соответствующими маршрутами <a %s>API</a>. Читайте <a %s>документацию</a> для получения дополнительной информации.
access_token_desc=Выбранные области действия токена ограничивают авторизацию только соответствующими маршрутами <a href="%[1]s" target="_blank">API</a>. Читайте <a href="%[2]s" target="_blank">документацию</a> для получения дополнительной информации.
at_least_one_permission=Необходимо выбрать хотя бы одно разрешение для создания токена
permissions_list=Разрешения:
@ -1339,7 +1340,7 @@ editor.fail_to_apply_patch=Невозможно применить патч «%s
editor.new_patch=Новая правка
editor.commit_message_desc=Добавьте необязательное расширенное описание…
editor.signoff_desc=Добавить трейлер Signed-off-by с автором коммита в конце сообщения коммита.
editor.commit_directly_to_this_branch=Сохранить коммит напрямую в ветвь <strong class="branch-name">%s</strong>.
editor.commit_directly_to_this_branch=Сохранить коммит напрямую в ветвь <strong class="%[2]s">%[1]s</strong>.
editor.create_new_branch=Сохранить коммит в <strong>новую ветвь</strong> и начать запрос на слияние.
editor.create_new_branch_np=Создать <strong>новую ветвь</strong> для этого коммита.
editor.propose_file_change=Предложить изменение файла
@ -1704,7 +1705,7 @@ issues.error_modifying_due_date=Не удалось изменить срок в
issues.error_removing_due_date=Не удалось убрать срок выполнения.
issues.push_commit_1=добавлен %d коммит %s
issues.push_commits_n=добавлены %d коммита(ов) %s
issues.force_push_codes=`форсированное обновление изменений %[1]s <a class="ui sha" href="%[5]s"><code>%[4]s</code></a> вместо <a class="ui sha" href="%[3]s"><code>%[2]s</code></a> %[6]s`
issues.force_push_codes=`форсированное обновление изменений %[1]s <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> вместо <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> %[6]s`
issues.force_push_compare=Сравнить
issues.due_date_form=гггг-мм-дд
issues.due_date_form_add=Добавить срок выполнения
@ -1757,8 +1758,8 @@ issues.review.left_comment=оставил комментарий
issues.review.content.empty=Запрашивая изменения, вы обязаны оставить комментарий с пояснением своих пожеланий относительно запроса на слияние.
issues.review.reject=запрошены изменения %s
issues.review.wait=был запрошен для отзыва %s
issues.review.add_review_request=запрошена рецензия у %s %s
issues.review.remove_review_request=отменён запрос рецензии для %s %s
issues.review.add_review_request=запрошена рецензия от %[1]s %[2]s
issues.review.remove_review_request=отменён запрос рецензии от %[1]s %[2]s
issues.review.remove_review_request_self=отказ от рецензирования %s
issues.review.pending=Ожидание
issues.review.pending.tooltip=Этот комментарий в настоящее время не виден другим пользователям. Чтобы отправить отложенные комментарии, выберите «%s» → «%s/%s/%s» в верхней части страницы.
@ -1815,8 +1816,8 @@ pulls.nothing_to_compare=Нечего сравнивать, родительск
pulls.nothing_to_compare_and_allow_empty_pr=Ветви идентичны. Этот PR будет пустым.
pulls.has_pull_request=`Запрос на слияние этих ветвей уже существует: <a href="%[1]s">%[2]s#%[3]d</a>`
pulls.create=Создать запрос на слияние
pulls.title_desc_one=хочет влить %[1]d коммит из <code>%[2]s</code> в <code id="branch_target">%[3]s</code>
pulls.title_desc_few=хочет влить %[1]d коммит(ов) из <code>%[2]s</code> в <code id="branch_target">%[3]s</code>
pulls.title_desc_one=хочет влить %[1]d коммит из <code>%[2]s</code> в <code id="%[4]s">%[3]s</code>
pulls.title_desc_few=хочет влить %[1]d коммит(ов) из <code>%[2]s</code> в <code id="%[4]s">%[3]s</code>
pulls.merged_title_desc_one=слит %[1]d коммит из <code>%[2]s</code> в <code>%[3]s</code> %[4]s
pulls.merged_title_desc_few=слито %[1]d коммит(ов) из <code>%[2]s</code> в <code>%[3]s</code> %[4]s
pulls.change_target_branch_at=`изменил(а) целевую ветвь с <b>%s</b> на <b>%s</b> %s`
@ -2129,7 +2130,7 @@ settings.use_external_issue_tracker=Использовать внешнюю си
settings.external_tracker_url=Ссылка на внешнюю систему задач
settings.external_tracker_url_error=URL внешнего баг-трекера не является корректным URL.
settings.external_tracker_url_desc=Посетители будут перенаправлены по указанному адресу трекера задач при открытии вкладки.
settings.tracker_url_format=Формат ссылки внешней системы задач
settings.tracker_url_format=Формат ссылок внешней системы задач
settings.tracker_url_format_error=Формат URL внешнего баг-трекера некорректен.
settings.tracker_issue_style=Формат нумерации во внешней системе задач
settings.tracker_issue_style.numeric=Цифровой
@ -2830,6 +2831,12 @@ settings.mirror_settings.push_mirror.copy_public_key = Копировать пу
issues.new.assign_to_me = Назначить себе
issues.all_title = Все
settings.discord_icon_url.exceeds_max_length = URL иконки не может быть длиннее 2048 символов
issues.review.add_review_requests = запрошены рецензии от %[1]s %[2]s
issues.review.remove_review_requests = отменены запросы рецензий от %[1]s %[2]s
issues.review.add_remove_review_requests = запрошены рецензии от %[1]s и отменены запросы рецензий от %[2]s %[3]s
pulls.delete_after_merge.head_branch.is_default = Головная ветвь, которую вы попытались удалить, является ветвью по умолчанию и не может быть удалена.
pulls.delete_after_merge.head_branch.is_protected = Головная ветвь, которую вы попытались удалить, защищена от этого и не может быть удалена.
pulls.delete_after_merge.head_branch.insufficient_branch = Отсутствует разрешение для удаления головной ветви.
[graphs]

View file

@ -116,7 +116,6 @@ missing_csrf=නරක ඉල්ලීම: CSRF ටෝකන් නොමැත
app_desc=වේදනාකාරී, ස්වයං-සත්කාරක Git සේවාවක්
install=ස්ථාපනයට පහසුය
platform=හරස් වේදිකාව
platform_desc=Forgejo ඕනෑම තැනක ධාවනය <a target="_blank" rel="noopener noreferrer" href="http://golang.org/">Go</a> සඳහා සම්පාදනය කළ හැකිය: වින්ඩෝස්, මැකෝස්, ලිනක්ස්, ARM, ආදිය ඔබ ආදරය කරන එකක් තෝරන්න!
lightweight=සැහැල්ලු
lightweight_desc=Forgejo අඩු අවම අවශ්යතා ඇති අතර මිල අඩු Raspberry Pi මත ධාවනය කළ හැකිය. ඔබේ යන්ත්ර ශක්තිය සුරකින්න!
license=විවෘත මූලාශ්‍ර
@ -923,7 +922,7 @@ editor.commit_changes=වෙනස්කම් සිදු කරන්න
editor.add_tmpl='<filename>' එකතු කරන්න
editor.commit_message_desc=විකල්ප දීර්ඝ විස්තරයක් එක් කරන්න…
editor.signoff_desc=කැපවූ ලොග් පණිවිඩය අවසානයේ දී කැපකරු විසින් සිග්නෙඩ්-ඕෆ්-විසින් ට්රේලරයක් එක් කරන්න.
editor.commit_directly_to_this_branch=<strong class="branch-name">%s</strong> ශාඛාවට කෙලින්ම කැප කරන්න.
editor.commit_directly_to_this_branch=<strong class="%[2]s">%[1]s</strong> ශාඛාවට කෙලින්ම කැප කරන්න.
editor.create_new_branch=මෙම කැප කිරීම සඳහා <strong>නව ශාඛාවක්</strong> සාදා අදින්න ඉල්ලීමක් ආරම්භ කරන්න.
editor.create_new_branch_np=මෙම කැප කිරීම සඳහා <strong>නව ශාඛාවක්</strong> සාදන්න.
editor.propose_file_change=ගොනු වෙනස් කිරීම යෝජනා කරන්න
@ -1098,12 +1097,12 @@ issues.reopen_comment_issue=අදහස් දක්වා විවෘත ක
issues.create_comment=අදහස
issues.closed_at=`මෙම ගැටළුව වසා <a id="%[1]s" href="#%[1]s">%[2]s</a>`
issues.reopened_at=`මෙම ගැටළුව නැවත විවෘත කරන ලදි <a id="%[1]s" href="#%[1]s">%[2]s</a>`
issues.ref_issue_from=<a href="%[3]s">මෙම නිකුතුව %[4]s හි</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>
issues.ref_pull_from=<a href="%[3]s">මෙම අදින්න ඉල්ලීම%[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>
issues.ref_closing_from=<a href="%[3]s">මෙම ගැටළුව වසා දමනු ඇත%[4]s මෙම ගැටළුව</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>
issues.ref_reopening_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_issue_from=`<a href="%[3]s">මෙම නිකුතුව %[4]s හි</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>`
issues.ref_pull_from=`<a href="%[3]s">මෙම අදින්න ඉල්ලීම%[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>`
issues.ref_closing_from=`<a href="%[3]s">මෙම ගැටළුව වසා දමනු ඇත%[4]s මෙම ගැටළුව</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>`
issues.ref_reopening_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_from=`හිම%[1]s`
issues.role.owner=හිමිකරු
issues.role.member=සාමාජික
@ -1183,7 +1182,7 @@ issues.error_modifying_due_date=නියමිත දිනය වෙනස්
issues.error_removing_due_date=නියමිත දිනය ඉවත් කිරීමට අපොහොසත් විය.
issues.push_commit_1=එකතු %d කැප %s
issues.push_commits_n=එකතු %d විවරයන් %s
issues.force_push_codes=`බලය-pushed%[1]s සිට <a class="ui sha" href="%[3]s"><code>%[2]s</code></a> <a class="ui sha" href="%[5]s"><code>%[4]s ගේ</code></a> %[6]s`
issues.force_push_codes=`බලය-pushed%[1]s සිට <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> <a class="%[7]s" href="%[5]s"><code>%[4]s ගේ</code></a> %[6]s`
issues.force_push_compare=සසඳන්න
issues.due_date_form=Yyy-mm-dd
issues.due_date_form_add=නියමිත දිනය එකතු කරන්න
@ -1269,7 +1268,7 @@ pulls.nothing_to_compare=මෙම ශාඛා සමාන වේ. අදි
pulls.nothing_to_compare_and_allow_empty_pr=මෙම ශාඛා සමාන වේ. මෙම මහජන සම්බන්ධතා හිස් වනු ඇත.
pulls.has_pull_request=`මෙම ශාඛා අතර අදින්න ඉල්ලීම දැනටමත් පවතී: <a href="%[1]s">%[2]s #%[3]d</a>`
pulls.create=අදින්න ඉල්ලීම නිර්මාණය
pulls.title_desc_few=%[1]d සිට <code>%[2]s</code> දක්වා <code id="branch_target">%[3]s</code>
pulls.title_desc_few=%[1]d සිට <code>%[2]s</code> දක්වා <code id="%[4]s">%[3]s</code>
pulls.merged_title_desc_few=මර්ජ්%[1]d සිට <code>%[2]s</code> දක්වා <code>%[3]s</code> %[4]s
pulls.change_target_branch_at=`ඉලක්කගත ශාඛාව <b>%s</b> සිට <b>%s</b> %sදක්වා වෙනස් කර ඇත`
pulls.tab_conversation=සංවාදය
@ -1280,7 +1279,7 @@ pulls.cant_reopen_deleted_branch=ශාඛාව මකා දැමූ නි
pulls.merged=සංයුක්ත කෙරිණි
pulls.manually_merged=අතින් සංයුක්ත කර ඇත
pulls.is_closed=අදින්න ඉල්ලීම වසා දමා ඇත.
pulls.title_wip_desc=<a href="#">අහම්බෙන් ඒකාබද්ධ කිරීමෙන් අදින්න ඉල්ලීම වැළැක්වීම සඳහා <strong>%s</strong></a> සමඟ මාතෘකාව ආරම්භ කරන්න.
pulls.title_wip_desc=`<a href="#">අහම්බෙන් ඒකාබද්ධ කිරීමෙන් අදින්න ඉල්ලීම වැළැක්වීම සඳහා <strong>%s</strong></a> සමඟ මාතෘකාව ආරම්භ කරන්න.`
pulls.cannot_merge_work_in_progress=මෙම අදින්න ඉල්ලීම ක්රියාත්මක වන කාර්යයක් ලෙස සලකුණු කර ඇත.
pulls.still_in_progress=තවමත් ක්රියාත්මක වෙමින් තිබේද?
pulls.add_prefix=<strong>%s</strong> උපසර්ගය එකතු කරන්න

View file

@ -187,7 +187,6 @@ app_desc=Jednoducho prístupný vlastný Git
install=Jednoduchá inštalácia
install_desc=Jednoducho <a target="_blank" rel="noopener noreferrer" href="%[1]s">spustite binárku</a> pre vašu platformu, pošlite ju ako <a target="_blank" rel="noopener noreferrer" href="%[2]s">Docker</a>, alebo ju získajte <a target="_blank" rel="noopener noreferrer" href="%[3]s">ako balíček</a>.
platform=Multiplatformový
platform_desc=Forgejo beží všade kde je možné preložiť <a target="_blank" rel="noopener noreferrer" href="http://golang.org/">Go</a>: Windows, macOS, Linux, ARM, a podobne. Vyberte si!
lightweight=Ľahká
lightweight_desc=Forgejo má minimálne požiadavky a môže bežať na Raspberry Pi. Šetrite energiou vášho stroja!
license=Otvorený zdrojový kód
@ -1030,7 +1029,7 @@ editor.cancel_lower=Zrušiť
editor.commit_signed_changes=Odoslať podpísané zmeny
editor.commit_changes=Odoslať zmeny
editor.patch=Použiť patch
editor.commit_directly_to_this_branch=Odoslať zmeny revízie priamo do vetvy <strong class="branch-name">%s</strong>.
editor.commit_directly_to_this_branch=Odoslať zmeny revízie priamo do vetvy <strong class="%[2]s">%[1]s</strong>.
editor.cancel=Zrušiť
editor.commit_empty_file_header=Odoslať prázdny súbor
editor.commit_empty_file_text=Súbor, ktorý sa chystáte odoslať, je prázdny. Pokračovať?

View file

@ -312,7 +312,7 @@ appearance = Videz
password = Geslo
authorized_oauth2_applications_description = Tem aplikacijam tretjih oseb ste odobrili dostop do svojega osebnega računa Forgejo. Prosimo, da prekličete dostop do aplikacij, ki jih ne uporabljate več.
social_desc = S temi družabnimi računi se lahko prijavite v svoj račun. Prepričajte se, da jih vse prepoznate.
access_token_desc = Izbrana dovoljenja žetona omejujejo avtorizacijo samo na ustrezne poti <a %s>API</a>. Za več informacij preberite <a %s>dokumentacijo</a>.
access_token_desc = Izbrana dovoljenja žetona omejujejo avtorizacijo samo na ustrezne poti <a href="%[1]s" target="_blank">API</a>. Za več informacij preberite <a href="%[2]s" target="_blank">dokumentacijo</a>.
oauth2_client_secret_hint = Skrivnost se ne bo več prikazala, ko zapustite ali osvežite to stran. Prepričajte se, da ste jo shranili.
twofa_desc = Za zaščito računa pred krajo gesla lahko uporabite pametni telefon ali drugo napravo za prejemanje časovno omejenih enkratnih gesel ("TOTP").
twofa_recovery_tip = Če napravo izgubite, boste lahko z obnovitvenim ključem za enkratno uporabo ponovno pridobili dostop do računa.

View file

@ -266,7 +266,7 @@ editor.commit_changes=Изврши комит промена
editor.add=Додај '%s'
editor.update=Ажурирај '%s'
editor.delete=Уклони '%s'
editor.commit_directly_to_this_branch=Изврши комит директно на <strong class="branch-name">%s</strong> грану.
editor.commit_directly_to_this_branch=Изврши комит директно на <strong class="%[2]s">%[1]s</strong> грану.
editor.create_new_branch=Креирај <strong>нову грану</strong> за овај комит и поднеси захтев за спајање.
editor.cancel=Откажи
editor.branch_already_exists=Грана '%s' већ постоји за ово спремиште.

View file

@ -850,7 +850,7 @@ editor.commit_signed_changes=Committa signerade ändringar
editor.commit_changes=Checka in ändringar
editor.add_tmpl=Lägg till '<filename>'
editor.commit_message_desc=Lägg till en valfri utökad beskrivning…
editor.commit_directly_to_this_branch=Checka in direkt till grenen <strong class="branch-name">%s</strong>.
editor.commit_directly_to_this_branch=Checka in direkt till grenen <strong class="%[2]s">%[1]s</strong>.
editor.create_new_branch=Skapa en <strong>ny gren</strong> för denna incheckning och påbörja en hämtningsbegäran.
editor.create_new_branch_np=Skapa en <strong>ny branch</strong> för den här committen.
editor.propose_file_change=Föreslå filändring
@ -1158,7 +1158,7 @@ pulls.filter_branch=Filtrera gren
pulls.no_results=Inga resultat hittades.
pulls.nothing_to_compare=Dessa brancher är ekvivalenta. Det finns ingen anledning att skapa en pull-request.
pulls.create=Skapa Pullförfrågan
pulls.title_desc_few=vill sammanfoga %[1]d incheckningar från <code>s[2]s</code> in i <code id="branch_target">%[3]s</code>
pulls.title_desc_few=vill sammanfoga %[1]d incheckningar från <code>s[2]s</code> in i <code id="%[4]s">%[3]s</code>
pulls.merged_title_desc_few=sammanfogade %[1]d incheckningar från <code>%[2]s</code> in i <code>%[3]s</code> %[4]s
pulls.change_target_branch_at=`ändrade mål-branch från <b>%s</b> till <b>%s</b>%s`
pulls.tab_conversation=Konversation

View file

@ -214,7 +214,6 @@ app_desc=Zahmetsiz, kendi sunucunuzda barındırabileceğiniz Git servisi
install=Kurulumu kolay
install_desc=Platformunuz için <a target="_blank" rel="noopener noreferrer" href="%[1]s">ikili dosyayı çalıştırın</a>, <a target="_blank" rel="noopener noreferrer" href="%[2]s">Docker</a> ile yükleyin veya <a target="_blank" rel="noopener noreferrer" href="%[3]s">paket</a> olarak edinin.
platform=Farklı platformlarda çalışablir
platform_desc=Forgejo <a target="_blank" rel="noopener noreferrer" href="http://golang.org/">Go</a> ile derleme yapılabilecek her yerde çalışmaktadır: Windows, macOS, Linux, ARM, vb. Hangisini seviyorsanız onu seçin!
lightweight=Hafif
lightweight_desc=Forgejo'nın minimal gereksinimleri çok düşüktür ve ucuz bir Raspberry Pi üzerinde çalışabilmektedir. Makine enerjinizden tasarruf edin!
license=ık Kaynak
@ -908,7 +907,7 @@ select_permissions=İzinleri seçin
permission_no_access=Erişim Yok
permission_read=Okunmuş
permission_write=Okuma ve Yazma
access_token_desc=Seçili token izinleri, yetkilendirmeyi ilgili <a %s>API</a> yollarıyla sınırlandıracaktır. Daha fazla bilgi için <a %s>belgeleri</a> okuyun.
access_token_desc=Seçili token izinleri, yetkilendirmeyi ilgili <a href="%[1]s" target="_blank">API</a> yollarıyla sınırlandıracaktır. Daha fazla bilgi için <a href="%[2]s" target="_blank">belgeleri</a> okuyun.
at_least_one_permission=Bir token oluşturmak için en azından bir izin seçmelisiniz
permissions_list=İzinler:
@ -1318,7 +1317,7 @@ editor.fail_to_apply_patch=`"%s" yaması uygulanamıyor`
editor.new_patch=Yeni Yama
editor.commit_message_desc=İsteğe bağlı uzun bir açıklama ekleyin…
editor.signoff_desc=İşleme günlüğü mesajının sonuna işleyen tarafından imzalanan bir fragman ekleyin.
editor.commit_directly_to_this_branch=Doğrudan <strong class="branch-name">%s</strong> bölümüne uygula.
editor.commit_directly_to_this_branch=Doğrudan <strong class="%[2]s">%[1]s</strong> bölümüne uygula.
editor.create_new_branch=Bu işleme için <strong>yeni bir dal</strong> oluşturun ve bir değişiklik isteği başlatın.
editor.create_new_branch_np=Bu işleme için <strong>yeni bir dal</strong> oluştur.
editor.propose_file_change=Dosya değişikliği öner
@ -1684,7 +1683,7 @@ issues.error_modifying_due_date=Bitiş tarihi değiştirilemedi.
issues.error_removing_due_date=Bitiş tarihi silinemedi.
issues.push_commit_1=%d işlemeyi %s ekledi
issues.push_commits_n=%d işlemeyi %s ekledi
issues.force_push_codes=`%[1]s <a class="ui sha" href="%[3]s"><code>%[2]s</code></a> hedefinden <a class="ui sha" href="%[5]s"><code>%[4]s</code></a> hedefine zorla gönderildi %[6]s`
issues.force_push_codes=`%[1]s <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> hedefinden <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> hedefine zorla gönderildi %[6]s`
issues.force_push_compare=Karşılaştır
issues.due_date_form=yyyy-aa-gg
issues.due_date_form_add=Bitiş tarihi ekle
@ -1799,7 +1798,7 @@ pulls.nothing_to_compare=Bu dallar eşit. Değişiklik isteği oluşturmaya gere
pulls.nothing_to_compare_and_allow_empty_pr=Bu dallar eşittir. Bu Dİ boş olacak.
pulls.has_pull_request=`Bu dallar arasında zaten bir değişiklik isteği var: <a href="%[1]s">%[2]s#%[3]d</a>`
pulls.create=Değişiklik İsteği Oluştur
pulls.title_desc_few=<code>%[2]s</code> içindeki %[1]d işlemeyi <code id="branch_target">%[3]s</code> ile birleştirmek istiyor
pulls.title_desc_few=<code>%[2]s</code> içindeki %[1]d işlemeyi <code id="%[4]s">%[3]s</code> ile birleştirmek istiyor
pulls.merged_title_desc_few=%[4]s <code>%[2]s</code> içindeki %[1]d işlemeyi <code>%[3]s</code> ile birleştirdi
pulls.change_target_branch_at='hedef dal <b>%s</b> adresinden <b>%s</b>%s adresine değiştirildi'
pulls.tab_conversation=Sohbet

View file

@ -1140,7 +1140,7 @@ editor.commit_changes=Закомітити зміни
editor.add_tmpl=Додати «<filename>»
editor.commit_message_desc=Додати необов'язковий розширений опис…
editor.signoff_desc=Додати повідомленню в журналі комітів рядок Signed-off-by від свого імені.
editor.commit_directly_to_this_branch=Зробіть коміт прямо в гілку <strong class="branch-name">%s</strong>.
editor.commit_directly_to_this_branch=Зробіть коміт прямо в гілку <strong class="%[2]s">%[1]s</strong>.
editor.create_new_branch=Створити <strong>нову гілку</strong> для цього коміту та відкрити запит на злиття.
editor.create_new_branch_np=Створити <strong>нову гілку</strong> для цього коміту.
editor.propose_file_change=Запропонувати зміну файлу
@ -1411,7 +1411,7 @@ issues.error_modifying_due_date=Не вдалося змінити дату за
issues.error_removing_due_date=Не вдалося видалити дату завершення.
issues.push_commit_1=додав %d коміт %s
issues.push_commits_n=додав %d коміти(-ів) %s
issues.force_push_codes=`примусово залито %[1]s з <a class="ui sha" href="%[3]s"><code>%[2]s</code></a> до <a class="ui sha" href="%[5]s"><code>%[4]s</code></a> %[6]s`
issues.force_push_codes=`примусово залито %[1]s з <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> до <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> %[6]s`
issues.force_push_compare=Порівняти
issues.due_date_form=рррр-мм-дд
issues.due_date_form_add=Додати дату завершення
@ -1497,7 +1497,7 @@ pulls.nothing_to_compare=Ці гілки однакові. Немає необх
pulls.nothing_to_compare_and_allow_empty_pr=Одинакові гілки. Цей PR буде порожнім.
pulls.has_pull_request=`Запит злиття для цих гілок вже існує: <a href="%[1]s">%[2]s#%[3]d</a>`
pulls.create=Створити запит на злиття
pulls.title_desc_few=хоче злити %[1]d комітів з <code>%[2]s</code> в <code id="branch_target">%[3]s</code>
pulls.title_desc_few=хоче злити %[1]d комітів з <code>%[2]s</code> в <code id="%[4]s">%[3]s</code>
pulls.merged_title_desc_few=злито %[1]d комітів з <code>%[2]s</code> до <code>%[3]s</code> %[4]s
pulls.change_target_branch_at=`змінена цільова гілка з <b>%s</b> на <b>%s</b> %s`
pulls.tab_conversation=Обговорення

View file

@ -935,7 +935,7 @@ select_permissions=选择权限
permission_no_access=无访问权限
permission_read=可读
permission_write=读写
access_token_desc=所选令牌权限仅限于对应的 <a %s>API</a> 路由的授权。阅读 <a %s>文档</a> 以获取更多信息。
access_token_desc=所选令牌权限仅限于对应的 <a href="%[1]s" target="_blank">API</a> 路由的授权。阅读 <a href="%[2]s" target="_blank">文档</a> 以获取更多信息。
at_least_one_permission=你需要选择至少一个权限才能创建令牌
permissions_list=权限:
@ -1359,7 +1359,7 @@ editor.fail_to_apply_patch=无法应用补丁 %s
editor.new_patch=新补丁
editor.commit_message_desc=添加一个可选的扩展描述…
editor.signoff_desc=在提交日志消息末尾添加签署人信息。
editor.commit_directly_to_this_branch=直接提交至 <strong class="branch-name">%s</strong> 分支。
editor.commit_directly_to_this_branch=直接提交至 <strong class="%[2]s">%[1]s</strong> 分支。
editor.create_new_branch=为此提交创建一个 <strong>新的分支</strong> 并发起合并请求。
editor.create_new_branch_np=为此提交创建 <strong>新分支</strong>。
editor.propose_file_change=提议文件更改
@ -1725,7 +1725,7 @@ issues.error_modifying_due_date=修改到期时间失败。
issues.error_removing_due_date=删除到期时间失败。
issues.push_commit_1=于 %[2]s 推送了 %[1]d 个提交
issues.push_commits_n=于 %[2]s 推送了 %[1]d 个提交
issues.force_push_codes=`于 %[6]s 强制推送 %[1]s从 <a class="ui sha" href="%[3]s"><code>%[2]s</code></a>,至 <a class="ui sha" href="%[5]s"><code>%[4]s</code></a>`
issues.force_push_codes=`于 %[6]s 强制推送 %[1]s从 <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a>,至 <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a>`
issues.force_push_compare=比较
issues.due_date_form=yyyy-mm-dd
issues.due_date_form_add=设置到期时间
@ -1841,7 +1841,7 @@ pulls.nothing_to_compare_have_tag=所选分支/标签相同。
pulls.nothing_to_compare_and_allow_empty_pr=这些分支是相等的,此合并请求将为空。
pulls.has_pull_request=这些分支之间的合并请求已存在: <a href="%[1]s">%[2]s#%[3]d</a>
pulls.create=创建合并请求
pulls.title_desc_few=请求将 %[1]d 次代码提交从 <code>%[2]s</code> 合并至 <code id="branch_target">%[3]s</code>
pulls.title_desc_few=请求将 %[1]d 次代码提交从 <code>%[2]s</code> 合并至 <code id="%[4]s">%[3]s</code>
pulls.merged_title_desc_few=于 %[4]s 将 %[1]d 次代码提交从 <code>%[2]s</code>合并至 <code>%[3]s</code>
pulls.change_target_branch_at=将目标分支从 <b>%s</b> 更改为 <b>%s</b> %s
pulls.tab_conversation=对话内容
@ -2456,7 +2456,7 @@ settings.ignore_stale_approvals_desc=对旧提交(过期审核)的批准将
settings.require_signed_commits=需要签名提交
settings.require_signed_commits_desc=拒绝推送未签名或无法验证的提交到分支
settings.protect_branch_name_pattern=受保护的分支名称正则
settings.protect_branch_name_pattern_desc=分支保护的名称匹配规则。语法请参阅<a href="%s">文档</a> 。如main, release/**
settings.protect_branch_name_pattern_desc=受保护的分支名称正则。语法请参阅<a href="%s">文档</a> 。如main, release/**
settings.protect_patterns=规则
settings.protect_protected_file_patterns=受保护的文件模式(使用半角分号“;”分隔)
settings.protect_protected_file_patterns_desc=即使用户有权添加、编辑或删除此分支中的文件,也不允许直接更改受保护的文件。 可以使用半角分号(“;”)分隔多个模式。 见<a href='%s'>%s</a>文档了解模式语法。例如: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>。
@ -2761,7 +2761,7 @@ error.broken_git_hook = 该仓库的 Git 钩子似乎已经损坏,请按照 <a
pulls.merged_title_desc_one = 已将来自 <code>%[2]s</code> 的 %[1]d 提交合并入 <code>%[3]s</code> %[4]s
commits.search_branch = 此分支
open_with_editor = 使用 %s 打开
pulls.title_desc_one = 想要将来自 <code>%[2]s</code> 的 %[1]d 提交合并到 <code id="branch_target">%[3]s</code>
pulls.title_desc_one = 想要将来自 <code>%[2]s</code> 的 %[1]d 提交合并到 <code id="%[4]s">%[3]s</code>
settings.rename_branch_failed_protected = 无法重命名受保护的分支 %s。
stars = 点赞
settings.confirmation_string = 确认输入
@ -2841,6 +2841,12 @@ mirror_use_ssh.not_available = SSH 验证不可用。
issues.new.assign_to_me = 指派给我
issues.all_title = 全部
settings.discord_icon_url.exceeds_max_length = 图标 URL 必须小于或等于 2048 个字符
issues.review.remove_review_requests = 于 %[2]s 取消对 %[1]s 的评审请求
issues.review.add_review_requests = 于 %[2]s 请求 %[1]s 评审
issues.review.add_remove_review_requests = 于 %[3]s 请求 %[1]s 评审,并取消对 %[2]s 的评审请求
pulls.delete_after_merge.head_branch.is_protected = 您要删除的头部分支是受保护的分支,无法删除。
pulls.delete_after_merge.head_branch.insufficient_branch = 您没有权限删除头部分支。
pulls.delete_after_merge.head_branch.is_default = 您要删除的头部分支是默认分支,无法删除。
[graphs]
component_loading=正在加载 %s...

View file

@ -478,7 +478,7 @@ editor.preview_changes=預覽更改
editor.or=
editor.cancel_lower=取消
editor.commit_changes=提交更改嗎?
editor.commit_directly_to_this_branch=直接提交到 <strong class="branch-name">%s</strong> 分支。
editor.commit_directly_to_this_branch=直接提交到 <strong class="%[2]s">%[1]s</strong> 分支。
editor.create_new_branch=建立 <strong>新的分支</strong> 為此提交和開始合併請求。
editor.cancel=取消
editor.no_changes_to_show=沒有可以顯示的變更。

View file

@ -215,7 +215,6 @@ server_internal = 伺服器內部錯誤
app_desc=一套極易架設的 Git 服務
install=安裝容易
platform=跨平台
platform_desc=Forgejo 可以在所有能編譯 <a target="_blank" rel="noopener noreferrer" href="%s">Go 語言</a>的平台上執行WindowsmacOSLinuxARM 等。挑一個您喜歡的吧!
lightweight=輕量級
lightweight_desc=一片便宜的 Raspberry Pi 就可以滿足 Forgejo 的最低需求。節省您的機器資源!
license=開放原始碼
@ -1027,7 +1026,7 @@ webauthn_key_loss_warning = 如果您弄丟了您的安全金鑰,您將無法
user_unblock_success = 已成功解除對此使用者的封鎖。
webauthn_alternative_tip = 您可能想新增一個額外的驗證方法。
user_block_success = 已成功封鎖此使用者。
access_token_desc = 選擇的符記僅授權相對應的 <a %s>API路徑</a>。請參閱<a %s>文件</a>來了解更多。
access_token_desc = 選擇的符記僅授權相對應的 <a href="%[1]s" target="_blank">API路徑</a>。請參閱<a href="%[2]s" target="_blank">文件</a>來了解更多。
oauth2_application_locked = 可以在組態中設定 Forgejo 預先註冊一些 OAuth2 應用程式。為了避免不可預料的情況,它們無法被編輯或是移除。請參閱 OAuth2 文件來了解更多。
hidden_comment_types_description = 在這裡選取的留言種類將不會顯示於問題頁面中。舉例來說,核取「標籤」將隱藏所有「使用者新增/移除了<標籤>」留言。
authorized_oauth2_applications_description = 您已授權給這些第三方應用程式取用您的 Forgejo 個人帳號的權限。請撤銷您不再使用的應用程式的權限。
@ -1307,7 +1306,7 @@ editor.fail_to_apply_patch=無法套用補綴「%s」
editor.new_patch=新增補綴
editor.commit_message_desc=(選填)加入詳細說明…
editor.signoff_desc=在提交訊息底部加入提交者的「Signed-off-by」資訊。
editor.commit_directly_to_this_branch=直接提交到 <strong class="branch-name">%s</strong> 分支。
editor.commit_directly_to_this_branch=直接提交到 <strong class="%[2]s">%[1]s</strong> 分支。
editor.create_new_branch=為此提交建立<strong>新分支</strong>並提出合併請求。
editor.create_new_branch_np=為本次提交建立<strong>新分支</strong>。
editor.propose_file_change=提出檔案變更
@ -1643,7 +1642,7 @@ issues.error_modifying_due_date=無法修改截止日期。
issues.error_removing_due_date=無法移除截止日期。
issues.push_commit_1=加入了 %d 個提交 %s
issues.push_commits_n=加入了 %d 個提交 %s
issues.force_push_codes=`強制推送了 %[1]s 自 <a class="ui sha" href="%[3]s"><code>%[2]s</code></a> 至 <a class="ui sha" href="%[5]s"><code>%[4]s</code></a> %[6]s`
issues.force_push_codes=`強制推送了 %[1]s 自 <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> 至 <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> %[6]s`
issues.force_push_compare=比較
issues.due_date_form=yyyy年mm月dd日
issues.due_date_form_add=新增截止日期
@ -1745,7 +1744,7 @@ pulls.nothing_to_compare=這些分支的內容相同,無需建立合併請求
pulls.nothing_to_compare_and_allow_empty_pr=這些分支的內容相同,此合併請求將會是空白的。
pulls.has_pull_request=`已有介於這些分支間的合併請求:<a href="%[1]s">%[2]s#%[3]d</a>`
pulls.create=建立合併請求
pulls.title_desc_few=請求將 %[1]d 次程式碼提交從 <code>%[2]s</code> 合併至 <code id="branch_target">%[3]s</code>
pulls.title_desc_few=請求將 %[1]d 次程式碼提交從 <code>%[2]s</code> 合併至 <code id="%[4]s">%[3]s</code>
pulls.merged_title_desc_few=將 %[1]d 次提交從 <code>%[2]s</code> 合併至 <code>%[3]s</code> %[4]s
pulls.change_target_branch_at=`將目標分支從 <b>%s</b> 更改為 <b>%s</b> %s`
pulls.tab_conversation=對話內容
@ -2626,7 +2625,7 @@ signing.wont_sign.approved = 因為合併請求沒有被核可,這個合併不
activity.navbar.recent_commits = 最近的提交
issues.comment.blocked_by_user = 因為您被該儲存庫的所有者或問題的提出者封鎖,您不能在這則問題上留言。
pulls.closed = 合併請求已關閉
pulls.title_desc_one = 想從 <code>%[2]s</code> 合併 %[1]d 個提交至 <code id="branch_target">%[3]s</code>
pulls.title_desc_one = 想從 <code>%[2]s</code> 合併 %[1]d 個提交至 <code id="%[4]s">%[3]s</code>
pulls.merged_title_desc_one = 於 %[4]s 自 <code>%[2]s</code> 合併了 %[1]d 個提交至 <code>%[3]s</code>
issues.archived_label_description = (已封存)%s
signing.wont_sign.always = 永遠簽署提交。

2844
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -29,8 +29,8 @@
"idiomorph": "0.3.0",
"jquery": "3.7.1",
"katex": "0.16.11",
"mermaid": "11.3.0",
"mini-css-extract-plugin": "2.9.1",
"mermaid": "11.4.0",
"mini-css-extract-plugin": "2.9.2",
"minimatch": "10.0.1",
"monaco-editor": "0.51.0",
"monaco-editor-webpack-plugin": "7.1.0",
@ -42,7 +42,6 @@
"sortablejs": "1.15.3",
"swagger-ui-dist": "5.17.14",
"tailwindcss": "3.4.13",
"temporal-polyfill": "0.2.4",
"throttle-debounce": "5.0.0",
"tinycolor2": "1.6.0",
"tippy.js": "6.3.7",
@ -54,46 +53,52 @@
"vue-chartjs": "5.3.1",
"vue-loader": "17.4.2",
"vue3-calendar-heatmap": "2.0.5",
"webpack": "5.95.0",
"webpack": "5.96.1",
"webpack-cli": "5.1.4",
"wrap-ansi": "9.0.0"
},
"devDependencies": {
"@axe-core/playwright": "4.10.0",
"@eslint-community/eslint-plugin-eslint-comments": "4.4.0",
"@eslint-community/eslint-plugin-eslint-comments": "4.4.1",
"@playwright/test": "1.48.2",
"@stoplight/spectral-cli": "6.13.1",
"@stylistic/eslint-plugin-js": "2.9.0",
"@stylistic/eslint-plugin-js": "2.10.1",
"@stylistic/stylelint-plugin": "3.1.1",
"@typescript-eslint/parser": "8.13.0",
"@vitejs/plugin-vue": "5.1.4",
"@vitest/coverage-v8": "2.1.3",
"@vitest/coverage-v8": "2.1.4",
"@vitest/eslint-plugin": "1.1.7",
"@vue/test-utils": "2.4.6",
"eslint": "9.13.0",
"eslint-plugin-array-func": "4.0.0",
"eslint-plugin-import-x": "4.3.1",
"eslint": "9.14.0",
"eslint-import-resolver-typescript": "3.6.3",
"eslint-plugin-array-func": "5.0.2",
"eslint-plugin-import-x": "4.4.0",
"eslint-plugin-no-jquery": "3.0.2",
"eslint-plugin-no-use-extend-native": "0.5.0",
"eslint-plugin-no-use-extend-native": "0.7.2",
"eslint-plugin-playwright": "2.0.0",
"eslint-plugin-regexp": "2.6.0",
"eslint-plugin-sonarjs": "2.0.3",
"eslint-plugin-sonarjs": "2.0.4",
"eslint-plugin-unicorn": "56.0.0",
"eslint-plugin-vitest-globals": "1.5.0",
"eslint-plugin-vue": "9.28.0",
"eslint-plugin-vue": "9.30.0",
"eslint-plugin-vue-scoped-css": "2.8.1",
"eslint-plugin-wc": "2.2.0",
"globals": "15.11.0",
"happy-dom": "15.7.4",
"globals": "15.12.0",
"happy-dom": "15.9.0",
"license-checker-rseidelsohn": "4.4.2",
"markdownlint-cli": "0.42.0",
"postcss-html": "1.7.0",
"stylelint": "16.9.0",
"stylelint": "16.10.0",
"stylelint-declaration-block-no-ignored-properties": "2.8.0",
"stylelint-declaration-strict-value": "1.10.6",
"stylelint-value-no-unknown-custom-properties": "6.0.1",
"svgo": "3.2.0",
"typescript": "5.6.3",
"typescript-eslint": "8.13.0",
"vite-string-plugin": "1.3.4",
"vitest": "2.1.3"
"vitest": "2.1.4"
},
"browserslist": ["defaults"]
"browserslist": [
"defaults"
]
}

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