mirror of
https://codeberg.org/forgejo/forgejo
synced 2024-11-29 05:06:11 +01:00
Merge branch 'forgejo' into escape_markdown_discord
This commit is contained in:
commit
5555d46c8a
|
@ -137,9 +137,6 @@ code.gitea.io/gitea/modules/git
|
|||
AddChangesWithArgs
|
||||
CommitChanges
|
||||
CommitChangesWithArgs
|
||||
IsErrExecTimeout
|
||||
ErrExecTimeout.Error
|
||||
ErrUnsupportedVersion.Error
|
||||
SetUpdateHook
|
||||
openRepositoryWithDefaultContext
|
||||
IsTagExist
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
15
Makefile
15
Makefile
|
@ -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
|
||||
|
|
|
@ -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).
|
||||
|
|
2
assets/go-licenses.json
generated
2
assets/go-licenses.json
generated
|
@ -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
156
build/lint-locale.go
Normal 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
65
build/lint-locale_test.go
Normal 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 \x1b[0m\x1b[32m\u00a0\x1b[0m"}, checkLocaleContent([]byte(`key = و `)))
|
||||
})
|
||||
}
|
|
@ -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()
|
||||
|
|
|
@ -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
|
||||
;;
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
|
|
@ -14,10 +14,15 @@ import wc from 'eslint-plugin-wc';
|
|||
import globals from 'globals';
|
||||
import vue from 'eslint-plugin-vue';
|
||||
import vueScopedCss from 'eslint-plugin-vue-scoped-css';
|
||||
import tseslint from 'typescript-eslint';
|
||||
|
||||
export default [{
|
||||
export default tseslint.config(
|
||||
...tseslint.configs.recommended,
|
||||
eslintPluginImportX.flatConfigs.typescript,
|
||||
{
|
||||
ignores: ['web_src/js/vendor', 'web_src/fomantic', 'public/assets/js'],
|
||||
}, {
|
||||
},
|
||||
{
|
||||
plugins: {
|
||||
'@eslint-community/eslint-comments': eslintCommunityEslintPluginEslintComments,
|
||||
'@stylistic/js': stylisticEslintPluginJs,
|
||||
|
@ -52,6 +57,8 @@ export default [{
|
|||
sourceType: 'module',
|
||||
},
|
||||
rules: {
|
||||
'@typescript-eslint/no-unused-vars': 'off', // TODO: enable this rule again
|
||||
|
||||
'@eslint-community/eslint-comments/disable-enable-pair': [2],
|
||||
'@eslint-community/eslint-comments/no-aggregating-enable': [2],
|
||||
'@eslint-community/eslint-comments/no-duplicate-disable': [2],
|
||||
|
@ -1031,6 +1038,7 @@ export default [{
|
|||
rules: {
|
||||
'import-x/no-unused-modules': [0],
|
||||
'import-x/no-unresolved': [0],
|
||||
'import-x/no-named-as-default': [0],
|
||||
},
|
||||
}, {
|
||||
files: ['**/*.test.*', 'web_src/js/test/setup.js'],
|
||||
|
@ -1104,7 +1112,7 @@ export default [{
|
|||
],
|
||||
},
|
||||
}, {
|
||||
files: ['tests/e2e/**/*.js'],
|
||||
files: ['tests/e2e/**/*.js', 'tests/e2e/**/*.ts'],
|
||||
languageOptions: {
|
||||
globals: {
|
||||
...globals.browser,
|
||||
|
@ -1158,4 +1166,4 @@ export default [{
|
|||
},
|
||||
},
|
||||
|
||||
];
|
||||
);
|
||||
|
|
10
go.mod
10
go.mod
|
@ -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
20
go.sum
|
@ -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=
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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"
|
||||
)
|
||||
|
||||
|
|
1
models/fixtures/federated_user.yml
Normal file
1
models/fixtures/federated_user.yml
Normal file
|
@ -0,0 +1 @@
|
|||
[] # empty
|
1
models/fixtures/federation_host.yml
Normal file
1
models/fixtures/federation_host.yml
Normal file
|
@ -0,0 +1 @@
|
|||
[] # empty
|
|
@ -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) {
|
||||
|
|
|
@ -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.
|
||||
|
|
16
models/forgejo_migrations/v23.go
Normal file
16
models/forgejo_migrations/v23.go
Normal 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{})
|
||||
}
|
|
@ -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) {
|
||||
|
|
|
@ -222,6 +222,12 @@ 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"`
|
||||
|
@ -236,6 +242,8 @@ type Comment struct {
|
|||
Label *Label `xorm:"-"`
|
||||
AddedLabels []*Label `xorm:"-"`
|
||||
RemovedLabels []*Label `xorm:"-"`
|
||||
AddedRequestReview []RequestReviewTarget `xorm:"-"`
|
||||
RemovedRequestReview []RequestReviewTarget `xorm:"-"`
|
||||
OldProjectID int64
|
||||
ProjectID int64
|
||||
OldProject *project_model.Project `xorm:"-"`
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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).
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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).
|
||||
var start int
|
||||
batchSize := setting.Database.IterateBufferSize
|
||||
for {
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
return ctx.Err()
|
||||
default:
|
||||
beans := make([]*packages.PackageFile, 0, batchSize)
|
||||
|
||||
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").
|
||||
Iterate(new(packages.PackageFile), func(_ int, bean any) error {
|
||||
pf := bean.(*packages.PackageFile)
|
||||
Limit(batchSize, start).
|
||||
Find(&beans); err != nil {
|
||||
return err
|
||||
}
|
||||
if len(beans) == 0 {
|
||||
return nil
|
||||
}
|
||||
start += len(beans)
|
||||
|
||||
pfd, err := packages.GetPackageFileDescriptor(ctx, pf)
|
||||
for _, bean := range beans {
|
||||
pfd, err := packages.GetPackageFileDescriptor(ctx, bean)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
iter(pfd)
|
||||
|
||||
return nil
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// GetDistributions gets all available distributions
|
||||
|
|
94
models/packages/debian/search_test.go
Normal file
94
models/packages/debian/search_test.go
Normal 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")
|
||||
}
|
|
@ -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"
|
||||
)
|
||||
|
|
|
@ -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"
|
||||
)
|
||||
|
|
|
@ -21,6 +21,7 @@ type AutoMerge struct {
|
|||
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"`
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -62,6 +63,7 @@ func ScheduleAutoMerge(ctx context.Context, doer *user_model.User, pullID int64,
|
|||
PullID: pullID,
|
||||
MergeStyle: style,
|
||||
Message: message,
|
||||
DeleteBranchAfterMerge: deleteBranch,
|
||||
})
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
)
|
||||
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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")
|
||||
}
|
||||
|
|
|
@ -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))
|
||||
|
||||
// --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)
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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]))))\)$`)
|
||||
|
|
|
@ -17,6 +17,7 @@ func TestMatchColor(t *testing.T) {
|
|||
{"#ddeeffa0", true},
|
||||
{"#ddeefe", true},
|
||||
{"#abcdef", true},
|
||||
{"#fffa", true},
|
||||
{"#abcdeg", false},
|
||||
{"#abcdefg0", false},
|
||||
{"black", false},
|
||||
|
|
|
@ -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))
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
|
|
26
modules/markup/markdown/util/text.go
Normal file
26
modules/markup/markdown/util/text.go
Normal 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()
|
||||
}
|
|
@ -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)
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -93,6 +93,8 @@ var Service = struct {
|
|||
Explore struct {
|
||||
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},
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -182,6 +182,7 @@ func NewFuncMap() template.FuncMap {
|
|||
"RenderMarkdownToHtml": RenderMarkdownToHtml,
|
||||
"RenderLabel": RenderLabel,
|
||||
"RenderLabels": RenderLabels,
|
||||
"RenderReviewRequest": RenderReviewRequest,
|
||||
|
||||
// -----------------------------------------------------------------
|
||||
// misc
|
||||
|
|
|
@ -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"
|
||||
)
|
||||
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
66
modules/translation/i18n/dummy.go
Normal file
66
modules/translation/i18n/dummy.go
Normal 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...)
|
||||
}
|
19
modules/translation/i18n/dummy_test.go
Normal file
19
modules/translation/i18n/dummy_test.go
Normal 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))
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -26,8 +26,10 @@ func Locale(resp http.ResponseWriter, req *http.Request) translation.Locale {
|
|||
}
|
||||
}
|
||||
|
||||
if lang == "dummy" {
|
||||
changeLang = false
|
||||
} else if lang != "" && !i18n.DefaultLocales.HasLang(lang) {
|
||||
// Check again in case someone changes the supported language list.
|
||||
if lang != "" && !i18n.DefaultLocales.HasLang(lang) {
|
||||
lang = ""
|
||||
changeLang = false
|
||||
}
|
||||
|
|
|
@ -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 و
|
||||
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 = و
|
||||
activity.git_stats_and_deletions = `و"`
|
||||
activity.git_stats_deletion_1 = %d إزالة
|
||||
activity.git_stats_deletion_n = %d إزالة
|
||||
settings.mirror_settings.direction = الاتجاه
|
||||
|
|
|
@ -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 = Не сте упълномощени за сливане на тази заявка за сливане.
|
||||
|
|
|
@ -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…
|
||||
|
|
|
@ -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]
|
||||
|
||||
|
|
|
@ -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 = Μυστικά
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
@ -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
|
||||
|
|
|
@ -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 d’informations.
|
||||
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 d’informations.
|
||||
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 n’y 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"`
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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 = 所有権を移送
|
||||
|
|
|
@ -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=설정
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -335,6 +335,7 @@ oauth.signin.error = Bi’m 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. To’n 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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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]
|
||||
|
||||
|
|
|
@ -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]
|
||||
|
|
|
@ -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]
|
||||
|
||||
|
|
|
@ -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> උපසර්ගය එකතු කරන්න
|
||||
|
|
|
@ -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ť?
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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' већ постоји за ово спремиште.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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=Açı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
|
||||
|
|
|
@ -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=Обговорення
|
||||
|
|
|
@ -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...
|
||||
|
|
|
@ -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=沒有可以顯示的變更。
|
||||
|
|
|
@ -215,7 +215,6 @@ server_internal = 伺服器內部錯誤
|
|||
app_desc=一套極易架設的 Git 服務
|
||||
install=安裝容易
|
||||
platform=跨平台
|
||||
platform_desc=Forgejo 可以在所有能編譯 <a target="_blank" rel="noopener noreferrer" href="%s">Go 語言</a>的平台上執行:Windows,macOS,Linux,ARM 等。挑一個您喜歡的吧!
|
||||
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
2844
package-lock.json
generated
File diff suppressed because it is too large
Load diff
41
package.json
41
package.json
|
@ -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
Loading…
Reference in a new issue