Compare commits

..

44 commits

Author SHA1 Message Date
Matthias Riße
1f4fe5bfe6 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
/ 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-01-31 00:43:20 +00:00
Matthias Riße
e118cb9485 Invalidate outdated annex UUID cache entries (#60)
Some checks are pending
/ build-oci-image (rootful) (push) Waiting to run
/ build-oci-image (rootless) (push) Waiting to run
/ release (push) Waiting to run
testing / backend-checks (push) Waiting to run
testing / frontend-checks (push) Waiting to run
testing / test-unit (push) Blocked by required conditions
testing / test-e2e (push) Blocked by required conditions
testing / test-remote-cacher (redis) (push) Blocked by required conditions
testing / test-remote-cacher (valkey) (push) Blocked by required conditions
testing / test-remote-cacher (garnet) (push) Blocked by required conditions
testing / test-remote-cacher (redict) (push) Blocked by required conditions
testing / test-mysql (push) Blocked by required conditions
testing / test-pgsql (push) Blocked by required conditions
testing / test-sqlite (push) Blocked by required conditions
testing / security-check (push) Blocked by required conditions
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-01-30 16:44:59 +00:00
Matthias Riße
1fc2fcd438 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-01-30 10:50:48 +00:00
Michael Kriese
b0a9f56508 ci: fix go version check (#6646)
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
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6646
2025-01-27 15:27:03 +01:00
Matthias Riße
05daede0ef 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-01-27 10:44:01 +01:00
Matthias Riße
fa5b158a5a 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-01-27 10:44:01 +01:00
Matthias Riße
ede91562df 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-01-27 10:44:01 +01:00
Matthias Riße
525eadc70e 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-01-27 10:44:01 +01:00
Matthias Riße
4bc7f3df34 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-01-27 10:44:01 +01:00
Matthias Riße
fa7d976b2e 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-01-27 10:44:01 +01:00
Matthias Riße
319b4fc997 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-01-27 10:44:01 +01:00
Matthias Riße
790fc7c792 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-01-27 10:44:01 +01:00
Matthias Riße
989949b5cc 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-01-27 10:44:01 +01:00
Matthias Riße
8af2afa30f 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-01-27 10:44:01 +01:00
Matthias Riße
ad7e1e7a9f 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-01-27 10:44:01 +01:00
Michael Hanke
7a03796fe5 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-01-27 10:44:01 +01:00
Matthias Riße
b643725cb6 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-01-27 10:44:01 +01:00
Matthias Riße
5891313b0b 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-01-27 10:44:01 +01:00
Michael Hanke
6a3858160f 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-01-27 10:44:01 +01:00
Matthias Riße
5fdcb8a7a1 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-01-27 10:44:01 +01:00
Matthias Riße
83f8fdb142 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-01-27 10:42:20 +01:00
Matthias Riße
a5e712f002 Add git-annex to docker image 2025-01-27 10:42:20 +01:00
Matthias Riße
4c12a2ecee Adapt patch to upstream changes
Test with different objectFormats.
2025-01-27 10:42:20 +01:00
Nick
9ffebb2f84 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-01-27 10:42:20 +01:00
Matthias Riße
ce1660d41b Adapt patch to upstream changes
Use tests.FileCmp instead of util.FileCmp.
2025-01-27 10:42:20 +01:00
Matthias Riße
db5eaa1a24 Adapt patch to upstream changes
Test with different objectFormats.
2025-01-27 10:42:20 +01:00
Nick
7ed9add4c5 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-01-27 10:42:20 +01:00
Matthias Riße
cb218de0d2 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-01-27 10:42:20 +01:00
Nick
5651c5a69d 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-01-27 10:42:20 +01:00
Matthias Riße
0371c78a77 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-01-27 10:42:20 +01:00
Matthias Riße
768a3a9c83 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-01-27 10:42:20 +01:00
Matthias Riße
f863511a14 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-01-27 10:42:20 +01:00
Matthias Riße
0bdc572df9 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-01-27 10:42:20 +01:00
Nick
48f21fd213 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-01-27 10:42:20 +01:00
Nick
ffae358704 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-01-27 10:42:20 +01:00
Matthias Riße
ca881e7e31 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-01-27 10:42:20 +01:00
Matthias Riße
7b7c804ea4 Install git-annex in the testing workflow 2025-01-27 10:42:20 +01:00
Matthias Riße
8cd079ae15 Adapt patch to upstream changes 2025-01-27 10:42:20 +01:00
Matthias Riße
90f53a4e7c 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-01-27 10:42:20 +01:00
Matthias Riße
b5fc00042b Adapt patch to upstream changes
Repository creation now expects an objectFormat to be specified for git.
2025-01-27 10:42:20 +01:00
Nick
b3fe6dc4a1 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-01-27 10:41:41 +01:00
Nick Guenther
d1788bd267 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-01-20 18:04:24 +01:00
Matthias Riße
b3f62a9af2 Fix name in package-lock.json
The frontend-checks job started failing because the declared name does
not match the repository name.
2025-01-20 18:04:24 +01:00
Matthias Riße
6020be2c8a Run testing workflow unconditionally 2025-01-20 18:04:17 +01:00
212 changed files with 2177 additions and 8199 deletions

View file

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

View file

@ -27,10 +27,8 @@ runs:
- name: "Get go environment information"
id: go-environment
run: |
chmod 755 $HOME # ensure ${RUN_AS_USER} has permission when go is located in $HOME
export GOROOT="$(go env GOROOT)"
echo "modcache=$(su ${RUN_AS_USER} -c '${GOROOT}/bin/go env GOMODCACHE')" >> "$GITHUB_OUTPUT"
echo "cache=$(su ${RUN_AS_USER} -c '${GOROOT}/bin/go env GOCACHE')" >> "$GITHUB_OUTPUT"
echo "modcache=$(su ${RUN_AS_USER} -c '/opt/hostedtoolcache/go/${GO_VERSION}/x64/bin/go env GOMODCACHE')" >> "$GITHUB_OUTPUT"
echo "cache=$(su ${RUN_AS_USER} -c '/opt/hostedtoolcache/go/${GO_VERSION}/x64/bin/go env GOCACHE')" >> "$GITHUB_OUTPUT"
env:
RUN_AS_USER: ${{ inputs.username }}
GO_VERSION: ${{ steps.go-version.outputs.go-version }}
@ -50,7 +48,7 @@ runs:
- name: "Restore Go dependencies from cache or mark for later caching"
id: cache-deps
uses: https://data.forgejo.org/actions/cache@v4
uses: actions/cache@v4
with:
key: setup-cache-go-deps-${{ runner.os }}-${{ inputs.username }}-${{ steps.go-version.outputs.go_version }}-${{ hashFiles('go.sum', 'go.mod') }}
restore-keys: |

View file

@ -25,7 +25,7 @@ jobs:
if: vars.ROLE == 'forgejo-coding'
runs-on: lxc-bookworm
steps:
- uses: https://data.forgejo.org/actions/checkout@v4
- uses: actions/checkout@v4
- id: forgejo
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
if: vars.ROLE == 'forgejo-integration' || github.repository_owner == 'root'
steps:
- uses: https://data.forgejo.org/actions/checkout@v4
- uses: actions/checkout@v4
with:
fetch-depth: 0
@ -164,7 +164,7 @@ jobs:
- name: build container & release
if: ${{ secrets.TOKEN != '' }}
uses: https://data.forgejo.org/forgejo/forgejo-build-publish/build@v5.3.4
uses: https://data.forgejo.org/forgejo/forgejo-build-publish/build@v5.3.1
with:
forgejo: "${{ env.GITHUB_SERVER_URL }}"
owner: "${{ env.GITHUB_REPOSITORY_OWNER }}"
@ -183,7 +183,7 @@ jobs:
- name: build rootless container
if: ${{ secrets.TOKEN != '' }}
uses: https://data.forgejo.org/forgejo/forgejo-build-publish/build@v5.3.4
uses: https://data.forgejo.org/forgejo/forgejo-build-publish/build@v5.3.1
with:
forgejo: "${{ env.GITHUB_SERVER_URL }}"
owner: "${{ env.GITHUB_REPOSITORY_OWNER }}"

View file

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

View file

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

View file

@ -44,7 +44,7 @@ jobs:
apt-get update -qq
apt-get -q install -qq -y zstd
- name: "Cache frontend build for playwright testing"
uses: https://data.forgejo.org/actions/cache/save@v4
uses: actions/cache/save@v4
with:
path: ${{github.workspace}}/public/assets
key: frontend-build-${{ github.sha }}
@ -102,7 +102,7 @@ jobs:
fetch-depth: 20
- uses: ./.forgejo/workflows-composite/setup-env
- name: "Restore frontend build"
uses: https://data.forgejo.org/actions/cache/restore@v4
uses: actions/cache/restore@v4
id: cache-frontend
with:
path: ${{github.workspace}}/public/assets

1
.gitignore vendored
View file

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

View file

@ -1,6 +1,6 @@
FROM --platform=$BUILDPLATFORM data.forgejo.org/oci/xx AS xx
FROM --platform=$BUILDPLATFORM code.forgejo.org/oci/xx AS xx
FROM --platform=$BUILDPLATFORM data.forgejo.org/oci/golang:1.23-alpine3.20 as build-env
FROM --platform=$BUILDPLATFORM code.forgejo.org/oci/golang:1.23-alpine3.20 as build-env
ARG GOPROXY
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
RUN chmod 644 /go/src/code.gitea.io/gitea/contrib/autocompletion/bash_autocomplete
FROM data.forgejo.org/oci/alpine:3.20
FROM code.forgejo.org/oci/alpine:3.20
ARG RELEASE_VERSION
LABEL maintainer="contact@forgejo.org" \
org.opencontainers.image.authors="Forgejo" \

View file

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

View file

@ -1,33 +1,27 @@
<!--
This logo was created by Michael Hanke <mih@ngln.eu> from
the original Forgejo logo by Caesar Schinas and the git-annex
logo by Henrik Nyh <http://henrik.nyh.se/>, Joey Hess <id@joeyh.name>,
John Lawrence, and Yann Büchau <nobodyinperson at posteo de>.
It is licensed under the Creative Commons Attribution-ShareAlike 4.0
International (CC BY-SA 4.0) license.
-->
<svg xmlns="http://www.w3.org/2000/svg" width="212" height="212"
viewBox="0 0 56.092 56.092" xmlns:v="https://vecta.io/nano">
<g transform="matrix(1.003855 0 0 1.003855 -155.52693 -24.929635)"
fill="none">
<g stroke-width="6.615">
<path d="M168.804 70.908V44.979a13.229 13.229 0 0 1 13.229-13.229h5.292"
stroke="#f60" />
<path d="M168.804 70.908v-7.937a13.229 13.229 0 0 1 13.229-13.229h5.292"
stroke="#d40000" />
</g>
<g stroke-width="3.969">
<circle cx="191.029" cy="31.75" r="4.762" stroke="#f60" />
<g stroke="#d40000">
<circle cx="191.029" cy="49.742" r="4.762" />
<circle cx="168.804" cy="74.083" r="4.762" />
</g>
</g>
</g>
<g fill="#777">
<path d="M34.648 56.182c-2.089-.269-4.238-2.244-4.538-4.561-.288-1.937.128-4.198 1.729-5.476.702-.479 1.658-1.015 2.5-.951v2.757c-1.003.112-1.975 1.252-1.954 2.296.025 1.359.626 2.607 1.933 3.014 1.446.487 3.102.348 4.44-.461 1.106-.862 1.208-2.466.63-3.687-.26-.672-.821-1.165-1.582-1.163v2.392H35.66v-5.149h6.5v1.852l-1.78.016c1.661.947 1.832 2.991 1.747 4.409.06 2.436-2.347 4.422-4.734 4.688-.864.065-1.594.068-2.743.023zm-4.644-12.011l-.014-2.702h12.185l-.001 2.715-12.17-.013zm4.645-3.651v-2.892h-4.724v-2.516h4.724v-3.245h2.826v3.245h4.702v2.516h-4.702l-.047 2.886-2.779.006z" />
<path d="M22.23 24.801l-2.819 3.94h1.565a9.01 9.01 0 0 0 .103 1.283l2.488-.377c-.044-.296-.071-.599-.075-.906h1.556zm1.531 5.732l-2.405.724a8.9 8.9 0 0 0 .447 1.18l2.281-1.055a6.36 6.36 0 0 1-.323-.848zm.753 1.622L22.4 33.518a8.99 8.99 0 0 0 3.949 3.365l1.006-2.305a6.45 6.45 0 0 1-2.839-2.421zm3.675 2.715l-.679 2.425a8.94 8.94 0 0 0 1.18.244l.348-2.492a6.52 6.52 0 0 1-.848-.178zm21.673-10.069l-2.819 3.94h1.565c-.003.308-.03.61-.075.906l2.488.377a9.01 9.01 0 0 0 .103-1.283h1.556zm-1.523 5.732a6.36 6.36 0 0 1-.323.848l2.281 1.055c.176-.379.325-.774.447-1.18zm-.753 1.622a6.45 6.45 0 0 1-2.839 2.421l1.006 2.305a8.99 8.99 0 0 0 3.949-3.365zm-3.675 2.715a6.52 6.52 0 0 1-.848.178l.348 2.492a8.94 8.94 0 0 0 1.18-.244z"
fill-rule="evenodd" />
<svg viewBox="0 0 212 212" xmlns="http://www.w3.org/2000/svg">
<style type="text/css">
circle {
fill: none;
stroke: #000;
stroke-width: 15;
}
path {
fill: none;
stroke: #000;
stroke-width: 25;
}
.orange {
stroke:#ff6600;
}
.red {
stroke:#d40000;
}
</style>
<g transform="translate(6,6)">
<path d="M58 168 v-98 a50 50 0 0 1 50-50 h20" class="orange" />
<path d="M58 168 v-30 a50 50 0 0 1 50-50 h20" class="red" />
<circle cx="142" cy="20" r="18" class="orange" />
<circle cx="142" cy="88" r="18" class="red" />
<circle cx="58" cy="180" r="18" class="red" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 677 B

View file

@ -1,33 +1,27 @@
<!--
This logo was created by Michael Hanke <mih@ngln.eu> from
the original Forgejo logo by Caesar Schinas and the git-annex
logo by Henrik Nyh <http://henrik.nyh.se/>, Joey Hess <id@joeyh.name>,
John Lawrence, and Yann Büchau <nobodyinperson at posteo de>.
It is licensed under the Creative Commons Attribution-ShareAlike 4.0
International (CC BY-SA 4.0) license.
-->
<svg xmlns="http://www.w3.org/2000/svg" width="212" height="212"
viewBox="0 0 56.092 56.092" xmlns:v="https://vecta.io/nano">
<g transform="matrix(1.003855 0 0 1.003855 -155.52693 -24.929635)"
fill="none">
<g stroke-width="6.615">
<path d="M168.804 70.908V44.979a13.229 13.229 0 0 1 13.229-13.229h5.292"
stroke="#f60" />
<path d="M168.804 70.908v-7.937a13.229 13.229 0 0 1 13.229-13.229h5.292"
stroke="#d40000" />
</g>
<g stroke-width="3.969">
<circle cx="191.029" cy="31.75" r="4.762" stroke="#f60" />
<g stroke="#d40000">
<circle cx="191.029" cy="49.742" r="4.762" />
<circle cx="168.804" cy="74.083" r="4.762" />
</g>
</g>
</g>
<g fill="#777">
<path d="M34.648 56.182c-2.089-.269-4.238-2.244-4.538-4.561-.288-1.937.128-4.198 1.729-5.476.702-.479 1.658-1.015 2.5-.951v2.757c-1.003.112-1.975 1.252-1.954 2.296.025 1.359.626 2.607 1.933 3.014 1.446.487 3.102.348 4.44-.461 1.106-.862 1.208-2.466.63-3.687-.26-.672-.821-1.165-1.582-1.163v2.392H35.66v-5.149h6.5v1.852l-1.78.016c1.661.947 1.832 2.991 1.747 4.409.06 2.436-2.347 4.422-4.734 4.688-.864.065-1.594.068-2.743.023zm-4.644-12.011l-.014-2.702h12.185l-.001 2.715-12.17-.013zm4.645-3.651v-2.892h-4.724v-2.516h4.724v-3.245h2.826v3.245h4.702v2.516h-4.702l-.047 2.886-2.779.006z" />
<path d="M22.23 24.801l-2.819 3.94h1.565a9.01 9.01 0 0 0 .103 1.283l2.488-.377c-.044-.296-.071-.599-.075-.906h1.556zm1.531 5.732l-2.405.724a8.9 8.9 0 0 0 .447 1.18l2.281-1.055a6.36 6.36 0 0 1-.323-.848zm.753 1.622L22.4 33.518a8.99 8.99 0 0 0 3.949 3.365l1.006-2.305a6.45 6.45 0 0 1-2.839-2.421zm3.675 2.715l-.679 2.425a8.94 8.94 0 0 0 1.18.244l.348-2.492a6.52 6.52 0 0 1-.848-.178zm21.673-10.069l-2.819 3.94h1.565c-.003.308-.03.61-.075.906l2.488.377a9.01 9.01 0 0 0 .103-1.283h1.556zm-1.523 5.732a6.36 6.36 0 0 1-.323.848l2.281 1.055c.176-.379.325-.774.447-1.18zm-.753 1.622a6.45 6.45 0 0 1-2.839 2.421l1.006 2.305a8.99 8.99 0 0 0 3.949-3.365zm-3.675 2.715a6.52 6.52 0 0 1-.848.178l.348 2.492a8.94 8.94 0 0 0 1.18-.244z"
fill-rule="evenodd" />
<svg viewBox="0 0 212 212" xmlns="http://www.w3.org/2000/svg">
<style type="text/css">
circle {
fill: none;
stroke: #000;
stroke-width: 15;
}
path {
fill: none;
stroke: #000;
stroke-width: 25;
}
.orange {
stroke:#ff6600;
}
.red {
stroke:#d40000;
}
</style>
<g transform="translate(6,6)">
<path d="M58 168 v-98 a50 50 0 0 1 50-50 h20" class="orange" />
<path d="M58 168 v-30 a50 50 0 0 1 50-50 h20" class="red" />
<circle cx="142" cy="20" r="18" class="orange" />
<circle cx="142" cy="88" r="18" class="red" />
<circle cx="58" cy="180" r="18" class="red" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 677 B

View file

@ -59,9 +59,9 @@ func initRemoveTags() {
oldnew := []string{}
for _, el := range []string{
"email@example.com", "correu@example.com", "epasts@domens.lv", "email@exemplo.com", "eposta@ornek.com", "email@példa.hu", "email@esempio.it",
"user", "utente", "lietotājs", "gebruiker", "usuário", "Benutzer", "Bruker", "bruger", "użytkownik",
"user", "utente", "lietotājs", "gebruiker", "usuário", "Benutzer", "Bruker", "bruger",
"server", "servidor", "kiszolgáló", "serveris",
"label", "etichetta", "etiķete", "rótulo", "Label", "utilizador", "etiket", "iezīme", "etykieta",
"label", "etichetta", "etiķete", "rótulo", "Label", "utilizador", "etiket", "iezīme",
} {
oldnew = append(oldnew, "<"+el+">", "REPLACED-TAG")
}

20
go.mod
View file

@ -1,8 +1,8 @@
module code.gitea.io/gitea
go 1.23.0
go 1.23
toolchain go1.23.6
toolchain go1.23.4
require (
code.forgejo.org/f3/gof3/v3 v3.10.2
@ -53,7 +53,7 @@ require (
github.com/gobwas/glob v0.2.3
github.com/gogs/chardet v0.0.0-20211120154057-b7413eaefb8f
github.com/gogs/go-gogs-client v0.0.0-20210131175652-1d7215cd8d85
github.com/golang-jwt/jwt/v5 v5.2.2
github.com/golang-jwt/jwt/v5 v5.2.1
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0
github.com/google/go-github/v64 v64.0.0
github.com/google/pprof v0.0.0-20241017200806-017d972448fc
@ -85,7 +85,7 @@ require (
github.com/opencontainers/image-spec v1.1.0
github.com/pquerna/otp v1.4.0
github.com/prometheus/client_golang v1.20.5
github.com/redis/go-redis/v9 v9.7.3
github.com/redis/go-redis/v9 v9.7.0
github.com/robfig/cron/v3 v3.0.1
github.com/santhosh-tekuri/jsonschema/v6 v6.0.1
github.com/sassoftware/go-rpmutils v0.4.0
@ -101,13 +101,13 @@ require (
github.com/yuin/goldmark v1.7.8
github.com/yuin/goldmark-highlighting/v2 v2.0.0-20230729083705-37449abec8cc
go.uber.org/mock v0.4.0
golang.org/x/crypto v0.35.0
golang.org/x/crypto v0.31.0
golang.org/x/image v0.23.0
golang.org/x/net v0.36.0
golang.org/x/oauth2 v0.27.0
golang.org/x/sync v0.11.0
golang.org/x/sys v0.30.0
golang.org/x/text v0.22.0
golang.org/x/net v0.33.0
golang.org/x/oauth2 v0.23.0
golang.org/x/sync v0.10.0
golang.org/x/sys v0.28.0
golang.org/x/text v0.21.0
google.golang.org/grpc v1.69.2
google.golang.org/protobuf v1.36.1
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df

36
go.sum
View file

@ -981,8 +981,8 @@ github.com/gogs/go-gogs-client v0.0.0-20210131175652-1d7215cd8d85 h1:UjoPNDAQ5JP
github.com/gogs/go-gogs-client v0.0.0-20210131175652-1d7215cd8d85/go.mod h1:fR6z1Ie6rtF7kl/vBYMfgD5/G5B1blui7z426/sj2DU=
github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg=
github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
github.com/golang-jwt/jwt/v5 v5.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8=
github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk=
github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 h1:au07oEsX2xN0ktxqI+Sida1w446QrXBRJ0nee3SNZlA=
github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=
github.com/golang-sql/sqlexp v0.1.0 h1:ZCD6MBpcuOVfGVqsEmY5/4FtYiKz6tSyUv9LPEDei6A=
@ -1342,8 +1342,8 @@ github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G
github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8=
github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=
github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
github.com/redis/go-redis/v9 v9.7.3 h1:YpPyAayJV+XErNsatSElgRZZVCwXX9QzkKYNvO7x0wM=
github.com/redis/go-redis/v9 v9.7.3/go.mod h1:bGUrSggJ9X9GUmZpZNEOQKaANxSGgOEBRltRTZHSvrA=
github.com/redis/go-redis/v9 v9.7.0 h1:HhLSs+B6O021gwzl+locl0zEDnyNkxMtf/Z3NNBMa9E=
github.com/redis/go-redis/v9 v9.7.0/go.mod h1:f6zhXITC7JUJIlPEiBOTXxJgPLdZcA93GewI7inzyWw=
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 h1:OdAsTTz6OkFY5QxjkYwrChwuRruF69c169dPK26NUlk=
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
github.com/rhysd/actionlint v1.6.27 h1:xxwe8YmveBcC8lydW6GoHMGmB6H/MTqUU60F2p10wjw=
@ -1505,8 +1505,8 @@ golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5y
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs=
golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ=
golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
@ -1631,8 +1631,8 @@ golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns=
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA=
golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I=
golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@ -1662,8 +1662,8 @@ golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec
golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I=
golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw=
golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4=
golang.org/x/oauth2 v0.27.0 h1:da9Vo7/tDv5RH/7nZDz1eMGS/q1Vv1N/7FCrBhI9I3M=
golang.org/x/oauth2 v0.27.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8=
golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs=
golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@ -1680,8 +1680,8 @@ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w=
golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@ -1771,8 +1771,8 @@ golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
@ -1784,8 +1784,8 @@ golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY=
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU=
golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0=
golang.org/x/term v0.29.0 h1:L6pJp37ocefwRRtYPKSWOWzOtWSxVajvz2ldH/xi3iU=
golang.org/x/term v0.29.0/go.mod h1:6bl4lRlvVuDgSf3179VpIxBF0o10JUpXWOnI7nErv7s=
golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@ -1804,8 +1804,8 @@ golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM=
golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY=
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=

View file

@ -282,22 +282,27 @@ func UpdateRunner(ctx context.Context, r *ActionRunner, cols ...string) error {
}
// DeleteRunner deletes a runner by given ID.
func DeleteRunner(ctx context.Context, r *ActionRunner) error {
func DeleteRunner(ctx context.Context, id int64) 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,
// 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
// new record.
b := make([]byte, 8)
binary.LittleEndian.PutUint64(b, uint64(r.ID))
r.UUID = fmt.Sprintf("ffffffff-ffff-ffff-%.2x%.2x-%.2x%.2x%.2x%.2x%.2x%.2x",
binary.LittleEndian.PutUint64(b, uint64(id))
runner.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])
err := UpdateRunner(ctx, r, "UUID")
err = UpdateRunner(ctx, runner, "UUID")
if err != nil {
return err
}
_, err = db.DeleteByID[ActionRunner](ctx, r.ID)
_, err = db.DeleteByID[ActionRunner](ctx, id)
return err
}

View file

@ -34,7 +34,7 @@ func TestDeleteRunner(t *testing.T) {
require.NoError(t, unittest.PrepareTestDatabase())
before := unittest.AssertExistsAndLoadBean(t, &ActionRunner{ID: recordID})
err := DeleteRunner(db.DefaultContext, &ActionRunner{ID: recordID})
err := DeleteRunner(db.DefaultContext, recordID)
require.NoError(t, err)
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) {
count, err := db.GetEngine(ctx).ID(variable.ID).Where("owner_id = ? AND repo_id = ?", variable.OwnerID, variable.RepoID).Cols("name", "data").
count, err := db.GetEngine(ctx).ID(variable.ID).Cols("name", "data").
Update(&ActionVariable{
Name: variable.Name,
Data: variable.Data,
@ -94,9 +94,11 @@ func UpdateVariable(ctx context.Context, variable *ActionVariable) (bool, error)
return count != 0, err
}
func DeleteVariable(ctx context.Context, variableID, ownerID, repoID int64) (bool, error) {
count, err := db.GetEngine(ctx).Table("action_variable").Where("id = ? AND owner_id = ? AND repo_id = ?", variableID, ownerID, repoID).Delete()
return count != 0, err
func DeleteVariable(ctx context.Context, id int64) error {
if _, err := db.DeleteByID[ActionVariable](ctx, id); err != nil {
return err
}
return nil
}
func GetVariablesOfRun(ctx context.Context, run *ActionRun) (map[string]string, error) {

View file

@ -219,13 +219,8 @@ func SSHNativeParsePublicKey(keyLine string) (string, int, error) {
return "", 0, fmt.Errorf("ParsePublicKey: %w", err)
}
pkeyType := pkey.Type()
if certPkey, ok := pkey.(*ssh.Certificate); ok {
pkeyType = certPkey.Key.Type()
}
// The ssh library can parse the key, so next we find out what key exactly we have.
switch pkeyType {
switch pkey.Type() {
case ssh.KeyAlgoDSA:
rawPub := struct {
Name string

View file

@ -35,7 +35,6 @@ func Test_SSHParsePublicKey(t *testing.T) {
{"ecdsa-384", false, "ecdsa", 384, "ecdsa-sha2-nistp384 AAAAE2VjZHNhLXNoYTItbmlzdHAzODQAAAAIbmlzdHAzODQAAABhBINmioV+XRX1Fm9Qk2ehHXJ2tfVxW30ypUWZw670Zyq5GQfBAH6xjygRsJ5wWsHXBsGYgFUXIHvMKVAG1tpw7s6ax9oA+dJOJ7tj+vhn8joFqT+sg3LYHgZkHrfqryRasQ== nocomment"},
{"ecdsa-sk", true, "ecdsa-sk", 256, "sk-ecdsa-sha2-nistp256@openssh.com AAAAInNrLWVjZHNhLXNoYTItbmlzdHAyNTZAb3BlbnNzaC5jb20AAAAIbmlzdHAyNTYAAABBBGXEEzWmm1dxb+57RoK5KVCL0w2eNv9cqJX2AGGVlkFsVDhOXHzsadS3LTK4VlEbbrDMJdoti9yM8vclA8IeRacAAAAEc3NoOg== nocomment"},
{"ed25519-sk", true, "ed25519-sk", 256, "sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIE7kM1R02+4ertDKGKEDcKG0s+2vyDDcIvceJ0Gqv5f1AAAABHNzaDo= nocomment"},
{"ed25519-cert-v01", true, "ed25519", 256, "ssh-ed25519-cert-v01@openssh.com AAAAIHNzaC1lZDI1NTE5LWNlcnQtdjAxQG9wZW5zc2guY29tAAAAIAlIAPlEj0mYQzQo8Ks0Nm/Ct8ceNkyJSf4DLuF5l7+5AAAAIEuWAoaBo2tT29/oMNnoDfdAPRCIdM2RGapKUhY4nDfLRgPQwfnRoc0AAAABAAAAcHZhdWx0LW9pZGMtNmRhYjdiZDgtNDg5YS00MDFkLTg3ZmItNjdjNTlhMDZkZDkxLTNjNTk2M2YyMGRmMDM3MDkyMzc1YmNiYmNiNzkxY2EyZWIxM2I0NGZhMzc2NTcwMWI0MjMwODU0MWFmNjhkNTgAAAALAAAAB2Zvcmdlam8AAAAAZ6/RUQAAAABn115vAAAAAAAAAAAAAAAAAAACFwAAAAdzc2gtcnNhAAAAAwEAAQAAAgEAySnM/TvD117GyKgOgMatDB2t+fCHORFaWVmH5SaadAzNJ2DfDAauRSLfnim1xdgAOMTzsPEEHH47zyYMjE85o2AiJxrfUBMw3O/7AbNc6+HyLr/txH4+vD9tWQknKnpVWM+3Z9wiHDcOdKRoXCmFZKJH1vxs16GNWjwbrfNiimv7Oi0fadgvTDKX603gpLTuVDXqs9eQFLCONptei86JYBAJqaHvg51k8YUCKt9WFqKAj7BJUWmrDvhv5VFMOsnZieJjqxkoxnpsQNlXfPzxK0vIpJofbYfWwscv/g9WZypHwO1ZR2PqzKm99YrSdr8w5256l0f44vsF0NSP0N7bDQEfYYnRGj8zWTYCBFD+uYF7AxIeaRUpZoTQO8MvCHOLMIDinNgEeCUvNA2v9zHl4BGq+PQjzUKAgJiKj0MZeiCDAmQ22g83ggQlB6BOrBb1fNa/S1cmTbGHQ2oAN358aqkmHVCBhPOyA2Rf65D2M2vzDlUdOsNDUIWAHk7GbwSNGDgcYfTWqtR5fTzp2MJovMh1dDUDXjOvojbhzjJtSy9+rzUYIv18aXdOitzVBgPMWdeVCZFZv4OKF+5MiqxQvedUvfiSjsdxZWLxyT1CJ88G3MzxNMS/Djm86T8h/Oa55bdvFtqpsLfvpIqq0pnXq1V/vF2j1MWwRB5z5Xh/HtEAAAIUAAAADHJzYS1zaGEyLTI1NgAAAgB2I2gzqemQl8/ETxtakALlm/2BpUcbhADcFWuoH6BCPnWHuTSwf3OayM6KXv1PQfL3YFRoi9Afrp8kVFL6DePsmKH+0BUEMz71sZ7v1ty7pwfzibItGnpTbQXhzbEiNYAFoz77rl7oaXF7pV6JNZhj3DVAB5gVA2oN5KRNVxijz+6uyuFJEw1HIl1C7GworvGwZcN7BThTEh3i72/Vntejy9Z8uGVjSFjS0rjRo2oXK1LKN0rVt66p3TmCWHouLkVnOTk0qrhLGlL2HVyo24OYHbkAAObD9b6aMDYlmluk6NsaiTKsSTsvMrbIbjtFQlh7nNyoPhZ0VMwaT1l10pDQ5uxWWZjKGIkz4xM1ZfpBszjJNPo+ivYQnTSjj9LwkbLAT9a/5LawSj80TGcLEMO+0eyPdJsP0wYmOVRFAZeRiBgwb3HrzcF6Wqr8icj1EjYkKSy9YFHGTnFBGknpdh3HGwghRXrCUwAnSM76db9pv4/qowT8LthtJ3dY5Epe0OJ1Tqm+q8bkGH4gB+7uqLSqM5pIHSKLp7lfHQBt1J6xa7H2saiweaWjU+QGTgQ2Lg+uUC5DXJrmm60CeFJ4BoGhUenDlgijbQpjH/l6330PbwefgjWtUK/pqaEA4lCoPyvJ+eF2DbYfPiAIBAFQnhVJJae4AH+XoCt29nb2j30ztg== nocomment"},
}
for _, tc := range testCases {

View file

@ -1,23 +0,0 @@
-
id: 1001
title: Org project that contains private and public 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 and public 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

@ -1,17 +0,0 @@
-
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

@ -1,23 +0,0 @@
-
id: 1001
issue_id: 6
project_id: 1001
project_board_id: 1001
-
id: 1002
issue_id: 7
project_id: 1002
project_board_id: 1002
-
id: 1003
issue_id: 16
project_id: 1001
project_board_id: 1001
-
id: 1004
issue_id: 1
project_id: 1002
project_board_id: 1002

View file

@ -1,5 +0,0 @@
-
id: 1001
user_id: 29
repo_id: 3
mode: 1

View file

@ -1,11 +0,0 @@
-
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

View file

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

View file

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

View file

@ -64,7 +64,6 @@
base_branch: branch2
merge_base: 985f0301dba5e7b34be866819cd15ad3d8f508ee
has_merged: false
allow_maintainer_edit: true
-
id: 6

View file

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

View file

@ -7,11 +7,9 @@ import (
"context"
"crypto/md5"
"encoding/base64"
"fmt"
"code.gitea.io/gitea/models/auth"
"code.gitea.io/gitea/models/db"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/secret"
"code.gitea.io/gitea/modules/setting"
@ -59,38 +57,19 @@ func MigrateTwoFactorToKeying(x *xorm.Engine) error {
oldEncryptionKey := md5.Sum([]byte(setting.SecretKey))
messages := make([]string, 0, 100)
ids := make([]int64, 0, 100)
err = db.Iterate(context.Background(), nil, func(ctx context.Context, bean *auth.TwoFactor) error {
return db.Iterate(context.Background(), nil, func(ctx context.Context, bean *auth.TwoFactor) error {
decodedStoredSecret, err := base64.StdEncoding.DecodeString(string(bean.Secret))
if err != nil {
messages = append(messages, fmt.Sprintf("two_factor.id=%d, two_factor.uid=%d: base64.StdEncoding.DecodeString: %v", bean.ID, bean.UID, err))
ids = append(ids, bean.ID)
return nil
return err
}
secretBytes, err := secret.AesDecrypt(oldEncryptionKey[:], decodedStoredSecret)
if err != nil {
messages = append(messages, fmt.Sprintf("two_factor.id=%d, two_factor.uid=%d: secret.AesDecrypt: %v", bean.ID, bean.UID, err))
ids = append(ids, bean.ID)
return nil
return err
}
bean.SetSecret(string(secretBytes))
_, err = db.GetEngine(ctx).Cols("secret").ID(bean.ID).Update(bean)
return err
})
if err == nil {
if len(ids) > 0 {
log.Error("Forgejo migration[25]: The following TOTP secrets were found to be corrupted and removed from the database. TOTP is no longer required to login with the associated users. They should be informed because they will need to visit their security settings and configure TOTP again. No other action is required. See https://codeberg.org/forgejo/forgejo/issues/6637 for more context on the various causes for such a corruption.")
for _, message := range messages {
log.Error("Forgejo migration[25]: %s", message)
}
_, err = db.GetEngine(context.Background()).In("id", ids).NoAutoCondition().NoAutoTime().Delete(&auth.TwoFactor{})
}
}
return err
}

View file

@ -36,14 +36,10 @@ func Test_MigrateTwoFactorToKeying(t *testing.T) {
cnt, err := x.Table("two_factor").Count()
require.NoError(t, err)
assert.EqualValues(t, 2, cnt)
assert.EqualValues(t, 1, cnt)
require.NoError(t, MigrateTwoFactorToKeying(x))
cnt, err = x.Table("two_factor").Count()
require.NoError(t, err)
assert.EqualValues(t, 1, cnt)
var twofactor auth.TwoFactor
_, err = x.Table("two_factor").ID(1).Get(&twofactor)
require.NoError(t, err)

View file

@ -7,10 +7,8 @@ import (
"context"
"code.gitea.io/gitea/models/db"
org_model "code.gitea.io/gitea/models/organization"
project_model "code.gitea.io/gitea/models/project"
user_model "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/modules/optional"
"code.gitea.io/gitea/modules/util"
)
@ -50,28 +48,22 @@ func (issue *Issue) ProjectColumnID(ctx context.Context) int64 {
}
// LoadIssuesFromColumn load issues assigned to this column
func LoadIssuesFromColumn(ctx context.Context, b *project_model.Column, doer *user_model.User, org *org_model.Organization, isClosed optional.Option[bool]) (IssueList, error) {
issueOpts := &IssuesOptions{
func LoadIssuesFromColumn(ctx context.Context, b *project_model.Column) (IssueList, error) {
issueList, err := Issues(ctx, &IssuesOptions{
ProjectColumnID: b.ID,
ProjectID: b.ProjectID,
SortType: "project-column-sorting",
IsClosed: isClosed,
AllPublic: true,
}
if doer != nil {
issueOpts.User = doer
issueOpts.Org = org
}
issueList, err := Issues(ctx, issueOpts)
})
if err != nil {
return nil, err
}
if b.Default {
issueOpts.ProjectColumnID = db.NoConditionID
issues, err := Issues(ctx, issueOpts)
issues, err := Issues(ctx, &IssuesOptions{
ProjectColumnID: db.NoConditionID,
ProjectID: b.ProjectID,
SortType: "project-column-sorting",
})
if err != nil {
return nil, err
}
@ -86,10 +78,10 @@ func LoadIssuesFromColumn(ctx context.Context, b *project_model.Column, doer *us
}
// LoadIssuesFromColumnList load issues assigned to the columns
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) {
func LoadIssuesFromColumnList(ctx context.Context, bs project_model.ColumnList) (map[int64]IssueList, error) {
issuesMap := make(map[int64]IssueList, len(bs))
for i := range bs {
il, err := LoadIssuesFromColumn(ctx, bs[i], doer, org, isClosed)
il, err := LoadIssuesFromColumn(ctx, bs[i])
if err != nil {
return nil, err
}
@ -168,36 +160,3 @@ 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

@ -1,173 +0,0 @@
// 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, 2)
assert.EqualValues(t, 16, issueList[0].ID)
assert.EqualValues(t, 6, issueList[1].ID)
issuesNum, err := issues.NumIssuesInProject(db.DefaultContext, orgProject, user2, org, optional.None[bool]())
require.NoError(t, err)
assert.EqualValues(t, 2, 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, 2, 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.Len(t, issueList, 1)
assert.EqualValues(t, 16, issueList[0].ID)
issuesNum, err := issues.NumIssuesInProject(db.DefaultContext, orgProject, nil, org, optional.None[bool]())
require.NoError(t, err)
assert.EqualValues(t, 1, issuesNum)
issuesNum, err = issues.NumIssuesInProject(db.DefaultContext, orgProject, nil, org, optional.Some(true))
require.NoError(t, err)
assert.EqualValues(t, 0, issuesNum)
issuesNum, err = issues.NumIssuesInProject(db.DefaultContext, orgProject, nil, org, optional.Some(false))
require.NoError(t, err)
assert.EqualValues(t, 1, 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, 2)
assert.EqualValues(t, 7, issueList[0].ID)
assert.EqualValues(t, 1, issueList[1].ID)
issuesNum, err := issues.NumIssuesInProject(db.DefaultContext, userProject, user2, nil, optional.None[bool]())
require.NoError(t, err)
assert.EqualValues(t, 2, 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, 2, 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.Len(t, issueList, 1)
assert.EqualValues(t, 1, issueList[0].ID)
issuesNum, err := issues.NumIssuesInProject(db.DefaultContext, userProject, nil, nil, optional.None[bool]())
require.NoError(t, err)
assert.EqualValues(t, 1, issuesNum)
issuesNum, err = issues.NumIssuesInProject(db.DefaultContext, userProject, nil, nil, optional.Some(true))
require.NoError(t, err)
assert.EqualValues(t, 0, issuesNum)
issuesNum, err = issues.NumIssuesInProject(db.DefaultContext, userProject, nil, nil, optional.Some(false))
require.NoError(t, err)
assert.EqualValues(t, 1, issuesNum)
})
})
}
func TestPrivateRepoProjects(t *testing.T) {
defer tests.AddFixtures("models/fixtures/TestPrivateRepoProjects/")()
require.NoError(t, unittest.PrepareTestDatabase())
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("Partial access", func(t *testing.T) {
defer tests.PrintCurrentTest(t)()
user29 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 29})
issueList, err := issues.LoadIssuesFromColumn(db.DefaultContext, column, user29, 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, user29, org, optional.None[bool]())
require.NoError(t, err)
assert.EqualValues(t, 1, issuesNum)
issuesNum, err = issues.NumIssuesInProject(db.DefaultContext, orgProject, user29, org, optional.Some(true))
require.NoError(t, err)
assert.EqualValues(t, 0, issuesNum)
issuesNum, err = issues.NumIssuesInProject(db.DefaultContext, orgProject, user29, org, optional.Some(false))
require.NoError(t, err)
assert.EqualValues(t, 1, issuesNum)
})
t.Run("Full access", func(t *testing.T) {
defer tests.PrintCurrentTest(t)()
user2 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
issueList, err := issues.LoadIssuesFromColumn(db.DefaultContext, column, user2, org, optional.None[bool]())
require.NoError(t, err)
assert.Len(t, issueList, 2)
assert.EqualValues(t, 15, issueList[0].ID)
assert.EqualValues(t, 6, issueList[1].ID)
issuesNum, err := issues.NumIssuesInProject(db.DefaultContext, orgProject, user2, org, optional.None[bool]())
require.NoError(t, err)
assert.EqualValues(t, 2, 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, 2, issuesNum)
})
}

View file

@ -49,13 +49,9 @@ type IssuesOptions struct { //nolint
// prioritize issues from this repo
PriorityRepoID int64
IsArchived optional.Option[bool]
// If combined with AllPublic, then private as well as public issues
// that matches the criteria will be returned, if AllPublic is false
// only the private issues will be returned.
Org *organization.Organization // issues permission scope
Team *organization.Team // issues permission scope
User *user_model.User // issues permission scope
Org *organization.Organization // issues permission scope
Team *organization.Team // issues permission scope
User *user_model.User // issues permission scope
}
// applySorts sort an issues-related session based on the provided
@ -200,8 +196,7 @@ func applyRepoConditions(sess *xorm.Session, opts *IssuesOptions) {
} else if len(opts.RepoIDs) > 1 {
opts.RepoCond = builder.In("issue.repo_id", opts.RepoIDs)
}
// If permission scoping is set, then we set this condition at a later stage.
if opts.AllPublic && opts.User == nil {
if opts.AllPublic {
if opts.RepoCond == nil {
opts.RepoCond = builder.NewCond()
}
@ -273,14 +268,7 @@ func applyConditions(sess *xorm.Session, opts *IssuesOptions) {
applyLabelsCondition(sess, opts)
if opts.User != nil {
cond := issuePullAccessibleRepoCond("issue.repo_id", opts.User.ID, opts.Org, opts.Team, opts.IsPull.Value())
// If AllPublic was set, then also consider all issues in public
// repositories in addition to the private repositories the user has access
// to.
if opts.AllPublic {
cond = cond.Or(builder.In("issue.repo_id", builder.Select("id").From("repository").Where(builder.Eq{"is_private": false})))
}
sess.And(cond)
sess.And(issuePullAccessibleRepoCond("issue.repo_id", opts.User.ID, opts.Org, opts.Team, opts.IsPull.Value()))
}
}
@ -341,9 +329,6 @@ func issuePullAccessibleRepoCond(repoIDstr string, userID int64, org *organizati
builder.Or(
repo_model.UserOrgUnitRepoCond(repoIDstr, userID, org.ID, unitType), // team member repos
repo_model.UserOrgPublicUnitRepoCond(userID, org.ID), // user org public non-member repos, TODO: check repo has issues
builder.And(
builder.In("issue.repo_id", builder.Select("id").From("repository").Where(builder.Eq{"owner_id": org.ID})),
repo_model.UserAccessRepoCond(repoIDstr, userID)), // user can access org repo in a unit independent way
),
)
}

View file

@ -7,12 +7,3 @@
last_used_passcode:
created_unix: 1564253724
updated_unix: 1564253724
-
id: 2
uid: 23
secret: badbad
scratch_salt: badbad
scratch_hash: badbad
last_used_passcode:
created_unix: 1564253724
updated_unix: 1564253724

View file

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

View file

@ -1,41 +0,0 @@
// 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,6 +57,20 @@ func (Column) TableName() string {
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) {
issues := make([]*ProjectIssue, 0, 5)
if err := db.GetEngine(ctx).Where("project_id=?", c.ProjectID).

View file

@ -34,6 +34,20 @@ func deleteProjectIssuesByProjectID(ctx context.Context, projectID int64) error
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
func (p *Project) NumClosedIssues(ctx context.Context) int {
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
func GetIssuePostersWithSearch(ctx context.Context, repo *Repository, isPull bool, search string, isShowFullName bool) ([]*user_model.User, error) {
users := make([]*user_model.User, 0, 30)
prefixCond := db.BuildCaseInsensitiveLike("name", search+"%")
var prefixCond builder.Cond = builder.Like{"name", search + "%"}
if isShowFullName {
prefixCond = db.BuildCaseInsensitiveLike("full_name", "%"+search+"%")
prefixCond = prefixCond.Or(builder.Like{"full_name", "%" + search + "%"})
}
cond := builder.In("`user`.id",

View file

@ -126,15 +126,17 @@ func (opts *SearchUserOptions) toSearchQueryBase(ctx context.Context) *xorm.Sess
return e.Where(cond)
}
// Check if the user has two factor enabled, which is TOTP or Webauthn.
// 2fa filter uses LEFT JOIN to check whether a user has a 2fa record
// 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() {
cond = cond.And(builder.Expr("two_factor.uid IS NOT NULL OR webauthn_credential.user_id IS NOT NULL"))
cond = cond.And(builder.Expr("two_factor.uid IS NOT NULL"))
} else {
cond = cond.And(builder.Expr("two_factor.uid IS NULL AND webauthn_credential.user_id IS NULL"))
cond = cond.And(builder.Expr("two_factor.uid IS NULL"))
}
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)
}

View file

@ -842,46 +842,48 @@ func countUsers(ctx context.Context, opts *CountUserFilter) int64 {
// VerifyUserActiveCode verifies that the code is valid for the given purpose for this user.
// If delete is specified, the token will be deleted.
func VerifyUserAuthorizationToken(ctx context.Context, code string, purpose auth.AuthorizationPurpose) (user *User, deleteToken func() error, err error) {
func VerifyUserAuthorizationToken(ctx context.Context, code string, purpose auth.AuthorizationPurpose, delete bool) (*User, error) {
lookupKey, validator, found := strings.Cut(code, ":")
if !found {
return nil, nil, nil
return nil, nil
}
authToken, err := auth.FindAuthToken(ctx, lookupKey, purpose)
if err != nil {
if errors.Is(err, util.ErrNotExist) {
return nil, nil, nil
return nil, nil
}
return nil, nil, err
return nil, err
}
if authToken.IsExpired() {
return nil, nil, auth.DeleteAuthToken(ctx, authToken)
return nil, auth.DeleteAuthToken(ctx, authToken)
}
rawValidator, err := hex.DecodeString(validator)
if err != nil {
return nil, nil, err
return nil, err
}
if subtle.ConstantTimeCompare([]byte(authToken.HashedValidator), []byte(auth.HashValidator(rawValidator))) == 0 {
return nil, nil, errors.New("validator doesn't match")
return nil, errors.New("validator doesn't match")
}
u, err := GetUserByID(ctx, authToken.UID)
if err != nil {
if IsErrUserNotExist(err) {
return nil, nil, nil
return nil, nil
}
return nil, nil, err
return nil, err
}
deleteToken = func() error {
return auth.DeleteAuthToken(ctx, authToken)
if delete {
if err := auth.DeleteAuthToken(ctx, authToken); err != nil {
return nil, err
}
}
return u, deleteToken, nil
return u, nil
}
// ValidateUser check if user is valid to insert / update into database

View file

@ -222,7 +222,7 @@ func TestSearchUsers(t *testing.T) {
[]int64{1041, 37})
testUserSuccess(&user_model.SearchUserOptions{ListOptions: db.ListOptions{Page: 1}, IsTwoFactorEnabled: optional.Some(true)},
[]int64{24, 32})
[]int64{24})
}
func TestEmailNotificationPreferences(t *testing.T) {
@ -741,13 +741,13 @@ func TestVerifyUserAuthorizationToken(t *testing.T) {
assert.True(t, ok)
t.Run("Wrong purpose", func(t *testing.T) {
u, _, err := user_model.VerifyUserAuthorizationToken(db.DefaultContext, code, auth.PasswordReset)
u, err := user_model.VerifyUserAuthorizationToken(db.DefaultContext, code, auth.PasswordReset, false)
require.NoError(t, err)
assert.Nil(t, u)
})
t.Run("No delete", func(t *testing.T) {
u, _, err := user_model.VerifyUserAuthorizationToken(db.DefaultContext, code, auth.UserActivation)
u, err := user_model.VerifyUserAuthorizationToken(db.DefaultContext, code, auth.UserActivation, false)
require.NoError(t, err)
assert.EqualValues(t, user.ID, u.ID)
@ -757,10 +757,9 @@ func TestVerifyUserAuthorizationToken(t *testing.T) {
})
t.Run("Delete", func(t *testing.T) {
u, deleteToken, err := user_model.VerifyUserAuthorizationToken(db.DefaultContext, code, auth.UserActivation)
u, err := user_model.VerifyUserAuthorizationToken(db.DefaultContext, code, auth.UserActivation, true)
require.NoError(t, err)
assert.EqualValues(t, user.ID, u.ID)
require.NoError(t, deleteToken())
authToken, err := auth.FindAuthToken(db.DefaultContext, lookupKey, auth.UserActivation)
require.ErrorIs(t, err, util.ErrNotExist)

View file

@ -10,39 +10,24 @@
package annex
import (
"bytes"
"context"
"errors"
"fmt"
"io"
"io/fs"
"os"
"path"
"path/filepath"
"regexp"
"strings"
"sync"
"time"
"code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/typesniffer"
"gopkg.in/ini.v1" //nolint:depguard // This import is forbidden in favor of using the setting module, but we need ini parsing for something other than Forgejo settings
)
// ErrBlobIsNotAnnexed occurs if a blob does not contain a valid annex key
var ErrBlobIsNotAnnexed = errors.New("not a git-annex pointer")
func PrivateInit(ctx context.Context, repoPath string) error {
if _, _, err := git.NewCommand(ctx, "config", "annex.private", "true").RunStdString(&git.RunOpts{Dir: repoPath}); err != nil {
return err
}
if _, _, err := git.NewCommand(ctx, "annex", "init").RunStdString(&git.RunOpts{Dir: repoPath}); err != nil {
return err
}
return nil
}
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 {
@ -52,42 +37,6 @@ func LookupKey(blob *git.Blob) (string, error) {
return key, nil
}
// LookupKeyBatch runs git annex lookupkey --batch --ref
func LookupKeyBatch(ctx context.Context, shasToBatchReader *io.PipeReader, lookupKeyBatchWriter *io.PipeWriter, wg *sync.WaitGroup, repoPath string) {
defer wg.Done()
defer shasToBatchReader.Close()
defer lookupKeyBatchWriter.Close()
stderr := new(bytes.Buffer)
var errbuf strings.Builder
if err := git.NewCommand(ctx, "annex", "lookupkey", "--batch", "--ref").Run(&git.RunOpts{
Dir: repoPath,
Stdout: lookupKeyBatchWriter,
Stdin: shasToBatchReader,
Stderr: stderr,
}); err != nil {
_ = lookupKeyBatchWriter.CloseWithError(fmt.Errorf("git annex lookupkey --batch --ref [%s]: %w - %s", repoPath, err, errbuf.String()))
}
}
// CopyFromToBatch runs git -c annex.hardlink=true annex copy --batch-keys --from <remote> --to <remote>
func CopyFromToBatch(ctx context.Context, from, to string, keysToCopyReader *io.PipeReader, wg *sync.WaitGroup, repoPath string) {
defer wg.Done()
defer keysToCopyReader.Close()
stdout := new(bytes.Buffer)
stderr := new(bytes.Buffer)
var errbuf strings.Builder
if err := git.NewCommand(ctx, "-c", "annex.hardlink=true", "annex", "copy", "--batch-keys", "--from").AddDynamicArguments(from).AddArguments("--to").AddDynamicArguments(to).Run(&git.RunOpts{
Dir: repoPath,
Stdout: stdout,
Stdin: keysToCopyReader,
Stderr: stderr,
}); err != nil {
_ = keysToCopyReader.CloseWithError(fmt.Errorf("git annex copy --batch-keys --from <remote> --to <remote> [%s]: %w - %s", repoPath, err, errbuf.String()))
}
}
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 {
@ -140,18 +89,14 @@ func IsAnnexed(blob *git.Blob) (bool, error) {
return true, nil
}
// PathIsAnnexRepo determines if repoPath is a git-annex enabled repository
func PathIsAnnexRepo(repoPath string) bool {
_, _, err := git.NewCommand(git.DefaultContext, "config", "annex.uuid").RunStdString(&git.RunOpts{Dir: repoPath})
return err == 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)
@ -161,39 +106,30 @@ func Init() error {
if !setting.Annex.Enabled {
return nil
}
if !setting.Annex.DisableP2PHTTP {
log.Info("Populating the git-annex UUID cache with existing repositories")
start := time.Now()
if err := updateUUID2RepoPathCache(); err != nil {
return err
}
log.Info("Populating the git-annex UUID cache took %v", time.Since(start))
}
return nil
log.Info("Populating the git-annex UUID cache with existing repositories")
return updateUUID2RepoPathCache()
}
func updateUUID2RepoPathCache() error {
configFiles, err := filepath.Glob(filepath.Join(setting.RepoRootPath, "*", "*", "config"))
if err != nil {
return err
}
for _, configFile := range configFiles {
repoPath := strings.TrimSuffix(configFile, "/config")
_, ok := repoPath2uuidCache[repoPath]
if ok {
continue
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
}
}
config, err := ini.Load(configFile)
if err != nil {
continue
}
repoUUID := config.Section("annex").Key("uuid").Value()
if repoUUID != "" {
uuid2repoPathCache[repoUUID] = repoPath
repoPath2uuidCache[repoPath] = repoUUID
}
}
return nil
return nil
})
}
func repoPathFromUUIDCache(uuid string) (string, error) {

View file

@ -106,36 +106,3 @@ func BlobsLessThan1024FromCatFileBatchCheck(catFileCheckReader *io.PipeReader, s
}
}
}
// BlobsLessThanOrEqual32KiBFromCatFileBatchCheck reads a pipeline from cat-file --batch-check and returns the blobs <=32KiB in size
func BlobsLessThanOrEqual32KiBFromCatFileBatchCheck(catFileCheckReader *io.PipeReader, shasToBatchWriter *io.PipeWriter, wg *sync.WaitGroup) {
defer wg.Done()
defer catFileCheckReader.Close()
scanner := bufio.NewScanner(catFileCheckReader)
defer func() {
_ = shasToBatchWriter.CloseWithError(scanner.Err())
}()
for scanner.Scan() {
line := scanner.Text()
if len(line) == 0 {
continue
}
fields := strings.Split(line, " ")
if len(fields) < 3 || fields[1] != "blob" {
continue
}
size, _ := strconv.Atoi(fields[2])
if size > 32*1024 {
continue
}
toWrite := []byte(fields[0] + "\n")
for len(toWrite) > 0 {
n, err := shasToBatchWriter.Write(toWrite)
if err != nil {
_ = catFileCheckReader.CloseWithError(err)
break
}
toWrite = toWrite[n:]
}
}
}

View file

@ -8,7 +8,6 @@ import (
"bytes"
"html/template"
"io"
"net/url"
"regexp"
"slices"
"strconv"
@ -78,16 +77,6 @@ func newFilePreview(ctx *RenderContext, node *html.Node, locale translation.Loca
commitSha := node.Data[m[4]:m[5]]
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]]
preview.start = m[0]
@ -124,7 +113,7 @@ func newFilePreview(ctx *RenderContext, node *html.Node, locale translation.Loca
titleBuffer.WriteString(" &ndash; ")
}
err = html.Render(titleBuffer, createLink(urlFullSource, filePath, "muted"))
err = html.Render(titleBuffer, createLink(urlFull, filePath, "muted"))
if err != nil {
log.Error("failed to render filepathLink: %v", err)
}

View file

@ -1026,138 +1026,4 @@ func TestRender_FilePreview(t *testing.T) {
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

@ -7,7 +7,6 @@ import (
"fmt"
"code.gitea.io/gitea/modules/markup"
mdutil "code.gitea.io/gitea/modules/markup/markdown/util"
"code.gitea.io/gitea/modules/util"
"github.com/yuin/goldmark/ast"
@ -20,7 +19,7 @@ func (g *ASTTransformer) transformHeading(_ *markup.RenderContext, v *ast.Headin
v.SetAttribute(attr.Name, []byte(fmt.Sprintf("%v", attr.Value)))
}
}
txt := mdutil.Text(v, reader.Source())
txt := v.Lines().Value(reader.Source())
header := markup.Header{
Text: util.UnsafeBytesToString(txt),
Level: v.Level,

View file

@ -1 +0,0 @@
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

@ -1 +0,0 @@
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 @@
eeb243c3395e1921c5d90e73bd739827251fc99d
4c1aaf56bcb9f39dcf65f3f250726850aed13cd6

View file

@ -47,7 +47,7 @@ func AesDecrypt(key, text []byte) ([]byte, error) {
cfb.XORKeyStream(text, text)
data, err := base64.StdEncoding.DecodeString(string(text))
if err != nil {
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 nil, fmt.Errorf("AesDecrypt invalid decrypted base64 string: %w", err)
}
return data, nil
}

View file

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

View file

@ -1779,10 +1779,6 @@ runners.task_list.repository = Хранилище
runners.description = Описание
runs.no_workflows.help_no_write_access = За да научите повече за Forgejo Actions, вижте <a target="_blank" rel="noopener noreferrer" href="%s">документацията</a>.
variables.management = Управление на променливи
variables.id_not_exist = Променлива с идентификатор %d не съществува.
variables.not_found = Променливата не е открита.
[heatmap]
less = По-малко
number_of_contributions_in_the_last_12_months = %s приноса през последните 12 месеца
@ -1819,8 +1815,6 @@ code_frequency.what = честота на промените
type-1.display_name = Индивидуален проект
deleted.display_name = Изтрит проект
[search]
no_results = Няма намерени съответстващи резултати.
team_kind = Търсене на екипи...

View file

@ -175,7 +175,7 @@ exact = Exacte
exact_tooltip = Inclou només resultats que són exactament el terme de cerca
issue_kind = Cerca problemes...
regexp = RegExp
regexp = Expressió regular
regexp_tooltip = Interpreta el terme de cerca com una expressió regular
[heatmap]
@ -215,7 +215,7 @@ reinstall_error = Estas intentant instaŀlar sobre una base de dades existent de
reinstall_confirm_message = Reinstaŀlar amb una base de dades existent de Forgejo pot causar diferents problemes. En la majoria de casos, s'hauria d'utilitzar l'"app.ini" existent per executar Forgejo. Si saps el que estàs fent, confirma el seguent:
no_admin_and_disable_registration = No pot deshabilitar l'autoregistre d'usuaris sense crear un compte d'administrador.
err_admin_name_is_reserved = El nom d'usuari "Administrador" no es vàlid: està reservat
smtp_addr = Hoste SMTP
smtp_addr = Hoste SMPT
smtp_port = Port SMPT
smtp_from = Enviar correu com a
mailer_user = Nom d'usuari SMTP
@ -414,10 +414,6 @@ password_pwned_err = No s'ha pogut completar la sol·licitud a HaveIBeenPwned
last_admin = No podeu eliminar l'últim usuari administrador. Com a mínim n'hi ha d'haver un.
back_to_sign_in = Torneu a entrar
openid_connect_desc = No s'ha reconegut la URI OpenID. Vinculeu-la amb un compte nou aquí.
openid_register_desc = No s'ha reconegut la URI OpenID. Vinculeu-la amb un compte nou aquí.
sign_in_openid = Accediu amb OpenID
[editor]
buttons.indent.tooltip = Aniua els elements un nivell
buttons.unindent.tooltip = Desaniuna els elements un nivell
@ -480,8 +476,4 @@ activate_account = Si us plau, activeu el compte
activate_account.text_1 = Hola <b>%[1]s</b>, gràcies per registrar-te a %[2]s!
admin.new_user.user_info = Informació d'usuari
admin.new_user.text = Si us plau, <a href="%s">cliqueu aui</a> per administrar aquest usuari des del panell d'administració.
register_notify = Benvinguts a %s
activate_account.text_2 = Si us plau, cliqueu l'enllaç següent per activar el vostre compte en <b>%s</b>:
activate_email = Verifica la teva adreça de correu electrònic
activate_email.text = Si us plau, cliqueu el següent enllaç per verificar la vostra adreça de correu electrònic en <b>%s</b>
admin.new_user.subject = Nou usuari %s s'acaba d'enregistrar
register_notify = Benvinguts a %s

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -683,8 +683,6 @@ To = Branchname
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]
change_avatar=Profilbild ändern …
joined_on=Beigetreten am %s
@ -2874,8 +2872,6 @@ issues.reaction.alt_remove = Entferne %[1]s Reaktion von diesem Kommentar.
summary_card_alt = Zusammenfassungskarte des Repositorys %s
release.summary_card_alt = Übersichtskarte eines Releases mit dem Titel „%s“ im Repository %s
editor.commit_email = Commit-E-Mail
[graphs]
component_loading_failed = Konnte %s nicht laden
component_loading_info = Dies könnte einen Moment dauern …
@ -3116,7 +3112,7 @@ dashboard.sync_branch.started=Synchronisierung der Branches gestartet
dashboard.rebuild_issue_indexer=Issue-Indexer neu bauen
users.user_manage_panel=Benutzerkonten verwalten
users.new_account=Benutzeraccount erstellen
users.new_account=Benutzerkonto erstellen
users.name=Benutzername
users.full_name=Vollständiger Name
users.activated=Aktiviert
@ -3585,7 +3581,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`
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>
push_tag=hat Tag <a href="%[2]s">%[3]s</a> auf <a href="%[1]s">%[4]s</a> gepusht
push_tag=Tag <a href="%[2]s">%[3]s</a> nach <a href="%[1]s">%[4]s</a> wurde gepusht
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
compare_branch=Vergleichen
@ -3950,8 +3946,6 @@ runs.expire_log_message = Logs wurden gelöscht, weil sie zu alt waren.
runs.no_workflows.help_write_access = Keine Ahnung, wie man mit Forgejo Actions anfangen soll? Schau im <a target="_blank" rel="noopener noreferrer" href="%s">Schnellstart in der Benutzerdokumentation</a> vorbei, um deinen ersten Workflow zu schreiben, dann <a target="_blank" rel="noopener noreferrer" href="%s">setze einen Forgejo-Runner auf</a>, um deine Jobs auszuführen.
runs.no_workflows.help_no_write_access = Um über Forgejo Actions zu lernen, siehe <a target="_blank" rel="noopener noreferrer" href="%s">die Dokumentation</a>.
variables.not_found = Die Variable wurde nicht gefunden.
[projects]
type-1.display_name=Individuelles Projekt
type-2.display_name=Repository-Projekt
@ -3984,7 +3978,7 @@ package_kind = Pakete suchen …
project_kind = Projekte suchen …
branch_kind = Branches suchen …
commit_kind = Commits suchen …
runner_kind = Runner suchen …
runner_kind = Runners suchen …
no_results = Keine passenden Ergebnisse gefunden.
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.

View file

@ -518,15 +518,15 @@ issue_assigned.issue=Ο/Η @%[1]s σας ανέθεσε το ζήτημα %[2]s
issue.x_mentioned_you=Ο/Η <b>@%s</b> σας ανέφερε:
issue.action.force_push=Ο/Η <b>%[1]s</b> έκανε force-push το <b>%[2]s</b> από %[3]s σε %[4]s.
issue.action.push_1=Ο/Η <b>@%[1]s</b> έκανε push το commit %[3]d στο %[2]s
issue.action.push_n=Ο/Η <b>@%[1]s</b> έκανε push τα commits %[3]d στο %[2]s
issue.action.push_1=Ο/Η <b>@%[1]s</b> έκανε push την υποβολή %[3]d στο %[2]s
issue.action.push_n=Ο/Η <b>@%[1]s</b> έκανε push τις υποβολές %[3]d στο %[2]s
issue.action.close=Ο/Η <b>@%[1]s</b> έκλεισε το #%[2]d.
issue.action.reopen=Ο/Η <b>@%[1]s</b> άνοιξε ξανά το #%[2]d.
issue.action.merge=Ο/Η <b>@%[1]s</b> συγχώνευσε το #%[2]d στο %[3]s.
issue.action.approve=<b>@%[1]s</b> ενέκρινε αυτό το pull request.
issue.action.reject=<b>@%[1]s</b> ζήτησε αλλαγές σε αυτό το pull request.
issue.action.review=<b>@%[1]s</b> άφησε σχόλιο σε αυτό το pull request.
issue.action.review_dismissed=<b>@%[1]s</b> απέρριψε την τελευταία αξιολόγηση από %[2]s για αυτό το pull request.
issue.action.review_dismissed=<b>@%[1]s</b> απέρριψε την τελευταία αναθεώρηση από %[2]s για αυτό το pull request.
issue.action.ready_for_review=Ο/Η <b>@%[1]s</b> επισήμανε πως αυτό το pull request είναι έτοιμο για αξιολόγηση.
issue.action.new=Ο/Η <b>@%[1]s</b> δημιούργησε το #%[2]d.
issue.in_tree_path=Σε %s:
@ -591,9 +591,9 @@ AuthName=Όνομα εξουσιοδότησης
AdminEmail=Email διαχειριστή
NewBranchName=Όνομα νέου κλάδου
CommitSummary=Περίληψη commit
CommitMessage=Μήνυμα commit
CommitChoice=Επιλογή commit
CommitSummary=Περίληψη υποβολών
CommitMessage=Μήνυμα υποβολής
CommitChoice=Επιλογή υποβολής
TreeName=Διαδρομή αρχείου
Content=Περιεχόμενο
@ -682,8 +682,6 @@ Website = Ιστοσελίδα
Location = Τοποθεσία
email_domain_is_not_allowed = Το domain του email χρήστη <b>%s</b> έρχεται σε σύγκρουση είτε με την ρύθμιση EMAIL_DOMAIN_ALLOWLIST ή με την ρύθμιση EMAIL_DOMAIN_BLOCKLIST. Βεβαιωθείτε ότι η διεύθυνση email έχει οριστεί σωστά.
[user]
change_avatar=Αλλαγή εικόνας προφίλ…
joined_on=Εγγράφηκε στις %s
@ -770,7 +768,7 @@ language=Γλώσσα
ui=Θέμα Διεπαφής
hidden_comment_types=Κρυμμένοι τύποι σχολίων
hidden_comment_types_description=Οι τύποι σχολίων που επιλέγονται εδώ δε θα εμφανίζονται μέσα στις σελίδες ζητημάτων. Επιλέγοντας π.χ τις "Ταμπέλες", θα αφαιρεθούν όλα τα σχόλια σαν το "<user> πρόσθεσε/αφαίρεσε τα σήματα <label>".
hidden_comment_types.ref_tooltip=Σχόλια όπου αυτό το ζήτημα αναφέρθηκε από άλλο ζήτημα/commit/…
hidden_comment_types.ref_tooltip=Σχόλια όπου αυτό το ζήτημα αναφέρθηκε από άλλο ζήτημα/υποβολή/…
hidden_comment_types.issue_ref_tooltip=Σχόλια όπου ο χρήστης αλλάζει τον κλάδο/ετικέτα που σχετίζεται με το ζήτημα
comment_type_group_reference=Αναφορά
comment_type_group_label=Σήμα
@ -783,7 +781,7 @@ comment_type_group_deadline=Προθεσμία
comment_type_group_dependency=Εξάρτηση
comment_type_group_lock=Κατάσταση κλειδώματος
comment_type_group_review_request=Αίτηση αξιολόγησης
comment_type_group_pull_request_push=Προστέθηκαν commits
comment_type_group_pull_request_push=Προστέθηκαν υποβολές
comment_type_group_project=Έργο
comment_type_group_issue_ref=Αναφορά ζητήματος
saved_successfully=Οι ρυθμίσεις σας αποθηκεύτηκαν επιτυχώς.
@ -825,7 +823,7 @@ activations_pending=Εκκρεμεί ενεργοποίηση
can_not_add_email_activations_pending=Εκκρεμεί μια ενεργοποίηση, δοκιμάστε ξανά σε λίγα λεπτά αν θέλετε να προσθέσετε ένα νέο email.
delete_email=Αφαίρεση
email_deletion=Αφαίρεση διεύθυνσης email
email_deletion_desc=Η διεύθυνση email και οι πληροφορίες που συσχετίζονται με αυτήν θα αφαιρεθούν από τον λογαριασμό σας. Τα Git commit που περιλαμβάνουν το email δεν θα επηρεαστούν. Συνέχεια;
email_deletion_desc=Η διεύθυνση ηλεκτρονικού ταχυδρομείου και οι σχετικές πληροφορίες θα αφαιρεθούν από τον λογαριασμό σας. Οι υποβολές Git από αυτή τη διεύθυνση email θα παραμείνουν αμετάβλητες. Συνέχεια;
email_deletion_success=Η διεύθυνση email σας έχει καταργηθεί.
theme_update_success=Το θέμα διεπαφής σας ενημερώθηκε.
theme_update_error=Το επιλεγμένο θέμα διεπαφής δεν υπάρχει.
@ -841,16 +839,16 @@ add_email_success=Η νέα διεύθυνση email έχει προστεθεί
email_preference_set_success=Οι προτιμήσεις email έχουν οριστεί επιτυχώς.
add_openid_success=Προστέθηκε η νέα διεύθυνση OpenID.
keep_email_private=Απόκρυψη διεύθυνσης email
keep_email_private_popup=Η διεύθυνση email σας δεν θα εμφανίζεται στο προφίλ σας και δεν θα χρησιμοποιείται για commits που γίνονται μέσω του web UI, όπως σε ανεβασμένα αρχεία, αλλαγές ή merge commits. Για τον συσχετισμό commit με τον λογαριασμό σας, θα χρησιμοποιηθεί αντί αυτού η ειδική διεύθυνση %s. Αυτή η ρύθμιση δεν επηρεάζει commit που υπάρχουν ήδη.
keep_email_private_popup=Αυτό θα κρύψει το email σας από το προφίλ σας, καθώς και όταν κάνετε ένα pull request ή επεξεργάζεστε ένα αρχείο μέσω της ιστοσελίδας. Οι υποβολές που έχετε ήδη ωθήσει δεν θα τροποποιηθούν. Χρησιμοποιήστε το %s στις υποβολές για να τις συσχετίσετε με το λογαριασμό σας.
openid_desc=Το OpenID σας επιτρέπει να αναθέσετε τον έλεγχο ταυτότητας σε έναν εξωτερικό πάροχο.
manage_ssh_keys=Διαχείριση κλειδιών SSH
manage_ssh_principals=Διαχείριση Των Αρχών Πιστοποιητικού SSH
manage_gpg_keys=Διαχείριση κλειδιών GPG
add_key=Προσθήκη κλειδιού
ssh_desc=Αυτά τα δημόσια κλειδιά SSH θα συσχετιθούν με το λογαριασμό σας. Τα ιδιωτικά κλειδιά που τους αντιστοιχούν θα επιτρέπουν πλήρη πρόσβαση στα αποθετήριά σας. Ένα επιβεβαιωμένο κλειδί SSH μπορεί να χρησιμοποιηθεί για την υπογραφή των commit σας.
ssh_desc=Αυτά τα δημόσια κλειδιά SSH θα συσχετιθούν με το λογαριασμό σας. Τα ιδιωτικά κλειδιά που τους αντιστοιχούν θα επιτρέπουν πλήρη πρόσβαση στα αποθετήριά σας. Ένα επιβεβαιωμένο κλειδί SSH μπορεί να χρησιμοποιηθεί για την υπογραφή των υποβολών (commits) σας.
principal_desc=Αυτές οι αρχές πιστοποιητικών SSH συνδέονται με το λογαριασμό σας και επιτρέπουν την πλήρη πρόσβαση στα αποθετήριά σας.
gpg_desc=Αυτά τα δημόσια κλειδιά GPG συσχετίζονται με το λογαριασμό σας και επιτρέπουν την επικύρωση των commit σας. Κρατήστε τα ιδιωτικά κλειδιά σας ασφαλή, καθώς επιτρέπουν την υπογραφή των commits εκ μέρους σας.
gpg_desc=Αυτά τα δημόσια κλειδιά GPG συσχετίζονται με το λογαριασμό σας και επιτρέπουν την επικύρωση των υποβολών (commits) σας. Κρατήστε τα ιδιωτικά κλειδιά σας ασφαλή, καθώς επιτρέπουν την υπογραφή των υποβολών (commits) εκ μέρους σας.
ssh_helper=<strong>Χρειάζεστε βοήθεια;</strong> Συμβουλευτείτε τον οδηγό του GitHub για να <a href="%s">δημιουργήσετε τα δικά σας κλειδιά SSH</a> ή να επιλύσετε <a href="%s">κοινά προβλήματα</a> που ίσως αντιμετωπίσετε με τη χρήση του SSH.
gpg_helper=<strong>Χρειάζεστε βοήθεια;</strong> Συμβουλευτείτε τον οδηγό του GitHub <a href="%s">για το GPG</a>.
add_new_key=Προσθήκη κλειδιού SSH
@ -864,9 +862,9 @@ ssh_principal_been_used=Αυτή η αρχή πιστοποίησης (principal
gpg_key_id_used=Υπάρχει ήδη δημόσιο κλειδί GPG με το ίδιο ID.
gpg_no_key_email_found=Αυτό το κλειδί GPG δεν ταιριάζει με οποιαδήποτε ενεργοποιημένη διεύθυνση ηλεκτρονικού ταχυδρομείου που σχετίζεται με το λογαριασμό σας. Μπορεί ακόμα να προστεθεί, αν υπογράψετε το παρεχόμενο διακριτικό (token).
gpg_key_matched_identities=Ταυτότητες που ταιριάζουν:
gpg_key_matched_identities_long=Οι ενσωματωμένες ταυτότητες σε αυτό το κλειδί ταιριάζουν με τις ακόλουθες ενεργοποιημένες διευθύνσεις email για αυτόν το χρήστη. Τα commit που περιέχουν αυτές τις διευθύνσεις email μπορούν να επαληθευτούν με αυτό το κλειδί.
gpg_key_matched_identities_long=Οι ενσωματωμένες ταυτότητες σε αυτό το κλειδί ταιριάζουν με τις ακόλουθες ενεργοποιημένες διευθύνσεις email για αυτόν το χρήστη. Οι υποβολές που ταιριάζουν με αυτές τις διευθύνσεις email μπορούν να επαληθευτούν με αυτό το κλειδί.
gpg_key_verified=Επαληθευμένο κλειδί
gpg_key_verified_long=Το κλειδί έχει επαληθευτεί με ένα διακριτικό (token) και μπορεί να χρησιμοποιηθεί για να επαληθεύσει τα commit που ταιριάζουν με οποιεσδήποτε ενεργοποιημένες διευθύνσεις email για αυτόν το χρήστη εκτός από οποιαδήποτε αντιστοιχισμένη ταυτότητα για αυτό το κλειδί.
gpg_key_verified_long=Το κλειδί έχει επαληθευτεί με ένα διακριτικό (token) και μπορεί να χρησιμοποιηθεί για να επαληθεύσει τις υποβολές που ταιριάζουν με οποιεσδήποτε ενεργοποιημένες διευθύνσεις email για αυτόν το χρήστη εκτός από οποιαδήποτε αντιστοιχισμένη ταυτότητα για αυτό το κλειδί.
gpg_key_verify=Επαλήθευση
gpg_invalid_token_signature=Το κλειδί GPG, η υπογραφή και το διακριτικό (token) δεν ταιριάζουν ή το διακριτικό (token) είναι παρωχημένο.
gpg_token_required=Πρέπει να δώσετε μια υπογραφή για το παρακάτω διακριτικό
@ -877,7 +875,7 @@ gpg_token_signature=Θωρακισμένη υπογραφή GPG
key_signature_gpg_placeholder=Αρχίζει με «-----BEGIN PGP SIGNATURE-----»
verify_gpg_key_success=Το κλειδί GPG «%s» επαληθεύτηκε.
ssh_key_verified=Επαληθευμένο κλειδί
ssh_key_verified_long=Το κλειδί έχει επαληθευτεί με ένα διακριτικό και μπορεί να χρησιμοποιηθεί για να επαληθεύσει τα commit που ταιριάζουν με οποιεσδήποτε ενεργοποιημένες διευθύνσεις ηλεκτρονικού ταχυδρομείου για αυτόν το χρήστη.
ssh_key_verified_long=Το κλειδί έχει επαληθευτεί με ένα διακριτικό και μπορεί να χρησιμοποιηθεί για να επαληθεύσει τα commits που ταιριάζουν με οποιεσδήποτε ενεργοποιημένες διευθύνσεις ηλεκτρονικού ταχυδρομείου για αυτόν το χρήστη.
ssh_key_verify=Επαλήθευση
ssh_invalid_token_signature=Το παρεχόμενο κλειδί SSH, υπογραφή ή διακριτικό δεν ταιριάζει ή το διακριτικό έληξε.
ssh_token_required=Πρέπει να δώσετε μια υπογραφή για το παρακάτω διακριτικό
@ -899,7 +897,7 @@ ssh_key_deletion=Διαγραφή κλειδιού SSH
gpg_key_deletion=Διαγραφή κλειδιού GPG
ssh_principal_deletion=Διαγραφή Αρχών Πιστοποιητικού SSH
ssh_key_deletion_desc=Η διαγραφή ενός κλειδιού SSH ανακαλεί την πρόσβασή του στο λογαριασμό σας. Συνέχεια;
gpg_key_deletion_desc=Η διαγραφή ενός κλειδιού GPG αφαιρεί τις επαληθεύσεις των commit που έχουν υπογραφεί από αυτό το κλειδί. Συνέχεια;
gpg_key_deletion_desc=Η διαγραφή ενός κλειδιού GPG απο-επαληθεύει τις υποβολές που έχουν υπογραφεί από αυτό. Συνέχεια;
ssh_principal_deletion_desc=Η διαγραφή μιας αρχής πιστοποιητικού SSH ανακαλεί την πρόσβασή της στο λογαριασμό σας. Συνέχεια;
ssh_key_deletion_success=Το SSH κλειδί έχει διαγραφεί.
gpg_key_deletion_success=Το κλειδί GPG έχει διαγραφεί.
@ -917,7 +915,7 @@ principal_state_desc=Αυτή η αρχή πιστοποιητικού έχει
show_openid=Εμφάνιση στο προφίλ
hide_openid=Απόκρυψη από το προφίλ
ssh_disabled=Το SSH είναι απενεργοποιημένο
ssh_signonly=Το SSH είναι απενεργοποιημένο αυτή τη στιγμή, έτσι αυτά τα κλειδιά είναι μόνο για την επαλήθευση υπογραφών των commit.
ssh_signonly=Το SSH είναι απενεργοποιημένο αυτή τη στιγμή, έτσι αυτά τα κλειδιά είναι μόνο για την επαλήθευση υπογραφής των υποβολών.
ssh_externally_managed=Αυτό το κλειδί SSH διαχειρίζεται εξωτερικά για αυτόν το χρήστη
manage_social=Διαχείριση Συσχετιζόμενων Λογαριασμών Κοινωνικών Δικτύων
social_desc=Αυτοί οι λογαριασμοί κοινωνικών δικτύων μπορούν να χρησιμοποιηθούν για να συνδεθείτε στο λογαριασμό σας. Βεβαιωθείτε ότι τους αναγνωρίζετε όλους.
@ -1113,7 +1111,7 @@ trust_model_helper_default=Προεπιλογή: Χρήση προεπιλεγμ
create_repo=Δημιουργία αποθετηρίου
default_branch=Προεπιλεγμένος κλάδος
default_branch_label=προεπιλογή
default_branch_helper=Ο προεπιλεγμένος κλάδος είναι ο βασικός κλάδος για pull requests και commits.
default_branch_helper=Ο προεπιλεγμένος κλάδος είναι ο βασικός κλάδος για pull requests και υποβολές κώδικα.
mirror_prune=Καθαρισμός
mirror_prune_desc=Αφαίρεση παρωχημένων αναφορών απομακρυσμένης-παρακολούθησης
mirror_interval=Διάστημα ανανέωσης ειδώλου (έγκυρες μονάδες ώρας είναι "h", "m", "s"). 0 για απενεργοποίηση του αυτόματου συγχρονισμού. (Ελάχιστο διάστημα: %s)
@ -1152,7 +1150,7 @@ blame.ignore_revs=Αγνόηση των αναθεωρήσεων στο <a href=
blame.ignore_revs.failed=Αποτυχία αγνόησης των αναθεωρήσεων στο <a href="%s">.git-blame-ignore-revs</a>.
author_search_tooltip=Εμφάνιση το πολύ 30 χρηστών
tree_path_not_found_commit=Η διαδρομή %[1]s δεν υπάρχει στο commit %[2]s
tree_path_not_found_commit=Η διαδρομή %[1]s δεν υπάρχει στην υποβολή %[2]s
tree_path_not_found_branch=Η διαδρομή %[1]s δεν υπάρχει στον κλάδο %[2]s
tree_path_not_found_tag=Η διαδρομή %[1]s δεν υπάρχει στην ετικέτα %[2]s
@ -1228,7 +1226,7 @@ migrate.migrating_failed_no_addr=Η μεταφορά απέτυχε.
migrate.github.description=Μεταφορά δεδομένων από το github.com ή διακομιστές GitHub Enterprise.
migrate.git.description=Μεταφορά μόνο του αποθετηρίου από μια οποιαδήποτε υπηρεσία Git.
migrate.gitlab.description=Μεταφορά δεδομένων από το gitlab.com ή άλλες εγκαταστάσεις GitLab.
migrate.gitea.description=Μεταφορά δεδομένων από το gitea.com ή άλλες εγκαταστάσεις Gitea.
migrate.gitea.description=Μεταφορά δεδομένων από το gitea.com ή άλλες εγκαταστάσεις Gitea/Forgejo.
migrate.gogs.description=Μεταφορά δεδομένων από το notabug.org ή άλλες εγκαταστάσεις Gogs.
migrate.onedev.description=Μεταφορά δεδομένων από το code.onedev.io ή άλλες εγκαταστάσεις OneDev.
migrate.codebase.description=Μεταφορά δεδομένων από το codebasehq.com.
@ -1268,7 +1266,7 @@ empty_message=Αυτό το repository δεν έχει περιεχόμενο.
broken_message=Τα δεδομένα Git που διέπουν αυτό το αποθετήριο δεν μπορούν να διαβαστούν. Επικοινωνήστε με το διαχειριστή ή διαγράψτε αυτό το repository.
code=Κώδικας
code.desc=Πρόσβαση στον πηγαίο κώδικα, αρχεία, commits και κλάδους.
code.desc=Πρόσβαση στον πηγαίο κώδικα, αρχεία, υποβολές και κλάδους.
branch=Κλάδος
tree=Δέντρο
clear_ref=`Καθαρισμός τρέχουσας αναφοράς`
@ -1286,8 +1284,8 @@ org_labels_desc=Οι ταμπέλες, που ισχύουν για ολόκλη
org_labels_desc_manage=διαχείριση
milestones=Ορόσημα
commits=Commits
commit=Commit
commits=Υποβολές
commit=Υποβολή
release=Κυκλοφορία
releases=Κυκλοφορίες
tag=Ετικέτα
@ -1319,14 +1317,14 @@ stored_lfs=Αποθηκεύτηκε με το Git LFS
stored_annex=Αποθηκεύτηκε με το Git Annex
symbolic_link=Symbolic link
executable_file=Εκτελέσιμο αρχείο
commit_graph=Γράφημα commit
commit_graph=Γράφημα υποβολών
commit_graph.select=Επιλογή κλάδων
commit_graph.hide_pr_refs=Απόκρυψη pull request
commit_graph.monochrome=Μονόχρωμο
commit_graph.color=Έγχρωμο
commit.contained_in=Αυτό το commit περιλαμβάνεται σε:
commit.contained_in_default_branch=Αυτό το commit αποτελεί μέρος του προεπιλεγμένου κλάδου
commit.load_referencing_branches_and_tags=Φόρτωση κλάδων και ετικετών που παραπέμπουν σε αυτό το commit
commit.contained_in=Αυτή η υποβολή περιλαμβάνεται σε:
commit.contained_in_default_branch=Αυτή η υποβολή είναι μέρος του προεπιλεγμένου κλάδου
commit.load_referencing_branches_and_tags=Φόρτωση κλάδων και ετικετών που παραπέμπουν σε αυτήν την υποβολή
blame=Ευθύνη
download_file=Λήψη αρχείου
normal_view=Κανονική Προβολή
@ -1364,12 +1362,12 @@ editor.patching=Επιδιόρθωση:
editor.fail_to_apply_patch=`Αδυναμία εφαρμογής της επιδιόρθωσης "%s"`
editor.new_patch=Νέο patch
editor.commit_message_desc=Προσθήκη προαιρετικής εκτενούς περιγραφής…
editor.signoff_desc=Προσθέστε ένα πρόσθετο Signed-off-by στο τέλος του μηνύματος καταγραφής του commit.
editor.commit_directly_to_this_branch=Υποβολή commit απευθείας στο κλάδο <strong class="%[2]s">%[1]s</strong>.
editor.create_new_branch=Δημιουργήστε έναν <strong>νέο κλάδο</strong> για αυτό το commit και δημιουργήστε ένα pull request.
editor.create_new_branch_np=Δημιουργήστε έναν <strong>νέο κλάδο</strong> για αυτό το commit.
editor.signoff_desc=Προσθέστε ένα πρόσθετο Signed-off-by στο τέλος του μηνύματος καταγραφής της υποβολής.
editor.commit_directly_to_this_branch=Υποβολή απευθείας στο κλάδο <strong class="%[2]s">%[1]s</strong>.
editor.create_new_branch=Δημιουργήστε έναν <strong>νέο κλάδο</strong> για αυτή την υποβολή και ξεκινήστε ένα pull request.
editor.create_new_branch_np=Δημιουργήστε έναν <strong>νέο κλάδο</strong> για αυτή την υποβολή.
editor.propose_file_change=Πρόταση αλλαγής αρχείου
editor.new_branch_name=Ονόμασε τον νέο κλάδο για αυτό το commit
editor.new_branch_name=Ονόμασε τον νέο κλάδο για αυτήν την υποβολή
editor.new_branch_name_desc=Όνομα νέου κλάδου…
editor.cancel=Ακύρωση
editor.filename_cannot_be_empty=Το όνομα αρχείου δεν μπορεί να είναι κενό.
@ -1381,9 +1379,9 @@ editor.file_is_a_symlink=`Το «%s» είναι συμβολικός σύνδε
editor.filename_is_a_directory=Το όνομα αρχείου «%s» χρησιμοποιείται ήδη ως όνομα φακέλου σε αυτό το repository.
editor.file_editing_no_longer_exists=Το αρχείο «%s», το οποίο επεξεργάζεστε, δεν υπάρχει πλέον σε αυτό το repository.
editor.file_deleting_no_longer_exists=Το αρχείο «%s», το οποίο διαγράφεται, δεν υπάρχει πλέον σε αυτό το repository.
editor.file_changed_while_editing=Προέκυψαν κάποιες αλλαγές στα περιεχόμενα του αρχείου από τότε που ξεκινήσατε να τα επεξεργάζεστε. <a target="_blank" rel="noopener noreferrer" href="%s">Κάντε κλικ εδώ</a> για να τα δείτε ή <strong>ξανακάνετε μία υποβολή των αλλαγών σας</strong> για να τις αντικαταστήσετε.
editor.file_changed_while_editing=Προέκυψαν κάποιες αλλαγές στα περιεχόμενα του αρχείου από τότε που ξεκινήσατε να τα επεξεργάζεστε. <a target="_blank" rel="noopener noreferrer" href="%s">Κάντε κλικ εδώ</a> για να τα δείτε ή <strong>ξανακάντε μία υποβολή των αλλαγών σας</strong> για να τις αντικαταστήσετε.
editor.file_already_exists=Υπάρχει ήδη ένα αρχείο με το όνομα «%s» σε αυτό το repository.
editor.commit_empty_file_header=Commit κενού αρχείου
editor.commit_empty_file_header=Υποβολή ενός κενού αρχείου
editor.commit_empty_file_text=Το αρχείο που πρόκειται να υποβληθεί είναι κενό. Συνέχεια;
editor.no_changes_to_show=Δεν υπάρχουν αλλαγές για εμφάνιση.
editor.fail_to_update_file=Αποτυχία ενημέρωσης/δημιουργίας του αρχείου «%s».
@ -1403,8 +1401,8 @@ editor.cherry_pick=Ανθολόγηση (cherry-pick) του %s σε:
editor.revert=Απόσυρση του %s στο:
commits.desc=Δείτε το ιστορικό αλλαγών του πηγαίου κώδικα.
commits.commits=Commits
commits.no_commits=Δεν υπάρχουν κοινά commit. Τα «%s» και «%s» έχουν εντελώς διαφορετικές ιστορίες.
commits.commits=Υποβολές
commits.no_commits=Δεν υπάρχουν κοινές υποβολές. Τα «%s» και «%s» έχουν εντελώς διαφορετικές ιστορίες.
commits.nothing_to_compare=Αυτοί οι κλάδοι είναι όμοιοι.
commits.search=Αναζήτηση υποβολών…
commits.search.tooltip=Μπορείτε να προθέτετε τις λέξεις-κλειδιά με "author:", "committer:", "after:", ή "before:", π.χ. "επαναφορά author:Alice before:2019-01-13".
@ -1839,9 +1837,9 @@ pulls.show_all_commits=Εμφάνιση όλων των υποβολών
pulls.show_changes_since_your_last_review=Εμφάνιση αλλαγών από την τελευταία αξιολόγηση
pulls.showing_only_single_commit=Εμφάνιση μόνο αλλαγών της υποβολής %[1]s
pulls.showing_specified_commit_range=Εμφάνιση μόνο των αλλαγών μεταξύ %[1]s..%[2]s
pulls.select_commit_hold_shift_for_range=Επιλέξτε commit. Κρατήστε πατημένο το shift + κάντε κλικ για να επιλέξετε ένα εύρος
pulls.select_commit_hold_shift_for_range=Επιλέξτε υποβολή. Κρατήστε πατημένο το shift + κάντε κλικ για να επιλέξετε ένα εύρος
pulls.review_only_possible_for_full_diff=Η αξιολόγηση είναι δυνατή μόνο κατά την προβολή της πλήρης διαφοράς
pulls.filter_changes_by_commit=Φιλτράρισμα κατά commit
pulls.filter_changes_by_commit=Φιλτράρισμα κατά υποβολή
pulls.nothing_to_compare=Αυτοί οι κλάδοι είναι ίδιοι. Δεν χρειάζεται να δημιουργήσετε ένα pull request.
pulls.nothing_to_compare_and_allow_empty_pr=Αυτοί οι κλάδοι είναι ίδιοι. Αυτό το PR θα είναι κενό.
pulls.has_pull_request=`Υπάρχει ήδη pull request μεταξύ αυτών των κλάδων: <a href="%[1]s">%[2]s#%[3]d</a>`
@ -1850,7 +1848,7 @@ pulls.title_desc_few=θέλει να συγχωνεύσει %[1]d υποβολέ
pulls.merged_title_desc_few=συγχώνευσε %[1]d υποβολές από <code>%[2]s</code> σε <code>%[3]s</code> %[4]s
pulls.change_target_branch_at=`άλλαξε τον κλάδο προορισμού από <b>%s</b> σε <b>%s</b> %s`
pulls.tab_conversation=Συζήτηση
pulls.tab_commits=Commits
pulls.tab_commits=Υποβολές
pulls.tab_files=Αλλαγμένα αρχεία
pulls.reopen_to_merge=Παρακαλώ ανοίξτε ξανά αυτό το pull request για να εκτελέσετε μια συγχώνευση.
pulls.cant_reopen_deleted_branch=Αυτό το pull request δεν μπορεί να ανοίξει ξανά επειδή ο κλάδος διαγράφηκε.
@ -1869,7 +1867,7 @@ pulls.data_broken=Αυτό το pull request είναι κατεστραμμέν
pulls.files_conflicted=Αυτό το pull request περιέχει αλλαγές που συγκρούονται με το κλάδο προορισμού.
pulls.is_checking=Ο έλεγχος συγκρούσεων κατά την συγχώνευση βρίσκεται σε εξέλιξη. Δοκιμάστε ξανά σε λίγα λεπτά.
pulls.is_ancestor=Αυτός ο κλάδος δεν περιέχει κάτι καινούργιο που δεν έχει ο κλάδος προορισμού ήδη. Δεν υπάρχει τίποτα που θα μπορούσε να συγχωνευτεί.
pulls.is_empty=Οι αλλαγές σε αυτόν τον κλάδο βρίσκονται ήδη στον κλάδο προορισμού. Θα είναι ένα κενό commit.
pulls.is_empty=Οι αλλαγές σε αυτόν τον κλάδο βρίσκονται ήδη στον κλάδο προορισμού. Θα είναι μια κενή υποβολή.
pulls.required_status_check_failed=Ορισμένοι απαιτούμενοι έλεγχοι δεν ήταν επιτυχείς.
pulls.required_status_check_missing=Λείπουν ορισμένοι απαιτούμενοι έλεγχοι.
pulls.required_status_check_administrator=Ως διαχειριστής, μπορείτε ακόμα να συγχωνεύσετε αυτό το pull request.
@ -1890,25 +1888,25 @@ pulls.reject_count_1=%d αίτημα αλλαγής
pulls.reject_count_n=%d αιτήματα αλλαγής
pulls.waiting_count_1=%d αναμονή αξιολόγησης
pulls.waiting_count_n=%d αναμονές αξιολόγησης
pulls.wrong_commit_id=Το αναγνωριστικό του commit πρέπει να αντιστοιχεί σε μία υποβολή στον κλάδο προορισμού
pulls.wrong_commit_id=Το αναγνωριστικό της υποβολής πρέπει να αντιστοιχεί σε μία υποβολή στον κλάδο προορισμού
pulls.no_merge_desc=Αυτό το pull request δεν μπορεί να συγχωνευθεί επειδή όλες οι επιλογές συγχώνευσης αποθετηρίων είναι απενεργοποιημένες.
pulls.no_merge_helper=Ενεργοποιήστε τις επιλογές συγχώνευσης στις ρυθμίσεις αποθετηρίου ή συγχωνεύστε το pull request χειροκίνητα.
pulls.no_merge_wip=Αυτό το pull request δεν μπορεί να συγχωνευθεί, επειδή έχει επισημανθεί ως μια εργασία σε εξέλιξη.
pulls.no_merge_not_ready=Αυτό το pull request δεν είναι έτοιμο για συγχώνευση, ελέγξτε την κατάσταση εξέτασης και τους ελέγχους κατάστασης.
pulls.no_merge_access=Δεν είστε εξουσιοδοτημένοι να συγχωνεύσετε αυτό το pull request.
pulls.merge_pull_request=Δημιουργία commit συγχώνευσης
pulls.merge_pull_request=Δημιουργία υποβολής συγχώνευσης
pulls.rebase_merge_pull_request=Αλλαγή βάσης και μετά γρήγορα-μπροστά
pulls.rebase_merge_commit_pull_request=Αλλαγής βάσης και δημιουργία commit συγχώνευσης
pulls.squash_merge_pull_request=Δημιουργία squash commit
pulls.rebase_merge_commit_pull_request=Αλλαγής βάσης και δημιουργία υποβολής συγχώνευσης
pulls.squash_merge_pull_request=Δημιουργία υποβολής squash
pulls.merge_manually=Συγχωνεύτηκαν χειροκίνητα
pulls.merge_commit_id=Το ID του commit συγχώνευσης
pulls.require_signed_wont_sign=Ο κλάδος απαιτεί υπογεγραμμένες commits αλλά αυτή η συγχώνευση δεν θα υπογραφεί
pulls.merge_commit_id=Το ID της υποβολής συγχώνευσης
pulls.require_signed_wont_sign=Ο κλάδος απαιτεί υπογεγραμμένες υποβολές αλλά αυτή η συγχώνευση δεν θα υπογραφεί
pulls.invalid_merge_option=Δεν μπορείτε να χρησιμοποιήσετε αυτήν την επιλογή συγχώνευσης για αυτό το pull request.
pulls.merge_conflict=Η συγχώνευση απέτυχε: Υπήρξε μια σύγκρουση κατά τη συγχώνευση. Συμβουλή: Δοκιμάστε μια διαφορετική στρατηγική
pulls.merge_conflict_summary=Μήνυμα σφάλματος
pulls.rebase_conflict=Η συγχώνευση απέτυχε: Προέκυψε σύγκρουση κατά το rebase του commit: %[1]s. Συμβουλή: Δοκιμάστε μία διαφορετική στρατηγική
pulls.rebase_conflict=Η συγχώνευση απέτυχε: Υπήρξε μια σύγκρουση κατά την αλλαγή βάσης της υποβολής: %[1]s. Συμβουλή: Δοκιμάστε μια διαφορετική στρατηγική
pulls.rebase_conflict_summary=Μήνυμα σφάλματος
pulls.unrelated_histories=H συγχώνευση απέτυχε: Η κεφαλή και η βάση της συγχώνευσης δεν έχουν κοινή ιστορία. Συμβουλή: Δοκιμάστε μια διαφορετική στρατηγική
pulls.merge_out_of_date=Η συγχώνευση απέτυχε: Κατά τη δημιουργία της συγχώνευσης, η βάση ενημερώθηκε. Συμβουλή: Προσπαθήστε πάλι.
@ -1939,9 +1937,9 @@ pulls.cmd_instruction_hint=Προβολή οδηγιών γραμμής εντο
pulls.cmd_instruction_checkout_title=Έλεγχος
pulls.cmd_instruction_checkout_desc=Από το repository του έργου σας, ελέγξτε έναν νέο κλάδο και δοκιμάστε τις αλλαγές.
pulls.cmd_instruction_merge_title=Συγχώνευση
pulls.cmd_instruction_merge_desc=Συγχώνευση των αλλαγών και ενημέρωση στο Forgejo.
pulls.cmd_instruction_merge_desc=Συγχώνευση των αλλαγών και ενημέρωση στο Gitea.
pulls.clear_merge_message=Εκκαθάριση μηνύματος συγχώνευσης
pulls.clear_merge_message_hint=Η εκκαθάριση του μηνύματος συγχώνευσης θα αφαιρέσει μόνο το περιεχόμενο του μηνύματος commit και θα διατηρήσει τα παραγόμενα git trailers όπως "Co-Authored-By …".
pulls.clear_merge_message_hint=Η εκκαθάριση του μηνύματος συγχώνευσης θα αφαιρέσει μόνο το περιεχόμενο του μηνύματος υποβολής και θα διατηρήσει τα παραγόμενα git trailers όπως "Co-Authored-By …".
pulls.auto_merge_button_when_succeed=(Όταν οι έλεγχοι πετύχουν)
pulls.auto_merge_when_succeed=Αυτόματη συγχώνευση όταν όλοι οι έλεγχοι πετύχουν
@ -1992,14 +1990,14 @@ milestones.filter_sort.most_complete=Περισσότερο πλήρη
milestones.filter_sort.most_issues=Περισσότερα ζητήματα
milestones.filter_sort.least_issues=Λιγότερα ζητήματα
signing.will_sign=Αυτό το commit θα υπογραφεί με το κλειδί «%s».
signing.wont_sign.error=Παρουσιάστηκε σφάλμα κατά τον έλεγχο για το αν το commit μπορεί να υπογραφεί.
signing.wont_sign.nokey=Ο διακομιστής δεν παρέχει κάποιο κλειδί για την υπογραφή αυτού του commit.
signing.wont_sign.never=Τα commits δεν υπογράφονται ποτέ.
signing.wont_sign.always=Τα commit υπογράφονται πάντα.
signing.wont_sign.pubkey=To ψομμιτ δε θα υπογραφεί επειδή δεν υπάρχει δημόσιο κλειδί που συσχετίζεται με τον λογαριασμό σας.
signing.wont_sign.twofa=Πρέπει να έχετε ενεργοποιημένη την ταυτοποίηση δύο παραγόντων για την υπογραφή commit.
signing.wont_sign.parentsigned=To commit δεν θα υπογραφεί καθώς το προηγούμενο commit δεν έχει υπογραφεί.
signing.will_sign=Αυτή η υποβολή θα υπογραφεί με το κλειδί «%s».
signing.wont_sign.error=Παρουσιάστηκε σφάλμα κατά τον έλεγχο για το αν η υποβολή μπορεί να υπογραφεί.
signing.wont_sign.nokey=Ο διακομιστής δεν παρέχει κάποιο κλειδί για την υπογραφή αυτής της υποβολής (commit).
signing.wont_sign.never=Οι υποβολές δεν υπογράφονται ποτέ.
signing.wont_sign.always=Οι υποβολές υπογράφονται πάντα.
signing.wont_sign.pubkey=Η υποβολή δε θα υπογραφεί επειδή δεν υπάρχει δημόσιο κλειδί που να συνδέεται με το λογαριασμό σας.
signing.wont_sign.twofa=Πρέπει να έχετε ενεργοποιημένη την ταυτοποίηση δύο παραγόντων για να υπογράφεται υποβολές.
signing.wont_sign.parentsigned=Η υποβολή δε θα υπογραφεί καθώς η γονική υποβολή δεν έχει υπογραφεί.
signing.wont_sign.basesigned=Η συγχώνευση δε θα υπογραφεί καθώς η βασική υποβολή δεν έχει υπογραφή της βάσης.
signing.wont_sign.headsigned=Η συγχώνευση δε θα υπογραφεί καθώς δεν έχει υπογραφή η υποβολή της κεφαλής.
signing.wont_sign.commitssigned=Η συγχώνευση δε θα υπογραφεί καθώς όλες οι σχετικές υποβολές δεν έχουν υπογραφεί.
@ -2021,7 +2019,7 @@ wiki.page_title=Τίτλος σελίδας
wiki.page_content=Περιεχόμενο σελίδας
wiki.default_commit_message=Γράψτε μια σημείωση σχετικά με αυτή την ενημέρωση σελίδας (προαιρετικό).
wiki.save_page=Αποθήκευση σελίδας
wiki.last_commit_info=%s επεξεργάστηκε την σελίδα %s
wiki.last_commit_info=%s επεξεργάστηκε αυτή τη σελίδα %s
wiki.edit_page_button=Επεξεργασία
wiki.new_page_button=Νέα σελίδα
wiki.file_revision=Έκδοση σελίδας
@ -2080,14 +2078,14 @@ activity.title.releases_1=%d κυκλοφορία
activity.title.releases_n=%d εκδόσεις
activity.title.releases_published_by=%s δημοσιεύτηκε από %s
activity.published_release_label=Δημοσίευση
activity.no_git_activity=Δεν έχει υπάρξει καμία δραστηριότητα commit σε αυτήν την περίοδο.
activity.no_git_activity=Δεν έχει υπάρξει καμία δραστηριότητα υποβολών σε αυτήν την περίοδο.
activity.git_stats_exclude_merges=Εκτός τις συγχωνεύσεις,
activity.git_stats_author_1=%d συγγραφέας
activity.git_stats_author_n=%d συγγραφείς
activity.git_stats_pushed_1=έχει ωθήσει
activity.git_stats_pushed_n=έχουν ωθήσει
activity.git_stats_commit_1=%d commit
activity.git_stats_commit_n=%d commits
activity.git_stats_commit_1=%d υποβολή
activity.git_stats_commit_n=%d υποβολές
activity.git_stats_push_to_branch=στο %s και
activity.git_stats_push_to_all_branches=σε όλους τους κλάδους.
activity.git_stats_on_default_branch=Στο %s,
@ -2102,7 +2100,7 @@ activity.git_stats_and_deletions=και
activity.git_stats_deletion_1=%d διαγραφή
activity.git_stats_deletion_n=%d διαγραφές
contributors.contribution_type.commits=Commits
contributors.contribution_type.commits=Υποβολές
search=Αναζήτηση
search.search_repo=Αναζήτηση αποθετηρίου
@ -2128,7 +2126,7 @@ settings.hooks=Webhooks
settings.githooks=Git hooks
settings.basic_settings=Βασικές ρυθμίσεις
settings.mirror_settings=Ρυθμίσεις ειδώλου
settings.mirror_settings.docs=Ρυθμίστε τον αυτόματο συγχρονισμό commit, ετικετών και κλάδων του αποθετηρίου σας σε ένα άλλο repository.
settings.mirror_settings.docs=Ρυθμίστε τον αυτόματο συγχρονισμό των commit, ετικετών και κλάδων του αποθετηρίου σας σε ένα άλλο repository.
settings.mirror_settings.docs.disabled_pull_mirror.instructions=Ρυθμίστε τον αυτόματο συγχρονισμό των commit, ετικετών και κλάδων του έργου σας με ένα άλλο repository. Τα είδωλα τύπου λήψης έχουν απενεργοποιηθεί από τον διαχειριστή σας.
settings.mirror_settings.docs.disabled_push_mirror.instructions=Ρυθμίστε την αυτόματη λήψη υποβολών, ετικετών και κλάδων από ένα άλλο repository.
settings.mirror_settings.docs.disabled_push_mirror.pull_mirror_warning=Αυτή τη στιγμή, αυτό μπορεί να γίνει μόνο στο μενού "Νέα Μεταφορά". Για περισσότερες πληροφορίες, συμβουλευτείτε το:
@ -2197,11 +2195,11 @@ settings.admin_settings=Ρυθμίσεις διαχειριστή
settings.admin_enable_health_check=Ενεργοποίηση ελέγχων υγείας αποθετηρίων (git fsck)
settings.admin_code_indexer=Indexer κώδικα
settings.admin_stats_indexer=Indexer στατιστικών κώδικα
settings.admin_indexer_commit_sha=Τελευταίο indexed commit
settings.admin_indexer_commit_sha=Τελευταίο indexed SHA
settings.admin_indexer_unindexed=Unindexed
settings.reindex_button=Προσθήκη στην ουρά Reindex
settings.reindex_requested=Αιτήθηκε reindex
settings.admin_enable_close_issues_via_commit_in_any_branch=Κλείσιμο ενός ζητήματος μέσω commit που έγινε σε έναν μη'προεπιλεγμένο κλάδο
settings.admin_enable_close_issues_via_commit_in_any_branch=Κλείσιμο ενός ζητήματος μέσω μιας υποβολής που έγινε σε έναν μη προεπιλεγμένο κλάδο
settings.danger_zone=Ζώνη κινδύνου
settings.new_owner_has_same_repo=Ο νέος ιδιοκτήτης έχει ήδη ένα repository με το ίδιο όνομα. Παρακαλώ επιλέξτε ένα άλλο όνομα.
settings.convert=Μετατροπή σε κανονικό repository
@ -2450,9 +2448,9 @@ settings.protect_approvals_whitelist_enabled_desc=Μόνο κριτικές απ
settings.protect_approvals_whitelist_users=Εγκεκριμένοι εξεταστές:
settings.protect_approvals_whitelist_teams=Λίστα επιτρεπόμενων ομάδων για κριτικές:
settings.dismiss_stale_approvals=Παράβλεψη καθυστερημένων εγκρίσεων
settings.dismiss_stale_approvals_desc=Όταν νέα commit που αλλάζουν το περιεχόμενο του pull request γίνονται push στο κλάδο, οι παλιές εγκρίσεις απορρίπτονται.
settings.require_signed_commits=Να απαιτούνται υπογεγραμμένα commit
settings.require_signed_commits_desc=Απόρριψη νέων commit σε αυτόν τον κλάδο εάν είναι μη υπογεγραμμένες ή μη επαληθεύσιμες.
settings.dismiss_stale_approvals_desc=Όταν οι νέες υποβολές που αλλάζουν το περιεχόμενο του pull request γίνονται push στο κλάδο, οι παλιές εγκρίσεις απορρίπτονται.
settings.require_signed_commits=Να απαιτούνται υπογεγραμμένες υποβολές
settings.require_signed_commits_desc=Απόρριψη νέων υποβολών σε αυτόν τον κλάδο εάν είναι μη υπογεγραμμένες ή μη επαληθεύσιμες.
settings.protect_branch_name_pattern=Μοτίβο προστατευμένου ονόματος κλάδου
settings.protect_branch_name_pattern_desc=Μοτίβα ονόματος προστατευμένων κλάδων. Συμβολευτείτε <a href="%s">την τεκμηρίωση</a> για την σύνταξη ενός μοτίβου. Παραδείγματα: main, release/**
settings.protect_patterns=Μοτίβα
@ -2473,7 +2471,7 @@ settings.block_on_official_review_requests=Φραγή συγχώνευσης σ
settings.block_on_official_review_requests_desc=Η συγχώνευση δεν θα είναι δυνατή όταν θα έχει αιτήσεις επίσημης αξιολόγησης, ακόμη και αν υπάρχουν αρκετές εγκρίσεις.
settings.block_outdated_branch=Φραγή συγχώνευσης αν το pull request είναι ξεπερασμένο
settings.block_outdated_branch_desc=Η συγχώνευση δεν θα είναι δυνατή όταν ο κλάδος κεφαλής είναι πίσω από τον βασικό κλάδο.
settings.default_branch_desc=Επιλέξτε έναν προεπιλεγμένο κλάδο αποθετηρίου για pull requests και commit
settings.default_branch_desc=Επιλέξτε έναν προεπιλεγμένο κλάδο αποθετηρίου για pull requests και υποβολές κώδικα:
settings.merge_style_desc=Στυλ συγχώνευσης
settings.default_merge_style_desc=Προεπιλεγμένο στυλ συγχώνευσης
settings.choose_branch=Επιλέξτε έναν κλάδο…
@ -2500,7 +2498,7 @@ settings.matrix.room_id=ID Δωματίου
settings.matrix.message_type=Είδος μηνύματος
settings.archive.button=Αρχειοθέτηση αποθετηρίου
settings.archive.header=Αρχειοθέτηση αποθετηρίου
settings.archive.text=Η αρχειοθέτηση του αποθετηρίου θα το αλλάξει σε μόνο για ανάγνωση. Δε θα φαίνεται στον αρχικό πίνακα. Κανείς (ακόμα και εσείς!) δε θα μπορεί να υποβάλει νέα commit, ή να ανοίξει ζητήματα ή pull request.
settings.archive.text=Η αρχειοθέτηση του αποθετηρίου θα το αλλάξει σε μόνο για ανάγνωση. Δε θα φαίνεται στον αρχικό πίνακα. Κανείς (ακόμα και εσείς!) δε θα μπορεί να κάνει νέες υποβολές, ή να ανοίξει ζητήματα ή pull request.
settings.archive.success=Το repository αρχειοθετήθηκε με επιτυχία.
settings.archive.error=Παρουσιάστηκε σφάλμα κατά την προσπάθεια αρχειοθέτησης του αποθετηρίου. Δείτε το αρχείο καταγραφής για περισσότερες λεπτομέρειες.
settings.archive.error_ismirror=Δε μπορείτε να αρχειοθετήσετε ένα είδωλο αποθετηρίου.
@ -2508,15 +2506,15 @@ settings.archive.branchsettings_unavailable=Οι ρυθμίσεις του κλ
settings.archive.tagsettings_unavailable=Οι ρυθμίσεις της ετικέτας δεν είναι διαθέσιμες αν το repository είναι αρχειοθετημένο.
settings.unarchive.button=Αναίρεση αρχειοθέτησης αποθετηρίου
settings.unarchive.header=Απο-Αρχειοθέτηση του αποθετηρίου
settings.unarchive.text=Η απο-αρχειοθέτηση του αποθετηρίου θα αποκαταστήσει την ικανότητά του να λαμβάνει commits και ωθήσεις, καθώς και νέα ζητήματα και pull-requests.
settings.unarchive.text=Η απο-αρχειοθέτηση του αποθετηρίου θα αποκαταστήσει την ικανότητά του να λαμβάνει υποβολές και ωθήσεις, καθώς και νέα ζητήματα και pull-requests.
settings.unarchive.success=Το repository απο-αρχειοθετήθηκε με επιτυχία.
settings.unarchive.error=Παρουσιάστηκε σφάλμα κατά την προσπάθεια απο-αρχειοθέτησης του αποθετηρίου. Δείτε τις καταγραφές για περισσότερες λεπτομέρειες.
settings.update_avatar_success=Η εικόνα του αποθετηρίου έχει ενημερωθεί.
settings.lfs=LFS
settings.lfs_filelist=Αρχεία LFS σε αυτό το repository
settings.lfs_no_lfs_files=Δεν υπάρχουν αρχεία LFS σε αυτό το repository
settings.lfs_findcommits=Εύρεση commit
settings.lfs_lfs_file_no_commits=Δεν βρέθηκαν commit για αυτό το αρχείο LFS
settings.lfs_findcommits=Εύρεση υποβολών
settings.lfs_lfs_file_no_commits=Δεν βρέθηκαν υποβολές για αυτό το αρχείο LFS
settings.lfs_noattribute=Αυτή η διαδρομή δεν έχει λειτουργία κλειδώματος στον προεπιλεγμένο κλάδο
settings.lfs_delete=Διαγραφή αρχείου LFS με το OID %s
settings.lfs_delete_warning=Η διαγραφή ενός αρχείου LFS μπορεί να προκαλέσει σφάλματα «object does not exist» κατά την ολοκλήρωση του checkout. Είστε βέβαιοι;
@ -2546,7 +2544,7 @@ settings.rename_branch=Μετονομασία κλάδου
diff.browse_source=Προβολή πηγαίου κώδικα
diff.parent=γονέας
diff.commit=commit
diff.commit=υποβολή
diff.git-notes=Σημειώσεις
diff.data_not_available=Δεν υπάρχει διαθέσιμο περιεχόμενο diff
diff.options_button=Επιλογές diff
@ -2611,7 +2609,7 @@ release.prerelease=Προδημοσίευση
release.stable=Σταθερή
release.compare=Σύγκριση
release.edit=επεξεργασία
release.ahead.commits=<strong>%d</strong> commits
release.ahead.commits=<strong>%d</strong> υποβολές
release.ahead.target=σε %s από αυτή την έκδοση
tag.ahead.target=μέχρι το %s από αυτή την ετικέτα
release.source_code=Πηγαίος κώδικας
@ -2634,7 +2632,7 @@ release.edit_release=Ενημέρωση κυκλοφορίας
release.delete_release=Διαγραφή κυκλοφορίας
release.delete_tag=Διαγραφή ετικέτας
release.deletion=Διαγραφή κυκλοφορίας
release.deletion_desc=Διαγράφοντας μια κυκλοφορία, αυτή αφαιρείται μόνο από το Forgejo. Δε θα επηρεάσει την ετικέτα Git, τα περιεχόμενα του αποθετηρίου σας ή το ιστορικό της. Συνέχεια;
release.deletion_desc=Διαγράφοντας μια κυκλοφορία, αυτή αφαιρείται μόνο από το Gitea. Δε θα επηρεάσει την ετικέτα Git, τα περιεχόμενα του αποθετηρίου σας ή το ιστορικό της. Συνέχεια;
release.deletion_success=Η κυκλοφορία έχει διαγραφεί.
release.deletion_tag_desc=Θα διαγράψει αυτή την ετικέτα από το repository. Τα περιεχόμενα του repository και το ιστορικό δεν θα πειραχτούν. Να γίνει συνέχεια;
release.deletion_tag_success=Η ετικέτα έχει διαγραφεί.
@ -2657,7 +2655,7 @@ branch.delete_html=Διαγραφή κλάδου
branch.delete_desc=Η διαγραφή ενός κλάδου είναι μόνιμη. Αν και ο διαγραμμένος κλάδος μπορεί να συνεχίσει να υπάρχει για σύντομο χρονικό διάστημα πριν να αφαιρεθεί, ΔΕΝ ΜΠΟΡΕΙ να αναιρεθεί στις περισσότερες περιπτώσεις. Συνέχεια;
branch.deletion_success=Ο κλάδος «%s» διαγράφηκε.
branch.deletion_failed=Η διαγραφή του κλάδου «%s» απέτυχε.
branch.delete_branch_has_new_commits=Ο κλάδος «%s» δεν μπορεί να διαγραφεί επειδή προστέθηκαν νέα commit μετά τη συγχώνευση.
branch.delete_branch_has_new_commits=Ο κλάδος «%s» δεν μπορεί να διαγραφεί επειδή προστέθηκαν νέες υποβολές μετά τη συγχώνευση.
branch.create_branch=Δημιουργία κλάδου %s
branch.create_from=`από το «%s»`
branch.create_success=Ο κλάδος «%s» δημιουργήθηκε.
@ -2714,7 +2712,7 @@ settings.new_owner_blocked_doer = Ο νέος κάτοχος του αποθετ
settings.enter_repo_name = Γράψτε το όνομα του κατόχου και του αποθετηρίου ακριβώς όπως το βλέπετε:
settings.confirmation_string = Κείμενο επιβεβαίωσης
settings.units.overview = Επισκόπηση
pulls.commit_ref_at = `ανέφερε το pull request στο commit <a id="%[1]s" href="#%[1]s">%[2]s</a>`
pulls.commit_ref_at = `ανέφερε το pull request στην υποβολή <a id="%[1]s" href="#%[1]s">%[2]s</a>`
contributors.contribution_type.filter_label = Είδος συνεισφοράς:
settings.wiki_rename_branch_main_notices_1 = Αυτή η ενέργεια <strong>ΔΕΝ</strong> αναιρείται.
activity.navbar.contributors = Συνεισφέροντες
@ -2723,11 +2721,11 @@ contributors.contribution_type.deletions = Διαγραφές
migrate.forgejo.description = Μεταφορά δεδομένων από το codeberg.org ή άλλων υπηρεσιών Forgejo.
rss.must_be_on_branch = Για να αποκτήσετε ένα RSS feed, πρέπει να βρίσκεστε σε έναν κλάδο.
clone_in_vscodium = Κλωνοποίηση στο VSCodium
editor.invalid_commit_mail = Αυτή η διεύθυνση email δεν είναι έγκυρη για την δημιουργία commit.
editor.invalid_commit_mail = Αυτή η διεύθυνση email δεν είναι έγκυρη για την δημιουργία μίας υποβολής.
pulls.nothing_to_compare_have_tag = Ο επιλεγμένος κλάδος/tag είναι όμοιος.
issues.blocked_by_user = Δεν μπορείτε να δημιουργήσετε ζητήματα σε αυτό το repository, επειδή ο κάτοχος του repository σας έχει αποκλείσει.
pulls.agit_explanation = Δημιουργημένο μέσω του AGit. Το AGit επιτρέπει σε συνεισφέροντες να προτείνουν αλλαγές χρησιμοποιώντας την εντολή «git push», χωρίς την δημιουργία fork ή έναν νέο κλάδο.
activity.navbar.recent_commits = Πρόσφατα commit
activity.navbar.recent_commits = Πρόσφατες υποβολές
settings.wiki_globally_editable = Να επιτρέπεται η επεξεργασία του wiki σε όλους
admin.manage_flags = Διαχείριση σημάνσεων
admin.enabled_flags = Το repository έχει τις εξής σημάνσεις:
@ -2755,13 +2753,13 @@ settings.add_collaborator_blocked_our = Δεν είναι δυνατή η προ
n_branch_few = %s κλάδοι
n_tag_one = %s ετικέτα
n_tag_few = %s ετικέτες
n_commit_one = %s commit
n_commit_one = %s υποβολή
stars = Αστέρια
n_branch_one = %s κλάδος
commits.search_branch = Αυτός ο κλάδος
pulls.title_desc_one = : θα ήθελε να συγχωνεύσει %[1]d υποβολή από τον κλάδο <code>%[2]s</code> στον κλάδο <code id="%[4]s">%[3]s</code>
pulls.merged_title_desc_one = συγχώνευσε %[1]d υποβολή από τον κλάδο <code>%[2]s</code> στον κλάδο <code>%[3]s</code> %[4]s
n_commit_few = %s commits
n_commit_few = %s υποβολές
settings.sourcehut_builds.secrets = Μυστικά
settings.add_webhook.invalid_path = Η τοποθεσία του αρχείου δεν μπορεί να περιέχει κενά, «.» ή «..». Δεν μπορεί να αρχίζει ή να τελειώνει με μία κάθετο.
commits.browse_further = Περιήγηση περισσοτέρων
@ -2781,7 +2779,7 @@ settings.event_pull_request_enforcement = Εξαναγκασμός
editor.commit_id_not_matching = Το αρχείο άλλαξε όσο το επεξεργαζόσασταν. Θα πρέπει να υποβάλετε τις αλλαγές σας σε έναν νέο κλάδο και μετά να τις συγχωνεύσετε.
settings.sourcehut_builds.visibility = Ορατότητα εργασιών
object_format = Μορφή αντικειμένων («object format»)
settings.ignore_stale_approvals_desc = Οι εγκρίσεις, οι οποίες αναφέρονται σε παλαιότερα commit, δεν θα προσμετρούνται στο σύνολο των απαιτούμενων εγκρίσεων του pull request. Εφόσον αυτές οι εγκρίσεις έχουν ήδη ανακληθεί, τότε αυτή η ρύθμιση δεν θα παίξει κάποιον ρόλο.
settings.ignore_stale_approvals_desc = Οι εγκρίσεις, οι οποίες αναφέρονται σε παλαιότερες υποβολές, δεν θα προσμετρούνται στο σύνολο των απαιτούμενων εγκρίσεων του pull request. Εφόσον αυτές οι εγκρίσεις έχουν ήδη ανακληθεί, τότε αυτή η ρύθμιση δεν θα παίξει κάποιον ρόλο.
settings.archive.mirrors_unavailable = Οι λειτουργίες ειδώλου δεν είναι διαθέσιμες εφόσον το repository έχει αρχειοθετηθεί.
settings.web_hook_name_sourcehut_builds = SourceHut Builds
settings.enforce_on_admins = Εφαρμογή κανόνα σε διαχειριστές του αποθετηρίου
@ -2825,7 +2823,7 @@ release.asset_name = Όνομα αρχείου
release.asset_external_url = Εξωτερικό URL
release.invalid_external_url = Μη έγκυρο εξωτερικό URL: «%s»
no_eol.text = Λείπει το EOL
activity.commit = Δραστηριότητα commit
activity.commit = Δραστηριότητα υποβολών
no_eol.tooltip = Αυτό το αρχείο δεν περιέχει έναν χαρακτήρα τύπου επιστροφής φορέα («end of line») στο τέλος του αρχείου.
release.add_external_asset = Προσθήκη εξωτερικού αρχείου
milestones.filter_sort.name = Όνομα
@ -2833,26 +2831,13 @@ release.type_external_asset = Εξωτερικό αρχείο
mirror_public_key = Δημόσιο κλειδί SSH
mirror_use_ssh.helper = το Forgejo θα κατοπτρίσει το αποθετήριο μέσω Git με τη χρήση SSH και θα δημιουργήσει ένα ζεύγος κλειδιών. Πρέπει να εξασφαλίσετε πως το δημιουργημένο κλειδί είναι εξουσιοδοτημένο να ωθεί στο αποθετήριο προορισμού. Εφόσον το έχετε επιλέξει, δε μπορείτε να χρησιμοποιήσετε εξουσιοδότηση συνθηματικού.
new_from_template = Χρήση προτύπου
new_from_template_description = Μπορείτε να χρησιμοποιήσετε ένα προυπάρχον πρότυπο αποθετηρίου και να εφαρμόσετε τις ρυθμίσεις του.
new_advanced = Ρυθμίσεις για προχωρημένους
new_advanced_expand = Κλικ για επέκταση
auto_init_description = Δημιουργία αρχικού commit που περιέχει ένα αρχείο README, μαζί με τα αρχεία άδειας χρήσης και .gitignore προαιρετικά.
mirror_use_ssh.text = Χρήση ταυτοποίησης SSH
mirror_use_ssh.not_available = Η ταυτοποίηση μέσω SSH δεν είναι διαθέσιμη.
mirror_denied_combination = Η χρήση ενός κλειδιού καθώς και ενός κωδικού για ταυτοποίηση ταυτόχρονα δεν είναι δυνατή.
summary_card_alt = Κάρτα σύνοψης του αποθετηρίου %s
editor.add_tmpl.filename = Όνομα αρχείου
editor.commit_email = Email για commit
issues.all_title = Όλα
[graphs]
component_loading_failed = Δεν ήταν δυνατή η φόρτωση του %s
component_loading = Γίνεται φόρτωση του %s...
component_loading_info = Αυτό μπορεί να πάρει λίγη ώρα…
component_failed_to_load = Προέκυψε ένα απρόσμενο σφάλμα.
contributors.what = συνεισφορές
recent_commits.what = πρόσφατα commit
recent_commits.what = πρόσφατες υποβολές
code_frequency.what = συχνότητα κώδικα
[org]
@ -3189,12 +3174,12 @@ packages.size=Μέγεθος
packages.published=Δημοσιευμένα
defaulthooks=Προεπιλεγμένα webhooks
defaulthooks.desc=Τα Webhooks κάνουν αυτόματα αιτήσεις HTTP POST σε ένα διακομιστή όταν ενεργοποιούν ορισμένα γεγονότα στο Forgejo. Τα Webhooks που ορίζονται εδώ είναι προκαθορισμένα και θα αντιγραφούν σε όλα τα νέα αποθετήρια. Διαβάστε περισσότερα στον οδηγό <a target="_blank" rel="noopener" href="%s">webhooks</a>.
defaulthooks.desc=Τα Webhooks κάνουν αυτόματα αιτήσεις HTTP POST σε ένα διακομιστή όταν ενεργοποιούν ορισμένα γεγονότα στο Gitea. Τα Webhooks που ορίζονται εδώ είναι προκαθορισμένα και θα αντιγραφούν σε όλα τα νέα αποθετήρια. Διαβάστε περισσότερα στον οδηγό <a target="_blank" rel="noopener" href="%s">webhooks</a>.
defaulthooks.add_webhook=Προσθήκη Προεπιλεγμένου Webhook
defaulthooks.update_webhook=Ενημέρωση Προεπιλεγμένου Webhook
systemhooks=Webhooks συστήματος
systemhooks.desc=Τα Webhooks κάνουν αυτόματα αιτήσεις HTTP POST σε ένα διακομιστή όταν ενεργοποιούνται ορισμένα γεγονότα στο Forgejo. Τα Webhooks που ορίζονται εδώ θα ενεργούν σε όλα τα αποθετήρια του συστήματος, γι 'αυτό παρακαλώ εξετάστε τυχόν επιπτώσεις απόδοσης που μπορεί να έχει. Διαβάστε περισσότερα στον οδηγό <a target="_blank" rel="noopener" href="%s">webhooks</a>.
systemhooks.desc=Τα Webhooks κάνουν αυτόματα αιτήσεις HTTP POST σε ένα διακομιστή όταν ενεργοποιούνται ορισμένα γεγονότα στο Gitea. Τα Webhooks που ορίζονται εδώ θα ενεργούν σε όλα τα αποθετήρια του συστήματος, γι 'αυτό παρακαλώ εξετάστε τυχόν επιπτώσεις απόδοσης που μπορεί να έχει. Διαβάστε περισσότερα στον οδηγό <a target="_blank" rel="noopener" href="%s">webhooks</a>.
systemhooks.add_webhook=Προσθήκη Webhook Συστήματος
systemhooks.update_webhook=Ενημέρωση Webhook Συστήματος
@ -3558,8 +3543,8 @@ push_tag=ώθησε την ετικέτα <a href="%[2]s">%[3]s</a> σε <a href
delete_tag=διέγραψε την ετικέτα %[2]s από <a href="%[1]s">%[3]s</a>
delete_branch=διέγραψε το κλάδο %[2]s από <a href="%[1]s">%[3]s</a>
compare_branch=Σύγκριση
compare_commits=Σύγκριση %d commit
compare_commits_general=Σύγκριση commits
compare_commits=Σύγκριση %d υποβολών
compare_commits_general=Σύγκριση υποβολών
mirror_sync_push=συγχρονιστήκαν οι υποβολές του <a href="%[2]s">%[3]s</a> στο <a href="%[1]s">%[4]s</a> από το είδωλο
mirror_sync_create=συγχρονίστηκε η νέα αναφορά <a href="%[2]s">%[3]s</a> στο <a href="%[1]s">%[4]s</a> από το είδωλο
mirror_sync_delete=συγχρόνισε και διάγραψε την αναφορά <code>%[2]s</code> σε <a href="%[1]s">%[3]s</a> από το είδωλο
@ -3615,13 +3600,13 @@ no_subscriptions=Καμία συνδρομή
[gpg]
default_key=Υπογραφή με το προεπιλεγμένο κλειδί
error.extract_sign=Αποτυχία εξαγωγής υπογραφής
error.generate_hash=Αποτυχία δημιουργίας hash του commit
error.no_committer_account=Δεν υπάρχει λογαριασμός που συσχετίζεται με τη διεύθυνση email του υποβολέα
error.generate_hash=Αποτυχία δημιουργίας του κατακερματισμού (hash) της υποβολής
error.no_committer_account=Δεν υπάρχει λογαριασμός συνδεδεμένος με τη διεύθυνση email του υποβολέα
error.no_gpg_keys_found=Δεν βρέθηκε γνωστό κλειδί για αυτήν την υπογραφή στη βάση δεδομένων
error.not_signed_commit=Το commit δεν είναι υπογεγραμμένη
error.not_signed_commit=Η υποβολή δεν είναι υπογεγραμμένη
error.failed_retrieval_gpg_keys=Αποτυχία ανάκτησης κλειδιού που είναι συνδεδεμένο στο λογαριασμό του υποβολέα
error.probable_bad_signature=ΠΡΟΣΟΧΗ! Αν και υπάρχει ένα κλειδί με αυτό το ID στη βάση δεδομένων δεν επαληθεύει αυτό το commit! Αυτή η υποβολή είναι ΥΠΟΠΤΗ.
error.probable_bad_default_signature=ΠΡΟΣΟΧΗ! Αν και το προεπιλεγμένο κλειδί έχει αυτό το ID, δεν επαληθεύει αυτό το commit! Αυτή η υποβολή είναι ΥΠΟΠΤΗ.
error.probable_bad_signature=ΠΡΟΣΟΧΗ! Αν και υπάρχει ένα κλειδί με αυτό το ID στη βάση δεδομένων δεν επαληθεύει αυτή την υποβολή! Αυτή η υποβολή είναι ΥΠΟΠΤΗ.
error.probable_bad_default_signature=ΠΡΟΣΟΧΗ! Αν και το προεπιλεγμένο κλειδί έχει αυτό το ID, δεν επαληθεύει αυτή την υποβολή! Αυτή η υποβολή είναι ΥΠΟΠΤΗ.
[units]
unit=Μονάδα
@ -3842,7 +3827,7 @@ runners.task_list.no_tasks=Δεν υπάρχει καμία εργασία ακ
runners.task_list.run=Εκτέλεση
runners.task_list.status=Κατάσταση
runners.task_list.repository=Repository
runners.task_list.commit=Commit
runners.task_list.commit=Υποβολή
runners.task_list.done_at=Ολοκλήρωσε Στις
runners.edit_runner=Επεξεργασία Εκτελεστή
runners.update_runner=Ενημέρωση αλλαγών
@ -3863,7 +3848,7 @@ runners.reset_registration_token=Επαναφορά διακριτικού εγ
runners.reset_registration_token_success=Επιτυχής επανέκδοση διακριτικού εγγραφής του εκτελεστή
runs.all_workflows=Όλες οι ροές εργασίας
runs.commit=Commit
runs.commit=Υποβολή
runs.scheduled=Προγραμματισμένα
runs.pushed_by=ωθήθηκε από
runs.invalid_workflow_helper=Το αρχείο ροής εργασίας δεν είναι έγκυρο. Ελέγξτε το αρχείο σας: %s
@ -3875,7 +3860,7 @@ runs.status_no_select=Όλες οι καταστάσεις
runs.no_results=Δεν βρέθηκαν αποτελέσματα.
runs.no_workflows=Δεν υπάρχουν ροές εργασίας ακόμα.
runs.no_runs=Η ροή εργασίας δεν έχει τρέξει ακόμα.
runs.empty_commit_message=(κενό μήνυμα commit)
runs.empty_commit_message=(κενό μήνυμα υποβολής)
workflow.disable=Απενεργοποίηση ροής εργασίας
workflow.disable_success=Η ροή εργασίας «%s» απενεργοποιήθηκε επιτυχώς.
@ -3937,7 +3922,7 @@ code_search_by_git_grep = Για την αναζήτηση κώδικα, χρη
package_kind = Αναζήτηση πακέτων...
project_kind = Αναζήτηση έργων...
branch_kind = Αναζήτηση κλάδων...
commit_kind = Αναζήτηση commit...
commit_kind = Αναζήτηση υποβολών...
no_results = Δεν βρέθηκαν κατάλληλα αποτελέσματα.
search = Αναζήτηση...
type_tooltip = Είδος αναζήτησης

View file

@ -644,7 +644,6 @@ team_name_been_taken = The team name is already taken.
team_no_units_error = Allow access to at least one repository section.
email_been_used = The email address is already used.
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.
username_password_incorrect = Username or password is incorrect.
password_complexity = Password does not pass complexity requirements:
@ -1431,7 +1430,6 @@ editor.user_no_push_to_branch = User cannot push to branch
editor.require_signed_commit = Branch requires a signed commit
editor.cherry_pick = Cherry-pick %s onto:
editor.revert = Revert %s onto:
editor.commit_email = Commit email
commits.desc = Browse source code change history.
commits.commits = Commits
@ -3897,7 +3895,6 @@ 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.id_not_exist = Variable with ID %d does not exist.
variables.edit = Edit Variable
variables.not_found = Failed to find the variable.
variables.deletion.failed = Failed to remove variable.
variables.deletion.success = The variable has been removed.
variables.creation.failed = Failed to add variable.

View file

@ -19,7 +19,7 @@ language=Idioma
notifications=Notificaciones
active_stopwatch=Rastreador de tiempo activo
create_new=Crear…
user_profile_and_more=Perfil y configuración
user_profile_and_more=Perfil y ajustes
signed_in_as=Identificado como
enable_javascript=Este sitio web requiere JavaScript.
toc=Tabla de contenidos
@ -56,7 +56,7 @@ mirror=Réplica
new_repo=Nuevo repositorio
new_migrate=Nueva migración
new_mirror=Nueva réplica
new_fork=Nueva bifurcación del repositorio
new_fork=Nuevo fork de repositorio
new_org=Nueva organización
new_project=Nuevo proyecto
new_project_column=Nueva columna
@ -75,7 +75,7 @@ collaborative=Colaborativo
forks=Forks
activities=Actividades
pull_requests=Solicitudes de incorporación de cambios
pull_requests=Pull requests
issues=Incidencias
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"?
more_items = Mas cosas
copy_generic = Copiar al portapapeles
filter.not_fork = No hay bifurcaciones
filter.is_fork = Bifurcaciones
filter.not_fork = No forks
filter.is_fork = Forks
test = Test
error413 = Has agotado tu cuota.
new_repo.title = Nuevo repositorio
@ -229,7 +229,7 @@ platform_desc=Se ha confirmado que Forgejo funciona en sistemas operativos libre
lightweight=Ligero
lightweight_desc=Forgejo tiene pocos requisitos y puede funcionar en una Raspberry Pi barata. ¡Ahorra energía!
license=Código abierto
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!
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!
[install]
install=Instalación
@ -316,7 +316,7 @@ confirm_password=Confirmar contraseña
admin_email=Correo electrónico
install_btn_confirm=Instalar Forgejo
test_git_failed=Fallo al probar el comando "git": %v
sqlite3_not_available=Esta versión de Forgejo no admite SQLite3. Descárguese la versión binaria oficial desde %s (no la versión «gobuild»).
sqlite3_not_available=Esta versión de Forgejo no soporta SQLite3. Por favor, descarga la versión binaria oficial de %s (no la versión "gobuild").
invalid_db_setting=La configuración de la base de datos no es válida: %v
invalid_db_table=La tabla "%s" de la base de datos no es válida: %v
invalid_repo_path=La ruta de la raíz del repositorio no es válida: %v
@ -397,8 +397,8 @@ code_search_results=Resultados de búsqueda para «%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=Solo se muestran repositorios relevantes, <a href="%s">mostrar resultados sin filtrar</a>.
forks_few = %d bifurcaciones
forks_one = %d bifurcación
forks_few = %d forks
forks_one = %d fork
stars_few = %d estrellas
stars_one = %d estrella
@ -680,8 +680,6 @@ To = Nombre de rama
Website = Sitio web
email_domain_is_not_allowed = El dominio de la dirección de correo electrónico del usuario <b>%s</b> entra en conflicto con EMAL_DOMAIN_ALLOWLIST o EMAIL_DOMAIN_BLOCKLIST. Asegúrese de que ha establecido la dirección de correo electrónico correctamente.
[user]
change_avatar=Cambiar su avatar…
joined_on=Se unió el %s
@ -701,7 +699,7 @@ disabled_public_activity=Este usuario ha desactivado la visibilidad pública de
email_visibility.limited=Tu dirección de correo electrónico es visible para todos los usuarios autenticados
email_visibility.private=Tu dirección de correo electrónico solo es visible para ti y los administradores
show_on_map=Mostrar este lugar en un mapa
settings=Configuración del usuario
settings=Ajustes del usuario
form.name_reserved=El nombre de usuario "%s" está reservado.
form.name_pattern_not_allowed=El patrón "%s" no está permitido en un nombre de usuario.
@ -748,7 +746,7 @@ webauthn=Autenticación de dos factores (claves de seguridad)
public_profile=Perfil público
biography_placeholder=¡Cuenta a otros un poco sobre ti! (Se admite Markdown)
location_placeholder=Comparte tu ubicación aproximada con otros
profile_desc=Acerca de ti
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.
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
website=Página web
@ -813,7 +811,7 @@ manage_emails=Administrar direcciones de correo electrónico
manage_themes=Tema por defecto
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.
theme_desc=Este tema será usado en la interfaz web cuando hayas iniciado sesión.
theme_desc=Este será su tema por defecto en todo el sitio.
primary=Principal
activated=Activado
requires_activation=Requiere activación
@ -839,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.
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_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.
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.
openid_desc=OpenID le permite delegar la autenticación a un proveedor externo.
manage_ssh_keys=Gestionar claves SSH
manage_ssh_principals=Administrar Principales de Certificado SSH
manage_gpg_keys=Gestionar claves GPG
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 confirmaciones de Git firmadas 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 commits de Git firmados por SSH.
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.
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.
@ -1056,8 +1054,6 @@ 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.localization_project = ¡Ayúdanos a traducir Forgejo a tu idioma! <a href="%s">Más información</a>.
pronouns_custom_label = Pronombres personalizados
[repo]
owner=Propietario
owner_helper=Algunas organizaciones pueden no aparecer en el menú desplegable debido a un límite máximo de recuento de repositorios.
@ -1072,10 +1068,10 @@ visibility=Visibilidad
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_forced=El administrador de su sitio obliga a nuevos repositorios a ser privados.
visibility_fork_helper=(Cambiar esto afectará a la visibilidad de todas las bifurcaciones.)
visibility_fork_helper=(Cambiar esto afectará a la visibilidad de todos los forks.)
clone_helper=¿Necesita ayuda para clonar? Visite <a target="_blank" rel="noopener noreferrer" href="%s">Ayuda</a>.
fork_repo=Hacer una bifurcación del repositorio
fork_from=Crear una bifurcación desde
fork_repo=Hacer fork del repositorio
fork_from=Crear un fork desde
already_forked=Ya ha forkeado %s
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.
@ -1098,11 +1094,11 @@ issue_labels=Etiquetas
issue_labels_helper=Selecciona un conjunto de etiquetas
license=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_helper=Selecciona una plantilla de archivo README
readme_helper_desc=Este es el lugar donde puedes escribir una descripción completa de su proyecto.
auto_init=Inicializar el repositorio
auto_init=Inicializar el repositorio (añade .gitignore, licencia y README)
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_committer=Comitter: Firmas de confianza que coinciden con los committers
@ -1226,7 +1222,7 @@ migrate.migrating_failed_no_addr=Migración fallida.
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.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.
migrate.gitea.description=Migrar datos de gitea.com u otra instancia de Gitea/Forgejo.
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.codebase.description=Migrar datos desde codebasehq.com.
@ -1237,7 +1233,7 @@ migrate.migrating_milestones=Migrando hitos
migrate.migrating_labels=Migrando etiquetas
migrate.migrating_releases=Migrando lanzamientos
migrate.migrating_issues=Migrando incidencias
migrate.migrating_pulls=Migrando solicitudes de incorporación de cambios
migrate.migrating_pulls=Migrando pull requests
migrate.cancel_migrating_title=Cancelar la migración
migrate.cancel_migrating_confirm=¿Quiere cancelar esta migración?
@ -1865,7 +1861,7 @@ pulls.add_prefix=Añadir 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.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éntelo de nuevo en unos momentos.
pulls.is_checking=La comprobación de conflicto de fusión está en progreso. Inténtalo 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_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.
@ -2045,8 +2041,8 @@ activity.opened_prs_count_1=Pull request propuesta
activity.opened_prs_count_n=Pull requests propuestas
activity.title.user_1=%d usuario
activity.title.user_n=%d usuarios
activity.title.prs_1=%d solicitud de incorporación de cambios
activity.title.prs_n=%d solicitudes de incorporación de cambios
activity.title.prs_1=%d pull request
activity.title.prs_n=%d pull requests
activity.title.prs_merged_by=%s fusionado por %s
activity.title.prs_opened_by=%s propuesto por %s
activity.merged_prs_label=Fusionado
@ -2093,7 +2089,7 @@ activity.git_stats_and_deletions=y
activity.git_stats_deletion_1=%d eliminación
activity.git_stats_deletion_n=%d eliminaciones
contributors.contribution_type.commits=Confirmaciones
contributors.contribution_type.commits=Commits
search=Buscar
search.search_repo=Buscar repositorio
@ -2150,7 +2146,7 @@ settings.update_mirror_settings=Actualizar ajustes de réplica
settings.branches.switch_default_branch=Cambiar rama por defecto
settings.branches.update_default_branch=Actualizar rama por defecto
settings.branches.add_new_rule=Añadir nueva regla
settings.advanced_settings=Configuración avanzada
settings.advanced_settings=Ajustes avanzados
settings.wiki_desc=Activar wiki del repositorio
settings.use_internal_wiki=Usar wiki integrada
settings.use_external_wiki=Usar wiki externa
@ -2184,7 +2180,7 @@ settings.releases_desc=Activar lanzamientos en el repositorio
settings.packages_desc=Habilitar registro de paquetes en el repositorio
settings.projects_desc=Activar proyectos en el repositorio
settings.actions_desc=Habilite procesos CI/CD integrados con Forgejo Actions
settings.admin_settings=Configuración administrativa
settings.admin_settings=Ajustes de administrador
settings.admin_enable_health_check=Activar cheques de estado de salud del repositorio (git fsck)
settings.admin_code_indexer=Indexador de código
settings.admin_stats_indexer=Indexador de estadísticas de código
@ -2337,7 +2333,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_desc=Pull Request asignado o no asignado.
settings.event_pull_request_label=Etiquetas
settings.event_pull_request_label_desc=Etiquetas de pull request actualizadas o borradas.
settings.event_pull_request_label_desc=Etiqueta de pull request actualizada o borrada.
settings.event_pull_request_milestone=Hitos
settings.event_pull_request_milestone_desc=Hitos añadidos, eliminados o modificados.
settings.event_pull_request_comment=Comentarios
@ -2442,7 +2438,7 @@ settings.protect_approvals_whitelist_users=Lista blanca de usuarios revisores
settings.protect_approvals_whitelist_teams=Lista blanca de equipos revisores
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.require_signed_commits=Exigir confirmaciones firmadas
settings.require_signed_commits=Exigir commits firmados
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_patterns=Patrones
@ -2470,7 +2466,7 @@ settings.choose_branch=Elija una rama…
settings.no_protected_branch=No hay ramas protegidas.
settings.edit_protected_branch=Editar
settings.protected_branch_required_rule_name=Nombre de regla requerido
settings.protected_branch_duplicate_rule_name=Ya hay una regla para este conjunto de ramas
settings.protected_branch_duplicate_rule_name=Nombre de regla duplicado
settings.protected_branch_required_approvals_min=Las aprobaciones necesarias no pueden ser negativas.
settings.tags=Etiquetas
settings.tags.protection=Protección de etiquetas
@ -2494,11 +2490,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.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.branchsettings_unavailable=Los ajustes de rama no están disponibles en repositorios archivados.
settings.archive.branchsettings_unavailable=Los ajustes de rama 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.header=Desarchivar este repositorio
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.text=La desarchivación del repositorio restablecerá su capacidad de recibir commits y pushes, así como nuevas incidencias y pull requests.
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.update_avatar_success=El avatar del repositorio ha sido actualizado.
@ -2569,7 +2565,7 @@ diff.generated=generado
diff.vendored=vendido
diff.comment.add_line_comment=Añadir comentario en línea
diff.comment.placeholder=Deja un comentario
diff.comment.markdown_info=Es posible dar estilos con Markdown.
diff.comment.markdown_info=Es posible estilizar con markdown.
diff.comment.add_single_comment=Añadir solo comentario
diff.comment.add_review_comment=Añadir comentario
diff.comment.start_review=Comenzar revisión
@ -2724,7 +2720,7 @@ size_format = %[1]s: %[2]s, %[3]s: %[4]s
admin.update_flags = Actualizar indicadores
admin.flags_replaced = Indicadores del repositorio sustituidos
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.
commits.browse_further = Seguir explorando
subscribe.issue.guest.tooltip = Inicia sesión para suscribirte a esta incidencia.
@ -2802,7 +2798,7 @@ settings.confirmation_string = Cadena de confirmación
issues.filter_sort.relevance = Relevancia
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.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_notices_2 =
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.confirm_wiki_branch_rename = Renombrar la rama de la wiki
@ -2819,32 +2815,7 @@ release.download_count_one = %s descarga
diff.git-notes.add = Añadir nota
diff.git-notes.remove-header = Eliminar nota
release.download_count_few = %s descargas
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
diff.git-notes.remove-body = Esta nota se eliminará.
[graphs]
component_loading = Cargando %s...
@ -2853,9 +2824,6 @@ contributors.what = contribuciones
recent_commits.what = commits recientes
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_name_holder=Nombre de la organización
org_full_name_holder=Nombre completo de la organización
@ -2981,8 +2949,6 @@ teams.invite.by=Invitado por %s
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.
open_dashboard = Abrir panel de control
[admin]
dashboard=Panel de control
identity_access=Identidad y acceso
@ -3510,20 +3476,6 @@ notices.op=Operación
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 = Configuración 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]
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>
@ -3667,7 +3619,7 @@ conda.install=Para instalar el paquete usando Conda, ejecute el siguiente comand
container.details.type=Tipo de imagen
container.details.platform=Plataforma
container.pull=Arrastra la imagen desde la línea de comandos:
container.digest=Resumen
container.digest=Resumen:
container.multi_arch=SO / Arquitectura
container.layers=Capas de imagen
container.labels=Etiquetas
@ -3764,19 +3716,6 @@ owner.settings.chef.title=Registro de Chef
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.
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=Secretos
description=Los secretos pasarán a ciertas acciones y no se podrán leer de otro modo.
@ -3795,7 +3734,7 @@ management=Gestión de secretos
[actions]
actions=Acciones
unit.desc=Gestione procesos CI/CD integrados con Forgejo Actions.
unit.desc=Gestionar acciones
status.unknown=Desconocido
status.waiting=Esperando
@ -3879,9 +3818,6 @@ variables.update.failed=Error al editar la variable.
variables.update.success=La variable ha sido editada.
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]
type-1.display_name=Proyecto individual
type-2.display_name=Proyecto repositorio
@ -3903,7 +3839,7 @@ search = Buscar...
type_tooltip = Tipo de búsqueda
project_kind = Buscar proyectos...
branch_kind = Buscar ramas...
commit_kind = Buscar confirmaciones...
commit_kind = Buscar commits...
repo_kind = Buscar repositorios...
user_kind = Buscar usuarios...
org_kind = Buscar organizaciones...
@ -3926,8 +3862,6 @@ fuzzy = Difusa
runner_kind = Buscar ejecutores…
regexp_tooltip = Interpretar los términos de búsqueda como una expresión regular
regexp = Expresión Regular
[markup]
filepreview.lines = Líneas %[1]d a %[2]d en %[3]s
filepreview.line = Línea %[1]d en %[2]s
@ -3938,7 +3872,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.
wiki.read = <b>Lectura:</b> Leer la wiki integrada y su historial.
issues.read = <b>Lectura:</b> Leer y crear incidencias y comentarios.
pulls.write = <b>Escritura:</b> Cerrar solicitudes de incorporación de cambios y gestionar metadatos como etiquetas, hitos, asignaciones, fechas de vencimiento y dependencias.
pulls.write = <b>Escritura:</b> Cerrar pull requests y gestionar metadatos como etiquetas, hitos, asignaciones, fechas de vencimiento y dependencias.
releases.read = <b>Lectura:</b> Ver y descagar lanzamientos.
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.

View file

@ -112,9 +112,9 @@ new_project_column = ستون جدید
retry = سعی دوباره
rerun = اجرای دوباره
rerun_all = اجرای دوباره تمام کارها
rss_feed = خوراک آراس‌اس
rss_feed = خوراک RSS
pin = سنجاق
unpin = برداشتن سنجاق
unpin = حذف سنجاق
locked = قفل شده
copy_hash = رونوشت هش
unknown = نامشخص
@ -134,93 +134,17 @@ new_repo.title = مخزن جدید
new_migrate.title = مهاجرت جدید
new_repo.link = مخزن جدید
tracked_time_summary = چکیده‌ای از زمان ردیابی‌شده بر اساس پالایه‌های فهرست مشکل‌ها
toggle_menu = دگرش فهرست
webauthn_error_insecure = احرازوب فقط از روش‌های ایمن ممکن است. برای آزمودن بر روی اچ‌تی‌تی‌پی می‌توانید از «میزبان‌محلی» یا «۱۲۷.۰.۰.۱» استفاده کنید.
remove_label_str = حذف مورد "%s"
view = نما
test = آزمودن
copy_generic = رونوشت در بریده‌دان
copy_path = رونوشت مسیر
copy_content = رونوشت درون‌مایه
error413 = شما سهمیه خود را تمام کرده‌اید.
go_back = بازگشت
invalid_data = داده نامعتبر: %v
artifacts = آلایه
confirm_delete_artifact = آیا مطمئن هستید که می‌خواهید آلایه « %s » را حذف کنید؟
concept_system_global = سراسری
concept_user_individual = تکی
show_timestamps = نمایش برچسب‌زمان
show_log_seconds = نمایش ثانیه‌ها
show_full_screen = نمایش تمام صفحه
download_logs = بارگیری واقعه‌نگاری
confirm_delete_selected = تایید می‌کنید که همه موارد گزینش شده حذف شوند؟
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 = خصوصی
[aria]
navbar = نوار ناوبری
footer = پاورقی
footer.software = درباره این نرم‌افزار
footer.links = پیوندها
[heatmap]
number_of_contributions_in_the_last_12_months = %s هم‌کاری در ۱۲ ماه گذشته
contributions_zero = بدون هم‌کاری
contributions_format = {هم‌کاری} در {روز}{ماه}{سال}
contributions_one = هم‌کاری
contributions_few = هم‌کاری‌ها
less = کم‌تر
more = بیش‌تر
[editor]
buttons.heading.tooltip = افزودن سرصفحه
buttons.bold.tooltip = افزودن متن درشت
buttons.italic.tooltip = افزودن متن کج
buttons.quote.tooltip = افزودن نقل‌قول
buttons.code.tooltip = افزودن کد
buttons.link.tooltip = افزودن یک پیوند
buttons.list.unordered.tooltip = افزودن یک فهرست نقطه‌ای
buttons.list.ordered.tooltip = افزودن یک فهرست شماره‌دار
buttons.list.task.tooltip = افزودن یک فهرست کارها
buttons.mention.tooltip = یادکردن از کاربر یا گروهی
buttons.ref.tooltip = اشاره به مشکلی یا درخواست واکشی
buttons.switch_to_legacy.tooltip = به جای آن از ویرایش‌گر کهنه‌تر استفاده کن
buttons.enable_monospace_font = فونت یکپارچه را فعال کن
buttons.disable_monospace_font = فونت یکپارچه را غیرفعال کن
buttons.indent.tooltip = اجزا را با یک سطح گروه‌بندی کن
buttons.unindent.tooltip = اجزا را با یک سطح گروه‌بندی نکن
buttons.new_table.tooltip = افزودن جدول
table_modal.header = افزودن جدول
table_modal.placeholder.header = سرآیند
table_modal.placeholder.content = محتوا
table_modal.label.rows = ردیف‌ها
table_modal.label.columns = ستون‌ها
[filter]
string.asc = آ - ی
string.desc = ی - آ
[error]
missing_csrf=درخواست بد: بلیط CSRF ندارد
occurred = خطایی رخ داد
report_message = اگر گمان می‌برید این اشکال از فورججو است، لطفا در مشکلات در <a href="%s" target="_blank">کدبرگ</a> را بگردید یا اگر لازم است یک مشکل باز کنید.
not_found = هدف را نمی‌توان یافت.
network_error = خطای شبکه
server_internal = خطای درونی کارساز
[startpage]
app_desc=یک سرویس گیت بی‌درد سر و راحت
install=راه‌اندازی ساده
@ -230,19 +154,16 @@ lightweight_desc=گیتی با حداقل منابع میتوانید برای
license=متن باز
license_desc=برو به <a target="_blank" rel="noopener noreferrer" href="%[1]s">Forgejo</a>! به ملحق شوید با <a target="_blank" rel="noopener noreferrer" href="%[2]s"> مشارکت کردن</a> برای این که این پروژه بهتر شود. برای مشارکت کردن خجالت نکشید!
install_desc = به آسانی <a target="_blank" rel="noopener noreferrer" href="%[1]s">اعداد دو دویی</a> را برای سکوی خود اجرا کنید. با <a target="_blank" rel="noopener noreferrer" href="%[2]s">داکر</a> آن را ارسال کنید، یا <a target="_blank" rel="noopener noreferrer" href="%[3]s">بسته‌بندی</a> تحویل بگیرید.
platform_desc = فورججو برای اجرا بر روی سامانه‌عامل‌های آزاد مانند گنو/لینوکس و بی‌اس‌دی آزاد و هم‌چنین معماری‌های گوناگون پردازنده ثبات دارد. هر چی میل‌تان هست انتخاب کنید!
[install]
install=نصب و راه اندازی
title=پیکربندی اولیه
title=تنظیمات اولیه
docker_helper=اگر گیتی را با داکر اجرا کرده‌اید، لطفا قبل از هر تغییری <a target="_blank" rel="noopener noreferrer" href="%s">مستندات</a> را مطالعه نمایید.
db_title=تنظیمات پایگاهداده
db_type=گونه پایگاه‌داده
db_title=تنظیمات پایگاه داده
db_type=نوع پایگاه داده
host=میزبان
user=نام کاربری
password=رمز عبور
db_name=نام پایگاهداده
db_name=نام پایگاه داده
db_schema=قالب
db_schema_helper=برای مقدار پیش فرض پایگاه داده خالی بگذارید ("public").
ssl_mode=SSL
@ -257,24 +178,24 @@ err_empty_db_path=مسیر دیتابیس SQLite3 نمیتواند خالی با
no_admin_and_disable_registration=شما بدون ایجاد حساب‌ کاربری مدیر نمی‌توانید عضویت را غیر فعال کنید.
err_empty_admin_password=کلمه عبور حساب مدیر نمی تواند خالی باشد.
err_empty_admin_email=رایانامه (ایمیل) مدیر نمی تواند خالی باشد.
err_admin_name_is_reserved=نام‌کاربری مدیر اشتباه است، نام‌کاربری قبلا استفاده شده است
err_admin_name_is_reserved=نام کاربری مدیر اشتباه است. نام کاربری قبلا استفاده شده است
err_admin_name_pattern_not_allowed=نام کاربری مدیر اشتباه است. نام کاربری قبلا استفاده شده است
err_admin_name_is_invalid=نام کابری مدیر اشتباه است
general_title=تنظیمات عمومی
app_name=تیتر نمونه
app_name_helper=شما می توانید نام نمونه خود را در اینجا وارد کنید. آن در همه برگه‌ها به نمایش در خواهد آمد.
app_name=عنوان سایت
app_name_helper=شما می توانید نام شرکت خود را در اینجا وارد کنید.
repo_path=مسیر ریشه مخزن
repo_path_helper=تمام مخازن کد راه دور در این پوشه ذخیره می‌شوند.
lfs_path=مسیر ریشه ذخیره‌سازی پرونده بزرگ گیت
lfs_path=مسیر Git LFS
lfs_path_helper=فایل هایی که توسط Git LFS دنبال میشوند در این پوشه ذخیره خواهند شد. درصورت خالی بودن فیلد این قابلیت غیرفعال خواهد بود.
run_user=اجرای کاربر به عنوان
domain=دامنه کارساز
run_user=اجرا به عنوان نام کاربری
domain=دامنه سرور
domain_helper=آدرس میزبان یا دامنه برای سرور.
ssh_port=درگاه کارساز پوسته‌امن
ssh_port_helper=شماره درگاهی که سرور پوسته‌امن استفاده می‌کند. برای غیر فعال کردن خالی بگذارید.
http_port=درگاه شنونده اچ‌تی‌تی‌پی
http_port_helper=شماره درگاهی که توسط کارساز وب فرججو استفاده می‌شود.
ssh_port=پورت SSH سرور
ssh_port_helper=شماره درگاهی که سرور SSH گوش می دهد. برای غیر فعال کردن خالی بگذارید.
http_port=پورت HTTP گیتی
http_port_helper=پورت سرور وب گیتی.
app_url=آدرس پایه گیتی
app_url_helper=آدرس پایه برای URLهای اجماع HTTP(S) و هشدار های رایانامه (ایمیل).
log_root_path=مسیر گزارش‌ها
@ -335,12 +256,6 @@ no_reply_address=مخفی کردن دامنه ایمیل
no_reply_address_helper=نام دامنه برای کاربران دارای آدرس ایمیل پنهان است. به عنوان مثال ، اگر نام دامنه ایمیل مخفی روی "noreply.example.org" تنظیم شده باشد ، نام کاربری "joe" در Git به عنوان "joe@noreply.example.org" وارد می شود
password_algorithm=الگوریتم درهم‌ساز گذرواژه
require_db_desc = فروججو به مای‌اس‌کیوال، پستگری‌اس‌کیوال،اس‌کیولایت۳ یا تی‌دی‌بی نیاز دارد.
app_slogan = شعار نمونه
app_slogan_helper = شعار نمونه خود را اینجا وارد کنید. برای غیرفعال شدن خالی بگذارید.
run_user_helper = نام‌کاربری سامانه‌عامل که با عنوان فرججو اجرا می‌شود. به یادداشته باشید که کاربر باید دسترسی به مسیر ریشه مخازن داشته باشد.
[home]
uname_holder=نام کاربری یا نشانی ایمیل
password_holder=گذرواژه
@ -966,7 +881,7 @@ migrate.migrating_failed=مهاجرت از <b>%s</b> ناموفق بود.
migrate.migrating_failed_no_addr=مهاجرت ناموفق بود.
migrate.git.description=کوچ یک مخزن فقط از یک سرویس Git.
migrate.gitlab.description=مهاجرت داده از gitlabb.com یا پیاده‌سازی‌های دیگر GitLab.
migrate.gitea.description=مهاجرت داده از gitea.com یا پیاده‌سازی‌های دیگر Gitea.
migrate.gitea.description=مهاجرت داده از gitea.com یا پیاده‌سازی‌های دیگر Gitea/Forgejo.
migrate.gogs.description=مهاجرت داده از notabug.com یا پیاده‌سازی‌های دیگر Gogs.
migrate.onedev.description=مهاجرت داده از code.onedev.io یا پیاده‌سازی‌های دیگر OneDev.
migrate.codebase.description=مهاجر داده ها از codebasehq.com.
@ -2074,8 +1989,6 @@ error.csv.too_large=نمی توان این فایل را رندر کرد زیر
error.csv.unexpected=نمی توان این فایل را رندر کرد زیرا حاوی یک کاراکتر غیرمنتظره در خط %d و ستون %d است.
error.csv.invalid_field_count=نمی توان این فایل را رندر کرد زیرا تعداد فیلدهای آن در خط %d اشتباه است.
milestones.filter_sort.name = نام
[graphs]
[org]
@ -2380,7 +2293,7 @@ auths.bind_password=اتصال گذرواژه
auths.user_base=پایگاه جستجوی کاربر
auths.user_dn=کاربر DN
auths.attribute_username=ویژگی نام کاربری
auths.attribute_username_placeholder=نام کاربری را خالی بگذارید برای انتخاب نام کاربری Forgejo انتخاب شود.
auths.attribute_username_placeholder=نام کاربری را خالی بگذارید برای انتخاب نام کاربری gitea انتخاب شود.
auths.attribute_name=ویژگی نام
auths.attribute_surname=ویژگی نام خانوادگی
auths.attribute_mail=ویژگی ایمیل
@ -2629,9 +2542,6 @@ notices.op=عملیات.
notices.delete_success=گزارش سیستم حذف شده است.
config_summary = چکیده
config_settings = تنظيمات
[action]
create_repo=مخزن ایجاد شده <a href="%s"> %s</a>
rename_repo=مخزن تغییر نام داد از <code>%[1]s</code> به <a href="%[2]s">%[3]s</a>
@ -2761,29 +2671,3 @@ executable_file = فایل اجرایی
normal_file = فایل معمولی
changed_filemode = %[1] ها ← %[2] ها
directory = پوشه
[search]
search = جستجو...
type_tooltip = جستجو گونه
fuzzy = درهم
fuzzy_tooltip = پیامدهایی را درج کنید که دقیقا با عبارت جستجو همخوانی داشته باشند
union = بهم پیوستگی
exact = مو به مو
exact_tooltip = نتایجی را در بر بگیر که مو به مو با اصطلاح جستجو شده یکی باشد
regexp = عبارات باقاعده
regexp_tooltip = اصطلاح جستجو شده را با عبارات باقاعده تفسیر کن
repo_kind = جستجو مخازن...
user_kind = جستجو کاربران...
org_kind = جستجو سازمان‌ها...
team_kind = جستجو گروه‌ها...
code_kind = جستجو کدها...
code_search_unavailable = جستجوی کد اکنون در دسترس نیست. لطفا با مدیر سایت درمیان بگذارید.
package_kind = جستجو بسته‌ها...
project_kind = جستجو پروژه‌ها...
branch_kind = جستجو شاخه‌ها...
commit_kind = جستجو سپرده‌ها...
runner_kind = جستجو دونده‌ها...
no_results = نتیجه درخوری یافت نشد.
issue_kind = جستجو مشکلات...
pull_kind = جستجو واکشی‌ها...
keyword_search_unavailable = جستجو کلیدواژه اکنون در درسترس نیست. لطفا با مدیر سایت در میان بگذارید.

View file

@ -289,10 +289,10 @@ mailer_password=SMTP-salasana
register_confirm=Vaadi sähköpostinvahvistus rekisteröinnin edellytykseksi
mail_notify=Ota sähköposti-ilmoitukset käyttöön
server_service_title=Palvelimen ja kolmansien osapuolten palveluiden asetukset
offline_mode=Ota käyttöön paikallinen tila
offline_mode=Ota käyttöön lokaali tila
offline_mode.description=Poista kolmannen osapuolen sisällönjakeluverkot ja tarjoa kaikki resurssit paikallisesti.
disable_gravatar=Poista Gravatar käytöstä
disable_gravatar.description=Poista Gravatar- tai muiden kolmansien osapuolien avatar-lähteet käytöstä. Oletuskuvia käytetään käyttäjien avatareissa, elleivät he uloslataa omaa avatariaan ilmentymään.
disable_gravatar.description=Poista Gravatar ja kolmannen osapuolen avaratir käytöstä. Oletus-avatar näytetään, ellei käyttäjä ole ladannut omaansa.
federated_avatar_lookup=Käytä federoituja profiilikuvia
federated_avatar_lookup.description=Käytä Libravatar-palvelua profiilikuvien hakemiseen.
disable_registration=Poista omatoiminen rekisteröityminen käytöstä
@ -481,8 +481,6 @@ disable_forgot_password_mail_admin = Tilin palautus on käytössä vain, jos sä
authorization_failed_desc = Valtuus epäonnistui, koska havaitsimme virheellisen pyynnön. Ota yhteys sen sovelluksen ylläpitäjään, jota yritit valtuuttaa.
password_pwned_err = Pyyntöä HaveIBeenPwned-palveluun ei voitu suorittaa
prohibit_login_desc = Tilinne on estetty kanssakäymästä tämän instanssin kanssa. Ota yhteys instanssin järjestelmävalvojaan pääsyn uudelleenmahdollistamiseksi.
[mail]
view_it_on=Näytä %s
link_not_working_do_paste=Eikö linkki toimi? Yritä kopioida ja liittää se selaimesi osoitepalkkiin.
@ -547,13 +545,6 @@ repo.collaborator.added.text = Sinut on lisätty avustajaksi repoon:
primary_mail_change.text_1 = Tilisi ensisijaiseksi sähköpostiosoitteeksi asetettiin %[1]s. Se tarkoittaa, että tämä sähköpostiosoite ei enää vastaanota tilisi ilmoituksia sähköpostitse.
team_invite.text_1 = %[1]s on kutsunut sinut liittymään tiimiin %[2]s organisaatiossa %[3]s.
issue_assigned.pull = @%[1]s osoitti sinulle vetopyynnön %[2]s repossa %[3]s.
issue_assigned.issue = @%[1]s osoitti sinulle ongelman %[2]s repossa %[3]s.
register_notify.text_1 = tämä on %s:n rekistöröitymisen vahvistussähköposti!
reset_password.text = jos tämä oli sinun toimestasi, ole hyvä ja klikkaa oheista linkkiä palauttaaksesi tilisi <b>%s</b> sisällä:
totp_disabled.no_2fa = Muita kaksivaiheisen tunnistautumisen menetelmiä ei ole konfiguroituna, joten et tarvitse kaksivaiheista tunnistautumista kirjautuaaksesi tilillesi.
[modal]
yes=Kyllä
no=Ei
@ -636,9 +627,6 @@ must_use_public_key = Antamasi avain on yksityinen avain. Älä lähetä yksityi
still_own_packages = Tilisi omistaa yhden tai useamman paketin, poista ne ensin.
AccessToken = Pääsypoletti
enterred_invalid_owner_name = Uuden omistajan nimi ei ole kelvollinen.
[user]
change_avatar=Vaihda profiilikuvasi…
repositories=Repot
@ -975,7 +963,7 @@ repo_name=Repon nimi
repo_name_helper=Hyvä repon nimi on lyhyt, mieleenpainuva ja yksilöllinen.
repo_size=Repon koko
template=Malli
template_select=Valitse malli
template_select=Valitse malli.
template_helper=Tee reposta mallipohja
visibility=Näkyvyys
visibility_description=Vain omistaja tai organisaation jäsenet, jos heillä on oikeudet, voivat nähdä sen.
@ -990,7 +978,7 @@ repo_desc=Kuvaus
repo_lang=Kieli
repo_gitignore_helper=Valitse .gitignore-mallit
issue_labels=Ongelmien tunnisteet
issue_labels_helper=Valitse nimiöjoukko
issue_labels_helper=Valitse pohja ongelmien nimilapuille.
license=Lisenssi
license_helper=Valitse lisenssitiedosto
readme=README
@ -1529,12 +1517,12 @@ settings.protected_branch=Haaran suojaus
settings.branch_protection=Haaran "<b>%s</b>" suojaussäännöt
settings.protect_this_branch=Ota haaran suojaus käyttöön
settings.protect_whitelist_deploy_keys=Lisää julkaisuavaimet sallittujen listalle mahdollistaaksesi repohin kirjoituksen.
settings.protect_whitelist_users=Sallitut käyttäjät suhteessa työntämiseen
settings.protect_whitelist_users=Lista käyttäjistä joilla työntö oikeus:
settings.protect_whitelist_search_users=Etsi käyttäjiä…
settings.protect_merge_whitelist_committers_desc=Salli vain listaan merkittyjen käyttäjien ja tiimien yhdistää vetopyynnöt tähän haaraan.
settings.protect_merge_whitelist_users=Sallitut käyttäjät suhteessa yhdistämiseen
settings.protect_merge_whitelist_users=Lista käyttäjistä joilla yhdistämis-oikeus:
settings.protect_required_approvals=Vaadittavat hyväksynnät
settings.protect_approvals_whitelist_users=Sallittujen tarkastajien lista
settings.protect_approvals_whitelist_users=Sallittujen tarkastajien lista:
settings.choose_branch=Valitse haara…
settings.no_protected_branch=Suojattuja haaroja ei ole.
settings.edit_protected_branch=Muokkaa
@ -1708,7 +1696,7 @@ settings.event_issue_comment = Kommentit
diff.download_patch = Lataa patch-tiedosto
issues.filter_milestone_none = Ei merkkipaaluja
issues.filter_milestone_open = Avoimet merkkipaalut
new_repo_helper = Tietovarasto sisältää kaikki projektitiedostot, mukaan lukien tarkistushistoria. Järjestätkö jo sellaisen muualla? <a href="%s">Siirrä tietovarasto</a>.
new_repo_helper = Repositorio eli tietovarasto sisältää kaikki projektin tiedostot, mukaan lukien versiohistorian. Onko sinulla repo jo jossain muualla? <a href="%s">Tee repomigraatio.</a>
use_template = Käytä tätä mallipohjaa
star_guest_user = Kirjaudu sisään lisätäksesi tähden tähän repoon.
watch_guest_user = Kirjaudu sisään tarkkaillaksesi tätä repoa.
@ -1778,7 +1766,7 @@ issues.close = Sulje ongelma
issues.no_content = Ei kuvausta.
pulls.reject_count_1 = %d muutospyyntö
pulls.update_branch_success = Haarapäivitys onnistui
milestones.completeness = <strong>%d% %</strong> valmiina
milestones.completeness = <strong>%d%%</strong> valmiina
contributors.contribution_type.additions = Lisäykset
contributors.contribution_type.deletions = Poistot
settings.webhook_deletion_success = Webkoukku on poistettu.
@ -2109,29 +2097,6 @@ settings.archive.text = Repon arkistointi asettaa sen pelkkään lukutilaan. Se
no_eol.text = Ei EOL:ää
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.
issues.new.assign_to_me = Osoita itselle
issues.filter_assginee_no_select = Kaikki käsittelijät
pulls.closed_at = `sulki tämän vetopyynnön <a id="%[1]s" href="#%[1]s">%[2]s</a>`
generate_repo = Luo repo
tree_path_not_found_commit = Polkua %[1]s ei ole olemassa kommitissa %[2]s
tree_path_not_found_branch = Polkua %[1]s ei ole olemassa haarassa %[2]s
tree_path_not_found_tag = Polkua %[1]s ei ole olemassa tagissa %[2]s
transfer.no_permission_to_accept = Sinulla ei ole oikeutta hyväksyä tätä siirtoa.
transfer.no_permission_to_reject = Sinulla ei ole oikeutta hylätä tätä siirtoa.
settings.web_hook_name_feishu = Feishu / Lark Suite
[graphs]
component_loading_info = Tämä saattaa kestää hetken…
component_failed_to_load = Odottamaton virhe.
@ -2617,16 +2582,6 @@ compare_branch = Vertaa
review_dismissed_reason = Syy:
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]
now=nyt
1s=1 sekunti
@ -2673,8 +2628,6 @@ error.extract_sign = Allekirjoituksen purkaminen epäonnistui
default_key = Allekirjoitettu oletusavaimella
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]
unit = Yksikkö
@ -2815,10 +2768,6 @@ owner.settings.cargo.rebuild.error = Cargo-indeksin rakentaminen uudelleen epäo
owner.settings.cargo.rebuild.success = Cargo-indeksi rakennettiin uudelleen.
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]
creation.failed = Salaisuuden lisääminen epäonnistui.
deletion = Poista salaisuus

View file

@ -231,10 +231,10 @@ ssl_mode = SSL
path = Daanan
sqlite_helper = File path para sa SQLite3 database.<br>Maglagay ng absolute path kapag tinatakbo mo ang Forgejo bilang serbisyo.
reinstall_confirm_check_3 = Kinukumprima mo na sigurado ka talaga na ang Forgejo na ito ay tumatakbo sa tamang app.ini na lokasyon at sigurado ka na kailangan mo mag-reinstall. Kinukumpirma mo na kilalanin ang mga panganib sa itaas.
err_empty_db_path = Hindi maaaring walang laman ang path ng SQLite database.
no_admin_and_disable_registration = Hindi mo maaaring i-disable ang user self-registration nang hindi gumawa ng isang tagapangasiwa na account.
err_empty_admin_password = Hindi maaaring walang laman ang password ng tagapangasiwa.
err_empty_admin_email = Hindi maaaring walang laman ang email ng tagapangasiwa.
err_empty_db_path = Hindi maaring walang laman ang path ng SQLite database.
no_admin_and_disable_registration = Hindi mo maaring i-disable ang user self-registration nang hindi gumawa ng isang tagapangasiwa na account.
err_empty_admin_password = Hindi maaring walang laman ang password ng tagapangasiwa.
err_empty_admin_email = Hindi maaring walang laman ang email ng tagapangasiwa.
err_admin_name_is_reserved = Hindi angkop ang username ng tagapangasiwa, naka-reserba ang username
err_admin_name_is_invalid = Hindi angkop ang username ng tagapangasiwa
general_title = Mga General Setting
@ -250,9 +250,9 @@ domain_helper = Domain o host para sa server na ito.
ssh_port = Port ng SSH Server
http_port = Listen port sa HTTP
lfs_path_helper = Ang mga file na naka-track sa Git LFS ay ilalagay sa directory na ito. Iwanang walang laman para i-disable.
reinstall_confirm_message = Ang pag-install muli na may umiiral na Forgejo database ay maaaring magdulot ng mga problema. Sa karamihan ng mga kaso, dapat mong gamitin ang iyong umiiral na "app.ini" para patakbuhin ang Forgejo. Kung alam mo ang ginagawa mo, kumpirmahin ang mga sumusunod:
reinstall_confirm_check_1 = Ang data na naka-encrypt sa pamamagitan ng SECRET_KEY sa app.ini ay maaaring mawala: baka hindi maka-log in ang mga user gamit ng 2FA/OTP at ang mga mirror ay maaaring hindi gumana mg maayos. Sa pamamagitan ng pag-check ng box na ito kinukumpirma mo na ang kasalukuyang app.ini file ay naglalaman ng tamang SECRET_KEY.
reinstall_confirm_check_2 = Ang mga repositoryo at mga setting ay maaaring kailangang i-resynchronize. Sa pamamagitan ng pag-check ng box na ito kinukumprima mo na ire-resynchronize mo ang mga hook para sa mga repositoryo at authorized_keys ng mano-mano. Kinukumpirma mo na sisiguraduhin mo na tama ang mga setting ng repositoryo at mirror.
reinstall_confirm_message = Ang pag-install muli na may umiiral na Forgejo database ay maaring magdulot ng mga problema. Sa karamihan ng mga kaso, dapat mong gamitin ang iyong umiiral na "app.ini" para patakbuhin ang Forgejo. Kung alam mo ang ginagawa mo, kumpirmahin ang mga sumusunod:
reinstall_confirm_check_1 = Ang data na naka-encrypt sa pamamagitan ng SECRET_KEY sa app.ini ay maaring mawala: baka hindi maka-log in ang mga user gamit ng 2FA/OTP at ang mga mirror ay maaring hindi gumana mg maayos. Sa pamamagitan ng pag-check ng box na ito kinukumpirma mo na ang kasalukuyang app.ini file ay naglalaman ng tamang SECRET_KEY.
reinstall_confirm_check_2 = Ang mga repositoryo at mga setting ay maaring kailangang i-resynchronize. Sa pamamagitan ng pag-check ng box na ito kinukumprima mo na ire-resynchronize mo ang mga hook para sa mga repositoryo at authorized_keys ng mano-mano. Kinukumpirma mo na sisiguraduhin mo na tama ang mga setting ng repositoryo at mirror.
err_admin_name_pattern_not_allowed = Hindi angkop ang username ng tagapangasiwa, ang username ay tumutugma sa reserved pattern
ssh_port_helper = Numero ng port na gagamitin ng SSH server. Iwanang walang laman para i-disable ang SSH server.
server_service_title = Mga setting ng server at third-party na serbisyo
@ -565,7 +565,7 @@ SSPISeparatorReplacement = Pang-hiwalay
SSPIDefaultLanguage = Default na wika
CommitSummary = Pangkalahatang-ideya ng commit
glob_pattern_error = ` hindi angkop ang glob pattern: %s`
require_error = ` hindi maaaring walang laman.`
require_error = ` hindi maaring walang laman.`
alpha_dash_error = ` dapat maglaman lamang ng alphanumeric, dash ("-") at underscore ("_") na mga character.`
alpha_dash_dot_error = ` dapat maglaman lamang ng alphanumeric, dash ("-"), underscore ("_") at tuldok (".") na mga character.`
git_ref_name_error = ` dapat na mahusay na nabuong pangalan ng Git reference`
@ -613,8 +613,8 @@ unset_password = Hindi nagtakda ng password ang login user.
unsupported_login_type = Hindi sinusuportahan ang uri ng pag-login para burahin ang account.
user_not_exist = Hindi umiiral ang user.
team_not_exist = Hindi umiiral ang koponan.
last_org_owner = Hindi mo maaaring tanggalin ang pinakahuling user sa "mga may-ari" na koponan. Kailangan may kahit isang may-ari para sa organisasyon.
cannot_add_org_to_team = Hindi maaaring madagdag ang isang organisasyon bilang miyembro ng koponan.
last_org_owner = Hindi mo maaring tanggalin ang pinakahuling user sa "mga may-ari" na koponan. Kailangan may kahit isang may-ari para sa organisasyon.
cannot_add_org_to_team = Hindi maaring madagdag ang isang organisasyon bilang miyembro ng koponan.
duplicate_invite_to_team = Inimbita na ang user bilang miyembro ng koponan.
organization_leave_success = Matagumpay kang umalis sa organisasyon na %s.
invalid_ssh_key = Hindi ma-verify ang iyong SSH key: %s
@ -629,7 +629,7 @@ still_own_packages = Ang iyong account ay nagmamay-ari ng isa o higit pang packa
org_still_own_repo = Ang organisasyon na ito ay nagmamay-ari ng isa o higit pang mga repositoryo, burahin o ilipat sila muna.
org_still_own_packages = Ang organisasyon na ito ay nagmamay-ari ng isa o higit pang mga package, burahin sila muna.
target_branch_not_exist = Hindi umiiral ang target branch.
admin_cannot_delete_self = Hindi mo maaaring burahin ang sarili mo kapag isa kang tagapangasiwa. Paki-tanggal ang iyong pribilehiyong tagapangasiwa muna.
admin_cannot_delete_self = Hindi mo maaring burahin ang sarili mo kapag isa kang tagapangasiwa. Paki-tanggal ang iyong pribilehiyong tagapangasiwa muna.
required_prefix = Ang input ay dapat magsimula sa "%s"
FullName = Buong pangalan
Description = Paglalarawan
@ -641,8 +641,6 @@ Biography = Byograpya
Location = Lokasyon
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]
joined_on = Sumali noong %s
repositories = Mga Repositoryo
@ -762,8 +760,8 @@ gpg_token_code = echo "%s" | gpg -a --default-key %s --detach-sig
delete_token_success = Nabura na ang token. Ang mga application na gumagamit nito ay hindi na maa-access ang iyong account.
add_email_confirmation_sent = Ang isang email na pang-kumpirma ay ipinadala sa %s. Para kumpirmahin ang iyong email address, pakisuri ang iyong inbox at sundan ang ibinigay na link sa loob ng %s.
key_content_ssh_placeholder = Nagsisimula sa "ssh-ed25519", "ssh-rsa", "ecdsa-sha2-nistp256", "ecdsa-sha2-nistp384", "ecdsa-sha2-nistp521", "sk-ecdsa-sha2-nistp256@openssh.com", o "sk-ssh-ed25519@openssh.com"
gpg_key_verified_long = Na-verify ang key na ito gamit ng isang token at maaaring gamitin para i-verify ang mga commit na tumutugma sa anumang mga naka-activate na email address para sa user na ito kasama ang mga tumutugmang pagkakakilanlan para sa key na ito.
ssh_key_verified_long = Ang key na ito ay na-verify gamit ng isang token at maaaring gamitin para i-verify ang mga commit na tumutugma na email address para sa user na ito.
gpg_key_verified_long = Na-verify ang key na ito gamit ng isang token at maaring gamitin para i-verify ang mga commit na tumutugma sa anumang mga naka-activate na email address para sa user na ito kasama ang mga tumutugmang pagkakakilanlan para sa key na ito.
ssh_key_verified_long = Ang key na ito ay na-verify gamit ng isang token at maaring gamitin para i-verify ang mga commit na tumutugma na email address para sa user na ito.
add_principal_success = Idinagdag na ang SSH certificate principal na "%s".
ssh_key_deletion_desc = Ang pagtanggal ng SSH key ay matatanggihan ang pag-access sa iyong account. Magpatuloy?
no_activity = Walang kamakilang aktibidad
@ -822,7 +820,7 @@ keep_email_private = Itago ang email address
openid_desc = Hinahayaan ka ng OpenID na mag-delegate ng pagpapatunay sa isang panlabas na tagabigay ng serbisyo.
ssh_desc = Ang mga pampublikong SSH key na ito ay nauugnay sa iyong account. Pinapayagan ng kaukulang pribadong key ang buong pag-access sa iyong mga repositoryo. Ang mga SSH key na na-verify ay maaaring magamit upang mapatunayan ang mga naka-sign na Git commit sa pamamagitan ng SSH.
principal_desc = Ang mga SSH principal na ito ay nauugnay sa iyong account at pinapayagan ang buong pag-access sa iyong mga repositoryo.
ssh_helper = <strong>Kailangan ng tulong?</strong> Tignan ang guide sa <a href="%s">paggawa ng sarili mong mga SSH key</a> o ilutas ang <a href="%s">mga karaniwang problema</a> na maaaring moong matagpo gamit ng SSH.
ssh_helper = <strong>Kailangan ng tulong?</strong> Tignan ang guide sa <a href="%s">paggawa ng sarili mong mga SSH key</a> o ilutas ang <a href="%s">mga karaniwang problema</a> na maaring moong matagpo gamit ng SSH.
gpg_helper = <strong>Kailangan ng tulong?</strong> Tignan ang guide <a href="%s">tungkol sa GPG</a>.
add_new_key = Magdagdag ng SSH key
add_new_gpg_key = Magdagdag ng GPG key
@ -832,7 +830,7 @@ ssh_key_been_used = Idinagdag na ang SSH key na ito sa server.
ssh_key_name_used = Ang isang SSH key na may katulad na pangalan ay umiiral na sa iyong account.
ssh_principal_been_used = Idinagdag na ang principal na ito sa server.
gpg_key_matched_identities = Mga Tumutugma na Pagkakakilanlan:
gpg_key_matched_identities_long = Ang mga naka-embed na pagkakakilanlan sa key na ito ay tumutugma sa mga sumusunod na naka-activate na email address para sa user na ito. Ang mga commit na tumutugma sa mga email address na ito ay maaaring i-verify gamit ng key na ito.
gpg_key_matched_identities_long = Ang mga naka-embed na pagkakakilanlan sa key na ito ay tumutugma sa mga sumusunod na naka-activate na email address para sa user na ito. Ang mga commit na tumutugma sa mga email address na ito ay maaring i-verify gamit ng key na ito.
gpg_key_verified = Naka-verify na key
gpg_key_verify = I-verify
gpg_invalid_token_signature = Ang ibinigay na GPG key, signature, at token ay hindi tumutugma o luma.
@ -984,7 +982,7 @@ manage_account_links_desc = Ang mga panlabas na account na ito ay naka-link sa i
hooks.desc = Magdagdag ng mga webhook na mati-trigger para sa <strong>lahat ng mga repositoryo</strong> na minamay-ari mo.
orgs_none = Hindi ka isang miyembro ng anumang mga organisasyon.
oauth2_application_create_description = Ang mga OAuth2 application ay pinapayagan ang mga third-party na aplikasyon na i-access ang mga user account sa instansya na ito.
oauth2_application_locked = Ang Forgejo ay pini-pre register ang ibang mga OAuth2 application sa startup kapag naka-enable sa config. Para iwasan ang hindi inaasahang gawain, hindi ito maaaring i-edit o tanggalin. Mangyaring sumangguni sa dokumentasyon ng OAuth2 para sa karagdagang impormasyon.
oauth2_application_locked = Ang Forgejo ay pini-pre register ang ibang mga OAuth2 application sa startup kapag naka-enable sa config. Para iwasan ang hindi inaasahang gawain, hindi ito maaring i-edit o tanggalin. Mangyaring sumangguni sa dokumentasyon ng OAuth2 para sa karagdagang impormasyon.
remove_account_link_desc = Ang pagtanggal ng naka-link na account ay babawiin ang pag-access nito sa iyong Forgejo account. Magpatuloy?
visibility.public_tooltip = Makikita ng lahat
hints = Mga Pahiwatig
@ -1013,7 +1011,7 @@ admin.enabled_flags = Mga flag na naka-enable para sa repositoryo:
admin.update_flags = I-update ang mga flag
admin.flags_replaced = Napalitan ang mga flag ng repositoryo
owner = May-ari
owner_helper = Maaaring hindi mapapakita ang ibang organisasyon sa dropdown dahil sa pinakamataas na bilang ng repositoryo na limitasyon.
owner_helper = Maaring hindi mapapakita ang ibang organisasyon sa dropdown dahil sa pinakamataas na bilang ng repositoryo na limitasyon.
repo_name = Pangalan ng repositoryo
repo_name_helper = Ang mga magandang pangalan ng repositoryo ay gumagamit ng maliit, makakaalala, at unique na mga keyword.
repo_size = Laki ng Repositoryo
@ -1029,7 +1027,7 @@ fork_repo = I-fork ang repositoryo
fork_from = I-fork mula sa
already_forked = Na-fork mo na ang %s
fork_to_different_account = Mag-fork sa ibang account
fork_visibility_helper = Ang visibility ng isang naka-fork na repositoryo ay hindi maaaring baguhin.
fork_visibility_helper = Ang visibility ng isang naka-fork na repositoryo ay hindi maaring baguhin.
open_with_editor = Buksan gamit ang %s
download_bundle = I-download ang BUNDLE
repo_gitignore_helper_desc = Piliin kung anong mga file na hindi susubaybayin sa listahan ng mga template para sa mga karaniwang wika. Ang mga tipikal na artifact na ginagawa ng mga build tool ng wika ay kasama sa .gitignore ng default.
@ -1114,7 +1112,7 @@ stars = Mga bitwin
migrate_options_mirror_helper = Magiging salamin ang repositoryong ito
migrate_options_lfs_endpoint.description.local = Sinusuporta rin ang lokal na server path.
editor.this_file_locked = Nakakandado ang file
editor.filename_cannot_be_empty = Hindi maaaring walang laman ang pangalan ng file.
editor.filename_cannot_be_empty = Hindi maaring walang laman ang pangalan ng file.
commits.message = Mensahe
commits.newer = Mas bago
commits.date = Petsa
@ -1171,7 +1169,7 @@ template.avatar = Avatar
migrate_options = Mga opsyon sa paglipat
migrate.clone_address_desc = Ang HTTP(S) o Git "clone" URL ng umiiral na repositoryo
need_auth = Awtorisasyon
migrate.github_token_desc = Maaari kang maglagay ng isa o higit pang mga token na hinihiwalay ng kuwit dito upang gawing mas-mabilis ang pagmigrate dahil sa rate limit ng GitHub API. BABALA: Ang pagabuso ng feature na ito ay maaaring maglabag sa patakaran ng tagapagbigay ng serbisyo at maaaring magdulot ng pag-block ng account.
migrate.github_token_desc = Maari kang maglagay ng isa o higit pang mga token na hinihiwalay ng kuwit dito upang gawing mas-mabilis ang pagmigrate dahil sa rate limit ng GitHub API. BABALA: Ang pagabuso ng feature na ito ay maaring maglabag sa patakaran ng tagapagbigay ng serbisyo at maaring magdulot ng pag-block ng account.
template.invalid = Kailangang pumili ng kahit isang template na repositoryo
migrate_options_lfs_endpoint.description = Susubukan ng migration na gamitin ang iyong Git remote upang <a target="_blank" rel="noopener noreferrer" href="%s">matukoy ang LFS server</a>. Maari mong magtiyak ng custom na endpoint kapag ang LFS data ng repositoryo ay nakalagay sa ibang lugar.
blame.ignore_revs.failed = Nabigong hindi pansinin ang mga rebisyon sa <a href="%s">.git-blame-ignore-revs</a>.
@ -1204,7 +1202,7 @@ adopt_preexisting_success = Pinagtibay ang mga file at ginawa ang repositoryo mu
delete_preexisting_success = Burahin ang mga hindi pinatibay na file sa %s
blame_prior = Tignan ang blame bago ang pagbabago na ito
migrate.permission_denied = Hindi ka pinapayagang mag-import ng mga lokal na repositoryo.
migrate.permission_denied_blocked = Hindi ka maaaring mag-import mula sa mga hindi pinapayagang host, magyaring magtanong sa pangangasiwa na suriin ang ALLOWED_DOMAINS/ALLOW_LOCALNETWORKS/BLOCKED_DOMAINS na mga setting.
migrate.permission_denied_blocked = Hindi ka maaring mag-import mula sa mga hindi pinapayagang host, magyaring magtanong sa pangangasiwa na suriin ang ALLOWED_DOMAINS/ALLOW_LOCALNETWORKS/BLOCKED_DOMAINS na mga setting.
migrate.invalid_local_path = Hindi wasto ang lokal na path. Hindi ito umiiral o hindi isang direktoryo.
migrate.invalid_lfs_endpoint = Hindi wasto ang LFS endpoint.
migrate.migrating_failed = Nabigo ang pag-migrate mula sa <b>%s</b>.
@ -1253,7 +1251,7 @@ file_follow = Sundan ang symlink
file_view_source = Tignan ang source
file_view_rendered = Tignan ng naka-render
ambiguous_runes_header = `Naglalaman ng file na ito ng mga hindi tiyak na Unicode character`
ambiguous_runes_description = `Ang file na ito ay naglalaman ng mga Unicode character na maaaring malilito sa ibang mga character. Kung sa tingin mo ay sinasadya ito, maaari mong ligtas na hindi pansinin ang babala ito. Gamitin ang I-escape na button para ipakita sila.`
ambiguous_runes_description = `Ang file na ito ay naglalaman ng mga Unicode character na maaring malilito sa ibang mga character. Kung sa tingin mo ay sinasadya ito, maari mong ligtas na hindi pansinin ang babala ito. Gamitin ang I-escape na button para ipakita sila.`
file_copy_permalink = Kopyahin ang permalink
view_git_blame = Tignan ang git blame
video_not_supported_in_browser = Hindi sinusuportahan ng inyong browser ang HTML5 "video" tag.
@ -1283,7 +1281,7 @@ broken_message = Ang Git data na pinagbabatayan sa repositoryo na ito ay hindi m
file_history = Kasaysayan
invisible_runes_header = `Nalalaman ng file na ito ng mga hindi nakikitang Unicode character`
file_too_large = Masyadong malaki ang file para ipakita.
invisible_runes_description = `Ang file na ito ay naglalaman ng mga hindi nakikitang Unicode character na hindi nakikilala ng mga tao ngunit maaaring maproseso ng ibang paraan ng isang computer. Kung sa tingin mo ay sinasadya ito, maaari mong ligtas na hindi pansinin ang babala na ito. Gamitin ang I-escape na button para ipakita sila.`
invisible_runes_description = `Ang file na ito ay naglalaman ng mga hindi nakikitang Unicode character na hindi nakikilala ng mga tao ngunit maaring maproseso ng ibang paraan ng isang computer. Kung sa tingin mo ay sinasadya ito, maari mong ligtas na hindi pansinin ang babala na ito. Gamitin ang I-escape na button para ipakita sila.`
commit.contained_in_default_branch = Ang commit na ito ay bahagi ng default na branch
migrate.migrating_labels = Nililipat ang mga label
filter_branch_and_tag = I-filter ang branch o tag
@ -1317,7 +1315,7 @@ clone_this_repo = I-clone ang repositoryo na ito
cite_this_repo = Banggitin ang repositoryo na ito
create_new_repo_command = Paggawa ng bagong repositoryo sa command line
code = Code
ambiguous_character = `Ang %[1]c [U+%04[1]X] ay maaaring malito sa %[2]c [U+%04[2]X]`
ambiguous_character = `Ang %[1]c [U+%04[1]X] ay maaring malito sa %[2]c [U+%04[2]X]`
escape_control_characters = I-escape
unescape_control_characters = I-unescape
invisible_runes_line = `Ang linya na ito ay may mga hindi nakikitang Unicode character`
@ -1331,7 +1329,7 @@ editor.must_be_on_a_branch = Dapat nasa branch ka upang gumawa o magmunkahi ng m
editor.new_branch_name_desc = Bagong pangalan ng branch…
editor.cancel = Kanselahin
issues.role.member = Miyembro
issues.remove_request_review_block = Hindi maaaring tanggalin ang hiling sa pagsuri
issues.remove_request_review_block = Hindi maaring tanggalin ang hiling sa pagsuri
issues.edit = Baguhin
issues.cancel = Kanselahin
issues.save = IImbak
@ -1732,7 +1730,7 @@ issues.label_exclusive_desc = Pangalanan ang label na <code>scope/item</code> up
issues.archived_label_description = (Naka-archive) %s
issues.label.filter_sort.alphabetically = Ayon sa alpabeto
issues.subscribe = Mag-subscribe
issues.max_pinned = Hindi ka maaaring mag-pin ng higit pang mga isyu
issues.max_pinned = Hindi ka maaring mag-pin ng higit pang mga isyu
issues.pin_comment = na-pin ito %s
issues.unpin_comment = na-unpin ito %s
issues.lock = I-lock ang usapan
@ -1788,7 +1786,7 @@ wiki.last_commit_info = Binago ni %s ang pahinang ito %s
issues.content_history.edited = binago
issues.ref_pull_from = `<a href="%[3]s">isinangguni ang hiling sa paghila na ito %[4]s </a><a id="%[1]s" href="#%[1]s">%[2]s</a>`
pulls.merged_title_desc_few = isinali ang %[1]d mga commit mula sa <code>%[2]s</code> patungong <code>%[3]s</code> %[4]s
settings.org_not_allowed_to_be_collaborator = Hindi maaaring idagdag ang mga organisasyon bilang tagatulong.
settings.org_not_allowed_to_be_collaborator = Hindi maaring idagdag ang mga organizasyon bilang tagatulong.
settings.add_collaborator_success = Naidagdag ang tagatulong.
settings.federation_following_repos = Mga URL ng Mga Sinusundang Repositoryo. Hinihiwalay ng ";", walang whitespace.
diff.comment.reply = Tumugon
@ -1887,8 +1885,8 @@ issues.dependency.remove_info = Tanggalin ang dependency na ito
issues.dependency.added_dependency = `nagdagdag ng bagong dependency %s`
issues.review.dismissed_label = Nadismiss
issues.review.dismissed = nadismiss ang pagsuri ni %s %s
issues.review.self.approval = Hindi mo maaaring aprubahan ang sarili mong hiling sa paghila.
issues.review.self.rejection = Hindi mo maaaring humiling ng pagbabago sa sarili mong hiling sa paghila.
issues.review.self.approval = Hindi mo maaring aprubahan ang sarili mong hiling sa paghila.
issues.review.self.rejection = Hindi mo maaring humiling ng pagbabago sa sarili mong hiling sa paghila.
pulls.nothing_to_compare_have_tag = Magkapareho ang mga piniling branch/tag.
issues.dependency.no_permission_1 = Wala kang pahintulot na basahin ang dependency na %d
issues.dependency.no_permission_n = Wala kang pahintulot na basahin ang mga %d dependency
@ -1922,7 +1920,7 @@ activity.active_prs_count_n = <strong>%d</strong> aktibong mga hiling sa paghila
issues.author.tooltip.issue = May-akda ng iysung ito ang user.
issues.author.tooltip.pr = May-akda ng hiling sa paghila na ito ang user na ito.
issues.dependency.add_error_dep_exists = Umiiral na and dependency.
issues.dependency.add_error_cannot_create_circular = Hindi ka maaaring gumawa ng dependency na may dalawang isyu na humaharang sa isa't isa.
issues.dependency.add_error_cannot_create_circular = Hindi ka maaring gumawa ng dependency na may dalawang isyu na humaharang sa isa't isa.
issues.dependency.add_error_same_issue = Hindi mo magagwang dumepende ang isyu sa sarili.
issues.dependency.add_error_dep_not_same_repo = Dapat nasa katulad na repositoryo ang mga isyu.
issues.dependency.add_error_dep_issue_not_exist = Hindi umiiral ang dumedependeng isyu.
@ -2038,7 +2036,7 @@ pulls.wrong_commit_id = ang commit id ay dapat ang commit id sa patutunguhan na
pulls.blocked_by_changed_protected_files_1 = Hinarangan ang hiling sa paghila na ito dahil nagbabago ito ng isang nakaprotektang file:
pulls.blocked_by_changed_protected_files_n = Hinarangan ang hiling sa paghila na ito dahil nagbabago ito ng mga nakaprotektang file:
pulls.blocked_by_official_review_requests = Hinarangan ang hiling sa paghila na ito dahil may nawawalang pag-apruba mula sa isa o higit pang mga opisyal na tagasuri.
pulls.can_auto_merge_desc = Maaaring isama ng awtomatiko ang hiling sa paghila na ito.
pulls.can_auto_merge_desc = Maaring isama ng awtomatiko ang hiling sa paghila na ito.
pulls.num_conflicting_files_n = %d mga magkasalungat na file
pulls.num_conflicting_files_1 = %d magkasalungat na file
issues.review.add_review_requests = humiling ng mga pagsuri mula sa %[1]s %[2]s
@ -2318,7 +2316,7 @@ settings.convert_confirm = I-convert ang repositoryo
settings.webhook.replay.description_disabled = Para i-replay ang webhook na ito, i-activate ito.
settings.tracker_issue_style.regexp = Regular na Ekspresyon
settings.admin_stats_indexer = Taga-index ng istatistika ng code
pulls.open_unmerged_pull_exists = `Hindi ka maaaring gumawa ng pagbukas-muli na operasyon dahil may nakabinbin na hiling sa paghila (#%d) na may magkatulad na katangian.`
pulls.open_unmerged_pull_exists = `Hindi ka maaring gumawa ng pagbukas-muli na operasyon dahil may nakabinbin na hiling sa paghila (#%d) na may magkatulad na katangian.`
milestones.deletion_success = Binura na ang milestone.
pulls.auto_merge_has_pending_schedule = Naiskedyul ni %[1]s na awtomatiko na isama ang hiling sa paghila na ito kapag magtagumpay ang lahat ng mga pagsusuri %[2]s.
issues.summary_card_alt = Pangkalahatang-ideyang card ng isyu na tawag na "%s" sa repositoryong %s
@ -2386,9 +2384,9 @@ settings.external_wiki_url_desc = Ire-redirect ang mga bisita sa URL ng panlabas
settings.use_external_issue_tracker = Gumamit ng panlabas na tagasubaybay na isyu
settings.wiki_desc = I-enable ang wiki ng repositoryo
settings.trust_model.default.desc = Gamitin ang default na modelo ng pagkatiwala ng repositoryo para sa installation na ito.
settings.add_webhook.invalid_path = Hindi maaaring maglaman ang path ng parte na "." o ".." o walang laman na string. Hindi maaaring magsimula o magtapos sa slash.
settings.add_webhook.invalid_path = Hindi maaring maglaman ang path ng parte na "." o ".." o walang laman na string. Hindi maaring magsimula o magtapos sa slash.
settings.webhook_deletion = Tanggalin ang webhook
settings.add_webhook.invalid_channel_name = Hindi maaaring walang laman ang pangalan ng channel ng webhook at hindi maaaring maglaman lang ng # na character.
settings.add_webhook.invalid_channel_name = Hindi maaring walang laman ang pangalan ng channel ng webhook at hindi maaring maglaman lang ng # na character.
pulls.update_branch = I-update ang branch sa pamamagitan ng pagsama
pulls.status_checks_show_all = Ipakita ang lahat ng mga pagsusuri
pulls.cmd_instruction_checkout_title = I-checkout
@ -2441,8 +2439,8 @@ settings.mirror_settings.docs.doc_link_title = Paano ako mag-mirror ng mga repos
settings.pull_mirror_sync_quota_exceeded = Nalagpasan ang quota, hindi hihila ng mga pagbabago.
settings.mirror_settings.push_mirror.none_ssh = Wala
settings.mirror_settings.push_mirror.copy_public_key = Kopyahin ang publikong key
pulls.delete_after_merge.head_branch.is_protected = Ang head branch na gusto mong burahin ay isang pinoprotektahang branch at hindi maaaring burahin.
pulls.delete_after_merge.head_branch.is_default = Ang head branch na gusto mong burahin ay ang default branch at hindi maaaring burahin.
pulls.delete_after_merge.head_branch.is_protected = Ang head branch na gusto mong burahin ay isang pinoprotektahang branch at hindi maaring burahin.
pulls.delete_after_merge.head_branch.is_default = Ang head branch na gusto mong burahin ay ang default branch at hindi maaring burahin.
issues.num_reviews_few = %d mga pagsusuri
issues.num_reviews_one = %d pagsusuri
diff.image.swipe = I-swipe
@ -2465,7 +2463,7 @@ diff.comment.add_single_comment = Magdagdag ng iisang komento
diff.comment.placeholder = Mag-iwan ng komento
release.detail = Mga detalye sa release
release.tags = Mga tag
release.title_empty = Hindi maaaring walang laman ang paksa.
release.title_empty = Hindi maaring walang laman ang paksa.
branch.included_desc = Ang branch na ito ay kabilang ng default branch
release.source_code = Source code
release.edit_subheader = Inaayos ng mga release ang mga bersyon ng proyekto.
@ -2508,8 +2506,8 @@ settings.block_outdated_branch_desc = Hindi magiging posible ang pagsasama kung
settings.block_rejected_reviews_desc = Hindi magiging posible ang pagsasama kapag may mga hiniling ng pagbabago ang mga opisyal na tagasuri, kahit na may sapat na pagapruba.
settings.block_on_official_review_requests = Harangan ang merge sa opisyal na hiling sa pagsuri
settings.tags.protection.allowed = Pinapayagan
settings.lfs_delete_warning = Ang pagbura ng LFS file ay maaaring magdulot ng mga "object does not exist" na error sa checkout. Sigurado ka ba?
settings.protected_branch_required_approvals_min = Hindi maaaring negatibo ang mga kinakailangang pagapruba.
settings.lfs_delete_warning = Ang pagbura ng LFS file ay maaring magdulot ng mga "object does not exist" na error sa checkout. Sigurado ka ba?
settings.protected_branch_required_approvals_min = Hindi maaring negatibo ang mga kinakailangang pagapruba.
settings.lfs_lock_path = File path na kakandaduhin…
settings.lfs_force_unlock = Pilitin ang pag-unlock
settings.lfs_pointers.accessible = Naa-access ng user
@ -2520,7 +2518,7 @@ settings.protect_merge_whitelist_users = Mga naka-whitelist na user para sa pags
settings.protect_merge_whitelist_teams = Mga naka-whitelist na koponan para sa pagsasama
settings.protect_check_status_contexts = I-enable ang pagsusuri ng estado
settings.protect_status_check_patterns = Mga pattern sa pagsusuri ng estado
settings.protect_status_check_patterns_desc = Ilagay ang mga pattern para i-specify kung aling mga pagsusuri ng estado na kailangang magpasa bago maisama ang mga branch sa isang branch na tumutugma sa rule na ito. Nagse-specify ang bawat linya ng pattern. Hindi maaaring walang laman ang mga pattern.
settings.protect_status_check_patterns_desc = Ilagay ang mga pattern para i-specify kung aling mga pagsusuri ng estado na kailangang magpasa bago maisama ang mga branch sa isang branch na tumutugma sa rule na ito. Nagse-specify ang bawat linya ng pattern. Hindi maaring walang laman ang mga pattern.
settings.protect_check_status_contexts_list = Mga pagsusuri ng estado na nahanap sa huling linggo para sa repositoryo na ito
diff.generated = na-generate
branch.confirm_create_branch = Gumawa ng branch
@ -2670,9 +2668,9 @@ settings.protected_branch_deletion_desc = Ang pag-disable ng branch protection a
settings.rename_branch_failed_protected = Hindi mababago ang pangalan ng branch na %s dahil ito ay isang nakaprotektang branch.
editor.add_tmpl.filename = Pangalan ng file
settings.protect_approvals_whitelist_users = Mga naka-whitelist na tagasuri
settings.protect_protected_file_patterns_desc = Ang mga nakaprotektang file ay hindi pinapayagan na direktang mabago kahit na may karapatan ang user na magdagdag, i-edit, o burahin ang mga file sa branch na ito. Ang mga maraming pattern ay maaaring mahiwalay gamit ng semicolon (";"). Tignan ang <a href="%[1]s">%[2]s</a> na dokumentasyon para sa pattern syntax. Mga halimbawa: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
branch.delete_branch_has_new_commits = Hindi maaaring burahin ang branch na "%s" dahil may mga bagong commit na nadagdag matapos ang pagsasama.
settings.protect_unprotected_file_patterns_desc = Ang mga hindi nakaprotektang file ay pinapayagan na direktang mabago kung may write access ang user, bina-bypass ang restriction ng pagtulak. Ang mga maraming pattern ay maaaring mahiwalay gamit ng semicolon (";"). Tignan ang <a href="%[1]s">%[2]s</a> na dokumentasyon para sa pattern syntax. Mga halimbawa: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
settings.protect_protected_file_patterns_desc = Ang mga nakaprotektang file ay hindi pinapayagan na direktang mabago kahit na may karapatan ang user na magdagdag, i-edit, o burahin ang mga file sa branch na ito. Ang mga maraming pattern ay maaring mahiwalay gamit ng semicolon (";"). Tignan ang <a href="%[1]s">%[2]s</a> na dokumentasyon para sa pattern syntax. Mga halimbawa: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
branch.delete_branch_has_new_commits = Hindi maaring burahin ang branch na "%s" dahil may mga bagong commit na nadagdag matapos ang pagsasama.
settings.protect_unprotected_file_patterns_desc = Ang mga hindi nakaprotektang file ay pinapayagan na direktang mabago kung may write access ang user, bina-bypass ang restriction ng pagtulak. Ang mga maraming pattern ay maaring mahiwalay gamit ng semicolon (";"). Tignan ang <a href="%[1]s">%[2]s</a> na dokumentasyon para sa pattern syntax. Mga halimbawa: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
settings.no_protected_branch = Walang mga nakaprotekta na branch.
settings.protected_branch_required_rule_name = Kinakailangan na pangalan ng rule
settings.protected_branch_duplicate_rule_name = Mayroon nang rule para sa set ng mga branch na ito
@ -2688,7 +2686,7 @@ branch.branch_name_conflict = Sumasalungat ang pangalan ng branch na "%s" sa umi
branch.protected_deletion_failed = Nakaprotekta ang branch na "%s". Hindi ito mabubura.
diff.file_after = Pagkatapos
release.deletion_tag_desc = Buburahin ang tag na ito sa repositoryo. Mapapanatiling hindi nabago ang nilalaman at kasaysayan ng repositoryo. Magpatuloy?
topic.format_prompt = Dapat magsimula ang mga topic ng numero o letra, maaaring magsama ng mga dash ("-") at dot ("."), maaaring hanggang sa 35 na character na haba. Kailangang lowercase ang mga character.
topic.format_prompt = Dapat magsimula ang mga topic ng numero o letra, maaring magsama ng mga dash ("-") at dot ("."), maaring hanggang sa 35 na character na haba. Kailangang lowercase ang mga character.
branch.new_branch_from = Gumawa ng bagong branch mula sa "%s"
error.csv.unexpected = Hindi ma-render ang file na ito dahil naglalaman ito ng hindi inaasahang character sa linyang %d at column %d.
settings.ignore_stale_approvals_desc = Huwag ibilang ang mga pagapruba na ginawa sa mga lumang commit (mga lipas na pagsusuri) sa kung gaano karaming pagapruba ang mayroon sa PR na ito. Walang kinalaman kung ang mga lipas na pagsusuri ay na-dismiss na.
@ -2727,8 +2725,6 @@ issues.context.menu = Menu ng komento
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
editor.commit_email = Email ng commit
[search]
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.
@ -2838,11 +2834,11 @@ users.repos = Mga Repo
users.send_register_notify = Abisuhan tungkol sa pagrehistro sa pamamagitan ng email
users.is_admin = Tagapangasiwa na account
users.is_restricted = Pinaghihigpitang account
users.allow_import_local = Maaaring mag-import ng mga lokal na repositoryo
users.allow_import_local = Maaring mag-import ng mga lokal na repositoryo
users.allow_create_organization = Makakagawa ng mga organisasyon
users.update_profile = I-update ang user account
users.delete_account = Burahin ang user account
users.cannot_delete_self = Hindi mo maaaring burahin ang sarili mo
users.cannot_delete_self = Hindi mo maaring burahin ang sarili mo
users.still_own_repo = Ang user na ito ay nagmamay-ari pa ng isa o higit pang mga repositoryo. Burahin o ilipat sila muna.
users.list_status_filter.is_active = Aktibo
users.list_status_filter.not_active = Hindi aktibo
@ -2915,7 +2911,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.stop_zombie_tasks = Itigil ang mga zombie action task
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.password_helper = Iwanang walang laman ang password upang panatilihing hindi nabago.
users.max_repo_creation = Pinakamataas na numero ng mga repositoryo
@ -3113,7 +3109,7 @@ config.allow_dots_in_usernames = Payagan ang mga user na gumamit ng mga dot sa k
config.https_only = HTTPS lamang
auths.tip.github = Magrehistro ng bagong OAuth application sa %s
auths.tip.gitlab_new = Magrehistro ng bagong application sa %s
emails.delete_primary_email_error = Hindi mo maaaring burahin ang pangunahing email.
emails.delete_primary_email_error = Hindi mo maaring burahin ang pangunahing email.
config.provider_config = Config ng provider
config.cache_test_slow = Matagumpay ang pagsubok ng cache, ngunit mabagal ang tugon: %s.
config.picture_config = Configuration ng larawan at avatar
@ -3264,7 +3260,7 @@ config.cookie_name = Pangalan ng cookie
config.gc_interval_time = Oras ng pagitan ng GC
config.cookie_life_time = Lifetime ng cookie
config.git_clone_timeout = Timeout ng operasyon na pag-clone
monitor.process.cancel_desc = Ang pagkansela ng proseso ay maaaring magdulot ng pagkawalan ng data
monitor.process.cancel_desc = Ang pagkansela ng proseso ay maaring magdulot ng pagkawalan ng data
monitor.queue.name = Pangalan
auths.oauth2_required_claim_value_helper = Itakda ang value na ito upang i-restrict ang pag-login mula sa pinagmulang ito sa mga user na may claim na may ganitong pangalan at value
auths.tip.bitbucket = Magrehistro ng bagong OAuth consumer sa %s at idagdag ang pahintulot na "Account" - "Read"
@ -3350,7 +3346,7 @@ members.member = Miyembro
members.private_helper = Gawing visible
settings.location = Lokasyon
settings.update_setting_success = Nabago na ang mga setting ng organisasyon.
teams.can_create_org_repo_helper = Maaaring gumawa ang mga miyembro ng mga bagong repositoryo sa organisasyon. Magkakaroon ng tagapangasiwa na access ang tagagawa sa bagong repositoryo.
teams.can_create_org_repo_helper = Maaring gumawa ang mga miyembro ng mga bagong repositoryo sa organisasyon. Magkakaroon ng tagapangasiwa na access ang tagagawa sa bagong repositoryo.
settings.change_orgname_prompt = Tandaan: Ang pagpalit ng pangalan ng organisasyon ay papalitan din ang URL ng organisasyon at mapapalaya ang lumang pangalan.
settings.labels_desc = Magdagdag ng mga label na magagamit sa mga isyu para sa <strong>lahat ng mga repositoryo</strong> sa ilalim ng organisasyon.
members.public_helper = Gawing nakatago
@ -3623,7 +3619,7 @@ variables.deletion.description = Permanente ang pagtanggal ng isang variable at
status.running = Tumatakbo
runners.new_notice = Paano magsimula ng runner
runners.update_runner_success = Matagumpay na na-update ang runner
runners.delete_runner_notice = Kapag may trabaho na tumatakbo sa runner na ito, titigilan ito at mamarkahan bilang nabigo. Maaaring sirain ang building workflow.
runners.delete_runner_notice = Kapag may trabaho na tumatakbo sa runner na ito, titigilan ito at mamarkahan bilang nabigo. Maaring sirain ang building workflow.
runners.none = Walang mga available na runner
runs.status_no_select = Lahat ng status
runs.empty_commit_message = (walang laman na mensahe ng commit)
@ -3668,8 +3664,6 @@ runs.expire_log_message = Na-purge ang mga log dahil masyado silang luma.
runs.no_workflows.help_write_access = Hindi alam kung paano magsimula sa Forgejo Actions? Tignan ang <a target="_blank" rel="noopener noreferrer" href="%s">mabilisang pagsimula sa user documentation</a> para magsimulang magsulat ng unang workflow, at <a target="_blank" rel="noopener noreferrer" href="%s">mag-setup ng Forgejo runner</a> para patakbuhin ang mga job.
runs.no_workflows.help_no_write_access = Para matuto tungkol sa Forgejo Actions, tignan ang <a target="_blank" rel="noopener noreferrer" href="%s">dokumentasyon</a>.
variables.not_found = Nabigong hanapin ang variable.
[action]
commit_repo = itinulak sa <a href="%[2]s">%[3]s</a> sa <a href="%[1]s">%[4]s</a>
create_issue = `binuksan ang isyu na <a href="%[1]s">%[3]s#%[2]s</a>`
@ -3690,7 +3684,7 @@ approve_pull_request = `inaprubahan ang <a href="%[1]s">%[3]s#%[2]s</a>`
review_dismissed_reason = Dahilan:
compare_branch = Ikumpara
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]s</a>
rename_repo = pinalitan ang pangalan ng repositoryo mula <code>%[1]s</code> sa <a href="%[2]s">%[3]#</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>`
close_pull_request = `sinara ang hiling sa paghila na <a href="%[1]s">%[3]s#%[2]s</a>`
@ -3764,7 +3758,7 @@ error.unit_not_allowed = Hindi ka pinapayagang ma-access ang seksyon ng reposito
[dropzone]
default_message = I-drop ang mga file o mag-click dito para mag-upload.
invalid_input_type = Hindi ka maaaring mag-upload ng mga file sa uri na ito.
invalid_input_type = Hindi ka maaring mag-upload ng mga file sa uri na ito.
file_too_big = Ang laki ng file ({{filesize}}) MB) ay lumalagpas sa pinakamataas na size na ({{maxFilesize}} MB).
remove_file = Tanggalin ang file

View file

@ -681,8 +681,6 @@ Website = Site web
Location = Emplacement
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]
change_avatar=Changer votre avatar…
joined_on=Inscrit le %s
@ -1230,7 +1228,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.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.gitea.description=Migrer les données depuis gitea.com ou dautres instances de Gitea.
migrate.gitea.description=Migrer les données depuis gitea.com ou dautres instances de Gitea/Forgejo.
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.codebase.description=Migrer les données depuis codebasehq.com.
@ -2872,8 +2870,6 @@ issues.context.menu = Menu commentaire
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
editor.commit_email = Courriel de commit
[graphs]
component_loading = Chargement %s...
component_loading_failed = Échec de chargement de %s
@ -3948,8 +3944,6 @@ runs.expire_log_message = Les journaux ont été purgés car ils étaient trop a
runs.no_workflows.help_write_access = Vous ne savez pas par où commencer avec Forgejo Actions ? Regardez la section <a target="_blank" rel="noopener noreferrer" href="%s"> démarrage rapide dans la documentation utilisateur</a> pour écrire votre premier workflow, puis <a target="_blank" rel="noopener noreferrer" href="%s">mettre en place un Forgejo runner</a> pour exécuter vos jobs.
runs.no_workflows.help_no_write_access = Pour en savoir plus sur Forgejo Actions, consultez <a target="_blank" rel="noopener noreferrer" href="%s">la documentation</a>.
variables.not_found = La variable n'a pas été trouvée.
[projects]
type-1.display_name=Projet personnel
type-2.display_name=Projet du dépôt

View file

@ -8,15 +8,15 @@ sign_in = Iniciar sesión
sign_in_with_provider = Iniciar Sesión con %s
sign_in_or = ou
sign_out = Pechar Sesión
sign_up = Rexistrarse
sign_up = Rexístrate
link_account = Vincular conta
register = Rexistro
version = Versión
powered_by = Impulsado por %s
version = Vesión
powered_by = Desenvolvido por %s
page = Páxina
template = Modelo
notifications = Notificacións
active_stopwatch = Rastreador de tempo activo
active_stopwatch = Activar Rastrexador de Tempo
create_new = Crear…
user_profile_and_more = Perfil e configuración…
signed_in_as = Sesión iniciada como
@ -31,8 +31,8 @@ re_type = Confirme o contrasinal
captcha = CAPTCHA
twofa = Autenticación de dobre factor
passcode = Código de acceso
webauthn_insert_key = Insira a súa chave de seguridade
webauthn_press_button = Prema o botón da súa chave de seguridade…
webauthn_insert_key = Insira a súa clave de seguridade
webauthn_press_button = Prema o botón da súa clave de seguridade…
webauthn_use_twofa = Use o Código de Dous Factores do seu Teléfono
webauthn_error = Non se puido ler a súa clave de seguridade.
webauthn_unsupported_browser = O seu navegador non soporta WebAuthn actualmente.
@ -102,7 +102,7 @@ copy_content = Copiar contido
language = Linguaxe
copy_hash = Copiar hash
twofa_scratch = Código Scratch de Dous Factores
webauthn_sign_in = Prema o botón da súa chave de seguridade. Se a súa chave de seguridade non ten ningún botón, volva inserila.
webauthn_sign_in = Prema o botón da súa clave de seguridade. Se a súa clave de seguridade non ten ningún botón, insíraa de novo.
issues = Incidencias
disabled = Desactivado
error404 = A páxina á que estás tentando acceder <strong>non existe</strong> ou <strong>non tes autorización</strong> para vela.
@ -163,8 +163,6 @@ number_of_contributions_in_the_last_12_months = %s de contribucións nos último
contributions_few = contribucións
contributions_one = contribución
contributions_format = {contributions} no {day} de {month} do {year}
[editor]
buttons.heading.tooltip = Engadir Título
buttons.italic.tooltip = Engade texto en cursiva
@ -178,19 +176,6 @@ buttons.disable_monospace_font = Desactivar o tipo de letra monoespazo
buttons.ref.tooltip = Referencia un problema ou pull request
buttons.list.ordered.tooltip = Engade unha lista numerada
buttons.list.task.tooltip = Engade unha lista de tarefas
buttons.mention.tooltip = Menciona a un usuario ou equipo
buttons.switch_to_legacy.tooltip = Utilizar o editor herdado
buttons.indent.tooltip = Aniña os elementos nun nivel
buttons.unindent.tooltip = Desaniñar os elementos nun nivel
buttons.new_table.tooltip = Engadir táboa
table_modal.header = Engadir táboa
table_modal.placeholder.header = Cabeceira
table_modal.placeholder.content = Contido
table_modal.label.rows = Filas
table_modal.label.columns = Columnas
[search]
search = Buscar...
type_tooltip = Tipo de procura
@ -211,22 +196,12 @@ exact = Exacta
exact_tooltip = Incluír só resultados correspondentes ao termo exacto da procura
issue_kind = Procurar incidencias...
project_kind = Buscar proxectos...
branch_kind = Buscar ramas...
commit_kind = Buscar achegas...
runner_kind = Buscar executores...
no_results = Non se atoparon resultados coincidentes.
pull_kind = Buscar pulls...
keyword_search_unavailable = A busca por palabra clave non está dispoñible actualmente. Póñase en contacto co administrador do sitio.
[startpage]
platform = Multiplataforma
app_desc = Um servizo Git autoxestionado e fácil de usar
install = Fácil de instalar
install_desc = Simplemente <a target="_blank" rel="noopener noreferrer" href="%[1]s">executa o binario</a> para a túa plataforma, envíao con <a target="_blank" rel="noopener noreferrer" href="%[2]s">Docker</a> ou consígueo <a target="_blank" rel="noopener noreferrer" href="%[3]s">empaquetado</a>.
license = Código aberto
[error]
occurred = Ocorreu un erro
missing_csrf = Solicitude incorrecta: non hai ningún token CSRF presente
@ -269,26 +244,4 @@ sqlite_helper = Ruta do ficheiro para a base de datos SQLite3.<br>Introduza unha
reinstall_confirm_message = A reinstalación cunha base de datos Forgejo existente pode causar varios problemas. Na maioría dos casos, deberías usar o teu "app.ini" existente para executar Forgejo. Se sabes o que estás facendo, confirma o seguinte:
reinstall_confirm_check_1 = É posible que se perdan os datos cifrados pola SECRET_KEY en app.ini: é posible que os usuarios non poidan iniciar sesión con 2FA/OTP e que os espellos non funcionen correctamente. Ao marcar esta caixa, confirmas que o ficheiro app.ini actual contén a SECRET_KEY correcta.
disable_gravatar.description = Desactiva o uso de Gravatar ou outras fontes de avatares de terceiros. As imaxes predeterminadas utilizaranse para os avatares dos usuarios a menos que carguen o seu propio avatar na instancia.
federated_avatar_lookup = Activar avatares federados
install = Instalación
title = Configuración inicial
db_title = Configuración da base de datos
db_type = Tipo de base de datos
user = Nome de usuario
password = Contrasinal
db_name = Nome da base de datos
db_schema = Esquema
db_schema_helper = Déixao baleiro para a base de datos por defecto ("public").
general_title = Opcións xerais
app_name = Título da instancia
app_name_helper = Escribe o nome da túa instancia aqui. Será amosado en cada páxina.
app_slogan = Slogan da instancia
app_slogan_helper = Escribe o slogan da túa instancia aqui. Ou deixao baleiro para desabilitala.
repo_path = Ruta raíz do repositorio
repo_path_helper = Os repositorios Git remotos gardaránse neste directorio.
lfs_path = Ruta raíz de Git LFS
run_user = O usuario co que executar
domain = Dominio do servidor
ssh_port = Porto do servidor SSH
mailer_user = Usuario SMTP
mailer_password = Contrasinal SMTP
federated_avatar_lookup = Activar avatares federados

View file

@ -1,661 +0,0 @@
[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 = פרטי
explore = קטלוגים
toggle_menu = הצגת\הסתרת תפריט
re_type = סיסמה (שוב)
view = עוד מידע
artifacts = ארטיפקטים
confirm_delete_artifact = למחוק את הארטיפקט "%s"?
[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 = חיפוש מילות מפתח לא זמין. נא לדווח למנהלי המערכת.
pull_kind = חיפוש בקשות מיזוג...
[aria]
navbar = סרגל הניווט
footer.software = על תוכנה זו
footer.links = קישורים
footer = סיומת עמוד
[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 = קוד פתוח
platform_desc = פורג'ו רץ על מערכות הפעלה פתוחות כמו לינוקס וFreeBSD, ועל ארכיטקטורות מעבד שונות.
lightweight_desc = פורג'ו צורך כמות מינימלית של משאבים ויכול לרוץ על מיני־מחשבים לא יקרים כמו הראספרי הפיי.
[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 = שם שרת זה
require_db_desc = פורג'ו דורש MySQL, PostgreSQL, או TiDB (דרך פרוטוקול MySQL).
err_empty_db_path = הכתובת למסד המידע SQLite3 לא יכולה להיות ריקה.
no_admin_and_disable_registration = אי אפשר לחסום הרשמה עצמית בלי ליצור חשבון מנהל מערכת.
err_admin_name_is_reserved = שם משתמש חשבון המערכת לא זמין, שם המשתמש שמור
err_admin_name_pattern_not_allowed = שם משתמש מנהל המערכת לא זמין, שם המשתמש עונה על תבנית שמורה
err_admin_name_is_invalid = שם משתמש מנהל המערכת לא זמין
app_name_helper = שם האתר נכנס כאן. הוא יוצג בכל מקום באתר, בצד ימין למעלה (או באנגלית, שמאל למעלה).
app_slogan = סלוגן האתר
app_slogan_helper = סלוגן האתר נכנס כאן. פורג'ו יתעלם מסלוגן ריק.
run_user = משתמש שפורג'ו ירוץ תחת
run_user_helper = שם המשתמש של משתמש מערכת ההפעלה שפורג'ו ירוץ תחתיו. למשתמש חייבת להיות גישה לקרפיפים.
domain = דומיין השרת
domain_helper = דומיין או host address לשרת זה.
ssh_port = פורט שרת ה־SSH
ssh_port_helper = מספר הפורט ששרת ה־SSH ישתמש בו. ערך ריק יכבה את התמיכה ב־SSH.
http_port = פורט ה־HTTP (האזנה)
http_port_helper = הפורט שישמש את דף האינטרנט (זה שדפדפני אינטרנט ניגשים אליו).
app_url = כתובת (URL) בסיס
log_root_path = כתובת לוגינג
log_root_path_helper = יומנים (logfiles) ייוצאו לתיקייה זו.
optional_title = הגדרות לא חובה
email_title = הגדרות אימייל
smtp_addr = שרת SMTP
smtp_port = פורט SMTP
smtp_from = אימיילים ישלחו כ־
smtp_from_helper = כתובת האימייל שפורג'ו ישלח ממנה הודעות למשתמשים. אפשר להכניס כתובת אמייל פשוטה או להישמתש בפורמט "שם" <אימייל@דוגמה.קום>.
mailer_user = שם משתמש בשרת ה־SMTP
mailer_password = סיסמת שרת ה־SMTP
register_confirm = אישור אימייל חובה לרישום
mail_notify = הפעלת נוטיפיקציות דרך אימייל
server_service_title = הגדרות שרת ושירותים צד שלישי
offline_mode = הפעלת מצב לוקאלי
offline_mode.description = CDN־ים צד שלישי יושבתו וכל המשאבים יוגשו מהמחשב הנוכחי, ללא גישה לאינטרנט.
disable_gravatar = השבתת Gravatar
disable_gravatar.description = שימוש בגראווטאר, או כל מקור צד־שלישי אחר לתמונות פרופיל, יושבת. אלא אם כן לחשבון יש תמונה שהועלתה ידנית, פורג'ו ישתמש בתמונות ברירת המחדל הלוקאליות.
federated_avatar_lookup = הפעלת תמונות פרופיל מבוזרות
disable_registration = השבתת הרשמה עצמית
disable_registration.description = רק מנהלי מערכת יוכלו ליצור חשבונות משתמש חדשים. מאוד לא מומלץ להפעיל הרשמה עצמית אלא אם כן בכוונתך ליצור שרת ציבורי, דבר הכולל התעסקות בכמויות עצומות של ספאם והתקפות DDoS.
allow_only_external_registration = אפשור הרשמה רק דרך שירותים חיצוניים
allow_only_external_registration.description = חשבונות חדשים לא יכולו להיווצר לוקאלית, אלא רק דרך שירותים צד־שלישי שקונפגו מראש.
openid_signin = הפעלת כניסה דרך OpenID
openid_signup = הפעלת הרשמה עצמית דרך OpenID
openid_signup.description = חשבונות יוכלו להיווצר דרך OpenID אם הרשמה עצמית מופעלת.
enable_captcha = הפעלת CAPTCHA בתהליך הרישום
enable_captcha.description = כדי ליצור חשבונות חדשים, יהיה צריך לעבור אתגר CAPTCHA (טוב כנגד ספאם ובוטים; פוגע בנגישות ופחות אפקטיבי כנגד AI מודרני).
require_sign_in_view = שרת פרטי
require_sign_in_view.description = גישה לתוכן השרת תיחסם ללא כניסה לחשבון, למעט דפי הרישום והכניסה.
default_keep_email_private = הסתרת כתובות אימייל כברירת מחדל
default_keep_email_private.description = כתובות האימייל של חשבונות חדשים לא יוצגו על הפרופילים הציבוריים שלהם (אלא אם כן ישנו זאת בעצמם), כדי למנוע זליגה של מידע פרטי מיד לאחר ההרשמה.
default_allow_create_organization = אפשור יצירת ארגונים כברירת מחדל
default_allow_create_organization.description = חשבונות חדשים יוכלו ליצור ארגונים ללא אישור מנהל המערכת.
default_enable_timetracking = הפעלת מדידת זמן כברירת מחדל
default_enable_timetracking.description = תכונת מדידת הזמן של פורג'ו תופעל לקרפיפים חדשים כברירת מחדל.
admin_title = הגדרות חשבון מנהל מערכת
admin_setting.description = יצירת חשבון מנהל המערכת היא לא חובה; ללא חשבון מורשה, החשבון הראשון שיווצר יקבל הרשאות אדמיניסטרציה.
admin_name = שם משתמש של מנהל מערכת
admin_password = סיסמה
confirm_password = סיסמה (שוב)
admin_email = כתובת אימייל
config_location_hint = הגדרות אלו ישמרו ב־:
install_btn_confirm = סיום התקנת פורג'ו
test_git_failed = בדיקת פקודת "git" נכשלה: %v
sqlite3_not_available = גרסת פורג'ו זו לא תומכת ב־SQLite3. נא להוריד את הארטיפקט הרשמי מ %s (*לא* את גרסת ה"gobuild").
invalid_db_setting = הגדרות מסד המידע שגויות: %v
invalid_db_table = טבלת מסד המידע "%s" שגויה: %v
[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 = כבר יש קבצים בקרפיף זה. יש לדבר עם מנהל המערכת כדי לתקן את הבעיה.
AccessToken = קוד גישה
Content = תוכן
SSPIDefaultLanguage = שפת ברירת מחדל
[home]
uname_holder = שם משתמש או כתובת אימייל
my_repos = קרפיפים
my_orgs = ארגונים
filter = מסננים אחרים
filter_by_team_repositories = סינון לפי קרפיפי צוות
feed_of = פיד של "%s"
show_archived = בארכיון
show_both_archived_unarchived = כולל גם מתוך וגם מחוץ הארכיון
show_only_archived = כולל רק מהארכיון
show_only_unarchived = לא כולל את הארכיון
show_private = פרטי
issues.in_your_repos = בקרפיפיך
[explore]
repos = קרפיפים
users = אנשים
stars_one = כוכב אחד
stars_few = %d כוכבים
forks_one = מזלוג אחד
forks_few = %d מזלוגים
organizations = ארגונים
code = קוד
code_last_indexed_at = אונדקס לאחרונה %s
relevant_repositories_tooltip = מזלוגים וקרפיפים ללא תיאור, נושא, וסמל לא מוצגים.
relevant_repositories = רק קרפיפים רלוונטים מוצגים; אפשר <a href="%s">להציג תוצאות לא מסוננות</a>.
[auth]
create_new_account = הרשמה
disable_register_prompt = הרשמה מושבתת. יש לדבר עם מנהלי המערכת.
disable_register_mail = אישור הרשמה דרך אימייל מושבת.
manual_activation_only = יש לדבר עם מנהלי המערכת כדי להשלים את הפעלת חשבונך.
remember_me = זה המכשיר שלי ואני רוצה לשמור עליו את הסיסמה שלי לפעם הבאה
forgot_password_title = שכחתי את הסיסמה
forgot_password = שכחת את הסיסמה?
hint_login = כבר יש לך חשבון? <a href="%s">כניסה</a>
hint_register = אין לך חשבון? <a href="%s">הרשמה</a>
sign_up_button = הרשמה
sign_up_successful = החשבון נוצר בהצלחה. ברוכים הבאים!
must_change_password = עדכן סיסמתך
allow_password_change = הכרחת המשתמש לעדכן את סיסמת חשבונו (מומלץ)
active_your_account = הפעלת חשבונך
account_activated = חשבונך הופעל
prohibit_login = חשבונך הושעה
prohibit_login_desc = חשבנוך הושעה משרת זה. אפשר לבקש ממנהלי המערכת לתת לך גישה.
resent_limit_prompt = כבר ביקשת מייל אימות בשלושת הדקות האחרונות. נא לחכות ולנסות שוב.
has_unconfirmed_mail = שלום %s, חשבונך משויך לכתובת אימייל לא מאומתת (<b>%s</b>). אם לא קיבלת הודעת אימות באימייל, או שאתה צריך חדשה, נא ללחוץ על הכפתור למטה.
change_unconfirmed_email = אם נתת את כתובת האימייל הלא נכונה כשנרשמת, אפשר לשנות אותה כאן, ומייל אימות חדש ישלח לכתובת החדשה.
change_unconfirmed_email_error = שינוי כתובת האימייל כשל: %v
resend_mail = שליחת מייל אימות חדש
send_reset_mail = שליחת מייל שחזור חשבון
reset_password = שחזור חשבון
invalid_code = קוד האימות שלך לא תקף, או שעבר יותר מדי זמן מאז שהונפק.
invalid_code_forgot_password = קוד האימות שלך לא תקף, או שעבר יותר מדי זמן מאז שהונפק. אפשר <a href="%s">לנסות שוב</a>.
invalid_password = הסיסמה לא תואמת את הסיסמה שאיתה יצרת את חשבונך.
reset_password_helper = שחזור חשבון
reset_password_wrong_user = נכנסת כ־%s, אבל הקישור נועד לשחזור החשבון של %s
password_too_short = הסיסמה חייבת להיות באורך %d תווים ומעלה.
non_local_account = חשבונות א־לוקאליים לא יכולים לעדכן את סיסמתם דרך אתר האינטרנט של פורג'ו.
verify = אימות
use_onetime_code = שימוש בקוד חד־פעמי
[settings]
update_avatar = עדכון תמונת פרופיל
delete_current_avatar = מחיקת תמונת הפרופיל הנוכחית
uploaded_avatar_not_a_image = הקובץ שהועלה לא תמונה.
key_name = שם המפתח
key_content = תוכן
principal_content = תוכן
add_key_success = מפתח ה־SSH "%s" הוסף לחשבונך.
add_gpg_key_success = מפתח ה־GPG "%s" הוסף לחשבונך.
delete_key = הסרה
ssh_key_deletion = הסרת מפתח SSH
gpg_key_deletion = הסרת מפתח GPG
ssh_key_deletion_desc = הסרת מפתח SSH מבטלת את גישתו לחשבונך. להמשיך?
gpg_key_deletion_desc = הסרת מפתח GPG הופכת קומיטים שנחתמו בעזרתו ללא־מאומתים. להמשיך?
ssh_key_deletion_success = מפתח ה־SSH הוסר מחשבונך.
gpg_key_deletion_success = מפתח ה־GPG הוסר מחשבונך.
added_on = הוסף ב־%s
valid_until_date = תקף עד ה־%s
valid_forever = תקף לנצח
last_used = שומש לאחרונה ב
can_read_info = קריאה
can_write_info = שינוי
key_state_desc = מפתח זה שומש בשבוע האחרון
show_openid = הצגה על פרופילך
hide_openid = הסתרה מפרופילך
ssh_disabled = SSH מושבת
ssh_signonly = SSH מושבת; מפתחות אלו ישמשו רק כדי לחתום קומיטים.
ssh_externally_managed = מפתח SSH זה מנוהל חיצונית
manage_access_token = קודי גישה
generate_new_token = קוד גישה חדש
token_name = שם קוד הגישה
generate_token_success = קוד הגישה החדש נוצר, ולא יוצג שוב.
generate_token_name_duplicate = כבר קיימת אפליקציה בשם <strong>%s</strong>.
delete_token = מחיקה
access_token_deletion = מחיקת קוד גישה
access_token_deletion_desc = אפליקציות שמשתמשות בקוד הגישה הזה לא יוכלו לגשת לחשבון שלך יותר. זוהי פעולה בלתי־הפיכה. להמשיך?
delete_token_success = קוד הגישה נמחק. אפליקציות שהשתמשו בו לא יכולות לגשת לחשבון שלך יותר.
repo_and_org_access = גישה לקרפיפים וארגונים
permissions_public_only = ציבורי בלבד
permissions_access_all = הכל (ציבורי, פרטי, מוגבל)
select_permissions = בחירת הרשאות
permission_no_access = שום גישה
permission_read = קריאה
permission_write = קריאה ושינוי
at_least_one_permission = קודי גישה צריכים לפחות הרשאה אחת
permissions_list = הרשאות:
manage_oauth2_applications = ניהול אפליקציות OAuth2
edit_oauth2_application = עריכת אפליקצית OAuth2
remove_oauth2_application = הסרת אפליקצית OAuth2
remove_oauth2_application_success = האפליקציה נמחקה.
create_oauth2_application = יצירת אפליקציית OAuth2 חדשה
create_oauth2_application_button = יצירת אפליקציה
create_oauth2_application_success = יצרת אפליקציית OAuth2 חדשה בהצלחה.
update_oauth2_application_success = ערכת אפליקציית OAuth2 בהצלחה.
oauth2_application_name = שם האפליקציה
oauth2_redirect_uris = קישורי הפניה מחדש. כל קישור בשורה משל עצמו.
save_application = שמירה
oauth2_application_edit = עריכה
revoke_key = הסרת גישה
revoke_oauth2_grant = הסרת גישה
delete_account = מחיקת החשבון
delete_prompt = פעולה זו <strong>בלתי הפיכה</strong> ותמחוק את החשבון שלך <strong>לחלוטין</strong>.
delete_with_all_comments = חשבונך נוצר לפני פחות מ־%s; כל התגובות שלך (לסוגיות, בקשות מיזוג, וכולי) ימחקו.
confirm_delete_account = כן, אני רוצה למחוק את החשבון שלי
delete_account_title = מחייקת חשבון משתמש
delete_account_desc = למחוק את חשבון משתמש זה לנצח?
email_notifications.enable = הפעלת הודעות אימייל
email_notifications.onmention = שליחת אימיילים רק עבור אזכור (mention\ping) מפורש
email_notifications.disable = השבתת הודעות אימייל
email_notifications.submit = בחירת אימייל מועדף
visibility = סוג חשבון
visibility.public = ציבורי
visibility.public_tooltip = נגיש לכולם
visibility.limited = מוגבל
visibility.limited_tooltip = נגיש רק למי שיש לו חשבון
visibility.private = פרטי
visibility.private_tooltip = נגיש רק למי שחבר בארגון שאתה חלק ממנו
blocked_since = חסום כבר %s
user_unblock_success = החסימה בוטלה.
user_block_success = המשתמש נחסם.
[repo]
new_from_template = קרפיף חדש מתבנית
new_advanced = הגדרות מתקדמות
new_advanced_expand =
owner = בעלים
owner_helper = ארגונים שכבר יצרו את כמות הקרפיפים המקסימלית לא מוצגים בתפריט.
repo_name = שם הקרפיף
repo_name_helper = שמות קרפיפים טובים הם זכירים, קצרים וייחודיים.
fork_repo = מזלוג
already_forked = כבר מזלגת את %s
fork_to_different_account = מזלוג לחשבון אחר
fork_branch = הענף שיועתק למזלוג
all_branches = כל הענפים
fork_no_valid_owners = קרפיף זה לא משויך לבעלים תקפים; אי אפשר למזלגו.
use_template = קרפיף חדש מתבנית זו
open_with_editor = פתיחה עם %s
download_zip = הורדה כ־.zip
download_tar = הורדה כ־.tag.gz
repo_desc = תיאור
repo_desc_helper = תיאור קצר (לא חובה)
repo_lang = שפה
repo_gitignore_helper = תבנית .gitignore
repo_gitignore_helper_desc = מאילו קבצים גיט יתעלם. התפריט כולל רשימות קבצים המשויכות לשפות או ספריות נפוצות. ארטיפקטים טיפוסיים כלולים ב.gitignore כברירת מחדל.
issue_labels = תוויות
issue_labels_helper = תוויות לדוגמה נפוצות ומומלצות שאפשר להתאים לדרישות הפרויקט הספציפי
license = רישיון
license_helper_desc = רישיונות מכתיבות מה אחרים יכולים ולא יכולים לעשות עם הקוד שלך. <a target="_blank" rel="noopener noreferrer" href="%s">איך לבחור רישיון?</a>
object_format = אלגוריתם גיבוב
object_format_helper = אלגוריתם הגיבוב שהקרפיף ישתמש בו. אי אפשר לשנות את הבחירה הזו. ל־SHA1 התאימות הטובה ביותר עם תוכנות אחרות.
readme = קרא־אותי
readme_helper = תבנית קובץ קרא־אותי (README)
readme_helper_desc = כאן אפשר לכתוב את התיאור המלא של הפרויקט שלך, וכל דבר שברצונך שאנשים ידעו עליו.
auto_init = תיחול הקרפיף
auto_init_description = פורג'ו מאפשר להוסיף קבצי קרא־אותי, .gitignore, ורשיונות בקומיט הראשון של הקרפיף שלך.
create_repo = קרפיף חדש
default_branch = ענף ברירת המחדל
default_branch_label = ברירת מחדל
mirror_public_key = מפתח SSH ציבורי
mirror_use_ssh.helper = פורג'ו ישקף את הקרפיף דרך התמיכה המובנית של גיט ב־SSH, ויצור בשבילך זוג מפתחות אוטומטית. באחריותך לוודא שלמפתח הציבורי שיווצר יהיה גישה לקרפיף היעד. אי אפשר להשתמש בכניסה על־בסיס סיסמה עם אפשרות זו.
mirror_use_ssh.not_available = אימות על־בסיס SSH לא זמין.
mirror_denied_combination = אי אפשר להשתמש באימות על־בסיס גם סיסמה וגם מפתח ציבורי; חובה לבחור רק באפשרות אחת.
mirror_sync = מסונכרן
mirror_sync_on_commit = סנכרון כשקומיטים מגיעים לשרת המקומי
mirror_address = שכפול מכתובת אינטרנט (URL)
mirror_lfs = אחסון קבצים גדולים (LFS)
mirror_lfs_desc = שיקוף אחסון קבצים גדולים (LFS)
mirror_last_synced = סונכרן לאחרונה
watchers = מנויים
stargazers = מככבים
stars_remove_warning = פעולה זו תסיר מהקרפיף את כל הכוכבים.
forks = מיזלוגים
stars = כוכבים
reactions_more = ועוד %d
unit_disabled = מנהלי המערכת השביתו תכונת קרפיף זאת.
language_other = אחרת
adopt_preexisting_content = קרפיף חדש מ־‏%s
delete_preexisting_label = מחיקה
delete_preexisting = מחיקת קבצים קיימים
delete_preexisting_content = מחיקת קבצים ב־%s
author_search_tooltip = מקסימום 30 חשבונות מוצגים
summary_card_alt = קלף תקציר הקרפיף %s
tree_path_not_found_commit = הכתובת %[1]s לא קיימת בקומיט %[2]s
tree_path_not_found_branch = הכתובת %[1]s לא קיימת בענף %[2]s
tree_path_not_found_tag = הכתובת %[1]s לא קיימת בתגית %[2]s
transfer.accept = אישור העברת הקרפיף
transfer.accept_desc = העברה ל "%s"
transfer.reject = דחיית העברת הקרפיף
transfer.reject_desc = ביטול העברת הקרפיף ל־"%s"
transfer.no_permission_to_accept = אין לך הרשאה לאשר את העברת הקרפיף הזו.
transfer.no_permission_to_reject = אין לך הרשאה לדחות את העברת הקרפיף הזו.
desc.private = פרטי
desc.public = ציבורי
desc.template = תבנית
desc.internal = פנימי
desc.archived = בארכיון
template.webhooks = Webhook־ים
template.topics = נושאים
form.reach_limit_of_creation_1 = החשבון של הבעלים כבר הגיע לכמות הקרפיפים המקסימלית (אחד).
form.reach_limit_of_creation_n = החשבון של הבעלים כבר הגיע לכמות הקרפיפים המקסימלית (%s).
form.name_reserved = שם הקרפיף "%s" שמור.
form.name_pattern_not_allowed = התבנית "%s" לא חוקית בתוך שם של קרפיף.
form.string_too_long = הטקסט הנתון ארוך מ־%d תווים.
migrate_options = אפשרויות ייבוא
migrate_options_mirror_helper = קרפיף זה יהיה מראה
migrate_options_lfs = ייבוא אחסון קבצים גדולים (LFS)
migrate_items_wiki = ויקי
migrate_items_milestones = אבני דרך
migrate_items_labels = תוויות
migrate_items_issues = סוגיות
migrate_items_pullrequests = בקשות מיזוג
migrate_items_releases = גרסאות
migrate_repo = ייבוא קרפיף
migrate.clone_address = ייבוא \ שכפול מ־URL
migrate.permission_denied = אין לך הרשאה לייבא קרפיפים מהשרת הנוכחי.
migrate.failed = הייבוא נכשל: %v
migrate.migrate_items_options = פורג'ו צריך קוד גישה כדי לייבא מידע נוסף
migrated_from = יובא מ‏־<a href="%[1]s">%[2]s</a>
migrated_from_fake = יובא מ־%[1]s
migrate.migrate = יבוא מ־%s
migrate.migrating = פורג'ו בתהליכי יבוא מ־<b>%s</b>...
migrate.migrating_failed = היבוא מ<b>%s</b> נכשל.
migrate.migrating_failed.error = הייבוא נכשל: %s
migrate.migrating_failed_no_addr = הייבוא נכשל.
migrate.github.description = ייבוא מידע מ־github.com או שרת GitHub Enteprise.
migrate.git.description = ייבוא קרפיף מכל שירות גיט שהוא.
migrate.gitlab.description = ייבוא מידע מ־gitlab.com או משרתי GitLab אחרים.
migrate.forgejo.description = ייבוא מידע מקודברג או שרת פורג'ו אחר.
migrate.gitea.description = ייבוא מידע מ־gitea.com או שרת גיטאה אחר.
migrate.gogs.description = ייבוא מידע מ־notabug.org או שרת גוגס אחר.
migrate.onedev.description = ייבוא מידע מ־code.onedev.io או שרת OneDev אחר.
migrate.codebase.description = ייבוא מידע מ־codebasehq.com.
migrate.gitbucket.description = יבוא מידע משרת GitBucket.
migrate.migrating_git = ייבוא הקרפיף עצמו
migrate.migrating_topics = ייבוא נושאים
migrate.migrating_milestones = ייבוא אבני דרך
migrate.migrating_labels = ייבוא תוויות
migrate.migrating_releases = ייבוא גרסאות
editor.delete_this_file = מחיקת קובץ
editor.file_delete_success = הקובץ "%s" נמחק.
editor.name_your_file = שם הקובץ…
editor.filename_help = אפשר להפריד בין תיקיות עם סלאשים, ו"למחוק" תיקיות עם backspace, כאילו זוהי תיבת טקסט רגילה.
editor.or = או
editor.cancel_lower = ביטול
editor.add_tmpl = הוספת "<%s>"
editor.add_tmpl.filename = שם הקובץ
editor.add = הוספתי את %s
editor.update = עידכנתי את %s
editor.delete = מחקתי את %s
editor.commit_message_desc = תיאור ארוך לא חובה…
editor.propose_file_change = הצעת השינוי
editor.new_branch_name = שם הענף שאליו הקומיט ידחף
editor.new_branch_name_desc = שם הענף החדש…
editor.cancel = ביטול
editor.filename_cannot_be_empty = שם הקובץ לא יכול להיות ריק.
editor.filename_is_invalid = שם הקובץ לא תקין: "%s".
editor.invalid_commit_mail = כתובת אימייל זו לא חוקית למטרות יצירת קומיטים.
editor.branch_does_not_exist = הענף "%s" לא קיים בקרפיף זה.
editor.branch_already_exists = הענף "%s" כבר קיים בקרפיף זה.
editor.directory_is_a_file = אי אפשר ליצור את התיקייה "%s"; כבר קיים קובץ תחת אותו שם.
editor.filename_is_a_directory = אי אפשר לקרוא לקובץ "%s"; כבר קיימת תיקייה תחת אותו שם.
editor.file_editing_no_longer_exists = הקובץ הנערך שהיה ידוע כ־"%s" לא קיים יותר בקרפיף זה.
editor.file_deleting_no_longer_exists = מחיקת הקובץ שהיה ידוע כ־"%s" נכשלה; הקובץ לא קיים יותר בקרפיף זה.
editor.file_changed_while_editing = תוכן קובץ זה השתנה מאז שהתחלת לערוך. אפשר <a target="_blank" rel="noopener noreferrer" href="%s">לראות מה היו השינויים</a> או <strong>ליצור את הקומיט שוב</strong> כדי לדרוס אותם.
editor.file_already_exists = כבר יש קובץ תחת השם "%s" בקרפיף זה.
editor.commit_id_not_matching = תוכן קובץ זה השתנה מאז שהתחלת לערוך. אפשר לשמור את השינויים לענף חדש ולפתוח בקשת מיזוג במקום.
editor.no_changes_to_show = אין שינויים להציג.
editor.fail_to_update_file = יצירת\שינוי הקובץ "s" נכשלה.
editor.fail_to_update_file_summary = הודעת שגיאה:
editor.push_rejected_summary = הודעת דחייה מלאה:
editor.add_subdir = הוספת תיקייה…
editor.unable_to_upload_files = העלאת הקבצים ל־"%s" נכשלה: %v
editor.upload_file_is_locked = הקובץ "%s" ננעל ע"י %s.
editor.upload_files_to_dir = העלאת קבצים ל"%s"
editor.commit_email = כתובת האימייל המשויכת לקומיט
commits.commits = קומיטים
commits.nothing_to_compare = ענפים אלו זהים.
commits.search_branch = ענף זה
commits.search_all = כל הענפים
commits.author = מחבר
commits.message = מסר
commits.date = תאריך
commits.signed_by = נחתם ע"י
commits.signed_by_untrusted_user = בעל חתימה לא מהימנת
commits.signed_by_untrusted_user_unmatched = בעל חתימה לא מהימנת שלא תואמת את מחבר הקומיט
commits.gpg_key_id = מזהה מפתח ה־GPG
commits.ssh_key_fingerprint = טביעת אצבע מפתח ה־SSH
commitstatus.error = שגיאה
commitstatus.failure = כישלון
commitstatus.pending = בתהליכים
commitstatus.success = הצלחה
ext_issues = סוגיות חיצוניות
projects = פרויקטים
projects.desc = פרויקטים עוזרים בניהול וארגון סוגיות ובקשות מיזוג.
projects.description = תיאור (לא חובה)
projects.description_placeholder = תיאור...
projects.create = פרויקט חדש
projects.title = כותרת
projects.new = פרויקט חדש
issues.create = סוגייה חדשה
issues.edit = עריכה
issues.cancel = ביטול
issues.save = שמירה
issues.label_title = שם
issues.label_description = תיאור
issues.label_color = צבע
issues.label_exclusive = בחירה בודדת
issues.label_archive = לארכיון
issues.label_archived_filter = הצגת תוויות מהארכיון
issues.label_archive_tooltip = תוויות בארכיון לא מוצעות בחיפוש על־בסיס תווית כברירת מחדל.
[projects]
deleted.display_name = פרויקט נמחק
[translation_meta]
test = ואהבת לרעך כמוך

View file

@ -1272,8 +1272,6 @@ topic.done=Kész
milestones.filter_sort.name = Név
[graphs]
[org]
@ -1688,9 +1686,6 @@ config.cache_item_ttl = Gyorsítótárelem TTL értéke
config.app_data_path = Alkalmazásadatok elérési útja
config_summary = Összefoglaló
config_settings = Beállítások
[action]
create_repo=létrehozott tárolót: <a href="%s"> %s</a>
rename_repo=átnevezte a(z) <code>%[1]s</code> tárolót <a href="%[2]s">%[3]s</a>-ra/re

View file

@ -84,92 +84,15 @@ concept_code_repository=Repositori
name=Nama
re_type = Konfirmasi Kata Sandi
webauthn_insert_key = Masukkan kunci keamanan anda
webauthn_sign_in = Tekan tombol pada kunci keamanan Anda. Jika kunci keamanan Anda tidak memiliki tombol, masukkan kembali.
webauthn_press_button = Silakan tekan tombol pada kunci keamanan Anda…
webauthn_use_twofa = Gunakan kode dua faktor dari telepon Anda
webauthn_error = Tidak dapat membaca kunci keamanan Anda.
webauthn_unsupported_browser = Browser Anda saat ini tidak mendukung WebAuthn.
webauthn_error_unknown = Terdapat kesalahan yang tidak diketahui. Mohon coba lagi.
webauthn_error_insecure = `WebAuthn hanya mendukung koneksi aman. Untuk pengujian melalui HTTP, Anda dapat menggunakan "localhost" atau "127.0.0.1"`
webauthn_error_unable_to_process = Server tidak dapat memproses permintaan Anda.
webauthn_error_duplicated = Kunci keamanan tidak diperbolehkan untuk permintaan ini. Pastikan bahwa kunci ini belum terdaftar sebelumnya.
webauthn_error_empty = Anda harus menetapkan nama untuk kunci ini.
webauthn_error_timeout = Waktu habis sebelum kunci Anda dapat dibaca. Mohon muat ulang halaman ini dan coba lagi.
new_project = Proyek Baru
new_project_column = Kolom Baru
ok = Oke
retry = Coba lagi
rerun = Jalankan ulang
rerun_all = Jalankan ulang semua job
remove_label_str = `Hapus item "%s"`
view = Tampilan
test = Pengujian
locked = Terkunci
copy = Salin
copy_url = Salin URL
copy_hash = Salin hash
copy_content = Salin konten
copy_branch = Salin nama branch
copy_success = Tersalin!
copy_error = Gagal menyalin
copy_type_unsupported = Tipe berkas ini tidak dapat disalin
error = Gangguan
go_back = Kembali
invalid_data = Data invalid: %v
never = Tidak Pernah
unknown = Tidak diketahui
rss_feed = Umpan Berita
pin = Sematkan
unpin = Lepas sematan
artifacts = Artefak
archived = Diarsipkan
concept_system_global = Global
concept_user_individual = Perorangan
show_full_screen = Tampilkan layar penuh
download_logs = Unduh Logs
confirm_delete_selected = Konfirmasi untuk menghapus semua item yang dipilih?
value = Nilai
filter = Saring
filter.is_archived = Diarsipkan
filter.not_archived = Tidak Diarsipkan
filter.public = Publik
filter.private = Pribadi
[aria]
navbar = Bar Navigasi
footer = Footer
footer.links = Tautan
[heatmap]
number_of_contributions_in_the_last_12_months = %s Kontribusi pada 12 bulan terakhir
less = Lebih sedikit
more = Lebih banyak
[editor]
buttons.heading.tooltip = Tambahkan heading
buttons.bold.tooltip = Tambahkan teks Tebal
buttons.italic.tooltip = Tambahkan teks Miring
buttons.quote.tooltip = Kutip teks
buttons.code.tooltip = Tambah Kode
buttons.link.tooltip = Tambahkan tautan
buttons.list.unordered.tooltip = Tambah daftar titik
buttons.list.ordered.tooltip = Tambah daftar angka
buttons.list.task.tooltip = Tambahkan daftar tugas
buttons.mention.tooltip = Tandai pengguna atau tim
buttons.ref.tooltip = Merujuk pada isu atau permintaan tarik
buttons.switch_to_legacy.tooltip = Gunakan editor versi lama
buttons.enable_monospace_font = Aktifkan font monospace
buttons.disable_monospace_font = Non-Aktifkan font monospace
[filter]
string.asc = A - Z
string.desc = Z - A
[error]
occurred = Terjadi kesalahan
not_found = Target tidak dapat ditemukan.
[startpage]
app_desc=Sebuah layanan hosting Git sendiri yang tanpa kesulitan
@ -201,9 +124,6 @@ require_sign_in_view=Harus Login Untuk Melihat Halaman
admin_password=Kata Sandi
admin_email=Alamat Email
email_title = Pengaturan email
smtp_from = Kirim Email Sebagai
[home]
uname_holder=Nama Pengguna atau Alamat Surel
password_holder=Kata Sandi
@ -221,8 +141,6 @@ show_private=Pribadi
issues.in_your_repos=Dalam repositori anda
show_archived = Diarsipkan
[explore]
repos=Repositori
users=Pengguna
@ -574,8 +492,6 @@ email_notifications.submit=Pasang Pengaturan Email
visibility.private=Pribadi
visibility.public = Publik
[repo]
owner=Pemilik
repo_name=Nama Repositori
@ -1041,12 +957,6 @@ branch.deleted_by=Dihapus oleh %s
desc.public = Publik
desc.archived = Diarsipkan
commitstatus.error = Gangguan
projects.new = Proyek Baru
milestones.filter_sort.name = Nama
[graphs]
[org]
@ -1101,8 +1011,6 @@ teams.delete_team_success=Tim sudah di hapus.
teams.repositories=Tim repositori
teams.search_repo_placeholder=Cari repositori…
settings.visibility.public = Publik
[admin]
dashboard=Dasbor
organizations=Organisasi
@ -1361,9 +1269,6 @@ notices.op=Op.
notices.delete_success=Laporan sistem telah dihapus.
config_settings = Pengaturan
users.list_status_filter.menu_text = Saring
[action]
create_repo=repositori dibuat <a href="%s">%s</a>
rename_repo=ganti nama gudang penyimpanan dari <code>%[1]s</code> ke <a href="%[2]s">%[3]s</a>
@ -1439,56 +1344,6 @@ runs.commit=Memperbuat
runs.no_matching_online_runner_helper = Tidak ada runner online yang cocok dengan label: %s
runs.actor = Aktor
runs.status = Status
runs.actors_no_select = Semua aktor
runs.status_no_select = Semua status
runs.no_results = Tidak ada hasil yang cocok.
runs.no_workflows = Belum ada alur kerja.
runs.no_runs = Alur kerja belum berjalan.
runs.empty_commit_message = (pesan commit kosong)
workflow.disable = Nonaktifkan Alur Kerja
workflow.enable = Aktifkan Alur Kerja
workflow.disabled = Alur kerja dinonaktifkan.
need_approval_desc = Butuh persetujuan untuk menjalankan alur kerja untuk pull request fork.
variables = Variabel
variables.creation = Tambah Variabel
variables.none = Belum ada variabel.
variables.deletion = Hapus variabel
variables.deletion.description = Menghapus variabel bersifat permanen dan tidak dapat dibatalkan. Lanjutkan?
variables.description = Variabel akan diteruskan ke beberapa tindakan dan tidak dapat dibaca sebaliknya.
variables.id_not_exist = Variabel dengan ID %d tidak ada.
variables.edit = Edit Variabel
variables.deletion.failed = Gagal menghapus variabel.
variables.deletion.success = Variabel telah dihapus.
variables.creation.failed = Gagal menambahkan variabel.
variables.creation.success = Variabel "%s" telah ditambahkan.
variables.update.failed = Gagal mengedit variabel.
variables.update.success = Variabel telah diedit.
[projects]
type-1.display_name = Proyek Individu
type-2.display_name = Proyek Repositori
type-3.display_name = Proyek Organisasi
[git.filemode]
changed_filemode = %[1]s → %[2]s
directory = Directory
normal_file = Normal file
executable_file = Executable file
symbolic_link = Symbolic link
submodule = Submodule
[search]
search = Cari...
type_tooltip = Tipe pencarian
fuzzy_tooltip = Termasuk juga hasil yang mendekati kata pencarian
exact_tooltip = Hanya menampilkan hasil yang cocok dengan istilah pencarian
repo_kind = Cari repo...
user_kind = Telusuri pengguna...
org_kind = Cari organisasi...
team_kind = Cari tim...
code_kind = Cari kode...
code_search_unavailable = Pencarian kode saat ini tidak tersedia. Silahkan hubungi administrator.
branch_kind = Cari cabang...

View file

@ -114,10 +114,6 @@ value=Gildi
sign_in_with_provider = Skrá inn með %s
enable_javascript = Þessi síða krefst JavaScript.
filter = Sía
filter.is_archived = Safnvistað
filter.public = Opinbert
[aria]
[heatmap]
@ -1123,8 +1119,6 @@ topic.done=Í lagi
milestones.filter_sort.name = Heiti
[graphs]
[org]
@ -1294,9 +1288,6 @@ notices.type_2=Verkefni
notices.desc=Lýsing
config_summary = Yfirlit
config_settings = Stillingar
[action]
create_issue=`opnaði vandamál <a href="%[1]s">%[3]s#%[2]s</a>`
reopen_issue=`enduropnaði vandamál <a href="%[1]s">%[3]s#%[2]s</a>`
@ -1381,5 +1372,3 @@ runs.commit=Framlag
[projects]
[git.filemode]
[search]

View file

@ -167,8 +167,6 @@ new_org.title = Nuova organizzazione
new_migrate.link = Nuova migrazione
new_org.link = Nuova organizzazione
copy_path = Copia percorso
[aria]
footer.links = Collegamenti
navbar = Barra di navigazione
@ -202,13 +200,6 @@ buttons.disable_monospace_font = Disattiva font monospace
buttons.indent.tooltip = Annida elementi di un livello
buttons.unindent.tooltip = Disannida elementi di un livello
buttons.new_table.tooltip = Aggiungi tabella
table_modal.header = Aggiungi tabella
table_modal.placeholder.header = Intestazione
table_modal.placeholder.content = Contenuto
table_modal.label.rows = File
table_modal.label.columns = Colonne
[filter]
string.asc = A - Z
string.desc = Z - A
@ -229,7 +220,7 @@ platform=Multipiattaforma
lightweight=Leggero
lightweight_desc=Forgejo ha requisiti minimi bassi e può funzionare su un economico Raspberry Pi. Risparmia l'energia della tua macchina!
license=Open Source
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!
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!
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]
@ -520,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.reopen=<b>@%[1]s</b> riaperto #%[2]d.
issue.action.merge=<b>@%[1]s</b> unito #%[2]d in %[3]s.
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 richiesta.
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 revisione di %[2]s per questa richiesta di modifica.
issue.action.ready_for_review=<b>@%[1]s</b> ha contrassegnato questa richiesta di modifica come pronta per la revisione.
issue.action.approve=<b>@%[1]s</b> ha approvato questa pull request.
issue.action.reject=<b>@%[1]s</b> ha richiesto modifiche su questa pull request.
issue.action.review=<b>@%[1]s</b> ha commentato questa pull request.
issue.action.review_dismissed=<b>@%[1]s</b> ha respinto l'ultima recensione da %[2]s per questa pull request.
issue.action.ready_for_review=<b>@%[1]s</b> ha contrassegnato questa pull request pronta per la revisione.
issue.action.new=<b>@%[1]s</b> creato #%[2]d.
issue.in_tree_path=In %s:
@ -541,8 +532,8 @@ repo.transfer.subject_to_you=%s ti vorrebbe trasferire il repositorio "%s"
repo.transfer.to_you=tu
repo.transfer.body=Per accettare o respingerla visita %s o semplicemente ignorarla.
repo.collaborator.added.subject=%s ti ha aggiunto a %s come collaborante
repo.collaborator.added.text=Sei statə aggiuntə come collaborante al repositorio:
repo.collaborator.added.subject=%s ti ha aggiunto a %s come collaboratorə
repo.collaborator.added.text=Sei statə aggiuntə come collaboratorə al repositorio:
reply = o rispondi direttamente a questa email
admin.new_user.subject = Il nuovo utente %s si è appena registrato
admin.new_user.user_info = Informazioni utente
@ -699,7 +690,7 @@ joined_on = Membro dal %s
block_user = Blocca utente
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_3 = Non sarete in grado di aggiungervi come collaboranti del repositorio.
block_user.detail_3 = Non sarete in grado di aggiungervi come collaboratorɜ del repositorio.
code = Codice
block = Blocca
unblock = Sblocca
@ -771,7 +762,7 @@ comment_type_group_lock=Stato blocco
comment_type_group_review_request=Richiesta di revisione
comment_type_group_pull_request_push=Commit aggiunti
comment_type_group_project=Progetto
comment_type_group_issue_ref=Riferimento alla segnalazione
comment_type_group_issue_ref=Riferimento del problema
saved_successfully=Le impostazioni sono state salvate correttamente.
privacy=Privacy
keep_activity_private_popup=La tua attività sarà visibile solo a te e agli amministratori dell'istanza
@ -1038,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.
repos_none = Non possiedi alcun progetto.
blocked_users_none = Non ci sono utenti bloccati.
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.
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.
verify_gpg_key_success = La chiave GPG "%s" è stata verificata.
added_on = Aggiunto su %s
additional_repo_units_hint = Suggerisci l'attivazione di unità aggiuntive nel repositorio
@ -1198,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.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.gitea.description=Migrare i dati da gitea.com o altre istanze di Gitea.
migrate.gitea.description=Migrare i dati da gitea.com o altre istanze di Gitea/Forgejo.
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.codebase.description=Migrare i dati da codebasehq.com.
@ -1349,8 +1340,8 @@ commits.date=Data
commits.older=Più vecchio
commits.newer=Più recente
commits.signed_by=Firmato da
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 committente
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.gpg_key_id=ID chiave GPG
commits.ssh_key_fingerprint=Impronta chiave SSH
@ -1411,8 +1402,8 @@ issues.new.open_projects=Apri progetti
issues.new.closed_projects=Progetti chiusi
issues.new.no_items=Nessun elemento
issues.new.milestone=Traguardo
issues.new.no_milestone=Nessun traguardo
issues.new.clear_milestone=Rimuovi traguardo
issues.new.no_milestone=Nessuna pietra miliare
issues.new.clear_milestone=Milestone pulita
issues.new.open_milestone=Traguardi aperti
issues.new.closed_milestone=Traguardi chiusi
issues.new.assignees=Assegnatari
@ -1422,7 +1413,7 @@ issues.new.no_reviewers=Nessun revisore
issues.choose.get_started=Cominciare
issues.choose.open_external_link=Apri
issues.choose.blank=Default
issues.choose.blank_about=Crea una segnalazione dal modello predefinito.
issues.choose.blank_about=Crea un problema dal modello predefinito.
issues.no_ref=Nessun ramo/etichetta specificati
issues.create=Crea segnalazione
issues.new_label=Nuova etichetta
@ -1440,7 +1431,7 @@ issues.remove_labels=rimosso le %s etichette %s
issues.add_remove_labels=aggiunto %s e rimosso %s etichette %s
issues.add_milestone_at=`aggiunta alle pietre miliari <b>%s</b> %s`
issues.add_project_at=`aggiunto questo al progetto <b>%s</b> %s`
issues.change_milestone_at=`ha modificato il traguardo da <b> %s</b> a <b>%s</b> %s`
issues.change_milestone_at=`pietra miliare modificata da <b> %s</b> a <b>%s</b> %s`
issues.change_project_at=`ha modificato il progetto da <b>%s</b> a <b>%s</b> %s`
issues.remove_milestone_at=`rimossa dalle pietre miliari <b>%s</b> %s`
issues.remove_project_at=`rimosso questo dal progetto <b>%s</b> %s`
@ -1488,13 +1479,13 @@ issues.filter_sort.fewestforks=Minor numero di fork
issues.action_open=Apri
issues.action_close=Chiuso
issues.action_label=Etichetta
issues.action_milestone=Traguardo
issues.action_milestone_no_select=Nessun Traguardo
issues.action_milestone=Pietra Miliare
issues.action_milestone_no_select=Nessuna pietra miliare
issues.action_assignee=Assegnatario
issues.action_assignee_no_select=Nessun assegnatario
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> è stata fusa %[1]s
pulls.merged_by_fake=di %[2]s è stata fusa %[1]s
pulls.merged_by=di <a href="%[2]s">%[3]s</a> è stato fuso %[1]s
pulls.merged_by_fake=di %[2]s è stato fuso %[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.closed_by_fake=di %[2]s è stato chiuso %[1]s
@ -1515,14 +1506,14 @@ issues.close_comment_issue=Commenta e chiudi
issues.reopen_issue=Riapri
issues.reopen_comment_issue=Commenta e riapri
issues.create_comment=Commento
issues.closed_at=`ha chiuso questa segnalazione <a id="%[1]s" href="#%[1]s">%[2]s</a>`
issues.closed_at=`chiuso questo probleam <a id="%[1]s" href="#%[1]s">%[2]s</a>`
issues.reopened_at=`ha riaperto questa segnalazione <a id="%[1]s" href="#%[1]s">%[2]s</a>`
issues.commit_ref_at=`ha fatto riferimento a questa segnalazione dal commit <a id="%[1]s" href="#%[1]s">%[2]s</a>`
issues.ref_issue_from=`<a href="%[3]s">ha fatto riferimento a questa segnalazione %[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_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 questa segnalazione %[4]s</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_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.author=Autore
@ -1560,32 +1551,32 @@ issues.subscribe=Iscriviti
issues.unsubscribe=Annulla iscrizione
issues.lock=Blocca conversazione
issues.unlock=Sblocca conversazione
issues.lock.unknown_reason=Impossibile bloccare una segnalazione senza un motivo.
issues.lock.unknown_reason=Impossibile bloccare un problema con un motivo sconosciuto.
issues.lock_duplicate=Un issue non può essere bloccato due volte.
issues.unlock_error=Impossibile sbloccare una segnalazione che non è bloccata.
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 allɜ collaboranti %s
issues.unlock_error=Impossibile sbloccare un problema che non è bloccato.
issues.lock_with_reason=ha bloccato come <strong>%s</strong> e limitato la conversazione ai collaboratori %s
issues.lock_no_reason=ha bloccato e limitato la conversazione ai collaboratori %s
issues.unlock_comment=ha sbloccato questa conversazione %s
issues.lock_confirm=Blocca
issues.unlock_confirm=Sblocca
issues.lock.notice_1=- Altri utenti non possono aggiungere nuovi commenti a questa segnalazione.
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 questa segnalazione in futuro.
issues.unlock.notice_1=- Tuttɜ potranno commentare nuovamente questa segnalazione.
issues.unlock.notice_2=- Puoi sempre chiudere nuovamente questa segnalazione in futuro.
issues.lock.notice_2=- Tu e altri collaboratori con accesso a questo repository potete ancora lasciare commenti che altri possono vedere.
issues.lock.notice_3=- Puoi sempre sbloccare questo problema in futuro.
issues.unlock.notice_1=- Tutti potranno commentare nuovamente questo problema.
issues.unlock.notice_2=- Puoi sempre chiudere nuovamente questo problema in futuro.
issues.lock.reason=Motivo per il blocco
issues.lock.title=Blocca la conversazione su questa issue.
issues.unlock.title=Sblocca la conversazione su questa issue.
issues.comment_on_locked=Non puoi commentare una segnalazione bloccata.
issues.comment_on_locked=Non puoi commentare un problema bloccato.
issues.delete=Elimina
issues.delete.title=Eliminare la segnalazione?
issues.delete.text=Vuoi davvero eliminare la segnalazione? (Questo rimuoverà permanentemente tutti i contenuti. Considera invece di chiuderla, se vuoi tenerla archiviata)
issues.delete.title=Eliminare questo problema?
issues.delete.text=Vuoi davvero eliminare questo problema? (Questo rimuoverà permanentemente tutti i contenuti. Considera invece di chiuderlo, se vuoi tenerlo archiviato)
issues.tracker=Cronografo
issues.start_tracking_short=Avvia timer
issues.start_tracking=Avvia cronografo
issues.start_tracking_history=ha iniziato a lavorare %s
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'altra segnalazione</a>!`
issues.tracker_auto_close=Il timer verrà interrotto automaticamente una volta che il problema verrá chiuso
issues.tracking_already_started=`Hai già avviato il monitoraggio del tempo su <a href="%s">un altro problema</a>!`
issues.stop_tracking=Ferma timer
issues.stop_tracking_history=`ha smesso di funzionare %s`
issues.cancel_tracking=Scarta
@ -1631,16 +1622,16 @@ 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_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.issue_close_blocked=Vanno chiuse tutte le segnalazioni che bloccano quest'ultima, prima di poterla chiudere.
issues.dependency.issue_close_blocked=Devi chiudere tutte le anomalie che bloiccano questo problema prima di chiudelo.
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.blocked_by_short=Dipende da
issues.dependency.remove_header=Rimuovi Dipendenza
issues.dependency.issue_remove_text=Questo rimuoverà la dipendenza da questa issue. Continuare?
issues.dependency.pr_remove_text=Questo rimuoverà la dipendenza da questa richiesta di modifica. 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.add_error_same_issue=Non si può fare dipendere una segnalazione da se stessa.
issues.dependency.add_error_dep_issue_not_exist=La segnalazione dalla quale dipende non esiste.
issues.dependency.add_error_same_issue=Non si può fare dipendere un problema da se stesso.
issues.dependency.add_error_dep_issue_not_exist=Il problema dipendente 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_cannot_create_circular=Non puoi creare una dipendenza con due segnalazioni che si bloccano a vicenda.
@ -1682,7 +1673,7 @@ issues.reference_link=Riferimento: %s
compare.compare_base=base
compare.compare_head=confronta
pulls.desc=Attiva richieste di modifica e revisioni del codice.
pulls.desc=Attiva pull request e revisioni di codice.
pulls.new=Nuova richiesta di modifica
pulls.view=Visualizza richiesta di modifica
pulls.compare_changes=Nuova richiesta di modifica
@ -1709,17 +1700,17 @@ pulls.change_target_branch_at=`cambiato il ramo di destinazione da <b>%s</b> a <
pulls.tab_conversation=Conversazione
pulls.tab_commits=Commit
pulls.tab_files=File modificati
pulls.reopen_to_merge=Riapri questa richiesta di modifica per poter fondere.
pulls.cant_reopen_deleted_branch=Questa richiesta di modifica non può essere riaperta in quanto il ramo è stato eliminato.
pulls.reopen_to_merge=Riapri questa pull request per effettuare l'unione.
pulls.cant_reopen_deleted_branch=Questa richiesta di modifica non può essere riaperta perché il ramo è stato eliminato.
pulls.merged=Unito
pulls.manually_merged=Unito manualmente
pulls.is_closed=La richiesta di modifica è stata chiusa.
pulls.title_wip_desc=`<a href="#">Inizia il titolo con <strong>%s</strong></a> per evitare che la richiesta di modifica venga fusa accidentalmente.`
pulls.cannot_merge_work_in_progress=Questa richiesta di modifica è contrassegnata come lavori in corso.
pulls.title_wip_desc=`<a href="#">Inizia il titolo con <strong>%s</strong></a> per evitare che la pull request venga unita accidentalmente.`
pulls.cannot_merge_work_in_progress=Questa pull request è contrassegnata come un lavoro in corso.
pulls.still_in_progress=Ancora in corso?
pulls.add_prefix=Aggiungi prefisso <strong>%s</strong>
pulls.remove_prefix=Rimuovi il prefisso <strong>%s</strong>
pulls.data_broken=Questa richiesta di modifica è rovinata a causa di informazioni mancanti riguardo la derivazione.
pulls.data_broken=Questa pull request è rovinata a causa di informazioni mancanti del fork.
pulls.files_conflicted=Questa richiesta di modifica va in conflitto con il ramo di destinazione.
pulls.is_checking=Verifica dei conflitti di fusione in corso. Riprova tra qualche istante.
pulls.is_ancestor=Questo ramo è già incluso nel ramo di destinazione. Non c'è nulla da fondere.
@ -1727,8 +1718,8 @@ pulls.is_empty=Le modifiche di questo ramo sono già nel ramo di destinazione. Q
pulls.required_status_check_failed=Alcuni controlli richiesti non hanno avuto successo.
pulls.required_status_check_missing=Mancano alcuni controlli richiesti.
pulls.required_status_check_administrator=Come amministratore, puoi ancora unire questa pull request.
pulls.can_auto_merge_desc=La richiesta di modifica può essere unita automaticamente.
pulls.cannot_auto_merge_desc=Questa richiesta di modifica non può essere unita automaticamente a causa di conflitti.
pulls.can_auto_merge_desc=La pull request può essere unita automaticamente.
pulls.cannot_auto_merge_desc=Questa pull request non può essere unita automaticamente a causa di conflitti.
pulls.cannot_auto_merge_helper=Unire manualmente per risolvere i conflitti.
pulls.num_conflicting_files_1=%d file in conflitto
pulls.num_conflicting_files_n=%d file in conflitto
@ -1740,20 +1731,20 @@ pulls.waiting_count_1=%d in attesa di revisione
pulls.waiting_count_n=%d in attesa di revisione
pulls.wrong_commit_id=l'ID del commit deve essere un ID del commit nel ramo di destinazione
pulls.no_merge_desc=Questa richiesta di modifica non può essere fusa perché tutte le opzioni di fusione del repositorio sono disattivate.
pulls.no_merge_desc=Questa pull request non può essere unita perché tutte le opzioni di merge del repository sono disattivate.
pulls.no_merge_helper=Attiva le opzioni di merge nelle impostazioni del repository o unisci la pull request manualmente.
pulls.no_merge_wip=Questa pull request non può essere unita perché è contrassegnata come un lavoro in corso.
pulls.no_merge_not_ready=Questa pull request non è pronta per il merge, controlla lo stato della revisione e i controlli di stato.
pulls.no_merge_access=Non sei autorizzatə a fondere questa richiesta di modifica.
pulls.merge_pull_request=Crea commit di fusione
pulls.rebase_merge_pull_request=Ricostruisci e avanti veloce
pulls.rebase_merge_commit_pull_request=Ricostruisci e crea commit di fusione
pulls.no_merge_access=Non sei autorizzato ad effettuare il merge su questa pull request.
pulls.merge_pull_request=Crea commit unito
pulls.rebase_merge_pull_request=Ricostruisci poi manda avanti
pulls.rebase_merge_commit_pull_request=Ricostruisci quindi crea commit unito
pulls.squash_merge_pull_request=Crea commit mescolato
pulls.merge_manually=Unito manualmente
pulls.merge_commit_id=L'ID del commit di merge
pulls.require_signed_wont_sign=Il ramo richiede commit firmati ma questa fusione non verrà firmata
pulls.invalid_merge_option=Non è possibile utilizzare l'opzione di fusione selezionata per questa richiesta di modifica.
pulls.invalid_merge_option=Non puoi utilizzare questa opzione di merge per questa pull request.
pulls.merge_conflict=Unione non riuscita: C'è stato un conflitto durante l'operazione. Suggerimento: Prova una strategia diversa
pulls.merge_conflict_summary=Messaggio d'errore
pulls.rebase_conflict=Merge non riuscito: c'è stato un conflitto durante il rebase dell'commit: %[1]s. Suggerimento: Prova una strategia diversa
@ -1782,7 +1773,7 @@ pulls.reopened_at=`ha riaperto questa richiesta di modifica <a id="%[1]s" href="
pulls.auto_merge_button_when_succeed=(Quando i controlli sono superati)
pulls.auto_merge_when_succeed=Unione automatica quando tutti i controlli sono superati
pulls.auto_merge_newly_scheduled=La richiesta di modifica era programmata per essere fusa al passare di tutti i controlli.
pulls.auto_merge_newly_scheduled=La pull request era programmata per unire quando tutti i controlli sono superati.
pulls.auto_merge_has_pending_schedule=%[1]s ha programmato questa pull request per unire automaticamente quando tutti i controlli hanno successo %[2]s.
pulls.auto_merge_cancel_schedule=Annulla fusione automatica
@ -1792,8 +1783,8 @@ pulls.auto_merge_canceled_schedule=L'unione automatica è stata annullata per qu
pulls.auto_merge_newly_scheduled_comment=`ha programmato questa pull request per unire automaticamente quando tutti i controlli 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 richiesta di modifica?
pulls.delete.text=Vuoi davvero eliminare questa richiesta di modifica? (Ciò rimuoverà permanentemente tutti i contenuti. Considera invece di chiuderla, se vuoi tenerla archiviata)
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)
@ -1827,8 +1818,8 @@ ext_wiki.desc=Collegamento a una wiki esterna.
wiki=Wiki
wiki.welcome=Benvenuti nella Wiki.
wiki.welcome_desc=La wiki ti permette di scrivere e condividere documentazione con lɜ collaboranti.
wiki.desc=Scrivi e condividi documentazione con lɜ collaboranti.
wiki.welcome_desc=La wiki ti permette di scrivere e condividere documentazione con i collaboratori.
wiki.desc=Scrivi e condividi documentazione con i collaboratori.
wiki.create_first_page=Crea la prima pagina
wiki.page=Pagina
wiki.filter_page=Filtra pagina
@ -1926,7 +1917,7 @@ search.code_search_unavailable=Attualmente la ricerca di codice non è disponibi
settings=Impostazioni
settings.desc=Impostazioni ti permette di gestire le impostazioni del repository
settings.options=Repository
settings.collaboration=Collaboranti
settings.collaboration=Collaboratori
settings.collaboration.admin=Amministratore
settings.collaboration.write=Scrittura
settings.collaboration.read=Lettura
@ -2020,14 +2011,14 @@ settings.signing_settings=Impostazioni verifica firma
settings.trust_model=Modello di fiducia per la firma
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.collaborator=Collaborante
settings.trust_model.collaborator.long=Collaborante: firme di fiducia da parte dellɜ collaboranti
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.collaborator=Collaboratore
settings.trust_model.collaborator.long=Collaboratore: Firme di fiducia da parte dei collaboratori
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.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.collaboratorcommitter=Collaborante+Committente
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 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.trust_model.collaboratorcommitter=Collaboratore+Committer
settings.trust_model.collaboratorcommitter.long=Collaboratore+Committer: Firme di fiducia da parte dei collaboratori che corrispondono al committer
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.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_notices_1=-Questa operazione eliminerà permanentemente e disabiliterà la wiki repository per %s.
@ -2036,21 +2027,21 @@ settings.wiki_deletion_success=I dati della repository wiki sono stati eliminati
settings.delete=Elimina questo progetto
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_2=-Questa operazione eliminerà definitivamente il repositorio <strong>%s</strong>, inclusi codice, segnalazioni commenti, dati della wiki e impostazioni collaboranti.
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_fork_1=-I fork di questo repository diventeranno indipendenti dopo la cancellazione.
settings.deletion_success=Il repository è stato eliminato.
settings.update_settings_success=Le impostazioni del repository sono state aggiornate.
settings.confirm_delete=Elimina progetto
settings.add_collaborator=Aggiungi collaborante
settings.add_collaborator_success=Lə collaborante è statə aggiuntə.
settings.add_collaborator_inactive_user=Non posso aggiungere un*utente inattivə come collaborante.
settings.add_collaborator_duplicate=Lə collaborante è già statə aggiuntə a questo repositorio.
settings.add_collaborator=Aggiungi collaboratore
settings.add_collaborator_success=Il collaboratore è stato aggiunto.
settings.add_collaborator_inactive_user=Non posso aggiungere un utente inattivo come collaboratore.
settings.add_collaborator_duplicate=Il collaboratore è già stato aggiunto a questo repository.
settings.delete_collaborator=Rimuovi
settings.collaborator_deletion=Rimuovi collaborante
settings.collaborator_deletion_desc=Rimuovere unə collaborante ne revocherà l'accesso a questo repositorio. Continuare?
settings.remove_collaborator_success=Lə collaborante è statə rimossə.
settings.collaborator_deletion=Rimuovi collaboratore
settings.collaborator_deletion_desc=Rimuovere un collaboratore revocherà l'accesso a questo repository. Continuare?
settings.remove_collaborator_success=Il collaboratore è stato rimosso.
settings.search_user_placeholder=Ricerca utente…
settings.org_not_allowed_to_be_collaborator=Le organizzazioni non possono essere aggiunte come collaborante.
settings.org_not_allowed_to_be_collaborator=Le organizzazioni non possono essere aggiunte come un collaboratore.
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.teams=Gruppi
@ -2420,7 +2411,7 @@ actions = Azioni
commit.operations = Operazioni
issues.action_check = Seleziona/Deseleziona
issues.close = Chiudi segnalazione
issues.role.collaborator = Collaborante
issues.role.collaborator = Collaboratore
desc.sha256 = SHA256
editor.add = Aggiungi %s
editor.update = Aggiorna %s
@ -2463,7 +2454,7 @@ settings.units.overview = Panoramica
all_branches = Tutti i rami
projects.column.assigned_to = Assegnato a
pulls.cmd_instruction_hint = `Visualizza istruzioni per la riga di comando.`
settings.add_collaborator_blocked_them = Non si può aggiungere lə collaborante perché ha bloccato lə proprietariə del progetto.
settings.add_collaborator_blocked_them = Non si può aggiungere il collaboratore perché ha bloccato il proprietario del progetto.
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.tag_collision = Il ramo "%s" non può essere creato perché esiste già un'etichetta con lo stesso nome nel repositorio.
@ -2577,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.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.add_collaborator_blocked_our = Non si può aggiungere lə collaborante perché lə proprietariə del progetto l'ha bloccatə.
settings.add_collaborator_blocked_our = Non si può aggiungere il collaboratore perché il proprietario del progetto lo ha bloccato.
settings.webhook.replay.description_disabled = Per riprodurre questo richiamo HTTP, attivalo.
settings.event_wiki_desc = Pagina wiki creata, rinominata, modificata o rimossa.
settings.event_pull_request_review_request = Richiesta di modifica revisionata
@ -2620,7 +2611,7 @@ invisible_runes_description = `Questo file contiene caratteri Unicode invisibili
issues.filter_type.reviewed_by_you = Revisionati da te
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.role.collaborator_helper = Quest*utente è statə invitatə a collaborare al progetto.
issues.role.collaborator_helper = Questo utente è stato invitato a collaborare sul 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>`
settings.thread_id = ID della discussione
release.title = Titolo del rilascio
@ -2672,7 +2663,7 @@ settings.branches.add_new_rule = Aggiungi una nuova regola
settings.actions_desc = Abilita azioni del progetto
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.add_collaborator_owner = Non si può aggiungere unə proprietariə come collaborante.
settings.add_collaborator_owner = Non si può aggiungere un proprietario come collaboratore.
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.branch_does_not_exist = Non esiste nessun ramo "%s" nel repositorio.
@ -2791,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.
form.string_too_long = La stringa data è più lunga di %d caratteri.
project = Progetti
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
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
subscribe.pull.guest.tooltip = Accedi per iscriverti a questa richiesta di modifica.
subscribe.issue.guest.tooltip = Accedere per seguire questa segnalazione.
subscribe.issue.guest.tooltip = Accedere per sottoscrivere questo problema.
n_release_one = rilascio %s
n_release_few = rilasci %s
issues.author.tooltip.pr = Quest'utente è l'autorə di questa richiesta di modifica.
@ -2900,7 +2891,7 @@ teams.read_access_helper=I membri possono visualizzare e clonare i repository de
teams.write_access=Scrittura
teams.write_access_helper=I membri possono leggere e pushare sui repository del team.
teams.admin_access=Accesso amministratore
teams.admin_access_helper=I membri possono prelevare e immettere sui repositori del team e aggiungere collaboranti.
teams.admin_access_helper=I membri possono pullare e pushare sulle repository del team e anche aggiungere collaboratori.
teams.no_desc=Questo team non ha alcuna descrizione
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.
@ -2913,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.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.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.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.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.search_repo_placeholder=Ricerca repository…
@ -3474,7 +3465,7 @@ auths.tips.gmail_settings = Impostazioni Gmail:
config.test_mail_failed = Impossibile inviare email di prova a "%s": %v
users.details = Dettagli dell'utente
monitor.queue.review_add = Revisiona / aggiungi lavoratori
self_check.no_problem_found = Non c'è ancora nessuna segnalazione.
self_check.no_problem_found = Nessun problema trovato.
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.desc = Le piscine crescono dinamicamente in risposta al blocco dei lavoratori in coda.
@ -3494,13 +3485,11 @@ config.app_slogan = Slogan dell'istanza
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]
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>
create_issue=`ha aperto la segnalazione <a href="%[1]s">%[3]s#%[2]s</a>`
close_issue=`ha chiuso 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>`
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>`
close_pull_request=`ha chiuso la pull request <a href="%[1]s">%[3]s#%[2]s</a>`
@ -3895,9 +3884,6 @@ pull_kind = Cerca richieste...
exact = Esatto
milestone_kind = Ricerca tappe...
regexp = Espressione Regolare
regexp_tooltip = Interpreta i termini di ricerca come un'espressione regolare
[munits.data]
gib = GiB
tib = TiB
@ -3911,7 +3897,3 @@ b = B
filepreview.lines = Linee da %[1]d a %[2]d in %[3]s
filepreview.truncated = L'anteprima è stata troncata
filepreview.line = Linea %[1]d in %[2]s
[repo.permissions]
issues.write = <b>Scrittura:</b> Chiudere segnalazioni e gestire metadati come etichette, traguardi, assegnatarɜ, scadenze e dipendenze.
pulls.write = <b>Scrittura:</b> Chiudere richieste di modifica e gestire metadati come etichette, traguardi, assegnatarɜ, scadenze e dipendenze.

View file

@ -167,8 +167,6 @@ new_org.link = 新しい組織
test = テスト
error413 = 割り当て量を使い切りしました。
copy_path = パスをコピー
[aria]
navbar=ナビゲーションバー
footer=フッター
@ -1219,7 +1217,7 @@ migrate.migrating_failed_no_addr=移行に失敗しました。
migrate.github.description=github.com やその他の GitHub エンタープライズサーバーからデータを移行します。
migrate.git.description=Git サービスからリポジトリのみを移行します。
migrate.gitlab.description=gitlab.com やその他の GitLab インスタンスからデータを移行します。
migrate.gitea.description=gitea.com やその他の Gitea インスタンスからデータを移行します。
migrate.gitea.description=gitea.com やその他の Gitea/Forgejo インスタンスからデータを移行します。
migrate.gogs.description=notabug.org やその他の Gogs インスタンスからデータを移行します。
migrate.onedev.description=code.onedev.io やその他の OneDev インスタンスからデータを移行します。
migrate.codebase.description=codebasehq.com からデータを移行します。
@ -3519,8 +3517,6 @@ config.app_slogan = インスタンスのスローガン
config.cache_test = テストキャッシュ
config.cache_test_failed = キャッシュの調査に失敗しました: %v.
[action]
create_repo=がリポジトリ <a href="%s">%s</a> を作成しました
rename_repo=がリポジトリ名を <code>%[1]s</code> から <a href="%[2]s">%[3]s</a> へ変更しました
@ -3881,15 +3877,11 @@ workflow.dispatch.invalid_input_type = 入力タイプ「%s」が無効です。
workflow.dispatch.warn_input_limit = 最初の %d 個の入力のみを表示します。
runs.no_job = ワークフローには少なくとも1つのジョブが含まれている必要があります
runs.expire_log_message = ログは古すぎるため消去されています。
[projects]
type-1.display_name=個人プロジェクト
type-2.display_name=リポジトリ プロジェクト
type-3.display_name=組織プロジェクト
deleted.display_name = 削除されたプロジェクト
[git.filemode]
changed_filemode=%[1]s → %[2]s
directory=ディレクトリ

View file

@ -1436,10 +1436,6 @@ issues.cancel_tracking_history = `취소된 시간 기록 %s`
settings.enter_repo_name = 표시된 소유자와 저장소명을 정확하게 입력하세요:
settings.packagist_username = Packagist 사용자명
archive.title_date = 이 저장소는 %s에 보관처리되었습니다. 파일을 볼 수 있고 복제할 수도 있지만, 푸시하거나 이슈를 열거나 풀 리퀘스트를 만들 수 없습니다.
milestones.filter_sort.name = 이름
[graphs]
[org]
@ -1814,9 +1810,6 @@ auths.sspi_strip_domain_names = 사용자명들에서 도메인명을 제거함
auths.tip.yandex = %s에 새 애플리케이션을 만듭니다. "Yandex.Passport API"부분의 "Access to email address", "Access to user avatar", "Access to username, first name and surname, gender" 권한을 활성화 하세요.
config.allow_dots_in_usernames = 사용자들이 마침표를 사용자명에 사용할 수 있도록 허가합니다. 이미 존재하는 계정에는 영향을 주지 않습니다.
config_summary = 요약
config_settings = 설정
[action]
create_repo=저장소를 만들었습니다. <a href="%s">%s</a>
rename_repo=저장소 이름을 <code>%[1]s에서</code>에서 <a href="%[2]s"> %[3]s</a>으로 변경함

File diff suppressed because it is too large Load diff

View file

@ -1,5 +1,5 @@
[common]
enable_javascript = Denne nettsiden krever JavaScript.
enable_javascript = Denne nettsiden behøver JavaScript.
toc = Innholdsfortegnelse
licenses = Lisenser
return_to_forgejo = Tilbake til Forgejo
@ -128,14 +128,6 @@ webauthn_error_unable_to_process = Tjeneren kunne ikke behandle forespørselen d
webauthn_error_empty = Du må gi nøkkelen et navn.
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 = Søk...
type_tooltip = Søketype

View file

@ -357,8 +357,8 @@ account_security_caution.text_1 = Wenn du dat weerst, kannst du deese E-Mail sek
account_security_caution.text_2 = Wenn du dat nich weerst, hett well in dien Konto inbroken. Bidde kuntakteer de Sied-Chefs.
register_success = Registreren kumpleet
issue_assigned.pull = @%[1]s hett di to Haalvörslag %[2]s in Repositorium %[3]s towiesen.
issue.action.reopen = <b>@%[1]s</b> hett #%[2]d weer opmaakt.
issue.action.merge = <b>@%[1]s</b> hett #%[2]d in %[3]s tosamenföhrt.
issue.action.reopen = <b>@%[1]s</b> hett #%[2]s weer opmaakt.
issue.action.merge = <b>@%[1]s</b> hett #%[2]s in %[3]s tosamenföhrt.
issue.action.reject = <b>@%[1]s</b> hett um Änners för deesen Haalvörslag beden.
issue.action.ready_for_review = <b>@%[1]s</b> hett deesen Haalvörslag as klaar tum Nakieken markeert.
issue.action.new = <b>@%[1]s</b> hett #%[2]d opmaakt.
@ -375,8 +375,8 @@ activate_email.text = Bidde klick up deesen Verwies, um diene E-Mail-Adress binn
reset_password.text = Wenn du dat weerst, klick bidde up deesen Verwies, um dien Konto binnen <b>%s</b> torüggtohalen:
password_change.subject = Dien Passwoord is ännert worden
issue_assigned.issue = @%[1]s hett di to Gefall %[2]s in Repositorium %[3]s towiesen.
issue.action.push_1 = <b>@%[1]s</b> hett %[3]d Kommitteren to %[2]s schuven
issue.action.push_n = <b>@%[1]s</b> hett %[3]d Kommitterens to %[2]s schuven
issue.action.push_1 = <b>@%[1]s</b> hett %[3]Kommitteren to %[2]s schuven
issue.action.push_n = <b>@%[1]s</b> hett %[3]Kommitterens to %[2]s schuven
activate_account.text_1 = Moin <b>%[1]s</b>, wees bedankt, dat du di up %[2]s registreert hest!
issue.action.review_dismissed = <b>@%[1]s</b> hett dat leste Nakieken vun %[2]s för deesen Haalvörslag ofseggt.
issue.in_tree_path = In %s:
@ -404,7 +404,7 @@ issue.x_mentioned_you = <b>@%s</b> hett di nöömt:
issue.action.approve = <b>@%[1]s</b> hett deesem Haalvörslag tostimmt.
repo.transfer.subject_to_you = %s will Repositorium »%s« to di överdragen
team_invite.text_3 = Wahrschau: Deese Inladen weer för %[1]s dacht. Wenn du deese Inladen nich verwacht hest, kannst du deese E-Mail minnachten.
issue.action.close = <b>@%[1]s</b> hett #%[2]d dichtmaakt.
issue.action.close = <b>@%[1]s</b> hett #%[2]s dichtmaakt.
repo.transfer.body = Um dat antonehmen of oftolehnen, besöök %s, of ignoreer dat eenfach.
release.download.zip = Quelltext (ZIP)
team_invite.subject = %[1]s hett di inladen, in de Vereenigung %[2]s intotreden
@ -511,8 +511,6 @@ PayloadUrl = Ladung-URL
visit_rate_limit = Frömd-Togriep hett Togrieps-Begrenz troffen.
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]
change_avatar = Änner dien Kontobill …
joined_on = Am %s bitreden
@ -1407,7 +1405,7 @@ issues.comment_manually_pull_merged_at = hett Kommitteren %[1]s in %[2]s %[3]s v
issues.reopen_issue = Weer opmaken
issues.closed_at = `hett deeses Gefall <a id="%[1]s" href="#%[1]s">%[2]s</a> dichtmaakt`
issues.commit_ref_at = `hett deeses Gefall <a id="%[1]s" href="#%[1]s">%[2]s</a> vun eenem Kommitteren benöömt`
issues.ref_closing_from = `<a href="%[3]s">hett deeses Gefall vun eenem Haalvörslag, wat t %[4]s dichtmaken word,</a> <a id="%[1]s" href="#%[1]s">%[2]s</a> <a href="%[3]s">benöömt</a>`
issues.ref_closing_from = `<a href="%[3]s">hett deeses Gefall vun eenem Haalvörslag %[4]s, wat t dichtmaken word,</a> <a id="%[1]s" href="#%[1]s">%[2]s</a> <a href="%[3]s">benöömt</a>`
issues.ref_closed_from = `<a href="%[3]s">hett deeses Gefall %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a> <a href="%[3]s">dichtmaakt</a>`
issues.ref_reopened_from = `<a href="%[3]s">hett deeses Gefall %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a> <a href="%[3]s">weer opmaakt</a>`
issues.ref_from = `vun %[1]s`
@ -1445,12 +1443,12 @@ issues.label.filter_sort.reverse_alphabetically = Umdreiht na de Alphabeet
issues.label.filter_sort.by_size = Lüttste Grött
issues.num_participants_one = %d Mitmaker
issues.num_participants_few = %d Mitmakers
issues.ref_pull_from = `<a href="%[3]s">hett deesen Haalvörslag %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a> <a href="%[3]s">benöömt</a>`
issues.ref_pull_from = `<a href="%[3]s">hett deeses Haalvörslag %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a> <a href="%[3]s">benöömt</a>`
issues.label_title = Naam
issues.label_archived_filter = Archiveert Vermarkens wiesen
issues.archived_label_description = (Archiveert) %s
issues.ref_issue_from = `<a href="%[3]s">hett deeses Gefall %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a> <a href="%[3]s">benöömt</a>`
issues.ref_reopening_from = `<a href="%[3]s">hett deeses Gefall vun eenem Haalvörslag, wat t %[4]s weer opmaken word,</a> <a id="%[1]s" href="#%[1]s">%[2]s</a> <a href="%[3]s">benöömt</a>`
issues.ref_reopening_from = `<a href="%[3]s">hett deeses Gefall vun eenem Haalvörslag %[4]s, wat t weer opmaken word,</a> <a id="%[1]s" href="#%[1]s">%[2]s</a> <a href="%[3]s">benöömt</a>`
issues.author.tooltip.issue = Deeser Bruker is de Autor vun deesem Gefall.
issues.role.member_helper = Deeser Bruker is een Liddmaat vun de Vereenigung, wat de Eegner vun deesem Repositorium is.
issues.role.collaborator_helper = Deeser Bruuker is inladen worden, in deesem Repositorium mittoarbeiden.
@ -1553,7 +1551,7 @@ issues.start_tracking_history = `hett %s to warken begunnen`
issues.lock.notice_2 = - Du un anner Mitarbeiders mit Togriep to deesem Repositorium köönt wiederhen Kommentaren schrieven, wat elkeenwell sücht.
issues.due_date_modified = hett dat Anstahns-Datum vun %[2]s to %[1]s %[3]s ännert
issues.dependency.issue_remove_text = Dat word de Ofhangen vun deesem Gefall wegdoon. Wiedermaken?
issues.review.approve = hett %s deesen Ännerns tostimmt
issues.review.approve = hett deese Ännerns %s tostimmt
issues.review.dismissed = hett %[2]s dat Nakieken vun %[1]s ofseggt
issues.lock.title = Snack up deesem Gefall tosluten.
issues.unlock.title = Snack up deesem Gefall upsluten.
@ -1939,7 +1937,7 @@ milestones.filter_sort.earliest_due_data = Nahst Anstahns-Datum
milestones.filter_sort.least_issues = Minnst Gefallens
wiki.wiki_page_revisions = Sied-Versioonen
activity.period.yearly = 1 Jahr
activity.title.issues_1 = %d Gefall
activity.title.issues_1 = %s Gefall
activity.git_stats_files_changed_1 = ännert worden
activity.git_stats_deletion_n = %d lösket Riegen geven
contributors.contribution_type.deletions = Lösket Riegen
@ -1975,7 +1973,7 @@ activity.merged_prs_count_n = Tosamenföhrt Haalvörslagen
activity.title.user_1 = %d Bruker
activity.title.prs_1 = %d Haalvörslag
activity.active_issues_count_n = <strong>%d</strong> aktiiv Gefallens
activity.title.issues_n = %d Gefallens
activity.title.issues_n = %s Gefallens
activity.title.unresolved_conv_n = %d nich lööst Snacks
activity.title.releases_1 = %d Publizeren
activity.git_stats_file_1 = is %d Datei
@ -2568,8 +2566,6 @@ issues.reaction.alt_remove = De %[1]s-Reageren vun de Kommentaar wegdoon.
issues.context.menu = Kommentaar-Menü
release.summary_card_alt = Tosamenfatens-Kaart vun eenem Publizeren mit de Naam »%s« im Repositorium %s
editor.commit_email = Kommitterens-E-Mail
[repo.permissions]
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.
@ -3735,8 +3731,6 @@ runs.no_workflows.documentation = För mehr Informatioonen över Forgejo-Aktioon
runs.no_workflows.help_write_access = Weetst du nich, wo man mit Forgejo-Aktioonen begünnen sall? Kiek de <a target="_blank" rel="noopener noreferrer" href="%s">Fixanwies in de Bruker-Dokumenteren</a> an, um diene eerste Warkwies to schrieven, un <a target="_blank" rel="noopener noreferrer" href="%s">richt dann dienen eersten Forgejo-Loper in</a>, um diene Upgavens uttoföhren.
runs.no_workflows.help_no_write_access = Um mehr över Forgejo-Aktioonen to lehren, kiek <a target="_blank" rel="noopener noreferrer" href="%s">de Dokumenteren</a> an.
variables.not_found = Kunn de Variaabel nich finnen.
[projects]
deleted.display_name = Lösket Projekt
type-1.display_name = Enkelt Projekt

View file

@ -4,14 +4,14 @@ dashboard=Overzicht
explore=Verkennen
help=Help
logo=Logo
sign_in=Aanmelden
sign_in=Inloggen
sign_in_or=of
sign_out=Uitloggen
sign_up=Registreren
link_account=Account Koppelen
register=Registreren
version=Versie
powered_by=Mogelijk gemaakt door %s
powered_by=Aangedreven door %s
page=Pagina
template=Sjabloon
language=Taal
@ -28,24 +28,24 @@ username=Gebruikersnaam
email=E-mailadres
password=Wachtwoord
access_token=Toegangstoken
re_type=Bevestig wachtwoord
re_type=Verifieer wachtwoord
captcha=CAPTCHA
twofa=Twee-factor authenticatie
twofa_scratch=Twee-factor krascode
passcode=Code
passcode=PIN
webauthn_insert_key=Voer uw beveiligingssleutel in
webauthn_sign_in=Druk op de knop van uw beveiligingssleutel. Als uw beveiligingssleutel geen knop heeft, voer deze dan opnieuw in.
webauthn_sign_in=Druk op de knop van uw beveiligingssleutel. Als uw beveiligingssleutel geen knop heeft, voeg deze dan opnieuw in.
webauthn_press_button=Druk alstublieft op de knop van uw beveiligingssleutel…
webauthn_use_twofa=Gebruik een twee-factor code van uw telefoon
webauthn_error=Kon uw beveiligingssleutel niet lezen.
webauthn_unsupported_browser=Uw browser ondersteunt momenteel geen WebAuthn.
webauthn_error_unknown=Er is een onbekende fout opgetreden. Probeer het opnieuw.
webauthn_error_insecure=WebAuthn ondersteunt alleen beveiligde verbindingen. Om te testen via HTTP, kan je als systeemnaam "localhost" of "127.0.0.1" gebruiken
webauthn_error_insecure=WebAuthn ondersteunt alleen beveiligde verbindingen. Om te testen via HTTP, kan je de oorsprong "localhost" of "127.0.0.1" gebruiken
webauthn_error_unable_to_process=De server kon uw verzoek niet verwerken.
webauthn_error_duplicated=De beveiligingssleutel is voor dit verzoek niet toegestaan. Controleer alstublieft of de sleutel niet al is geregistreerd.
webauthn_error_duplicated=De beveiligingssleutel is niet toegestaan voor dit verzoek. Zorg er alstublieft voor dat de sleutel niet al geregistreerd is.
webauthn_error_empty=U moet een naam voor deze sleutel instellen.
webauthn_error_timeout=Time-out bereikt voordat uw sleutel kon worden gelezen. Herlaad deze pagina en probeer het opnieuw.
webauthn_error_timeout=Time-out bereikt voordat uw sleutel kon worden gelezen. Laad deze pagina opnieuw en probeer het opnieuw.
webauthn_reload=Vernieuwen
repository=Repository
@ -56,9 +56,9 @@ new_migrate=Nieuwe migratie
new_mirror=Nieuwe mirror
new_fork=Nieuwe repository fork
new_org=Nieuwe organisatie
new_project=Nieuw project
new_project=Nieuwe project
manage_org=Beheer organisaties
admin_panel=Site beheer
admin_panel=Website administratie
account_settings=Accountinstellingen
settings=Instellingen
your_profile=Profiel
@ -66,12 +66,12 @@ your_starred=Favoriet
your_settings=Instellingen
all=Alles
sources=Broncode
sources=Bronnen
mirrors=Mirrors
collaborative=Samenwerkende
collaborative=Samenwerkend
forks=Forks
activities=Activiteit
activities=Activiteiten
pull_requests=Pull requests
issues=Issues
milestones=Mijlpalen
@ -83,7 +83,7 @@ add=Toevoegen
add_all=Alles toevoegen
remove=Verwijder
remove_all=Alles verwijderen
edit=Wijzig
edit=Bewerk
enabled=Ingeschakeld
disabled=Uitgeschakeld
@ -115,8 +115,8 @@ concept_user_organization=Organisatie
name=Naam
sign_in_with_provider = Aanmelden met %s
tracked_time_summary = Overzicht van geregistreerde tijd op basis van filters van issuelijst
sign_in_with_provider = Log in met %s
tracked_time_summary = Overzicht van geregistreerde tijd op basis van filters van probleemlijst
enable_javascript = Deze website vereist JavaScript.
retry = Probeer opnieuw
rerun_all = Alle taken opnieuw uitvoeren
@ -140,9 +140,9 @@ confirm_delete_selected = Bevestigen om alle geselecteerde items te verwijderen?
copy_type_unsupported = Dit bestandstype kan niet worden gekopieerd
pin = Vastpinnen
unpin = Ontpinnen
remove_label_str = Verwijder item "%s"
remove_label_str = Verwijder punt "%s"
confirm_delete_artifact = Weet u zeker dat u het artefact "%s" wilt verwijderen?
toggle_menu = Menu aan/uit
toggle_menu = Menu schakelen
filter.clear = Filter wissen
filter.is_archived = Gearchiveerd
filter.is_fork = Forks
@ -159,7 +159,7 @@ more_items = Meer items
invalid_data = Ongeldige data: %v
copy_generic = Kopieer naar klembord
test = Test
error413 = U heeft uw hele quotum gebruikt.
error413 = U heeft al uw quotum opgebruikt.
new_migrate.title = Nieuwe migratie
new_org.title = Nieuwe organisatie
new_repo.link = Nieuwe repository
@ -234,7 +234,7 @@ install_desc = Draai gewoon <a target="_blank" rel="noopener noreferrer" href="%
[install]
install=Installatie
title=Initiële configuratie
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.
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.
require_db_desc=Forgejo vereist MySQL, PostgreSQL, SQLite3 of TiDB (MySQL protocol).
db_title=Database-instellingen
db_type=Database-type
@ -683,8 +683,6 @@ AccessToken = Toegangstoken
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]
change_avatar=Wijzig je profielfoto…
repositories=repositories
@ -1207,7 +1205,7 @@ migrate.migrating_failed_no_addr=Migratie is mislukt.
migrate.github.description=Migreer gegevens van github.com of GitHub Enterprise server.
migrate.git.description=Migreer een repositorie van elke Git service.
migrate.gitlab.description=Gegevens migreren van gitlab.com of andere GitLab-instanties.
migrate.gitea.description=Gegevens overzetten van gitea.com of andere Gitea instanties.
migrate.gitea.description=Gegevens overzetten van gitea.com of andere Gitea/Forgejo 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.codebase.description=Gegevens migreren van codebasehq.com.
@ -1254,7 +1252,7 @@ tags=Labels
issues=Issues
pulls=Pull requests
project_board=Projecten
packages=Pakketten
packages=Paketten
labels=Labels
org_labels_desc=Organisatielabel dat gebruikt kan worden met <strong>alle repositories</strong> onder deze organisatie
org_labels_desc_manage=beheren
@ -2872,8 +2870,6 @@ issues.reaction.alt_add = Voeg %[1]s reactie toe aan commentaar.
issues.context.menu = Commentaar menu
release.summary_card_alt = Samenvattende kaart van een release met de titel "%s" in repository %s
editor.commit_email = Commit e-mail
[graphs]
component_loading_info = Dit kan even duren…
component_failed_to_load = Er is een onverwachte fout opgetreden.
@ -2948,7 +2944,7 @@ members.invite_desc=Voeg nieuw lid toe aan %s:
members.invite_now=Nu uitnodigen
teams.join=Lid worden
teams.leave=Verlaat
teams.leave=Vertlaat
teams.can_create_org_repo=Maak repositories
teams.can_create_org_repo_helper=Leden kunnen nieuwe repositories aanmaken in de organisatie. De maker krijgt beheerder toegang tot de nieuwe repository.
teams.read_access=Gelezen
@ -3091,7 +3087,7 @@ dashboard.gc_times=GC verwerkingen
dashboard.delete_old_system_notices=Verwijder alle oude systeemmededelingen uit de database
users.user_manage_panel=Gebruikersaccounts beheren
users.new_account=Gebruikersaccount aanmaken
users.new_account=Nieuw account aanmaken
users.name=Gebruikersnaam
users.full_name=Volledige naam
users.activated=Geactiveerd
@ -3945,8 +3941,6 @@ runs.no_workflows.help_write_access = Weet je niet hoe je moet beginnen met Forg
variables.not_found = De variabele kon niet gevonden worden.
[projects]
type-1.display_name = Individueel project
type-2.display_name = Repository project

File diff suppressed because it is too large Load diff

View file

@ -55,7 +55,7 @@ organization=Organização
mirror=Espelhamento
new_repo=Novo repositório
new_migrate=Nova migração
new_mirror=Novo espelho
new_mirror=Novo espelhamento
new_fork=Novo fork do repositório
new_org=Nova organização
new_project=Novo projeto
@ -682,8 +682,6 @@ Description = Descrição
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]
change_avatar=Altere seu avatar...
joined_on=Inscreveu-se em %s
@ -723,8 +721,8 @@ following.title.one = seguindo
followers.title.one = seguidor
followers.title.few = seguidores
public_activity.visibility_hint.self_private = Sua atividade está visível apenas para você e para os administradores da instância. <a href="%s">Configurar</a>.
public_activity.visibility_hint.self_public = Sua atividade está visível para todos, exceto interações em espaços privados. <a href="%s">Configurar</a>.
public_activity.visibility_hint.admin_public = Sua atividade está visível para todos, mas como um administrador você também pode ver interações em espaços privados.
public_activity.visibility_hint.self_public = Sua atividade está visível para todos, exceto o engajamento em espaços privados. <a href="%s">Configurar</a>.
public_activity.visibility_hint.admin_public = Sua atividade está visível para todos, mas como um administrador você também pode ver o engajamento em espaços privados.
public_activity.visibility_hint.admin_private = Essa atividade está visível para você porque você é um administrador, mas o usuário dejesa que ela seja mantida em privado.
public_activity.visibility_hint.self_private_profile = Sua atividade só é visível para você e para os administradores do servidor porque seu perfil é privado. <a href="%s">Configurar</a>.
@ -993,7 +991,7 @@ scan_this_image=Escaneie esta imagem com o seu aplicativo de autenticação:
or_enter_secret=Ou digite esse código: %s
then_enter_passcode=E insira a senha mostrada no aplicativo:
passcode_invalid=Esse código de acesso é inválido. Tente novamente.
twofa_enrolled=Sua conta foi inscrita na autenticação de dois fatores. Armazene seu token de recuperação de uso único (%s) em um local seguro, pois ele não será exibido novamente.
twofa_enrolled=Sua conta foi inscrita na autenticação de dois fatores. Armazene seu token de backup (%s) em um local seguro, pois ele é exibido apenas uma vez!
twofa_failed_get_secret=Falha ao obter o segredo.
webauthn_desc=Chaves de segurança são dispositivos de hardware que contém chaves de criptografia. Elas podem ser usadas para autenticação de dois fatores. A chave de segurança deve suportar o padrão <a rel="noreferrer" target="_blank" href="%s">WebAuthnn Authenticator</a>.
@ -1222,7 +1220,7 @@ migrate.migrating_failed_no_addr=A migração falhou.
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.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.
migrate.gitea.description=Migrar dados de gitea.com ou de outras instâncias do Gitea/Forgejo.
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.codebase.description=Migrar dados de codebasehq.com.
@ -2624,7 +2622,7 @@ tag.create_tag_from=`Criar nova tag a partir de "%s"`
tag.create_success=Tag "%s" criada.
topic.manage_topics=Gerenciar tópicos
topic.manage_topics=Gerenciar Tópicos
topic.done=Feito
topic.count_prompt=Você não pode selecionar mais de 25 tópicos
@ -2752,8 +2750,8 @@ release.system_generated = Este anexo foi gerado automaticamente.
settings.wiki_branch_rename_failure = Falha ao regularizar o nome do ramo da wiki do repositório.
settings.add_collaborator_blocked_them = Não foi possível adicionar o(a) colaborador(a) porque ele(a) bloqueou o(a) proprietário(a) do repositório.
settings.thread_id = ID da discussão
issues.edit.already_changed = Não foi possível salvar as alterações desta questão. O conteúdo parece já ter sido alterado por outro(a) usuário(a). Atualize a página e tente novamente para evitar sobrescrever estas alterações.
pulls.edit.already_changed = Não foi possível salvar as alterações deste pull request. Parece que o conteúdo já foi alterado por outro(a) usuário(a). Atualize a página e tente novamente para evitar sobrescrever estas alterações.
issues.edit.already_changed = Não foi possível salvar as alterações desta questão porque o conteúdo foi alterado por outro(a) usuário(a). Atualize a página e tente novamente para evitar sobrescrever as alterações.
pulls.edit.already_changed = Não foi possível salvar as alterações deste pedido de integração porque o conteúdo foi alterado por outro(a) usuário(a). Atualize a página e tente novamente para evitar sobrescrever as alterações.
editor.commit_id_not_matching = O arquivo foi alterado durante a edição. Salve as alterações em um novo ramo e realize a mesclagem.
blame.ignore_revs = As revisões em <a href="%s">.git-blame-ignore-revs</a> foram ignoradas. Clique <a href="%s">aqui</a> para retornar à visualização normal.
topic.format_prompt = Os tópicos devem começar com um caracter alfanumérico, podem incluir hífens ("-") e pontos ("."), e podem ter até 35 caracteres. As letras devem ser minúsculas.
@ -2871,8 +2869,6 @@ issues.reaction.alt_add = Adicionar reação %[1]s ao 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
editor.commit_email = Email de commit
[graphs]
component_loading = Carregando %s...
component_loading_failed = Não foi possível carregar o(a) %s
@ -3178,7 +3174,7 @@ orgs.new_orga=Nova organização
repos.repo_manage_panel=Gerenciar repositórios
repos.unadopted=Repositórios não adotados
repos.unadopted.no_more=Não foram encontrados repositórios não adotados.
repos.unadopted.no_more=Não foram encontrados repositórios não adotados
repos.owner=Proprietário(a)
repos.name=Nome
repos.private=Privado
@ -3947,8 +3943,6 @@ runs.no_workflows.help_no_write_access = Para aprender sobre as Actions do Forge
runs.no_workflows.help_write_access = Não sabe como começar a usar as Actions do Forgejo? Veja o <a target="_blank" rel="noopener noreferrer" href="%s">guia de como começar na documentação do usuário</a> para escrever seu primeiro workflow, depois <a target="_blank" rel="noopener noreferrer" href="%s">configure um runner do Forgejo</a> para executar trabalhos.
variables.not_found = Não foi possível encontrar a variável.
[projects]
type-1.display_name=Projeto individual
type-2.display_name=Projeto do repositório

View file

@ -682,8 +682,6 @@ FullName = Nome completo
Description = Descrição
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]
change_avatar=Mude o seu avatar…
joined_on=Inscreveu-se em %s
@ -1233,7 +1231,7 @@ migrate.migrating_failed_no_addr=A migração falhou.
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.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.
migrate.gitea.description=Migrar dados de gitea.com ou de outras instâncias do Gitea/Forgejo.
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.codebase.description=Migrar dados de codebasehq.com.
@ -2872,8 +2870,6 @@ 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.
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]
component_loading=A carregar %s...
component_loading_failed=Não foi possível carregar %s
@ -3541,7 +3537,7 @@ notices.delete_success=As notificações do sistema foram eliminadas.
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_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_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_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.
config_summary = Resumo
@ -3947,8 +3943,6 @@ runs.expire_log_message = Os registos foram purgados por serem demasiado antigos
runs.no_workflows.help_no_write_access = Para aprender sobre Forgejo Actions, veja<a target="_blank" rel="noopener noreferrer" href="%s">a documentação</a>.
runs.no_workflows.help_write_access = Não sabe como começar com o Forgejo Actions? Consulte o <a target="_blank" rel="noopener noreferrer" href="%s">início rápido na documentação do utilizador</a> para escrever a sua primeira sequência de trabalho, depois <a target="_blank" rel="noopener noreferrer" href="%s">prepare um executor Forgejo</a> para executar os seus trabalhos.
variables.not_found = Não foi possível encontrar a variável.
[projects]
type-1.display_name=Planeamento individual
type-2.display_name=Planeamento do repositório
@ -4011,7 +4005,7 @@ filepreview.line = Linha %[1]d em %[2]s
filepreview.truncated = A previsão foi truncada
[translation_meta]
test = ok :)
test = ok
[repo.permissions]
code.read = <b>Ler:</b> Aceder e clonar o código-fonte do repositório.

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