Compare commits

...

85 commits

Author SHA1 Message Date
Matthias Riße
c5b3812553 Use annexed content for comparison in diffs (#57)
Some checks failed
/ build-oci-image (rootful) (push) Has been cancelled
/ build-oci-image (rootless) (push) Has been cancelled
Integration tests for the release process / release-simulation (push) Has been cancelled
/ release (push) Has been cancelled
testing / backend-checks (push) Has been cancelled
testing / frontend-checks (push) Has been cancelled
testing / test-unit (push) Has been cancelled
testing / test-e2e (push) Has been cancelled
testing / test-remote-cacher (redis) (push) Has been cancelled
testing / test-remote-cacher (valkey) (push) Has been cancelled
testing / test-remote-cacher (garnet) (push) Has been cancelled
testing / test-remote-cacher (redict) (push) Has been cancelled
testing / test-mysql (push) Has been cancelled
testing / test-pgsql (push) Has been cancelled
testing / test-sqlite (push) Has been cancelled
testing / security-check (push) Has been cancelled
This makes it such that annexed files are treated like plain git files
in comparisons (e.g. the diff of a commit).

It also changes the image diff viewer to show a more reasonable error
message when one of the annexed files under comparison is missing.

Fixes #56.

Reviewed-on: https://codeberg.org/forgejo-aneksajo/forgejo-aneksajo/pulls/57
Co-authored-by: Matthias Riße <m.risse@fz-juelich.de>
Co-committed-by: Matthias Riße <m.risse@fz-juelich.de>
2025-02-08 16:52:15 +01:00
Matthias Riße
0ee62840ff Invalidate outdated annex UUID cache entries (#60)
The previous implementation could lead to errors e.g. when a repository
was removed and a new one with a new UUID was created under the same
name. This now checks the validity of the retrieved cache entry every
time and invalidates the cache if necessary.

Reviewed-on: https://codeberg.org/forgejo-aneksajo/forgejo-aneksajo/pulls/60
Co-authored-by: Matthias Riße <m.risse@fz-juelich.de>
Co-committed-by: Matthias Riße <m.risse@fz-juelich.de>
2025-02-08 16:52:15 +01:00
Matthias Riße
efe77599e6 Pre-populate the git-annex UUID cache at startup (#59)
This eliminates the wait time for the first p2phttp connection since
server startup at the cost of adding that time to the startup itself.

Reviewed-on: https://codeberg.org/forgejo-aneksajo/forgejo-aneksajo/pulls/59
Co-authored-by: Matthias Riße <m.risse@fz-juelich.de>
Co-committed-by: Matthias Riße <m.risse@fz-juelich.de>
2025-02-08 16:52:15 +01:00
Matthias Riße
22855c6238 Cache git-annex UUID to repository path mappings (#54)
Always walking the filesystem and searching for UUIDs slowed p2phttp
operations down significantly on a production server with more than a
handful of repositories. This caching strategy ensures that only the
first call is rather slow, and subsequent ones should be much faster.

This should better be implemented as a background job, but for now this
is a simple solution to the problem.

Fixes #53.

Reviewed-on: https://codeberg.org/forgejo-aneksajo/forgejo-aneksajo/pulls/54
Co-authored-by: Matthias Riße <m.risse@fz-juelich.de>
Co-committed-by: Matthias Riße <m.risse@fz-juelich.de>
2025-02-08 16:52:15 +01:00
Matthias Riße
aa683cb1e2 Explicitly set http(s) default ports in annex.url (#55)
Otherwise, git-annex tries to use its own default port (9417) and fails.

Fixes #52.

Reviewed-on: https://codeberg.org/forgejo-aneksajo/forgejo-aneksajo/pulls/55
Co-authored-by: Matthias Riße <m.risse@fz-juelich.de>
Co-committed-by: Matthias Riße <m.risse@fz-juelich.de>
2025-02-08 16:52:15 +01:00
Matthias Riße
99d2de8956 Fix Forgejo version in published OCI images (#51)
The Forgejo version is derived from the git history, so the image build
needs to happen in the context of a full repository clone.

Also, the post-processing of the version string needs to remove the
second occurrence of "-g", as the first one is now part of the added
"-git-annex" part.

Reviewed-on: https://codeberg.org/forgejo-aneksajo/forgejo-aneksajo/pulls/51
Co-authored-by: Matthias Riße <m.risse@fz-juelich.de>
Co-committed-by: Matthias Riße <m.risse@fz-juelich.de>
2025-02-08 16:52:15 +01:00
Matthias Riße
4b75d40853 Add an OCI image build and publish workflow (#50)
Fixes #49.

Reviewed-on: https://codeberg.org/forgejo-aneksajo/forgejo-aneksajo/pulls/50
Co-authored-by: Matthias Riße <m.risse@fz-juelich.de>
Co-committed-by: Matthias Riße <m.risse@fz-juelich.de>
2025-02-08 16:52:15 +01:00
Matthias Riße
aa6674de6e Simplify git blob to annex key lookup (#43)
Fixes #27.

Reviewed-on: https://codeberg.org/matrss/forgejo-aneksajo/pulls/43
Co-authored-by: Matthias Riße <m.risse@fz-juelich.de>
Co-committed-by: Matthias Riße <m.risse@fz-juelich.de>
2025-02-08 16:52:15 +01:00
Matthias Riße
971f6f7bab Add git-annex p2phttp support (#42)
This adds a new endpoint under `/git-annex-p2phttp` which acts as an
authenticating proxy to git-annex' p2phttp server. This makes it
possible to set `annex+<server-url>/git-annex-p2phttp` as
`remote.<name>.annexurl` and use git-annex fully over http(s) with the
normal credentials and access tokens provided by Forgejo.

Fixes #25.

Reviewed-on: https://codeberg.org/matrss/forgejo-aneksajo/pulls/42
Co-authored-by: Matthias Riße <m.risse@fz-juelich.de>
Co-committed-by: Matthias Riße <m.risse@fz-juelich.de>
2025-02-08 16:52:14 +01:00
Matthias Riße
1dd3a341a7 Add tests for git annex drop (#47)
This adds some rudimentary tests that drop files in a repository's clone
as well as from a repository on Forgejo.

Fixes #4.

Reviewed-on: https://codeberg.org/matrss/forgejo-aneksajo/pulls/47
Co-authored-by: Matthias Riße <m.risse@fz-juelich.de>
Co-committed-by: Matthias Riße <m.risse@fz-juelich.de>
2025-02-08 16:52:14 +01:00
Matthias Riße
592b23f5cd Add git-annex' testremote to the test suite (#48)
The `git annex testremote` command runs a built-in set of tests against
a remote. It cannot hurt to check our implementation of a git-annex
remote against it too.

Reviewed-on: https://codeberg.org/matrss/forgejo-aneksajo/pulls/48
Co-authored-by: Matthias Riße <m.risse@fz-juelich.de>
Co-committed-by: Matthias Riße <m.risse@fz-juelich.de>
2025-02-08 16:52:14 +01:00
Matthias Riße
4d65d593ad Only upload to annex in doAnnexUploadTest (#46)
The previous implementation both uploaded to the annex and pushed to the
git repository. This meant that the tests checking that uploads without
permission fail actually could pass when the git push failed but the
git-annex upload didn't. The tests didn't catch the situation where
unauthorized users could modify the annex.

Reviewed-on: https://codeberg.org/matrss/forgejo-aneksajo/pulls/46
Co-authored-by: Matthias Riße <m.risse@fz-juelich.de>
Co-committed-by: Matthias Riße <m.risse@fz-juelich.de>
2025-02-08 16:52:14 +01:00
Matthias Riße
3cf2111dbf Use PATH when looking for git commands (#44)
This fixes some issues when using a git-annex that is installed in a
different location than where git is installed, e.g. when using the
git-annex-standalone release or one installed with nix.

Reviewed-on: https://codeberg.org/matrss/forgejo-aneksajo/pulls/44
Co-authored-by: Matthias Riße <m.risse@fz-juelich.de>
Co-committed-by: Matthias Riße <m.risse@fz-juelich.de>
2025-02-08 16:52:14 +01:00
Matthias Riße
cdc80b9fe6 Allow anonymous HEAD requests to annex/objects (#41)
Git-annex emits HEAD requests for keys while trying to drop them from a
repository that was cloned via http. Forgejo asked for authentication
for these HEAD requests. This meant that cloning and getting files was
possible without authentication, but dropping was not.

Since the response to a HEAD request is a subset of the response to a
GET request it is safe to make those unauthenticated as well. That is
what this change does, although limited to the
:username/:reponame/annex/objects endpoint.

Fixes #40.

Reviewed-on: https://codeberg.org/matrss/forgejo-aneksajo/pulls/41
Co-authored-by: Matthias Riße <m.risse@fz-juelich.de>
Co-committed-by: Matthias Riße <m.risse@fz-juelich.de>
2025-02-08 16:52:14 +01:00
Michael Hanke
8065657151 Elevate external markup renderer interface for annexed file content (#36)
Previously, an external renderer that matched on an annexed file would
only see its content streamed via `STDIN`, or a temporary file with a copy
of its content would be generated and passed-by-filepath (with
`IS_INPUT_FILE=true`). Whether that happens, is also subject to
`MAX_DISPLAY_FILE_SIZE` (which defaults to 8MB).

This was problematic, because annexed files tend to be large. Moreover,
if present, they already exist as write-protected files on the
file-system. Creating a copy is both expensive and serves no particular
purpose.

This commit changes how external renderers are called.

1) With `IS_INPUT_FILE=true`, the renderer is passed the true location
   of an annex key, if present, and an empty path, if not.
2) The original, repository-relative path of the rendering target is
   made available to the renderer via the `GITEA_RELATIVE_PATH`
   environment variable.

To achieve a lean implementation, the `Blob` of the rendering target
is passed on to the `RenderContext` (because the implementation of
the annex-related functionality is centered on this dtype.

This change makes it less costly to increase `MAX_DISPLAY_FILE_SIZE`,
in order to make large, annexed files eligible for markup rendering,
because no content copies will be made any longer.

External renderers can now use the original file path, with the full
original filename, including extensions, for decision making. For
example, to detect particular compression formats based in a file name
extension, or to alter the rendering based on contextual information
encoded in the file path (e.g., a multi-file data structure with a
particular organization pattern).

Apart from the additional environment variable, there is no change to
the handling of renderers that take their input via `STDIN` (i.e.,
`IS_INPUT_FILE=false`).

Fixes #35.

Reviewed-on: https://codeberg.org/matrss/forgejo-aneksajo/pulls/36
Reviewed-by: matrss <matrss@noreply.codeberg.org>
Co-authored-by: Michael Hanke <michael.hanke@gmail.com>
Co-committed-by: Michael Hanke <michael.hanke@gmail.com>
2025-02-08 16:52:14 +01:00
Matthias Riße
78ff09f63d Change the icon for annexed files to file-binary (#29)
Fixes #26.

Reviewed-on: https://codeberg.org/matrss/forgejo-aneksajo/pulls/29
Co-authored-by: Matthias Riße <m.risse@fz-juelich.de>
Co-committed-by: Matthias Riße <m.risse@fz-juelich.de>
2025-02-08 16:52:14 +01:00
Matthias Riße
4c60dfb6f0 Improve views for annexed but missing files (#28)
Previously, trying to view files that were annexed, but missing, just
led to an uninformative error 500. This was rather confusing.

With these changes it now shows the pointer target instead of the
(missing) content of the file, and also indicates this situation in the
"stored with git-annex" message. For semantic correctness views for
missing files return a 404 instead of a 200, as they would with the
content present.

Fixes #7, fixes #13.

Reviewed-on: https://codeberg.org/matrss/forgejo-aneksajo/pulls/28
Co-authored-by: Matthias Riße <m.risse@fz-juelich.de>
Co-committed-by: Matthias Riße <m.risse@fz-juelich.de>
2025-02-08 16:52:14 +01:00
Michael Hanke
5b2ae61a12 Add git-annex also to the rootless container (#24)
Same as 89f8aa0bf5, but for the rootless container.

Reviewed-on: https://codeberg.org/matrss/forgejo-aneksajo/pulls/24
Reviewed-by: matrss <matrss@noreply.codeberg.org>
Co-authored-by: Michael Hanke <michael.hanke@gmail.com>
Co-committed-by: Michael Hanke <michael.hanke@gmail.com>
2025-02-08 16:52:14 +01:00
Matthias Riße
e83f575da5 Git-annex web uploads (#21)
This implements support for uploading files into the annex using the web
interface.

If a repository is a git-annex-enabled repository all files will be
added to it using git annex add. This means that the repository's
configuration for what to put into the annex (annex.largefiles in
gitattributes) will be respected.

Plain git repositories without git-annex will work as before, directly
uploading to git.

Fixes #5.

Reviewed-on: https://codeberg.org/matrss/forgejo-aneksajo/pulls/21
Co-authored-by: Matthias Riße <m.risse@fz-juelich.de>
Co-committed-by: Matthias Riße <m.risse@fz-juelich.de>
2025-02-08 16:52:14 +01:00
Matthias Riße
246131cc69 Error if git-annex is enabled but missing (#16)
Copied from https://github.com/neuropoly/gitea/pull/47

This adds a check so that if `setting.Annex.Enabled` is true and git-annex is not in the PATH Forgejo will abort on startup with a reasonable error message.

Fixes #15.

Reviewed-on: https://codeberg.org/matrss/forgejo-aneksajo/pulls/16
Co-authored-by: Matthias Riße <m.risse@fz-juelich.de>
Co-committed-by: Matthias Riße <m.risse@fz-juelich.de>
2025-02-08 16:52:14 +01:00
Matthias Riße
e97e20427d Add git-annex to docker image 2025-02-08 16:52:14 +01:00
Matthias Riße
5ff7951560 Adapt patch to upstream changes
Test with different objectFormats.
2025-02-08 16:52:14 +01:00
Nick
56a9ea1fc3 git-annex: views for annex files
This updates the repo index/file view endpoints so annex files match the way
LFS files are rendered, making annexed files accessible via the web instead of
being black boxes only accessible by git clone.

This mostly just duplicates the existing LFS logic. It doesn't try to combine itself
with the existing logic, to make merging with upstream easier. If upstream ever
decides to accept, I would like to try to merge the redundant logic.

The one bit that doesn't directly copy LFS is my choice to hide annex-symlinks.
LFS files are always _pointer files_ and therefore always render with the "file"
icon and no special label, but annex files come in two flavours: symlinks or
pointer files. I've conflated both kinds to try to give a consistent experience.

The tests in here ensure the correct download link (/media, from the last PR)
renders in both the toolbar and, if a binary file (like most annexed files will be),
in the main pane, but it also adds quite a bit of code to make sure text files
that happen to be annexed are dug out and rendered inline like LFS files are.
2025-02-08 16:52:14 +01:00
Matthias Riße
82c9a86e83 Adapt patch to upstream changes
Use tests.FileCmp instead of util.FileCmp.
2025-02-08 16:52:14 +01:00
Matthias Riße
2845a75cbe Adapt patch to upstream changes
Test with different objectFormats.
2025-02-08 16:52:14 +01:00
Nick
2c0cb04776 git-annex: make /media/ download annexed content
Previously, Gitea's LFS support allowed direct-downloads of LFS content,
via http://$HOSTNAME:$PORT/$USER/$REPO/media/branch/$BRANCH/$FILE
Expand that grace to git-annex too. Now /media should provide the
relevant *content* from the .git/annex/objects/ folder.

This adds tests too. And expands the tests to try symlink-based annexing,
since /media implicitly supports both that and pointer-file-based annexing.
2025-02-08 16:52:14 +01:00
Matthias Riße
635770f8a4 Adapt patch to upstream changes
The git repository must be closed after using it. Without this change
some tests started to fail due to the lingering repository running into
a timeout.
2025-02-08 16:52:14 +01:00
Nick
0831aeccd1 git-annex: create modules/annex
This moves the `annexObjectPath()` helper out of the tests and into a
dedicated sub-package as `annex.ContentLocation()`, and expands it with
`.Pointer()` (which validates using `git annex examinekey`),
`.IsAnnexed()` and `.Content()` to make it a more useful module.

The tests retain their own wrapper version of `ContentLocation()`
because I tried to follow close to the API modules/lfs uses, which in
terms of abstract `git.Blob` and `git.TreeEntry` objects, not in terms
of `repoPath string`s which are more convenient for the tests.
2025-02-08 16:52:14 +01:00
Matthias Riße
0c81519d4e Adapt patch to upstream changes
The "context_service" import was changed to use the default name of just
"context". The patch set had to be adapted for that.
2025-02-08 16:52:14 +01:00
Matthias Riße
3c11eb1e26 Adapt patch to upstream changes
Usage of `path` was replaced by `path/filepath` in upstream forgejo, and
it made sense to use that as well where `path` was previously used. The
`setHeaderCacheForever` function and the `sendFile` method had their
signature changed.
2025-02-08 16:52:14 +01:00
Matthias Riße
24264cb45f Fix exit code check for git command
The err.IsExitCode method was changed to a function IsErrorExitCode
taking err as its first argument in
1e7a6483b8.
2025-02-08 16:52:14 +01:00
Matthias Riße
f0da2f268a Replace m.GetOptions with m.Methods
This applies the same changes that were done in
265cd70bdb to the git-annex specific
routes as well.
2025-02-08 16:52:13 +01:00
Nick
d8bf745749 git-annex: support downloading over HTTP
This makes HTTP symmetric with SSH clone URLs.

This gives us the fancy feature of _anonymous_ downloads,
so people can access datasets without having to set up an
account or manage ssh keys.

Previously, to access "open access" data shared this way,
users would need to:

  1. Create an account on gitea.example.com
  2. Create ssh keys
  3. Upload ssh keys (and make sure to find and upload the correct file)
  4. `git clone git@gitea.example.com:user/dataset.git`
  5. `cd dataset`
  6. `git annex get`

This cuts that down to just the last three steps:

  1. `git clone https://gitea.example.com/user/dataset.git`
  2. `cd dataset`
  3. `git annex get`

This is significantly simpler for downstream users, especially for those
unfamiliar with the command line.

Unfortunately there's no uploading. While git-annex supports uploading
over HTTP to S3 and some other special remotes, it seems to fail on a
_plain_ HTTP remote. See https://github.com/neuropoly/gitea/issues/7
and https://git-annex.branchable.com/forum/HTTP_uploads/#comment-ce28adc128fdefe4c4c49628174d9b92.

This is not a major loss since no one wants uploading to be anonymous anyway.

To support private repos, I had to hunt down and patch a secret extra security
corner that Gitea only applies to HTTP for some reason (services/auth/basic.go).

This was guided by https://git-annex.branchable.com/tips/setup_a_public_repository_on_a_web_site/

Fixes https://github.com/neuropoly/gitea/issues/3

Co-authored-by: Mathieu Guay-Paquet <mathieu.guaypaquet@polymtl.ca>
2025-02-08 16:52:13 +01:00
Nick
f42432a9e4 git-annex: add configuration setting [annex].ENABLED
Fixes https://github.com/neuropoly/gitea/issues/8

Co-authored-by: Mathieu Guay-Paquet <mathieu.guaypaquet@gmail.com>
2025-02-08 16:52:13 +01:00
Matthias Riße
cc193ec4ef Fix failing tests
Multiple tests that worked fine on v1.20.4-1 started to fail after the
rebase onto v1.20.5-1. These tests are:
- TestGitAnnexPermissions/Private/Owner/HTTP/Init
- TestGitAnnexPermissions/Private/Owner/HTTP/Download
- TestGitAnnexPermissions/Private/Writer/HTTP/Init
- TestGitAnnexPermissions/Private/Writer/HTTP/Download
- TestGitAnnexPermissions/Private/Reader/HTTP/Init
- TestGitAnnexPermissions/Private/Reader/HTTP/Download

What these tests have in common is that they all operate on a private
repository via http with authentication.

They broke at some point between v1.20.4-1 and v1.20.5-1, so I did a
bisect between these two points running the offending tests. This
brought me to the conclusion that
ee48c0d5ea introduced the issue.

The thing is, this commit does not change any code, it only changes the
test environment. Among other things that didn't look as suspicious, it
changes the container image from a bespoke test_env image based on
debian bullseye to a node image based on debian bookworm. Obviously,
this means that there are many version differences between the two.

The first one I looked at was git. The previous bullseye image used a
manually installed git version 2.40.0, while the bookworm image has
2.39.2 installed. Updating git in the new image did not fix the issue,
however.

The next thing I looked at was the git-annex version. Bullseye had
8.20210223 installed and worked, while bookworm used 10.20230126 when
the tests broke. So I tried my luck upgrading to a more recent version
via neurodebian (10.20240227-1~ndall+1). This still worked fine on
bullseye and now also works fine on bookworm.

I have no idea why this specific version of git-annex broke the tests,
but at least there was a commit to pinpoint this to, which isn't always
the case with docker images silently changing beneath you...

Below are the versions as they are reported by git and git-annex:

bullseye (works):

    git version 2.30.2
    git-annex version: 8.20210223
    build flags: Assistant Webapp Pairing Inotify DBus DesktopNotify TorrentParser MagicMime Feeds Testsuite S3 WebDAV
    dependency versions: aws-0.22 bloomfilter-2.0.1.0 cryptonite-0.26 DAV-1.3.4 feed-1.3.0.1 ghc-8.8.4 http-client-0.6.4.1 persistent-sqlite-2.10.6.2 torrent-10000.1.1 uuid-1.3.13 yesod-1.6.1.0
    key/value backends: SHA256E SHA256 SHA512E SHA512 SHA224E SHA224 SHA384E SHA384 SHA3_256E SHA3_256 SHA3_512E SHA3_512 SHA3_224E SHA3_224 SHA3_384E SHA3_384 SKEIN256E SKEIN256 SKEIN512E SKEIN512 BLAKE2B256E BLAKE2B256 BLAKE2B512E BLAKE2B512 BLAKE2B160E BLAKE2B160 BLAKE2B224E BLAKE2B224 BLAKE2B384E BLAKE2B384 BLAKE2BP512E BLAKE2BP512 BLAKE2S256E BLAKE2S256 BLAKE2S160E BLAKE2S160 BLAKE2S224E BLAKE2S224 BLAKE2SP256E BLAKE2SP256 BLAKE2SP224E BLAKE2SP224 SHA1E SHA1 MD5E MD5 WORM URL X*
    remote types: git gcrypt p2p S3 bup directory rsync web bittorrent webdav adb tahoe glacier ddar git-lfs httpalso borg hook external
    operating system: linux x86_64
    supported repository versions: 8
    upgrade supported from repository versions: 0 1 2 3 4 5 6 7

bullseye + git-annex from neurodebian (works):

    git version 2.30.2
    git-annex version: 10.20240227-1~ndall+1
    build flags: Assistant Webapp Pairing Inotify DBus DesktopNotify TorrentParser MagicMime Benchmark Feeds Testsuite S3 WebDAV
    dependency versions: aws-0.22.1 bloomfilter-2.0.1.0 cryptonite-0.29 DAV-1.3.4 feed-1.3.2.1 ghc-9.0.2 http-client-0.7.13.1 persistent-sqlite-2.13.1.0 torrent-10000.1.1 uuid-1.3.15 yesod-1.6.2.1
    key/value backends: SHA256E SHA256 SHA512E SHA512 SHA224E SHA224 SHA384E SHA384 SHA3_256E SHA3_256 SHA3_512E SHA3_512 SHA3_224E SHA3_224 SHA3_384E SHA3_384 SKEIN256E SKEIN256 SKEIN512E SKEIN512 BLAKE2B256E BLAKE2B256 BLAKE2B512E BLAKE2B512 BLAKE2B160E BLAKE2B160 BLAKE2B224E BLAKE2B224 BLAKE2B384E BLAKE2B384 BLAKE2BP512E BLAKE2BP512 BLAKE2S256E BLAKE2S256 BLAKE2S160E BLAKE2S160 BLAKE2S224E BLAKE2S224 BLAKE2SP256E BLAKE2SP256 BLAKE2SP224E BLAKE2SP224 SHA1E SHA1 MD5E MD5 WORM URL X*
    remote types: git gcrypt p2p S3 bup directory rsync web bittorrent webdav adb tahoe glacier ddar git-lfs httpalso borg hook external
    operating system: linux x86_64
    supported repository versions: 8 9 10
    upgrade supported from repository versions: 0 1 2 3 4 5 6 7 8 9 10

bookworm (fails):

    git version 2.39.2
    git-annex version: 10.20230126
    build flags: Assistant Webapp Pairing Inotify DBus DesktopNotify TorrentParser MagicMime Benchmark Feeds Testsuite S3 WebDAV
    dependency versions: aws-0.22.1 bloomfilter-2.0.1.0 cryptonite-0.29 DAV-1.3.4 feed-1.3.2.1 ghc-9.0.2 http-client-0.7.13.1 persistent-sqlite-2.13.1.0 torrent-10000.1.1 uuid-1.3.15 yesod-1.6.2.1
    key/value backends: SHA256E SHA256 SHA512E SHA512 SHA224E SHA224 SHA384E SHA384 SHA3_256E SHA3_256 SHA3_512E SHA3_512 SHA3_224E SHA3_224 SHA3_384E SHA3_384 SKEIN256E SKEIN256 SKEIN512E SKEIN512 BLAKE2B256E BLAKE2B256 BLAKE2B512E BLAKE2B512 BLAKE2B160E BLAKE2B160 BLAKE2B224E BLAKE2B224 BLAKE2B384E BLAKE2B384 BLAKE2BP512E BLAKE2BP512 BLAKE2S256E BLAKE2S256 BLAKE2S160E BLAKE2S160 BLAKE2S224E BLAKE2S224 BLAKE2SP256E BLAKE2SP256 BLAKE2SP224E BLAKE2SP224 SHA1E SHA1 MD5E MD5 WORM URL X*
    remote types: git gcrypt p2p S3 bup directory rsync web bittorrent webdav adb tahoe glacier ddar git-lfs httpalso borg hook external
    operating system: linux x86_64
    supported repository versions: 8 9 10
    upgrade supported from repository versions: 0 1 2 3 4 5 6 7 8 9 10

bookworm + git-annex from neurodebian (works):

    git version 2.39.2
    git-annex version: 10.20240227-1~ndall+1
    build flags: Assistant Webapp Pairing Inotify DBus DesktopNotify TorrentParser MagicMime Benchmark Feeds Testsuite S3 WebDAV
    dependency versions: aws-0.22.1 bloomfilter-2.0.1.0 cryptonite-0.29 DAV-1.3.4 feed-1.3.2.1 ghc-9.0.2 http-client-0.7.13.1 persistent-sqlite-2.13.1.0 torrent-10000.1.1 uuid-1.3.15 yesod-1.6.2.1
    key/value backends: SHA256E SHA256 SHA512E SHA512 SHA224E SHA224 SHA384E SHA384 SHA3_256E SHA3_256 SHA3_512E SHA3_512 SHA3_224E SHA3_224 SHA3_384E SHA3_384 SKEIN256E SKEIN256 SKEIN512E SKEIN512 BLAKE2B256E BLAKE2B256 BLAKE2B512E BLAKE2B512 BLAKE2B160E BLAKE2B160 BLAKE2B224E BLAKE2B224 BLAKE2B384E BLAKE2B384 BLAKE2BP512E BLAKE2BP512 BLAKE2S256E BLAKE2S256 BLAKE2S160E BLAKE2S160 BLAKE2S224E BLAKE2S224 BLAKE2SP256E BLAKE2SP256 BLAKE2SP224E BLAKE2SP224 SHA1E SHA1 MD5E MD5 WORM URL X*
    remote types: git gcrypt p2p S3 bup directory rsync web bittorrent webdav adb tahoe glacier ddar git-lfs httpalso borg hook external
    operating system: linux x86_64
    supported repository versions: 8 9 10
    upgrade supported from repository versions: 0 1 2 3 4 5 6 7 8 9 10
2025-02-08 16:52:13 +01:00
Matthias Riße
3d7458b8cc Install git-annex in the testing workflow 2025-02-08 16:52:13 +01:00
Matthias Riße
37a8fa9b5c Adapt patch to upstream changes 2025-02-08 16:52:13 +01:00
Matthias Riße
d13faeccaa Adapt patch to upstream changes
A dead code check started to complain because FileCmp was only used in
tests. Moved the function to test_utils.
2025-02-08 16:52:13 +01:00
Matthias Riße
57de00e5b9 Adapt patch to upstream changes
Repository creation now expects an objectFormat to be specified for git.
2025-02-08 16:52:13 +01:00
Nick
52485edf64 git-annex tests
Fixes https://github.com/neuropoly/gitea/issues/11

Tests:

* `git annex init`
* `git annex copy --from origin`
* `git annex copy --to origin`

over:

* ssh

for:

* the owner
* a collaborator
* a read-only collaborator
* a stranger

in a

* public repo
* private repo

And then confirms:

* Deletion of the remote repo (to ensure lockdown isn't messing with us: https://git-annex.branchable.com/internals/lockdown/#comment-0cc5225dc5abe8eddeb843bfd2fdc382)

------

To support all this:

* Add util.FileCmp()
* Patch withKeyFile() so it can be nested in other copies of itself

-------

Many thanks to Mathieu for giving style tips and catching several bugs,
including a subtle one in util.filecmp() which neutered it.

Co-authored-by: Mathieu Guay-Paquet <mathieu.guay-paquet@polymtl.ca>
Co-authored-by: Matthias Riße <m.risse@fz-juelich.de>
2025-02-08 16:52:13 +01:00
Nick Guenther
1d01b58227 git-annex support
[git-annex](https://git-annex.branchable.com/) is a more complicated cousin to
git-lfs, storing large files in an optional-download side content.  Unlike lfs,
it allows mixing and matching storage remotes, so the content remote(s) doesn't
need to be on the same server as the git remote, making it feasible to scatter
a collection across cloud storage, old harddrives, or anywhere else storage can
be scavenged.  Since this can get complicated, fast, it has a content-tracking
database (`git annex whereis`) to help find everything later.

The use-case we imagine for including it in Gitea is just the simple case, where
we're primarily emulating git-lfs: each repo has its large content at the same URL.

Our motivation is so we can self-host https://www.datalad.org/ datasets, which
currently are only hostable by fragilely scrounging together cloud storage --
and having to manage all the credentials associated with all the pieces -- or at
https://openneuro.org which is fragile in its own ways.

Supporting git-annex also allows multiple Gitea instance to be annex remotes for
each other, mirroring the content or otherwise collaborating the split up the
hosting costs.

Enabling
--------

TODO

HTTP
----

TODO

Permission Checking
-------------------

This tweaks the API in routers/private/serv.go to expose the calling user's
computed permission, instead of just returning HTTP 403.

This doesn't fit in super well. It's the opposite from how the git-lfs support is
done, where there's a complete list of possible subcommands and their matching
permission levels, and then the API compares the requested with the actual level
and returns HTTP 403 if the check fails.

But it's necessary. The main git-annex verbs, 'git-annex-shell configlist' and
'git-annex-shell p2pstdio' are both either read-only or read-write operations,
depending on the state on disk on either end of the connection and what the user
asked it to ask for, with no way to know before git-annex examines the situation.
So tell the level via GIT_ANNEX_READONLY and trust it to handle itself.

In the older Gogs version, the permission was directly read in cmd/serv.go:

```
mode, err = db.UserAccessMode(user.ID, repo)
```
- 966e925cf3/internal/cmd/serv.go (L334)

but in Gitea permission enforcement has been centralized in the API layer.
(perhaps so the cmd layer can avoid making direct DB connections?)

Deletion
--------

git-annex has this "lockdown" feature where it tries
really quite very hard to prevent you deleting its
data, to the point that even an rm -rf won't do it:
each file in annex/objects/ is nested inside a
folder with read-only permissions.

The recommended workaround is to run chmod -R +w when
you're sure you actually want to delete a repo. See
https://git-annex.branchable.com/internals/lockdown

So we edit util.RemoveAll() to do just that, so now
it's `chmod -R +w && rm -rf` instead of just `rm -rf`.
2025-02-08 16:52:13 +01:00
Matthias Riße
2771c2e591 Fix name in package-lock.json
The frontend-checks job started failing because the declared name does
not match the repository name.
2025-02-08 16:52:13 +01:00
Matthias Riße
3c7f598230 Run testing workflow unconditionally 2025-02-08 16:52:13 +01:00
Earl Warren
6ef900899e fix(sec): Forgejo Actions web routes (#6839)
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6839
2025-02-08 06:21:18 +00:00
Earl Warren
a9f0bb9f68 fix(sec): permission check for project issue (#6838)
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6838
2025-02-08 06:20:29 +00:00
Gusted
3b4f1b3469
fix(sec): add tests for private issues on projects
- Add integration and unit tests to ensure that private issues on
projects are not shown in any way, shape or form when the doer has no
access to it.

(cherry picked from commit 55dcc1d06cb12ddb750a0289fbb6e212f93957a8)
2025-02-08 06:06:06 +00:00
Gusted
77fc232e5b
fix(sec): permission check for project issue
- Do an access check when loading issues for a project column, currently
this is not done and exposes the title, labels and existence of a
private issue that the viewer of the project board may not have access
to.
- The number of issues cannot be calculated in a efficient manner
and stored in the database because their number may vary depending on
the visibility of the repositories participating in the project. The
previous implementation used the pre-calculated numbers stored in each
project, which did not reflect that potential variation.
- The code is derived from https://github.com/go-gitea/gitea/pull/22865

(cherry picked from commit 2193afaeb9954a5778f5a47aafd0e6fbbf48d000)
2025-02-08 06:06:03 +00:00
Gusted
5a7d70658d
fix(sec): web route test edit and delete variable
Exhaustively test each combination of deleting and updating a action
action variable via the web route.
2025-02-08 06:04:14 +00:00
Gusted
5046a10aec
fix(sec): add tests for web route delete runner
Exhaustively test each combination of deleting and updating a action
runner via the web route. Although updating an action runner was not
impacted, its good to have a test nonetheless.
2025-02-08 06:04:14 +00:00
Gusted
77db7655e0
fix(sec): web route update and delete runner variables
The web route to update and delete variables of runners did not check if
the ID that was given belonged to the context it was requested in, this
made it possible to update and delete every existing runner variable of
a instance for any authenticated user.

The code has been reworked to always take into account the context of
the request (owner and repository ID).
2025-02-08 06:04:14 +00:00
Gusted
c324910c31
fix(sec): web route delete runner
The web route to delete action runners did not check if the ID that was
given belonged to the context it was requested in, this made it possible
to delete every existing runner of a instance by a authenticated user.

The code was reworked to ensure that the caller of the delete
runner function retrieved the runner by ID and then checks if it belongs
to the context it was requested in, although this is not an optimal
solution it is consistent with the context checking of other code for
runners.
2025-02-08 06:04:14 +00:00
0ko
57ad0b868d [v10.0/forgejo] i18n: update of translations from Codeberg Translate (#6834)
Backport: https://codeberg.org/forgejo/forgejo/pulls/6745

Feel free to leave merge to me. My strategy is to use squash-merge, but copy the description of the actual commit into squash description, so attribution is preserved.

https://codeberg.org/forgejo/forgejo/pulls/6745 was quite large, so I decided it will be ok to backport just one PR before a new release.

<!--start release-notes-assistant-->

## Release notes
<!--URL:https://codeberg.org/forgejo/forgejo-->
- Localization
  - [PR](https://codeberg.org/forgejo/forgejo/pulls/6834): <!--number 6834 --><!--line 0 --><!--description aTE4bjogdXBkYXRlIG9mIHRyYW5zbGF0aW9ucyBmcm9tIENvZGViZXJnIFRyYW5zbGF0ZQ==-->i18n: update of translations from Codeberg Translate<!--description-->
<!--end release-notes-assistant-->

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6834
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: 0ko <0ko@noreply.codeberg.org>
Co-committed-by: 0ko <0ko@noreply.codeberg.org>
2025-02-08 00:01:24 +00:00
forgejo-backport-action
34d2a8531c [v10.0/forgejo] fix(ui): display verified icon for default gpg key (#6833)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6803

## Description
Thank you for this amazing project!

I recently noticed that the icon next to the GPG key reference appears to be incorrect for commits signed by the default GPG key:

| Default GPG Key  | User GPG Key  |
|---------|---------|
| ![image](/attachments/ff27597a-d38c-48fc-8284-e16d4fd3ea2d) | ![image](/attachments/3c8c5540-dd29-45c9-a9f0-dc3b69677ef3) |

Looking into the commit history of the template file, I noticed that Forgejo-signed commits originally had a distinct icon:
[gitea-unlock-cog](b918609acc) --> [octicon-shield-lock](12ddc48c5c) --> octicon-unverified (current)

Since `octicon-unverified` is also used when a commit cannot be verified (.Verification.Warning), I find it misleading for successfully signed commits. This PR changes the icon to the verified variant for better clarity.

### Tests

1. Set up automatic commit signing by Forgejo ([guide](https://forgejo.org/docs/latest/admin/signing/#automatic-signing))
2. Trigger automatic commit signing in any of the following scenarios:
    - Repository Initialisation (should be the easiest)
    - Wiki Changes
    - CRUD actions using the editor or the API
    - Merges from Pull Requests
3. Open the commit signed by Forgejo
4. Verify that the icon next to the GPG key id is `octicon-verified`:
![image](/attachments/7b4eb81c-d33c-4daf-84dd-9f99ebb0b99d)

### Documentation

- [x] I did not document these changes and I do not expect someone else to do it.

### Release notes

- [x] I want the title to show in the release notes with a link to this pull request.

<!--start release-notes-assistant-->

## Release notes
<!--URL:https://codeberg.org/forgejo/forgejo-->
- User Interface bug fixes
  - [PR](https://codeberg.org/forgejo/forgejo/pulls/6803): <!--number 6803 --><!--line 0 --><!--description Zml4KHVpKTogZGlzcGxheSB2ZXJpZmllZCBpY29uIGZvciBkZWZhdWx0IGdwZyBrZXk=-->fix(ui): display verified icon for default gpg key<!--description-->
<!--end release-notes-assistant-->

Co-authored-by: shgew <shgew@noreply.codeberg.org>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6833
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Reviewed-by: Beowulf <beowulf@beocode.eu>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-02-07 13:16:23 +00:00
forgejo-backport-action
d260013a51 [v10.0/forgejo] fix: avoid y-axis clipping for branch name (#6832)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6817

- `gt-ellipsis` is set on elements to avoid overflowing its text contents and in the case of overflowing it would show an ellipsis. To force it to not overflow `overflow: hidden` is set, however this also hides the overflow on the y-axis, `overflow-x: hidden` has the same behavior.
- To avoid avoid the branch name from being clipped, add a very small amount of padding on the y-axis. This is a workaround and not a proper solution. There does not seem a good cross-platform solution available to fix this in a proper way.
- Resolves forgejo/forgejo#6811

Co-authored-by: Gusted <postmaster@gusted.xyz>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6832
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-02-07 10:46:08 +00:00
forgejo-backport-action
3168330425 [v10.0/forgejo] chore(i18n): lint errors (#6809)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6808

settings.hidden_comment_types_description: Rodzaje komentarzy zaznaczone tutaj nie będą wyświetlały się na stronach zgłoszeń. Zaznaczenie "Etykieta" na przykład usunie wszystkie komentarze "<użytkownik> dodał/usunął <etykieta>".
repo.settings.add_web_hook_desc: Zintegruj <a target="_black" rel="noreferrer" href="https://TO-BE-REPLACED.COM">%s</a> ze swoim repozytorium.

Add user & label in Polish.

Co-authored-by: Earl Warren <contact@earl-warren.org>
Co-authored-by: Michael Kriese <michael.kriese@gmx.de>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6809
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-02-06 12:37:53 +00:00
forgejo-backport-action
2491bbfa69 [v10.0/forgejo] ci: fix go version check (#6810)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6646

Allow ci go version to be higher than the tool chain. This will fix the current build issues on forgejo branch

Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6810
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-02-06 08:15:36 +00:00
forgejo-backport-action
ac01c7a384 [v10.0/forgejo] fix: make author search case insenstive (#6783)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6782

- Make the author search in the issues and pull request list case
insenstive.
- Background: Forgejo mandates that all columns are case senstive and
only SQLite ignores this for ASCII characters with the `LIKE` operator
any other database will indeed do case senstive searching. Codeberg
recently made all columns case senstive, hence why this issue now surfaces.
- Added integration test.
- Resolves forgejo/forgejo#6744

Co-authored-by: Gusted <postmaster@gusted.xyz>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6783
Reviewed-by: Beowulf <beowulf@beocode.eu>
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-02-04 17:06:20 +00:00
forgejo-backport-action
b615d41457 [v10.0/forgejo] fix(ui): add triangle down octicon to code search options dropdown (#6770)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6620

This adds the triangle down oction to the code search options dropdown to match the other search option dropdowns (issue, pull).

Co-authored-by: Beowulf <beowulf@beocode.eu>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6770
Reviewed-by: 0ko <0ko@noreply.codeberg.org>
Reviewed-by: Otto <otto@codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-02-03 08:35:41 +00:00
0ko
184bdef340 [v10.0/forgejo] i18n: backport of translation updates 6565 and 6665 (#6764)
Translation updates that are applicable to v10 strings were picked from these commits:
* dac7d5e73b
* 7678386138

Changes to strings that are only present in the v11 branch were not picked.

Below is a list of co-authors of the ported commits. It may contain co-authors who's changes were not picked due to being v11-only.

Co-authored-by: 0ko <0ko@users.noreply.translate.codeberg.org>
Co-authored-by: artnay <artnay@users.noreply.translate.codeberg.org>
Co-authored-by: Atul_Eterno <atul_eterno@users.noreply.translate.codeberg.org>
Co-authored-by: Dirk <dirk@users.noreply.translate.codeberg.org>
Co-authored-by: earl-warren <earl-warren@users.noreply.translate.codeberg.org>
Co-authored-by: Edgarsons <edgarsons@users.noreply.translate.codeberg.org>
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: Fjuro <fjuro@users.noreply.translate.codeberg.org>
Co-authored-by: Gusted <postmaster@gusted.xyz>
Co-authored-by: Ikuyo Mita <searinminecraft@outlook.ph>
Co-authored-by: jedik <jedik@users.noreply.translate.codeberg.org>
Co-authored-by: Juno Takano <jutty@users.noreply.translate.codeberg.org>
Co-authored-by: justbispo <justbispo@users.noreply.translate.codeberg.org>
Co-authored-by: killawabbit <killawabbit@users.noreply.translate.codeberg.org>
Co-authored-by: Kita Ikuyo <searinminecraft@courvix.com>
Co-authored-by: mahlzahn <mahlzahn@posteo.de>
Co-authored-by: Miguel P.L <miguel_pl@users.noreply.translate.codeberg.org>
Co-authored-by: Outbreak2096 <outbreak2096@users.noreply.translate.codeberg.org>
Co-authored-by: Ricky-Tigg <ricky-tigg@users.noreply.translate.codeberg.org>
Co-authored-by: SomeTr <sometr@users.noreply.translate.codeberg.org>
Co-authored-by: tacaly <frederick@tacaly.com>
Co-authored-by: Wuzzy <wuzzy@disroot.org>
Co-authored-by: xtex <xtexchooser@duck.com>

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6764
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
2025-02-02 18:38:07 +00:00
forgejo-backport-action
27276ff26e [v10.0/forgejo] fix: set explore pages to configurable default sort (#6749)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6708

- Currently, the explore/organizations page always defaults to using "newest" as its sort. Instead, use the pre-existing config option (`setting.UI.ExploreDefaultSort`) so server administrators can change the default sort order.

## Checklist

The [contributor guide](https://forgejo.org/docs/next/contributor/) contains information that will be helpful to first time contributors. There also are a few [conditions for merging Pull Requests in Forgejo repositories](https://codeberg.org/forgejo/governance/src/branch/main/PullRequestsAgreement.md). You are also welcome to join the [Forgejo development chatroom](https://matrix.to/#/#forgejo-development:matrix.org).

### Tests

(Sorry, not sure how to add a test for this change)

- I added test coverage for Go changes...
  - [ ] in their respective `*_test.go` for unit tests.
  - [x] in the `tests/integration` directory if it involves interactions with a live Forgejo server.

### Documentation

- [ ] I created a pull request [to the documentation](https://codeberg.org/forgejo/docs) to explain to Forgejo users how to use this change.
- [x] I did not document these changes and I do not expect someone else to do it.

### Release notes

I don't mind either way.

- [ ] I do not want this change to show in the release notes.
- [x] I want the title to show in the release notes with a link to this pull request.
- [ ] I want the content of the `release-notes/<pull request number>.md` to be be used for the release notes instead of the title.

Co-authored-by: John Moon <john.moon@vts-i.com>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6749
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-01-31 11:12:01 +00:00
forgejo-backport-action
1b00bf2d26 [v10.0/forgejo] fix: Remove autofocus on the dashboard repository search box (#6748)
- No longer autofocus on the searchbox for the repository list that is on the dashboard. There is no justification for doing so.
- Fixes #6653
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-01-31 10:40:23 +00:00
forgejo-backport-action
69bc17ea35 [v10.0/forgejo] fix inline file preview for files with encoded URL, fix #5069 (#6739)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6525

### Screenshot
#### Before
See #5069.
#### After
![image](/attachments/d57c2ff8-d29e-41b8-9280-c884ac43f12e)
### Tests

- I added test coverage for Go changes...
  - [x] in their respective `*_test.go` for unit tests.
  - [ ] in the `tests/integration` directory if it involves interactions with a live Forgejo server.
- I added test coverage for JavaScript changes...
  - [ ] in `web_src/js/*.test.js` if it can be unit tested.
  - [ ] in `tests/e2e/*.test.e2e.js` if it requires interactions with a live Forgejo server (see also the [developer guide for JavaScript testing](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/tests/e2e/README.md#end-to-end-tests)).
- Manual testing: see https://codeberg.org/forgejo/forgejo/pulls/6525#issuecomment-2578814. Thanks @earl-warren.

### Documentation

- [ ] I created a pull request [to the documentation](https://codeberg.org/forgejo/docs) to explain to Forgejo users how to use this change.
- [x] I did not document these changes and I do not expect someone else to do it.

### Release notes

- [ ] I do not want this change to show in the release notes.
- [ ] I want the title to show in the release notes with a link to this pull request.
- [ ] I want the content of the `release-notes/<pull request number>.md` to be be used for the release notes instead of the title.

Co-authored-by: Robert Wolff <mahlzahn@posteo.de>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6739
Reviewed-by: Robert Wolff <mahlzahn@posteo.de>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-01-30 11:49:16 +00:00
forgejo-backport-action
0db9a24a4b [v10.0/forgejo] fix: check for webauthn in 2fa user search (#6730)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6726

- Check for webauthn credentials in the user search when the two factor
filter is enabled.
- Resolves forgejo/forgejo#6524

Co-authored-by: Gusted <postmaster@gusted.xyz>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6730
Reviewed-by: Otto <otto@codeberg.org>
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-01-29 19:28:12 +00:00
forgejo-backport-action
4016f2890d [v10.0/forgejo] fix: disallow blame on directories (#6720)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6716

- Don't allow the blame operation on directories.
- Added integration test.
- Resolves forgejo/forgejo#6533

Co-authored-by: Gusted <postmaster@gusted.xyz>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6720
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-01-29 09:34:03 +00:00
forgejo-backport-action
c198cb6e65 [v10.0/forgejo] fix(i18n): add forgotten translatable string (#6718)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6701

- Regression of 75ce1e2ac1

Co-authored-by: Gusted <postmaster@gusted.xyz>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6718
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-01-29 08:28:25 +00:00
forgejo-backport-action
114d8975b5 [v10.0/forgejo] fix: render issue titles consistently (#6717)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6715

- Render the issue titles in dashboard feed in consistent manner, by using the existing `RenderIssueTitle`.
- Added integration tests (not exhaustive for all comment types, but exhaustive enough for the current code where some comment types are grouped together).
- Resolves forgejo/forgejo#6705

Co-authored-by: Gusted <postmaster@gusted.xyz>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6717
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-01-29 08:24:37 +00:00
Michael Kriese
7ee19b4c6c chore: consistent docker image and action references (#6704)
backport of #6703
- replace `code.forgejo.org` ->`data.forgejo.org` on docker images
- add `https://data.forgejo.org/` to actions where missing

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6704
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
Co-committed-by: Michael Kriese <michael.kriese@visualon.de>
2025-01-28 15:46:07 +00:00
Renovate Bot
faa263d54a Update dependency katex to v0.16.21 [SECURITY] (v10.0/forgejo) (#6694)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [katex](https://katex.org) ([source](https://github.com/KaTeX/KaTeX)) | dependencies | patch | [`0.16.18` -> `0.16.21`](https://renovatebot.com/diffs/npm/katex/0.16.18/0.16.21) |

---

> ⚠️ **Warning**
>
> Some dependencies could not be looked up. Check the Dependency Dashboard for more information.

---

### KaTeX \htmlData does not validate attribute names
[CVE-2025-23207](https://nvd.nist.gov/vuln/detail/CVE-2025-23207) / [GHSA-cg87-wmx4-v546](https://github.com/advisories/GHSA-cg87-wmx4-v546)

<details>
<summary>More information</summary>

#### Details
##### Impact
KaTeX users who render untrusted mathematical expressions with `renderToString` could encounter malicious input using `\htmlData` that runs arbitrary JavaScript, or generate invalid HTML.

##### Patches
Upgrade to KaTeX v0.16.21 to remove this vulnerability.

##### Workarounds
- Avoid use of or turn off the `trust` option, or set it to forbid `\htmlData` commands.
- Forbid inputs containing the substring `"\\htmlData"`.
- Sanitize HTML output from KaTeX.

##### Details
`\htmlData` did not validate its attribute name argument, allowing it to generate invalid or malicious HTML that runs scripts.

##### For more information
If you have any questions or comments about this advisory:

- Open an issue or security advisory in the [KaTeX repository](https://github.com/KaTeX/KaTeX/)
- Email us at [katex-security@mit.edu](mailto:katex-security@mit.edu)

#### Severity
- CVSS Score: 6.3 / 10 (Medium)
- Vector String: `CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L`

#### References
- [https://github.com/KaTeX/KaTeX/security/advisories/GHSA-cg87-wmx4-v546](https://github.com/KaTeX/KaTeX/security/advisories/GHSA-cg87-wmx4-v546)
- [https://nvd.nist.gov/vuln/detail/CVE-2025-23207](https://nvd.nist.gov/vuln/detail/CVE-2025-23207)
- [ff289955e8)
- [https://github.com/KaTeX/KaTeX](https://github.com/KaTeX/KaTeX)

This data is provided by [OSV](https://osv.dev/vulnerability/GHSA-cg87-wmx4-v546) and the [GitHub Advisory Database](https://github.com/github/advisory-database) ([CC-BY 4.0](https://github.com/github/advisory-database/blob/main/LICENSE.md)).
</details>

---

### Release Notes

<details>
<summary>KaTeX/KaTeX (katex)</summary>

### [`v0.16.21`](https://github.com/KaTeX/KaTeX/blob/HEAD/CHANGELOG.md#01621-2025-01-17)

[Compare Source](https://github.com/KaTeX/KaTeX/compare/v0.16.20...v0.16.21)

##### Bug Fixes

-   escape \htmlData attribute name ([57914ad](57914ad91e))

### [`v0.16.20`](https://github.com/KaTeX/KaTeX/blob/HEAD/CHANGELOG.md#01620-2025-01-12)

[Compare Source](https://github.com/KaTeX/KaTeX/compare/v0.16.19...v0.16.20)

##### Bug Fixes

-   \providecommand does not overwrite existing macro ([#&#8203;4000](https://github.com/KaTeX/KaTeX/issues/4000)) ([6d30fe4](6d30fe47b0)), closes [#&#8203;3928](https://github.com/KaTeX/KaTeX/issues/3928)

### [`v0.16.19`](https://github.com/KaTeX/KaTeX/blob/HEAD/CHANGELOG.md#01619-2024-12-29)

[Compare Source](https://github.com/KaTeX/KaTeX/compare/v0.16.18...v0.16.19)

##### Bug Fixes

-   **types:** improve `strict` function type ([#&#8203;4009](https://github.com/KaTeX/KaTeX/issues/4009)) ([4228b4e](4228b4eb52))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "" (UTC), Automerge - "* 0-3 * * *" (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xMzYuMCIsInVwZGF0ZWRJblZlciI6IjM5LjEzNi4xIiwidGFyZ2V0QnJhbmNoIjoidjEwLjAvZm9yZ2VqbyIsImxhYmVscyI6WyJkZXBlbmRlbmN5LXVwZ3JhZGUiLCJ0ZXN0L25vdC1uZWVkZWQiXX0=-->

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6694
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-28 11:34:32 +00:00
forgejo-backport-action
0ecf28f37f [v10.0/forgejo] Fix inline file preview for rendered files (#6685)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6572

### What?

This fixes the inline file preview for rendered files (e.g., markdown). [Here, a live issue in v11](https://v11.next.forgejo.org/mahlzahn/test-inline-file-preview/issues/1) and [the same in v7 (with even more bugs)](https://v7.next.forgejo.org/mahlzahn/test-inline-file-preview/issues/1).

It fixes
1. the inline preview for possibly rendered files, when the link is specified with `?display=source`. This happens, e.g., if you are watching a (e.g., markdown) file in source and then want to link some of its lines.
2. the link to the source file inside the inline preview for possible rendered files (currently it links to the rendered version and then the `#L…` cannot point to the correct lines). This is done by always adding `?display=source` to the link.

### Screenshots
<details><summary>

#### Before

</summary>

![image](/attachments/898f82d5-d116-465a-89e2-ed83da189762)

</details>
<details><summary>

#### After

</summary>

![image](/attachments/41058620-47f3-4f6a-b427-66ef33c1a07f)

</details>

### Tests

- I added test coverage for Go changes...
  - [x] in their respective `*_test.go` for unit tests.
  - [ ] in the `tests/integration` directory if it involves interactions with a live Forgejo server.
- I added test coverage for JavaScript changes...
  - [ ] in `web_src/js/*.test.js` if it can be unit tested.
  - [ ] in `tests/e2e/*.test.e2e.js` if it requires interactions with a live Forgejo server (see also the [developer guide for JavaScript testing](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/tests/e2e/README.md#end-to-end-tests)).

I think that this minor edit does not need special tests. Some backend tests have been updated to reflect the addition of URL parameters.

#### Manual testing
- create a repository with a file that can be rendered with couple of lines inside, e.g., a markdown README.md
- go to the source of this file (e.g., `…/src/branch/main/README.md`)
- click on the `<> View Source` button (or add `?display=source` to the URL)
- click on one of the lines, then on the three dots, then on ”Reference in a new issue“
- continue creating the issue

### Documentation

- [ ] I created a pull request [to the documentation](https://codeberg.org/forgejo/docs) to explain to Forgejo users how to use this change.
- [x] I did not document these changes and I do not expect someone else to do it.

### Release notes

- [ ] I do not want this change to show in the release notes.
- [ ] I want the title to show in the release notes with a link to this pull request.
- [ ] I want the content of the `release-notes/<pull request number>.md` to be be used for the release notes instead of the title.

Co-authored-by: Robert Wolff <mahlzahn@posteo.de>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6685
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-01-25 11:38:02 +00:00
forgejo-backport-action
d10034f4d8 [v10.0/forgejo] fix: add non allowed domain translation (#6684)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6677

- Was added in 2559c80bec and accidentally removed in 5a16c9d9c0.
- Reworded for clarity.
- Resolves #6661

Co-authored-by: Gusted <postmaster@gusted.xyz>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6684
Reviewed-by: Otto <otto@codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-01-25 01:15:27 +00:00
forgejo-backport-action
553fc3cc42 [v10.0/forgejo] fix: load settings for valid user and email check (#6678)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6674

- The doctor commands to check the validity of existing usernames and
email addresses depend on functionality that have configurable behavior
depending on the values of the `[service]` settings, so load them when
running the doctor command.
- Resolves #6664
- No unit test due to the architecture of doctor commands.

Co-authored-by: Gusted <postmaster@gusted.xyz>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6678
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-01-24 12:25:00 +00:00
Earl Warren
6d7bf7369d [v10.0/forgejo] chore(security): update security.txt with new expiration date (#6668)
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6668
2025-01-23 17:28:46 +00:00
Earl Warren
eb83b05430 chore(security): update security.txt with new expiration date
Same as https://forgejo.org/.well-known/security.txt

(cherry picked from commit 955f99b6a4)
2025-01-23 16:20:44 +00:00
forgejo-backport-action
61e345cd36 [v10.0/forgejo] fix: teach the doctor about orphaned two_factor rows (#6651)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6639

If a row in the two_factor table references a non existent user, it may contain a secret that has an invalid format. Such an orphaned row is never used and should be removed.

Improve the error message to suggest using the doctor to remove it.

Fixes: https://codeberg.org/forgejo/forgejo/issues/6637

## Testing

- make TAGS='sqlite sqlite_unlock_notify' watch
- make TAGS='sqlite  sqlite_unlock_notify' forgejo
- sqlite3 data/gitea.db 'INSERT INTO two_factor VALUES( 0, 500, "", "", "", "", 0, 0)'
- ./forgejo doctor check --run check-db-consistency
  ```
   [1] Check consistency of database
    - [W] Found 1 Orphaned TwoFactor without existing User
   OK

   All done (checks: 1).
   ```
-  ./forgejo doctor check --run check-db-consistency --fix
   ```
   [1] Check consistency of database
    - [I] Deleted 1 Orphaned TwoFactor without existing User
   OK

   All done (checks: 1).
   ```

## Checklist

The [contributor guide](https://forgejo.org/docs/next/contributor/) contains information that will be helpful to first time contributors. There also are a few [conditions for merging Pull Requests in Forgejo repositories](https://codeberg.org/forgejo/governance/src/branch/main/PullRequestsAgreement.md). You are also welcome to join the [Forgejo development chatroom](https://matrix.to/#/#forgejo-development:matrix.org).

### Tests

- I added test coverage for Go changes...
  - [ ] in their respective `*_test.go` for unit tests.
  - [x] in the `tests/integration` directory if it involves interactions with a live Forgejo server.
- I added test coverage for JavaScript changes...
  - [ ] in `web_src/js/*.test.js` if it can be unit tested.
  - [ ] in `tests/e2e/*.test.e2e.js` if it requires interactions with a live Forgejo server (see also the [developer guide for JavaScript testing](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/tests/e2e/README.md#end-to-end-tests)).

### Documentation

- [ ] I created a pull request [to the documentation](https://codeberg.org/forgejo/docs) to explain to Forgejo users how to use this change.
- [x] I did not document these changes and I do not expect someone else to do it.

### Release notes

- [ ] I do not want this change to show in the release notes.
- [x] I want the title to show in the release notes with a link to this pull request.
- [ ] I want the content of the `release-notes/<pull request number>.md` to be be used for the release notes instead of the title.

<!--start release-notes-assistant-->

## Release notes
<!--URL:https://codeberg.org/forgejo/forgejo-->
- Bug fixes
  - [PR](https://codeberg.org/forgejo/forgejo/pulls/6651): <!--number 6651 --><!--line 0 --><!--description Zml4OiB0ZWFjaCB0aGUgZG9jdG9yIGFib3V0IG9ycGhhbmVkIHR3b19mYWN0b3Igcm93cw==-->fix: teach the doctor about orphaned two_factor rows<!--description-->
<!--end release-notes-assistant-->

Co-authored-by: Earl Warren <contact@earl-warren.org>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6651
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-01-22 07:47:34 +00:00
forgejo-backport-action
5c5e1c87ba [v10.0/forgejo] fix: listing tokens must not require basic auth (#6643)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6633

When the change is reverted, the test fails as follows:

```sh
=== TestAPIGetTokens (tests/integration/api_token_test.go:34)
--- FAIL: TestAPIGetTokens (0.17s)
    testlogger.go:405: 2025/01/20 14:05:22 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /home/earl-warren/software/forgejo/tests/gitea-lfs-meta
    testlogger.go:405: 2025/01/20 14:05:22 ...eb/routing/logger.go:102:func1() [I] router: completed GET /api/v1/users/user2/tokens for test-mock:12345, 200 OK in 2.5ms @ user/app.go:24(user.ListAccessTokens)
    testlogger.go:405: 2025/01/20 14:05:22 ...eb/routing/logger.go:102:func1() [I] router: completed POST /api/v1/users/user1/tokens for test-mock:12345, 201 Created in 4.7ms @ user/app.go:75(user.CreateAccessToken)
    testlogger.go:405: 2025/01/20 14:05:22 ...eb/routing/logger.go:102:func1() [I] router: completed GET /api/v1/users/user2/tokens for test-mock:12345, 401 Unauthorized in 4.9ms @ v1/api.go:413(v1.Routes.func2.5.1.reqBasicOrRevProxyAuth.6)
    api_token_test.go:46:
        	Error Trace:	/home/earl-warren/software/forgejo/tests/integration/integration_test.go:556
        	            				/home/earl-warren/software/forgejo/tests/integration/api_token_test.go:46
        	Error:      	Not equal:
        	            	expected: 200
        	            	actual  : 401
        	Test:       	TestAPIGetTokens
        	Messages:   	Request: GET /api/v1/users/user2/tokens
    api_token_test.go:46: Response:  {"message":"auth required","url":"http://localhost:3003/api/swagger"}

    testlogger.go:405: 2025/01/20 14:05:22 ...eb/routing/logger.go:102:func1() [I] router: completed DELETE /api/v1/users/user1/tokens/94 for test-mock:12345, 204 No Content in 1.4ms @ user/app.go:145(user.DeleteAccessToken)
```

## Checklist

The [contributor guide](https://forgejo.org/docs/next/contributor/) contains information that will be helpful to first time contributors. There also are a few [conditions for merging Pull Requests in Forgejo repositories](https://codeberg.org/forgejo/governance/src/branch/main/PullRequestsAgreement.md). You are also welcome to join the [Forgejo development chatroom](https://matrix.to/#/#forgejo-development:matrix.org).

### Tests

- I added test coverage for Go changes...
  - [ ] in their respective `*_test.go` for unit tests.
  - [x] in the `tests/integration` directory if it involves interactions with a live Forgejo server.
- I added test coverage for JavaScript changes...
  - [ ] in `web_src/js/*.test.js` if it can be unit tested.
  - [ ] in `tests/e2e/*.test.e2e.js` if it requires interactions with a live Forgejo server (see also the [developer guide for JavaScript testing](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/tests/e2e/README.md#end-to-end-tests)).

### Documentation

- [ ] I created a pull request [to the documentation](https://codeberg.org/forgejo/docs) to explain to Forgejo users how to use this change.
- [x] I did not document these changes and I do not expect someone else to do it.

### Release notes

- [x] I do not want this change to show in the release notes.
- [ ] I want the title to show in the release notes with a link to this pull request.
- [ ] I want the content of the `release-notes/<pull request number>.md` to be be used for the release notes instead of the title.

<!--start release-notes-assistant-->

## Release notes
<!--URL:https://codeberg.org/forgejo/forgejo-->
- Bug fixes
  - [PR](https://codeberg.org/forgejo/forgejo/pulls/6633): <!--number 6633 --><!--line 0 --><!--description bGlzdGluZyB0b2tlbnMgbXVzdCBub3QgcmVxdWlyZSBiYXNpYyBhdXRo-->listing tokens must not require basic auth<!--description-->
<!--end release-notes-assistant-->

Co-authored-by: Earl Warren <contact@earl-warren.org>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6643
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-01-21 10:40:00 +00:00
Renovate Bot
7546c4acf3 Update dependency go to v1.23.5 (v10.0/forgejo) (#6644)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [go](https://go.dev/) ([source](https://github.com/golang/go)) | toolchain | patch | `1.23.4` -> `1.23.5` |

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - "* 0-3 * * *" (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xMDYuMCIsInVwZGF0ZWRJblZlciI6IjM5LjEwNi4wIiwidGFyZ2V0QnJhbmNoIjoidjEwLjAvZm9yZ2VqbyIsImxhYmVscyI6WyJkZXBlbmRlbmN5LXVwZ3JhZGUiLCJ0ZXN0L25vdC1uZWVkZWQiXX0=-->

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6644
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-21 09:32:40 +00:00
Otto
25e81d05f0 [v10.0/forgejo] Fix mention and emoji expansion & Improve leaving list completion (#6632)
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6632
Reviewed-by: Beowulf <beowulf@beocode.eu>
2025-01-20 20:34:31 +00:00
forgejo-backport-action
054537989f [v10.0/forgejo] fix(ui): prevent overflow of branch selector in commit graph (#6636)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6617

Fix that the branch selector in the commit graph can overflow

| Previous | Now |
| :----: | :----: |
| ![grafik](/attachments/ab303490-2abc-46d8-8715-0750886fd111) | ![grafik](/attachments/63f919a9-bcc2-4969-8c8c-d265c1917e07) |
| ![grafik](/attachments/c0e6636f-52eb-4bf0-bf07-0139ec407e33) | ![grafik](/attachments/752aef87-9250-4bf6-b74a-5a1813394dbe) |
| ![grafik](/attachments/e61842dd-29c1-4517-86db-f068de9ff6e8) | ![grafik](/attachments/bf251b43-80fa-4e1a-9fbe-fd27e5f8d195) |

Fixes #6615

Co-authored-by: Beowulf <beowulf@beocode.eu>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6636
Reviewed-by: Otto <otto@codeberg.org>
Reviewed-by: Beowulf <beowulf@beocode.eu>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-01-20 20:28:39 +00:00
Beowulf
348e0e1fac Leave list/quote expanison with double enter
When editing a list or similar syntax elements, pressing enter starts a
new line with the line introducer (e.g. `- ` for a plain list).
But currently it's uncomfortable when someone wants to leave the list.
Pressing enter again simply adds more and more lines with the prefix.

With this change the list is terminated if enter is pressed on a line
which contains the introducer but nothing else. This behavior is known
from other markdown editors like the on used by GitLab or GitHub.

Additionally I changed the regex for detecting a prefix.
- Why: With the change you can add a single whitespace at the end if you
  want to keep an "empty" line. So if you want to write:
  ```
  - First
  -
  - Third
  ```
  You just need to add a whitespace in the second line to prevent that
  the prefix will be removed.
- Changes in detail:
  - ordered bullet list prefix detection:
    nothing changed
  - todo list and unordered list prefix detection:
    have been split up:
    - todo list: Changed that only 1 to 4 whitespaces can be between the
      list char (`-`,`*`,`+`) and the checkbox (`[ ]`,`[x]`) - Why? If
      more then 4 spaces are between the list char and the checkbox,
      this is no longer detected as a prefix for a todo item based on
      the markdown standard. Due to the amount of spaces it is instead
      parsed as code.
    - unordered list: The prefix now needs to have exactly one space
      after the list char (`-`,`*`,`+`). More spaces will not be taken
      into account for detecting the prefix.
  - quote prefix detection:
    nothing changed

The current e2e-tests where simplified and duplicated tests where
removed. Test cases for the new functionality where added.

(cherry picked from commit 7ea62c5ce4)
2025-01-20 12:52:20 +00:00
Beowulf
627634a76e Prevent prefix continuation if currently a text expander popup is open
This fixes that mentions and emoji autocompletion was broken in e.g. a
list, because the list handling take presidency over the text expansion.

(cherry picked from commit 276ef10dd5)
2025-01-20 12:52:20 +00:00
forgejo-backport-action
28db11f2e7 [v10.0/forgejo] fix(ui): hide git note add button for commit if commit already has a note (#6614)
Backport: https://codeberg.org/forgejo/forgejo/pulls/6613

Regression from f5c0570533

Co-authored-by: Beowulf <beowulf@beocode.eu>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6614
Reviewed-by: Beowulf <beowulf@beocode.eu>
Reviewed-by: 0ko <0ko@noreply.codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-01-18 19:43:08 +00:00
forgejo-backport-action
6d0bf55f05 [v10.0/forgejo] fix: Reset content of comment edit field on cancel (#6601)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6595

Currently, the content of the text field is not reset when you cancel editing. This change resets the content of the text field when editing is canceled.

If this is not done and you click on cancel and then on edit again, you can no longer return to the initial content without completely reloading the page.

Co-authored-by: Beowulf <beowulf@beocode.eu>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6601
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Reviewed-by: Beowulf <beowulf@beocode.eu>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-01-17 20:48:35 +00:00
forgejo-backport-action
2d1e163913 [v10.0/forgejo] fix: reduce noise for the v303 migration (#6594)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6591

Using SELECT `%s` FROM `%s` WHERE 0 = 1 to assert the existence of a column is simple but noisy: it shows errors in the migrations that are confusing for Forgejo admins because they are not actual errors.

Use introspection instead, which is more complicated but leads to the same result.

Add a test that ensures it works as expected, for all database types. Although the migration is run for all database types, it does not account for various scenarios and is never tested in the case a column does not exist.

Refs: https://codeberg.org/forgejo/forgejo/issues/6583

Co-authored-by: Earl Warren <contact@earl-warren.org>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6594
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-01-17 08:15:16 +00:00
forgejo-backport-action
26b7c6b86a [v10.0/forgejo] tests(e2e): Various fixes to visual testing (#6587)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6569

Co-authored-by: Otto Richter <git@otto.splvs.net>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6587
Reviewed-by: Otto <otto@codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-01-17 01:07:22 +00:00
forgejo-backport-action
05056b8aa2 [v10.0/forgejo] Refactor e2e tests to simplify authentication setup (#6585)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6400

Replaced manual login and context loading across tests with Playwright's `test.use` configuration for user authentication. This simplifies test setup, improves readability, and reduces repetition.

#6362 first part

## Checklist

The [contributor guide](https://forgejo.org/docs/next/contributor/) contains information that will be helpful to first time contributors. There also are a few [conditions for merging Pull Requests in Forgejo repositories](https://codeberg.org/forgejo/governance/src/branch/main/PullRequestsAgreement.md). You are also welcome to join the [Forgejo development chatroom](https://matrix.to/#/#forgejo-development:matrix.org).

### Tests

- I added test coverage for Go changes...
  - [ ] in their respective `*_test.go` for unit tests.
  - [ ] in the `tests/integration` directory if it involves interactions with a live Forgejo server.
- I added test coverage for JavaScript changes...
  - [ ] in `web_src/js/*.test.js` if it can be unit tested.
  - [ ] in `tests/e2e/*.test.e2e.js` if it requires interactions with a live Forgejo server (see also the [developer guide for JavaScript testing](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/tests/e2e/README.md#end-to-end-tests)).

### Documentation

- [x] I created a pull request [to the documentation](https://codeberg.org/forgejo/docs) to explain to Forgejo users how to use this change.
- [ ] I did not document these changes and I do not expect someone else to do it.

### Release notes

- [x] I do not want this change to show in the release notes.
- [ ] I want the title to show in the release notes with a link to this pull request.
- [ ] I want the content of the `release-notes/<pull request number>.md` to be be used for the release notes instead of the title.

Co-authored-by: Julian Schlarb <julian.schlarb@denktmit.de>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6585
Reviewed-by: Otto <otto@codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-01-16 13:37:06 +00:00
196 changed files with 8024 additions and 1200 deletions

View file

@ -13,6 +13,8 @@ runs:
run: | run: |
export DEBIAN_FRONTEND=noninteractive export DEBIAN_FRONTEND=noninteractive
echo "deb http://deb.debian.org/debian/ ${RELEASE} main" > "/etc/apt/sources.list.d/${RELEASE}.list" echo "deb http://deb.debian.org/debian/ ${RELEASE} main" > "/etc/apt/sources.list.d/${RELEASE}.list"
wget -O- http://neuro.debian.net/lists/bookworm.de-fzj.libre | tee /etc/apt/sources.list.d/neurodebian.sources.list
apt-key adv --recv-keys --keyserver hkps://keyserver.ubuntu.com 0xA5D32F012649A5A9
env: env:
RELEASE: ${{inputs.release}} RELEASE: ${{inputs.release}}
- name: install packages - name: install packages
@ -24,6 +26,7 @@ runs:
- name: remove temporary package list to prevent using it in other steps - name: remove temporary package list to prevent using it in other steps
run: | run: |
rm "/etc/apt/sources.list.d/${RELEASE}.list" rm "/etc/apt/sources.list.d/${RELEASE}.list"
rm "/etc/apt/sources.list.d/neurodebian.sources.list"
apt-get update -qq apt-get update -qq
env: env:
RELEASE: ${{inputs.release}} RELEASE: ${{inputs.release}}

View file

@ -3,7 +3,7 @@ runs:
steps: steps:
- run: | - run: |
su forgejo -c 'make deps-backend' su forgejo -c 'make deps-backend'
- uses: actions/cache@v4 - uses: https://data.forgejo.org/actions/cache@v4
id: cache-backend id: cache-backend
with: with:
path: ${{github.workspace}}/gitea path: ${{github.workspace}}/gitea

View file

@ -48,7 +48,7 @@ runs:
- name: "Restore Go dependencies from cache or mark for later caching" - name: "Restore Go dependencies from cache or mark for later caching"
id: cache-deps id: cache-deps
uses: actions/cache@v4 uses: https://data.forgejo.org/actions/cache@v4
with: with:
key: setup-cache-go-deps-${{ runner.os }}-${{ inputs.username }}-${{ steps.go-version.outputs.go_version }}-${{ hashFiles('go.sum', 'go.mod') }} key: setup-cache-go-deps-${{ runner.os }}-${{ inputs.username }}-${{ steps.go-version.outputs.go_version }}-${{ hashFiles('go.sum', 'go.mod') }}
restore-keys: | restore-keys: |

View file

@ -19,7 +19,7 @@ runs:
set -ex set -ex
toolchain=$(grep -oP '(?<=toolchain ).+' go.mod) toolchain=$(grep -oP '(?<=toolchain ).+' go.mod)
version=$(go version | cut -d' ' -f3) version=$(go version | cut -d' ' -f3)
if [ "$toolchain" != "$version" ]; then if dpkg --compare-versions ${version#go} lt ${toolchain#go}; then
echo "go version mismatch: $toolchain <> $version" echo "go version too low: $toolchain >= $version"
exit 1 exit 1
fi fi

View file

@ -0,0 +1,41 @@
on:
push:
branches:
- 'forgejo'
tags:
- '*-git-annex*'
jobs:
build-oci-image:
runs-on: docker
strategy:
matrix:
type: ["rootful", "rootless"]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # fetch the full history so that the Forgejo version is determined properly
- name: Determine registry and username
id: determine-registry-and-username
run: |
echo "registry=${GITHUB_SERVER_URL#https://}" >> "$GITHUB_OUTPUT"
echo "username=${GITHUB_REPOSITORY%/*}" >> "$GITHUB_OUTPUT"
- name: Install Docker
run: curl -fsSL https://get.docker.com | sh
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
registry: ${{ steps.determine-registry-and-username.outputs.registry }}
username: ${{ steps.determine-registry-and-username.outputs.username }}
password: ${{ secrets.REGISTRY_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v6
with:
context: .
file: ${{ (matrix.type == 'rootful' && 'Dockerfile') || (matrix.type == 'rootless' && 'Dockerfile.rootless') }}
push: true
tags: ${{ steps.determine-registry-and-username.outputs.registry }}/${{ github.repository }}:${{ github.ref_name }}${{ (matrix.type == 'rootful' && ' ') || (matrix.type == 'rootless' && '-rootless') }}

View file

@ -25,7 +25,7 @@ jobs:
if: vars.ROLE == 'forgejo-coding' if: vars.ROLE == 'forgejo-coding'
runs-on: lxc-bookworm runs-on: lxc-bookworm
steps: steps:
- uses: actions/checkout@v4 - uses: https://data.forgejo.org/actions/checkout@v4
- id: forgejo - id: forgejo
uses: https://data.forgejo.org/actions/setup-forgejo@v2.0.4 uses: https://data.forgejo.org/actions/setup-forgejo@v2.0.4

View file

@ -33,7 +33,7 @@ jobs:
# root is used for testing, allow it # root is used for testing, allow it
if: vars.ROLE == 'forgejo-integration' || github.repository_owner == 'root' if: vars.ROLE == 'forgejo-integration' || github.repository_owner == 'root'
steps: steps:
- uses: actions/checkout@v4 - uses: https://data.forgejo.org/actions/checkout@v4
with: with:
fetch-depth: 0 fetch-depth: 0

View file

@ -37,11 +37,11 @@ jobs:
container: container:
image: data.forgejo.org/oci/node:20-bookworm image: data.forgejo.org/oci/node:20-bookworm
steps: steps:
- uses: actions/checkout@v4 - uses: https://data.forgejo.org/actions/checkout@v4
with: with:
fetch-depth: '0' fetch-depth: '0'
show-progress: 'false' show-progress: 'false'
- uses: https://code.forgejo.org/actions/cascading-pr@v2.2.0 - uses: https://data.forgejo.org/actions/cascading-pr@v2.2.0
with: with:
origin-url: ${{ env.GITHUB_SERVER_URL }} origin-url: ${{ env.GITHUB_SERVER_URL }}
origin-repo: ${{ github.repository }} origin-repo: ${{ github.repository }}

View file

@ -39,7 +39,7 @@ jobs:
runs-on: lxc-bookworm runs-on: lxc-bookworm
if: vars.DOER != '' && vars.FORGEJO != '' && vars.TO_OWNER != '' && vars.FROM_OWNER != '' && secrets.TOKEN != '' if: vars.DOER != '' && vars.FORGEJO != '' && vars.TO_OWNER != '' && vars.FROM_OWNER != '' && secrets.TOKEN != ''
steps: steps:
- uses: actions/checkout@v4 - uses: https://data.forgejo.org/actions/checkout@v4
- name: copy & sign - name: copy & sign
uses: https://data.forgejo.org/forgejo/forgejo-build-publish/publish@v5.3.1 uses: https://data.forgejo.org/forgejo/forgejo-build-publish/publish@v5.3.1

View file

@ -10,7 +10,6 @@ on:
jobs: jobs:
backend-checks: backend-checks:
if: vars.ROLE == 'forgejo-coding' || vars.ROLE == 'forgejo-testing'
runs-on: docker runs-on: docker
container: container:
image: 'data.forgejo.org/oci/node:20-bookworm' image: 'data.forgejo.org/oci/node:20-bookworm'
@ -27,7 +26,6 @@ jobs:
- run: su forgejo -c 'make --always-make -j$(nproc) lint-backend tidy-check swagger-check fmt-check swagger-validate' # ensure the "go-licenses" make target runs - run: su forgejo -c 'make --always-make -j$(nproc) lint-backend tidy-check swagger-check fmt-check swagger-validate' # ensure the "go-licenses" make target runs
- uses: ./.forgejo/workflows-composite/build-backend - uses: ./.forgejo/workflows-composite/build-backend
frontend-checks: frontend-checks:
if: vars.ROLE == 'forgejo-coding' || vars.ROLE == 'forgejo-testing'
runs-on: docker runs-on: docker
container: container:
image: 'data.forgejo.org/oci/node:20-bookworm' image: 'data.forgejo.org/oci/node:20-bookworm'
@ -46,7 +44,7 @@ jobs:
apt-get update -qq apt-get update -qq
apt-get -q install -qq -y zstd apt-get -q install -qq -y zstd
- name: "Cache frontend build for playwright testing" - name: "Cache frontend build for playwright testing"
uses: actions/cache/save@v4 uses: https://data.forgejo.org/actions/cache/save@v4
with: with:
path: ${{github.workspace}}/public/assets path: ${{github.workspace}}/public/assets
key: frontend-build-${{ github.sha }} key: frontend-build-${{ github.sha }}
@ -104,7 +102,7 @@ jobs:
fetch-depth: 20 fetch-depth: 20
- uses: ./.forgejo/workflows-composite/setup-env - uses: ./.forgejo/workflows-composite/setup-env
- name: "Restore frontend build" - name: "Restore frontend build"
uses: actions/cache/restore@v4 uses: https://data.forgejo.org/actions/cache/restore@v4
id: cache-frontend id: cache-frontend
with: with:
path: ${{github.workspace}}/public/assets path: ${{github.workspace}}/public/assets
@ -176,7 +174,6 @@ jobs:
TAGS: bindata TAGS: bindata
TEST_REDIS_SERVER: cacher:${{ matrix.cacher.port }} TEST_REDIS_SERVER: cacher:${{ matrix.cacher.port }}
test-mysql: test-mysql:
if: vars.ROLE == 'forgejo-coding' || vars.ROLE == 'forgejo-testing'
runs-on: docker runs-on: docker
needs: [backend-checks, frontend-checks] needs: [backend-checks, frontend-checks]
container: container:
@ -199,15 +196,13 @@ jobs:
- name: install dependencies & git >= 2.42 - name: install dependencies & git >= 2.42
uses: ./.forgejo/workflows-composite/apt-install-from uses: ./.forgejo/workflows-composite/apt-install-from
with: with:
packages: git git-lfs packages: git git-annex-standalone git-lfs
- uses: ./.forgejo/workflows-composite/build-backend - uses: ./.forgejo/workflows-composite/build-backend
- run: | - run: |
su forgejo -c 'make test-mysql-migration test-mysql' su forgejo -c 'make test-mysql-migration test-mysql'
timeout-minutes: 120
env: env:
USE_REPO_TEST_DIR: 1 USE_REPO_TEST_DIR: 1
test-pgsql: test-pgsql:
if: vars.ROLE == 'forgejo-coding' || vars.ROLE == 'forgejo-testing'
runs-on: docker runs-on: docker
needs: [backend-checks, frontend-checks] needs: [backend-checks, frontend-checks]
container: container:
@ -236,17 +231,15 @@ jobs:
- name: install dependencies & git >= 2.42 - name: install dependencies & git >= 2.42
uses: ./.forgejo/workflows-composite/apt-install-from uses: ./.forgejo/workflows-composite/apt-install-from
with: with:
packages: git git-lfs packages: git git-annex-standalone git-lfs
- uses: ./.forgejo/workflows-composite/build-backend - uses: ./.forgejo/workflows-composite/build-backend
- run: | - run: |
su forgejo -c 'make test-pgsql-migration test-pgsql' su forgejo -c 'make test-pgsql-migration test-pgsql'
timeout-minutes: 120
env: env:
RACE_ENABLED: true RACE_ENABLED: true
USE_REPO_TEST_DIR: 1 USE_REPO_TEST_DIR: 1
TEST_LDAP: 1 TEST_LDAP: 1
test-sqlite: test-sqlite:
if: vars.ROLE == 'forgejo-coding' || vars.ROLE == 'forgejo-testing'
runs-on: docker runs-on: docker
needs: [backend-checks, frontend-checks] needs: [backend-checks, frontend-checks]
container: container:
@ -258,25 +251,21 @@ jobs:
- name: install dependencies & git >= 2.42 - name: install dependencies & git >= 2.42
uses: ./.forgejo/workflows-composite/apt-install-from uses: ./.forgejo/workflows-composite/apt-install-from
with: with:
packages: git git-lfs packages: git git-annex-standalone git-lfs
- uses: ./.forgejo/workflows-composite/build-backend - uses: ./.forgejo/workflows-composite/build-backend
- run: | - run: |
su forgejo -c 'make test-sqlite-migration test-sqlite' su forgejo -c 'make test-sqlite-migration test-sqlite'
timeout-minutes: 120
env: env:
TAGS: sqlite sqlite_unlock_notify TAGS: sqlite sqlite_unlock_notify
RACE_ENABLED: true RACE_ENABLED: true
TEST_TAGS: sqlite sqlite_unlock_notify TEST_TAGS: sqlite sqlite_unlock_notify
USE_REPO_TEST_DIR: 1 USE_REPO_TEST_DIR: 1
security-check: security-check:
if: vars.ROLE == 'forgejo-coding' || vars.ROLE == 'forgejo-testing'
runs-on: docker runs-on: docker
needs: needs:
- test-sqlite - test-sqlite
- test-pgsql - test-pgsql
- test-mysql - test-mysql
- test-remote-cacher
- test-unit
container: container:
image: 'data.forgejo.org/oci/node:20-bookworm' image: 'data.forgejo.org/oci/node:20-bookworm'
options: --tmpfs /tmp:exec,noatime options: --tmpfs /tmp:exec,noatime

1
.gitignore vendored
View file

@ -72,6 +72,7 @@ cpu.out
/tests/e2e/reports /tests/e2e/reports
/tests/e2e/test-artifacts /tests/e2e/test-artifacts
/tests/e2e/test-snapshots /tests/e2e/test-snapshots
/tests/e2e/.auth
/tests/*.ini /tests/*.ini
/tests/**/*.git/**/*.sample /tests/**/*.git/**/*.sample
/node_modules /node_modules

View file

@ -1,6 +1,6 @@
FROM --platform=$BUILDPLATFORM code.forgejo.org/oci/xx AS xx FROM --platform=$BUILDPLATFORM data.forgejo.org/oci/xx AS xx
FROM --platform=$BUILDPLATFORM code.forgejo.org/oci/golang:1.23-alpine3.20 as build-env FROM --platform=$BUILDPLATFORM data.forgejo.org/oci/golang:1.23-alpine3.20 as build-env
ARG GOPROXY ARG GOPROXY
ENV GOPROXY=${GOPROXY:-direct} ENV GOPROXY=${GOPROXY:-direct}
@ -51,7 +51,7 @@ RUN chmod 755 /tmp/local/usr/bin/entrypoint \
/go/src/code.gitea.io/gitea/environment-to-ini /go/src/code.gitea.io/gitea/environment-to-ini
RUN chmod 644 /go/src/code.gitea.io/gitea/contrib/autocompletion/bash_autocomplete RUN chmod 644 /go/src/code.gitea.io/gitea/contrib/autocompletion/bash_autocomplete
FROM code.forgejo.org/oci/alpine:3.20 FROM data.forgejo.org/oci/alpine:3.20
ARG RELEASE_VERSION ARG RELEASE_VERSION
LABEL maintainer="contact@forgejo.org" \ LABEL maintainer="contact@forgejo.org" \
org.opencontainers.image.authors="Forgejo" \ org.opencontainers.image.authors="Forgejo" \
@ -78,6 +78,7 @@ RUN apk --no-cache add \
sqlite \ sqlite \
su-exec \ su-exec \
gnupg \ gnupg \
git-annex \
&& rm -rf /var/cache/apk/* && rm -rf /var/cache/apk/*
RUN addgroup \ RUN addgroup \

View file

@ -1,6 +1,6 @@
FROM --platform=$BUILDPLATFORM code.forgejo.org/oci/xx AS xx FROM --platform=$BUILDPLATFORM data.forgejo.org/oci/xx AS xx
FROM --platform=$BUILDPLATFORM code.forgejo.org/oci/golang:1.23-alpine3.20 as build-env FROM --platform=$BUILDPLATFORM data.forgejo.org/oci/golang:1.23-alpine3.20 as build-env
ARG GOPROXY ARG GOPROXY
ENV GOPROXY=${GOPROXY:-direct} ENV GOPROXY=${GOPROXY:-direct}
@ -49,7 +49,7 @@ RUN chmod 755 /tmp/local/usr/local/bin/docker-entrypoint.sh \
/go/src/code.gitea.io/gitea/environment-to-ini /go/src/code.gitea.io/gitea/environment-to-ini
RUN chmod 644 /go/src/code.gitea.io/gitea/contrib/autocompletion/bash_autocomplete RUN chmod 644 /go/src/code.gitea.io/gitea/contrib/autocompletion/bash_autocomplete
FROM code.forgejo.org/oci/alpine:3.20 FROM data.forgejo.org/oci/alpine:3.20
LABEL maintainer="contact@forgejo.org" \ LABEL maintainer="contact@forgejo.org" \
org.opencontainers.image.authors="Forgejo" \ org.opencontainers.image.authors="Forgejo" \
org.opencontainers.image.url="https://forgejo.org" \ org.opencontainers.image.url="https://forgejo.org" \
@ -71,6 +71,7 @@ RUN apk --no-cache add \
git \ git \
curl \ curl \
gnupg \ gnupg \
git-annex \
&& rm -rf /var/cache/apk/* && rm -rf /var/cache/apk/*
RUN addgroup \ RUN addgroup \

View file

@ -8,7 +8,7 @@ self := $(location)
@tmpdir=`mktemp --tmpdir -d` ; \ @tmpdir=`mktemp --tmpdir -d` ; \
echo Using temporary directory $$tmpdir for test repositories ; \ echo Using temporary directory $$tmpdir for test repositories ; \
USE_REPO_TEST_DIR= $(MAKE) -f $(self) --no-print-directory REPO_TEST_DIR=$$tmpdir/ $@ ; \ USE_REPO_TEST_DIR= $(MAKE) -f $(self) --no-print-directory REPO_TEST_DIR=$$tmpdir/ $@ ; \
STATUS=$$? ; rm -r "$$tmpdir" ; exit $$STATUS STATUS=$$? ; chmod -R +w "$$tmpdir" && rm -r "$$tmpdir" ; exit $$STATUS
else else
@ -104,7 +104,7 @@ else
FORGEJO_VERSION_API ?= $(GITEA_VERSION)+${GITEA_COMPATIBILITY} FORGEJO_VERSION_API ?= $(GITEA_VERSION)+${GITEA_COMPATIBILITY}
else else
# drop the "g" prefix prepended by git describe to the commit hash # drop the "g" prefix prepended by git describe to the commit hash
FORGEJO_VERSION ?= $(shell git describe --exclude '*-test' --tags --always | sed 's/^v//' | sed 's/\-g/-/')+${GITEA_COMPATIBILITY} FORGEJO_VERSION ?= $(shell git describe --exclude '*-test' --tags --always | sed 's/^v//' | sed 's/\-g/-/2')+${GITEA_COMPATIBILITY}
endif endif
endif endif
FORGEJO_VERSION_MAJOR=$(shell echo $(FORGEJO_VERSION) | sed -e 's/\..*//') FORGEJO_VERSION_MAJOR=$(shell echo $(FORGEJO_VERSION) | sed -e 's/\..*//')

View file

@ -59,9 +59,9 @@ func initRemoveTags() {
oldnew := []string{} oldnew := []string{}
for _, el := range []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", "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", "bruger", "user", "utente", "lietotājs", "gebruiker", "usuário", "Benutzer", "Bruker", "bruger", "użytkownik",
"server", "servidor", "kiszolgáló", "serveris", "server", "servidor", "kiszolgáló", "serveris",
"label", "etichetta", "etiķete", "rótulo", "Label", "utilizador", "etiket", "iezīme", "label", "etichetta", "etiķete", "rótulo", "Label", "utilizador", "etiket", "iezīme", "etykieta",
} { } {
oldnew = append(oldnew, "<"+el+">", "REPLACED-TAG") oldnew = append(oldnew, "<"+el+">", "REPLACED-TAG")
} }

View file

@ -38,6 +38,7 @@ import (
const ( const (
lfsAuthenticateVerb = "git-lfs-authenticate" lfsAuthenticateVerb = "git-lfs-authenticate"
gitAnnexShellVerb = "git-annex-shell"
) )
// CmdServ represents the available serv sub-command. // CmdServ represents the available serv sub-command.
@ -79,6 +80,7 @@ var (
"git-upload-archive": perm.AccessModeRead, "git-upload-archive": perm.AccessModeRead,
"git-receive-pack": perm.AccessModeWrite, "git-receive-pack": perm.AccessModeWrite,
lfsAuthenticateVerb: perm.AccessModeNone, lfsAuthenticateVerb: perm.AccessModeNone,
gitAnnexShellVerb: perm.AccessModeNone, // annex permissions are enforced by GIT_ANNEX_SHELL_READONLY, rather than the Gitea API
} }
alphaDashDotPattern = regexp.MustCompile(`[^\w-\.]`) alphaDashDotPattern = regexp.MustCompile(`[^\w-\.]`)
) )
@ -212,6 +214,28 @@ func runServ(c *cli.Context) error {
} }
} }
if verb == gitAnnexShellVerb {
if !setting.Annex.Enabled {
return fail(ctx, "Unknown git command", "git-annex request over SSH denied, git-annex support is disabled")
}
if len(words) < 3 {
return fail(ctx, "Too few arguments", "Too few arguments in cmd: %s", cmd)
}
// git-annex always puts the repo in words[2], unlike most other
// git subcommands; and it sometimes names repos like /~/, as if
// $HOME should get expanded while also being rooted. e.g.:
// git-annex-shell 'configlist' '/~/user/repo'
// git-annex-shell 'sendkey' '/user/repo 'key'
repoPath = words[2]
repoPath = strings.TrimPrefix(repoPath, "/")
repoPath = strings.TrimPrefix(repoPath, "~/")
}
// prevent directory traversal attacks
repoPath = filepath.Clean("/" + repoPath)[1:]
rr := strings.SplitN(repoPath, "/", 2) rr := strings.SplitN(repoPath, "/", 2)
if len(rr) != 2 { if len(rr) != 2 {
return fail(ctx, "Invalid repository path", "Invalid repository path: %v", repoPath) return fail(ctx, "Invalid repository path", "Invalid repository path: %v", repoPath)
@ -225,6 +249,18 @@ func runServ(c *cli.Context) error {
// so that username and reponame are not affected. // so that username and reponame are not affected.
repoPath = strings.ToLower(strings.TrimSpace(repoPath)) repoPath = strings.ToLower(strings.TrimSpace(repoPath))
// put the sanitized repoPath back into the argument list for later
if verb == gitAnnexShellVerb {
// git-annex-shell demands an absolute path
absRepoPath, err := filepath.Abs(filepath.Join(setting.RepoRootPath, repoPath))
if err != nil {
return fail(ctx, "Error locating repoPath", "%v", err)
}
words[2] = absRepoPath
} else {
words[1] = repoPath
}
if alphaDashDotPattern.MatchString(reponame) { if alphaDashDotPattern.MatchString(reponame) {
return fail(ctx, "Invalid repo name", "Invalid repo name: %s", reponame) return fail(ctx, "Invalid repo name", "Invalid repo name: %s", reponame)
} }
@ -303,21 +339,45 @@ func runServ(c *cli.Context) error {
return nil return nil
} }
var gitcmd *exec.Cmd gitBinVerb, err := exec.LookPath(verb)
gitBinPath := filepath.Dir(git.GitExecutable) // e.g. /usr/bin if err != nil {
gitBinVerb := filepath.Join(gitBinPath, verb) // e.g. /usr/bin/git-upload-pack
if _, err := os.Stat(gitBinVerb); err != nil {
// if the command "git-upload-pack" doesn't exist, try to split "git-upload-pack" to use the sub-command with git // if the command "git-upload-pack" doesn't exist, try to split "git-upload-pack" to use the sub-command with git
// ps: Windows only has "git.exe" in the bin path, so Windows always uses this way // ps: Windows only has "git.exe" in the bin path, so Windows always uses this way
// ps: git-annex-shell and other extensions may not necessarily be in gitBinPath,
// but '{gitBinPath}/git annex-shell' should be able to find them on $PATH.
verbFields := strings.SplitN(verb, "-", 2) verbFields := strings.SplitN(verb, "-", 2)
if len(verbFields) == 2 { if len(verbFields) == 2 {
// use git binary with the sub-command part: "C:\...\bin\git.exe", "upload-pack", ... // use git binary with the sub-command part: "C:\...\bin\git.exe", "upload-pack", ...
gitcmd = exec.CommandContext(ctx, git.GitExecutable, verbFields[1], repoPath) gitBinVerb = git.GitExecutable
words = append([]string{verbFields[1]}, words...)
} }
} }
if gitcmd == nil {
// by default, use the verb (it has been checked above by allowedCommands) // by default, use the verb (it has been checked above by allowedCommands)
gitcmd = exec.CommandContext(ctx, gitBinVerb, repoPath) gitcmd := exec.CommandContext(ctx, gitBinVerb, words[1:]...)
if verb == gitAnnexShellVerb {
// This doesn't get its own isolated section like LFS does, because LFS
// is handled by internal Gitea routines, but git-annex has to be shelled out
// to like other git subcommands, so we need to build up gitcmd.
// TODO: does this work on Windows?
gitcmd.Env = append(gitcmd.Env,
// "If set, disallows running git-shell to handle unknown commands."
// - git-annex-shell(1)
"GIT_ANNEX_SHELL_LIMITED=True",
// "If set, git-annex-shell will refuse to run commands
// that do not operate on the specified directory."
// - git-annex-shell(1)
fmt.Sprintf("GIT_ANNEX_SHELL_DIRECTORY=%s", words[2]),
)
if results.UserMode < perm.AccessModeWrite {
// "If set, disallows any action that could modify the git-annex repository."
// - git-annex-shell(1)
// We set this when the backend API has told us that we don't have write permission to this repo.
log.Debug("Setting GIT_ANNEX_SHELL_READONLY=True")
gitcmd.Env = append(gitcmd.Env, "GIT_ANNEX_SHELL_READONLY=True")
}
} }
process.SetSysProcAttribute(gitcmd) process.SetSysProcAttribute(gitcmd)

View file

@ -9,6 +9,7 @@ import (
"net" "net"
"net/http" "net/http"
"os" "os"
"os/exec"
"path/filepath" "path/filepath"
"strconv" "strconv"
"strings" "strings"
@ -247,6 +248,12 @@ func runWeb(ctx *cli.Context) error {
createPIDFile(ctx.String("pid")) createPIDFile(ctx.String("pid"))
} }
if setting.Annex.Enabled {
if _, err := exec.LookPath("git-annex"); err != nil {
log.Fatal("You have enabled git-annex support but git-annex is not installed. Please make sure that Forgejo's PATH contains the git-annex executable.")
}
}
if !setting.InstallLock { if !setting.InstallLock {
if err := serveInstall(ctx); err != nil { if err := serveInstall(ctx); err != nil {
return err return err
@ -311,6 +318,10 @@ func listen(m http.Handler, handleRedirector bool) error {
log.Info("LFS server enabled") log.Info("LFS server enabled")
} }
if setting.Annex.Enabled {
log.Info("git-annex enabled")
}
var err error var err error
switch setting.Protocol { switch setting.Protocol {
case setting.HTTP: case setting.HTTP:

View file

@ -2678,6 +2678,17 @@ LEVEL = Info
;; Limit the number of concurrent upload/download operations within a batch ;; Limit the number of concurrent upload/download operations within a batch
;BATCH_OPERATION_CONCURRENCY = 8 ;BATCH_OPERATION_CONCURRENCY = 8
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;[annex]
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; Whether git-annex is enabled; defaults to false
;ENABLED = false
;; Whether to disable p2phttp support; default is the same as repository.DISABLE_HTTP_GIT
;DISABLE_P2PHTTP = false
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; settings for packages, will override storage setting ;; settings for packages, will override storage setting

2
go.mod
View file

@ -2,7 +2,7 @@ module code.gitea.io/gitea
go 1.23 go 1.23
toolchain go1.23.4 toolchain go1.23.5
require ( require (
code.forgejo.org/f3/gof3/v3 v3.10.2 code.forgejo.org/f3/gof3/v3 v3.10.2

View file

@ -282,27 +282,22 @@ func UpdateRunner(ctx context.Context, r *ActionRunner, cols ...string) error {
} }
// DeleteRunner deletes a runner by given ID. // DeleteRunner deletes a runner by given ID.
func DeleteRunner(ctx context.Context, id int64) error { func DeleteRunner(ctx context.Context, r *ActionRunner) error {
runner, err := GetRunnerByID(ctx, id)
if err != nil {
return err
}
// Replace the UUID, which was either based on the secret's first 16 bytes or an UUIDv4, // Replace the UUID, which was either based on the secret's first 16 bytes or an UUIDv4,
// with a sequence of 8 0xff bytes followed by the little-endian version of the record's // with a sequence of 8 0xff bytes followed by the little-endian version of the record's
// identifier. This will prevent the deleted record's identifier from colliding with any // identifier. This will prevent the deleted record's identifier from colliding with any
// new record. // new record.
b := make([]byte, 8) b := make([]byte, 8)
binary.LittleEndian.PutUint64(b, uint64(id)) binary.LittleEndian.PutUint64(b, uint64(r.ID))
runner.UUID = fmt.Sprintf("ffffffff-ffff-ffff-%.2x%.2x-%.2x%.2x%.2x%.2x%.2x%.2x", r.UUID = fmt.Sprintf("ffffffff-ffff-ffff-%.2x%.2x-%.2x%.2x%.2x%.2x%.2x%.2x",
b[0], b[1], b[2], b[3], b[4], b[5], b[6], b[7]) b[0], b[1], b[2], b[3], b[4], b[5], b[6], b[7])
err = UpdateRunner(ctx, runner, "UUID") err := UpdateRunner(ctx, r, "UUID")
if err != nil { if err != nil {
return err return err
} }
_, err = db.DeleteByID[ActionRunner](ctx, id) _, err = db.DeleteByID[ActionRunner](ctx, r.ID)
return err return err
} }

View file

@ -34,7 +34,7 @@ func TestDeleteRunner(t *testing.T) {
require.NoError(t, unittest.PrepareTestDatabase()) require.NoError(t, unittest.PrepareTestDatabase())
before := unittest.AssertExistsAndLoadBean(t, &ActionRunner{ID: recordID}) before := unittest.AssertExistsAndLoadBean(t, &ActionRunner{ID: recordID})
err := DeleteRunner(db.DefaultContext, recordID) err := DeleteRunner(db.DefaultContext, &ActionRunner{ID: recordID})
require.NoError(t, err) require.NoError(t, err)
var after ActionRunner var after ActionRunner

View file

@ -86,7 +86,7 @@ func FindVariables(ctx context.Context, opts FindVariablesOpts) ([]*ActionVariab
} }
func UpdateVariable(ctx context.Context, variable *ActionVariable) (bool, error) { func UpdateVariable(ctx context.Context, variable *ActionVariable) (bool, error) {
count, err := db.GetEngine(ctx).ID(variable.ID).Cols("name", "data"). count, err := db.GetEngine(ctx).ID(variable.ID).Where("owner_id = ? AND repo_id = ?", variable.OwnerID, variable.RepoID).Cols("name", "data").
Update(&ActionVariable{ Update(&ActionVariable{
Name: variable.Name, Name: variable.Name,
Data: variable.Data, Data: variable.Data,
@ -94,11 +94,9 @@ func UpdateVariable(ctx context.Context, variable *ActionVariable) (bool, error)
return count != 0, err return count != 0, err
} }
func DeleteVariable(ctx context.Context, id int64) error { func DeleteVariable(ctx context.Context, variableID, ownerID, repoID int64) (bool, error) {
if _, err := db.DeleteByID[ActionVariable](ctx, id); err != nil { count, err := db.GetEngine(ctx).Table("action_variable").Where("id = ? AND owner_id = ? AND repo_id = ?", variableID, ownerID, repoID).Delete()
return err return count != 0, err
}
return nil
} }
func GetVariablesOfRun(ctx context.Context, run *ActionRun) (map[string]string, error) { func GetVariablesOfRun(ctx context.Context, run *ActionRun) (map[string]string, error) {

View file

@ -0,0 +1,23 @@
-
id: 1001
title: Org project that contains private issues
owner_id: 3
repo_id: 0
is_closed: false
creator_id: 2
board_type: 1
type: 3
created_unix: 1738000000
updated_unix: 1738000000
-
id: 1002
title: User project that contains private issues
owner_id: 2
repo_id: 0
is_closed: false
creator_id: 2
board_type: 1
type: 1
created_unix: 1738000000
updated_unix: 1738000000

View file

@ -0,0 +1,17 @@
-
id: 1001
project_id: 1001
title: Triage
creator_id: 2
default: true
created_unix: 1738000000
updated_unix: 1738000000
-
id: 1002
project_id: 1002
title: Triage
creator_id: 2
default: true
created_unix: 1738000000
updated_unix: 1738000000

View file

@ -0,0 +1,11 @@
-
id: 1001
issue_id: 6
project_id: 1001
project_board_id: 1001
-
id: 1002
issue_id: 7
project_id: 1002
project_board_id: 1002

View file

@ -1,42 +1,49 @@
- -
id: 1 id: 1
team_id: 1 team_id: 1
org_id: 3
type: 1 type: 1
access_mode: 4 access_mode: 4
- -
id: 2 id: 2
team_id: 1 team_id: 1
org_id: 3
type: 2 type: 2
access_mode: 4 access_mode: 4
- -
id: 3 id: 3
team_id: 1 team_id: 1
org_id: 3
type: 3 type: 3
access_mode: 4 access_mode: 4
- -
id: 4 id: 4
team_id: 1 team_id: 1
org_id: 3
type: 4 type: 4
access_mode: 4 access_mode: 4
- -
id: 5 id: 5
team_id: 1 team_id: 1
org_id: 3
type: 5 type: 5
access_mode: 4 access_mode: 4
- -
id: 6 id: 6
team_id: 1 team_id: 1
org_id: 3
type: 6 type: 6
access_mode: 4 access_mode: 4
- -
id: 7 id: 7
team_id: 1 team_id: 1
org_id: 3
type: 7 type: 7
access_mode: 4 access_mode: 4

View file

@ -7,8 +7,10 @@ import (
"context" "context"
"code.gitea.io/gitea/models/db" "code.gitea.io/gitea/models/db"
org_model "code.gitea.io/gitea/models/organization"
project_model "code.gitea.io/gitea/models/project" project_model "code.gitea.io/gitea/models/project"
user_model "code.gitea.io/gitea/models/user" user_model "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/modules/optional"
"code.gitea.io/gitea/modules/util" "code.gitea.io/gitea/modules/util"
) )
@ -48,22 +50,29 @@ func (issue *Issue) ProjectColumnID(ctx context.Context) int64 {
} }
// LoadIssuesFromColumn load issues assigned to this column // LoadIssuesFromColumn load issues assigned to this column
func LoadIssuesFromColumn(ctx context.Context, b *project_model.Column) (IssueList, error) { func LoadIssuesFromColumn(ctx context.Context, b *project_model.Column, doer *user_model.User, org *org_model.Organization, isClosed optional.Option[bool]) (IssueList, error) {
issueList, err := Issues(ctx, &IssuesOptions{ issueOpts := &IssuesOptions{
ProjectColumnID: b.ID, ProjectColumnID: b.ID,
ProjectID: b.ProjectID, ProjectID: b.ProjectID,
SortType: "project-column-sorting", SortType: "project-column-sorting",
}) IsClosed: isClosed,
}
if doer != nil {
issueOpts.User = doer
issueOpts.Org = org
} else {
issueOpts.AllPublic = true
}
issueList, err := Issues(ctx, issueOpts)
if err != nil { if err != nil {
return nil, err return nil, err
} }
if b.Default { if b.Default {
issues, err := Issues(ctx, &IssuesOptions{ issueOpts.ProjectColumnID = db.NoConditionID
ProjectColumnID: db.NoConditionID,
ProjectID: b.ProjectID, issues, err := Issues(ctx, issueOpts)
SortType: "project-column-sorting",
})
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -78,10 +87,10 @@ func LoadIssuesFromColumn(ctx context.Context, b *project_model.Column) (IssueLi
} }
// LoadIssuesFromColumnList load issues assigned to the columns // LoadIssuesFromColumnList load issues assigned to the columns
func LoadIssuesFromColumnList(ctx context.Context, bs project_model.ColumnList) (map[int64]IssueList, error) { func LoadIssuesFromColumnList(ctx context.Context, bs project_model.ColumnList, doer *user_model.User, org *org_model.Organization, isClosed optional.Option[bool]) (map[int64]IssueList, error) {
issuesMap := make(map[int64]IssueList, len(bs)) issuesMap := make(map[int64]IssueList, len(bs))
for i := range bs { for i := range bs {
il, err := LoadIssuesFromColumn(ctx, bs[i]) il, err := LoadIssuesFromColumn(ctx, bs[i], doer, org, isClosed)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -160,3 +169,36 @@ func IssueAssignOrRemoveProject(ctx context.Context, issue *Issue, doer *user_mo
}) })
}) })
} }
// NumIssuesInProjects returns the amount of issues assigned to one of the project
// in the list which the doer can access.
func NumIssuesInProjects(ctx context.Context, pl []*project_model.Project, doer *user_model.User, org *org_model.Organization, isClosed optional.Option[bool]) (map[int64]int, error) {
numMap := make(map[int64]int, len(pl))
for _, p := range pl {
num, err := NumIssuesInProject(ctx, p, doer, org, isClosed)
if err != nil {
return nil, err
}
numMap[p.ID] = num
}
return numMap, nil
}
// NumIssuesInProject returns the amount of issues assigned to the project which
// the doer can access.
func NumIssuesInProject(ctx context.Context, p *project_model.Project, doer *user_model.User, org *org_model.Organization, isClosed optional.Option[bool]) (int, error) {
numIssuesInProject := int(0)
bs, err := p.GetColumns(ctx)
if err != nil {
return 0, err
}
im, err := LoadIssuesFromColumnList(ctx, bs, doer, org, isClosed)
if err != nil {
return 0, err
}
for _, il := range im {
numIssuesInProject += len(il)
}
return numIssuesInProject, nil
}

View file

@ -0,0 +1,100 @@
// Copyright 2025 The Forgejo Authors. All rights reserved.
// SPDX-License-Identifier: GPL-3.0-or-later
package issues_test
import (
"testing"
"code.gitea.io/gitea/models/db"
"code.gitea.io/gitea/models/issues"
"code.gitea.io/gitea/models/organization"
"code.gitea.io/gitea/models/project"
"code.gitea.io/gitea/models/unittest"
user_model "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/modules/optional"
"code.gitea.io/gitea/tests"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestPrivateIssueProjects(t *testing.T) {
defer tests.AddFixtures("models/fixtures/PrivateIssueProjects/")()
require.NoError(t, unittest.PrepareTestDatabase())
user2 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
t.Run("Organization project", func(t *testing.T) {
org := unittest.AssertExistsAndLoadBean(t, &organization.Organization{ID: 3})
orgProject := unittest.AssertExistsAndLoadBean(t, &project.Project{ID: 1001, OwnerID: org.ID})
column := unittest.AssertExistsAndLoadBean(t, &project.Column{ID: 1001, ProjectID: orgProject.ID})
t.Run("Authenticated user", func(t *testing.T) {
defer tests.PrintCurrentTest(t)()
issueList, err := issues.LoadIssuesFromColumn(db.DefaultContext, column, user2, org, optional.None[bool]())
require.NoError(t, err)
assert.Len(t, issueList, 1)
assert.EqualValues(t, 6, issueList[0].ID)
issuesNum, err := issues.NumIssuesInProject(db.DefaultContext, orgProject, user2, org, optional.None[bool]())
require.NoError(t, err)
assert.EqualValues(t, 1, issuesNum)
issuesNum, err = issues.NumIssuesInProject(db.DefaultContext, orgProject, user2, org, optional.Some(true))
require.NoError(t, err)
assert.EqualValues(t, 0, issuesNum)
issuesNum, err = issues.NumIssuesInProject(db.DefaultContext, orgProject, user2, org, optional.Some(false))
require.NoError(t, err)
assert.EqualValues(t, 1, issuesNum)
})
t.Run("Anonymous user", func(t *testing.T) {
defer tests.PrintCurrentTest(t)()
issueList, err := issues.LoadIssuesFromColumn(db.DefaultContext, column, nil, org, optional.None[bool]())
require.NoError(t, err)
assert.Empty(t, issueList)
issuesNum, err := issues.NumIssuesInProject(db.DefaultContext, orgProject, nil, org, optional.None[bool]())
require.NoError(t, err)
assert.EqualValues(t, 0, issuesNum)
})
})
t.Run("User project", func(t *testing.T) {
userProject := unittest.AssertExistsAndLoadBean(t, &project.Project{ID: 1002, OwnerID: user2.ID})
column := unittest.AssertExistsAndLoadBean(t, &project.Column{ID: 1002, ProjectID: userProject.ID})
t.Run("Authenticated user", func(t *testing.T) {
defer tests.PrintCurrentTest(t)()
issueList, err := issues.LoadIssuesFromColumn(db.DefaultContext, column, user2, nil, optional.None[bool]())
require.NoError(t, err)
assert.Len(t, issueList, 1)
assert.EqualValues(t, 7, issueList[0].ID)
issuesNum, err := issues.NumIssuesInProject(db.DefaultContext, userProject, user2, nil, optional.None[bool]())
require.NoError(t, err)
assert.EqualValues(t, 1, issuesNum)
issuesNum, err = issues.NumIssuesInProject(db.DefaultContext, userProject, user2, nil, optional.Some(true))
require.NoError(t, err)
assert.EqualValues(t, 0, issuesNum)
issuesNum, err = issues.NumIssuesInProject(db.DefaultContext, userProject, user2, nil, optional.Some(false))
require.NoError(t, err)
assert.EqualValues(t, 1, issuesNum)
})
t.Run("Anonymous user", func(t *testing.T) {
defer tests.PrintCurrentTest(t)()
issueList, err := issues.LoadIssuesFromColumn(db.DefaultContext, column, nil, nil, optional.None[bool]())
require.NoError(t, err)
assert.Empty(t, issueList)
issuesNum, err := issues.NumIssuesInProject(db.DefaultContext, userProject, nil, nil, optional.None[bool]())
require.NoError(t, err)
assert.EqualValues(t, 0, issuesNum)
})
})
}

View file

@ -1,23 +1,27 @@
// Copyright 2024 The Forgejo Authors. // Copyright 2025 The Forgejo Authors.
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: GPL-3.0-or-later
package v1_23 //nolint package v1_23 //nolint
import ( import (
"fmt"
"code.gitea.io/gitea/models/migrations/base" "code.gitea.io/gitea/models/migrations/base"
"xorm.io/xorm" "xorm.io/xorm"
"xorm.io/xorm/schemas"
) )
func GiteaLastDrop(x *xorm.Engine) error { func GiteaLastDrop(x *xorm.Engine) error {
tables, err := x.DBMetas()
if err != nil {
return err
}
sess := x.NewSession() sess := x.NewSession()
defer sess.Close() defer sess.Close()
for _, drop := range []struct { for _, drop := range []struct {
table string table string
field string column string
}{ }{
{"badge", "slug"}, {"badge", "slug"},
{"oauth2_application", "skip_secondary_authorization"}, {"oauth2_application", "skip_secondary_authorization"},
@ -29,10 +33,25 @@ func GiteaLastDrop(x *xorm.Engine) error {
{"protected_branch", "force_push_allowlist_team_i_ds"}, {"protected_branch", "force_push_allowlist_team_i_ds"},
{"protected_branch", "force_push_allowlist_deploy_keys"}, {"protected_branch", "force_push_allowlist_deploy_keys"},
} { } {
if _, err := sess.Exec(fmt.Sprintf("SELECT `%s` FROM `%s` WHERE 0 = 1", drop.field, drop.table)); err != nil { var table *schemas.Table
found := false
for _, table = range tables {
if table.Name == drop.table {
found = true
break
}
}
if !found {
continue continue
} }
if err := base.DropTableColumns(sess, drop.table, drop.field); err != nil {
if table.GetColumn(drop.column) == nil {
continue
}
if err := base.DropTableColumns(sess, drop.table, drop.column); err != nil {
return err return err
} }
} }

View file

@ -0,0 +1,41 @@
// Copyright 2025 The Forgejo Authors.
// SPDX-License-Identifier: GPL-3.0-or-later
package v1_23 //nolint
import (
"testing"
migration_tests "code.gitea.io/gitea/models/migrations/test"
"github.com/stretchr/testify/require"
"xorm.io/xorm/schemas"
)
func Test_GiteaLastDrop(t *testing.T) {
type Badge struct {
ID int64 `xorm:"pk autoincr"`
Slug string
}
x, deferable := migration_tests.PrepareTestEnv(t, 0, new(Badge))
defer deferable()
if x == nil || t.Failed() {
return
}
getColumn := func() *schemas.Column {
tables, err := x.DBMetas()
require.NoError(t, err)
require.Len(t, tables, 1)
table := tables[0]
require.Equal(t, "badge", table.Name)
return table.GetColumn("slug")
}
require.NotNil(t, getColumn(), "slug column exists")
require.NoError(t, GiteaLastDrop(x))
require.Nil(t, getColumn(), "slug column was deleted")
// idempotent
require.NoError(t, GiteaLastDrop(x))
}

View file

@ -57,20 +57,6 @@ func (Column) TableName() string {
return "project_board" // TODO: the legacy table name should be project_column return "project_board" // TODO: the legacy table name should be project_column
} }
// NumIssues return counter of all issues assigned to the column
func (c *Column) NumIssues(ctx context.Context) int {
total, err := db.GetEngine(ctx).Table("project_issue").
Where("project_id=?", c.ProjectID).
And("project_board_id=?", c.ID).
GroupBy("issue_id").
Cols("issue_id").
Count()
if err != nil {
return 0
}
return int(total)
}
func (c *Column) GetIssues(ctx context.Context) ([]*ProjectIssue, error) { func (c *Column) GetIssues(ctx context.Context) ([]*ProjectIssue, error) {
issues := make([]*ProjectIssue, 0, 5) issues := make([]*ProjectIssue, 0, 5)
if err := db.GetEngine(ctx).Where("project_id=?", c.ProjectID). if err := db.GetEngine(ctx).Where("project_id=?", c.ProjectID).

View file

@ -34,20 +34,6 @@ func deleteProjectIssuesByProjectID(ctx context.Context, projectID int64) error
return err return err
} }
// NumIssues return counter of all issues assigned to a project
func (p *Project) NumIssues(ctx context.Context) int {
c, err := db.GetEngine(ctx).Table("project_issue").
Where("project_id=?", p.ID).
GroupBy("issue_id").
Cols("issue_id").
Count()
if err != nil {
log.Error("NumIssues: %v", err)
return 0
}
return int(c)
}
// NumClosedIssues return counter of closed issues assigned to a project // NumClosedIssues return counter of closed issues assigned to a project
func (p *Project) NumClosedIssues(ctx context.Context) int { func (p *Project) NumClosedIssues(ctx context.Context) int {
c, err := db.GetEngine(ctx).Table("project_issue"). c, err := db.GetEngine(ctx).Table("project_issue").

View file

@ -166,9 +166,9 @@ func GetReviewers(ctx context.Context, repo *Repository, doerID, posterID int64)
// If isShowFullName is set to true, also include full name prefix search // If isShowFullName is set to true, also include full name prefix search
func GetIssuePostersWithSearch(ctx context.Context, repo *Repository, isPull bool, search string, isShowFullName bool) ([]*user_model.User, error) { func GetIssuePostersWithSearch(ctx context.Context, repo *Repository, isPull bool, search string, isShowFullName bool) ([]*user_model.User, error) {
users := make([]*user_model.User, 0, 30) users := make([]*user_model.User, 0, 30)
var prefixCond builder.Cond = builder.Like{"name", search + "%"} prefixCond := db.BuildCaseInsensitiveLike("name", search+"%")
if isShowFullName { if isShowFullName {
prefixCond = prefixCond.Or(builder.Like{"full_name", "%" + search + "%"}) prefixCond = db.BuildCaseInsensitiveLike("full_name", "%"+search+"%")
} }
cond := builder.In("`user`.id", cond := builder.In("`user`.id",

View file

@ -126,17 +126,15 @@ func (opts *SearchUserOptions) toSearchQueryBase(ctx context.Context) *xorm.Sess
return e.Where(cond) return e.Where(cond)
} }
// 2fa filter uses LEFT JOIN to check whether a user has a 2fa record // Check if the user has two factor enabled, which is TOTP or Webauthn.
// While using LEFT JOIN, sometimes the performance might not be good, but it won't be a problem now, such SQL is seldom executed.
// There are some possible methods to refactor this SQL in future when we really need to optimize the performance (but not now):
// (1) add a column in user table (2) add a setting value in user_setting table (3) use search engines (bleve/elasticsearch)
if opts.IsTwoFactorEnabled.Value() { if opts.IsTwoFactorEnabled.Value() {
cond = cond.And(builder.Expr("two_factor.uid IS NOT NULL")) cond = cond.And(builder.Expr("two_factor.uid IS NOT NULL OR webauthn_credential.user_id IS NOT NULL"))
} else { } else {
cond = cond.And(builder.Expr("two_factor.uid IS NULL")) cond = cond.And(builder.Expr("two_factor.uid IS NULL AND webauthn_credential.user_id IS NULL"))
} }
return e.Join("LEFT OUTER", "two_factor", "two_factor.uid = `user`.id"). return e.Join("LEFT OUTER", "two_factor", "two_factor.uid = `user`.id").
Join("LEFT OUTER", "webauthn_credential", "webauthn_credential.user_id = `user`.id").
Where(cond) Where(cond)
} }

View file

@ -222,7 +222,7 @@ func TestSearchUsers(t *testing.T) {
[]int64{1041, 37}) []int64{1041, 37})
testUserSuccess(&user_model.SearchUserOptions{ListOptions: db.ListOptions{Page: 1}, IsTwoFactorEnabled: optional.Some(true)}, testUserSuccess(&user_model.SearchUserOptions{ListOptions: db.ListOptions{Page: 1}, IsTwoFactorEnabled: optional.Some(true)},
[]int64{24}) []int64{24, 32})
} }
func TestEmailNotificationPreferences(t *testing.T) { func TestEmailNotificationPreferences(t *testing.T) {

192
modules/annex/annex.go Normal file
View file

@ -0,0 +1,192 @@
// Copyright 2022 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
// Unlike modules/lfs, which operates mainly on git.Blobs, this operates on git.TreeEntrys.
// The motivation for this is that TreeEntrys have an easy pointer to the on-disk repo path,
// while blobs do not (in fact, if building with TAGS=gogit, blobs might exist only in a mock
// filesystem, living only in process RAM). We must have the on-disk path to do anything
// useful with git-annex because all of its interesting data is on-disk under .git/annex/.
package annex
import (
"errors"
"fmt"
"io/fs"
"os"
"path"
"path/filepath"
"regexp"
"strings"
"code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/typesniffer"
)
// ErrBlobIsNotAnnexed occurs if a blob does not contain a valid annex key
var ErrBlobIsNotAnnexed = errors.New("not a git-annex pointer")
func LookupKey(blob *git.Blob) (string, error) {
stdout, _, err := git.NewCommand(git.DefaultContext, "annex", "lookupkey", "--ref").AddDynamicArguments(blob.ID.String()).RunStdString(&git.RunOpts{Dir: blob.Repo().Path})
if err != nil {
return "", ErrBlobIsNotAnnexed
}
key := strings.TrimSpace(stdout)
return key, nil
}
func ContentLocationFromKey(repoPath, key string) (string, error) {
contentLocation, _, err := git.NewCommandContextNoGlobals(git.DefaultContext, "annex", "contentlocation").AddDynamicArguments(key).RunStdString(&git.RunOpts{Dir: repoPath})
if err != nil {
return "", fmt.Errorf("in %s: %s does not seem to be a valid annexed file: %w", repoPath, key, err)
}
contentLocation = strings.TrimSpace(contentLocation)
contentLocation = path.Clean("/" + contentLocation)[1:] // prevent directory traversals
contentLocation = path.Join(repoPath, contentLocation)
return contentLocation, nil
}
// return the absolute path of the content pointed to by the annex pointer stored in the git object
// errors if the content is not found in this repo
func ContentLocation(blob *git.Blob) (string, error) {
key, err := LookupKey(blob)
if err != nil {
return "", err
}
return ContentLocationFromKey(blob.Repo().Path, key)
}
// returns a stream open to the annex content
func Content(blob *git.Blob) (*os.File, error) {
contentLocation, err := ContentLocation(blob)
if err != nil {
return nil, err
}
return os.Open(contentLocation)
}
// whether the object appears to be a valid annex pointer
// does *not* verify if the content is actually in this repo;
// for that, use ContentLocation()
func IsAnnexed(blob *git.Blob) (bool, error) {
if !setting.Annex.Enabled {
return false, nil
}
// LookupKey is written to only return well-formed keys
// so the test is just to see if it errors
_, err := LookupKey(blob)
if err != nil {
if errors.Is(err, ErrBlobIsNotAnnexed) {
return false, nil
}
return false, err
}
return true, nil
}
// IsAnnexRepo determines if repo is a git-annex enabled repository
func IsAnnexRepo(repo *git.Repository) bool {
_, _, err := git.NewCommand(repo.Ctx, "config", "annex.uuid").RunStdString(&git.RunOpts{Dir: repo.Path})
return err == nil
}
var repoConfigFileRe = regexp.MustCompile("[^/]+/[^/]+.git/config$")
var (
uuid2repoPathCache = make(map[string]string)
repoPath2uuidCache = make(map[string]string)
)
func Init() error {
if !setting.Annex.Enabled {
return nil
}
log.Info("Populating the git-annex UUID cache with existing repositories")
return updateUUID2RepoPathCache()
}
func updateUUID2RepoPathCache() error {
return filepath.WalkDir(setting.RepoRootPath, func(path string, d fs.DirEntry, err error) error {
if err == nil && repoConfigFileRe.MatchString(path) {
thisRepoPath := strings.TrimSuffix(path, "/config")
_, ok := repoPath2uuidCache[thisRepoPath]
if ok {
return nil
}
stdout, _, err := git.NewCommand(git.DefaultContext, "config", "annex.uuid").RunStdString(&git.RunOpts{Dir: thisRepoPath})
if err != nil {
return nil
}
repoUUID := strings.TrimSpace(stdout)
if repoUUID != "" {
uuid2repoPathCache[repoUUID] = thisRepoPath
repoPath2uuidCache[thisRepoPath] = repoUUID
}
}
return nil
})
}
func repoPathFromUUIDCache(uuid string) (string, error) {
if repoPath, ok := uuid2repoPathCache[uuid]; ok {
return repoPath, nil
}
// If the cache didn't contain an entry for the UUID then update the cache and try again
if err := updateUUID2RepoPathCache(); err != nil {
return "", err
}
if repoPath, ok := uuid2repoPathCache[uuid]; ok {
return repoPath, nil
}
return "", fmt.Errorf("no repository known for UUID '%s'", uuid)
}
func checkValidity(uuid, repoPath string) (bool, error) {
stdout, _, err := git.NewCommand(git.DefaultContext, "config", "annex.uuid").RunStdString(&git.RunOpts{Dir: repoPath})
if err != nil {
return false, err
}
repoUUID := strings.TrimSpace(stdout)
return uuid == repoUUID, nil
}
func removeCachedEntries(uuid, repoPath string) {
delete(uuid2repoPathCache, uuid)
delete(repoPath2uuidCache, repoPath)
}
func UUID2RepoPath(uuid string) (string, error) {
// Get the current cache entry for the UUID
repoPath, err := repoPathFromUUIDCache(uuid)
if err != nil {
return "", err
}
// Check if it is still up-to-date
valid, err := checkValidity(uuid, repoPath)
if err != nil {
return "", err
}
if !valid {
// If it isn't, remove the cache entry and try again
removeCachedEntries(uuid, repoPath)
return UUID2RepoPath(uuid)
}
// Otherwise just return the cached entry
return repoPath, nil
}
// GuessContentType guesses the content type of the annexed blob.
func GuessContentType(blob *git.Blob) (typesniffer.SniffedType, error) {
r, err := Content(blob)
if err != nil {
return typesniffer.SniffedType{}, err
}
defer r.Close()
return typesniffer.DetectContentTypeFromReader(r)
}

View file

@ -16,6 +16,7 @@ import (
"strings" "strings"
"unicode/utf8" "unicode/utf8"
"code.gitea.io/gitea/modules/annex"
"code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
@ -101,6 +102,12 @@ func Int64sToStrings(ints []int64) []string {
// EntryIcon returns the octicon class for displaying files/directories // EntryIcon returns the octicon class for displaying files/directories
func EntryIcon(entry *git.TreeEntry) string { func EntryIcon(entry *git.TreeEntry) string {
isAnnexed, _ := annex.IsAnnexed(entry.Blob())
if isAnnexed {
// Show git-annex files as binary files to differentiate them from non-annexed files
// TODO: find a more suitable icon, maybe something related to git-annex
return "file-binary"
}
switch { switch {
case entry.IsLink(): case entry.IsLink():
te, _, err := entry.FollowLink() te, _, err := entry.FollowLink()

View file

@ -126,6 +126,10 @@ func (b *blobReader) Close() error {
return nil return nil
} }
func (b *Blob) Repo() *Repository {
return b.repo
}
// Name returns name of the tree entry this blob object was created from (or empty string) // Name returns name of the tree entry this blob object was created from (or empty string)
func (b *Blob) Name() string { func (b *Blob) Name() string {
return b.name return b.name

View file

@ -457,12 +457,13 @@ func (c *Command) RunStdBytes(opts *RunOpts) (stdout, stderr []byte, runErr RunS
} }
// AllowLFSFiltersArgs return globalCommandArgs with lfs filter, it should only be used for tests // AllowLFSFiltersArgs return globalCommandArgs with lfs filter, it should only be used for tests
// It also re-enables git-credential(1), which is used to test git-annex's HTTP support
func AllowLFSFiltersArgs() TrustedCmdArgs { func AllowLFSFiltersArgs() TrustedCmdArgs {
// Now here we should explicitly allow lfs filters to run // Now here we should explicitly allow lfs filters to run
filteredLFSGlobalArgs := make(TrustedCmdArgs, len(globalCommandArgs)) filteredLFSGlobalArgs := make(TrustedCmdArgs, len(globalCommandArgs))
j := 0 j := 0
for _, arg := range globalCommandArgs { for _, arg := range globalCommandArgs {
if strings.Contains(string(arg), "lfs") { if strings.Contains(string(arg), "lfs") || strings.Contains(string(arg), "credential") {
j-- j--
} else { } else {
filteredLFSGlobalArgs[j] = arg filteredLFSGlobalArgs[j] = arg

View file

@ -12,6 +12,7 @@ import (
"runtime" "runtime"
"strings" "strings"
"code.gitea.io/gitea/modules/annex"
"code.gitea.io/gitea/modules/graceful" "code.gitea.io/gitea/modules/graceful"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/markup"
@ -86,8 +87,22 @@ func (p *Renderer) Render(ctx *markup.RenderContext, input io.Reader, output io.
commands = strings.Fields(command) commands = strings.Fields(command)
args = commands[1:] args = commands[1:]
) )
isAnnexed, _ := annex.IsAnnexed(ctx.Blob)
if p.IsInputFile { // if a renderer wants to read a file, and we have annexed content, we can
// provide the annex key file location directly to the renderer. git-annex
// takes care of having that location be read-only, so no critical
// protection layer is needed. Moreover, the file readily exists, and
// expensive temporary files can be avoided, also allowing an operator
// to raise MAX_DISPLAY_FILE_SIZE without much negative impact.
if p.IsInputFile && isAnnexed {
// look for annexed content, will be empty, if there is none
annexContentLocation, _ := annex.ContentLocation(ctx.Blob)
// we call the renderer, even if there is no annex content present.
// showing the pointer file content is not much use, and a topical
// renderer might be able to produce something useful from the
// filename alone (present in ENV)
args = append(args, annexContentLocation)
} else if p.IsInputFile {
// write to temp file // write to temp file
f, err := os.CreateTemp("", "gitea_input") f, err := os.CreateTemp("", "gitea_input")
if err != nil { if err != nil {
@ -130,6 +145,12 @@ func (p *Renderer) Render(ctx *markup.RenderContext, input io.Reader, output io.
os.Environ(), os.Environ(),
"GITEA_PREFIX_SRC="+ctx.Links.SrcLink(), "GITEA_PREFIX_SRC="+ctx.Links.SrcLink(),
"GITEA_PREFIX_RAW="+ctx.Links.RawLink(), "GITEA_PREFIX_RAW="+ctx.Links.RawLink(),
// also communicate the relative path of the to-be-rendered item.
// this enables the renderer to make use of the original file name
// and path, e.g., to make rendering or dtype-detection decisions
// that go beyond the originally matched extension. Even if the
// content is directly streamed to STDIN
"GITEA_RELATIVE_PATH="+ctx.RelativePath,
) )
if !p.IsInputFile { if !p.IsInputFile {
cmd.Stdin = input cmd.Stdin = input

View file

@ -8,6 +8,7 @@ import (
"bytes" "bytes"
"html/template" "html/template"
"io" "io"
"net/url"
"regexp" "regexp"
"slices" "slices"
"strconv" "strconv"
@ -77,6 +78,16 @@ func newFilePreview(ctx *RenderContext, node *html.Node, locale translation.Loca
commitSha := node.Data[m[4]:m[5]] commitSha := node.Data[m[4]:m[5]]
filePath := node.Data[m[6]:m[7]] filePath := node.Data[m[6]:m[7]]
urlFullSource := urlFull
if strings.HasSuffix(filePath, "?display=source") {
filePath = strings.TrimSuffix(filePath, "?display=source")
} else if Type(filePath) != "" {
urlFullSource = node.Data[m[0]:m[6]] + filePath + "?display=source#" + node.Data[m[8]:m[1]]
}
filePath, err := url.QueryUnescape(filePath)
if err != nil {
return nil
}
hash := node.Data[m[8]:m[9]] hash := node.Data[m[8]:m[9]]
preview.start = m[0] preview.start = m[0]
@ -113,7 +124,7 @@ func newFilePreview(ctx *RenderContext, node *html.Node, locale translation.Loca
titleBuffer.WriteString(" &ndash; ") titleBuffer.WriteString(" &ndash; ")
} }
err = html.Render(titleBuffer, createLink(urlFull, filePath, "muted")) err = html.Render(titleBuffer, createLink(urlFullSource, filePath, "muted"))
if err != nil { if err != nil {
log.Error("failed to render filepathLink: %v", err) log.Error("failed to render filepathLink: %v", err)
} }

View file

@ -1026,4 +1026,138 @@ func TestRender_FilePreview(t *testing.T) {
localMetas, localMetas,
) )
}) })
commitFileURL := util.URLJoin(markup.TestRepoURL, "src", "commit", "c9913120ed2c1e27c1d7752ecdb7a504dc7cf6be", "path", "to", "file.md")
t.Run("rendered file with ?display=source", func(t *testing.T) {
testRender(
commitFileURL+"?display=source"+"#L1-L2",
`<p></p>`+
`<div class="file-preview-box">`+
`<div class="header">`+
`<div>`+
`<a href="http://localhost:3000/gogits/gogs/src/commit/c9913120ed2c1e27c1d7752ecdb7a504dc7cf6be/path/to/file.md?display=source#L1-L2" class="muted" rel="nofollow">path/to/file.md</a>`+
`</div>`+
`<span class="text small grey">`+
`Lines 1 to 2 in <a href="http://localhost:3000/gogits/gogs/src/commit/c9913120ed2c1e27c1d7752ecdb7a504dc7cf6be" class="text black" rel="nofollow">c991312</a>`+
`</span>`+
`</div>`+
`<div class="ui table">`+
`<table class="file-preview">`+
`<tbody>`+
`<tr>`+
`<td class="lines-num"><span data-line-number="1"></span></td>`+
`<td class="lines-code chroma"><code class="code-inner"><span class="gh"># A`+"\n"+`</span></code></td>`+
`</tr>`+
`<tr>`+
`<td class="lines-num"><span data-line-number="2"></span></td>`+
`<td class="lines-code chroma"><code class="code-inner"><span class="gh"></span>B`+"\n"+`</code></td>`+
`</tr>`+
`</tbody>`+
`</table>`+
`</div>`+
`</div>`+
`<p></p>`,
localMetas,
)
})
t.Run("rendered file without ?display=source", func(t *testing.T) {
testRender(
commitFileURL+"#L1-L2",
`<p></p>`+
`<div class="file-preview-box">`+
`<div class="header">`+
`<div>`+
`<a href="http://localhost:3000/gogits/gogs/src/commit/c9913120ed2c1e27c1d7752ecdb7a504dc7cf6be/path/to/file.md?display=source#L1-L2" class="muted" rel="nofollow">path/to/file.md</a>`+
`</div>`+
`<span class="text small grey">`+
`Lines 1 to 2 in <a href="http://localhost:3000/gogits/gogs/src/commit/c9913120ed2c1e27c1d7752ecdb7a504dc7cf6be" class="text black" rel="nofollow">c991312</a>`+
`</span>`+
`</div>`+
`<div class="ui table">`+
`<table class="file-preview">`+
`<tbody>`+
`<tr>`+
`<td class="lines-num"><span data-line-number="1"></span></td>`+
`<td class="lines-code chroma"><code class="code-inner"><span class="gh"># A`+"\n"+`</span></code></td>`+
`</tr>`+
`<tr>`+
`<td class="lines-num"><span data-line-number="2"></span></td>`+
`<td class="lines-code chroma"><code class="code-inner"><span class="gh"></span>B`+"\n"+`</code></td>`+
`</tr>`+
`</tbody>`+
`</table>`+
`</div>`+
`</div>`+
`<p></p>`,
localMetas,
)
})
commitFileURL = util.URLJoin(markup.TestRepoURL, "src", "commit", "190d9492934af498c3f669d6a2431dc5459e5b20", "path", "to", "file.go")
t.Run("normal file with ?display=source", func(t *testing.T) {
testRender(
commitFileURL+"?display=source"+"#L2-L3",
`<p></p>`+
`<div class="file-preview-box">`+
`<div class="header">`+
`<div>`+
`<a href="http://localhost:3000/gogits/gogs/src/commit/190d9492934af498c3f669d6a2431dc5459e5b20/path/to/file.go?display=source#L2-L3" class="muted" rel="nofollow">path/to/file.go</a>`+
`</div>`+
`<span class="text small grey">`+
`Lines 2 to 3 in <a href="http://localhost:3000/gogits/gogs/src/commit/190d9492934af498c3f669d6a2431dc5459e5b20" class="text black" rel="nofollow">190d949</a>`+
`</span>`+
`</div>`+
`<div class="ui table">`+
`<table class="file-preview">`+
`<tbody>`+
`<tr>`+
`<td class="lines-num"><span data-line-number="2"></span></td>`+
`<td class="lines-code chroma"><code class="code-inner"><span class="nx">B</span>`+"\n"+`</code></td>`+
`</tr>`+
`<tr>`+
`<td class="lines-num"><span data-line-number="3"></span></td>`+
`<td class="lines-code chroma"><code class="code-inner"><span class="nx">C</span>`+"\n"+`</code></td>`+
`</tr>`+
`</tbody>`+
`</table>`+
`</div>`+
`</div>`+
`<p></p>`,
localMetas,
)
})
commitFileURL = util.URLJoin(markup.TestRepoURL, "src", "commit", "eeb243c3395e1921c5d90e73bd739827251fc99d", "path", "to", "file%20%23.txt")
t.Run("file with strange characters in name", func(t *testing.T) {
testRender(
commitFileURL+"#L1",
`<p></p>`+
`<div class="file-preview-box">`+
`<div class="header">`+
`<div>`+
`<a href="http://localhost:3000/gogits/gogs/src/commit/eeb243c3395e1921c5d90e73bd739827251fc99d/path/to/file%20%23.txt#L1" class="muted" rel="nofollow">path/to/file #.txt</a>`+
`</div>`+
`<span class="text small grey">`+
`Line 1 in <a href="http://localhost:3000/gogits/gogs/src/commit/eeb243c3395e1921c5d90e73bd739827251fc99d" class="text black" rel="nofollow">eeb243c</a>`+
`</span>`+
`</div>`+
`<div class="ui table">`+
`<table class="file-preview">`+
`<tbody>`+
`<tr>`+
`<td class="lines-num"><span data-line-number="1"></span></td>`+
`<td class="lines-code chroma"><code class="code-inner">A`+"\n"+`</code></td>`+
`</tr>`+
`</tbody>`+
`</table>`+
`</div>`+
`</div>`+
`<p></p>`,
localMetas,
)
})
} }

View file

@ -75,6 +75,10 @@ type RenderContext struct {
Metas map[string]string Metas map[string]string
DefaultLink string DefaultLink string
GitRepo *git.Repository GitRepo *git.Repository
// reporting the target blob that is to-be-rendered enables
// deeper inspection in the handler for external renderer
// (i.e., more targeted handling of annexed files)
Blob *git.Blob
ShaExistCache map[string]bool ShaExistCache map[string]bool
cancelFn func() cancelFn func()
SidebarTocNode ast.Node SidebarTocNode ast.Node

View file

@ -0,0 +1 @@
x•ŽANÃ0EYû³GB;a U=D9€=þ&–ÚÙÓr} 7èê­ÞÓÓëåÒŒBœ^¬´¤˜yY8Ï:AІ X}<7D>R×XkÎs­"î;uìFº®9x” Œ ÊEdÐ’%Í~**Zß3\ºÙvíô9Й>nÿ8Žfxkû=<3D>[9K”%L>®ôêÙ{§<>7Ãs;aÕvý4ÛhXOûH·Ô“þÕ†ûð`KÑ

View file

@ -0,0 +1 @@
x•ŽKŠ1@]çµ$¿J¥aæz€JRÁ@w+éØsýõ®ÞâñàåÛ²´ÖÛÃè"@VL&J3%f-ÑGDÒq2>FçjBOEݹË:ÀgÃ\1¤œ¦ê¦kÀêªEM6DÔ,Ÿ\‚âǸÞ:\6é¾OülmÈ©­;Ï­|ƒ!GäŒE£6Z«üzòY¥Î² ¨m¸üÂÿi.x-o³ò"›úŒLÌ

View file

@ -1 +1 @@
4c1aaf56bcb9f39dcf65f3f250726850aed13cd6 eeb243c3395e1921c5d90e73bd739827251fc99d

View file

@ -40,6 +40,7 @@ type ServCommandResults struct {
UserName string UserName string
UserEmail string UserEmail string
UserID int64 UserID int64
UserMode perm.AccessMode
OwnerName string OwnerName string
RepoName string RepoName string
RepoID int64 RepoID int64

View file

@ -47,7 +47,7 @@ func AesDecrypt(key, text []byte) ([]byte, error) {
cfb.XORKeyStream(text, text) cfb.XORKeyStream(text, text)
data, err := base64.StdEncoding.DecodeString(string(text)) data, err := base64.StdEncoding.DecodeString(string(text))
if err != nil { if err != nil {
return nil, fmt.Errorf("AesDecrypt invalid decrypted base64 string: %w", err) return nil, fmt.Errorf("AesDecrypt invalid decrypted base64 string: %w - it can be caused by a change of the [security].SECRET_KEY setting or a database corruption - `forgejo doctor check --run check-db-consistency --fix` will get rid of orphaned rows found in the `two_factor` table and may fix this problem if they are the one with the invalid content", err)
} }
return data, nil return data, nil
} }

25
modules/setting/annex.go Normal file
View file

@ -0,0 +1,25 @@
// Copyright 2023 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package setting
import (
"code.gitea.io/gitea/modules/log"
)
// Annex represents the configuration for git-annex
var Annex = struct {
Enabled bool `ini:"ENABLED"`
DisableP2PHTTP bool `ini:"DISABLE_P2PHTTP"`
}{}
func loadAnnexFrom(rootCfg ConfigProvider) {
sec := rootCfg.Section("annex")
if err := sec.MapTo(&Annex); err != nil {
log.Fatal("Failed to map Annex settings: %v", err)
}
if !sec.HasKey("DISABLE_P2PHTTP") {
// If DisableP2PHTTP is not explicitly set then use DisableHTTPGit as its default
Annex.DisableP2PHTTP = Repository.DisableHTTPGit
}
}

View file

@ -138,6 +138,11 @@ func CompileEmailGlobList(sec ConfigSection, keys ...string) (globs []glob.Glob)
return globs return globs
} }
// LoadServiceSetting loads the service settings
func LoadServiceSetting() {
loadServiceFrom(CfgProvider)
}
func loadServiceFrom(rootCfg ConfigProvider) { func loadServiceFrom(rootCfg ConfigProvider) {
sec := rootCfg.Section("service") sec := rootCfg.Section("service")
Service.ActiveCodeLives = sec.Key("ACTIVE_CODE_LIVE_MINUTES").MustInt(180) Service.ActiveCodeLives = sec.Key("ACTIVE_CODE_LIVE_MINUTES").MustInt(180)

View file

@ -153,6 +153,7 @@ func loadCommonSettingsFrom(cfg ConfigProvider) error {
loadCamoFrom(cfg) loadCamoFrom(cfg)
loadI18nFrom(cfg) loadI18nFrom(cfg)
loadGitFrom(cfg) loadGitFrom(cfg)
loadAnnexFrom(cfg)
loadMirrorFrom(cfg) loadMirrorFrom(cfg)
loadMarkupFrom(cfg) loadMarkupFrom(cfg)
loadQuotaFrom(cfg) loadQuotaFrom(cfg)

View file

@ -4,7 +4,9 @@
package util package util
import ( import (
"io/fs"
"os" "os"
"path/filepath"
"runtime" "runtime"
"syscall" "syscall"
"time" "time"
@ -41,10 +43,48 @@ func Remove(name string) error {
return err return err
} }
// RemoveAll removes the named file or (empty) directory with at most 5 attempts. // MakeWritable recursively makes the named directory writable.
func MakeWritable(name string) error {
return filepath.WalkDir(name, func(path string, d fs.DirEntry, err error) error {
// NB: this is called WalkDir but it works on a single file too
if err == nil {
info, err := d.Info()
if err != nil {
return err
}
// Don't try chmod'ing symlinks (will fail with broken symlinks)
if info.Mode()&os.ModeSymlink != os.ModeSymlink {
// 0200 == u+w, in octal unix permission notation
err = os.Chmod(path, info.Mode()|0o200)
if err != nil {
return err
}
}
}
return nil
})
}
// RemoveAll removes the named file or directory with at most 5 attempts.
func RemoveAll(name string) error { func RemoveAll(name string) error {
var err error var err error
for i := 0; i < 5; i++ { for i := 0; i < 5; i++ {
// Do chmod -R +w to help ensure the removal succeeds.
// In particular, in the git-annex case, this handles
// https://git-annex.branchable.com/internals/lockdown/ :
//
// > (The only bad consequence of this is that rm -rf .git
// > doesn't work unless you first run chmod -R +w .git)
err = MakeWritable(name)
if err != nil {
// try again
<-time.After(100 * time.Millisecond)
continue
}
err = os.RemoveAll(name) err = os.RemoveAll(name)
if err == nil { if err == nil {
break break

View file

@ -4,7 +4,7 @@ dashboard=Přehled
explore=Procházet explore=Procházet
help=Nápověda help=Nápověda
logo=Logo logo=Logo
sign_in=Přihlášení sign_in=Přihlásit se
sign_in_with_provider = Přihlásit se přes %s sign_in_with_provider = Přihlásit se přes %s
sign_in_or=nebo sign_in_or=nebo
sign_out=Odhlásit se sign_out=Odhlásit se
@ -517,8 +517,8 @@ issue_assigned.issue=@%[1]s vás přiřadil/a k problému %[2]s v repozitáři %
issue.x_mentioned_you=<b>@%s</b> vás zmínil/a: issue.x_mentioned_you=<b>@%s</b> vás zmínil/a:
issue.action.force_push=<b>%[1]s</b> vynutil/a nahrání <b>%[2]s</b> z %[3]s do %[4]s. issue.action.force_push=<b>%[1]s</b> vynutil/a nahrání <b>%[2]s</b> z %[3]s do %[4]s.
issue.action.push_1=<b>@%[1]s</b> nahrál/a %[3]d commit do %[2]s issue.action.push_1=Uživatel <b>@%[1]s</b> nahrál %[3]d revizi do %[2]s
issue.action.push_n=<b>@%[1]s</b> nahrál/a %[3]d commity do %[2]s issue.action.push_n=Uživatel <b>@%[1]s</b> nahrál %[3]d revizí do %[2]s
issue.action.close=<b>@%[1]s</b> uzavřel/a #%[2]d. issue.action.close=<b>@%[1]s</b> uzavřel/a #%[2]d.
issue.action.reopen=<b>@%[1]s</b> znovu otevřel/a #%[2]d. issue.action.reopen=<b>@%[1]s</b> znovu otevřel/a #%[2]d.
issue.action.merge=<b>@%[1]s</b> sloučil/a #%[2]d do %[3]s. issue.action.merge=<b>@%[1]s</b> sloučil/a #%[2]d do %[3]s.
@ -590,9 +590,9 @@ AuthName=Název ověření
AdminEmail=E-mailová adresa správce AdminEmail=E-mailová adresa správce
NewBranchName=Název nové větve NewBranchName=Název nové větve
CommitSummary=Shrnutí commity CommitSummary=Shrnutí revize
CommitMessage=Zpráva commitu CommitMessage=Zpráva revize
CommitChoice=Výběr commitu CommitChoice=Výběr revize
TreeName=Cesta k souboru TreeName=Cesta k souboru
Content=Obsah Content=Obsah
@ -681,6 +681,8 @@ To = Název větve
Biography = Životopis Biography = Životopis
AccessToken = Přístupový token AccessToken = Přístupový token
email_domain_is_not_allowed = Doména uživatelské e-mailové adresy <b>%s</b> je v rozporu se seznamem EMAIL_DOMAIN_ALLOWLIST nebo EMAIL_DOMAIN_BLOCKLIST. Ujistěte se, že je vaše adresa správně nastavena.
[user] [user]
change_avatar=Změnit váš avatar… change_avatar=Změnit váš avatar…
joined_on=Přidal/a se %s joined_on=Přidal/a se %s
@ -767,7 +769,7 @@ language=Jazyk
ui=Motiv vzhledu ui=Motiv vzhledu
hidden_comment_types=Skryté typy komentářů hidden_comment_types=Skryté typy komentářů
hidden_comment_types_description=Zde zkontrolované typy komentářů nebudou zobrazeny na stránkách problémů. Zaškrtnutí „Štítek“ například odstraní všechny komentáře „<user> přidal/odstranil <label>“. hidden_comment_types_description=Zde zkontrolované typy komentářů nebudou zobrazeny na stránkách problémů. Zaškrtnutí „Štítek“ například odstraní všechny komentáře „<user> přidal/odstranil <label>“.
hidden_comment_types.ref_tooltip=Komentáře, kde byl tento problém odkázán u jiného problému/commitu/… hidden_comment_types.ref_tooltip=Komentáře, kde byl tento problém odkázán z jiného problému/revize/…
hidden_comment_types.issue_ref_tooltip=Komentáře, kde uživatel změní větev/značku spojenou s problémem hidden_comment_types.issue_ref_tooltip=Komentáře, kde uživatel změní větev/značku spojenou s problémem
comment_type_group_reference=Reference comment_type_group_reference=Reference
comment_type_group_label=Štítek comment_type_group_label=Štítek
@ -780,7 +782,7 @@ comment_type_group_deadline=Uzávěrka
comment_type_group_dependency=Závislost comment_type_group_dependency=Závislost
comment_type_group_lock=Stav zámku comment_type_group_lock=Stav zámku
comment_type_group_review_request=Žádost o posouzení comment_type_group_review_request=Žádost o posouzení
comment_type_group_pull_request_push=Přidané commity comment_type_group_pull_request_push=Přidané revize
comment_type_group_project=Projekt comment_type_group_project=Projekt
comment_type_group_issue_ref=Referenční číslo problému comment_type_group_issue_ref=Referenční číslo problému
saved_successfully=Vaše nastavení bylo úspěšně uloženo. saved_successfully=Vaše nastavení bylo úspěšně uloženo.
@ -822,7 +824,7 @@ activations_pending=Čekající aktivace
can_not_add_email_activations_pending=Existuje čekající aktivace, zkuste to znovu za pár minut, pokud chcete přidat nový e-mail. can_not_add_email_activations_pending=Existuje čekající aktivace, zkuste to znovu za pár minut, pokud chcete přidat nový e-mail.
delete_email=Smazat delete_email=Smazat
email_deletion=Odstranit e-mailovou adresu email_deletion=Odstranit e-mailovou adresu
email_deletion_desc=E-mailová adresa a přidružené informace budou z vašeho účtu odstraněny. Commity Gitu s touto e-mailovou adresou zůstanou nezměněny. Pokračovat? email_deletion_desc=E-mailová adresa a přidružené informace budou z vašeho účtu odstraněny. Revize Gitu s touto e-mailovou adresou zůstanou nezměněny. Pokračovat?
email_deletion_success=E-mailová adresa byla odstraněna. email_deletion_success=E-mailová adresa byla odstraněna.
theme_update_success=Váš motiv vzhledu byl aktualizován. theme_update_success=Váš motiv vzhledu byl aktualizován.
theme_update_error=Vybraný motiv vzhledu neexistuje. theme_update_error=Vybraný motiv vzhledu neexistuje.
@ -838,16 +840,16 @@ add_email_success=Nová e-mailová adresa byla přidána.
email_preference_set_success=Nastavení e-mailu bylo úspěšně nastaveno. email_preference_set_success=Nastavení e-mailu bylo úspěšně nastaveno.
add_openid_success=Nová OpenID adresa byla přidána. add_openid_success=Nová OpenID adresa byla přidána.
keep_email_private=Skrýt e-mailovou adresu keep_email_private=Skrýt e-mailovou adresu
keep_email_private_popup=Vaše e-mailová adresa nebude zobrazena na vašem profilu a nebude výchozí adresou pro commity provedené skrze webové rozhraní, jako nahrávání, úpravy a sloučení. Namísto toho lze použít speciální adresu %s pro propojení commitů s vaším účtem. Tato možnost neovlivní existující commity. keep_email_private_popup=Vaše e-mailová adresa nebude zobrazena na vašem profilu a nebude výchozí adresou pro revize provedené skrze webové rozhraní, jako nahrávání, úpravy a slučování. Namísto toho lze použít speciální adresu %s pro propojení revizí s vaším účtem. Tato možnost neovlivní existující revize.
openid_desc=OpenID vám umožní delegovat ověřování na externího poskytovatele. openid_desc=OpenID vám umožní delegovat ověřování na externího poskytovatele.
manage_ssh_keys=Správa klíčů SSH manage_ssh_keys=Správa klíčů SSH
manage_ssh_principals=Spravovat SSH Principal certifikáty manage_ssh_principals=Spravovat SSH Principal certifikáty
manage_gpg_keys=Správa klíčů GPG manage_gpg_keys=Správa klíčů GPG
add_key=Přidat klíč add_key=Přidat klíč
ssh_desc=Tyto veřejné klíče SSH jsou propojeny s vaším účtem. Odpovídající soukromé klíče umožní plný přístup k vašim repozitářům. Klíče SSH, které byly ověřeny, mohou být použity pro ověření Git commitů podepsaných přes SSH. ssh_desc=Tyto veřejné klíče SSH jsou propojeny s vaším účtem. Odpovídající soukromé klíče umožní plný přístup k vašim repozitářům. Klíče SSH, které byly ověřeny, mohou být použity pro ověření Git revizí podepsaných přes SSH.
principal_desc=Tyto SSH Principal certifikáty jsou přidruženy k vašemu účtu a umožňují plný přístup do vašich repozitářů. principal_desc=Tyto SSH Principal certifikáty jsou přidruženy k vašemu účtu a umožňují plný přístup do vašich repozitářů.
gpg_desc=Tyto veřejné klíče GPG jsou propojeny s vaším účtem a používají se k ověření vašich commitů. Uložte je na bezpečné místo, jelikož umožňují podepsat commity vaší identitou. gpg_desc=Tyto veřejné klíče GPG jsou propojeny s vaším účtem a používají se k ověření vašich revizí. Uložte je na bezpečné místo, jelikož umožňují podepsat revize vaší identitou.
ssh_helper=<strong>Potřebujete pomoct?</strong> Podívejte se do příručky, jak <a href="%s">vytvořit vlastní klíče SSH</a> nebo vyřešte <a href="%s">běžné problémy</a>, se kterými se můžete potkat při použití SSH. ssh_helper=<strong>Potřebujete pomoct?</strong> Podívejte se do příručky, jak <a href="%s">vytvořit vlastní klíče SSH</a> nebo vyřešte <a href="%s">běžné problémy</a>, se kterými se můžete potkat při použití SSH.
gpg_helper=<strong>Potřebujete pomoct?</strong> Podívejte se do příručky <a href="%s">o GPG</a>. gpg_helper=<strong>Potřebujete pomoct?</strong> Podívejte se do příručky <a href="%s">o GPG</a>.
add_new_key=Přidat klíč SSH add_new_key=Přidat klíč SSH
@ -861,9 +863,9 @@ ssh_principal_been_used=Tento SSH Principal certifikát již byl přidán na ser
gpg_key_id_used=Veřejný GPG klíč se stejným ID již existuje. gpg_key_id_used=Veřejný GPG klíč se stejným ID již existuje.
gpg_no_key_email_found=Tento GPG klíč neodpovídá žádné aktivované e-mailové adrese spojené s vaším účtem. Může být stále přidán, pokud podepíšete zadaný token. gpg_no_key_email_found=Tento GPG klíč neodpovídá žádné aktivované e-mailové adrese spojené s vaším účtem. Může být stále přidán, pokud podepíšete zadaný token.
gpg_key_matched_identities=Odpovídající identity: gpg_key_matched_identities=Odpovídající identity:
gpg_key_matched_identities_long=Vložené identity v tomto klíči odpovídají následujícím aktivovaným e-mailovým adresám tohoto uživatele. Commity odpovídající těmto e-mailovým adresám lze ověřit pomocí tohoto klíče. gpg_key_matched_identities_long=Vložené identity v tomto klíči odpovídají následujícím aktivovaným e-mailovým adresám tohoto uživatele. Revize odpovídající těmto e-mailovým adresám lze ověřit pomocí tohoto klíče.
gpg_key_verified=Ověřený klíč gpg_key_verified=Ověřený klíč
gpg_key_verified_long=Klíč byl ověřen pomocí tokenu a může být použit k ověření commitů shodujících se s libovolnou aktivovanou e-mailovou adresou pro tohoto uživatele navíc k jakékoli odpovídající identitě tohoto klíče. gpg_key_verified_long=Klíč byl ověřen pomocí tokenu a může být použit k ověření revizí shodujících se s libovolnou aktivovanou e-mailovou adresou pro tohoto uživatele navíc k jakékoli odpovídající identitě tohoto klíče.
gpg_key_verify=Ověřit gpg_key_verify=Ověřit
gpg_invalid_token_signature=Zadaný GPG klíč, podpis a token se neshodují nebo je token zastaralý. gpg_invalid_token_signature=Zadaný GPG klíč, podpis a token se neshodují nebo je token zastaralý.
gpg_token_required=Musíte zadat podpis pro níže uvedený token gpg_token_required=Musíte zadat podpis pro níže uvedený token
@ -874,7 +876,7 @@ gpg_token_signature=Zakódovaný podpis GPG
key_signature_gpg_placeholder=Začíná textem „-----BEGIN PGP SIGNATURE-----“ key_signature_gpg_placeholder=Začíná textem „-----BEGIN PGP SIGNATURE-----“
verify_gpg_key_success=GPG klíč „%s“ byl ověřen. verify_gpg_key_success=GPG klíč „%s“ byl ověřen.
ssh_key_verified=Ověřený klíč ssh_key_verified=Ověřený klíč
ssh_key_verified_long=Klíč byl ověřen pomocí tokenu a může být použit k ověření commitů shodujících se s libovolnou vaší aktivovanou e-mailovou adresou pro tohoto uživatele. ssh_key_verified_long=Klíč byl ověřen pomocí tokenu a může být použit k ověření revizí shodujících se s libovolnou vaší aktivovanou e-mailovou adresou pro tohoto uživatele.
ssh_key_verify=Ověřit ssh_key_verify=Ověřit
ssh_invalid_token_signature=Zadaný SSH klíč, podpis nebo token se neshodují nebo je token zastaralý. ssh_invalid_token_signature=Zadaný SSH klíč, podpis nebo token se neshodují nebo je token zastaralý.
ssh_token_required=Musíte zadat podpis pro níže uvedený token ssh_token_required=Musíte zadat podpis pro níže uvedený token
@ -896,7 +898,7 @@ ssh_key_deletion=Odebrat klíč SSH
gpg_key_deletion=Odebrat klíč GPG gpg_key_deletion=Odebrat klíč GPG
ssh_principal_deletion=Odstranit SSH Principal certifikát ssh_principal_deletion=Odstranit SSH Principal certifikát
ssh_key_deletion_desc=Odstranění SSH klíče zruší jeho přístup k vašemu účtu. Pokračovat? ssh_key_deletion_desc=Odstranění SSH klíče zruší jeho přístup k vašemu účtu. Pokračovat?
gpg_key_deletion_desc=Odstraněním klíče GPG zneplatníte ověření commitů, které jsou jím podepsány. Pokračovat? gpg_key_deletion_desc=Odstraněním klíče GPG zneplatníte ověření revizí, které jsou jím podepsány. Pokračovat?
ssh_principal_deletion_desc=Odstranění SSH Principal certifikátu zruší jeho přístup k vašemu účtu. Pokračovat? ssh_principal_deletion_desc=Odstranění SSH Principal certifikátu zruší jeho přístup k vašemu účtu. Pokračovat?
ssh_key_deletion_success=SSH klíč byl odstraněn. ssh_key_deletion_success=SSH klíč byl odstraněn.
gpg_key_deletion_success=GPG klíč byl odstraněn. gpg_key_deletion_success=GPG klíč byl odstraněn.
@ -914,7 +916,7 @@ principal_state_desc=Tento SSH Principal certifikát byl použit během posledn
show_openid=Zobrazit na profilu show_openid=Zobrazit na profilu
hide_openid=Odstranit z profilu hide_openid=Odstranit z profilu
ssh_disabled=SSH je zakázáno ssh_disabled=SSH je zakázáno
ssh_signonly=SSH je v současné době zakázáno, proto jsou tyto klíče použity pouze pro ověření podpisu. ssh_signonly=SSH je v současné době zakázáno, proto jsou tyto klíče použity pouze pro ověření podpisu revizí.
ssh_externally_managed=Tento SSH klíč je spravován externě pro tohoto uživatele ssh_externally_managed=Tento SSH klíč je spravován externě pro tohoto uživatele
manage_social=Správa propojených účtů sociálních sítí manage_social=Správa propojených účtů sociálních sítí
social_desc=Tyto účty sociálních sítí lze použít k přihlášení k vašemu účtu. Ujistěte se, že jsou všechny vaše. social_desc=Tyto účty sociálních sítí lze použít k přihlášení k vašemu účtu. Ujistěte se, že jsou všechny vaše.
@ -966,7 +968,7 @@ oauth2_client_secret_hint=Tajný klíč se znovu nezobrazí po opuštění nebo
oauth2_application_edit=Upravit oauth2_application_edit=Upravit
oauth2_application_create_description=Aplikace OAuth2 poskytují přístup vašim aplikacím třetích stran k uživatelským účtům na této instanci. oauth2_application_create_description=Aplikace OAuth2 poskytují přístup vašim aplikacím třetích stran k uživatelským účtům na této instanci.
oauth2_application_remove_description=Odebráním OAuth2 aplikace zabrání přístupu ověřeným uživatelům na této instanci. Pokračovat? oauth2_application_remove_description=Odebráním OAuth2 aplikace zabrání přístupu ověřeným uživatelům na této instanci. Pokračovat?
oauth2_application_locked=Gitea předregistruje některé OAuth2 aplikace při spuštění, pokud je to povoleno v konfiguraci. Aby se zabránilo neočekávanému chování, nelze je upravovat ani odstranit. Více informací naleznete v dokumentaci OAuth2. oauth2_application_locked=Forgejo předem zaregistruje některé OAuth2 aplikace při spuštění, pokud je to povoleno v konfiguraci. Aby se zabránilo neočekávanému chování, nelze je upravovat ani odstranit. Více informací naleznete v dokumentaci OAuth2.
authorized_oauth2_applications=Autorizované aplikace OAuth2 authorized_oauth2_applications=Autorizované aplikace OAuth2
authorized_oauth2_applications_description=Těmto aplikacím třetích stran jste udělili přístup ke svému osobnímu účtu Forgejo. Zrušte prosím přístup aplikacím, které již nejsou používány. authorized_oauth2_applications_description=Těmto aplikacím třetích stran jste udělili přístup ke svému osobnímu účtu Forgejo. Zrušte prosím přístup aplikacím, které již nejsou používány.
@ -1113,12 +1115,12 @@ trust_model_helper_default=Výchozí: Použít výchozí model důvěry pro tuto
create_repo=Vytvořit repozitář create_repo=Vytvořit repozitář
default_branch=Výchozí větev default_branch=Výchozí větev
default_branch_label=výchozí default_branch_label=výchozí
default_branch_helper=Výchozí větev je základní větev pro žádosti o sloučení a commity kódu. default_branch_helper=Výchozí větev je základní větev pro žádosti o sloučení a revize kódu.
mirror_prune=Vyčistit mirror_prune=Vyčistit
mirror_prune_desc=Odstranit zastaralé reference na vzdálené sledování mirror_prune_desc=Odstranit zastaralé reference na vzdálené sledování
mirror_interval=Interval zrcadlení (platné časové jednotky jsou „h“, „m“ a „s“). Nastavením na 0 zakážete periodickou synchronizaci. (Minimální interval: %s) mirror_interval=Interval zrcadlení (platné časové jednotky jsou „h“, „m“ a „s“). Nastavením na 0 zakážete periodickou synchronizaci. (Minimální interval: %s)
mirror_interval_invalid=Interval zrcadlení není platný. mirror_interval_invalid=Interval zrcadlení není platný.
mirror_sync_on_commit=Synchronizovat při nahrávání commitů mirror_sync_on_commit=Synchronizovat při nahrávání revizí
mirror_address=Klonovat z URL mirror_address=Klonovat z URL
mirror_address_desc=Zadejte požadované přístupové údaje do sekce Ověření. mirror_address_desc=Zadejte požadované přístupové údaje do sekce Ověření.
mirror_address_url_invalid=Poskytnutá URL je neplatná. Všechny části musíte správně nahradit escape sekvencí. mirror_address_url_invalid=Poskytnutá URL je neplatná. Všechny části musíte správně nahradit escape sekvencí.
@ -1151,7 +1153,7 @@ blame_prior=Zobrazit blame před touto změnou
blame.ignore_revs.failed=Nepodařilo se ignorovat revize v <a href="%s">.git-blame-ignore-revs</a>. blame.ignore_revs.failed=Nepodařilo se ignorovat revize v <a href="%s">.git-blame-ignore-revs</a>.
author_search_tooltip=Zobrazí maximálně 30 uživatelů author_search_tooltip=Zobrazí maximálně 30 uživatelů
tree_path_not_found_commit=Cesta %[1]s v commitu %[2]s neexistuje tree_path_not_found_commit=Cesta %[1]s v revizi %[2]s neexistuje
tree_path_not_found_branch=Cesta %[1]s ve větvi %[2]s neexistuje tree_path_not_found_branch=Cesta %[1]s ve větvi %[2]s neexistuje
tree_path_not_found_tag=Cesta %[1]s ve značce %[2]s neexistuje tree_path_not_found_tag=Cesta %[1]s ve značce %[2]s neexistuje
@ -1267,7 +1269,7 @@ empty_message=Tento repozitář nemá žádný obsah.
broken_message=Data gitu, která jsou základem tohoto repozitáře, nelze číst. Kontaktujte správce této instance nebo smažte tento repositář. broken_message=Data gitu, která jsou základem tohoto repozitáře, nelze číst. Kontaktujte správce této instance nebo smažte tento repositář.
code=Zdrojový kód code=Zdrojový kód
code.desc=Přístup ke zdrojovým kódům, souborům, commitům a větvím. code.desc=Přístup ke zdrojovým kódům, souborům, revizím a větvím.
branch=Větev branch=Větev
tree=Strom tree=Strom
clear_ref=Vymazat aktuální referenci clear_ref=Vymazat aktuální referenci
@ -1285,8 +1287,8 @@ org_labels_desc=Štítky na úrovni organizace, které mohou být použity se <s
org_labels_desc_manage=spravovat org_labels_desc_manage=spravovat
milestones=Milníky milestones=Milníky
commits=Commity commits=Revize
commit=Commit commit=Revize
release=Vydání release=Vydání
releases=Vydání releases=Vydání
tag=Značka tag=Značka
@ -1315,18 +1317,19 @@ view_git_blame=Zobrazit git blame
video_not_supported_in_browser=Váš prohlížeč nepodporuje značku HTML5 „video“. video_not_supported_in_browser=Váš prohlížeč nepodporuje značku HTML5 „video“.
audio_not_supported_in_browser=Váš prohlížeč nepodporuje značku HTML5 „audio“. audio_not_supported_in_browser=Váš prohlížeč nepodporuje značku HTML5 „audio“.
stored_lfs=Uloženo pomocí Git LFS stored_lfs=Uloženo pomocí Git LFS
stored_annex=Uloženo pomocí Git Annex
symbolic_link=Symbolický odkaz symbolic_link=Symbolický odkaz
executable_file=Spustitelný soubor executable_file=Spustitelný soubor
vendored = Vendorováno vendored = Vendorováno
generated = Generováno generated = Generováno
commit_graph=Graf commitů commit_graph=Graf revizí
commit_graph.select=Vybrat větve commit_graph.select=Vybrat větve
commit_graph.hide_pr_refs=Skrýt žádosti o sloučení commit_graph.hide_pr_refs=Skrýt žádosti o sloučení
commit_graph.monochrome=Černobílé commit_graph.monochrome=Černobílé
commit_graph.color=Barva commit_graph.color=Barva
commit.contained_in=Tento commit je obsažen v: commit.contained_in=Tato revize je obsažena v:
commit.contained_in_default_branch=Tento commit je součástí výchozí větve commit.contained_in_default_branch=Tato revize je součástí výchozí větve
commit.load_referencing_branches_and_tags=Načíst větve a značky odkazující na tento commit commit.load_referencing_branches_and_tags=Načíst větve a značky odkazující na tuto revizi
blame=Blame blame=Blame
download_file=Stáhnout soubor download_file=Stáhnout soubor
normal_view=Normální zobrazení normal_view=Normální zobrazení
@ -1340,6 +1343,7 @@ editor.upload_file=Nahrát soubor
editor.edit_file=Upravit soubor editor.edit_file=Upravit soubor
editor.preview_changes=Náhled změn editor.preview_changes=Náhled změn
editor.cannot_edit_lfs_files=LFS soubory nemohou být upravovány přes webové rozhraní. editor.cannot_edit_lfs_files=LFS soubory nemohou být upravovány přes webové rozhraní.
editor.cannot_edit_annex_files=Annex soubory nemohou být upravovány přes webové rozhraní.
editor.cannot_edit_non_text_files=Binární soubory nemohou být upravovány přes webové rozhraní. editor.cannot_edit_non_text_files=Binární soubory nemohou být upravovány přes webové rozhraní.
editor.edit_this_file=Upravit soubor editor.edit_this_file=Upravit soubor
editor.this_file_locked=Soubor je uzamčen editor.this_file_locked=Soubor je uzamčen
@ -1363,12 +1367,12 @@ editor.patching=Záplatování:
editor.fail_to_apply_patch=Nelze použít záplatu „%s“ editor.fail_to_apply_patch=Nelze použít záplatu „%s“
editor.new_patch=Nová záplata editor.new_patch=Nová záplata
editor.commit_message_desc=Přidat volitelný rozšířený popis… 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.signoff_desc=Přidat podpis přispěvatele „Signed-off-by“ na konec zprávy revize.
editor.commit_directly_to_this_branch=Odeslat přímo do větve <strong class="%[2]s">%[1]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=Vytvořit <strong>novou větev</strong> pro tuto revizi a vytvořit žádost o sloučení.
editor.create_new_branch_np=Vytvořte <strong>novou větev</strong> z tohoto commitu. editor.create_new_branch_np=Vytvořit <strong>novou větev</strong> z této revize.
editor.propose_file_change=Navrhnout změnu souboru editor.propose_file_change=Navrhnout změnu souboru
editor.new_branch_name=Pojmenujte novou větev pro tento commit editor.new_branch_name=Pojmenujte novou větev pro tuto revizi
editor.new_branch_name_desc=Název nové větve… editor.new_branch_name_desc=Název nové větve…
editor.cancel=Zrušit editor.cancel=Zrušit
editor.filename_cannot_be_empty=Jméno nemůže být prázdné. editor.filename_cannot_be_empty=Jméno nemůže být prázdné.
@ -1380,7 +1384,7 @@ editor.file_is_a_symlink=`„%s“ je symbolický odkaz. Symbolické odkazy nemo
editor.filename_is_a_directory=Jméno souboru „%s“ je již použito jako jméno adresáře v tomto repozitáři. editor.filename_is_a_directory=Jméno souboru „%s“ je již použito jako jméno adresáře v tomto repozitáři.
editor.file_editing_no_longer_exists=Upravovaný soubor „%s“ již není součástí tohoto repozitáře. editor.file_editing_no_longer_exists=Upravovaný soubor „%s“ již není součástí tohoto repozitáře.
editor.file_deleting_no_longer_exists=Odstraňovaný soubor „%s“ již není součástí tohoto repozitáře. editor.file_deleting_no_longer_exists=Odstraňovaný soubor „%s“ již není součástí tohoto repozitáře.
editor.file_changed_while_editing=Obsah souboru se od zahájení úprav změnil. <a target="_blank" rel="noopener noreferrer" href="%s">Klikněte sem</a> pro jejich zobrazení nebo <strong>proveďte commit změn ještě jednou</strong> pro jejich přepsání. editor.file_changed_while_editing=Obsah souboru se od zahájení úprav změnil. <a target="_blank" rel="noopener noreferrer" href="%s">Klikněte sem</a> pro jeho zobrazení nebo <strong>odešlete změny ještě jednou</strong> pro jeho přepsání.
editor.file_already_exists=Soubor „%s“ již existuje v tomto repozitáři. editor.file_already_exists=Soubor „%s“ již existuje v tomto repozitáři.
editor.commit_empty_file_header=Odeslat prázdný soubor editor.commit_empty_file_header=Odeslat prázdný soubor
editor.commit_empty_file_text=Soubor, který se chystáte odeslat, je prázdný. Pokračovat? editor.commit_empty_file_text=Soubor, který se chystáte odeslat, je prázdný. Pokračovat?
@ -1394,16 +1398,16 @@ editor.add_subdir=Přidat adresář…
editor.unable_to_upload_files=Nepodařilo se nahrát soubory do „%s“. Chyba: %v editor.unable_to_upload_files=Nepodařilo se nahrát soubory do „%s“. Chyba: %v
editor.upload_file_is_locked=Soubor „%s“ je uzamčen uživatelem %s. editor.upload_file_is_locked=Soubor „%s“ je uzamčen uživatelem %s.
editor.upload_files_to_dir=Nahrány soubory do „%s“ editor.upload_files_to_dir=Nahrány soubory do „%s“
editor.cannot_commit_to_protected_branch=Nelze vytvořit commit v chráněné větvi „%s“. editor.cannot_commit_to_protected_branch=Nelze vytvořit revizi v chráněné větvi „%s“.
editor.no_commit_to_branch=Nepodařilo se odeslat přímo do větve: editor.no_commit_to_branch=Nepodařilo se odeslat přímo do větve:
editor.user_no_push_to_branch=Uživatel nemůže nahrávat do větve editor.user_no_push_to_branch=Uživatel nemůže nahrávat do větve
editor.require_signed_commit=Větev vyžaduje podepsaný commit editor.require_signed_commit=Větev vyžaduje podepsanou revizi
editor.cherry_pick=Cherry-pick %s na: editor.cherry_pick=Cherry-pick %s na:
editor.revert=Vrátit %s na: editor.revert=Vrátit %s na:
commits.desc=Procházet historii změn zdrojového kódu. commits.desc=Procházet historii změn zdrojového kódu.
commits.commits=Commity commits.commits=Revize
commits.no_commits=Žádné společné commity. „%s“ a „%s“ mají zcela odlišnou historii. commits.no_commits=Žádné společné revize. „%s“ a „%s“ mají zcela odlišnou historii.
commits.nothing_to_compare=Tyto větve jsou stejné. commits.nothing_to_compare=Tyto větve jsou stejné.
commits.search=Hledání commitů… commits.search=Hledání commitů…
commits.search.tooltip=Můžete předřadit klíčová slova s „author:“, „committer:“, „after:“ nebo „before:“, např. „revert author:Alice before:2019-01-03“. commits.search.tooltip=Můžete předřadit klíčová slova s „author:“, „committer:“, „after:“ nebo „before:“, např. „revert author:Alice before:2019-01-03“.
@ -1416,21 +1420,21 @@ commits.older=Starší
commits.newer=Novější commits.newer=Novější
commits.signed_by=Podepsáno commits.signed_by=Podepsáno
commits.signed_by_untrusted_user=Podepsáno nedůvěryhodným uživatelem commits.signed_by_untrusted_user=Podepsáno nedůvěryhodným uživatelem
commits.signed_by_untrusted_user_unmatched=Podepsáno nedůvěryhodným uživatelem, který nesouhlasí s přispěvatelem commits.signed_by_untrusted_user_unmatched=Podepsáno nedůvěryhodným uživatelem, který neodpovídá přispěvateli
commits.gpg_key_id=ID klíče GPG commits.gpg_key_id=ID klíče GPG
commits.ssh_key_fingerprint=Otisk klíče SSH commits.ssh_key_fingerprint=Otisk klíče SSH
commits.view_path=Zobrazit v tomto bodě v historii commits.view_path=Zobrazit tento bod v historii
commit.operations=Operace commit.operations=Operace
commit.revert=Vrátit commit.revert=Vrátit
commit.revert-header=Vrátit: %s commit.revert-header=Vrátit: %s
commit.revert-content=Vyberte větev pro návrat na: commit.revert-content=Vyberte větev pro návrat:
commit.cherry-pick=Cherry-pick commit.cherry-pick=Cherry-pick
commit.cherry-pick-header=Cherry-pick: %s commit.cherry-pick-header=Cherry-pick: %s
commit.cherry-pick-content=Vyberte větev pro Cherry-pick na: commit.cherry-pick-content=Vyberte větev pro Cherry-pick:
commitstatus.error=Chyba commitstatus.error=Chyba
commitstatus.failure=Chyba commitstatus.failure=Selhání
commitstatus.pending=Čekající commitstatus.pending=Čekající
commitstatus.success=Úspěch commitstatus.success=Úspěch
@ -1613,15 +1617,15 @@ issues.context.edit=Upravit
issues.context.delete=Smazat issues.context.delete=Smazat
issues.no_content=K dispozici není žádný popis. issues.no_content=K dispozici není žádný popis.
issues.close=Zavřít problém issues.close=Zavřít problém
issues.comment_pull_merged_at=sloučený commit %[1]s do %[2]s %[3]s issues.comment_pull_merged_at=sloučena revize %[1]s do %[2]s %[3]s
issues.comment_manually_pull_merged_at=ručně sloučený commit %[1]s do %[2]s %[3]s issues.comment_manually_pull_merged_at=ručně sloučena revize %[1]s do %[2]s %[3]s
issues.close_comment_issue=Zavřít s komentářem issues.close_comment_issue=Zavřít s komentářem
issues.reopen_issue=Znovu otevřít issues.reopen_issue=Znovu otevřít
issues.reopen_comment_issue=Znovu otevřít s komentářem issues.reopen_comment_issue=Znovu otevřít s komentářem
issues.create_comment=Okomentovat issues.create_comment=Okomentovat
issues.closed_at=`uzavřel/a tento problém <a id="%[1]s" href="#%[1]s">%[2]s</a>` issues.closed_at=`uzavřel/a tento problém <a id="%[1]s" href="#%[1]s">%[2]s</a>`
issues.reopened_at=`znovu otevřel/a tento problém <a id="%[1]s" href="#%[1]s">%[2]s</a>` issues.reopened_at=`znovu otevřel/a tento problém <a id="%[1]s" href="#%[1]s">%[2]s</a>`
issues.commit_ref_at=`odkázal/a na tento problém z commitu <a id="%[1]s" href="#%[1]s">%[2]s</a>` issues.commit_ref_at=`odkázal/a na tento problém z revize <a id="%[1]s" href="#%[1]s">%[2]s</a>`
issues.ref_issue_from=`<a href="%[3]s">odkázal/a na tento problém %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>` issues.ref_issue_from=`<a href="%[3]s">odkázal/a na tento problém %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>`
issues.ref_pull_from=`<a href="%[3]s">odkázal/a na tuto žádost o sloučení %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>` issues.ref_pull_from=`<a href="%[3]s">odkázal/a na tuto žádost o sloučení %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>`
issues.ref_closing_from=`<a href="%[3]s">odkazoval/a na tento problém ze žádosti o sloučení %[4]s, která jej uzavře</a>, <a id="%[1]s" href="#%[1]s">%[2]s</a>` issues.ref_closing_from=`<a href="%[3]s">odkazoval/a na tento problém ze žádosti o sloučení %[4]s, která jej uzavře</a>, <a id="%[1]s" href="#%[1]s">%[2]s</a>`
@ -1727,8 +1731,8 @@ issues.due_date=Termín dokončení
issues.invalid_due_date_format=Termín dokončení musí být ve formátu „rrrr-mm-dd“. issues.invalid_due_date_format=Termín dokončení musí být ve formátu „rrrr-mm-dd“.
issues.error_modifying_due_date=Změna termínu dokončení selhala. issues.error_modifying_due_date=Změna termínu dokončení selhala.
issues.error_removing_due_date=Odstranění termínu dokončení selhalo. issues.error_removing_due_date=Odstranění termínu dokončení selhalo.
issues.push_commit_1=přidal/a %d commit %s issues.push_commit_1=přidal/a %d revizi %s
issues.push_commits_n=přidal/a %d commity %s issues.push_commits_n=přidal/a %d revize %s
issues.force_push_codes=`vynucené nahrání %[1]s od <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> do <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> %[6]s` issues.force_push_codes=`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.force_push_compare=Porovnat
issues.due_date_form=rrrr-mm-dd issues.due_date_form=rrrr-mm-dd
@ -1833,13 +1837,13 @@ pulls.switch_comparison_type=Přepnout typ porovnání
pulls.switch_head_and_base=Prohodit hlavní a základní větev pulls.switch_head_and_base=Prohodit hlavní a základní větev
pulls.filter_branch=Filtrovat větev pulls.filter_branch=Filtrovat větev
pulls.no_results=Nebyly nalezeny žádné výsledky. pulls.no_results=Nebyly nalezeny žádné výsledky.
pulls.show_all_commits=Zobrazit všechny commity pulls.show_all_commits=Zobrazit všechny revize
pulls.show_changes_since_your_last_review=Zobrazit změny od vašeho posledního posouzení pulls.show_changes_since_your_last_review=Zobrazit změny od vašeho posledního posouzení
pulls.showing_only_single_commit=Zobrazuji pouze změny commitu %[1]s pulls.showing_only_single_commit=Zobrazuji pouze změny revize %[1]s
pulls.showing_specified_commit_range=Zobrazují se pouze změny mezi %[1]s..%[2]s pulls.showing_specified_commit_range=Zobrazují se pouze změny mezi %[1]s..%[2]s
pulls.select_commit_hold_shift_for_range=Vyberte commit. Podržte klávesu shift + klepněte pro výběr rozsahu pulls.select_commit_hold_shift_for_range=Vyberte revizi. Podržte klávesu Shift a klikněte pro výběr rozsahu
pulls.review_only_possible_for_full_diff=Posouzení je možné pouze při zobrazení plného rozlišení pulls.review_only_possible_for_full_diff=Posouzení je možné pouze při zobrazení plného rozlišení
pulls.filter_changes_by_commit=Filtrovat podle commitu pulls.filter_changes_by_commit=Filtrovat podle revize
pulls.nothing_to_compare=Tyto větve jsou stejné. Není třeba vytvářet žádost o sloučení. pulls.nothing_to_compare=Tyto větve jsou stejné. Není třeba vytvářet žádost o sloučení.
pulls.nothing_to_compare_have_tag = Vybraná větev a značka jsou shodné. pulls.nothing_to_compare_have_tag = Vybraná větev a značka jsou shodné.
pulls.nothing_to_compare_and_allow_empty_pr=Tyto větve jsou stejné. Tato žádost o sloučení bude prázdná. pulls.nothing_to_compare_and_allow_empty_pr=Tyto větve jsou stejné. Tato žádost o sloučení bude prázdná.
@ -1849,7 +1853,7 @@ pulls.title_desc_few=chce sloučit %[1]d commity z větve <code>%[2]s</code> do
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.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.change_target_branch_at=`změnil/a cílovou větev z <b>%s</b> na <b>%s</b> %s`
pulls.tab_conversation=Konverzace pulls.tab_conversation=Konverzace
pulls.tab_commits=Commity pulls.tab_commits=Revize
pulls.tab_files=Změněné soubory pulls.tab_files=Změněné soubory
pulls.reopen_to_merge=Otevřete znovu tuto žádost pro provedení sloučení. pulls.reopen_to_merge=Otevřete znovu tuto žádost pro provedení sloučení.
pulls.cant_reopen_deleted_branch=Tuto žádost o sloučení nelze znovu otevřít, protože větev byla smazána. pulls.cant_reopen_deleted_branch=Tuto žádost o sloučení nelze znovu otevřít, protože větev byla smazána.
@ -1868,7 +1872,7 @@ pulls.data_broken=Tato žádost o sloučení je rozbitá kvůli chybějícím in
pulls.files_conflicted=Tato žádost o sloučení obsahuje změny, které jsou v rozporu s cílovou větví. pulls.files_conflicted=Tato žádost o sloučení obsahuje změny, které jsou v rozporu s cílovou větví.
pulls.is_checking=Právě probíhá kontrola konfliktů při sloučení. Zkuste to za chvíli. pulls.is_checking=Právě probíhá kontrola konfliktů při sloučení. Zkuste to za chvíli.
pulls.is_ancestor=Tato větev je již součástí cílové větve. Není co sloučit. pulls.is_ancestor=Tato větev je již součástí cílové větve. Není co sloučit.
pulls.is_empty=Změny na této větvi jsou již na cílové větvi. Toto bude prázdný commit. pulls.is_empty=Změny na této větvi se již nacházejí na cílové větvi. Tato revize bude prázdná.
pulls.required_status_check_failed=Některé požadované kontroly nebyly úspěšné. pulls.required_status_check_failed=Některé požadované kontroly nebyly úspěšné.
pulls.required_status_check_missing=Některé požadované kontroly chybí. pulls.required_status_check_missing=Některé požadované kontroly chybí.
pulls.required_status_check_administrator=Jako administrátor stále můžete sloučit tuto žádost. pulls.required_status_check_administrator=Jako administrátor stále můžete sloučit tuto žádost.
@ -1889,25 +1893,25 @@ pulls.reject_count_1=%d žádost o změnu
pulls.reject_count_n=%d žádostí o změnu pulls.reject_count_n=%d žádostí o změnu
pulls.waiting_count_1=%d čekající posouzení pulls.waiting_count_1=%d čekající posouzení
pulls.waiting_count_n=%d čekajících posouzení pulls.waiting_count_n=%d čekajících posouzení
pulls.wrong_commit_id=id commitu musí být id commitu v cílové větvi pulls.wrong_commit_id=id revize musí být id revize v cílové větvi
pulls.no_merge_desc=Tato žádost nemůže být sloučena, protože všechny možnosti repozitáře na sloučení jsou zakázány. pulls.no_merge_desc=Tato žádost nemůže být sloučena, protože všechny možnosti repozitáře na sloučení jsou zakázány.
pulls.no_merge_helper=Povolte možnosti sloučení v nastavení repozitáře nebo proveďte sloučení žádosti ručně. pulls.no_merge_helper=Povolte možnosti sloučení v nastavení repozitáře nebo proveďte sloučení žádosti ručně.
pulls.no_merge_wip=Tato žádost nemůže být sloučena, protože je označena jako rozpracovaná. pulls.no_merge_wip=Tato žádost nemůže být sloučena, protože je označena jako rozpracovaná.
pulls.no_merge_not_ready=Tento žádost není připravena na sloučení, zkontrolujte stav posouzení a kontroly stavu. pulls.no_merge_not_ready=Tento žádost není připravena na sloučení, zkontrolujte stav posouzení a kontroly stavu.
pulls.no_merge_access=Nemáte oprávnění sloučit tuto žádost. pulls.no_merge_access=Nemáte oprávnění sloučit tuto žádost.
pulls.merge_pull_request=Vytvořit slučovací commit pulls.merge_pull_request=Vytvořit slučovací revizi
pulls.rebase_merge_pull_request=Rebase pak fast-forward pulls.rebase_merge_pull_request=Rebase pak fast-forward
pulls.rebase_merge_commit_pull_request=Rebase a poté vytvořit slučovací commit pulls.rebase_merge_commit_pull_request=Provést rebase a poté vytvořit slučovací revizi
pulls.squash_merge_pull_request=Vytvořit squash commit pulls.squash_merge_pull_request=Vytvořit squash revizi
pulls.merge_manually=Sloučeno ručně pulls.merge_manually=Sloučeno ručně
pulls.merge_commit_id=ID slučovacího commitu pulls.merge_commit_id=ID slučovací revize
pulls.require_signed_wont_sign=Větev vyžaduje podepsané commity, ale toto sloučení nebude podepsáno pulls.require_signed_wont_sign=Větev vyžaduje podepsané revize, ale toto sloučení nebude podepsáno
pulls.invalid_merge_option=Pro tuto žádost nemůžete použít tuto možnost sloučení. pulls.invalid_merge_option=Pro tuto žádost nemůžete použít tuto možnost sloučení.
pulls.merge_conflict=Sloučení selhalo: při slučování došlo ke konfliktu. Tip: zkuste jinou strategii pulls.merge_conflict=Sloučení selhalo: při slučování došlo ke konfliktu. Tip: zkuste jinou strategii
pulls.merge_conflict_summary=Chybové hlášení pulls.merge_conflict_summary=Chybové hlášení
pulls.rebase_conflict=Sloučení selhalo: došlo ke konfliktu při rebase commitu: %[1]s. Tip: zkuste jinou strategii pulls.rebase_conflict=Sloučení selhalo: došlo ke konfliktu při provádění rebase revize %[1]s. Tip: zkuste jinou strategii
pulls.rebase_conflict_summary=Chybové hlášení pulls.rebase_conflict_summary=Chybové hlášení
pulls.unrelated_histories=Sloučení selhalo: hlava a základ revize nesdílí společnou historii. Tip: zkuste jinou strategii pulls.unrelated_histories=Sloučení selhalo: hlava a základ revize nesdílí společnou historii. Tip: zkuste jinou strategii
pulls.merge_out_of_date=Sloučení selhalo: základ byl aktualizován při generování sloučení. Tip: zkuste to znovu. pulls.merge_out_of_date=Sloučení selhalo: základ byl aktualizován při generování sloučení. Tip: zkuste to znovu.
@ -1937,7 +1941,7 @@ pulls.reopened_at=`znovu otevřel/a tuto žádost o sloučení <a id="%[1]s" hre
pulls.cmd_instruction_hint=Zobrazit instrukce příkazové řádky pulls.cmd_instruction_hint=Zobrazit instrukce příkazové řádky
pulls.cmd_instruction_checkout_desc=Z vašeho repositáře projektu se podívejte na novou větev a vyzkoušejte změny. pulls.cmd_instruction_checkout_desc=Z vašeho repositáře projektu se podívejte na novou větev a vyzkoušejte změny.
pulls.cmd_instruction_merge_title=Sloučit pulls.cmd_instruction_merge_title=Sloučit
pulls.cmd_instruction_merge_desc=Slučte změny a aktualizujte je na Gitea. pulls.cmd_instruction_merge_desc=Slučte změny a aktualizujte je na Forgeju.
pulls.clear_merge_message=Vymazat zprávu o sloučení pulls.clear_merge_message=Vymazat zprávu o sloučení
pulls.auto_merge_button_when_succeed=(Když kontroly uspějí) pulls.auto_merge_button_when_succeed=(Když kontroly uspějí)
@ -1959,7 +1963,7 @@ pulls.delete.text=Opravdu chcete odstranit tuto žádost o sloučení? (Tímto t
pull.deleted_branch=(odstraněno):%s pull.deleted_branch=(odstraněno):%s
milestones.new=Nový milník milestones.new=Nový milník
milestones.closed=Zavřen dne %s milestones.closed=Uzavřeno %s
milestones.update_ago=Aktualizováno %s milestones.update_ago=Aktualizováno %s
milestones.no_due_date=Bez lhůty dokončení milestones.no_due_date=Bez lhůty dokončení
milestones.open=Otevřít milestones.open=Otevřít
@ -1988,15 +1992,15 @@ milestones.filter_sort.most_complete=Nejvíce dokončené
milestones.filter_sort.most_issues=Nejvíce problémů milestones.filter_sort.most_issues=Nejvíce problémů
milestones.filter_sort.least_issues=Nejméně problémů milestones.filter_sort.least_issues=Nejméně problémů
signing.will_sign=Tento commit bude podepsána klíčem „%s“. signing.will_sign=Tato revize bude podepsána klíčem „%s“.
signing.wont_sign.error=Došlo k chybě při kontrole, zda může být commit podepsán. signing.wont_sign.error=Došlo k chybě při kontrole, zda může být revize podepsána.
signing.wont_sign.nokey=Tato instance nemá žádný klíč k podepsání tohoto commitu. signing.wont_sign.nokey=Tato instance nemá žádný klíč k podepsání této revize.
signing.wont_sign.never=Commity nejsou nikdy podepsány. signing.wont_sign.never=Revize nebudou nikdy podepsány.
signing.wont_sign.always=Commity jsou vždy podepsány. signing.wont_sign.always=Revize budou vždy podepsány.
signing.wont_sign.pubkey=Commit nebude podepsán, protože nemáte veřejný klíč spojený s vaším účtem. signing.wont_sign.pubkey=Reviz nebude podepsána, protože nemáte veřejný klíč spojený s vaším účtem.
signing.wont_sign.twofa=Pro podepisování commitů musíte mít zapnuto dvoufázové ověření. signing.wont_sign.twofa=Pro podepisování revizí musíte mít zapnuto dvoufázové ověření.
signing.wont_sign.parentsigned=Commit nebude podepsán, protože nadřazený commit není podepsán. signing.wont_sign.parentsigned=Revize nebude podepsána, protože nadřazená revize není podepsána.
signing.wont_sign.basesigned=Sloučení nebude podepsáno, protože základní commit není podepsaný. signing.wont_sign.basesigned=Revize nebude podepsána, protože základní revize není podepsána.
signing.wont_sign.headsigned=Sloučení nebude podepsáno, protože hlavní revize není podepsána. signing.wont_sign.headsigned=Sloučení nebude podepsáno, protože hlavní revize není podepsána.
signing.wont_sign.commitssigned=Sloučení nebude podepsáno, protože všechny přidružené revize nejsou podepsány. signing.wont_sign.commitssigned=Sloučení nebude podepsáno, protože všechny přidružené revize nejsou podepsány.
signing.wont_sign.approved=Sloučení nebude podepsáno, protože žádost o sloučení není schválena. signing.wont_sign.approved=Sloučení nebude podepsáno, protože žádost o sloučení není schválena.
@ -2015,9 +2019,9 @@ wiki.filter_page=Filtr stránky
wiki.new_page=Stránka wiki.new_page=Stránka
wiki.page_title=Název stránky wiki.page_title=Název stránky
wiki.page_content=Obsah stránky wiki.page_content=Obsah stránky
wiki.default_commit_message=Napište poznámku k této aktualizaci stránky (nepovinný). wiki.default_commit_message=Napište poznámku k této aktualizaci stránky (nepovinné).
wiki.save_page=Uložit stránku wiki.save_page=Uložit stránku
wiki.last_commit_info=%s upravil tuto stránku %s wiki.last_commit_info=Uživatel %s upravil tuto stránku %s
wiki.edit_page_button=Změnit stránku wiki.edit_page_button=Změnit stránku
wiki.new_page_button=Nová stránka wiki.new_page_button=Nová stránka
wiki.file_revision=Revize stránky wiki.file_revision=Revize stránky
@ -2076,14 +2080,14 @@ activity.title.releases_1=%d vydání
activity.title.releases_n=%d vydání activity.title.releases_n=%d vydání
activity.title.releases_published_by=%s publikoval %s activity.title.releases_published_by=%s publikoval %s
activity.published_release_label=Vydání activity.published_release_label=Vydání
activity.no_git_activity=V tomto období nebyla žádná aktivita při odevzdání. activity.no_git_activity=V tomto období nebyla žádná aktivita přispěvatelů.
activity.git_stats_exclude_merges=Při vyloučení slučování, activity.git_stats_exclude_merges=Při vyloučení slučování,
activity.git_stats_author_1=%d autor activity.git_stats_author_1=%d autor
activity.git_stats_author_n=%d autoři activity.git_stats_author_n=%d autoři
activity.git_stats_pushed_1=nahrál activity.git_stats_pushed_1=nahrál
activity.git_stats_pushed_n=nahrály activity.git_stats_pushed_n=nahrály
activity.git_stats_commit_1=%d commit activity.git_stats_commit_1=%d revize
activity.git_stats_commit_n=%d commity activity.git_stats_commit_n=%d revizí
activity.git_stats_push_to_branch=do %s a activity.git_stats_push_to_branch=do %s a
activity.git_stats_push_to_all_branches=do všech větví. activity.git_stats_push_to_all_branches=do všech větví.
activity.git_stats_on_default_branch=Na %s, activity.git_stats_on_default_branch=Na %s,
@ -2099,7 +2103,7 @@ activity.git_stats_deletion_1=%d odebrání
activity.git_stats_deletion_n=%d odebrání activity.git_stats_deletion_n=%d odebrání
contributors.contribution_type.filter_label = Typ přispění: contributors.contribution_type.filter_label = Typ přispění:
contributors.contribution_type.commits=Commity contributors.contribution_type.commits=Revize
search=Vyhledat search=Vyhledat
search.search_repo=Hledat repozitář search.search_repo=Hledat repozitář
@ -2125,9 +2129,9 @@ settings.hooks=Webhooky
settings.githooks=Git hooky settings.githooks=Git hooky
settings.basic_settings=Základní nastavení settings.basic_settings=Základní nastavení
settings.mirror_settings=Nastavení zrcadel settings.mirror_settings=Nastavení zrcadel
settings.mirror_settings.docs=Nastavte repozitář pro automatickou synchronizaci commitů, značek a větví s jiným repozitářem. settings.mirror_settings.docs=Nastavte repozitář pro automatickou synchronizaci revizí, značek a větví s jiným repozitářem.
settings.mirror_settings.docs.disabled_pull_mirror.instructions=Nastavte váš projekt pro automatické nahrávání commitů, značek a větví do jiného repozitáře. Správce webu zakázal zrcadla pro natažení. settings.mirror_settings.docs.disabled_pull_mirror.instructions=Nastavte váš projekt pro automatické nahrávání revizí, značek a větví do jiného repozitáře. Správce webu zakázal nahrávání ze zrcadel.
settings.mirror_settings.docs.disabled_push_mirror.instructions=Nastavte svůj projekt pro automatické natažení commitů, značek a větví z jiného repozitáře. settings.mirror_settings.docs.disabled_push_mirror.instructions=Nastavte svůj projekt pro automatické nahrávání revizí, značek a větví z jiného repozitáře.
settings.mirror_settings.docs.no_new_mirrors=Váš repozitář zrcadlí změny do nebo z jiného repozitáře. Mějte prosím na paměti, že v tuto chvíli nemůžete vytvořit žádná nová zrcadla. settings.mirror_settings.docs.no_new_mirrors=Váš repozitář zrcadlí změny do nebo z jiného repozitáře. Mějte prosím na paměti, že v tuto chvíli nemůžete vytvořit žádná nová zrcadla.
settings.mirror_settings.docs.can_still_use=I když nemůžete upravit stávající zrcadla nebo vytvořit nová, stále můžete použít své stávající zrcadlo. settings.mirror_settings.docs.can_still_use=I když nemůžete upravit stávající zrcadla nebo vytvořit nová, stále můžete použít své stávající zrcadlo.
settings.mirror_settings.docs.more_information_if_disabled=Více informací o zrcadlech pro nahrání a natažení naleznete zde: settings.mirror_settings.docs.more_information_if_disabled=Více informací o zrcadlech pro nahrání a natažení naleznete zde:
@ -2188,11 +2192,11 @@ settings.admin_settings=Administrátorská nastavení
settings.admin_enable_health_check=Povolit kontrolu stavu repozitáře (git fsck) settings.admin_enable_health_check=Povolit kontrolu stavu repozitáře (git fsck)
settings.admin_code_indexer=Indexování kódu settings.admin_code_indexer=Indexování kódu
settings.admin_stats_indexer=Index statistiky kódu settings.admin_stats_indexer=Index statistiky kódu
settings.admin_indexer_commit_sha=Poslední indexovaný commit settings.admin_indexer_commit_sha=Poslední indexovaná revize
settings.admin_indexer_unindexed=Neindexováno settings.admin_indexer_unindexed=Neindexováno
settings.reindex_button=Přidat do fronty reindexace settings.reindex_button=Přidat do fronty reindexace
settings.reindex_requested=Požadováno reindexování settings.reindex_requested=Požadováno reindexování
settings.admin_enable_close_issues_via_commit_in_any_branch=Zavřít problém pomocí commitu v jiné než výchozí větvi settings.admin_enable_close_issues_via_commit_in_any_branch=Zavřít problém pomocí revize provedené v jiné než výchozí větvi
settings.danger_zone=Nebezpečná zóna settings.danger_zone=Nebezpečná zóna
settings.new_owner_has_same_repo=Nový vlastník již repozitář se stejným názvem má. Vyberte prosím jiné jméno. settings.new_owner_has_same_repo=Nový vlastník již repozitář se stejným názvem má. Vyberte prosím jiné jméno.
settings.convert=Převést na běžný repozitář settings.convert=Převést na běžný repozitář
@ -2229,11 +2233,11 @@ settings.trust_model.collaborator=Spolupracovník
settings.trust_model.collaborator.long=Spolupracovník: Důvěřovat podpisům spolupracovníků settings.trust_model.collaborator.long=Spolupracovník: Důvěřovat podpisům spolupracovníků
settings.trust_model.collaborator.desc=Platné podpisy spolupracovníků tohoto repozitáře budou označeny jako „důvěryhodné“ - (ať se shodují s autorem, či nikoli). V opačném případě budou platné podpisy označeny jako „nedůvěryhodné“, pokud se podpis shoduje s přispěvatelem a „neodpovídající“, pokud ne. settings.trust_model.collaborator.desc=Platné podpisy spolupracovníků tohoto repozitáře budou označeny jako „důvěryhodné“ - (ať se shodují s autorem, či nikoli). V opačném případě budou platné podpisy označeny jako „nedůvěryhodné“, pokud se podpis shoduje s přispěvatelem a „neodpovídající“, pokud ne.
settings.trust_model.committer=Přispěvatel settings.trust_model.committer=Přispěvatel
settings.trust_model.committer.long=Přispěvatel: Důvěřovat podpisům, které odpovídají autorům (což odpovídá GitHub a přinutí Giteu nastavit jako tvůrce pro Giteou podepsané revize) settings.trust_model.committer.long=Přispěvatel: Důvěřovat podpisům, které odpovídají autorům (což odpovídá GitHubu a přinutí Forgejo nastavit se jako autora pro Forgejem podepsané revize)
settings.trust_model.committer.desc=Platné podpisy budou označeny jako „důvěryhodné“ pouze, pokud se shodují s přispěvatelem, v opačném případě budou označeny jako „neodpovídající“. To přinutí Forgejo, aby bylo přispěvatelem podepsaných commitů se skutečným přispěvatelem označeným jako Co-authored-by: a Co-committed-by: na konci commitu. Výchozí klíč Forgejo musí odpovídat uživateli v databázi. settings.trust_model.committer.desc=Platné podpisy budou označeny jako „důvěryhodné“ pouze, pokud se shodují s přispěvatelem, v opačném případě budou označeny jako „neodpovídající“. To přinutí Forgejo, aby bylo přispěvatelem podepsaných revizí se skutečným přispěvatelem označeným jako Co-authored-by: a Co-committed-by: na konci revize. Výchozí klíč Forgejo musí odpovídat uživateli v databázi.
settings.trust_model.collaboratorcommitter=Spolupracovník+Přispěvatel settings.trust_model.collaboratorcommitter=Spolupracovník+Přispěvatel
settings.trust_model.collaboratorcommitter.long=Spolupracovník+Přispěvatel: Důvěřovat podpisům od spolupracovníků, které odpovídají tvůrci revize settings.trust_model.collaboratorcommitter.long=Spolupracovník+Přispěvatel: Důvěřovat podpisům od spolupracovníků, které odpovídají tvůrci revize
settings.trust_model.collaboratorcommitter.desc=Platné podpisy spolupracovníků tohoto repozitáře budou označeny jako „důvěryhodné“, pokud se shodují s přispěvatelem. V opačném případě budou platné podpisy označeny jako "nedůvěryhodné", pokud se podpis shoduje s přispěvatelem a „neodpovídajícím“ v opačném případě. To přinutí Giteu, aby byla označena jako přispěvatel podepsaných commitů se skutečným přispěvatelem označeným jako Co-Authored-By: a Co-Committed-By: na konci commitu. Výchozí klíč Forgejo musí odpovídat uživateli v databázi. settings.trust_model.collaboratorcommitter.desc=Platné podpisy spolupracovníků tohoto repozitáře budou označeny jako „důvěryhodné“, pokud se shodují s přispěvatelem. V opačném případě budou platné podpisy označeny jako "nedůvěryhodné", pokud se podpis shoduje s přispěvatelem a „neodpovídajícím“ v opačném případě. To přinutí Forgejo, aby bylo označeno jako autor podepsaných revizí se skutečným přispěvatelem označeným jako Co-Authored-By: a Co-Committed-By: na konci revize. Výchozí klíč Forgejo musí odpovídat uživateli v databázi.
settings.wiki_delete=Odstranit data wiki settings.wiki_delete=Odstranit data wiki
settings.wiki_delete_desc=Smazání Wiki dat repozitáře je trvalé a nemůže být vráceno zpět. settings.wiki_delete_desc=Smazání Wiki dat repozitáře je trvalé a nemůže být vráceno zpět.
settings.wiki_delete_notices_1=- Natrvalo odstraní a zakáže wiki repozitáře pro %s. settings.wiki_delete_notices_1=- Natrvalo odstraní a zakáže wiki repozitáře pro %s.
@ -2412,14 +2416,14 @@ settings.protect_enable_push=Povolit nahrávání
settings.protect_enable_push_desc=Každý, kdo má přístup k zápisu, bude moci nahrávat do této větve (ale ne vynucená nahrávání). settings.protect_enable_push_desc=Každý, kdo má přístup k zápisu, bude moci nahrávat do této větve (ale ne vynucená nahrávání).
settings.protect_enable_merge=Povolit sloučení settings.protect_enable_merge=Povolit sloučení
settings.protect_whitelist_committers=Povolit omezené nahrání settings.protect_whitelist_committers=Povolit omezené nahrání
settings.protect_whitelist_committers_desc=Pouze povolení uživatelé budou moci nahrávat do této větve (ale ne vynucení nahrávání). settings.protect_whitelist_committers_desc=Pouze povolení uživatelé budou moci nahrávat do této větve (ale ne vynutit nahrání).
settings.protect_whitelist_deploy_keys=Povolit nahrání klíčům pro nasazení s přístupem pro zápis. settings.protect_whitelist_deploy_keys=Povolit nahrání klíčům pro nasazení s přístupem pro zápis.
settings.protect_whitelist_users=Povolení uživatelé pro nahrávání settings.protect_whitelist_users=Povolení uživatelé pro nahrávání
settings.protect_whitelist_search_users=Hledat uživatele… settings.protect_whitelist_search_users=Hledat uživatele…
settings.protect_whitelist_teams=Povolené týmy pro nahrávání settings.protect_whitelist_teams=Povolené týmy pro nahrávání
settings.protect_whitelist_search_teams=Vyhledat týmy… settings.protect_whitelist_search_teams=Vyhledat týmy…
settings.protect_merge_whitelist_committers=Povolit whitelist pro slučování settings.protect_merge_whitelist_committers=Povolit whitelist pro slučování
settings.protect_merge_whitelist_committers_desc=Povolit pouze vyjmenovaným uživatelům nebo týmům slučovat požadavky na natažení do této větve. settings.protect_merge_whitelist_committers_desc=Povolit slučování požadavků na sloučení do této větve pouze vyjmenovaným uživatelům nebo týmům.
settings.protect_merge_whitelist_users=Povolení uživatelé pro slučování settings.protect_merge_whitelist_users=Povolení uživatelé pro slučování
settings.protect_merge_whitelist_teams=Povolené týmy pro slučování settings.protect_merge_whitelist_teams=Povolené týmy pro slučování
settings.protect_check_status_contexts=Povolit kontrolu stavu settings.protect_check_status_contexts=Povolit kontrolu stavu
@ -2437,8 +2441,8 @@ settings.protect_approvals_whitelist_users=Povolení posuzovatelé
settings.protect_approvals_whitelist_teams=Povolené týmy pro posuzování settings.protect_approvals_whitelist_teams=Povolené týmy pro posuzování
settings.dismiss_stale_approvals=Odmítnout nekvalitní schválení settings.dismiss_stale_approvals=Odmítnout nekvalitní schválení
settings.dismiss_stale_approvals_desc=Pokud budou do větve nahrány nové revize, které mění obsah tohoto požadavku na natažení, všechna stará schválení budou zamítnuta. settings.dismiss_stale_approvals_desc=Pokud budou do větve nahrány nové revize, které mění obsah tohoto požadavku na natažení, všechna stará schválení budou zamítnuta.
settings.require_signed_commits=Vyžadovat podepsané commity settings.require_signed_commits=Vyžadovat podepsané revize
settings.require_signed_commits_desc=Odmítnout nahrání do této větve pokud nejsou podepsaná nebo jsou neověřitelná. settings.require_signed_commits_desc=Odmítnout nahrání do této větve, pokud nejsou podepsaná nebo jsou neověřitelná.
settings.protect_branch_name_pattern=Vzor jména chráněné větve settings.protect_branch_name_pattern=Vzor jména chráněné větve
settings.protect_branch_name_pattern_desc=Vzory názvů chráněných větví. Pro vzorovou syntaxi viz <a href="%s">dokumentace</a>. Příklady: main, release/** settings.protect_branch_name_pattern_desc=Vzory názvů chráněných větví. Pro vzorovou syntaxi viz <a href="%s">dokumentace</a>. Příklady: main, release/**
settings.protect_patterns=Vzory settings.protect_patterns=Vzory
@ -2459,7 +2463,7 @@ settings.block_on_official_review_requests=Blokovat sloučení při oficiální
settings.block_on_official_review_requests_desc=Slučování nebude možné, pokud mají oficiální požadavek na posouzení, i když mají k dispozici dostatek schválení. settings.block_on_official_review_requests_desc=Slučování nebude možné, pokud mají oficiální požadavek na posouzení, i když mají k dispozici dostatek schválení.
settings.block_outdated_branch=Blokovat sloučení, pokud je požadavek na natažení zastaralý settings.block_outdated_branch=Blokovat sloučení, pokud je požadavek na natažení zastaralý
settings.block_outdated_branch_desc=Slučování nebude možné, pokud je hlavní větev za základní větví. settings.block_outdated_branch_desc=Slučování nebude možné, pokud je hlavní větev za základní větví.
settings.default_branch_desc=Vybrat výchozí větev repozitáře pro požadavky na natažení a revize kódu: settings.default_branch_desc=Vybrat výchozí větev repozitáře pro žádosti o sloučení a příspěvky kódu:
settings.merge_style_desc=Sloučit styly settings.merge_style_desc=Sloučit styly
settings.default_merge_style_desc=Výchozí styl sloučení settings.default_merge_style_desc=Výchozí styl sloučení
settings.choose_branch=Vyberte větev… settings.choose_branch=Vyberte větev…
@ -2486,7 +2490,7 @@ settings.matrix.room_id=ID místnosti
settings.matrix.message_type=Typ zprávy settings.matrix.message_type=Typ zprávy
settings.archive.button=Archivovat repozitář settings.archive.button=Archivovat repozitář
settings.archive.header=Archivovat tento repozitář settings.archive.header=Archivovat tento repozitář
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.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é revize ani otevírat problémy a žádosti o sloučení.
settings.archive.success=Repozitář byl úspěšně archivován. settings.archive.success=Repozitář byl úspěšně archivován.
settings.archive.error=Nastala chyba při archivování repozitáře. Prohlédněte si záznam pro více detailů. settings.archive.error=Nastala chyba při archivování repozitáře. Prohlédněte si záznam pro více detailů.
settings.archive.error_ismirror=Nemůžete archivovat zrcadlený repozitář. settings.archive.error_ismirror=Nemůžete archivovat zrcadlený repozitář.
@ -2494,7 +2498,7 @@ settings.archive.branchsettings_unavailable=Nastavení větví není v archivova
settings.archive.tagsettings_unavailable=Nastavení značek nejsou v archivovaných repozitářích k dispozici. settings.archive.tagsettings_unavailable=Nastavení značek nejsou v archivovaných repozitářích k dispozici.
settings.unarchive.button=Zrušit archivaci repozitáře settings.unarchive.button=Zrušit archivaci repozitáře
settings.unarchive.header=Obnovit tento repozitář settings.unarchive.header=Obnovit tento repozitář
settings.unarchive.text=Obnovení repozitáře vrátí možnost přijímání commitů a nahrávání. Stejně tak se obnoví i možnost vytváření nových problémů a žádostí o sloučení. settings.unarchive.text=Obnovení repozitáře vrátí možnost přijímání revizí a nahrávání. Stejně tak se obnoví i možnost vytváření nových problémů a žádostí o sloučení.
settings.unarchive.success=Repozitář byl úspěšně obnoven. settings.unarchive.success=Repozitář byl úspěšně obnoven.
settings.unarchive.error=Nastala chyba při obnovování repozitáře. Prohlédněte si záznam pro více detailů. settings.unarchive.error=Nastala chyba při obnovování repozitáře. Prohlédněte si záznam pro více detailů.
settings.update_avatar_success=Avatar repozitáře byl aktualizován. settings.update_avatar_success=Avatar repozitáře byl aktualizován.
@ -2502,7 +2506,7 @@ settings.lfs=LFS
settings.lfs_filelist=LFS soubory uložené v tomto repozitáři settings.lfs_filelist=LFS soubory uložené v tomto repozitáři
settings.lfs_no_lfs_files=V tomto repozitáři nejsou uloženy žádné LFS soubory settings.lfs_no_lfs_files=V tomto repozitáři nejsou uloženy žádné LFS soubory
settings.lfs_findcommits=Najít revize settings.lfs_findcommits=Najít revize
settings.lfs_lfs_file_no_commits=Pro tento soubor LFS nebyly nalezeny žádné commity settings.lfs_lfs_file_no_commits=Pro tento soubor LFS nebyly nalezeny žádné revize
settings.lfs_noattribute=Tato cesta nemá uzamykatelný atribut ve výchozí větvi settings.lfs_noattribute=Tato cesta nemá uzamykatelný atribut ve výchozí větvi
settings.lfs_delete=Odstranit LFS soubor s OID %s settings.lfs_delete=Odstranit LFS soubor s OID %s
settings.lfs_delete_warning=Odstranění souboru LFS může při kontrole způsobit chybu „objekt neexistuje“. Jste si jisti? settings.lfs_delete_warning=Odstranění souboru LFS může při kontrole způsobit chybu „objekt neexistuje“. Jste si jisti?
@ -2578,7 +2582,7 @@ diff.review.approve=Schválit
diff.review.self_reject=Autoři požadavků na natažení nemohou požadovat změny na svém vlastním požadavku na natažení diff.review.self_reject=Autoři požadavků na natažení nemohou požadovat změny na svém vlastním požadavku na natažení
diff.review.reject=Požadovat změny diff.review.reject=Požadovat změny
diff.review.self_approve=Autoři požadavku na natažení nemohou schválit svůj vlastní požadavek na natažení diff.review.self_approve=Autoři požadavku na natažení nemohou schválit svůj vlastní požadavek na natažení
diff.committed_by=odevzdal diff.committed_by=autor:
diff.protected=Chráněno diff.protected=Chráněno
diff.image.side_by_side=Vedle sebe diff.image.side_by_side=Vedle sebe
diff.image.swipe=Posunout diff.image.swipe=Posunout
@ -2620,7 +2624,7 @@ release.edit_release=Aktualizovat vydání
release.delete_release=Smazat vydání release.delete_release=Smazat vydání
release.delete_tag=Smazat značku release.delete_tag=Smazat značku
release.deletion=Smazat vydání release.deletion=Smazat vydání
release.deletion_desc=Smazání vydání jej pouze odebere z Gitea. Nebude to mít vliv na značku Git, obsah vašeho repozitáře nebo jeho historii. Pokračovat? release.deletion_desc=Smazáním vydání jej pouze odeberete z Forgeja. Nebude to mít vliv na značku Gitu, obsah vašeho repozitáře nebo jeho historii. Pokračovat?
release.deletion_success=Vydání bylo odstraněno. release.deletion_success=Vydání bylo odstraněno.
release.deletion_tag_desc=Odstraní tuto značku z repozitáře. Obsah repozitáře a historie zůstanou nezměněny. Pokračovat? release.deletion_tag_desc=Odstraní tuto značku z repozitáře. Obsah repozitáře a historie zůstanou nezměněny. Pokračovat?
release.deletion_tag_success=Značka byla odstraněna. release.deletion_tag_success=Značka byla odstraněna.
@ -2643,7 +2647,7 @@ branch.delete_html=Odstranit větev
branch.delete_desc=Smazání větve je trvalé. Přestože zrušená větev může existovat i po krátkou dobu, než bude skutečně odstraněna, NELZE ji většinou vrátit. Pokračovat? branch.delete_desc=Smazání větve je trvalé. Přestože zrušená větev může existovat i po krátkou dobu, než bude skutečně odstraněna, NELZE ji většinou vrátit. Pokračovat?
branch.deletion_success=Větev „%s“ byla smazána. branch.deletion_success=Větev „%s“ byla smazána.
branch.deletion_failed=Nepodařilo se odstranit větev „%s“. branch.deletion_failed=Nepodařilo se odstranit větev „%s“.
branch.delete_branch_has_new_commits=Větev „%s“ nemůže být smazána, protože byly přidány nové commity po sloučení. branch.delete_branch_has_new_commits=Větev „%s“ nelze odstranit, protože byly po sloučení přidány nové revize.
branch.create_branch=Vytvořit větev %s branch.create_branch=Vytvořit větev %s
branch.create_from=z „%s“ branch.create_from=z „%s“
branch.create_success=Větev „%s“ byla vytvořena. branch.create_success=Větev „%s“ byla vytvořena.
@ -2710,12 +2714,12 @@ mirror_sync = synchronizováno
blame.ignore_revs = Ignorování revizí v souboru <a href="%s">.git-blame-ignore-revs</a>. Klikněte <a href="%s">sem pro udělení výjimky</a> a zobrazení normálního přehledu blame. blame.ignore_revs = Ignorování revizí v souboru <a href="%s">.git-blame-ignore-revs</a>. Klikněte <a href="%s">sem pro udělení výjimky</a> a zobrazení normálního přehledu blame.
commits.browse_further = Procházet dále commits.browse_further = Procházet dále
issues.role.first_time_contributor = První přispěvatel issues.role.first_time_contributor = První přispěvatel
editor.invalid_commit_mail = Neplatný e-mail pro vytvoření commitu. editor.invalid_commit_mail = Neplatný e-mail pro vytvoření revize.
commits.renamed_from = Přejmenováno z %s commits.renamed_from = Přejmenováno z %s
activity.navbar.recent_commits = Nedávné commity activity.navbar.recent_commits = Nedávné revize
settings.units.units = Jednotky settings.units.units = Jednotky
pulls.blocked_by_user = V tomto repozitáři nemůžete vytvořit žádost o sloučení, protože jste byli zablokováni jeho majitelem. pulls.blocked_by_user = V tomto repozitáři nemůžete vytvořit žádost o sloučení, protože jste byli zablokováni jeho majitelem.
pulls.clear_merge_message_hint = Vymazáním zprávy o sloučení pouze odstraníte obsah zprávy commitu a ponecháte vygenerované git trailery, jako „Co-Authored-By …“. pulls.clear_merge_message_hint = Vymazáním zprávy o sloučení pouze odstraníte obsah zprávy revize a ponecháte vygenerované git trailery, jako „Co-Authored-By …“.
pulls.agit_explanation = Vytvořeno pomocí workflow AGit. AGit umožňuje přispěvatelům navrhovat změny pomocí „git push“ bez vytváření forku nebo nové větve. pulls.agit_explanation = Vytvořeno pomocí workflow AGit. AGit umožňuje přispěvatelům navrhovat změny pomocí „git push“ bez vytváření forku nebo nové větve.
contributors.contribution_type.deletions = Odstranění contributors.contribution_type.deletions = Odstranění
settings.pull_mirror_sync_in_progress = Probíhá načítání změn ze vzdáleného %s. settings.pull_mirror_sync_in_progress = Probíhá načítání změn ze vzdáleného %s.
@ -2724,7 +2728,7 @@ settings.mirror_settings.docs.disabled_push_mirror.pull_mirror_warning = Tuto ak
settings.new_owner_blocked_doer = Nový majitel vás zablokoval. settings.new_owner_blocked_doer = Nový majitel vás zablokoval.
settings.mirror_settings.pushed_repository = Odeslaný repozitář settings.mirror_settings.pushed_repository = Odeslaný repozitář
settings.add_collaborator_blocked_our = Nepodařilo se přidat spolupracovníka, jelikož byl zablokován majitelem repozitáře. settings.add_collaborator_blocked_our = Nepodařilo se přidat spolupracovníka, jelikož byl zablokován majitelem repozitáře.
pulls.commit_ref_at = `se odkázal na tuto žádost o sloučení z commitu <a id="%[1]s" href="#%[1]s">%[2]s</a>` pulls.commit_ref_at = `se odkázal/a na tuto žádost o sloučení z revize <a id="%[1]s" href="#%[1]s">%[2]s</a>`
settings.wiki_rename_branch_main = Normalizovat název větve Wiki settings.wiki_rename_branch_main = Normalizovat název větve Wiki
settings.wiki_rename_branch_main_desc = Přejmenovat větev interně používanou pro Wiki na „%s“. Tato změna je trvalá a nelze ji vrátit. settings.wiki_rename_branch_main_desc = Přejmenovat větev interně používanou pro Wiki na „%s“. Tato změna je trvalá a nelze ji vrátit.
pulls.fast_forward_only_merge_pull_request = Pouze zrychlené pulls.fast_forward_only_merge_pull_request = Pouze zrychlené
@ -2748,24 +2752,24 @@ settings.add_collaborator_blocked_them = Nepodařilo se přidat spolupracovníka
settings.ignore_stale_approvals = Ignorovat zastaralá schválení settings.ignore_stale_approvals = Ignorovat zastaralá schválení
settings.event_pull_request_merge = Sloučení žádosti o sloučení settings.event_pull_request_merge = Sloučení žádosti o sloučení
settings.event_pull_request_approvals = Schválení žádostí o sloučení settings.event_pull_request_approvals = Schválení žádostí o sloučení
settings.ignore_stale_approvals_desc = Nepočítat schválení udělená u starších commitů (zastaralá schválení) do celkového počtu schválení u ŽS. Není relevantní, pokud byla zastaralá schválení již zrušena. settings.ignore_stale_approvals_desc = Nepočítat schválení udělená u starších revizí (zastaralá schválení) do celkového počtu schválení u žádosti o sloučení. Není relevantní, pokud byla zastaralá schválení již zrušena.
file_follow = Následovat symbolický odkaz file_follow = Následovat symbolický odkaz
settings.protect_status_check_patterns_desc = Zadejte vzorce pro upřesnění kontrol, které musí projít před sloučením větví do větve, která se shoduje s tímto pravidlem. Na každý řádek zadejte jeden vzorec. Vzorce nesmí být prázdné. settings.protect_status_check_patterns_desc = Zadejte vzorce pro upřesnění kontrol, které musí projít před sloučením větví do větve, která se shoduje s tímto pravidlem. Na každý řádek zadejte jeden vzorec. Vzorce nesmí být prázdné.
settings.archive.mirrors_unavailable = Zrcadla nejsou v archivovaných repozitářích k dispozici. settings.archive.mirrors_unavailable = Zrcadla nejsou v archivovaných repozitářích k dispozici.
settings.protect_enable_merge_desc = Kdokoli s přístupem k zápisu bude moci slučovat žádosti o sloučení do této větve. settings.protect_enable_merge_desc = Kdokoli s přístupem k zápisu bude moci slučovat žádosti o sloučení do této větve.
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. 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. error.broken_git_hook = Zdá se, že u tohoto repozitáře jsou rozbité Git webhooky. Pro jejich opravení se prosím řiďte pokyny v <a target="_blank" rel="noreferrer" href="%s">dokumentaci</a> a poté odešlete pár revizí pro obnovení stavu.
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.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 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 open_with_editor = Otevřít pomocí %s
commits.search_branch = Tato větev commits.search_branch = Tato větev
editor.commit_id_not_matching = Tento soubor se během úpravy změnil. Proveďte commit do nové větve a poté je slučte. editor.commit_id_not_matching = Tento soubor se během úpravy změnil. Odešlete změny do nové větve a poté je slučte.
pulls.ready_for_review = Připraveni na posouzení? pulls.ready_for_review = Připraveni na posouzení?
settings.rename_branch_failed_protected = Nepodařilo se přejmenovat větev %s, jelikož se jedná o chráněnou větev. settings.rename_branch_failed_protected = Nepodařilo se přejmenovat větev %s, jelikož se jedná o chráněnou větev.
editor.push_out_of_date = Push je nejspíše zastaralý. editor.push_out_of_date = Push je nejspíše zastaralý.
stars = Oblíbení stars = Oblíbení
n_commit_one = %s commit n_commit_one = %s revize
n_commit_few = %s commitů n_commit_few = %s revizí
n_branch_one = %s větev n_branch_one = %s větev
n_tag_one = %s značka n_tag_one = %s značka
n_tag_few = %s značek n_tag_few = %s značek
@ -2811,7 +2815,7 @@ subscribe.issue.guest.tooltip = Přihlaste se pro odebírání tohoto problému.
subscribe.pull.guest.tooltip = Přihlaste se pro odebírání této žádosti o sloučení. subscribe.pull.guest.tooltip = Přihlaste se pro odebírání této žádosti o sloučení.
issues.author.tooltip.pr = Tento uživatel je autorem této žádosti o sloučení. issues.author.tooltip.pr = Tento uživatel je autorem této žádosti o sloučení.
issues.author.tooltip.issue = Tento uživatel je autorem tohoto problému. issues.author.tooltip.issue = Tento uživatel je autorem tohoto problému.
activity.commit = Aktivita commitů activity.commit = Aktivita revizí
milestones.filter_sort.name = Název milestones.filter_sort.name = Název
release.type_attachment = Příloha release.type_attachment = Příloha
release.type_external_asset = Externí příloha release.type_external_asset = Externí příloha
@ -2867,12 +2871,14 @@ issues.context.menu = Nabídka komentáře
issues.reaction.alt_remove = Odstranit %[1]s reakci z komentáře. issues.reaction.alt_remove = Odstranit %[1]s reakci z komentáře.
issues.reaction.alt_add = Přidat %[1]s reakci na komentář. issues.reaction.alt_add = Přidat %[1]s reakci na komentář.
editor.commit_email = E-mail revize
[graphs] [graphs]
component_loading_info = Tohle může chvíli trvat… component_loading_info = Tohle může chvíli trvat…
component_failed_to_load = Došlo k neočekávané chybě. component_failed_to_load = Došlo k neočekávané chybě.
code_frequency.what = frekvence kódu code_frequency.what = frekvence kódu
contributors.what = příspěvky contributors.what = příspěvky
recent_commits.what = nedávné commity recent_commits.what = nedávné revize
component_loading = Načítání %s... component_loading = Načítání %s...
component_loading_failed = Nepodařilo se načíst %s component_loading_failed = Nepodařilo se načíst %s
@ -3020,7 +3026,7 @@ last_page=Poslední
total=Celkem: %d total=Celkem: %d
settings=Nastavení správce settings=Nastavení správce
dashboard.new_version_hint=Gitea %s je nyní k dispozici, právě u vás běži %s. Podívej se na <a target="_blank" rel="noreferrer" href="%s">blogu</a> pro více informací. dashboard.new_version_hint=Forgejo %s je nyní k dispozici, aktuálně používáte verzi %s. Pro více informací viz <a target="_blank" rel="noreferrer" href="%s">blog</a>.
dashboard.statistic=Souhrn dashboard.statistic=Souhrn
dashboard.operations=Operace údržby dashboard.operations=Operace údržby
dashboard.system_status=Stav systému dashboard.system_status=Stav systému
@ -3533,7 +3539,7 @@ self_check.database_collation_mismatch=Očekávejte, že databáze použije coll
self_check.database_inconsistent_collation_columns=Databáze používá collation %s, ale tyto sloupce používají chybné collation. To může způsobit neočekávané problémy. self_check.database_inconsistent_collation_columns=Databáze používá collation %s, ale tyto sloupce používají chybné collation. To může způsobit neočekávané problémy.
self_check.database_fix_mysql=Pro uživatele MySQL/MariaDB můžete použít příkaz „forgejo doctor convert“, který opraví problémy s porovnáním. Problém také můžete ručně vyřešit příkazem „ALTER ... COLLATE ...“ SQL. self_check.database_fix_mysql=Pro uživatele MySQL/MariaDB můžete použít příkaz „forgejo doctor convert“, který opraví problémy s porovnáním. Problém také můžete ručně vyřešit příkazem „ALTER ... COLLATE ...“ SQL.
self_check = Vlastní kontrola self_check = Vlastní kontrola
self_check.database_collation_case_insensitive=Databáze používá collation %s, což je collation nerozlišující velká a malá písmena. Ačkoli s ní Gitea může pracovat, mohou se vyskytnout vzácné případy, kdy nebude fungovat podle očekávání. self_check.database_collation_case_insensitive=Databáze používá collation %s, což je collation nerozlišující velká a malá písmena. Ačkoli s ní Forgejo může pracovat, mohou se vyskytnout vzácné případy, kdy nebude fungovat podle očekávání.
auths.oauth2_map_group_to_team = Zmapovat zabrané skupiny u týmů organizací (volitelné - vyžaduje název claimu výše) auths.oauth2_map_group_to_team = Zmapovat zabrané skupiny u týmů organizací (volitelné - vyžaduje název claimu výše)
monitor.queue.settings.desc = Pooly dynamicky rostou podle blokování fronty jejich workerů. monitor.queue.settings.desc = Pooly dynamicky rostou podle blokování fronty jejich workerů.
@ -3580,7 +3586,7 @@ delete_branch=smazal/a větev %[2]s z <a href="%[1]s">%[3]s</a>
compare_branch=Porovnat compare_branch=Porovnat
compare_commits=Porovnat %d revizí compare_commits=Porovnat %d revizí
compare_commits_general=Porovnat revize compare_commits_general=Porovnat revize
mirror_sync_push=synchronizoval/a commity do <a href="%[2]s">%[3]s</a> v <a href="%[1]s">%[4]s</a> ze zrcadla mirror_sync_push=synchronizoval/a revize do <a href="%[2]s">%[3]s</a> v <a href="%[1]s">%[4]s</a> ze zrcadla
mirror_sync_create=synchronizoval/a novou referenci <a href="%[2]s">%[3]s</a> do <a href="%[1]s">%[4]s</a> ze zrcadla mirror_sync_create=synchronizoval/a novou referenci <a href="%[2]s">%[3]s</a> do <a href="%[1]s">%[4]s</a> ze zrcadla
mirror_sync_delete=synchronizoval/a a smazal/a referenci <code>%[2]s</code> v <a href="%[1]s">%[3]s</a> ze zrcadla mirror_sync_delete=synchronizoval/a a smazal/a referenci <code>%[2]s</code> v <a href="%[1]s">%[3]s</a> ze zrcadla
approve_pull_request=`schválil/a <a href="%[1]s">%[3]s#%[2]s</a>` approve_pull_request=`schválil/a <a href="%[1]s">%[3]s#%[2]s</a>`
@ -3635,13 +3641,13 @@ no_subscriptions=Žádné odběry
[gpg] [gpg]
default_key=Podepsáno výchozím klíčem default_key=Podepsáno výchozím klíčem
error.extract_sign=Selhalo získání podpisu error.extract_sign=Selhalo získání podpisu
error.generate_hash=Selhalo vygenerování hash revize error.generate_hash=Selhalo vygenerování hashe revize
error.no_committer_account=Žádný účet není propojen s e-mailovou adresou přispěvatele error.no_committer_account=Žádný účet není propojen s e-mailovou adresou přispěvatele
error.no_gpg_keys_found=V databázi nebyl nalezen žádný známý klíč pro tento podpis error.no_gpg_keys_found=V databázi nebyl nalezen žádný známý klíč pro tento podpis
error.not_signed_commit=Nepodepsaný commit error.not_signed_commit=Nepodepsaná revize
error.failed_retrieval_gpg_keys=Nepodařilo se získat žádný klíč propojený s účtem přispěvatele error.failed_retrieval_gpg_keys=Nepodařilo se získat žádný klíč propojený s účtem přispěvatele
error.probable_bad_signature=VAROVÁNÍ! Přestože v databázi existuje klíč s tímto ID, tento commit neověřuje! Tento commit je PODEZŘELÝ. error.probable_bad_signature=VAROVÁNÍ! Přestože v databázi existuje klíč s tímto ID, tato revize jím není ověřena! Tato revize je PODEZŘELÁ.
error.probable_bad_default_signature=VAROVÁNÍ! Ačkoli výchozí klíč má toto ID, neověřuje tento commit! Tento commit je PODEZŘELÝ. error.probable_bad_default_signature=VAROVÁNÍ! Přestože má výchozí klíč toto ID, tato revize jím není ověřena! Tato revize je PODEZŘELÁ.
[units] [units]
unit=Jednotka unit=Jednotka
@ -3863,7 +3869,7 @@ runners.task_list.no_tasks=Zatím zde nejsou žádné úlohy.
runners.task_list.run=Spustit runners.task_list.run=Spustit
runners.task_list.status=Status runners.task_list.status=Status
runners.task_list.repository=Repozitář runners.task_list.repository=Repozitář
runners.task_list.commit=Commit runners.task_list.commit=Revize
runners.task_list.done_at=Dokončeno v runners.task_list.done_at=Dokončeno v
runners.edit_runner=Upravit Runner runners.edit_runner=Upravit Runner
runners.update_runner=Aktualizovat změny runners.update_runner=Aktualizovat změny
@ -3883,7 +3889,7 @@ runners.reset_registration_token=Resetovat registrační token
runners.reset_registration_token_success=Registrační token runneru byl úspěšně obnoven runners.reset_registration_token_success=Registrační token runneru byl úspěšně obnoven
runs.all_workflows=Všechny workflowy runs.all_workflows=Všechny workflowy
runs.commit=Commit runs.commit=Revize
runs.scheduled=Naplánováno runs.scheduled=Naplánováno
runs.invalid_workflow_helper=Konfigurační soubor pracovního postupu je neplatný. Zkontrolujte prosím konfigurační soubor: %s runs.invalid_workflow_helper=Konfigurační soubor pracovního postupu je neplatný. Zkontrolujte prosím konfigurační soubor: %s
runs.no_matching_online_runner_helper=Žádný odpovídající online runner s popiskem: %s runs.no_matching_online_runner_helper=Žádný odpovídající online runner s popiskem: %s
@ -3896,7 +3902,7 @@ runs.no_workflows=Zatím neexistují žádné pracovní postupy.
runs.no_workflows.quick_start = Nevíte jak začít s Gitea Action? Podívejte se na <a target="_blank" rel="noopener noreferrer" href="%s">průvodce rychlým startem</a>. runs.no_workflows.quick_start = Nevíte jak začít s Gitea Action? Podívejte se na <a target="_blank" rel="noopener noreferrer" href="%s">průvodce rychlým startem</a>.
runs.no_workflows.documentation = Další informace o Gitea Action, viz <a target="_blank" rel="noopener noreferrer" href="%s">dokumentace</a>. runs.no_workflows.documentation = Další informace o Gitea Action, viz <a target="_blank" rel="noopener noreferrer" href="%s">dokumentace</a>.
runs.no_runs=Pracovní postup zatím nebyl spuštěn. runs.no_runs=Pracovní postup zatím nebyl spuštěn.
runs.empty_commit_message=(prázdná zpráva commitu) runs.empty_commit_message=(prázdná zpráva revize)
workflow.disable=Zakázat workflow workflow.disable=Zakázat workflow
workflow.disable_success=Workflow „%s“ byl úspěšně deaktivován. workflow.disable_success=Workflow „%s“ byl úspěšně deaktivován.
@ -3969,7 +3975,7 @@ code_kind = Hledat kód...
package_kind = Hledat balíčky... package_kind = Hledat balíčky...
project_kind = Hledat projekty... project_kind = Hledat projekty...
branch_kind = Hledat větve... branch_kind = Hledat větve...
commit_kind = Hledat commity... commit_kind = Hledat revize...
runner_kind = Hledat runnery... runner_kind = Hledat runnery...
no_results = Nenalezeny žádné odpovídající výsledky. no_results = Nenalezeny žádné odpovídající výsledky.
fuzzy_tooltip = Zahrnout také výsledky, které úzce odpovídají hledanému výrazu fuzzy_tooltip = Zahrnout také výsledky, které úzce odpovídají hledanému výrazu

View file

@ -627,6 +627,8 @@ unsupported_login_type = Login typen understøttes ikke for at slette kontoen.
cannot_add_org_to_team = En organisation kan ikke tilføjes som et holdmedlem. cannot_add_org_to_team = En organisation kan ikke tilføjes som et holdmedlem.
must_use_public_key = Nøglen du har angivet er en privat nøgle. Lad være med at uploade din private nøgle nogen steder. Brug din offentlige nøgle i stedet. must_use_public_key = Nøglen du har angivet er en privat nøgle. Lad være med at uploade din private nøgle nogen steder. Brug din offentlige nøgle i stedet.
email_domain_is_not_allowed = Domænet for brugerens e-mailadresse <b>%s</b> er i konflikt med EMAIL_DOMAIN_ALLOWLIST eller EMAIL_DOMAIN_BLOCKLIST. Sørg for, at du har indstillet e-mailadressen korrekt.
[user] [user]
change_avatar = Skift din avatar… change_avatar = Skift din avatar…
joined_on = Tilmeldte sig den %s joined_on = Tilmeldte sig den %s
@ -1120,7 +1122,7 @@ migrate_items_pullrequests = Pull-anmodninger
migrate_items_merge_requests = Flet anmodninger migrate_items_merge_requests = Flet anmodninger
migrate_items_releases = Udgivelser migrate_items_releases = Udgivelser
migrate_repo = Migrer depot migrate_repo = Migrer depot
migrate.clone_address_desc = HTTP(S) eller Git "klone" URL'en for et eksisterende lager migrate.clone_address_desc = HTTP(S) eller Git "klone" URL'en for et eksisterende depot
migrate.clone_local_path = eller en lokal serversti migrate.clone_local_path = eller en lokal serversti
migrate.permission_denied = Du har ikke tilladelse til at importere lokale depoter. migrate.permission_denied = Du har ikke tilladelse til at importere lokale depoter.
migrate.permission_denied_blocked = Du kan ikke importere fra ikke-tilladte værter. Bed venligst administratoren om at kontrollere ALLOWED_DOMAINS/ALLOW_LOCALNETWORKS/BLOCKED_DOMAINS indstillingerne. migrate.permission_denied_blocked = Du kan ikke importere fra ikke-tilladte værter. Bed venligst administratoren om at kontrollere ALLOWED_DOMAINS/ALLOW_LOCALNETWORKS/BLOCKED_DOMAINS indstillingerne.
@ -1157,7 +1159,7 @@ migrated_from = Migreret fra <a href="%[1]s">%[2]s</a>
migrate.gitea.description = Migrer data fra gitea.com eller andre Gitea-instanser. migrate.gitea.description = Migrer data fra gitea.com eller andre Gitea-instanser.
migrate.gitbucket.description = Migrer data fra GitBucket-instanser. migrate.gitbucket.description = Migrer data fra GitBucket-instanser.
migrate.github_token_desc = Du kan sætte et eller flere tokens med kommasepareret her for at gøre migreringen hurtigere på grund af GitHub API-hastighedsgrænsen. ADVARSEL: Misbrug af denne funktion kan overtræde tjenesteudbyderens politik og føre til kontoblokering. migrate.github_token_desc = Du kan sætte et eller flere tokens med kommasepareret her for at gøre migreringen hurtigere på grund af GitHub API-hastighedsgrænsen. ADVARSEL: Misbrug af denne funktion kan overtræde tjenesteudbyderens politik og føre til kontoblokering.
migrate_options_lfs_endpoint.description = Migration vil forsøge at bruge din fjern-Git til at <a target="_blank" rel="noopener noreferrer" href="%s">bestemme LFS-serveren</a>. Du kan også angive et brugerdefineret slutpunkt, hvis lagerets LFS-data er gemt et andet sted. migrate_options_lfs_endpoint.description = Migration vil forsøge at bruge din fjern-Git til at <a target="_blank" rel="noopener noreferrer" href="%s">bestemme LFS-serveren</a>. Du kan også angive et brugerdefineret slutpunkt, hvis depots LFS-data er gemt et andet sted.
form.name_pattern_not_allowed = Mønsteret "%s" er ikke tilladt i et depotnavn. form.name_pattern_not_allowed = Mønsteret "%s" er ikke tilladt i et depotnavn.
migrate_options_lfs_endpoint.placeholder = Hvis det efterlades tomt, vil endepunktet blive afledt fra klonens URL migrate_options_lfs_endpoint.placeholder = Hvis det efterlades tomt, vil endepunktet blive afledt fra klonens URL
migrate.clone_address = Migrer / Klon fra URL migrate.clone_address = Migrer / Klon fra URL
@ -1627,6 +1629,203 @@ issues.lock_confirm = Lås
issues.unlock_confirm = Lås op issues.unlock_confirm = Lås op
issues.lock.notice_1 = - Andre brugere kan ikke tilføje nye kommentarer til dette problem. issues.lock.notice_1 = - Andre brugere kan ikke tilføje nye kommentarer til dette problem.
issues.unpin_issue = Frigør problemet
issues.max_pinned = Du kan ikke fastgøre flere problemer
issues.pin_comment = fastgjort dette %s
issues.unpin_comment = frigjorde dette %s
issues.lock = Lås samtale
issues.unlock = Lås samtale op
issues.lock.unknown_reason = Kan ikke låse et problem med en ukendt årsag.
issues.lock.notice_2 = - Du og andre samarbejdspartnere med adgang til dette depot kan stadig efterlade kommentarer, som andre kan se.
issues.lock.notice_3 = - Du kan altid låse op for dette problem igen i fremtiden.
issues.unlock.notice_1 = - Alle ville kunne udtale sig om dette spørgsmål endnu en gang.
issues.unlock.notice_2 = - Du kan altid låse dette problem igen i fremtiden.
issues.lock.reason = Årsag til låsning
issues.lock.title = Lås samtale om dette problem.
issues.unlock.title = Lås op for samtale om dette problem.
issues.comment_on_locked = Du kan ikke kommentere på et låst problem.
issues.delete = Slet
issues.delete.title = Slet dette problem?
issues.delete.text = Vil du virkelig slette dette problem? (Dette fjerner alt indhold permanent. Overvej at lukke det i stedet, hvis du har til hensigt at holde det arkiveret)
issues.tracker = Tidsregistrering
issues.start_tracking_short = Start timer
issues.start_tracking = Start tidsregistrering
issues.start_tracking_history = `begyndte at arbejde %s`
issues.tracker_auto_close = Timeren stoppes automatisk, når dette problem lukkes
issues.tracking_already_started = `Du har allerede startet tidsregistrering på <a href="%s">et andet problem</a>!`
issues.stop_tracking = Stop timer
issues.stop_tracking_history = "stoppede med at arbejde %s`
issues.cancel_tracking = Kassér
issues.cancel_tracking_history = `annulleret tidssporing %s`
issues.add_time = Tilføj tid manuelt
issues.del_time = Slet denne tidslog
issues.add_time_short = Tilføj tid
issues.add_time_cancel = Annuller
issues.add_time_history = `tilført brugt tid %s`
issues.del_time_history = `slettet brugt tid %s`
issues.add_time_hours = Timer
issues.add_time_minutes = Minutter
issues.add_time_sum_to_small = Ingen tid blev indtastet.
issues.time_spent_total = Samlet tid brugt
issues.time_spent_from_all_authors = `Samlet tid brugt: %s`
issues.due_date = Forfaldsdato
issues.push_commit_1 = tilføjet %d commit %s
issues.push_commits_n = tilføjet %d commits %s
issues.force_push_codes = `force-pushed %[1]s fra <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> til <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> %[6]s`
issues.force_push_compare = Sammenlign
issues.due_date_form = yyyy-mm-dd
issues.due_date_form_edit = Redigere
issues.due_date_form_remove = Slet
issues.due_date_not_set = Ingen forfaldsdato fastsat.
issues.due_date_added = tilføjede forfaldsdatoen %s %s
issues.due_date_modified = ændrede forfaldsdatoen fra %[2]s til %[1]s %[3]s
issues.due_date_remove = fjernede forfaldsdatoen %s %s
issues.due_date_overdue = Forfalden
issues.due_date_invalid = Forfaldsdatoen er ugyldig eller uden for intervallet. Brug venligst formatet "yyyy-mm-dd".
issues.dependency.title = Afhængigheder
issues.dependency.issue_no_dependencies = Ingen afhængigheder angivet.
issues.dependency.pr_no_dependencies = Ingen afhængigheder angivet.
issues.dependency.no_permission_1 = Du har ikke tilladelse til at læse %d afhængighed
issues.dependency.no_permission_n = Du har ikke tilladelse til at læse %d afhængigheder
issues.dependency.no_permission.can_remove = Du har ikke tilladelse til at læse denne afhængighed, men du kan fjerne denne afhængighed
issues.dependency.add = Tilføj afhængighed…
issues.dependency.cancel = Annuller
issues.dependency.remove = Slet
issues.dependency.remove_info = Fjern denne afhængighed
issues.dependency.added_dependency = `tilføjede en ny afhængighed %s`
issues.dependency.removed_dependency = `fjernede en afhængighed %s`
issues.dependency.pr_closing_blockedby = Lukning af denne pull-anmodning er blokeret af følgende problemer
issues.dependency.issue_closing_blockedby = Lukning af dette problem er blokeret af følgende problemer
issues.dependency.issue_close_blocks = Dette problem blokerer for lukning af følgende problemer
issues.dependency.pr_close_blocks = Denne pull-anmodning blokerer lukning af følgende problemer
issues.dependency.issue_close_blocked = Du skal lukke alle problemer, der blokerer dette problem, før du kan lukke det.
issues.dependency.issue_batch_close_blocked = Kan ikke batchlukke valgte problemer, fordi problem #%d stadig har åbne afhængigheder
issues.dependency.pr_close_blocked = Du skal lukke alle problemer, der blokerer denne pull-anmodning, før du kan flette den.
issues.dependency.blocks_short = Blockere
issues.dependency.blocked_by_short = Afhænger af
issues.dependency.remove_header = Fjern afhængighed
issues.dependency.issue_remove_text = Dette vil fjerne afhængigheden af dette problem. Vil du fortsætte?
issues.dependency.pr_remove_text = Dette vil fjerne afhængigheden fra denne pull-anmodning. Vil du fortsætte?
issues.dependency.setting = Aktiver afhængigheder for problemer og pull-anmodninger
issues.dependency.add_error_same_issue = Du kan ikke få et problem til at afhænge af sig selv.
issues.dependency.add_error_dep_issue_not_exist = Afhængigt problem eksisterer ikke.
issues.dependency.add_error_dep_not_exist = Afhængighed eksisterer ikke.
issues.dependency.add_error_dep_exists = Afhængighed eksisterer allerede.
issues.dependency.add_error_cannot_create_circular = Du kan ikke oprette en afhængighed med to problemer, der blokerer hinanden.
issues.dependency.add_error_dep_not_same_repo = Begge problemer skal være i samme depot.
issues.review.self.approval = Du kan ikke godkende din egen pull-anmodning.
issues.review.self.rejection = Du kan ikke anmode om ændringer på din egen pull-anmodning.
issues.review.approve = godkendte disse ændringer %s
issues.review.comment = gennemgået %s
issues.review.dismissed = afviste %s's gennemgang %s
issues.review.dismissed_label = Afvist
issues.review.left_comment = efterladt en kommentar
issues.review.content.empty = Du skal efterlade en kommentar, der angiver de ønskede ændringer.
issues.review.reject = anmodende ændringer %s
issues.review.wait = blev anmodet om gennemgang %s
issues.review.add_review_request = anmodet om gennemgang fra %[1]s %[2]s
issues.review.add_review_requests = anmodet om gennemgange fra %[1]s %[2]s
issues.review.remove_review_request = fjernet anmodning om gennemgang for %[1]s %[2]s
issues.review.remove_review_requests = fjernet anmodning om gennemgange for %[1]s %[2]s
issues.review.remove_review_request_self = nægtede at gennemgå %s
issues.review.add_remove_review_requests = anmodede om gennemgang fra %[1]s og fjernede gennemgangsanmodninger for %[2]s %[3]s
issues.review.pending = Afventer
issues.review.pending.tooltip = Denne kommentar er i øjeblikket ikke synlig for andre brugere. For at indsende dine afventende kommentarer, vælg "%s" -> "%s/%s/%s" øverst på siden.
issues.review.review = Gennemgå
issues.review.reviewers = Gemmengåer
issues.review.outdated = Forældet
issues.review.outdated_description = Indholdet er ændret siden denne kommentar blev lavet
issues.review.option.show_outdated_comments = Vis forældede kommentarer
issues.review.option.hide_outdated_comments = Skjul forældede kommentarer
issues.review.show_outdated = Vis forældet
issues.review.hide_outdated = Skjul forældede
issues.review.show_resolved = Vis løst
issues.review.hide_resolved = Skjul løst
issues.review.resolve_conversation = Løs samtale
issues.review.un_resolve_conversation = Uafklaret samtale
issues.review.resolved_by = markerede denne samtale som løst
issues.reference_issue.body = Body
issues.content_history.deleted = slettet
issues.content_history.edited = redigeret
issues.content_history.created = oprettet
issues.content_history.delete_from_history = Slet fra historikken
issues.content_history.delete_from_history_confirm = Slet fra historikken?
issues.content_history.options = Valgmuligheder
issues.reference_link = Reference: %s
issues.blocked_by_user = Du kan ikke oprette et problem på dette depot, fordi du er blokeret af depotes ejer.
issues.comment.blocked_by_user = Du kan ikke oprette en kommentar til dette problem, fordi du er blokeret af depotes ejer eller anmelder af problemet.
issues.summary_card_alt = Oversigtskort over et problem med titlen "%s" i depotet %s
compare.compare_base = base
compare.compare_head = sammenlign
pulls.desc = Aktiver pull-anmodninger og kodegennemgange.
pulls.new = Ny pull anmodning
pulls.view = Se pull-anmodning
pulls.edit.already_changed = Kunne ikke gemme ændringer af pull-anmodningen. Det ser ud til, at indholdet allerede er blevet ændret af en anden bruger. Opdater siden, og prøv at redigere igen for at undgå at overskrive deres ændringer
pulls.compare_changes = Ny pull-anmodning
pulls.sign_in_require = <a href="%s">Log ind</a> for at oprette en ny pull-anmodning.
pulls.allow_edits_from_maintainers = Tillad redigeringer fra vedligeholdere
pulls.allow_edits_from_maintainers_desc = Brugere med skriveadgang til basisgrenen kan også trykke til denne gren
pulls.allow_edits_from_maintainers_err = Opdatering mislykkedes
pulls.compare_changes_desc = Vælg den gren, der skal flettes ind i, og den gren, der skal trækkes fra.
pulls.has_viewed_file = Set
pulls.has_changed_since_last_review = Ændret siden din sidste gennemgang
pulls.viewed_files_label = %[1]d / %[2]d filer set
pulls.expand_files = Udvid alle filer
pulls.collapse_files = Skjul alle filer
pulls.compare_base = flet ind i
pulls.compare_compare = pull fra
pulls.switch_comparison_type = Skift sammenligningstype
pulls.switch_head_and_base = Skift hoved og base
pulls.filter_branch = Filter gren
pulls.no_results = Ingen resultater fundet.
pulls.show_all_commits = Vis alle commits
pulls.show_changes_since_your_last_review = Vis ændringer siden din sidste gennemgang
pulls.showing_only_single_commit = Viser kun ændringer af commit %[1]s
pulls.showing_specified_commit_range = Viser kun ændringer mellem %[1]s..%[2]s
pulls.select_commit_hold_shift_for_range = Vælg commit. Hold Shift + klik for at vælge et område
pulls.review_only_possible_for_full_diff = Gennemgang er kun mulig, når du ser den fulde diff
pulls.filter_changes_by_commit = Filtrer efter commit
editor.commit_email = Commit email
pulls.nothing_to_compare = Disse grene er lige store. Der er ingen grund til at oprette en pull-anmodning.
pulls.nothing_to_compare_have_tag = Den valgte gren/tag er ens.
pulls.nothing_to_compare_and_allow_empty_pr = Disse grene er lige store. Denne PR vil være tom.
pulls.has_pull_request = `Der findes allerede en pull-anmodning mellem disse grene: <a href="%[1]s">%[2]s#%[3]d</a>`
pulls.create = Opret pull-anmodning
pulls.change_target_branch_at = `ændrede målgren fra <b>%s</b> til <b>%s</b> %s`
pulls.tab_conversation = Samtale
pulls.tab_commits = Commits
pulls.tab_files = Filer ændret
pulls.reopen_to_merge = Genåbn denne pull-anmodning for at udføre en fletning.
pulls.cant_reopen_deleted_branch = Denne pull-anmodning kan ikke genåbnes, fordi grenen blev slettet.
pulls.merged = Flettet
pulls.merged_success = Pull-anmodning blev flettet og lukket
pulls.closed = Pull-anmodning lukket
pulls.manually_merged = Manuelt flettet
pulls.merged_info_text = Grenen %s kan nu slettes.
pulls.is_closed = Pull-anmodningen er blevet lukket.
pulls.title_wip_desc = `<a href="#">Start titlen med <strong>%s</strong></a> for at forhindre pull-anmodningen i at blive flettet ved et uheld.`
pulls.cannot_merge_work_in_progress = Denne pull-anmodning er markeret som et igangværende arbejde.
pulls.still_in_progress = Stadig i gang?
pulls.add_prefix = Tilføj <strong>%s</strong> præfiks
pulls.ready_for_review = Klar til gennemgang?
pulls.remove_prefix = Fjern <strong>%s</strong> præfiks
pulls.data_broken = Denne pull-anmodning er ødelagt på grund af manglende fork-information.
pulls.files_conflicted = Denne pull-anmodning har ændringer, der er i konflikt med målgrenen.
pulls.is_checking = Kontrol af fletkonflikt er i gang. Prøv igen om få øjeblikke.
pulls.is_ancestor = Denne gren er allerede inkluderet i målgrenen. Der er ikke noget at flette sammen.
pulls.is_empty = Ændringerne på denne gren er allerede på målgrenen. Dette vil være en tom commit.
pulls.required_status_check_failed = Nogle påkrævede checks lykkedes ikke.
pulls.required_status_check_missing = Nogle påkrævede checks mangler.
pulls.required_status_check_administrator = Som administrator kan du stadig flette denne pull-anmodning.
pulls.blocked_by_approvals = Denne pull-anmodning har endnu ikke nok godkendelser. %d af %d godkendte godkendelser.
pulls.blocked_by_rejection = Denne pull-anmodning har ændringer anmodet af en officiel anmelder.
pulls.blocked_by_official_review_requests = Denne pull-anmodning er blokeret, fordi den mangler godkendelse fra en eller flere officielle anmeldere.
pulls.blocked_by_outdated_branch = Denne pull-anmodning er blokeret, fordi den er forældet.
pulls.blocked_by_changed_protected_files_1 = Denne pull-anmodning er blokeret, fordi den ændrer en beskyttet fil:
pulls.blocked_by_changed_protected_files_n = Denne pull-anmodning er blokeret, fordi den ændrer beskyttede filer:
pulls.can_auto_merge_desc = Denne pull-anmodning kan flettes automatisk.
[notification] [notification]
watching = Overvåger watching = Overvåger

View file

@ -683,6 +683,8 @@ To = Branchname
AccessToken = Zugangstoken AccessToken = Zugangstoken
email_domain_is_not_allowed = Die Domain der E-Mail-Adresse des Benutzers <b>%s</b> steht in Konflikt mit EMAIL_DOMAIN_ALLOWLIST oder EMAIL_DOMAIN_BLOCKLIST. Bitte stelle sicher, dass du die E-Mail-Adresse richtig gesetzt hast.
[user] [user]
change_avatar=Profilbild ändern … change_avatar=Profilbild ändern …
joined_on=Beigetreten am %s joined_on=Beigetreten am %s
@ -1315,6 +1317,8 @@ view_git_blame=„git blame“ ansehen
video_not_supported_in_browser=Dein Browser unterstützt das HTML5-„video“-Tag nicht. video_not_supported_in_browser=Dein Browser unterstützt das HTML5-„video“-Tag nicht.
audio_not_supported_in_browser=Dein Browser unterstützt das HTML5-„audio“-Tag nicht. audio_not_supported_in_browser=Dein Browser unterstützt das HTML5-„audio“-Tag nicht.
stored_lfs=Gespeichert mit Git LFS stored_lfs=Gespeichert mit Git LFS
stored_annex=Gespeichert mit Git Annex
stored_annex_not_present = hier nicht vorhanden, versuche git annex whereis
symbolic_link=Softlink symbolic_link=Softlink
executable_file=Ausführbare Datei executable_file=Ausführbare Datei
commit_graph=Commit-Graph commit_graph=Commit-Graph
@ -1338,6 +1342,7 @@ editor.upload_file=Datei hochladen
editor.edit_file=Datei bearbeiten editor.edit_file=Datei bearbeiten
editor.preview_changes=Vorschau der Änderungen editor.preview_changes=Vorschau der Änderungen
editor.cannot_edit_lfs_files=LFS-Dateien können im Webinterface nicht bearbeitet werden. editor.cannot_edit_lfs_files=LFS-Dateien können im Webinterface nicht bearbeitet werden.
editor.cannot_edit_annex_files=Annex-Dateien können im Webinterface nicht bearbeitet werden.
editor.cannot_edit_non_text_files=Binärdateien können nicht im Webinterface bearbeitet werden. editor.cannot_edit_non_text_files=Binärdateien können nicht im Webinterface bearbeitet werden.
editor.edit_this_file=Datei bearbeiten editor.edit_this_file=Datei bearbeiten
editor.this_file_locked=Datei ist gesperrt editor.this_file_locked=Datei ist gesperrt
@ -2869,6 +2874,8 @@ issues.reaction.alt_remove = Entferne %[1]s Reaktion von diesem Kommentar.
summary_card_alt = Zusammenfassungskarte des Repositorys %s summary_card_alt = Zusammenfassungskarte des Repositorys %s
release.summary_card_alt = Übersichtskarte eines Releases mit dem Titel „%s“ im Repository %s release.summary_card_alt = Übersichtskarte eines Releases mit dem Titel „%s“ im Repository %s
editor.commit_email = Commit-E-Mail
[graphs] [graphs]
component_loading_failed = Konnte %s nicht laden component_loading_failed = Konnte %s nicht laden
component_loading_info = Dies könnte einen Moment dauern … component_loading_info = Dies könnte einen Moment dauern …
@ -3109,7 +3116,7 @@ dashboard.sync_branch.started=Synchronisierung der Branches gestartet
dashboard.rebuild_issue_indexer=Issue-Indexer neu bauen dashboard.rebuild_issue_indexer=Issue-Indexer neu bauen
users.user_manage_panel=Benutzerkonten verwalten users.user_manage_panel=Benutzerkonten verwalten
users.new_account=Benutzerkonto erstellen users.new_account=Benutzeraccount erstellen
users.name=Benutzername users.name=Benutzername
users.full_name=Vollständiger Name users.full_name=Vollständiger Name
users.activated=Aktiviert users.activated=Aktiviert
@ -3578,7 +3585,7 @@ comment_pull=`hat den Pull-Request <a href="%[1]s">%[3]s#%[2]s</a> kommentiert`
merge_pull_request=`führte Pull-Request <a href="%[1]s">%[3]s#%[2]s</a> zusammen` merge_pull_request=`führte Pull-Request <a href="%[1]s">%[3]s#%[2]s</a> zusammen`
auto_merge_pull_request=`führte Pull-Request <a href="%[1]s">%[3]s#%[2]s</a> automatisch zusammen` auto_merge_pull_request=`führte Pull-Request <a href="%[1]s">%[3]s#%[2]s</a> automatisch zusammen`
transfer_repo=hat Repository <code>%s</code> übertragen zu <a href="%s">%s</a> transfer_repo=hat Repository <code>%s</code> übertragen zu <a href="%s">%s</a>
push_tag=Tag <a href="%[2]s">%[3]s</a> nach <a href="%[1]s">%[4]s</a> wurde gepusht push_tag=hat Tag <a href="%[2]s">%[3]s</a> auf <a href="%[1]s">%[4]s</a> gepusht
delete_tag=hat Tag %[2]s in <a href="%[1]s">%[3]s</a> gelöscht delete_tag=hat Tag %[2]s in <a href="%[1]s">%[3]s</a> gelöscht
delete_branch=hat Branch %[2]s in <a href="%[1]s">%[3]s</a> gelöscht delete_branch=hat Branch %[2]s in <a href="%[1]s">%[3]s</a> gelöscht
compare_branch=Vergleichen compare_branch=Vergleichen
@ -3975,7 +3982,7 @@ package_kind = Pakete suchen …
project_kind = Projekte suchen … project_kind = Projekte suchen …
branch_kind = Branches suchen … branch_kind = Branches suchen …
commit_kind = Commits suchen … commit_kind = Commits suchen …
runner_kind = Runners suchen … runner_kind = Runner suchen …
no_results = Keine passenden Ergebnisse gefunden. no_results = Keine passenden Ergebnisse gefunden.
code_search_unavailable = Die Code-Suche ist momentan nicht verfügbar. Bitte kontaktiere den Webseitenadministrator. code_search_unavailable = Die Code-Suche ist momentan nicht verfügbar. Bitte kontaktiere den Webseitenadministrator.
keyword_search_unavailable = Die Suche mittels Schlüsselwort ist momentan nicht verfügbar. Bitte kontaktiere den Webseitenadministrator. keyword_search_unavailable = Die Suche mittels Schlüsselwort ist momentan nicht verfügbar. Bitte kontaktiere den Webseitenadministrator.

View file

@ -1226,7 +1226,7 @@ migrate.migrating_failed_no_addr=Η μεταφορά απέτυχε.
migrate.github.description=Μεταφορά δεδομένων από το github.com ή διακομιστές GitHub Enterprise. migrate.github.description=Μεταφορά δεδομένων από το github.com ή διακομιστές GitHub Enterprise.
migrate.git.description=Μεταφορά μόνο του αποθετηρίου από μια οποιαδήποτε υπηρεσία Git. migrate.git.description=Μεταφορά μόνο του αποθετηρίου από μια οποιαδήποτε υπηρεσία Git.
migrate.gitlab.description=Μεταφορά δεδομένων από το gitlab.com ή άλλες εγκαταστάσεις GitLab. migrate.gitlab.description=Μεταφορά δεδομένων από το gitlab.com ή άλλες εγκαταστάσεις GitLab.
migrate.gitea.description=Μεταφορά δεδομένων από το gitea.com ή άλλες εγκαταστάσεις Gitea/Forgejo. migrate.gitea.description=Μεταφορά δεδομένων από το gitea.com ή άλλες εγκαταστάσεις Gitea.
migrate.gogs.description=Μεταφορά δεδομένων από το notabug.org ή άλλες εγκαταστάσεις Gogs. migrate.gogs.description=Μεταφορά δεδομένων από το notabug.org ή άλλες εγκαταστάσεις Gogs.
migrate.onedev.description=Μεταφορά δεδομένων από το code.onedev.io ή άλλες εγκαταστάσεις OneDev. migrate.onedev.description=Μεταφορά δεδομένων από το code.onedev.io ή άλλες εγκαταστάσεις OneDev.
migrate.codebase.description=Μεταφορά δεδομένων από το codebasehq.com. migrate.codebase.description=Μεταφορά δεδομένων από το codebasehq.com.
@ -1314,6 +1314,7 @@ view_git_blame=Προβολή git blame
video_not_supported_in_browser=Το πρόγραμμα περιήγησής σας δεν υποστηρίζει την ετικέτα HTML5 «video». video_not_supported_in_browser=Το πρόγραμμα περιήγησής σας δεν υποστηρίζει την ετικέτα HTML5 «video».
audio_not_supported_in_browser=Το πρόγραμμα περιήγησής σας δεν υποστηρίζει την ετικέτα HTML5 «audio». audio_not_supported_in_browser=Το πρόγραμμα περιήγησής σας δεν υποστηρίζει την ετικέτα HTML5 «audio».
stored_lfs=Αποθηκεύτηκε με το Git LFS stored_lfs=Αποθηκεύτηκε με το Git LFS
stored_annex=Αποθηκεύτηκε με το Git Annex
symbolic_link=Symbolic link symbolic_link=Symbolic link
executable_file=Εκτελέσιμο αρχείο executable_file=Εκτελέσιμο αρχείο
commit_graph=Γράφημα υποβολών commit_graph=Γράφημα υποβολών
@ -1337,6 +1338,7 @@ editor.upload_file=Ανέβασμα αρχείου
editor.edit_file=Επεξεργασία αρχείου editor.edit_file=Επεξεργασία αρχείου
editor.preview_changes=Προεπισκόπηση αλλαγών editor.preview_changes=Προεπισκόπηση αλλαγών
editor.cannot_edit_lfs_files=Τα αρχεία LFS δεν μπορούν να επεξεργαστούν στη διεπαφή web. editor.cannot_edit_lfs_files=Τα αρχεία LFS δεν μπορούν να επεξεργαστούν στη διεπαφή web.
editor.cannot_edit_annex_files=Τα αρχεία Annex δεν μπορούν να επεξεργαστούν στη διεπαφή web.
editor.cannot_edit_non_text_files=Τα δυαδικά αρχεία δεν μπορούν να επεξεργαστούν στη διεπαφή web. editor.cannot_edit_non_text_files=Τα δυαδικά αρχεία δεν μπορούν να επεξεργαστούν στη διεπαφή web.
editor.edit_this_file=Επεξεργασία αρχείου editor.edit_this_file=Επεξεργασία αρχείου
editor.this_file_locked=Το αρχείο είναι κλειδωμένο editor.this_file_locked=Το αρχείο είναι κλειδωμένο
@ -1935,7 +1937,7 @@ pulls.cmd_instruction_hint=Προβολή οδηγιών γραμμής εντο
pulls.cmd_instruction_checkout_title=Έλεγχος pulls.cmd_instruction_checkout_title=Έλεγχος
pulls.cmd_instruction_checkout_desc=Από το repository του έργου σας, ελέγξτε έναν νέο κλάδο και δοκιμάστε τις αλλαγές. pulls.cmd_instruction_checkout_desc=Από το repository του έργου σας, ελέγξτε έναν νέο κλάδο και δοκιμάστε τις αλλαγές.
pulls.cmd_instruction_merge_title=Συγχώνευση pulls.cmd_instruction_merge_title=Συγχώνευση
pulls.cmd_instruction_merge_desc=Συγχώνευση των αλλαγών και ενημέρωση στο Gitea. pulls.cmd_instruction_merge_desc=Συγχώνευση των αλλαγών και ενημέρωση στο Forgejo.
pulls.clear_merge_message=Εκκαθάριση μηνύματος συγχώνευσης pulls.clear_merge_message=Εκκαθάριση μηνύματος συγχώνευσης
pulls.clear_merge_message_hint=Η εκκαθάριση του μηνύματος συγχώνευσης θα αφαιρέσει μόνο το περιεχόμενο του μηνύματος υποβολής και θα διατηρήσει τα παραγόμενα git trailers όπως "Co-Authored-By …". pulls.clear_merge_message_hint=Η εκκαθάριση του μηνύματος συγχώνευσης θα αφαιρέσει μόνο το περιεχόμενο του μηνύματος υποβολής και θα διατηρήσει τα παραγόμενα git trailers όπως "Co-Authored-By …".
@ -2630,7 +2632,7 @@ release.edit_release=Ενημέρωση κυκλοφορίας
release.delete_release=Διαγραφή κυκλοφορίας release.delete_release=Διαγραφή κυκλοφορίας
release.delete_tag=Διαγραφή ετικέτας release.delete_tag=Διαγραφή ετικέτας
release.deletion=Διαγραφή κυκλοφορίας release.deletion=Διαγραφή κυκλοφορίας
release.deletion_desc=Διαγράφοντας μια κυκλοφορία, αυτή αφαιρείται μόνο από το Gitea. Δε θα επηρεάσει την ετικέτα Git, τα περιεχόμενα του αποθετηρίου σας ή το ιστορικό της. Συνέχεια; release.deletion_desc=Διαγράφοντας μια κυκλοφορία, αυτή αφαιρείται μόνο από το Forgejo. Δε θα επηρεάσει την ετικέτα Git, τα περιεχόμενα του αποθετηρίου σας ή το ιστορικό της. Συνέχεια;
release.deletion_success=Η κυκλοφορία έχει διαγραφεί. release.deletion_success=Η κυκλοφορία έχει διαγραφεί.
release.deletion_tag_desc=Θα διαγράψει αυτή την ετικέτα από το repository. Τα περιεχόμενα του repository και το ιστορικό δεν θα πειραχτούν. Να γίνει συνέχεια; release.deletion_tag_desc=Θα διαγράψει αυτή την ετικέτα από το repository. Τα περιεχόμενα του repository και το ιστορικό δεν θα πειραχτούν. Να γίνει συνέχεια;
release.deletion_tag_success=Η ετικέτα έχει διαγραφεί. release.deletion_tag_success=Η ετικέτα έχει διαγραφεί.
@ -3172,12 +3174,12 @@ packages.size=Μέγεθος
packages.published=Δημοσιευμένα packages.published=Δημοσιευμένα
defaulthooks=Προεπιλεγμένα webhooks defaulthooks=Προεπιλεγμένα webhooks
defaulthooks.desc=Τα Webhooks κάνουν αυτόματα αιτήσεις HTTP POST σε ένα διακομιστή όταν ενεργοποιούν ορισμένα γεγονότα στο Gitea. Τα Webhooks που ορίζονται εδώ είναι προκαθορισμένα και θα αντιγραφούν σε όλα τα νέα αποθετήρια. Διαβάστε περισσότερα στον οδηγό <a target="_blank" rel="noopener" href="%s">webhooks</a>. defaulthooks.desc=Τα Webhooks κάνουν αυτόματα αιτήσεις HTTP POST σε ένα διακομιστή όταν ενεργοποιούν ορισμένα γεγονότα στο Forgejo. Τα Webhooks που ορίζονται εδώ είναι προκαθορισμένα και θα αντιγραφούν σε όλα τα νέα αποθετήρια. Διαβάστε περισσότερα στον οδηγό <a target="_blank" rel="noopener" href="%s">webhooks</a>.
defaulthooks.add_webhook=Προσθήκη Προεπιλεγμένου Webhook defaulthooks.add_webhook=Προσθήκη Προεπιλεγμένου Webhook
defaulthooks.update_webhook=Ενημέρωση Προεπιλεγμένου Webhook defaulthooks.update_webhook=Ενημέρωση Προεπιλεγμένου Webhook
systemhooks=Webhooks συστήματος systemhooks=Webhooks συστήματος
systemhooks.desc=Τα Webhooks κάνουν αυτόματα αιτήσεις HTTP POST σε ένα διακομιστή όταν ενεργοποιούνται ορισμένα γεγονότα στο Gitea. Τα Webhooks που ορίζονται εδώ θα ενεργούν σε όλα τα αποθετήρια του συστήματος, γι 'αυτό παρακαλώ εξετάστε τυχόν επιπτώσεις απόδοσης που μπορεί να έχει. Διαβάστε περισσότερα στον οδηγό <a target="_blank" rel="noopener" href="%s">webhooks</a>. systemhooks.desc=Τα Webhooks κάνουν αυτόματα αιτήσεις HTTP POST σε ένα διακομιστή όταν ενεργοποιούνται ορισμένα γεγονότα στο Forgejo. Τα Webhooks που ορίζονται εδώ θα ενεργούν σε όλα τα αποθετήρια του συστήματος, γι 'αυτό παρακαλώ εξετάστε τυχόν επιπτώσεις απόδοσης που μπορεί να έχει. Διαβάστε περισσότερα στον οδηγό <a target="_blank" rel="noopener" href="%s">webhooks</a>.
systemhooks.add_webhook=Προσθήκη Webhook Συστήματος systemhooks.add_webhook=Προσθήκη Webhook Συστήματος
systemhooks.update_webhook=Ενημέρωση Webhook Συστήματος systemhooks.update_webhook=Ενημέρωση Webhook Συστήματος

View file

@ -644,6 +644,7 @@ team_name_been_taken = The team name is already taken.
team_no_units_error = Allow access to at least one repository section. team_no_units_error = Allow access to at least one repository section.
email_been_used = The email address is already used. email_been_used = The email address is already used.
email_invalid = The email address is invalid. email_invalid = The email address is invalid.
email_domain_is_not_allowed = The domain of the user's email address <b>%s</b> conflicts with EMAIL_DOMAIN_ALLOWLIST or EMAIL_DOMAIN_BLOCKLIST. Make sure you have set the email address correctly.
openid_been_used = The OpenID address "%s" is already used. openid_been_used = The OpenID address "%s" is already used.
username_password_incorrect = Username or password is incorrect. username_password_incorrect = Username or password is incorrect.
password_complexity = Password does not pass complexity requirements: password_complexity = Password does not pass complexity requirements:
@ -1336,6 +1337,8 @@ view_git_blame = View git blame
video_not_supported_in_browser = Your browser does not support the HTML5 "video" tag. video_not_supported_in_browser = Your browser does not support the HTML5 "video" tag.
audio_not_supported_in_browser = Your browser does not support the HTML5 "audio" tag. audio_not_supported_in_browser = Your browser does not support the HTML5 "audio" tag.
stored_lfs = Stored with Git LFS stored_lfs = Stored with Git LFS
stored_annex = Stored with Git Annex
stored_annex_not_present = not present here, try using git annex whereis
symbolic_link = Symbolic link symbolic_link = Symbolic link
executable_file = Executable file executable_file = Executable file
vendored = Vendored vendored = Vendored
@ -1363,6 +1366,7 @@ editor.upload_file = Upload file
editor.edit_file = Edit file editor.edit_file = Edit file
editor.preview_changes = Preview changes editor.preview_changes = Preview changes
editor.cannot_edit_lfs_files = LFS files cannot be edited in the web interface. editor.cannot_edit_lfs_files = LFS files cannot be edited in the web interface.
editor.cannot_edit_annex_files = Annex files cannot be edited in the web interface.
editor.cannot_edit_non_text_files = Binary files cannot be edited in the web interface. editor.cannot_edit_non_text_files = Binary files cannot be edited in the web interface.
editor.edit_this_file = Edit file editor.edit_this_file = Edit file
editor.this_file_locked = File is locked editor.this_file_locked = File is locked
@ -1427,6 +1431,7 @@ editor.user_no_push_to_branch = User cannot push to branch
editor.require_signed_commit = Branch requires a signed commit editor.require_signed_commit = Branch requires a signed commit
editor.cherry_pick = Cherry-pick %s onto: editor.cherry_pick = Cherry-pick %s onto:
editor.revert = Revert %s onto: editor.revert = Revert %s onto:
editor.commit_email = Commit email
commits.desc = Browse source code change history. commits.desc = Browse source code change history.
commits.commits = Commits commits.commits = Commits
@ -3892,6 +3897,7 @@ variables.deletion.description = Removing a variable is permanent and cannot be
variables.description = Variables will be passed to certain actions and cannot be read otherwise. variables.description = Variables will be passed to certain actions and cannot be read otherwise.
variables.id_not_exist = Variable with ID %d does not exist. variables.id_not_exist = Variable with ID %d does not exist.
variables.edit = Edit Variable variables.edit = Edit Variable
variables.not_found = Failed to find the variable.
variables.deletion.failed = Failed to remove variable. variables.deletion.failed = Failed to remove variable.
variables.deletion.success = The variable has been removed. variables.deletion.success = The variable has been removed.
variables.creation.failed = Failed to add variable. variables.creation.failed = Failed to add variable.

View file

@ -56,7 +56,7 @@ mirror=Réplica
new_repo=Nuevo repositorio new_repo=Nuevo repositorio
new_migrate=Nueva migración new_migrate=Nueva migración
new_mirror=Nueva réplica new_mirror=Nueva réplica
new_fork=Nuevo fork de repositorio new_fork=Nueva bifurcación del repositorio
new_org=Nueva organización new_org=Nueva organización
new_project=Nuevo proyecto new_project=Nuevo proyecto
new_project_column=Nueva columna new_project_column=Nueva columna
@ -75,7 +75,7 @@ collaborative=Colaborativo
forks=Forks forks=Forks
activities=Actividades activities=Actividades
pull_requests=Pull requests pull_requests=Solicitudes de incorporación de cambios
issues=Incidencias issues=Incidencias
milestones=Hitos milestones=Hitos
@ -156,8 +156,8 @@ invalid_data = Datos inválidos: %v
confirm_delete_artifact = ¿Estás seguro de que deseas eliminar el artefacto "%s"? confirm_delete_artifact = ¿Estás seguro de que deseas eliminar el artefacto "%s"?
more_items = Mas cosas more_items = Mas cosas
copy_generic = Copiar al portapapeles copy_generic = Copiar al portapapeles
filter.not_fork = No forks filter.not_fork = No hay bifurcaciones
filter.is_fork = Forks filter.is_fork = Bifurcaciones
test = Test test = Test
error413 = Has agotado tu cuota. error413 = Has agotado tu cuota.
new_repo.title = Nuevo repositorio new_repo.title = Nuevo repositorio
@ -229,7 +229,7 @@ platform_desc=Se ha confirmado que Forgejo funciona en sistemas operativos libre
lightweight=Ligero lightweight=Ligero
lightweight_desc=Forgejo tiene pocos requisitos y puede funcionar en una Raspberry Pi barata. ¡Ahorra energía! lightweight_desc=Forgejo tiene pocos requisitos y puede funcionar en una Raspberry Pi barata. ¡Ahorra energía!
license=Código abierto license=Código abierto
license_desc=¡Está todo en < <a target="_blank" rel="noopener noreferrer" href="%[1]s">Forgejo</a>! Únase <a target="_blank" rel="noopener noreferrer" href="%[2]s">contribuyendo</a> a hacer este proyecto todavía mejor. ¡No sea tímido y colabore! license_desc=¡Pasa a conseguir <a target="_blank" rel="noopener noreferrer" href="%[1]s">Forgejo</a>! Únete a nosotros y <a target="_blank" rel="noopener noreferrer" href="%[2]s">colabora</a> para mejorar este proyecto. ¡No seas tímido y colabora!
[install] [install]
install=Instalación install=Instalación
@ -397,8 +397,8 @@ code_search_results=Resultados de búsqueda para «%s»
code_last_indexed_at=Indexado por última vez %s code_last_indexed_at=Indexado por última vez %s
relevant_repositories_tooltip=Repositorios que son bifurcaciones o que no tienen ningún tema, ningún icono, y ninguna descripción están ocultos. relevant_repositories_tooltip=Repositorios que son bifurcaciones o que no tienen ningún tema, ningún icono, y ninguna descripción están ocultos.
relevant_repositories=Solo se muestran repositorios relevantes, <a href="%s">mostrar resultados sin filtrar</a>. relevant_repositories=Solo se muestran repositorios relevantes, <a href="%s">mostrar resultados sin filtrar</a>.
forks_few = %d forks forks_few = %d bifurcaciones
forks_one = %d fork forks_one = %d bifurcación
stars_few = %d estrellas stars_few = %d estrellas
stars_one = %d estrella stars_one = %d estrella
@ -746,7 +746,7 @@ webauthn=Autenticación de dos factores (claves de seguridad)
public_profile=Perfil público public_profile=Perfil público
biography_placeholder=¡Cuenta a otros un poco sobre ti! (Se admite Markdown) biography_placeholder=¡Cuenta a otros un poco sobre ti! (Se admite Markdown)
location_placeholder=Comparte tu ubicación aproximada con otros location_placeholder=Comparte tu ubicación aproximada con otros
profile_desc=Controla cómo se muestra su perfil a otros usuarios. Tu dirección de correo electrónico principal se utilizará para notificaciones, recuperación de contraseña y operaciones de Git basadas en la web. profile_desc=Acerca de ti
password_username_disabled=Usuarios no locales no tienen permitido cambiar su nombre de usuario. Por favor, contacta con el administrador del sistema para más detalles. password_username_disabled=Usuarios no locales no tienen permitido cambiar su nombre de usuario. Por favor, contacta con el administrador del sistema para más detalles.
full_name=Nombre completo full_name=Nombre completo
website=Página web website=Página web
@ -811,7 +811,7 @@ manage_emails=Administrar direcciones de correo electrónico
manage_themes=Tema por defecto manage_themes=Tema por defecto
manage_openid=Direcciones OpenID manage_openid=Direcciones OpenID
email_desc=Su dirección de correo electrónico principal se utilizará para notificaciones, recuperación de contraseña y, siempre y cuando no esté oculto, operaciones de Git basadas en la web. email_desc=Su dirección de correo electrónico principal se utilizará para notificaciones, recuperación de contraseña y, siempre y cuando no esté oculto, operaciones de Git basadas en la web.
theme_desc=Este será su tema por defecto en todo el sitio. theme_desc=Este tema será usado en la interfaz web cuando hayas iniciado sesión.
primary=Principal primary=Principal
activated=Activado activated=Activado
requires_activation=Requiere activación requires_activation=Requiere activación
@ -837,14 +837,14 @@ add_email_success=La nueva dirección de correo electrónico ha sido añadida.
email_preference_set_success=La preferencia de correo electrónico se ha establecido correctamente. email_preference_set_success=La preferencia de correo electrónico se ha establecido correctamente.
add_openid_success=La nueva dirección OpenID ha sido añadida. add_openid_success=La nueva dirección OpenID ha sido añadida.
keep_email_private=Ocultar dirección de correo electrónico keep_email_private=Ocultar dirección de correo electrónico
keep_email_private_popup=Esto ocultará tu dirección de correo electrónico de tu perfil. Ya no será la dirección predeterminada para los commits realizados a través de la interfaz web, como las subidas y ediciones de archivos, y no se utilizará para los commits de fusión. En su lugar, se utilizará una dirección especial %s para asociar los commits a tu cuenta. Ten en cuenta que cambiar esta opción no afectará a los commits existentes. keep_email_private_popup=Esto ocultará tu dirección de correo electrónico de tu perfil. Ya no será la dirección predeterminada para los confirmaciones realizadas a través de la interfaz web, como las subidas y ediciones de archivos, y no se utilizará para las confirmaciones de fusión. En su lugar, se utilizará una dirección especial %s para asociar las confirmaciones a tu cuenta. Ten en cuenta que cambiar esta opción no afectará a las confirmaciones existentes.
openid_desc=OpenID le permite delegar la autenticación a un proveedor externo. openid_desc=OpenID le permite delegar la autenticación a un proveedor externo.
manage_ssh_keys=Gestionar claves SSH manage_ssh_keys=Gestionar claves SSH
manage_ssh_principals=Administrar Principales de Certificado SSH manage_ssh_principals=Administrar Principales de Certificado SSH
manage_gpg_keys=Gestionar claves GPG manage_gpg_keys=Gestionar claves GPG
add_key=Añadir clave add_key=Añadir clave
ssh_desc=Estas claves SSH públicas están asociadas a tu cuenta. Las correspondientes claves privadas permiten el acceso total a tus repositorios. Las claves SSH que han sido verificadas pueden utilizarse para verificar commits de Git firmados por SSH. ssh_desc=Estas claves SSH públicas están asociadas a tu cuenta. Las correspondientes claves privadas permiten el acceso total a tus repositorios. Las claves SSH que han sido verificadas pueden utilizarse para verificar confirmaciones de Git firmadas por SSH.
principal_desc=Estos principales de certificado SSH están asociados con su cuenta y permiten el acceso completo a sus repositorios. principal_desc=Estos principales de certificado SSH están asociados con su cuenta y permiten el acceso completo a sus repositorios.
gpg_desc=Estas claves GPG públicas están asociadas a tu cuenta y se utilizan para verificar tus commits. Mantén a salvo tus claves privadas, ya que permiten firmar commits con tu identidad. gpg_desc=Estas claves GPG públicas están asociadas a tu cuenta y se utilizan para verificar tus commits. Mantén a salvo tus claves privadas, ya que permiten firmar commits con tu identidad.
ssh_helper=<strong>¿Necesitas ayuda?</strong> Echa un vistazo en la guía de GitHub para <a href="%s">crear tus propias claves SSH</a> o resolver <a href="%s">problemas comunes</a> que puede encontrar al usar SSH. ssh_helper=<strong>¿Necesitas ayuda?</strong> Echa un vistazo en la guía de GitHub para <a href="%s">crear tus propias claves SSH</a> o resolver <a href="%s">problemas comunes</a> que puede encontrar al usar SSH.
@ -1054,6 +1054,8 @@ keep_activity_private.description = Tu <a href="%s">actividad pública</a> solo
language.description = Este idioma se guardará en tu cuenta y se utilizará como predeterminado cuando te conectes. language.description = Este idioma se guardará en tu cuenta y se utilizará como predeterminado cuando te conectes.
language.localization_project = ¡Ayúdanos a traducir Forgejo a tu idioma! <a href="%s">Más información</a>. language.localization_project = ¡Ayúdanos a traducir Forgejo a tu idioma! <a href="%s">Más información</a>.
pronouns_custom_label = Pronombres personalizados
[repo] [repo]
owner=Propietario owner=Propietario
owner_helper=Algunas organizaciones pueden no aparecer en el menú desplegable debido a un límite máximo de recuento de repositorios. owner_helper=Algunas organizaciones pueden no aparecer en el menú desplegable debido a un límite máximo de recuento de repositorios.
@ -1068,10 +1070,10 @@ visibility=Visibilidad
visibility_description=Sólo el propietario o los miembros de la organización -si tienen derechos- podrán verlo. visibility_description=Sólo el propietario o los miembros de la organización -si tienen derechos- podrán verlo.
visibility_helper=Hacer el repositorio privado visibility_helper=Hacer el repositorio privado
visibility_helper_forced=El administrador de su sitio obliga a nuevos repositorios a ser privados. visibility_helper_forced=El administrador de su sitio obliga a nuevos repositorios a ser privados.
visibility_fork_helper=(Cambiar esto afectará a la visibilidad de todos los forks.) visibility_fork_helper=(Cambiar esto afectará a la visibilidad de todas las bifurcaciones.)
clone_helper=¿Necesita ayuda para clonar? Visite <a target="_blank" rel="noopener noreferrer" href="%s">Ayuda</a>. clone_helper=¿Necesita ayuda para clonar? Visite <a target="_blank" rel="noopener noreferrer" href="%s">Ayuda</a>.
fork_repo=Hacer fork del repositorio fork_repo=Hacer una bifurcación del repositorio
fork_from=Crear un fork desde fork_from=Crear una bifurcación desde
already_forked=Ya ha forkeado %s already_forked=Ya ha forkeado %s
fork_to_different_account=Forkear a una cuenta diferente fork_to_different_account=Forkear a una cuenta diferente
fork_visibility_helper=La visibilidad de un repositorio del cual se ha hecho fork no puede ser cambiada. fork_visibility_helper=La visibilidad de un repositorio del cual se ha hecho fork no puede ser cambiada.
@ -1094,11 +1096,11 @@ issue_labels=Etiquetas
issue_labels_helper=Selecciona un conjunto de etiquetas issue_labels_helper=Selecciona un conjunto de etiquetas
license=Licencia license=Licencia
license_helper=Selecciona un archivo de licencia license_helper=Selecciona un archivo de licencia
license_helper_desc=Una licencia regula lo que otros pueden y no pueden hacer con tu código. ¿No está seguro de cuál es el adecuado para su proyecto? Vea <a target="_blank" rel="noopener noreferrer" href="%s">Elija una licencia.</a> license_helper_desc=Una licencia regula lo que otros pueden y no pueden hacer con tu código. ¿No está seguro de cuál es el adecuado para su proyecto? Vea <a target="_blank" rel="noopener noreferrer" href="%s">Elija una licencia</a>.
readme=LÉAME readme=LÉAME
readme_helper=Selecciona una plantilla de archivo README readme_helper=Selecciona una plantilla de archivo README
readme_helper_desc=Este es el lugar donde puedes escribir una descripción completa de su proyecto. readme_helper_desc=Este es el lugar donde puedes escribir una descripción completa de su proyecto.
auto_init=Inicializar el repositorio (añade .gitignore, licencia y README) auto_init=Inicializar el repositorio
trust_model_helper=Seleccionar modelo de confianza para la verificación de la firma. Las opciones posibles son: trust_model_helper=Seleccionar modelo de confianza para la verificación de la firma. Las opciones posibles son:
trust_model_helper_collaborator=Colaborador: Confiar en firmas de colaboradores trust_model_helper_collaborator=Colaborador: Confiar en firmas de colaboradores
trust_model_helper_committer=Comitter: Firmas de confianza que coinciden con los committers trust_model_helper_committer=Comitter: Firmas de confianza que coinciden con los committers
@ -1222,7 +1224,7 @@ migrate.migrating_failed_no_addr=Migración fallida.
migrate.github.description=Migrar datos desde github.com o un servidor GitHub Enterprise. migrate.github.description=Migrar datos desde github.com o un servidor GitHub Enterprise.
migrate.git.description=Migrar un repositorio sólo desde cualquier servicio Git. migrate.git.description=Migrar un repositorio sólo desde cualquier servicio Git.
migrate.gitlab.description=Migrar datos de gitlab.com u otra instancia de GitLab. migrate.gitlab.description=Migrar datos de gitlab.com u otra instancia de GitLab.
migrate.gitea.description=Migrar datos de gitea.com u otra instancia de Gitea/Forgejo. migrate.gitea.description=Migrar datos de gitea.com u otra instancia de Gitea.
migrate.gogs.description=Migrar datos de notabug.org u otra instancia de Gogs. migrate.gogs.description=Migrar datos de notabug.org u otra instancia de Gogs.
migrate.onedev.description=Migrar datos desde code.onedev.io u otra instancia de OneDev. migrate.onedev.description=Migrar datos desde code.onedev.io u otra instancia de OneDev.
migrate.codebase.description=Migrar datos desde codebasehq.com. migrate.codebase.description=Migrar datos desde codebasehq.com.
@ -1233,7 +1235,7 @@ migrate.migrating_milestones=Migrando hitos
migrate.migrating_labels=Migrando etiquetas migrate.migrating_labels=Migrando etiquetas
migrate.migrating_releases=Migrando lanzamientos migrate.migrating_releases=Migrando lanzamientos
migrate.migrating_issues=Migrando incidencias migrate.migrating_issues=Migrando incidencias
migrate.migrating_pulls=Migrando pull requests migrate.migrating_pulls=Migrando solicitudes de incorporación de cambios
migrate.cancel_migrating_title=Cancelar la migración migrate.cancel_migrating_title=Cancelar la migración
migrate.cancel_migrating_confirm=¿Quiere cancelar esta migración? migrate.cancel_migrating_confirm=¿Quiere cancelar esta migración?
@ -1310,6 +1312,7 @@ view_git_blame=Ver Git blame
video_not_supported_in_browser=Su navegador no soporta el tag "video" de HTML5. video_not_supported_in_browser=Su navegador no soporta el tag "video" de HTML5.
audio_not_supported_in_browser=Su navegador no soporta el tag "audio" de HTML5. audio_not_supported_in_browser=Su navegador no soporta el tag "audio" de HTML5.
stored_lfs=Almacenados con Git LFS stored_lfs=Almacenados con Git LFS
stored_annex=Almacenados con Git Annex
symbolic_link=Enlace simbólico symbolic_link=Enlace simbólico
executable_file=Archivo ejecutable executable_file=Archivo ejecutable
commit_graph=Gráfico de commits commit_graph=Gráfico de commits
@ -1333,6 +1336,7 @@ editor.upload_file=Subir archivo
editor.edit_file=Editar archivo editor.edit_file=Editar archivo
editor.preview_changes=Vista previa de los cambios editor.preview_changes=Vista previa de los cambios
editor.cannot_edit_lfs_files=Los archivos LFS no se pueden editar en la interfaz web. editor.cannot_edit_lfs_files=Los archivos LFS no se pueden editar en la interfaz web.
editor.cannot_edit_annex_files=Los archivos Annex no se pueden editar en la interfaz web.
editor.cannot_edit_non_text_files=Los archivos binarios no se pueden editar en la interfaz web. editor.cannot_edit_non_text_files=Los archivos binarios no se pueden editar en la interfaz web.
editor.edit_this_file=Editar archivo editor.edit_this_file=Editar archivo
editor.this_file_locked=El archivo está bloqueado editor.this_file_locked=El archivo está bloqueado
@ -1859,7 +1863,7 @@ pulls.add_prefix=Añadir prefijo <strong>%s</strong>
pulls.remove_prefix=Eliminar prefijo <strong>%s</strong> pulls.remove_prefix=Eliminar prefijo <strong>%s</strong>
pulls.data_broken=Este pull request está rota debido a que falta información del fork. pulls.data_broken=Este pull request está rota debido a que falta información del fork.
pulls.files_conflicted=Este pull request tiene cambios en conflicto con la rama de destino. pulls.files_conflicted=Este pull request tiene cambios en conflicto con la rama de destino.
pulls.is_checking=La comprobación de conflicto de fusión está en progreso. Inténtalo de nuevo en unos momentos. pulls.is_checking=La comprobación de conflicto de fusión está en progreso. Inténtelo de nuevo en unos momentos.
pulls.is_ancestor=Esta rama ya está incluida en la rama de destino. No hay nada que fusionar. pulls.is_ancestor=Esta rama ya está incluida en la rama de destino. No hay nada que fusionar.
pulls.is_empty=Los cambios en esta rama ya están en la rama de destino. Esto será un commit vacío. pulls.is_empty=Los cambios en esta rama ya están en la rama de destino. Esto será un commit vacío.
pulls.required_status_check_failed=Algunos controles requeridos no han tenido éxito. pulls.required_status_check_failed=Algunos controles requeridos no han tenido éxito.
@ -2039,8 +2043,8 @@ activity.opened_prs_count_1=Pull request propuesta
activity.opened_prs_count_n=Pull requests propuestas activity.opened_prs_count_n=Pull requests propuestas
activity.title.user_1=%d usuario activity.title.user_1=%d usuario
activity.title.user_n=%d usuarios activity.title.user_n=%d usuarios
activity.title.prs_1=%d pull request activity.title.prs_1=%d solicitud de incorporación de cambios
activity.title.prs_n=%d pull requests activity.title.prs_n=%d solicitudes de incorporación de cambios
activity.title.prs_merged_by=%s fusionado por %s activity.title.prs_merged_by=%s fusionado por %s
activity.title.prs_opened_by=%s propuesto por %s activity.title.prs_opened_by=%s propuesto por %s
activity.merged_prs_label=Fusionado activity.merged_prs_label=Fusionado
@ -2087,7 +2091,7 @@ activity.git_stats_and_deletions=y
activity.git_stats_deletion_1=%d eliminación activity.git_stats_deletion_1=%d eliminación
activity.git_stats_deletion_n=%d eliminaciones activity.git_stats_deletion_n=%d eliminaciones
contributors.contribution_type.commits=Commits contributors.contribution_type.commits=Confirmaciones
search=Buscar search=Buscar
search.search_repo=Buscar repositorio search.search_repo=Buscar repositorio
@ -2331,7 +2335,7 @@ settings.event_pull_request_desc=Pull request abierto, cerrado, reabierto o edit
settings.event_pull_request_assign=Asignación settings.event_pull_request_assign=Asignación
settings.event_pull_request_assign_desc=Pull Request asignado o no asignado. settings.event_pull_request_assign_desc=Pull Request asignado o no asignado.
settings.event_pull_request_label=Etiquetas settings.event_pull_request_label=Etiquetas
settings.event_pull_request_label_desc=Etiqueta de pull request actualizada o borrada. settings.event_pull_request_label_desc=Etiquetas de pull request actualizadas o borradas.
settings.event_pull_request_milestone=Hitos settings.event_pull_request_milestone=Hitos
settings.event_pull_request_milestone_desc=Hitos añadidos, eliminados o modificados. settings.event_pull_request_milestone_desc=Hitos añadidos, eliminados o modificados.
settings.event_pull_request_comment=Comentarios settings.event_pull_request_comment=Comentarios
@ -2436,7 +2440,7 @@ settings.protect_approvals_whitelist_users=Lista blanca de usuarios revisores
settings.protect_approvals_whitelist_teams=Lista blanca de equipos revisores settings.protect_approvals_whitelist_teams=Lista blanca de equipos revisores
settings.dismiss_stale_approvals=Descartar aprobaciones obsoletas settings.dismiss_stale_approvals=Descartar aprobaciones obsoletas
settings.dismiss_stale_approvals_desc=Cuando los nuevos commits que cambien el contenido de la pull request sean empujados a la rama, se descartarán las aprobaciones antiguas. settings.dismiss_stale_approvals_desc=Cuando los nuevos commits que cambien el contenido de la pull request sean empujados a la rama, se descartarán las aprobaciones antiguas.
settings.require_signed_commits=Exigir commits firmados settings.require_signed_commits=Exigir confirmaciones firmadas
settings.require_signed_commits_desc=Rechazar push en esta rama si los commits no están firmados o no son verificables. settings.require_signed_commits_desc=Rechazar push en esta rama si los commits no están firmados o no son verificables.
settings.protect_branch_name_pattern=Patrón de nombre de ramas protegidas settings.protect_branch_name_pattern=Patrón de nombre de ramas protegidas
settings.protect_patterns=Patrones settings.protect_patterns=Patrones
@ -2464,7 +2468,7 @@ settings.choose_branch=Elija una rama…
settings.no_protected_branch=No hay ramas protegidas. settings.no_protected_branch=No hay ramas protegidas.
settings.edit_protected_branch=Editar settings.edit_protected_branch=Editar
settings.protected_branch_required_rule_name=Nombre de regla requerido settings.protected_branch_required_rule_name=Nombre de regla requerido
settings.protected_branch_duplicate_rule_name=Nombre de regla duplicado settings.protected_branch_duplicate_rule_name=Ya hay una regla para este conjunto de ramas
settings.protected_branch_required_approvals_min=Las aprobaciones necesarias no pueden ser negativas. settings.protected_branch_required_approvals_min=Las aprobaciones necesarias no pueden ser negativas.
settings.tags=Etiquetas settings.tags=Etiquetas
settings.tags.protection=Protección de etiquetas settings.tags.protection=Protección de etiquetas
@ -2488,11 +2492,11 @@ settings.archive.text=Archivar el repositorio lo hará de sólo lectura. Se ocul
settings.archive.success=El repositorio ha sido archivado exitosamente. settings.archive.success=El repositorio ha sido archivado exitosamente.
settings.archive.error=Ha ocurrido un error al intentar archivar el repositorio. Vea el registro para más detalles. settings.archive.error=Ha ocurrido un error al intentar archivar el repositorio. Vea el registro para más detalles.
settings.archive.error_ismirror=No puede archivar un repositorio replicado. settings.archive.error_ismirror=No puede archivar un repositorio replicado.
settings.archive.branchsettings_unavailable=Los ajustes de rama no están disponibles si el repositorio está archivado. settings.archive.branchsettings_unavailable=Los ajustes de rama no están disponibles en repositorios archivados.
settings.archive.tagsettings_unavailable=Los ajustes de las etiquetas no están disponibles si el repositorio está archivado. settings.archive.tagsettings_unavailable=Los ajustes de las etiquetas no están disponibles si el repositorio está archivado.
settings.unarchive.button=Desarchivar repositorio settings.unarchive.button=Desarchivar repositorio
settings.unarchive.header=Desarchivar este repositorio settings.unarchive.header=Desarchivar este repositorio
settings.unarchive.text=La desarchivación del repositorio restablecerá su capacidad de recibir commits y pushes, así como nuevas incidencias y pull requests. settings.unarchive.text=La desarchivación del repositorio restablecerá su capacidad de recibir confirmaciones y subidos, así como nuevas incidencias y solicitudes de incorporación de cambios.
settings.unarchive.success=El repositorio se ha desarchivado correctamente. settings.unarchive.success=El repositorio se ha desarchivado correctamente.
settings.unarchive.error=Ocurrió un error mientras se trataba de des-archivar el repositorio. Revisa el registro para más detalles. settings.unarchive.error=Ocurrió un error mientras se trataba de des-archivar el repositorio. Revisa el registro para más detalles.
settings.update_avatar_success=El avatar del repositorio ha sido actualizado. settings.update_avatar_success=El avatar del repositorio ha sido actualizado.
@ -2563,7 +2567,7 @@ diff.generated=generado
diff.vendored=vendido diff.vendored=vendido
diff.comment.add_line_comment=Añadir comentario en línea diff.comment.add_line_comment=Añadir comentario en línea
diff.comment.placeholder=Deja un comentario diff.comment.placeholder=Deja un comentario
diff.comment.markdown_info=Es posible estilizar con markdown. diff.comment.markdown_info=Es posible dar estilos con Markdown.
diff.comment.add_single_comment=Añadir solo comentario diff.comment.add_single_comment=Añadir solo comentario
diff.comment.add_review_comment=Añadir comentario diff.comment.add_review_comment=Añadir comentario
diff.comment.start_review=Comenzar revisión diff.comment.start_review=Comenzar revisión
@ -2718,7 +2722,7 @@ size_format = %[1]s: %[2]s, %[3]s: %[4]s
admin.update_flags = Actualizar indicadores admin.update_flags = Actualizar indicadores
admin.flags_replaced = Indicadores del repositorio sustituidos admin.flags_replaced = Indicadores del repositorio sustituidos
admin.failed_to_replace_flags = Fallo al substituir los indicadores del repositorio admin.failed_to_replace_flags = Fallo al substituir los indicadores del repositorio
new_repo_helper = Un repositorio contiene todos los archivos del proyecto, incluido el historial de revisiones. ¿Ya tienes uno en otro sitio? <a href="%s">Migrar repositorio.</a> new_repo_helper = Un repositorio contiene todos los archivos del proyecto, incluido el historial de revisiones. ¿Ya tienes uno en otro sitio? <a href="%s">Migrar repositorio</a>.
object_format_helper = Formato de objeto del repositorio. No puede ser modificado más tarde. SHA1 es el más compatible. object_format_helper = Formato de objeto del repositorio. No puede ser modificado más tarde. SHA1 es el más compatible.
commits.browse_further = Seguir explorando commits.browse_further = Seguir explorando
subscribe.issue.guest.tooltip = Inicia sesión para suscribirte a esta incidencia. subscribe.issue.guest.tooltip = Inicia sesión para suscribirte a esta incidencia.
@ -2796,7 +2800,7 @@ settings.confirmation_string = Cadena de confirmación
issues.filter_sort.relevance = Relevancia issues.filter_sort.relevance = Relevancia
settings.transfer_quota_exceeded = El nuevo propietario (%s) ha sobrepasado la cuota. El repositorio no ha sido transferido. settings.transfer_quota_exceeded = El nuevo propietario (%s) ha sobrepasado la cuota. El repositorio no ha sido transferido.
settings.web_hook_name_sourcehut_builds = Builds de SourceHut settings.web_hook_name_sourcehut_builds = Builds de SourceHut
settings.wiki_rename_branch_main_notices_2 = settings.wiki_rename_branch_main_notices_2 =Se va a renombrar de forma permanente la rama interna de la wiki del repositorio %s. Se actualizaran los checkouts existentes.
settings.wiki_rename_branch_main = Normalizar el nombre de la rama de la wiki settings.wiki_rename_branch_main = Normalizar el nombre de la rama de la wiki
settings.wiki_rename_branch_main_desc = Renombrar la rama interna usada por la wiki a "%s". Este cambio es permanente y no se puede deshacer. settings.wiki_rename_branch_main_desc = Renombrar la rama interna usada por la wiki a "%s". Este cambio es permanente y no se puede deshacer.
settings.confirm_wiki_branch_rename = Renombrar la rama de la wiki settings.confirm_wiki_branch_rename = Renombrar la rama de la wiki
@ -2813,7 +2817,32 @@ release.download_count_one = %s descarga
diff.git-notes.add = Añadir nota diff.git-notes.add = Añadir nota
diff.git-notes.remove-header = Eliminar nota diff.git-notes.remove-header = Eliminar nota
release.download_count_few = %s descargas release.download_count_few = %s descargas
diff.git-notes.remove-body = Esta nota se eliminará. diff.git-notes.remove-body = Esta nota será eliminada.
new_from_template = Usa una plantilla
new_from_template_description = Puedes seleccionar una plantilla de repositorio ya existente en esta instancia y aplicar sus ajustes.
new_advanced = Ajustes avanzados
new_advanced_expand = Click para expandir
auto_init_description = Empieza el historial Git con un README y opcionalmente añade una Licencia y archivos .gitignore.
editor.add_tmpl.filename = nombre de fichero
issues.num_reviews_one = %d revisión
issues.num_reviews_few = %d revisiones
issues.reaction.add = Añadir reacción
issues.reaction.alt_remove = Quitar %[1]s reacción de comentario.
issues.reaction.alt_add = Añadir %[1]s reacción al comentario.
issues.review.add_review_requests = solicitada revisiones de %[1]s %[2]s
issues.review.remove_review_requests = eliminada la solicitud de revisiones para %[1]s %[2]s
editor.commit_email = Correo electrónico del commit
issues.context.menu = Menú de comentarios
issues.review.add_remove_review_requests = Revisiones solicitadas de %[1]s y revisiones eliminadas para %[2]s %[3]s
pulls.sign_in_require = <a href="%s">Inicia sesión</a> para crear un nuevo pull request.
pulls.cmd_instruction_checkout_title = Cambiar rama
settings.protect_new_rule = Crear una nueva regla de protección de rama
settings.enforce_on_admins_desc = Los administradores del repositorio no pueden saltarse esta regla.
release.type_external_asset = Recurso externo
release.asset_name = Nombre del recurso
release.add_external_asset = Añadir un recurso externo
[graphs] [graphs]
component_loading = Cargando %s... component_loading = Cargando %s...
@ -2822,6 +2851,9 @@ contributors.what = contribuciones
recent_commits.what = commits recientes recent_commits.what = commits recientes
code_frequency.what = frecuencia de código code_frequency.what = frecuencia de código
component_loading_info = Esto puede tomar un tiempo…
component_failed_to_load = Ocurrió un error inesperado.
[org] [org]
org_name_holder=Nombre de la organización org_name_holder=Nombre de la organización
org_full_name_holder=Nombre completo de la organización org_full_name_holder=Nombre completo de la organización
@ -2947,6 +2979,8 @@ teams.invite.by=Invitado por %s
teams.invite.description=Por favor, haga clic en el botón de abajo para unirse al equipo. teams.invite.description=Por favor, haga clic en el botón de abajo para unirse al equipo.
follow_blocked_user = No puedes seguir a esta organización porque esta organización te ha bloqueado. follow_blocked_user = No puedes seguir a esta organización porque esta organización te ha bloqueado.
open_dashboard = Abrir panel de control
[admin] [admin]
dashboard=Panel de control dashboard=Panel de control
identity_access=Identidad y acceso identity_access=Identidad y acceso
@ -3474,6 +3508,20 @@ notices.op=Operación
notices.delete_success=Los avisos del sistema se han eliminado. notices.delete_success=Los avisos del sistema se han eliminado.
config_summary = Resumen
config_settings = Ajustes
users.activated.description = Finalización de la verificación del correo electrónico. El propietario de una cuenta sin activar no podrá iniciar sesión hasta que la verificación se complete.
users.organization_creation.description = Permitir la creación de nuevas organizaciones.
emails.change_email_text = ¿Estás seguro que quieres actualizar esta dirección de correo electrónico?
emails.delete = Eliminar correo electrónico
emails.delete_desc = ¿Estás seguro que quieres eliminar esta dirección de correo electrónico?
emails.deletion_success = El correo electrónico ha sido eliminado.
emails.delete_primary_email_error = No puedes eliminar el correo electrónico principal.
auths.tips.gmail_settings = Ajustes de Gmail:
auths.tip.gitlab_new = Registrar una nueva aplicación en %s
config.cache_test = Caché de prueba
self_check.no_problem_found = Aún no se encontró un problema.
[action] [action]
create_repo=creó el repositorio <a href="%s">%s</a> create_repo=creó el repositorio <a href="%s">%s</a>
rename_repo=repositorio renombrado de <code>%[1]s</code> a <a href="%[2]s">%[3]s</a> rename_repo=repositorio renombrado de <code>%[1]s</code> a <a href="%[2]s">%[3]s</a>
@ -3617,7 +3665,7 @@ conda.install=Para instalar el paquete usando Conda, ejecute el siguiente comand
container.details.type=Tipo de imagen container.details.type=Tipo de imagen
container.details.platform=Plataforma container.details.platform=Plataforma
container.pull=Arrastra la imagen desde la línea de comandos: container.pull=Arrastra la imagen desde la línea de comandos:
container.digest=Resumen: container.digest=Resumen
container.multi_arch=SO / Arquitectura container.multi_arch=SO / Arquitectura
container.layers=Capas de imagen container.layers=Capas de imagen
container.labels=Etiquetas container.labels=Etiquetas
@ -3714,6 +3762,19 @@ owner.settings.chef.title=Registro de Chef
owner.settings.chef.keypair=Generar par de claves owner.settings.chef.keypair=Generar par de claves
owner.settings.chef.keypair.description=Un par de claves es necesario para autenticarse en el registro del Chef. Si ha generado un par de claves antes, generar un nuevo par de claves descartará el par de claves antiguo. owner.settings.chef.keypair.description=Un par de claves es necesario para autenticarse en el registro del Chef. Si ha generado un par de claves antes, generar un nuevo par de claves descartará el par de claves antiguo.
arch.pacman.repo.multi = %s tiene la misma versión en diferentes distribuciones.
arch.pacman.repo.multi.item = Configuración para %s
arch.pacman.conf = Añadir servidor con distribución y arquitectura relacionadas a <code>/etc/pacman.conf</code> :
arch.pacman.sync = Sincronizar el paquete con pacman:
arch.version.properties = Propiedades de la versión
arch.version.groups = Grupo
arch.version.depends = Depende
arch.version.conflicts = Conflictos
arch.version.replaces = Reemplazos
arch.version.backup = Copia de seguridad
container.images.title = Imágenes
rpm.repository.multiple_groups = Este paquete está disponible en múltiples grupos.
[secrets] [secrets]
secrets=Secretos secrets=Secretos
description=Los secretos pasarán a ciertas acciones y no se podrán leer de otro modo. description=Los secretos pasarán a ciertas acciones y no se podrán leer de otro modo.
@ -3732,7 +3793,7 @@ management=Gestión de secretos
[actions] [actions]
actions=Acciones actions=Acciones
unit.desc=Gestionar acciones unit.desc=Gestione procesos CI/CD integrados con Forgejo Actions.
status.unknown=Desconocido status.unknown=Desconocido
status.waiting=Esperando status.waiting=Esperando
@ -3816,6 +3877,9 @@ variables.update.failed=Error al editar la variable.
variables.update.success=La variable ha sido editada. variables.update.success=La variable ha sido editada.
variables.id_not_exist = Variable con id %d no existe. variables.id_not_exist = Variable con id %d no existe.
runs.empty_commit_message = (mensaje de commit vacío)
runs.expire_log_message = Los registros han sido eliminados porque eran demasiado antiguos.
[projects] [projects]
type-1.display_name=Proyecto individual type-1.display_name=Proyecto individual
type-2.display_name=Proyecto repositorio type-2.display_name=Proyecto repositorio
@ -3837,7 +3901,7 @@ search = Buscar...
type_tooltip = Tipo de búsqueda type_tooltip = Tipo de búsqueda
project_kind = Buscar proyectos... project_kind = Buscar proyectos...
branch_kind = Buscar ramas... branch_kind = Buscar ramas...
commit_kind = Buscar commits... commit_kind = Buscar confirmaciones...
repo_kind = Buscar repositorios... repo_kind = Buscar repositorios...
user_kind = Buscar usuarios... user_kind = Buscar usuarios...
org_kind = Buscar organizaciones... org_kind = Buscar organizaciones...
@ -3860,6 +3924,8 @@ fuzzy = Difusa
runner_kind = Buscar ejecutores… runner_kind = Buscar ejecutores…
regexp_tooltip = Interpretar los términos de búsqueda como una expresión regular regexp_tooltip = Interpretar los términos de búsqueda como una expresión regular
regexp = Expresión Regular
[markup] [markup]
filepreview.lines = Líneas %[1]d a %[2]d en %[3]s filepreview.lines = Líneas %[1]d a %[2]d en %[3]s
filepreview.line = Línea %[1]d en %[2]s filepreview.line = Línea %[1]d en %[2]s
@ -3870,7 +3936,7 @@ releases.write = <b>Write:</b> Publicar, editar y eliminar lanzamientos y sus ar
packages.read = <b>Lectura:</b> Ver y descargar paquetes asignados al repositorio. packages.read = <b>Lectura:</b> Ver y descargar paquetes asignados al repositorio.
wiki.read = <b>Lectura:</b> Leer la wiki integrada y su historial. wiki.read = <b>Lectura:</b> Leer la wiki integrada y su historial.
issues.read = <b>Lectura:</b> Leer y crear incidencias y comentarios. issues.read = <b>Lectura:</b> Leer y crear incidencias y comentarios.
pulls.write = <b>Escritura:</b> Cerrar pull requests y gestionar metadatos como etiquetas, hitos, asignaciones, fechas de vencimiento y dependencias. pulls.write = <b>Escritura:</b> Cerrar solicitudes de incorporación de cambios y gestionar metadatos como etiquetas, hitos, asignaciones, fechas de vencimiento y dependencias.
releases.read = <b>Lectura:</b> Ver y descagar lanzamientos. releases.read = <b>Lectura:</b> Ver y descagar lanzamientos.
wiki.write = <b>Escritura:</b> Crear, actualizar y eliminar páginas en la wiki integrada. wiki.write = <b>Escritura:</b> Crear, actualizar y eliminar páginas en la wiki integrada.
projects.read = <b>Lectura:</b> Acceso a las tablas de proyecto del repositorio. projects.read = <b>Lectura:</b> Acceso a las tablas de proyecto del repositorio.

View file

@ -881,7 +881,7 @@ migrate.migrating_failed=مهاجرت از <b>%s</b> ناموفق بود.
migrate.migrating_failed_no_addr=مهاجرت ناموفق بود. migrate.migrating_failed_no_addr=مهاجرت ناموفق بود.
migrate.git.description=کوچ یک مخزن فقط از یک سرویس Git. migrate.git.description=کوچ یک مخزن فقط از یک سرویس Git.
migrate.gitlab.description=مهاجرت داده از gitlabb.com یا پیاده‌سازی‌های دیگر GitLab. migrate.gitlab.description=مهاجرت داده از gitlabb.com یا پیاده‌سازی‌های دیگر GitLab.
migrate.gitea.description=مهاجرت داده از gitea.com یا پیاده‌سازی‌های دیگر Gitea/Forgejo. migrate.gitea.description=مهاجرت داده از gitea.com یا پیاده‌سازی‌های دیگر Gitea.
migrate.gogs.description=مهاجرت داده از notabug.com یا پیاده‌سازی‌های دیگر Gogs. migrate.gogs.description=مهاجرت داده از notabug.com یا پیاده‌سازی‌های دیگر Gogs.
migrate.onedev.description=مهاجرت داده از code.onedev.io یا پیاده‌سازی‌های دیگر OneDev. migrate.onedev.description=مهاجرت داده از code.onedev.io یا پیاده‌سازی‌های دیگر OneDev.
migrate.codebase.description=مهاجر داده ها از codebasehq.com. migrate.codebase.description=مهاجر داده ها از codebasehq.com.
@ -951,6 +951,7 @@ file_copy_permalink=پرمالینک را کپی کنید
video_not_supported_in_browser=مرورگر شما از تگ video که در HTML5 تعریف شده است، پشتیبانی نمی کند. video_not_supported_in_browser=مرورگر شما از تگ video که در HTML5 تعریف شده است، پشتیبانی نمی کند.
audio_not_supported_in_browser=مرورگر شما از تگ audio که در HTML5 تعریف شده است، پشتیبانی نمی کند. audio_not_supported_in_browser=مرورگر شما از تگ audio که در HTML5 تعریف شده است، پشتیبانی نمی کند.
stored_lfs=ذخیره شده با GIT LFS stored_lfs=ذخیره شده با GIT LFS
stored_annex=ذخیره شده با GIT Annex
symbolic_link=پیوند نمادین symbolic_link=پیوند نمادین
commit_graph=نمودار کامیت commit_graph=نمودار کامیت
commit_graph.select=انتخاب برنچها commit_graph.select=انتخاب برنچها
@ -968,6 +969,7 @@ editor.upload_file=بارگذاری پرونده
editor.edit_file=ویرایش پرونده editor.edit_file=ویرایش پرونده
editor.preview_changes=پیش نمایش تغییرات editor.preview_changes=پیش نمایش تغییرات
editor.cannot_edit_lfs_files=پرونده های LFS در صحفه وب قابل تغییر نیست. editor.cannot_edit_lfs_files=پرونده های LFS در صحفه وب قابل تغییر نیست.
editor.cannot_edit_annex_files=پرونده های Annex در صحفه وب قابل تغییر نیست.
editor.cannot_edit_non_text_files=پرونده‎های دودویی در صفحه وب قابل تغییر نیست. editor.cannot_edit_non_text_files=پرونده‎های دودویی در صفحه وب قابل تغییر نیست.
editor.edit_this_file=ویرایش پرونده editor.edit_this_file=ویرایش پرونده
editor.this_file_locked=پرونده قفل شده است editor.this_file_locked=پرونده قفل شده است
@ -2291,7 +2293,7 @@ auths.bind_password=اتصال گذرواژه
auths.user_base=پایگاه جستجوی کاربر auths.user_base=پایگاه جستجوی کاربر
auths.user_dn=کاربر DN auths.user_dn=کاربر DN
auths.attribute_username=ویژگی نام کاربری auths.attribute_username=ویژگی نام کاربری
auths.attribute_username_placeholder=نام کاربری را خالی بگذارید برای انتخاب نام کاربری gitea انتخاب شود. auths.attribute_username_placeholder=نام کاربری را خالی بگذارید برای انتخاب نام کاربری Forgejo انتخاب شود.
auths.attribute_name=ویژگی نام auths.attribute_name=ویژگی نام
auths.attribute_surname=ویژگی نام خانوادگی auths.attribute_surname=ویژگی نام خانوادگی
auths.attribute_mail=ویژگی ایمیل auths.attribute_mail=ویژگی ایمیل

View file

@ -2097,6 +2097,16 @@ settings.archive.text = Repon arkistointi asettaa sen pelkkään lukutilaan. Se
no_eol.text = Ei EOL:ää no_eol.text = Ei EOL:ää
pulls.compare_changes_desc = Valitse haara, johon yhdistetään, ja haara, josta vedetään. pulls.compare_changes_desc = Valitse haara, johon yhdistetään, ja haara, josta vedetään.
new_from_template = Käytä mallipohjaa
new_from_template_description = Voit valita olemassa olevan repon mallipohjan ja toteuttaa sen asetukset.
new_advanced = Lisäasetukset
new_advanced_expand = Laajenna napsauttamalla
template_description = Repojen mallipohjat mahdollistavat uusien repojen luomisen halutulla hakemistorakenteella, tiedostoilla ja valinnaisilla asetuksilla.
auto_init_description = Aloita Git-historia README-tiedostolla ja valinnaisesti License- ja .gitignore-tiedostoilla.
settings.enter_repo_name = Kirjoita omistajan ja repon nimi täsmälleen kuten esitetty:
settings.confirmation_string = Vahvistusteksti
settings.delete_notices_2 = - Tämä toiminto poistaa pysyvästi repon <strong>%s</strong> mukaan lukien koodin, ongelmat, kommentit, wikidatan ja avustaja-asetukset.
[graphs] [graphs]
component_loading_info = Tämä saattaa kestää hetken… component_loading_info = Tämä saattaa kestää hetken…
component_failed_to_load = Odottamaton virhe. component_failed_to_load = Odottamaton virhe.
@ -2582,6 +2592,16 @@ compare_branch = Vertaa
review_dismissed_reason = Syy: review_dismissed_reason = Syy:
commit_repo = työnsi haaraan <a href="%[2]s">%[3]s</a> repossa <a href="%[1]s">%[4]s</a> commit_repo = työnsi haaraan <a href="%[2]s">%[3]s</a> repossa <a href="%[1]s">%[4]s</a>
create_issue = `avasi ongelman <a href="%[1]s">%[3]s#%[2]s</a>`
close_issue = `sulki ongelman <a href="%[1]s">%[3]s#%[2]s</a>`
reopen_issue = `avasi uudelleen ongelman <a href="%[1]s">%[3]s#%[2]s</a>`
create_pull_request = `loi vetopyynnön <a href="%[1]s">%[3]s#%[2]s</a>`
close_pull_request = `sulki vetopyynnön <a href="%[1]s">%[3]s#%[2]s</a>`
reopen_pull_request = `avasi uudelleen vetopyynnön <a href="%[1]s">%[3]s#%[2]s</a>`
comment_issue = `kommentoi ongelmaa <a href="%[1]s">%[3]s#%[2]s</a>`
comment_pull = `kommentoi vetopyyntöä <a href="%[1]s">%[3]s#%[2]s</a>`
merge_pull_request = `yhdisti vetopyynnön <a href="%[1]s">%[3]s#%[2]s</a>`
[tool] [tool]
now=nyt now=nyt
1s=1 sekunti 1s=1 sekunti
@ -2628,6 +2648,8 @@ error.extract_sign = Allekirjoituksen purkaminen epäonnistui
default_key = Allekirjoitettu oletusavaimella default_key = Allekirjoitettu oletusavaimella
error.failed_retrieval_gpg_keys = Ei saatu yhtäkään kommitin tekijän tiliin liitettyä avainta error.failed_retrieval_gpg_keys = Ei saatu yhtäkään kommitin tekijän tiliin liitettyä avainta
error.generate_hash = Tiivisteen luominen kommitista epäonnistui
[units] [units]
unit = Yksikkö unit = Yksikkö
@ -2768,6 +2790,10 @@ owner.settings.cargo.rebuild.error = Cargo-indeksin rakentaminen uudelleen epäo
owner.settings.cargo.rebuild.success = Cargo-indeksi rakennettiin uudelleen. owner.settings.cargo.rebuild.success = Cargo-indeksi rakennettiin uudelleen.
owner.settings.cleanuprules.preview.none = Siivoussääntö ei vastaa yhtäkään pakettia. owner.settings.cleanuprules.preview.none = Siivoussääntö ei vastaa yhtäkään pakettia.
settings.link.error = Repositorion linkin päivittäminen epäonnistui.
owner.settings.cargo.initialize = Alusta indeksi
owner.settings.cargo.initialize.description = Erityinen Git-repoindeksi vaaditaan Cargo-rekisterin käyttämiseksi. Tämän valinnan käyttäminen luo (tarvittaessa uudelleen) repon ja määrittää sen asetukset automaattisesti.
[secrets] [secrets]
creation.failed = Salaisuuden lisääminen epäonnistui. creation.failed = Salaisuuden lisääminen epäonnistui.
deletion = Poista salaisuus deletion = Poista salaisuus

View file

@ -641,6 +641,8 @@ Biography = Byograpya
Location = Lokasyon Location = Lokasyon
visit_rate_limit = Natugunan ang limitasyon sa rate ng malayuang pagbisita. visit_rate_limit = Natugunan ang limitasyon sa rate ng malayuang pagbisita.
email_domain_is_not_allowed = Sumasalungat ang domain ng email address ng user <b>%s</b> sa EMAIL_DOMAIN_ALLOWLIST o EMAIL_DOMAIN_BLOCKLIST. Siguraduhing natakda mo ang email address nang tama.
[user] [user]
joined_on = Sumali noong %s joined_on = Sumali noong %s
repositories = Mga Repositoryo repositories = Mga Repositoryo
@ -2725,6 +2727,8 @@ issues.context.menu = Menu ng komento
summary_card_alt = Pangkalahatang-ideyang card ng repositoryo na %s summary_card_alt = Pangkalahatang-ideyang card ng repositoryo na %s
release.summary_card_alt = Pangkalahatang-ideyang card ng isang release na nakapamagat na "%s" sa repositoryo na %s release.summary_card_alt = Pangkalahatang-ideyang card ng isang release na nakapamagat na "%s" sa repositoryo na %s
editor.commit_email = Email ng commit
[search] [search]
commit_kind = Maghanap ng mga commit… commit_kind = Maghanap ng mga commit…
keyword_search_unavailable = Kasalukuyang hindi available ang paghahanap sa pamamagitan ng keyword. Mangyaring makipag-ugnayan sa tagapangasiwa ng site. keyword_search_unavailable = Kasalukuyang hindi available ang paghahanap sa pamamagitan ng keyword. Mangyaring makipag-ugnayan sa tagapangasiwa ng site.
@ -2911,7 +2915,7 @@ dashboard.delete_old_system_notices = Burahin ang lahat ng mga lumang paunawa ng
dashboard.gc_lfs = I-garbage collect ang mga LFS meta object dashboard.gc_lfs = I-garbage collect ang mga LFS meta object
dashboard.stop_zombie_tasks = Itigil ang mga zombie action task dashboard.stop_zombie_tasks = Itigil ang mga zombie action task
users.user_manage_panel = Ipamahala ang mga user account users.user_manage_panel = Ipamahala ang mga user account
users.new_account = Gumawa ng User Account users.new_account = Gumawa ng user account
users.auth_login_name = Pangalan ng sign-in authentication users.auth_login_name = Pangalan ng sign-in authentication
users.password_helper = Iwanang walang laman ang password upang panatilihing hindi nabago. users.password_helper = Iwanang walang laman ang password upang panatilihing hindi nabago.
users.max_repo_creation = Pinakamataas na numero ng mga repositoryo users.max_repo_creation = Pinakamataas na numero ng mga repositoryo
@ -3684,7 +3688,7 @@ approve_pull_request = `inaprubahan ang <a href="%[1]s">%[3]s#%[2]s</a>`
review_dismissed_reason = Dahilan: review_dismissed_reason = Dahilan:
compare_branch = Ikumpara compare_branch = Ikumpara
reject_pull_request = `nagmungkahi ng mga pagbabago para sa <a href="%[1]s">%[3]s#%[2]s</a>` reject_pull_request = `nagmungkahi ng mga pagbabago para sa <a href="%[1]s">%[3]s#%[2]s</a>`
rename_repo = pinalitan ang pangalan ng repositoryo mula <code>%[1]s</code> sa <a href="%[2]s">%[3]#</a> rename_repo = pinalitan ang pangalan ng repositoryo mula <code>%[1]s</code> sa <a href="%[2]s">%[3]s</a>
close_issue = `sinara ang isyu na <a href="%[1]s">%[3]s#%[2]s</a>` close_issue = `sinara ang isyu na <a href="%[1]s">%[3]s#%[2]s</a>`
review_dismissed = `na-dismiss ang pagsusuri mula <b>%[4]s</b> para sa <a href="%[1]s">%[3]s#%[2]s</a>` review_dismissed = `na-dismiss ang pagsusuri mula <b>%[4]s</b> para sa <a href="%[1]s">%[3]s#%[2]s</a>`
close_pull_request = `sinara ang hiling sa paghila na <a href="%[1]s">%[3]s#%[2]s</a>` close_pull_request = `sinara ang hiling sa paghila na <a href="%[1]s">%[3]s#%[2]s</a>`

View file

@ -681,6 +681,8 @@ Website = Site web
Location = Emplacement Location = Emplacement
To = Nom de la branche To = Nom de la branche
email_domain_is_not_allowed = Le domaine <b>%s</b> du courriel utilisateur entre en conflit avec EMAIL_DOMAIN_ALLOWLIST ou EMAIL_DOMAIN_BLOCKLIST. Veuillez vous assurer le courriel est renseigné.
[user] [user]
change_avatar=Changer votre avatar… change_avatar=Changer votre avatar…
joined_on=Inscrit le %s joined_on=Inscrit le %s
@ -1228,7 +1230,7 @@ migrate.migrating_failed_no_addr=Échec de la migration.
migrate.github.description=Migrer les données depuis github.com ou GitHub Enterprise Server. migrate.github.description=Migrer les données depuis github.com ou GitHub Enterprise Server.
migrate.git.description=Migrer uniquement un dépôt depuis nimporte quel service Git. migrate.git.description=Migrer uniquement un dépôt depuis nimporte quel service Git.
migrate.gitlab.description=Migrer les données depuis gitlab.com ou dautres instances de GitLab. migrate.gitlab.description=Migrer les données depuis gitlab.com ou dautres instances de GitLab.
migrate.gitea.description=Migrer les données depuis gitea.com ou dautres instances de Gitea/Forgejo. migrate.gitea.description=Migrer les données depuis gitea.com ou dautres instances de Gitea.
migrate.gogs.description=Migrer les données depuis notabug.org ou dautres instances de Gogs. migrate.gogs.description=Migrer les données depuis notabug.org ou dautres instances de Gogs.
migrate.onedev.description=Migrer les données depuis code.onedev.io ou dautre instance de OneDev. migrate.onedev.description=Migrer les données depuis code.onedev.io ou dautre instance de OneDev.
migrate.codebase.description=Migrer les données depuis codebasehq.com. migrate.codebase.description=Migrer les données depuis codebasehq.com.
@ -1316,6 +1318,7 @@ view_git_blame=Voir Git blame
video_not_supported_in_browser=Votre navigateur ne supporte pas la balise « vidéo » HTML5. video_not_supported_in_browser=Votre navigateur ne supporte pas la balise « vidéo » HTML5.
audio_not_supported_in_browser=Votre navigateur ne supporte pas la balise « audio » HTML5. audio_not_supported_in_browser=Votre navigateur ne supporte pas la balise « audio » HTML5.
stored_lfs=Stocké avec Git LFS stored_lfs=Stocké avec Git LFS
stored_annex=Stocké avec Git Annex
symbolic_link=Lien symbolique symbolic_link=Lien symbolique
executable_file=Fichier exécutable executable_file=Fichier exécutable
vendored = Vendored vendored = Vendored
@ -1341,6 +1344,7 @@ editor.upload_file=Téléverser un fichier
editor.edit_file=Modifier le fichier editor.edit_file=Modifier le fichier
editor.preview_changes=Aperçu des modifications editor.preview_changes=Aperçu des modifications
editor.cannot_edit_lfs_files=Les fichiers LFS ne peuvent pas être modifiés dans l'interface web. editor.cannot_edit_lfs_files=Les fichiers LFS ne peuvent pas être modifiés dans l'interface web.
editor.cannot_edit_annex_files=Les fichiers Annex ne peuvent pas être modifiés dans l'interface web.
editor.cannot_edit_non_text_files=Les fichiers binaires ne peuvent pas être édités dans l'interface web. editor.cannot_edit_non_text_files=Les fichiers binaires ne peuvent pas être édités dans l'interface web.
editor.edit_this_file=Modifier le fichier editor.edit_this_file=Modifier le fichier
editor.this_file_locked=Le fichier est verrouillé editor.this_file_locked=Le fichier est verrouillé
@ -2868,6 +2872,8 @@ issues.context.menu = Menu commentaire
pulls.sign_in_require = <a href="%s">Identifiez vous</a> pour créer une nouvelle demande d'ajout. pulls.sign_in_require = <a href="%s">Identifiez vous</a> pour créer une nouvelle demande d'ajout.
release.summary_card_alt = Carte résumé de la publication dont le titre est "%s" dans le dépôt %s release.summary_card_alt = Carte résumé de la publication dont le titre est "%s" dans le dépôt %s
editor.commit_email = Courriel de commit
[graphs] [graphs]
component_loading = Chargement %s... component_loading = Chargement %s...
component_loading_failed = Échec de chargement de %s component_loading_failed = Échec de chargement de %s

View file

@ -0,0 +1,239 @@
[common]
home = בית
dashboard = מבט על
help = עזרה
logo = לוגו
sign_in = כניסה
sign_in_with_provider = כניסה דרך %s
sign_in_or = או
sign_out = יציאה מהחשבון
sign_up = הרשמה
link_account = חיבור חשבון
register = הרשמה
version = גרסה
powered_by = רץ על %s
page = דף
template = תבנית
language = שפה
notifications = הודעות
active_stopwatch = סטופר
create_new = חדש…
user_profile_and_more = פרופיל והגדרות…
signed_in_as = שלום
enable_javascript = אתר זה משתמש בJavaScript.
toc = תוכן הענינים
licenses = רישיונות
return_to_forgejo = חזרה לפורג'ו
more_items = עוד אפשרויות
username = שם משתמש
email = כתובת אימייל
password = סיסמה
access_token = קוד גישה
captcha = CAPTCHA
twofa = אימות דו־שלבי
twofa_scratch = קוד אימות דו־שלבי
passcode = קוד כניסה
webauthn_insert_key = יש להכניס את מפתח אבטחך
webauthn_sign_in = יש ללחוץ על הכפתור שעל מפתח האבטחה. אם אין כפתור, אפשר להוציא את המפתח ולחבר אותו שוב.
webauthn_press_button = נא ללחוץ על הכפתור שעל מפתח האבטחה…
webauthn_error = קריאת מפתח האבטחה נכשלה.
webauthn_unsupported_browser = הדפדפן שלך לא תומך בWebAuthn.
webauthn_error_unknown = שגיאה לא ידועה, אפשר לנסות שוב.
webauthn_error_insecure = הפרוטוקול WebAuthn לא תומך בחיבורים לא מאובטחים, למעט דרך "localhost" או "127.0.0.1"
webauthn_error_unable_to_process = שרת זה נכשל בעיבוד בקשתך.
webauthn_error_duplicated = מפתח האבטחה לא יכול לשמש לבקשה זו. נא לוודא שהמפתח לא רשום.
webauthn_error_empty = שם המפתח הוא שדה חובה.
webauthn_error_timeout = קריאת מפתחך לקחה יותר מדי זמן. אפשר לטעון מחדש את הדף ולנסות שוב.
repository = קרפיף
organization = ארגון
mirror = מראה
new_mirror = מראה חדשה
new_fork = מזלוג חדש של קרפיף זה
new_project = פרויקט חדש
new_project_column = עמודה חדשה
admin_panel = לוח ניהול מערכת
settings = הגדרות
your_profile = פרופיל
your_starred = כיכבת
your_settings = הגדרות
new_repo.title = קרפיף חדש
new_migrate.title = יבוא קרפיף
new_org.title = ארגון חדש
new_repo.link = קרפיף חדש
new_migrate.link = יבוא קרפיף
new_org.link = ארגון חדש
all = הכל
sources = מקורות
mirrors = מראות
collaborative = שיתופי
forks = מזלוגים
activities = פעילויות
pull_requests = בקשות מיזוג
issues = סוגיות
milestones = מטרות
ok = אישור
cancel = ביטול
retry = לנסות שוב
rerun = הרצה חוזרת
save = שמירה
add = הוספה
add_all = הוספת הכל
remove = הסרה
remove_all = הסרת הכל
remove_label_str = הסרת "%s"
edit = עריכה
test = בדיקה
enabled = מופעל
disabled = כבוי
locked = נעול
copy = העתקה
copy_generic = העתקה לCtrl + C
copy_url = העתקת קישור
copy_hash = העתקת קוד גיבוב
copy_path = העתקת מיקום קובץ
copy_content = העתקת תוכן
copy_branch = העתקת שם ענף
copy_success = הועתק!
copy_error = העתקה נכשלה
copy_type_unsupported = אי אפשר להעתיק קבצים מסוג זה
write = כתיבה
preview = תצוגה מקדימה
loading = נטען…
error = שגיאה
error404 = דף זה <strong>לא קיים</strong> או ש<strong>אין לך אילו גישה</strong>.
go_back = אחורה
invalid_data = הבנת הקלט נכשלה: %v
never = אף פעם
unknown = לא ידוע
rss_feed = פיד RSS
pin = הצמדה
unpin = ביטול הצמדה
archived = ארכיון
concept_system_global = גלובלי
concept_user_individual = אישי
concept_code_repository = קרפיף
concept_user_organization = ארגון
show_timestamps = הצגת זמנים
show_log_seconds = הצגת שניות
show_full_screen = מסך מלא
download_logs = הורדת לוגים
confirm_delete_selected = למחוק את כל הפריטים המסומנים?
name = שם
value = ערך
filter = מסנן
filter.clear = ניקוי מסננים
filter.is_archived = בארכיון
filter.not_archived = מחוץ לארכיון
filter.is_fork = רק מזלוגים
filter.not_fork = להוציא מזלוגים
filter.is_mirror = רק מראות
filter.not_mirror = להוציא מראות
filter.is_template = רק תבניות
filter.not_template = להוציא תבניות
filter.public = ציבורי
filter.private = פרטי
[search]
search = חיפוש...
type_tooltip = סוג חיפוש
fuzzy = מקורב
fuzzy_tooltip = תוצאות יתאימו לתוכן תיבת החיפוש בקירוב; מומלץ כנגד שגיאות כתיב
union = מילות מפתח
union_tooltip = תוצאות יכללו לפחות מילת מפתח אחת; אפשר להפריד מילות מפתח עם רווחים
exact = מדויק
exact_tooltip = תוצאות יתאימו במדויק לתוכן תיבת החיפוש
regexp = רג'קס
repo_kind = חיפוש קרפיפים...
user_kind = חיפוש אנשים...
org_kind = חיפוש ארגונים...
team_kind = חיפוש צוותים...
code_kind = חיפוש קוד...
code_search_unavailable = חיפוש קוד לא זמין. נא לדווח למנהלי המערכת.
package_kind = חיפוש חבילות...
project_kind = חיפוש פרוייקטים...
branch_kind = חיפוש ענפים...
commit_kind = חיפוש קומיטים...
runner_kind = חיפוש מריצים...
no_results = לא נמצאו תוצאות.
issue_kind = חיפוש סוגיות...
keyword_search_unavailable = חיפוש מילות מפתח לא זמין. נא לדווח למנהלי המערכת.
[aria]
navbar = סרגל הניווט
footer.software = על תוכנה זו
footer.links = קישורים
[heatmap]
number_of_contributions_in_the_last_12_months = % תרומות ב־12 החודשים האחרונים
contributions_zero = אפס תרומות
contributions_format = {contributions} ב{day} ל{month} {year}
contributions_one = תרומה
contributions_few = תרומות
less = פחות
more = יותר
[editor]
buttons.heading.tooltip = הוספת כותרת
buttons.bold.tooltip = הדגשת טקסט
buttons.italic.tooltip = הטיית טקסט
buttons.quote.tooltip = ציטוט
buttons.code.tooltip = הוספת קוד
buttons.link.tooltip = הוספת קישור
buttons.list.unordered.tooltip = הוספת רשימה לא ממוספרת
buttons.list.ordered.tooltip = הוספת רשימה ממוספרת
buttons.list.task.tooltip = הוספת רשימת משימות
buttons.mention.tooltip = תיוג אדם או צוות
buttons.ref.tooltip = ריפרור לסוגיה או בקשת מיזוג
buttons.switch_to_legacy.tooltip = מעבר לעורך הישן
buttons.enable_monospace_font = הפעלת גופן קבוע־רוחב
buttons.disable_monospace_font = כיבוי גופן קבוע־רוחב
buttons.new_table.tooltip = הוספת טבלה
table_modal.header = הוספת טבלה
table_modal.placeholder.header = כותרת
table_modal.placeholder.content = תוכן
table_modal.label.rows = שורות
table_modal.label.columns = עמודות
[filter]
string.asc = סדר אלפבתי עולה
string.desc = סדר אלפבתי יורד
[error]
occurred = קרתה שגיאה
not_found = המטרה לא נמצאה.
network_error = שגיאת אינטרנט
server_internal = שגיאת שרת פנימית
[startpage]
install = קל להתקנה
lightweight = קל
license = קוד פתוח
[install]
install = התקנה
title = הגדרה ראשונית
db_title = הגדרות מסד מידע
db_type = סוג מסד מידע
user = שם משתמש
password = סיסמה
db_name = שם מסד המידע
db_schema = סכימה
db_schema_helper = תוכן ריק משמע ערך ברירת המחדל ("public") של מסד המידע.
ssl_mode = SSL
err_empty_admin_password = סיסמה של מנהל מערכת לא יכולה להיות ריקה.
err_empty_admin_email = כתובת אימייל של מנהל מערכת היא חובה.
general_title = הגדרות כלליות
app_name = שם שרת זה
[mail]
issue_assigned.pull = @%[1]s שייך אותך לבקשת המיזוג %[2]s בקרפיף %[3]s.
issue_assigned.issue = @%[1]s שייך אותך לסוגיה %[2]s בקרפיף %[3]s.
repo.transfer.subject_to = %s רוצה להעביר את הקרפיף "%s" ל־%s
repo.transfer.subject_to_you = %s רוצה להעביר את הקרפיף "%s" אליך
repo.collaborator.added.text = הוספת בתור פועל לקרפיף:
[form]
RepoName = שם קרפיף
repo_name_been_taken = כבר יש קרפיף בשם זה.
repository_force_private = פרטיות כפויה מופעלת: קרפיפים פרטיים לא יכולים להעשות ציבוריים.
repository_files_already_exist = כבר יש קבצים בקרפיף זה. יש לדבר עם מנהל המערכת כדי לתקן את הבעיה.

View file

@ -787,6 +787,7 @@ file_too_large=Ez a fájl túl nagy ahhoz, hogy megjelenítsük.
video_not_supported_in_browser=A böngésző nem támogatja a HTML5 video tag-et. video_not_supported_in_browser=A böngésző nem támogatja a HTML5 video tag-et.
audio_not_supported_in_browser=A böngésző nem támogatja a HTML5 audio tag-et. audio_not_supported_in_browser=A böngésző nem támogatja a HTML5 audio tag-et.
stored_lfs=Git LFS-el eltárolva stored_lfs=Git LFS-el eltárolva
stored_annex=Git Annex-el eltárolva
symbolic_link=Szimbolikus hivatkozás symbolic_link=Szimbolikus hivatkozás
commit_graph=Commit gráf commit_graph=Commit gráf
commit_graph.hide_pr_refs=Pull request-ek elrejtése commit_graph.hide_pr_refs=Pull request-ek elrejtése
@ -799,6 +800,7 @@ editor.upload_file=Fájl feltöltése
editor.edit_file=Fájl szerkesztése editor.edit_file=Fájl szerkesztése
editor.preview_changes=Változások előnézete editor.preview_changes=Változások előnézete
editor.cannot_edit_lfs_files=LFS fájlok nem szerkeszthetőek a webes felületen. editor.cannot_edit_lfs_files=LFS fájlok nem szerkeszthetőek a webes felületen.
editor.cannot_edit_annex_files=Annex fájlok nem szerkeszthetőek a webes felületen.
editor.cannot_edit_non_text_files=Bináris fájlok nem szerkeszthetőek a webes felületen. editor.cannot_edit_non_text_files=Bináris fájlok nem szerkeszthetőek a webes felületen.
editor.edit_this_file=Fájl szerkesztése editor.edit_this_file=Fájl szerkesztése
editor.this_file_locked=Zárolt állomány editor.this_file_locked=Zárolt állomány

View file

@ -596,6 +596,7 @@ file_permalink=Permalink
file_too_large=Berkas terlalu besar untuk ditampilkan. file_too_large=Berkas terlalu besar untuk ditampilkan.
stored_lfs=Tersimpan dengan GIT LFS stored_lfs=Tersimpan dengan GIT LFS
stored_annex=Tersimpan dengan GIT Annex
commit_graph=Grafik Komit commit_graph=Grafik Komit
blame=Salahkan blame=Salahkan
normal_view=Pandangan Normal normal_view=Pandangan Normal
@ -607,6 +608,7 @@ editor.upload_file=Unggah Berkas
editor.edit_file=Sunting Berkas editor.edit_file=Sunting Berkas
editor.preview_changes=Tinjau Perubahan editor.preview_changes=Tinjau Perubahan
editor.cannot_edit_lfs_files=Berkas LFS tidak dapat disunting dalam antarmuka web. editor.cannot_edit_lfs_files=Berkas LFS tidak dapat disunting dalam antarmuka web.
editor.cannot_edit_annex_files=Berkas Annex tidak dapat disunting dalam antarmuka web.
editor.cannot_edit_non_text_files=Berkas biner tidak dapat disunting dalam antarmuka web. editor.cannot_edit_non_text_files=Berkas biner tidak dapat disunting dalam antarmuka web.
editor.edit_this_file=Sunting Berkas editor.edit_this_file=Sunting Berkas
editor.this_file_locked=Berkas terkunci editor.this_file_locked=Berkas terkunci

View file

@ -680,6 +680,7 @@ file_view_rendered=Skoða Unnið
file_copy_permalink=Afrita Varanlega Slóð file_copy_permalink=Afrita Varanlega Slóð
stored_lfs=Geymt með Git LFS stored_lfs=Geymt með Git LFS
stored_annex=Geymt með Git Annex
commit_graph.hide_pr_refs=Fela Sameiningarbeiðnir commit_graph.hide_pr_refs=Fela Sameiningarbeiðnir
commit_graph.monochrome=Einlitað commit_graph.monochrome=Einlitað
commit_graph.color=Litað commit_graph.color=Litað

View file

@ -220,7 +220,7 @@ platform=Multipiattaforma
lightweight=Leggero lightweight=Leggero
lightweight_desc=Forgejo ha requisiti minimi bassi e può funzionare su un economico Raspberry Pi. Risparmia l'energia della tua macchina! lightweight_desc=Forgejo ha requisiti minimi bassi e può funzionare su un economico Raspberry Pi. Risparmia l'energia della tua macchina!
license=Open Source license=Open Source
license_desc=Ottieni <a target="_blank" rel="noopener noreferrer" href="%[1]s">Forgejo</a>! Partecipa per <a target="_blank" rel="noopener noreferrer" href="%[2]s">contribuire</a> a rendere questo progetto ancora migliore. Non aver paura di diventare un collaboratore! license_desc=Ottieni <a target="_blank" rel="noopener noreferrer" href="%[1]s">Forgejo</a>! Partecipa per <a target="_blank" rel="noopener noreferrer" href="%[2]s">contribuire</a> a rendere questo progetto ancora più bello. Non aver paura di diventare collaborante!
install_desc = Semplicemente <a target="_blank" rel="noopener noreferrer" href="%[1]s">avvia l'eseguibile</a> per la tua piattaforma, distribuiscilo con <a target="_blank" rel="noopener noreferrer" href="%[2]s">Docker</a>, oppure scarica il <a target="_blank" rel="noopener noreferrer" href="%[3]s">pacchetto</a>. install_desc = Semplicemente <a target="_blank" rel="noopener noreferrer" href="%[1]s">avvia l'eseguibile</a> per la tua piattaforma, distribuiscilo con <a target="_blank" rel="noopener noreferrer" href="%[2]s">Docker</a>, oppure scarica il <a target="_blank" rel="noopener noreferrer" href="%[3]s">pacchetto</a>.
[install] [install]
@ -511,11 +511,11 @@ issue.action.push_n=<b>@%[1]s</b> ha immesso %[3]d commit presso %[2]s
issue.action.close=<b>@%[1]s</b> chiuso #%[2]d. issue.action.close=<b>@%[1]s</b> chiuso #%[2]d.
issue.action.reopen=<b>@%[1]s</b> riaperto #%[2]d. issue.action.reopen=<b>@%[1]s</b> riaperto #%[2]d.
issue.action.merge=<b>@%[1]s</b> unito #%[2]d in %[3]s. issue.action.merge=<b>@%[1]s</b> unito #%[2]d in %[3]s.
issue.action.approve=<b>@%[1]s</b> ha approvato questa pull request. issue.action.approve=<b>@%[1]s</b> ha approvato questa richiesta di modifica.
issue.action.reject=<b>@%[1]s</b> ha richiesto modifiche su questa pull request. issue.action.reject=<b>@%[1]s</b> ha richiesto modifiche su questa richiesta.
issue.action.review=<b>@%[1]s</b> ha commentato questa pull request. issue.action.review=<b>@%[1]s</b> ha commentato questa richiesta di modifica.
issue.action.review_dismissed=<b>@%[1]s</b> ha respinto l'ultima recensione da %[2]s per questa pull request. issue.action.review_dismissed=<b>@%[1]s</b> ha respinto l'ultima revisione di %[2]s per questa richiesta di modifica.
issue.action.ready_for_review=<b>@%[1]s</b> ha contrassegnato questa pull request pronta per la revisione. issue.action.ready_for_review=<b>@%[1]s</b> ha contrassegnato questa richiesta di modifica come pronta per la revisione.
issue.action.new=<b>@%[1]s</b> creato #%[2]d. issue.action.new=<b>@%[1]s</b> creato #%[2]d.
issue.in_tree_path=In %s: issue.in_tree_path=In %s:
@ -532,8 +532,8 @@ repo.transfer.subject_to_you=%s ti vorrebbe trasferire il repositorio "%s"
repo.transfer.to_you=tu repo.transfer.to_you=tu
repo.transfer.body=Per accettare o respingerla visita %s o semplicemente ignorarla. repo.transfer.body=Per accettare o respingerla visita %s o semplicemente ignorarla.
repo.collaborator.added.subject=%s ti ha aggiunto a %s come collaboratorə repo.collaborator.added.subject=%s ti ha aggiunto a %s come collaborante
repo.collaborator.added.text=Sei statə aggiuntə come collaboratorə al repositorio: repo.collaborator.added.text=Sei statə aggiuntə come collaborante al repositorio:
reply = o rispondi direttamente a questa email reply = o rispondi direttamente a questa email
admin.new_user.subject = Il nuovo utente %s si è appena registrato admin.new_user.subject = Il nuovo utente %s si è appena registrato
admin.new_user.user_info = Informazioni utente admin.new_user.user_info = Informazioni utente
@ -690,7 +690,7 @@ joined_on = Membro dal %s
block_user = Blocca utente block_user = Blocca utente
block_user.detail_1 = Questo utente non ti seguirà più. block_user.detail_1 = Questo utente non ti seguirà più.
block_user.detail_2 = Quest'utente non potrà interagire né con i tuoi repositori, né con le segnalazioni che hai aperto, né con i tuoi commenti. block_user.detail_2 = Quest'utente non potrà interagire né con i tuoi repositori, né con le segnalazioni che hai aperto, né con i tuoi commenti.
block_user.detail_3 = Non sarete in grado di aggiungervi come collaboratorɜ del repositorio. block_user.detail_3 = Non sarete in grado di aggiungervi come collaboranti del repositorio.
code = Codice code = Codice
block = Blocca block = Blocca
unblock = Sblocca unblock = Sblocca
@ -762,7 +762,7 @@ comment_type_group_lock=Stato blocco
comment_type_group_review_request=Richiesta di revisione comment_type_group_review_request=Richiesta di revisione
comment_type_group_pull_request_push=Commit aggiunti comment_type_group_pull_request_push=Commit aggiunti
comment_type_group_project=Progetto comment_type_group_project=Progetto
comment_type_group_issue_ref=Riferimento del problema comment_type_group_issue_ref=Riferimento alla segnalazione
saved_successfully=Le impostazioni sono state salvate correttamente. saved_successfully=Le impostazioni sono state salvate correttamente.
privacy=Privacy privacy=Privacy
keep_activity_private_popup=La tua attività sarà visibile solo a te e agli amministratori dell'istanza keep_activity_private_popup=La tua attività sarà visibile solo a te e agli amministratori dell'istanza
@ -1029,7 +1029,7 @@ oauth2_application_locked = Forgejo preregistra alcune applicazioni OAuth2 all'a
hooks.desc = Aggiungi richiami HTTP che saranno innescati per <strong>tutti i progetti</strong> che possiedi. hooks.desc = Aggiungi richiami HTTP che saranno innescati per <strong>tutti i progetti</strong> che possiedi.
repos_none = Non possiedi alcun progetto. repos_none = Non possiedi alcun progetto.
blocked_users_none = Non ci sono utenti bloccati. blocked_users_none = Non ci sono utenti bloccati.
keep_email_private_popup = Questo nasconderà il tuo indirizzo e-mail nel tuo profilo, nelle pull request e quando modifichi un file usando l'interfaccia web. I commit inoltrati non saranno modificati. Usa %s nei commit per associarli al tuo profilo. keep_email_private_popup = Questo nasconderà il tuo indirizzo e-mail nel tuo profilo, nelle richieste di modifica e quando modifichi un file usando l'interfaccia web. I commit inoltrati non saranno modificati. Usa %s nei commit per associarli al tuo profilo.
verify_gpg_key_success = La chiave GPG "%s" è stata verificata. verify_gpg_key_success = La chiave GPG "%s" è stata verificata.
added_on = Aggiunto su %s added_on = Aggiunto su %s
additional_repo_units_hint = Suggerisci l'attivazione di unità aggiuntive nel repositorio additional_repo_units_hint = Suggerisci l'attivazione di unità aggiuntive nel repositorio
@ -1189,7 +1189,7 @@ migrate.migrating_failed_no_addr=Migrazione non riuscita.
migrate.github.description=Migrare i dati da github.com o da server GitHub Enterprise. migrate.github.description=Migrare i dati da github.com o da server GitHub Enterprise.
migrate.git.description=Migra un repositorio solo da qualsiasi servizio Git. migrate.git.description=Migra un repositorio solo da qualsiasi servizio Git.
migrate.gitlab.description=Migrare i dati da gitlab.com o da altre istanze di GitLab. migrate.gitlab.description=Migrare i dati da gitlab.com o da altre istanze di GitLab.
migrate.gitea.description=Migrare i dati da gitea.com o altre istanze di Gitea/Forgejo. migrate.gitea.description=Migrare i dati da gitea.com o altre istanze di Gitea.
migrate.gogs.description=Migrare i dati da notabug.org o da altre istanze Gogs. migrate.gogs.description=Migrare i dati da notabug.org o da altre istanze Gogs.
migrate.onedev.description=Migrare i dati da code.onedev.io o da altre istanze OneDev. migrate.onedev.description=Migrare i dati da code.onedev.io o da altre istanze OneDev.
migrate.codebase.description=Migrare i dati da codebasehq.com. migrate.codebase.description=Migrare i dati da codebasehq.com.
@ -1267,6 +1267,7 @@ view_git_blame=Visualizza git incolpa
video_not_supported_in_browser=Il tuo browser non supporta le etichette "video" di HTML5. video_not_supported_in_browser=Il tuo browser non supporta le etichette "video" di HTML5.
audio_not_supported_in_browser=Il tuo browser non supporta le etichette "audio" di HTML5. audio_not_supported_in_browser=Il tuo browser non supporta le etichette "audio" di HTML5.
stored_lfs=Memorizzati con Git LFS stored_lfs=Memorizzati con Git LFS
stored_annex=Memorizzati con Git Annex
symbolic_link=Link Simbolico symbolic_link=Link Simbolico
commit_graph=Grafico dei commit commit_graph=Grafico dei commit
commit_graph.select=Seleziona rami commit_graph.select=Seleziona rami
@ -1285,6 +1286,7 @@ editor.upload_file=Carica file
editor.edit_file=Modifica file editor.edit_file=Modifica file
editor.preview_changes=Anteprima modifiche editor.preview_changes=Anteprima modifiche
editor.cannot_edit_lfs_files=I file LFS non possono essere modificati nell'interfaccia web. editor.cannot_edit_lfs_files=I file LFS non possono essere modificati nell'interfaccia web.
editor.cannot_edit_annex_files=I file Annex non possono essere modificati nell'interfaccia web.
editor.cannot_edit_non_text_files=I file binari non possono essere modificati tramite interfaccia web. editor.cannot_edit_non_text_files=I file binari non possono essere modificati tramite interfaccia web.
editor.edit_this_file=Modifica file editor.edit_this_file=Modifica file
editor.this_file_locked=Il file è bloccato editor.this_file_locked=Il file è bloccato
@ -1338,8 +1340,8 @@ commits.date=Data
commits.older=Più vecchio commits.older=Più vecchio
commits.newer=Più recente commits.newer=Più recente
commits.signed_by=Firmato da commits.signed_by=Firmato da
commits.signed_by_untrusted_user=Firmato da un utente non attendibile commits.signed_by_untrusted_user=Firmato da un*utente non attendibile
commits.signed_by_untrusted_user_unmatched=Firmato da un utente non attendibile che non corrisponde al committer commits.signed_by_untrusted_user_unmatched=Firmato da un*utente non attendibile che non corrisponde al committente
commits.gpg_key_id=ID chiave GPG commits.gpg_key_id=ID chiave GPG
commits.ssh_key_fingerprint=Impronta chiave SSH commits.ssh_key_fingerprint=Impronta chiave SSH
@ -1411,7 +1413,7 @@ issues.new.no_reviewers=Nessun revisore
issues.choose.get_started=Cominciare issues.choose.get_started=Cominciare
issues.choose.open_external_link=Apri issues.choose.open_external_link=Apri
issues.choose.blank=Default issues.choose.blank=Default
issues.choose.blank_about=Crea un problema dal modello predefinito. issues.choose.blank_about=Crea una segnalazione dal modello predefinito.
issues.no_ref=Nessun ramo/etichetta specificati issues.no_ref=Nessun ramo/etichetta specificati
issues.create=Crea segnalazione issues.create=Crea segnalazione
issues.new_label=Nuova etichetta issues.new_label=Nuova etichetta
@ -1482,8 +1484,8 @@ issues.action_milestone_no_select=Nessuna pietra miliare
issues.action_assignee=Assegnatario issues.action_assignee=Assegnatario
issues.action_assignee_no_select=Nessun assegnatario issues.action_assignee_no_select=Nessun assegnatario
issues.opened_by=aperta %[1]s da <a href="%[2]s">%[3]s</a> issues.opened_by=aperta %[1]s da <a href="%[2]s">%[3]s</a>
pulls.merged_by=di <a href="%[2]s">%[3]s</a> è stato fuso %[1]s pulls.merged_by=di <a href="%[2]s">%[3]s</a> è stata fusa %[1]s
pulls.merged_by_fake=di %[2]s è stato fuso %[1]s pulls.merged_by_fake=di %[2]s è stata fusa %[1]s
issues.closed_by=di <a href="%[2]s">%[3]s</a> è stato chiuso %[1]s issues.closed_by=di <a href="%[2]s">%[3]s</a> è stato chiuso %[1]s
issues.opened_by_fake=aperta %[1]s da %[2]s issues.opened_by_fake=aperta %[1]s da %[2]s
issues.closed_by_fake=di %[2]s è stato chiuso %[1]s issues.closed_by_fake=di %[2]s è stato chiuso %[1]s
@ -1511,7 +1513,7 @@ issues.ref_issue_from=`<a href="%[3]s">ha fatto riferimento a questa segnalazion
issues.ref_pull_from=`<a href="%[3]s">ha fatto riferimento a questa richiesta di modifica %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>` issues.ref_pull_from=`<a href="%[3]s">ha fatto riferimento a questa richiesta di modifica %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>`
issues.ref_closing_from=`<a href="%[3]s">ha fatto riferimento a questa segnalazione da una richiesta di modifica %[4]s che la chiuderà</a>, <a id="%[1]s" href="#%[1]s">%[2]s</a>` issues.ref_closing_from=`<a href="%[3]s">ha fatto riferimento a questa segnalazione da una richiesta di modifica %[4]s che la chiuderà</a>, <a id="%[1]s" href="#%[1]s">%[2]s</a>`
issues.ref_reopening_from=`<a href="%[3]s">ha fatto riferimento a questa segnalazione da una richiesta di modifica %[4]s che la riaprirà</a>, <a id="%[1]s" href="#%[1]s">%[2]s</a>` issues.ref_reopening_from=`<a href="%[3]s">ha fatto riferimento a questa segnalazione da una richiesta di modifica %[4]s che la riaprirà</a>, <a id="%[1]s" href="#%[1]s">%[2]s</a>`
issues.ref_closed_from=`<a href="%[3]s">chiuso questo problema %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>` issues.ref_closed_from=`<a href="%[3]s">chiuso questa segnalazione %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>`
issues.ref_reopened_from=`<a href="%[3]s">ha riaperto questa segnalazione %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>` issues.ref_reopened_from=`<a href="%[3]s">ha riaperto questa segnalazione %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>`
issues.ref_from=`da %[1]s` issues.ref_from=`da %[1]s`
issues.author=Autore issues.author=Autore
@ -1549,32 +1551,32 @@ issues.subscribe=Iscriviti
issues.unsubscribe=Annulla iscrizione issues.unsubscribe=Annulla iscrizione
issues.lock=Blocca conversazione issues.lock=Blocca conversazione
issues.unlock=Sblocca conversazione issues.unlock=Sblocca conversazione
issues.lock.unknown_reason=Impossibile bloccare un problema con un motivo sconosciuto. issues.lock.unknown_reason=Impossibile bloccare una segnalazione senza un motivo.
issues.lock_duplicate=Un issue non può essere bloccato due volte. issues.lock_duplicate=Un issue non può essere bloccato due volte.
issues.unlock_error=Impossibile sbloccare un problema che non è bloccato. issues.unlock_error=Impossibile sbloccare una segnalazione che non è bloccata.
issues.lock_with_reason=ha bloccato come <strong>%s</strong> e limitato la conversazione ai collaboratori %s issues.lock_with_reason=ha bloccato come <strong>%s</strong> e limitato la conversazione allɜ collaboranti %s
issues.lock_no_reason=ha bloccato e limitato la conversazione ai collaboratori %s issues.lock_no_reason=ha bloccato e limitato la conversazione allɜ collaboranti %s
issues.unlock_comment=ha sbloccato questa conversazione %s issues.unlock_comment=ha sbloccato questa conversazione %s
issues.lock_confirm=Blocca issues.lock_confirm=Blocca
issues.unlock_confirm=Sblocca issues.unlock_confirm=Sblocca
issues.lock.notice_1=- Altri utenti non possono aggiungere nuovi commenti a questa segnalazione. issues.lock.notice_1=- Altri utenti non possono aggiungere nuovi commenti a questa segnalazione.
issues.lock.notice_2=- Tu e altri collaboratori con accesso a questo repository potete ancora lasciare commenti che altri possono vedere. issues.lock.notice_2=- Tu e altrɜ collaboranti con accesso a questo repositorio potete ancora lasciare commenti visibili da altre persone.
issues.lock.notice_3=- Puoi sempre sbloccare questo problema in futuro. issues.lock.notice_3=- Puoi sempre sbloccare questa segnalazione in futuro.
issues.unlock.notice_1=- Tutti potranno commentare nuovamente questo problema. issues.unlock.notice_1=- Tuttɜ potranno commentare nuovamente questa segnalazione.
issues.unlock.notice_2=- Puoi sempre chiudere nuovamente questo problema in futuro. issues.unlock.notice_2=- Puoi sempre chiudere nuovamente questa segnalazione in futuro.
issues.lock.reason=Motivo per il blocco issues.lock.reason=Motivo per il blocco
issues.lock.title=Blocca la conversazione su questa issue. issues.lock.title=Blocca la conversazione su questa issue.
issues.unlock.title=Sblocca la conversazione su questa issue. issues.unlock.title=Sblocca la conversazione su questa issue.
issues.comment_on_locked=Non puoi commentare un problema bloccato. issues.comment_on_locked=Non puoi commentare una segnalazione bloccata.
issues.delete=Elimina issues.delete=Elimina
issues.delete.title=Eliminare questo problema? issues.delete.title=Eliminare la segnalazione?
issues.delete.text=Vuoi davvero eliminare questo problema? (Questo rimuoverà permanentemente tutti i contenuti. Considera invece di chiuderlo, se vuoi tenerlo archiviato) issues.delete.text=Vuoi davvero eliminare la segnalazione? (Questo rimuoverà permanentemente tutti i contenuti. Considera invece di chiuderla, se vuoi tenerla archiviata)
issues.tracker=Cronografo issues.tracker=Cronografo
issues.start_tracking_short=Avvia timer issues.start_tracking_short=Avvia timer
issues.start_tracking=Avvia cronografo issues.start_tracking=Avvia cronografo
issues.start_tracking_history=ha iniziato a lavorare %s issues.start_tracking_history=ha iniziato a lavorare %s
issues.tracker_auto_close=Il timer verrà interrotto automaticamente una volta che il problema verrá chiuso issues.tracker_auto_close=Il timer verrà fermato automaticamente quando questa segnalazione verrà chiusa
issues.tracking_already_started=`Hai già avviato il monitoraggio del tempo su <a href="%s">un altro problema</a>!` issues.tracking_already_started=`Hai già avviato il monitoraggio del tempo su <a href="%s">un'altra segnalazione</a>!`
issues.stop_tracking=Ferma timer issues.stop_tracking=Ferma timer
issues.stop_tracking_history=`ha smesso di funzionare %s` issues.stop_tracking_history=`ha smesso di funzionare %s`
issues.cancel_tracking=Scarta issues.cancel_tracking=Scarta
@ -1620,7 +1622,7 @@ issues.dependency.pr_closing_blockedby=Questa richiesta di modifica non può ess
issues.dependency.issue_closing_blockedby=Questa segnalazione non può essere chiusa per via delle seguenti segnalazioni issues.dependency.issue_closing_blockedby=Questa segnalazione non può essere chiusa per via delle seguenti segnalazioni
issues.dependency.issue_close_blocks=Questa segnalazione impedisce la chiusura delle seguenti segnalazioni issues.dependency.issue_close_blocks=Questa segnalazione impedisce la chiusura delle seguenti segnalazioni
issues.dependency.pr_close_blocks=Questa richiesta di modifica impedisce la chiusura delle seguenti segnalazioni issues.dependency.pr_close_blocks=Questa richiesta di modifica impedisce la chiusura delle seguenti segnalazioni
issues.dependency.issue_close_blocked=Devi chiudere tutte le anomalie che bloiccano questo problema prima di chiudelo. issues.dependency.issue_close_blocked=Vanno chiuse tutte le segnalazioni che bloccano quest'ultima, prima di poterla chiudere.
issues.dependency.pr_close_blocked=Chiudere tutte le anomalie che bloccano la richiesta di pull prima di effettaure il merge. issues.dependency.pr_close_blocked=Chiudere tutte le anomalie che bloccano la richiesta di pull prima di effettaure il merge.
issues.dependency.blocks_short=Blocchi issues.dependency.blocks_short=Blocchi
issues.dependency.blocked_by_short=Dipende da issues.dependency.blocked_by_short=Dipende da
@ -1628,8 +1630,8 @@ issues.dependency.remove_header=Rimuovi Dipendenza
issues.dependency.issue_remove_text=Questo rimuoverà la dipendenza da questa issue. Continuare? issues.dependency.issue_remove_text=Questo rimuoverà la dipendenza da questa issue. Continuare?
issues.dependency.pr_remove_text=Questo rimuoverà la dipendenza da questa pull request. Continuare? issues.dependency.pr_remove_text=Questo rimuoverà la dipendenza da questa pull request. Continuare?
issues.dependency.setting=Abilita le dipendenze per segnalazioni e richieste di modifica issues.dependency.setting=Abilita le dipendenze per segnalazioni e richieste di modifica
issues.dependency.add_error_same_issue=Non si può fare dipendere un problema da se stesso. issues.dependency.add_error_same_issue=Non si può fare dipendere una segnalazione da se stessa.
issues.dependency.add_error_dep_issue_not_exist=Il problema dipendente non esiste. issues.dependency.add_error_dep_issue_not_exist=La segnalazione dalla quale dipende non esiste.
issues.dependency.add_error_dep_not_exist=La dipendenza non esiste. issues.dependency.add_error_dep_not_exist=La dipendenza non esiste.
issues.dependency.add_error_dep_exists=La dipendenza esiste già. issues.dependency.add_error_dep_exists=La dipendenza esiste già.
issues.dependency.add_error_cannot_create_circular=Non puoi creare una dipendenza con due segnalazioni che si bloccano a vicenda. issues.dependency.add_error_cannot_create_circular=Non puoi creare una dipendenza con due segnalazioni che si bloccano a vicenda.
@ -1782,7 +1784,7 @@ pulls.auto_merge_newly_scheduled_comment=`ha programmato questa pull request per
pulls.auto_merge_canceled_schedule_comment=`cancella l'auto-merging di questa pull request quando tutti i testi sono superati %[1]s` pulls.auto_merge_canceled_schedule_comment=`cancella l'auto-merging di questa pull request quando tutti i testi sono superati %[1]s`
pulls.delete.title=Eliminare questa pull request? pulls.delete.title=Eliminare questa pull request?
pulls.delete.text=Vuoi davvero eliminare questo problema? (Questo rimuoverà permanentemente tutti i contenuti. Considera invece di chiuderlo, se vuoi tenerlo archiviato) pulls.delete.text=Vuoi davvero eliminare questa richiesta di modifica? (Ciò rimuoverà permanentemente tutti i contenuti. Considera invece di chiuderla, se vuoi tenerla archiviata)
@ -1816,8 +1818,8 @@ ext_wiki.desc=Collegamento a una wiki esterna.
wiki=Wiki wiki=Wiki
wiki.welcome=Benvenuti nella Wiki. wiki.welcome=Benvenuti nella Wiki.
wiki.welcome_desc=La wiki ti permette di scrivere e condividere documentazione con i collaboratori. wiki.welcome_desc=La wiki ti permette di scrivere e condividere documentazione con lɜ collaboranti.
wiki.desc=Scrivi e condividi documentazione con i collaboratori. wiki.desc=Scrivi e condividi documentazione con lɜ collaboranti.
wiki.create_first_page=Crea la prima pagina wiki.create_first_page=Crea la prima pagina
wiki.page=Pagina wiki.page=Pagina
wiki.filter_page=Filtra pagina wiki.filter_page=Filtra pagina
@ -1915,7 +1917,7 @@ search.code_search_unavailable=Attualmente la ricerca di codice non è disponibi
settings=Impostazioni settings=Impostazioni
settings.desc=Impostazioni ti permette di gestire le impostazioni del repository settings.desc=Impostazioni ti permette di gestire le impostazioni del repository
settings.options=Repository settings.options=Repository
settings.collaboration=Collaboratori settings.collaboration=Collaboranti
settings.collaboration.admin=Amministratore settings.collaboration.admin=Amministratore
settings.collaboration.write=Scrittura settings.collaboration.write=Scrittura
settings.collaboration.read=Lettura settings.collaboration.read=Lettura
@ -2009,14 +2011,14 @@ settings.signing_settings=Impostazioni verifica firma
settings.trust_model=Modello di fiducia per la firma settings.trust_model=Modello di fiducia per la firma
settings.trust_model.default=Modello di fiducia predefinito settings.trust_model.default=Modello di fiducia predefinito
settings.trust_model.default.desc=Usa il modello di trust del repository predefinito per questa installazione. settings.trust_model.default.desc=Usa il modello di trust del repository predefinito per questa installazione.
settings.trust_model.collaborator=Collaboratore settings.trust_model.collaborator=Collaborante
settings.trust_model.collaborator.long=Collaboratore: Firme di fiducia da parte dei collaboratori settings.trust_model.collaborator.long=Collaborante: firme di fiducia da parte dellɜ collaboranti
settings.trust_model.collaborator.desc=Le firme valide da parte dei collaboratori di questo repository saranno contrassegnate con "trusted" (sia che corrispondano al committer o meno). Altrimenti, le firme valide saranno contrassegnate con "untrusted" se la firma corrisponde al committer e "unmatched" se non. settings.trust_model.collaborator.desc=Le firme valide da parte dellɜ collaboranti di questo repositorio saranno contrassegnate con "fidate" (sia che corrispondano a chi ha fatto il commit o meno). Altrimenti saranno contrassegnate con "non fidate" se la firma corrisponde a chi ha fatto il commit e "senza riscontro" se non.
settings.trust_model.committer=Autorə settings.trust_model.committer=Autorə
settings.trust_model.committer.long=Committer: firme affidabili che corrispondono ai committer (questo corrisponde a GitHub e costringerà i commit firmati di Forgejo ad avere Forgejo come committer) settings.trust_model.committer.long=Committer: firme affidabili che corrispondono ai committer (questo corrisponde a GitHub e costringerà i commit firmati di Forgejo ad avere Forgejo come committer)
settings.trust_model.collaboratorcommitter=Collaboratore+Committer settings.trust_model.collaboratorcommitter=Collaborante+Committente
settings.trust_model.collaboratorcommitter.long=Collaboratore+Committer: Firme di fiducia da parte dei collaboratori che corrispondono al committer settings.trust_model.collaboratorcommitter.long=Collaborante+Committente: firme di fiducia da parte dellɜ collaboranti che corrispondono allə committente
settings.trust_model.collaboratorcommitter.desc=Le firme valide da parte dei collaboratori di questa repository saranno contrassegnate "fidate" se corrispondono al committer. Altrimenti le firme saranno contrassegnate con "untrusted" se la firma corrisponde al committer non corrisponde. Questo costringerà Forgejo a essere contrassegnato come committer su impegni firmati con l'effettivo committer contrassegnato come Co-Authored-By: e Co-Committed-By: nel commit. La chiave Forgejo predefinita deve corrispondere a un utente nel database. settings.trust_model.collaboratorcommitter.desc=Le firme valide da parte dellɜ collaboranti di questo repositorio saranno contrassegnate "fidate" se corrispondono a chi fa il commit. Altrimenti saranno contrassegnate con "non fidate" se la firma corrisponde a chi fa il commit, e "senza riscontro" se non corrisponde. Questo costringerà Forgejo a essere contrassegnato come committente sui commit firmati, con l'effettivə committente contrassegnatə come Co-Authored-By: e Co-Committed-By: nel commit. La chiave Forgejo predefinita deve corrispondere a un*utente nella base dati.
settings.wiki_delete=Elimina dati wiki settings.wiki_delete=Elimina dati wiki
settings.wiki_delete_desc=L'eliminazione dei dati della wiki del repository è permanente e non può essere annullata. settings.wiki_delete_desc=L'eliminazione dei dati della wiki del repository è permanente e non può essere annullata.
settings.wiki_delete_notices_1=-Questa operazione eliminerà permanentemente e disabiliterà la wiki repository per %s. settings.wiki_delete_notices_1=-Questa operazione eliminerà permanentemente e disabiliterà la wiki repository per %s.
@ -2025,21 +2027,21 @@ settings.wiki_deletion_success=I dati della repository wiki sono stati eliminati
settings.delete=Elimina questo progetto settings.delete=Elimina questo progetto
settings.delete_desc=L'eliminazione di un repository è un'operazione permanente e non può essere annullata. settings.delete_desc=L'eliminazione di un repository è un'operazione permanente e non può essere annullata.
settings.delete_notices_1=-Questa operazione <strong>NON PUÒ</strong> essere annullata. settings.delete_notices_1=-Questa operazione <strong>NON PUÒ</strong> essere annullata.
settings.delete_notices_2=-Questa operazione eliminerà definitivamente il repository <strong>%s</strong> inclusi codice, issue, commenti, dati wiki e impostazioni collaboratore. settings.delete_notices_2=-Questa operazione eliminerà definitivamente il repositorio <strong>%s</strong>, inclusi codice, segnalazioni commenti, dati della wiki e impostazioni collaboranti.
settings.delete_notices_fork_1=-I fork di questo repository diventeranno indipendenti dopo la cancellazione. settings.delete_notices_fork_1=-I fork di questo repository diventeranno indipendenti dopo la cancellazione.
settings.deletion_success=Il repository è stato eliminato. settings.deletion_success=Il repository è stato eliminato.
settings.update_settings_success=Le impostazioni del repository sono state aggiornate. settings.update_settings_success=Le impostazioni del repository sono state aggiornate.
settings.confirm_delete=Elimina progetto settings.confirm_delete=Elimina progetto
settings.add_collaborator=Aggiungi collaboratore settings.add_collaborator=Aggiungi collaborante
settings.add_collaborator_success=Il collaboratore è stato aggiunto. settings.add_collaborator_success=Lə collaborante è statə aggiuntə.
settings.add_collaborator_inactive_user=Non posso aggiungere un utente inattivo come collaboratore. settings.add_collaborator_inactive_user=Non posso aggiungere un*utente inattivə come collaborante.
settings.add_collaborator_duplicate=Il collaboratore è già stato aggiunto a questo repository. settings.add_collaborator_duplicate=Lə collaborante è già statə aggiuntə a questo repositorio.
settings.delete_collaborator=Rimuovi settings.delete_collaborator=Rimuovi
settings.collaborator_deletion=Rimuovi collaboratore settings.collaborator_deletion=Rimuovi collaborante
settings.collaborator_deletion_desc=Rimuovere un collaboratore revocherà l'accesso a questo repository. Continuare? settings.collaborator_deletion_desc=Rimuovere unə collaborante ne revocherà l'accesso a questo repositorio. Continuare?
settings.remove_collaborator_success=Il collaboratore è stato rimosso. settings.remove_collaborator_success=Lə collaborante è statə rimossə.
settings.search_user_placeholder=Ricerca utente… settings.search_user_placeholder=Ricerca utente…
settings.org_not_allowed_to_be_collaborator=Le organizzazioni non possono essere aggiunte come un collaboratore. settings.org_not_allowed_to_be_collaborator=Le organizzazioni non possono essere aggiunte come collaborante.
settings.change_team_access_not_allowed=La modifica dell'accesso al team per il repository è stato limitato al solo proprietario dell'organizzazione settings.change_team_access_not_allowed=La modifica dell'accesso al team per il repository è stato limitato al solo proprietario dell'organizzazione
settings.team_not_in_organization=Il team non è nella stessa organizzazione del repository settings.team_not_in_organization=Il team non è nella stessa organizzazione del repository
settings.teams=Gruppi settings.teams=Gruppi
@ -2409,7 +2411,7 @@ actions = Azioni
commit.operations = Operazioni commit.operations = Operazioni
issues.action_check = Seleziona/Deseleziona issues.action_check = Seleziona/Deseleziona
issues.close = Chiudi segnalazione issues.close = Chiudi segnalazione
issues.role.collaborator = Collaboratore issues.role.collaborator = Collaborante
desc.sha256 = SHA256 desc.sha256 = SHA256
editor.add = Aggiungi %s editor.add = Aggiungi %s
editor.update = Aggiorna %s editor.update = Aggiorna %s
@ -2452,7 +2454,7 @@ settings.units.overview = Panoramica
all_branches = Tutti i rami all_branches = Tutti i rami
projects.column.assigned_to = Assegnato a projects.column.assigned_to = Assegnato a
pulls.cmd_instruction_hint = `Visualizza istruzioni per la riga di comando.` pulls.cmd_instruction_hint = `Visualizza istruzioni per la riga di comando.`
settings.add_collaborator_blocked_them = Non si può aggiungere il collaboratore perché ha bloccato il proprietario del progetto. settings.add_collaborator_blocked_them = Non si può aggiungere lə collaborante perché ha bloccato lə proprietariə del progetto.
branch.protected_deletion_failed = Il ramo "%s" è protetto. Non può essere eliminato. branch.protected_deletion_failed = Il ramo "%s" è protetto. Non può essere eliminato.
branch.default_deletion_failed = Il ramo "%s" è il ramo predefinito. Non può essere eliminato. branch.default_deletion_failed = Il ramo "%s" è il ramo predefinito. Non può essere eliminato.
branch.tag_collision = Il ramo "%s" non può essere creato perché esiste già un'etichetta con lo stesso nome nel repositorio. branch.tag_collision = Il ramo "%s" non può essere creato perché esiste già un'etichetta con lo stesso nome nel repositorio.
@ -2566,7 +2568,7 @@ settings.wiki_branch_rename_success = Il nome del ramo della wiki della repo è
settings.wiki_branch_rename_failure = Impossibile normalizzare il nome del ramo della wiki della repo. settings.wiki_branch_rename_failure = Impossibile normalizzare il nome del ramo della wiki della repo.
settings.confirm_wiki_branch_rename = Rinomina il ramo della wiki settings.confirm_wiki_branch_rename = Rinomina il ramo della wiki
settings.wiki_rename_branch_main_notices_2 = Ciò rinominerà permanentemente il ramo interno della wiki della repo di %s. Passaggi esistenti dovranno essere aggiornati. settings.wiki_rename_branch_main_notices_2 = Ciò rinominerà permanentemente il ramo interno della wiki della repo di %s. Passaggi esistenti dovranno essere aggiornati.
settings.add_collaborator_blocked_our = Non si può aggiungere il collaboratore perché il proprietario del progetto lo ha bloccato. settings.add_collaborator_blocked_our = Non si può aggiungere lə collaborante perché lə proprietariə del progetto l'ha bloccatə.
settings.webhook.replay.description_disabled = Per riprodurre questo richiamo HTTP, attivalo. settings.webhook.replay.description_disabled = Per riprodurre questo richiamo HTTP, attivalo.
settings.event_wiki_desc = Pagina wiki creata, rinominata, modificata o rimossa. settings.event_wiki_desc = Pagina wiki creata, rinominata, modificata o rimossa.
settings.event_pull_request_review_request = Richiesta di modifica revisionata settings.event_pull_request_review_request = Richiesta di modifica revisionata
@ -2609,7 +2611,7 @@ invisible_runes_description = `Questo file contiene caratteri Unicode invisibili
issues.filter_type.reviewed_by_you = Revisionati da te issues.filter_type.reviewed_by_you = Revisionati da te
projects.edit_success = Il progetto "%s" è stato aggiornato. projects.edit_success = Il progetto "%s" è stato aggiornato.
issues.keyword_search_unavailable = La ricerca per parola chiave non è attualmente disponibile. Contatta l'amministratore del sito. issues.keyword_search_unavailable = La ricerca per parola chiave non è attualmente disponibile. Contatta l'amministratore del sito.
issues.role.collaborator_helper = Questo utente è stato invitato a collaborare sul progetto. issues.role.collaborator_helper = Quest*utente è statə invitatə a collaborare al progetto.
pulls.commit_ref_at = `ha fatto riferimento a questa richiesta di modifica da un commit <a id="%[1]s" href="#%[1]s">%[2]s</a>` pulls.commit_ref_at = `ha fatto riferimento a questa richiesta di modifica da un commit <a id="%[1]s" href="#%[1]s">%[2]s</a>`
settings.thread_id = ID della discussione settings.thread_id = ID della discussione
release.title = Titolo del rilascio release.title = Titolo del rilascio
@ -2661,7 +2663,7 @@ settings.branches.add_new_rule = Aggiungi una nuova regola
settings.actions_desc = Abilita azioni del progetto settings.actions_desc = Abilita azioni del progetto
settings.new_owner_blocked_doer = Il nuovo proprietario ti ha bloccato. settings.new_owner_blocked_doer = Il nuovo proprietario ti ha bloccato.
settings.update_settings_no_unit = Ili progetto dovrebbe consentire almeno qualche tipo di interazione. settings.update_settings_no_unit = Ili progetto dovrebbe consentire almeno qualche tipo di interazione.
settings.add_collaborator_owner = Non si può aggiungere un proprietario come collaboratore. settings.add_collaborator_owner = Non si può aggiungere unə proprietariə come collaborante.
branch.delete_desc = L'eliminazione di un ramo è definitiva. Nonostante il ramo eliminato potrebbe continuare ad esistere per un breve periodo di tempo prima di essere realmente eliminato, l'eliminazione NON PUÒ essere annullata in molti casi. Continuare? branch.delete_desc = L'eliminazione di un ramo è definitiva. Nonostante il ramo eliminato potrebbe continuare ad esistere per un breve periodo di tempo prima di essere realmente eliminato, l'eliminazione NON PUÒ essere annullata in molti casi. Continuare?
editor.invalid_commit_mail = Email invalida per creare un commit. editor.invalid_commit_mail = Email invalida per creare un commit.
editor.branch_does_not_exist = Non esiste nessun ramo "%s" nel repositorio. editor.branch_does_not_exist = Non esiste nessun ramo "%s" nel repositorio.
@ -2780,9 +2782,9 @@ settings.matrix.access_token_helper = È consigliata l'impostazione di un accoun
issues.author.tooltip.issue = Questo utente è l'autore di questa segnalazione. issues.author.tooltip.issue = Questo utente è l'autore di questa segnalazione.
form.string_too_long = La stringa data è più lunga di %d caratteri. form.string_too_long = La stringa data è più lunga di %d caratteri.
project = Progetti project = Progetti
issues.edit.already_changed = Impossibile salvare le modifiche al problema. Sembra che il contenuto sia già stato modificato da un altro utente. Aggiornare la pagina e provare a modificare nuovamente per evitare di sovrascrivere le modifiche issues.edit.already_changed = Impossibile salvare le modifiche alla segnalazione. Sembra che il contenuto sia già stato modificato da un*altrə utente. Aggiornare la pagina e provare a modificare nuovamente per evitare di sovrascrivere le modifiche
subscribe.pull.guest.tooltip = Accedi per iscriverti a questa richiesta di modifica. subscribe.pull.guest.tooltip = Accedi per iscriverti a questa richiesta di modifica.
subscribe.issue.guest.tooltip = Accedere per sottoscrivere questo problema. subscribe.issue.guest.tooltip = Accedere per seguire questa segnalazione.
n_release_one = rilascio %s n_release_one = rilascio %s
n_release_few = rilasci %s n_release_few = rilasci %s
issues.author.tooltip.pr = Quest'utente è l'autorə di questa richiesta di modifica. issues.author.tooltip.pr = Quest'utente è l'autorə di questa richiesta di modifica.
@ -2889,7 +2891,7 @@ teams.read_access_helper=I membri possono visualizzare e clonare i repository de
teams.write_access=Scrittura teams.write_access=Scrittura
teams.write_access_helper=I membri possono leggere e pushare sui repository del team. teams.write_access_helper=I membri possono leggere e pushare sui repository del team.
teams.admin_access=Accesso amministratore teams.admin_access=Accesso amministratore
teams.admin_access_helper=I membri possono pullare e pushare sulle repository del team e anche aggiungere collaboratori. teams.admin_access_helper=I membri possono prelevare e immettere sui repositori del team e aggiungere collaboranti.
teams.no_desc=Questo team non ha alcuna descrizione teams.no_desc=Questo team non ha alcuna descrizione
teams.settings=Impostazioni teams.settings=Impostazioni
teams.owners_permission_desc=I proprietari hanno pieno accesso a <strong>tutti i repository</strong> e hanno <strong>diritti di amministratore</strong> nell'organizzazione. teams.owners_permission_desc=I proprietari hanno pieno accesso a <strong>tutti i repository</strong> e hanno <strong>diritti di amministratore</strong> nell'organizzazione.
@ -2902,7 +2904,7 @@ teams.delete_team_desc=Eliminare un team revocherà l'accesso al repository da p
teams.delete_team_success=Il team è stato eliminato. teams.delete_team_success=Il team è stato eliminato.
teams.read_permission_desc=Questo team concede l'accesso di <strong>lettura</strong>: i membri possono visualizzare e clonare i repository del team. teams.read_permission_desc=Questo team concede l'accesso di <strong>lettura</strong>: i membri possono visualizzare e clonare i repository del team.
teams.write_permission_desc=Questo team concede l'accesso di <strong>Scrittura</strong>: i membri possono leggere da e pushare sui repository del team. teams.write_permission_desc=Questo team concede l'accesso di <strong>Scrittura</strong>: i membri possono leggere da e pushare sui repository del team.
teams.admin_permission_desc=Questo team concede l'accesso di <strong>Amministratore</strong>: i membri possono leggere da, pushare su e aggiungere collaboratori ai repository del team. teams.admin_permission_desc=Questo team concede l'accesso di <strong>Amministrante</strong>: i membri possono leggere da, immettere in e aggiungere collaboranti ai repositori del team.
teams.create_repo_permission_desc=Inoltre, questo team concede il permesso di <strong>Creare repository</strong>: i membri possono creare nuove repository nell'organizzazione. teams.create_repo_permission_desc=Inoltre, questo team concede il permesso di <strong>Creare repository</strong>: i membri possono creare nuove repository nell'organizzazione.
teams.repositories=Progetti della squadra teams.repositories=Progetti della squadra
teams.search_repo_placeholder=Ricerca repository… teams.search_repo_placeholder=Ricerca repository…
@ -3463,7 +3465,7 @@ auths.tips.gmail_settings = Impostazioni Gmail:
config.test_mail_failed = Impossibile inviare email di prova a "%s": %v config.test_mail_failed = Impossibile inviare email di prova a "%s": %v
users.details = Dettagli dell'utente users.details = Dettagli dell'utente
monitor.queue.review_add = Revisiona / aggiungi lavoratori monitor.queue.review_add = Revisiona / aggiungi lavoratori
self_check.no_problem_found = Nessun problema trovato. self_check.no_problem_found = Non c'è ancora nessuna segnalazione.
self_check.database_inconsistent_collation_columns = La base di dati sta usando la collazione %s ma queste colonne usano una collazione diversa. Potrebbe causare problemi imprevisti. self_check.database_inconsistent_collation_columns = La base di dati sta usando la collazione %s ma queste colonne usano una collazione diversa. Potrebbe causare problemi imprevisti.
monitor.queue.settings.remove_all_items = Rimuovi tutto monitor.queue.settings.remove_all_items = Rimuovi tutto
monitor.queue.settings.desc = Le piscine crescono dinamicamente in risposta al blocco dei lavoratori in coda. monitor.queue.settings.desc = Le piscine crescono dinamicamente in risposta al blocco dei lavoratori in coda.
@ -3483,11 +3485,13 @@ config.app_slogan = Slogan dell'istanza
auths.default_domain_name = Nome di dominio predefinito utilizzato per l'indirizzo e-mail auths.default_domain_name = Nome di dominio predefinito utilizzato per l'indirizzo e-mail
users.restricted.description = Permetti di interagire solo con i repositori e le organizzazioni in cui l'utente è aggiuntə come collaborante. Ciò evita l'accesso ai repositori pubblici di quest'istanza.
[action] [action]
create_repo=ha creato il repository <a href="%s">%s</a> create_repo=ha creato il repository <a href="%s">%s</a>
rename_repo=repository rinominato da <code>%[1]s</code> a <a href="%[2]s">[3]s</a> rename_repo=repository rinominato da <code>%[1]s</code> a <a href="%[2]s">[3]s</a>
create_issue=`ha aperto la segnalazione <a href="%[1]s">%[3]s#%[2]s</a>` create_issue=`ha aperto la segnalazione <a href="%[1]s">%[3]s#%[2]s</a>`
close_issue=`ha chiuso il problema <a href="%[1]s">%[3]s#%[2]s</a>` close_issue=`ha chiuso la segnalazione <a href="%[1]s">%[3]s#%[2]s</a>`
reopen_issue=`ha riaperto la segnalazione <a href="%[1]s">%[3]s#%[2]s</a>` reopen_issue=`ha riaperto la segnalazione <a href="%[1]s">%[3]s#%[2]s</a>`
create_pull_request=`ha creato la pull request <a href="%[1]s">%[3]s#%[2]s</a>` create_pull_request=`ha creato la pull request <a href="%[1]s">%[3]s#%[2]s</a>`
close_pull_request=`ha chiuso la pull request <a href="%[1]s">%[3]s#%[2]s</a>` close_pull_request=`ha chiuso la pull request <a href="%[1]s">%[3]s#%[2]s</a>`

View file

@ -1217,7 +1217,7 @@ migrate.migrating_failed_no_addr=移行に失敗しました。
migrate.github.description=github.com やその他の GitHub エンタープライズサーバーからデータを移行します。 migrate.github.description=github.com やその他の GitHub エンタープライズサーバーからデータを移行します。
migrate.git.description=Git サービスからリポジトリのみを移行します。 migrate.git.description=Git サービスからリポジトリのみを移行します。
migrate.gitlab.description=gitlab.com やその他の GitLab インスタンスからデータを移行します。 migrate.gitlab.description=gitlab.com やその他の GitLab インスタンスからデータを移行します。
migrate.gitea.description=gitea.com やその他の Gitea/Forgejo インスタンスからデータを移行します。 migrate.gitea.description=gitea.com やその他の Gitea インスタンスからデータを移行します。
migrate.gogs.description=notabug.org やその他の Gogs インスタンスからデータを移行します。 migrate.gogs.description=notabug.org やその他の Gogs インスタンスからデータを移行します。
migrate.onedev.description=code.onedev.io やその他の OneDev インスタンスからデータを移行します。 migrate.onedev.description=code.onedev.io やその他の OneDev インスタンスからデータを移行します。
migrate.codebase.description=codebasehq.com からデータを移行します。 migrate.codebase.description=codebasehq.com からデータを移行します。
@ -1305,6 +1305,7 @@ view_git_blame=Git Blameを表示
video_not_supported_in_browser=このブラウザはHTML5のvideoタグをサポートしていません。 video_not_supported_in_browser=このブラウザはHTML5のvideoタグをサポートしていません。
audio_not_supported_in_browser=このブラウザーはHTML5のaudioタグをサポートしていません。 audio_not_supported_in_browser=このブラウザーはHTML5のaudioタグをサポートしていません。
stored_lfs=Git LFSで保管されています stored_lfs=Git LFSで保管されています
stored_annex=Git Annexで保管されています
symbolic_link=シンボリック リンク symbolic_link=シンボリック リンク
executable_file=実行ファイル executable_file=実行ファイル
commit_graph=コミットグラフ commit_graph=コミットグラフ
@ -1328,6 +1329,7 @@ editor.upload_file=ファイルをアップロード
editor.edit_file=ファイルを編集 editor.edit_file=ファイルを編集
editor.preview_changes=変更をプレビュー editor.preview_changes=変更をプレビュー
editor.cannot_edit_lfs_files=LFSのファイルはWebインターフェースで編集できません。 editor.cannot_edit_lfs_files=LFSのファイルはWebインターフェースで編集できません。
editor.cannot_edit_annex_files=AnnexのファイルはWebインターフェースで編集できません。
editor.cannot_edit_non_text_files=バイナリファイルはWebインターフェースで編集できません。 editor.cannot_edit_non_text_files=バイナリファイルはWebインターフェースで編集できません。
editor.edit_this_file=ファイルを編集 editor.edit_this_file=ファイルを編集
editor.this_file_locked=ファイルはロックされています editor.this_file_locked=ファイルはロックされています

View file

@ -821,6 +821,7 @@ file_too_large=보여주기에는 파일이 너무 큽니다.
video_not_supported_in_browser=당신의 브라우저가 HTML5의 "video" 태그를 지원하지 않습니다. video_not_supported_in_browser=당신의 브라우저가 HTML5의 "video" 태그를 지원하지 않습니다.
audio_not_supported_in_browser=당신의 브라우저가 HTML5의 "audio" 태그를 지원하지 않습니다. audio_not_supported_in_browser=당신의 브라우저가 HTML5의 "audio" 태그를 지원하지 않습니다.
stored_lfs=Git LFS에 저장되어 있습니다 stored_lfs=Git LFS에 저장되어 있습니다
stored_annex=Git Annex에 저장되어 있습니다
commit_graph=커밋 그래프 commit_graph=커밋 그래프
editor.new_file=새 파일 editor.new_file=새 파일
@ -1435,6 +1436,8 @@ issues.cancel_tracking_history = `취소된 시간 기록 %s`
settings.enter_repo_name = 표시된 소유자와 저장소명을 정확하게 입력하세요: settings.enter_repo_name = 표시된 소유자와 저장소명을 정확하게 입력하세요:
settings.packagist_username = Packagist 사용자명 settings.packagist_username = Packagist 사용자명
archive.title_date = 이 저장소는 %s에 보관처리되었습니다. 파일을 볼 수 있고 복제할 수도 있지만, 푸시하거나 이슈를 열거나 풀 리퀘스트를 만들 수 없습니다.
[graphs] [graphs]
[org] [org]

View file

@ -40,7 +40,7 @@ passcode=Kods
webauthn_insert_key=Jāievieto sava drošības atslēga webauthn_insert_key=Jāievieto sava drošības atslēga
webauthn_sign_in=Jānospiež poga uz drošības. Ja drošības atslēgai nav pogas, tā ir atkārtoti jāievieto. webauthn_sign_in=Jānospiež poga uz drošības. Ja drošības atslēgai nav pogas, tā ir atkārtoti jāievieto.
webauthn_press_button=Lūgums nospiest pogu uz savas drošības atslēgas… webauthn_press_button=Lūgums nospiest pogu uz savas drošības atslēgas…
webauthn_use_twofa=Izmantot divfaktoru kodu no tālruņa webauthn_use_twofa=Izmantot divpakāpju kodu no sava tālruņa
webauthn_error=Nevar nolasīt drošības atslēgu. webauthn_error=Nevar nolasīt drošības atslēgu.
webauthn_unsupported_browser=Pārlūks pašlaik nenodrošina WebAuthn. webauthn_unsupported_browser=Pārlūks pašlaik nenodrošina WebAuthn.
webauthn_error_unknown=Atgadījās nezināma kļūda. Lūgums mēģināt vēlreiz. webauthn_error_unknown=Atgadījās nezināma kļūda. Lūgums mēģināt vēlreiz.
@ -75,7 +75,7 @@ mirrors=Spoguļglabātavas
collaborative=Līdzdarbošanās collaborative=Līdzdarbošanās
forks=Atzarojumi forks=Atzarojumi
activities=Aktivitāte activities=Darbības
pull_requests=Izmaiņu pieprasījumi pull_requests=Izmaiņu pieprasījumi
issues=Pieteikumi issues=Pieteikumi
milestones=Atskaites punkti milestones=Atskaites punkti
@ -83,8 +83,8 @@ milestones=Atskaites punkti
ok=Labi ok=Labi
cancel=Atcelt cancel=Atcelt
retry=Mēģināt vēlreiz retry=Mēģināt vēlreiz
rerun=Palaist atkārtoti rerun=Atkārtoti izpildīt
rerun_all=Palaist atkārtoti visus darbus rerun_all=Atkārtoti izpildīt visus darbus
save=Saglabāt save=Saglabāt
add=Pievienot add=Pievienot
add_all=Pievienot visus add_all=Pievienot visus
@ -213,7 +213,7 @@ string.desc=Z - A
[error] [error]
occurred=Radusies kļūda occurred=Radusies kļūda
report_message=Ja ir pārliecība, ka šī ir Forgejo nepilnība, lūgums pārbaudīt <a href="%s" target="_blank">GitHub</a>, vai tā jau nav zināma, vai izveidot jaunu pieteikumu, ja nepieciešams. report_message=Ja ir pārliecība, ka šī ir Forgejo nepilnība, lūgums pārbaudīt <a href="%s" target="_blank">Codeberg</a>, vai tā jau nav zināma, vai izveidot jaunu pieteikumu, ja nepieciešams.
missing_csrf=Kļūdains pieprasījums: netika iesūtīta drošības pilnvara missing_csrf=Kļūdains pieprasījums: netika iesūtīta drošības pilnvara
invalid_csrf=Kļūdains pieprasījums: iesūtīta kļūdaina drošības pilnvara invalid_csrf=Kļūdains pieprasījums: iesūtīta kļūdaina drošības pilnvara
not_found=Pieprasītie dati netika atrasti. not_found=Pieprasītie dati netika atrasti.
@ -221,18 +221,18 @@ network_error=Tīkla kļūda
server_internal = Iekšēja servera kļūda server_internal = Iekšēja servera kļūda
[startpage] [startpage]
app_desc=Viegli uzstādāms Git serviss app_desc=Pašmitināms Git pakalpojums bez galvassāpēm
install=Vienkārši instalējams install=Viegli uzstādīt
install_desc=Vienkārši <a target="_blank" rel="noopener noreferrer" href="%[1]s">jāpalaiž izpildāmā datne</a> vajadzīgajai sistēmai, 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>. install_desc=Vienkārši <a target="_blank" rel="noopener noreferrer" href="%[1]s">jāpalaiž izpildāmā datne</a> vajadzīgajai sistēmai, 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=Pieejama dažādām platformām
lightweight=Viegla 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! lightweight_desc=Forgejo ir zemas tehniskās prasības, un tas var darboties nedārgā Raspberry Pi. Taupām savu ierīču patērēto enerģiju!
license=Atvērtā pirmkoda license=Atvērtā pirmkoda
license_desc=Iegūsti <a target="_blank" rel="noopener noreferrer" href="%[1]s">Forgejo</a>! Pievienojies mums <a target="_blank" rel="noopener noreferrer" href="%[2]s">līdzdarbojoties</a>, lai padarītu šo projektu vēl labāku! Nekautrējies un līdzdarbojies! license_desc=Iegūsti <a target="_blank" rel="noopener noreferrer" href="%[1]s">Forgejo</a>! Pievienojies mums <a target="_blank" rel="noopener noreferrer" href="%[2]s">līdzdarbojoties</a>, lai padarītu šo projektu vēl labāku! Nekautrējies un līdzdarbojies!
platform_desc = Ir apstiprināts, ka Forgejo darbojas brīvās operētājsistēmāš, piemēram, GNU/Linux un FreeBSD, kā arī ar dažādām procesoru arhitektūrām. Izvēlies to, kas patīk! platform_desc = Ir apstiprināts, ka Forgejo darbojas brīvās operētājsistēmās, piemēram, GNU/Linux un FreeBSD, kā arī ar dažādām procesoru arhitektūrām. Izvēlies to, kas patīk!
[install] [install]
install=Instalācija install=Uzstādīšana
title=Sākotnējā konfigurācija title=Sākotnējā konfigurācija
docker_helper=Ja Forgejo ir uzstādīts Docker konteinerā, lūgums izlasīt <a target="_blank" rel="noopener noreferrer" href="%s">vadlīnijas</a>, pirms tiek mainīti iestatījumi. docker_helper=Ja Forgejo ir uzstādīts Docker konteinerā, lūgums izlasīt <a target="_blank" rel="noopener noreferrer" href="%s">vadlīnijas</a>, pirms tiek mainīti iestatījumi.
require_db_desc=Forgejo nepieciešams MySQL, PostgreSQL, SQLite3 vai TiDB (ar MySQL protokolu). require_db_desc=Forgejo nepieciešams MySQL, PostgreSQL, SQLite3 vai TiDB (ar MySQL protokolu).
@ -247,11 +247,11 @@ db_schema_helper=Atstāt tukšu, lai izmantotu datubāzes noklusējumu ("public"
ssl_mode=SSL ssl_mode=SSL
path=Ceļš path=Ceļš
sqlite_helper=SQLite3 datubāzes datnes ceļš.<br>Jāievada pilns ceļš, ja Forgejo tiek palaists kā sistēmas pakalpojums. sqlite_helper=SQLite3 datubāzes datnes ceļš.<br>Jāievada pilns ceļš, ja Forgejo tiek palaists kā sistēmas pakalpojums.
reinstall_error=Nevar instalēt datubāzē, kura jau satur Forgejo datus reinstall_error=Tiek mēģināts uzstādīt esošā Forgejo datubāzē
reinstall_confirm_message=Atkārtota uzstādīšana ar esošu Forgejo datubāzi var izraisīt vairākas nebūšanas. Vairumā gadījumu vajadzētu izmantot esošo "app.ini", lai palaistu Forgejo. Jāapstiprina zemāk esošais, ja ir skaidrs, kas tiek darīts: reinstall_confirm_message=Atkārtota uzstādīšana ar esošu Forgejo datubāzi var izraisīt vairākas nebūšanas. Vairumā gadījumu vajadzētu izmantot esošo "app.ini", lai palaistu Forgejo. Jāapstiprina zemāk esošais, ja ir skaidrs, kas tiek darīts:
reinstall_confirm_check_1=Dati, kas šifrēti ar SECRET_KEY, kas ir norādīta app.ini datnē, var tikt pazaudēti: lietotāji nevarēs pieteikties ar 2FA/OTP, kā arī spoguļglabātavas var pārstāt darboties. Ar šīs izvēles rūtiņas atzīmēšanu tiek apstiprināts, ka pašreizējā app.ini datne satur pareizu SECRET_KEY vērtību. reinstall_confirm_check_1=Dati, kas šifrēti ar SECRET_KEY, kas ir norādīta app.ini datnē, var tikt pazaudēti: lietotāji nevarēs pieteikties ar 2FA/OTP, kā arī spoguļglabātavas var pārstāt darboties. Ar šīs izvēles rūtiņas atzīmēšanu tiek apstiprināts, ka pašreizējā app.ini datne satur pareizu SECRET_KEY vērtību.
reinstall_confirm_check_2=Glabātavas un iestatījumus var būt nepieciešams atkārtoti sinhronizēt. Ar šīs izvēles rūtiņas atzīmēšanu tiek apstiprināts, ka pašrocīgi tiks veikta glabātavu aizķeru un authorized_keys datnes atkārtota sinhronizēšana, kā arī tiek apstiprināts, ka tiks nodrošināts, ka glabātavas un spoguļošanas iestatījumi ir pareizi. reinstall_confirm_check_2=Glabātavas un iestatījumus var būt nepieciešams atkārtoti sinhronizēt. Ar šīs izvēles rūtiņas atzīmēšanu tiek apstiprināts, ka pašrocīgi tiks veikta glabātavu aizķeru un authorized_keys datnes atkārtota sinhronizēšana, kā arī tiek apstiprināts, ka tiks nodrošināts, ka glabātavas un spoguļošanas iestatījumi ir pareizi.
reinstall_confirm_check_3=Ar šo tiek apstiprināts, ka ir pilnīga pārliecība, ka Forgejo darbojas ar pareizu app.ini atrašanāš vietu un ka tiešām ir nepieciešama atkārtota uzstādīšana. Tiek apliecināts, ka iepriekšminētais var novest pie kļūmēm. reinstall_confirm_check_3=Ar šo tiek apstiprināts, ka ir pilnīga pārliecība, ka Forgejo darbojas ar pareizu app.ini atrašanās vietu un ka tiešām ir nepieciešama atkārtota uzstādīšana. Tiek apliecināts, ka iepriekšminētais var novest pie kļūmēm.
err_empty_db_path=Nav norādīts SQLite3 datu bāzes ceļš. err_empty_db_path=Nav norādīts SQLite3 datu bāzes ceļš.
no_admin_and_disable_registration=Lietotāju reģistrēšanos nevar atspējot bez pārvaldītāja konta izveidošanas. no_admin_and_disable_registration=Lietotāju reģistrēšanos nevar atspējot bez pārvaldītāja konta izveidošanas.
err_empty_admin_password=Pārvaldītāja parole nevar būt tukša. err_empty_admin_password=Pārvaldītāja parole nevar būt tukša.
@ -267,7 +267,7 @@ repo_path=Glabātavu atrašanās vieta
repo_path_helper=Attālās Git glabātavas tiks saglabātas šajā mapē. repo_path_helper=Attālās Git glabātavas tiks saglabātas šajā mapē.
lfs_path=Git LFS atrašanās vieta lfs_path=Git LFS atrašanās vieta
lfs_path_helper=Datnes, kas pievienotas Git LFS, tiks glabātas šajā mapē. Atstāt tukšu, lai atspējotu. lfs_path_helper=Datnes, kas pievienotas Git LFS, tiks glabātas šajā mapē. Atstāt tukšu, lai atspējotu.
run_user=Lietotājus, ar kuru palaist run_user=Lietotājs, ar kuru palaist
run_user_helper=Operētājsistēms lietotājs, ar kuru tiks palaists Forgejo. Jāņem vērā, ka šim lietotājam ir jābūt piekļuvei glabātavas atrašanās vietai. run_user_helper=Operētājsistēms lietotājs, ar kuru tiks palaists Forgejo. Jāņem vērā, ka šim lietotājam ir jābūt piekļuvei glabātavas atrašanās vietai.
domain=Servera domēna vārds domain=Servera domēna vārds
domain_helper=Domēns vai servera adrese. domain_helper=Domēns vai servera adrese.
@ -314,19 +314,19 @@ admin_name=Pārvaldītāja lietotājvārds
admin_password=Parole admin_password=Parole
confirm_password=Apstiprināt paroli confirm_password=Apstiprināt paroli
admin_email=E-pasta adrese admin_email=E-pasta adrese
install_btn_confirm=Instalēt Forgejo install_btn_confirm=Uzstādīt Forgejo
test_git_failed=Nevarēja pārbaudīt "git" komandu: %v test_git_failed=Nevarēja pārbaudīt "git" komandu: %v
sqlite3_not_available=Šī Forgejo versija neatbalsta SQLite3. Lūgums lejupielādēt oficiālo bināro versiju no %s (ne 'gobuild' versiju). sqlite3_not_available=Šī Forgejo versija neatbalsta SQLite3. Lūgums lejupielādēt oficiālo bināro versiju no %s (ne 'gobuild' versiju).
invalid_db_setting=Nederīgi datu bāzes iestatījumi: %v invalid_db_setting=Nederīgi datu bāzes iestatījumi: %v
invalid_db_table=Datubāzes tabula "%s" ir kļūdaina: %v invalid_db_table=Datubāzes tabula "%s" ir kļūdaina: %v
invalid_repo_path=Nederīga glabātavu atrašanās vieta: %v invalid_repo_path=Nederīga glabātavu atrašanās vieta: %v
invalid_app_data_path=Lietojumprogrammas datu ceļš ir kļūdains: %v invalid_app_data_path=Lietotnes datu ceļš ir kļūdains: %v
run_user_not_match="Izpildīt kā lietotājam" lietotājvārds neatbilst pašreizējam lietotājam: %s -> %s run_user_not_match="Lietotājs, ar kuru palaist" lietotājvārds neatbilst pašreizējam lietotājam: %s -> %s
internal_token_failed=Neizdevās izveidot iekšējo pilnvaru: %v internal_token_failed=Neizdevās izveidot iekšējo pilnvaru: %v
secret_key_failed=Neizdevās izveidot drošības atslēgu: %v secret_key_failed=Neizdevās izveidot drošības atslēgu: %v
save_config_failed=Neizdevās saglabāt konfigurāciju: %v save_config_failed=Neizdevās saglabāt konfigurāciju: %v
invalid_admin_setting=Pārvaldītāja konta iestatījums ir nederīgs: %v invalid_admin_setting=Pārvaldītāja konta iestatījums ir nederīgs: %v
invalid_log_root_path=Nederīgs žurnalizēšanas ceļš: %v invalid_log_root_path=Žurnāla atrašanās vieta ir nederīga: %v
default_keep_email_private=Pēc noklusējuma slēpt e-pasta adreses default_keep_email_private=Pēc noklusējuma slēpt e-pasta adreses
default_keep_email_private.description=Pēc noklusējuma iespējot e-pasta adreses slēpšanu jauniem lietotājiem, lai šī informāciju nenoplūstu uzreiz pēc reģistrēšanās. default_keep_email_private.description=Pēc noklusējuma iespējot e-pasta adreses slēpšanu jauniem lietotājiem, lai šī informāciju nenoplūstu uzreiz pēc reģistrēšanās.
default_allow_create_organization=Pēc noklusējuma ļaut apvienību izveidošanu default_allow_create_organization=Pēc noklusējuma ļaut apvienību izveidošanu
@ -424,7 +424,7 @@ account_activated=Konts ir aktivēts
prohibit_login=Konta darbība ir apturēta prohibit_login=Konta darbība ir apturēta
prohibit_login_desc=Kontam ir liegts mijiedarboties ar serveri. Jāsazinās ar tā pārvaldītāju, lai atgūtu piekļuvi. prohibit_login_desc=Kontam ir liegts mijiedarboties ar serveri. Jāsazinās ar tā pārvaldītāju, lai atgūtu piekļuvi.
resent_limit_prompt=Nesen jau tika pieprasīts aktivēšanas e-pasta ziņojums. Lūgums uzgaidīt 3 minūtes un mēģināt vēlreiz. resent_limit_prompt=Nesen jau tika pieprasīts aktivēšanas e-pasta ziņojums. Lūgums uzgaidīt 3 minūtes un mēģināt vēlreiz.
has_unconfirmed_mail=Sveiciens, %s! Tev ir neapstiprināta e-pasta adrese (<b>%s</b>). Ja neesi saņēmis apstiprinājuma e-pasta ziņojumu vai ir nepieciešams nosūtīt jaunu, lūgums klikšķināt uz zemāk esošās pogas. has_unconfirmed_mail=Sveiciens, %s! Tev ir neapstiprināta e-pasta adrese (<b>%s</b>). Ja nav saņemts apstiprinājuma e-pasta ziņojums vai ir nepieciešams nosūtīt jaunu, lūgums klikšķināt uz zemāk esošās pogas.
resend_mail=Klikšķināt šeit, lai atkārtoti nosūtītu aktivēšanas e-pasta ziņojumu resend_mail=Klikšķināt šeit, lai atkārtoti nosūtītu aktivēšanas e-pasta ziņojumu
email_not_associate=Šī e-pasta adrese nav saistīta ar nevienu kontu. email_not_associate=Šī e-pasta adrese nav saistīta ar nevienu kontu.
send_reset_mail=Nosūtīt atkopes e-pasta ziņojumu send_reset_mail=Nosūtīt atkopes e-pasta ziņojumu
@ -680,6 +680,8 @@ AccessToken = Piekļuves pilnvara
To = Zara nosaukums To = Zara nosaukums
email_domain_is_not_allowed = Lietotāja e-pasta adreses <b>%s</b> domēna vārds ir pretrunāt ar EMAIL_DOMAIN_ALLOWLIST vai EMAIL_DOMAIN_BLOCKLIST. Jāpārliecinās, ka e-pasta adrese ir norādīta pareizi.
[user] [user]
change_avatar=Mainīt profila attēlu… change_avatar=Mainīt profila attēlu…
joined_on=Pievienojās %s joined_on=Pievienojās %s
@ -695,7 +697,7 @@ following_few=%d seko
follow=Sekot follow=Sekot
unfollow=Nesekot unfollow=Nesekot
user_bio=Biogrāfija user_bio=Biogrāfija
disabled_public_activity=Šis lietotājs ir atslēdzies iespēju aplūkot tā aktivitāti. disabled_public_activity=Šis lietotājs ir atspējojis darbību redzamību visiem.
email_visibility.limited=E-pasta adrese ir redzama visiem autentificētajiem lietotājiem email_visibility.limited=E-pasta adrese ir redzama visiem autentificētajiem lietotājiem
email_visibility.private=E-pasta adrese ir redzama tikai administratoriem email_visibility.private=E-pasta adrese ir redzama tikai administratoriem
show_on_map=Rādīt šo vietu kartē show_on_map=Rādīt šo vietu kartē
@ -736,7 +738,7 @@ social=Sociālie konti
applications=Lietotnes applications=Lietotnes
orgs=Apvienības orgs=Apvienības
repos=Glabātavas repos=Glabātavas
delete=Dzēst kontu delete=Izdzēst kontu
twofa=Divpakāpju pieteikšanās (TOTP) twofa=Divpakāpju pieteikšanās (TOTP)
account_link=Saistītie konti account_link=Saistītie konti
organization=Apvienības organization=Apvienības
@ -780,7 +782,7 @@ comment_type_group_dependency=Atkarības
comment_type_group_lock=Aizslēgšanas stāvoklis comment_type_group_lock=Aizslēgšanas stāvoklis
comment_type_group_review_request=Izskatīšanas pieprasījums comment_type_group_review_request=Izskatīšanas pieprasījums
comment_type_group_pull_request_push=Pievienotie iesūtījumi comment_type_group_pull_request_push=Pievienotie iesūtījumi
comment_type_group_project=Projektus comment_type_group_project=Projekts
comment_type_group_issue_ref=Pieteikumu atsauces comment_type_group_issue_ref=Pieteikumu atsauces
saved_successfully=Iestatījumi tika sekmīgi saglabāti. saved_successfully=Iestatījumi tika sekmīgi saglabāti.
privacy=Privātums privacy=Privātums
@ -804,15 +806,15 @@ new_password=Jaunā parole
retype_new_password=Apstiprināt jauno paroli retype_new_password=Apstiprināt jauno paroli
password_incorrect=Ievadīta nepareiza pašreizējā parole. password_incorrect=Ievadīta nepareiza pašreizējā parole.
change_password_success=Parole tika sekmīgi nomainīta. Turpmāk jāpiesakās ar savu jauno paroli. change_password_success=Parole tika sekmīgi nomainīta. Turpmāk jāpiesakās ar savu jauno paroli.
password_change_disabled=Ārējie konti nevar mainīt paroli, izmantojot, Forgejo saskarni. password_change_disabled=Ārējie lietotāji nevar mainīt savu paroli Forgejo tīmekļa saskarnē.
emails=E-pasta adreses emails=E-pasta adreses
manage_emails=Pārvaldīt e-pasta adreses manage_emails=Pārvaldīt e-pasta adreses
manage_themes=Noklusējuma izskats manage_themes=Noklusējuma izskats
manage_openid=OpenID adreses manage_openid=OpenID adreses
email_desc=Galvenā e-pasta adrese tiks izmantota paziņojumiem, paroļu atkopšanai un, ja tā nav paslēpta, Git tīmekļa darbībām. email_desc=Galvenā e-pasta adrese tiks izmantota paziņojumiem, paroļu atkopei un, ja tā nav paslēpta, Git tīmekļa darbībām.
theme_desc=Šis izskats tiks izmantots tīmekļa saskarnei pēc pieteikšanās. theme_desc=Šis izskats tiks izmantots tīmekļa saskarnei pēc pieteikšanās.
primary=Primārā primary=Galvenā
activated=Aktivēts activated=Aktivēts
requires_activation=Nepieciešama aktivēšana requires_activation=Nepieciešama aktivēšana
primary_email=Padarīt par galveno primary_email=Padarīt par galveno
@ -904,7 +906,7 @@ added_on=Pievienots %s
valid_until_date=Derīgs līdz %s valid_until_date=Derīgs līdz %s
valid_forever=Derīgs mūžīgi valid_forever=Derīgs mūžīgi
last_used=Pēdējo reizi izmantota last_used=Pēdējo reizi izmantota
no_activity=Nav nesenas aktivitātes no_activity=Nav nesenu darbību
can_read_info=Lasīt can_read_info=Lasīt
can_write_info=Rakstīt can_write_info=Rakstīt
key_state_desc=Šī atslēga ir izmantota pēdējo 7 dienu laikā key_state_desc=Šī atslēga ir izmantota pēdējo 7 dienu laikā
@ -922,17 +924,17 @@ unbind_success=Sociālā tīkla konts tika veiksmīgi noņemts.
manage_access_token=Piekļuves pilnvaras manage_access_token=Piekļuves pilnvaras
generate_new_token=Izveidot jaunu pilnvaru generate_new_token=Izveidot jaunu pilnvaru
tokens_desc=Šīs pilnvaras nodrošina piekļuvi kontam ar Gitea API. tokens_desc=Šīs pilnvaras nodrošina piekļuvi kontam ar Forgejo API.
token_name=Pilnvaras nosaukums token_name=Pilnvaras nosaukums
generate_token=Izveidot pilnvaru generate_token=Izveidot pilnvaru
generate_token_success=Jaunā pilnvara tika izveidota. Tā ir jāievieto starpliktuvē, jo tā vairs netiks rādīta. generate_token_success=Jaunā pilnvara tika izveidota. Tā ir jāievieto starpliktuvē, jo tā vairs netiks rādīta.
generate_token_name_duplicate=Lietotnes nosaukums <strong>%s</strong> jau tiek izmantots. Lūgums izmantot citu. generate_token_name_duplicate=Lietotnes nosaukums <strong>%s</strong> jau tiek izmantots. Lūgums izmantot citu.
delete_token=Dzēst delete_token=Izdzēst
access_token_deletion=Izdzēst piekļuves pilnvaru access_token_deletion=Izdzēst piekļuves pilnvaru
access_token_deletion_cancel_action=Atcelt access_token_deletion_cancel_action=Atcelt
access_token_deletion_confirm_action=Dzēst access_token_deletion_confirm_action=Dzēst
access_token_deletion_desc=Izdzēšot pilnvaru, lietojumprogrammām, kas to izmanto, tiks liegta piekļuve šim kontam. Šī darbība ir neatgriezeniska. Vai turpināt? access_token_deletion_desc=Pilnvaras izdzēšana atsauks lietotņu, kas to izmanto, piekļuvi kontam. Šo darbību nevar atsaukt. Turpināt?
delete_token_success=Pilnvara tika izdzēsta. Lietojumprogrammām, kas izmantoja šo pilnvaru, vairs nav piekļuves kontam. delete_token_success=Pilnvara tika izdzēsta. Lietotnēm, kas to izmanto, vairs nav piekļuves kontam.
repo_and_org_access=Glabātavas un apvienības piekļuve repo_and_org_access=Glabātavas un apvienības piekļuve
permissions_public_only=Tikai publiskie permissions_public_only=Tikai publiskie
permissions_access_all=Visi (publiskie, privātie un ierobežotie) permissions_access_all=Visi (publiskie, privātie un ierobežotie)
@ -975,18 +977,18 @@ revoke_oauth2_grant=Atsaukt piekļuvi
revoke_oauth2_grant_description=Šīs trešās puses lietotnes piekļuves atsaukšana liegs tai piekļūt Taviem datiem. Turpināt? revoke_oauth2_grant_description=Šīs trešās puses lietotnes piekļuves atsaukšana liegs tai piekļūt Taviem datiem. Turpināt?
revoke_oauth2_grant_success=Piekļuve sekmīgi atsaukta. revoke_oauth2_grant_success=Piekļuve sekmīgi atsaukta.
twofa_desc=Divfaktoru autentifikācija uzlabo konta drošību. twofa_desc=Lai aizsargātu savu kontu no paroļu zādzības, var izmantot viedtālruni vai citu ierīci, lai saņemtu laikā balstītas vienreiz izmantojamas paroles ("TOTP").
twofa_recovery_tip=Ja ierīce tiks pazaudēta, būs iespējams izmantot vienreizējas izmantošanas atkopšanas atslēgu, lai atgūtu piekļuvi savam kontam. twofa_recovery_tip=Ja ierīce tiks pazaudēta, būs iespējams izmantot vienreizējas izmantošanas atkopšanas atslēgu, lai atgūtu piekļuvi savam kontam.
twofa_is_enrolled=Kontam ir <strong>ieslēgta</strong> divfaktoru autentifikācija. twofa_is_enrolled=Kontam šobrīd ir <strong>ieslēgta</strong> divpakāpju pieteikšanās.
twofa_not_enrolled=Kontam šobrīd nav ieslēgta divfaktoru autentifikācija. twofa_not_enrolled=Kontam šobrīd nav ieslēgta divpakāpju pieteikšanās.
twofa_disable=Atspējot divpakāpju pieteikšanos twofa_disable=Atspējot divpakāpju pieteikšanos
twofa_scratch_token_regenerate=Atkārtoti izveidot vienreizējas izmantošanas atkopes atslēgu twofa_scratch_token_regenerate=Atkārtoti izveidot vienreizējas izmantošanas atkopes atslēgu
twofa_scratch_token_regenerated=Vienreizējā pilnvara tagad ir %s. Tā ir jāglabā drošā vietā, tā vairs nekad netiks rādīta. twofa_scratch_token_regenerated=Vienreizējā pilnvara tagad ir %s. Tā ir jāglabā drošā vietā, tā vairs nekad netiks rādīta.
twofa_enroll=Ieslēgt divpakāpju pieteikšanos twofa_enroll=Ieslēgt divpakāpju pieteikšanos
twofa_disable_note=Nepieciešamības gadījumā divfaktoru autentifikāciju ir iespējams atslēgt. twofa_disable_note=Ja nepieciešams, divpakāpju pieteikšanos var atslēgt.
twofa_disable_desc=Atslēdzot divfaktoru autentifikāciju, konts vairs nebūs tik drošs. Vai turpināt? twofa_disable_desc=Divpakāpju pieteikšanās atspējošana padarīs kontu mazāk drošu. Turpināt?
regenerate_scratch_token_desc=Ja atkopšanas atslēga ir pazaudēta vai tā jau ir izmantota, lai pieteiktos, to var atiestatīt šeit. regenerate_scratch_token_desc=Ja atkopšanas atslēga ir pazaudēta vai tā jau ir izmantota, lai pieteiktos, to var atiestatīt šeit.
twofa_disabled=Divfaktoru autentifikācija tika atslēgta. twofa_disabled=Divpakāpju pieteikšanās tika atspējota.
scan_this_image=Šis attēls ir jānolasa ar autentificēšanās lietotni: scan_this_image=Šis attēls ir jānolasa ar autentificēšanās lietotni:
or_enter_secret=Vai jāievada noslēpums: %s or_enter_secret=Vai jāievada noslēpums: %s
then_enter_passcode=Pēc tam jāievada lietotnē attēlotais piekļuves kods: then_enter_passcode=Pēc tam jāievada lietotnē attēlotais piekļuves kods:
@ -1007,7 +1009,7 @@ manage_account_links_desc=Šie ārējie konti ir sasaistīti ar Tavu Forgejo kon
account_links_not_available=Pašlaik nav neviena ārējā konta piesaistīta šim kontam. account_links_not_available=Pašlaik nav neviena ārējā konta piesaistīta šim kontam.
link_account=Sasaistīt kontu link_account=Sasaistīt kontu
remove_account_link=Noņemt sasaistīto kontu remove_account_link=Noņemt sasaistīto kontu
remove_account_link_desc=Sasaistītā konta noņemšana atsauks tā piekļuvi Tavam Gitea kontam. Turpināt? remove_account_link_desc=Sasaistītā konta noņemšana atsauks tā piekļuvi Tavam Forgejo kontam. Turpināt?
remove_account_link_success=Sasaistītais konts tika noņemts. remove_account_link_success=Sasaistītais konts tika noņemts.
hooks.desc=Pievienot tīmekļa aizķeres, kas izpildīsies <strong>visās piederošajās glabātavās</strong>. hooks.desc=Pievienot tīmekļa aizķeres, kas izpildīsies <strong>visās piederošajās glabātavās</strong>.
@ -1016,7 +1018,7 @@ orgs_none=Nav dalības nevienā apvienībā.
repos_none=Tev nav nevienas glabātavas. repos_none=Tev nav nevienas glabātavas.
delete_account=Izdzēst savu kontu delete_account=Izdzēst savu kontu
delete_prompt=Šī darbība neatgriezeniski izdzēsīs lietotāja kontu. To <strong>NEVAR</strong> atdarīt. delete_prompt=Šī darbība neatgriezeniski izdzēsīs lietotāja kontu. To <strong>NEVAR</strong> atsaukt.
delete_with_all_comments=Konts ir jaunāks kā %s. Lai izvairītos no spoku piebildēm, visas pieteikumu/izmaiņu pieprasījumu piebildes tiks izdzēstas kopā ar to. delete_with_all_comments=Konts ir jaunāks kā %s. Lai izvairītos no spoku piebildēm, visas pieteikumu/izmaiņu pieprasījumu piebildes tiks izdzēstas kopā ar to.
confirm_delete_account=Apstiprināt izdzēšanu confirm_delete_account=Apstiprināt izdzēšanu
delete_account_title=Izdzēst lietotāja kontu delete_account_title=Izdzēst lietotāja kontu
@ -1129,7 +1131,7 @@ mirror_password_placeholder=(bez izmaiņām)
mirror_password_blank_placeholder=(nav uzstādīts) mirror_password_blank_placeholder=(nav uzstādīts)
mirror_password_help=Jānomaina lietotājvārds, lai izdzēstu saglabāto paroli. mirror_password_help=Jānomaina lietotājvārds, lai izdzēstu saglabāto paroli.
watchers=Novērotāji watchers=Novērotāji
stargazers=Zvaigžņdevēji stargazers=Zvaigžņu vērotāji
stars_remove_warning=Šī glabātava tiks izņemta no visām izlasēm. stars_remove_warning=Šī glabātava tiks izņemta no visām izlasēm.
forks=Atzarojumi forks=Atzarojumi
reactions_more=un vēl %d reactions_more=un vēl %d
@ -1226,7 +1228,7 @@ migrate.migrating_failed_no_addr=Pārcelšana neizdevās.
migrate.github.description=Pārcelt datus no github.com vai GitHub Enterprise servera. migrate.github.description=Pārcelt datus no github.com vai GitHub Enterprise servera.
migrate.git.description=Pārcelt tikai glabātavu no jebkura Git pakalpojuma. migrate.git.description=Pārcelt tikai glabātavu no jebkura Git pakalpojuma.
migrate.gitlab.description=Pārcelt datus no gitlab.com vai citiem GitLab serveriem. migrate.gitlab.description=Pārcelt datus no gitlab.com vai citiem GitLab serveriem.
migrate.gitea.description=Pārcelt datus no gitea.com vai citiem Gitea/Forgejo serveriem. migrate.gitea.description=Pārcelt datus no gitea.com vai citiem Gitea serveriem.
migrate.gogs.description=Pārcelt datus no notabug.org vai citiem Gogs serveriem. migrate.gogs.description=Pārcelt datus no notabug.org vai citiem Gogs serveriem.
migrate.onedev.description=Pārcelt datus no code.onedev.io vai citiem OneDev serveriem. migrate.onedev.description=Pārcelt datus no code.onedev.io vai citiem OneDev serveriem.
migrate.codebase.description=Pārcelt datus no codebasehq.com. migrate.codebase.description=Pārcelt datus no codebasehq.com.
@ -1273,7 +1275,7 @@ clear_ref=`Notīrīt pašreizējo atsauci`
filter_branch_and_tag=Atlasīt zaru vai birku filter_branch_and_tag=Atlasīt zaru vai birku
find_tag=Atrast birku find_tag=Atrast birku
branches=Zari branches=Zari
tags=Tagi tags=Birkas
issues=Pieteikumi issues=Pieteikumi
pulls=Izmaiņu pieprasījumi pulls=Izmaiņu pieprasījumi
project_board=Projekti project_board=Projekti
@ -1291,7 +1293,7 @@ releases=Laidieni
tag=Tags tag=Tags
released_this=izveidoja šo laidienu released_this=izveidoja šo laidienu
tagged_this=izveidoja tagu revīzijai tagged_this=izveidoja tagu revīzijai
file.title=%s atzarā %s file.title=%s zarā %s
file_raw=Neapstrādāts file_raw=Neapstrādāts
file_history=Vēsture file_history=Vēsture
file_view_source=Skatīt avotu file_view_source=Skatīt avotu
@ -1314,6 +1316,7 @@ view_git_blame=Apskatīt Git izmaiņu veicējus
video_not_supported_in_browser=Pārlūks neatbalsta HTML5 tagu "video". video_not_supported_in_browser=Pārlūks neatbalsta HTML5 tagu "video".
audio_not_supported_in_browser=Pārlūks neatbalsta HTML5 tagu "audio". audio_not_supported_in_browser=Pārlūks neatbalsta HTML5 tagu "audio".
stored_lfs=Saglabāts Git LFS stored_lfs=Saglabāts Git LFS
stored_annex=Saglabāts Git Annex
symbolic_link=Simboliska saite symbolic_link=Simboliska saite
executable_file=Izpildāma datne executable_file=Izpildāma datne
commit_graph=Iesūtījumu karte commit_graph=Iesūtījumu karte
@ -1337,6 +1340,7 @@ editor.upload_file=Augšupielādēt datni
editor.edit_file=Labot datni editor.edit_file=Labot datni
editor.preview_changes=Priekšskatīt izmaiņas editor.preview_changes=Priekšskatīt izmaiņas
editor.cannot_edit_lfs_files=LFS datnes tīmekļa saskarnē nevar labot. editor.cannot_edit_lfs_files=LFS datnes tīmekļa saskarnē nevar labot.
editor.cannot_edit_annex_files=Annex datnes tīmekļa saskarnē nevar labot.
editor.cannot_edit_non_text_files=Binārās datnes tīmekļa saskarnē nevar labot. editor.cannot_edit_non_text_files=Binārās datnes tīmekļa saskarnē nevar labot.
editor.edit_this_file=Labot datni editor.edit_this_file=Labot datni
editor.this_file_locked=Datne ir slēgta editor.this_file_locked=Datne ir slēgta
@ -1346,7 +1350,7 @@ editor.delete_this_file=Izdzēst datni
editor.must_have_write_access=Ir jābūt rakstīšanas piekļuvei, lai šajā datnē veiktu vai ierosinātu izmaiņas. editor.must_have_write_access=Ir jābūt rakstīšanas piekļuvei, lai šajā datnē veiktu vai ierosinātu izmaiņas.
editor.file_delete_success=Datne "%s" tika izdzēsta. editor.file_delete_success=Datne "%s" tika izdzēsta.
editor.name_your_file=Jāpiešķir datnei nosaukums… editor.name_your_file=Jāpiešķir datnei nosaukums…
editor.filename_help=Mapi var pievienot, ja ieraksta tās nosaukumu, aiz kura ir slīpsvītra ('/'). Mapi var noņemt ar atpakaļatkāpes taustiņa nospiešanu ievades lauka sākumā. editor.filename_help=Mapi var pievienot, ja ieraksta tās nosaukumu, aiz kura ir slīpsvītra ("/"). Mapi var noņemt ar atpakaļatkāpes taustiņa nospiešanu ievades lauka sākumā.
editor.or=vai editor.or=vai
editor.cancel_lower=Atcelt editor.cancel_lower=Atcelt
editor.commit_signed_changes=Iesūtīt parakstītas izmaiņas editor.commit_signed_changes=Iesūtīt parakstītas izmaiņas
@ -1360,7 +1364,7 @@ editor.patch=Pielietot ielāpu
editor.patching=Pielieto ielāpu: editor.patching=Pielieto ielāpu:
editor.fail_to_apply_patch=`Neizdevās pielietot ielāpu "%s"` editor.fail_to_apply_patch=`Neizdevās pielietot ielāpu "%s"`
editor.new_patch=Jauns ielāps editor.new_patch=Jauns ielāps
editor.commit_message_desc=Pievienot neobligātu paplašinātu aprakstu… editor.commit_message_desc=Pēc izvēles var pievienot paplašinātu aprakstu…
editor.signoff_desc=Iesūtījuma žurnāla ziņojumam pievienot noslēgumu Signed-off-by ar iesūtītāju. editor.signoff_desc=Iesūtījuma žurnāla ziņojumam pievienot noslēgumu Signed-off-by ar iesūtītāju.
editor.commit_directly_to_this_branch=Iesūtīt uzreiz zarā <strong class="%[2]s">%[1]s</strong>. editor.commit_directly_to_this_branch=Iesūtīt uzreiz zarā <strong class="%[2]s">%[1]s</strong>.
editor.create_new_branch=Izveidot šim iesūtījumam <strong>jaunu zaru</strong> un uzsākt izmaiņu pieprasījumu. editor.create_new_branch=Izveidot šim iesūtījumam <strong>jaunu zaru</strong> un uzsākt izmaiņu pieprasījumu.
@ -1437,7 +1441,7 @@ ext_issues.desc=Saite uz ārējo problēmu sekotāju.
projects=Projekti projects=Projekti
projects.desc=Pārvaldīt pieteikumus un izmaiņu pieprasījumus projektos. projects.desc=Pārvaldīt pieteikumus un izmaiņu pieprasījumus projektos.
projects.description=Apraksts (neobligāts) projects.description=Apraksts (pēc izvēles)
projects.description_placeholder=Apraksts projects.description_placeholder=Apraksts
projects.create=Izveidot projektu projects.create=Izveidot projektu
projects.title=Nosaukums projects.title=Nosaukums
@ -1597,8 +1601,8 @@ issues.opened_by_fake=%[2]s atvēra %[1]s
issues.closed_by_fake=%[2]s aizvēra %[1]s issues.closed_by_fake=%[2]s aizvēra %[1]s
issues.previous=Iepriekšējā issues.previous=Iepriekšējā
issues.next=Nākamā issues.next=Nākamā
issues.open_title=Atvērta issues.open_title=Atvērti
issues.closed_title=Slēgta issues.closed_title=Aizvērti
issues.draft_title=Melnraksts issues.draft_title=Melnraksts
issues.num_comments_1=%d piebilde issues.num_comments_1=%d piebilde
issues.num_comments=%d piebildes issues.num_comments=%d piebildes
@ -1652,7 +1656,7 @@ issues.save=Saglabāt
issues.label_title=Nosaukums issues.label_title=Nosaukums
issues.label_description=Apraksts issues.label_description=Apraksts
issues.label_color=Krāsa issues.label_color=Krāsa
issues.label_exclusive=Ekskluzīvs issues.label_exclusive=Sevišķa
issues.label_archive=Arhivēt iezīmi issues.label_archive=Arhivēt iezīmi
issues.label_archived_filter=Rādīt arhivētās iezīmes issues.label_archived_filter=Rādīt arhivētās iezīmes
issues.label_archive_tooltip=Arhivētās iezīmes pēc noklusējuma netiek iekļautas ieteikumos, kad meklē pēc iezīmes. issues.label_archive_tooltip=Arhivētās iezīmes pēc noklusējuma netiek iekļautas ieteikumos, kad meklē pēc iezīmes.
@ -1728,7 +1732,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.error_removing_due_date=Neizdevās noņemt izpildes termiņu.
issues.push_commit_1=pievienoja %d iesūtījumu %s issues.push_commit_1=pievienoja %d iesūtījumu %s
issues.push_commits_n=pievienoja %d iesūtījumus %s issues.push_commits_n=pievienoja %d iesūtījumus %s
issues.force_push_codes=`veica uzspiestu aizgādāšanu zarā %[1]s no <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_codes=`veica uzspiestu aizgādāšanu zarā %[1]s no <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.force_push_compare=Salīdzināt
issues.due_date_form=dd.mm.gggg. issues.due_date_form=dd.mm.gggg.
issues.due_date_form_add=Pievienot izpildes termiņu issues.due_date_form_add=Pievienot izpildes termiņu
@ -1868,7 +1872,7 @@ pulls.is_checking=Notiek apvienošanas nesaderību pārbaude. Pēc brīža jām
pulls.is_ancestor=Zars jau ir pilnībā iekļauts mērķa zarā. Nav izmaiņu, ko apvienot. pulls.is_ancestor=Zars jau ir pilnībā iekļauts mērķa zarā. Nav izmaiņu, ko apvienot.
pulls.is_empty=Šī zara izmaiņas jau ir mērķa zarā. Šis būs tukšs iesūtījums. pulls.is_empty=Šī zara izmaiņas jau ir mērķa zarā. Šis būs tukšs iesūtījums.
pulls.required_status_check_failed=Dažas no nepieciešamajām pārbaudēm bija nesekmīgas. pulls.required_status_check_failed=Dažas no nepieciešamajām pārbaudēm bija nesekmīgas.
pulls.required_status_check_missing=Trūkst dažu obligāto pārbaužu. pulls.required_status_check_missing=Trūkst dažu nepieciešamo pārbaužu.
pulls.required_status_check_administrator=Kā pārvaldītājs joprojām vari iekļaut šo izmaiņu pieprasījumu. pulls.required_status_check_administrator=Kā pārvaldītājs joprojām vari iekļaut šo izmaiņu pieprasījumu.
pulls.blocked_by_approvals=Šim izmaiņu pieprasījumam vēl nav pietiekami daudz apstiprinājumu. Nodrošināti %d no %d apstiprinājumiem. pulls.blocked_by_approvals=Šim izmaiņu pieprasījumam vēl nav pietiekami daudz apstiprinājumu. Nodrošināti %d no %d apstiprinājumiem.
pulls.blocked_by_rejection=Šim izmaiņu pieprasījumam oficiālais izskatītājs ir pieprasījis labojumus. pulls.blocked_by_rejection=Šim izmaiņu pieprasījumam oficiālais izskatītājs ir pieprasījis labojumus.
@ -1895,7 +1899,7 @@ pulls.no_merge_wip=Šo izmaiņu pieprasījumu nav iespējams iekļaut, jo tas ir
pulls.no_merge_not_ready=Šis izmaiņu pieprasījums nav gatavs apvienošanai, jāpārbauda izskatīšanas stāvoklis un stāvokļa pārbaudes. pulls.no_merge_not_ready=Šis izmaiņu pieprasījums nav gatavs apvienošanai, jāpārbauda izskatīšanas stāvoklis un stāvokļa pārbaudes.
pulls.no_merge_access=Nav pilnvaru, lai iekļautu šo izmaiņu pieprasījumu. pulls.no_merge_access=Nav pilnvaru, lai iekļautu šo izmaiņu pieprasījumu.
pulls.merge_pull_request=Izveidot apvienošanas iesūtījumu pulls.merge_pull_request=Izveidot apvienošanas iesūtījumu
pulls.rebase_merge_pull_request=Pārbāzēt un pārtīt uz priekšu pulls.rebase_merge_pull_request=Pārbāzēt, tad pārlēkt
pulls.rebase_merge_commit_pull_request=Pārbāzēt, tad izveidot apvienošanas iesūtījumu pulls.rebase_merge_commit_pull_request=Pārbāzēt, tad izveidot apvienošanas iesūtījumu
pulls.squash_merge_pull_request=Izveidot saspiešanas iesūtījumu pulls.squash_merge_pull_request=Izveidot saspiešanas iesūtījumu
pulls.merge_manually=Pašrocīgi apvienots pulls.merge_manually=Pašrocīgi apvienots
@ -1920,7 +1924,7 @@ pulls.status_checks_success=Visas pārbaudes bija sekmīgas
pulls.status_checks_warning=Dažas pārbaudes ziņoja brīdinājumus pulls.status_checks_warning=Dažas pārbaudes ziņoja brīdinājumus
pulls.status_checks_failure=Dažas pārbaudes neizdevās izpildīt pulls.status_checks_failure=Dažas pārbaudes neizdevās izpildīt
pulls.status_checks_error=Dažu pārbaužu izpildes laikā, radās kļūdas pulls.status_checks_error=Dažu pārbaužu izpildes laikā, radās kļūdas
pulls.status_checks_requested=Obligāts pulls.status_checks_requested=Nepieciešama
pulls.status_checks_details=Papildu informācija pulls.status_checks_details=Papildu informācija
pulls.status_checks_hide_all=Paslēpt visas pārbaudes pulls.status_checks_hide_all=Paslēpt visas pārbaudes
pulls.status_checks_show_all=Parādīt visas pārbaudes pulls.status_checks_show_all=Parādīt visas pārbaudes
@ -1963,7 +1967,7 @@ milestones.new=Jauns atskaites punkts
milestones.closed=Aizvērts %s milestones.closed=Aizvērts %s
milestones.update_ago=Atjaunināts %s milestones.update_ago=Atjaunināts %s
milestones.no_due_date=Bez termiņa milestones.no_due_date=Bez termiņa
milestones.open=Atvērta milestones.open=Atvērts
milestones.close=Aizvērt milestones.close=Aizvērt
milestones.new_subheader=Atskaites punkti var palīdzēt pārvaldīt pieteikumus un sekot to attīstībai. milestones.new_subheader=Atskaites punkti var palīdzēt pārvaldīt pieteikumus un sekot to attīstībai.
milestones.completeness=Pabeigtni <strong>%d%%</strong> milestones.completeness=Pabeigtni <strong>%d%%</strong>
@ -2033,7 +2037,7 @@ wiki.last_updated=Pēdējo reizi labota %s
wiki.page_name_desc=Jāievada šīs vikivietnes lapas nosaukums. Daži īpašie nosaukumi ir: "Home", "_Sidebar" un "_Footer". wiki.page_name_desc=Jāievada šīs vikivietnes lapas nosaukums. Daži īpašie nosaukumi ir: "Home", "_Sidebar" un "_Footer".
wiki.original_git_entry_tooltip=Rādīt sākotnējo Git datni, nevis izmantot draudzīgo saiti. wiki.original_git_entry_tooltip=Rādīt sākotnējo Git datni, nevis izmantot draudzīgo saiti.
activity=Aktivitāte activity=Notikumi
activity.period.filter_label=Laika periods: activity.period.filter_label=Laika periods:
activity.period.daily=1 diena activity.period.daily=1 diena
activity.period.halfweekly=3 dienas activity.period.halfweekly=3 dienas
@ -2065,10 +2069,10 @@ activity.title.issues_1=%d pieteikumu
activity.title.issues_n=%d pieteikumus activity.title.issues_n=%d pieteikumus
activity.title.issues_closed_from=%s aizvērts no %s activity.title.issues_closed_from=%s aizvērts no %s
activity.title.issues_created_by=%s izveidoja %s activity.title.issues_created_by=%s izveidoja %s
activity.closed_issue_label=Slēgta activity.closed_issue_label=Aizvēra
activity.new_issues_count_1=Jauns pieteikums activity.new_issues_count_1=Jauns pieteikums
activity.new_issues_count_n=Jauni pieteikumi activity.new_issues_count_n=Jauni pieteikumi
activity.new_issue_label=Atvērta activity.new_issue_label=Atvēra
activity.title.unresolved_conv_1=%d neatrisināta saruna activity.title.unresolved_conv_1=%d neatrisināta saruna
activity.title.unresolved_conv_n=%d neatrisinātu apspriešanu activity.title.unresolved_conv_n=%d neatrisinātu apspriešanu
activity.unresolved_conv_desc=Šie nesen mainītie pieteikumi un izmaiņu pieprasījumi vēl nav atrisināti. activity.unresolved_conv_desc=Šie nesen mainītie pieteikumi un izmaiņu pieprasījumi vēl nav atrisināti.
@ -2085,9 +2089,9 @@ activity.git_stats_pushed_1=aizgādāja
activity.git_stats_pushed_n=aizgādāja activity.git_stats_pushed_n=aizgādāja
activity.git_stats_commit_1=%d iesūtījumu activity.git_stats_commit_1=%d iesūtījumu
activity.git_stats_commit_n=%d iesūtījumus activity.git_stats_commit_n=%d iesūtījumus
activity.git_stats_push_to_branch=atzarā %s un activity.git_stats_push_to_branch=zarā %s un
activity.git_stats_push_to_all_branches=visos zaros. activity.git_stats_push_to_all_branches=visos zaros.
activity.git_stats_on_default_branch=Atzarā %s, activity.git_stats_on_default_branch=Zarā %s,
activity.git_stats_file_1=%d datne activity.git_stats_file_1=%d datne
activity.git_stats_file_n=%d datnes activity.git_stats_file_n=%d datnes
activity.git_stats_files_changed_1=tika izmainīts activity.git_stats_files_changed_1=tika izmainīts
@ -2207,7 +2211,7 @@ settings.convert_notices_1=Šī darbība pārveidos spoguļglabātavu par parast
settings.convert_confirm=Pārveidot glabātavu settings.convert_confirm=Pārveidot glabātavu
settings.convert_succeed=Spoguļglabātava tika pārveidota par parastu glabātavu. settings.convert_succeed=Spoguļglabātava tika pārveidota par parastu glabātavu.
settings.convert_fork=Pārveidot par parastu glabātavu settings.convert_fork=Pārveidot par parastu glabātavu
settings.convert_fork_desc=Šo atzarojumu var pārveidot par parastu glabātavu. To nevar atdarīt. settings.convert_fork_desc=Šo atzarojumu var pārveidot par parastu glabātavu. To nevar atsaukt.
settings.convert_fork_notices_1=Šī darbība pārveidos atzarojumu par parastu glabātavu, un tā nav atsaucama. settings.convert_fork_notices_1=Šī darbība pārveidos atzarojumu par parastu glabātavu, un tā nav atsaucama.
settings.convert_fork_confirm=Pārveidot glabātavu settings.convert_fork_confirm=Pārveidot glabātavu
settings.convert_fork_succeed=Atzarojums tika pārveidots par parastu glabātavu. settings.convert_fork_succeed=Atzarojums tika pārveidots par parastu glabātavu.
@ -2406,13 +2410,13 @@ settings.deploy_key_deletion=Noņemt izvietošanas atslēgu
settings.deploy_key_deletion_desc=Izvietošanas atslēgas noņemšana atsauks tās piekļuvi šai glabātavai. Turpināt? settings.deploy_key_deletion_desc=Izvietošanas atslēgas noņemšana atsauks tās piekļuvi šai glabātavai. Turpināt?
settings.deploy_key_deletion_success=Izvietošanas atslēga tika noņemta. settings.deploy_key_deletion_success=Izvietošanas atslēga tika noņemta.
settings.branches=Zari settings.branches=Zari
settings.protected_branch=Zaru aizsardzība settings.protected_branch=Zaru aizsargāšana
settings.protected_branch.save_rule=Saglabāt kārtulu settings.protected_branch.save_rule=Saglabāt kārtulu
settings.protected_branch.delete_rule=Izdzēst kārtulu settings.protected_branch.delete_rule=Izdzēst kārtulu
settings.protected_branch_can_push=Atļaut izmaiņu nosūtīšanu? settings.protected_branch_can_push=Atļaut izmaiņu nosūtīšanu?
settings.protected_branch_can_push_yes=Jūs varat nosūtīt izmaiņas settings.protected_branch_can_push_yes=Jūs varat nosūtīt izmaiņas
settings.protected_branch_can_push_no=Jūs nevarat nosūtīt izmaiņas settings.protected_branch_can_push_no=Jūs nevarat nosūtīt izmaiņas
settings.branch_protection=Zara "<b>%s</b>" aizsardzības kārtulas settings.branch_protection=Zara "<b>%s</b>" aizsargāšanas kārtulas
settings.protect_this_branch=Iespējot atzara aizsardzību settings.protect_this_branch=Iespējot atzara aizsardzību
settings.protect_this_branch_desc=Neļauj atzara dzēšanu, kā arī ierobežo izmaiņu iesūtīšanu un sapludināšanu šajā atzarā. settings.protect_this_branch_desc=Neļauj atzara dzēšanu, kā arī ierobežo izmaiņu iesūtīšanu un sapludināšanu šajā atzarā.
settings.protect_disable_push=Atspējot aizgādāšanu settings.protect_disable_push=Atspējot aizgādāšanu
@ -2433,7 +2437,7 @@ settings.protect_merge_whitelist_committers_desc=Atļaut tikai noteiktiem lietot
settings.protect_merge_whitelist_users=Lietotāji, kuri var veikt apvienošanu settings.protect_merge_whitelist_users=Lietotāji, kuri var veikt apvienošanu
settings.protect_merge_whitelist_teams=Komandas, kuras var veikt apvienošanu settings.protect_merge_whitelist_teams=Komandas, kuras var veikt apvienošanu
settings.protect_check_status_contexts=Iespējot stāvokļa pārbaudi settings.protect_check_status_contexts=Iespējot stāvokļa pārbaudi
settings.protect_status_check_patterns=Stāvokļa pārbaudes paraugi settings.protect_status_check_patterns=Stāvokļa pārbaužu paraugi
settings.protect_status_check_patterns_desc=Jāievada paraugi, lai norādītu, kurām stāvokļa pārbaudēm sekmīgi jāizpildās, pirms zari var tikt iekļauti zarā, kas atbilst šai kārtulai. Katrā rindā ir norādāms viens paraugs. Paraugi nevar būt tukši. settings.protect_status_check_patterns_desc=Jāievada paraugi, lai norādītu, kurām stāvokļa pārbaudēm sekmīgi jāizpildās, pirms zari var tikt iekļauti zarā, kas atbilst šai kārtulai. Katrā rindā ir norādāms viens paraugs. Paraugi nevar būt tukši.
settings.protect_check_status_contexts_desc=Pirms apvienošanas ir nepieciešama sekmīga stāvokļa pārbaužu izpilde. Kad iespējots, iesūtījumiem vispirms jābūt aizgādātiem citā zarā, tad pēc stāvokļa pārbaužu sekmīgas izpildes iekļautiem vai aizgādātiem tieši zarā, kas atbilst šai kārtulai. Ja nav atbilstošu kontekstu, pēdējam iesūtījumam jābūt sekmīgam neatkarīgi no konteksta. settings.protect_check_status_contexts_desc=Pirms apvienošanas ir nepieciešama sekmīga stāvokļa pārbaužu izpilde. Kad iespējots, iesūtījumiem vispirms jābūt aizgādātiem citā zarā, tad pēc stāvokļa pārbaužu sekmīgas izpildes iekļautiem vai aizgādātiem tieši zarā, kas atbilst šai kārtulai. Ja nav atbilstošu kontekstu, pēdējam iesūtījumam jābūt sekmīgam neatkarīgi no konteksta.
settings.protect_check_status_contexts_list=Stāvokļa pārbaudes, kas šajā glabātavā atrastas pēdējās nedēļas laikā settings.protect_check_status_contexts_list=Stāvokļa pārbaudes, kas šajā glabātavā atrastas pēdējās nedēļas laikā
@ -2459,11 +2463,11 @@ settings.protect_unprotected_file_patterns=Neaizsargāto datņu paraugs (vairāk
settings.protect_unprotected_file_patterns_desc=Neaizsargātās datnes, kuras ir ļauts izmainīt tiešā veidā, apejot aizgādāšanas ierobežojumu, ja lietotājam ir rakstīšanas piekļuve. Vairāki paraugi ir atdalāmi ar semikolu (";"). Paraugu pierakstu skatīt <a href='%[1]s'>%[2]s</a> dokumentācijā. Piemēri: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>. settings.protect_unprotected_file_patterns_desc=Neaizsargātās datnes, kuras ir ļauts izmainīt tiešā veidā, apejot aizgādāšanas ierobežojumu, ja lietotājam ir rakstīšanas piekļuve. Vairāki paraugi ir atdalāmi ar semikolu (";"). Paraugu pierakstu skatīt <a href='%[1]s'>%[2]s</a> dokumentācijā. Piemēri: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
settings.add_protected_branch=Iespējot aizsargāšanu settings.add_protected_branch=Iespējot aizsargāšanu
settings.delete_protected_branch=Atspējot aizsargāšanu settings.delete_protected_branch=Atspējot aizsargāšanu
settings.update_protect_branch_success=Zara aizsardzības kārtula "%s" tika atjaunināta. settings.update_protect_branch_success=Zara aizsargāšanas kārtula "%s" tika atjaunināta.
settings.remove_protected_branch_success=Zara aizsardzības kārtula "%s" tika noņemta. settings.remove_protected_branch_success=Zara aizsargāšanas kārtula "%s" tika noņemta.
settings.remove_protected_branch_failed=Zara aizsardzības kārtulas "%s" noņemšana neizdevās. settings.remove_protected_branch_failed=Zara aizsargāšanas kārtulas "%s" noņemšana neizdevās.
settings.protected_branch_deletion=Izdzēst zara aizsardzību settings.protected_branch_deletion=Izdzēst zara aizsargāšanu
settings.protected_branch_deletion_desc=Zara aizsardzības atspējošana ļauj lietotājiem ar rakstīšanas atļauju aizgādāt izmaiņas uz zaru. Turpināt? settings.protected_branch_deletion_desc=Zara aizsargāšanas atspējošana ļauj lietotājiem ar rakstīšanas atļauju aizgādāt zarā izmaiņas. Turpināt?
settings.block_rejected_reviews=Liegt apvienošanu, ja izskatīšana ir beigusies ar noraidīšanu settings.block_rejected_reviews=Liegt apvienošanu, ja izskatīšana ir beigusies ar noraidīšanu
settings.block_rejected_reviews_desc=Apvienošana nebūs iespējama, kad oficiālie izskatītāji ir pieprasījuši izmaiņas, pat ja ir pietiekami daudz apstiprinājumu. settings.block_rejected_reviews_desc=Apvienošana nebūs iespējama, kad oficiālie izskatītāji ir pieprasījuši izmaiņas, pat ja ir pietiekami daudz apstiprinājumu.
settings.block_on_official_review_requests=Liegt apvienošanu, ja ir oficiāli izskatīšanas pieprasījumi settings.block_on_official_review_requests=Liegt apvienošanu, ja ir oficiāli izskatīšanas pieprasījumi
@ -2479,7 +2483,7 @@ settings.edit_protected_branch=Labot
settings.protected_branch_required_rule_name=Jānorāda kārtulas nosaukums settings.protected_branch_required_rule_name=Jānorāda kārtulas nosaukums
settings.protected_branch_duplicate_rule_name=Šai zaru kopai jau pastāv kārtula settings.protected_branch_duplicate_rule_name=Šai zaru kopai jau pastāv kārtula
settings.protected_branch_required_approvals_min=Pieprasīto izskatīšanu skaits nevar būt mazāks par nulli. settings.protected_branch_required_approvals_min=Pieprasīto izskatīšanu skaits nevar būt mazāks par nulli.
settings.tags=Tagi settings.tags=Birkas
settings.tags.protection=Birku aizsargāšana settings.tags.protection=Birku aizsargāšana
settings.tags.protection.pattern=Birku paraugs settings.tags.protection.pattern=Birku paraugs
settings.tags.protection.allowed=Atļauts settings.tags.protection.allowed=Atļauts
@ -2601,7 +2605,7 @@ diff.hide_file_tree=Paslēpt datņu koku
releases.desc=Projekta versiju un lejupielāžu pārraudzīšana. releases.desc=Projekta versiju un lejupielāžu pārraudzīšana.
release.releases=Laidieni release.releases=Laidieni
release.detail=Informācija par laidienu release.detail=Informācija par laidienu
release.tags=Tagi release.tags=Birkas
release.new_release=Jauns laidiens release.new_release=Jauns laidiens
release.draft=Melnraksts release.draft=Melnraksts
release.prerelease=Pirmsizlaide release.prerelease=Pirmsizlaide
@ -2843,7 +2847,7 @@ pulls.fast_forward_only_merge_pull_request = Tikai pārlēkšana
settings.federation_apapiurl = Šīs glabātavas federācijas URL. Tas ir jāievieto starpliktuvē un jāielīmē citas glabātavas federācijas iestatījumos kā sekojošas glabātavas URL. settings.federation_apapiurl = Šīs glabātavas federācijas URL. Tas ir jāievieto starpliktuvē un jāielīmē citas glabātavas federācijas iestatījumos kā sekojošas glabātavas URL.
settings.federation_following_repos = Sekojošu glabātavu URL. Atdalīti ar ";", bez atstarpes. settings.federation_following_repos = Sekojošu glabātavu URL. Atdalīti ar ";", bez atstarpes.
settings.add_webhook.invalid_path = Ceļš nedrīkst saturēt daļu, kas ir "." vai "..", vai tukša virkne. Tas nevar sākties vai beigties ar slīpsvītru. settings.add_webhook.invalid_path = Ceļš nedrīkst saturēt daļu, kas ir "." vai "..", vai tukša virkne. Tas nevar sākties vai beigties ar slīpsvītru.
settings.protect_new_rule = Izveidot jaunu zaru aizsardzības kārtulu settings.protect_new_rule = Izveidot jaunu zaru aizsargāšanas kārtulu
settings.sourcehut_builds.secrets_helper = Dot darbam piekļuvi būvēšanas noslēpumiem (nepieciešams nodrošināt SECRETS:RO) settings.sourcehut_builds.secrets_helper = Dot darbam piekļuvi būvēšanas noslēpumiem (nepieciešams nodrošināt SECRETS:RO)
release.asset_external_url = Ārējais URL release.asset_external_url = Ārējais URL
release.add_external_asset = Pievienot ārēju līdzekli release.add_external_asset = Pievienot ārēju līdzekli
@ -2866,6 +2870,8 @@ issues.reaction.alt_add = Pievienot piebildei %[1] reakcijas.
issues.context.menu = Piebildes izvēlne issues.context.menu = Piebildes izvēlne
release.summary_card_alt = Laidiena "%s" apkopojuma kartīte glabātavā %s release.summary_card_alt = Laidiena "%s" apkopojuma kartīte glabātavā %s
editor.commit_email = Iesūtījuma e-pasta adrese
[graphs] [graphs]
component_loading=Ielādē %s... component_loading=Ielādē %s...
component_loading_failed=Nevarēja ielādēt %s component_loading_failed=Nevarēja ielādēt %s
@ -3039,7 +3045,7 @@ dashboard.task.unknown=Nezināms uzdevums: %[1]s
dashboard.cron.started=Uzsākts Cron: %[1]s dashboard.cron.started=Uzsākts Cron: %[1]s
dashboard.cron.process=Cron: %[1]s dashboard.cron.process=Cron: %[1]s
dashboard.cron.cancelled=Cron: %[1]s atcelts: %[3]s dashboard.cron.cancelled=Cron: %[1]s atcelts: %[3]s
dashboard.cron.error=Kļūda Cron: %s: %[3]s dashboard.cron.error=Cron kļūda: %s: %[3]s
dashboard.cron.finished=Cron: %[1]s pabeigts dashboard.cron.finished=Cron: %[1]s pabeigts
dashboard.delete_inactive_accounts=Izdzēst visus neaktivētos kontus dashboard.delete_inactive_accounts=Izdzēst visus neaktivētos kontus
dashboard.delete_inactive_accounts.started=Ir uzsākts visu neaktivēto kontu izdzēšanas uzdevums. dashboard.delete_inactive_accounts.started=Ir uzsākts visu neaktivēto kontu izdzēšanas uzdevums.
@ -3113,7 +3119,7 @@ users.activated=Aktivēts
users.admin=Pārvaldītājs users.admin=Pārvaldītājs
users.restricted=Ierobežots users.restricted=Ierobežots
users.reserved=Aizņemts users.reserved=Aizņemts
users.bot=Bots users.bot=Robotprogrammatūra
users.remote=Attāls users.remote=Attāls
users.2fa=2FA users.2fa=2FA
users.repos=Glabātavas users.repos=Glabātavas
@ -3164,7 +3170,7 @@ users.list_status_filter.not_2fa_enabled=2FA atspējota
users.details=Lietotāja informācija users.details=Lietotāja informācija
emails.email_manage_panel=Pārvaldīt lietotāju e-pasta adreses emails.email_manage_panel=Pārvaldīt lietotāju e-pasta adreses
emails.primary=Primārais emails.primary=Galvenā
emails.activated=Aktivēta emails.activated=Aktivēta
emails.filter_sort.email=E-pasts emails.filter_sort.email=E-pasts
emails.filter_sort.email_reverse=E-pasta adrese (pretēji alfabētiski) emails.filter_sort.email_reverse=E-pasta adrese (pretēji alfabētiski)
@ -3237,7 +3243,7 @@ auths.bind_password=Saistīšanas parole
auths.user_base=Lietotāju meklēšanas pamatnosacījumi auths.user_base=Lietotāju meklēšanas pamatnosacījumi
auths.user_dn=Lietotāja DN auths.user_dn=Lietotāja DN
auths.attribute_username=Lietotājvārda atribūts auths.attribute_username=Lietotājvārda atribūts
auths.attribute_username_placeholder=Atstāt tukšu, lai izmantotu Gitea ievadīto lietotājvārdu. auths.attribute_username_placeholder=Atstāt tukšu, lai izmantotu Forgejo ievadīto lietotājvārdu.
auths.attribute_name=Vārda atribūts auths.attribute_name=Vārda atribūts
auths.attribute_surname=Uzvārda atribūts auths.attribute_surname=Uzvārda atribūts
auths.attribute_mail=E-pasta atribūts auths.attribute_mail=E-pasta atribūts
@ -3290,7 +3296,7 @@ auths.oauth2_required_claim_name=Nepieciešamās prasības nosaukums
auths.oauth2_required_claim_name_helper=Šis nosaukums ir iestatāms, lai ierobežotu pieteikšanos no šī avota lietotājiem, kuriem ir prasība ar šādu nosaukumu auths.oauth2_required_claim_name_helper=Šis nosaukums ir iestatāms, lai ierobežotu pieteikšanos no šī avota lietotājiem, kuriem ir prasība ar šādu nosaukumu
auths.oauth2_required_claim_value=Nepieciešamās prasības vērtība auths.oauth2_required_claim_value=Nepieciešamās prasības vērtība
auths.oauth2_required_claim_value_helper=Šī vērtība ir iestatāma, lai ierobežotu pieteikšanos no šī avota lietotājiem, kuriem ir prasība ar šādu nosaukumu un vērtību auths.oauth2_required_claim_value_helper=Šī vērtība ir iestatāma, lai ierobežotu pieteikšanos no šī avota lietotājiem, kuriem ir prasība ar šādu nosaukumu un vērtību
auths.oauth2_group_claim_name=Prasības nosaukums, kas nodrošina grupu nosaukumus šim avotam. (Neobligāts) auths.oauth2_group_claim_name=Prasības nosaukums, kas šim avotam nodrošina grupu nosaukumus. (Pēc izvēles)
auths.oauth2_admin_group=Kopas prasības vērtība pārvaldītājiem. (Izvēles - nepieciešams augstāk esošais prasības nosaukums) auths.oauth2_admin_group=Kopas prasības vērtība pārvaldītājiem. (Izvēles - nepieciešams augstāk esošais prasības nosaukums)
auths.oauth2_restricted_group=Grupas prasības vērtība ierobežotajiem lietotājiem. (Izvēles - nepieciešams augstāk esošais prasības nosaukums) auths.oauth2_restricted_group=Grupas prasības vērtība ierobežotajiem lietotājiem. (Izvēles - nepieciešams augstāk esošais prasības nosaukums)
auths.oauth2_map_group_to_team=Sasaistīt pieprasītās kopas ar apvienības komandām. (Izvēles - nepieciešams augstāk esošais prasības nosaukums) auths.oauth2_map_group_to_team=Sasaistīt pieprasītās kopas ar apvienības komandām. (Izvēles - nepieciešams augstāk esošais prasības nosaukums)
@ -3308,7 +3314,7 @@ auths.sspi_default_language=Lietotāju noklusējuma valoda
auths.sspi_default_language_helper=Noklusējuma valoda lietotājiem, kurus automātiski izveido SSPI autentificēšanās veids. Atstāt tukšu, ja ir vēlams, lai valoda tiktu noteikta automātiski. auths.sspi_default_language_helper=Noklusējuma valoda lietotājiem, kurus automātiski izveido SSPI autentificēšanās veids. Atstāt tukšu, ja ir vēlams, lai valoda tiktu noteikta automātiski.
auths.tips=Padomi auths.tips=Padomi
auths.tips.oauth2.general=OAuth2 autentificēšanās auths.tips.oauth2.general=OAuth2 autentificēšanās
auths.tips.oauth2.general.tip=Kad tiek reģistrēta jauna OAuth2 autentifikācija, atzvanīšanas/pārvirzīšanas URL vajadzētu būt: auths.tips.oauth2.general.tip=Kad tiek reģistrēta jauna OAuth2 autentificēšana, atzvanīšanas/pārvirzīšanas URL vajadzētu būt:
auths.tip.oauth2_provider=OAuth2 nodrošinātājs auths.tip.oauth2_provider=OAuth2 nodrošinātājs
auths.tip.bitbucket=Jāizveido jauns OAuth patērētājs %s un jāpievieno atļauja "Account" - "Read" auths.tip.bitbucket=Jāizveido jauns OAuth patērētājs %s un jāpievieno atļauja "Account" - "Read"
auths.tip.nextcloud=Reģistrēt jaunu OAuth patērētāju savā serverī var izvēlnē "Iestatījumi -> Drošība -> OAuth 2.0 klients" auths.tip.nextcloud=Reģistrēt jaunu OAuth patērētāju savā serverī var izvēlnē "Iestatījumi -> Drošība -> OAuth 2.0 klients"
@ -3320,7 +3326,7 @@ auths.tip.google_plus=OAuth2 klienta piekļuves dati ir iegūstami Google API ko
auths.tip.openid_connect=Jāizmanto OpenID savienošanās atklāšanas URL (<server>/.well-known/openid-configuration), lai norādītu galapunktus auths.tip.openid_connect=Jāizmanto OpenID savienošanās atklāšanas URL (<server>/.well-known/openid-configuration), lai norādītu galapunktus
auths.tip.twitter=Jādodas uz %s, jāizveido lietotne un jānodrošina, ka iespēja "Allow this application to be used to Sign in with Twitter" ir iespējota auths.tip.twitter=Jādodas uz %s, jāizveido lietotne un jānodrošina, ka iespēja "Allow this application to be used to Sign in with Twitter" ir iespējota
auths.tip.discord=Jāizveido jauna lietotne %s auths.tip.discord=Jāizveido jauna lietotne %s
auths.tip.gitea=Pievienot jaunu OAuth2 lietojumprogrammu. Dokumentācija ir pieejama %s auths.tip.gitea=Pievienot jaunu OAuth2 lietotni. Norādes ir atrodamas %s
auths.tip.yandex=%s jāizveido jauna lietotne. Sadaļā "Yandex.Passport API" jāatlasa šīs atļaujas: "Access to email address", "Access to user avatar" un "Access to username, first name and surname, gender" auths.tip.yandex=%s jāizveido jauna lietotne. Sadaļā "Yandex.Passport API" jāatlasa šīs atļaujas: "Access to email address", "Access to user avatar" un "Access to username, first name and surname, gender"
auths.tip.mastodon=Jāievada pielāgota Mastodon servera URL, ar kuru vēlies autentificēties (vai jāizmanto noklusējuma) auths.tip.mastodon=Jāievada pielāgota Mastodon servera URL, ar kuru vēlies autentificēties (vai jāizmanto noklusējuma)
auths.edit=Labot autentificēšanas avotu auths.edit=Labot autentificēšanas avotu
@ -3347,7 +3353,7 @@ config.custom_file_root_path=Pielāgoto datņu pamata ceļš
config.domain=Servera domēna vārds config.domain=Servera domēna vārds
config.offline_mode=Bezsaistes režīms config.offline_mode=Bezsaistes režīms
config.disable_router_log=Atspējot maršrutētāja žurnālu config.disable_router_log=Atspējot maršrutētāja žurnālu
config.run_user=Lietotājs, ar kuru palaists config.run_user=Lietotājs, ar kuru palaist
config.run_mode=Palaišanas veids config.run_mode=Palaišanas veids
config.git_version=Git versija config.git_version=Git versija
config.app_data_path=Lietotnes datu ceļš config.app_data_path=Lietotnes datu ceļš
@ -3605,7 +3611,7 @@ future=nākotnē
1y=1 gada 1y=1 gada
seconds=%d sekundēm seconds=%d sekundēm
minutes=%d minūtēm minutes=%d minūtēm
hours=%d stundām hours=%d stundās
days=%d dienas days=%d dienas
weeks=%d nedēļām weeks=%d nedēļām
months=%d mēnešiem months=%d mēnešiem
@ -3655,7 +3661,7 @@ desc=Pārvaldīt glabātavas pakotnes.
empty=Pašlaik šeit nav nevienas pakotnes. empty=Pašlaik šeit nav nevienas pakotnes.
empty.documentation=Papildu informācija par pakotņu reģistru ir pieejama <a target="_blank" rel="noopener noreferrer" href="%s">dokumentācijā</a>. empty.documentation=Papildu informācija par pakotņu reģistru ir pieejama <a target="_blank" rel="noopener noreferrer" href="%s">dokumentācijā</a>.
empty.repo=Šeit netiek parādīta augšupielādēta pakotne? Jādodas uz <a href="%[1]s">pakotņu iestatījumiem</a> un jāsasaista tā ar šo glabātavu. empty.repo=Šeit netiek parādīta augšupielādēta pakotne? Jādodas uz <a href="%[1]s">pakotņu iestatījumiem</a> un jāsasaista tā ar šo glabātavu.
registry.documentation=Vairāk informācija par %s reģistru ir pieejama <a target="_blank" rel="noopener noreferrer" href="%s">dokumentācijā</a>. registry.documentation=Vairāk informācijas par %s reģistru ir <a target="_blank" rel="noopener noreferrer" href="%s">dokumentācijā</a>.
filter.type=Veids filter.type=Veids
filter.type.all=Visas filter.type.all=Visas
filter.no_result=Pēc norādītajiem kritērijiem nekas netika atrasts. filter.no_result=Pēc norādītajiem kritērijiem nekas netika atrasts.
@ -3663,7 +3669,7 @@ filter.container.tagged=Ar atzīmi
filter.container.untagged=Bez atzīmes filter.container.untagged=Bez atzīmes
published_by=Publicēja <a href="%[2]s">%[3]s</a> %[1]s published_by=Publicēja <a href="%[2]s">%[3]s</a> %[1]s
published_by_in=<a href="%[2]s">%[3]s</a> laida klajā %[1]s <a href="%[4]s"><strong>%[5]s</strong></a> published_by_in=<a href="%[2]s">%[3]s</a> laida klajā %[1]s <a href="%[4]s"><strong>%[5]s</strong></a>
installation=Instalācija installation=Uzstādīšana
about=Par šo pakotni about=Par šo pakotni
requirements=Prasības requirements=Prasības
dependencies=Atkarības dependencies=Atkarības
@ -3696,7 +3702,7 @@ composer.install=Lai uzstādīt pakotni ar Composer, jāizpilda šī komanda:
composer.dependencies=Atkarības composer.dependencies=Atkarības
composer.dependencies.development=Izstrādes atkarības composer.dependencies.development=Izstrādes atkarības
conan.details.repository=Glabātava conan.details.repository=Glabātava
conan.registry=Šis reģistrs ir uzstādāms komandrindā: conan.registry=Šis reģistra uzstādīšana komandrindā:
conan.install=Lai uzstādītu pakotni ar Conan, jāizpilda šī komanda: conan.install=Lai uzstādītu pakotni ar Conan, jāizpilda šī komanda:
conda.registry=Izveidot šo reģistru kā Conda glabātavu datnē <code>.condarc</code>: conda.registry=Izveidot šo reģistru kā Conda glabātavu datnē <code>.condarc</code>:
conda.install=Lai uzstādītu pakotni ar Conda, jāizpilda šī komanda: conda.install=Lai uzstādītu pakotni ar Conda, jāizpilda šī komanda:
@ -3711,7 +3717,7 @@ container.labels.key=Atslēga
container.labels.value=Vērtība container.labels.value=Vērtība
cran.registry=Iestatīt šo reģistru datnē <code>Rprofile.site</code>: cran.registry=Iestatīt šo reģistru datnē <code>Rprofile.site</code>:
cran.install=Lai uzstādītu pakotni, ir jāizpilda šī komanda: cran.install=Lai uzstādītu pakotni, ir jāizpilda šī komanda:
debian.registry=Šis reģistrs ir uzstādāms komandrindā: debian.registry=Šis reģistra uzstādīšana komandrindā:
debian.registry.info=No zemāk esošā saraksta jāizvēlas $distribution un $component. debian.registry.info=No zemāk esošā saraksta jāizvēlas $distribution un $component.
debian.install=Lai uzstādītu pakotni, ir jāizpilda šī komanda: debian.install=Lai uzstādītu pakotni, ir jāizpilda šī komanda:
debian.repository=Glabātavas informācija debian.repository=Glabātavas informācija
@ -3719,14 +3725,14 @@ debian.repository.distributions=Distribūcijas
debian.repository.components=Komponentes debian.repository.components=Komponentes
debian.repository.architectures=Arhitektūras debian.repository.architectures=Arhitektūras
generic.download=Lejupielādēt pakotni, izmantojot, komandrindu: generic.download=Lejupielādēt pakotni, izmantojot, komandrindu:
go.install=Instalēt pakotni no komandrindas: go.install=Uzstādīt pakotni komandrindā:
helm.registry=Šis reģistrs ir uzstādāms komandrindā: helm.registry=Šī reģistra uzstādīšana komandrindā:
helm.install=Lai instalētu pakotni, nepieciešams izpildīt sekojošu komandu: helm.install=Lai uzstādītu pakotni, ir jāizpilda šī komanda:
maven.registry=Iestatīt šo reģistru sava projekta datnē <code>pom.xml</code>: maven.registry=Iestatīt šo reģistru sava projekta datnē <code>pom.xml</code>:
maven.install=Lai izmantotu pakotni, datnes <code>pom.xml</code> sadaļā <code>dependencies</code> jāievieto šīs rindas: maven.install=Lai izmantotu pakotni, datnes <code>pom.xml</code> sadaļā <code>dependencies</code> jāievieto šīs rindas:
maven.install2=Jāizpilda komandrindā: maven.install2=Jāizpilda komandrindā:
maven.download=Jāizpilda komandrindā, lai lejupielādētu šo atkarību: maven.download=Jāizpilda komandrindā, lai lejupielādētu šo atkarību:
nuget.registry=Šis reģistrs ir uzstādāms komandrindā: nuget.registry=Šī reģistra uzstādīšana komandrindā:
nuget.install=Lai uzstādītu pakotni ar NuGet, jāizpilda šī komanda: nuget.install=Lai uzstādītu pakotni ar NuGet, jāizpilda šī komanda:
nuget.dependency.framework=Mērķa ietvars nuget.dependency.framework=Mērķa ietvars
npm.registry=Iestatīt šo reģistru sava projekta datnē <code>.npmrc</code>: npm.registry=Iestatīt šo reģistru sava projekta datnē <code>.npmrc</code>:
@ -3740,7 +3746,7 @@ npm.details.tag=Tags
pub.install=Lai uzstādītu pakotni ar Dart, jāizpilda šī komanda: pub.install=Lai uzstādītu pakotni ar Dart, jāizpilda šī komanda:
pypi.requires=Nepieciešams Python pypi.requires=Nepieciešams Python
pypi.install=Lai uzstādītu pakotni ar pip, jāizpilda šī komanda: pypi.install=Lai uzstādītu pakotni ar pip, jāizpilda šī komanda:
rpm.registry=Šis reģistrs ir uzstādāms komandrindā: rpm.registry=Šī reģistra uzstādīšana komandrindā:
rpm.distros.redhat=uz RedHat balstītās operētājsistēmās rpm.distros.redhat=uz RedHat balstītās operētājsistēmās
rpm.distros.suse=uz SUSE balstītās operētājsistēmās rpm.distros.suse=uz SUSE balstītās operētājsistēmās
rpm.install=Lai uzstādītu pakotni, ir jāizpilda šī komanda: rpm.install=Lai uzstādītu pakotni, ir jāizpilda šī komanda:
@ -3752,7 +3758,7 @@ rubygems.dependencies.runtime=Izpildlaika atkarības
rubygems.dependencies.development=Izstrādes atkarības rubygems.dependencies.development=Izstrādes atkarības
rubygems.required.ruby=Nepieciešamā Ruby versija rubygems.required.ruby=Nepieciešamā Ruby versija
rubygems.required.rubygems=Nepieciešamā RubyGem versija rubygems.required.rubygems=Nepieciešamā RubyGem versija
swift.registry=Šis reģistrs ir uzstādāms komandrindā: swift.registry=Šī reģistra uzstādīšana komandrindā:
swift.install=Pakotne jāpievieno datnē <code>Package.swift</code>: swift.install=Pakotne jāpievieno datnē <code>Package.swift</code>:
swift.install2=vai jāpievieno tā Gemfile: swift.install2=vai jāpievieno tā Gemfile:
vagrant.install=Lai pievienotu Vagrant kasti, jāizpilda šī komanda: vagrant.install=Lai pievienotu Vagrant kasti, jāizpilda šī komanda:
@ -3762,7 +3768,7 @@ settings.link.select=Atlasīt glabātavu
settings.link.button=Atjaunināt glabātavas saiti settings.link.button=Atjaunināt glabātavas saiti
settings.link.success=Glabātavas saite tika sekmīgi atjaunināta. settings.link.success=Glabātavas saite tika sekmīgi atjaunināta.
settings.link.error=Neizdevās atjaunināt glabātavas saiti. settings.link.error=Neizdevās atjaunināt glabātavas saiti.
settings.delete=Dzēst pakotni settings.delete=Izdzēst pakotni
settings.delete.description=Pakotne tiks neatgriezeniski izdzēsta. settings.delete.description=Pakotne tiks neatgriezeniski izdzēsta.
settings.delete.notice=Tiks izdzēsta pakotne %s (%s). Šī darbība ir neatgriezeniska. Tiešām turpināt? settings.delete.notice=Tiks izdzēsta pakotne %s (%s). Šī darbība ir neatgriezeniska. Tiešām turpināt?
settings.delete.success=Pakotne tika izdzēsta. settings.delete.success=Pakotne tika izdzēsta.
@ -3888,14 +3894,14 @@ runners.reset_registration_token=Atiestatīt reģistrācijas pilnvaru
runners.reset_registration_token_success=Izpildītāja reģistrācijas pilnvara tika sekmīgi atiestatīta runners.reset_registration_token_success=Izpildītāja reģistrācijas pilnvara tika sekmīgi atiestatīta
runs.all_workflows=Visas darbplūsmas runs.all_workflows=Visas darbplūsmas
runs.commit=Iesūtījums runs.commit=Iesūtījumu
runs.scheduled=Ieplānots runs.scheduled=Ieplānots
runs.pushed_by=aizgādāja runs.pushed_by=aizgādāja
runs.invalid_workflow_helper=Darbplūsmas konfigurācijas datne ir nederīga. Lūgums pārbaudīt konfigurācijas datni: %s runs.invalid_workflow_helper=Darbplūsmas konfigurācijas datne ir nederīga. Lūgums pārbaudīt konfigurācijas datni: %s
runs.no_matching_online_runner_helper=Nav pieejami izpildītāji, kas atbilstu šai iezīmei: %s runs.no_matching_online_runner_helper=Nav tiešsaistē esošu izpildītāju, kas atbilstu iezīmei: %s
runs.actor=Aktors runs.actor=Izraisītājs
runs.status=Statuss runs.status=Statuss
runs.actors_no_select=Visi aktori runs.actors_no_select=Visi izraisītāji
runs.status_no_select=Visi stāvokļi runs.status_no_select=Visi stāvokļi
runs.no_results=Netika atrasts nekas atbilstošs. runs.no_results=Netika atrasts nekas atbilstošs.
runs.no_workflows=Vēl nav nevienas darbplūsmas. runs.no_workflows=Vēl nav nevienas darbplūsmas.
@ -3915,7 +3921,7 @@ variables.management=Pārvaldīt mainīgos
variables.creation=Pievienot mainīgo variables.creation=Pievienot mainīgo
variables.none=Vēl nav neviena mainīgā. variables.none=Vēl nav neviena mainīgā.
variables.deletion=Noņemt mainīgo variables.deletion=Noņemt mainīgo
variables.deletion.description=Mainīgā noņemšana ir neatgriezeniska un nav atsaucama. Vai turpināt? variables.deletion.description=Mainīgā noņemšana ir neatgriezeniska un nav atsaucama. Turpināt?
variables.description=Mainīgie tiks padoti noteiktām darbībām, un citādāk tos nevar nolasīt. variables.description=Mainīgie tiks padoti noteiktām darbībām, un citādāk tos nevar nolasīt.
variables.id_not_exist=Mainīgais ar identifikatoru %d nepastāv. variables.id_not_exist=Mainīgais ar identifikatoru %d nepastāv.
variables.edit=Labot mainīgo variables.edit=Labot mainīgo
@ -3929,7 +3935,7 @@ variables.update.success=Mainīgais tika labots.
runs.workflow = Darbplūsma runs.workflow = Darbplūsma
runs.no_job_without_needs = Darbplūsmā ir jābūt vismaz vienam darbam bez atkarībām. runs.no_job_without_needs = Darbplūsmā ir jābūt vismaz vienam darbam bez atkarībām.
runs.no_job = Darbplūsmā ir jābūt vismaz vienam darbam runs.no_job = Darbplūsmā ir jābūt vismaz vienam darbam
runs.no_workflows.help_write_access = Nav skaidrs, kā sākt izmantot Forgejo Actions? Jāieskatās <a target="_blank" rel="noopener noreferrer" href="%s">ātro ievadu lietotāja dokumentācijā</a>, lai uzrakstītu savu pirmo darbplūsmu, tad <a target="_blank" rel="noopener noreferrer" href="%s">jāiestata Forgejo izpildītājs</a>, lai izpildītu savus darbus. runs.no_workflows.help_write_access = Nav skaidrs, kā sākt izmantot Forgejo Actions? Jāieskatās <a target="_blank" rel="noopener noreferrer" href="%s">ātrajā ievadā lietotāja dokumentācijā</a>, lai uzrakstītu savu pirmo darbplūsmu, tad <a target="_blank" rel="noopener noreferrer" href="%s">jāiestata Forgejo izpildītājs</a>, lai izpildītu savus darbus.
runs.no_workflows.help_no_write_access = Lai uzzinātu par Forgejo Acties, jāieskatās <a target="_blank" rel="noopener noreferrer" href="%s">dokumentācijā</a>. runs.no_workflows.help_no_write_access = Lai uzzinātu par Forgejo Acties, jāieskatās <a target="_blank" rel="noopener noreferrer" href="%s">dokumentācijā</a>.
runs.expire_log_message = Žurnāli tika iztīrīti, jo tie bija pārāk veci. runs.expire_log_message = Žurnāli tika iztīrīti, jo tie bija pārāk veci.
workflow.dispatch.trigger_found = Šai darbplūsmai ir <c>workflow_dispatch</c> notikuma izraisītājs. workflow.dispatch.trigger_found = Šai darbplūsmai ir <c>workflow_dispatch</c> notikuma izraisītājs.

View file

@ -1,5 +1,5 @@
[common] [common]
enable_javascript = Denne nettsiden behøver JavaScript. enable_javascript = Denne nettsiden krever JavaScript.
toc = Innholdsfortegnelse toc = Innholdsfortegnelse
licenses = Lisenser licenses = Lisenser
return_to_forgejo = Tilbake til Forgejo return_to_forgejo = Tilbake til Forgejo
@ -128,6 +128,14 @@ webauthn_error_unable_to_process = Tjeneren kunne ikke behandle forespørselen d
webauthn_error_empty = Du må gi nøkkelen et navn. webauthn_error_empty = Du må gi nøkkelen et navn.
copy_path = Kopier sti copy_path = Kopier sti
toggle_menu = Åpne/lukke meny
twofa_scratch = To-faktor skrapekode
webauthn_press_button = Vennligst trykk på knappen på sikkerhetsnøkkelen…
webauthn_error_duplicated = Sikkerhetsnøkkelen er ikke tillatt for denne forespørselen. Vennligst sørg for at nøkkelen ikke allerede er registrert.
webauthn_error_timeout = Et tidsavbrudd oppsto før nøkkelen din kunne leses. Vennligst last inn siden på nytt og prøv igjen.
new_fork = Ny fork av repository
collaborative = Samarbeidende
[search] [search]
search = Søk... search = Søk...
type_tooltip = Søketype type_tooltip = Søketype

View file

@ -511,6 +511,8 @@ PayloadUrl = Ladung-URL
visit_rate_limit = Frömd-Togriep hett Togrieps-Begrenz troffen. visit_rate_limit = Frömd-Togriep hett Togrieps-Begrenz troffen.
2fa_auth_required = Frömd-Togriep bruukt Twee-Faktooren-Anmellen. 2fa_auth_required = Frömd-Togriep bruukt Twee-Faktooren-Anmellen.
email_domain_is_not_allowed = De Domään vun de Bruker-E-Mail-Adress <b>%s</b> passt nich mit EMAIL_DOMAIN_ALLOWLIST of EMAIL_DOMAIN_BLOCKLIST. Wees wiss, dat du de E-Mail-Adress recht sett hest.
[user] [user]
change_avatar = Änner dien Kontobill … change_avatar = Änner dien Kontobill …
joined_on = Am %s bitreden joined_on = Am %s bitreden
@ -2566,6 +2568,8 @@ issues.reaction.alt_remove = De %[1]s-Reageren vun de Kommentaar wegdoon.
issues.context.menu = Kommentaar-Menü issues.context.menu = Kommentaar-Menü
release.summary_card_alt = Tosamenfatens-Kaart vun eenem Publizeren mit de Naam »%s« im Repositorium %s release.summary_card_alt = Tosamenfatens-Kaart vun eenem Publizeren mit de Naam »%s« im Repositorium %s
editor.commit_email = Kommitterens-E-Mail
[repo.permissions] [repo.permissions]
code.read = <b>Lesen:</b> De Quelltext vun deesem Repositorium ankieken un klonen. code.read = <b>Lesen:</b> De Quelltext vun deesem Repositorium ankieken un klonen.
code.write = <b>Schrieven:</b> Schuuv to de Repositorium un maak Twiegen un Markens. code.write = <b>Schrieven:</b> Schuuv to de Repositorium un maak Twiegen un Markens.

View file

@ -234,7 +234,7 @@ install_desc = Draai gewoon <a target="_blank" rel="noopener noreferrer" href="%
[install] [install]
install=Installatie install=Installatie
title=Initiële configuratie title=Initiële configuratie
docker_helper=Als je gitea draait in Docker, Lees eerst de <a target="_blank" rel="noopener noreferrer" href="%s">documentatie</a> voordat je een instelling aanpast. docker_helper=Als je Forgejo draait in Docker, Lees eerst de <a target="_blank" rel="noopener noreferrer" href="%s">documentatie</a> voordat je een instelling aanpast.
require_db_desc=Forgejo vereist MySQL, PostgreSQL, SQLite3 of TiDB (MySQL protocol). require_db_desc=Forgejo vereist MySQL, PostgreSQL, SQLite3 of TiDB (MySQL protocol).
db_title=Database-instellingen db_title=Database-instellingen
db_type=Database-type db_type=Database-type
@ -683,6 +683,8 @@ AccessToken = Toegangstoken
Pronouns = Voornaamwoorden Pronouns = Voornaamwoorden
email_domain_is_not_allowed = Het domein van het e-mailadres van de gebruiker <b>%s</b> is in strijd met EMAIL_DOMAIN_ALLOWLIST of EMAIL_DOMAIN_BLOCKLIST. Controleer of u het e-mailadres correct hebt ingesteld.
[user] [user]
change_avatar=Wijzig je profielfoto… change_avatar=Wijzig je profielfoto…
repositories=repositories repositories=repositories
@ -1205,7 +1207,7 @@ migrate.migrating_failed_no_addr=Migratie is mislukt.
migrate.github.description=Migreer gegevens van github.com of GitHub Enterprise server. migrate.github.description=Migreer gegevens van github.com of GitHub Enterprise server.
migrate.git.description=Migreer een repositorie van elke Git service. migrate.git.description=Migreer een repositorie van elke Git service.
migrate.gitlab.description=Gegevens migreren van gitlab.com of andere GitLab-instanties. migrate.gitlab.description=Gegevens migreren van gitlab.com of andere GitLab-instanties.
migrate.gitea.description=Gegevens overzetten van gitea.com of andere Gitea/Forgejo instanties. migrate.gitea.description=Gegevens overzetten van gitea.com of andere Gitea instanties.
migrate.gogs.description=Gegevens overzetten van notabug.org of andere Gogs instanties. migrate.gogs.description=Gegevens overzetten van notabug.org of andere Gogs instanties.
migrate.onedev.description=Gegevens overzetten van code.onedev.io of andere OneDev instanties. migrate.onedev.description=Gegevens overzetten van code.onedev.io of andere OneDev instanties.
migrate.codebase.description=Gegevens migreren van codebasehq.com. migrate.codebase.description=Gegevens migreren van codebasehq.com.
@ -1283,6 +1285,7 @@ view_git_blame=Bekijk git blame
video_not_supported_in_browser=Uw browser ondersteunt de HTML5 "video" element niet. video_not_supported_in_browser=Uw browser ondersteunt de HTML5 "video" element niet.
audio_not_supported_in_browser=Uw browser ondersteunt de HTML5 "audio" element niet. audio_not_supported_in_browser=Uw browser ondersteunt de HTML5 "audio" element niet.
stored_lfs=Opgeslagen met Git LFS stored_lfs=Opgeslagen met Git LFS
stored_annex=Opgeslagen met Git Annex
symbolic_link=Symbolische link symbolic_link=Symbolische link
commit_graph=Commit grafiek commit_graph=Commit grafiek
commit_graph.select=Selecteer branches commit_graph.select=Selecteer branches
@ -1301,6 +1304,7 @@ editor.upload_file=Upload bestand
editor.edit_file=Bewerk bestand editor.edit_file=Bewerk bestand
editor.preview_changes=Voorbeeld tonen editor.preview_changes=Voorbeeld tonen
editor.cannot_edit_lfs_files=LFS-bestanden kunnen niet worden bewerkt in de webinterface. editor.cannot_edit_lfs_files=LFS-bestanden kunnen niet worden bewerkt in de webinterface.
editor.cannot_edit_annex_files=Annex-bestanden kunnen niet worden bewerkt in de webinterface.
editor.cannot_edit_non_text_files=Binaire bestanden kunnen niet worden bewerkt in de webinterface. editor.cannot_edit_non_text_files=Binaire bestanden kunnen niet worden bewerkt in de webinterface.
editor.edit_this_file=Bewerk bestand editor.edit_this_file=Bewerk bestand
editor.this_file_locked=Bestand is vergrendeld editor.this_file_locked=Bestand is vergrendeld
@ -2868,6 +2872,8 @@ issues.reaction.alt_add = Voeg %[1]s reactie toe aan commentaar.
issues.context.menu = Commentaar menu issues.context.menu = Commentaar menu
release.summary_card_alt = Samenvattende kaart van een release met de titel "%s" in repository %s release.summary_card_alt = Samenvattende kaart van een release met de titel "%s" in repository %s
editor.commit_email = Commit e-mail
[graphs] [graphs]
component_loading_info = Dit kan even duren… component_loading_info = Dit kan even duren…
component_failed_to_load = Er is een onverwachte fout opgetreden. component_failed_to_load = Er is een onverwachte fout opgetreden.
@ -3085,7 +3091,7 @@ dashboard.gc_times=GC verwerkingen
dashboard.delete_old_system_notices=Verwijder alle oude systeemmededelingen uit de database dashboard.delete_old_system_notices=Verwijder alle oude systeemmededelingen uit de database
users.user_manage_panel=Gebruikersaccounts beheren users.user_manage_panel=Gebruikersaccounts beheren
users.new_account=Nieuw account aanmaken users.new_account=Gebruikersaccount aanmaken
users.name=Gebruikersnaam users.name=Gebruikersnaam
users.full_name=Volledige naam users.full_name=Volledige naam
users.activated=Geactiveerd users.activated=Geactiveerd

File diff suppressed because it is too large Load diff

View file

@ -682,6 +682,8 @@ Description = Descrição
unset_password = O usuário de login não definiu a senha. unset_password = O usuário de login não definiu a senha.
email_domain_is_not_allowed = O domínio do endereço de email da conta <b>%s</b> está em conflito com EMAIL_DOMAIN_ALLOWLIST ou EMAIL_DOMAIN_BLOCKLIST. Certifique-se de que você colocou o endereço de email correto.
[user] [user]
change_avatar=Altere seu avatar... change_avatar=Altere seu avatar...
joined_on=Inscreveu-se em %s joined_on=Inscreveu-se em %s
@ -1220,7 +1222,7 @@ migrate.migrating_failed_no_addr=A migração falhou.
migrate.github.description=Migre dados do servidor github.com ou GitHub Enterprise. migrate.github.description=Migre dados do servidor github.com ou GitHub Enterprise.
migrate.git.description=Migrar um repositório somente de qualquer serviço Git. migrate.git.description=Migrar um repositório somente de qualquer serviço Git.
migrate.gitlab.description=Migrar dados de gitlab.com ou de outras instâncias do GitLab. migrate.gitlab.description=Migrar dados de gitlab.com ou de outras instâncias do GitLab.
migrate.gitea.description=Migrar dados de gitea.com ou de outras instâncias do Gitea/Forgejo. migrate.gitea.description=Migrar dados de gitea.com ou de outras instâncias do Gitea.
migrate.gogs.description=Migrar dados de notabug.org ou de outras instâncias do Gogs. migrate.gogs.description=Migrar dados de notabug.org ou de outras instâncias do Gogs.
migrate.onedev.description=Migrar dados de code.onedev.io ou de outras instâncias do OneDev. migrate.onedev.description=Migrar dados de code.onedev.io ou de outras instâncias do OneDev.
migrate.codebase.description=Migrar dados de codebasehq.com. migrate.codebase.description=Migrar dados de codebasehq.com.
@ -1308,6 +1310,7 @@ view_git_blame=Ver git blame
video_not_supported_in_browser=Seu navegador não tem suporte para a tag "video" do HTML5. video_not_supported_in_browser=Seu navegador não tem suporte para a tag "video" do HTML5.
audio_not_supported_in_browser=Seu navegador não tem suporte para a tag "audio" do HTML5. audio_not_supported_in_browser=Seu navegador não tem suporte para a tag "audio" do HTML5.
stored_lfs=Armazenado com Git LFS stored_lfs=Armazenado com Git LFS
stored_annex=Armazenado com Git Annex
symbolic_link=Link simbólico symbolic_link=Link simbólico
executable_file=Arquivo executável executable_file=Arquivo executável
commit_graph=Gráfico de commits commit_graph=Gráfico de commits
@ -1331,6 +1334,7 @@ editor.upload_file=Enviar arquivo
editor.edit_file=Editar arquivo editor.edit_file=Editar arquivo
editor.preview_changes=Pré-visualizar alterações editor.preview_changes=Pré-visualizar alterações
editor.cannot_edit_lfs_files=Arquivos LFS não podem ser editados na interface web. editor.cannot_edit_lfs_files=Arquivos LFS não podem ser editados na interface web.
editor.cannot_edit_annex_files=Arquivos Annex não podem ser editados na interface web.
editor.cannot_edit_non_text_files=Arquivos binários não podem ser editados na interface web. editor.cannot_edit_non_text_files=Arquivos binários não podem ser editados na interface web.
editor.edit_this_file=Editar arquivo editor.edit_this_file=Editar arquivo
editor.this_file_locked=Arquivo está bloqueado editor.this_file_locked=Arquivo está bloqueado
@ -2620,7 +2624,7 @@ tag.create_tag_from=`Criar nova tag a partir de "%s"`
tag.create_success=Tag "%s" criada. tag.create_success=Tag "%s" criada.
topic.manage_topics=Gerenciar Tópicos topic.manage_topics=Gerenciar tópicos
topic.done=Feito topic.done=Feito
topic.count_prompt=Você não pode selecionar mais de 25 tópicos topic.count_prompt=Você não pode selecionar mais de 25 tópicos
@ -2867,6 +2871,8 @@ issues.reaction.alt_add = Adicionar reação %[1]s ao comentário.
issues.context.menu = Menu de comentário issues.context.menu = Menu de comentário
release.summary_card_alt = Cartão de resumo de um release intitulado "%s" no repositório %s release.summary_card_alt = Cartão de resumo de um release intitulado "%s" no repositório %s
editor.commit_email = Email de commit
[graphs] [graphs]
component_loading = Carregando %s... component_loading = Carregando %s...
component_loading_failed = Não foi possível carregar o(a) %s component_loading_failed = Não foi possível carregar o(a) %s

View file

@ -682,6 +682,8 @@ FullName = Nome completo
Description = Descrição Description = Descrição
Pronouns = Pronomes Pronouns = Pronomes
email_domain_is_not_allowed = O domínio do endereço de email <b>%s</b> do utilizador entra em conflito com EMAIL_DOMAIN_ALLOWLIST ou EMAIL_DOMAIN_BLOCKLIST. Certifique-se de que definiu corretamente o endereço de email.
[user] [user]
change_avatar=Mude o seu avatar… change_avatar=Mude o seu avatar…
joined_on=Inscreveu-se em %s joined_on=Inscreveu-se em %s
@ -1231,7 +1233,7 @@ migrate.migrating_failed_no_addr=A migração falhou.
migrate.github.description=Migrar dados do github.com ou do GitHub Enterprise server. migrate.github.description=Migrar dados do github.com ou do GitHub Enterprise server.
migrate.git.description=Migrar um repositório somente de qualquer serviço Git. migrate.git.description=Migrar um repositório somente de qualquer serviço Git.
migrate.gitlab.description=Migrar dados de gitlab.com ou de outras instâncias do GitLab. migrate.gitlab.description=Migrar dados de gitlab.com ou de outras instâncias do GitLab.
migrate.gitea.description=Migrar dados de gitea.com ou de outras instâncias do Gitea/Forgejo. migrate.gitea.description=Migrar dados de gitea.com ou de outras instâncias do Gitea.
migrate.gogs.description=Migrar dados de notabug.org ou de outras instâncias do Gogs. migrate.gogs.description=Migrar dados de notabug.org ou de outras instâncias do Gogs.
migrate.onedev.description=Migrar dados de code.onedev.io ou de outras instâncias do OneDev. migrate.onedev.description=Migrar dados de code.onedev.io ou de outras instâncias do OneDev.
migrate.codebase.description=Migrar dados de codebasehq.com. migrate.codebase.description=Migrar dados de codebasehq.com.
@ -1319,6 +1321,7 @@ view_git_blame=Ver git blame
video_not_supported_in_browser=O seu navegador não suporta a etiqueta "video" do HTML5. video_not_supported_in_browser=O seu navegador não suporta a etiqueta "video" do HTML5.
audio_not_supported_in_browser=O seu navegador não suporta a etiqueta "audio" do HTML5. audio_not_supported_in_browser=O seu navegador não suporta a etiqueta "audio" do HTML5.
stored_lfs=Armazenado com Git LFS stored_lfs=Armazenado com Git LFS
stored_annex=Armazenado com Git Annex
symbolic_link=Ligação simbólica symbolic_link=Ligação simbólica
executable_file=Ficheiro executável executable_file=Ficheiro executável
vendored=Externo vendored=Externo
@ -1344,6 +1347,7 @@ editor.upload_file=Carregar ficheiro
editor.edit_file=Editar ficheiro editor.edit_file=Editar ficheiro
editor.preview_changes=Pré-visualizar modificações editor.preview_changes=Pré-visualizar modificações
editor.cannot_edit_lfs_files=Ficheiros LFS não podem ser editados na interface web. editor.cannot_edit_lfs_files=Ficheiros LFS não podem ser editados na interface web.
editor.cannot_edit_annex_files=Ficheiros Annex não podem ser editados na interface web.
editor.cannot_edit_non_text_files=Ficheiros binários não podem ser editados na interface da web. editor.cannot_edit_non_text_files=Ficheiros binários não podem ser editados na interface da web.
editor.edit_this_file=Editar ficheiro editor.edit_this_file=Editar ficheiro
editor.this_file_locked=Ficheiro bloqueado editor.this_file_locked=Ficheiro bloqueado
@ -2868,6 +2872,8 @@ pulls.sign_in_require = <a href="%s">Inicie sessão</a> para criar um novo pedid
settings.default_update_style_desc = Estilo de atualização predefinido utilizado para atualizar pedidos de integração que estão atrasados em relação ao ramo base. settings.default_update_style_desc = Estilo de atualização predefinido utilizado para atualizar pedidos de integração que estão atrasados em relação ao ramo base.
release.summary_card_alt = Cartão de resumo de um lançamento com o título "%s" no repositório %s release.summary_card_alt = Cartão de resumo de um lançamento com o título "%s" no repositório %s
editor.commit_email = Endereço de email do cometimento
[graphs] [graphs]
component_loading=A carregar %s... component_loading=A carregar %s...
component_loading_failed=Não foi possível carregar %s component_loading_failed=Não foi possível carregar %s
@ -3535,7 +3541,7 @@ notices.delete_success=As notificações do sistema foram eliminadas.
self_check.no_problem_found=Nenhum problema encontrado até agora. self_check.no_problem_found=Nenhum problema encontrado até agora.
self_check.database_collation_mismatch=Supor que a base de dados usa a colação: %s self_check.database_collation_mismatch=Supor que a base de dados usa a colação: %s
self_check.database_collation_case_insensitive=A base de dados está a usar a colação %s, que é insensível à diferença entre maiúsculas e minúsculas. Embora o Gitea possa trabalhar com ela, pode haver alguns casos raros que não funcionem como esperado. self_check.database_collation_case_insensitive=A base de dados está a usar a colação %s, que é insensível à diferença entre maiúsculas e minúsculas. Embora o Forgejo possa trabalhar com ela, pode haver alguns casos raros que não funcionem como esperado.
self_check.database_inconsistent_collation_columns=A base de dados está a usar a colação %s, mas estas colunas estão a usar colações diferentes. Isso poderá causar alguns problemas inesperados. self_check.database_inconsistent_collation_columns=A base de dados está a usar a colação %s, mas estas colunas estão a usar colações diferentes. Isso poderá causar alguns problemas inesperados.
self_check.database_fix_mysql=Para utilizadores do MySQL/MariaDB, pode usar o comando "forgejo doctor convert" para resolver os problemas de colação. Também pode resolver o problema com comandos SQL "ALTER ... COLLATE ..." aplicados manualmente. self_check.database_fix_mysql=Para utilizadores do MySQL/MariaDB, pode usar o comando "forgejo doctor convert" para resolver os problemas de colação. Também pode resolver o problema com comandos SQL "ALTER ... COLLATE ..." aplicados manualmente.
config_summary = Resumo config_summary = Resumo

View file

@ -341,7 +341,7 @@ password_algorithm_helper=Задайте алгоритм хеширования
enable_update_checker=Проверка обновлений enable_update_checker=Проверка обновлений
env_config_keys=Настройка окружения env_config_keys=Настройка окружения
env_config_keys_prompt=Следующие переменные окружения также будут применены к вашему конфигурационному файлу: env_config_keys_prompt=Следующие переменные окружения также будут применены к вашему конфигурационному файлу:
enable_update_checker_helper_forgejo = Периодически проверять наличие новых версий Forgejo через DNS-запись TXT на release.forgejo.org. enable_update_checker_helper_forgejo = Периодически проверять наличие новых версий Forgejo через «TXT» DNS-запись домена release.forgejo.org.
allow_dots_in_usernames = Разрешить точки в именах пользователей. Это не повлияет на уже созданные учётные записи. allow_dots_in_usernames = Разрешить точки в именах пользователей. Это не повлияет на уже созданные учётные записи.
smtp_from_invalid = Адрес для отправки писем некорректен smtp_from_invalid = Адрес для отправки писем некорректен
config_location_hint = Эти настройки конфигурации будут сохранены в: config_location_hint = Эти настройки конфигурации будут сохранены в:
@ -682,6 +682,8 @@ Location = Местоположение
To = Название ветви To = Название ветви
email_domain_is_not_allowed = Домен адреса эл. почты <b>%s</b> не разрешён к использованию. Убедитесь, что он введён правильно или попробуйте другой адрес.
[user] [user]
change_avatar=Изменить изображение профиля… change_avatar=Изменить изображение профиля…
joined_on=Регистрация %s joined_on=Регистрация %s
@ -761,7 +763,7 @@ update_language_success=Язык обновлён.
update_profile_success=Ваш профиль успешно обновлён. update_profile_success=Ваш профиль успешно обновлён.
change_username=Ваше имя пользователя было изменено. change_username=Ваше имя пользователя было изменено.
change_username_prompt=Обратите внимание: изменение имени пользователя также меняет URL вашей учётной записи. change_username_prompt=Обратите внимание: изменение имени пользователя также меняет URL вашей учётной записи.
change_username_redirect_prompt=Старое имя пользователя будет перенаправлять на новое до тех пор, пока его не займут. change_username_redirect_prompt=Старое имя будет перенаправлять на новое до тех пор, пока оно не будет занято.
continue=Далее continue=Далее
cancel=Отмена cancel=Отмена
language=Язык language=Язык
@ -1302,6 +1304,7 @@ view_git_blame=Показать git blame
video_not_supported_in_browser=Ваш браузер не поддерживает тэг HTML5 «video». video_not_supported_in_browser=Ваш браузер не поддерживает тэг HTML5 «video».
audio_not_supported_in_browser=Ваш браузер не поддерживает тэг HTML5 «audio». audio_not_supported_in_browser=Ваш браузер не поддерживает тэг HTML5 «audio».
stored_lfs=Хранится Git LFS stored_lfs=Хранится Git LFS
stored_annex=Хранится Git Annex
symbolic_link=Символическая ссылка symbolic_link=Символическая ссылка
executable_file=Исполняемый файл executable_file=Исполняемый файл
commit_graph=Граф коммитов commit_graph=Граф коммитов
@ -1325,6 +1328,7 @@ editor.upload_file=Загрузить файл
editor.edit_file=Редактировать файл editor.edit_file=Редактировать файл
editor.preview_changes=Просмотр изменений editor.preview_changes=Просмотр изменений
editor.cannot_edit_lfs_files=LFS файлы невозможно редактировать в веб-интерфейсе. editor.cannot_edit_lfs_files=LFS файлы невозможно редактировать в веб-интерфейсе.
editor.cannot_edit_annex_files=Annex файлы невозможно редактировать в веб-интерфейсе.
editor.cannot_edit_non_text_files=Двоичные файлы нельзя редактировать в веб-интерфейсе. editor.cannot_edit_non_text_files=Двоичные файлы нельзя редактировать в веб-интерфейсе.
editor.edit_this_file=Редактировать файл editor.edit_this_file=Редактировать файл
editor.this_file_locked=Файл заблокирован editor.this_file_locked=Файл заблокирован
@ -2650,7 +2654,7 @@ tag.create_tag_from=Создать новый тег из «%s»
tag.create_success=Тег «%s» создан. tag.create_success=Тег «%s» создан.
topic.manage_topics=Редактировать тематические метки topic.manage_topics=Изменить темы
topic.done=Сохранить topic.done=Сохранить
topic.count_prompt=Нельзя выбрать более 25 тем topic.count_prompt=Нельзя выбрать более 25 тем
topic.format_prompt=Темы должны начинаться с буквы или цифры и могут содержать дефисы («-») и точки («.»). Длина темы не должна превышать 35 символов. Все буквы должны быть строчными. topic.format_prompt=Темы должны начинаться с буквы или цифры и могут содержать дефисы («-») и точки («.»). Длина темы не должна превышать 35 символов. Все буквы должны быть строчными.
@ -2869,6 +2873,8 @@ issues.reaction.alt_add = Добавить реакцию %[1]s к этому к
issues.context.menu = Меню комментария issues.context.menu = Меню комментария
release.summary_card_alt = Карточка со сводкой о выпуске «%s» в репозитории %s release.summary_card_alt = Карточка со сводкой о выпуске «%s» в репозитории %s
editor.commit_email = Эл. почта автора
[graphs] [graphs]
component_loading_failed = Не удалось загрузить %s component_loading_failed = Не удалось загрузить %s
component_failed_to_load = Случилась непредвиденная ошибка. component_failed_to_load = Случилась непредвиденная ошибка.
@ -3694,7 +3700,7 @@ dependency.version=Версия
alpine.registry=Настройте этот реестр, добавив URL в файл <code>/etc/apk/repositories</code>: alpine.registry=Настройте этот реестр, добавив URL в файл <code>/etc/apk/repositories</code>:
alpine.registry.key=Загрузите публичный ключ RSA реестра в каталог <code>/etc/apk/keys/</code> для проверки подписи индекса: alpine.registry.key=Загрузите публичный ключ RSA реестра в каталог <code>/etc/apk/keys/</code> для проверки подписи индекса:
alpine.registry.info=Выберите $branch и $repository из списка ниже. alpine.registry.info=Выберите $branch и $repository из списка ниже.
alpine.install=Чтобы установить пакет, выполните следующую команду: alpine.install=Для установки пакета выполните следующую команду:
alpine.repository=О репозитории alpine.repository=О репозитории
alpine.repository.branches=Ветви alpine.repository.branches=Ветви
alpine.repository.repositories=Репозитории alpine.repository.repositories=Репозитории
@ -3702,13 +3708,13 @@ alpine.repository.architectures=Архитектуры
cargo.registry=Настройте этот реестр в файле конфигурации Cargo (например, <code>~/.cargo/config.toml</code>): cargo.registry=Настройте этот реестр в файле конфигурации Cargo (например, <code>~/.cargo/config.toml</code>):
cargo.install=Чтобы установить пакет с помощью Cargo, выполните следующую команду: cargo.install=Чтобы установить пакет с помощью Cargo, выполните следующую команду:
chef.registry=Настройте этот реестр в своём файле <code>~/.chef/config.rb</code>: chef.registry=Настройте этот реестр в своём файле <code>~/.chef/config.rb</code>:
chef.install=Чтобы установить пакет, выполните следующую команду: chef.install=Для установки пакета выполните следующую команду:
composer.registry=Настройте этот реестр в файле <code>~/.composer/config.json</code>: composer.registry=Настройте этот реестр в файле <code>~/.composer/config.json</code>:
composer.install=Чтобы установить пакет с помощью Composer, выполните следующую команду: composer.install=Чтобы установить пакет с помощью Composer, выполните следующую команду:
composer.dependencies=Зависимости composer.dependencies=Зависимости
composer.dependencies.development=Зависимости для разработки composer.dependencies.development=Зависимости для разработки
conan.details.repository=Репозиторий conan.details.repository=Репозиторий
conan.registry=Настроить реестр из командной строки: conan.registry=Добавьте реестр командой:
conan.install=Чтобы установить пакет с помощью Conan, выполните следующую команду: conan.install=Чтобы установить пакет с помощью Conan, выполните следующую команду:
conda.registry=Пропишите этот реестр в качестве репозитория Conda в своём файле <code>.condarc</code>: conda.registry=Пропишите этот реестр в качестве репозитория Conda в своём файле <code>.condarc</code>:
conda.install=Чтобы установить пакет с помощью Conda, выполните следующую команду: conda.install=Чтобы установить пакет с помощью Conda, выполните следующую команду:
@ -3722,23 +3728,23 @@ container.labels=Метки
container.labels.key=Ключ container.labels.key=Ключ
container.labels.value=Значение container.labels.value=Значение
cran.registry=Настройте этот реестр в файле <code>Rprofile.site</code>: cran.registry=Настройте этот реестр в файле <code>Rprofile.site</code>:
cran.install=Чтобы установить пакет, выполните следующую команду: cran.install=Для установки пакета выполните следующую команду:
debian.registry=Настроить реестр из командной строки: debian.registry=Добавьте реестр командой:
debian.registry.info=Выберите $distribution и $component из списка ниже. debian.registry.info=Выберите $distribution и $component из списка ниже.
debian.install=Чтобы установить пакет, выполните следующую команду: debian.install=Для установки пакета выполните следующую команду:
debian.repository=О репозитории debian.repository=О репозитории
debian.repository.distributions=Дистрибутивы debian.repository.distributions=Дистрибутивы
debian.repository.components=Компоненты debian.repository.components=Компоненты
debian.repository.architectures=Архитектуры debian.repository.architectures=Архитектуры
generic.download=Скачать пакет из командной строки: generic.download=Скачать пакет из командной строки:
go.install=Установите пакет из командной строки: go.install=Установите пакет из командной строки:
helm.registry=Настроить реестр из командной строки: helm.registry=Добавьте реестр командой:
helm.install=Чтобы установить пакет, выполните следующую команду: helm.install=Для установки пакета выполните следующую команду:
maven.registry=Настройте реестр в файле <code>pom.xml</code> вашего проекта: maven.registry=Настройте реестр в файле <code>pom.xml</code> вашего проекта:
maven.install=Чтобы использовать пакет, включите в блок <code>dependencies</code> в файле <code>pom.xml</code> следующее: maven.install=Чтобы использовать пакет, включите в блок <code>dependencies</code> в файле <code>pom.xml</code> следующее:
maven.install2=Выполнить через командную строку: maven.install2=Выполнить через командную строку:
maven.download=Чтобы скачать зависимость, запустите в командной строке: maven.download=Чтобы скачать зависимость, запустите в командной строке:
nuget.registry=Настроить реестр из командной строки: nuget.registry=Добавьте реестр командой:
nuget.install=Чтобы установить пакет с помощью NuGet, выполните следующую команду: nuget.install=Чтобы установить пакет с помощью NuGet, выполните следующую команду:
nuget.dependency.framework=Целевой фреймворк nuget.dependency.framework=Целевой фреймворк
npm.registry=Настройте реестр в файле <code>.npmrc</code> вашего проекта: npm.registry=Настройте реестр в файле <code>.npmrc</code> вашего проекта:
@ -3752,10 +3758,10 @@ npm.details.tag=Тег
pub.install=Чтобы установить пакет с помощью Dart, выполните следующую команду: pub.install=Чтобы установить пакет с помощью Dart, выполните следующую команду:
pypi.requires=Требуется Python pypi.requires=Требуется Python
pypi.install=Чтобы установить пакет с помощью pip, выполните следующую команду: pypi.install=Чтобы установить пакет с помощью pip, выполните следующую команду:
rpm.registry=Настроить реестр из командной строки: rpm.registry=Добавьте реестр командой:
rpm.distros.redhat=на дистрибутивах семейства RedHat rpm.distros.redhat=на дистрибутивах семейства RedHat
rpm.distros.suse=на дистрибутивах семейства SUSE rpm.distros.suse=на дистрибутивах семейства SUSE
rpm.install=Чтобы установить пакет, выполните следующую команду: rpm.install=Для установки пакета выполните следующую команду:
rpm.repository = О репозитории rpm.repository = О репозитории
rpm.repository.architectures = Архитектуры rpm.repository.architectures = Архитектуры
rubygems.install=Чтобы установить пакет с помощью gem, выполните следующую команду: rubygems.install=Чтобы установить пакет с помощью gem, выполните следующую команду:
@ -3764,7 +3770,7 @@ rubygems.dependencies.runtime=Зависимости времени выполн
rubygems.dependencies.development=Зависимости для разработки rubygems.dependencies.development=Зависимости для разработки
rubygems.required.ruby=Требуется версия Ruby rubygems.required.ruby=Требуется версия Ruby
rubygems.required.rubygems=Требуется версия RubyGem rubygems.required.rubygems=Требуется версия RubyGem
swift.registry=Настроить реестр из командной строки: swift.registry=Добавьте реестр командой:
swift.install=Добавьте пакет в свой файл <code>Package.swift</code>: swift.install=Добавьте пакет в свой файл <code>Package.swift</code>:
swift.install2=и запустите следующую команду: swift.install2=и запустите следующую команду:
vagrant.install=Чтобы добавить бокс Vagrant, выполните следующую команду: vagrant.install=Чтобы добавить бокс Vagrant, выполните следующую команду:

View file

@ -821,7 +821,7 @@ migrate.migrating_failed=<b>%s</b> සිට සංක්රමණය වීම
migrate.migrating_failed_no_addr=සංක්රමණය අසාර්ථකයි. migrate.migrating_failed_no_addr=සංක්රමණය අසාර්ථකයි.
migrate.git.description=ඕනෑම Git සේවාවකින් පමණක් ගබඩාවක් සංක්රමණය කරන්න. migrate.git.description=ඕනෑම Git සේවාවකින් පමණක් ගබඩාවක් සංක්රමණය කරන්න.
migrate.gitlab.description=gitlab.com හෝ වෙනත් GitLab අවස්ථා වලින් දත්ත සංක්රමණය කරන්න. migrate.gitlab.description=gitlab.com හෝ වෙනත් GitLab අවස්ථා වලින් දත්ත සංක්රමණය කරන්න.
migrate.gitea.description=Gitea.com හෝ වෙනත් Gitea/Forgejo අවස්ථා වලින් දත්ත සංක්රමණය කරන්න. migrate.gitea.description=Gitea.com හෝ වෙනත් Gitea අවස්ථා වලින් දත්ත සංක්රමණය කරන්න.
migrate.gogs.description=notabug.org හෝ වෙනත් Gogs අවස්ථා වලින් දත්ත සංක්රමණය කරන්න. migrate.gogs.description=notabug.org හෝ වෙනත් Gogs අවස්ථා වලින් දත්ත සංක්රමණය කරන්න.
migrate.onedev.description=code.onedev.io හෝ වෙනත් OnedeV අවස්ථා වලින් දත්ත සංක්රමණය කරන්න. migrate.onedev.description=code.onedev.io හෝ වෙනත් OnedeV අවස්ථා වලින් දත්ත සංක්රමණය කරන්න.
migrate.gitbucket.description=GitBucket අවස්ථා වලින් දත්ත සංක්රමණය කරන්න. migrate.gitbucket.description=GitBucket අවස්ථා වලින් දත්ත සංක්රමණය කරන්න.
@ -889,6 +889,7 @@ file_copy_permalink=පිටපත් මාමලින්ක්
video_not_supported_in_browser=ඔබගේ බ්රව්සරය HTML5 'වීඩියෝ' ටැගය සඳහා සහය නොදක්වයි. video_not_supported_in_browser=ඔබගේ බ්රව්සරය HTML5 'වීඩියෝ' ටැගය සඳහා සහය නොදක්වයි.
audio_not_supported_in_browser=ඔබගේ බ්රව්සරය HTML5 'ශ්රව්ය' ටැගය සඳහා සහය නොදක්වයි. audio_not_supported_in_browser=ඔබගේ බ්රව්සරය HTML5 'ශ්රව්ය' ටැගය සඳහා සහය නොදක්වයි.
stored_lfs=Git LFS සමඟ ගබඩා stored_lfs=Git LFS සමඟ ගබඩා
stored_annex=Git Annex සමඟ ගබඩා
symbolic_link=සංකේතාත්මක සබැඳිය symbolic_link=සංකේතාත්මක සබැඳිය
commit_graph=ප්රස්තාරය කැප commit_graph=ප්රස්තාරය කැප
commit_graph.select=ශාඛා තෝරන්න commit_graph.select=ශාඛා තෝරන්න
@ -906,6 +907,7 @@ editor.upload_file=ගොනුව උඩුගත කරන්න
editor.edit_file=ගොනුව සංස්කරණය editor.edit_file=ගොනුව සංස්කරණය
editor.preview_changes=වෙනස්කම් පෙරදසුන editor.preview_changes=වෙනස්කම් පෙරදසුන
editor.cannot_edit_lfs_files=LFS ගොනු වෙබ් අතුරු මුහුණත තුළ සංස්කරණය කළ නොහැක. editor.cannot_edit_lfs_files=LFS ගොනු වෙබ් අතුරු මුහුණත තුළ සංස්කරණය කළ නොහැක.
editor.cannot_edit_annex_files=Annex ගොනු වෙබ් අතුරු මුහුණත තුළ සංස්කරණය කළ නොහැක.
editor.cannot_edit_non_text_files=ද්විමය ගොනු වෙබ් අතුරු මුහුණත තුළ සංස්කරණය කළ නොහැක. editor.cannot_edit_non_text_files=ද්විමය ගොනු වෙබ් අතුරු මුහුණත තුළ සංස්කරණය කළ නොහැක.
editor.edit_this_file=ගොනුව සංස්කරණය editor.edit_this_file=ගොනුව සංස්කරණය
editor.this_file_locked=ගොනුවට අගුළු ලා ඇත editor.this_file_locked=ගොනුවට අගුළු ලා ඇත

View file

@ -176,7 +176,7 @@ string.desc=Z - A
[error] [error]
occurred=Vyskytla sa chyba occurred=Vyskytla sa chyba
report_message=Ak si myslíte, že ide o chybu Gitea, vyhľadajte problémy na <a href="%s" target="_blank">GitHub-e</a> alebo v prípade potreby otvorte nový problém. report_message=Ak si myslíte, že ide o chybu Forgejo, vyhľadajte problémy na <a href="%s" target="_blank">Codeberg-e</a> alebo v prípade potreby otvorte nový problém.
missing_csrf=Nesprávna žiadosť: neprítomný CSFR token missing_csrf=Nesprávna žiadosť: neprítomný CSFR token
invalid_csrf=Nesprávna žiadosť: nesprávny CSFR token invalid_csrf=Nesprávna žiadosť: nesprávny CSFR token
not_found=Nebolo možné nájsť cieľ. not_found=Nebolo možné nájsť cieľ.
@ -1010,6 +1010,7 @@ view_git_blame=Zobraziť Git Blame
video_not_supported_in_browser=Váš prehliadač nepodporuje HTML5 tag 'video'. video_not_supported_in_browser=Váš prehliadač nepodporuje HTML5 tag 'video'.
audio_not_supported_in_browser=Váš prehliadač nepodporuje HTML5 tag 'audio'. audio_not_supported_in_browser=Váš prehliadač nepodporuje HTML5 tag 'audio'.
stored_lfs=Uložené pomocou Git LFS stored_lfs=Uložené pomocou Git LFS
stored_annex=Uložené pomocou Git Annex
symbolic_link=Symbolický odkaz symbolic_link=Symbolický odkaz
commit_graph=Graf commitov commit_graph=Graf commitov
line=riadok line=riadok

View file

@ -62,7 +62,7 @@ federated_avatar_lookup_popup=Омогућите federated avatars lookup да
enable_captcha_popup=Тражи Captcha приликом регистрације корисника. enable_captcha_popup=Тражи Captcha приликом регистрације корисника.
admin_password=Лозинка admin_password=Лозинка
confirm_password=Потврдите лозинку confirm_password=Потврдите лозинку
install_btn_confirm=Успостави Gitea install_btn_confirm=Успостави Forgejo
test_git_failed=Команда 'git' није успела: %v test_git_failed=Команда 'git' није успела: %v
[home] [home]

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