Compare commits

...

101 commits

Author SHA1 Message Date
36d69e6608 Dockerfile: rename user to _gitea instead of git 2024-05-22 21:31:56 -03:00
Earl Warren
b5c49a19d2 Merge pull request 'Revert "Prevent automatic OAuth grants for public clients (#30790) (#30836)"' (#3867) from earl-warren/forgejo:wip-oauth-revert into v7.0/forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3867
Reviewed-by: oliverpool <oliverpool@noreply.codeberg.org>
2024-05-22 15:06:48 +00:00
Earl Warren
6771312133
Revert "Prevent automatic OAuth grants for public clients (#30790) (#30836)"
This reverts commit 248a5b8d7a.

This commit introduces a regression descrdibed at

https://github.com/go-gitea/gitea/pull/30790#issuecomment-2118812426

There is a commit to try and fix it, but it is similarly
untested. Let's not accumulate regressions and wait until it is either
field tested by humans in Gitea or a test is written.

https://github.com/go-gitea/gitea/pull/31015/files
2024-05-22 16:37:00 +02:00
Earl Warren
07ad7dd8f6 Merge pull request 'fix: Forgejo 7.0 is compatible with Gitea v1.21.11' (#3857) from earl-warren/forgejo:wip-gitea-compatibility into v7.0/forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3857
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
2024-05-21 13:43:05 +00:00
Earl Warren
6a472f90f8
fix: Forgejo 7.0 is compatible with Gitea v1.21.11 2024-05-21 15:01:37 +02:00
0ko
f00123b893 [v7/forgejo][I18N] Translations update from Weblate (#3852)
Manual backport of #3759 with MSSQL removal conflict resolved in zh-TW `require_db_desc`.

Translations update from [Weblate](https://translate.codeberg.org) for [Forgejo/forgejo](https://translate.codeberg.org/projects/forgejo/forgejo/).

Co-authored-by: earl-warren <earl-warren@users.noreply.translate.codeberg.org>
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: Dirk <Dirk@users.noreply.translate.codeberg.org>
Co-authored-by: kdh8219 <kdh8219@monamo.dev>
Co-authored-by: Salif Mehmed <mail@salif.eu>
Co-authored-by: 0ko <0ko@users.noreply.translate.codeberg.org>
Co-authored-by: leana8959 <leana8959@users.noreply.translate.codeberg.org>
Co-authored-by: yeziruo <yeziruo@users.noreply.translate.codeberg.org>
Co-authored-by: Fitik <Fitik@users.noreply.translate.codeberg.org>
Co-authored-by: b1nar10 <b1nar10@users.noreply.translate.codeberg.org>
Co-authored-by: hankskyjames777 <hankskyjames777@users.noreply.translate.codeberg.org>
Co-authored-by: Mumulhl <mumulhl@duck.com>
Co-authored-by: Kita Ikuyo <searinminecraft@courvix.com>

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3852
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
2024-05-21 03:15:55 +00:00
Earl Warren
0f61cb389a Merge pull request '[v7.0/forgejo] Fix error on renaming merged PRs' (#3842) from bp-v7.0/forgejo-3351ce2 into v7.0/forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3842
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
2024-05-20 14:08:11 +00:00
Earl Warren
cbdef1792f Merge pull request '[v7.0/forgejo] badges: Relax the default workflow badge conditions' (#3846) from bp-v7.0/forgejo-d6915f4 into v7.0/forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3846
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
2024-05-20 11:44:22 +00:00
Gergely Nagy
ef4c6abbb9 badges: Relax the default workflow badge conditions
Previously, if no branch was explicitly specified for a workflow, it
defaulted to the default branch of the repo. This worked fine for
workflows that were triggered on push, but it prevented showing badges
for workflows that only run on tags, or on schedule - since they do not
run on a specific branch.

Thus, relax the conditions, and if no branch is specified, just return
the latest run of the given workflow. If one is specified, *then*
restrict it to said branch.

Fixes #3487.

Signed-off-by: Gergely Nagy <forgejo@gergo.csillger.hu>
(cherry picked from commit d6915f4d5f81805f3a9e2ba38ecf512c15cfd360)
2024-05-20 10:47:25 +00:00
0ko
0b01434aa3 Fix error on renaming merged PRs (#3840)
Closes https://codeberg.org/forgejo/forgejo/issues/3743.

This is a simple fix for https://codeberg.org/forgejo/forgejo/issues/3743, based on changes in [gitea#30990](https://github.com/go-gitea/gitea/pull/30990), which was not included in https://codeberg.org/forgejo/forgejo/pulls/3838 due to large code differences.

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3840
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
(cherry picked from commit 3351ce2bc59b1b083206f384f720bcb6a50527f5)
2024-05-19 18:20:50 +00:00
Otto
487b2129aa Merge pull request '[v7.0/forgejo] Suppress Monaco JavaScript errors in Safari' (#3833) from bp-v7.0/forgejo-e4c3c03 into v7.0/forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3833
Reviewed-by: Otto <otto@codeberg.org>
2024-05-19 12:56:18 +00:00
David Davies-Payne
b9674b3ee9 Suppress Monaco JavaScript errors in Safari (#3805)
Fix #3638

This is a manual Forgejo-specific version of the Gitea PR https://github.com/go-gitea/gitea/pull/30862. The weekly Forgejo PR #3772 could not cherry-pick this commit due to conflicts (eg subsequent CodeSpell changes).

Only occurs with Webkit in Safari over eg `http://192..`. (not localhost).
See https://webkit.org/blog/10855/async-clipboard-api/

---
**Before**
![Before.jpg](/attachments/c570d030-fcce-48ea-ac96-06b624541c7b)

**After**
![After.jpg](/attachments/1a9132ab-f7f3-43a5-b3ea-37b6f2b671c4)

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3805
Reviewed-by: Otto <otto@codeberg.org>
Co-authored-by: David Davies-Payne <d2p@me.com>
Co-committed-by: David Davies-Payne <d2p@me.com>
(cherry picked from commit e4c3c039bee28bc10f5e6fe3a3a98812d01ce4be)
2024-05-18 21:20:48 +00:00
0ko
a5776cc883 Merge pull request '[v7.0/forgejo] Fix overflowing titles in project columns' (#3827) from beowulf/bp-v7.0/forgejo-853f005 into v7.0/forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3827
Reviewed-by: 0ko <0ko@noreply.codeberg.org>
2024-05-18 14:13:17 +00:00
Beowulf
972dd76eeb
fixed overflow of projects column title
This fixes that titles of project columns can overflow and push the
action menu out of the card, so that interaction is no longer possible.

Addition to the cherry pick:
In v7.0, `min-width: 0` is additionally applied to the title of the
project column, as this is missing for the .ui.label in contrast to v8.0.

Fixes #3717

(cherry picked from commit 853f0051809aa4b8a3fec4c16e2871a3bb716c83)
2024-05-18 09:36:51 +02:00
Earl Warren
af32e3c09a Merge pull request '[v7.0/forgejo] [I18N] Some English decap and other fixes' (#3825) from bp-v7.0/forgejo-1b12ca8 into v7.0/forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3825
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
2024-05-18 07:35:38 +00:00
0ko
ceb9d543b3 [I18N] Some English decap and other fixes
(cherry picked from commit 1b12ca80ec0b42568d9f7d1ec65bd77530753955)
2024-05-18 07:02:14 +00:00
Earl Warren
0d06f3c2dd Merge pull request '[v7.0/forgejo] Fix contrast for issue count in projects columns' (#3814) from bp-v7.0/forgejo-82e0066 into v7.0/forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3814
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
2024-05-17 11:10:21 +00:00
Beowulf
b898370a04 Fixed contrast for issue count in projects column
Regression introduced by 9934931f1f

See #3772

(cherry picked from commit 82e0066ed42fcb3095008e2155b5d42dbcd1e195)
2024-05-17 10:36:05 +00:00
Earl Warren
7eb54dbfca Merge pull request '[v7.0/forgejo] Update dependency mermaid to v10.9.1' (#3802) from earl-warren/forgejo:wip-v7.0-mermaid into v7.0/forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3802
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
2024-05-16 17:07:15 +00:00
Renovate Bot
055a403781
Update dependency mermaid to v10.9.1
(cherry picked from commit 03e2aed969fb6e7fce19df4846747d8348c87214)

Conflicts:
	package-lock.json
	package.json
	trivial context conflict
2024-05-16 18:12:23 +02:00
Earl Warren
f7e9db75c4 Merge pull request '[v7.0/forgejo] Port: Fix some UI problems (install) (gitea#30854)' (#3799) from bp-v7.0/forgejo-c16ae1a into v7.0/forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3799
Reviewed-by: Mai-Lapyst <mai-lapyst@noreply.codeberg.org>
2024-05-16 15:39:08 +00:00
Earl Warren
4ecbb2ef1b Merge pull request '[gitea] week 2024-20-v7.0 cherry pick (release/v1.22 -> v7.0/forgejo)' (#3772) from earl-warren/wcp/2024-20-v7.0 into v7.0/forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3772
Reviewed-by: Beowulf <beowulf@noreply.codeberg.org>
2024-05-16 15:36:08 +00:00
forgejo-backport-action
7a8b2d8eb8 [v7.0/forgejo] Improve base locale related to settings and accounts (#3742)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/3733

- general English improvements
- separated the header of Language part in user settings into a new string for better translatability
- made that header contain "Default", just like the theme one, because this is how this actually works: the bottom selector saves the language temporarily, the selector in the settings saves it permanently. Not many users know about this difference. This clarification will help some
- removed some of "Manage" from the headers where they aren't really needed. This improves the consistency with some other headers

Co-authored-by: 0ko <0ko@noreply.codeberg.org>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3742
Reviewed-by: 0ko <0ko@noreply.codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2024-05-16 14:15:33 +00:00
Earl Warren
6bf1bcab57 Merge pull request '[v7.0/forgejo] test: add more sha256 repositories tests' (#3798) from bp-v7.0/forgejo-67effd6-df8aaeb-348182f-e3e82d0 into v7.0/forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3798
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
2024-05-16 13:54:37 +00:00
wxiaoguang
4feb183d91 Fix some UI problems (install) (#30854)
(cherry picked from commit ce8b11ae131bef6cd7df0849ed39da7984953a4b)
(cherry picked from commit c16ae1ab395dd31c3a1e35f3c21ce656446808ea)
2024-05-16 13:22:15 +00:00
Earl Warren
0f10d15dfa Merge pull request '[v7.0/forgejo] template: label fix correct input id' (#3796) from bp-v7.0/forgejo-208eed0 into v7.0/forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3796
Reviewed-by: Otto <otto@codeberg.org>
2024-05-16 13:15:23 +00:00
oliverpool
d877f18092 test-sha256: APICreateFile
(cherry picked from commit 67effd6985333384109543fbc5ac3e7764f848d2)
2024-05-16 13:07:14 +00:00
oliverpool
32a0e1e2b4 test-sha256: APICreateBranch
(cherry picked from commit df8aaeb1d5a7f9ae5379a2223433b9c77ef5e134)
2024-05-16 13:07:14 +00:00
oliverpool
ab4570d0cb test-sha256: PushDeployKeyOnEmptyRepo
(cherry picked from commit 348182f4b326c3b82692d074337f546239ae03dd)
2024-05-16 13:07:14 +00:00
oliverpool
7c40672ddf test: useless duplication
(cherry picked from commit e3e82d02adf5b1d9da9b0d1b8730c2f58b39d878)
2024-05-16 13:07:14 +00:00
Frank Villaro-Dixon
aefe770255 template: label fix correct input id
Signed-off-by: Frank Villaro-Dixon <frank@villaro-dixon.eu>
(cherry picked from commit 208eed05ffda0318930775bcfe97895c6d34d4df)
2024-05-16 10:16:28 +00:00
Earl Warren
40b639d2a0 Merge pull request '[v7.0/forgejo] fix: hook post-receive for sha256 repos' (#3788) from bp-v7.0/forgejo-5e73c67-2ac3dcb into v7.0/forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3788
Reviewed-by: oliverpool <oliverpool@noreply.codeberg.org>
2024-05-16 06:59:56 +00:00
oliverpool
3f9f6f1350 fix: hook post-receive for sha256 repos
(cherry picked from commit 5e73c67d6744931c7cdb7df6a6d8f3f1ae913452)
2024-05-15 21:08:15 +00:00
oliverpool
6de1f714f3 test: hook post-receive for sha256 repos
failing push-to-create for sha256 will be fixed in a followup PR

(cherry picked from commit 2ac3dcbd43928d214453ce951c2a89df522930ae)
2024-05-15 21:08:15 +00:00
Earl Warren
fa448e2293 Merge pull request '[v7.0/forgejo] gitea#30535: Refactor and fix archive link bug' (#3760) from algernon/forgejo:backport/3696-to-7.0 into v7.0/forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3760
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
2024-05-14 22:25:07 +00:00
Earl Warren
161fca9007 Merge pull request '[v7.0/forgejo] Replace reply with a forked version to fix the cut-off of the incoming mail text' (#3753) from beowulf/fix-inline-attachments-body-cut-off-bp7.0 into v7.0/forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3753
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
2024-05-14 15:21:25 +00:00
Earl Warren
08894a9335
[DEADCODE] update 2024-05-14 16:47:37 +02:00
Giteabot
56642554d1
Move reverproxyauth before session so the header will not be ignored even if user has login (#27821) (#30948)
Backport #27821 by @lunny

When a user logout and then login another user, the reverseproxy auth
should be checked before session otherwise the old user is still login.

Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
(cherry picked from commit 14dc00ae01c35ad51a3982a5725777bbeabe2b78)
2024-05-14 16:17:23 +02:00
Giteabot
10a9b6b806
Fix some UI regressions for commit list (#30920) (#30937)
Backport #30920 by wxiaoguang

Close #30919

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
Co-authored-by: silverwind <me@silverwind.io>
(cherry picked from commit 94c5a30c8bd2ae78ffd7bd3b39bee019c531e1e7)
2024-05-14 16:14:38 +02:00
silverwind
6917b25ad3
Fix and tweak pull request commit list (#30528)
Fixes https://github.com/go-gitea/gitea/issues/30493, regression from
https://github.com/go-gitea/gitea/pull/30374.

Also did the flexbox convertion as suggested by the existing comment.

<img width="850" alt="Screenshot 2024-04-16 at 22 28 48"
src="https://github.com/go-gitea/gitea/assets/115237/e8905944-620a-4211-b5c5-53ed3b3ee23e">

Co-authored-by: Giteabot <teabot@gitea.io>
(cherry picked from commit 311f5261cdb23b46d3f510e40fd4e2ac06e376c0)
(cherry picked from commit eea7ea9d0a8a6a899f1e3b41f02d6ca835c14331)
2024-05-14 16:14:14 +02:00
yp05327
37fc6cdaf6
Fix incorrect default branch when adopt a repository (#30912) (#30928)
Backport #30912

ps: removed useless `u *user_model.User` for `adoptRepository`
(cherry picked from commit 2200c41ffd7dc84faa1de61941603af11b3412f2)
2024-05-14 16:09:33 +02:00
Zettat123
65529bd334
Update issue indexer after merging a PR (#30715)
Fix #30684

(cherry picked from commit f09e68ec33262d5356779572a0b1c66e6e86590f)

Conflicts:
	tests/integration/pull_merge_test.go
	trivial context conflict
(cherry picked from commit 8f0f6bf89cdcd12cd4daa761aa259fdba7e32b50)

(cherry picked from commit df5513978a630355a28b6b42fcc63fe5d70652d8)
2024-05-14 16:00:57 +02:00
Lunny Xiao
d91839692f
Fix various problems around projects board view (#30696)
The previous implementation will start multiple POST requests from the
frontend when moving a column and another bug is moving the default
column will never be remembered in fact.

- [x] This PR will allow the default column to move to a non-first
position
- [x] And it also uses one request instead of multiple requests when
moving the columns
- [x] Use a star instead of a pin as the icon for setting the default
column action
- [x] Inserted new column will be append to the end
- [x] Fix #30701 the newly added issue will be append to the end of the
default column
- [x] Fix when deleting a column, all issues in it will be displayed
from UI but database records exist.
- [x] Add a limitation for columns in a project to 20. So the sorting
will not be overflow because it's int8.

---------

Co-authored-by: silverwind <me@silverwind.io>
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
(cherry picked from commit a303c973e0264dab45a787c4afa200e183e0d953)

Conflicts:
	routers/web/web.go
	e91733468ef726fc9365aa4820cdd5f2ddfdaa23 Add missing database transaction for new issue (#29490) was not cherry-picked
	services/issue/issue.go
	fe6792dff3 Enable/disable owner and repo projects independently (#28805) was not cherry-picked
(cherry picked from commit 7d3ca90dfed142ce62c75fbe041382b5f4334c01)

(cherry picked from commit 084bec89ed7ae0816fc2d8db6784ad22523d1fc4)
2024-05-14 15:51:15 +02:00
silverwind
9934931f1f
[PORT] gitea##30237: Fix and rewrite contrast color calculation, fix project-related bugs
1. The previous color contrast calculation function was incorrect at
least for the `#84b6eb` where it output low-contrast white instead of
black. I've rewritten these functions now to accept hex colors and to
match GitHub's calculation and to output pure white/black for maximum
contrast. Before and after:
<img width="94" alt="Screenshot 2024-04-02 at 01 53 46"
src="https://github.com/go-gitea/gitea/assets/115237/00b39e15-a377-4458-95cf-ceec74b78228"><img
width="90" alt="Screenshot 2024-04-02 at 01 51 30"
src="https://github.com/go-gitea/gitea/assets/115237/1677067a-8d8f-47eb-82c0-76330deeb775">

2. Fix project-related issues:

- Expose the new `ContrastColor` function as template helper and use it
for project cards, replacing the previous JS solution which eliminates a
flash of wrong color on page load.
- Fix a bug where if editing a project title, the counter would get
lost.
- Move `rgbToHex` function to color utils.

Co-authored-by: delvh <dev.lh@web.de>
Co-authored-by: Giteabot <teabot@gitea.io>

---
Conflict resolution: Trivial.
(cherry picked from commit 36887ed3921d03f1864360c95bd2ecf853bfbe72)
(cherry picked from commit f6c0c39f1aef167bb14375a009cf463c6bf031fb)
2024-05-14 15:50:47 +02:00
Yarden Shoham
c6d2c18052
Remove jQuery class from the project page (#30183)
- Switched from jQuery class functions to plain JavaScript `classList`
- Tested the edit column modal functionality and it works as before

Signed-off-by: Yarden Shoham <git@yardenshoham.com>
(cherry picked from commit b535c6ca7b9e8c4bcf5637091ee5ad6d9c807c31)
(cherry picked from commit 702f112602f5070961338eaa385880c5bb68db68)
2024-05-14 15:50:31 +02:00
Giteabot
8f8d85da47
Fix wrong transfer hint (#30889) (#30900)
Backport #30889 by @lunny

Fix #30187

Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
(cherry picked from commit 271e8748a2035ebc836cc2d1e03f4e68b063697e)
2024-05-14 15:45:03 +02:00
Lunny Xiao
7e81775184
Move database operations of merging a pull request to post receive hook and add a transaction (#30805)
Merging PR may fail because of various problems. The pull request may
have a dirty state because there is no transaction when merging a pull
request. ref
https://github.com/go-gitea/gitea/pull/25741#issuecomment-2074126393

This PR moves all database update operations to post-receive handler for
merging a pull request and having a database transaction. That means if
database operations fail, then the git merging will fail, the git client
will get a fail result.

There are already many tests for pull request merging, so we don't need
to add a new one.

---------

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
(cherry picked from commit ebf0c969403d91ed80745ff5bd7dfbdb08174fc7)

Conflicts:
	modules/private/hook.go
	routers/private/hook_post_receive.go
	trivial conflicts because
	  263a716cb5 * Performance optimization for git push (#30104)
	was not cherry-picked and because of
	  998a431747a15cc95f7056a2029b736551eb037b Do not update PRs based on events that happened before they existed
(cherry picked from commit eb792d9f8a4c6972f5a4cfea6e9cb643b1d6a7ce)

(cherry picked from commit ec3f5f9992d7ff8250c044a4467524d53bd50210)
2024-05-14 15:37:32 +02:00
6543
99bd29f02f
Repository explore alphabetically order respect owner name (#30882)
similar to #30784 but only for the repo explore page

is covered by #30876 for the main branch

(cherry picked from commit d410e2acce22e5b3518a9bf64a9152b32a91fe18)
2024-05-14 15:31:36 +02:00
Giteabot
e5f9482745
Fix missing migrate actions artifacts (#30874) (#30886)
Backport #30874 by @lunny

The actions artifacts should be able to be migrate to the new storage
place.

Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
(cherry picked from commit 216c8eada3c0727288dc5565ae9fdd798b17c463)
2024-05-14 15:31:14 +02:00
Giteabot
220594bacc
Make "sync branch" also sync object format and add tests (#30878) (#30880)
Backport #30878 by wxiaoguang

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
(cherry picked from commit ad5a8d043c6818c0c496ebae2f5ea9373219bcd6)
2024-05-14 15:28:38 +02:00
Giteabot
1582b1e83a
Get repo list with OrderBy alpha should respect owner too (#30784) (#30875)
Backport #30784 by @6543

instead of:
- zowner/gcode
- awesome/nul
- zowner/nul
- zowner/zzz

we will get:
- awesome/nul
- zowner/gcode
- zowner/nul
- zowner/zzz

Co-authored-by: 6543 <6543@obermui.de>
(cherry picked from commit cfe6779d4eb2f3869357768fe58863642f79c5a9)
2024-05-14 15:27:25 +02:00
Giteabot
dbecdd2be2
Have time.js use UTC-related getters/setters (#30857) (#30869)
Backport #30857 by kemzeb

Co-authored-by: Kemal Zebari <60799661+kemzeb@users.noreply.github.com>
Co-authored-by: Sam Fisher <fisher@3echelon.local>
(cherry picked from commit 2252a7bf84c26aee0dfa1b1b826dba148f507a3a)
2024-05-14 15:25:52 +02:00
Earl Warren
98afc8fcdb Merge pull request '[v7.0/forgejo] Expand code diffs against the commits repo' (#3767) from bp-v7.0/forgejo-220c3fe into v7.0/forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3767
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
2024-05-14 12:42:18 +00:00
0ko
679010f079 Merge pull request '[v7.0/forgejo] Translation updates from Weblate' (#3749) from bp-v7.0/forgejo-61643a6 into v7.0/forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3749
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
2024-05-14 12:20:19 +00:00
forgejo-backport-action
0dc681ed13 [v7.0/forgejo] Improve translatability of "Transfer ownership" (#3750)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/3739

This text can have different forms in other languages depending on context.

The commit also contains a change to .editorconfig to prevent EoF changes when mass-replacing strings, as that causes unintentional merge conflicts with Weblate.

Co-authored-by: 0ko <0ko@noreply.codeberg.org>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3750
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2024-05-14 12:14:36 +00:00
Gergely Nagy
dc13eecc04 Expand code diffs against the commits repo
When expanding code diffs, the expansion should search for more context
in the commits repo, rather than in the repo in context, because the
commit may not be available in the base repo. For example, when
previewing a pull request, the commit is not in the target repo yet -
it's in the fork.

Fixes #3746.

Signed-off-by: Gergely Nagy <forgejo@gergo.csillger.hu>
(cherry picked from commit 220c3fe3b34a97a9c5baf52d3566e7a86e17943a)
2024-05-14 12:06:44 +00:00
Earl Warren
8a8718be4d Merge pull request '[v7.0/forgejo] Rename Str2html to SanitizeHTML and clarify its behavior (followup) (take 2)' (#3751) from bp-v7.0/forgejo-337f4f9 into v7.0/forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3751
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
2024-05-14 10:55:07 +00:00
Gergely Nagy
50ac410e35
[backport]: backport applyElemsCallback
Lifted out from 19832265814430e17b456cabd207f447c003d59a.

Signed-off-by: Gergely Nagy <forgejo@gergo.csillger.hu>
2024-05-14 08:39:59 +02:00
wxiaoguang
cbdf32126f
Refactor and fix archive link bug (#30535)
Regression of #29920
Fixes: #30569

Also this is a rewriting to eliminate the remaining jQuery usages from code.

Co-authored-by: Giteabot <teabot@gitea.io>
(cherry picked from commit d0e07083559180b124a08359fcc72f9ef695e723)

Conflicts:
	- web_src/js/features/repo-common.js
	  Conflict resolved in favour of Gitea.
2024-05-14 08:34:46 +02:00
Beowulf
1f08add260
Replace reply with a forked version to fix the cut-off of the incoming mail text (#3747)
replace reply with forgejos forked version

If plain text is selected as the message format in e.g. Apple Mail, the inline attachments are no longer at the end of the mail, but instead directly where they are in the mail. When parsing the mail, these inline attachments are replaced by "--". The new reply version no longer cuts the text at the first "--".

Tests for this are present in reply (7dc5750c6d).

Fixes https://codeberg.org/forgejo/forgejo/issues/3496#issuecomment-1798416

---

Additionally, I reduced the allocations for the inline attachments.
2024-05-13 23:51:40 +02:00
Earl Warren
8b86b6f1a0 Rename Str2html to SanitizeHTML and clarify its behavior (followup) (take 2)
In
  801792e4dc Rename Str2html to SanitizeHTML and clarify its behavior (followup)
the replacement was incorrect because
  c9d0e63c20  Remove unnecessary "Str2html" modifier from templates
was not applied and Str2html should have not been present in the first
place.

Fixes: https://codeberg.org/forgejo/forgejo/issues/3554
(cherry picked from commit 337f4f9d87739990bcc60a9f0ecd03c74c49bc17)
2024-05-13 18:38:48 +00:00
0ko
564183bbbd Translation updates from Weblate (#3748)
This is not the usual Weblate PR. I did not reset Weblate after squash-merging https://codeberg.org/forgejo/forgejo/pulls/3637, so Weblate failed to rebase and locked. These are manually cherry-picked commits that Weblate produced after that PR was merged. We need to squash-merge them too before resetting Weblate, so the new translations don't get lost.

Co-authored-by: earl-warren <earl-warren@users.noreply.translate.codeberg.org>
Co-authored-by: Cwpute <Cwpute@users.noreply.translate.codeberg.org>
Co-authored-by: Mylloon <Mylloon@users.noreply.translate.codeberg.org>
Co-authored-by: leana8959 <leana8959@users.noreply.translate.codeberg.org>
Co-authored-by: owofied <furry@users.noreply.translate.codeberg.org>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3748
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
(cherry picked from commit 61643a698cd5f00f1132bbee5798144a48ab4255)
2024-05-13 18:18:32 +00:00
Earl Warren
9d6974d1f8 Merge pull request '[v7.0/forgejo] [I18N] Translations update from Weblate' (#3740) from bp-v7.0/forgejo-010cccd into v7.0/forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3740
Reviewed-by: 0ko <0ko@noreply.codeberg.org>
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
2024-05-13 12:45:16 +00:00
Codeberg Translate
92867c76a7 [I18N] Translations update from Weblate (#3637)
Translations update from [Weblate](https://translate.codeberg.org) for [Forgejo/forgejo](https://translate.codeberg.org/projects/forgejo/forgejo/).

Co-authored-by: Kaede Fujisaki <ledyba@users.noreply.translate.codeberg.org>
Co-authored-by: emansije <emansije@users.noreply.translate.codeberg.org>
Co-authored-by: Kita Ikuyo <searinminecraft@courvix.com>
Co-authored-by: kdh8219 <kdh8219@monamo.dev>
Co-authored-by: enricpineda <enricpineda@users.noreply.translate.codeberg.org>
Co-authored-by: 0ko <0ko@users.noreply.translate.codeberg.org>
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: nmmr <nmmr@users.noreply.translate.codeberg.org>
Co-authored-by: VioletLul <VioletLul@users.noreply.translate.codeberg.org>
Co-authored-by: leana8959 <leana8959@users.noreply.translate.codeberg.org>
Co-authored-by: Dirk <Dirk@users.noreply.translate.codeberg.org>
Co-authored-by: Nifou <Nifou@users.noreply.translate.codeberg.org>
Co-authored-by: hankskyjames777 <hankskyjames777@users.noreply.translate.codeberg.org>
Co-authored-by: yeziruo <yeziruo@users.noreply.translate.codeberg.org>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3637
Reviewed-by: 0ko <0ko@noreply.codeberg.org>
Co-authored-by: Codeberg Translate <translate@noreply.codeberg.org>
Co-committed-by: Codeberg Translate <translate@noreply.codeberg.org>
(cherry picked from commit 010cccd33ee4bcbe8f13ec8bc35773d38dbce5d6)
2024-05-13 11:55:57 +00:00
Earl Warren
186cb13b26 Merge pull request 'Port "Fix project name wrapping, remove horizontal margin on header"' (#3730) from 0ko/forgejo:wrappp into v7.0/forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3730
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
2024-05-12 13:46:38 +00:00
0ko
9673355bf3 Port "Fix project name wrapping, remove horizontal margin on header"
Port of 370b1bdb37.
2024-05-12 17:37:36 +05:00
Earl Warren
0bba3e2158 Merge pull request '[v7.0/forgejo] Add class tw-break-anywhere' (#3720) from bp-v7.0/forgejo-b45fbe1 into v7.0/forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3720
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
2024-05-12 10:48:49 +00:00
0ko
6334a48043 Add class tw-break-anywhere
very partial port of 9946353282 (diff-38f10be6b48c74bcacbf9f6e15cc8582a45b7a6cbd1cdd8efec8e592575290c5) to fix a few picked areas where lack of it causes bugs.

(cherry picked from commit b45fbe1dcc296252b5c9927e401acd7670800572)
2024-05-11 18:13:28 +00:00
Earl Warren
ba1f73f550 Merge pull request '[v7.0/forgejo] templates: Be more forgiving about missing package metadata' (#3705) from bp-v7.0/forgejo-ac4d535 into v7.0/forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3705
Reviewed-by: Gergely Nagy <algernon@noreply.codeberg.org>
2024-05-10 18:47:36 +00:00
Gergely Nagy
00cfe9aef9 templates: Be more forgiving about missing package metadata
When rendering templates for packages, be more forgiving about missing
metadata. For some repository types - like maven - metadata is uploaded
separately. If that upload fails, or does not happen, there will be no
metadata.

In that case, Forgejo should handle it gracefully, and render as much of
the information as possible, without erroring out. Rendering without
metadata allows one to delete a partial package, while if we throw
errors, that becomes a whole lot harder.

This patch adjusts the generic metadata template, and also the maven
template. There may be more cases of the same problem lying around.

Fixes #3663.

Signed-off-by: Gergely Nagy <forgejo@gergo.csillger.hu>
(cherry picked from commit ac4d535dbf6b669997dd01560e692dd215b1321b)
2024-05-10 18:10:25 +00:00
Earl Warren
d8fda28dfc Merge pull request '[v7.0/forgejo] Fix some 7.0 missing variables' (#3688) from bp-v7.0/forgejo-0dc35c9 into v7.0/forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3688
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
2024-05-09 19:30:27 +00:00
Earl Warren
7afee47817 Merge pull request '[v7.0/forgejo] Teach activities.GetFeeds() how to avoid returning duplicates' (#3687) from bp-v7.0/forgejo-9cb2aa9 into v7.0/forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3687
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
2024-05-09 19:29:39 +00:00
0ko
887c050ea3 [THEME] Fix some 7.0 missing variables
(cherry picked from commit 0dc35c9df96f024e147291c17dec5242c13ecfb4)
2024-05-09 18:52:33 +00:00
Gergely Nagy
9ba48419ba Teach activities.GetFeeds() how to avoid returning duplicates
Before explaining the fix itself, lets look at the `action` table, and
how it is populated. Data is only ever inserted into it via
`activities_model.NotifyWatchers`, which will:

- Insert a row for each activity with `UserID` set to the acting user's
  ID - this is the original activity, and is always inserted if anything
  is to be inserted at all.
- It will insert a copy of each activity with the `UserID` set to the
  repo's owner, if the owner is an Organization, and isn't the acting
  user.
- It will insert a copy of each activity for every watcher of the repo,
  as long as the watcher in question has read permission to the repo
  unit the activity is about.

This means that if a repository belongs to an organizations, for most
activities, it will have at least two rows in the table. For
repositories watched by people other than their owner, an additional row
for each watcher.

These are useful duplicates, because they record which activities are
relevant for a particular user. However, for cases where we wish to see
the activities that happen around a repository, without limiting the
results to a particular user, we're *not* interested in the duplicates
stored for the watchers and the org. We only need the originals.

And this is what this change does: it introduces an additional option to
`GetFeedsOptions`: `OnlyPerformedByActor`. When this option is set,
`activities.GetFeeds()` will only return the original activities, where
the user id and the acting user id are the same. As these are *always*
inserted, we're not missing out on any activities. We're just getting
rid of the duplicates. As this is an additional `AND` condition, it can
never introduce items that would not have been included in the result
set before, it can only reduce, not extend.

These duplicates were only affecting call sites where `RequestedRepo`
was set, but `RequestedUser` and `RequestedTeam` were not. Both of those
call sites were updated to set `OnlyPerformedByActor`. As a result,
repository RSS feeds, and the `/repos/{owner}/{repo}/activities/feeds`
API end points no longer return dupes, only the original activities.

Rather than hardcoding this behaviour into `GetFeeds()` itself, I chose
to implement it as an explicit option, for the sake of clarity.

Fixes Codeberg/Community#684, and addresses gitea#20986.

Signed-off-by: Gergely Nagy <forgejo@gergo.csillger.hu>
(cherry picked from commit 9cb2aa989a4c331f9085126e5a88b5095b45ae54)
2024-05-09 18:37:30 +00:00
Earl Warren
283b678146 Merge pull request '[v7.0/forgejo] Fix an incorrect form submission in repo-issue.js' (#3677) from bp-v7.0/forgejo-f4dd53d into v7.0/forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3677
Reviewed-by: Gergely Nagy <algernon@noreply.codeberg.org>
2024-05-08 21:49:06 +00:00
Gergely Nagy
b6be9fb901 Fix an incorrect form submission in repo-issue.js (#3675)
This fixes `initRepoPullRequestAllowMaintainerEdit()` to submit the form correctly (as a web form, rather than as JSON payload).

Fixes #3618, cherry picked from gitea#30854.

Co-Authored-By: wxiaoguang <wxiaoguang@gmail.com>

---

Manual testing steps:

- Open a PR against any repository, with the "Allow edits from maintainers" option checked.
- Open the developer console (`Ctrl-Shift-I` on Firefox), and look at the Network tab.
- Visit the PR, find the "Allow edits from maintainers" checkbox, and click it.
- See the developer console, and check that the response says the setting is false.
- Refresh the page *completely* (`Ctrl-Shift-R` on Firefox)
- Observe that the setting is off.
- Click the box again to enable it.
- See the developer console, and check that the response says the setting is true.
- Reload without cache again (`Ctrl-Shift-R` on Firefox)
- Observe that the setting is now on.

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3675
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: Gergely Nagy <forgejo@gergo.csillger.hu>
Co-committed-by: Gergely Nagy <forgejo@gergo.csillger.hu>
(cherry picked from commit f4dd53d79dda7481cd29634727cd8e2caae8d7fe)
2024-05-08 21:16:08 +00:00
Earl Warren
767d292c83 Merge pull request '[v7.0/forgejo] Cumulative English improvements (May 2024)' (#3674) from bp-v7.0/forgejo-b11eddf into v7.0/forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3674
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
2024-05-08 19:16:24 +00:00
0ko
8d3c6251a7 [I18N] English improvements (May 2024)
- `editor.commit_id_not_matching` was reported by https://codeberg.org/kita. I confirmed the meaning on next.forgejo.org.
- `additional_repo_units_hint` was suggested by https://codeberg.org/leana8959.

(cherry picked from commit b11eddfaa83b1d27b864c50de1c82dbbcb293f4f)
2024-05-08 17:09:24 +00:00
Earl Warren
94ce24cf92 Merge pull request '[v7.0/forgejo] fix(security): CVE-2024-24788 malformed DNS message' (#3673) from bp-v7.0/forgejo-f3045f0 into v7.0/forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3673
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
2024-05-08 17:02:19 +00:00
Earl Warren
696ed328fb fix(security): CVE-2024-24788 malformed DNS message
Refs: https://pkg.go.dev/vuln/GO-2024-2824
(cherry picked from commit f3045f0519e0b072dbc574372179267ebe175a79)
2024-05-08 14:47:59 +00:00
Earl Warren
dd3487dbbf Merge pull request '[v1.22/gitea] week 2024-19 cherry pick v7.0' (#3659) from earl-warren/forgejo:wip-v7.0-gitea-cherry-pick into v7.0/forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3659
Reviewed-by: Gergely Nagy <algernon@noreply.codeberg.org>
2024-05-07 22:48:50 +00:00
Earl Warren
18249e58be Merge pull request '[v7.0/forgejo] Update module gitea.com/go-chi/binding to v0.0.0-20240430071103-39a851e106ed' (#3660) from earl-warren/forgejo:wip-v7.0-chi-binding into v7.0/forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3660
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
2024-05-07 08:56:40 +00:00
Earl Warren
f8a3482cdb
Update module gitea.com/go-chi/binding to v0.0.0-20240430071103-39a851e106ed
(cherry picked from commit 58bf120ebaad4b1ffc3d839d8e4073d6858becf4)

Conflicts: trivial context conflicts
2024-05-07 08:35:25 +01:00
yp05327
da993b09ad
Fix no edit history after editing issue's title and content (#30814)
Fix #30807

reuse functions in services

(cherry picked from commit a50026e2f30897904704895362da0fb12c7e5b26)

Conflicts:
	models/issues/issue_update.go
	routers/api/v1/repo/issue.go
	trivial context conflict because of 'allow setting the update date on issues and comments'
(cherry picked from commit 6a4bc0289db5d5d791864f45ed9bb47b6bc8d2fe)
2024-05-07 08:21:38 +01:00
Kemal Zebari
6ae15bc15e
Don't only list code-enabled repositories when using repository API (#30817)
We should be listing all repositories by default.

Fixes #28483.

(cherry picked from commit 9f0ef3621a3b63ccbe93f302a446b67dc54ad725)

Conflict:
   -		if ctx.IsSigned && ctx.Doer.IsAdmin || permission.UnitAccessMode(unit_model.TypeCode) >= perm.AccessModeRead {
   +		if ctx.IsSigned && ctx.Doer.IsAdmin || permission.HasAccess() {
   because of https://codeberg.org/forgejo/forgejo/pulls/2001
(cherry picked from commit e388822e9dc6bfe59df06c7b2008cba517f908fc)
2024-05-07 08:17:35 +01:00
Giteabot
f30c648037
Ignore useless error message "broken pipe" (#30801) (#30842)
Backport #30801 by wxiaoguang

Fix #30792

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
(cherry picked from commit ab2ef1ae49bc5e81d0debac85aee687a64fde8b3)
2024-05-07 08:15:36 +01:00
Giteabot
248a5b8d7a
Prevent automatic OAuth grants for public clients (#30790) (#30836)
Backport #30790 by archer-321

This commit forces the resource owner (user) to always approve OAuth 2.0
authorization requests if the client is public (e.g. native
applications).

As detailed in [RFC 6749 Section
10.2](https://www.rfc-editor.org/rfc/rfc6749.html#section-10.2),

> The authorization server SHOULD NOT process repeated authorization
requests automatically (without active resource owner interaction)
without authenticating the client or relying on other measures to ensure
that the repeated request comes from the original client and not an
impersonator.

With the implementation prior to this patch, attackers with access to
the redirect URI (e.g., the loopback interface for
`git-credential-oauth`) can get access to the user account without any
user interaction if they can redirect the user to the
`/login/oauth/authorize` endpoint somehow (e.g., with `xdg-open` on
Linux).

Fixes #25061.

Co-authored-by: Archer <archer@beezig.eu>
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
(cherry picked from commit 6d83f5eddc0f394f6386e80b86a3221f6f4925ff)
2024-05-07 08:14:22 +01:00
Kemal Zebari
5678e9ab20
Catch and handle unallowed file type errors in issue attachment API (#30791)
Before, we would just throw 500 if a user passes an attachment that is
not an allowed type. This commit catches this error and throws a 422
instead since this should be considered a validation error.

(cherry picked from commit 872caa17c0a30d95f85ab75c068d606e07bd10b3)

Conflicts:
	tests/integration/api_comment_attachment_test.go
	tests/integration/api_issue_attachment_test.go
	trivial context conflict because of 'allow setting the update date on issues and comments'
(cherry picked from commit 9cd0441cd384f7fbff8e973182c6094270e7f97e)
2024-05-07 08:12:34 +01:00
silverwind
a7124df0c5
Add hover outline to heatmap squares (#30828)
Makes it easier to use because you see which square is currently
hovered:

<img width="314" alt="Screenshot 2024-05-02 at 15 38 20"
src="https://github.com/go-gitea/gitea/assets/115237/3a15dad1-2259-4f28-9fae-5cf6ad3d8798">

I did try a `scoped` style for this, but that did not work for some
reason.

(cherry picked from commit 6f89d5e3a0886d02ead732005f593ae003f78f78)
2024-05-07 08:09:44 +01:00
wxiaoguang
abf40ee957
Skip gzip for some well-known compressed file types (#30796)
Co-authored-by: silverwind <me@silverwind.io>
(cherry picked from commit be112c1fc30f87a248b30f48e891d1c8c18e8280)

Conflicts:
	routers/web/web.go
	trivial conflict because of https://codeberg.org/forgejo/forgejo/pulls/1533
(cherry picked from commit 4e35e5b8ae2bf01694bca76bd6fbee9c58934388)
2024-05-07 07:59:45 +01:00
Earl Warren
7be345f88e Merge pull request '[v7.0/forgejo] Improve repo filter names' (#3641) from bp-v7.0/forgejo-82f7308 into v7.0/forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3641
Reviewed-by: 0ko <0ko@noreply.codeberg.org>
2024-05-05 14:49:03 +00:00
0ko
8b1d84797f [I18N] Improve repo filter names
(cherry picked from commit 82f7308e1b37b5be311d86bb763de8c43b7d20fa)
2024-05-05 12:15:56 +00:00
Earl Warren
ba0ed5823c Merge pull request '[UI] Fix commit messages breaking out of event history' (#3640) from 0ko/forgejo:ui-fix-break-out into v7.0/forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3640
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
2024-05-05 12:12:09 +00:00
0ko
e59f92dec8 [UI] Fix commit messages breaking out of event history
Regression of 8b54d38cbe.
This is 7.0 specific path for the issue. The design of this area is not compatible with 8.0, and thus there's no startightforward way to make it look like on 8.0.
2024-05-05 15:40:25 +05:00
forgejo-backport-action
10b919d3ca [v7.0/forgejo] [I18N] Translations update from Weblate (#3631)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/3508

Translations update from [Weblate](https://translate.codeberg.org) for [Forgejo/forgejo](https://translate.codeberg.org/projects/forgejo/forgejo/).

Co-authored-by: Codeberg Translate <translate@noreply.codeberg.org>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3631
Reviewed-by: 0ko <0ko@noreply.codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2024-05-04 19:24:41 +00:00
Earl Warren
f45a6cb3b7 Merge pull request '[v7.0/forgejo] FIX gogs migration if gogs is hosted at a subpath' (#3588) from bp-v7.0/forgejo-4a2959b into v7.0/forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3588
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
2024-05-03 17:17:00 +00:00
Otto
5b6a375d05 Merge pull request '[v7.0/forgejo] Fix text selection color' (#3611) from bp-v7.0/forgejo-787b16a into v7.0/forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3611
Reviewed-by: Otto <otto@codeberg.org>
2024-05-02 22:06:17 +00:00
Earl Warren
ac34a68a93 Merge pull request 'Port Fix checkbox field markup' (#3592) from 0ko/forgejo:a-commit into v7.0/forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3592
Reviewed-by: Otto <otto@codeberg.org>
2024-05-02 18:10:20 +00:00
0ko
b23d4ec4bb [THEME] fix text selection color
regression of c2280a2009

(cherry picked from commit 787b16a7bef60ce53fcd7ccfd61acdf9e7b3c6e0)
2024-05-02 17:46:07 +00:00
silverwind
b917571d81 Fix checkbox field markup (#30666)
Fixes https://github.com/go-gitea/gitea/issues/30664.

Previous use was not a supported way by fomantic and the misuse only
became visible after the checkbox migration.

(cherry picked from commit 1a2ae64b16f10b8d1e17197d18b9eb373faf58db)
2024-05-01 23:31:42 +05:00
varp0n
c91f7d3599 FIX gogs migration if gogs is hosted at a subpath (#3572)
Also add a test for GogsDownloaderFactory.New() to make sure
that the URL of the source repository is parsed correctly.

When the source gogs instance is hosted at a subpath like `https://git.example.com/gogs/<username>/<reponame>` the migration fails.
This PR fixes that.

Co-authored-by: hecker <tomas.hecker@gmail.com>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3572
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: varp0n <tom@gkstn.de>
Co-committed-by: varp0n <tom@gkstn.de>
(cherry picked from commit 4a2959b3ec214a954d6b144f0fb9efb848129c8c)
2024-05-01 16:32:17 +00:00
173 changed files with 3109 additions and 1785 deletions

View file

@ -179,7 +179,6 @@ package "code.gitea.io/gitea/modules/git"
func (ErrExecTimeout).Error
func (ErrUnsupportedVersion).Error
func SetUpdateHook
func GetObjectFormatOfRepo
func openRepositoryWithDefaultContext
func IsTagExist
func ToEntryMode
@ -315,8 +314,6 @@ package "code.gitea.io/gitea/routers/web"
package "code.gitea.io/gitea/routers/web/org"
func MustEnableProjects
func getActionIssues
func UpdateIssueProject
package "code.gitea.io/gitea/services/context"
func GetPrivateContext

View file

@ -26,3 +26,6 @@ indent_style = tab
[*.svg]
insert_final_newline = false
[options/locale/locale_*.ini]
insert_final_newline = false

View file

@ -89,10 +89,10 @@ RUN addgroup \
-s /bin/bash \
-u 1000 \
-G git \
git && \
echo "git:*" | chpasswd -e
_gitea && \
echo "_gitea:*" | chpasswd -e
ENV USER git
ENV USER _gitea
ENV GITEA_CUSTOM /data/gitea
VOLUME ["/data"]

View file

@ -82,7 +82,7 @@ endif
STORED_VERSION_FILE := VERSION
HUGO_VERSION ?= 0.111.3
GITEA_COMPATIBILITY ?= gitea-1.22.0
GITEA_COMPATIBILITY ?= gitea-1.21.11
STORED_VERSION=$(shell cat $(STORED_VERSION_FILE) 2>/dev/null)
ifneq ($(STORED_VERSION),)

File diff suppressed because one or more lines are too long

View file

@ -316,12 +316,12 @@ func runHookUpdate(c *cli.Context) error {
return nil
}
// Deletion of the ref means that the new commit ID is only composed of '0'.
if strings.ContainsFunc(newCommitID, func(e rune) bool { return e != '0' }) {
return nil
// Empty new commit ID means deletion.
if git.IsEmptyCommitID(newCommitID, nil) {
return fail(ctx, fmt.Sprintf("The deletion of %s is skipped as it's an internal reference.", refFullName), "")
}
return fail(ctx, fmt.Sprintf("The deletion of %s is skipped as it's an internal reference.", refFullName), "")
return nil
}
func runHookPostReceive(c *cli.Context) error {
@ -366,6 +366,7 @@ Forgejo or set your environment appropriately.`, "")
isWiki, _ := strconv.ParseBool(os.Getenv(repo_module.EnvRepoIsWiki))
repoName := os.Getenv(repo_module.EnvRepoName)
pusherID, _ := strconv.ParseInt(os.Getenv(repo_module.EnvPusherID), 10, 64)
prID, _ := strconv.ParseInt(os.Getenv(repo_module.EnvPRID), 10, 64)
pusherName := os.Getenv(repo_module.EnvPusherName)
hookOptions := private.HookOptions{
@ -375,6 +376,8 @@ Forgejo or set your environment appropriately.`, "")
GitObjectDirectory: os.Getenv(private.GitObjectDirectory),
GitQuarantinePath: os.Getenv(private.GitQuarantinePath),
GitPushOptions: pushOptions(),
PullRequestID: prID,
PushTrigger: repo_module.PushTrigger(os.Getenv(repo_module.EnvPushTrigger)),
}
oldCommitIDs := make([]string, hookBatchSize)
newCommitIDs := make([]string, hookBatchSize)
@ -402,8 +405,7 @@ Forgejo or set your environment appropriately.`, "")
newCommitIDs[count] = string(fields[1])
refFullNames[count] = git.RefName(fields[2])
commitID, _ := git.NewIDFromString(newCommitIDs[count])
if refFullNames[count] == git.BranchPrefix+"master" && !commitID.IsZero() && count == total {
if refFullNames[count] == git.BranchPrefix+"master" && !git.IsEmptyCommitID(newCommitIDs[count], nil) && count == total {
masterPushed = true
}
count++
@ -694,8 +696,7 @@ Forgejo or set your environment appropriately.`, "")
if err != nil {
return err
}
commitID, _ := git.NewIDFromString(rs.OldOID)
if !commitID.IsZero() {
if !git.IsEmptyCommitID(rs.OldOID, nil) {
err = writeDataPktLine(ctx, os.Stdout, []byte("option old-oid "+rs.OldOID))
if err != nil {
return err

View file

@ -34,7 +34,7 @@ var CmdMigrateStorage = &cli.Command{
Name: "type",
Aliases: []string{"t"},
Value: "",
Usage: "Type of stored files to copy. Allowed types: 'attachments', 'lfs', 'avatars', 'repo-avatars', 'repo-archivers', 'packages', 'actions-log'",
Usage: "Type of stored files to copy. Allowed types: 'attachments', 'lfs', 'avatars', 'repo-avatars', 'repo-archivers', 'packages', 'actions-log', 'actions-artifacts",
},
&cli.StringFlag{
Name: "storage",
@ -160,6 +160,13 @@ func migrateActionsLog(ctx context.Context, dstStorage storage.ObjectStorage) er
})
}
func migrateActionsArtifacts(ctx context.Context, dstStorage storage.ObjectStorage) error {
return db.Iterate(ctx, nil, func(ctx context.Context, artifact *actions_model.ActionArtifact) error {
_, err := storage.Copy(dstStorage, artifact.ArtifactPath, storage.ActionsArtifacts, artifact.ArtifactPath)
return err
})
}
func runMigrateStorage(ctx *cli.Context) error {
stdCtx, cancel := installSignals()
defer cancel()
@ -230,6 +237,7 @@ func runMigrateStorage(ctx *cli.Context) error {
"repo-archivers": migrateRepoArchivers,
"packages": migratePackages,
"actions-log": migrateActionsLog,
"actions-artifacts": migrateActionsArtifacts,
}
tp := strings.ToLower(ctx.String("type"))

6
go.mod
View file

@ -1,14 +1,15 @@
module code.gitea.io/gitea
go 1.22.2
go 1.22.3
require (
code.forgejo.org/forgejo/reply v1.0.1
code.gitea.io/actions-proto-go v0.4.0
code.gitea.io/gitea-vet v0.2.3
code.gitea.io/sdk/gitea v0.17.1
codeberg.org/gusted/mcaptcha v0.0.0-20220723083913-4f3072e1d570
connectrpc.com/connect v1.15.0
gitea.com/go-chi/binding v0.0.0-20230415142243-04b515c6d669
gitea.com/go-chi/binding v0.0.0-20240430071103-39a851e106ed
gitea.com/go-chi/cache v0.2.0
gitea.com/go-chi/captcha v0.0.0-20240315150714-fb487f629098
gitea.com/go-chi/session v0.0.0-20240316035857-16768d98ec96
@ -23,7 +24,6 @@ require (
github.com/caddyserver/certmagic v0.20.0
github.com/chi-middleware/proxy v1.1.1
github.com/denisenkom/go-mssqldb v0.12.3
github.com/dimiro1/reply v0.0.0-20200315094148-d0136a4c9e21
github.com/djherbis/buffer v1.2.0
github.com/djherbis/nio/v3 v3.0.1
github.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5

10
go.sum
View file

@ -35,6 +35,8 @@ cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0Zeo
cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
code.forgejo.org/forgejo/reply v1.0.1 h1:usZi5yx7/g0D+xtGPJEM6mCvoDNdWvmtJu5J9/B/KBI=
code.forgejo.org/forgejo/reply v1.0.1/go.mod h1:RyZUfzQLc+fuLIGjTSQWDAJWPiL4WtKXB/FifT5fM7U=
code.gitea.io/actions-proto-go v0.4.0 h1:OsPBPhodXuQnsspG1sQ4eRE1PeoZyofd7+i73zCwnsU=
code.gitea.io/actions-proto-go v0.4.0/go.mod h1:mn7Wkqz6JbnTOHQpot3yDeHx+O5C9EGhMEE+htvHBas=
code.gitea.io/gitea-vet v0.2.3 h1:gdFmm6WOTM65rE8FUBTRzeQZYzXePKSSB1+r574hWwI=
@ -54,8 +56,8 @@ git.sr.ht/~mariusor/go-xsd-duration v0.0.0-20220703122237-02e73435a078 h1:cliQ4H
git.sr.ht/~mariusor/go-xsd-duration v0.0.0-20220703122237-02e73435a078/go.mod h1:g/V2Hjas6Z1UHUp4yIx6bATpNzJ7DYtD0FG3+xARWxs=
gitea.com/gitea/act v0.259.1 h1:8GG1o/xtUHl3qjn5f0h/2FXrT5ubBn05TJOM5ry+FBw=
gitea.com/gitea/act v0.259.1/go.mod h1:UxZWRYqQG2Yj4+4OqfGWW5a3HELwejyWFQyU7F1jUD8=
gitea.com/go-chi/binding v0.0.0-20230415142243-04b515c6d669 h1:RUBX+MK/TsDxpHmymaOaydfigEbbzqUnG1OTZU/HAeo=
gitea.com/go-chi/binding v0.0.0-20230415142243-04b515c6d669/go.mod h1:77TZu701zMXWJFvB8gvTbQ92zQ3DQq/H7l5wAEjQRKc=
gitea.com/go-chi/binding v0.0.0-20240430071103-39a851e106ed h1:EZZBtilMLSZNWtHHcgq2mt6NSGhJSZBuduAlinMEmso=
gitea.com/go-chi/binding v0.0.0-20240430071103-39a851e106ed/go.mod h1:E3i3cgB04dDx0v3CytCgRTTn9Z/9x891aet3r456RVw=
gitea.com/go-chi/cache v0.2.0 h1:E0npuTfDW6CT1yD8NMDVc1SK6IeRjfmRL2zlEsCEd7w=
gitea.com/go-chi/cache v0.2.0/go.mod h1:iQlVK2aKTZ/rE9UcHyz9pQWGvdP9i1eI2spOpzgCrtE=
gitea.com/go-chi/captcha v0.0.0-20240315150714-fb487f629098 h1:p2ki+WK0cIeNQuqjR98IP2KZQKRzJJiV7aTeMAFwaWo=
@ -224,8 +226,6 @@ github.com/denisenkom/go-mssqldb v0.12.3 h1:pBSGx9Tq67pBOTLmxNuirNTeB8Vjmf886Kx+
github.com/denisenkom/go-mssqldb v0.12.3/go.mod h1:k0mtMFOnU+AihqFxPMiF05rtiDrorD1Vrm1KEz5hxDo=
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78=
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
github.com/dimiro1/reply v0.0.0-20200315094148-d0136a4c9e21 h1:PdsjTl0Cg+ZJgOx/CFV5NNgO1ThTreqdgKYiDCMHJwA=
github.com/dimiro1/reply v0.0.0-20200315094148-d0136a4c9e21/go.mod h1:xJvkyD6Y2rZapGvPJLYo9dyx1s5dxBEDPa8T3YTuOk0=
github.com/djherbis/buffer v1.1.0/go.mod h1:VwN8VdFkMY0DCALdY8o00d3IZ6Amz/UNVMWcSaJT44o=
github.com/djherbis/buffer v1.2.0 h1:PH5Dd2ss0C7CRRhQCZ2u7MssF+No9ide8Ye71nPHcrQ=
github.com/djherbis/buffer v1.2.0/go.mod h1:fjnebbZjCUpPinBRD+TDwXSOeNQ7fPQWLfGQqiAiUyE=
@ -287,7 +287,6 @@ github.com/go-ap/jsonld v0.0.0-20221030091449-f2a191312c73/go.mod h1:jyveZeGw5La
github.com/go-asn1-ber/asn1-ber v1.5.5 h1:MNHlNMBDgEKD4TcKr36vQN68BA00aDfjIt3/bD50WnA=
github.com/go-asn1-ber/asn1-ber v1.5.5/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0=
github.com/go-chi/chi/v5 v5.0.1/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
github.com/go-chi/chi/v5 v5.0.4/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
github.com/go-chi/chi/v5 v5.0.11 h1:BnpYbFZ3T3S1WMpD79r7R5ThWX40TaFB7L31Y8xqSwA=
github.com/go-chi/chi/v5 v5.0.11/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
github.com/go-chi/cors v1.2.1 h1:xEC8UT3Rlp2QuWNEr4Fs/c2EAGVKBwy/1vHx3bppil4=
@ -362,7 +361,6 @@ github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJA
github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM=
github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw=
github.com/gobwas/ws v1.2.1/go.mod h1:hRKAFb8wOxFROYNsT1bqfWnhX+b5MFeJM9r2ZSwg/KY=
github.com/goccy/go-json v0.9.5/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
github.com/goccy/go-json v0.9.6/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU=
github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=

View file

@ -326,15 +326,18 @@ func GetLatestRun(ctx context.Context, repoID int64) (*ActionRun, error) {
func GetLatestRunForBranchAndWorkflow(ctx context.Context, repoID int64, branch, workflowFile, event string) (*ActionRun, error) {
var run ActionRun
q := db.GetEngine(ctx).Where("repo_id=?", repoID).And("ref=?", branch).And("workflow_id=?", workflowFile)
q := db.GetEngine(ctx).Where("repo_id=?", repoID).And("workflow_id=?", workflowFile)
if event != "" {
q = q.And("event=?", event)
}
if branch != "" {
q = q.And("ref=?", branch)
}
has, err := q.Desc("id").Get(&run)
if err != nil {
return nil, err
} else if !has {
return nil, util.NewNotExistErrorf("run with repo_id %d, ref %s, workflow_id %s", repoID, branch, workflowFile)
return nil, util.NewNotExistErrorf("run with repo_id %d, ref %s, event %s, workflow_id %s", repoID, branch, event, workflowFile)
}
return &run, nil
}

View file

@ -437,6 +437,7 @@ type GetFeedsOptions struct {
Actor *user_model.User // the user viewing the activity
IncludePrivate bool // include private actions
OnlyPerformedBy bool // only actions performed by requested user
OnlyPerformedByActor bool // only actions performed by the original actor
IncludeDeleted bool // include deleted actions
Date string // the day we want activity for: YYYY-MM-DD
}
@ -481,6 +482,10 @@ func ActivityReadable(user, doer *user_model.User) bool {
func activityQueryCondition(ctx context.Context, opts GetFeedsOptions) (builder.Cond, error) {
cond := builder.NewCond()
if opts.OnlyPerformedByActor {
cond = cond.And(builder.Expr("`action`.user_id = `action`.act_user_id"))
}
if opts.RequestedTeam != nil && opts.RequestedUser == nil {
org, err := user_model.GetUserByID(ctx, opts.RequestedTeam.OrgID)
if err != nil {

View file

@ -59,6 +59,7 @@ type Engine interface {
SumInt(bean any, columnName string) (res int64, err error)
Sync(...any) error
Select(string) *xorm.Session
SetExpr(string, any) *xorm.Session
NotIn(string, ...any) *xorm.Session
OrderBy(any, ...any) *xorm.Session
Exist(...any) (bool, error)

View file

@ -5,11 +5,11 @@ package issues
import (
"context"
"fmt"
"code.gitea.io/gitea/models/db"
project_model "code.gitea.io/gitea/models/project"
user_model "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/modules/util"
)
// LoadProject load the project the issue was assigned to
@ -90,22 +90,10 @@ func LoadIssuesFromBoardList(ctx context.Context, bs project_model.BoardList) (m
return issuesMap, nil
}
// ChangeProjectAssign changes the project associated with an issue
func ChangeProjectAssign(ctx context.Context, issue *Issue, doer *user_model.User, newProjectID int64) error {
ctx, committer, err := db.TxContext(ctx)
if err != nil {
return err
}
defer committer.Close()
if err := addUpdateIssueProject(ctx, issue, doer, newProjectID); err != nil {
return err
}
return committer.Commit()
}
func addUpdateIssueProject(ctx context.Context, issue *Issue, doer *user_model.User, newProjectID int64) error {
// IssueAssignOrRemoveProject changes the project associated with an issue
// If newProjectID is 0, the issue is removed from the project
func IssueAssignOrRemoveProject(ctx context.Context, issue *Issue, doer *user_model.User, newProjectID, newColumnID int64) error {
return db.WithTx(ctx, func(ctx context.Context) error {
oldProjectID := issue.projectID(ctx)
if err := issue.LoadRepo(ctx); err != nil {
@ -118,8 +106,15 @@ func addUpdateIssueProject(ctx context.Context, issue *Issue, doer *user_model.U
if err != nil {
return err
}
if newProject.RepoID != issue.RepoID && newProject.OwnerID != issue.Repo.OwnerID {
return fmt.Errorf("issue's repository is not the same as project's repository")
if !newProject.CanBeAccessedByOwnerRepo(issue.Repo.OwnerID, issue.Repo) {
return util.NewPermissionDeniedErrorf("issue %d can't be accessed by project %d", issue.ID, newProject.ID)
}
if newColumnID == 0 {
newDefaultColumn, err := newProject.GetDefaultBoard(ctx)
if err != nil {
return err
}
newColumnID = newDefaultColumn.ID
}
}
@ -139,9 +134,29 @@ func addUpdateIssueProject(ctx context.Context, issue *Issue, doer *user_model.U
return err
}
}
if newProjectID == 0 {
return nil
}
if newColumnID == 0 {
panic("newColumnID must not be zero") // shouldn't happen
}
res := struct {
MaxSorting int64
IssueCount int64
}{}
if _, err := db.GetEngine(ctx).Select("max(sorting) as max_sorting, count(*) as issue_count").Table("project_issue").
Where("project_id=?", newProjectID).
And("project_board_id=?", newColumnID).
Get(&res); err != nil {
return err
}
newSorting := util.Iif(res.IssueCount > 0, res.MaxSorting+1, 0)
return db.Insert(ctx, &project_model.ProjectIssue{
IssueID: issue.ID,
ProjectID: newProjectID,
ProjectBoardID: newColumnID,
Sorting: newSorting,
})
})
}

View file

@ -450,65 +450,6 @@ func UpdateIssueMentions(ctx context.Context, issueID int64, mentions []*user_mo
return nil
}
// UpdateIssueByAPI updates all allowed fields of given issue.
// If the issue status is changed a statusChangeComment is returned
// similarly if the title is changed the titleChanged bool is set to true
func UpdateIssueByAPI(ctx context.Context, issue *Issue, doer *user_model.User) (statusChangeComment *Comment, titleChanged bool, err error) {
ctx, committer, err := db.TxContext(ctx)
if err != nil {
return nil, false, err
}
defer committer.Close()
if err := issue.LoadRepo(ctx); err != nil {
return nil, false, fmt.Errorf("loadRepo: %w", err)
}
// Reload the issue
currentIssue, err := GetIssueByID(ctx, issue.ID)
if err != nil {
return nil, false, err
}
sess := db.GetEngine(ctx).ID(issue.ID)
cols := []string{"name", "content", "milestone_id", "priority", "deadline_unix", "is_locked"}
if issue.NoAutoTime {
cols = append(cols, "updated_unix")
sess.NoAutoTime()
}
if _, err := sess.Cols(cols...).Update(issue); err != nil {
return nil, false, err
}
titleChanged = currentIssue.Title != issue.Title
if titleChanged {
opts := &CreateCommentOptions{
Type: CommentTypeChangeTitle,
Doer: doer,
Repo: issue.Repo,
Issue: issue,
OldTitle: currentIssue.Title,
NewTitle: issue.Title,
}
_, err := CreateComment(ctx, opts)
if err != nil {
return nil, false, fmt.Errorf("createComment: %w", err)
}
}
if currentIssue.IsClosed != issue.IsClosed {
statusChangeComment, err = doChangeIssueStatus(ctx, issue, doer, false)
if err != nil {
return nil, false, err
}
}
if err := issue.AddCrossReferences(ctx, doer, true); err != nil {
return nil, false, err
}
return statusChangeComment, titleChanged, committer.Commit()
}
// UpdateIssueDeadline updates an issue deadline and adds comments. Setting a deadline to 0 means deleting it.
func UpdateIssueDeadline(ctx context.Context, issue *Issue, deadlineUnix timeutil.TimeStamp, doer *user_model.User) (err error) {
// if the deadline hasn't changed do nothing

View file

@ -5,12 +5,14 @@ package project
import (
"context"
"errors"
"fmt"
"regexp"
"code.gitea.io/gitea/models/db"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/timeutil"
"code.gitea.io/gitea/modules/util"
"xorm.io/builder"
)
@ -82,6 +84,17 @@ func (b *Board) NumIssues(ctx context.Context) int {
return int(c)
}
func (b *Board) GetIssues(ctx context.Context) ([]*ProjectIssue, error) {
issues := make([]*ProjectIssue, 0, 5)
if err := db.GetEngine(ctx).Where("project_id=?", b.ProjectID).
And("project_board_id=?", b.ID).
OrderBy("sorting, id").
Find(&issues); err != nil {
return nil, err
}
return issues, nil
}
func init() {
db.RegisterModel(new(Board))
}
@ -152,12 +165,27 @@ func createBoardsForProjectsType(ctx context.Context, project *Project) error {
return db.Insert(ctx, boards)
}
// maxProjectColumns max columns allowed in a project, this should not bigger than 127
// because sorting is int8 in database
const maxProjectColumns = 20
// NewBoard adds a new project board to a given project
func NewBoard(ctx context.Context, board *Board) error {
if len(board.Color) != 0 && !BoardColorPattern.MatchString(board.Color) {
return fmt.Errorf("bad color code: %s", board.Color)
}
res := struct {
MaxSorting int64
ColumnCount int64
}{}
if _, err := db.GetEngine(ctx).Select("max(sorting) as max_sorting, count(*) as column_count").Table("project_board").
Where("project_id=?", board.ProjectID).Get(&res); err != nil {
return err
}
if res.ColumnCount >= maxProjectColumns {
return fmt.Errorf("NewBoard: maximum number of columns reached")
}
board.Sorting = int8(util.Iif(res.ColumnCount > 0, res.MaxSorting+1, 0))
_, err := db.GetEngine(ctx).Insert(board)
return err
}
@ -191,7 +219,17 @@ func deleteBoardByID(ctx context.Context, boardID int64) error {
return fmt.Errorf("deleteBoardByID: cannot delete default board")
}
if err = board.removeIssues(ctx); err != nil {
// move all issues to the default column
project, err := GetProjectByID(ctx, board.ProjectID)
if err != nil {
return err
}
defaultColumn, err := project.GetDefaultBoard(ctx)
if err != nil {
return err
}
if err = board.moveIssuesToAnotherColumn(ctx, defaultColumn); err != nil {
return err
}
@ -244,21 +282,15 @@ func UpdateBoard(ctx context.Context, board *Board) error {
// GetBoards fetches all boards related to a project
func (p *Project) GetBoards(ctx context.Context) (BoardList, error) {
boards := make([]*Board, 0, 5)
if err := db.GetEngine(ctx).Where("project_id=? AND `default`=?", p.ID, false).OrderBy("sorting").Find(&boards); err != nil {
if err := db.GetEngine(ctx).Where("project_id=?", p.ID).OrderBy("sorting, id").Find(&boards); err != nil {
return nil, err
}
defaultB, err := p.getDefaultBoard(ctx)
if err != nil {
return nil, err
}
return append([]*Board{defaultB}, boards...), nil
return boards, nil
}
// getDefaultBoard return default board and ensure only one exists
func (p *Project) getDefaultBoard(ctx context.Context) (*Board, error) {
// GetDefaultBoard return default board and ensure only one exists
func (p *Project) GetDefaultBoard(ctx context.Context) (*Board, error) {
var board Board
has, err := db.GetEngine(ctx).
Where("project_id=? AND `default` = ?", p.ID, true).
@ -318,3 +350,42 @@ func UpdateBoardSorting(ctx context.Context, bs BoardList) error {
return nil
})
}
func GetColumnsByIDs(ctx context.Context, projectID int64, columnsIDs []int64) (BoardList, error) {
columns := make([]*Board, 0, 5)
if err := db.GetEngine(ctx).
Where("project_id =?", projectID).
In("id", columnsIDs).
OrderBy("sorting").Find(&columns); err != nil {
return nil, err
}
return columns, nil
}
// MoveColumnsOnProject sorts columns in a project
func MoveColumnsOnProject(ctx context.Context, project *Project, sortedColumnIDs map[int64]int64) error {
return db.WithTx(ctx, func(ctx context.Context) error {
sess := db.GetEngine(ctx)
columnIDs := util.ValuesOfMap(sortedColumnIDs)
movedColumns, err := GetColumnsByIDs(ctx, project.ID, columnIDs)
if err != nil {
return err
}
if len(movedColumns) != len(sortedColumnIDs) {
return errors.New("some columns do not exist")
}
for _, column := range movedColumns {
if column.ProjectID != project.ID {
return fmt.Errorf("column[%d]'s projectID is not equal to project's ID [%d]", column.ProjectID, project.ID)
}
}
for sorting, columnID := range sortedColumnIDs {
if _, err := sess.Exec("UPDATE `project_board` SET sorting=? WHERE id=?", sorting, columnID); err != nil {
return err
}
}
return nil
})
}

View file

@ -4,6 +4,8 @@
package project
import (
"fmt"
"strings"
"testing"
"code.gitea.io/gitea/models/db"
@ -19,7 +21,7 @@ func TestGetDefaultBoard(t *testing.T) {
assert.NoError(t, err)
// check if default board was added
board, err := projectWithoutDefault.getDefaultBoard(db.DefaultContext)
board, err := projectWithoutDefault.GetDefaultBoard(db.DefaultContext)
assert.NoError(t, err)
assert.Equal(t, int64(5), board.ProjectID)
assert.Equal(t, "Uncategorized", board.Title)
@ -28,7 +30,7 @@ func TestGetDefaultBoard(t *testing.T) {
assert.NoError(t, err)
// check if multiple defaults were removed
board, err = projectWithMultipleDefaults.getDefaultBoard(db.DefaultContext)
board, err = projectWithMultipleDefaults.GetDefaultBoard(db.DefaultContext)
assert.NoError(t, err)
assert.Equal(t, int64(6), board.ProjectID)
assert.Equal(t, int64(9), board.ID)
@ -42,3 +44,84 @@ func TestGetDefaultBoard(t *testing.T) {
assert.Equal(t, int64(6), board.ProjectID)
assert.False(t, board.Default)
}
func Test_moveIssuesToAnotherColumn(t *testing.T) {
assert.NoError(t, unittest.PrepareTestDatabase())
column1 := unittest.AssertExistsAndLoadBean(t, &Board{ID: 1, ProjectID: 1})
issues, err := column1.GetIssues(db.DefaultContext)
assert.NoError(t, err)
assert.Len(t, issues, 1)
assert.EqualValues(t, 1, issues[0].ID)
column2 := unittest.AssertExistsAndLoadBean(t, &Board{ID: 2, ProjectID: 1})
issues, err = column2.GetIssues(db.DefaultContext)
assert.NoError(t, err)
assert.Len(t, issues, 1)
assert.EqualValues(t, 3, issues[0].ID)
err = column1.moveIssuesToAnotherColumn(db.DefaultContext, column2)
assert.NoError(t, err)
issues, err = column1.GetIssues(db.DefaultContext)
assert.NoError(t, err)
assert.Len(t, issues, 0)
issues, err = column2.GetIssues(db.DefaultContext)
assert.NoError(t, err)
assert.Len(t, issues, 2)
assert.EqualValues(t, 3, issues[0].ID)
assert.EqualValues(t, 0, issues[0].Sorting)
assert.EqualValues(t, 1, issues[1].ID)
assert.EqualValues(t, 1, issues[1].Sorting)
}
func Test_MoveColumnsOnProject(t *testing.T) {
assert.NoError(t, unittest.PrepareTestDatabase())
project1 := unittest.AssertExistsAndLoadBean(t, &Project{ID: 1})
columns, err := project1.GetBoards(db.DefaultContext)
assert.NoError(t, err)
assert.Len(t, columns, 3)
assert.EqualValues(t, 0, columns[0].Sorting) // even if there is no default sorting, the code should also work
assert.EqualValues(t, 0, columns[1].Sorting)
assert.EqualValues(t, 0, columns[2].Sorting)
err = MoveColumnsOnProject(db.DefaultContext, project1, map[int64]int64{
0: columns[1].ID,
1: columns[2].ID,
2: columns[0].ID,
})
assert.NoError(t, err)
columnsAfter, err := project1.GetBoards(db.DefaultContext)
assert.NoError(t, err)
assert.Len(t, columnsAfter, 3)
assert.EqualValues(t, columns[1].ID, columnsAfter[0].ID)
assert.EqualValues(t, columns[2].ID, columnsAfter[1].ID)
assert.EqualValues(t, columns[0].ID, columnsAfter[2].ID)
}
func Test_NewBoard(t *testing.T) {
assert.NoError(t, unittest.PrepareTestDatabase())
project1 := unittest.AssertExistsAndLoadBean(t, &Project{ID: 1})
columns, err := project1.GetBoards(db.DefaultContext)
assert.NoError(t, err)
assert.Len(t, columns, 3)
for i := 0; i < maxProjectColumns-3; i++ {
err := NewBoard(db.DefaultContext, &Board{
Title: fmt.Sprintf("board-%d", i+4),
ProjectID: project1.ID,
})
assert.NoError(t, err)
}
err = NewBoard(db.DefaultContext, &Board{
Title: "board-21",
ProjectID: project1.ID,
})
assert.Error(t, err)
assert.True(t, strings.Contains(err.Error(), "maximum number of columns reached"))
}

View file

@ -9,6 +9,7 @@ import (
"code.gitea.io/gitea/models/db"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/util"
)
// ProjectIssue saves relation from issue to a project
@ -17,7 +18,7 @@ type ProjectIssue struct { //revive:disable-line:exported
IssueID int64 `xorm:"INDEX"`
ProjectID int64 `xorm:"INDEX"`
// If 0, then it has not been added to a specific board in the project
// ProjectBoardID should not be zero since 1.22. If it's zero, the issue will not be displayed on UI and it might result in errors.
ProjectBoardID int64 `xorm:"INDEX"`
// the sorting order on the board
@ -79,11 +80,8 @@ func (p *Project) NumOpenIssues(ctx context.Context) int {
func MoveIssuesOnProjectBoard(ctx context.Context, board *Board, sortedIssueIDs map[int64]int64) error {
return db.WithTx(ctx, func(ctx context.Context) error {
sess := db.GetEngine(ctx)
issueIDs := util.ValuesOfMap(sortedIssueIDs)
issueIDs := make([]int64, 0, len(sortedIssueIDs))
for _, issueID := range sortedIssueIDs {
issueIDs = append(issueIDs, issueID)
}
count, err := sess.Table(new(ProjectIssue)).Where("project_id=?", board.ProjectID).In("issue_id", issueIDs).Count()
if err != nil {
return err
@ -102,7 +100,44 @@ func MoveIssuesOnProjectBoard(ctx context.Context, board *Board, sortedIssueIDs
})
}
func (b *Board) removeIssues(ctx context.Context) error {
_, err := db.GetEngine(ctx).Exec("UPDATE `project_issue` SET project_board_id = 0 WHERE project_board_id = ? ", b.ID)
func (b *Board) moveIssuesToAnotherColumn(ctx context.Context, newColumn *Board) error {
if b.ProjectID != newColumn.ProjectID {
return fmt.Errorf("columns have to be in the same project")
}
if b.ID == newColumn.ID {
return nil
}
res := struct {
MaxSorting int64
IssueCount int64
}{}
if _, err := db.GetEngine(ctx).Select("max(sorting) as max_sorting, count(*) as issue_count").
Table("project_issue").
Where("project_id=?", newColumn.ProjectID).
And("project_board_id=?", newColumn.ID).
Get(&res); err != nil {
return err
}
issues, err := b.GetIssues(ctx)
if err != nil {
return err
}
if len(issues) == 0 {
return nil
}
nextSorting := util.Iif(res.IssueCount > 0, res.MaxSorting+1, 0)
return db.WithTx(ctx, func(ctx context.Context) error {
for i, issue := range issues {
issue.ProjectBoardID = newColumn.ID
issue.Sorting = nextSorting + int64(i)
if _, err := db.GetEngine(ctx).ID(issue.ID).Cols("project_board_id", "sorting").Update(issue); err != nil {
return err
}
}
return nil
})
}

View file

@ -161,6 +161,13 @@ func (p *Project) IsRepositoryProject() bool {
return p.Type == TypeRepository
}
func (p *Project) CanBeAccessedByOwnerRepo(ownerID int64, repo *repo_model.Repository) bool {
if p.Type == TypeRepository {
return repo != nil && p.RepoID == repo.ID // if a project belongs to a repository, then its OwnerID is 0 and can be ignored
}
return p.OwnerID == ownerID && p.RepoID == 0
}
func init() {
db.RegisterModel(new(Project))
}

View file

@ -329,7 +329,7 @@ func (repo *Repository) HTMLURL() string {
// CommitLink make link to by commit full ID
// note: won't check whether it's an right id
func (repo *Repository) CommitLink(commitID string) (result string) {
if git.IsEmptyCommitID(commitID) {
if git.IsEmptyCommitID(commitID, nil) {
result = ""
} else {
result = repo.Link() + "/commit/" + url.PathEscape(commitID)

View file

@ -8,14 +8,14 @@ import "code.gitea.io/gitea/models/db"
// SearchOrderByMap represents all possible search order
var SearchOrderByMap = map[string]map[string]db.SearchOrderBy{
"asc": {
"alpha": db.SearchOrderByAlphabetically,
"alpha": "owner_name ASC, name ASC",
"created": db.SearchOrderByOldest,
"updated": db.SearchOrderByLeastUpdated,
"size": db.SearchOrderBySize,
"id": db.SearchOrderByID,
},
"desc": {
"alpha": db.SearchOrderByAlphabeticallyReverse,
"alpha": "owner_name DESC, name DESC",
"created": db.SearchOrderByNewest,
"updated": db.SearchOrderByRecentUpdated,
"size": db.SearchOrderBySizeReverse,

View file

@ -122,6 +122,7 @@ func (h Sha256ObjectFormatImpl) ComputeHash(t ObjectType, content []byte) Object
var (
Sha1ObjectFormat ObjectFormat = Sha1ObjectFormatImpl{}
Sha256ObjectFormat ObjectFormat = Sha256ObjectFormatImpl{}
// any addition must be reflected in IsEmptyCommitID
)
var SupportedObjectFormats = []ObjectFormat{

View file

@ -79,17 +79,25 @@ func NewIDFromString(hexHash string) (ObjectID, error) {
return theObjectFormat.MustID(b), nil
}
func IsEmptyCommitID(commitID string) bool {
// IsEmptyCommitID checks if an hexadecimal string represents an empty commit according to git (only '0').
// If objectFormat is not nil, the length will be checked as well (otherwise the lenght must match the sha1 or sha256 length).
func IsEmptyCommitID(commitID string, objectFormat ObjectFormat) bool {
if commitID == "" {
return true
}
id, err := NewIDFromString(commitID)
if err != nil {
if objectFormat == nil {
if Sha1ObjectFormat.FullLength() != len(commitID) && Sha256ObjectFormat.FullLength() != len(commitID) {
return false
}
return id.IsZero()
} else if objectFormat.FullLength() != len(commitID) {
return false
}
for _, c := range commitID {
if c != '0' {
return false
}
}
return true
}
// ComputeBlobHash compute the hash for a given blob content

View file

@ -23,3 +23,27 @@ func TestIsValidSHAPattern(t *testing.T) {
assert.Equal(t, "d5c6407415d85df49592672aa421aed39b9db5e3", ComputeBlobHash(Sha1ObjectFormat, []byte("same length blob")).String())
assert.Equal(t, "df0b5174ed06ae65aea40d43316bcbc21d82c9e3158ce2661df2ad28d7931dd6", ComputeBlobHash(Sha256ObjectFormat, []byte("some random blob")).String())
}
func TestIsEmptyCommitID(t *testing.T) {
assert.True(t, IsEmptyCommitID("", nil))
assert.True(t, IsEmptyCommitID("", Sha1ObjectFormat))
assert.True(t, IsEmptyCommitID("", Sha256ObjectFormat))
assert.False(t, IsEmptyCommitID("79ee38a6416c1ede423ec7ee0a8639ceea4aad20", Sha1ObjectFormat))
assert.True(t, IsEmptyCommitID("0000000000000000000000000000000000000000", nil))
assert.True(t, IsEmptyCommitID("0000000000000000000000000000000000000000", Sha1ObjectFormat))
assert.False(t, IsEmptyCommitID("0000000000000000000000000000000000000000", Sha256ObjectFormat))
assert.False(t, IsEmptyCommitID("00000000000000000000000000000000000000000", nil))
assert.False(t, IsEmptyCommitID("0f0b5174ed06ae65aea40d43316bcbc21d82c9e3158ce2661df2ad28d7931dd6", nil))
assert.True(t, IsEmptyCommitID("0000000000000000000000000000000000000000000000000000000000000000", nil))
assert.False(t, IsEmptyCommitID("0000000000000000000000000000000000000000000000000000000000000000", Sha1ObjectFormat))
assert.True(t, IsEmptyCommitID("0000000000000000000000000000000000000000000000000000000000000000", Sha256ObjectFormat))
assert.False(t, IsEmptyCommitID("1", nil))
assert.False(t, IsEmptyCommitID("0", nil))
assert.False(t, IsEmptyCommitID("010", nil))
assert.False(t, IsEmptyCommitID("0 0", nil))
}

View file

@ -7,7 +7,6 @@ package git
import (
"bytes"
"context"
"errors"
"fmt"
"io"
"net/url"
@ -63,32 +62,6 @@ func IsRepoURLAccessible(ctx context.Context, url string) bool {
return err == nil
}
// GetObjectFormatOfRepo returns the hash type of repository at a given path
func GetObjectFormatOfRepo(ctx context.Context, repoPath string) (ObjectFormat, error) {
var stdout, stderr strings.Builder
err := NewCommand(ctx, "hash-object", "--stdin").Run(&RunOpts{
Dir: repoPath,
Stdout: &stdout,
Stderr: &stderr,
Stdin: &strings.Reader{},
})
if err != nil {
return nil, err
}
if stderr.Len() > 0 {
return nil, errors.New(stderr.String())
}
h, err := NewIDFromString(strings.TrimRight(stdout.String(), "\n"))
if err != nil {
return nil, err
}
return h.Type(), nil
}
// InitRepository initializes a new Git repository.
func InitRepository(ctx context.Context, repoPath string, bare bool, objectFormatName string) error {
err := os.MkdirAll(repoPath, os.ModePerm)

View file

@ -17,11 +17,14 @@ import (
"time"
charsetModule "code.gitea.io/gitea/modules/charset"
"code.gitea.io/gitea/modules/container"
"code.gitea.io/gitea/modules/httpcache"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/typesniffer"
"code.gitea.io/gitea/modules/util"
"github.com/klauspost/compress/gzhttp"
)
type ServeHeaderOptions struct {
@ -38,6 +41,11 @@ type ServeHeaderOptions struct {
func ServeSetHeaders(w http.ResponseWriter, opts *ServeHeaderOptions) {
header := w.Header()
skipCompressionExts := container.SetOf(".gz", ".bz2", ".zip", ".xz", ".zst", ".deb", ".apk", ".jar", ".png", ".jpg", ".webp")
if skipCompressionExts.Contains(strings.ToLower(path.Ext(opts.Filename))) {
w.Header().Add(gzhttp.HeaderNoCompression, "1")
}
contentType := typesniffer.ApplicationOctetStream
if opts.ContentType != "" {
if opts.ContentTypeCharset != "" {

View file

@ -11,6 +11,7 @@ import (
"time"
"code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/repository"
"code.gitea.io/gitea/modules/setting"
)
@ -53,6 +54,7 @@ type HookOptions struct {
GitQuarantinePath string
GitPushOptions GitPushOptions
PullRequestID int64
PushTrigger repository.PushTrigger
DeployKeyID int64 // if the pusher is a DeployKey, then UserID is the repo's org user.
IsWiki bool
ActionPerm int

View file

@ -5,6 +5,7 @@ package repository
import (
"context"
"fmt"
"code.gitea.io/gitea/models/db"
git_model "code.gitea.io/gitea/models/git"
@ -36,6 +37,15 @@ func SyncRepoBranches(ctx context.Context, repoID, doerID int64) (int64, error)
}
func SyncRepoBranchesWithRepo(ctx context.Context, repo *repo_model.Repository, gitRepo *git.Repository, doerID int64) (int64, error) {
objFmt, err := gitRepo.GetObjectFormat()
if err != nil {
return 0, fmt.Errorf("GetObjectFormat: %w", err)
}
_, err = db.GetEngine(ctx).ID(repo.ID).Update(&repo_model.Repository{ObjectFormatName: objFmt.Name()})
if err != nil {
return 0, fmt.Errorf("UpdateRepository: %w", err)
}
allBranches := container.Set[string]{}
{
branches, _, err := gitRepo.GetBranchNames(0, 0)

View file

@ -0,0 +1,31 @@
// Copyright 2024 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package repository
import (
"testing"
"code.gitea.io/gitea/models/db"
git_model "code.gitea.io/gitea/models/git"
repo_model "code.gitea.io/gitea/models/repo"
"code.gitea.io/gitea/models/unittest"
"github.com/stretchr/testify/assert"
)
func TestSyncRepoBranches(t *testing.T) {
assert.NoError(t, unittest.PrepareTestDatabase())
_, err := db.GetEngine(db.DefaultContext).ID(1).Update(&repo_model.Repository{ObjectFormatName: "bad-fmt"})
assert.NoError(t, db.TruncateBeans(db.DefaultContext, &git_model.Branch{}))
assert.NoError(t, err)
repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1})
assert.Equal(t, "bad-fmt", repo.ObjectFormatName)
_, err = SyncRepoBranches(db.DefaultContext, 1, 0)
assert.NoError(t, err)
repo = unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1})
assert.Equal(t, "sha1", repo.ObjectFormatName)
branch, err := git_model.GetBranch(db.DefaultContext, 1, "master")
assert.NoError(t, err)
assert.EqualValues(t, "master", branch.Name)
}

View file

@ -25,11 +25,19 @@ const (
EnvKeyID = "GITEA_KEY_ID" // public key ID
EnvDeployKeyID = "GITEA_DEPLOY_KEY_ID"
EnvPRID = "GITEA_PR_ID"
EnvPushTrigger = "GITEA_PUSH_TRIGGER"
EnvIsInternal = "GITEA_INTERNAL_PUSH"
EnvAppURL = "GITEA_ROOT_URL"
EnvActionPerm = "GITEA_ACTION_PERM"
)
type PushTrigger string
const (
PushTriggerPRMergeToBase PushTrigger = "pr-merge-to-base"
PushTriggerPRUpdateWithBase PushTrigger = "pr-update-with-base"
)
// InternalPushingEnvironment returns an os environment to switch off hooks on push
// It is recommended to avoid using this unless you are pushing within a transaction
// or if you absolutely are sure that post-receive and pre-receive will do nothing

View file

@ -21,14 +21,12 @@ type PushUpdateOptions struct {
// IsNewRef return true if it's a first-time push to a branch, tag or etc.
func (opts *PushUpdateOptions) IsNewRef() bool {
commitID, err := git.NewIDFromString(opts.OldCommitID)
return err == nil && commitID.IsZero()
return git.IsEmptyCommitID(opts.OldCommitID, nil)
}
// IsDelRef return true if it's a deletion to a branch or tag
func (opts *PushUpdateOptions) IsDelRef() bool {
commitID, err := git.NewIDFromString(opts.NewCommitID)
return err == nil && commitID.IsZero()
return git.IsEmptyCommitID(opts.NewCommitID, nil)
}
// IsUpdateRef return true if it's an update operation

View file

@ -85,7 +85,7 @@ type CreatePullRequestOption struct {
// EditPullRequestOption options when modify pull request
type EditPullRequestOption struct {
Title string `json:"title"`
Body string `json:"body"`
Body *string `json:"body"`
Base string `json:"base"`
Assignee string `json:"assignee"`
Assignees []string `json:"assignees"`

View file

@ -53,13 +53,13 @@ func NewFuncMap() template.FuncMap {
"JsonUtils": NewJsonUtils,
// -----------------------------------------------------------------
// svg / avatar / icon
// svg / avatar / icon / color
"svg": svg.RenderHTML,
"EntryIcon": base.EntryIcon,
"MigrationIcon": MigrationIcon,
"ActionIcon": ActionIcon,
"SortArrow": SortArrow,
"ContrastColor": util.ContrastColor,
// -----------------------------------------------------------------
// time / number / format

View file

@ -135,16 +135,9 @@ func RenderIssueTitle(ctx context.Context, text string, metas map[string]string)
func RenderLabel(ctx context.Context, locale translation.Locale, label *issues_model.Label) template.HTML {
var (
archivedCSSClass string
textColor = "#111"
textColor = util.ContrastColor(label.Color)
labelScope = label.ExclusiveScope()
)
r, g, b := util.HexToRBGColor(label.Color)
// Determine if label text should be light or dark to be readable on background color
// this doesn't account for saturation or transparency
if util.UseLightTextOnBackground(r, g, b) {
textColor = "#eee"
}
description := emoji.ReplaceAliases(template.HTMLEscapeString(label.Description))
@ -168,7 +161,7 @@ func RenderLabel(ctx context.Context, locale translation.Locale, label *issues_m
// Make scope and item background colors slightly darker and lighter respectively.
// More contrast needed with higher luminance, empirically tweaked.
luminance := util.GetLuminance(r, g, b)
luminance := util.GetRelativeLuminance(label.Color)
contrast := 0.01 + luminance*0.03
// Ensure we add the same amount of contrast also near 0 and 1.
darken := contrast + math.Max(luminance+contrast-1.0, 0.0)
@ -178,6 +171,7 @@ func RenderLabel(ctx context.Context, locale translation.Locale, label *issues_m
lightenFactor := math.Min(luminance+lighten, 1.0) / math.Max(luminance, 1.0/255.0)
opacity := GetLabelOpacityByte(label.IsArchived())
r, g, b := util.HexToRBGColor(label.Color)
scopeBytes := []byte{
uint8(math.Min(math.Round(r*darkenFactor), 255)),
uint8(math.Min(math.Round(g*darkenFactor), 255)),

View file

@ -4,22 +4,10 @@ package util
import (
"fmt"
"math"
"strconv"
"strings"
)
// Check similar implementation in web_src/js/utils/color.js and keep synchronization
// Return R, G, B values defined in reletive luminance
func getLuminanceRGB(channel float64) float64 {
sRGB := channel / 255
if sRGB <= 0.03928 {
return sRGB / 12.92
}
return math.Pow((sRGB+0.055)/1.055, 2.4)
}
// Get color as RGB values in 0..255 range from the hex color string (with or without #)
func HexToRBGColor(colorString string) (float64, float64, float64) {
hexString := colorString
@ -47,19 +35,23 @@ func HexToRBGColor(colorString string) (float64, float64, float64) {
return r, g, b
}
// return luminance given RGB channels
// Reference from: https://www.w3.org/WAI/GL/wiki/Relative_luminance
func GetLuminance(r, g, b float64) float64 {
R := getLuminanceRGB(r)
G := getLuminanceRGB(g)
B := getLuminanceRGB(b)
luminance := 0.2126*R + 0.7152*G + 0.0722*B
return luminance
// Returns relative luminance for a SRGB color - https://en.wikipedia.org/wiki/Relative_luminance
// Keep this in sync with web_src/js/utils/color.js
func GetRelativeLuminance(color string) float64 {
r, g, b := HexToRBGColor(color)
return (0.2126729*r + 0.7151522*g + 0.0721750*b) / 255
}
// Reference from: https://firsching.ch/github_labels.html
// In the future WCAG 3 APCA may be a better solution.
// Check if text should use light color based on RGB of background
func UseLightTextOnBackground(r, g, b float64) bool {
return GetLuminance(r, g, b) < 0.453
func UseLightText(backgroundColor string) bool {
return GetRelativeLuminance(backgroundColor) < 0.453
}
// Given a background color, returns a black or white foreground color that the highest
// contrast ratio. In the future, the APCA contrast function, or CSS `contrast-color` will be better.
// https://github.com/color-js/color.js/blob/eb7b53f7a13bb716ec8b28c7a56f052cd599acd9/src/contrast/APCA.js#L42
func ContrastColor(backgroundColor string) string {
if UseLightText(backgroundColor) {
return "#fff"
}
return "#000"
}

View file

@ -33,33 +33,31 @@ func Test_HexToRBGColor(t *testing.T) {
}
}
func Test_UseLightTextOnBackground(t *testing.T) {
func Test_UseLightText(t *testing.T) {
cases := []struct {
r float64
g float64
b float64
expected bool
color string
expected string
}{
{215, 58, 74, true},
{0, 117, 202, true},
{207, 211, 215, false},
{162, 238, 239, false},
{112, 87, 255, true},
{0, 134, 114, true},
{228, 230, 105, false},
{216, 118, 227, true},
{255, 255, 255, false},
{43, 134, 133, true},
{43, 135, 134, true},
{44, 135, 134, true},
{59, 182, 179, true},
{124, 114, 104, true},
{126, 113, 108, true},
{129, 112, 109, true},
{128, 112, 112, true},
{"#d73a4a", "#fff"},
{"#0075ca", "#fff"},
{"#cfd3d7", "#000"},
{"#a2eeef", "#000"},
{"#7057ff", "#fff"},
{"#008672", "#fff"},
{"#e4e669", "#000"},
{"#d876e3", "#000"},
{"#ffffff", "#000"},
{"#2b8684", "#fff"},
{"#2b8786", "#fff"},
{"#2c8786", "#000"},
{"#3bb6b3", "#000"},
{"#7c7268", "#fff"},
{"#7e716c", "#fff"},
{"#81706d", "#fff"},
{"#807070", "#fff"},
{"#84b6eb", "#000"},
}
for n, c := range cases {
result := UseLightTextOnBackground(c.r, c.g, c.b)
assert.Equal(t, c.expected, result, "case %d: error should match", n)
assert.Equal(t, c.expected, ContrastColor(c.color), "case %d: error should match", n)
}
}

View file

@ -1214,7 +1214,7 @@ settings.pulls_desc = فعّل طلب الدمج في المستودع
settings.pulls.ignore_whitespace = تجاهل المسافات في النزاعات
settings.danger_zone = منطقة الخطر
settings.new_owner_has_same_repo = المالك الجديد لديه مستودع بالاسم نفسه؛ برجاء اختيار اسم آخر.
settings.transfer = نقل الملكية
settings.transfer.title = نقل الملكية
settings.transfer_abort = ألغِ نقل الملكية
settings.transfer_abort_invalid = لا يمكنك إلغاء عملية غير موجودة لنقل ملكية مستودع.
settings.transfer.success = نجح نقل ملكية المستودع.

View file

@ -49,7 +49,7 @@ manage_emails = Управление на адресите на ел. поща
permission_read = Четене
update_password = Обновяване на паролата
biography_placeholder = Разкажете ни малко за себе си! (Можете да използвате Markdown)
orgs = Управление на организациите
orgs = Организации
continue = Продължаване
blocked_users = Блокирани потребители
emails = Адреси на ел. поща
@ -91,8 +91,8 @@ keep_activity_private_popup = Вашата дейност ще бъде види
uploaded_avatar_not_a_image = Каченият файл не е изображение.
uploaded_avatar_is_too_big = Размерът на качения файл (%d KiB) надвишава максималния размер (%d KiB).
change_password_success = Паролата ви е обновена. Влизайте с новата си парола от сега нататък.
manage_themes = Избор на тема по подразбиране
manage_openid = Управление на OpenID адресите
manage_themes = Тема по подразбиране
manage_openid = OpenID адреси
primary_email = Да е основен
keep_email_private = Скриване на адреса на ел. поща
theme_update_error = Избраната тема не съществува.
@ -138,6 +138,7 @@ email_notifications.onmention = Ел. поща само при споменав
pronouns_unspecified = Непосочени
pronouns = Местоимения
gpg_token_code = echo "%s" | gpg -a --default-key %s --detach-sig
language.title = Език по подразбиране
[packages]
container.labels.value = Стойност
@ -156,7 +157,7 @@ empty.repo = Качихте ли пакет, но той не се показв
keywords = Ключови думи
details.author = Автор
about = Относно този пакет
settings.delete.success = Пакетът бе изтрит.
settings.delete.success = Пакетът е изтрит.
settings.delete = Изтриване на пакета
container.details.platform = Платформа
settings.delete.error = Неуспешно изтриване на пакет.
@ -271,16 +272,17 @@ filter = Филтър
filter.clear = Изчистване на филтрите
filter.is_archived = Архивирани
filter.not_archived = Не архивирани
filter.is_fork = Разклонени
filter.is_fork = Разклонения
filter.public = Публични
filter.not_fork = Не разклонени
filter.not_fork = Не разклонения
filter.is_template = Шаблони
filter.not_template = Не шаблони
filter.private = Частни
filter.is_mirror = Огледални
filter.not_mirror = Не огледални
filter.is_mirror = Огледала
filter.not_mirror = Не огледала
copy_hash = Копиране на контролната сума
artifacts = Артефакти
show_log_seconds = Показване на секундите
[repo]
issues.context.edit = Редактиране
@ -507,7 +509,7 @@ wiki.page_title = Заглавие на страницата
wiki.page_content = Съдържание на страницата
wiki.filter_page = Филтриране на страница
wiki.back_to_wiki = Обратно към уики страницата
wiki.wiki_page_revisions = Ревизии на уики страницата
wiki.wiki_page_revisions = Ревизии на страницата
wiki.file_revision = Ревизия на страницата
activity.title.issues_created_by = %s създадени от %s
wiki.delete_page_notice_1 = Изтриването на уики страницата "%s" не може да бъде отменено. Продължаване?
@ -570,7 +572,7 @@ issues.role.owner_helper = Този потребител е притежател
settings.delete_notices_2 = - Тази операция ще изтрие перманентно хранилището <strong>%s</strong>, включително кода, задачите, коментарите, данните на уикито и настройките за сътрудници.
settings.admin_settings = Администраторски настройки
issues.role.owner = Притежател
settings.transfer = Прехвърляне на притежанието
settings.transfer.title = Прехвърляне на притежанието
issues.author = Автор
issues.closed_at = `затвори тази задача <a id="%[1]s" href="#%[1]s">%[2]s</a>`
settings.collaborator_deletion_desc = Премахването на сътрудник ще отнеме достъпа му до това хранилище. Продължаване?
@ -783,7 +785,7 @@ issues.label.filter_sort.reverse_by_size = Най-голям размер
issues.unlock = Отключване на обсъждането
issues.due_date_form_add = Добавяне на краен срок
release.save_draft = Запазване на чернова
release.add_tag = Създаване само на маркер
release.add_tag = Създаване на маркер
release.publish = Публикуване на издание
file_view_source = Преглед на изходния код
diff.parent = родител
@ -1062,7 +1064,7 @@ diff.review.reject = Поискване на промени
diff.bin_not_shown = Двоичният файл не е показан.
settings.units.units = Елементи на хранилището
settings.delete_notices_fork_1 = - Разклоненията на това хранилище ще станат независими след изтриване.
settings.actions_desc = Включване на действията за хранилището
settings.actions_desc = Включване на интегрираните CI/CD pipelines с Forgejo Действия
settings.packages_desc = Включване на регистъра на пакетите за хранилището
settings.units.add_more = Добавяне...
settings.use_external_issue_tracker = Използване на външен тракер за задачи
@ -1126,7 +1128,7 @@ issues.ref_from = `от %[1]s`
issues.ref_reopening_from = `<a href="%[3]s">спомена заявка за сливане %[4]s, която ще отвори наново тази задача</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>`
issues.draft_title = Чернова
pulls.reopen_to_merge = Моля, отворете наново тази заявка за сливане, за да извършите сливане.
pulls.cant_reopen_deleted_branch = Тази заявка за сливане не може да бъде отворена наново, защото клонът бе изтрит.
pulls.cant_reopen_deleted_branch = Тази заявка за сливане не може да бъде отворена наново, защото клонът е изтрит.
pulls.status_checks_hide_all = Скриване на всички проверки
pulls.status_checks_failure = Някои проверки са неуспешни
issues.review.add_review_request = поиска рецензия от %s %s
@ -1217,13 +1219,13 @@ teams.read_access_helper = Членовете могат да преглежда
teams.invite.description = Моля, щракнете върху бутона по-долу, за да се присъедините към екипа.
teams.invite.title = Поканени сте да се присъедините към екип <strong>%s</strong> в организация <strong>%s</strong>.
team_permission_desc = Разрешение
members.public_helper = да е скрит
members.public_helper = Да е скрит
teams.members = Членове на екипа
teams.delete_team = Изтриване на екипа
members.owner = Притежател
members.member_role = Роля на участника:
members.member = Участник
members.private_helper = да е видим
members.private_helper = Да е видим
teams.no_desc = Този екип няма описание
settings.delete_org_desc = Тази организация ще бъде изтрита перманентно. Продължаване?
@ -1366,9 +1368,9 @@ hooks = Уеб-куки
systemhooks = Системни уеб-куки
orgs.new_orga = Нова организация
config.https_only = Само HTTPS
users.update_profile_success = Потребителският акаунт бе обновен.
users.new_success = Потребителският акаунт "%s" бе създаден.
users.deletion_success = Потребителският акаунт бе изтрит.
users.update_profile_success = Потребителският акаунт е обновен.
users.new_success = Потребителският акаунт "%s" е създаден.
users.deletion_success = Потребителският акаунт е изтрит.
last_page = Последна
config.test_email_placeholder = Ел. поща (напр. test@example.com)
users.cannot_delete_self = Не можете да изтриете себе си

View file

@ -0,0 +1,31 @@
[common]
home = inici
dashboard = Panell de control
explore = Explorar
help = Ajuda
logo = Logo
sign_in = Entrar
sign_in_with_provider = Entra amb %s
sign_in_or = o
sign_out = Sortir
register = Registrar-se
version = Versió
powered_by = Creat amb %s
page = Pàgina
template = Plantilla
language = Idioma
notifications = Notificacions
active_stopwatch = Registre de Temps Actiu
create_new = Crear…
user_profile_and_more = Perfil i configuració…
signed_in_as = Entrat com
enable_javascript = Aquest lloc web requereix Javascript.
toc = Taula de Continguts
licenses = Llicències
sign_up = Registrar-se
link_account = Vincular un compte
tracked_time_summary = Resum del temps registrat basat en filtres del llistat de temes
return_to_gitea = Tornar a Forgejo

View file

@ -46,7 +46,7 @@ webauthn_unsupported_browser=Váš prohlížeč momentálně nepodporuje WebAuth
webauthn_error_unknown=Došlo k neznámé chybě. Opakujte akci.
webauthn_error_insecure=WebAuthn podporuje pouze zabezpečená připojení. Pro testování přes HTTP můžete použít výchozí „localhost“ nebo „127.0.0.1“
webauthn_error_unable_to_process=Server nemohl zpracovat váš požadavek.
webauthn_error_duplicated=Bezpečnostní klíč není pro tento požadavek povolen. Ujistěte se prosím, zda již klíč není registrován.
webauthn_error_duplicated=Bezpečnostní klíč není pro tento požadavek povolen. Ujistěte se prosím, zda klíč již není registrován.
webauthn_error_empty=Musíte nastavit název tohoto klíče.
webauthn_error_timeout=Požadavek vypršel dříve, než se podařilo přečíst váš klíč. Znovu načtěte tuto stránku a akci opakujte.
webauthn_reload=Znovu načíst
@ -146,15 +146,15 @@ sign_in_with_provider = Přihlásit se přes %s
confirm_delete_artifact = Opravdu chcete odstranit artefakt „%s“?
toggle_menu = Přepnout nabídku
filter = Filtr
filter.is_fork = Forknuto
filter.not_fork = Není forknuto
filter.is_mirror = Zrcadleno
filter.is_template = Šablona
filter.not_template = Není šablona
filter.is_fork = Forky
filter.not_fork = Nejsou forky
filter.is_mirror = Zrcadla
filter.is_template = Šablony
filter.not_template = Nejsou šablony
filter.public = Veřejné
filter.private = Soukromé
filter.is_archived = Archivováno
filter.not_mirror = Není zrcadleno
filter.not_mirror = Nejsou zrcadla
filter.not_archived = Není archivováno
filter.clear = Vymazat filtry
more_items = Další položky
@ -688,7 +688,7 @@ avatar=Avatar
ssh_gpg_keys=Klíče SSH / GPG
social=Účty sociálních sítí
applications=Aplikace
orgs=Spravovat organizace
orgs=Organizace
repos=Repozitáře
delete=Smazat účet
twofa=Dvoufaktorové ověřování (TOTP)
@ -762,8 +762,8 @@ password_change_disabled=Externě ověřovaní uživatelé nemohou aktualizovat
emails=E-mailové adresy
manage_emails=Správa e-mailových adres
manage_themes=Vyberte výchozí motiv vzhledu
manage_openid=Správa adres OpenID
manage_themes=Výchozí motiv
manage_openid=Adresy OpenID
email_desc=Vaše hlavní e-mailová adresa bude použita pro oznámení, obnovení hesla, a pokud není skrytá, pro operace Gitu.
theme_desc=Toto bude váš výchozí motiv vzhledu napříč stránkou.
primary=Hlavní
@ -807,7 +807,7 @@ add_new_key=Přidat klíč SSH
add_new_gpg_key=Přidat klíč GPG
key_content_ssh_placeholder=Začíná s „ssh-ed25519“, „ssh-rsa“, „ecdsa-sha2-nistp256“, „ecdsa-sha2-nistp384“, „ecdsa-sha2-nistp521“, „sk-ecdsa-sha2-nistp256@openssh.com“ nebo „sk-ssh-ed25519@openssh.com“
key_content_gpg_placeholder=Začíná s „-----BEGIN PGP PUBLIC KEY BLOCK-----“
add_new_principal=Přidat SSH Principal certifikát
add_new_principal=Přidat principal
ssh_key_been_used=Tento SSH klíč byl na server již přidán.
ssh_key_name_used=SSH klíč se stejným jménem již u vašeho účtu existuje.
ssh_principal_been_used=Tento SSH Principal certifikát již byl přidán na server.
@ -866,7 +866,7 @@ token_state_desc=Tento token byl použit během posledních 7 dní
principal_state_desc=Tento SSH Principal certifikát byl použit během posledních 7 dní
show_openid=Zobrazit na profilu
hide_openid=Odstranit z profilu
ssh_disabled=SSH zakázáno
ssh_disabled=SSH je zakázáno
ssh_signonly=SSH je v současné době zakázáno, proto jsou tyto klíče použity pouze pro ověření podpisu.
ssh_externally_managed=Tento SSH klíč je spravován externě pro tohoto uživatele
manage_social=Správa propojených účtů sociálních sítí
@ -874,7 +874,7 @@ social_desc=Tyto účty sociálních sítí lze použít k přihlášení k vaš
unbind=Odpojit
unbind_success=Účet sociální sítě byl úspěšně odstraněn.
manage_access_token=Spravovat přístupové tokeny
manage_access_token=Přístupové tokeny
generate_new_token=Vygenerovat nový token
tokens_desc=Tyto tokeny umožňují přístup k vašemu účtu pomocí Forgejo API.
token_name=Název tokenu
@ -955,7 +955,7 @@ webauthn_delete_key_desc=Pokud odstraníte bezpečnostní klíč, již se s ním
webauthn_key_loss_warning=Pokud ztratíte své bezpečnostní klíče, ztratíte přístup k vašemu účtu.
webauthn_alternative_tip=Možná budete chtít nakonfigurovat další metodu ověřování.
manage_account_links=Správa propojených účtů
manage_account_links=Propojené účty
manage_account_links_desc=Tyto externí účty jsou propojeny s vaším Forgejo účtem.
account_links_not_available=K vašemu Forgejo účtu nejsou aktuálně připojené žádné externí účty.
link_account=Propojit účet
@ -996,13 +996,14 @@ access_token_desc = Oprávnění vybraného tokenu omezují autorizaci pouze na
blocked_users_none = Nemáte žádné zablokované uživatele.
blocked_since = Zablokován od %s
hints = Nápovědy
additional_repo_units_hint = Podíbnout k povolení dalších jednotek úložiště
additional_repo_units_hint = Navrhnout povolení dalších jednotek úložiště
update_hints = Aktualizovat nápovědy
update_hints_success = Nápovědy byly aktualizovány.
additional_repo_units_hint_description = Zobrazit tlačítko „Přidat další jednotky...“ u repozitářů, které nemají povolené všechny dostupné jednotky.
pronouns = Zájmena
pronouns_custom = Vlastní
pronouns_unspecified = Neurčené
pronouns_unspecified = Neurčená
language.title = Výchozí jazyk
[repo]
new_repo_helper=Repozitář obsahuje všechny projektové soubory, včetně historie revizí. Už jej hostujete jinde? <a href="%s">Migrovat repozitář.</a>
@ -1160,7 +1161,7 @@ migrate.clone_address_desc=HTTP(S) nebo URL Git „clone“ existujícího repoz
migrate.github_token_desc=Můžete sem vložit jeden nebo více tokenů oddělených čárkou, abyste urychlili migraci kvůli omezení rychlosti rozhraní GitHub API. VAROVÁNÍ: Zneužití této funkce může vést k porušení zásad poskytovatele služeb a zablokování účtu.
migrate.clone_local_path=nebo místní cesta serveru
migrate.permission_denied=Není dovoleno importovat místní repozitáře.
migrate.permission_denied_blocked=Nelze importovat z nepovolených hostitelů, prosím požádejte správce, aby zkontroloval nastavení ALLOWED_DOMAINS/ALLOW_LOCALETWORKS/BLOCKED_DOMAINS.
migrate.permission_denied_blocked=Nelze importovat z nepovolených hostitelů, prosím požádejte správce, aby zkontroloval nastavení ALLOWED_DOMAINS/ALLOW_LOCALNETWORKS/BLOCKED_DOMAINS.
migrate.invalid_local_path=Místní cesta je neplatná, buď neexistuje nebo není adresářem.
migrate.invalid_lfs_endpoint=Koncový bod LFS není platný.
migrate.failed=Přenesení selhalo: %v
@ -1199,7 +1200,7 @@ watch_guest_user=Pro sledování tohoto repozitáře se přihlaste.
star_guest_user=Pro hodnocení tohoto repozitáře se přihlaste.
unwatch=Přestat sledovat
watch=Sledovat
unstar=Zrušit oblíbení
unstar=Odebrat z oblíbených
star=Oblíbit
fork=Rozštěpit
download_archive=Stáhnout repozitář
@ -1334,10 +1335,10 @@ editor.commit_empty_file_header=Odevzdat prázdný soubor
editor.commit_empty_file_text=Soubor, který se chystáte odevzdat, je prázdný. Pokračovat?
editor.no_changes_to_show=Žádné změny k zobrazení.
editor.fail_to_update_file=Nepodařilo se aktualizovat/vytvořit soubor „%s“.
editor.fail_to_update_file_summary=Chybové hlášení:
editor.fail_to_update_file_summary=Chybová zpráva:
editor.push_rejected_no_message=Změna byla serverem zamítnuta bez zprávy. Zkontrolujte prosím Git hooks.
editor.push_rejected=Změna byla serverem zamítnuta. Zkontrolujte prosím Git hooks.
editor.push_rejected_summary=Úplná zpráva o odmítnutí:
editor.push_rejected_summary=Úplná zpráva o zamítnutí:
editor.add_subdir=Přidat adresář…
editor.unable_to_upload_files=Nepodařilo se nahrát soubory do „%s“. Chyba: %v
editor.upload_file_is_locked=Soubor „%s“ je uzamčen uživatelem %s.
@ -1853,16 +1854,16 @@ pulls.merge_commit_id=ID slučovacího commitu
pulls.require_signed_wont_sign=Větev vyžaduje podepsané commity, ale toto sloučení nebude podepsáno
pulls.invalid_merge_option=Pro tuto žádost nemůžete použít tuto možnost sloučení.
pulls.merge_conflict=Sloučení selhalo: Došlo ke konfliktu při sloučení. Tip: Zkuste jinou strategii
pulls.merge_conflict=Sloučení selhalo: při slučování došlo ke konfliktu. Tip: zkuste jinou strategii
pulls.merge_conflict_summary=Chybové hlášení
pulls.rebase_conflict=Sloučení selhalo: Došlo ke konfliktu při rebase commitu: %[1]s. Tip: Zkuste jinou strategii
pulls.rebase_conflict=Sloučení selhalo: došlo ke konfliktu při rebase commitu: %[1]s. Tip: zkuste jinou strategii
pulls.rebase_conflict_summary=Chybové hlášení
pulls.unrelated_histories=Sloučení selhalo: Hlavní a základní revize nesdílí společnou historii. Tip: Zkuste jinou strategii
pulls.merge_out_of_date=Sloučení selhalo: Základ byl aktualizován při generování sloučení. Tip: Zkuste to znovu.
pulls.head_out_of_date=Sloučení selhalo: Hlavní revize byla aktualizován při generování sloučení. Tip: Zkuste to znovu.
pulls.unrelated_histories=Sloučení selhalo: hlava a základ revize nesdílí společnou historii. Tip: zkuste jinou strategii
pulls.merge_out_of_date=Sloučení selhalo: základ byl aktualizován při generování sloučení. Tip: zkuste to znovu.
pulls.head_out_of_date=Sloučení selhalo: hlava revize byla aktualizována při generování sloučení. Tip: zkuste to znovu.
pulls.has_merged=Chyba: žádost byla sloučena, nelze ji znovu sloučit nebo změnit cílovou větev.
pulls.push_rejected=Push selhal: nahrání bylo zamítnuto. Zkontrolujte Git hooky pro tento repozitář.
pulls.push_rejected_summary=Úplná zpráva o odmítnutí
pulls.push_rejected_summary=Úplná zpráva o zamítnutí
pulls.push_rejected_no_message=Push selhal: nahrání bylo odmítnuto, ale nebyla nalezena žádná vzdálená zpráva. Zkontrolujte Git hooky pro tento repozitář
pulls.open_unmerged_pull_exists=`Nemůžete provést operaci znovuotevření protože je tu čekající požadavek na natažení (#%d) s identickými vlastnostmi.`
pulls.status_checking=Některé kontroly jsou nedořešeny
@ -1969,7 +1970,7 @@ wiki.last_commit_info=%s upravil tuto stránku %s
wiki.edit_page_button=Změnit stránku
wiki.new_page_button=Nová stránka
wiki.file_revision=Revize stránky
wiki.wiki_page_revisions=Revize Wiki stránky
wiki.wiki_page_revisions=Revize stránky
wiki.back_to_wiki=Zpět na wiki stránku
wiki.delete_page_button=Smazat stránku
wiki.delete_page_notice_1=Odstranění Wiki stránky „%s“ nemůže být vráceno zpět. Pokračovat?
@ -2131,12 +2132,12 @@ settings.pulls.default_allow_edits_from_maintainers=Ve výchozím nastavení pov
settings.releases_desc=Povolit vydání v repozitáři
settings.packages_desc=Povolit registr balíčků repozitáře
settings.projects_desc=Povolit projekty v repozitáři
settings.actions_desc=Povolit akce repozitáře
settings.actions_desc=Povolit integrované pipeliny CI/CD pomocí služby Forgejo Actions
settings.admin_settings=Administrátorská nastavení
settings.admin_enable_health_check=Povolit kontrolu stavu repozitáře (git fsck)
settings.admin_code_indexer=Indexování kódu
settings.admin_stats_indexer=Index statistiky kódu
settings.admin_indexer_commit_sha=Poslední indexovaná SHA
settings.admin_indexer_commit_sha=Poslední indexovaný commit
settings.admin_indexer_unindexed=Neindexováno
settings.reindex_button=Přidat do fronty reindexace
settings.reindex_requested=Požadováno reindexování
@ -2153,7 +2154,7 @@ settings.convert_fork_desc=Tento fork můžete převést na běžný repozitář
settings.convert_fork_notices_1=Tato operace převede fork na běžný repozitář a nelze ji vrátit zpět.
settings.convert_fork_confirm=Převést repozitář
settings.convert_fork_succeed=Fork bylo převeden na běžný repozitář.
settings.transfer=Předat vlastnictví
settings.transfer.title=Předat vlastnictví
settings.transfer.rejected=Převod repozitáře byl zamítnut.
settings.transfer.success=Převod repozitáře byl úspěšný.
settings.transfer_abort=Zrušit převod
@ -2178,7 +2179,7 @@ settings.trust_model.collaborator.long=Spolupracovník: Důvěřovat podpisům s
settings.trust_model.collaborator.desc=Platné podpisy spolupracovníků tohoto repozitáře budou označeny jako „důvěryhodné“ - (ať se shodují s autorem, či nikoli). V opačném případě budou platné podpisy označeny jako „nedůvěryhodné“, pokud se podpis shoduje s přispěvatelem a „neodpovídající“, pokud ne.
settings.trust_model.committer=Přispěvatel
settings.trust_model.committer.long=Přispěvatel: Důvěřovat podpisům, které odpovídají autorům (což odpovídá GitHub a přinutí Giteu nastavit jako tvůrce pro Giteou podepsané revize)
settings.trust_model.committer.desc=Platné podpisy budou označeny pouze jako „důvěryhodné“, pokud se shodují s přispěvatelem, jinak budou označeny jako „neodpovídající“. To přinutí Giteu, aby byla přispěvatelem podepsaných commitů se skutečným přispěvatelem označeným jako Co-authored-by: a Co-committed-by: na konci commitu. Výchozí klíč Gitea musí odpovídat uživateli v databázi.
settings.trust_model.committer.desc=Platné podpisy budou označeny jako „důvěryhodné“ pouze, pokud se shodují s přispěvatelem, v opačném případě budou označeny jako „neodpovídající“. To přinutí Forgejo, aby bylo přispěvatelem podepsaných commitů se skutečným přispěvatelem označeným jako Co-authored-by: a Co-committed-by: na konci commitu. Výchozí klíč Forgejo musí odpovídat uživateli v databázi.
settings.trust_model.collaboratorcommitter=Spolupracovník+Přispěvatel
settings.trust_model.collaboratorcommitter.long=Spolupracovník+Přispěvatel: Důvěřovat podpisům od spolupracovníků, které odpovídají tvůrci revize
settings.trust_model.collaboratorcommitter.desc=Platné podpisy spolupracovníků tohoto repozitáře budou označeny jako „důvěryhodné“, pokud se shodují s přispěvatelem. V opačném případě budou platné podpisy označeny jako "nedůvěryhodné", pokud se podpis shoduje s přispěvatelem a „neodpovídajícím“ v opačném případě. To přinutí Giteu, aby byla označena jako přispěvatel podepsaných commitů se skutečným přispěvatelem označeným jako Co-Authored-By: a Co-Committed-By: na konci commitu. Výchozí klíč Forgejo musí odpovídat uživateli v databázi.
@ -2559,7 +2560,7 @@ release.tag_helper_existing=Stávající značka.
release.title=Název vydání
release.title_empty=Název nesmí být prázdný.
release.message=Popište toto vydání
release.prerelease_desc=Označit jako předběžná verze
release.prerelease_desc=Označit jako předběžnou verzi
release.prerelease_helper=Označit vydání jako nevhodné pro produkční nasazení.
release.cancel=Zrušit
release.publish=Zveřejnit vydání
@ -2579,7 +2580,7 @@ release.tag_already_exist=Tato značka již existuje.
release.downloads=Soubory ke stažení
release.download_count=Stažení: %s
release.add_tag_msg=Použít název a obsah vydání jako zprávu značky.
release.add_tag=Vytvořit pouze značku
release.add_tag=Vytvořit značku
release.releases_for=Vydání pro %s
release.tags_for=Značky pro %s
@ -2721,7 +2722,7 @@ pulls.title_desc_one = žádá o sloučení %[1]d commitu z <code>%[2]s</code> d
pulls.merged_title_desc_one = sloučil %[1]d commit z <code>%[2]s</code> do <code>%[3]s</code> %[4]s
open_with_editor = Otevřít pomocí %s
commits.search_branch = Tato větev
editor.commit_id_not_matching = ID commitu se neshoduje s ID commitu, který jste upravovali. Proveďte commit do nové větve a poté je slučte.
editor.commit_id_not_matching = Tento soubor se během úpravy změnil. Proveďte commit do nové větve a poté je slučte.
pulls.ready_for_review = Připraveni na posouzení?
settings.rename_branch_failed_protected = Nepodařilo se přejmenovat větev %s, jelikož se jedná o chráněnou větev.
editor.push_out_of_date = Push je nejspíše zastaralý.
@ -2754,6 +2755,8 @@ settings.matrix.room_id_helper = ID místnosti lze získat z webového klienta E
settings.matrix.access_token_helper = Pro tuto akci je doporučeno vytvořit oddělený účet Matrix. Přístupový token lze získat z webového klienta Element (v soukromé/anonymní kartě) > Uživatelské menu (vlevo nahoře) > Všechna nastavení > O aplikaci a pomoc > Rozšířené > Přístupový token (přímo pod adresou domovského serveru). Soukromou/anonymní kartu zavřete (odhlášením token zneplatníte).
release.hide_archive_links = Skrýt automaticky generované archivy
release.hide_archive_links_helper = Pro toto vydání skrýt automaticky generované archivy zdrojového kódu. Užitečné například pokud nahráváte své vlastní.
settings.transfer.button = Převést vlastnictví
settings.transfer.modal.title = Převést vlastnictví
[graphs]
component_loading_info = Tohle může chvíli trvat…
@ -2823,9 +2826,9 @@ settings.labels_desc=Přidejte štítky, které mohou být použity pro problém
members.membership_visibility=Viditelnost členství:
members.public=Viditelný
members.public_helper=skrýt
members.public_helper=Skrýt
members.private=Skrytý
members.private_helper=zviditělnit
members.private_helper=Zviditelnit
members.member_role=Role člena:
members.owner=Vlastník
members.member=Člen
@ -2888,6 +2891,7 @@ teams.invite.title=Byli jste pozváni do týmu <strong>%s</strong> v organizaci
teams.invite.by=Pozvání od %s
teams.invite.description=Pro připojení k týmu klikněte na tlačítko níže.
follow_blocked_user = Tuto organizaci nemůžete sledovat, protože jste v ní zablokovaní.
open_dashboard = Otevřít nástěnku
[admin]
dashboard=Přehled
@ -2978,8 +2982,8 @@ dashboard.total_gc_time=Celková pauza GC
dashboard.total_gc_pause=Celková pauza GC
dashboard.last_gc_pause=Poslední pauza GC
dashboard.gc_times=Časy GC
dashboard.delete_old_actions=Odstranit všechny staré akce z databáze
dashboard.delete_old_actions.started=Začalo odstraňování všech starých akcí z databáze.
dashboard.delete_old_actions=Odstranit všechny staré aktivity z databáze
dashboard.delete_old_actions.started=Spuštěno odstraňování všech starých aktivit z databáze.
dashboard.update_checker=Kontrola aktualizací
dashboard.delete_old_system_notices=Odstranit všechna stará systémová upozornění z databáze
dashboard.gc_lfs=Úklid LFS meta objektů
@ -2987,7 +2991,7 @@ dashboard.stop_zombie_tasks=Zastavit zombie úlohy
dashboard.stop_endless_tasks=Zastavit nekonečné úlohy
dashboard.cancel_abandoned_jobs=Zrušit opuštěné úlohy
dashboard.start_schedule_tasks=Spustit naplánované úlohy
dashboard.sync_branch.started=Synchronizace větví byla spuštěna
dashboard.sync_branch.started=Synchronizace větví spuštěna
dashboard.sync_tag.started=Synchronizace značek spuštěna
dashboard.rebuild_issue_indexer=Znovu sestavit index úkolů
@ -3006,7 +3010,7 @@ users.repos=Repozitáře
users.created=Vytvořen
users.last_login=Poslední přihlášení
users.never_login=Nikdy nepřihlášen
users.send_register_notify=Odeslat upozornění při registraci uživatele
users.send_register_notify=Poslat oznámení o registraci e-mailem
users.new_success=Uživatelský účet „%s“ byl vytvořen.
users.edit=Upravit
users.auth_source=Zdroj ověřování
@ -3441,6 +3445,7 @@ config_summary = Souhrn
config.open_with_editor_app_help = Editory v nabídce „Otevřít pomocí“ v nabídce klonování. Ponechte prázdné pro použití výchozího editoru (zobrazíte jej rozšířením).
config_settings = Nastavení
auths.tip.gitlab_new = Zaregistrujte si novou aplikaci na https://gitlab.com/-/profile/applications
auths.default_domain_name = Výchozí doménové jméno použité pro e-mailovou adresu
[action]
create_repo=vytvořil/a repozitář <a href="%s">%s</a>
@ -3658,7 +3663,7 @@ owner.settings.cargo.initialize.success=Index Cargo byl úspěšně vytvořen.
owner.settings.cargo.rebuild=Znovu vytvořit index
owner.settings.cargo.rebuild.error=Obnovení Cargo indexu se nezdařilo: %v
owner.settings.cargo.rebuild.success=Cargo Index byl úspěšně obnoven.
owner.settings.cleanuprules.title=Správa pravidel čištění
owner.settings.cleanuprules.title=Pravidla čištění
owner.settings.cleanuprules.add=Přidat pravidlo pro čištění
owner.settings.cleanuprules.edit=Upravit pravidlo pro čištění
owner.settings.cleanuprules.none=Zatím nejsou k dispozici žádná pravidla čištění.
@ -3684,6 +3689,7 @@ owner.settings.chef.keypair.description=Pro autentizaci do registru Chef je zapo
rpm.repository.multiple_groups = Tento balíček je dostupný v několika skupinách.
owner.settings.cargo.rebuild.description = Opětovné sestavení může být užitečné, pokud není index synchronizován s uloženými balíčky Cargo.
owner.settings.cargo.rebuild.no_index = Opětovné vytvoření selhalo, nebyl inicializován žádný index.
npm.dependencies.bundle = Přidružené závislosti
[secrets]
secrets=Tajné klíče
@ -3703,7 +3709,7 @@ management=Správa tajných klíčů
[actions]
actions=Akce
unit.desc=Spravovat akce
unit.desc=Spravovat integrované pipeliny CI/CD pomocí funkce Forgejo Actions
status.unknown=Neznámý
status.waiting=Čekání

View file

@ -149,10 +149,10 @@ filter.is_archived = Archiviert
filter.not_archived = Nicht archiviert
filter.is_fork = Geforkt
filter.not_fork = Nicht geforkt
filter.is_mirror = Gemirrort
filter.not_mirror = Nicht gemirrort
filter.is_template = Vorlage
filter.not_template = Keine Vorlage
filter.is_mirror = Gespiegelt
filter.not_mirror = Nicht gespiegelt
filter.is_template = Vorlagen
filter.not_template = Keine Vorlagen
filter.public = Öffentlich
filter.private = Privat
more_items = Mehr Einträge
@ -426,7 +426,7 @@ tab_openid=OpenID
oauth_signup_tab=Neues Konto registrieren
oauth_signup_title=Neuen Account fertigstellen
oauth_signup_submit=Konto vervollständigen
oauth_signin_tab=Mit existierendem Konto verbinden
oauth_signin_tab=Mit einem existierenden Konto verbinden
oauth_signin_title=Anmelden um verbundenes Konto zu autorisieren
oauth_signin_submit=Konto verbinden
oauth.signin.error=Beim Verarbeiten der Autorisierungsanfrage ist ein Fehler aufgetreten. Wenn dieser Fehler weiterhin besteht, wende dich bitte an deinen Administrator.
@ -685,7 +685,7 @@ avatar=Profilbild
ssh_gpg_keys=SSH- / GPG-Schlüssel
social=Soziale Konten
applications=Anwendungen
orgs=Organisationen verwalten
orgs=Organisationen
repos=Repositorys
delete=Konto löschen
twofa=Zwei-Faktor-Authentifizierung (TOTP)
@ -759,8 +759,8 @@ password_change_disabled=Benutzer, die nicht von Forgejo verwaltet werden, könn
emails=E-Mail-Adressen
manage_emails=E-Mail-Adressen verwalten
manage_themes=Standard-Theme auswählen
manage_openid=OpenID-Adressen verwalten
manage_themes=Standard-Theme
manage_openid=OpenID-Adressen
email_desc=Deine primäre E-Mail-Adresse wird für Benachrichtigungen, Passwort-Wiederherstellung und, sofern sie nicht versteckt ist, web-basierte Git-Operationen verwendet.
theme_desc=Dies wird dein Standard-Theme auf der Seite sein.
primary=Primär
@ -871,7 +871,7 @@ social_desc=Diese sozialen Konten können verwendet werden, um sich bei deinem K
unbind=Trennen
unbind_success=Das soziale Konto wurde erfolgreich entfernt.
manage_access_token=Zugriffstokens verwalten
manage_access_token=Zugriffstokens
generate_new_token=Neuen Token erzeugen
tokens_desc=Diese Tokens gewähren vollen Zugriff auf dein Konto via die Forgejo-API.
token_name=Token-Name
@ -950,7 +950,7 @@ webauthn_nickname=Nickname
webauthn_delete_key=Sicherheitsschlüssel entfernen
webauthn_delete_key_desc=Wenn du einen Sicherheitsschlüssel entfernst, kannst du dich nicht mehr mit ihm anmelden. Fortfahren?
manage_account_links=Verknüpfte Accounts verwalten
manage_account_links=Verknüpfte Accounts
manage_account_links_desc=Diese externen Accounts sind mit deinem Forgejo-Account verknüpft.
account_links_not_available=Es sind keine externen Accounts mit diesem Forgejo-Account verknüpft.
link_account=Account verbinden
@ -993,13 +993,14 @@ blocked_users = Blockierte Benutzer
blocked_since = Blockiert seit %s
change_password = Passwort ändern
hints = Hinweise
additional_repo_units_hint = Zur Aktivierung zusätzlicher Repository-Einheiten ermutigen
additional_repo_units_hint = Aktivierung zusätzlicher Repository-Einheiten vorschlagen
update_hints = Hinweise aktualisieren
update_hints_success = Hinweise wurden aktualisiert.
additional_repo_units_hint_description = Einen „Mehr Einheiten hinzufügen …“-Button für Repositorys, welche nicht alle verfügbaren Einheiten aktiviert haben, anzeigen.
pronouns = Pronomen
pronouns_custom = Eigene
pronouns_unspecified = Nicht spezifiziert
language.title = Standardsprache
[repo]
owner=Besitzer
@ -1957,7 +1958,7 @@ wiki.last_commit_info=%s hat diese Seite %s bearbeitet
wiki.edit_page_button=Bearbeiten
wiki.new_page_button=Neue Seite
wiki.file_revision=Seitenversion
wiki.wiki_page_revisions=Wiki Änderungsverlauf
wiki.wiki_page_revisions=Seiten-Änderungsverlauf
wiki.back_to_wiki=Zurück zur Wiki-Seite
wiki.delete_page_button=Seite löschen
wiki.delete_page_notice_1=Das Löschen der Wiki-Seite „%s“ kann nicht rückgängig gemacht werden. Fortfahren?
@ -2124,12 +2125,12 @@ settings.pulls.default_allow_edits_from_maintainers=Änderungen von Maintainern
settings.releases_desc=Repository-Releases aktivieren
settings.packages_desc=Repository Packages Registry aktivieren
settings.projects_desc=Repository-Projekte aktivieren
settings.actions_desc=Repository-Actions aktivieren
settings.actions_desc=Aktiviere integrierte CI/CD-Pipelines mit Forgejo-Actions
settings.admin_settings=Administratoreinstellungen
settings.admin_enable_health_check=Repository-Health-Checks aktivieren (git fsck)
settings.admin_code_indexer=Code-Indexer
settings.admin_stats_indexer=Code-Statistik-Indexer
settings.admin_indexer_commit_sha=Zuletzt indizierter SHA
settings.admin_indexer_commit_sha=Zuletzt indizierter Commit
settings.admin_indexer_unindexed=Unindiziert
settings.reindex_button=Zur Warteschlange für erneutes Indizieren hinzufügen
settings.reindex_requested=Erneutes Indizieren angefordert
@ -2146,7 +2147,7 @@ settings.convert_fork_desc=Du kannst diesen Fork in ein normales Repository umwa
settings.convert_fork_notices_1=Dieser Vorgang konvertiert den Fork in ein normales Repository und kann nicht rückgängig gemacht werden.
settings.convert_fork_confirm=Repository umwandeln
settings.convert_fork_succeed=Der Fork wurde in ein normales Repository konvertiert.
settings.transfer=Besitz übertragen
settings.transfer.title=Besitz übertragen
settings.transfer.rejected=Repository-Übertragung wurde abgelehnt.
settings.transfer.success=Repository-Übertragung war erfolgreich.
settings.transfer_abort=Übertragung abbrechen
@ -2576,7 +2577,7 @@ release.tag_already_exist=Dieser Tag-Name existiert bereits.
release.downloads=Downloads
release.download_count=Downloads: %s
release.add_tag_msg=Titel und Beschreibung des Releases als Tag Nachricht verwenden.
release.add_tag=Nur Tag erstellen
release.add_tag=Tag erstellen
release.releases_for=Releases für %s
release.tags_for=Tags für %s
@ -2702,12 +2703,12 @@ activity.navbar.code_frequency = Code-Frequenz
file_follow = Symlink folgen
error.broken_git_hook = Die Git-Hooks des Repositorys scheinen kaputt zu sein. Bitte folge der <a target="_blank" rel="noreferrer" href="%s">Dokumentation</a> um sie zu reparieren, dann pushe einige Commits um den Status zu aktualisieren.
pulls.merged_title_desc_one = hat %[1]d Commit von <code>%[2]s</code> nach <code>%[3]s</code> %[4]s zusammengeführt
pulls.title_desc_one = möchte %[1]d Commit von <code>%[2]s</code> nach <code id="branch_target">%[3]s</code> zusammengeführen
pulls.title_desc_one = möchte %[1]d Commit von <code>%[2]s</code> nach <code id="branch_target">%[3]s</code> zusammenführen
open_with_editor = Öffnen mit %s
commits.search_branch = Dieser Branch
pulls.ready_for_review = Bereit zum Review?
settings.rename_branch_failed_protected = Branch %s kann nicht umbenannt werden, weil er ein geschützter Branch ist.
editor.commit_id_not_matching = Die Commit-ID passt nicht zur ID die du bearbeitet hast hast. Committe in einen neuen Branch, dann führe einen Merge durch.
editor.commit_id_not_matching = Die Datei wurde geändert, während du sie bearbeitet hast. Committe in einen neuen Branch, dann führe einen Merge durch.
editor.push_out_of_date = Der Push scheint veraltet zu sein.
n_commit_few = %s Commits
n_branch_one = %s Branch
@ -2738,6 +2739,8 @@ settings.sourcehut_builds.access_token_helper = Zugangstoken der die JOBS:RW-Fre
settings.matrix.access_token_helper = Es wird empfohlen, einen dedizierten Matrix-Account hierfür anzulegen. Der Zugangstoken kann in einem Incognito-Tab über den Element-Webclient geholt werden: Benutzermenü (oben links) > Alle Einstellungen > Hilfe & Über > Erweitert > Zugangstoken (direkt unter der Homeserver-URL). Schließe das Incognito-Tab dann (Abmelden würde den Token ungültig werden lassen).
release.hide_archive_links = Automatisch generierte Archive verstecken
release.hide_archive_links_helper = Verstecke automatisch generierte Quellcodearchive für diesen Release. Zum Beispiel, wenn du deine eigenen hochlädst.
settings.transfer.button = Besitz übertragen
settings.transfer.modal.title = Besitz übertragen
[graphs]
@ -2865,6 +2868,7 @@ teams.invite.title=Du wurdest eingeladen, dem Team <strong>%s</strong> in der Or
teams.invite.by=Von %s eingeladen
teams.invite.description=Bitte klicke auf die folgende Schaltfläche, um dem Team beizutreten.
follow_blocked_user = Du kannst dieser Organisation nicht folgen, weil diese Organisation dich blockiert hat.
open_dashboard = Übersicht öffnen
[admin]
dashboard=Übersicht
@ -2957,8 +2961,8 @@ dashboard.total_gc_time=Gesamte GC-Pause
dashboard.total_gc_pause=Gesamte GC-Pause
dashboard.last_gc_pause=Letzte GC-Pause
dashboard.gc_times=GC-Zeiten
dashboard.delete_old_actions=Alle alten Aktionen aus der Datenbank löschen
dashboard.delete_old_actions.started=Löschen aller alten Aktionen in der Datenbank gestartet.
dashboard.delete_old_actions=Alle alten Aktivitäten aus der Datenbank löschen
dashboard.delete_old_actions.started=Löschen aller alten Aktivitäten aus der Datenbank gestartet.
dashboard.update_checker=Update-Checker
dashboard.delete_old_system_notices=Alle alten Systemmeldungen aus der Datenbank löschen
dashboard.gc_lfs=Garbage-Collection für LFS Meta-Objekte ausführen
@ -2984,7 +2988,7 @@ users.repos=Repos
users.created=Registriert am
users.last_login=Letzte Anmeldung
users.never_login=Hat sich noch nie eingeloggt
users.send_register_notify=Benutzer-Registrierungsbenachrichtigung senden
users.send_register_notify=Benachrichtigung über Registrierung per E-Mail
users.new_success=Der Account „%s“ wurde erstellt.
users.edit=Bearbeiten
users.auth_source=Authentifizierungsquelle
@ -3392,7 +3396,7 @@ notices.desc=Beschreibung
notices.op=Aktion
notices.delete_success=Diese Systemmeldung wurde gelöscht.
self_check.database_fix_mysql = Für MySQL-/MariaDB-Benutzer: Du kannst den Befehl „gitea doctor convert“ verwenden, um die Collation-Probleme zu lösen, oder du kannst das Problem mit „ALTER … COLLATE …“-SQLs manuell lösen.
dashboard.sync_tag.started = Tags-Synchronisierung gestartet
dashboard.sync_tag.started = Tag-Synchronisierung gestartet
self_check.database_collation_case_insensitive = Datenbank benutzt eine Collation %s, welcher der Groß-/Kleinschreibung egal ist. Obwohl Forgejo damit arbeiten könnte, könnte es ein paar seltene Fälle geben, bei denen es nicht wie erwartet funktioniert.
self_check = Selbstprüfung
dashboard.sync_repo_tags = Tags aus Git-Daten zu Datenbank synchronisieren
@ -3407,6 +3411,7 @@ config_settings = Einstellungen
config.open_with_editor_app_help = Die „Öffnen mit“-Editoren für das Klonmenü. Falls es leer gelassen wird, wird der Standardwert benutzt. Erweitern, um den Standardwert zu sehen.
config_summary = Zusammenfassung
auths.tip.gitlab_new = Registriere eine neue Anwendung auf https://gitlab.com/-/profile/applications
auths.default_domain_name = Standarddomainname, der für die E-Mail-Adresse benutzt wird
[action]
@ -3625,7 +3630,7 @@ owner.settings.cargo.rebuild=Index neu erstellen
owner.settings.cargo.rebuild.description=Neubauen kann hilfreich sein, wenn der Index nicht mit den gespeicherten Cargo-Paketen synchronisiert ist.
owner.settings.cargo.rebuild.error=Cargo-Index konnte nicht neu erstellt werden: %v
owner.settings.cargo.rebuild.success=Der Cargo-Index wurde erfolgreich neu erstellt.
owner.settings.cleanuprules.title=Bereinigungsregeln verwalten
owner.settings.cleanuprules.title=Bereinigungsregeln
owner.settings.cleanuprules.add=Bereinigungsregel hinzufügen
owner.settings.cleanuprules.edit=Bereinigungsregel bearbeiten
owner.settings.cleanuprules.none=Es bestehen derzeit keine Bereinigungsregeln.
@ -3652,6 +3657,7 @@ rpm.repository = Repository-Info
rpm.repository.multiple_groups = Dieses Paket ist in mehreren Gruppen verfügbar.
rpm.repository.architectures = Architekturen
owner.settings.cargo.rebuild.no_index = Kann nicht erneut erzeugen, es wurde kein Index initialisiert.
npm.dependencies.bundle = Gebündelte Abhängigkeiten
[secrets]
secrets=Secrets
@ -3671,7 +3677,7 @@ management=Secrets verwalten
[actions]
actions=Actions
unit.desc=Actions verwalten
unit.desc=Integrierte CI/CD-Pipelines mit Forgejo-Actions verwalten
status.unknown=Unbekannt
status.waiting=Wartend

View file

@ -144,12 +144,12 @@ value=Τιμή
toggle_menu = Μενού
confirm_delete_artifact = Είστε βέβαιοι πως θέλετε να διαγράψετε το προϊόν «%s»;
filter = Φίλτρο
filter.is_archived = Αρχειοθετημένο
filter.is_archived = Αρχειοθετημένα
filter.clear = Απενεργοποίηση φίλτρου
filter.not_archived = Μη αρχειοθετημένα
filter.is_template = Πρότυπο
filter.public = Δημόσιο
filter.private = Ιδιωτικό
filter.is_template = Πρότυπα
filter.public = Δημόσια
filter.private = Ιδιωτικά
filter.not_fork = Εξαίρεση fork
filter.is_mirror = Είδωλα
filter.not_mirror = Εξαίρεση ειδώλων
@ -169,7 +169,7 @@ number_of_contributions_in_the_last_12_months=%s συνεισφορές τους
contributions_zero=Χωρίς συνεισφορές
less=Λιγότερα
more=Περισσότερα
contributions_format = {contributions} στις {day} του μήνα {month} του έτους {year}
contributions_format = {contributions} στις {day} {month} του έτους {year}
contributions_one = συνεισφορά
contributions_few = συνεισφορές
@ -497,7 +497,7 @@ 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=<b>@%[1]s</b> άφησε σχόλιο σε αυτό το 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.
@ -645,11 +645,11 @@ overview=Επισκόπηση
following_few=%d ακολουθεί
follow=Ακολούθηση
unfollow=Να μην ακολουθώ
user_bio=Βιογραφικό
user_bio=Περιγραφή
disabled_public_activity=Αυτός ο χρήστης έχει απενεργοποιήσει τη δημόσια προβολή της δραστηριότητας του.
email_visibility.limited=Η διεύθυνση email σας είναι ορατή σε όλους τους ταυτοποιημένους χρήστες
email_visibility.limited=Η διεύθυνση email σας είναι ορατή σε κάθε ταυτοποιημένο χρήστη
email_visibility.private=Η διεύθυνση email σας είναι ορατή μόνο σε εσάς και στους διαχειριστές
show_on_map=Δείτε το μέρος αυτό σε έναν χάρτη
show_on_map=Προβολή σε χάρτη
settings=Ρυθμίσεις χρήστη
form.name_reserved=Το όνομα χρήστη «%s» είναι δεσμευμένο.
@ -945,7 +945,7 @@ webauthn_key_loss_warning=Αν χάσετε τα κλειδιά ασφαλεία
webauthn_alternative_tip=Μπορεί να θέλετε να ρυθμίσετε μια πρόσθετη μέθοδο ταυτοποίησης.
manage_account_links=Διαχείριση Συνδεδεμένων Λογαριασμών
manage_account_links_desc=Αυτοί οι εξωτερικοί λογαριασμοί είναι συνδεδεμένοι στον Forgejo λογαριασμό σας.
manage_account_links_desc=Αυτοί οι εξωτερικοί λογαριασμοί είναι συνδεδεμένοι στον λογαριασμό Forgejo σας.
account_links_not_available=Προς το παρόν δεν υπάρχουν εξωτερικοί λογαριασμοί συνδεδεμένοι με τον λογαριασμό σας στο Forgejo.
link_account=Σύνδεση Λογαριασμού
remove_account_link=Αφαίρεση συνδεδεμένου λογαριασμού
@ -965,7 +965,7 @@ delete_account_title=Διαγραφή λογαριασμού χρήστη
delete_account_desc=Είστε βέβαιοι ότι θέλετε να διαγράψετε μόνιμα αυτό τον λογαριασμό;
email_notifications.enable=Ενεργοποίηση ειδοποιήσεων email
email_notifications.onmention=Να λαμβάνω email μόνο όταν με αναφέρουν
email_notifications.onmention=Να λαμβάνω email μόνο όταν αναφέρομαι
email_notifications.disable=Απενεργοποίηση ειδοποιήσεων email
email_notifications.submit=Ορισμός κύριου email
email_notifications.andyourown=Και τις δικιές σας ειδοποιήσεις
@ -980,12 +980,12 @@ visibility.private_tooltip=Ορατό μόνο στα μέλη των οργαν
blocked_users_none = Δεν έχετε αποκλείσει κανέναν χρήστη.
blocked_since = Αποκλεισμένος από %s
user_unblock_success = Η άρση αποκλεισμού του χρήστη ήταν επιτυχής.
change_password = Αλλαγή κωδικού πρόσβασης
change_password = Αλλαγή κωδικού
blocked_users = Αποκλεισμένοι χρήστες
user_block_success = Ο αποκλεισμός του χρήστη ήταν επιτυχής.
additional_repo_units_hint = Να γίνεται ενθάρρυνση προσθήκης μονάδων σε αποθετήρια
pronouns = Αντωνυμίες
pronouns_custom = Κάποια άλλη προτίμηση
pronouns_custom = κάτι άλλο
pronouns_unspecified = Απροσδιόριστες
hints = Συμβουλές
additional_repo_units_hint_description = Εμφάνιση κουμπιού «Προσθήκη μονάδων...» σε αποθετήρια που δεν έχουν ενεργοποιημένες όλες τις διαθέσιμες μονάδες.
@ -1042,7 +1042,7 @@ trust_model_helper=Επιλέξτε ένα μοντέλο εμπιστοσύνη
trust_model_helper_collaborator=Συνεργάτης: Εμπιστοσύνη υπογραφών από συνεργάτες
trust_model_helper_committer=Υποβολέας: Εμπιστοσύνη των υπογραφών που ταιριάζουν με τους υποβολείς
trust_model_helper_collaborator_committer=Συνεργάτης+Υποβολέας: Εμπιστοσύνη των υπογραφών από συνεργάτες που ταιριάζουν με τον υποβολέα
trust_model_helper_default=Προεπιλογή: Χρήση προεπιλεγμένου μοντέλου εμπιστοσύνης για αυτήν την εγκατάσταση
trust_model_helper_default=Προεπιλογή: Χρήση προεπιλεγμένου μοντέλου εμπιστοσύνης της υπηρεσίας
create_repo=Δημιουργία αποθετηρίου
default_branch=Προεπιλεγμένος κλάδος
default_branch_label=προεπιλογή
@ -1183,9 +1183,9 @@ fork_from_self=Δεν μπορείτε να κάνετε fork σε ένα απο
fork_guest_user=Συνδεθείτε για να κάνετε fork αυτό το αποθετήριο.
watch_guest_user=Συνδεθείτε για να παρακολουθήσετε αυτό το αποθετήριο.
star_guest_user=Συνδεθείτε για να δώσετε ένα αστέρι σε αυτό το αποθετήριο.
unwatch=Μη Παρακολούθηση
unwatch=Παύση ακολούθησης
watch=Παρακολούθηση
unstar=Όχι Αστέρι
unstar=Αφαίρεση αστεριού
star=Αστέρι
fork=Fork
download_archive=Λήψη αποθετηρίου
@ -1340,7 +1340,7 @@ commits.nothing_to_compare=Αυτοί οι κλάδοι είναι όμοιοι.
commits.search=Αναζήτηση υποβολών…
commits.search.tooltip=Μπορείτε να προθέτετε τις λέξεις-κλειδιά με "author:", "committer:", "after:", ή "before:", π.χ. "επαναφορά author:Alice before:2019-01-13".
commits.find=Αναζήτηση
commits.search_all=Όλοι Οι Κλάδοι
commits.search_all=Όλοι οι κλάδοι
commits.author=Συγγραφέας
commits.message=Μήνυμα
commits.date=Ημερομηνία
@ -1475,7 +1475,7 @@ issues.change_title_at=`άλλαξε το τίτλο από <b><strike>%s</strik
issues.change_ref_at=`άλλαξε την αναφορά από <b><strike>%s</strike></b> σε <b>%s</b> %s`
issues.remove_ref_at=`αφαίρεση την αναφορά <b>%s</b> %s`
issues.add_ref_at=`πρόσθεσε την αναφορά <b>%s</b> %s`
issues.delete_branch_at=`διέγραψε το κλάδο <b>%s</b> %s`
issues.delete_branch_at=`διέγραψε τον κλάδο <b>%s</b> %s`
issues.filter_label=Σήμα
issues.filter_label_exclude=`Χρησιμοποιήστε <code>alt</code> + <code>κάντε κλικ/Enter</code> για να εξαιρέσετε τις σημάνσεις`
issues.filter_label_no_select=Όλα τα σήματα
@ -1503,8 +1503,8 @@ issues.filter_type.reviewed_by_you=Ελέγχθηκε από εσάς
issues.filter_sort=Ταξινόμηση
issues.filter_sort.latest=Νεότερα
issues.filter_sort.oldest=Παλαιότερα
issues.filter_sort.recentupdate=Ενημερώθηκαν πρόσφατα
issues.filter_sort.leastupdate=Ενημερώθηκαν παλαιότερα
issues.filter_sort.recentupdate=Πρόσφατη δραστηριότητα
issues.filter_sort.leastupdate=Ανενεργή δραστηριότητα
issues.filter_sort.mostcomment=Περισσότερα σχόλια
issues.filter_sort.leastcomment=Λιγότερα σχόλια
issues.filter_sort.nearduedate=Πλησιέστερη ημερομηνία παράδοσης
@ -1529,9 +1529,9 @@ pulls.merged_by_fake=από %[2]s συγχωνεύθηκε %[1]s
issues.closed_by=από <a href="%[2]s">%[3]s</a> έκλεισαν %[1]s
issues.opened_by_fake=άνοιξε το %[1]s από %[2]s
issues.closed_by_fake=από %[2]s έκλεισαν %[1]s
issues.previous=Προηγούμενο
issues.next=Επόμενο
issues.open_title=Ανοικτό
issues.previous=Προηγούμενη
issues.next=Επόμενη
issues.open_title=Ανοιχτά
issues.closed_title=Κλειστά
issues.draft_title=Προσχέδιο
issues.num_comments_1=%d σχόλιο
@ -1602,8 +1602,8 @@ issues.label_deletion_desc=Η διαγραφή ενός σήματος θα το
issues.label_deletion_success=Το σήμα έχει διαγραφεί.
issues.label.filter_sort.alphabetically=Αλφαβητικά
issues.label.filter_sort.reverse_alphabetically=Αντίστροφα αλφαβητικά
issues.label.filter_sort.by_size=Μικρότερο μέγεθος
issues.label.filter_sort.reverse_by_size=Μεγαλύτερο μέγεθος
issues.label.filter_sort.by_size=Μικρότερου μεγέθους
issues.label.filter_sort.reverse_by_size=Μεγαλύτερου μεγέθους
issues.num_participants_few=%d Συμμετέχοντες
issues.attachment.open_tab=`Πατήστε εδώ για να ανοίξετε το «%s» σε μια νέα καρτέλα`
issues.attachment.download=`Πατήστε εδώ για να κατεβάσετε το «%s»`
@ -1708,7 +1708,7 @@ issues.dependency.add_error_cannot_create_circular=Δεν μπορείτε να
issues.dependency.add_error_dep_not_same_repo=Και τα δύο ζητήματα πρέπει να βρίσκονται στο ίδιο αποθετήριο.
issues.review.self.approval=Δεν μπορείτε να εγκρίνετε το δικό σας pull request.
issues.review.self.rejection=Δεν μπορείτε να ζητήσετε αλλαγές στο δικό σας pull request.
issues.review.approve=ενέκρινε αυτές τις αλλαγές %s
issues.review.approve=ενέκρινε τις αλλαγές %s
issues.review.comment=αξιολόγησε %s
issues.review.dismissed=απέρριψε την αξιολόγηση του/της %s %s
issues.review.dismissed_label=Απορρίφθηκε
@ -1773,8 +1773,8 @@ pulls.showing_specified_commit_range=Εμφάνιση μόνο των αλλαγ
pulls.select_commit_hold_shift_for_range=Επιλέξτε υποβολή. Κρατήστε πατημένο το shift + κάντε κλικ για να επιλέξετε ένα εύρος
pulls.review_only_possible_for_full_diff=Η αξιολόγηση είναι δυνατή μόνο κατά την προβολή της πλήρης διαφοράς
pulls.filter_changes_by_commit=Φιλτράρισμα κατά υποβολή
pulls.nothing_to_compare=Αυτοί οι κλάδοι είναι όμοιοι. Δεν υπάρχει ανάγκη να δημιουργήσετε ένα pull request.
pulls.nothing_to_compare_and_allow_empty_pr=Αυτοί οι κλάδοι είναι ίσοι. Αυτό το PR θα είναι κενό.
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>`
pulls.create=Δημιουργία pull request
pulls.title_desc_few=θέλει να συγχωνεύσει %[1]d υποβολές από <code>%[2]s</code> σε <code id="branch_target">%[3]s</code>
@ -1877,7 +1877,7 @@ pulls.clear_merge_message_hint=Η εκκαθάριση του μηνύματος
pulls.auto_merge_button_when_succeed=(Όταν οι έλεγχοι πετύχουν)
pulls.auto_merge_when_succeed=Αυτόματη συγχώνευση όταν όλοι οι έλεγχοι πετύχουν
pulls.auto_merge_newly_scheduled=Το pull request προγραμματίστηκε για συγχώνευση όταν όλοι οι έλεγχοι πετύχουν.
pulls.auto_merge_has_pending_schedule=%[1]s προγραμμάτισε αυτό το pull request για αυτόματη συγχώνευση όταν όλοι οι έλεγχοι πετύχουν %[2]s.
pulls.auto_merge_has_pending_schedule=%[1]s προγραμμάτισε την αυτόματη συγχώνευση του pull request όταν όλοι οι έλεγχοι πετύχουν %[2]s.
pulls.auto_merge_cancel_schedule=Ακύρωση αυτόματης συγχώνευσης
pulls.auto_merge_not_scheduled=Αυτό το pull request δεν έχει προγραμματιστεί να συγχωνευτεί αυτόματα.
@ -1944,7 +1944,7 @@ wiki=Wiki
wiki.welcome=Καλώς ήρθατε στο Wiki.
wiki.welcome_desc=Το wiki σας επιτρέπει να γράψετε και να μοιραστείτε τεκμηριώσεις (documentation) με άλλους συνεργάτες.
wiki.desc=Γράψτε και μοιραστείτε τεκμηριώσεις με συνεργάτες.
wiki.create_first_page=Δημιουργία της πρώτης σελίδας
wiki.create_first_page=Δημιουργία πρώτης σελίδας
wiki.page=Σελίδα
wiki.filter_page=Φιλτράρισμα σελίδας
wiki.new_page=Σελίδα
@ -1981,7 +1981,7 @@ activity.active_prs_count_1=<strong>%d</strong> ενεργό pull request
activity.active_prs_count_n=<strong>%d</strong> ενεργά pull request
activity.merged_prs_count_1=Συγχωνευμένο pull request
activity.merged_prs_count_n=Συγχωνευμένα pull request
activity.opened_prs_count_1=Συνιστώμενο pull request
activity.opened_prs_count_1=Νέα pull request
activity.opened_prs_count_n=Συνιστώμενα pull requests
activity.title.user_1=%d χρήστη
activity.title.user_n=%d χρήστες
@ -1993,12 +1993,12 @@ activity.merged_prs_label=Συγχωνευμένο
activity.opened_prs_label=Προτεινόμενα
activity.active_issues_count_1=<strong>%d</strong> ενεργό ζήτημα
activity.active_issues_count_n=<strong>%d</strong> ενεργά ζητήματα
activity.closed_issues_count_1=Κλειστό ζήτημα
activity.closed_issues_count_1=Κλεισμένα ζητήματα
activity.closed_issues_count_n=Κλειστά ζητήματα
activity.title.issues_1=%d ζήτημα
activity.title.issues_n=%d ζητήματα
activity.title.issues_closed_from=%s έκλεισε από %s
activity.title.issues_created_by=%s δημιουργήθηκε από %s
activity.title.issues_closed_from=%s κλείστηκαν από %s
activity.title.issues_created_by=%s δημιουργήθηκαν από %s
activity.closed_issue_label=Κλειστό
activity.new_issues_count_1=Νέο ζήτημα
activity.new_issues_count_n=Νέα ζητήματα
@ -2059,9 +2059,9 @@ settings.hooks=Webhooks
settings.githooks=Git hooks
settings.basic_settings=Βασικές ρυθμίσεις
settings.mirror_settings=Ρυθμίσεις ειδώλου
settings.mirror_settings.docs=Ρυθμίστε το αποθετήριο σας ώστε να συγχρονίζονται αυτόματα οι υποβολές, ετικέτες και κλάδοι με ένα άλλο αποθετήριο.
settings.mirror_settings.docs.disabled_pull_mirror.instructions=Ρυθμίστε το έργο σας για να ωθούνται αυτόματα οι υποβολές, ετικέτες και κλάδοι σε ένα άλλο αποθετήριο. Τα είδωλα τύπου λήψης έχουν απενεργοποιηθεί από τον διαχειριστή σας.
settings.mirror_settings.docs.disabled_push_mirror.instructions=Ρυθμίστε το έργο σας να τραβά αυτόματα υποβολές, ετικέτες και κλάδους από ένα άλλο αποθετήριο.
settings.mirror_settings.docs=Ρυθμίστε τον αυτόματο συγχρονισμό των υποβολών, ετικετών και κλάδων του αποθετηρίου σας σε ένα άλλο αποθετήριο.
settings.mirror_settings.docs.disabled_pull_mirror.instructions=Ρυθμίστε τον αυτόματο συγχρονισμό των υποβολών, ετικετών και κλάδων του έργου σας με ένα άλλο αποθετήριο. Τα είδωλα τύπου λήψης έχουν απενεργοποιηθεί από τον διαχειριστή σας.
settings.mirror_settings.docs.disabled_push_mirror.instructions=Ρυθμίστε την αυτόματη λήψη υποβολών, ετικετών και κλάδων από ένα άλλο αποθετήριο.
settings.mirror_settings.docs.disabled_push_mirror.pull_mirror_warning=Αυτή τη στιγμή, αυτό μπορεί να γίνει μόνο στο μενού "Νέα Μεταφορά". Για περισσότερες πληροφορίες, συμβουλευτείτε το:
settings.mirror_settings.docs.disabled_push_mirror.info=Τα είδωλα ώθησης έχουν απενεργοποιηθεί από το διαχειριστή σας.
settings.mirror_settings.docs.no_new_mirrors=Το αποθετήριο σας αντιγράφει τις αλλαγές προς ή από ένα άλλο αποθετήριο. Λάβετε υπόψη ότι δεν μπορείτε να δημιουργήσετε νέα είδωλα αυτή τη στιγμή.
@ -2145,7 +2145,7 @@ settings.convert_fork_desc=Μπορείτε να μετατρέψετε αυτό
settings.convert_fork_notices_1=Αυτή η λειτουργία θα μετατρέψει το fork σε ένα κανονικό αποθετήριο και δεν μπορεί να αναιρεθεί.
settings.convert_fork_confirm=Μετατροπή αποθετηρίου
settings.convert_fork_succeed=Το fork έχει μετατραπεί σε κανονικό αποθετήριο.
settings.transfer=Μεταβίβαση ιδιοκτησίας
settings.transfer.title=Μεταβίβαση ιδιοκτησίας
settings.transfer.rejected=Η μεταβίβαση του αποθετηρίου απορρίφθηκε.
settings.transfer.success=Η μεταβίβαση του αποθετηρίου ήταν επιτυχής.
settings.transfer_abort=Ακύρωση μεταβίβασης
@ -2169,7 +2169,7 @@ settings.trust_model.collaborator=Συνεργάτης
settings.trust_model.collaborator.long=Συνεργάτης: Εμπιστοσύνη υπογραφών από συνεργάτες
settings.trust_model.collaborator.desc=Οι έγκυρες υπογραφές που προέρχονται από συνεργάτες του αποθετηρίου θα επισημαίνονται ως "αξιόπιστες" - (ανεξάρτητα αν ο υπογραφόμενος συνεργάτης είναι και ο υποβολέας ή όχι). Διαφορετικά, οι έγκυρες υπογραφές θα επισημανθούν ως "αξιόπιστες" μόνο αν η υπογραφή ταιριάζει με τον υποβολέα και, αλλιώς θα χαρακτηριστούν ως "αταίριαστες".
settings.trust_model.committer=Υποβολέας
settings.trust_model.committer.long=Υποβολέας: Οι υπογραφές εμπιστοσύνης που ταιριάζουν σε υποβολείς (Αυτό ταιριάζει με το GitHub και θα αναγκάσει τις υπογεγραμμένες υποβολές από το Forgejo να το έχουν ως υποβολέα)
settings.trust_model.committer.long=Υποβολέας: Οι υπογραφές εμπιστοσύνης που ταιριάζουν σε υποβολείς (όπως και στο GitHub, θα αναγκάσει τις υπογεγραμμένες υποβολές του Forgejo να έχουν το Forgejo ως υποβολέα)
settings.trust_model.committer.desc=Οι έγκυρες υπογραφές θα σημαίνονται ώς "αξιόπιστη" μόνο εάν ταιριάζουν με τον υποβολέα, διαφορετικά θα σημαίνωνται ως "δεν ταιριάζει". Αυτό αναγκάζει το Forgejo να είναι ο υποβολέας στις υπογεγραμμένες υποβολές με τον πραγματικό υποβολέα να αναφέρεται στην σημείωση Co-authored-by: και Co-committed-by: στην υποβολή. Το προεπιλεγμένο κλειδί Forgejo πρέπει να ταιριάζει σε ένα Χρήστη στη βάση δεδομένων.
settings.trust_model.collaboratorcommitter=Συνεργάτης+Υποβολέας
settings.trust_model.collaboratorcommitter.long=Συνεργάτης+Υποβολέας: Εμπιστοσύνη υπογραφών από συνεργάτες που ταιριάζουν με τον υποβολέα
@ -2691,7 +2691,7 @@ stars = Αστέρια
n_branch_one = %s κλάδος
commits.search_branch = Αυτός ο κλάδος
pulls.title_desc_one = : θα ήθελε να συγχωνεύσει %[1]d υποβολή από τον κλάδο <code>%[2]s</code> στον κλάδο <code id="branch_target">%[3]s</code>
pulls.merged_title_desc_one = : συγχώνευσε %[1]d υποβολή από τον κλάδο <code>%[2]s</code> στον κλάδο <code>%[3]s</code> %[4]s
pulls.merged_title_desc_one = συγχώνευσε %[1]d υποβολή από τον κλάδο <code>%[2]s</code> στον κλάδο <code>%[3]s</code> %[4]s
n_commit_few = %s υποβολές
settings.sourcehut_builds.secrets = Μυστικά
settings.add_webhook.invalid_path = Η τοποθεσία του αρχείου δεν μπορεί να περιέχει κενά, «.» ή «..». Δεν μπορεί να αρχίζει ή να τελειώνει με μία κάθετο.
@ -2871,8 +2871,8 @@ emails=Email χρήστη
config=Διαμόρφωση
notices=Ειδοποιήσεις συστήματος
monitor=Παρακολούθηση
first_page=Πρώτο
last_page=Τελευταίο
first_page=Πρώτη
last_page=Τελευταία
total=Σύνολο: %d
settings=Ρυθμίσεις διαχειριστή
@ -3403,14 +3403,14 @@ self_check.database_collation_case_insensitive = Η βάση δεδομένων
[action]
create_repo=δημιούργησε το αποθετήριο <a href="%s">%s</a>
rename_repo=μετονόμασε το αποθετήριο από <code>%[1]s</code> σε <a href="%[2]s">%[3]s</a>
commit_repo=έκανε push στο <a href="%[2]s">%[3]s</a> σε <a href="%[1]s">%[4]s</a>
commit_repo=έκανε push στο <a href="%[2]s">%[3]s</a> του <a href="%[1]s">%[4]s</a>
create_issue=`άνοιξε το ζήτημα <a href="%[1]s">%[3]s#%[2]s</a>`
close_issue=`έκλεισε το ζήτημα <a href="%[1]s">%[3]s#%[2]s</a>`
reopen_issue=`άνοιξε ξανά το ζήτημα <a href="%[1]s">%[3]s#%[2]s</a>`
create_pull_request=`δημιούργησε το pull request <a href="%[1]s">%[3]s#%[2]s</a>`
close_pull_request=`έκλεισε pull request <a href="%[1]s">%[3]s#%[2]s</a>`
reopen_pull_request=`άνοιξε ξανά το pull request <a href="%[1]s">%[3]s#%[2]s</a>`
comment_issue=`σχολίασε το ζήτημα <a href="%[1]s">%[3]s#%[2]s</a>`
comment_issue=`άφησε σχόλιο στο ζήτημα <a href="%[1]s">%[3]s#%[2]s</a>`
comment_pull=`σχολίασε στο pull request <a href="%[1]s">%[3]s#%[2]s</a>`
merge_pull_request=`συγχώνευσε το pull request <a href="%[1]s">%[3]s#%[2]s</a>`
auto_merge_pull_request=`αυτόματη συγχώνευση του pull request <a href="%[1]s">%[3]s#%[2]s</a>`
@ -3771,7 +3771,7 @@ submodule=Υπομονάδα
code_search_unavailable = Η αναζήτηση κώδικα δεν είναι επί του παρόντος διαθέσιμη. Παρακαλώ επικοινωνήστε με τον διαχειριστή σας.
keyword_search_unavailable = Η αναζήτηση με την χρήση λέξεων-κλειδιών δεν είναι επί του παρόντος διαθέσιμη. Παρακαλώ επικοινωνήστε με τον διαχειριστή σας.
runner_kind = Αναζήτηση runner...
code_search_by_git_grep = Η αναζήτηση κώδικα εκτελείται με την χρήση της εντολής «git grep». Αν ο διαχειριστής σας ενεργοποιήσει ένα ευρετήριο για αποθετήρια («Repository Indexer»), ίσως να παρουσιαστούν καλύτερα αποτελέσματα.
code_search_by_git_grep = Για την αναζήτηση κώδικα, χρησιμοποιείται η εντολή «git grep». Ίσως να παρουσιαστούν καλύτερα αποτελέσματα, αν ο διαχειριστής σας ενεργοποιήσει ένα ευρετήριο για αποθετήρια («Repository Indexer»).
package_kind = Αναζήτηση πακέτων...
project_kind = Αναζήτηση έργων...
branch_kind = Αναζήτηση κλάδων...
@ -3781,7 +3781,7 @@ search = Αναζήτηση...
type_tooltip = Είδος αναζήτησης
fuzzy = Στο περίπου
fuzzy_tooltip = Να συμπεριληφθούν αποτελέσματα που μοιάζουν με τον όρο αναζήτησης
match = Ταιριαστά
match = Ακριβής
match_tooltip = Να συμπεριληφθούν αποτελέσματα που ταιριάζουν με τον όρο αναζήτησης
repo_kind = Αναζήτηση αποθετηρίων...
user_kind = Αναζήτηση χρηστών...

View file

@ -149,12 +149,12 @@ filter = Filter
filter.clear = Clear filters
filter.is_archived = Archived
filter.not_archived = Not archived
filter.is_fork = Forked
filter.not_fork = Not forked
filter.is_mirror = Mirrored
filter.not_mirror = Not mirrored
filter.is_template = Template
filter.not_template = Not template
filter.is_fork = Forks
filter.not_fork = Not forks
filter.is_mirror = Mirrors
filter.not_mirror = Not mirrors
filter.is_template = Templates
filter.not_template = Not templates
filter.public = Public
filter.private = Private
@ -439,8 +439,8 @@ tab_openid = OpenID
oauth_signup_tab = Register New Account
oauth_signup_title = Complete New Account
oauth_signup_submit = Complete Account
oauth_signin_tab = Link to Existing Account
oauth_signin_title = Sign In to Authorize Linked Account
oauth_signin_tab = Link to an existing account
oauth_signin_title = Sign in to authorize linked account
oauth_signin_submit = Link Account
oauth.signin.error = There was an error processing the authorization request. If this error persists, please contact the site administrator.
oauth.signin.error.access_denied = The authorization request was denied.
@ -571,7 +571,7 @@ TreeName = File path
Content = Content
SSPISeparatorReplacement = Separator
SSPIDefaultLanguage = Default Language
SSPIDefaultLanguage = Default language
require_error = ` cannot be empty.`
alpha_dash_error = ` should contain only alphanumeric, dash ("-") and underscore ("_") characters.`
@ -691,13 +691,13 @@ password = Password
security = Security
avatar = Avatar
ssh_gpg_keys = SSH / GPG keys
social = Social Accounts
social = Social accounts
applications = Applications
orgs = Manage organizations
orgs = Organizations
repos = Repositories
delete = Delete Account
twofa = Two-factor authentication (TOTP)
account_link = Linked Accounts
account_link = Linked accounts
organization = Organizations
uid = UID
webauthn = Two-factor authentication (Security keys)
@ -726,10 +726,11 @@ change_username_redirect_prompt = The old username will redirect until someone c
continue = Continue
cancel = Cancel
language = Language
language.title = Default language
ui = Theme
hints = Hints
additional_repo_units_hint = Suggest to enable additional repository units
additional_repo_units_hint_description = Display an "Add more units..." button for repositories that do not have all available units enabled.
additional_repo_units_hint = Encourage enabling additional repository units
update_hints = Update hints
update_hints_success = Hints have been updated.
hidden_comment_types = Hidden comment types
@ -776,19 +777,19 @@ change_password_success = Your password has been updated. Sign in using your new
password_change_disabled = Non-local users cannot update their password through the Forgejo web interface.
manage_emails = Manage email addresses
manage_themes = Select default theme
manage_openid = Manage OpenID addresses
manage_themes = Default theme
manage_openid = OpenID addresses
email_desc = Your primary email address will be used for notifications, password recovery and, provided that it is not hidden, web-based Git operations.
theme_desc = This will be your default theme across the site.
primary = Primary
activated = Activated
requires_activation = Requires activation
primary_email = Make Primary
activate_email = Send Activation
activations_pending = Activations Pending
primary_email = Make primary
activate_email = Send activation
activations_pending = Activations pending
can_not_add_email_activations_pending = There is a pending activation, try again in a few minutes if you want to add a new email.
delete_email = Remove
email_deletion = Remove Email Address
email_deletion = Remove email address
email_deletion_desc = The email address and related information will be removed from your account. Git commits by this email address will remain unchanged. Continue?
email_deletion_success = The email address has been removed.
theme_update_success = Your theme was updated.
@ -797,7 +798,7 @@ openid_deletion = Remove OpenID Address
openid_deletion_desc = Removing this OpenID address from your account will prevent you from signing in with it. Continue?
openid_deletion_success = The OpenID address has been removed.
add_new_email = Add email address
add_new_openid = Add New OpenID URI
add_new_openid = Add new OpenID URI
add_email = Add email address
add_openid = Add OpenID URI
add_email_confirmation_sent = A confirmation email has been sent to "%s". Please check your inbox within the next %s to confirm your email address.
@ -821,7 +822,7 @@ add_new_key = Add SSH key
add_new_gpg_key = Add GPG key
key_content_ssh_placeholder = Begins with "ssh-ed25519", "ssh-rsa", "ecdsa-sha2-nistp256", "ecdsa-sha2-nistp384", "ecdsa-sha2-nistp521", "sk-ecdsa-sha2-nistp256@openssh.com", or "sk-ssh-ed25519@openssh.com"
key_content_gpg_placeholder = Begins with "-----BEGIN PGP PUBLIC KEY BLOCK-----"
add_new_principal = Add Principal
add_new_principal = Add principal
ssh_key_been_used = This SSH key has already been added to the server.
ssh_key_name_used = An SSH key with same name already exists on your account.
ssh_principal_been_used = This principal has already been added to the server.
@ -880,7 +881,7 @@ token_state_desc = This token has been used in the last 7 days
principal_state_desc = This principal has been used in the last 7 days
show_openid = Show on profile
hide_openid = Hide from profile
ssh_disabled = SSH Disabled
ssh_disabled = SSH is disabled
ssh_signonly = SSH is currently disabled so these keys are only used for commit signature verification.
ssh_externally_managed = This SSH key is externally managed for this user
manage_social = Manage Associated Social Accounts
@ -888,7 +889,7 @@ social_desc = These social accounts can be used to sign in to your account. Make
unbind = Unlink
unbind_success = The social account has been removed successfully.
manage_access_token = Manage access tokens
manage_access_token = Access tokens
generate_new_token = Generate new token
tokens_desc = These tokens grant access to your account using the Forgejo API.
token_name = Token name
@ -970,11 +971,11 @@ webauthn_delete_key_desc = If you remove a security key you can no longer sign i
webauthn_key_loss_warning = If you lose your security keys, you will lose access to your account.
webauthn_alternative_tip = You may want to configure an additional authentication method.
manage_account_links = Manage Linked Accounts
manage_account_links = Linked accounts
manage_account_links_desc = These external accounts are linked to your Forgejo account.
account_links_not_available = There are currently no external accounts linked to your Forgejo account.
link_account = Link Account
remove_account_link = Remove Linked Account
link_account = Link account
remove_account_link = Remove linked account
remove_account_link_desc = Removing a linked account will revoke its access to your Forgejo account. Continue?
remove_account_link_success = The linked account has been removed.
@ -1326,10 +1327,10 @@ editor.add_tmpl = Add "<filename>"
editor.add = Add %s
editor.update = Update %s
editor.delete = Delete %s
editor.patch = Apply Patch
editor.patch = Apply patch
editor.patching = Patching:
editor.fail_to_apply_patch = Unable to apply patch "%s"
editor.new_patch = New Patch
editor.new_patch = New patch
editor.commit_message_desc = Add an optional extended description…
editor.signoff_desc = Add a Signed-off-by trailer by the committer at the end of the commit log message.
editor.commit_directly_to_this_branch = Commit directly to the <strong class="branch-name">%s</strong> branch.
@ -1351,16 +1352,16 @@ editor.file_editing_no_longer_exists = The file being edited, "%s", no longer ex
editor.file_deleting_no_longer_exists = The file being deleted, "%s", no longer exists in this repository.
editor.file_changed_while_editing = The file contents have changed since you started editing. <a target="_blank" rel="noopener noreferrer" href="%s">Click here</a> to see them or <strong>Commit changes again</strong> to overwrite them.
editor.file_already_exists = A file named "%s" already exists in this repository.
editor.commit_id_not_matching = The commit ID does not match the one you was editing. Commit to a new branch and then merge.
editor.commit_id_not_matching = The file was changed while you were editing it. Commit to a new branch and then merge.
editor.push_out_of_date = The push appears to be out of date.
editor.commit_empty_file_header = Commit an empty file
editor.commit_empty_file_text = The file you're about to commit is empty. Proceed?
editor.no_changes_to_show = There are no changes to show.
editor.fail_to_update_file = Failed to update/create file "%s".
editor.fail_to_update_file_summary = Error Message:
editor.fail_to_update_file_summary = Error message:
editor.push_rejected_no_message = The change was rejected by the server without a message. Please check Git hooks.
editor.push_rejected = The change was rejected by the server. Please check Git hooks.
editor.push_rejected_summary = Full Rejection Message:
editor.push_rejected_summary = Full rejection message:
editor.add_subdir = Add a directory…
editor.unable_to_upload_files = Failed to upload files to "%s" with error: %v
editor.upload_file_is_locked = File "%s" is locked by %s.
@ -1377,8 +1378,8 @@ commits.commits = Commits
commits.no_commits = No commits in common. "%s" and "%s" have entirely different histories.
commits.nothing_to_compare = These branches are equal.
commits.search.tooltip = You can prefix keywords with "author:", "committer:", "after:", or "before:", e.g. "revert author:Alice before:2019-01-13".
commits.search_branch = This Branch
commits.search_all = All Branches
commits.search_branch = This branch
commits.search_all = All branches
commits.author = Author
commits.message = Message
commits.browse_further = Browse further
@ -1883,16 +1884,16 @@ pulls.merge_commit_id = The merge commit ID
pulls.require_signed_wont_sign = The branch requires signed commits but this merge will not be signed
pulls.invalid_merge_option = You cannot use this merge option for this pull request.
pulls.merge_conflict = Merge Failed: There was a conflict whilst merging. Hint: Try a different strategy
pulls.merge_conflict_summary = Error Message
pulls.rebase_conflict = Merge Failed: There was a conflict whilst rebasing commit: %[1]s. Hint: Try a different strategy
pulls.rebase_conflict_summary = Error Message
pulls.unrelated_histories = Merge Failed: The merge head and base do not share a common history. Hint: Try a different strategy
pulls.merge_out_of_date = Merge Failed: Whilst generating the merge, the base was updated. Hint: Try again.
pulls.head_out_of_date = Merge Failed: Whilst generating the merge, the head was updated. Hint: Try again.
pulls.merge_conflict = Merge failed: There was a conflict whilst merging. Hint: Try a different strategy
pulls.merge_conflict_summary = Error message
pulls.rebase_conflict = Merge failed: There was a conflict whilst rebasing commit: %[1]s. Hint: Try a different strategy
pulls.rebase_conflict_summary = Error message
pulls.unrelated_histories = Merge failed: The merge head and base do not share a common history. Hint: Try a different strategy
pulls.merge_out_of_date = Merge failed: Whilst generating the merge, the base was updated. Hint: Try again.
pulls.head_out_of_date = Merge failed: Whilst generating the merge, the head was updated. Hint: Try again.
pulls.has_merged = Failed: The pull request has been merged, you cannot merge again or change the target branch.
pulls.push_rejected = Push Failed: The push was rejected. Review the Git hooks for this repository.
pulls.push_rejected_summary = Full Rejection Message
pulls.push_rejected_summary = Full rejection message
pulls.push_rejected_no_message = Push Failed: The push was rejected but there was no remote message. Review the Git hooks for this repository
pulls.open_unmerged_pull_exists = `You cannot perform a reopen operation because there is a pending pull request (#%d) with identical properties.`
pulls.status_checking = Some checks are pending
@ -2201,7 +2202,9 @@ settings.convert_fork_desc = You can convert this fork into a regular repository
settings.convert_fork_notices_1 = This operation will convert the fork into a regular repository and cannot be undone.
settings.convert_fork_confirm = Convert repository
settings.convert_fork_succeed = The fork has been converted into a regular repository.
settings.transfer = Transfer ownership
settings.transfer.title = Transfer ownership
settings.transfer.button = Transfer ownership
settings.transfer.modal.title = Transfer ownership
settings.transfer.rejected = Repository transfer was rejected.
settings.transfer.success = Repository transfer was successful.
settings.transfer_abort = Cancel transfer
@ -3611,7 +3614,7 @@ owner.settings.cargo.rebuild.description = Rebuilding can be useful if the index
owner.settings.cargo.rebuild.error = Failed to rebuild Cargo index: %v
owner.settings.cargo.rebuild.success = The Cargo index was successfully rebuild.
owner.settings.cargo.rebuild.no_index = Cannot rebuild, no index is initialized.
owner.settings.cleanuprules.title = Manage cleanup rules
owner.settings.cleanuprules.title = Cleanup rules
owner.settings.cleanuprules.add = Add cleanup rule
owner.settings.cleanuprules.edit = Edit cleanup rule
owner.settings.cleanuprules.none = There are no cleanup rules yet.

View file

@ -803,3 +803,7 @@ teams.settings = Agordoj
[packages]
npm.details.tag = Etikedo
[search]
search = Serĉi...

View file

@ -2109,7 +2109,7 @@ settings.convert_fork_desc=Puede convertir este fork en un repositorio normal. E
settings.convert_fork_notices_1=Esta operación convertirá el fork en un repositorio regular y no se puede deshacer.
settings.convert_fork_confirm=Convertir repositorio
settings.convert_fork_succeed=El fork se ha convertido en un repositorio normal.
settings.transfer=Transferir la propiedad
settings.transfer.title=Transferir la propiedad
settings.transfer.rejected=La transferencia de repositorio fue rechazada.
settings.transfer.success=La transferencia del repositorio fue exitosa.
settings.transfer_abort=Cancelar transferencia

View file

@ -1595,7 +1595,7 @@ settings.convert_fork_desc=شما می توانید این انشعاب را ب
settings.convert_fork_notices_1=این عملیات، انشعاب را تبدیل به مخزن عادی خواهد کرد و بازگشت ناپذیر است.
settings.convert_fork_confirm=تبدیل مخزن
settings.convert_fork_succeed=انشعاب به یک مخزن عادی تبدیل شده است.
settings.transfer=انتقال مالکیت
settings.transfer.title=انتقال مالکیت
settings.transfer.rejected=انتقال انبار رد شده است.
settings.transfer.success=انتقال انبار موفق بود.
settings.transfer_abort=لغو انتقال

View file

@ -1133,7 +1133,7 @@ settings.tracker_issue_style.alphanumeric=Aakkosnumeerinen
settings.enable_timetracker=Ota käyttöön ajan seuranta
settings.danger_zone=Vaaravyöhyke
settings.new_owner_has_same_repo=Uudella omistajalla on jo samanniminen repo. Ole hyvä ja valitse toinen nimi.
settings.transfer=Siirrä omistajuus
settings.transfer.title=Siirrä omistajuus
settings.transfer_form_title=Syötä repon nimi vahvistuksena:
settings.transfer_notices_3=- Jos arkisto on yksityinen ja se siirretään yksittäiselle käyttäjälle, tämä toiminto varmistaa, että käyttäjällä on ainakin lukuoikeudet (ja muuttaa käyttöoikeuksia tarvittaessa).
settings.transfer_owner=Uusi omistaja

View file

@ -7,7 +7,7 @@ language = Wika
mirrors = Mga Mirror
forks = Mga Fork
activities = Mga Aktibidad
pull_requests = Mga hiling sa paghatak
pull_requests = Mga hiling sa paghila
issues = Mga Isyu
milestones = Mga Milestone
ok = OK
@ -116,12 +116,12 @@ filter = I-filter
filter.clear = I-clear ang mga filter
filter.is_archived = Naka-archive
filter.not_archived = Hindi naka-archive
filter.is_fork = Naka-fork
filter.not_fork = Hindi naka-fork
filter.is_mirror = Naka-mirror
filter.not_mirror = Hindi naka-mirror
filter.is_template = Template
filter.not_template = Hindi template
filter.is_fork = Mga fork
filter.not_fork = Hindi mga fork
filter.is_mirror = Mga mirror
filter.not_mirror = Hindi mga mirror
filter.is_template = Mga template
filter.not_template = Hindi mga template
filter.public = Publiko
filter.private = Pribado
notifications = Mga Abiso
@ -401,7 +401,7 @@ login_openid = OpenID
oauth_signup_tab = Mag-rehistro ng Bagong Account
oauth_signup_title = Kumpletuhin ang Bagong Account
oauth_signup_submit = Kumpletuhin ang Account
oauth_signin_tab = I-link sa Umiiral na Account
oauth_signin_tab = Mag-link sa umiiral na account
oauth_signin_submit = I-link ang Account
oauth.signin.error.access_denied = Tinanggihan ang hiling ng pahintulutan.
oauth.signin.error.temporarily_unavailable = Nabigo ang awtorisasyon dahil pansamantalang hindi available ang authentication server. Mangyaring subukan muli sa ibang pagkakataon.
@ -409,7 +409,7 @@ openid_connect_submit = Kumonekta
openid_connect_title = Kumonekta sa umiiral na account
openid_connect_desc = Ang piniling OpenID URI ay hindi alam. Iugnay iyan sa bagong account dito.
invalid_code = Ang iyong confirmation code ay hindi wasto o nag-expire na.
oauth_signin_title = Mag-sign In para Pahintulutan ang Naka-link na Account
oauth_signin_title = Mag-sign in para pahintulutan ang naka-link na account
invalid_code_forgot_password = Ang iyong confirmation code ay hindi wasto o nag-expire na. Mag-click <a href="%s">dito</a> para magsimula ng bagong session.
confirmation_mail_sent_prompt = Ang isang bagong email pang-kumpirma ay ipinadala sa <b>%s</b>. Pakisuri ang iyong inbox sa loob ng %s para tapusin ang proseso ng pagrehistro. Kung mali ang email, maari kang mag-log in, at humingi ng isa pang email pang-kumpirma na ipapadala sa ibang address.
invalid_password = Ang iyong password ay hindi tugma sa password na ginamit para gawin ang account.
@ -522,7 +522,7 @@ CommitChoice = Pagpili ng commit
TreeName = Path ng file
Content = Nilalaman
SSPISeparatorReplacement = Pang-hiwalay
SSPIDefaultLanguage = Default na Wika
SSPIDefaultLanguage = Default na wika
CommitSummary = Pangkalahatang-ideya ng commit
glob_pattern_error = ` hindi angkop ang glob pattern: %s`
require_error = ` hindi maaring walang laman.`
@ -604,7 +604,7 @@ Location = Lokasyon
joined_on = Sumali noong %s
repositories = Mga Repositoryo
activity = Pampublikong aktibidad
followers_few = %d Mga tagasunod
followers_few = %d mga tagasunod
block_user = I-block ang user
change_avatar = Palitan ang iyong avatar…
block_user.detail = Pakiunawa na kung i-block mo ang user na ito, isasagawa ang iba pang mga aksyon. Gaya ng:
@ -617,7 +617,7 @@ watched = Mga sinusubaybayan na repositoryo
code = Code
projects = Mga Proyekto
overview = Pangkalahatang Ideya
following_few = %d Sinusundan
following_few = %d sinusundan
follow = Sundan
unfollow = I-unfollow
block = Harangan
@ -643,11 +643,11 @@ security = Seguridad
avatar = Avatar
ssh_gpg_keys = Mga SSH / GPG key
applications = Mga Aplikasyon
orgs = Pamahalaan ng mga organisasyon
orgs = Ipamahala ang mga organisasyon
repos = Mga Repositoryo
delete = Burahin ang Account
twofa = Authentikasyong two-factor (TOTP)
account_link = Mga Naka-link na Account
account_link = Mga naka-link na account
uid = UID
webauthn = Authentikasyong two-factor (Mga security key)
blocked_users = Mga na-block na user
@ -694,7 +694,7 @@ update_avatar = I-update ang avatar
delete_current_avatar = Burahin ang kasalukuyang avatar
uploaded_avatar_not_a_image = Ang na-upload na file ay hindi isang larawan.
comment_type_group_assignee = Mangangasiwa
social = Mga Social Account
social = Mga social account
biography_placeholder = Sabihin sa amin ng kaunti tungkol sa iyong sarili! (Maaari mong gamitin ang Markdown)
change_username_prompt = Tandaan: Ang pagpalit ng username ay papalitan din ang URL ng iyong account.
organization = Mga Organisasyon
@ -738,18 +738,18 @@ change_password_success = Na-update na ang iyong password. Mag-sign in gamit ng
password_change_disabled = Hindi mababago ng mga di-lokal na gumagamit ang kanilang password sa pamamagitan ng Forgejo web interface.
emails = Mga email address
manage_emails = Ipamahala ang mga email address
manage_themes = Piliin ang default na tema
manage_openid = Ipamahala ang mga OpenID address
manage_themes = Default na tema
manage_openid = Mga OpenID address
email_desc = Ang iyong pangunahing email address ay gagamitin para sa mga notification, pag-recover ng password at, kung hindi tinago, mga Git operation na batay sa web.
theme_desc = Ito ang iyong magiging default na tema sa buong site.
primary = Panguna
activated = Naka-activate
requires_activation = Nangangailangan ng activation
primary_email = Gawing Pangunahin
activate_email = Ipadala ang Activation
activations_pending = Nakabinbin ang mga Activation
primary_email = Gawing pangunahin
activate_email = Ipadala ang activation
activations_pending = Nakabinbin ang mga activation
delete_email = Tanggalin
email_deletion = Tanggalin ang Email Address
email_deletion = Tanggalin ang email address
email_deletion_success = Tinanggal na ang email address.
theme_update_success = Binago na ang iyong tema.
theme_update_error = Hindi umiiral ang piniling tema.
@ -775,7 +775,7 @@ gpg_helper = <strong>Kailangan ng tulong?</strong> Tignan ang guide <a href="%s"
add_new_key = Magdagdag ng SSH key
add_new_gpg_key = Magdagdag ng GPG key
key_content_gpg_placeholder = Nagsisimula sa "-----BEGIN PGP PUBLIC KEY BLOCK-----"
add_new_principal = Magdagdag ng Principal
add_new_principal = Magdagdag ng principal
ssh_key_been_used = Dinagdag 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 = Dinagdag na ang principal na ito sa server.
@ -830,7 +830,7 @@ manage_social = Ipamahala ang mga Nauugnay na Social Account
social_desc = Ang mga social account na ito ay magagamit para mag-sign in sa iyong account. Siguraduhing kilala mo silang lahat.
unbind = I-unlink
unbind_success = Matagumpay na tinanggal ang social account.
manage_access_token = Ipamahala ang mga access token
manage_access_token = Mga access token
generate_new_token = Gumawa ng bagong token
token_name = Pangalan ng token
generate_token = I-generate ang token
@ -913,10 +913,10 @@ webauthn_nickname = Palayaw
webauthn_delete_key = Tanggalin ang security key
webauthn_key_loss_warning = Kung mawala mo ang iyong mga security key, mawawalan ka ng access sa iyong account.
webauthn_alternative_tip = Baka gusto mong mag-configure ng isa pang paraan ng authentikasyon.
manage_account_links = Ipamahala ang mga Naka-link na Account
manage_account_links = Mga naka-link na account
account_links_not_available = Kasalukuyang walang mga naka-link na panlabas na account sa iyong Forgejo account.
link_account = Mag-link ng Account
remove_account_link = Tanggalin ang Naka-link na Account
link_account = Mag-link ng account
remove_account_link = Tanggalin ang naka-link na account
visibility.limited = Limitado
visibility.private = Pribado
visibility.private_tooltip = Makikita lang ng mga miyembro ng mga organisasyon na sinali mo
@ -937,12 +937,13 @@ remove_account_link_desc = Ang pagtanggal ng naka-link na account ay babawiin an
visibility.public_tooltip = Makikita ng lahat
hints = Mga Pahiwatig
additional_repo_units_hint_description = Magpakita ng "Magdagdag pa ng mga unit..." na button para sa mga repositoryo na hindi naka-enable ang lahat ng mga available na unit.
additional_repo_units_hint = Hikayatin ang pag-enable ng karagdagang mga unit ng repositoryo
additional_repo_units_hint = Imungkahi na i-enable ng karagdagang mga unit ng repositoryo
update_hints = I-update ang mga pahiwatig
update_hints_success = Na-update na ang mga pahiwatig.
pronouns_custom = Pasadya
pronouns_unspecified = Hindi natakda
pronouns = Mga panghalip
language.title = Default na wika
[repo]
template_description = Ang mga template na repositoryo ay pinapayagan ang mga gumagamit na mag-generate ng mga bagong repositoryo na may magkatulad na istraktura ng direktoryo, mga file, at opsyonal na mga setting.
@ -1076,7 +1077,7 @@ migrate_items_pullrequests = Mga hiling sa pagtulak
archive.pull.nocomment = Naka-archive ang repo na ito. Hindi ka makakakomento sa mga pull request.
archive.title = Naka-archive ang repo na ito. Maari mong itignan ang mga file at i-clone ito, pero hindi makaka-push o magbukas ng mga isyu o mga pull request.
archive.title_date = Naka-archive ang repositoryo na ito noong %s. Maari mong itignan ang mga file at i-clone ito, pero hindi makaka-push o magbukas ng mga isyu o mga pull request.
pulls = Mga hiling sa paghatak
pulls = Mga hiling sa paghila
activity.merged_prs_count_n = Mga naisamang hiling sa paghatak
wiki.last_updated = Huling binago %s
file.title = %s sa %s
@ -1393,8 +1394,8 @@ activity.title.prs_opened_by = %s inimungkahi ni/ng %s
pulls.cant_reopen_deleted_branch = Hindi mabuksang muli ang hiling sa paghatak na ito dahil nabura ang branch.
issues.new = Bagong isyu
issues.commented_at = `iniwan ang komento <a href="#%s">%s</a>`
editor.patch = Ilapat ang Patch
editor.new_patch = Bagong Patch
editor.patch = Ilapat ang patch
editor.new_patch = Bagong patch
editor.create_new_branch = Gumawa ng <strong>bagong branch</strong> para sa commit na ito at simulan ang hiling sa paghatak.
editor.create_new_branch_np = Gumawa ng <strong>bagong branch</strong> para sa commit na ito.
editor.invalid_commit_mail = Hindi wastong mail para sa paggawa ng commit.
@ -1442,6 +1443,102 @@ editor.file_editing_no_longer_exists = Ang file na ine-edit, "%s", ay hindi na u
editor.filename_is_a_directory = Ang pangalan ng file "%s" ay ginagamit na bilang pangalan ng direktoryo sa repositoryo na ito.
editor.file_is_a_symlink = `Ang %s ay isang symbolink link. Hindi mae-edit ang mga symbolic link sa web editor`
editor.directory_is_a_file = Ang pangalan ng direktoryo "%s" ay ginagamit na bilang pangalan ng file sa repositoryo na ito.
pulls.merged_by =
commitstatus.pending = Nakabinbin
issues.review.pending = Nakabinbin
pulls.status_checking = Nakabinbin ang ilang mga [pagsusuri]
editor.file_changed_while_editing = Ang nilalaman ng file ay nagbago mula noong nagsimula kang mag-edit. <a target="_blank" rel="noopener noreferrer" href="%s">Mag-click dito</a> upang makita ang mga pagbabago o <strong>Mag-commit ng mga pagbabago muli</strong> para i-overwrite sila.
editor.file_already_exists = Umiiral na ang file na may pangalang "%s" sa repositoryong ito.
issues.review.review = Suriin
activity.git_stats_push_to_branch = sa %s at
activity.git_stats_and_deletions = at
issues.new.no_projects = Walang mga proyekto
pulls.auto_merge_button_when_succeed = (Kung nagtagumpay ang mga [check])
activity.git_stats_on_default_branch = Sa %s,
activity.period.quarterly = 3 buwan
issues.review.left_comment = iniwan ang [comment]
pulls.compare_base = isama sa
activity.git_stats_additions = at mayroong
issues.reopen_comment_issue = [Comment] at buksang muli
issues.close_comment_issue = [Comment] at isara
pulls.compare_compare = hilain mula sa
pulls.waiting_count_n = %d mga hinihintay na pagsusuri
pulls.waiting_count_1 = %d hinihintay na pagsusuri
contributors.contribution_type.deletions = Mga pagbura
pulls.ready_for_review = Handa ba para sa pagsuri?
activity.period.daily = 1 araw
activity.period.halfweekly = 3 araw
activity.period.weekly = 1 linggo
activity.period.monthly = 1 buwan
activity.period.semiyearly = 6 na buwan
activity.period.yearly = 1 taon
issues.new.title_empty = Hindi maaaring walang laman ang pamagat
issues.new.projects = Mga proyeko
settings.transfer_perform = Gawin ang paglipat
settings.transfer_abort = Ipagpaliban ang paglipat
settings.transfer_owner = Bagong may-ari
pulls.tab_conversation = Pag-uusap
pulls.tab_files = Nabagong mga file
settings.new_owner_blocked_doer = Hinarang ka ng bagong may-ari.
settings.transfer.rejected = Tinanggihan ang paglipat ng [repository].
settings.transfer.success = Matagumpay na inilipat ang [repository].
settings.transfer.modal.title = Ilipat ang [ownership]
diff.view_file = Tingnan ang file
diff.parent =magulang
diff.stats_desc = <strong>%d nabagong mga file</strong> na may <strong> %d mga pagdagdag</strong> at <strong> %d mga pagtanggal</strong>
commits.commits = Mga commit
commits.ssh_key_fingerprint = Fingerprint ng SSH key
commits.signed_by_untrusted_user_unmatched = Nilagdaan ng hindi pinagkakatiwalaan na user na hindi tumutugma sa taga-commit
commits.view_path = Tignan sa puntong ito sa kasaysayan
commit.operations = Mga operasyon
commit.revert-content = Piliin ang branch na ibabalik sa:
commit.cherry-pick = I-cherry-pick
commit.cherry-pick-header = I-cherry-pick: %s
commit.cherry-pick-content = Piliin ang branch na iche-cherry-pick sa:
editor.fail_to_update_file = Nabigong baguhin/gawin ang file na "%s".
commitstatus.error = Error
projects.deletion_desc = Ang pagbura ng proyekto ay tatanggalin ito sa lahat ng mga kaugnay na isyu. Magpatuloy?
projects.template.desc = Template
projects.template.desc_helper = Pumili ng template ng proyekto para magsimula
editor.cannot_commit_to_protected_branch = Hindi makaka-commit sa naka-protekta na branch na "%s".
editor.add_subdir = Magdagdag ng direktoryo…
editor.unable_to_upload_files = Nabigong i-upload ang mga file sa "%s" na may error: %v
editor.upload_file_is_locked = Ang file na "%s" ay na lock ng %s.
editor.push_rejected = Tinanggihan ng server ang pagbabago. Pakisuri ang mga Git hook.
editor.commit_id_not_matching = Nabago ang file habang ine-edit mo. I-commit sa bagong branch at i-merge.
editor.push_out_of_date = Mukhang luma ang push.
editor.push_rejected_no_message = Hindi tinanggap ng server ang pagbabago nang walang mensahe. Pakisuri ang mga Git hook.
projects.column.new_submit = Gumawa ng column
projects.column.new = Bagong column
projects.column.delete = Burahin ang column
projects.column.deletion_desc = Ang pagbura ng column ng proyekto ay ililipat ang lahat ng mga kaugnay na isyu sa default na column. Magpatuloy?
projects.column.set_default = Itakda bilang default
projects.column.set_default_desc = Itakda ang column na ito bilang default para sa mga hindi nakategorya na isyu at mga pull
editor.commit_empty_file_header = Mag-commit ng walang lamang file
editor.commit_empty_file_text = Walang laman ang file na iko-commit mo. Magpatuloy?
editor.upload_files_to_dir = I-upload ang mga file sa "%s"
commits.no_commits = Walang mga karaniwang commit. Ang "%s" at "%s" ay may ganap na magkakaibang kasaysayan.
editor.fail_to_update_file_summary = Mensahe ng error:
editor.no_commit_to_branch = Hindi direktang maka-commit sa branch dahil:
editor.user_no_push_to_branch = Hindi makaka-push ang user sa branch
editor.require_signed_commit = Nangangailangan ng branch ng naka-sign na commit
editor.cherry_pick = I-cherry-pick ang %s sa:
commits.search_branch = Itong branch
commits.browse_further = Higit pang mag-browse
commits.renamed_from = Na-rename mula sa %s
ext_issues = Access sa mga external na isyu
ext_issues.desc = Mag-link sa external na issue tracker.
projects.new_subheader = I-coordinate, subaybayan, at i-update ang iyong trabaho sa isang lugar, para manatiling transparent at nasa iskedyul ang mga proyekto.
projects.edit_subheader = Inaayos ng mga proyekto ang mga isyu at sinusubaybayan ang pag-unlad.
projects.edit_success = Na-update na ang proyekto na "%s".
projects.type.basic_kanban = Basic na kanban
projects.type.bug_triage = Pag-uuri ng bug
projects.column.edit = I-edit ang column
projects.column.edit_title = Pangalan
projects.column.new_title = Pangalan
projects.card_type.desc = Mga preview ng card
commits.desc = I-browse ang history ng pagbabago ng source code.
commits.search.tooltip = Maari kang mag-prefix ng mga keyword gamit ang "author:", "committer:", "after:", o "before:", hal. "revert author:Nijika before:2022-10-09".
[search]
commit_kind = Maghanap ng mga commit...

View file

@ -146,15 +146,15 @@ confirm_delete_artifact = Êtes-vous certain de vouloir supprimer l'artefect "%s
filter.clear = Effacer le filtre
filter.is_archived = Archivé
filter.not_archived = Non archivé
filter.is_fork = Dupliqué
filter.not_fork = Non dupliqué
filter.not_mirror = Non répliqué
filter.is_template = Modèle
filter.not_template = Pas un modèle
filter.is_fork = Bifurcations
filter.not_fork = Non bifurqué
filter.not_mirror = Non miroirs
filter.is_template = Modèles
filter.not_template = Non modèles
filter.public = Publique
filter.private = Privé
filter = Filtre
filter.is_mirror = Répliqué
filter.is_mirror = Miroirs
toggle_menu = Menu va-et-vient
more_items = Plus d'éléments
invalid_data = Données invalides: %v
@ -479,7 +479,7 @@ activate_email.text=Veuillez cliquer sur le lien suivant pour vérifier votre ad
register_notify=Bienvenue sur Forgejo
register_notify.title=%[1]s, bienvenue à %[2]s
register_notify.text_1=ceci est votre courriel de confirmation d'inscription pour %s!
register_notify.text_2=Vous pouvez maintenant vous connecter avec le nom d'utilisateur : %s.
register_notify.text_2=Vous pouvez maintenant vous connecter avec le nom d'utilisateur : %s
register_notify.text_3=Si ce compte a été créé pour vous par une autre personne, veuillez <a href="%s">définir votre mot de passe</a> d'abord.
reset_password=Récupérer votre compte
@ -637,7 +637,7 @@ required_prefix = Le texte entré doit commencer par "%s"
AccessToken = Jeton d'accès
FullName = Nom complet
Description = Description
Pronouns = Qualités
Pronouns = Pronoms
Biography = Biographie
Website = Site web
Location = Emplacement
@ -686,9 +686,9 @@ password=Mot de passe
security=Sécurité
avatar=Avatar
ssh_gpg_keys=Clés SSH / GPG
social=Réseaux Sociaux
social=Réseaux sociaux
applications=Applications
orgs=Gérer les organisations
orgs=Organisations
repos=Dépôts
delete=Supprimer le compte
twofa=Authentification à deux facteurs
@ -762,8 +762,8 @@ password_change_disabled=Les mots de passes des comptes utilisateurs externes ne
emails=Adresses courriels
manage_emails=Gérer les adresses courriels
manage_themes=Sélectionner le thème par défaut
manage_openid=Gérer les adresses OpenID
manage_themes=Thème par défaut
manage_openid=Adresses OpenID
email_desc=Votre adresse courriel principale sera utilisée pour les notifications, la récupération de mot de passe et, à condition qu'elle ne soit pas cachée, les opérations Git basées sur le Web.
theme_desc=Ce sera votre thème par défaut sur le site.
primary=Principale
@ -874,7 +874,7 @@ social_desc=Ces comptes sociaux peuvent être utilisés pour vous connecter à v
unbind=Dissocier
unbind_success=Le compte social a été supprimé avec succès.
manage_access_token=Gérer les jetons d'accès
manage_access_token=Jetons d'accès
generate_new_token=Générer un nouveau jeton
tokens_desc=Ces jetons permettent l'accès à votre compte à travers l'API Forgejo.
token_name=Nom du jeton
@ -956,10 +956,10 @@ webauthn_delete_key_desc=Si vous retirez une clé de sécurité, vous ne pourrez
webauthn_key_loss_warning=Si vous perdez vos clés de sécurité, vous perdrez laccès à votre compte.
webauthn_alternative_tip=Vous devriez configurer une méthode dauthentification supplémentaire.
manage_account_links=Gérer les comptes liés
manage_account_links=Comptes liés
manage_account_links_desc=Ces comptes externes sont liés à votre compte Forgejo.
account_links_not_available=Il n'y a pour l'instant pas de compte externe connecté à votre compte Forgejo.
link_account=Lier un Compte
link_account=Lier un compte
remove_account_link=Supprimer un compte lié
remove_account_link_desc=La suppression d'un compte lié révoquera son accès à votre compte Forgejo. Continuer ?
remove_account_link_success=Le compte lié a été supprimé.
@ -997,12 +997,13 @@ user_block_success = Cet utilisateur a été bloqué avec succès.
change_password = Modifier le mot de passe
hints = Suggestions
additional_repo_units_hint_description = Afficher un bouton "Ajouter plus d'unités..." pour les dépôts qui n'ont pas toutes les unités disponibles activées.
additional_repo_units_hint = Encourager l'ajout de nouvelles unités pour le dépôt
additional_repo_units_hint = Suggérer l'ajout de nouvelles unités pour le dépôt
update_hints = Mettre à jour les suggestions
update_hints_success = Les suggestions ont été mises à jour.
pronouns_custom = Sur mesure
pronouns = Qualités
pronouns_custom = Personnalisés
pronouns = Pronoms
pronouns_unspecified = Non spécifié
language.title = Langue par défaut
[repo]
new_repo_helper=Un dépôt contient tous les fichiers dun projet, ainsi que lhistorique de leurs modifications. Vous avez déjà ça ailleurs ? <a href="%s">Migrez-le ici.</a>
@ -1012,7 +1013,7 @@ repo_name=Nom du dépôt
repo_name_helper=Idéalement, le nom d'un dépôt devrait être court, mémorisable et unique.
repo_size=Taille du dépôt
template=Modèle
template_select=Sélectionner un modèle
template_select=Sélectionner un modèle.
template_helper=Faire de ce dépôt un modèle
template_description=Les référentiels de modèles permettent aux utilisateurs de générer de nouveaux référentiels avec la même structure de répertoire, fichiers et paramètres optionnels.
visibility=Visibilité
@ -1087,20 +1088,20 @@ language_other=Autre
adopt_search=Entrez un nom dutilisateur pour rechercher les dépôts dépossédés… (laissez vide pour tous trouver)
adopt_preexisting_label=Adopter les fichiers
adopt_preexisting=Adopter les fichiers préexistants
adopt_preexisting_content=Créer un dépôt à partir de %s.
adopt_preexisting_content=Créer un dépôt à partir de %s
adopt_preexisting_success=Fichiers adoptés et dépôt créé depuis %s
delete_preexisting_label=Supprimer
delete_preexisting=Supprimer les fichiers préexistants
delete_preexisting_content=Supprimer les fichiers dans %s
delete_preexisting_success=Fichiers dépossédés supprimés dans %s.
delete_preexisting_success=Fichiers dépossédés supprimés dans %s
blame_prior=Voir le blame avant cette modification
blame.ignore_revs=Les révisions dans <a href="%s">.git-blame-ignore-revs</a> sont ignorées. Vous pouvez quand même <a href="%s">voir ces blâmes</a>.
blame.ignore_revs.failed=Impossible d'ignorer les révisions dans <a href="%s">.git-blame-ignore-revs</a>.
author_search_tooltip=Affiche un maximum de 30 utilisateurs
tree_path_not_found_commit=Le chemin %[1]s nexiste pas dans la révision %[2]s.
tree_path_not_found_branch=Le chemin %[1]s nexiste pas dans la branche %[2]s.
tree_path_not_found_tag=Le chemin %[1]s nexiste pas dans létiquette %[2]s.
tree_path_not_found_commit=Le chemin %[1]s nexiste pas dans la révision %[2]s
tree_path_not_found_branch=Le chemin %[1]s nexiste pas dans la branche %[2]s
tree_path_not_found_tag=Le chemin %[1]s nexiste pas dans létiquette %[2]s
transfer.accept=Accepter le transfert
transfer.accept_desc=`Transférer à "%s"`
@ -1163,7 +1164,7 @@ migrate.permission_denied=Vous n'êtes pas autorisé à importer des dépôts lo
migrate.permission_denied_blocked=Vous ne pouvez pas importer depuis des hôtes interdits, veuillez demander à l'administrateur de vérifier les paramètres ALLOWED_DOMAINS/ALLOW_LOCALNETWORKS/BLOCKED_DOMAINS.
migrate.invalid_local_path=Le chemin local nest pas valide, nexiste pas ou nest pas un dossier.
migrate.invalid_lfs_endpoint=Le point d'accès LFS n'est pas valide.
migrate.failed=Echec de migration: %v
migrate.failed=Échec de migration: %v
migrate.migrate_items_options=Un jeton d'accès est requis pour migrer des éléments supplémentaires
migrated_from=Migré de <a href="%[1]s">%[2]s</a>
migrated_from_fake=Migré de %[1]s
@ -1184,7 +1185,7 @@ migrate.migrating_git=Migration des données Git
migrate.migrating_topics=Migration des sujets
migrate.migrating_milestones=Migration des jalons
migrate.migrating_labels=Migration des labels
migrate.migrating_releases=Migration des publications.
migrate.migrating_releases=Migration des publications
migrate.migrating_issues=Migration des tickets
migrate.migrating_pulls=Migration des demandes d'ajout
migrate.cancel_migrating_title=Annuler la migration
@ -1229,7 +1230,7 @@ project_board=Projets
packages=Paquets
actions=Actions
labels=Labels
org_labels_desc=Les labels d'une organisation peuvent être utilisés avec <strong>tous les dépôts</strong> de cette organisation.
org_labels_desc=Les labels d'une organisation peuvent être utilisés avec <strong>tous les dépôts</strong> de cette organisation
org_labels_desc_manage=gérer
milestones=Jalons
@ -1307,7 +1308,7 @@ editor.add=Ajouter %s
editor.update=Actualiser %s
editor.delete=Supprimer %s
editor.patch=Appliquer le correctif
editor.patching=Correction:
editor.patching=Correction:
editor.fail_to_apply_patch=`Impossible d'appliquer le correctif "%s"`
editor.new_patch=Nouveau correctif
editor.commit_message_desc=Ajouter une description détaillée facultative…
@ -1346,15 +1347,15 @@ editor.cannot_commit_to_protected_branch=Impossible de créer une révision sur
editor.no_commit_to_branch=Impossible d'enregistrer la révision directement sur la branche parce que :
editor.user_no_push_to_branch=L'utilisateur ne peut pas pousser vers la branche
editor.require_signed_commit=Cette branche nécessite une révision signée
editor.cherry_pick=Picorer %s vers:
editor.revert=Rétablir %s sur:
editor.cherry_pick=Picorer %s vers:
editor.revert=Rétablir %s sur:
commits.desc=Naviguer dans l'historique des modifications.
commits.commits=Révisions
commits.no_commits=Pas de révisions en commun. "%s" et "%s" ont des historiques entièrement différents.
commits.nothing_to_compare=Ces branches sont égales.
commits.search=Rechercher des révisions…
commits.search.tooltip=Vous pouvez utiliser les mots-clés "author:", "committer:", "after:", ou "before:" pour filtrer votre recherche, ex.: "revert author:Alice before:2019-01-13".
commits.search.tooltip=Vous pouvez utiliser les mots-clés "author:", "committer:", "after:", ou "before:" pour filtrer votre recherche, ex.: "revert author:Alice before:2019-01-13".
commits.find=Chercher
commits.search_all=Toutes les branches
commits.author=Auteur
@ -1395,7 +1396,7 @@ projects.new=Nouveau projet
projects.new_subheader=Coordonnez, surveillez, et mettez à jour votre travail en un seul endroit, afin que les projets restent transparents et dans les délais.
projects.create_success=Le projet "%s" a été créé.
projects.deletion=Supprimer le projet
projects.deletion_desc=Supprimer un projet efface également de tous les tickets liés. Voulez vous continuer?
projects.deletion_desc=Supprimer un projet efface également de tous les tickets liés. Voulez vous continuer?
projects.deletion_success=Le projet a été supprimé.
projects.edit=Modifier les projets
projects.edit_subheader=Les projets organisent les tickets et la progression.
@ -1413,7 +1414,7 @@ projects.column.new_title=Nom
projects.column.new_submit=Créer une colonne
projects.column.new=Nouvelle colonne
projects.column.set_default=Définir par défaut
projects.column.set_default_desc=Les tickets et demandes dajout non-catégorisés seront placés dans cette colonne.
projects.column.set_default_desc=Les tickets et demandes dajout non-catégorisés seront placés dans cette colonne
projects.column.unset_default=Défaire par défaut
projects.column.unset_default_desc=Les tickets et demandes d'ajouts non-catégorisés seront placés dans une colonne idoine.
projects.column.delete=Supprimer la colonne
@ -1470,15 +1471,15 @@ issues.label_templates.info=Il n'existe pas encore de label. Créez-en un avec
issues.label_templates.helper=Sélectionnez un jeu de label
issues.label_templates.use=Utiliser le jeu de labels
issues.label_templates.fail_to_load_file=Impossible de charger le fichier de modèle de label « %s » : %v
issues.add_label=a ajouté le label %s %s.
issues.add_labels=a ajouté les labels %s %s.
issues.remove_label=a retiré le label %s %s.
issues.remove_labels=a supprimé les labels %s %s.
issues.add_remove_labels=a ajouté le label %s et supprimé %s %s.
issues.add_label=a ajouté le label %s %s
issues.add_labels=a ajouté les labels %s %s
issues.remove_label=a retiré le label %s %s
issues.remove_labels=a supprimé les labels %s %s
issues.add_remove_labels=a ajouté le label %s et supprimé %s %s
issues.add_milestone_at=`a ajouté ça au jalon <b>%s</b> %s.`
issues.add_project_at=`a ajouté ça au projet <b>%s</b> %s.`
issues.change_milestone_at=`a remplacé le jalon <b><strike>%s</strike></b> par <b>%s</b> %s.`
issues.change_project_at=`a remplacé le projet <b><strike>%s</strike></b> par <b>%s</b> %s.`
issues.change_milestone_at=`a remplacé le jalon <b>%s</b> par <b>%s</b> %s`
issues.change_project_at=`a remplacé le projet <b>%s</b> par <b>%s</b> %s`
issues.remove_milestone_at=`a supprimé ça du jalon <b>%s</b> %s.`
issues.remove_project_at=`a supprimé ça du projet <b>%s</b> %s.`
issues.deleted_milestone=`(supprimé)`
@ -1540,8 +1541,8 @@ issues.action_assignee_no_select=Pas d'assignataire
issues.action_check=Cocher/Décocher
issues.action_check_all=Cocher/Décocher tous les éléments
issues.opened_by=créé %[1]s par <a href="%[2]s">%[3]s</a>
pulls.merged_by=par <a href="%[2]s">%[3]s</a> fusionné %[1]s.
pulls.merged_by_fake=par %[2]s fusionné %[1]s.
pulls.merged_by=par <a href="%[2]s">%[3]s</a> fusionné %[1]s
pulls.merged_by_fake=par %[2]s fusionné %[1]s
issues.closed_by=de <a href="%[2]s">%[3]s</a>, clôt %[1]s
issues.opened_by_fake=%[1]s ouvert par %[2]s
issues.closed_by_fake=de %[2]s, clôt %[1]s
@ -1553,7 +1554,7 @@ issues.draft_title=Brouillon
issues.num_comments_1=%d commentaire
issues.num_comments=%d commentaires
issues.commented_at=`a commenté <a href="#%s"> %s</a>.`
issues.delete_comment_confirm=Êtes-vous certain de vouloir supprimer ce commentaire?
issues.delete_comment_confirm=Êtes-vous certain de vouloir supprimer ce commentaire?
issues.context.copy_link=Copier le lien
issues.context.quote_reply=Citer et répondre
issues.context.reference_issue=Référencer dans un nouveau ticket
@ -1590,7 +1591,7 @@ issues.role.first_time_contributor_helper=C'est la première contribution de cet
issues.role.contributor=Contributeur
issues.role.contributor_helper=Cet utilisateur a déjà des révisions dans le dépôt.
issues.re_request_review=Redemander une évaluation
issues.is_stale=Cette demande dajout a été corrigée depuis sa dernière évaluation.
issues.is_stale=Cette demande dajout a été corrigée depuis sa dernière évaluation
issues.remove_request_review=Retirer la demande dévaluation
issues.remove_request_review_block=Impossible de retirer la demande dévaluation
issues.dismiss_review=Révoquer lévaluation
@ -1655,7 +1656,7 @@ issues.tracker=Minuteur
issues.start_tracking_short=Démarrer le chronomètre
issues.start_tracking=Démarrer le suivi du temps
issues.start_tracking_history=`a commencé son travail %s.`
issues.tracker_auto_close=Le minuteur sera automatiquement arrêté quand le ticket sera fermé.
issues.tracker_auto_close=Le minuteur sera automatiquement arrêté quand le ticket sera fermé
issues.tracking_already_started=`Vous avez déjà un minuteur en cours sur <a href="%s">un autre ticket</a> !`
issues.stop_tracking=Arrêter le chronomètre
issues.stop_tracking_history=`a fini de travailler %s.`
@ -1724,23 +1725,23 @@ issues.dependency.add_error_cannot_create_circular=Vous ne pouvez pas créer une
issues.dependency.add_error_dep_not_same_repo=Les deux tickets doivent être dans le même dépôt.
issues.review.self.approval=Vous ne pouvez approuver vos propres demandes d'ajout.
issues.review.self.rejection=Vous ne pouvez demander de changements sur vos propres demandes de changement.
issues.review.approve=a approuvé ces modifications %s.
issues.review.comment=a évalué cette demande dajout %s.
issues.review.approve=a approuvé ces modifications %s
issues.review.comment=a évalué cette demande dajout %s
issues.review.dismissed=a révoqué lévaluation de %s %s
issues.review.dismissed_label=Révoquée
issues.review.left_comment=laisser un commentaire
issues.review.content.empty=Vous devez laisser un commentaire indiquant le(s) changement(s) demandé(s).
issues.review.reject=a requis les changements %s
issues.review.wait=a été sollicité pour évaluer cette demande dajout %s.
issues.review.add_review_request=a demandé à %s une évaluation %s.
issues.review.remove_review_request=a retiré la demande dévaluation pour %s %s.
issues.review.remove_review_request_self=a refusé dévaluer cette demande dajout %s.
issues.review.wait=a été sollicité pour évaluer cette demande dajout %s
issues.review.add_review_request=a demandé à %s une évaluation %s
issues.review.remove_review_request=a retiré la demande dévaluation pour %s %s
issues.review.remove_review_request_self=a refusé dévaluer cette demande dajout %s
issues.review.pending=En attente
issues.review.pending.tooltip=Ce commentaire n'est pas encore visible par les autres utilisateurs. Pour soumettre vos commentaires en attente, sélectionnez "%s" → "%s/%s/%s" en haut de la page.
issues.review.review=Évaluation
issues.review.reviewers=Évaluateurs
issues.review.outdated=Périmé
issues.review.outdated_description=Le contenu a changé depuis que ce commentaire a été fait.
issues.review.outdated_description=Le contenu a changé depuis que ce commentaire a été fait
issues.review.option.show_outdated_comments=Afficher les commentaires obsolètes
issues.review.option.hide_outdated_comments=Masquer les commentaires obsolètes
issues.review.show_outdated=Afficher les révisions périmées
@ -1749,7 +1750,7 @@ issues.review.show_resolved=Développer
issues.review.hide_resolved=Réduire
issues.review.resolve_conversation=Clore la conversation
issues.review.un_resolve_conversation=Rouvrir la conversation
issues.review.resolved_by=a marqué cette conversation comme résolue.
issues.review.resolved_by=a marqué cette conversation comme résolue
issues.assignee.error=Tous les assignés n'ont pas été ajoutés en raison d'une erreur inattendue.
issues.reference_issue.body=Corps
issues.content_history.deleted=a supprimé
@ -1783,11 +1784,11 @@ pulls.switch_head_and_base=Passez de head à base
pulls.filter_branch=Filtre de branche
pulls.no_results=Aucun résultat trouvé.
pulls.show_all_commits=Afficher toutes les révisions
pulls.show_changes_since_your_last_review=Affiche les modifications depuis votre dernière évaluation.
pulls.show_changes_since_your_last_review=Affiche les modifications depuis votre dernière évaluation
pulls.showing_only_single_commit=Affiche uniquement les changements de la révision %[1]s
pulls.showing_specified_commit_range=Affichage des changements filtré entre %[1]s..%[2]s
pulls.select_commit_hold_shift_for_range=Maintenir Maj et cliquer sur des révisions pour faire un intervalle
pulls.review_only_possible_for_full_diff=Une évaluation n'est possible que lorsque vous affichez le différentiel complet.
pulls.review_only_possible_for_full_diff=Une évaluation n'est possible que lorsque vous affichez le différentiel complet
pulls.filter_changes_by_commit=Filtrer par révision
pulls.nothing_to_compare=Ces branches sont identiques. Il ny a pas besoin de créer une demande d'ajout.
pulls.nothing_to_compare_and_allow_empty_pr=Ces branches sont égales. Cette demande d'ajout sera vide.
@ -1795,7 +1796,7 @@ pulls.has_pull_request='Il existe déjà une demande d'ajout entre ces deux bran
pulls.create=Créer une demande d'ajout
pulls.title_desc_few=souhaite fusionner %[1]d révision(s) depuis <code>%[2]s</code> vers <code id="branch_target">%[3]s</code>
pulls.merged_title_desc_few=a fusionné %[1]d révision(s) à partir de <code>%[2]s</code> vers <code>%[3]s</code> %[4]s
pulls.change_target_branch_at=`a remplacée la branche cible <b><strike>%s</strike></b> par <b>%s</b> %s.`
pulls.change_target_branch_at=`a remplacée la branche cible <b>%s</b> par <b>%s</b> %s`
pulls.tab_conversation=Discussion
pulls.tab_commits=Révisions
pulls.tab_files=Fichiers Modifiés
@ -1858,8 +1859,8 @@ pulls.merge_conflict=Échec de la fusion : il y a eu un conflit lors de la fusio
pulls.merge_conflict_summary=Message d'erreur
pulls.rebase_conflict=Fusion échouée : il y a eu un conflit lors du rebasage de la révision %[1]s. Astuce : Essayez une stratégie différente
pulls.rebase_conflict_summary=Message d'erreur
pulls.unrelated_histories=Échec de la fusion: La tête de fusion et la base ne partagent pas d'historique commun. Indice : Essayez une stratégie différente
pulls.merge_out_of_date=Échec de la fusion: La base a été mise à jour en cours de fusion. Indice : Réessayez.
pulls.unrelated_histories=Échec de la fusion: La tête de fusion et la base ne partagent pas d'historique commun. Indice: Essayez une stratégie différente
pulls.merge_out_of_date=Échec de la fusion: La base a été mise à jour en cours de fusion. Indice: Réessayez.
pulls.head_out_of_date=Échec de la fusion : Len-tête a été mis à jour pendant la fusion. Conseil : réessayez.
pulls.has_merged=Échec : La demande dajout est déjà fusionnée, vous ne pouvez plus la fusionner, ni modifier sa branche cible.
pulls.push_rejected=Échec du push : la soumission a été rejetée. Revoyez les Git hook pour ce dépôt.
@ -1892,7 +1893,7 @@ pulls.clear_merge_message=Effacer le message de fusion
pulls.clear_merge_message_hint=Effacer le message de fusion ne supprimera que le message de la révision, mais pas les pieds de révision générés tels que "Co-Authored-By:".
pulls.auto_merge_button_when_succeed=(Lorsque les vérifications ont réussi)
pulls.auto_merge_when_succeed=Fusionner automatiquement si toutes les vérifications passent.
pulls.auto_merge_when_succeed=Fusionner automatiquement si toutes les vérifications passent
pulls.auto_merge_newly_scheduled=La demande d'ajout était programmée pour fusionner lorsque toutes les vérifications aurait réussi.
pulls.auto_merge_has_pending_schedule=%[1]s Ont planifié cette demande d'ajout pour fusionner automatiquement lorsque toutes les vérifications réussissent %[2]s.
@ -1906,7 +1907,7 @@ pulls.auto_merge_canceled_schedule_comment=`a annulé la fusion automatique de c
pulls.delete.title=Supprimer cette demande d'ajout ?
pulls.delete.text=Voulez-vous vraiment supprimer cet demande d'ajout ? (Cela supprimera définitivement tout le contenu. Envisagez de le fermer à la place, si vous avez l'intention de le garder archivé)
pulls.recently_pushed_new_branches=Vous avez soumis sur la branche <strong>%[1]s</strong> %[2]s
pulls.recently_pushed_new_branches=Vous avez soumis sur la branche <a href="%[3]s"><strong>%[1]s</strong></a> %[2]s
pull.deleted_branch=(supprimé) : %s
@ -1917,7 +1918,7 @@ milestones.no_due_date=Aucune date d'échéance
milestones.open=Ouvrir
milestones.close=Fermer
milestones.new_subheader=Les jalons peuvent vous aider à organiser vos tickets et à suivre leurs progrès.
milestones.completeness=%d%% complété
milestones.completeness=<strong>%d%%</strong> Complété
milestones.create=Créer un Jalon
milestones.title=Titre
milestones.desc=Description
@ -1971,7 +1972,7 @@ wiki.default_commit_message=Écrire une note concernant cette mise à jour (opti
wiki.save_page=Enregistrer la page
wiki.last_commit_info=%s a édité cette page %s
wiki.edit_page_button=Modifier
wiki.new_page_button=Nouvelle Page
wiki.new_page_button=Nouvelle page
wiki.file_revision=Révisions de la page
wiki.wiki_page_revisions=Révisions de la page wiki
wiki.back_to_wiki=Retour à la page wiki
@ -1980,7 +1981,7 @@ wiki.delete_page_notice_1=Supprimer la page de wiki "%s" est irréversible. Cont
wiki.page_already_exists=Une page de wiki avec le même nom existe déjà.
wiki.reserved_page=Le nom de page de wiki "%s" est réservé.
wiki.pages=Pages
wiki.last_updated=Dernière mise à jour: %s
wiki.last_updated=Dernière mise à jour: %s
wiki.page_name_desc=Entrez un nom pour cette page Wiki. Certains noms spéciaux sont « Home », « _Sidebar » et « _Footer ».
wiki.original_git_entry_tooltip=Voir le fichier Git original au lieu d'utiliser un lien convivial.
@ -2144,12 +2145,12 @@ settings.pulls.default_allow_edits_from_maintainers=Autoriser les modifications
settings.releases_desc=Activer les publications du dépôt
settings.packages_desc=Activer le registre des paquets du dépôt
settings.projects_desc=Activer les projets de dépôt
settings.actions_desc=Activer les actions du dépôt
settings.actions_desc=Activer l'intégration continue avec Forgejo Actions
settings.admin_settings=Paramètres administrateur
settings.admin_enable_health_check=Activer les vérifications de santé du dépôt (git fsck)
settings.admin_code_indexer=Indexeur de code
settings.admin_stats_indexer=Indexeur des statistiques de code
settings.admin_indexer_commit_sha=Dernier SHA indexé
settings.admin_indexer_commit_sha=Dernier commit indexé
settings.admin_indexer_unindexed=Non indexé
settings.reindex_button=Ajouter à queue de réindexation
settings.reindex_requested=Réindexation demandée
@ -2166,7 +2167,7 @@ settings.convert_fork_desc=Vous pouvez convertir cette bifurcation en dépôt st
settings.convert_fork_notices_1=Cette opération convertira la bifurcation en dépôt standard. Cette action est irréversible.
settings.convert_fork_confirm=Convertir le dépôt
settings.convert_fork_succeed=La bifurcation a été convertie en dépôt standard.
settings.transfer=Changer de propriétaire
settings.transfer.title=Changer de propriétaire
settings.transfer.rejected=Le transfert du dépôt a été rejeté.
settings.transfer.success=Le transfert du dépôt a réussi.
settings.transfer_abort=Annuler le transfert
@ -2408,12 +2409,12 @@ settings.ignore_stale_approvals_desc=Ignorer les approbations danciennes rév
settings.require_signed_commits=Exiger des révisions (commits) signées
settings.require_signed_commits_desc=Rejeter les soumissions sur cette branche lorsqu'ils ne sont pas signés ou vérifiables.
settings.protect_branch_name_pattern=Motif de nom de branche protégé
settings.protect_branch_name_pattern_desc=Motifs de nom de branche protégé. Consultez la <a href="github.com/gobwas/glob">documentation</a> pour la syntaxe du motif. Exemples : <code>main</code>, <code>release/**</code>
settings.protect_branch_name_pattern_desc=Motifs de nom de branche protégé. Consultez la <a href="https://github.com/gobwas/glob">documentation</a> pour la syntaxe du motif. Exemples : main, release/**
settings.protect_patterns=Motifs
settings.protect_protected_file_patterns=Liste des fichiers et motifs protégés (séparés par un point virgule ";") :
settings.protect_protected_file_patterns_desc=Les fichiers protégés ne peuvent être modifiés, même si l'utilisateur a le droit d'ajouter, éditer ou supprimer des fichiers dans cette branche. Plusieurs motifs peuvent être séparés par un point-virgule (;). Voir la documentation de <a href='https://pkg.go.dev/github.com/gobwas/glob#Compile'>github.com/gobwas/glob</a> pour la syntaxe des motifs. Exemples: <code>.forgejo/workflows/test.yml</code>, <code>/docs/**/*.txt</code>. ; », qui ne pourront pas être modifiés même si les utilisateurs disposent des droits sur la branche. Voir la <a href='https://pkg.go.dev/github.com/gobwas/glob#Compile'>syntaxe glob</a>. Exemples : <code>.drone.yml ; /docs/**/*.txt</code>.
settings.protect_protected_file_patterns_desc=Les fichiers protégés ne peuvent être modifiés, même si l'utilisateur a le droit d'ajouter, éditer ou supprimer des fichiers dans cette branche. Plusieurs motifs peuvent être séparés par un point-virgule ( ;). Voir la documentation de <a href='https://pkg.go.dev/github.com/gobwas/glob#Compile'>github.com/gobwas/glob</a> pour la syntaxe des motifs. Exemples: <code>.forgejo/workflows/test.yml</code>, <code>/docs/**/*.txt</code>.
settings.protect_unprotected_file_patterns=Liste des fichiers et motifs exclus (séparés par un point virgule ";") :
settings.protect_unprotected_file_patterns_desc=Les fichiers non-protégés qui peuvent être modifiés si l'utilisateur a le droit d'écriture, prenant le pas sur les restrictions de push. Plusieurs motifs peuvent être séparés par un point-virgule (;). Voir la documentation de <a href='https://pkg.go.dev/github.com/gobwas/glob#Compile'>github.com/gobwas/glob</a> pour la syntaxe des motifs. Exemples: <code>.forgejo/workflows/test.yml</code>, <code>/docs/**/*.txt</code>. ; », qui pourront être modifiés malgré la protection de branche, par les utilisateurs autorisés. Voir la <a href='https://pkg.go.dev/github.com/gobwas/glob#Compile'>syntaxe Glob</a>. Exemples : <code>.drone.yml ; /docs/**/*.txt</code>.
settings.protect_unprotected_file_patterns_desc=Les fichiers non-protégés qui peuvent être modifiés si l'utilisateur a le droit d'écriture, prenant le pas sur les restrictions de push. Plusieurs motifs peuvent être séparés par un point-virgule ( ;). Voir la documentation de <a href='https://pkg.go.dev/github.com/gobwas/glob#Compile'>github.com/gobwas/glob</a> pour la syntaxe des motifs. Exemples: <code>.forgejo/workflows/test.yml</code>, <code>/docs/**/*.txt</code>.
settings.add_protected_branch=Activer la protection
settings.delete_protected_branch=Désactiver la protection
settings.update_protect_branch_success=La règle de protection de branche "%s" a été mise à jour.
@ -2454,7 +2455,7 @@ settings.matrix.room_id=ID de la salle
settings.matrix.message_type=Type de message
settings.archive.button=Archiver ce dépôt
settings.archive.header=Archiver ce dépôt
settings.archive.text=Archiver un dépôt le place en lecture seule et le cache des tableaux de bord. Personne ne pourra faire de nouvelles révisions, d'ouvrir des tickets ou des demandes d'ajouts (pas même vous!).
settings.archive.text=Archiver un dépôt le place en lecture seule et le cache des tableaux de bord. Personne ne pourra faire de nouvelles révisions, d'ouvrir des tickets ou des demandes d'ajouts (pas même vous!).
settings.archive.success=Ce dépôt a été archivé avec succès.
settings.archive.error=Une erreur s'est produite lors de l'archivage du dépôt. Voir le journal pour plus de détails.
settings.archive.error_ismirror=Vous ne pouvez pas archiver un dépôt en miroir.
@ -2516,7 +2517,7 @@ diff.whitespace_ignore_all_whitespace=Ignorer les espaces lors de la comparaison
diff.whitespace_ignore_amount_changes=Ignorer les changements quand ce sont des espaces
diff.whitespace_ignore_at_eol=Ignorer les blancs en fin de ligne
diff.stats_desc=<strong> %d fichiers modifiés</strong> avec <strong>%d ajouts</strong> et <strong>%d suppressions</strong>
diff.stats_desc_file=%d modifications: %d ajouts et %d suppressions
diff.stats_desc_file=%d modifications: %d ajouts et %d suppressions
diff.bin=BIN
diff.bin_not_shown=Fichier binaire non affiché.
diff.view_file=Voir le fichier
@ -2525,7 +2526,7 @@ diff.file_after=Après
diff.file_image_width=Largeur
diff.file_image_height=Hauteur
diff.file_byte_size=Taille
diff.file_suppressed=Fichier diff supprimé car celui-ci est trop grand
diff.file_suppressed=Diff de fichier supprimé car celui-ci est trop grand
diff.file_suppressed_line_too_long=Diff de fichier supprimé car une ou plusieurs lignes sont trop longues
diff.too_many_files=Certains fichiers ne sont pas affichés car ce diff contient trop de modifications
diff.show_more=Voir plus
@ -2539,7 +2540,7 @@ diff.comment.add_single_comment=Commenter (simple)
diff.comment.add_review_comment=Commenter
diff.comment.start_review=Débuter une évaluation
diff.comment.reply=Répondre
diff.review=Évaluation
diff.review=Terminer l'évaluation
diff.review.header=Évaluer
diff.review.placeholder=Commenter cette évaluation
diff.review.comment=Commenter
@ -2584,7 +2585,7 @@ release.prerelease_desc=Marquer comme pré-publication
release.prerelease_helper=Marquer cette publication comme impropre à la production.
release.cancel=Annuler
release.publish=Publier
release.save_draft=Sauvegarder le Brouillon
release.save_draft=Sauvegarder le brouillon
release.edit_release=Actualiser la publication
release.delete_release=Supprimer cette publication
release.delete_tag=Supprimer l'étiquette
@ -2600,7 +2601,7 @@ release.tag_already_exist=Ce nom d'étiquette existe déjà.
release.downloads=Téléchargements
release.download_count=Télécharger: %s
release.add_tag_msg=Utiliser le titre et le contenu de la publication comme message détiquette.
release.add_tag=Créer uniquement l'étiquette
release.add_tag=Créer l'étiquette
release.releases_for=Publications pour %s
release.tags_for=Étiquettes pour %s
@ -2720,7 +2721,7 @@ pulls.merged_title_desc_one = fusionné %[1]d commit depuis <code>%[2]s</code> v
pulls.title_desc_one = veut fusionner %[1]d commit depuis <code>%[2]s</code> vers <code id="branch_target">%[3]s</code>
stars = Étoiles
n_tag_few = %s étiquettes
editor.commit_id_not_matching = L'ID de la révision ne correspond pas à celui que vous éditiez. Appliquez les modifications à une nouvelle branche puis procédez à la fusion.
editor.commit_id_not_matching = Le fichier a été modifié pendant que vous l'éditiez. Appliquez les modifications à une nouvelle branche puis procédez à la fusion.
commits.search_branch = Cette branche
open_with_editor = Ouvrir avec %s
pulls.ready_for_review = Prêt à être évalué?
@ -2742,7 +2743,7 @@ settings.sourcehut_builds.graphql_url = URL GraphQL (e.g. https://builds.sr.ht/q
release.download_count_one = %s téléchargement
release.download_count_few = %s téléchargements
release.system_generated = Cet attachement a été généré automatiquement.
settings.enforce_on_admins_desc = Les administrateurs du dépôt ne peuvent pas passer outre cette règle
settings.enforce_on_admins_desc = Les administrateurs du dépôt ne peuvent pas passer outre cette règle.
settings.web_hook_name_sourcehut_builds = Builds SourceHut
settings.enforce_on_admins = Appliquer cette règles aux administrateurs du dépôt
settings.rename_branch_failed_protected = Impossible de renommer la branche %s car il s'agit d'une branche protégée.
@ -2751,6 +2752,10 @@ settings.graphql_url = URL GraphQL
settings.matrix.room_id_helper = L'identifiant du salon peut être obtenu dans le client web Element. Par exemple: %s.
settings.sourcehut_builds.access_token_helper = Un jeton d'accès ayant des permissions JOBS:RW. Génère un <a target="_blank" rel="noopener noreferrer" href="%s">jeton builds.sr.ht</a> ou un <a target="_blank" rel="noopener noreferrer" href="%s">jeton builds.sr.ht token ayant accès aux secrets</a> sur meta.sr.ht.
settings.matrix.access_token_helper = Il est recommandé de créer un compte Matrix dédié pour cela. Le jeton d'accès peut être obtenu depuis le client web Element (dans un onglet privé/incognito). Il faut ensuite fermer l'onglet privé/icognito (se déconnecter invaliderait le jeton).
release.hide_archive_links = Masquer les archives générées automatiquement
release.hide_archive_links_helper = Masquer les archives de code source générées automatiquement pour cette publication. Par exemple, si vous téléchargez vos propres archives.
settings.transfer.button = Changer de propriétaire
settings.transfer.modal.title = Changer de propriétaire
[graphs]
component_loading=Chargement de %s…
@ -2816,24 +2821,24 @@ settings.hooks_desc=Vous pouvez ajouter des webhooks qui seront activés pour <s
settings.labels_desc=Ajoute des labels qui peuvent être utilisés sur les tickets pour <strong>tous les dépôts</strong> de cette organisation.
members.membership_visibility=Visibilité des membres:
members.membership_visibility=Visibilité des membres:
members.public=Visible
members.public_helper=rendre caché
members.public_helper=Rendre caché
members.private=Caché
members.private_helper=rendre visible
members.private_helper=Rendre visible
members.member_role=Rôle du membre :
members.owner=Propriétaire
members.member=Membre
members.remove=Exclure
members.remove.detail=Supprimer %[1]s de %[2]s?
members.remove.detail=Supprimer %[1]s de %[2]s?
members.leave=Quitter
members.leave.detail=Quitter %s?
members.leave.detail=Quitter %s?
members.invite_desc=Ajouter un nouveau membre à %s :
members.invite_now=Envoyer une invitation
teams.join=Rejoindre
teams.leave=Quitter
teams.leave.detail=Quitter %s?
teams.leave.detail=Quitter %s?
teams.can_create_org_repo=Créer des dépôts
teams.can_create_org_repo_helper=Les membres peuvent créer de nouveaux dépôts dans l'organisation. Le créateur obtiendra l'accès administrateur au nouveau dépôt.
teams.none_access=Aucun accès
@ -2883,6 +2888,7 @@ teams.invite.title=Vous avez été invité à rejoindre l'équipe <strong>%s</st
teams.invite.by=Invité par %s
teams.invite.description=Veuillez cliquer sur le bouton ci-dessous pour rejoindre léquipe.
follow_blocked_user = Vous ne pouvez pas suivre cette organisation car elle vous a bloqué.
open_dashboard = Ouvrir le tableau de bord
[admin]
dashboard=Tableau de bord
@ -2913,12 +2919,12 @@ dashboard.operation_switch=Basculer
dashboard.operation_run=Exécuter
dashboard.clean_unbind_oauth=Effacer les connexions OAuth associées
dashboard.clean_unbind_oauth_success=Toutes les connexions OAuth associées ont été supprimées.
dashboard.task.started=Tâche démarrée: %[1]s
dashboard.task.process=Tâche: %[1]s
dashboard.task.started=Tâche démarrée: %[1]s
dashboard.task.process=Tâche: %[1]s
dashboard.task.cancelled=Tâche %[1]s annulée : %[3]s
dashboard.task.error=Erreur dans la tâche: %[1]s: %[3]s
dashboard.task.finished=Tâche: %[1]s démarrée par %[2]s est terminée
dashboard.task.unknown=Tâche inconnue: %[1]s
dashboard.task.error=Erreur dans la tâche: %[1]s: %[3]s
dashboard.task.finished=Tâche: %[1]s démarrée par %[2]s est terminée
dashboard.task.unknown=Tâche inconnue: %[1]s
dashboard.cron.started=Tâche planifiée démarrée : %[1]s
dashboard.cron.process=Tâche récurrente : %[1]s
dashboard.cron.cancelled=Tâche récurrente %[1]s annulée : %[3]s
@ -2931,7 +2937,7 @@ dashboard.delete_repo_archives.started=Tâche de suppression de toutes les archi
dashboard.delete_missing_repos=Supprimer tous les dépôts dont les fichiers Git sont manquants
dashboard.delete_missing_repos.started=Tâche de suppression de tous les dépôts sans fichiers Git démarrée.
dashboard.delete_generated_repository_avatars=Supprimer les avatars de dépôt générés
dashboard.sync_repo_branches=Synchroniser les branches manquantes depuis Git vers la base de donnée.
dashboard.sync_repo_branches=Synchroniser les branches manquantes depuis Git vers la base de donnée
dashboard.sync_repo_tags=Synchroniser les étiquettes git depuis les dépôts vers la base de données
dashboard.update_mirrors=Actualiser les miroirs
dashboard.repo_health_check=Vérifier l'état de santé de tous les dépôts
@ -2977,8 +2983,8 @@ dashboard.total_gc_time=Pause GC
dashboard.total_gc_pause=Pause totale GC
dashboard.last_gc_pause=Dernière pause GC
dashboard.gc_times=Nombres de GC
dashboard.delete_old_actions=Supprimer toutes les anciennes actions de la base de données
dashboard.delete_old_actions.started=Suppression de toutes les anciennes actions de la base de données démarrée.
dashboard.delete_old_actions=Supprimer toutes les anciennes activités de la base de données
dashboard.delete_old_actions.started=Suppression de toutes les anciennes activités de la base de données démarrée.
dashboard.update_checker=Vérificateur de mise à jour
dashboard.delete_old_system_notices=Supprimer toutes les anciennes observations de la base de données
dashboard.gc_lfs=Épousseter les métaobjets LFS
@ -3005,7 +3011,7 @@ users.repos=Dépôts
users.created=Créés
users.last_login=Dernière connexion
users.never_login=Jamais connecté
users.send_register_notify=Envoyer une notification d'inscription
users.send_register_notify=Informer de l'inscription par courriel
users.new_success=Le compte "%s" a bien été créé.
users.edit=Éditer
users.auth_source=Sources d'authentification
@ -3069,7 +3075,7 @@ orgs.new_orga=Nouvelle organisation
repos.repo_manage_panel=Gestion des dépôts
repos.unadopted=Dépôts non adoptés
repos.unadopted.no_more=Aucun dépôt dépossédé trouvé.
repos.unadopted.no_more=Aucun dépôt dépossédé trouvé
repos.owner=Propriétaire
repos.name=Nom
repos.private=Privé
@ -3174,7 +3180,7 @@ auths.oauth2_scopes=Champs d'application supplémentaires
auths.oauth2_required_claim_name=Nom de réclamation requis
auths.oauth2_required_claim_name_helper=Définissez ce nom pour restreindre la connexion depuis cette source aux utilisateurs ayant une réclamation avec ce nom
auths.oauth2_required_claim_value=Valeur de réclamation requise
auths.oauth2_required_claim_value_helper=Restreindre la connexion depuis cette source aux utilisateurs ayant réclamé cette valeur.
auths.oauth2_required_claim_value_helper=Restreindre la connexion depuis cette source aux utilisateurs ayant réclamé cette valeur
auths.oauth2_group_claim_name=Réclamer le nom fournissant les noms de groupe pour cette source. (facultatif)
auths.oauth2_admin_group=Valeur de réclamation de groupe pour les administrateurs. (Optionnel, nécessite un nom de réclamation)
auths.oauth2_restricted_group=Valeur de réclamation de groupe pour les utilisateurs restreints. (Optionnel, nécessite un nom de réclamation)
@ -3309,7 +3315,7 @@ config.mailer_sendmail_path=Chemin daccès à Sendmail
config.mailer_sendmail_args=Arguments supplémentaires pour Sendmail
config.mailer_sendmail_timeout=Délai dattente de Sendmail
config.mailer_use_dummy=Factice
config.test_email_placeholder=E-mail (ex: test@example.com)
config.test_email_placeholder=E-mail (ex: test@example.com)
config.send_test_mail=Envoyer un courriel de test
config.send_test_mail_submit=Envoyer
config.test_mail_failed=Impossible d'envoyer un courriel de test à "%s" : %v
@ -3351,7 +3357,7 @@ config.git_pull_timeout=Délai imparti pour l'opération "Pull"
config.git_gc_timeout=Délai imparti pour l'opération "GC"
config.log_config=Configuration du journal
config.logger_name_fmt=Logger: %s
config.logger_name_fmt=Logger: %s
config.disabled_logger=Désactivé
config.access_log_mode=Mode de journalisation d'accès
config.access_log_template=Modèle de journal d'accès
@ -3377,7 +3383,7 @@ monitor.execute_time=Heure d'Éxécution
monitor.last_execution_result=Résultat
monitor.process.cancel=Annuler le processus
monitor.process.cancel_desc=L'annulation d'un processus peut entraîner une perte de données
monitor.process.cancel_notices=Annuler : <strong>%s</strong>?
monitor.process.cancel_notices=Annuler: <strong>%s</strong>?
monitor.process.children=Enfant
monitor.queues=Files d'attente
@ -3425,7 +3431,7 @@ self_check.database_fix_mysql = Les utilisateurs de MySQL/MariaDB peuvent utilis
self_check.database_fix_mssql = Les utilisateurs de MSSQL sont pour l'instant contraint d'utiliser la commande SQL "ALTER ... COLLATE ..." pour corriger ce problème.
self_check.no_problem_found=Aucun problème trouvé pour linstant.
self_check.database_collation_mismatch=Exige que la base de données utilise la collation %s.
self_check.database_collation_mismatch=Exige que la base de données utilise la collation %s
self_check.database_collation_case_insensitive=La base de données utilise la collation %s, insensible à la casse. Bien que Forgejo soit compatible, il peut y avoir quelques rares cas qui ne fonctionnent pas comme prévu.
self_check.database_inconsistent_collation_columns=La base de données utilise la collation %s, mais ces colonnes utilisent des collations différentes. Cela peut causer des problèmes imprévus.
self_check.database_fix_mysql=Pour les utilisateurs de MySQL ou MariaDB, vous pouvez utiliser la commande « forgejo doctor convert » dans un terminal ou exécuter une requête du type « ALTER … COLLATE ... » pour résoudre les problèmes de collation.
@ -3434,10 +3440,12 @@ config_settings = Paramètres
config_summary = Résumé
auths.tips.gmail_settings = Paramètres Gmail:
auths.tip.gitlab_new = Enregistrer une nouvelle application sur https://gitlab.com/-/profile/applications
auths.default_domain_name = Nom de domaine par défaut utilisé pour le courriel
config.open_with_editor_app_help = Les éditeurs du menu "Ouvrir avec". Si laissé vide, les valeurs par défaut seront utilisées. Ouvrir pour voir les valeurs par défaut.
[action]
create_repo=a créé le dépôt <a href="%s">%s</a>
rename_repo=a rebaptisé le dépôt <s><code>%[1]s</code></s> en <a href="%[2]s">%[3]s</a>
rename_repo=a rebaptisé le dépôt <code>%[1]s</code> en <a href="%[2]s">%[3]s</a>
commit_repo=a soumis sur <a href="%[2]s">%[3]s</a> dans <a href="%[1]s">%[4]s</a>
create_issue=`a ouvert le ticket <a href="%[1]s">%[3]s#%[2]s</a>`
close_issue=`a fermé le ticket <a href="%[1]s">%[3]s#%[2]s</a>`
@ -3456,8 +3464,8 @@ delete_branch=a supprimée la branche %[2]s de <a href="%[1]s">%[3]s</a>
compare_branch=Comparer
compare_commits=Comparer %d révisions
compare_commits_general=Comparer les révisions
mirror_sync_push=a synchronisé les révisions de <a href="%[2]s">%[3]s</a> dun miroir vers <a href="%[1]s">%[4]s</a>.
mirror_sync_create=a synchronisé la nouvelle référence <a href="%[2]s">%[3]s</a> dun miroir vers <a href="%[1]s">%[4]s</a>.
mirror_sync_push=a synchronisé les révisions de <a href="%[2]s">%[3]s</a> dun miroir vers <a href="%[1]s">%[4]s</a>
mirror_sync_create=a synchronisé la nouvelle référence <a href="%[2]s">%[3]s</a> dun miroir vers <a href="%[1]s">%[4]s</a>
mirror_sync_delete=a synchronisé puis supprimé la nouvelle référence <code>%[2]s</code> vers <a href="%[1]s">%[3]s</a> depuis le miroir
approve_pull_request=`a approuvé <a href="%[1]s">%[3]s#%[2]s</a>`
reject_pull_request=`a suggérés des changements pour <a href="%[1]s">%[3]s#%[2]s</a>`
@ -3529,7 +3537,7 @@ title=Paquets
desc=Gérer les paquets du dépôt.
empty=Il n'y pas de paquet pour le moment.
empty.documentation=Pour plus d'informations sur le registre de paquets, voir <a target="_blank" rel="noopener noreferrer" href="%s">la documentation</a>.
empty.repo=Avez-vous téléchargé un paquet, mais il n'est pas affiché ici? Allez dans les <a href="%[1]s">paramètres du paquet</a> et liez le à ce dépôt.
empty.repo=Avez-vous téléchargé un paquet, mais il n'est pas affiché ici? Allez dans les <a href="%[1]s">paramètres du paquet</a> et liez le à ce dépôt.
registry.documentation=Pour plus dinformations sur le registre %s, voir <a target="_blank" rel="noopener noreferrer" href="%s">la documentation</a>.
filter.type=Type
filter.type.all=Tous
@ -3564,7 +3572,7 @@ alpine.repository.repositories=Dépôts
alpine.repository.architectures=Architectures
cargo.registry=Configurez ce registre dans le fichier de configuration Cargo (par exemple <code>~/.cargo/config.toml</code>) :
cargo.install=Pour installer le paquet en utilisant Cargo, exécutez la commande suivante :
chef.registry=Configurer ce registre dans votre fichier <code>~/.chef/config.rb</code>:
chef.registry=Configurer ce registre dans votre fichier <code>~/.chef/config.rb</code>:
chef.install=Pour installer le paquet, exécutez la commande suivante :
composer.registry=Configurez ce registre dans votre fichier <code>~/.composer/config.json</code> :
composer.install=Pour installer le paquet en utilisant Composer, exécutez la commande suivante :
@ -3629,7 +3637,7 @@ rubygems.dependencies.development=Dépendances de développement
rubygems.required.ruby=Nécessite Ruby en version
rubygems.required.rubygems=Nécessite RubyGem en version
swift.registry=Configurez ce registre à partir d'un terminal :
swift.install=Ajoutez le paquet dans votre fichier <code>Package.swift</code>:
swift.install=Ajoutez le paquet dans votre fichier <code>Package.swift</code>:
swift.install2=et exécutez la commande suivante :
vagrant.install=Pour ajouter une machine Vagrant, exécutez la commande suivante :
settings.link=Lier ce paquet à un dépôt
@ -3652,7 +3660,7 @@ owner.settings.cargo.rebuild=Reconstruire l'index
owner.settings.cargo.rebuild.description=La reconstruction peut être utile si l'index n'est pas synchronisé avec les paquets Cargo stockés.
owner.settings.cargo.rebuild.error=Impossible de reconstruire l'index Cargo : %v
owner.settings.cargo.rebuild.success=L'index Cargo a été reconstruit avec succès.
owner.settings.cleanuprules.title=Gérer les règles de nettoyage
owner.settings.cleanuprules.title=Règles de nettoyage
owner.settings.cleanuprules.add=Ajouter une règle de nettoyage
owner.settings.cleanuprules.edit=Modifier la règle de nettoyage
owner.settings.cleanuprules.none=Aucune règle de nettoyage disponible. Veuillez consulter la documentation.
@ -3679,13 +3687,14 @@ rpm.repository = Information sur le dépôt
rpm.repository.architectures = Architectures
rpm.repository.multiple_groups = Ce paquet est disponible dans plusieurs groupes.
owner.settings.cargo.rebuild.no_index = Incapable de reconstruire, index non initialisé.
npm.dependencies.bundle = Bundles de dépendances
[secrets]
secrets=Secrets
description=Les secrets seront transmis à certaines actions et ne pourront pas être lus autrement.
none=Il n'y a pas encore de secrets.
creation=Ajouter un secret
creation.name_placeholder=Caractères alphanumériques ou tirets bas uniquement, insensibles à la casse, ne peut commencer par GITEA_ ou GITHUB_.
creation.name_placeholder=Caractères alphanumériques ou tirets bas uniquement, insensibles à la casse, ne peut commencer par FORGEJO_, GITEA_ ou GITHUB_
creation.value_placeholder=Entrez nimporte quoi. Les blancs cernant seront taillés.
creation.success=Le secret "%s" a été ajouté.
creation.failed=Impossible d'ajouter le secret.
@ -3693,12 +3702,12 @@ deletion=Supprimer le secret
deletion.description=La suppression d'un secret est permanente et irréversible. Continuer ?
deletion.success=Le secret a été supprimé.
deletion.failed=Impossible de supprimer le secret.
management=Gestion des Secrets
management=Gestion des secrets
[actions]
actions=Actions
unit.desc=Gérer les actions
unit.desc=Gérer l'intégration continue avec Forgejo Actions
status.unknown=Inconnu
status.waiting=En attente
@ -3735,7 +3744,7 @@ runners.update_runner_failed=Impossible d'actualiser l'Exécuteur
runners.delete_runner=Supprimer cet exécuteur
runners.delete_runner_success=Exécuteur supprimé avec succès
runners.delete_runner_failed=Impossible de supprimer l'Exécuteur
runners.delete_runner_header=Êtes-vous sûr de vouloir supprimer cet exécuteur ?
runners.delete_runner_header=Confirmer la suppression de cet exécuteur
runners.delete_runner_notice=Si une tâche est en cours sur cet exécuteur, elle sera terminée et marquée comme échouée. Cela risque dinterrompre le flux de travail.
runners.none=Aucun exécuteur disponible
runners.status.unspecified=Inconnu
@ -3746,11 +3755,11 @@ runners.version=Version
runners.reset_registration_token=Réinitialiser le jeton d'enregistrement
runners.reset_registration_token_success=Le jeton dinscription de lexécuteur a été réinitialisé avec succès
runs.all_workflows=Tous les flux de travail
runs.all_workflows=Tous les workflows
runs.commit=Révision
runs.scheduled=Planifié
runs.pushed_by=soumis par
runs.invalid_workflow_helper=La configuration du flux de travail est invalide. Veuillez vérifier votre fichier %s.
runs.invalid_workflow_helper=La configuration du flux de travail est invalide. Veuillez vérifier votre fichier %s
runs.no_matching_online_runner_helper=Aucun exécuteur en ligne correspondant au libellé %s
runs.actor=Acteur
runs.status=Statut
@ -3763,9 +3772,9 @@ runs.no_workflows.documentation=Pour plus dinformations sur les actions Gitea
runs.no_runs=Le flux de travail n'a pas encore d'exécution.
runs.empty_commit_message=(message de révision vide)
workflow.disable=Désactiver le flux de travail
workflow.disable=Désactiver le workflow
workflow.disable_success=Le flux de travail « %s » a bien été désactivé.
workflow.enable=Activer le flux de travail
workflow.enable=Activer le workflow
workflow.enable_success=Le workflow « %s » a bien été activé.
workflow.disabled=Le flux de travail est désactivé.
@ -3790,11 +3799,12 @@ runs.no_workflows.quick_start = Vous ne savez pas comment commencer avec Forgejo
runs.no_workflows.documentation = Pour plus dinformations sur Forgejo Actions, voir <a target="_blank" rel="noopener noreferrer" href="%s">la documentation</a>.
variables.id_not_exist = La variable numéro %d nexiste pas.
runs.workflow = Workflow
runs.no_job_without_needs = Le workflow doit contenir au moins une tâche sans dépendances.
[projects]
type-1.display_name=Projet personnel
type-2.display_name=Projet de dépôt
type-3.display_name=Projet dorganisation
type-2.display_name=Projet du dépôt
type-3.display_name=Projet de l'organisation
[git.filemode]
changed_filemode=%[1]s → %[2]s
@ -3843,6 +3853,12 @@ commit_kind = Chercher les commits...
[munits.data]
b = o
mib = Mio
kib = Kio
gib = Gio
tib = Tio
pib = Pio
eib = Eio
[markup]
filepreview.line = Ligne %[1]d dans %[2]s

View file

@ -30,10 +30,10 @@ return_to_gitea = Regreso a Forgejo
username = Nome de Usuario
email = Enderezo Electrónico
password = Contrasinal
re_type = Confirme o Contrasinal
re_type = Confirme o contrasinal
captcha = CAPTCHA
twofa = Autenticación de Dous Factores
passcode = Código
passcode = Código de Acceso
webauthn_insert_key = Insira a súa Chave de Seguranza
webauthn_press_button = Preme o botón da súa Chave de Seguranza…
webauthn_use_twofa = Use o Código de Dous Factores do seu Teléfono
@ -104,7 +104,7 @@ save = Gardar
copy_content = Copiar Contido
language = Linguaxe
copy_hash = Copiar hash
twofa_scratch = Código Scratch de Dous Facetores
twofa_scratch = Código Scratch de Dous Factores
webauthn_sign_in = Preme o botón da súa Chave de Seguranza. Se a súa Chave de Seguranza non ten ningún botón, insírela de novo.
issues = Problemas
disabled = Desactivado
@ -123,6 +123,8 @@ name = Nome
value = Valor
confirm_delete_selected = Confirmar a eliminación de todos os elementos seleccionados?
show_full_screen = Mostrar Pantalla Completa
more_items = Máis items
toggle_menu = Alternar Menú
[aria]
navbar = Barra de Navegación

View file

@ -0,0 +1,6 @@
[common]
dashboard = डैशबोर्ड
home = घर

View file

@ -869,7 +869,7 @@ settings.tracker_issue_style.numeric=Numerik
settings.tracker_issue_style.alphanumeric=Alfhanumerik
settings.danger_zone=Zona Bahaya
settings.new_owner_has_same_repo=Pemilik baru sudah memiliki repositori dengan nama yang sama. Silakan pilih nama lain.
settings.transfer=Transfer Kepemilikan
settings.transfer.title=Transfer Kepemilikan
settings.transfer_owner=Pemilik Baru
settings.delete=Menghapus Repositori Ini
settings.delete_notices_1=- Operasi ini <strong>TIDAK BISA</strong> dibatalkan.

View file

@ -1024,7 +1024,7 @@ settings.use_external_wiki=Nota Utanaðkomandi Handbók
settings.tracker_issue_style.numeric=Tölugildi
settings.danger_zone=Hættusvæði
settings.convert_notices_1=Þessi aðgerð mun breyta speglinum í venjulegt hugbúnaðarsafn og ekki er hægt að afturkalla hana.
settings.transfer=Flytja Eignarhald
settings.transfer.title=Flytja Eignarhald
settings.trust_model.collaboratorcommitter.desc=Gildar undirskriftir frá samstarfsaðilum hugbúnaðarsafnsins verða merktar „traust“ ef þær passa við framlagandan. Að öðrum kosti verða gildar undirskriftir merktar „ótraust“ ef undirskriftin passar við framlagandan og „ósamþykkt“ að öðru leyti. Þetta mun neyða Forgejo til að vera merkt sem framlagandi á undirrituðum framlögum með raunverulega framlagandan merktan sem Co-Authored-By: og Co-Committed-By: í framlaginu. Sjálfgefinn Forgejo lykill verður að passa við notanda í gagnagrunninum.
settings.wiki_delete_desc=Að eyða handbókargögn er varanlegt og ekki er hægt að afturkalla það.
settings.delete=Eyða Þetta Hugbúnaðarsafn

View file

@ -1946,7 +1946,7 @@ settings.convert_fork_desc=Puoi convertire questo fork in un normale repository.
settings.convert_fork_notices_1=Questa operazione convertirà il fork in un normale repository e non può essere annullata.
settings.convert_fork_confirm=Converti progetto
settings.convert_fork_succeed=Il fork è stato convertito in un repository regolare.
settings.transfer=Trasferisci proprietà
settings.transfer.title=Trasferisci proprietà
settings.transfer.rejected=Il trasferimento del repository è stato rifiutato.
settings.transfer.success=Il trasferimento del repository è andato a buon fine.
settings.transfer_abort=Annulla trasferimento

View file

@ -157,7 +157,7 @@ toggle_menu = トグルメニュー
filter.not_template = テンプレートではない
invalid_data = 無効なデータ: %v
more_items = さらに表示
copy_generic = クリップボード
copy_generic = クリップボードへコピー
[aria]
navbar=ナビゲーションバー
@ -171,7 +171,8 @@ contributions_zero=貢献なし
less=
more=
contributions_one = 貢献
contributions_few = 貢献
contributions_few = 貢献たち
contributions_format = {month} {day}, {year} に {contributions} 件の貢献
[editor]
buttons.heading.tooltip=見出し追加
@ -646,7 +647,7 @@ joined_on=%sに登録
repositories=リポジトリ
activity=公開アクティビティ
followers_few=%d フォロワー
starred=スターを付けたリポジトリ
starred=スターを付けたリポジトリたち
watched=ウォッチ中のリポジトリ
code=コード
projects=プロジェクト
@ -2158,7 +2159,7 @@ settings.convert_fork_desc=フォークを通常のリポジトリに変換で
settings.convert_fork_notices_1=この操作によりフォークから通常のリポジトリに変換されます。 元に戻すことはできません。
settings.convert_fork_confirm=リポジトリを変換
settings.convert_fork_succeed=フォークを通常のリポジトリに変換しました。
settings.transfer=オーナー移転
settings.transfer.title=オーナー移転
settings.transfer.rejected=リポジトリの移転は拒否されました。
settings.transfer.success=リポジトリの移転が成功しました。
settings.transfer_abort=転送をキャンセル
@ -2723,6 +2724,12 @@ settings.sourcehut_builds.manifest_path = Build manifestのパス
settings.sourcehut_builds.secrets_helper = ジョブにビルドシークレットへのアクセス権を付与します (SECRETS:RO 権限が必要です)
release.hide_archive_links_helper = このリリース用に自動的に生成されたソース コード アーカイブを非表示にします。たとえば、独自のソース コードをアップロードする場合などです。
error.broken_git_hook = このリポジトリの Git フックが壊れているようです。<a target="_blank" rel="noreferrer" href="%s">ドキュメント</a>に従って修正し、コミットをいくつかプッシュしてステータスを更新してください。
editor.commit_id_not_matching = このコミットIDはあなたが編集していたものと一致しません。新しいブランチへコミットし、そしてマージしてください。
issues.num_participants_one = %d 人の参加者
commits.search_branch = このブランチ
size_format = %[1]s: %[2]s, %[3]s: %[4]s
editor.push_out_of_date = このpushはもう古いようです。
issues.archived_label_description = (アーカイブ済) %s
[graphs]
component_loading = %s の読み込み中...
@ -2730,7 +2737,7 @@ component_loading_failed = %s を読み込めませんでした
component_loading_info = 少し時間がかかるかもしれません…
component_failed_to_load = 予期しないエラーが発生しました。
code_frequency.what = コード頻度
contributors.what = 貢献
contributors.what = 貢献たち
recent_commits.what = 最近のコミット
[org]
@ -3781,6 +3788,9 @@ project_kind = プロジェクトの検索...
keyword_search_unavailable = キーワードによる検索は現在ご利用いただけません。サイト管理者にお問い合わせください。
runner_kind = ランナーの検索...
no_results = 一致する結果が見つかりませんでした。
fuzzy_tooltip = 入力された語句に近いものも結果に含める
match = 一致
match_tooltip = 検索語句に厳密に一致するもののみ結果に含める
[munits.data]

View file

@ -16,7 +16,7 @@ template=템플릿
language=언어
notifications=알림
create_new=생성하기
user_profile_and_more=프로파일 및 설정
user_profile_and_more=프로파일 및 설정
signed_in_as=다음 사용자로 로그인됨
username=사용자명
@ -37,7 +37,7 @@ new_migrate=새 마이그레이션
new_mirror=새로운 미러
new_fork=새 저장소 포크
new_org=새로운 조직
new_project= 프로젝트
new_project=로운 프로젝트
manage_org=조직 관리
admin_panel=사이트 관리
account_settings=계정 설정
@ -70,7 +70,7 @@ enabled=활성화됨
write=쓰기
preview=미리보기
loading=불러오는 중...
loading=불러오는 중
@ -85,12 +85,89 @@ concept_user_organization=조직
name=이름
active_stopwatch = 진행중인 타임 트래커
sign_in_with_provider = %으로 로그인
sign_in_with_provider = %s 으로 로그인
logo = 로고
tracked_time_summary = 추적된 이슈 목록 필터 기반 시간 요약
enable_javascript = 이 웹사이트는 자바스크립트가 필요합니다.
toc = 목차
licenses = 라이센스
return_to_gitea = Forgejo로 돌아가기
access_token = 액세스 토큰
webauthn_error_unable_to_process = 서버가 귀하의 요청을 처리할 수 없습니다.
webauthn_error_duplicated = 이 요청에는 보안 키가 허용되지 않습니다. 키가 이미 등록되어 있는지 확인하세요.
webauthn_reload = 다시 불러오기
remove_label_str = "%s" 항목 제거
disabled = 비활성화됨
locked = 잠김
filter = 필터
filter.not_fork = 포크되지 않음
filter.is_mirror = 미러됨
webauthn_press_button = 보안 키의 버튼을 누르세요…
toggle_menu = 토글 메뉴
webauthn_error = 보안 키를 읽을 수 없습니다.
webauthn_unsupported_browser = 현재 귀하의 브라우저는 웹 인증을 지원하지 않습니다.
webauthn_insert_key = 보안 키를 입력하세요
webauthn_sign_in = 보안 키에 있는 버튼을 누르세요. 만약 보안 키에 버튼이 없다면 다시 입력하세요.
webauthn_use_twofa = 휴대전화 2단계 코드 사용
retry = 다시 시도하기
rerun = 다시 실행하기
rerun_all = 모든 작업을 다시 실행하기
copy = 복사
new_project_column = 새 열
more_items = 더 보기
webauthn_error_unknown = 알 수 없는 오류가 발생했습니다. 다시 시도해주세요.
webauthn_error_insecure = 웹 인증은 안전한 연결만 지원합니다. HTTP에서 테스트할 경우, "localhost" 또는 "127.0.0.1" 오리진을 사용할 수 있습니다.
webauthn_error_empty = 키의 이름을 설정해야 합니다.
webauthn_error_timeout = 키를 읽기 전에 시간이 초과되었습니다. 페이지를 새로 고치고 다시 시도해주세요.
copy_generic = 클립보드에 복사
copy_url = URL 복사
copy_hash = 해시 복사
copy_content = 내용 복사
copy_branch = 브랜치 이름 복사
copy_success = 복사되었습니다!
copy_error = 복사 실패
copy_type_unsupported = 이 파일 형식은 복사할 수 없습니다
error = 오류
error404 = 도달하려는 페이지가 <strong>존재하지 않거나</strong> 볼 수 있도록 <strong>인증되지 않았습니다</strong>.
go_back = 돌아가기
invalid_data = 유효하지 않는 데이터: %v
unknown = 알 수 없음
rss_feed = RSS 피드
pin = 고정
unpin = 고정 해제
archived = 보관됨
concept_system_global = 전역
concept_user_individual = 개인
show_timestamps = 타임스탬프 보기
show_log_seconds = 초 표시
show_full_screen = 전체 화면으로 보기
download_logs = 로그 다운로드
confirm_delete_selected = 선택된 모든 항목을 삭제하시겠습니까?
value =
filter.is_archived = 보관됨
filter.not_archived = 보관되지 않음
filter.is_fork = 포크됨
filter.not_mirror = 미러되지 않음
filter.is_template =템플릿
filter.clear = 필터 지우기
ok = 확인
confirm_delete_artifact = 정말 artifact "%s"를 삭제하실건가요?
artifacts = Artifacts
[aria]
navbar = 네비게이션 바
footer.links = 링크
footer = 꼬릿말
footer.software = 소프트웨어에 대하여
[heatmap]
number_of_contributions_in_the_last_12_months = 지난 12달간 %s 명의 기여자
contributions_zero = 기여자 없음
contributions_format = {year}년 {month}월 {day}일에 {contributions}개의 기여
contributions_one = 기여
contributions_few = 기여
less = 적은
more = 많은
[editor]
@ -108,7 +185,7 @@ license=오픈 소스
[install]
install=설치
title=초기 설정
docker_helper="Forgejo를 Docker에서 실행하려면 설정 전에 이 <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"%s\">문서</a>를 읽어보세요."
docker_helper=Forgejo를 Docker에서 실행하려면 설정 전에 이 <a target="_blank" rel="noopener noreferrer" href="%s">문서</a>를 읽어보세요.
db_title=데이터베이스 설정
db_type=데이터베이스 유형
host=호스트
@ -137,9 +214,9 @@ run_user=실행 사용자명
ssh_port=SSH 서버 포트
ssh_port_helper=SSH 서버가 실행되고 있는 포트를 입력하세요. 비워둘 경우 SSH를 사용하지 않습니다.
http_port=Forgejo HTTP 수신 포트
http_port_helper=Forgejo 웹서버가 수신할 포트 번호
http_port_helper=Forgejo 웹서버가 수신할 포트 번호입니다.
app_url=Forgejo 기본 URL
app_url_helper=HTTP(S) clone URL 및 이메일 알림 기본 주소
app_url_helper=HTTP(S) clone URL 및 이메일 알림 기본 주소입니다.
log_root_path=로그 경로
log_root_path_helper=로그파일은 이 디렉토리에 저장됩니다.
@ -159,15 +236,15 @@ offline_mode_popup=타사 콘텐츠 전송 네트워크를 사용하지 않도
disable_gravatar=Gravatar 사용안함
disable_gravatar_popup=Gravatar 및 타사 아바타 소스를 사용하지 않도록 설정합니다. 사용자가 로컬로 아바타를 업로드하지 않는 한 기본 아바타가 사용됩니다.
federated_avatar_lookup=아바타 연동 사용여부
federated_avatar_lookup_popup=libravatar 기반 오픈소스 서비스 사용 목적으로 연합 아바타 조회를 허용하기
federated_avatar_lookup_popup=libravatar 기반 오픈소스 연합 아바타 조회를 허용합니다.
disable_registration=사용자 등록 비활성화
disable_registration_popup=사용자가 직접 등록할 수 없게 합니다. 관리자만이 추가할 수 있습니다.
allow_only_external_registration_popup=외부 서비스를 통한 등록을 허용여부
openid_signin=OpenID 로그인 사용
openid_signin_popup=OpenID 를 이용한 로그인 가능여부
openid_signin_popup=OpenID 를 이용한 로그인을 허용합니다.
openid_signup=OpenID 가입 가능여부
openid_signup_popup=OpenID를 통한 가입 가능여부
enable_captcha_popup=사용자 등록시 캡차 요구
openid_signup_popup=OpenID를 통한 가입을 허용합니다.
enable_captcha_popup=사용자 등록시 캡차 요구합니다.
require_sign_in_view=페이지를 보기 위해 로그인 하기
admin_setting_desc=관리자 계정을 만드는 것은 선택사항입니다. 첫번째로 등록된 사용자는 자동적으로 관리자로 지정됩니다.
admin_title=관리자 계정 설정
@ -177,16 +254,16 @@ confirm_password=비밀번호 확인
admin_email=이메일 주소
install_btn_confirm=Forgejo 설치하기
test_git_failed='git' 명령 테스트 실패: %v
sqlite3_not_available=해당 버전에서는 SQLite3를 지원하지 않습니다. %s에서 공식 버전을 다운로드해주세요. ('gobuild' 버전이 아닙니다.)
sqlite3_not_available=해당 버전에서는 SQLite3를 지원하지 않습니다. %s에서 공식 버전을 다운로드해주세요. ('gobuild' 버전이 아닙니다).
invalid_db_setting=데이터베이스 설정이 올바르지 않습니다: %v
invalid_repo_path=저장소(레파지토리) 의 경로가 올바르지 않습니다: %v
run_user_not_match=실행 사용자명이 현재 사용자명과 다릅니다.: %s -> %s
save_config_failed=설정을 저장할 수 없습니다: %v
invalid_admin_setting=관리자 계정 설정이 올바르지 않습니다: %v
invalid_log_root_path=로그(Log) 의 경로가 올바르지 않습니다: %v
default_keep_email_private=이메일 주소 숨김처리를 기본값으로 설정합니다.
default_keep_email_private=이메일 주소 숨김처리를 기본값으로 설정
default_keep_email_private_popup=새 사용자에 대한 이메일 주소 숨김처리를 기본값으로 설정합니다.
default_allow_create_organization=조직 생성 허용을 기본값으로 설정합니다.
default_allow_create_organization=조직 생성 허용을 기본값으로 설정
default_allow_create_organization_popup=신규 사용자 생성시 조직 생성을 기본값으로 설정합니다.
default_enable_timetracking=시간 추적 사용을 기본값으로 설정
default_enable_timetracking_popup=신규 레포지토리에 대한 시간 추적 사용을 기본값으로 설정합니다.
@ -212,7 +289,7 @@ issues.in_your_repos=당신의 저장소에
[explore]
repos=저장소
users=유저
users=사용자
organizations=조직
search=검색
code=코드
@ -231,7 +308,7 @@ forgot_password_title=비밀번호 찾기
forgot_password=비밀번호를 잊으셨나요?
sign_up_now=계정이 필요하신가요? 지금 가입하세요.
confirmation_mail_sent_prompt=새로운 확인 메일이 <b>%s</b>로 전송되었습니다. 받은 편지함으로 도착한 메일을 %s 안에 확인해서 등록 절차를 완료하십시오.
must_change_password=비밀번호를 변경하세요.
must_change_password=비밀번호를 변경하세요
allow_password_change=사용자에게 비밀번호 변경을 요청 (권장됨)
reset_password_mail_sent_prompt=확인 메일이 <b>%s</b>로 전송되었습니다. 받은 편지함으로 도착한 메일을 %s 안에 확인해서 비밀번호 찾기 절차를 완료하십시오.
active_your_account=계정 활성화
@ -247,7 +324,7 @@ invalid_code=검증 코드가 유효하지 않거나 만료되었습니다.
reset_password_helper=계정 복구
password_too_short=비밀번호의 길이는 최소 %d 자가 되어야 합니다.
non_local_account=로컬 유저가 아닌 경우 Forgejo 웹 인터페이스를 통해 비밀번호를 변경할 수 없습니다.
verify=확인
verify=검증
scratch_code=스크래치 코드
use_scratch_code=스크래치 코드 사용
twofa_scratch_used=스크래치 코드를 사용하셨습니다. 이중인증 설정 페이지로 리다이렉트 되었고 기기 등록을 제거하거나 새로운 스크래치 코드를 생성하십시오.
@ -365,6 +442,7 @@ following_few=%d 팔로우 중
follow=추적하기
unfollow=추적해제
user_bio=소개
projects = 프로젝트
[settings]
@ -428,7 +506,7 @@ email_deletion_desc=계정의 이메일 주소와 관련된 정보가 삭제됩
email_deletion_success=이메일 주소가 삭제되었습니다.
theme_update_success=테마가 갱신되었습니다.
theme_update_error=선택한 테마가 존재하지 않습니다.
openid_deletion=OpenID 주소가 삭제되었습니다.
openid_deletion=OpenID 주소 삭제됨
openid_deletion_desc=OpenID 주소를 삭제하면 이것을 이용하여 로그인할 수 없습니다. 계속 진행하시겠습니까?
openid_deletion_success=OpenID가 삭제되었습니다.
add_new_email=새 이메일 주소 추가
@ -445,8 +523,8 @@ manage_gpg_keys=GPG 키 관리
add_key=키 추가
ssh_desc=이러한 SSH 공용 키는 귀하의 계정과 연결되어 있습니다. 해당 개인 키는 당신의 저장소에 대한 전체 액세스를 가능하게 합니다.
gpg_desc=이러한 GPG 공개키는 당신의 계정과 연결되어있습니다. 커밋이 검증될 수 있도록 당신의 개인 키를 안전하게 유지하십시오.
ssh_helper="<strong>도움이 필요하세요?</strong> GitHub의 설명서를 참조하시기 바랍니다: <a href=\"%s\">SSH 키 생성하기</a> 또는 SSH를 사용할 때 <a href=\"%s\">일반적인 문제</a>"
gpg_helper="<strong>도움이 필요하세요?</strong> GitHub의 설명서를 참조하시기 바랍니다: <a href=\"%s\">GPG키에 대하여</a>."
ssh_helper=<strong>도움이 필요하세요?</strong> <a href="%s">SSH 키 생성하기</a> 또는 <a href="%s">SSH를 사용할 때의 일반적인 문제</a>에 관한 GitHub의 설명서를 참조하시기 바랍니다.
gpg_helper=<strong>도움이 필요하세요?</strong> <a href="%s">GPG키에 대한 GitHub 문서</a>를 참조하시기 바랍니다.
add_new_key=SSH 키 추가
add_new_gpg_key=GPG 키 추가
gpg_key_id_used=같은 ID의 GPG 공개키가 이미 존재합니다.
@ -467,12 +545,12 @@ gpg_key_deletion_desc=GPG 키를 삭제하면 해당 키로 서명 한 커밋은
ssh_key_deletion_success=SSH 키가 삭제되었습니다.
gpg_key_deletion_success=GPG 키가 삭제되었습니다.
valid_forever=영원히 유효
last_used=마지막 사용 :
last_used=마지막 사용
no_activity=최근 활동 없음
can_read_info=읽기
can_write_info=쓰기
key_state_desc=이 키는 최근 1주일 동안 사용된 적이 있습니다.
token_state_desc=이 토큰은 최근 1주일 동안 사용된 적이 있습니다.
key_state_desc=최근 1주일 동안 사용된 적 있는 키
token_state_desc=최근 1주일 동안 사용된 적 있는 토큰
show_openid=프로필에 표시
hide_openid=프로필에서 숨기기
ssh_disabled=SSH 사용불가
@ -516,7 +594,7 @@ scan_this_image=이 이미지를 당신의 인증 애플리케이션에서 스
or_enter_secret=또는 이 비밀키를 입력하세요: %s
then_enter_passcode=어플리케이션에 표시된 인증코드를 입력하여 주십시오:
passcode_invalid=인증코드가 올바르지 않습니다. 재시도해주십시오.
twofa_enrolled=당신의 계정에 2단계 인증이 설정되었습니다. 스크래치 토큰 (%s) 은 한 번만 표시되므로 안전한 장소에 보관하십시오!
twofa_enrolled=당신의 계정에 2단계 인증이 설정되었습니다. 스크래치 토큰 (%s) 은 한 번만 표시되므로 안전한 장소에 보관하십시오.
manage_account_links=연결된 계정 관리
@ -546,19 +624,19 @@ repo_name=저장소 이름
repo_name_helper=좋은 저장소 이름은 보통 짧고 기억하기 좋은 특별한 키워드로 이루어 집니다.
repo_size=저장소 용량
template=템플릿
template_select=템플릿 고르기
template_helper=템플릿으로 저장소 만들기
template_select=템플릿을 선택합니다.
template_helper=저장소 템플릿으로 만들기
visibility=가시성
visibility_helper_forced=사이트 관리자가 새 레포지토리에 대해 비공개로만 생성되도록 하였습니다.
visibility_fork_helper=(변경사항을 적용하는 경우 모든 포크가 영향을 받게 됩니다.)
clone_helper="클론하는데에 도움이 필요하면 <a target=\"_blank\" href=\"%s\">Help</a>에 방문하세요."
clone_helper=클론하는데에 도움이 필요하신가요? <a target="_blank" rel="noopener noreferrer" href="%s">Help</a>에 방문하세요.
fork_repo=저장소 포크
fork_from=원본 프로젝트 :
fork_from=원본 프로젝트
fork_visibility_helper=포크된 저장소의 가시성은 변경하실 수 없습니다.
use_template=이 템플릿을 사용
repo_desc=설명
repo_lang=언어
repo_gitignore_helper=.gitignore 템플릿 선택
repo_gitignore_helper=.gitignore 템플릿 선택합니다.
license=라이센스
license_helper=라이센스 파일을 선택해주세요.
readme=README
@ -600,7 +678,7 @@ migrate.permission_denied=로컬 저장소는 가져오기를 할 수 없습니
migrate.failed=마이그레이션 실패: %v
mirror_from=의 미러
forked_from=원본 프로젝트 :
forked_from=원본 프로젝트
fork_from_self=자신의 저장소를 포크 할 수 없습니다.
fork_guest_user=로그인하고 Fork 이 창고.
unwatch=보지않기
@ -618,7 +696,7 @@ push_exist_repo=커맨드라인에서 기존 레포지터리 푸시
empty_message=이 저장소는 아무런 내용을 가지고 있지 않습니다.
code=코드
code.desc=소스 코드 접근, 파일, 커밋 그리고 브랜치
code.desc=소스 코드, 파일, 커밋과 브랜치에 접근합니다.
branch=브렌치
tree=트리
filter_branch_and_tag=브랜치나 태그로 필터
@ -650,20 +728,20 @@ editor.preview_changes=변경내용 미리보기
editor.cannot_edit_non_text_files=바이너리 파일을 웹 인터페이스에서 편집하실 수 없습니다.
editor.edit_this_file=파일 편집
editor.delete_this_file=파일 삭제
editor.name_your_file=파일명을 입력하세요...
editor.name_your_file=파일명 입력…
editor.or=혹은
editor.cancel_lower=취소
editor.commit_changes=변경 내용을 커밋
editor.commit_message_desc=선택적 확장 설명을 추가...
editor.commit_directly_to_this_branch="<strong class=\"branch-name\">%s</strong> 브랜치에서 직접 커밋해주세요."
editor.commit_message_desc=선택적 확장 설명 추가…
editor.commit_directly_to_this_branch=<strong class="branch-name">%s</strong> 브랜치에서 직접 커밋해주세요.
editor.create_new_branch=이 커밋에 대한 <strong>새로운 브랜치</strong>를 만들고 끌어오기 요청을 시작합니다.
editor.new_branch_name_desc=새로운 브랜치 명...
editor.new_branch_name_desc=새로운 브랜치 이름…
editor.cancel=취소
editor.filename_cannot_be_empty=파일명이 빈칸입니다.
editor.no_changes_to_show=표시할 변경사항이 없습니다.
editor.add_subdir=경로 추가...
editor.add_subdir=경로 추가
commits.desc=소스 코드 변경 내역 탐색
commits.desc=소스 코드 변경 내역 탐색합니다.
commits.commits=커밋
commits.search=커밋 찾기...
commits.find=검색
@ -689,7 +767,7 @@ projects.column.edit_title=이름
projects.column.new_title=이름
issues.new=새로운 이슈
issues.new.title_empty=제목은 비워둘 수 없습니다.
issues.new.title_empty=제목은 비워둘 수 없
issues.new.labels=레이블
issues.new.no_label=레이블 없음
issues.new.clear_labels=레이블 초기화
@ -701,7 +779,7 @@ issues.new.closed_milestone=마일스톤 닫기
issues.new.assignees=담당자
issues.new.clear_assignees=담당자 초기화
issues.new.no_assignees=담당자 없음
issues.no_ref=Branch/Tag 가 지정되어 있지 않습니다.
issues.no_ref=Branch/Tag 가 지정되어 있지 않
issues.create=이슈 생성
issues.new_label=새로운 레이블
issues.new_label_placeholder=레이블 이름
@ -750,7 +828,7 @@ issues.action_milestone=마일스톤
issues.action_milestone_no_select=마일스톤 없음
issues.action_assignee=담당자
issues.action_assignee_no_select=담당자 없음
issues.opened_by="<a href=\"%[2]s\"> %[3]s</a>가 %[1]s을 오픈"
issues.opened_by=<a href="%[2]s"> %[3]s</a>님이 %[1]s에 오픈
issues.previous=이전
issues.next=다음
issues.open_title=오픈
@ -768,7 +846,7 @@ issues.create_comment=코멘트
issues.commit_ref_at=` 커밋 <a id="%[1]s" href="#%[1]s">%[2]s</a>에서 이 이슈 언급`
issues.role.owner=소유자
issues.role.member=멤버
issues.sign_in_require_desc="<a href=\"%s\">로그인</a>하여 이 대화에 참여"
issues.sign_in_require_desc=<a href="%s">로그인</a>하여 이 대화에 참여하세요.
issues.edit=수정
issues.cancel=취소
issues.save=저장
@ -805,20 +883,20 @@ issues.add_time_sum_to_small=시간이 입력되지 않았습니다.
issues.time_spent_total=총 경과된 시간
issues.time_spent_from_all_authors=`총 경과된 시간: %s`
issues.due_date=마감일
issues.invalid_due_date_format="마감일은 반드시 'yyyy-mm-dd' 형식이어야 합니다."
issues.error_modifying_due_date="마감일 수정을 실패하였습니다."
issues.error_removing_due_date="마감일 삭제를 실패하였습니다."
issues.invalid_due_date_format=마감일은 반드시 "yyyy-mm-dd" 형식이어야 합니다.
issues.error_modifying_due_date=마감일 수정을 실패하였습니다.
issues.error_removing_due_date=마감일 삭제를 실패하였습니다.
issues.due_date_form=yyyy-mm-dd
issues.due_date_form_add=마감일 추가
issues.due_date_form_edit=편집
issues.due_date_form_remove=삭제
issues.due_date_not_set=마감일이 설정되지 않았습니다.
issues.due_date_added=마감일 %s 를 추가 %s
issues.due_date_remove=%s %s 마감일이 삭제되었습니다.
issues.due_date_remove=%s %s 마감일이 삭제
issues.due_date_overdue="기한 초과"
issues.due_date_invalid="기한이 올바르지 않거나 범위를 벗어났습니다. 'yyyy-mm-dd'형식을 사용해주십시오."
issues.due_date_invalid=기한이 올바르지 않거나 범위를 벗어났습니다. "yyyy-mm-dd"형식을 사용해주십시오.
issues.dependency.title=의존성
issues.dependency.add=의존성 추가...
issues.dependency.add=의존성 추가
issues.dependency.cancel=취소
issues.dependency.remove=제거
issues.dependency.remove_info=이 의존성 제거
@ -848,9 +926,9 @@ pulls.compare_changes=새 풀 리퀘스트
pulls.compare_base=병합하기
pulls.compare_compare=다음으로부터 풀
pulls.filter_branch=Filter Branch
pulls.no_results=결과 없음
pulls.no_results=결과를 찾을 수 없습니다.
pulls.create=풀 리퀘스트 생성
pulls.title_desc_few="<code>%[2]s</code> 에서 <code id=\"branch_target\">%[3]s</code> 로 %[1]d commits 를 머지하려 합니다"
pulls.title_desc_few=<code>%[2]s</code> 에서 <code id="branch_target">%[3]s</code> 로 %[1]d개의 커밋들을 머지하려 합니다
pulls.merged_title_desc_few=<code>%[2]s</code> 에서 <code>%[3]s</code> 로 %[1]d commits 를 머지했습니다 %[4]s
pulls.tab_conversation=대화
pulls.tab_commits=커밋
@ -875,13 +953,13 @@ milestones.closed=닫힘 %s
milestones.no_due_date=기한 없음
milestones.open=열기
milestones.close=닫기
milestones.completeness=%d%% 완료됨
milestones.completeness=<strong>%d%%</strong> 완료됨
milestones.create=마일스톤 생성
milestones.title=타이틀
milestones.desc=설명
milestones.due_date=기한 (선택 사항)
milestones.clear=지우기
milestones.invalid_due_date_format="마감일은 반드시 'yyyy-mm-dd' 형식이어야 합니다."
milestones.invalid_due_date_format=마감일은 반드시 "yyyy-mm-dd" 형식이어야 합니다.
milestones.edit=마일스톤 편집
milestones.cancel=취소
milestones.modify=마일스톤 갱신
@ -897,14 +975,14 @@ milestones.filter_sort.least_issues=이슈 적은 순
ext_wiki.desc=외부 위키에 연결하기.
wiki=위키
wiki.welcome=위키에 오신것을 환영합니다!
wiki.welcome_desc=Wiki를 사용하여 공동 작업자들과 문서를 작성 하고 공유 할 수 있습니다.
wiki.desc=공동 작업자들과 문서 작성 및 공유.
wiki.welcome=위키에 오신것을 환영합니다.
wiki.welcome_desc=Wiki를 사용하여 업자들과 문서를 작성 하고 공유 할 수 있습니다.
wiki.desc=업자들과 문서 작성 및 공유.
wiki.create_first_page=첫 페이지 작성
wiki.page=페이지
wiki.filter_page=페이지 필터링
wiki.new_page=페이지
wiki.default_commit_message=이 페이지에 대한 메모를 작성하세요.(선택사항)
wiki.default_commit_message=이 페이지 수정에 대한 메모를 작성하세요.(선택사항)
wiki.save_page=페이지 저장하기
wiki.last_commit_info=%s이(가) %s에 이 페이지를 수정함
wiki.edit_page_button=수정하기
@ -930,8 +1008,8 @@ activity.title.user_1=%d 사용자
activity.title.user_n=%d 사용자
activity.title.prs_1=풀 리퀘스트 %d개
activity.title.prs_n=풀 리퀘스트 %d개
activity.title.prs_merged_by=%s 가 %s 로부터 머지 되었습니다.
activity.title.prs_opened_by=%s 가 %s 로 부터 제안 되었습니다.
activity.title.prs_merged_by=%s 가 %s 로부터 머지 되었
activity.title.prs_opened_by=%s 가 %s 로 부터 제안
activity.merged_prs_label=병합됨
activity.opened_prs_label=제안중
activity.active_issues_count_1=<strong>%d</strong> 개의 활성화된 이슈
@ -940,7 +1018,7 @@ activity.closed_issues_count_1=클로즈된 이슈
activity.closed_issues_count_n=클로즈된 이슈
activity.title.issues_1=이슈 %d개
activity.title.issues_n=이슈 %d개
activity.title.issues_created_by=%s 가 %s 에 의해 생성되었습니다.
activity.title.issues_created_by=%s 가 %s 에 의해 생성
activity.closed_issue_label=닫힘
activity.new_issues_count_1=새로운 이슈
activity.new_issues_count_n=새로운 이슈
@ -951,7 +1029,7 @@ activity.unresolved_conv_desc=최근 변경된 이슈나 풀 리퀘스트들이
activity.unresolved_conv_label=열기
activity.title.releases_1=%d 개의 릴리즈
activity.title.releases_n=%d 개의 릴리즈
activity.title.releases_published_by=%s 가 %s 에 의하여 배포되었습니다.
activity.title.releases_published_by=%s 가 %s 에 의하여 배포
activity.published_release_label=배포됨
contributors.contribution_type.commits=커밋
@ -962,9 +1040,9 @@ search.results="<a href=\"%s\">%s</a> 에서 \"%s\" 에 대한 검색 결과"
search.code_no_results=검색어와 일치하는 소스코드가 없습니다.
settings=설정
settings.desc=설정은 저장소 설정을 관리할 수 있습니다.
settings.desc=설정에서 저장소 설정을 관리할 수 있음
settings.options=저장소
settings.collaboration=공동작업자
settings.collaboration=업자
settings.collaboration.admin=관리자
settings.collaboration.write=쓰기
settings.collaboration.read=읽기
@ -980,12 +1058,12 @@ settings.site=웹 사이트
settings.update_settings=설정 저장
settings.advanced_settings=고급 설정
settings.wiki_desc=저장소 위키 활성화
settings.use_internal_wiki=빌트-인 위키 사용
settings.use_internal_wiki=내장 위키 사용
settings.use_external_wiki=외부 위키 사용
settings.external_wiki_url=외부 위키 URL
settings.external_wiki_url_error=외부 위키 URL이 올바른 URL이 아닙니다.
settings.issues_desc=저장소 이슈 트래커 활성화
settings.use_internal_issue_tracker=빌트-인 트래커 사용
settings.use_internal_issue_tracker=내장 이슈 트래커 사용
settings.use_external_issue_tracker=외부 이슈 트래커 사용
settings.external_tracker_url=외부 이슈 트래커 URL
settings.external_tracker_url_error=외부 이슈 트래커 URL이 올바른 URL이 아닙니다.
@ -1005,28 +1083,28 @@ settings.convert=일반 저장소로 변환
settings.convert_confirm=저장소 변환
settings.convert_fork=일반 저장소로 변환
settings.convert_fork_confirm=저장소 변환
settings.transfer=소유권 이전
settings.transfer.title=소유권 이전
settings.transfer_owner=새 소유자
settings.transfer_succeed=저장소가 이전 되었습니다.
settings.trust_model.collaborator=협업자
settings.wiki_delete=위키 데이터 삭제
settings.confirm_wiki_delete=위키 데이터 삭제
settings.delete=이 저장소 삭제
settings.delete_notices_1=- 이 작업은 취소할 수 <strong>없습니다.</strong>
settings.delete_notices_1=- 이 작업은 <strong>취소할 수 없습니다</strong>.
settings.deletion_success=저장소가 삭제되었습니다.
settings.update_settings_success=저장소 설정이 갱신되었습니다.
settings.confirm_delete=저장소 삭제
settings.add_collaborator=공동작업자 추가
settings.add_collaborator_success=공동작업자가 추가 되었습니다.
settings.add_collaborator=업자 추가
settings.add_collaborator_success=업자가 추가 되었습니다.
settings.delete_collaborator=제거
settings.collaborator_deletion=공동작업자 삭제
settings.collaborator_deletion=업자 삭제
settings.search_user_placeholder=사용자 검색...
settings.teams=
settings.add_webhook=Webhook 추가
settings.webhook_deletion=Webhook 삭제
settings.webhook_deletion_success=Webhook을 삭제했습니다.
settings.webhook.test_delivery=전달 시험
settings.webhook.test_delivery_desc=이 웹훅을 가상 이벤트로 테스트
settings.webhook.test_delivery_desc=이 웹훅을 가상 이벤트로 테스트합니다.
settings.webhook.request=요청
settings.webhook.response=응답
settings.webhook.headers=제목
@ -1046,7 +1124,7 @@ settings.discord_icon_url=아이콘 URL
settings.event_desc=트리거:
settings.event_push_only=푸시 이벤트
settings.event_send_everything=모든 이벤트
settings.event_choose=사용자 정의 이벤트...
settings.event_choose=사용자 정의 이벤트
settings.event_create=생성
settings.event_create_desc=브랜치 또는 태그가 생성되었습니다.
settings.event_delete=삭제
@ -1055,7 +1133,7 @@ settings.event_wiki=위키
settings.event_release=릴리즈
settings.event_release_desc=릴리즈가 저장소에서 배포, 갱신 또는 제거되었습니다.
settings.event_push=푸시
settings.event_push_desc=저장소로 푸시
settings.event_push_desc=저장소로 푸시합니다.
settings.event_repository=저장소
settings.event_repository_desc=저장소가 생성되거나 삭제됩니다.
settings.event_issues=이슈
@ -1165,6 +1243,37 @@ branch.deleted_by=%s 에 의해 삭제되었습니다.
topic.manage_topics=토픽 관리
topic.done=완료
topic.count_prompt=25개 이상의 토픽을 선택하실 수 없습니다.
settings.trust_model.collaboratorcommitter.desc = 이 저장소의 협업자가 작성한 유효한 서명이 커미터와 일치하는 경우 "신뢰할 수 있음"으로 표시됩니다. 협업자가 아니되 유효한 서명이 커미터와 일치하면 "신뢰할 수 없음"으로 표시되고 그렇지 않으면 "일치하지 않음"으로 표시됩니다. 커밋에 Co-Authored-By: 또는 Co-Committed-By: 트레일러로 표시된 실제 커미터와 함께 서명된 커밋이 있다면 Forgejo가 커미터로 표시됩니다. 기본 Forgejo 키는 데이터베이스의 사용자와 일치해야 합니다.
settings.matrix.access_token_helper = 이 작업을 위한 개별적인 Matrix 계정을 만드는것이 권장됩니다. 엑세스 토큰은 Element 웹 클라이언트(개인정보 보호 브라우징 권장) > 유저 메뉴(좌상단) > All settings > Help & About > Advanced > Access Token (홈서버 주소 바로 아래) 에서 찾을 수 있습니다. 로그아웃시 토큰이 만료됨을 주의하시고, 창을 닫아주세요.
settings.trust_model.collaboratorcommitter = 협업자+커미터
settings.signing_settings = 서명 검증 설정
settings.trust_model.collaborator.desc = 이 저장소의 협업자들의 유효한 서명은 "신뢰됨"으로 표시됩니다 (커미터와 일치하지 않는 경우를 포함). 아닌경우, 커미터와 일치하는 유효한 서명은 "신뢰되지 않음"으로 표시되고, 일치하지도 않는경우 "일치하지 않움" 으로 표시됩니다.
settings.trust_model.committer.long = 커미터: 커미터와 일치하는 서명을 신뢰(GIthub와 일치하며 Forgejo로 서명된 커밋이 Fogejo를 커미터로 갖도록 강제합니다.)
settings.trust_model.collaboratorcommitter.long = 협업자+커미터: 커미터가 일치하는 협업자의 서명을 신뢰
settings.trust_model.default = 기본 신뢰 모델
settings.trust_model.default.desc = 이 설치에 대한 기본 신뢰 모델을 사용합니다.
settings.trust_model.collaborator.long = 협업자: 협업자들의 서명을 신뢰
settings.trust_model = 서명 신뢰 모델
settings.trust_model.committer.desc = 유효한 서명이 커미터와 일치할경우 "신뢰됨"으로, 일치하지 않을경우 "일치하지 않음"으로 표시됩니다. 이러한 경우 Forgejo가 커미터로 표시되도록 강제되며 실제 커미터는 Co-authored-by: 와 Co-committed-by: 트레일러로 표시됩니다. 기본 Forgejo 키는 데이터베이스의 유저와 일치해야 합니다.
visibility_helper = 저장소 비공개로 만들기
projects.description = 설명 (선택)
settings.external_tracker_url_desc = 방문자들이 이슈 탭을 클릭하면 외부 이슈 트레커 URL로 연결됩니다.
settings.tracker_url_format_desc = <code>{user}</code>, <code>{repo}</code> and <code>{index}</code>를 사용자 이름, 저장소 이름, 이슈 번호로 사용할 수 있습니다.
projects = 프로젝트
projects.desc = 이슈와 풀 리퀘스트를 프로젝트에서 관리합니다.
projects.create = 프로젝트 만들기
project_board = 프로젝트
projects.create_success = "%s" 프로젝트가 생성되었습니다.
projects.deletion = 프로젝트 삭제
projects.deletion_desc = 프로젝트를 삭제하면 관련된 모든 이슈에서 해당 프로젝트가 제거됩니다. 계속하시겠습니까?
projects.deletion_success = 프로젝트가 삭제되었습니다.
projects.edit = 프로젝트 수정
projects.new_subheader = 한 곳에서 당신의 작업을 조정, 추적, 업데이트해 프로젝트를 일정대로 투명하게 유지하세요.
pulls.approve_count_n = %명의 승인
pulls.approve_count_1 = %d명의 승인
pulls.blocked_by_approvals = 이 풀 리퀘스트는 충분히 승인되지 않았습니다. %d/%d 승인됨.
settings.event_pull_request_approvals = 풀 리퀘스트 승인
pulls.blocked_by_official_review_requests = 이 풀 리퀘스트는 공식 검토자에 의한 승인이 부족하여 차단되었습니다.
@ -1412,7 +1521,7 @@ config.reverse_auth_user=역방향 사용자 인증
config.ssh_config=SSH 설정
config.ssh_enabled=활성화됨
config.ssh_start_builtin_server=빌트-인 서버 사용
config.ssh_start_builtin_server=내장 서버 사용
config.ssh_port=포트
config.ssh_listen_port=수신 대기 포트
config.ssh_root_path=최상위 경로
@ -1529,6 +1638,7 @@ notices.type_1=저장소
notices.desc=설명
notices.op=일.
notices.delete_success=시스템 알림이 삭제되었습니다.
users.allow_git_hook_tooltip = Git 훅은 Forgejo가 실행중인 OS 유저로 실행되며 같은 수준의 권한을 갖습니다. 결과적으로, Git 훅 사용권한이 있는 사용자는 Forgejo에서 사용하는 데이터베이스를 포함한 모든 저장소에 접근하거나 수정할 수 있습니다. 궁극적으로 이러한 사용자들은 Forgejo의 관리자 권한을 획득할 수 있습니다.
[action]
@ -1536,6 +1646,7 @@ create_repo=저장소를 만들었습니다. <a href="%s">%s</a>
rename_repo=<code>%[1]s에서</code>에서 <a href="%[2]s"> %[3]s</a>으로 저장소 이름을 바꾸었습니다.
transfer_repo=<code>%s</code>에서 <a href="%s">%s</a>로 저장소가 전송되었습니다.
compare_commits=%d 커밋들 비교
watched_repo = <a href="%[1]s">%[2]s</a>에대한 감시를 시작합니다
[tool]
now=현재
@ -1572,6 +1683,9 @@ pin=알림 고정
mark_as_read=읽음으로 표시
mark_as_unread=읽지 않음으로 표시
mark_all_as_read=모두 읽음으로 표시
subscriptions = 구독된 알림
no_subscriptions = 알림이 없음
watching = 감시
[gpg]
error.extract_sign=서명 추출에 실패
@ -1613,3 +1727,11 @@ runs.commit=커밋
[git.filemode]
; Ordered by git filemode value, ascending. E.g. directory has "040000", normal file has "100644", …
[search]
code_search_by_git_grep = 현재 코드 검색 결과는 "git grep"에 의해 제공됩니다.관리자가 코드 인덱서를 활성화하면 더 나은 결과가 제공될 수 있습니다.
branch_kind = 브랜치 검색...
keyword_search_unavailable = 지금은 키워드로 검색이 지원되지 않습니다. 사이트 관리자에게 문의하십시오.
commit_kind = 커밋 검색...
no_results = 일치하는 결과를 찾을 수 없습니다.

View file

@ -2080,7 +2080,7 @@ settings.convert_fork_desc=Jūs varat nomainīt šo atdalīto repozitoriju kā n
settings.convert_fork_notices_1=Šī darbība mainīs atdalīto repozitoriju uz neatkarīgu repozitoriju un ir neatgriezeniska.
settings.convert_fork_confirm=Konvertēt repozitoriju
settings.convert_fork_succeed=Atdalītais repozitorijs tika izmainīts par neatkarīgu repozitoriju.
settings.transfer=Mainīt īpašnieku
settings.transfer.title=Mainīt īpašnieku
settings.transfer.rejected=Repozitorija īpašnieka maiņas pieprasījums tika noraidīts.
settings.transfer.success=Repozitorija īpašnieka maiņa veiksmīga.
settings.transfer_abort=Atcelt īpašnieka maiņu

View file

@ -157,6 +157,7 @@ filter = Filter
filter.not_archived = Niet gearchiveerd
more_items = Meer items
invalid_data = Ongeldige data: %v
copy_generic = Kopieer naar klembord
[aria]
navbar = Navigatiebalk
@ -629,6 +630,12 @@ org_still_own_packages = Deze organisatie is eigenaar van één of meer pakkette
unset_password = De inloggebruiker heeft het wachtwoord niet ingesteld.
unsupported_login_type = Het aanmeldtype wordt niet ondersteund om accounts te verwijderen.
required_prefix = De tekst moet beginnen met "%s"
Biography = Biografie
Location = Locatie
Description = Beschrijving
FullName = Volledige naam
To = Branch naam
Website = Website
[user]
@ -2473,7 +2480,7 @@ settings.reindex_button = Toevoegen aan herindexeringswachtrij
settings.reindex_requested = Herindexering aangevraagd
settings.danger_zone = Gevaren zone
settings.new_owner_has_same_repo = De nieuwe eigenaar heeft al een repository met dezelfde naam. Kies een andere naam.
settings.transfer = Eigendom overdragen
settings.transfer.title = Eigendom overdragen
settings.transfer.success = Repository overdracht was succesvol.
settings.transfer_abort = Overdracht annuleren
settings.transfer_abort_success = De repository overdracht naar %s is succesvol geannuleerd.

View file

@ -143,7 +143,7 @@ show_log_seconds = Pokaż sekundy
show_full_screen = Pokaż pełny ekran
download_logs = Pobierz logi
confirm_delete_selected = Potwierdzić usunięcie wszystkich wybranych elementów?
filter.is_template = Szablon
filter.is_template = Szablony
filter.public = Publiczne
filter.private = Prywatne
copy_generic = Skopiuj do schowka
@ -152,10 +152,11 @@ tracked_time_summary = Podsumowanie śledzonego czasu na podstawie filtrów list
show_timestamps = Pokaż znaczniki czasu
filter.not_archived = Nie zarchiwizowane
filter.not_mirror = Nie lustrzane odbicie
filter.not_template = Nie szablon
filter.not_template = Nie szablony
filter.is_archived = Zarchiwizowane
filter.is_mirror = Lustrzane odbicie
filter.is_mirror = Kopie lustrzane
more_items = Więcej elementów
filter.is_fork = Forki
[aria]
navbar = Pasek nawigacji
@ -167,6 +168,10 @@ footer.links = Linki
contributions_format = {contributions} w dniu {month} {day}, {year}
less = Mniej
more = Więcej
number_of_contributions_in_the_last_12_months = %s wkładów w ciągu ostatnich 12 miesięcy
contributions_zero = Brak wkładów
contributions_one = Wkład
contributions_few = Wkłady
[editor]
buttons.heading.tooltip = Dodaj nagłówek
@ -206,7 +211,7 @@ lightweight=Niskie wymagania
lightweight_desc=Forgejo ma niskie minimalne wymagania i może działać na niedrogim Raspberry Pi. Oszczędzaj energię swojego komputera!
license=Otwarte źródło
license_desc=Pobierz na <a target="_blank" rel="noopener noreferrer" href="https://forgejo.org/download">Forgejo</a>! Dołącz do nas dzięki <a target="_blank" rel="noopener noreferrer" href="https://codeberg.org/forgejo/forgejo">swojemu wkładowi</a>, aby uczynić ten projekt jeszcze lepszym. Nie wstydź się zostać współtwórcą!
install_desc = Po prostu <a target="_blank" rel="noopener noreferrer" href="https://forgejo.org/download/#installation-from-binary">uruchom plik binarny</a> dla swojej platformy, dostarcz ją za pomocą <a target="_blank" rel="noopener noreferrer" href="https://forgejo.org/download/#container-image">Dockera</a>, lub weż wersję<a target="_blank" rel="noopener noreferrer" href="https://forgejo.org/download">zapakowaną</a>.
install_desc = Po prostu <a target="_blank" rel="noopener noreferrer" href="https://forgejo.org/download/#installation-from-binary">uruchom plik binarny</a> dla swojej platformy, dostarcz ją za pomocą <a target="_blank" rel="noopener noreferrer" href="https://forgejo.org/download/#container-image">Dockera</a>, lub użyj wersji <a target="_blank" rel="noopener noreferrer" href="https://forgejo.org/download">zapakowanej</a>.
[install]
install=Instalacja
@ -367,6 +372,9 @@ go_to = Przejdź do
relevant_repositories = Wyświetlane są tylko istotne repozytoria, <a href="%s">pokaż niefiltrowane wyniki</a>.
stars_one = %d gwiazdka
stars_few = %d gwiazdek
forks_one = %d fork
forks_few = %d forki
relevant_repositories_tooltip = Repozytoria, które nie są forkami lub nie mają tematu, ikony i opisu są ukryte.
[auth]
create_new_account=Zarejestruj konto
@ -431,10 +439,23 @@ prohibit_login_desc = Twoje konto jest zablokowane, skontaktuj się z administra
change_unconfirmed_email_summary = Zmień adres e-mail, na który zostanie wysłana wiadomość aktywacyjna.
manual_activation_only = Skontaktuj się z administratorem witryny, aby dokończyć aktywację.
change_unconfirmed_email = Jeśli podczas rejestracji podałeś nieprawidłowy adres e-mail, możesz go zmienić poniżej, a potwierdzenie zostanie wysłane na nowy adres.
openid_signin_desc = Wprowadź swój identyfikator URI OpenID. Na przykład: alice.openid.example.org lub https://openid.example.org/alice.
authorization_failed_desc = Autoryzacja nie powiodła się, ponieważ wykryliśmy nieprawidłowe żądanie. Skontaktuj się z autorem aplikacji, którą próbowałeś autoryzować.
password_pwned = Wybrane hasło znajduje się na <a target="_blank" rel="noopener noreferrer" href="https://haveibeenpwned.com/Passwords">liście skradzionych haseł</a>, które zostały wcześniej ujawnione w wyniku publicznego naruszenia danych. Spróbuj ponownie z innym hasłem i rozważ zmianę tego hasła również w innych miejscach.
last_admin = Nie można usunąć ostatniego administratora. Musi istnieć co najmniej jeden administrator.
tab_signin = Zaloguj
oauth.signin.error = Wystąpił błąd podczas przetwarzania żądania autoryzacji. Jeśli ten błąd nadal występuje, skontaktuj się z administratorem witryny.
change_unconfirmed_email_error = Nie udało się zmienić adresu email: %v
invalid_code_forgot_password = Twój kod potwierdzający jest niepoprawny lub wygasł. Naciśnij <a href="%s">tutaj</a>, aby rozpocząć nową sesję.
invalid_password = Twoje hasło nie zgadza się z hasłem, które zostało użyte do stworzenia konta.
reset_password_wrong_user = Jesteś zalogowany jako %s, ale link odzyskujący jest dla %s
tab_signup = Zarejestruj
oauth.signin.error.access_denied = Wniosek o autoryzację został odrzucony.
oauth.signin.error.temporarily_unavailable = Autoryzacja nie powiodła się, ponieważ serwer uwierzytelniania jest tymczasowo niedostępny. Spróbuj ponownie później.
[mail]
view_it_on=Zobacz na %s
link_not_working_do_paste=Nie działa? Spróbuj skopiować i wkleić go do przeglądarki.
link_not_working_do_paste=Czy link nie działa? Spróbuj skopiować i wkleić go do paska adresu URL przeglądarki.
hi_user_x=Cześć <b>%s</b>,
activate_account=Aktywuj swoje konto
@ -448,12 +469,12 @@ activate_email.text=Aby zweryfikować swój adres e-mail, w ciągu następnych <
register_notify=Witamy w Forgejo
register_notify.title=%[1]s, witaj w %[2]s
register_notify.text_1=to jest Twój e-mail z potwierdzeniem rejestracji dla %s!
register_notify.text_2=Możesz teraz zalogować się za pomocą nazwy użytkownika: %s.
register_notify.text_3=Jeśli to konto zostało utworzone dla Ciebie, <a href="%s">ustaw swoje hasło</a>.
register_notify.text_2=Możesz teraz zalogować się za pomocą nazwy użytkownika: %s
register_notify.text_3=Jeśli ktoś inny utworzył dla ciebie to konto, musisz najpierw <a href="%s">ustawić swoje hasło</a>.
reset_password=Odzyskaj swoje konto
reset_password.title=%s, prosiłeś o odzyskanie konta
reset_password.text=Kliknij poniższy link, aby odzyskać swoje konto w ciągu <b>%s</b>:
reset_password.title=%s, otrzymaliśmy prośbę o odzyskanie konta
reset_password.text=Jeśli to byłeś ty, kliknij poniższy link, aby odzyskać swoje konto w ciągu <b>%s</b>:
register_success=Rejestracja powiodła się
@ -477,13 +498,24 @@ release.downloads=Pobierz:
release.download.zip=Kod źródłowy (ZIP)
release.download.targz=Kod źródłowy (TAR.GZ)
repo.transfer.subject_to=%s chciałby przenieść "%s" do %s
repo.transfer.subject_to_you=%s chciałby przenieść "%s" do ciebie
repo.transfer.subject_to=%s chce przenieść repozytorium "%s" do %s
repo.transfer.subject_to_you=%s chce przenieść repozytorium "%s" do ciebie
repo.transfer.to_you=ciebie
repo.transfer.body=Aby zaakceptować lub odrzucić go, odwiedź %s lub po prostu go zignoruj.
repo.collaborator.added.subject=%s dodał Cię do %s
repo.collaborator.added.text=Zostałeś dodany jako współtwórca repozytorium:
repo.collaborator.added.subject=%s dodał cię do %s jako współtwórce
repo.collaborator.added.text=Zostałeś dodany jako współtwórca do repozytorium:
issue.action.push_1 = <b>@%[1]s</b> pchnął %[3]d commit do %[2]s
activate_email.title = %s, zweryfikuj swój adres e-mail
admin.new_user.text = <a href="%s">Kliknij tutaj</a>, aby zarządzać tym użytkownikiem z panelu administracyjnego.
issue.action.push_n = <b>@%[1]s</b> pchnął %[3]d commity do %[2]s
reply = lub odpowiedz bezpośrednio na ten e-mail
admin.new_user.subject = Właśnie zarejestrował się nowy użytkownik %s
admin.new_user.user_info = Informacje użytkownika
issue.action.approve = <b>@%[1]s</b> zatwierdził ten pull request.
issue.action.reject = <b>@%[1]s</b> poprosił o zmiany w tym pull requescie.
issue.action.review_dismissed = <b>@%[1]s</b> odrzucił ostatnią analizę od %[2]s dla tego pull requesta.
team_invite.subject = %[1]s zaprosił cię do dołączenia do organizacji %[2]s
[modal]
@ -1633,7 +1665,7 @@ settings.convert_fork_desc=Możesz przekonwertować ten fork w zwykłe repozytor
settings.convert_fork_notices_1=Ta operacja przekonwertuje fork w zwykłe repozytorium i nie może być cofnięta.
settings.convert_fork_confirm=Konwertuj repozytorium
settings.convert_fork_succeed=Fork został przekonwertowany w zwykłe repozytorium.
settings.transfer=Przeniesienie własności
settings.transfer.title=Przeniesienie własności
settings.transfer.rejected=Przeniesienie repozytorium zostało odrzucone.
settings.transfer.success=Przeniesienie repozytorium powiodło się.
settings.transfer_abort=Anuluj transfer

View file

@ -247,9 +247,9 @@ run_user_helper=O nome de usuário do sistema operacional com o qual o Forgejo
domain=Domínio do servidor
domain_helper=Domínio ou endereço de host para o servidor.
ssh_port=Porta do servidor SSH
ssh_port_helper=Número da porta que seu servidor SSH está usando. Deixe em branco para desabilitar.
http_port=Porta HTTP de uso do Forgejo
http_port_helper=Número da porta que o servidor web do Forgejo irá usar.
ssh_port_helper=Número da porta que será utilizada pelo servidor SSH. Deixe em branco para desabilitar.
http_port=Porta HTTP
http_port_helper=Número da porta que será usada pelo servidor web do Forgejo.
app_url=URL base
app_url_helper=Endereço base para URLs clone HTTP(S) e notificações por e-mail.
log_root_path=Caminho dos arquivos de registro
@ -304,20 +304,20 @@ invalid_admin_setting=Configuração da conta de administrador está inválida:
invalid_log_root_path=Pasta raíz do log está inválida: %v
default_keep_email_private=Ocultar endereços de e-mail por padrão
default_keep_email_private_popup=Ocultar endereços de e-mail de novas contas de usuário por padrão.
default_allow_create_organization=Permitir a criação de organizações por padrão
default_allow_create_organization=Permitir a criação de organizações
default_allow_create_organization_popup=Permitir que novas contas de usuários criem organizações por padrão.
default_enable_timetracking=Habilitar o Cronômetro por Padrão
default_enable_timetracking_popup=Habilitar o cronômetro para novos repositórios por padrão.
no_reply_address=Domínio de e-mail oculto
no_reply_address_helper=Nome de domínio para usuários com um endereço de e-mail oculto. Por exemplo, o nome de usuário 'joe' será registrado no Git como 'joe@noreply.example.org' se o domínio de e-mail oculto estiver definido como 'noreply.example.org'.
password_algorithm=Algoritmo Hash de Senha
password_algorithm=Algoritmo de hash de senhas
invalid_password_algorithm=Algoritmo de hash de senha inválido
password_algorithm_helper=Escolha o algoritmo de hash para as senhas. Diferentes algoritmos têm requerimentos e forças diversos. O algoritmo argon2 é bastante seguro, mas usa muita memória e pode ser inapropriado para sistemas com menos recursos.
enable_update_checker=Habilitar Verificador de Atualizações
enable_update_checker=Verificar por atualizações automaticamente
env_config_keys=Configuração do ambiente
env_config_keys_prompt=As seguintes variáveis de ambiente também serão aplicadas ao seu arquivo de configuração:
allow_dots_in_usernames = Permitir pontos em nomes de usuário. Esta opção não afeta contas já existentes.
enable_update_checker_helper_forgejo = Confere periodicamente um registro de DNS TXT em release.forgejo.org para verificar se há uma nova versão do Forgejo disponível.
enable_update_checker_helper_forgejo = Confere periodicamente um registro TXT de DNS em release.forgejo.org para verificar se há uma nova versão do Forgejo disponível.
[home]
uname_holder=Usuário ou e-mail
@ -326,7 +326,7 @@ switch_dashboard_context=Trocar contexto do painel de controle
my_repos=Repositórios
show_more_repos=Mostrar mais repositórios…
collaborative_repos=Repositórios colaborativos
my_orgs=Minhas organizações
my_orgs=Organizações
my_mirrors=Meus espelhos
view_home=Ver %s
search_repos=Encontre um repositório…
@ -464,12 +464,12 @@ activate_email.text=Por favor clique no link a seguir para verificar o seu ender
register_notify=Bem-vindo ao Forgejo
register_notify.title=%[1]s, bem-vindo(a) a %[2]s
register_notify.text_1=este é o seu e-mail de confirmação de registro para %s!
register_notify.text_2=Agora você pode entrar com o nome de usuário: %s.
register_notify.text_3=Se esta conta foi criada para você, <a href="%s">defina sua senha</a> primeiro.
register_notify.text_2=Você pode fazer login em sua conta utilizando o usuário: %s
register_notify.text_3=Se outra pessoa criou esta conta para você, é preciso <a href="%s">definir a sua senha</a> primeiro.
reset_password=Recuperar sua conta
reset_password.title=%s, recebemos um pedido para recuperar a sua conta
reset_password.text=Por favor clique no link a seguir para recuperar sua conta em <b>%s</b>:
reset_password.text=Caso tenha solicitado, clique no link a seguir para recuperar a sua conta dentro de <b>%s</b>:
register_success=Cadastro bem-sucedido
@ -499,13 +499,13 @@ release.downloads=Downloads:
release.download.zip=Código fonte (ZIP)
release.download.targz=Código fonte (TAR.GZ)
repo.transfer.subject_to=%s gostaria de transferir "%s" para %s
repo.transfer.subject_to_you=%s gostaria de transferir "%s" para você
repo.transfer.subject_to=%s gostaria de transferir o repositório "%s" para %s
repo.transfer.subject_to_you=%s gostaria de transferir o repositório "%s" para você
repo.transfer.to_you=você
repo.transfer.body=Para o aceitar ou rejeitar visite %s, ou simplesmente o ignore.
repo.collaborator.added.subject=%s adicionou você a %s
repo.collaborator.added.text=Você foi adicionado como um colaborador do repositório:
repo.collaborator.added.subject=%s adicionou você a %s como colaborador(a)
repo.collaborator.added.text=Você foi adicionado(a) como colaborador(a) do repositório:
team_invite.subject=%[1]s convidou você para participar da organização %[2]s
team_invite.text_1=%[1]s convidou você para participar da equipe %[2]s na organização %[3]s.
@ -602,10 +602,10 @@ invalid_ssh_key=Não é possível verificar sua chave SSH: %s
invalid_gpg_key=Não é possível verificar sua chave GPG: %s
invalid_ssh_principal=Nome principal inválido: %s
must_use_public_key=A chave que você forneceu é uma chave privada. Por favor, não envie sua chave privada em nenhum lugar. Use sua chave pública em vez disso.
unable_verify_ssh_key=Não é possível verificar a chave SSH, verifique se há erros.
unable_verify_ssh_key=Não foi possível validar a chave SSH. Certifique-se de que foi digitada corretamente.
auth_failed=Autenticação falhou: %v
still_own_repo=Sua conta possui um ou mais repositórios, exclua ou transfira-os primeiro.
still_own_repo=A sua conta possui um ou mais repositórios. Exclua ou transfira-os antes de excluir a conta.
still_has_org=Sua conta é um membro de uma ou mais organizações, deixe-as primeiro.
still_own_packages=Sua conta possui um ou mais pacotes, exclua-os primeiro.
org_still_own_repo=Esta organização ainda possui repositórios, exclua ou transfira-os primeiro.
@ -677,9 +677,9 @@ password_username_disabled=Usuários não-locais não podem alterar seus nomes d
full_name=Nome completo
website=Site
location=Localização
update_theme=Atualizar o tema
update_profile=Atualizar o perfil
update_language=Atualizar Idioma
update_theme=Alterar tema
update_profile=Modificar perfil
update_language=Mudar idioma
update_language_not_found=Idioma "%s" não está disponível.
update_language_success=O idioma foi atualizado.
update_profile_success=Seu perfil foi atualizado.
@ -700,7 +700,7 @@ comment_type_group_milestone=Marco
comment_type_group_assignee=Atribuído
comment_type_group_title=Título
comment_type_group_branch=Branch
comment_type_group_time_tracking=Contador de tempo
comment_type_group_time_tracking=Contagem de tempo
comment_type_group_deadline=Prazo final
comment_type_group_dependency=Dependência
comment_type_group_lock=Status de Bloqueio
@ -711,20 +711,20 @@ comment_type_group_issue_ref=Referência do issue
saved_successfully=Suas configurações foram salvas com sucesso.
privacy=Privacidade
keep_activity_private=Ocultar atividade da página de perfil
keep_activity_private_popup=Torna a atividade visível somente para você e os administradores
keep_activity_private_popup=A sua atividade estará visível apenas para você e os admnistradores
lookup_avatar_by_mail=Procurar o avatar do endereço de e-mail
federated_avatar_lookup=Busca de avatar federativo
enable_custom_avatar=Usar avatar personalizado
choose_new_avatar=Escolha um novo avatar
update_avatar=Atualizar o avatar
delete_current_avatar=Excluir o avatar atual
delete_current_avatar=Excluir avatar atual
uploaded_avatar_not_a_image=O arquivo enviado não é uma imagem.
uploaded_avatar_is_too_big=O tamanho do arquivo enviado (%d KiB) excede o tamanho máximo permitido (%d KiB).
update_avatar_success=Seu avatar foi atualizado.
update_user_avatar_success=O avatar do usuário foi atualizado.
update_password=Atualizar senha
update_password=Modificar senha
old_password=Senha atual
new_password=Nova senha
retype_new_password=Confirmar nova senha
@ -735,7 +735,7 @@ password_change_disabled=Contas não-locais não podem alterar sua senha atravé
emails=Endereços de e-mail
manage_emails=Gerenciar endereços de e-mail
manage_themes=Selecione o tema padrão
manage_openid=Gerencia endereços OpenID
manage_openid=Gerenciar endereços OpenID
email_desc=Seu endereço de e-mail principal será usado para notificações, recuperação de senha e, desde que não esteja oculto, para operações do Git baseadas na Web.
theme_desc=Este será o seu tema padrão em todo o site.
primary=Principal
@ -775,7 +775,7 @@ principal_desc=Estes nomes principais do certificado SSH estão associados à su
gpg_desc=Essas chaves GPG públicas estão associadas à sua conta. Mantenha suas chaves privadas seguras, pois elas permitem que os commits sejam verificados.
ssh_helper=<strong>Precisa de ajuda?</strong> Dê uma olhada no guia do GitHub para <a href="%s">criar suas próprias chaves SSH</a> ou resolver <a href="%s">problemas comuns</a> que você pode ter usando SSH.
gpg_helper=<strong>Precisa de ajuda?</strong> Dê uma olhada no guia do GitHub <a href="%s">sobre GPG</a>.
add_new_key=Adicionar Chave SSH
add_new_key=Adicionar chave SSH
add_new_gpg_key=Adicionar chave GPG
key_content_ssh_placeholder=Começa com "ssh-ed25519", "ssh-rsa", "ecdsa-sha2-nistp256", "ecdsa-sha2-nistp384", "ecdsa-sha2-nistp521", "sk-ecdsa-sha2-nistp256@openssh.com" ou "sk-ssh-ed25519@openssh.com"
key_content_gpg_placeholder=Começa com "-----BEGIN PGP PUBLIC KEY BLOCK-----"
@ -817,8 +817,8 @@ add_key_success=A chave SSH "%s" foi adicionada.
add_gpg_key_success=A chave GPG "%s" foi adicionada.
add_principal_success=O principal "%s" foi adicionado ao certificado SSH.
delete_key=Remover
ssh_key_deletion=Remover a chave SSH
gpg_key_deletion=Remover a chave GPG
ssh_key_deletion=Remover chave SSH
gpg_key_deletion=Remover chave GPG
ssh_principal_deletion=Remover Nome Principal do Certificado SSH
ssh_key_deletion_desc=A exclusão de uma chave SSH revoga seu acesso à sua conta. Continuar?
gpg_key_deletion_desc=A exclusão de uma chave GPG cancela a verificação de confirmações assinadas por ela. Continuar?
@ -2082,7 +2082,7 @@ settings.convert_fork_desc=Você pode converter este fork em um repositório nor
settings.convert_fork_notices_1=Esta operação irá converter o fork em um repositório normal e não pode ser desfeita.
settings.convert_fork_confirm=Converter repositório
settings.convert_fork_succeed=O fork foi convertido em um repositório normal.
settings.transfer=Transferir propriedade
settings.transfer.title=Transferir propriedade
settings.transfer.rejected=A transferência do repositório foi rejeitada.
settings.transfer.success=A transferência do repositório foi bem sucedida.
settings.transfer_abort=Cancelar transferência

View file

@ -2168,7 +2168,7 @@ settings.convert_fork_desc=Pode converter esta derivação num repositório norm
settings.convert_fork_notices_1=Esta operação irá converter a derivação num repositório normal e não poderá ser revertida.
settings.convert_fork_confirm=Converter repositório
settings.convert_fork_succeed=A derivação foi convertida num repositório normal.
settings.transfer=Transferir a propriedade
settings.transfer.title=Transferir a propriedade
settings.transfer.rejected=A transferência do repositório foi rejeitada.
settings.transfer.success=A transferência do repositório foi bem sucedida.
settings.transfer_abort=Cancelar a transferência
@ -2869,6 +2869,7 @@ teams.invite.title=Foi-lhe feito um convite para se juntar à equipa <strong>%s<
teams.invite.by=Convidado(a) por %s
teams.invite.description=Clique no botão abaixo para se juntar à equipa.
follow_blocked_user = Não pode seguir esta organização porque esta organização bloqueou-o/a.
open_dashboard = Abrir painel de controlo
[admin]
dashboard=Painel de controlo
@ -3412,6 +3413,7 @@ config_settings = Configurações
auths.tip.gitlab_new = Registe uma nova aplicação em https://gitlab.com/-/profile/applications
config.open_with_editor_app_help = Os editores da opção "Abrir com" do menu da clonagem. Se for deixado em branco, será usado o valor predefinido. Expanda para ver o que está predefinido.
config.allow_dots_in_usernames = Permitir que os utilizadores usem pontos no seu nome de utilizador. Não altera as contas existentes.
auths.default_domain_name = Nome de domínio predefinido usado para o endereço de email
[action]
create_repo=criou o repositório <a href="%s">%s</a>
@ -3654,6 +3656,7 @@ owner.settings.chef.title=Registo do Chef
owner.settings.chef.keypair=Gerar par de chaves
owner.settings.chef.keypair.description=É necessário um par de chaves para autenticar no registro Chef. Se você gerou um par de chaves antes, gerar um novo par de chaves irá descartar o par de chaves antigo.
owner.settings.cargo.rebuild.no_index = Não foi possível reconstruir, não há um índice inicializado.
npm.dependencies.bundle = Dependências agrupadas
[secrets]
secrets=Segredos

View file

@ -145,7 +145,7 @@ confirm_delete_artifact = Вы точно хотите удалить артеф
toggle_menu = Показать/скрыть меню
filter.not_archived = Не архивированные
filter = Фильтры
filter.clear = Очистить фильтры
filter.clear = Снять фильтры
filter.is_fork = Ответвления
filter.not_fork = Не ответвления
filter.is_mirror = Зеркала
@ -277,7 +277,7 @@ server_service_title=Настройки сервера и внешних слу
offline_mode=Локальный режим
offline_mode_popup=Отключить сторонние сети доставки контента и передавать все ресурсы из их локальных копий.
disable_gravatar=Отключить Gravatar
disable_gravatar_popup=Отключить Gravatar и сторонние источники аватаров. Если пользователь не загрузит аватар локально, то по умолчанию будет использоваться стандартный аватар.
disable_gravatar_popup=Отключить Gravatar и сторонние источники аватаров. Если у пользователя нет локально установленного аватара, будет использоваться аватар по умолчанию.
federated_avatar_lookup=Федерированные аватары
federated_avatar_lookup_popup=Включите поиск федеративного аватара для использования службы с открытым исходным кодом на основе libravatar.
disable_registration=Отключить самостоятельную регистрацию
@ -736,7 +736,7 @@ comment_type_group_issue_ref=Ссылка на задачу
saved_successfully=Ваши настройки успешно сохранены.
privacy=Приватность
keep_activity_private=Скрыть активность со страницы профиля
keep_activity_private_popup=Делает активность видимой только для вас и администраторов
keep_activity_private_popup=Ваша активность будет видна только вам и администраторам сервера
lookup_avatar_by_mail=Найти аватар по адресу эл. почты
federated_avatar_lookup=Найти внешний аватар
@ -928,7 +928,7 @@ twofa_recovery_tip=При утере устройства вы сможете в
twofa_is_enrolled=Ваша учётная запись в настоящее время <strong>использует</strong> двухфакторную аутентификацию.
twofa_not_enrolled=Ваша учётная запись в настоящее время не использует двухфакторную аутентификацию.
twofa_disable=Отключить 2ФА
twofa_scratch_token_regenerate=Пересоздать scratch-токен
twofa_scratch_token_regenerate=Пересоздать одноразовый ключ восстановления
twofa_enroll=Включить 2ФА
twofa_disable_note=При необходимости можно отключить двухфакторную аутентификацию.
twofa_disable_desc=Отключение двухфакторной аутентификации снизит безопасность вашей учётной записи. Продолжить?
@ -1000,6 +1000,7 @@ additional_repo_units_hint_description = Показывать кнопку "До
pronouns_custom = Другие
pronouns = Местоимения
pronouns_unspecified = Не указаны
language.title = Язык по умолчанию
[repo]
owner=Владелец
@ -1228,7 +1229,7 @@ file.title=%s в %s
file_raw=Исходный
file_history=История
file_view_source=Просмотр исходного текста
file_view_rendered=Просмотр рендера
file_view_rendered=Просмотр печатной версии
file_view_raw=Открыть исходный
file_permalink=Постоянная ссылка
file_too_large=Этот файл слишком большой, поэтому он не может быть отображён.
@ -1381,7 +1382,7 @@ projects.edit_subheader=Создавайте и организуйте зада
projects.modify=Обновить проект
projects.edit_success=Проект «%s» обновлён.
projects.type.none=Нет
projects.type.basic_kanban=Обычный Канбан
projects.type.basic_kanban=Обычный канбан
projects.type.bug_triage=Планирование работы с багами
projects.template.desc=Шаблон
projects.template.desc_helper=Для начала выберите шаблон проекта
@ -1693,7 +1694,7 @@ issues.dependency.blocked_by_short=Зависит от
issues.dependency.remove_header=Удалить зависимость
issues.dependency.issue_remove_text=Это приведет к удалению зависимости от этой задачи. Продолжить?
issues.dependency.pr_remove_text=Это приведёт к удалению зависимости от этого запроса на слияние. Продолжить?
issues.dependency.setting=Включение зависимостей для задач и запросов на слияние
issues.dependency.setting=Включить зависимости для задач и запросов на слияния
issues.dependency.add_error_same_issue=Вы не можете заставить задачу зависеть от самой себя.
issues.dependency.add_error_dep_issue_not_exist=Зависимая задача не существует.
issues.dependency.add_error_dep_not_exist=Зависимости не существует.
@ -1741,7 +1742,7 @@ compare.compare_base=Основа
compare.compare_head=сравнить
pulls.desc=Включить запросы на слияние и проверки кода.
pulls.new=Новый запрос
pulls.new=Создать запрос
pulls.view=Просмотр запроса на слияние
pulls.compare_changes=Новый запрос на слияние
pulls.allow_edits_from_maintainers=Разрешить редактирование сопровождающими
@ -1820,7 +1821,7 @@ pulls.no_merge_access=У вас нет права для слияния данн
pulls.merge_pull_request=Создать коммит слияния
pulls.rebase_merge_pull_request=Выполнить rebase и fast-forward
pulls.rebase_merge_commit_pull_request=Выполнить rebase и создать коммит слияния
pulls.squash_merge_pull_request=Создать объединённый коммит
pulls.squash_merge_pull_request=Создать объединяющий коммит
pulls.merge_manually=Слито вручную
pulls.merge_commit_id=ИД коммита слияния
pulls.require_signed_wont_sign=Данная ветка ожидает подписанные коммиты, однако слияние не будет подписано
@ -1834,22 +1835,22 @@ pulls.unrelated_histories=Слияние не удалось: у источни
pulls.merge_out_of_date=Слияние не удалось: при создании слияния база данных была обновлена. Подсказка: попробуйте ещё раз.
pulls.head_out_of_date=Слияние не удалось: во время слияния головной коммит был обновлён. Попробуйте ещё раз.
pulls.push_rejected=Отправка была отклонена. Проверьте Git-хуки этого репозитория.
pulls.push_rejected_summary=Полная ошибка отклонения
pulls.push_rejected_summary=Полная причина отклонения
pulls.push_rejected_no_message=Отправка была отклонена и удалённый сервер не указал причину. Проверьте Git-хуки этого репозитория
pulls.open_unmerged_pull_exists=`Вы не можете снова открыть, поскольку уже существует запрос на слияние (#%d) из того же репозитория с той же информацией о слиянии и ожидающий слияния.`
pulls.status_checking=Выполняются некоторые проверки
pulls.status_checks_success=Все проверки выполнены успешно
pulls.status_checks_warning=Некоторые проверки сообщили о предупреждениях
pulls.status_checks_failure=Некоторые проверки не удались
pulls.open_unmerged_pull_exists=`Нельзя открыть снова, поскольку существует другой открытый запрос на слияние (#%d) с такими же свойствами.`
pulls.status_checking=Выполняются проверки
pulls.status_checks_success=Все проверки успешно пройдены
pulls.status_checks_warning=Некоторые проверки имеют предупреждения
pulls.status_checks_failure=Некоторые проверки провалились
pulls.status_checks_error=Некоторые проверки сообщили об ошибках
pulls.status_checks_requested=Требуется
pulls.status_checks_details=Информация
pulls.status_checks_hide_all=Скрыть все проверки
pulls.status_checks_show_all=Показать все проверки
pulls.update_branch=Обновить ветку посредством слияния
pulls.update_branch_rebase=Обновить ветку через rebase
pulls.update_branch_success=Обновление ветки выполнено успешно
pulls.update_not_allowed=У вас недостаточно прав для обновления ветки
pulls.update_branch=Обновить ветку слиянием
pulls.update_branch_rebase=Обновить ветку перебазированием
pulls.update_branch_success=Ветка успешно обновлена
pulls.update_not_allowed=Недостаточно прав для обновления ветки
pulls.outdated_with_base_branch=Эта ветка отстает от базовой ветки
pulls.close=Закрыть запрос на слияние
pulls.closed_at=`закрыл этот запрос на слияние <a id="%[1]s" href="#%[1]s">%[2]s</a>`
@ -1895,15 +1896,15 @@ milestones.create_success=Этап «%s» создан.
milestones.edit=Редактировать этап
milestones.edit_subheader=Используйте лучшее описание контрольной точки, во избежание непонимания со стороны других людей.
milestones.cancel=Отмена
milestones.modify=Обновить этап
milestones.modify=Сохранить этап
milestones.edit_success=Этап «%s» обновлён.
milestones.deletion=Удалить этап
milestones.deletion_desc=Удаление этапа приведет к его удалению из всех связанных задач. Продолжить?
milestones.deletion_success=Этап успешно удалён.
milestones.filter_sort.earliest_due_data=Ближайший срок выполнения
milestones.filter_sort.latest_due_date=Поздний срок выполнения
milestones.filter_sort.least_complete=Менее полное
milestones.filter_sort.most_complete=Более полное
milestones.filter_sort.least_complete=Менее выполненные
milestones.filter_sort.most_complete=Более выполненные
milestones.filter_sort.most_issues=Больше задач
milestones.filter_sort.least_issues=Меньше задач
@ -2124,7 +2125,7 @@ settings.convert_fork_desc=Вы можете преобразовать это
settings.convert_fork_notices_1=Эта операция преобразует этот ответвление в обычный репозиторий, и не может быть отменена.
settings.convert_fork_confirm=Преобразовать репозиторий
settings.convert_fork_succeed=Ответвление преобразовано в обычный репозиторий.
settings.transfer=Передать права собственности
settings.transfer.title=Передать репозиторий
settings.transfer.rejected=Передача репозитория отменена.
settings.transfer.success=Передача репозитория выполнена успешно.
settings.transfer_abort=Отменить передачу
@ -2210,8 +2211,8 @@ settings.githook_content=Содержимое хука
settings.update_githook=Обновить хук
settings.add_webhook_desc=Forgejo будет оправлять <code>POST</code> запросы на указанный URL адрес, с информацией о происходящих событиях. Подробности на странице <a target="_blank" rel="noopener noreferrer" href="%s">инструкции по использованию веб-хуков</a>.
settings.payload_url=URL обработчика
settings.http_method=Метод HTTP
settings.content_type=Тип содержимого
settings.http_method=HTTP-метод
settings.content_type=Тип содержимого POST
settings.secret=Секретный ключ
settings.slack_username=Имя пользователя
settings.slack_icon_url=URL иконки
@ -2221,7 +2222,7 @@ settings.discord_icon_url=URL иконки
settings.event_desc=Срабатывать на:
settings.event_push_only=События отправки
settings.event_send_everything=Все события
settings.event_choose=Пользовательские события…
settings.event_choose=Другие события…
settings.event_header_repository=События репозитория
settings.event_create=Создать
settings.event_create_desc=Ветка или тэг созданы.
@ -2237,14 +2238,14 @@ settings.event_push=Отправка
settings.event_push_desc=Отправка в репозиторий.
settings.event_repository=Репозиторий
settings.event_repository_desc=Репозиторий создан или удален.
settings.event_header_issue=События задачи
settings.event_header_issue=События задач
settings.event_issues=Задачи
settings.event_issues_desc=Задача открыта, закрыта, переоткрыта или отредактирована.
settings.event_issue_assign=Назначена задача
settings.event_issue_assign=Назначение задач
settings.event_issue_assign_desc=Задача назначена или снята с назначения.
settings.event_issue_label=Ярлык задачи
settings.event_issue_label=Изменение меток задач
settings.event_issue_label_desc=Метки задач обновлены или очищены.
settings.event_issue_milestone=Этап задачи завершен
settings.event_issue_milestone=Добавление задач в этапы
settings.event_issue_milestone_desc=Этап или этап выполнения задания.
settings.event_issue_comment=Комментарии в задаче
settings.event_issue_comment_desc=Комментарий создан, изменён или удалён.
@ -2323,7 +2324,7 @@ settings.protected_branch.delete_rule=Удалить правило
settings.protected_branch_can_push=Разрешить отправку?
settings.protected_branch_can_push_yes=Вы можете выполнять отправку
settings.protected_branch_can_push_no=Вы не можете выполнять отправку
settings.branch_protection=Правила защиты ветки «<b>%s</b>»
settings.branch_protection=Правила доступа ветки «<b>%s</b>»
settings.protect_this_branch=Защитить эту ветку
settings.protect_this_branch_desc=Предотвращает удаление, ограничивает Push и слияние Git в ветку.
settings.protect_disable_push=Запретить отправку изменений
@ -2370,9 +2371,9 @@ settings.protect_unprotected_file_patterns=Шаблоны незащищённы
settings.protect_unprotected_file_patterns_desc=Незащищенные файлы, которые допускается изменять напрямую, если пользователь имеет право на запись, несмотря на ограничение отправки изменений. Можно указать несколько шаблонов, разделяя их точкой с запятой («;»). О синтаксисе шаблонов читайте в документации <a href="https://pkg.go.dev/github.com/gobwas/glob#Compile">github.com/gobwas/glob</a> . Примеры: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
settings.add_protected_branch=Включить защиту
settings.delete_protected_branch=Отключить защиту
settings.update_protect_branch_success=Защита веток по правилу «%s» изменена.
settings.remove_protected_branch_success=Защита веток по правилу «%s» удалена.
settings.remove_protected_branch_failed=Не удалось удалить правило защиты веток «%s».
settings.update_protect_branch_success=Правила доступа веток «%s» изменена.
settings.remove_protected_branch_success=Правила доступа веток «%s» удалена.
settings.remove_protected_branch_failed=Не удалось удалить правило доступа веток «%s».
settings.protected_branch_deletion=Отключение защиты ветки
settings.protected_branch_deletion_desc=Любой пользователь с разрешениями на запись сможет выполнять push в эту ветку. Вы уверены?
settings.block_rejected_reviews=Блокировка слияния по отклоненным отзывам
@ -2452,7 +2453,7 @@ diff.browse_source=Просмотр исходного кода
diff.parent=родитель
diff.commit=коммит
diff.git-notes=Заметки
diff.data_not_available=Различия недоступны
diff.data_not_available=Различия отсутствуют или недоступны
diff.options_button=Опции Diff
diff.show_diff_stats=Показать статистику
diff.download_patch=Скачать .patch
@ -2529,7 +2530,7 @@ release.title=Название выпуска
release.title_empty=Заголовок не может быть пустым.
release.message=Расскажите про этот выпуск
release.prerelease_desc=Это предварительный выпуск
release.prerelease_helper=Пометить выпуск как не готовый для массового использования.
release.prerelease_helper=Пометить выпуск как неготовый для массового использования.
release.cancel=Отменить
release.publish=Опубликовать выпуск
release.save_draft=Сохранить черновик
@ -2547,7 +2548,7 @@ release.tag_already_exist=Этот тег уже используется.
release.downloads=Загрузки
release.download_count=Загрузки: %s
release.add_tag_msg=Использовать заголовок и содержимое выпуска в качестве сообщения тега.
release.add_tag=Создать только тег
release.add_tag=Создать тег
release.releases_for=Выпуски %s
release.tags_for=Теги %s
@ -2626,7 +2627,7 @@ issues.blocked_by_user = Невозможно создать задачу в э
settings.new_owner_blocked_doer = Вы заблокированы новым владельцем.
settings.add_collaborator_blocked_them = Невозможно добавить соучастника, т.к. им заблокирован владелец репозитория.
pulls.blocked_by_changed_protected_files_1 = Этот запрос на слияние заблокирован, т.к. им изменяется защищённый файл:
object_format_helper = Формат объектов в репозитории. Невозможно изменить в дальнейшем. SHA1 даёт наибольшую совместимость.
object_format_helper = Формат объектов в репозитории. Невозможно изменить в дальнейшем. SHA1 имеет наибольшую совместимость.
pulls.blocked_by_outdated_branch = Этот запрос на слияние заблокирован, т.к. он устарел.
pulls.blocked_by_changed_protected_files_n = Этот запрос на слияние заблокирован, т.к. им изменяются защищённые файлы:
blame.ignore_revs.failed = Не удалось проигнорировать правки из <a href="%s">.git-blame-ignore-revs</a>.
@ -2696,7 +2697,7 @@ pulls.agit_explanation = Создано через рабочий поток AGi
settings.webhook.replay.description_disabled = Активируйте веб-хук для повторения отправки.
activity.navbar.pulse = Недавняя активность
settings.tags.protection.pattern.description = Можно указать название тега. Для выбора нескольких тегов можно указать поисковый шаблон или регулярное выражение. <a target="_blank" rel="noopener" href="https://forgejo.org/docs/latest/user/protection/#protected-tags">Подробнее о защищённых тегах</a>.
file_follow = Пройти по мягкой ссылке
file_follow = Пройти по символьной ссылке
settings.pull_mirror_sync_in_progress = Идёт получение изменений из удалённого репозитория %s.
settings.ignore_stale_approvals_desc = Не учитывать одобрения, оставленные для старых коммитов (устаревшие отзывы), при подсчёте общего числа одобрений у запроса на слияние. Не относится к отклонённым отзывам.
settings.mirror_settings.docs.doc_link_pull_section = раздел документации «Pulling from a remote repository».
@ -2738,12 +2739,14 @@ settings.matrix.access_token_helper = Рекомендуется создать
settings.mirror_settings.pushed_repository = Удалённый репозиторий
release.hide_archive_links = Скрыть автоматически генерируемые архивы
release.hide_archive_links_helper = Скрыть автоматически добавляемые архивы исходного кода для этого релиза. Например, если вы загружаете свои архивы.
settings.transfer.button = Передать репозиторий
settings.transfer.modal.title = Передача репозитория
[graphs]
[org]
org_name_holder=Название организации
org_full_name_holder=Полное название организации
org_full_name_holder=Полное название
org_name_helper=Лучшие названия организаций коротки и запоминаемы.
create_org=Создать организацию
repo_updated=Обновлено
@ -2800,9 +2803,9 @@ settings.labels_desc=Добавьте метки, которые могут бы
members.membership_visibility=Видимость участника:
members.public=Видимый
members.public_helper=скрыть
members.public_helper=Скрыть
members.private=Скрыт
members.private_helper=сделать видимым
members.private_helper=Сделать видимым
members.member_role=Роль участника:
members.owner=Владелец
members.member=Участник
@ -2811,7 +2814,7 @@ members.remove.detail=Исключить %[1]s из %[2]s?
members.leave=Покинуть
members.leave.detail=Покинуть %s?
members.invite_desc=Добавить нового участника в %s:
members.invite_now=Пригласите сейчас
members.invite_now=Пригласить
teams.join=Объединить
teams.leave=Выйти
@ -2835,9 +2838,9 @@ teams.update_settings=Обновить настройки
teams.delete_team=Удалить команду
teams.add_team_member=Добавить участника
teams.invite_team_member=Пригласить в %s
teams.invite_team_member.list=Приглашения в ожидании
teams.invite_team_member.list=Ожидающие приглашения
teams.delete_team_title=Удаление команды
teams.delete_team_desc=Удаление команды отменяет доступ к репозиторию для её членов. Продолжить?
teams.delete_team_desc=Удаление команды лишит её членов доступа к репозиториям. Продолжить?
teams.delete_team_success=Команда удалена.
teams.read_permission_desc=Эта команда предоставляет доступ на <strong>Чтение</strong>: члены могут просматривать и клонировать репозитории команды.
teams.write_permission_desc=Эта команда предоставляет доступ на <strong>Запись</strong>: члены могут получать и выполнять push команды в репозитории.
@ -2865,6 +2868,7 @@ teams.invite.by=Приглашен(а) %s
teams.invite.description=Нажмите на кнопку ниже, чтобы присоединиться к команде.
follow_blocked_user = Вы не можете подписаться на эту организацию, т.к. вы в ней заблокированы.
teams.general_access = Настраиваемый доступ
open_dashboard = Открыть панель
[admin]
dashboard=Панель управления
@ -2875,7 +2879,7 @@ repositories=Репозитории
hooks=Веб-хуки
integrations=Интеграции
authentication=Аутентификация
emails=Адреса эл. почты пользователей
emails=Адреса эл. почты
config=Конфигурация
notices=Системные оповещения
monitor=Мониторинг
@ -2953,8 +2957,8 @@ dashboard.total_gc_time=Итоговая задержка GC
dashboard.total_gc_pause=Итоговая задержка сборщика
dashboard.last_gc_pause=Последняя пауза сборщика
dashboard.gc_times=Сборок мусора
dashboard.delete_old_actions=Удалить все старые действия из базы данных
dashboard.delete_old_actions.started=Запущено удаление всех старых действий из БД.
dashboard.delete_old_actions=Удалить все старые активности из базы данных
dashboard.delete_old_actions.started=Запущено удаление всех старых активностей из БД.
dashboard.update_checker=Проверка обновлений
dashboard.delete_old_system_notices=Удалить все старые системные уведомления из базы данных
dashboard.gc_lfs=Выполнить сборку мусора метаобъектов LFS
@ -2977,7 +2981,7 @@ users.repos=Репозитории
users.created=Создано
users.last_login=Последний вход
users.never_login=Никогда не входил
users.send_register_notify=Отправить пользователю уведомление о регистрации
users.send_register_notify=Уведомить о регистрации по эл. почте
users.new_success=Учётная запись «%s» создана.
users.edit=Редактировать
users.auth_source=Источник аутентификации
@ -2986,12 +2990,12 @@ users.auth_login_name=Имя для входа
users.password_helper=Оставьте пустым, чтобы оставить без изменений.
users.update_profile_success=Профиль учётной записи обновлён успешно.
users.edit_account=Изменение учётной записи
users.max_repo_creation=Максимальное количество репозиториев
users.max_repo_creation=Ограничение количества репозиториев
users.max_repo_creation_desc=(Установите -1 для использования стандартного глобального значения предела)
users.is_activated=Эта учётная запись активирована
users.prohibit_login=Запретить вход в учётную запись
users.is_admin=У этой учётной записи есть права администратора
users.is_restricted=Ограничен
users.prohibit_login=Вход запрещён
users.is_admin=Является администратором
users.is_restricted=Ограниченная
users.allow_git_hook=Может создавать Git-хуки
users.allow_git_hook_tooltip=Git hooks выполняются от пользователя ОС, под которым работает Forgejo. Они будут иметь такой же доступ к хосту. Из-за этого пользователи с правами на Git hook будут иметь возможность получать доступ и модифицировать все репозитории в Forgejo, а также базу данных Forgejo. Следовательно, они также могут получить права администратора Forgejo.
users.allow_import_local=Может импортировать локальные репозитории
@ -3044,7 +3048,7 @@ repos.unadopted=Непринятые репозитории
repos.unadopted.no_more=Больше непринятых репозиториев не найдено
repos.owner=Владелец
repos.name=Название
repos.private=Личный
repos.private=Частный
repos.watches=Следят
repos.stars=Звезды
repos.forks=Ответвления
@ -3082,22 +3086,22 @@ auths.enabled=Включено
auths.syncenabled=Включить синхронизацию пользователей
auths.updated=Обновлено
auths.auth_type=Тип аутентификации
auths.auth_name=Имя аутентификации
auths.auth_name=Название аутентификации
auths.security_protocol=Протокол безопасности
auths.domain=Домен
auths.host=Сервер
auths.port=Порт
auths.bind_dn=Bind DN
auths.bind_password=Привязать пароль
auths.user_base=База для поиска пользователя
auths.user_base=База поиска пользователей
auths.user_dn=DN пользователя
auths.attribute_username=Атрибут Username
auths.attribute_username=Атрибут username
auths.attribute_username_placeholder=Оставьте пустым, чтобы использовать имя пользователя для регистрации.
auths.attribute_name=Атрибут First Name
auths.attribute_surname=Атрибут Surname
auths.attribute_name=Атрибут first name
auths.attribute_surname=Атрибут surname
auths.attribute_mail=Атрибут эл. почты
auths.attribute_ssh_public_key=Атрибут Открытый ключ SSH
auths.attribute_avatar=Характеристики аватара
auths.attribute_ssh_public_key=Атрибут открытого ключа SSH
auths.attribute_avatar=Атрибут аватара
auths.attributes_in_bind=Извлекать атрибуты в контексте Bind DN
auths.allow_deactivate_all=Разрешить пустой результат поиска для отключения всех пользователей
auths.use_paged_search=Использовать постраничный поиск
@ -3105,7 +3109,7 @@ auths.search_page_size=Размер страницы
auths.filter=Фильтр пользователя
auths.admin_filter=Фильтр администратора
auths.restricted_filter=Ограниченный фильтр
auths.restricted_filter_helper=Оставьте пустым, чтобы не назначать никаких пользователей ограниченными. Используйте звёздочку ('*'), чтобы сделать ограниченными всех пользователей, не соответствующих фильтру администратора.
auths.restricted_filter_helper=Оставьте пустым, чтобы не назначать никаких пользователей ограниченными. Используйте звёздочку («*»), чтобы сделать ограниченными всех пользователей, не соответствующих фильтру администратора.
auths.verify_group_membership=Проверить принадлежность к группе в LDAP (оставьте фильтр пустым, чтобы пропустить)
auths.group_search_base=Поисковая база групп DN
auths.group_attribute_list_users=Атрибут группы, содержащий список пользователей
@ -3353,15 +3357,15 @@ monitor.queue=Очередь: %s
monitor.queue.name=Имя
monitor.queue.type=Тип
monitor.queue.exemplar=Тип образца
monitor.queue.numberworkers=Количество рабочих
monitor.queue.activeworkers=Активные рабочие
monitor.queue.maxnumberworkers=Максимальное количество рабочих
monitor.queue.numberworkers=Количество обработчиков
monitor.queue.activeworkers=Активные обработчики
monitor.queue.maxnumberworkers=Макс. количество обработчиков
monitor.queue.numberinqueue=Позиция в очереди
monitor.queue.settings.title=Настройки пула
monitor.queue.settings.desc=Пулы увеличиваются динамически в ответ на блокировку очередей своих рабочих.
monitor.queue.settings.maxnumberworkers=Максимальное количество рабочих
monitor.queue.settings.maxnumberworkers.placeholder=В настоящее время %[1]d
monitor.queue.settings.maxnumberworkers.error=Максимальное количество рабочих должно быть числом
monitor.queue.settings.desc=Пулы увеличиваются динамически в ответ на блокировку очередей своих обработчиков.
monitor.queue.settings.maxnumberworkers=Макс. количество обработчиков
monitor.queue.settings.maxnumberworkers.placeholder=В настоящий момент %[1]d
monitor.queue.settings.maxnumberworkers.error=Максимальное количество обработчиков должно быть числом
monitor.queue.settings.submit=Обновить настройки
monitor.queue.settings.changed=Настройки обновлены
monitor.queue.settings.remove_all_items=Удалить все
@ -3406,7 +3410,7 @@ config.open_with_editor_app_help = Приложения для "Открыть
config_settings = Настройки
auths.tips.gmail_settings = Настройки Gmail:
auths.tip.gitlab_new = Создайте новое приложение в https://gitlab.com/-/profile/applications
monitor.queue.review_add = Подробности / добавить рабочих
monitor.queue.review_add = Подробности / добавить обработчики
auths.default_domain_name = Домен по умолчанию для адресов эл. почты
@ -3470,7 +3474,7 @@ mib = МиБ
gib = ГиБ
tib = ТиБ
pib = ПиБ
eib = ЕиБ
eib = ЭиБ
[dropzone]
default_message=Перетащите файл или кликните сюда для загрузки.
@ -3662,6 +3666,7 @@ rpm.repository.architectures = Архитектуры
rpm.repository.multiple_groups = Этот пакет доступен в нескольких группах.
owner.settings.chef.keypair.description = Для аутентификации реестра Chef необходима пара ключей. Если до этого вы уже сгенерировали пару ключей, генерация новой приведёт к прекращению действия предыдущей.
owner.settings.cargo.rebuild.no_index = Невозможно выполнить пересборку. Нет инициализированного индекса.
npm.dependencies.bundle = Комплектные зависимости
[secrets]
secrets=Секреты
@ -3681,7 +3686,7 @@ management=Управление секретами
[actions]
actions=Действия
unit.desc=Управление действиями
unit.desc=Управление встроенными конвейерами CI/CD с Действиями Forgejo
status.unknown=Неизвестно
status.waiting=Ожидает

View file

@ -1537,7 +1537,7 @@ settings.convert_fork_desc=ඔබට මෙම දෙබලක සාමාන
settings.convert_fork_notices_1=මෙම මෙහෙයුම දෙබලක සාමාන්ය ගබඩාවක් බවට පරිවර්තනය කරන අතර එය අහෝසි කළ නොහැක.
settings.convert_fork_confirm=පරිවර්තනය කරන්න ගබඩාව
settings.convert_fork_succeed=මෙම දෙබලක සාමාන්ය ගබඩාවක් බවට පරිවර්තනය කර ඇත.
settings.transfer=අයිතිය පැවරීම
settings.transfer.title=අයිතිය පැවරීම
settings.transfer.rejected=ගබඩාව මාරු කිරීම ප්රතික්ෂේප කරන ලදී.
settings.transfer.success=ගබඩාව මාරු කිරීම සාර්ථක විය.
settings.transfer_abort=මාරු කිරීම අවලංගු කරන්න

View file

@ -28,12 +28,12 @@ licenses=Licencie
return_to_gitea=Naspäť do Forgejo
username=Používateľské meno
email=E-mailová adresa
email=Emailová adresa
password=Heslo
access_token=Prístupový token
re_type=Potvrdiť heslo
captcha=CAPTCHA
twofa=Dvojfaktorová autentifikácia
twofa=Dvoj-faktorové overenie
twofa_scratch=Dvojfaktorový dočasný kód
passcode=Prístupový kód
@ -62,7 +62,7 @@ new_org=Nová organizácia
new_project=Nový projekt
new_project_column=Nový stĺpec
manage_org=Spravovať organizácie
admin_panel=Administrácia
admin_panel=Administrácia stránky
account_settings=Nastavenia účtu
settings=Nastavenia
your_profile=Profil
@ -140,6 +140,7 @@ confirm_delete_selected=Potvrdzujete zmazanie všetkých vybraných položiek?
name=Meno
value=Hodnota
issues = Problémy
[aria]
navbar=Navigačná lišta
@ -1167,7 +1168,7 @@ settings.convert_fork_desc=Tento fork môžete previesť na bežný repozitár.
settings.convert_fork_notices_1=Táto operácia skonvertuje fork na bežný repozitár a nedá sa vrátiť späť.
settings.convert_fork_confirm=Konvertovať repozitár
settings.convert_fork_succeed=Fork bol prevedený na bežný repozitár.
settings.transfer=Previesť vlastníctvo
settings.transfer.title=Previesť vlastníctvo
settings.transfer_notices_1=- Ak prenesiete repozitár na užívateľa, stratíte k nemu prístup.
settings.transfer_notices_2=- Prístup k repozitáru si ponecháte, ak ho prevediete na organizáciu, ktorú (spolu)vlastníte.
settings.transfer_owner=Nový vlastník

View file

@ -1288,7 +1288,7 @@ settings.convert_confirm=Konvertera utvecklingskatalog
settings.convert_succeed=Speglingen har blivit konverterad till en vanlig utvecklingskatalog.
settings.convert_fork=Konvertera till vanlig utvecklingskatalog
settings.convert_fork_confirm=Konvertera utvecklingskatalog
settings.transfer=Överför Ägarskap
settings.transfer.title=Överför Ägarskap
settings.transfer_desc=Överför denna utvecklingskatalog till en användare eller organisation för vilken du har administratörsrättigheter till.
settings.transfer_form_title=Ange utvecklingskatalogens namn för att bekräfta:
settings.transfer_notices_1=- Du kommer förlora åtkomst till denna utvecklingskatalog om du för över den till en individuell användare.

View file

@ -2094,7 +2094,7 @@ settings.convert_fork_desc=Bu çatalı normal bir depoya dönüştürebilirsiniz
settings.convert_fork_notices_1=Bu işlem çatalı normal bir depoya dönüştürür ve geri alınamaz.
settings.convert_fork_confirm=Depoyu Dönüştür
settings.convert_fork_succeed=Çatal normal bir depoya dönüştürüldü.
settings.transfer=Sahipliği Aktar
settings.transfer.title=Sahipliği Aktar
settings.transfer.rejected=Depo aktarımı reddedildi.
settings.transfer.success=Depo aktarımı başarıyla tamamlandı.
settings.transfer_abort=Aktarımı iptal et

View file

@ -1654,7 +1654,7 @@ settings.convert_fork_desc=Ви можете перетворити цей фо
settings.convert_fork_notices_1=Ця операція перетворить форк на звичайний репозиторій та не може бути скасованою.
settings.convert_fork_confirm=Перетворити репозиторій
settings.convert_fork_succeed=Цей форк успішно перетворено на звичайний репозиторій.
settings.transfer=Передати новому власнику
settings.transfer.title=Передати новому власнику
settings.transfer.rejected=Перенесення репозиторію відхилено.
settings.transfer.success=Перенесення репозиторію виконано.
settings.transfer_abort=Скасувати перенесення

View file

@ -638,6 +638,8 @@ Location = 地区
To = 分支名
AccessToken = 访问令牌
Description = 描述
Pronouns = 代称
Biography = 简历
[user]
change_avatar=修改头像
@ -999,6 +1001,7 @@ update_hints_success = 提示更改成功。
pronouns_custom = 自定义
pronouns = 代词
pronouns_unspecified = 不指定
language.title = 默认语言
[repo]
new_repo_helper=代码仓库包含了所有的项目文件,包括版本历史记录。已经在其他地方托管了?<a href="%s">迁移仓库。</a>
@ -1097,7 +1100,7 @@ blame.ignore_revs.failed=忽略 <a href="%s">.git-blame-ignore-revs</a> 版本
author_search_tooltip=最多显示30个用户
tree_path_not_found_commit=路径%[1]s 在提交 %[2]s 中不存在
tree_path_not_found_branch=路径 %[1]s 不存在于分支 %[2]s 中
tree_path_not_found_branch=路径 %[1]s 不存在于分支 %[2]s 中
tree_path_not_found_tag=路径 %[1]s 不存在于标签 %[2]s 中
transfer.accept=接受转移
@ -2105,7 +2108,7 @@ settings.sync_mirror=立即同步
settings.pull_mirror_sync_in_progress=正在从远程 %s 拉取更改。
settings.push_mirror_sync_in_progress=正在推送变更到远程 %s 。
settings.site=网站
settings.update_settings=更新仓库设置
settings.update_settings=保存设置
settings.update_mirror_settings=更新镜像设置
settings.branches.switch_default_branch=切换默认分支
settings.branches.update_default_branch=更新默认分支
@ -2165,7 +2168,7 @@ settings.convert_fork_desc=您可以将该镜像仓库转换为普通仓库,
settings.convert_fork_notices_1=该操作会将派生仓库转换为普通仓库,但该操作不可逆。
settings.convert_fork_confirm=转换仓库
settings.convert_fork_succeed=此派生仓库已经转换为普通仓库。
settings.transfer=转让仓库所有权
settings.transfer.title=转让仓库所有权
settings.transfer.rejected=代码库转移被拒绝。
settings.transfer.success=代码库转移成功。
settings.transfer_abort=取消转移
@ -2287,7 +2290,7 @@ settings.event_issue_assign=工单已分配
settings.event_issue_assign_desc=工单已被指派或取消指派。
settings.event_issue_label=工单已分类
settings.event_issue_label_desc=工单标签被更新或清除。
settings.event_issue_milestone=工单被收入里程碑中
settings.event_issue_milestone=工单被收入里程碑中
settings.event_issue_milestone_desc=工单被收入或取消收入里程碑中。
settings.event_issue_comment=工单评论
settings.event_issue_comment_desc=工单评论被创建、编辑或删除
@ -2737,6 +2740,18 @@ release.download_count_one = %s 下载
release.download_count_few = %s 下载
release.system_generated = 此附件是自动生成的。
pulls.ready_for_review = 准备好接受评审了吗?
settings.web_hook_name_sourcehut_builds = SourceHut 构建
settings.graphql_url = GraphQL URL 链接
settings.sourcehut_builds.access_token_helper = 已授予 JOBS:RW 权限的访问令牌。可在 meta.sr.ht 上生成标准的 <a target="_blank" rel="noopener noreferrer" href="%s">builds.sr.ht 令牌</a>或<a target="_blank" rel="noopener noreferrer" href="%s">带有密匙访问权限的 builds.sr.ht 令牌</a> 。
settings.matrix.access_token_helper = 推荐为此设立专门的 Matrix 账户。访问令牌可从 Element Web 客户端(在隐私/无痕模式选项卡中打开)> 用户菜单(左上角)> 所有设置 > 帮助及关于 > 高级 > 访问令牌(在主服务器 URL 下方)检索。获取完成后,请直接关闭隐私/无痕选项卡(注销会使令牌失效)。
settings.event_pull_request_enforcement = 执行
settings.sourcehut_builds.manifest_path = 构建清单路径
settings.sourcehut_builds.visibility = 作业可见性
settings.matrix.room_id_helper = 房间 ID 可从 Element Web 客户端 > 房间设置 > 高级 > 内部房间 ID 获得。例如:%s。
release.hide_archive_links_helper = 为此版本发布隐藏自动生成的源代码存档。例如,如果您准备自行上传。
release.hide_archive_links = 隐藏自动生成的存档
settings.transfer.modal.title = 转移所有权
settings.transfer.button = 转移所有权
[graphs]
component_loading=正在加载 %s...
@ -2871,6 +2886,7 @@ teams.invite.title=您已被邀请加入组织 <strong>%s</strong> 中的团队
teams.invite.by=邀请人 %s
teams.invite.description=请点击下面的按钮加入团队。
follow_blocked_user = 你无法关注此组织,因为此组织已屏蔽你。
open_dashboard = 打开仪表盘
[admin]
dashboard=管理面板
@ -3422,6 +3438,8 @@ auths.tips.gmail_settings = Gmail 设置:
auths.tip.gitlab_new = 在 https://gitlab.com/-/profile/applications 上注册新应用
config_settings = 设置
config_summary = 概况
auths.default_domain_name = 用于电子邮件地址的默认域名
config.open_with_editor_app_help = 克隆菜单中的“打开方式”所用的编辑器。如果留空,将使用默认值。展开以查看默认值。
[action]
create_repo=创建了仓库 <a href="%s">%s</a>
@ -3775,6 +3793,7 @@ variables.creation.success=变量 “%s” 添加成功。
variables.update.failed=编辑变量失败。
variables.update.success=该变量已被编辑。
runs.workflow = 工作流
runs.no_job_without_needs = 工作流必须至少包含一组没有依赖的作业。
[projects]
type-1.display_name=个人项目
@ -3809,7 +3828,7 @@ runner_kind = 搜索Runners...
no_results = 未找到匹配的结果。
type_tooltip = 搜索类型
fuzzy = 模糊
code_search_by_git_grep = 当前搜索结果由 git grep 提供,如果站点管理员启用了仓库索引可能会有更好的结果。
code_search_by_git_grep = 当前搜索结果由 git grep 提供,如果站点管理员启用了代码索引可能会有更好的结果。
match = 匹配
match_tooltip = 仅包含与搜索词完全匹配的结果
fuzzy_tooltip = 在搜索结果中包含与搜索词相近的项目

View file

@ -87,6 +87,7 @@ webauthn_error_unknown = 發生未知嘅錯誤,請再試下。
webauthn_error_unable_to_process = 伺服器唔可以執行你嘅請求。
logo = 標識
enable_javascript = 本網站需要 JavaScript。
webauthn_error_empty = 你要起名呢條鎖匙。
[aria]
@ -591,7 +592,7 @@ settings.tracker_issue_style.numeric=數字
settings.tracker_issue_style.alphanumeric=字母及數字
settings.danger_zone=危險操作區
settings.new_owner_has_same_repo=新的儲存庫擁有者已經存在同名儲存庫!
settings.transfer=轉移儲存庫所有權
settings.transfer.title=轉移儲存庫所有權
settings.transfer_owner=新擁有者
settings.delete=刪除本儲存庫
settings.delete_notices_1=- 此操作 <strong>不可以</strong> 被回滾。

View file

@ -8,18 +8,18 @@ sign_in=登入
sign_in_or=
sign_out=登出
sign_up=註冊
link_account=連結帳
link_account=連結帳
register=註冊
version=版本
powered_by=技術提供: %s
powered_by=技術由 %s 提供
page=頁面
template=模板
language=語言
notifications=通知
active_stopwatch=進行中的時間追蹤
create_new=建立...
user_profile_and_more=個人資料和設定...
signed_in_as=已登入
create_new=建立
user_profile_and_more=個人資料和設定
signed_in_as=已登入
enable_javascript=本網站需要 JavaScript。
toc=目錄
licenses=授權條款
@ -28,7 +28,7 @@ return_to_gitea=返回 Forgejo
username=帳號
email=電子信箱
password=密碼
access_token=訪問符記
access_token=存取符記
re_type=確認密碼
captcha=驗證碼
twofa=兩步驟驗證
@ -43,8 +43,8 @@ webauthn_error=無法讀取您的安全金鑰。
webauthn_unsupported_browser=您的瀏覽器還不支援 WebAuthn。
webauthn_error_unknown=發生未知的錯誤,請再試一次。
webauthn_error_insecure=WebAuthn 只支援安全連線。想在 HTTP 上測試您可以使用「localhost」或「127.0.0.1」
webauthn_error_unable_to_process=伺服器無法執行您的請求。
webauthn_error_duplicated=請求不允許使用這個安全金鑰。請確保該金鑰尚未註冊。
webauthn_error_unable_to_process=伺服器無法處理您的請求。
webauthn_error_duplicated=安全金鑰無法允許這個請求。請確保該金鑰尚未註冊。
webauthn_error_empty=您必須命名此金鑰。
webauthn_error_timeout=在成功讀取金鑰之前已逾時,請重新載入此頁面並重試。
webauthn_reload=重新載入
@ -54,7 +54,7 @@ organization=組織
mirror=鏡像
new_repo=新增儲存庫
new_migrate=遷移外部儲存庫
new_mirror=建立新的鏡像
new_mirror=新增鏡像
new_fork=新增儲存庫 Fork
new_org=新增組織
new_project=新增專案
@ -82,8 +82,8 @@ ok=確認
cancel=取消
retry=重試
save=儲存
add=
add_all=全部
add=
add_all=全部
remove=移除
remove_all=全部移除
remove_label_str=移除項目「%s」
@ -105,7 +105,7 @@ preview=預覽
loading=載入中…
error=錯誤
error404=嘗試訪的頁面 <strong>不存在</strong> 或 <strong>您尚未被授權</strong> 查看該頁面。
error404=嘗試訪的頁面 <strong>不存在</strong> 或 <strong>您沒有權限</strong> 檢視該頁面。
never=從來沒有
unknown=未知
@ -131,32 +131,32 @@ tracked_time_summary = 基於 issue 清單篩選器的追蹤時間摘要
locked = 已鎖定
rerun = 重新執行
rerun_all = 重新執行所有作業
copy_hash = 複製哈希
copy_hash = 複製雜湊
toggle_menu = 切換選單
concept_system_global =
view = 查看
concept_system_global =
view = 檢視
filter = 篩選
filter.clear = 篩選條件
filter.is_archived = 歸檔
filter.not_archived = 封存
filter.is_fork = 已派生
filter.not_fork = 不是分
filter.is_mirror = 鏡像
filter.clear = 篩選條件
filter.is_archived = 封存
filter.not_archived = 封存
filter.is_fork = 是分叉
filter.not_fork = 不是分
filter.is_mirror = 鏡像
filter.not_mirror = 不是鏡像
filter.is_template = 模板
filter.is_template = 是範本
filter.not_template = 不是範本
filter.public = 公開
filter.private = 私有
artifacts = 製品
concept_user_individual = 個人
show_timestamps = 顯示時間戳
show_timestamps = 顯示時間戳
show_log_seconds = 顯示秒數
show_full_screen = 顯示
show_full_screen = 螢幕顯示
download_logs = 下載日誌
confirm_delete_selected = 確認刪除所有選中專案
confirm_delete_artifact = 您確定要刪除製品“%s”嗎?
confirm_delete_selected = 確認刪除所有選擇的項目
confirm_delete_artifact = 您確定要刪除製品「%s」嗎?
more_items = 顯示更多
invalid_data = 無效數據%v
invalid_data = 無效資料%v
copy_generic = 複製到剪貼簿
[aria]
@ -185,7 +185,7 @@ buttons.list.unordered.tooltip=新增項目符號清單
buttons.list.ordered.tooltip=新增編號清單
buttons.list.task.tooltip=新增工作項目清單
buttons.mention.tooltip=提及使用者或團隊
buttons.ref.tooltip=參考問題或合併請求
buttons.ref.tooltip=引用問題或合併請求
buttons.enable_monospace_font=啟用等寬字型
buttons.disable_monospace_font=停用等寬字型
buttons.switch_to_legacy.tooltip = 使用舊版編輯器
@ -196,41 +196,42 @@ string.desc=Z - A
[error]
occurred=發生錯誤
missing_csrf=錯誤的請求:未提供 CSRF token
invalid_csrf=錯誤的請求:無效的 CSRF token
missing_csrf=錯誤的請求:未提供 CSRF 符記
invalid_csrf=錯誤的請求:無效的 CSRF 符記
not_found=找不到目標。
network_error=網路錯誤
report_message = 如果您確定這是一個 Forgejo bug,請在 <a href="https://codeberg.org/forgejo/forgejo/issues" target="_blank">Codeberg</a> 上搜索問題,或在必要時建立一個新工單
report_message = 如果您確定這是一個 Forgejo 的錯誤,請在 <a href="https://codeberg.org/forgejo/forgejo/issues" target="_blank">Codeberg</a> 上搜尋相關問題,或在必要時提出一個問題
server_internal = 伺服器內部錯誤
[startpage]
app_desc=一套極易架設的 Git 服務
install=安裝容易
platform=跨平台
platform_desc=Forgejo 可以在所有能編譯 <a target="_blank" rel="noopener noreferrer" href="https://go.dev/">Go 語言</a>的平台上執行: Windows, macOS, Linux, ARM 等等。挑一個您喜歡的吧!
platform_desc=Forgejo 可以在所有能編譯 <a target="_blank" rel="noopener noreferrer" href="https://go.dev/">Go 語言</a>的平台上執行WindowsmacOSLinuxARM 等。挑一個您喜歡的吧!
lightweight=輕量級
lightweight_desc=一片便宜的 Raspberry Pi 就可以滿足 Forgejo 的最低需求。節省您的機器資源!
license=開放原始碼
license_desc=取得 <a target="_blank" rel="noopener noreferrer" href="https://forgejo.org/download">Forgejo</a> !成為一名<a target="_blank" rel="noopener noreferrer" href="https://codeberg.org/forgejo/forgejo">貢獻者</a>和我們一起讓 Forgejo 更好,快點加入我們吧!
install_desc = 輕鬆使用您平台的<a target="_blank" rel="noopener noreferrer" href="https://forgejo.org/download/#installation-from-binary">可執行檔</a>,使用 <a target="_blank" rel="noopener noreferrer" href="https://forgejo.org/download/#container-image">Docker 部署</a>,抑或是<a target="_blank" rel="noopener noreferrer" href="https://forgejo.org/download">軟體包</a>。
[install]
install=安裝頁面
title=初始化設定
title=最初組態
docker_helper=如果您在 Docker 中執行 Forgejo請先閱讀<a target="_blank" rel="noopener noreferrer" href="%s">安裝指南</a>再來調整設定。
require_db_desc=Forgejo 需要 MySQL、PostgreSQL、SQLite3、MSSQL、TiDB (MySQL 協定) 等其中一項
require_db_desc=Forgejo 需要 MySQL、PostgreSQL、SQLite3、MSSQL 或 TiDB (MySQL 協定)
db_title=資料庫設定
db_type=資料庫類型
host=主機
user=帳號
user=使用者名稱
password=密碼
db_name=資料庫名稱
db_schema=Schema
db_schema_helper=留空則使用資料庫預設值("public")
db_schema=綱要
db_schema_helper=留空將使用資料庫預設值("public"
ssl_mode=SSL
path=資料庫檔案路徑
sqlite_helper=SQLite3 或 TiDB 資料庫的檔案路徑。<br>如果將 Forgejo 註冊為服務執行,請輸入絕對路徑。
path=路徑
sqlite_helper=SQLite3 或 TiDB 資料庫的路徑。<br>如果將 Forgejo 註冊為服務執行,請輸入絕對路徑。
reinstall_error=您正試圖安裝到既有的 Forgejo 資料庫中
reinstall_confirm_message=使用既有的 Forgejo 資料庫來安裝可能造成多種問題。大部分的情下您應使用既有的「app.ini」來執行 Forgejo。如果您知道自己在做什麼,請確認下列事項:
reinstall_confirm_message=使用既有的 Forgejo 資料庫來安裝可能造成多種問題。大部分的情下您應使用既有的「app.ini」來執行 Forgejo。如果您知道自己在做什麼請確認下列事項
reinstall_confirm_check_1=您可能會遺失以 app.ini 中 SECRET_KEY 所加密的資料:使用者或將無法再以 2FA/OTP 方式登入、鏡像可能無法正常運作。核取此方塊代表您確認目前的 app.ini 包含正確的 SECRET_KEY。
reinstall_confirm_check_2=儲存庫和設定可能需要重新同步。核取此方塊代表您確認您將會手動重新同步儲存庫的 Hook 和 SSH authorized_keys 檔案。您確認您會確保儲存庫和鏡像設定正確。
reinstall_confirm_check_3=您確認您絕對肯定此 Forgejo 在正確的 app.ini 位置上執行,而且您確定您必須重新安裝。您確認您瞭解上述風險。
@ -238,9 +239,9 @@ 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_pattern_not_allowed=無效的管理員帳號,該帳號符合保留規則
err_admin_name_is_invalid=無效的管理員帳號
err_admin_name_is_reserved=無效的管理員帳號名稱,帳號名稱已被保留
err_admin_name_pattern_not_allowed=無效的管理員帳號名稱,該帳號符合保留規則
err_admin_name_is_invalid=無效的管理員帳號名稱
general_title=一般設定
app_name=站點標題
@ -256,17 +257,17 @@ ssh_port=SSH 伺服器埠
ssh_port_helper=SSH 伺服器使用的埠號,留空以停用 SSH 伺服器。
http_port=HTTP 埠
http_port_helper=Forgejo 的網頁伺服器所使用的埠號。
app_url= URL
app_url_helper=用於 HTTP(S) Clone 和電子郵件通知的基本網址
app_url= URL
app_url_helper=用於 HTTP(S) Clone 和電子郵件通知的基底 URL
log_root_path=日誌路徑
log_root_path_helper=日誌檔將寫入此目錄。
optional_title=可選設定
optional_title=可選設定
email_title=電子郵件設定
smtp_addr=SMTP 主機
smtp_addr=SMTP 主機
smtp_port=SMTP 連接埠
smtp_from=電子郵件寄件
smtp_from_helper=Forgejo 將會使用的電子信箱,直接輸入電子信箱或使用「"名稱" <email@example.com>」的格式。
smtp_from=電子郵件寄件
smtp_from_helper=Forgejo 使用的電子信箱。直接輸入電子信箱或使用「"名稱" <email@example.com>」的格式。
mailer_user=SMTP 帳號
mailer_password=SMTP 密碼
register_confirm=要求註冊時確認電子郵件
@ -275,47 +276,47 @@ server_service_title=伺服器和第三方服務設定
offline_mode=啟用本地模式
offline_mode_popup=停用其他服務並在本地提供所有資源。
disable_gravatar=停用 Gravatar
disable_gravatar_popup=停用 Gravatar 和其他大頭貼服務。除非使用者在本地上傳大頭貼,否則將使用預設的大頭貼。
disable_gravatar_popup=停用 Gravatar 和第三方大頭貼服務。若使用者在未本地上傳大頭貼,將使用預設的大頭貼。
federated_avatar_lookup=啟用 Federated 大頭貼
federated_avatar_lookup_popup=使用 Libravatar 以啟用 Federated Avatar 查詢服務
disable_registration=用自助註冊
disable_registration_popup=關閉註冊功能,只有管理員可以新增帳戶
federated_avatar_lookup_popup=啟用 Libravatar 提供的 Federated Avatar 查詢服務。
disable_registration=用自助註冊
disable_registration_popup=禁止使用者自助註冊,只有管理員可以新增帳號
allow_only_external_registration_popup=只允許從外部服務註冊
openid_signin=啟用 OpenID 登入
openid_signin_popup=啟用 OpenID 登入
openid_signin_popup=啟用 OpenID 登入
openid_signup=啟用 OpenID 自助註冊
openid_signup_popup=啟用基於 OpenID 的註冊
enable_captcha=在註冊時啟用驗證碼
enable_captcha_popup=要求在用戶註冊時輸入驗證碼
openid_signup_popup=啟用使用 OpenID 的自助註冊。
enable_captcha=啟用註冊驗證碼
enable_captcha_popup=要求在用戶註冊時輸入驗證碼
require_sign_in_view=需要登入才能瀏覽頁面
require_sign_in_view_popup=限制已登入的使用者才能存取頁面。訪客只會看到登入和註冊頁面。
admin_setting_desc=建立管理員帳戶是選用的。 第一個註冊的使用者將自動成為管理員。
admin_title=管理員帳設定
admin_name=管理員使用者名稱
admin_password=管理員密碼
require_sign_in_view_popup=僅有已登入的使用者能存取頁面。訪客只會看到登入和註冊頁面。
admin_setting_desc=您不需要建立管理員帳號。 第一個註冊的使用者將自動成為管理員。
admin_title=管理員帳設定
admin_name=管理員帳號名稱
admin_password=密碼
confirm_password=確認密碼
admin_email=電子信箱
install_btn_confirm=安裝 Forgejo
test_git_failed=無法識別「git」指令%v
test_git_failed=無法測試「git」指令%v
sqlite3_not_available=這個 Forgejo 版本不支援 SQLite3請從 %s 下載官方的預先編譯版本 (不是 「gobuild」 版本)。
invalid_db_setting=資料庫設定不正確 %v
invalid_db_table=資料庫的資料表「%s」無效: %v
invalid_repo_path=儲存庫根目錄設定不正確%v
invalid_app_data_path=無效的應用程式資料路徑:%v
invalid_db_setting=資料庫設定無效 %v
invalid_db_table=資料表「%s」無效%v
invalid_repo_path=儲存庫根目錄設定無效%v
invalid_app_data_path=應用程式資料路徑無效%v
run_user_not_match=「以...執行」的使用者名稱不是目前的使用者名稱:%s -> %s
internal_token_failed=產生內部 Token 失敗:%v
internal_token_failed=產生內部符記失敗:%v
secret_key_failed=產生密鑰失敗:%v
save_config_failed=儲存設定失敗:%v
invalid_admin_setting=管理員帳戶設定不正確%v
invalid_log_root_path=日誌根目錄設定不正確: %v
invalid_admin_setting=管理員帳號設定無效%v
invalid_log_root_path=日誌根目錄設定無效:%v
default_keep_email_private=預設隱藏電子信箱
default_keep_email_private_popup=預設隱藏新使用者的電子信箱。
default_allow_create_organization=預設允許建立組織
default_allow_create_organization_popup=預設允許新使用者建立組織
default_allow_create_organization_popup=預設允許新使用者建立組織
default_enable_timetracking=預設啟用時間追蹤
default_enable_timetracking_popup=預設情況下啟用新存儲庫的時間跟蹤。
default_enable_timetracking_popup=預設啟用新存儲庫的時間追蹤。
no_reply_address=隱藏電子信箱域名
no_reply_address_helper=作為隱藏電子信箱使用者的域名。例如如果隱藏的電子信箱域名設定為「noreply.example.org」帳號「joe」將以「joe@noreply.example.org」的身分登到 Git 中。
no_reply_address_helper=隱藏電子信箱的域名。例如如果隱藏的電子信箱域名設定為「noreply.example.org」帳號「joe」將以「joe@noreply.example.org」的身分登到 Git 中。
password_algorithm=密碼雜湊演算法
invalid_password_algorithm=無效的密碼雜湊演算法
password_algorithm_helper=設定密碼雜湊演算法。演算法有不同的需求與強度。argon2 演算法雖然較安全但會使用大量記憶體,可能不適用於小型系統。
@ -323,7 +324,7 @@ enable_update_checker=啟用更新檢查
run_user_helper = 輸入 Forgejo 執行的作業系統使用者名稱。請注意,此使用者必須具有對儲存庫根路徑的訪問許可權。
env_config_keys_prompt = 以下的環境變數也會被套用於您的設定檔:
env_config_keys = 環境設定
smtp_from_invalid = 電子郵件寄件者地址無效
smtp_from_invalid = 郵件寄件人的地址無效
config_location_hint = 這些設定將被儲存在:
allow_dots_in_usernames = 允許使用者在使用者名稱中使用英文句點。不影響現有帳戶。
enable_update_checker_helper_forgejo = 透過檢查 release.forgejo.org 的 DNS TXT 記錄來定期檢查新的 Forgejo 版本。
@ -333,11 +334,11 @@ uname_holder=帳號或電子信箱
password_holder=密碼
switch_dashboard_context=切換資訊主頁帳戶
my_repos=儲存庫
show_more_repos=顯示更多儲存庫...
show_more_repos=顯示更多儲存庫
collaborative_repos=參與協作的儲存庫
my_orgs=組織
my_mirrors=我的鏡像
view_home=訪問 %s
view_home=檢視 %s
search_repos=搜尋儲存庫...
filter=其他篩選條件
filter_by_team_repositories=以團隊儲存庫篩選
@ -375,10 +376,11 @@ code_search_results=「%s」的搜尋結果
code_last_indexed_at=最後索引 %s
relevant_repositories_tooltip=已隱藏缺少主題、圖示、說明、Fork 的儲存庫。
relevant_repositories=只顯示相關的儲存庫,<a href="%s">顯示未篩選的結果</a>。
stars_few = %d 星星
stars_one = %d 星星
stars_few = %d 星星
stars_one = %d 星星
forks_one = %d 個 fork
forks_few = %d 個 fork
go_to = 前往
[auth]
create_new_account=註冊帳戶
@ -401,20 +403,20 @@ prohibit_login=禁止登入
resent_limit_prompt=抱歉,您請求發送驗證電子郵件太過頻繁,請等待 3 分鐘後再試一次。
has_unconfirmed_mail=%s 您好,您有一封發送至( <b>%s</b>) 但未被確認的郵件。如果您未收到啟用郵件,或需要重新發送,請單擊下方的按鈕。
resend_mail=單擊此處重新發送確認郵件
email_not_associate=此電子信箱未與任何帳戶連結
email_not_associate=此電子信箱未與任何帳戶連結
send_reset_mail=發送帳戶救援信
reset_password=帳戶救援
invalid_code=您的確認代碼無效或已過期。
invalid_password=您的密碼和用來建立帳戶的不符。
reset_password_helper=帳戶救援
password_too_short=密碼長度不能少於 %d 個字
password_too_short=密碼長度不能少於 %d 個字
non_local_account=非本地帳戶無法透過 Forgejo 的網頁介面更改密碼。
verify=驗證
scratch_code=備用驗證碼
use_scratch_code=使用備用驗證碼
twofa_scratch_used=您已經用掉了備用驗證碼。您已被重新導向到兩步驟驗證設定頁面以便移除你已註冊設備或重新產生新的備用驗證碼。
twofa_scratch_used=您已經用掉了備用驗證碼。您已被轉址到兩步驟驗證設定頁面以便移除您的註冊設備或重新產生新的備用驗證碼。
twofa_passcode_incorrect=您的驗證碼不正確。如果您遺失設備,請使用您的備用驗證碼登入。
twofa_scratch_token_incorrect=您的備用驗證碼不正確
twofa_scratch_token_incorrect=您的備用驗證碼不正確
login_userpass=登入
tab_openid=OpenID
oauth_signup_tab=註冊新帳戶
@ -441,7 +443,7 @@ authorize_application_description=如果您允許,它將能夠讀取和修改
authorize_title=授權「%s」存取您的帳戶
authorization_failed=授權失效
sspi_auth_failed=SSPI 認證失敗
password_pwned_err=無法完成對 HaveIBeenPwned 的請求
password_pwned_err=無法完成對 HaveIBeenPwned 的請求
tab_signin = 登入
change_unconfirmed_email_summary = 更改接收帳號啟用信的信箱地址。
change_unconfirmed_email = 如果您在註冊帳號時寫錯了信箱地址,您可以在下面更改它。您會在這個新地址收到一封確認信。
@ -450,12 +452,12 @@ tab_signup = 註冊
last_admin = 您無法刪除最後一個管理員。必須至少有一個管理員。
prohibit_login_desc = 您的帳號被禁止登入,請連絡網站管理員。
sign_up_successful = 已成功建立帳號。歡迎!
invalid_code_forgot_password = 您的驗證碼無效或是已過期。點擊<a href="%s">這裡</a>來開始一個新的 session。
invalid_code_forgot_password = 您的確認代碼無效或是已過期。點擊<a href="%s">這裡</a>來開始一個新的 session。
reset_password_wrong_user = 您以 %s 登入,但是帳號復原連結是給 %s 的
password_pwned = 該密碼出現在先前資料洩露的<a target="_blank" rel="noopener noreferrer" href="https://haveibeenpwned.com/Passwords">被盜密碼清單</a>中。請用一個不同的密碼再試一次,並考慮在其他地方也更換此密碼。
authorization_failed_desc = 偵測到無效請求,授權失敗。請連絡您嘗試授權的應用的維護者。
authorization_failed_desc = 因為偵測到無效請求,授權失敗。請連絡您嘗試授權的應用的維護者。
openid_signin_desc = 輸入您的 OpenID URI。例如alice.openid.example.org 或是 https://openid.example.org/alice。
remember_me.compromised = 此登入 token 已經無效,這可能是因為您的帳號被盜用了。請檢查您的帳號是否有異常活動。
remember_me.compromised = 此登入符記已經無效,這可能是因為您的帳號被盜用了。請檢查您的帳號是否有異常活動。
[mail]
view_it_on=在 %s 上查看
@ -569,13 +571,13 @@ include_error=` 必須包含子字串「%s」。`
glob_pattern_error=` glob 比對模式無效:%s.`
regex_pattern_error=` 正規表示式模式無效:%s.`
username_error=`只能包含英文字母數字 ('0-9'、'a-z'、'A-Z')、破折號 ('-')、底線 ('_')、句點 ('.'),不能以非英文字母數字開頭或結尾,也不允許連續的非英文字母數字。`
invalid_group_team_map_error=` 對應無效: %s`
invalid_group_team_map_error=` 對應無效%s`
unknown_error=未知錯誤:
captcha_incorrect=驗證碼不正確。
password_not_match=密碼錯誤。
lang_select_error=從清單中選擇一個語言。
username_been_taken=帳號已被使用
username_been_taken=帳號名稱已被使用
username_change_not_local_user=非本地使用者不允許更改他們的帳號。詳細資訊請聯絡您的系統管理員。
repo_name_been_taken=儲存庫名稱已被使用。
repository_force_private=已啟用「強制私有」:私有儲存庫不能被公開。
@ -588,10 +590,10 @@ visit_rate_limit=遠端造訪已達用量上限。
org_name_been_taken=組織名稱已被使用。
team_name_been_taken=團隊名稱已被使用。
team_no_units_error=請至少選擇一個儲存庫區域。
email_been_used=此電子信箱已被使用
email_been_used=此電子信箱已被使用
email_invalid=此電子信箱無效。
openid_been_used=OpenID 位址「%s」已被使用。
username_password_incorrect=帳號或密碼不正確
username_password_incorrect=帳號或密碼不正確
password_complexity=密碼複雜度沒有通過以下的要求:
password_lowercase_one=至少要有一個小寫字母
password_uppercase_one=至少要有一個大寫字母
@ -601,8 +603,8 @@ enterred_invalid_repo_name=您輸入的儲存庫名稱不正確。
enterred_invalid_org_name=您輸入的組織名稱不正確。
enterred_invalid_owner_name=新的擁有者名稱無效。
enterred_invalid_password=您輸入的密碼不正確。
user_not_exist=該用戶名不存在
team_not_exist=團隊不存在
user_not_exist=該用戶名不存在
team_not_exist=團隊不存在
last_org_owner=你不能從「所有者」團隊中刪除最後一個使用者。每個組織中至少要有一個擁有者。
cannot_add_org_to_team=組織不能被新增為團隊成員。
duplicate_invite_to_team=該使用者已經被邀請為團隊成員。
@ -621,7 +623,7 @@ still_own_packages=您的帳戶擁有一個以上的套件,請先刪除它們
org_still_own_repo=此組織仍然擁有一個以上的儲存庫,請先刪除或轉移它們。
org_still_own_packages=此組織仍然擁有一個以上的套件,請先刪除它們。
target_branch_not_exist=目標分支不存在
target_branch_not_exist=目標分支不存在
unset_password = 此使用者尚未設置密碼。
unsupported_login_type = 該帳號的登入方式使它無法被刪除。
To = 分支名稱
@ -631,7 +633,7 @@ Pronouns = 代名詞
Biography = 個人簡介
Website = 網站
Location = 地區
AccessToken = 存取令牌
AccessToken = 存取符記
username_has_not_been_changed = 帳號名稱未被更改
admin_cannot_delete_self = 當您是管理員時,您不能刪除自己。請先移除您的管理員權限。
username_error_no_dots = ` 只能包含英數字符("0-9","a-z","A-Z"),破折號("-")和底線("_")。只能以英數字元開頭或結尾,連續的非英數字元也不被允許。`
@ -639,7 +641,7 @@ required_prefix = 輸入文字必須以「%s」開頭
[user]
change_avatar=更改大頭貼...
change_avatar=更改大頭貼
repositories=儲存庫
activity=公開動態
followers_few=%d 追蹤者
@ -652,7 +654,7 @@ following_few=%d 追蹤中
follow=追蹤
unfollow=取消追蹤
user_bio=個人簡介
disabled_public_activity=這個使用者已對外隱藏動態
disabled_public_activity=這個使用者已對外隱藏動態
email_visibility.limited=所有已驗證的使用者都可以看到您的電子信箱地址
email_visibility.private=只有您和系統管理員可以看到您的電子信箱地址
@ -667,6 +669,11 @@ block_user.detail_1 = 該使用者已停止追踪您。
block_user.detail_2 = 這個使用者無法對您的儲存庫、您提出的問題或發表的留言做出任何操作。
followers_one = %d 個追踪者
following_one = 追踪 %d 個人
block_user.detail_3 = 該使用者無法將您加為協作者,您也無法將其加為協作者。
follow_blocked_user = 因為這個使用者封鎖您或被您封鎖,您不能追蹤此使用者。
block = 封鎖
unblock = 解除封鎖
block_user.detail = 請注意,封鎖此使用者將會導致以下結果。例如:
[settings]
profile=個人資料
@ -727,15 +734,15 @@ enable_custom_avatar=使用自訂大頭貼
choose_new_avatar=選擇新的大頭貼
update_avatar=更新大頭貼
delete_current_avatar=刪除目前的大頭貼
uploaded_avatar_not_a_image=上傳的檔案不是圖片
update_avatar_success=您的大頭貼已更新
update_user_avatar_success=已更新使用者的大頭貼。
uploaded_avatar_not_a_image=上傳的檔案不是圖片
update_avatar_success=已更新您的大頭貼。
update_user_avatar_success=已更新使用者的大頭貼。
update_password=更新密碼
old_password=目前的密碼
new_password=新的密碼
retype_new_password=確認新密碼
password_incorrect=輸入的密碼不正確
password_incorrect=輸入的密碼不正確
change_password_success=您的密碼已更新。 從現在起使用您的新密碼登入。
password_change_disabled=非本地帳戶無法透過 Forgejo 的網頁介面更改密碼。
@ -753,18 +760,18 @@ activations_pending=等待啟用中
delete_email=移除
email_deletion=移除電子信箱
email_deletion_desc=電子信箱和相關資訊將從您的帳戶中刪除,由此電子信箱所提交的 Git 將保持不變,是否繼續?
email_deletion_success=該電子信箱已被刪除
email_deletion_success=該電子信箱已被刪除
theme_update_success=已更新佈景主題。
theme_update_error=選取的佈景主題不存在。
openid_deletion=移除 OpenID 位址
openid_deletion_desc=從您的帳戶刪除此 OpenID 位址將會無法使用它進行登入。是否繼續?
openid_deletion_success=該 OpenID 已被刪除
openid_deletion_success=該 OpenID 已被刪除
add_new_email=新增電子信箱
add_new_openid=新增 OpenID URI
add_email=新增電子信箱
add_openid=新增 OpenID URI
add_email_success=已加入新的電子信箱。
email_preference_set_success=已套用郵件偏好設定
email_preference_set_success=已套用郵件偏好設定
add_openid_success=已加入新的 OpenID 地址。
keep_email_private=隱藏電子信箱
openid_desc=OpenID 讓你可以授權認證給外部服務。
@ -787,26 +794,26 @@ ssh_key_been_used=此 SSH 金鑰早已加入本伺服器。
ssh_key_name_used=已有相同名稱的 SSH 金鑰存在於您的帳戶。
ssh_principal_been_used=此主體早已加入本伺服器。
gpg_key_id_used=已存在具有相同 ID 的 GPG 金鑰。
gpg_no_key_email_found=此 GPG 金鑰不符合任何已關聯到您帳戶且已啟用的電子信箱。若您為提供的 Token 進行簽署,您仍然可以新增它。
gpg_no_key_email_found=此 GPG 金鑰不符合任何已關聯到您帳戶且已啟用的電子信箱。若您簽署該符記,您仍然可以新增它。
gpg_key_matched_identities=符合的身分:
gpg_key_matched_identities_long=此金鑰中嵌入的身分符合此使用者已啟用的電子信箱。此金鑰可用來驗證符合此信箱的提交。
gpg_key_verified=已驗證的金鑰
gpg_key_verified_long=金鑰已被 Token 驗證且可用來驗證符合此使用者已啟用的電子信箱的提交,以及任何符合此金鑰的身分。
gpg_key_verified_long=金鑰已被符記驗證且可用來驗證符合此使用者已啟用的電子信箱的提交,以及任何符合此金鑰的身分。
gpg_key_verify=驗證
gpg_invalid_token_signature=提供的 GPG 金鑰、簽署、Token 不符合或 Token 已過期。
gpg_token_required=您必須為下列的 Token 提供簽署
gpg_token=Token
gpg_invalid_token_signature=提供的 GPG 金鑰、簽署、符記不符合或符記已過期。
gpg_token_required=您必須為下列的符記提供簽署
gpg_token=符記
gpg_token_help=您可以使用以下方法產生簽署:
gpg_token_code=echo "%s" | gpg -a --default-key %s --detach-sig
gpg_token_signature=Armored GPG 簽署
key_signature_gpg_placeholder=以 「-----BEGIN PGP SIGNATURE-----」 開頭
verify_gpg_key_success=已驗證 GPG 金鑰「%s」。
ssh_key_verified=已驗證的金鑰
ssh_key_verified_long=金鑰已被 Token 驗證且可用來驗證符合此使用者已啟用的電子信箱的提交。
ssh_key_verified_long=金鑰已被符記驗證且可用來驗證符合此使用者已啟用的電子信箱的提交。
ssh_key_verify=驗證
ssh_invalid_token_signature=提供的 SSH 金鑰、簽署、Token 不符合或 Token 已過期。
ssh_token_required=您必須為下列的 Token 提供簽署
ssh_token=Token
ssh_invalid_token_signature=提供的 SSH 金鑰、簽署、符記不符合或符記已過期。
ssh_token_required=您必須為下列的符記提供簽署
ssh_token=符記
ssh_token_help=您可以使用以下方法產生簽署:
ssh_token_signature=Armored SSH 簽署
key_signature_ssh_placeholder=以「-----BEGIN SSH SIGNATURE-----」開頭
@ -835,7 +842,7 @@ no_activity=沒有近期動態
can_read_info=讀取
can_write_info=寫入
key_state_desc=此金鑰在過去 7 天內曾被使用
token_state_desc= Token 在過去 7 天內曾被使用
token_state_desc=符記在過去 7 天內曾被使用
principal_state_desc=此主體在過去 7 天內曾被使用
show_openid=在個人資料顯示
hide_openid=從個人資料隱藏
@ -844,19 +851,19 @@ ssh_externally_managed=此 SSH 金鑰由此使用者的外部服務所管理
manage_social=管理關聯的社群帳戶
unbind=解除連結
manage_access_token=管理 Access Token
generate_new_token=產生新的 Token
tokens_desc=這些 Token 透過 Forgejo API 獲得存取你帳戶的權限。
token_name=Token 名稱
generate_token=產生 Token
generate_token_success=已經產生新的 Token。請立刻複製它因為他將不會再次顯示。
manage_access_token=管理存取符記
generate_new_token=產生新的符記
tokens_desc=這些符記透過 Forgejo API 獲得存取您帳戶的權限。
token_name=符記名稱
generate_token=產生符記
generate_token_success=已經產生新的符記。請立刻複製它,因為它將不會被再次顯示。
generate_token_name_duplicate=應用程式名稱 <strong>%s</strong> 已被使用,請換一個試試。
delete_token=刪除
access_token_deletion=刪除 Access Token
access_token_deletion=刪除存取符記
access_token_deletion_cancel_action=取消
access_token_deletion_confirm_action=刪除
access_token_deletion_desc=刪除 Token 後,使用此 Token 的應用程式將無法再存取您的帳戶,此動作不可還原。是否繼續
delete_token_success=已刪除 Token。使用此 Token 的應用程式無法再存取您的帳戶。
access_token_deletion_desc=刪除符記後,使用此符記的應用程式將無法再存取您的帳戶。您將無法取消此操作。要繼續嗎
delete_token_success=已刪除符記。使用此符記的應用程式無法再存取您的帳戶。
permission_no_access=沒有存取權
permission_read=讀取
@ -864,7 +871,7 @@ manage_oauth2_applications=管理 OAuth2 應用程式
edit_oauth2_application=編輯 OAuth2 應用程式
oauth2_applications_desc=OAuth2 應用程式讓您的第三方應用程式安全地驗證此 Forgejo 中的使用者。
remove_oauth2_application=刪除 OAuth2 應用程式
remove_oauth2_application_desc=刪除 OAuth2 應用程式將會撤銷所有已簽署的 Access Token 存取權。是否繼續?
remove_oauth2_application_desc=刪除 OAuth2 應用程式將會撤銷所有已簽署的存取符記之存取權。是否繼續?
remove_oauth2_application_success=已刪除應用程式。
create_oauth2_application=新增 OAuth2 應用程式
create_oauth2_application_button=建立應用程式
@ -897,7 +904,7 @@ scan_this_image=使用您的授權應用程式來掃瞄圖片:
or_enter_secret=或者輸入密碼: %s
then_enter_passcode=然後輸入應用程式中顯示的驗證碼:
passcode_invalid=無效的驗證碼,請重試。
twofa_enrolled=您的帳戶已經啟用了兩步驟驗證。請將備用驗證碼 (%s) 保存到安全的地方,它只會顯示這麼一次!
twofa_enrolled=您的帳戶已經啟用了兩步驟驗證。請將備用驗證碼 (%s) 保存到安全的地方,它只會被顯示一次。
twofa_failed_get_secret=取得密鑰 (Secret) 失敗。
webauthn_desc=安全金鑰是包含加密密鑰的硬體設備,它們可以用於兩步驟驗證。安全金鑰必須支援 <a rel="noreferrer" target="_blank" href="https://w3c.github.io/webauthn/#webauthn-authenticator">WebAuthn Authenticator</a> 標準。
@ -908,7 +915,7 @@ webauthn_delete_key_desc=如果您移除安全金鑰,將不能再使用它登
manage_account_links=管理已連結的帳戶
manage_account_links_desc=這些外部帳戶已連結到您的 Forgejo 帳戶。
account_links_not_available=目前沒有連結到您的 Forgejo 帳戶的外部帳戶
account_links_not_available=目前沒有外部帳戶連結到您的 Forgejo 帳戶。
link_account=連結帳戶
remove_account_link=刪除已連結的帳戶
remove_account_link_desc=刪除連結帳戶將撤銷其對 Forgejo 帳戶的存取權限。是否繼續?
@ -942,7 +949,7 @@ update_hints = 更新提示
update_hints_success = 提示已被更改。
added_on = 於 %s 新增
biography_placeholder = 和我們介紹一下您自己吧!(您可以使用 Markdown
location_placeholder = 其他人分享您的地理位置
location_placeholder = 其他人分享您的地理位置
profile_desc = 管理其他人如何看到您的個人資料。通知、密碼復原和網頁上的 Git 操作會使用您的主要電子信箱。
hidden_comment_types.ref_tooltip = 註記哪些問題/提交/… 提及了此問題
keep_activity_private = 隱藏個人頁面中的活動資料
@ -954,7 +961,7 @@ add_email_confirmation_sent = 我們已發送一封確認信至 「%s」。請
repo_and_org_access = 儲存庫和組織存取權
permissions_public_only = 僅公開
permissions_access_all = 全部(公開、私有和受限)
at_least_one_permission = 您必須至少選擇一個權限才能建立 token
at_least_one_permission = 您必須至少選擇一個權限才能建立符記
can_not_add_email_activations_pending = 已有一個待處理的啟用請求,如果您想要新增電子信箱,請稍等幾分鐘。
uid = UID
change_password = 更改密碼
@ -966,6 +973,17 @@ change_username_prompt = 註:更新您的使用者名稱將改變您的帳號
change_username_redirect_prompt = 舊的使用者名稱在其他使用者認領之前將會轉址到新的使用者名稱。
visibility.limited_tooltip = 只有已登入的使用者能看見
visibility.private_tooltip = 只有您加入的組織之成員能看見
keep_email_private_popup = 這將在您的個人資料頁面、合併請求或網頁檔案編輯器中隱藏您的電子信箱地址。已推送的提交不會被更改。在提交中使用 %s 來將其連結至您的帳戶。
ssh_signonly = 因為目前 SSH 已被停用,這個金鑰只被用來校驗提交簽署。
email_desc = 您的主要電子信箱將被用於通知、密碼復原、網頁 Git 操作(如果您的信箱不是隱藏的)。
pronouns_custom = 自訂
oauth2_client_secret_hint = 這把密鑰在您離開或重新整理此頁面後將不再被顯示。請確保您已儲存它。
additional_repo_units_hint_description = 在沒有啟用所有模組的儲存庫中顯示「新增更多模組…」按鈕。
hidden_comment_types.issue_ref_tooltip = 使用者更改與問題相關分支/標籤的留言
pronouns = 代名詞
update_oauth2_application_success = 您已成功更新該 OAuth2 應用程式。
oauth2_redirect_uris = 轉址 URI。每個 URI 應各佔一行。
pronouns_unspecified = 未指定
[repo]
owner=擁有者
@ -974,7 +992,7 @@ repo_name=儲存庫名稱
repo_name_helper=好的儲存庫名稱通常是簡短的、好記的、且獨特的。
repo_size=儲存庫大小
template=範本
template_select=選擇範本
template_select=選擇範本
template_helper=將儲存庫設為範本
template_description=儲存庫範本讓使用者可新增相同目錄結構、檔案以及設定的儲存庫。
visibility=瀏覽權限
@ -997,12 +1015,12 @@ generate_from=產生自
repo_desc=描述
repo_desc_helper=輸入簡介 (選用)
repo_lang=儲存庫語言
repo_gitignore_helper=選擇 .gitignore 範本
repo_gitignore_helper=選擇 .gitignore 範本
repo_gitignore_helper_desc=從常見語言範本清單中挑選忽略追蹤的檔案。預設情況下各種語言建置工具產生的特殊檔案都包含在 .gitignore 中。
issue_labels=問題標籤
issue_labels_helper=選擇問題標籤集
license=授權條款
license_helper=請選擇授權條款檔案
license_helper=請選擇授權條款檔案
license_helper_desc=授權條款定義了他人使用您原始碼的允許和禁止事項。不確定哪個適用於您的專案?查看<a target="_blank" rel="noopener noreferrer" href="%s">選擇授權條款。</a>
readme=讀我檔案
readme_helper=選擇讀我檔案範本。
@ -1019,7 +1037,7 @@ default_branch_helper=預設分支是合併請求和提交程式碼的基礎分
mirror_prune=裁減
mirror_prune_desc=刪除過時的遠端追蹤參考
mirror_interval=鏡像週期有效時間單位為「h」、「m」、「s」設為 0 以停用定期同步。(最小值為:%s
mirror_interval_invalid=鏡像週期無效
mirror_interval_invalid=鏡像週期無效
mirror_sync_on_commit=推送提交後進行同步
mirror_address=從 URL Clone
mirror_address_desc=在授權資訊中填入必要的資料。
@ -1034,7 +1052,7 @@ mirror_password_help=修改帳號以清除已儲存的密碼。
watchers=關注者
stargazers=占星術師
forks=Fork
reactions_more=再多添加 %d
reactions_more=和其他 %d
unit_disabled=網站管理員已經停用這個儲存庫區域。
language_other=其他
adopt_search=輸入帳號以搜尋未接管的儲存庫... (留白以查詢全部)
@ -1098,19 +1116,19 @@ migrate_items_releases=版本發布
migrate_repo=遷移儲存庫
migrate.clone_address=從 URL 遷移 / Clone
migrate.clone_address_desc=現有儲存庫的 HTTP(S) 或 Git 「clone」 URL
migrate.github_token_desc=由於 GitHub API 的速率限制,您可在此輸入一個或多個由半形逗號「,」分隔的 Token 來加快遷移速度。警告:濫用此功能可能會違反該服務提供者的政策並導致帳戶被封鎖。
migrate.github_token_desc=由於 GitHub API 的速率限制,您可在此輸入一個或多個由半形逗號「,」分隔的符記來加快遷移速度。警告:濫用此功能可能會違反該服務提供者的政策並導致帳戶被封鎖。
migrate.clone_local_path=或者是本地端伺服器路徑
migrate.permission_denied=您並沒有導入本地儲存庫的權限。
migrate.permission_denied_blocked=您無法從未允許的主機匯入,請聯絡管理員檢查以下設定值 ALLOWED_DOMAINS/ALLOW_LOCALNETWORKS/BLOCKED_DOMAINS
migrate.invalid_local_path=無效的本地路徑。它不存在或不是一個資料夾。
migrate.invalid_lfs_endpoint=該 LFS 端點無效。
migrate.failed=遷移失敗:%v
migrate.migrate_items_options=遷移其他項目需要取用 Token
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=從 <b>%s</b> 遷移失敗
migrate.migrating_failed_no_addr=遷移失敗。
migrate.github.description=從 github.com 或 GitHub Enterprise 伺服器遷移資料。
migrate.git.description=從任何 Git 服務遷移儲存庫。
@ -1139,7 +1157,7 @@ unwatch=取消關注
watch=關注
unstar=移除星號
star=加上星號
fork=Fork
fork=分叉
download_archive=下載此儲存庫
more_operations=更多操作
@ -1147,7 +1165,7 @@ no_desc=暫無描述
quick_guide=快速指南
clone_this_repo=Clone 此儲存庫
cite_this_repo=引用此儲存庫
create_new_repo_command=從命令列建立新儲存庫
create_new_repo_command=從命令列建立新儲存庫
push_exist_repo=從命令列推送已存在的儲存庫
empty_message=此儲存庫未包含任何內容。
broken_message=無法讀取此儲存庫底層的 Git 資料。請聯絡此 Forgejo 執行個體的管理員或刪除此儲存庫。
@ -1164,10 +1182,10 @@ tags=標籤
issues=問題
pulls=合併請求
project_board=專案
packages=套件
packages=軟體包
actions=Actions
labels=標籤
org_labels_desc=組織層級標籤可用於此組織下的<strong>所有儲庫</strong>
org_labels_desc=組織層級標籤可用於此組織下的<strong>所有庫</strong>
org_labels_desc_manage=管理
milestones=里程碑
@ -1203,7 +1221,7 @@ commit_graph.select=選擇分支
commit_graph.hide_pr_refs=隱藏合併請求
commit_graph.monochrome=單色
commit_graph.color=彩色
blame=Blame
blame=責任歸屬
download_file=下載檔案
normal_view=標準檢視
line=
@ -1216,7 +1234,7 @@ editor.upload_file=上傳檔案
editor.edit_file=編輯檔案
editor.preview_changes=預覽更改
editor.cannot_edit_lfs_files=無法在 web 介面中編輯 LFS 檔。
editor.cannot_edit_non_text_files=網站介面不能編輯二進位檔案
editor.cannot_edit_non_text_files=網站介面不能編輯二進位檔案
editor.edit_this_file=編輯檔案
editor.this_file_locked=檔案已被鎖定
editor.must_be_on_a_branch=你必須在一個分支或提出對此檔的更改。
@ -1224,7 +1242,7 @@ editor.fork_before_edit=如果你想要對這個檔案進行或提出修改,
editor.delete_this_file=刪除檔案
editor.must_have_write_access=您必須擁有寫入權限才能對此檔案進行修改或提出變更。
editor.file_delete_success=已刪除文件「%s」。
editor.name_your_file=命名您的檔案...
editor.name_your_file=命名您的檔案
editor.filename_help=輸入名稱和斜線("/" 以新增目錄。在文字框開始處輸入退格鍵以移除目錄。
editor.or=
editor.cancel_lower=取消
@ -1245,10 +1263,10 @@ editor.create_new_branch=為此提交建立<strong>新分支</strong>並提出
editor.create_new_branch_np=為本次提交建立<strong>新分支</strong>。
editor.propose_file_change=提出檔案變更
editor.new_branch_name=命名此提交的新分支
editor.new_branch_name_desc=新的分支名稱...
editor.new_branch_name_desc=新的分支名稱
editor.cancel=取消
editor.filename_cannot_be_empty=檔案名稱不能為空。
editor.filename_is_invalid=檔名無效:「%s」。
editor.filename_is_invalid=檔名無效「%s」。
editor.branch_does_not_exist=此儲存庫沒有名為「%s」的分支。
editor.branch_already_exists=此儲存庫已有名為「%s」的分支。
editor.file_changed_while_editing=檔案內容在您編輯的途中已被變更。<a target="_blank" rel="noopener noreferrer" href="%s">按一下此處</a>查看更動的地方或<strong>再次提交</strong>以覆蓋這些變更。
@ -1261,7 +1279,7 @@ editor.fail_to_update_file_summary=錯誤訊息:
editor.push_rejected_no_message=該變更被伺服器拒絕但未提供其他資訊。請檢查 Git Hook。
editor.push_rejected=該變更被伺服器拒絕。請檢查 Git Hook。
editor.push_rejected_summary=完整的拒絕訊息:
editor.add_subdir=加入目錄
editor.add_subdir=加入目錄
editor.unable_to_upload_files=上傳檔案到「%s」時失敗錯誤訊息: %v
editor.upload_file_is_locked=檔案「%s」已被 %s 鎖定。
editor.upload_files_to_dir=上傳檔案到「%s」
@ -1389,7 +1407,7 @@ issues.label_templates.title=載入一組預定義的標籤
issues.label_templates.info=沒有任何標籤。點擊「新增標籤」按鈕或使用預定義的標籤集:
issues.label_templates.helper=選擇一個標籤集
issues.label_templates.use=使用標籤集
issues.label_templates.fail_to_load_file=載入標籤範本檔「%s」失敗: %v
issues.label_templates.fail_to_load_file=載入標籤範本檔「%s」失敗%v
issues.add_label=加入了 %s 標籤 %s
issues.add_labels=加入了 %s 標籤 %s
issues.remove_label=移除了 %s 標籤 %s
@ -1858,8 +1876,8 @@ activity.merged_prs_label=已合併
activity.opened_prs_label=提案
activity.active_issues_count_1=<strong>%d</strong> 個問題
activity.active_issues_count_n=<strong>%d</strong> 個問題
activity.closed_issues_count_1=關閉的問題
activity.closed_issues_count_n=關閉的問題
activity.closed_issues_count_1=關閉的問題
activity.closed_issues_count_n=關閉的問題
activity.title.issues_1=%d 個問題
activity.title.issues_n=%d 個問題
activity.title.issues_closed_from=%[2]s關閉了 %[1]s
@ -1993,7 +2011,7 @@ settings.convert_fork_desc=您可以將此 fork 轉換成普通儲存庫。此
settings.convert_fork_notices_1=此操作會將此 fork 轉換成普通儲存庫且不可還原。
settings.convert_fork_confirm=轉換儲存庫
settings.convert_fork_succeed=此 fork 已轉換成普通儲存庫。
settings.transfer=轉移儲存庫所有權
settings.transfer.title=轉移儲存庫所有權
settings.transfer.rejected=儲存庫轉移被拒絕。
settings.transfer.success=儲存庫已成功轉移。
settings.transfer_abort=取消轉移
@ -2140,11 +2158,11 @@ settings.active=啟用
settings.active_helper=觸發事件的資訊將會被送到此 Webhook URL。
settings.add_hook_success=Webhook 新增成功!
settings.update_webhook=更新 Webhook
settings.update_hook_success=Webhook 更新成功!
settings.update_hook_success=已成功更新 Webhook 。
settings.delete_webhook=移除 Webhook
settings.recent_deliveries=最近傳送記錄
settings.hook_type=Hook 類型
settings.slack_token=Token
settings.slack_token=符記
settings.slack_domain=域名
settings.slack_channel=頻道
settings.add_web_hook_desc=整合 <a target="_blank" rel="noreferrer" href="%s">%s</a> 到您的儲存庫。
@ -2163,7 +2181,7 @@ settings.web_hook_name_larksuite_only =Lark Suite
settings.web_hook_name_wechatwork=WeCom (Wechat Work)
settings.web_hook_name_packagist=Packagist
settings.packagist_username=Packagist 帳號
settings.packagist_api_token=API token
settings.packagist_api_token=API 符記
settings.packagist_package_url=Packagist 套件 URL
settings.deploy_keys=部署金鑰
settings.add_deploy_key=新增部署金鑰
@ -2234,7 +2252,7 @@ settings.block_on_official_review_requests=有官方的審核請求時阻擋合
settings.block_on_official_review_requests_desc=如果有官方的審核請求時,即使有足夠的核可也不允許進行合併。
settings.block_outdated_branch=如果合併請求已經過時則阻擋合併
settings.block_outdated_branch_desc=當 head 分支落後於基礎分支時不得合併。
settings.default_branch_desc=請選擇用來提交程式碼和合併請求的預設分支
settings.default_branch_desc=請選擇用來提交程式碼和合併請求的預設分支
settings.merge_style_desc=合併方式
settings.default_merge_style_desc=預設合併方式
settings.choose_branch=選擇一個分支...
@ -2252,7 +2270,7 @@ settings.tags.protection.allowed.teams=允許的團隊
settings.tags.protection.allowed.noone=
settings.tags.protection.create=保護標籤
settings.tags.protection.none=沒有受保護的標籤。
settings.bot_token=Bot Token
settings.bot_token=Bot 符記
settings.chat_id=Chat ID
settings.matrix.homeserver_url=Homeserver 網址
settings.matrix.room_id=聊天室 ID
@ -2275,7 +2293,7 @@ settings.lfs_delete=刪除 OID 為 %s 的 LFS 檔案
settings.lfs_delete_warning=刪除 LFS 檔案可能會造成 Checkout 時發生「物件不存在」的錯誤,您確定嗎?
settings.lfs_findpointerfiles=尋找指標檔案
settings.lfs_locks=鎖定
settings.lfs_invalid_locking_path=無效的路徑: %s
settings.lfs_invalid_locking_path=無效的路徑 %s
settings.lfs_invalid_lock_directory=無法鎖定目錄: %s
settings.lfs_lock_already_exists=鎖定已存在:%s
settings.lfs_lock=鎖定
@ -2472,7 +2490,7 @@ desc.sha256 = SHA256
form.name_pattern_not_allowed = 您無法在儲存庫的名字中使用「%s」格式。
admin.manage_flags = 管理旗標
visibility_helper = 將儲存庫設為私有
mirror_address_url_invalid = URL 無效。您必須將整個 URL 正確轉義escape
mirror_address_url_invalid = URL 無效。您必須正確的跳脫escape該 URL 的每個部份
migrate.migrating_failed.error = 遷移失敗:%s
migrate.cancel_migrating_confirm = 您確定要取消這次的遷移嗎?
invisible_runes_header = `此檔案內含不可見的 Unicode 字元`
@ -2484,6 +2502,7 @@ ambiguous_runes_description = `這個檔案內含容易造成混淆的 Unicode
commit.contained_in = 這個提交存在於:
settings.archive.mirrors_unavailable = 不能鏡像已封存的儲存庫。
settings.mirror_settings.push_mirror.edit_sync_time = 編輯鏡像同步週期
settings.update_protect_branch_success = 已成功更新分支保護規則「%s」。
[graphs]
@ -2862,7 +2881,7 @@ auths.oauth2_clientID=客戶端 ID (金鑰)
auths.oauth2_clientSecret=客戶端密鑰
auths.openIdConnectAutoDiscoveryURL=OpenID 連接自動探索 URL
auths.oauth2_use_custom_url=使用自訂 URL 而不是預設 URL
auths.oauth2_tokenURL=Token URL
auths.oauth2_tokenURL=符記 URL
auths.oauth2_authURL=授權 URL
auths.oauth2_profileURL=個人資料 URL
auths.oauth2_emailURL=電子郵件 URL
@ -2918,12 +2937,12 @@ auths.deletion_success=已刪除認證來源。
auths.login_source_exist=認證來源「%s」已經存在。
auths.login_source_of_type_exist=已經有相同類型的認證來源。
auths.unable_to_initialize_openid=無法初始化 OpenID 連接提供者: %s
auths.invalid_openIdConnectAutoDiscoveryURL=自動探索 URL 無效 (它必須是以 http:// 或 https:// 開頭的有效 URL)
auths.invalid_openIdConnectAutoDiscoveryURL=自動探索 URL 無效(它必須是以 http:// 或 https:// 開頭的有效 URL
config.server_config=伺服器設定
config.app_name=網站標題
config.app_ver=Forgejo 版本
config.app_url=Forgejo 基 URL
config.app_url=Forgejo 基 URL
config.custom_conf=設定檔路徑
config.custom_file_root_path=自訂檔案根目錄
config.domain=伺服器域名
@ -3126,7 +3145,7 @@ identity_access = 身分和存取權限
[action]
create_repo=建立了儲存庫 <a href="%s">%s</a>
rename_repo=重新命名儲存庫 <code>%[1]s</code> 為 <a href="%[2]s">%[3]s</a>
commit_repo=推送了 <a href="%[2]s">%[3]s</a> 到 <a href="%[1]s">%[4]s</a>
commit_repo=推送到了 <a href="%[1]s">%[4]s</a> 儲存庫的 <a href="%[2]s">%[3]s</a> 分支
create_issue=`建立了問題 <a href="%[1]s">%[3]s#%[2]s</a>`
close_issue=`關閉了問題 <a href="%[1]s">%[3]s#%[2]s</a>`
reopen_issue=`重新開放了問題 <a href="%[1]s">%[3]s#%[2]s</a>`
@ -3414,11 +3433,11 @@ runners.status.idle=閒置
runners.status.active=啟用
runners.status.offline=離線
runners.version=版本
runners.reset_registration_token_success=成功重設了 Runner 註冊 Token
runners.reset_registration_token_success=成功重設了 Runner 註冊符記
runs.all_workflows=所有工作流程
runs.commit=提交
runs.invalid_workflow_helper=工作流程設定檔無效。請檢查您的設定檔: %s
runs.invalid_workflow_helper=工作流程設定檔無效。請檢查您的設定檔%s
runs.status=狀態
runs.no_runs=工作流程沒有執行過。
@ -3427,7 +3446,7 @@ workflow.disable_success=已成功停用工作流程「%s」。
workflow.enable=啟用工作流程
workflow.enable_success=已成功啟用工作流程「%s」。
need_approval_desc=來自 Frok 儲存庫的合併請求需要核可才能執行工作流程。
need_approval_desc=來自 Fork 儲存庫的合併請求需要核可才能執行工作流程。
variables.edit = 編輯變數
variables = 變數
variables.management = 變數管理
@ -3470,7 +3489,7 @@ executable_file = 可執行檔
[search]
package_kind = 搜尋套件
package_kind = 搜尋軟體包
search = 搜尋…
type_tooltip = 搜尋類型
match_tooltip = 僅包含與搜尋字詞完全相符的結果
@ -3481,12 +3500,12 @@ match = 相符
user_kind = 搜尋使用者…
org_kind = 搜尋組織…
team_kind = 搜尋團隊…
code_kind = 搜尋程式碼
code_search_unavailable = 程式碼搜尋目前無法使用。請連絡網站管理員。
code_kind = 搜尋程式碼
code_search_unavailable = 目前無法使用程式碼搜尋。請連絡網站管理員。
no_results = 沒有找到相符的結果。
keyword_search_unavailable = 關鍵字搜尋目前無法使用。請連絡網站管理員。
runner_kind = 搜尋 Runners …
project_kind = 搜尋專案…
branch_kind = 搜尋分支…
commit_kind = 搜尋提交…
code_search_by_git_grep = 目前搜尋結果由「git grep」提供。如果網站管理員啟程式碼索引,可能會有更好的結果。
code_search_by_git_grep = 目前搜尋結果由「git grep」提供。如果網站管理員啟程式碼索引,可能會有更好的結果。

8
package-lock.json generated
View file

@ -34,7 +34,7 @@
"jquery": "3.7.1",
"katex": "0.16.10",
"license-checker-webpack-plugin": "0.2.1",
"mermaid": "10.9.0",
"mermaid": "10.9.1",
"mini-css-extract-plugin": "2.8.1",
"minimatch": "9.0.3",
"monaco-editor": "0.47.0",
@ -8232,9 +8232,9 @@
}
},
"node_modules/mermaid": {
"version": "10.9.0",
"resolved": "https://registry.npmjs.org/mermaid/-/mermaid-10.9.0.tgz",
"integrity": "sha512-swZju0hFox/B/qoLKK0rOxxgh8Cf7rJSfAUc1u8fezVihYMvrJAS45GzAxTVf4Q+xn9uMgitBcmWk7nWGXOs/g==",
"version": "10.9.1",
"resolved": "https://registry.npmjs.org/mermaid/-/mermaid-10.9.1.tgz",
"integrity": "sha512-Mx45Obds5W1UkW1nv/7dHRsbfMM1aOKA2+Pxs/IGHNonygDHwmng8xTHyS9z4KWVi0rbko8gjiBmuwwXQ7tiNA==",
"dependencies": {
"@braintree/sanitize-url": "^6.0.1",
"@types/d3-scale": "^4.0.3",

View file

@ -33,7 +33,7 @@
"jquery": "3.7.1",
"katex": "0.16.10",
"license-checker-webpack-plugin": "0.2.1",
"mermaid": "10.9.0",
"mermaid": "10.9.1",
"mini-css-extract-plugin": "2.8.1",
"minimatch": "9.0.3",
"monaco-editor": "0.47.0",

View file

@ -0,0 +1 @@
- [PR](https://codeberg.org/forgejo/forgejo/pulls/3857): Gitea v1.22 is [not published yet](https://github.com/go-gitea/gitea/issues/30731) as of 21 May 2024 and in reality Forgejo v7.0.3 is compatible with Gitea v1.21.11. The Gitea v1.22 release was anticipated to happen shortly after [Forgejo v7.0 was published on 23 April 2024](https://forgejo.org/2024-04-release-v7-0/) because it was already in the late stages of its release candidate lifecycle. However, around 27 April, [the Gitea release candidates were dropped](https://github.com/go-gitea/gitea/issues/30731) and the release candidates restarted from the Gitea development branch.

View file

@ -0,0 +1 @@
Fix gogs migration if gogs is hosted at a subpath

View file

@ -0,0 +1 @@
Fix text selection color

View file

@ -0,0 +1 @@
CVE-2024-24788: a malformed DNS message in response to a query can cause the Lookup functions to get stuck in an infinite loop.

View file

@ -0,0 +1 @@
Fix project name wrapping

View file

@ -0,0 +1 @@
Fixed an issue that resulted in repository activity feeds (including RSS and Atom feeds) containing repeated activities.

View file

@ -0,0 +1 @@
Fixed an issue that rendered the "Allow edits from maintainers" checkbox disfunctional, preventing people from turning it on.

View file

@ -0,0 +1 @@
- mail notifications of pull requests push are empty

View file

@ -0,0 +1 @@
- Fixed a bug that resulted in workflow badges not working for workflows that weren't running on push (such as scheduled workflows, and ones that run on tags and for prs)

View file

@ -143,9 +143,7 @@ func serveMavenMetadata(ctx *context.Context, params parameters) {
ctx.Resp.Header().Set("Content-Length", strconv.Itoa(len(xmlMetadataWithHeader)))
ctx.Resp.Header().Set("Content-Type", contentTypeXML)
if _, err := ctx.Resp.Write(xmlMetadataWithHeader); err != nil {
log.Error("write bytes failed: %v", err)
}
_, _ = ctx.Resp.Write(xmlMetadataWithHeader)
}
func servePackageFile(ctx *context.Context, params parameters, serveContent bool) {

View file

@ -29,7 +29,6 @@ import (
"code.gitea.io/gitea/services/context"
"code.gitea.io/gitea/services/convert"
issue_service "code.gitea.io/gitea/services/issue"
notify_service "code.gitea.io/gitea/services/notify"
)
// SearchIssues searches for issues across the repositories that the user has access to
@ -810,12 +809,19 @@ func EditIssue(ctx *context.APIContext) {
return
}
oldTitle := issue.Title
if len(form.Title) > 0 {
issue.Title = form.Title
err = issue_service.ChangeTitle(ctx, issue, ctx.Doer, form.Title)
if err != nil {
ctx.Error(http.StatusInternalServerError, "ChangeTitle", err)
return
}
}
if form.Body != nil {
issue.Content = *form.Body
err = issue_service.ChangeContent(ctx, issue, ctx.Doer, *form.Body)
if err != nil {
ctx.Error(http.StatusInternalServerError, "ChangeContent", err)
return
}
}
if form.Ref != nil {
err = issue_service.ChangeIssueRef(ctx, issue, ctx.Doer, *form.Ref)
@ -883,24 +889,14 @@ func EditIssue(ctx *context.APIContext) {
return
}
}
issue.IsClosed = api.StateClosed == api.StateType(*form.State)
}
statusChangeComment, titleChanged, err := issues_model.UpdateIssueByAPI(ctx, issue, ctx.Doer)
if err != nil {
if err := issue_service.ChangeStatus(ctx, issue, ctx.Doer, "", api.StateClosed == api.StateType(*form.State)); err != nil {
if issues_model.IsErrDependenciesLeft(err) {
ctx.Error(http.StatusPreconditionFailed, "DependenciesLeft", "cannot close this issue because it still has open dependencies")
return
}
ctx.Error(http.StatusInternalServerError, "UpdateIssueByAPI", err)
ctx.Error(http.StatusInternalServerError, "ChangeStatus", err)
return
}
if titleChanged {
notify_service.IssueChangeTitle(ctx, ctx.Doer, issue, oldTitle)
}
if statusChangeComment != nil {
notify_service.IssueChangeStatus(ctx, ctx.Doer, "", issue, statusChangeComment, issue.IsClosed)
}
// Refetch from database to assign some automatic values

View file

@ -15,6 +15,7 @@ import (
"code.gitea.io/gitea/modules/web"
"code.gitea.io/gitea/services/attachment"
"code.gitea.io/gitea/services/context"
"code.gitea.io/gitea/services/context/upload"
"code.gitea.io/gitea/services/convert"
issue_service "code.gitea.io/gitea/services/issue"
)
@ -159,6 +160,8 @@ func CreateIssueAttachment(ctx *context.APIContext) {
// "$ref": "#/responses/error"
// "404":
// "$ref": "#/responses/error"
// "422":
// "$ref": "#/responses/validationError"
// "423":
// "$ref": "#/responses/repoArchivedError"
@ -207,7 +210,11 @@ func CreateIssueAttachment(ctx *context.APIContext) {
CreatedUnix: issue.UpdatedUnix,
})
if err != nil {
if upload.IsErrFileTypeForbidden(err) {
ctx.Error(http.StatusUnprocessableEntity, "", err)
} else {
ctx.Error(http.StatusInternalServerError, "UploadAttachment", err)
}
return
}

View file

@ -15,6 +15,7 @@ import (
"code.gitea.io/gitea/modules/web"
"code.gitea.io/gitea/services/attachment"
"code.gitea.io/gitea/services/context"
"code.gitea.io/gitea/services/context/upload"
"code.gitea.io/gitea/services/convert"
issue_service "code.gitea.io/gitea/services/issue"
)
@ -156,6 +157,8 @@ func CreateIssueCommentAttachment(ctx *context.APIContext) {
// "$ref": "#/responses/error"
// "404":
// "$ref": "#/responses/error"
// "422":
// "$ref": "#/responses/validationError"
// "423":
// "$ref": "#/responses/repoArchivedError"
@ -209,9 +212,14 @@ func CreateIssueCommentAttachment(ctx *context.APIContext) {
CreatedUnix: comment.Issue.UpdatedUnix,
})
if err != nil {
if upload.IsErrFileTypeForbidden(err) {
ctx.Error(http.StatusUnprocessableEntity, "", err)
} else {
ctx.Error(http.StatusInternalServerError, "UploadAttachment", err)
}
return
}
if err := comment.LoadAttachments(ctx); err != nil {
ctx.Error(http.StatusInternalServerError, "LoadAttachments", err)
return

View file

@ -601,12 +601,19 @@ func EditPullRequest(ctx *context.APIContext) {
return
}
oldTitle := issue.Title
if len(form.Title) > 0 {
issue.Title = form.Title
err = issue_service.ChangeTitle(ctx, issue, ctx.Doer, form.Title)
if err != nil {
ctx.Error(http.StatusInternalServerError, "ChangeTitle", err)
return
}
}
if form.Body != nil {
err = issue_service.ChangeContent(ctx, issue, ctx.Doer, *form.Body)
if err != nil {
ctx.Error(http.StatusInternalServerError, "ChangeContent", err)
return
}
if len(form.Body) > 0 {
issue.Content = form.Body
}
// Update or remove deadline if set
@ -683,24 +690,14 @@ func EditPullRequest(ctx *context.APIContext) {
ctx.Error(http.StatusPreconditionFailed, "MergedPRState", "cannot change state of this pull request, it was already merged")
return
}
issue.IsClosed = api.StateClosed == api.StateType(*form.State)
}
statusChangeComment, titleChanged, err := issues_model.UpdateIssueByAPI(ctx, issue, ctx.Doer)
if err != nil {
if err := issue_service.ChangeStatus(ctx, issue, ctx.Doer, "", api.StateClosed == api.StateType(*form.State)); err != nil {
if issues_model.IsErrDependenciesLeft(err) {
ctx.Error(http.StatusPreconditionFailed, "DependenciesLeft", "cannot close this pull request because it still has open dependencies")
return
}
ctx.Error(http.StatusInternalServerError, "UpdateIssueByAPI", err)
ctx.Error(http.StatusInternalServerError, "ChangeStatus", err)
return
}
if titleChanged {
notify_service.IssueChangeTitle(ctx, ctx.Doer, issue, oldTitle)
}
if statusChangeComment != nil {
notify_service.IssueChangeStatus(ctx, ctx.Doer, "", issue, statusChangeComment, issue.IsClosed)
}
// change pull target branch

View file

@ -1291,6 +1291,7 @@ func ListRepoActivityFeeds(ctx *context.APIContext) {
opts := activities_model.GetFeedsOptions{
RequestedRepo: ctx.Repo.Repository,
OnlyPerformedByActor: true,
Actor: ctx.Doer,
IncludePrivate: true,
Date: ctx.FormString("date"),

View file

@ -6,10 +6,8 @@ package user
import (
"net/http"
"code.gitea.io/gitea/models/perm"
access_model "code.gitea.io/gitea/models/perm/access"
repo_model "code.gitea.io/gitea/models/repo"
unit_model "code.gitea.io/gitea/models/unit"
user_model "code.gitea.io/gitea/models/user"
api "code.gitea.io/gitea/modules/structs"
"code.gitea.io/gitea/routers/api/v1/utils"
@ -44,7 +42,7 @@ func listUserRepos(ctx *context.APIContext, u *user_model.User, private bool) {
ctx.Error(http.StatusInternalServerError, "GetUserRepoPermission", err)
return
}
if ctx.IsSigned && ctx.Doer.IsAdmin || permission.UnitAccessMode(unit_model.TypeCode) >= perm.AccessModeRead {
if ctx.IsSigned && ctx.Doer.IsAdmin || permission.HasAccess() {
apiRepos = append(apiRepos, convert.ToRepo(ctx, repos[i], permission))
}
}

View file

@ -4,20 +4,26 @@
package private
import (
"context"
"fmt"
"net/http"
"strconv"
"time"
"code.gitea.io/gitea/models/db"
git_model "code.gitea.io/gitea/models/git"
issues_model "code.gitea.io/gitea/models/issues"
pull_model "code.gitea.io/gitea/models/pull"
repo_model "code.gitea.io/gitea/models/repo"
user_model "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/modules/cache"
"code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/gitrepo"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/private"
repo_module "code.gitea.io/gitea/modules/repository"
"code.gitea.io/gitea/modules/setting"
timeutil "code.gitea.io/gitea/modules/timeutil"
"code.gitea.io/gitea/modules/util"
"code.gitea.io/gitea/modules/web"
gitea_context "code.gitea.io/gitea/services/context"
@ -157,6 +163,14 @@ func HookPostReceive(ctx *gitea_context.PrivateContext) {
}
}
// handle pull request merging, a pull request action should push at least 1 commit
if opts.PushTrigger == repo_module.PushTriggerPRMergeToBase {
handlePullRequestMerging(ctx, opts, ownerName, repoName, updates)
if ctx.Written() {
return
}
}
// Handle Push Options
if len(opts.GitPushOptions) > 0 {
// load the repository
@ -227,7 +241,7 @@ func HookPostReceive(ctx *gitea_context.PrivateContext) {
}
// If we've pushed a branch (and not deleted it)
if !git.IsEmptyCommitID(newCommitID) && refFullName.IsBranch() {
if !git.IsEmptyCommitID(newCommitID, nil) && refFullName.IsBranch() {
// First ensure we have the repository loaded, we're allowed pulls requests and we can get the base repo
if repo == nil {
repo = loadRepository(ctx, ownerName, repoName)
@ -304,3 +318,52 @@ func HookPostReceive(ctx *gitea_context.PrivateContext) {
RepoWasEmpty: wasEmpty,
})
}
func loadContextCacheUser(ctx context.Context, id int64) (*user_model.User, error) {
return cache.GetWithContextCache(ctx, "hook_post_receive_user", id, func() (*user_model.User, error) {
return user_model.GetUserByID(ctx, id)
})
}
// handlePullRequestMerging handle pull request merging, a pull request action should push at least 1 commit
func handlePullRequestMerging(ctx *gitea_context.PrivateContext, opts *private.HookOptions, ownerName, repoName string, updates []*repo_module.PushUpdateOptions) {
if len(updates) == 0 {
ctx.JSON(http.StatusInternalServerError, private.HookPostReceiveResult{
Err: fmt.Sprintf("Pushing a merged PR (pr:%d) no commits pushed ", opts.PullRequestID),
})
return
}
pr, err := issues_model.GetPullRequestByID(ctx, opts.PullRequestID)
if err != nil {
log.Error("GetPullRequestByID[%d]: %v", opts.PullRequestID, err)
ctx.JSON(http.StatusInternalServerError, private.HookPostReceiveResult{Err: "GetPullRequestByID failed"})
return
}
pusher, err := loadContextCacheUser(ctx, opts.UserID)
if err != nil {
log.Error("Failed to Update: %s/%s Error: %v", ownerName, repoName, err)
ctx.JSON(http.StatusInternalServerError, private.HookPostReceiveResult{Err: "Load pusher user failed"})
return
}
pr.MergedCommitID = updates[len(updates)-1].NewCommitID
pr.MergedUnix = timeutil.TimeStampNow()
pr.Merger = pusher
pr.MergerID = pusher.ID
err = db.WithTx(ctx, func(ctx context.Context) error {
// Removing an auto merge pull and ignore if not exist
if err := pull_model.DeleteScheduledAutoMerge(ctx, pr.ID); err != nil && !db.IsErrNotExist(err) {
return fmt.Errorf("DeleteScheduledAutoMerge[%d]: %v", opts.PullRequestID, err)
}
if _, err := pr.SetMerged(ctx); err != nil {
return fmt.Errorf("SetMerged failed: %s/%s Error: %v", ownerName, repoName, err)
}
return nil
})
if err != nil {
log.Error("Failed to update PR to merged: %v", err)
ctx.JSON(http.StatusInternalServerError, private.HookPostReceiveResult{Err: "Failed to update PR to merged"})
}
}

View file

@ -0,0 +1,49 @@
// Copyright 2024 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package private
import (
"testing"
"code.gitea.io/gitea/models/db"
issues_model "code.gitea.io/gitea/models/issues"
pull_model "code.gitea.io/gitea/models/pull"
repo_model "code.gitea.io/gitea/models/repo"
"code.gitea.io/gitea/models/unittest"
user_model "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/modules/private"
repo_module "code.gitea.io/gitea/modules/repository"
"code.gitea.io/gitea/services/contexttest"
"github.com/stretchr/testify/assert"
)
func TestHandlePullRequestMerging(t *testing.T) {
assert.NoError(t, unittest.PrepareTestDatabase())
pr, err := issues_model.GetUnmergedPullRequest(db.DefaultContext, 1, 1, "branch2", "master", issues_model.PullRequestFlowGithub)
assert.NoError(t, err)
assert.NoError(t, pr.LoadBaseRepo(db.DefaultContext))
user1 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1})
err = pull_model.ScheduleAutoMerge(db.DefaultContext, user1, pr.ID, repo_model.MergeStyleSquash, "squash merge a pr")
assert.NoError(t, err)
autoMerge := unittest.AssertExistsAndLoadBean(t, &pull_model.AutoMerge{PullID: pr.ID})
ctx, resp := contexttest.MockPrivateContext(t, "/")
handlePullRequestMerging(ctx, &private.HookOptions{
PullRequestID: pr.ID,
UserID: 2,
}, pr.BaseRepo.OwnerName, pr.BaseRepo.Name, []*repo_module.PushUpdateOptions{
{NewCommitID: "01234567"},
})
assert.Equal(t, 0, len(resp.Body.String()))
pr, err = issues_model.GetPullRequestByID(db.DefaultContext, pr.ID)
assert.NoError(t, err)
assert.True(t, pr.HasMerged)
assert.EqualValues(t, "01234567", pr.MergedCommitID)
unittest.AssertNotExistsBean(t, &pull_model.AutoMerge{ID: autoMerge.ID})
}

View file

@ -71,9 +71,9 @@ func RenderRepoSearch(ctx *context.Context, opts *RepoSearchOptions) {
case "leastupdate":
orderBy = db.SearchOrderByLeastUpdated
case "reversealphabetically":
orderBy = db.SearchOrderByAlphabeticallyReverse
orderBy = "owner_name DESC, name DESC"
case "alphabetically":
orderBy = db.SearchOrderByAlphabetically
orderBy = "owner_name ASC, name ASC"
case "reversesize":
orderBy = db.SearchOrderBySizeReverse
case "size":

View file

@ -16,6 +16,7 @@ import (
// ShowRepoFeed shows user activity on the repo as RSS / Atom feed
func ShowRepoFeed(ctx *context.Context, repo *repo_model.Repository, formatType string) {
actions, _, err := activities_model.GetFeeds(ctx, activities_model.GetFeedsOptions{
OnlyPerformedByActor: true,
RequestedRepo: repo,
Actor: ctx.Doer,
IncludePrivate: true,

View file

@ -7,7 +7,6 @@ import (
"errors"
"fmt"
"net/http"
"strconv"
"strings"
"code.gitea.io/gitea/models/db"
@ -390,74 +389,6 @@ func ViewProject(ctx *context.Context) {
ctx.HTML(http.StatusOK, tplProjectsView)
}
func getActionIssues(ctx *context.Context) issues_model.IssueList {
commaSeparatedIssueIDs := ctx.FormString("issue_ids")
if len(commaSeparatedIssueIDs) == 0 {
return nil
}
issueIDs := make([]int64, 0, 10)
for _, stringIssueID := range strings.Split(commaSeparatedIssueIDs, ",") {
issueID, err := strconv.ParseInt(stringIssueID, 10, 64)
if err != nil {
ctx.ServerError("ParseInt", err)
return nil
}
issueIDs = append(issueIDs, issueID)
}
issues, err := issues_model.GetIssuesByIDs(ctx, issueIDs)
if err != nil {
ctx.ServerError("GetIssuesByIDs", err)
return nil
}
// Check access rights for all issues
issueUnitEnabled := ctx.Repo.CanRead(unit.TypeIssues)
prUnitEnabled := ctx.Repo.CanRead(unit.TypePullRequests)
for _, issue := range issues {
if issue.RepoID != ctx.Repo.Repository.ID {
ctx.NotFound("some issue's RepoID is incorrect", errors.New("some issue's RepoID is incorrect"))
return nil
}
if issue.IsPull && !prUnitEnabled || !issue.IsPull && !issueUnitEnabled {
ctx.NotFound("IssueOrPullRequestUnitNotAllowed", nil)
return nil
}
if err = issue.LoadAttributes(ctx); err != nil {
ctx.ServerError("LoadAttributes", err)
return nil
}
}
return issues
}
// UpdateIssueProject change an issue's project
func UpdateIssueProject(ctx *context.Context) {
issues := getActionIssues(ctx)
if ctx.Written() {
return
}
if err := issues.LoadProjects(ctx); err != nil {
ctx.ServerError("LoadProjects", err)
return
}
projectID := ctx.FormInt64("id")
for _, issue := range issues {
if issue.Project != nil {
if issue.Project.ID == projectID {
continue
}
}
if err := issues_model.ChangeProjectAssign(ctx, issue, ctx.Doer, projectID); err != nil {
ctx.ServerError("ChangeProjectAssign", err)
return
}
}
ctx.JSONOK()
}
// DeleteProjectBoard allows for the deletion of a project board
func DeleteProjectBoard(ctx *context.Context) {
if ctx.Doer == nil {

View file

@ -45,10 +45,9 @@ func errorBadge(ctx *context_module.Context, label, text string) {
func GetWorkflowBadge(ctx *context_module.Context) {
branch := ctx.Req.URL.Query().Get("branch")
if branch == "" {
branch = ctx.Repo.Repository.DefaultBranch
}
if branch != "" {
branch = fmt.Sprintf("refs/heads/%s", branch)
}
event := ctx.Req.URL.Query().Get("event")
workflowFile := ctx.Params("workflow_name")

View file

@ -1267,8 +1267,8 @@ func NewIssuePost(ctx *context.Context) {
ctx.Error(http.StatusBadRequest, "user hasn't permissions to read projects")
return
}
if err := issues_model.ChangeProjectAssign(ctx, issue, ctx.Doer, projectID); err != nil {
ctx.ServerError("ChangeProjectAssign", err)
if err := issues_model.IssueAssignOrRemoveProject(ctx, issue, ctx.Doer, projectID, 0); err != nil {
ctx.ServerError("IssueAssignOrRemoveProject", err)
return
}
}

View file

@ -21,6 +21,7 @@ import (
"code.gitea.io/gitea/modules/markup/markdown"
"code.gitea.io/gitea/modules/optional"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/util"
"code.gitea.io/gitea/modules/web"
"code.gitea.io/gitea/services/context"
"code.gitea.io/gitea/services/forms"
@ -382,17 +383,21 @@ func UpdateIssueProject(ctx *context.Context) {
ctx.ServerError("LoadProjects", err)
return
}
if _, err := issues.LoadRepositories(ctx); err != nil {
ctx.ServerError("LoadProjects", err)
return
}
projectID := ctx.FormInt64("id")
for _, issue := range issues {
if issue.Project != nil {
if issue.Project.ID == projectID {
if issue.Project != nil && issue.Project.ID == projectID {
continue
}
if err := issues_model.IssueAssignOrRemoveProject(ctx, issue, ctx.Doer, projectID, 0); err != nil {
if errors.Is(err, util.ErrPermissionDenied) {
continue
}
if err := issues_model.ChangeProjectAssign(ctx, issue, ctx.Doer, projectID); err != nil {
ctx.ServerError("ChangeProjectAssign", err)
ctx.ServerError("IssueAssignOrRemoveProject", err)
return
}
}

View file

@ -1541,14 +1541,12 @@ func CompareAndPullRequestPost(ctx *context.Context) {
return
}
if projectID > 0 {
if !ctx.Repo.CanWrite(unit.TypeProjects) {
ctx.Error(http.StatusBadRequest, "user hasn't the permission to write to projects")
if projectID > 0 && ctx.Repo.CanWrite(unit.TypeProjects) {
if err := issues_model.IssueAssignOrRemoveProject(ctx, pullIssue, ctx.Doer, projectID, 0); err != nil {
if !errors.Is(err, util.ErrPermissionDenied) {
ctx.ServerError("IssueAssignOrRemoveProject", err)
return
}
if err := issues_model.ChangeProjectAssign(ctx, pullIssue, ctx.Doer, projectID); err != nil {
ctx.ServerError("ChangeProjectAssign", err)
return
}
}

View file

@ -798,6 +798,7 @@ func SettingsPost(ctx *context.Context) {
ctx.Repo.GitRepo = nil
}
oldFullname := repo.FullName()
if err := repo_service.StartRepositoryTransfer(ctx, ctx.Doer, newOwner, repo, nil); err != nil {
if errors.Is(err, user_model.ErrBlockedByUser) {
ctx.RenderWithErr(ctx.Tr("repo.settings.new_owner_blocked_doer"), tplSettingsOptions, nil)
@ -812,8 +813,13 @@ func SettingsPost(ctx *context.Context) {
return
}
if ctx.Repo.Repository.Status == repo_model.RepositoryPendingTransfer {
log.Trace("Repository transfer process was started: %s/%s -> %s", ctx.Repo.Owner.Name, repo.Name, newOwner)
ctx.Flash.Success(ctx.Tr("repo.settings.transfer_started", newOwner.DisplayName()))
} else {
log.Trace("Repository transferred: %s -> %s", oldFullname, ctx.Repo.Repository.FullName())
ctx.Flash.Success(ctx.Tr("repo.settings.transfer_succeed"))
}
ctx.Redirect(repo.Link() + "/settings")
case "cancel_transfer":

View file

@ -0,0 +1,48 @@
// Copyright 2024 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package project
import (
project_model "code.gitea.io/gitea/models/project"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/services/context"
)
// MoveColumns moves or keeps columns in a project and sorts them inside that project
func MoveColumns(ctx *context.Context) {
project, err := project_model.GetProjectByID(ctx, ctx.ParamsInt64(":id"))
if err != nil {
ctx.NotFoundOrServerError("GetProjectByID", project_model.IsErrProjectNotExist, err)
return
}
if !project.CanBeAccessedByOwnerRepo(ctx.ContextUser.ID, ctx.Repo.Repository) {
ctx.NotFound("CanBeAccessedByOwnerRepo", nil)
return
}
type movedColumnsForm struct {
Columns []struct {
ColumnID int64 `json:"columnID"`
Sorting int64 `json:"sorting"`
} `json:"columns"`
}
form := &movedColumnsForm{}
if err = json.NewDecoder(ctx.Req.Body).Decode(&form); err != nil {
ctx.ServerError("DecodeMovedColumnsForm", err)
return
}
sortedColumnIDs := make(map[int64]int64)
for _, column := range form.Columns {
sortedColumnIDs[column.Sorting] = column.ColumnID
}
if err = project_model.MoveColumnsOnProject(ctx, project, sortedColumnIDs); err != nil {
ctx.ServerError("MoveColumnsOnProject", err)
return
}
ctx.JSONOK()
}

View file

@ -39,6 +39,7 @@ import (
"code.gitea.io/gitea/routers/web/repo/badges"
repo_flags "code.gitea.io/gitea/routers/web/repo/flags"
repo_setting "code.gitea.io/gitea/routers/web/repo/setting"
"code.gitea.io/gitea/routers/web/shared/project"
"code.gitea.io/gitea/routers/web/user"
user_setting "code.gitea.io/gitea/routers/web/user/setting"
"code.gitea.io/gitea/routers/web/user/setting/security"
@ -97,14 +98,14 @@ func optionsCorsHandler() func(next http.Handler) http.Handler {
// The Session plugin is expected to be executed second, in order to skip authentication
// for users that have already signed in.
func buildAuthGroup() *auth_service.Group {
group := auth_service.NewGroup(
&auth_service.OAuth2{}, // FIXME: this should be removed and only applied in download and oauth related routers
&auth_service.Basic{}, // FIXME: this should be removed and only applied in download and git/lfs routers
&auth_service.Session{},
)
group := auth_service.NewGroup()
group.Add(&auth_service.OAuth2{}) // FIXME: this should be removed and only applied in download and oauth related routers
group.Add(&auth_service.Basic{}) // FIXME: this should be removed and only applied in download and git/lfs routers
if setting.Service.EnableReverseProxyAuth {
group.Add(&auth_service.ReverseProxy{})
group.Add(&auth_service.ReverseProxy{}) // reverseproxy should before Session, otherwise the header will be ignored if user has login
}
group.Add(&auth_service.Session{})
if setting.IsWindows && auth_model.IsSSPIEnabled(db.DefaultContext) {
group.Add(&auth_service.SSPI{}) // it MUST be the last, see the comment of SSPI
@ -976,6 +977,7 @@ func registerRoutes(m *web.Route) {
m.Post("/new", web.Bind(forms.CreateProjectForm{}), org.NewProjectPost)
m.Group("/{id}", func() {
m.Post("", web.Bind(forms.EditProjectBoardForm{}), org.AddBoardToProjectPost)
m.Post("/move", project.MoveColumns)
m.Post("/delete", org.DeleteProject)
m.Get("/edit", org.RenderEditProject)
@ -1349,6 +1351,7 @@ func registerRoutes(m *web.Route) {
m.Post("/new", web.Bind(forms.CreateProjectForm{}), repo.NewProjectPost)
m.Group("/{id}", func() {
m.Post("", web.Bind(forms.EditProjectBoardForm{}), repo.AddBoardToProjectPost)
m.Post("/move", project.MoveColumns)
m.Post("/delete", repo.DeleteProject)
m.Get("/edit", repo.RenderEditProject)

View file

@ -515,8 +515,7 @@ func (*actionsNotifier) MergePullRequest(ctx context.Context, doer *user_model.U
}
func (n *actionsNotifier) PushCommits(ctx context.Context, pusher *user_model.User, repo *repo_model.Repository, opts *repository.PushUpdateOptions, commits *repository.PushCommits) {
commitID, _ := git.NewIDFromString(opts.NewCommitID)
if commitID.IsZero() {
if git.IsEmptyCommitID(opts.NewCommitID, nil) {
log.Trace("new commitID is empty")
return
}

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