From adba2ad609ca3f1612463a4ac6af22fd30b9e75f Mon Sep 17 00:00:00 2001 From: David Schneiderbauer Date: Fri, 15 Jun 2018 05:42:46 +0200 Subject: [PATCH 01/12] fix not respecting landing page setting (#4209) * fix not respecting landing page setting * fmt * add landing page test --- integrations/setting_test.go | 22 ++++++++++++++++++++++ modules/context/auth.go | 6 ------ routers/home.go | 4 ++++ 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/integrations/setting_test.go b/integrations/setting_test.go index a8d1f01e8..2aac8e90e 100644 --- a/integrations/setting_test.go +++ b/integrations/setting_test.go @@ -68,3 +68,25 @@ func TestSettingShowUserEmailProfile(t *testing.T) { setting.UI.ShowUserEmail = showUserEmail } + +func TestSettingLandingPage(t *testing.T) { + prepareTestEnv(t) + + landingPage := setting.LandingPageURL + + setting.LandingPageURL = setting.LandingPageHome + req := NewRequest(t, "GET", "/") + MakeRequest(t, req, http.StatusOK) + + setting.LandingPageURL = setting.LandingPageExplore + req = NewRequest(t, "GET", "/") + resp := MakeRequest(t, req, http.StatusFound) + assert.Equal(t, "/explore", resp.Header().Get("Location")) + + setting.LandingPageURL = setting.LandingPageOrganizations + req = NewRequest(t, "GET", "/") + resp = MakeRequest(t, req, http.StatusFound) + assert.Equal(t, "/explore/organizations", resp.Header().Get("Location")) + + setting.LandingPageURL = landingPage +} diff --git a/modules/context/auth.go b/modules/context/auth.go index 372bcb187..c38cc3948 100644 --- a/modules/context/auth.go +++ b/modules/context/auth.go @@ -37,12 +37,6 @@ func Toggle(options *ToggleOptions) macaron.Handler { return } - // Check non-logged users landing page. - if !ctx.IsSigned && ctx.Req.RequestURI == "/" && setting.LandingPageURL != setting.LandingPageHome { - ctx.Redirect(setting.AppSubURL + string(setting.LandingPageURL)) - return - } - // Redirect to dashboard if user tries to visit any non-login page. if options.SignOutRequired && ctx.IsSigned && ctx.Req.RequestURI != "/" { ctx.Redirect(setting.AppSubURL + "/") diff --git a/routers/home.go b/routers/home.go index 5bb353c7e..0aa907658 100644 --- a/routers/home.go +++ b/routers/home.go @@ -42,6 +42,10 @@ func Home(ctx *context.Context) { user.Dashboard(ctx) } return + // Check non-logged users landing page. + } else if setting.LandingPageURL != setting.LandingPageHome { + ctx.Redirect(setting.AppSubURL + string(setting.LandingPageURL)) + return } // Check auto-login. From a75f2511951120c9ba1f954cfe48e4ce73687c72 Mon Sep 17 00:00:00 2001 From: GiteaBot Date: Fri, 15 Jun 2018 03:43:54 +0000 Subject: [PATCH 02/12] [skip ci] Updated translations via Crowdin --- options/locale/locale_de-DE.ini | 1 + options/locale/locale_uk-UA.ini | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/options/locale/locale_de-DE.ini b/options/locale/locale_de-DE.ini index 4e56b3028..364308424 100644 --- a/options/locale/locale_de-DE.ini +++ b/options/locale/locale_de-DE.ini @@ -213,6 +213,7 @@ send_reset_mail=E-Mail zum Passwort-zurücksetzen erneut verschicken reset_password=Passwort zurücksetzen invalid_code=Dein Bestätigungs-Code ist ungültig oder abgelaufen. reset_password_helper=Passwort zurückzusetzen +password_too_short=Das Passwort muss mindestens %d Zeichen lang sein. non_local_account=Benutzer, die nicht von Gitea verwaltet werden können ihre Passwörter nicht über das Web Interface ändern. verify=Verifizieren scratch_code=Einmalpasswort diff --git a/options/locale/locale_uk-UA.ini b/options/locale/locale_uk-UA.ini index 3bc79cdd5..d59851e6a 100644 --- a/options/locale/locale_uk-UA.ini +++ b/options/locale/locale_uk-UA.ini @@ -38,6 +38,7 @@ u2f_use_twofa=Використовуйте дво-факторний код з u2f_error=Неможливо прочитати ваш ключ безпеки! u2f_unsupported_browser=Ваш браузер не підтримує U2F ключі. Будь ласка, спробуйте інший браузер. u2f_error_1=Сталася невідома помилка. Спробуйте ще раз. +u2f_error_2=Переконайтеся, що ви використовуєте зашифроване з'єднання (https://) та відвідуєте правильну URL-адресу. u2f_error_3=Сервер не може обробити, ваш запит. u2f_reload=Оновити @@ -398,7 +399,12 @@ generate_token=Згенерувати токен delete_token=Видалити access_token_deletion=Видалити токен доступу +twofa_desc=Двофакторна аутентифікація підвищує безпеку вашого облікового запису. +twofa_is_enrolled=Ваш обліковий запис в даний час використовує двофакторну автентифікацію. twofa_disable=Вимкнути двофакторну автентифікацію +twofa_enroll=Увімкнути двофакторну автентифікацію +twofa_disabled=Двофакторна автентифікація вимкнена. +scan_this_image=Проскануйте це зображення вашим додатком для двуфакторної аутентифікації: or_enter_secret=Або введіть секрет: %s passcode_invalid=Некоректний пароль. Спробуй ще раз. From a7aaacb633a1f391eab6e8f2aa4f57b83d41c66c Mon Sep 17 00:00:00 2001 From: stevegt Date: Fri, 15 Jun 2018 00:47:13 -0700 Subject: [PATCH 03/12] fix CreateIssueCommentOption reference (#4239) * fixes a warning remaining from #4010 and #4220 --- public/swagger.v1.json | 2 +- routers/api/v1/repo/issue_comment.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/public/swagger.v1.json b/public/swagger.v1.json index e0f2a7589..9fd790281 100644 --- a/public/swagger.v1.json +++ b/public/swagger.v1.json @@ -2208,7 +2208,7 @@ "name": "body", "in": "body", "schema": { - "$ref": "#/definitions/CreateIssueOption" + "$ref": "#/definitions/CreateIssueCommentOption" } } ], diff --git a/routers/api/v1/repo/issue_comment.go b/routers/api/v1/repo/issue_comment.go index 0cbf6493d..af952a070 100644 --- a/routers/api/v1/repo/issue_comment.go +++ b/routers/api/v1/repo/issue_comment.go @@ -147,7 +147,7 @@ func CreateIssueComment(ctx *context.APIContext, form api.CreateIssueCommentOpti // - name: body // in: body // schema: - // "$ref": "#/definitions/CreateIssueOption" + // "$ref": "#/definitions/CreateIssueCommentOption" // responses: // "201": // "$ref": "#/responses/Comment" From c919b07a53e837a3aa7a82f8b1530e3b7ee1773d Mon Sep 17 00:00:00 2001 From: GiteaBot Date: Fri, 15 Jun 2018 07:48:26 +0000 Subject: [PATCH 04/12] [skip ci] Updated translations via Crowdin --- options/locale/locale_uk-UA.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/options/locale/locale_uk-UA.ini b/options/locale/locale_uk-UA.ini index d59851e6a..511e6671f 100644 --- a/options/locale/locale_uk-UA.ini +++ b/options/locale/locale_uk-UA.ini @@ -400,7 +400,7 @@ delete_token=Видалити access_token_deletion=Видалити токен доступу twofa_desc=Двофакторна аутентифікація підвищує безпеку вашого облікового запису. -twofa_is_enrolled=Ваш обліковий запис в даний час використовує двофакторну автентифікацію. +twofa_is_enrolled=Ваш обліковий запис на даний час використовує двофакторну автентифікацію. twofa_disable=Вимкнути двофакторну автентифікацію twofa_enroll=Увімкнути двофакторну автентифікацію twofa_disabled=Двофакторна автентифікація вимкнена. From 23ba5c870fc27b59202c4bd90c5d5b38fb018565 Mon Sep 17 00:00:00 2001 From: Antoine GIRARD Date: Fri, 15 Jun 2018 14:42:49 +0200 Subject: [PATCH 05/12] markup: escape short wiki link (#4091) --- modules/markup/html.go | 3 +++ modules/markup/html_test.go | 26 ++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/modules/markup/html.go b/modules/markup/html.go index 4f9d02a8f..a4ef86de2 100644 --- a/modules/markup/html.go +++ b/modules/markup/html.go @@ -469,6 +469,9 @@ func shortLinkProcessorFull(ctx *postProcessCtx, node *html.Node, noLink bool) { } else { link = strings.Replace(link, " ", "-", -1) } + if !strings.Contains(link, "/") { + link = url.PathEscape(link) + } } urlPrefix := ctx.urlPrefix if image { diff --git a/modules/markup/html_test.go b/modules/markup/html_test.go index fc11532d1..bf7606e1d 100644 --- a/modules/markup/html_test.go +++ b/modules/markup/html_test.go @@ -82,12 +82,18 @@ func TestRender_ShortLinks(t *testing.T) { rawtree := util.URLJoin(AppSubURL, "raw", "master") url := util.URLJoin(tree, "Link") otherURL := util.URLJoin(tree, "Other-Link") + encodedURL := util.URLJoin(tree, "Link%3F") imgurl := util.URLJoin(rawtree, "Link.jpg") otherImgurl := util.URLJoin(rawtree, "Link+Other.jpg") + encodedImgurl := util.URLJoin(rawtree, "Link+%23.jpg") + notencodedImgurl := util.URLJoin(rawtree, "some", "path", "Link+#.jpg") urlWiki := util.URLJoin(AppSubURL, "wiki", "Link") otherURLWiki := util.URLJoin(AppSubURL, "wiki", "Other-Link") + encodedURLWiki := util.URLJoin(AppSubURL, "wiki", "Link%3F") imgurlWiki := util.URLJoin(AppSubURL, "wiki", "raw", "Link.jpg") otherImgurlWiki := util.URLJoin(AppSubURL, "wiki", "raw", "Link+Other.jpg") + encodedImgurlWiki := util.URLJoin(AppSubURL, "wiki", "raw", "Link+%23.jpg") + notencodedImgurlWiki := util.URLJoin(AppSubURL, "wiki", "raw", "some", "path", "Link+#.jpg") favicon := "http://google.com/favicon.ico" test( @@ -134,4 +140,24 @@ func TestRender_ShortLinks(t *testing.T) { "[[Link]] [[Other Link]]", `

Link Other Link

`, `

Link Other Link

`) + test( + "[[Link?]]", + `

Link?

`, + `

Link?

`) + test( + "[[Link]] [[Other Link]] [[Link?]]", + `

Link Other Link Link?

`, + `

Link Other Link Link?

`) + test( + "[[Link #.jpg]]", + `

`, + `

`) + test( + "[[Name|Link #.jpg|alt=\"AltName\"|title='Title']]", + `

AltName

`, + `

AltName

`) + test( + "[[some/path/Link #.jpg]]", + `

`, + `

`) } From 3aafa0400ea3e003baed1e8c8bd1f986730d0253 Mon Sep 17 00:00:00 2001 From: GiteaBot Date: Fri, 15 Jun 2018 12:43:56 +0000 Subject: [PATCH 06/12] [skip ci] Updated translations via Crowdin --- options/locale/locale_uk-UA.ini | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/options/locale/locale_uk-UA.ini b/options/locale/locale_uk-UA.ini index 511e6671f..f49b98280 100644 --- a/options/locale/locale_uk-UA.ini +++ b/options/locale/locale_uk-UA.ini @@ -68,7 +68,7 @@ activities=Дії pull_requests=Запити на злиття issues=Проблеми -cancel=Відміна +cancel=Відмінити [install] install=Встановлення @@ -318,7 +318,7 @@ update_profile=Оновити профіль update_profile_success=Профіль успішно оновлено. change_username=Ваше Ім'я кристувача було змінено. continue=Продовжити -cancel=Відміна +cancel=Відмінити language=Мова lookup_avatar_by_mail=Знайти Аватар за адресою електронної пошти @@ -532,7 +532,7 @@ editor.commit_message_desc=Додати необов'язковий розшир editor.commit_directly_to_this_branch=Зробіть коміт прямо в гілку %s. editor.create_new_branch=Створити нову гілку для цього коміту та відкрити запит на злиття. editor.new_branch_name_desc=Ім'я нової гілки… -editor.cancel=Відміна +editor.cancel=Відмінити editor.filename_cannot_be_empty=Ім'я файлу не може бути порожнім. editor.branch_already_exists=Гілка '%s' вже присутня в репозиторії. editor.directory_is_a_file=Ім'я каталогу "%s" уже використовується як ім'я файлу в цьому репозиторії. @@ -634,7 +634,7 @@ issues.collaborator=Співавтор issues.owner=Власник issues.sign_in_require_desc=Підпишіться щоб приєднатися до обговорення. issues.edit=Редагувати -issues.cancel=Відміна +issues.cancel=Відмінити issues.save=Зберегти issues.label_title=Назва мітки issues.label_description=Опис мітки @@ -663,11 +663,11 @@ issues.tracking_already_started=`Ви вже почали відстежуват issues.stop_tracking=Стоп issues.add_time=Вручну додати час issues.add_time_short=Додати час -issues.add_time_cancel=Відміна +issues.add_time_cancel=Відмінити issues.add_time_hours=Години issues.add_time_minutes=Хвилини issues.add_time_sum_to_small=Час не введено. -issues.cancel_tracking=Відміна +issues.cancel_tracking=Відмінити issues.cancel_tracking_history=`скасував відстеження часу %s` issues.time_spent_total=Загальний витрачений час issues.time_spent_from_all_authors=`Загальний витрачений час: %s` @@ -718,7 +718,7 @@ milestones.desc=Опис milestones.due_date=Дата завершення (опціонально) milestones.clear=Очистити milestones.edit=Редагувати етап -milestones.cancel=Відміна +milestones.cancel=Відмінити milestones.modify=Оновити етап milestones.deletion=Видалити етап milestones.filter_sort.most_issues=Найбільш проблем @@ -939,7 +939,7 @@ release.preview=Переглянути release.loading=Завантаження… release.prerelease_desc=Позначити як пре-реліз release.prerelease_helper=Позначте цей випуск непридатним для ПРОД використання. -release.cancel=Відміна +release.cancel=Відмінити release.publish=Опублікувати реліз release.save_draft=Зберегти чернетку release.edit_release=Оновити реліз From 85414d8b754639cae1a9c361bbdc0714f06b87c1 Mon Sep 17 00:00:00 2001 From: Jonas Franz Date: Fri, 15 Jun 2018 16:07:48 +0200 Subject: [PATCH 07/12] Show second line by using >= 1 instead of > 1 (#4251) Signed-off-by: Jonas Franz --- modules/templates/helper.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/templates/helper.go b/modules/templates/helper.go index bf5c0130b..b6c835ad4 100644 --- a/modules/templates/helper.go +++ b/modules/templates/helper.go @@ -323,7 +323,7 @@ func RenderCommitBody(msg, urlPrefix string, metas map[string]string) template.H // IsMultilineCommitMessage checks to see if a commit message contains multiple lines. func IsMultilineCommitMessage(msg string) bool { - return strings.Count(strings.TrimSpace(msg), "\n") > 1 + return strings.Count(strings.TrimSpace(msg), "\n") >= 1 } // Actioner describes an action From 90ad73ae21b40de98bf1986e550c3d965033dc21 Mon Sep 17 00:00:00 2001 From: kolaente Date: Mon, 18 Jun 2018 19:16:53 +0200 Subject: [PATCH 08/12] Reorganized feature comparison (#4264) --- docs/content/doc/features/comparison.en-us.md | 746 +++--------------- 1 file changed, 90 insertions(+), 656 deletions(-) diff --git a/docs/content/doc/features/comparison.en-us.md b/docs/content/doc/features/comparison.en-us.md index 981365c71..698de4f46 100644 --- a/docs/content/doc/features/comparison.en-us.md +++ b/docs/content/doc/features/comparison.en-us.md @@ -27,659 +27,93 @@ _Symbols used in table:_ * _✘ - unsupported_ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FeatureGiteaGogsGitHub EEGitLab CEGitLab EEBitBucketRhodeCode CE
Open source and free
Issue tracker
Pull/Merge requests
Squash merging
Rebase merging
Pull/Merge request inline comments
Pull/Merge request approval
Merge conflict resolution
Restrict push and merge access to certain users
Markdown support
Issues and pull/merge requests templates
Revert specific commits or a merge request
Labels
Time tracking
Multiple assignees for issues
Related issues
Confidential issues
Comment reactions
Lock Discussion
Batch issue handling
Issue Boards
Create new branches from issues
Commit graph
Web code editor
Branch manager
Create new branches
Repository topics
Repository code search
Global code search
Issue search
Global issue search
Git LFS 2.0
Integrated Git-powered wiki
Static Git-powered pages
Group Milestones
Granular user roles (Code, Issues, Wiki etc)
Cherry-picking changes
GPG Signed Commits
Reject unsigned commits
Verified Committer?
Subgroups: groups within groups
Custom Git Hooks
Repository Activity page
Deploy Tokens
Repository Tokens with write rights
Easy upgrade process
Built-in Container Registry
External git mirroring
AD / LDAP integration
Multiple LDAP / AD server support
LDAP user synchronization
OpenId Connect support?
OAuth 2.0 integration (external authorization)?
Act as OAuth 2.0 provider
Two factor authentication (2FA)
FIDO U2F (2FA)
Webhook support
Mattermost/Slack integration
Discord integration
Built-in CI/CD
External CI/CD status display
Multiple database support
Multiple OS support
Low resource usage (RAM/CPU)
+#### General Features + +| Feature | Gitea | Gogs | GitHub EE | GitLab CE | GitLab EE | BitBucket | RhodeCode CE | +|---------|-------|------|-----------|-----------|-----------|-----------|--------------| +| Open source and free | ✓ | ✓ | ✘| ✓ | ✘ | ✘ | ✓ | +| Low resource usage (RAM/CPU) | ✓ | ✓ | ✘ | ✘ | ✘ | ✘ | ✘ | +| Multiple database support | ✓ | ✓ | ✘ | ⁄ | ⁄ | ✓ | ✓ | +| Multiple OS support | ✓ | ✓ | ✘ | ✘ | ✘ | ✘ | ✓ | +| Easy upgrade process | ✓ | ✓ | ✘ | ✓ | ✓ | ✘ | ✓ | +| Markdown support | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| Static Git-powered pages | ✘ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ | +| Integrated Git-powered wiki | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✘ | +| Deploy Tokens | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| Repository Tokens with write rights | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✓ | +| Built-in Container Registry | ✘ | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ | +| External git mirroring | ✓ | ✓ | ✘ | ✘ | ✓ | ✓ | ✓ | +| FIDO U2F (2FA) | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ | +| Built-in CI/CD | ✘ | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ | +| Subgroups: groups within groups | ✘ | ✘ | ✘ | ✓ | ✓ | ✘ | ✓ | + +#### Code management + +| Feature | Gitea | Gogs | GitHub EE | GitLab CE | GitLab EE | BitBucket | RhodeCode CE | +|---------|-------|------|-----------|-----------|-----------|-----------|--------------| +| Repository topics | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ | +| Repository code search | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ | +| Global code search | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ | +| Git LFS 2.0 | ✓ | ✘ | ✓ | ✓ | ✓ | ⁄ | ✓ | +| Group Milestones | ✘ | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ | +| Granular user roles (Code, Issues, Wiki etc) | ✓ | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ | +| Verified Committer | ✘ | ✘ | ? | ✓ | ✓ | ✓ | ✘ | +| GPG Signed Commits | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ | +| Reject unsigned commits | ✘ | ✘ | ✓ | ✓ | ✓ | ✘ | ✓ | +| Repository Activity page | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ | +| Branch manager | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ | +| Create new branches | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ | +| Web code editor | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| Commit graph | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ | + +#### Issue Tracker + +| Feature | Gitea | Gogs | GitHub EE | GitLab CE | GitLab EE | BitBucket | RhodeCode CE | +|---------|-------|------|-----------|-----------|-----------|-----------|--------------| +| Issue tracker | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✘ | +| Issue templates | ✓ | ✓ | ✓ | ✓ | ✓ | ✘ | ✘ | +| Labels | ✓ | ✓ | ✓ | ✓ | ✓ | ✘ | ✘ | +| Time tracking | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ | +| Multiple assignees for issues | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ | +| Related issues | ✘ | ✘ | ⁄ | ✘ | ✓ | ✘ | ✘ | +| Confidential issues | ✘ | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ | +| Comment reactions | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ | +| Lock Discussion | ✘ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ | +| Batch issue handling | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ | +| Issue Boards | ✘ | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ | +| Create new branches from issues | ✘ | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ | +| Issue search | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ | +| Global issue search | ✘ | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ | + +#### Pull/Merge requests + +| Feature | Gitea | Gogs | GitHub EE | GitLab CE | GitLab EE | BitBucket | RhodeCode CE | +|---------|-------|------|-----------|-----------|-----------|-----------|--------------| +| Pull/Merge requests | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| Squash merging | ✓ | ✘ | ✓ | ✘ | ✓ | ✓ | ✓ | +| Rebase merging | ✓ | ✓ | ✓ | ✘ | ⁄ | ✘ | ✓ | +| Pull/Merge request inline comments | ✘ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ | +| Pull/Merge request approval | ✘ | ✘ | ⁄ | ✓ | ✓ | ✓ | ✓ | +| Merge conflict resolution | ✘ | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ | +| Restrict push and merge access to certain users | ✓ | ✘ | ✓ | ⁄ | ✓ | ✓ | ✓ | +| Revert specific commits or a merge request | ✘ | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ | +| Pull/Merge requests templates | ✓ | ✓ | ✓ | ✓ | ✓ | ✘ | ✘ | +| Cherry-picking changes | ✘ | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ | + + +#### 3rd-party integrations + +| Feature | Gitea | Gogs | GitHub EE | GitLab CE | GitLab EE | BitBucket | RhodeCode CE | +|---------|-------|------|-----------|-----------|-----------|-----------|--------------| +| Webhook support | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| Custom Git Hooks | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| AD / LDAP integration | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| Multiple LDAP / AD server support | ✓ | ✓ | ✘ | ✘ | ✓ | ✓ | ✓ | +| LDAP user synchronization | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ | +| OpenId Connect support | ✓ | ✘ | ✓ | ✓ | ✓ | ? | ✘ | +| OAuth 2.0 integration (external authorization) | ✓ | ✘ | ⁄ | ✓ | ✓ | ? | ✓ | +| Act as OAuth 2.0 provider | ✘ | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ | +| Two factor authentication (2FA) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✘ | +| Mattermost/Slack integration | ✓ | ✓ | ⁄ | ✓ | ✓ | ⁄ | ✓ | +| Discord integration | ✓ | ✓ | ✓ | ✘ | ✘ | ✘ | ✘ | +| External CI/CD status display | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ | From 6e39f3d422155293a06df6430766a40ebc56277c Mon Sep 17 00:00:00 2001 From: GiteaBot Date: Mon, 18 Jun 2018 17:18:22 +0000 Subject: [PATCH 09/12] [skip ci] Updated translations via Crowdin --- options/locale/locale_de-DE.ini | 310 ++++++++++++++++---------------- options/locale/locale_uk-UA.ini | 10 +- 2 files changed, 162 insertions(+), 158 deletions(-) diff --git a/options/locale/locale_de-DE.ini b/options/locale/locale_de-DE.ini index 364308424..d618d2c9a 100644 --- a/options/locale/locale_de-DE.ini +++ b/options/locale/locale_de-DE.ini @@ -83,12 +83,12 @@ host=Host user=Benutzername password=Passwort db_name=Datenbankname -db_helper=Hinweis für MySQL-Benutzer: Bitte verwende das InnoDB Speichersubsystem und den Zeichensatz "utf8_general_ci". +db_helper=Hinweis für MySQL-Benutzer: Bitte verwende das InnoDB-Speichersubsystem und den Zeichensatz „utf8_general_ci“. ssl_mode=SSL path=Pfad sqlite_helper=Der Dateipfad zur SQLite3- oder TiDB-Datenbank.
Bitte verwende einen absoluten Pfad, wenn Gitea als Service gestartet wird. -err_empty_db_path=Der SQLite3 oder TiDB Datenbankpfad darf nicht leer sein. -err_invalid_tidb_name=Der TiDB Datenbankname darf nicht die Zeichen "." und "-" enthalten. +err_empty_db_path=Der SQLite3- oder TiDB-Datenbankpfad darf nicht leer sein. +err_invalid_tidb_name=Der TiDB-Datenbankname darf nicht die Zeichen „.“ und „-“ enthalten. no_admin_and_disable_registration=Du kannst Selbst-Registrierungen nicht deaktivieren, ohne ein Administratorkonto zu erstellen. err_empty_admin_password=Das Administrator-Passwort darf nicht leer sein. @@ -101,13 +101,13 @@ lfs_path=Git LFS-Wurzelpfad lfs_path_helper=In diesem Verzeichnis werden die Dateien von Git LFS abgespeichert. Leer lassen um LFS zu deaktivieren. run_user=Ausführen als run_user_helper=Gebe den Betriebssystem-Benutzernamen ein, unter welchem Gitea laufen soll. Beachte, dass dieser Nutzer Zugriff auf den Repository-Ordner haben muss. -domain=SSH Server-Domain +domain=SSH-Server-Domain domain_helper=Domain oder Host-Adresse für die SSH-URL. -ssh_port=SSH Server Port +ssh_port=SSH-Server-Port ssh_port_helper=Der Port deines SSH-Servers. Leer lassen um SSH zu deaktivieren. -http_port=Gitea HTTP-Listen-Port -http_port_helper=Port unter dem der Gitea Web Server laufen soll. -app_url=Gitea Basis-URL +http_port=Gitea-HTTP-Listen-Port +http_port_helper=Port, unter dem der Gitea-Webserver laufen soll. +app_url=Gitea-Basis-URL app_url_helper=Adresse für HTTP(S)-Klon-URLs und E-Mail-Benachrichtigungen. log_root_path=Logdateipfad log_root_path_helper=Log-Dateien werden in diesem Verzeichnis gespeichert. @@ -117,8 +117,8 @@ email_title=E-Mail-Einstellungen smtp_host=SMTP-Server smtp_from=E-Mail senden als smtp_from_helper=E-Mail-Adresse, die von Gitea genutzt werden soll. Bitte gib die E-Mail-Adresse im '"Name" '-Format ein. -mailer_user=SMTP Benutzername -mailer_password=SMTP Passwort +mailer_user=SMTP-Benutzername +mailer_password=SMTP-Passwort register_confirm=E-Mail-Bestätigung benötigt zum Registrieren mail_notify=E-Mail-Benachrichtigungen aktivieren server_service_title=Sonstige Server- und Drittserviceeinstellungen @@ -131,9 +131,9 @@ federated_avatar_lookup_popup=Föderierte Profilbilder via Libravatar aktivieren disable_registration=Registrierung deaktivieren disable_registration_popup=Registrierung neuer Benutzer deaktivieren. Nur Administratoren werden neue Benutzerkonten anlegen können. allow_only_external_registration_popup=Registrierung nur über externe Services aktiveren. -openid_signin=OpenID Anmeldung aktivieren +openid_signin=OpenID-Anmeldung aktivieren openid_signin_popup=Benutzeranmeldung via OpenID aktivieren. -openid_signup=OpenID Selbstregistrierung aktivieren +openid_signup=OpenID-Selbstregistrierung aktivieren openid_signup_popup=OpenID-basierte Selbstregistrierung aktivieren. enable_captcha=CAPTCHA aktivieren enable_captcha_popup=Captcha-Eingabe bei der Registrierung erforderlich. @@ -147,10 +147,10 @@ confirm_password=Passwort bestätigen admin_email=E-Mail-Adresse install_btn_confirm=Gitea installieren test_git_failed=Fehler beim Test des 'git' Kommandos: %v -sqlite3_not_available=Diese Gitea-Version unterstützt SQLite3 nicht. Bitte lade die offizielle binäre Version von %s herunter (nicht die 'gobuild'-Version). +sqlite3_not_available=Diese Gitea-Version unterstützt SQLite3 nicht. Bitte lade die offizielle binäre Version von %s herunter (nicht die „gobuild“-Version). invalid_db_setting=Datenbankeinstellungen sind ungültig: %v invalid_repo_path=Repository-Verzeichnis ist ungültig: %v -run_user_not_match=Der "Ausführen als" Benutzer ist nicht der aktuelle Benutzer: %s -> %s +run_user_not_match=Der „Ausführen als“-Benutzername ist nicht der aktuelle Benutzername: %s -> %s save_config_failed=Fehler beim Speichern der Konfiguration: %v invalid_admin_setting=Administrator-Konto Einstellungen sind ungültig: %v install_success=Willkommen! Danke, dass du Gitea gewählt hast. Viel Spaß! @@ -162,7 +162,7 @@ default_allow_create_organization_popup=Neuen Nutzern das Erstellen von Organisa default_enable_timetracking=Zeiterfassung standardmäßig aktivieren default_enable_timetracking_popup=Zeiterfassung standardmäßig für neue Repositories aktivieren. no_reply_address=Versteckte E-Mail-Domain -no_reply_address_helper=Domain-Namen für Benutzer mit einer versteckten Emailadresse. Zum Beispiel wird der Benutzername "Joe" in Git als "joe@noreply.example.org" protokolliert, wenn die versteckte E-Mail-Domäne "noreply.example.org" festgelegt ist. +no_reply_address_helper=Domain-Name für Benutzer mit einer versteckten Emailadresse. Zum Beispiel wird der Benutzername „Joe“ in Git als „joe@noreply.example.org“ protokolliert, wenn die versteckte E-Mail-Domain „noreply.example.org“ festgelegt ist. [home] uname_holder=E-Mail-Adresse oder Benutzername @@ -225,9 +225,9 @@ login_userpass=Anmelden login_openid=OpenID openid_connect_submit=Verbinden openid_connect_title=Mit bestehendem Konto verbinden -openid_connect_desc=Die gewählte OpenID URI ist unbekannt. Ordne sie hier einem neuen Account zu. +openid_connect_desc=Die gewählte OpenID-URI ist unbekannt. Ordne sie hier einem neuen Account zu. openid_register_title=Neues Konto einrichten -openid_register_desc=Die gewählte OpenID URI ist unbekannt. Ordne sie hier einem neuen Account zu. +openid_register_desc=Die gewählte OpenID-URI ist unbekannt. Ordne sie hier einem neuen Account zu. openid_signin_desc=Gib deine OpenID-URI ein. Zum Beispiel: https://anne.me, bob.openid.org.cn oder gnusocial.net/carry. disable_forgot_password_mail=Das Zurücksetzen von Passwörtern wurde deaktiviert. Bitte wende dich an den Administrator. @@ -264,8 +264,8 @@ TreeName=Dateipfad Content=Inhalt require_error=` darf nicht leer sein.` -alpha_dash_error=` sollte nur Buchstaben, Zahlen, Bindestriche ('-') und Unterstriche ('_') enthalten` -alpha_dash_dot_error=` sollte nur Buchstaben, Zahlen, Bindestriche ('-'), Unterstriche ('_') und Punkte ('.') enthalten` +alpha_dash_error=` sollte nur Buchstaben, Zahlen, Bindestriche („-“) und Unterstriche („_“) enthalten.` +alpha_dash_dot_error=` sollte nur Buchstaben, Zahlen, Bindestriche („-“), Unterstriche („_“) und Punkte („.“) enthalten.` git_ref_name_error=` muss ein wohlgeformter Git-Referenzname sein.` size_error=` muss die Größe %s haben.` min_size_error=` muss mindestens %s Zeichen enthalten.` @@ -283,13 +283,13 @@ org_name_been_taken=Der Organisationsname ist bereits vergeben. team_name_been_taken=Der Teamname ist bereits vergeben. team_no_units_error=Das Team muss auf mindestens einen Bereich Zugriff haben. email_been_used=Die E-Mail-Adresse wird bereits verwendet. -openid_been_used=Die OpenID-Adresse "%s" wird bereits verwendet. +openid_been_used=Die OpenID-Adresse „%s“ wird bereits verwendet. username_password_incorrect=Benutzername oder Passwort ist falsch. enterred_invalid_repo_name=Der eingegebenen Repository-Name ist falsch. -enterred_invalid_owner_name=Der Name des neuen Besitzers ist invalid. +enterred_invalid_owner_name=Der Name des neuen Besitzers ist ungültig. enterred_invalid_password=Das eingegebene Passwort ist falsch. user_not_exist=Dieser Benutzer ist nicht vorhanden. -last_org_owner=Du kannst den letzten Benutzer nicht aus dem "Besitzer"-Team entferenen. Es muss mindestens ein Besitzer in einer Organisation geben. +last_org_owner=Du kannst den letzten Benutzer nicht aus dem „Besitzer“-Team entfernen. Es muss mindestens einen Besitzer in einer Organisation geben. cannot_add_org_to_team=Eine Organisation kann nicht als Teammitglied hinzugefügt werden. invalid_ssh_key=Dein SSH-Key kann nicht überprüft werden: %s @@ -349,7 +349,7 @@ continue=Weiter cancel=Abbrechen language=Sprache -lookup_avatar_by_mail=Avatar anhand der E-Mail-Addresse suchen +lookup_avatar_by_mail=Profilbild anhand der E-Mail-Addresse suchen federated_avatar_lookup=Suche nach föderierten Profilbildern enable_custom_avatar=Benutzerdefiniertes Profilbild benutzen choose_new_avatar=Neues Profilbild auswählen @@ -364,7 +364,7 @@ new_password=Neues Passwort retype_new_password=Neues Passwort erneut eingeben password_incorrect=Das aktuelle Passwort ist falsch. change_password_success=Dein Passwort wurde aktualisiert. Bitte verwende dieses beim nächsten Einloggen. -password_change_disabled=Benutzer, die nicht von Gitea verwaltet werden, können ihr Passwort im Web Interface nicht ändern. +password_change_disabled=Benutzer, die nicht von Gitea verwaltet werden, können ihr Passwort im Web-Interface nicht ändern. emails=E-Mail-Adressen manage_emails=E-Mail-Adressen verwalten @@ -383,7 +383,7 @@ add_new_email=Neue E-Mail-Adresse hinzufügen add_new_openid=Neue OpenID-URI hinzufügen add_email=E-Mail-Adresse hinzufügen add_openid=OpenID-URI hinzufügen -add_email_confirmation_sent=Eine Bestätigungs-E-Mail wurde an '%s' gesendet. Bitte überprüfe dein Postfach innerhalb der nächsten %s, um die E-Mail-Adresse zu bestätigen. +add_email_confirmation_sent=Eine Bestätigungs-E-Mail wurde an „%s“ gesendet. Bitte überprüfe dein Postfach innerhalb der nächsten %s, um die E-Mail-Adresse zu bestätigen. add_email_success=Die neue E-Mail-Addresse wurde hinzugefügt. add_openid_success=Die neue OpenID-Adresse wurde hinzugefügt. keep_email_private=E-Mail-Adresse verbergen @@ -394,8 +394,8 @@ manage_ssh_keys=SSH-Schlüssel verwalten manage_gpg_keys=GPG-Schlüssel verwalten add_key=Schlüssel hinzufügen ssh_desc=Diese öffentlichen SSH-Keys sind mit deinem Account verbunden. Der dazugehörigen privaten SSH-Keys geben dir vollen Zugriff auf deine Repositories. -gpg_desc=Diese öffentlichen GPG-Keys sind mit deinem Account verbunden. Halte die dazugehörigen privaten SSH-Keys geheim, da diese deine Commits signieren. -ssh_helper=Brauchst du Hilfe? Hier ist Githubs Anleitung zum Erzeugen von SSH-Schlüsseln oder Lösen einfacher SSH-Probleme. +gpg_desc=Diese öffentlichen GPG-Keys sind mit deinem Account verbunden. Halte die dazugehörigen privaten GPG-Keys geheim, da diese deine Commits signieren. +ssh_helper=Brauchst du Hilfe? Hier ist GitHubs Anleitung zum Erzeugen von SSH-Schlüsseln oder zum Lösen einfacher SSH-Probleme. gpg_helper=Brauchst du Hilfe? Hier ist GitHubs Anleitung über GPG. add_new_key=SSH-Schlüssel hinzufügen add_new_gpg_key=GPG-Schlüssel hinzufügen @@ -407,8 +407,8 @@ subkeys=Unterschlüssel key_id=Schlüssel-ID key_name=Schlüsselname key_content=Inhalt -add_key_success=Der SSH-Schlüssel "%s" wurde hinzugefügt. -add_gpg_key_success=Der GPG-Key "%s" wurde hinzugefügt. +add_key_success=Der SSH-Schlüssel „%s“ wurde hinzugefügt. +add_gpg_key_success=Der GPG-Key „%s“ wurde hinzugefügt. delete_key=Entfernen ssh_key_deletion=SSH-Schlüssel entfernen gpg_key_deletion=GPG-Schlüssel entfernen @@ -511,10 +511,10 @@ create_repo=Repository erstellen default_branch=Standardbranch mirror_prune=Entfernen mirror_prune_desc=Entferne veraltete remote-tracking Referenzen -mirror_interval=Spiegelintervall (gültige Zeiteinheiten sind 'h', 'm', 's') +mirror_interval=Spiegelintervall (gültige Zeiteinheiten sind „h“, „m“, „s“) mirror_interval_invalid=Das Spiegel-Intervall ist ungültig. mirror_address=Klonen via URL -mirror_address_desc=Bitte gebe alle benötigten Zugangsdaten in der URL an. +mirror_address_desc=Bitte gib alle benötigten Zugangsdaten in der URL an. mirror_last_synced=Zuletzt synchronisiert watchers=Beobachter stargazers=Favorisiert von @@ -523,7 +523,7 @@ pick_reaction=Wähle eine Reaktion reactions_more=und %d weitere form.reach_limit_of_creation=Du hast bereits dein Limit von %d Repositories erreicht. -form.name_reserved=Der Repository-Name '%s' ist reserviert. +form.name_reserved=Der Repository-Name „%s“ ist reserviert. form.name_pattern_not_allowed='%s' ist nicht erlaubt für Repository-Namen. need_auth=Authentifizierung zum Klonen benötigt @@ -598,31 +598,31 @@ editor.filename_help=Füge einen Ordner hinzu, indem du seinen Namen und anschli editor.or=oder editor.cancel_lower=Abbrechen editor.commit_changes=Änderungen committen -editor.add_tmpl='%s/' hinzufügen -editor.add='%s' hinzufügen -editor.update='%s' ändern -editor.delete='%s' löschen +editor.add_tmpl=„%s/“ hinzufügen +editor.add=„%s“ hinzufügen +editor.update=„%s“ ändern +editor.delete=„%s“ löschen editor.commit_message_desc=Eine ausführlichere (optionale) Beschreibung hinzufügen… -editor.commit_directly_to_this_branch=Direkt in die %s-Branch einchecken. -editor.create_new_branch=Einen neue Branch für diesen Commit erstellen und einen Pull Request starten. +editor.commit_directly_to_this_branch=Direkt in den Branch „%s“ einchecken. +editor.create_new_branch=Einen neuen Branch für diesen Commit erstellen und einen Pull Request starten. editor.new_branch_name_desc=Neuer Branchname… editor.cancel=Abbrechen editor.filename_cannot_be_empty=Der Dateiname darf nicht leer sein. editor.branch_already_exists=Branch '%s' existiert bereits in diesem Repository. -editor.directory_is_a_file=Der Verzeichnisname '%s' wird bereits als Dateiname in diesem Repository verwendet. +editor.directory_is_a_file=Der Verzeichnisname „%s“ wird bereits als Dateiname in diesem Repository verwendet. editor.file_is_a_symlink='%s' ist ein symolischer Link. Symbolische Links können mit dem Web Editor nicht bearbeitet werden. -editor.filename_is_a_directory=Der Dateiname '%s' wird bereits als Verzeichnisname in diesem Repository verwendet. -editor.file_editing_no_longer_exists=Die bearbeitete Datei '%s' existiert nicht mehr in diesem Repository. -editor.file_changed_while_editing=Der Inhalt der Datei hat sich seit dem Beginn der Bearbeitung geändert. Hier klicken um die Änderungen anzusehen, oder Änderungen erneut comitten um sie zu überschreiben. -editor.file_already_exists=Eine Datei mit dem Namen '%s' ist bereits in diesem Repository vorhanden. +editor.filename_is_a_directory=Der Dateiname „%s“ wird bereits als Verzeichnisname in diesem Repository verwendet. +editor.file_editing_no_longer_exists=Die bearbeitete Datei „%s“ existiert nicht mehr in diesem Repository. +editor.file_changed_while_editing=Der Inhalt der Datei hat sich seit dem Beginn der Bearbeitung geändert. Hier klicken, um die Änderungen anzusehen, oder Änderungen erneut comitten, um sie zu überschreiben. +editor.file_already_exists=Eine Datei mit dem Namen „%s“ ist bereits in diesem Repository vorhanden. editor.no_changes_to_show=Keine Änderungen vorhanden. editor.fail_to_update_file=Fehler beim Ändern/Erstellen der Datei '%s'. Fehler: %v editor.add_subdir=Verzeichnis erstellen… -editor.unable_to_upload_files=Fehler beim Hochladen der Dateien nach '%s'. Fehler: %v +editor.unable_to_upload_files=Fehler beim Hochladen der Dateien nach „%s“. Fehler: %v editor.upload_files_to_dir=Dateien hochladen nach '%s' -editor.cannot_commit_to_protected_branch=Commit in den geschützten Branch '%s' ist nicht möglich. +editor.cannot_commit_to_protected_branch=Commit in den geschützten Branch „%s“ ist nicht möglich. -commits.desc=Durchsuche die Quellcode Änderungshistorie. +commits.desc=Durchsuche die Quellcode-Änderungshistorie. commits.commits=Commits commits.search=Commits durchsuchen… commits.find=Suchen @@ -633,7 +633,7 @@ commits.date=Datum commits.older=Älter commits.newer=Neuer commits.signed_by=Signiert von -commits.gpg_key_id=GPG Schlüssel-ID +commits.gpg_key_id=GPG-Schlüssel-ID ext_issues=Externe Issues ext_issues.desc=Link zu externem Issuetracker. @@ -768,10 +768,10 @@ issues.cancel_tracking_history=hat die Zeiterfassung %s abgebrochen issues.time_spent_total=Zeitaufwand insgesamt issues.time_spent_from_all_authors=`Aufgewendete Zeit: %s` issues.due_date=Fällig am -issues.invalid_due_date_format=Das Fälligkeitsdatum muss das Format 'JJJJ-MM-TT' haben. +issues.invalid_due_date_format=Das Fälligkeitsdatum muss das Format „JJJJ-MM-TT“ haben. issues.error_modifying_due_date=Fehler beim Ändern des Fälligkeitsdatums. issues.error_removing_due_date=Fehler beim Entfernen des Fälligkeitsdatums. -issues.due_date_form=jjjj-mm-tt +issues.due_date_form=JJJJ-MM-TT issues.due_date_form_add=Fälligkeitsdatum hinzufügen issues.due_date_form_update=Fälligkeitsdatum ändern issues.due_date_form_remove=Fälligkeitsdatum löschen @@ -787,7 +787,7 @@ pulls.new=Neuer Pull-Request pulls.compare_changes=Neuer Pull-Request pulls.compare_changes_desc=Wähle die Ziel- und Quellbranch aus. pulls.compare_base=Ziel -pulls.compare_compare=pull von +pulls.compare_compare=pullen von pulls.filter_branch=Branch filtern pulls.no_results=Keine Ergebnisse verfügbar. pulls.nothing_to_compare=Diese Branches sind identisch. Es muss kein Pull-Request erstellt werden. @@ -827,13 +827,13 @@ milestones.title=Titel milestones.desc=Beschreibung milestones.due_date=Fälligkeitsdatum (optional) milestones.clear=Feld leeren -milestones.invalid_due_date_format=Das Fälligkeitsdatum muss das Format 'JJJJ-MM-TT' haben. -milestones.create_success=Der Meilenstein '%s' wurde erstellt. +milestones.invalid_due_date_format=Das Fälligkeitsdatum muss das Format „JJJJ-MM-TT“ haben. +milestones.create_success=Der Meilenstein „%s“ wurde erstellt. milestones.edit=Meilenstein bearbeiten milestones.edit_subheader=Benutze Meilensteine, um Issues zu organisieren und den Fortschritt darzustellen. milestones.cancel=Abbrechen milestones.modify=Meilenstein bearbeiten -milestones.edit_success=Die Änderungen am Meilenstein "%s" wurden gespeichert. +milestones.edit_success=Die Änderungen am Meilenstein „%s“ wurden gespeichert. milestones.deletion=Meilenstein löschen milestones.deletion_desc=Das Löschen des Meilensteins entfernt ihn von allen Issues. Fortfahren? milestones.deletion_success=Der Meilenstein wurde gelöscht. @@ -849,7 +849,7 @@ ext_wiki.desc=Verweis auf externes Wiki. wiki=Wiki wiki.welcome=Willkommen im Wiki. -wiki.welcome_desc=Im Wiki kannst Dokumentation schreiben und mit Mitarbeitern teilen. +wiki.welcome_desc=Im Wiki kannst du Dokumentation schreiben und sie mit Mitarbeitern teilen. wiki.desc=Schreibe und teile Dokumentation mit Mitarbeitern. wiki.create_first_page=Erstelle die erste Seite wiki.page=Seite @@ -861,9 +861,9 @@ wiki.last_commit_info=%s hat diese Seite bearbeitet %s wiki.edit_page_button=Bearbeiten wiki.new_page_button=Neue 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? +wiki.delete_page_notice_1=Das Löschen der Wiki-Seite „%s“ kann nicht rückgängig gemacht werden. Fortfahren? wiki.page_already_exists=Eine Wiki-Seite mit dem gleichen Namen existiert bereits. -wiki.reserved_page=Der Wiki-Seitenname "%s" ist reserviert. +wiki.reserved_page=Der Wiki-Seitenname „%s“ ist reserviert. wiki.pages=Seiten wiki.last_updated=Zuletzt aktualisiert %s @@ -911,7 +911,7 @@ activity.published_release_label=Veröffentlicht search=Suchen search.search_repo=Repository durchsuchen -search.results=Suchergebnisse für "%s" in %s +search.results=Suchergebnisse für „%s“ in %s settings=Einstellungen settings.desc=In den Einstellungen kannst du die Einstellungen des Repository anpassen @@ -925,28 +925,28 @@ settings.hooks=Webhooks settings.githooks=Git-Hooks settings.basic_settings=Grundeinstellungen settings.mirror_settings=Mirror Einstellungen -settings.sync_mirror=Jetzt Synchronisieren +settings.sync_mirror=Jetzt synchronisieren settings.mirror_sync_in_progress=Mirror-Synchronisierung wird zurzeit ausgeführt. Komm in ein paar Minuten zurück. settings.site=Webseite settings.update_settings=Einstellungen speichern settings.advanced_settings=Erweiterte Einstellungen -settings.wiki_desc=Repository Wiki aktivieren +settings.wiki_desc=Repository-Wiki aktivieren settings.use_internal_wiki=Eingebautes Wiki verwenden settings.use_external_wiki=Externes Wiki verwenden settings.external_wiki_url=Externe Wiki URL settings.external_wiki_url_error=Die externe Wiki-URL ist ungültig. -settings.external_wiki_url_desc=Besucher werden auf die externe Wiki-URL weitergeleitet wenn sie auf das Wiki-Tab klicken. -settings.issues_desc=Repository Issue-Tracker aktivieren +settings.external_wiki_url_desc=Besucher werden auf die externe Wiki-URL weitergeleitet, wenn sie auf das Wiki-Tab klicken. +settings.issues_desc=Repository-Issue-Tracker aktivieren settings.use_internal_issue_tracker=Integrierten Issue-Tracker verwenden settings.use_external_issue_tracker=Externen Issue-Tracker verwenden settings.external_tracker_url=URL eines externen Issue Trackers settings.external_tracker_url_error=Die URL des externen Issue-Trackers ist ungültig. -settings.external_tracker_url_desc=Besucher werden auf die externe Issue-Tracker-URL weitergeleitet wenn sie auf das Issues-Tab klicken. +settings.external_tracker_url_desc=Besucher werden auf die externe Issue-Tracker-URL weitergeleitet, wenn sie auf das Issues-Tab klicken. settings.tracker_url_format=URL-Format des externen Issue-Systems settings.tracker_issue_style=Namenskonvention des externen Issue-Trackers settings.tracker_issue_style.numeric=Numerisch settings.tracker_issue_style.alphanumeric=Alphanumerisch -settings.tracker_url_format_desc=Du kannst die Platzhalter {user}, {repo}, {index} für den Benutzernamen, den Namen des Repositories und die Issue-Nummer verwenden. +settings.tracker_url_format_desc=Du kannst die Platzhalter {user}, {repo}, {index} für den Benutzernamen, den Namen des Repositorys und die Issue-Nummer verwenden. settings.enable_timetracker=Zeiterfassung aktivieren settings.allow_only_contributors_to_track_time=Nur Mitarbeitern erlauben, die Zeiterfassung zu nutzen settings.pulls_desc=Repository-Pull-Requests aktivieren @@ -964,22 +964,22 @@ settings.convert_notices_1=Dieser Vorgang wandelt das Mirror-Repository in ein n settings.convert_confirm=Repository umwandeln settings.convert_succeed=Das Mirror-Repository wurde erfolgreich in ein normales Repository umgewandelt. settings.transfer=Besitz übertragen -settings.transfer_desc=Übertrage dieses Repository auf einen anderen Benutzer oder eine Organisation in der Du Admin-Rechte hast. -settings.transfer_notices_1=- Du wirst keinen Zugriff mehr haben, wenn der neue Besitzer ein individueller Benutzer ist. -settings.transfer_notices_2=- Du wirst weiterhin Zugriff haben, wenn der neue Besitzer eine Organisation ist und du einer der Besitzer bist. +settings.transfer_desc=Übertrage dieses Repository auf einen anderen Benutzer oder eine Organisation, in der du Admin-Rechte hast. +settings.transfer_notices_1=– Du wirst keinen Zugriff mehr haben, wenn der neue Besitzer ein individueller Benutzer ist. +settings.transfer_notices_2=– Du wirst weiterhin Zugriff haben, wenn der neue Besitzer eine Organisation ist und du einer der Besitzer bist. settings.transfer_form_title=Gib den Repository-Namen zur Bestätigung ein: settings.wiki_delete=Wiki-Daten löschen settings.wiki_delete_desc=Das Löschen von Wiki-Daten kann nicht rückgängig gemacht werden. Bitte sei vorsichtig. -settings.wiki_delete_notices_1=- Dies löscht und deaktiviert das Wiki für %s. +settings.wiki_delete_notices_1=– Dies löscht und deaktiviert das Wiki für %s. settings.confirm_wiki_delete=Wiki-Daten löschen -settings.wiki_deletion_success=Repository Wiki-Daten wurden gelöscht. +settings.wiki_deletion_success=Repository-Wiki-Daten wurden gelöscht. settings.delete=Dieses Repository löschen settings.delete_desc=Wenn dieses Repository gelöscht wurde, gibt es keinen Weg zurück. Bitte sei vorsichtig. settings.delete_notices_1=- Diese Operation kann NICHT rückgängig gemacht werden. -settings.delete_notices_2=- Die Operation wird das %s-Repository dauerhaft löschen, inklusive der Dateien, Issues, Kommentare und Zugriffseinstellungen. -settings.delete_notices_fork_1=- Nach dem Löschen werden alle Forks unabhängig. +settings.delete_notices_2=– Die Operation wird das %s-Repository dauerhaft löschen, inklusive der Dateien, Issues, Kommentare und Zugriffseinstellungen. +settings.delete_notices_fork_1=– Forks dieses Repositorys werden nach dem Löschen unabhängig. settings.deletion_success=Das Repository wurde gelöscht. -settings.update_settings_success=Repository Einstellungen wurden aktualisiert. +settings.update_settings_success=Repository-Einstellungen wurden aktualisiert. settings.transfer_owner=Neuer Besitzer settings.make_transfer=Transfer durchführen settings.transfer_succeed=Das Repository wurde transferiert. @@ -994,7 +994,7 @@ settings.search_user_placeholder=Benutzer suchen… settings.org_not_allowed_to_be_collaborator=Organisationen können nicht als Mitarbeiter hinzugefügt werden. settings.user_is_org_member=Der Benutzer ist ein Organisationsmitglied und kann nicht als Mitarbeiter hinzugefügt werden. settings.add_webhook=Webhook hinzufügen -settings.hooks_desc=Webhooks senden bei bestimmten Gitea-Events automatisch HTTP POST-Requets an einen Server. Lies mehr in unserer Anleitung zu Webhooks (Englisch). +settings.hooks_desc=Webhooks senden bei bestimmten Gitea-Events automatisch „HTTP POST“-Anfragen an einen Server. Lies mehr in unserer Anleitung zu Webhooks (auf Englisch). settings.webhook_deletion=Webhook löschen settings.webhook_deletion_desc=Das Entfernen eines Webhooks löscht seine Einstellungen und Zustellungsverlauf. Fortfahren? settings.webhook_deletion_success=Webhook wurde entfernt. @@ -1066,18 +1066,18 @@ settings.title=Titel settings.deploy_key_content=Inhalt settings.key_been_used=Ein Deploy-Key mit identischem Inhalt wird bereits verwendet. settings.key_name_used=Ein Deploy-Key mit diesem Namen existiert bereits. -settings.add_key_success=Der Deploy-Key '%s' wurde erfolgreich hinzugefügt. +settings.add_key_success=Der Deploy-Key „%s“ wurde erfolgreich hinzugefügt. settings.deploy_key_deletion=Deploy-Key löschen settings.deploy_key_deletion_desc=Nach dem Löschen wird dieser Deploy-Key keinen Zugriff mehr auf dieses Repository haben. Fortfahren? settings.deploy_key_deletion_success=Der Deploy-Key wurde entfernt. settings.branches=Branches -settings.protected_branch=Branch-Protection +settings.protected_branch=Branch-Schutz settings.protected_branch_can_push=Push erlauben? settings.protected_branch_can_push_yes=Du kannst pushen settings.protected_branch_can_push_no=Du kannst nicht pushen -settings.branch_protection=Branch-Schutz" für Branch '%s' +settings.branch_protection=Branch-Schutz für Branch „%s“ settings.protect_this_branch=Brach-Schutz aktivieren -settings.protect_this_branch_desc=Verhindere Löschen und deaktiviere Git force push auf diese Branch. +settings.protect_this_branch_desc=Verhindere Löschen und deaktiviere das sog. „force pushing” von Git auf diesen Branch. settings.protect_whitelist_committers=Push-Whitelist aktivieren settings.protect_whitelist_committers_desc=Erlaube Nutzern oder Teams auf der Whitelist Push-Beschränkungen zu umgehen. settings.protect_whitelist_users=Nutzer, die pushen dürfen: @@ -1090,12 +1090,12 @@ settings.protect_merge_whitelist_users=Nutzer, die mergen dürfen: settings.protect_merge_whitelist_teams=Teams, die mergen dürfen: settings.add_protected_branch=Schutz aktivieren settings.delete_protected_branch=Schutz deaktivieren -settings.update_protect_branch_success=Branch-protection für die Branch '%s' wurde geändert. -settings.remove_protected_branch_success=Branch-protection für die Branch '%s' wurde deaktiviert. +settings.update_protect_branch_success=Branch-Schutz für den Branch „%s“ wurde geändert. +settings.remove_protected_branch_success=Branch-Schutz für den Branch „%s“ wurde deaktiviert. settings.protected_branch_deletion=Brach-Schutz deaktivieren -settings.protected_branch_deletion_desc=Wenn du die Branch-Protection deaktivierst, können alle Nutzer mit Schreibrechten auf die Branch pushen. Fortfahren? +settings.protected_branch_deletion_desc=Wenn du den Branch-Schutz deaktivierst, können alle Nutzer mit Schreibrechten auf den Branch pushen. Fortfahren? settings.default_branch_desc=Wähle eine Standardbranch für Pull-Requests und Code-Commits: -settings.choose_branch=Wähle eine Branch… +settings.choose_branch=Wähle einen Branch … settings.no_protected_branch=Es gibt keine geschützten Branches. diff.browse_source=Quellcode durchsuchen @@ -1131,7 +1131,7 @@ release.write=Schreiben release.preview=Vorschau release.loading=Laden… release.prerelease_desc=Als Pre-Release kennzeichnen -release.prerelease_helper=Dieses Release als "ungeeignet für den produktiven Einsatz" markieren. +release.prerelease_helper=Dieses Release als „ungeeignet für den produktiven Einsatz“ markieren. release.cancel=Abbrechen release.publish=Release veröffentlichen release.save_draft=Entwurf speichern @@ -1146,24 +1146,24 @@ release.downloads=Downloads branch.name=Branchname branch.search=Branches durchsuchen -branch.already_exists=Eine Branch mit dem Namen '%s' existiert bereits. +branch.already_exists=Ein Branch mit dem Namen „%s“ existiert bereits. branch.delete_head=Löschen -branch.delete=Branch '%s' löschen +branch.delete=Branch „%s“ löschen branch.delete_html=Branch löschen -branch.delete_desc=Das Löschen einer Branch ist permanent. Es KANN NICHT Rückgängig gemacht werden. Fortfahren? -branch.deletion_success=Branch '%s' wurde gelöscht. -branch.deletion_failed=Branch '%s' konnte nicht gelöscht werden. -branch.delete_branch_has_new_commits=Die Branch '%s' kann nicht gelöscht weden, da seit dem letzten Merge neue Commits hinzugefügt wurden. +branch.delete_desc=Das Löschen eines Branches ist permanent. Es KANN NICHT rückgängig gemacht werden. Fortfahren? +branch.deletion_success=Branch „%s“ wurde gelöscht. +branch.deletion_failed=Branch „%s“ konnte nicht gelöscht werden. +branch.delete_branch_has_new_commits=Der Branch „%s“ kann nicht gelöscht weden, da seit dem letzten Merge neue Commits hinzugefügt wurden. branch.create_branch=Erstelle Branch %s branch.create_from=von '%s' -branch.create_success=Branch '%s' wurde erstellt. +branch.create_success=Branch „%s“ wurde erstellt. branch.branch_already_exists=Branch '%s' existiert bereits in diesem Repository. -branch.branch_name_conflict=Der Branch-Name '%s' steht in Konflikt mit der bestehendem Branch '%s'. -branch.tag_collision=Branch '%s' kann nicht erstellt werden, da in diesem Repository bereits ein Tag mit dem selben Namen existiert. +branch.branch_name_conflict=Der Branch-Name „%s“ steht in Konflikt mit dem bestehenden Branch „%s“. +branch.tag_collision=Branch „%s“ kann nicht erstellt werden, da in diesem Repository bereits ein Tag mit dem selben Namen existiert. branch.deleted_by=Von %s gelöscht -branch.restore_success=Branch '%s' wurde wiederhergestellt. -branch.restore_failed=Wiederherstellung der Branch '%s' fehlgeschlagen. -branch.protected_deletion_failed=Branch '%s' ist geschützt und kann nicht gelöscht werden. +branch.restore_success=Branch „%s“ wurde wiederhergestellt. +branch.restore_failed=Wiederherstellung des Branches „%s“ fehlgeschlagen. +branch.protected_deletion_failed=Branch „%s“ ist geschützt und kann nicht gelöscht werden. topic.manage_topics=Themen verwalten topic.done=Fertig @@ -1188,9 +1188,9 @@ team_desc_helper=Beschreibe den Zweck oder die Rolle des Teams. team_permission_desc=Berechtigungen team_unit_desc=Zugriff auf Repositorybereiche erlauben -form.name_reserved=Der Organisationsname '%s' ist reserviert. -form.name_pattern_not_allowed=Das Muster '%s' ist in Organisationsnamen nicht erlaubt. -form.create_org_not_allowed=Du bist nicht berechtigt eine Organisation zu erstellen. +form.name_reserved=Der Organisationsname „%s“ ist reserviert. +form.name_pattern_not_allowed=Das Muster „%s“ ist in Organisationsnamen nicht erlaubt. +form.create_org_not_allowed=Du bist nicht berechtigt, eine Organisation zu erstellen. settings=Einstellungen settings.options=Organisation @@ -1229,7 +1229,7 @@ teams.read_access_helper=Mitglieder können Teamrepositories ansehen und klonen. teams.write_access=Schreibzugriff teams.write_access_helper=Mitglieder können Teamrepositories ansehen und auf sie pushen. teams.admin_access=Administratorzugang -teams.admin_access_helper=Mitglieder können auf Team Repositories "pushen", von ihnen "pullen" und Mitarbeiter hinzufügen. +teams.admin_access_helper=Mitglieder können auf Team-Repositorys pushen, von ihnen pullen und Mitarbeiter hinzufügen. teams.no_desc=Dieses Team hat keine Beschreibung teams.settings=Einstellungen teams.owners_permission_desc=Besitzer haben vollen Zugriff auf alle Repositories und Admin-Rechte für diese Organisation. @@ -1277,12 +1277,12 @@ dashboard.delete_repo_archives=Alle Repository-Archive löschen dashboard.delete_repo_archives_success=Alle Repository-Archive wurden gelöscht. dashboard.delete_missing_repos=Alle Repository-Datensätze mit verlorenen gegangenen Git-Dateien löschen dashboard.delete_missing_repos_success=Alle Repository-Datensätze mit verlorenen Git-Dateien wurden gelöscht. -dashboard.git_gc_repos=Garbage Collection auf Repositories ausführen -dashboard.git_gc_repos_success=Alle Repositories haben Garbage Collection beendet. -dashboard.resync_all_sshkeys='.ssh/authorized_keys'-Datei mit Gitea SSH-Keys neu schreiben. (Wenn Du den eingebauten SSH Server nutzt, musst du das nicht ausführen.) +dashboard.git_gc_repos=Garbage-Collection auf Repositories ausführen +dashboard.git_gc_repos_success=Alle Repositories haben Garbage-Collection beendet. +dashboard.resync_all_sshkeys=„.ssh/authorized_keys“-Datei mit Gitea-SSH-Keys neu schreiben. (Wenn Du den eingebauten SSH-Server nutzt, musst du das nicht ausführen.) dashboard.resync_all_sshkeys_success=Alle von Gitea verwalteten öffentlichen Schlüssel wurden neu geschrieben. -dashboard.resync_all_hooks=Synchronisiere pre-receive, update und post-receive Hooks für alle Repositories. -dashboard.resync_all_hooks_success=Alle pre-receive, update und post-receive Repository-Hooks wurden synchronisiert. +dashboard.resync_all_hooks=Synchronisiere „pre-receive“-, „update“- und „post-receive“-Hooks für alle Repositorys erneut. +dashboard.resync_all_hooks_success=Alle „pre-receive“-, „update“- und „post-receive“-Repository-Hooks wurden erneut synchronisiert. dashboard.reinit_missing_repos=Alle Git-Repositories mit Einträgen neu einlesen dashboard.reinit_missing_repos_success=Alle verlorenen Git-Repositories mit existierenden Einträgen wurden erfolgreich aktualisiert. dashboard.sync_external_users=Externe Benutzerdaten synchronisieren @@ -1305,11 +1305,11 @@ dashboard.heap_memory_released=Freigegebener Heap-Memory dashboard.heap_objects=Heap-Objekte dashboard.bootstrap_stack_usage=Bootstrap-Stack-Auslastung dashboard.stack_memory_obtained=Erhaltener Stack-Memory -dashboard.mspan_structures_usage=MSpan-Structures Auslastung -dashboard.mspan_structures_obtained=MSpan-Structures erhalten -dashboard.mcache_structures_usage=MCache-Structures Auslastung +dashboard.mspan_structures_usage=MSpan-Structures-Auslastung +dashboard.mspan_structures_obtained=Erhaltene MSpan-Structures +dashboard.mcache_structures_usage=MCache-Structures-Auslastung dashboard.mcache_structures_obtained=Erhaltene MCache-Structures -dashboard.profiling_bucket_hash_table_obtained=Analysesatz Hashtabellen erhalten +dashboard.profiling_bucket_hash_table_obtained=Erhaltene Analysesatz-Hashtabellen dashboard.gc_metadata_obtained=Erhaltene GC-Metadata dashboard.other_system_allocation_obtained=Andere erhaltene System-Allokationen dashboard.next_gc_recycle=Nächster GC-Zyklus @@ -1342,7 +1342,7 @@ users.max_repo_creation_desc=(Gib -1 ein, um das globale Standardlimit zu verwen users.is_activated=Account ist aktiviert users.prohibit_login=Anmelden deaktivieren users.is_admin=Ist Administrator -users.allow_git_hook=Darf "Git Hooks" erstellen +users.allow_git_hook=Darf „Git Hooks“ erstellen users.allow_import_local=Darf lokale Repositories importieren users.allow_create_organization=Darf Organisationen erstellen users.update_profile=Benutzerkonto aktualisieren @@ -1384,31 +1384,31 @@ auths.bind_dn=DN binden auths.bind_password=Passwort binden auths.bind_password_helper=Achtung: Das Passwort wird im Klartext gespeichert. Benutze wenn möglich einen Account mit nur Lesezugriff. auths.user_base=Basis für Benutzersuche -auths.user_dn=Benutzer DN -auths.attribute_username=Benutzername Attribut +auths.user_dn=Benutzer-DN +auths.attribute_username=Benutzernamens-Attribut auths.attribute_username_placeholder=Leerlassen, um den in Gitea eingegebenen Benutzernamen zu verwenden. auths.attribute_name=Vornamensattribut auths.attribute_surname=Nachnamensattribut -auths.attribute_mail=E-Mail Attribut -auths.attribute_ssh_public_key=Öffentliches SSH-Schlüssel Attribut +auths.attribute_mail=E-Mail-Attribut +auths.attribute_ssh_public_key=Öffentlicher-SSH-Schlüssel-Attribut auths.attributes_in_bind=Hole Attribute im Bind-Kontext auths.use_paged_search=Seitensuche verwenden auths.search_page_size=Seitengröße auths.filter=Benutzerfilter -auths.admin_filter=Admin Filter -auths.ms_ad_sa=MS AD Suchattribute +auths.admin_filter=Admin-Filter +auths.ms_ad_sa=MS-AD-Suchattribute auths.smtp_auth=SMTP-Authentifizierungstyp auths.smtphost=SMTP-Host auths.smtpport=SMTP-Port auths.allowed_domains=Erlaubte Domains -auths.allowed_domains_helper=Leerlassen, um alle Domains zuzulassen. Trenne mehrere Domänen mit einem Komma (','). +auths.allowed_domains_helper=Leerlassen, um alle Domains zuzulassen. Trenne mehrere Domänen mit einem Komma („,“). auths.enable_tls=TLS-Verschlüsselung aktivieren -auths.skip_tls_verify=TLS Verifikation überspringen -auths.pam_service_name=PAM Dienstname -auths.oauth2_provider=OAuth2 Anbieter +auths.skip_tls_verify=TLS-Verifikation überspringen +auths.pam_service_name=PAM-Dienstname +auths.oauth2_provider=OAuth2-Anbieter auths.oauth2_clientID=Client-ID (Schlüssel) auths.oauth2_clientSecret=Client-Secret -auths.openIdConnectAutoDiscoveryURL=OpenID Connect Auto Discovery URL +auths.openIdConnectAutoDiscoveryURL=OpenID-Connect-Auto-Discovery-URL auths.oauth2_use_custom_url=Benutzerdefinierte URLs anstelle von Standard-URLs verwenden auths.oauth2_tokenURL=Token-URL auths.oauth2_authURL=Authorisierungs-URL @@ -1416,48 +1416,48 @@ auths.oauth2_profileURL=Profil-URL auths.oauth2_emailURL=E-Mail-URL auths.enable_auto_register=Automatische Registrierung aktivieren auths.tips=Tipps -auths.tips.oauth2.general=OAuth2 Authentifizierung -auths.tips.oauth2.general.tip=Beim Registrieren einer neuen OAuth2 Authentifizierung sollte die Callback/Weiterleitungs-URL /user/oauth2//callback sein. -auths.tip.oauth2_provider=OAuth2 Anbieter -auths.tip.bitbucket=Registriere einen neuen OAuth-Consumer unter https://bitbucket.org/account/user//oauth-consumers/new und füge die Berechtigung "Account"-"Read" hinzu. +auths.tips.oauth2.general=OAuth2-Authentifizierung +auths.tips.oauth2.general.tip=Beim Registrieren einer neuen OAuth2-Authentifizierung sollte die Callback-/Weiterleitungs-URL „/user/oauth2//callback“ sein. +auths.tip.oauth2_provider=OAuth2-Anbieter +auths.tip.bitbucket=Registriere einen neuen OAuth-Consumer unter https://bitbucket.org/account/user//oauth-consumers/new und füge die Berechtigung „Account“ – „Read“ hinzu. auths.tip.dropbox=Erstelle eine neue App auf https://www.dropbox.com/developers/apps. -auths.tip.facebook=Erstelle eine neue Anwendung auf https://developers.facebook.com/apps und füge das Produkt "Facebook Login" hinzu. -auths.tip.github=Erstelle unter https://github.com/settings/applications/new eine neue OAuth Anwendung. +auths.tip.facebook=Erstelle eine neue Anwendung auf https://developers.facebook.com/apps und füge das Produkt „Facebook Login“ hinzu. +auths.tip.github=Erstelle unter https://github.com/settings/applications/new eine neue OAuth-Anwendung. auths.tip.gitlab=Erstelle unter https://gitlab.com/profile/applications eine neue Anwendung. -auths.tip.google_plus=Du erhältst die OAuth2 Client Zugangsdaten in der Google API Console unter https://console.developers.google.com/ +auths.tip.google_plus=Du erhältst die OAuth2-Client-Zugangsdaten in der Google-API-Konsole unter https://console.developers.google.com/ auths.tip.openid_connect=Benutze die OpenID Connect Discovery URL (/.well-known/openid-configuration) als Endpunkt. -auths.tip.twitter=Gehe auf https://dev.twitter.com/apps, erstelle eine Anwendung und stelle sicher, dass die Option “Allow this application to be used to Sign in with Twitter” aktiviert ist +auths.tip.twitter=Gehe auf https://dev.twitter.com/apps, erstelle eine Anwendung und stelle sicher, dass die Option „Allow this application to be used to Sign in with Twitter“ aktiviert ist auths.edit=Authentifikationsquelle bearbeiten auths.activated=Diese Authentifikationsquelle ist aktiviert -auths.new_success=Die Authentifizierung "%s" wurde hinzugefügt. +auths.new_success=Die Authentifizierung „%s“ wurde hinzugefügt. auths.update_success=Diese Authentifizierungsquelle wurde aktualisiert. auths.update=Authentifizierungsquelle aktualisieren auths.delete=Authentifikationsquelle löschen auths.delete_auth_title=Authentifizierungsquelle löschen auths.delete_auth_desc=Das Löschen einer Authentifizierungsquelle verhindert, dass Benutzer sich darüber anmelden können. Fortfahren? auths.still_in_used=Diese Authentifizierungsquelle wird noch verwendet. Bearbeite oder lösche zuerst alle Benutzer, die diese Authentifizierungsquelle benutzen. -auths.deletion_success=Die Authentifizierungsquelle '%s' wurde gelöscht. -auths.login_source_exist=Die Authentifizierungsquelle '%s' existiert bereits. +auths.deletion_success=Die Authentifizierungsquelle „%s“ wurde gelöscht. +auths.login_source_exist=Die Authentifizierungsquelle „%s“ existiert bereits. config.server_config=Serverkonfiguration config.app_name=Seitentitel -config.app_ver=Gitea Version -config.app_url=Gitea Basis-URL +config.app_ver=Gitea-Version +config.app_url=Gitea-Basis-URL config.custom_conf=Konfigurations-Datei-Pfad -config.domain=SSH Server-Domain +config.domain=SSH-Server-Domain config.offline_mode=Lokaler Modus config.disable_router_log=Router-Log deaktivieren config.run_user=Ausführen als config.run_mode=Laufzeit-Modus -config.git_version=Git Version -config.repo_root_path=Repository-Verzeichnis +config.git_version=Git-Version +config.repo_root_path=Repository-Wurzelpfad config.lfs_root_path=LFS-Wurzelpfad config.static_file_root_path=Verzeichnis für statische Dateien config.log_file_root_path=Logdateipfad config.script_type=Skript-Typ config.reverse_auth_user=Nutzer bei Reverse-Authentifizierung -config.ssh_config=SSH Konfiguration +config.ssh_config=SSH-Konfiguration config.ssh_enabled=Aktiviert config.ssh_start_builtin_server=Eingebauten Server verwenden config.ssh_domain=Server-Domain @@ -1465,9 +1465,9 @@ config.ssh_port=Port config.ssh_listen_port=Listen-Port config.ssh_root_path=Wurzelverzeichnis config.ssh_key_test_path=Schlüssel-Test-Pfad -config.ssh_keygen_path=Keygen ('ssh-keygen') Pfad +config.ssh_keygen_path=Keygen-Pfad („ssh-keygen“) config.ssh_minimum_key_size_check=Prüfung der Mindestschlüssellänge -config.ssh_minimum_key_sizes=Minimale Schlüssellängen +config.ssh_minimum_key_sizes=Mindestschlüssellängen config.db_config=Datenbankkonfiguration config.db_type=Typ @@ -1481,17 +1481,17 @@ config.service_config=Service-Konfiguration config.register_email_confirm=E-Mail-Bestätigung benötigt zum Registrieren config.disable_register=Selbstegistrierung deaktivieren config.allow_only_external_registration=Registrierung nur über externe Services aktiveren -config.enable_openid_signup=OpenID Selbstregistrierung aktivieren -config.enable_openid_signin=OpenID Anmeldung aktivieren +config.enable_openid_signup=OpenID-Selbstregistrierung aktivieren +config.enable_openid_signin=OpenID-Anmeldung aktivieren config.show_registration_button=Schaltfläche zum Registrieren anzeigen config.require_sign_in_view=Seiten nur für angemeldete Benutzer zugänglich config.mail_notify=E-Mail-Benachrichtigungen aktivieren config.disable_key_size_check=Prüfung der Mindestschlüssellänge deaktiveren config.enable_captcha=CAPTCHA aktivieren -config.active_code_lives=Aktivierungscode Lebensdauer +config.active_code_lives=Aktivierungscode-Lebensdauer config.reset_password_code_lives=Ablaufdatum des Passworts zurücksetzen config.default_keep_email_private=E-Mail-Adressen standardmäßig verbergen -config.default_allow_create_organization=Erstellen von Organisationen standarmäßig erlauben +config.default_allow_create_organization=Erstellen von Organisationen standardmäßig erlauben config.enable_timetracking=Zeiterfassung aktivieren config.default_enable_timetracking=Zeiterfassung standardmäßig aktivieren config.default_allow_only_contributors_to_track_time=Nur Mitarbeitern erlauben, die Zeiterfassung zu nutzen @@ -1500,11 +1500,11 @@ config.no_reply_address=Versteckte E-Mail-Domain config.webhook_config=Webhook-Konfiguration config.queue_length=Warteschlangenlänge config.deliver_timeout=Zeitlimit für Zustellung -config.skip_tls_verify=TLS Verifikation überspringen +config.skip_tls_verify=TLS-Verifikation überspringen -config.mailer_config=SMTP Mailer Konfiguration +config.mailer_config=SMTP-Mailer-Konfiguration config.mailer_enabled=Aktiviert -config.mailer_disable_helo=HELO Deaktivieren +config.mailer_disable_helo=HELO deaktivieren config.mailer_name=Name config.mailer_host=Host config.mailer_user=Benutzer @@ -1512,8 +1512,8 @@ config.mailer_use_sendmail=Sendmail benutzen config.mailer_sendmail_path=Sendmail-Pfad config.mailer_sendmail_args=Zusätzliche Argumente für Sendmail config.send_test_mail=Test-E-Mail senden -config.test_mail_failed=Das Senden der Test-E-Mail an '%s' ist fehlgeschlagen: %v -config.test_mail_sent=Eine Test-E-Mail wurde an '%s' gesendet. +config.test_mail_failed=Das Senden der Test-E-Mail an „%s“ ist fehlgeschlagen: %v +config.test_mail_sent=Eine Test-E-Mail wurde an „%s“ gesendet. config.oauth_config=OAuth-Konfiguration config.oauth_enabled=Aktiviert @@ -1533,16 +1533,16 @@ config.session_life_time=Session-Lebensdauer config.https_only=Nur HTTPS config.cookie_life_time=Cookie-Lebensdauer -config.picture_config=Avatar-Konfiguration +config.picture_config=Bild-und-Profilbild-Konfiguration config.picture_service=Bilderservice config.disable_gravatar=Gravatar deaktivieren config.enable_federated_avatar=Föderierte Profilbilder einschalten -config.git_config=Git Konfiguration -config.git_disable_diff_highlight=Diff Syntaxhervorhebung ausschalten -config.git_max_diff_lines=Max Diff Zeilen (in einer Datei) -config.git_max_diff_line_characters=Max Diff Zeichen (in einer Zeile) -config.git_max_diff_files=Max Diff Dateien (Anzeige) +config.git_config=Git-Konfiguration +config.git_disable_diff_highlight=Diff-Syntaxhervorhebung ausschalten +config.git_max_diff_lines=Max. Diff-Zeilen (in einer Datei) +config.git_max_diff_line_characters=Max. Diff-Zeichen (in einer Zeile) +config.git_max_diff_files=Max. Diff-Dateien (Angezeigte) config.git_gc_args=GC-Argumente config.git_migrate_timeout=Zeitlimit für Migration config.git_mirror_timeout=Zeitlimit für Mirror-Aktualisierung @@ -1638,12 +1638,12 @@ mark_all_as_read=Alle als gelesen markieren [gpg] error.extract_sign=Die Signatur konnte nicht extrahiert werden error.generate_hash=Es konnte kein Hash vom Commit generiert werden -error.no_committer_account=Es ist kein Benutzerkonto mit dieser Commiter-Email verbunden +error.no_committer_account=Es ist kein Benutzerkonto mit der E-Mail-Adresse des Committers verbunden error.no_gpg_keys_found=Es konnte kein GPG-Schlüssel zu dieser Signatur gefunden werden error.not_signed_commit=Kein signierter Commit error.failed_retrieval_gpg_keys=Fehler beim Abrufen eines Keys des Commiter-Kontos [units] -error.no_unit_allowed_repo=Du hast keine Berechtigung auf einen Bereich dieses Repositories zuzugreifen. -error.unit_not_allowed=Du hast keine Berechtigung auf diesen Repository-Bereich zuzugreifen. +error.no_unit_allowed_repo=Du hast keine Berechtigung, um auf irgendeinen Bereich dieses Repositories zuzugreifen. +error.unit_not_allowed=Du hast keine Berechtigung, um auf diesen Repository-Bereich zuzugreifen. diff --git a/options/locale/locale_uk-UA.ini b/options/locale/locale_uk-UA.ini index f49b98280..b3e8a2fe0 100644 --- a/options/locale/locale_uk-UA.ini +++ b/options/locale/locale_uk-UA.ini @@ -280,12 +280,12 @@ target_branch_not_exist=Цільової гілки не існує. [user] change_avatar=Змінити свій аватар… -join_on=Приєднався +join_on=Приєднався(-лась) repositories=Репозиторії activity=Публічна активність -followers=Підписники +followers=Читачі starred=Обрані Репозиторії -following=Слідкувати +following=Читає follow=Підписатися unfollow=Відписатися @@ -439,6 +439,7 @@ license=Ліцензія license_helper=Виберіть ліцензійний файл. readme=README readme_helper=Виберіть шаблон README. +auto_init=Ініціалізувати репозиторій (Додає .gitignore, LICENSE та README) create_repo=Створити репозиторій default_branch=Головна гілка mirror_prune=Очистити @@ -603,6 +604,8 @@ issues.filter_sort.recentupdate=Нещодавно оновлено issues.filter_sort.leastupdate=Найдавніше оновлені issues.filter_sort.mostcomment=Найбільш коментовані issues.filter_sort.leastcomment=Найменш коментовані +issues.filter_sort.moststars=Найбільш обраних +issues.filter_sort.feweststars=Найменш обраних issues.filter_sort.mostforks=Найбільше форків issues.action_open=Відкрити issues.action_close=Закрити @@ -1232,6 +1235,7 @@ config.default_keep_email_private=Приховати адресу електро config.default_allow_create_organization=Дозволити створення організацій за замовчуванням config.enable_timetracking=Увімкнути відстеження часу config.default_enable_timetracking=Увімкнути відстеження часу за замовчуванням +config.no_reply_address=Прихований домен е-пошти config.webhook_config=Конфігурація web-хуків config.queue_length=Довжина черги From 69bfd81b1cc4b95d6bc49e7b027d2e5ff03167a5 Mon Sep 17 00:00:00 2001 From: David Schneiderbauer Date: Mon, 18 Jun 2018 20:24:45 +0200 Subject: [PATCH 10/12] fix missing data on redirects (#3975) --- routers/user/setting/account.go | 32 ++++++++------- routers/user/setting/applications.go | 24 +++++------ routers/user/setting/keys.go | 54 ++++++++++++------------- routers/user/setting/profile.go | 1 + routers/user/setting/security.go | 44 +++++++++++--------- routers/user/setting/security_openid.go | 21 ++++------ 6 files changed, 90 insertions(+), 86 deletions(-) diff --git a/routers/user/setting/account.go b/routers/user/setting/account.go index 966d96aed..bcf602c5e 100644 --- a/routers/user/setting/account.go +++ b/routers/user/setting/account.go @@ -24,12 +24,7 @@ func Account(ctx *context.Context) { ctx.Data["PageIsSettingsAccount"] = true ctx.Data["Email"] = ctx.User.Email - emails, err := models.GetEmailAddresses(ctx.User.ID) - if err != nil { - ctx.ServerError("GetEmailAddresses", err) - return - } - ctx.Data["Emails"] = emails + loadAccountData(ctx) ctx.HTML(200, tplSettingsAccount) } @@ -40,6 +35,8 @@ func AccountPost(ctx *context.Context, form auth.ChangePasswordForm) { ctx.Data["PageIsSettingsAccount"] = true if ctx.HasError() { + loadAccountData(ctx) + ctx.HTML(200, tplSettingsAccount) return } @@ -85,15 +82,9 @@ func EmailPost(ctx *context.Context, form auth.AddEmailForm) { return } - // Add Email address. - emails, err := models.GetEmailAddresses(ctx.User.ID) - if err != nil { - ctx.ServerError("GetEmailAddresses", err) - return - } - ctx.Data["Emails"] = emails - if ctx.HasError() { + loadAccountData(ctx) + ctx.HTML(200, tplSettingsAccount) return } @@ -105,6 +96,8 @@ func EmailPost(ctx *context.Context, form auth.AddEmailForm) { } if err := models.AddEmailAddress(email); err != nil { if models.IsErrEmailAlreadyUsed(err) { + loadAccountData(ctx) + ctx.RenderWithErr(ctx.Tr("form.email_been_used"), tplSettingsAccount, &form) return } @@ -149,6 +142,8 @@ func DeleteAccount(ctx *context.Context) { if _, err := models.UserSignIn(ctx.User.Name, ctx.Query("password")); err != nil { if models.IsErrUserNotExist(err) { + loadAccountData(ctx) + ctx.RenderWithErr(ctx.Tr("form.enterred_invalid_password"), tplSettingsAccount, nil) } else { ctx.ServerError("UserSignIn", err) @@ -172,3 +167,12 @@ func DeleteAccount(ctx *context.Context) { ctx.Redirect(setting.AppSubURL + "/") } } + +func loadAccountData(ctx *context.Context) { + emails, err := models.GetEmailAddresses(ctx.User.ID) + if err != nil { + ctx.ServerError("GetEmailAddresses", err) + return + } + ctx.Data["Emails"] = emails +} diff --git a/routers/user/setting/applications.go b/routers/user/setting/applications.go index f292b65d7..ac7252469 100644 --- a/routers/user/setting/applications.go +++ b/routers/user/setting/applications.go @@ -22,12 +22,7 @@ func Applications(ctx *context.Context) { ctx.Data["Title"] = ctx.Tr("settings") ctx.Data["PageIsSettingsApplications"] = true - tokens, err := models.ListAccessTokens(ctx.User.ID) - if err != nil { - ctx.ServerError("ListAccessTokens", err) - return - } - ctx.Data["Tokens"] = tokens + loadApplicationsData(ctx) ctx.HTML(200, tplSettingsApplications) } @@ -38,12 +33,8 @@ func ApplicationsPost(ctx *context.Context, form auth.NewAccessTokenForm) { ctx.Data["PageIsSettingsApplications"] = true if ctx.HasError() { - tokens, err := models.ListAccessTokens(ctx.User.ID) - if err != nil { - ctx.ServerError("ListAccessTokens", err) - return - } - ctx.Data["Tokens"] = tokens + loadApplicationsData(ctx) + ctx.HTML(200, tplSettingsApplications) return } @@ -75,3 +66,12 @@ func DeleteApplication(ctx *context.Context) { "redirect": setting.AppSubURL + "/user/settings/applications", }) } + +func loadApplicationsData(ctx *context.Context) { + tokens, err := models.ListAccessTokens(ctx.User.ID) + if err != nil { + ctx.ServerError("ListAccessTokens", err) + return + } + ctx.Data["Tokens"] = tokens +} diff --git a/routers/user/setting/keys.go b/routers/user/setting/keys.go index ef986ef8c..c62b117a7 100644 --- a/routers/user/setting/keys.go +++ b/routers/user/setting/keys.go @@ -23,19 +23,7 @@ func Keys(ctx *context.Context) { ctx.Data["PageIsSettingsKeys"] = true ctx.Data["DisableSSH"] = setting.SSH.Disabled - keys, err := models.ListPublicKeys(ctx.User.ID) - if err != nil { - ctx.ServerError("ListPublicKeys", err) - return - } - ctx.Data["Keys"] = keys - - gpgkeys, err := models.ListGPGKeys(ctx.User.ID) - if err != nil { - ctx.ServerError("ListGPGKeys", err) - return - } - ctx.Data["GPGKeys"] = gpgkeys + loadKeysData(ctx) ctx.HTML(200, tplSettingsKeys) } @@ -45,21 +33,9 @@ func KeysPost(ctx *context.Context, form auth.AddKeyForm) { ctx.Data["Title"] = ctx.Tr("settings") ctx.Data["PageIsSettingsKeys"] = true - keys, err := models.ListPublicKeys(ctx.User.ID) - if err != nil { - ctx.ServerError("ListPublicKeys", err) - return - } - ctx.Data["Keys"] = keys - - gpgkeys, err := models.ListGPGKeys(ctx.User.ID) - if err != nil { - ctx.ServerError("ListGPGKeys", err) - return - } - ctx.Data["GPGKeys"] = gpgkeys - if ctx.HasError() { + loadKeysData(ctx) + ctx.HTML(200, tplSettingsKeys) return } @@ -73,9 +49,13 @@ func KeysPost(ctx *context.Context, form auth.AddKeyForm) { ctx.Flash.Error(ctx.Tr("form.invalid_gpg_key", err.Error())) ctx.Redirect(setting.AppSubURL + "/user/settings/keys") case models.IsErrGPGKeyIDAlreadyUsed(err): + loadKeysData(ctx) + ctx.Data["Err_Content"] = true ctx.RenderWithErr(ctx.Tr("settings.gpg_key_id_used"), tplSettingsKeys, &form) case models.IsErrGPGNoEmailFound(err): + loadKeysData(ctx) + ctx.Data["Err_Content"] = true ctx.RenderWithErr(ctx.Tr("settings.gpg_no_key_email_found"), tplSettingsKeys, &form) default: @@ -103,9 +83,13 @@ func KeysPost(ctx *context.Context, form auth.AddKeyForm) { ctx.Data["HasSSHError"] = true switch { case models.IsErrKeyAlreadyExist(err): + loadKeysData(ctx) + ctx.Data["Err_Content"] = true ctx.RenderWithErr(ctx.Tr("settings.ssh_key_been_used"), tplSettingsKeys, &form) case models.IsErrKeyNameAlreadyUsed(err): + loadKeysData(ctx) + ctx.Data["Err_Title"] = true ctx.RenderWithErr(ctx.Tr("settings.ssh_key_name_used"), tplSettingsKeys, &form) default: @@ -147,3 +131,19 @@ func DeleteKey(ctx *context.Context) { "redirect": setting.AppSubURL + "/user/settings/keys", }) } + +func loadKeysData(ctx *context.Context) { + keys, err := models.ListPublicKeys(ctx.User.ID) + if err != nil { + ctx.ServerError("ListPublicKeys", err) + return + } + ctx.Data["Keys"] = keys + + gpgkeys, err := models.ListGPGKeys(ctx.User.ID) + if err != nil { + ctx.ServerError("ListGPGKeys", err) + return + } + ctx.Data["GPGKeys"] = gpgkeys +} diff --git a/routers/user/setting/profile.go b/routers/user/setting/profile.go index cf222d002..22511ab89 100644 --- a/routers/user/setting/profile.go +++ b/routers/user/setting/profile.go @@ -32,6 +32,7 @@ const ( func Profile(ctx *context.Context) { ctx.Data["Title"] = ctx.Tr("settings") ctx.Data["PageIsSettingsProfile"] = true + ctx.HTML(200, tplSettingsProfile) } diff --git a/routers/user/setting/security.go b/routers/user/setting/security.go index 860730303..862e4413c 100644 --- a/routers/user/setting/security.go +++ b/routers/user/setting/security.go @@ -22,6 +22,30 @@ func Security(ctx *context.Context) { ctx.Data["Title"] = ctx.Tr("settings") ctx.Data["PageIsSettingsSecurity"] = true + if ctx.Query("openid.return_to") != "" { + settingsOpenIDVerify(ctx) + return + } + + loadSecurityData(ctx) + + ctx.HTML(200, tplSettingsSecurity) +} + +// DeleteAccountLink delete a single account link +func DeleteAccountLink(ctx *context.Context) { + if _, err := models.RemoveAccountLink(ctx.User, ctx.QueryInt64("loginSourceID")); err != nil { + ctx.Flash.Error("RemoveAccountLink: " + err.Error()) + } else { + ctx.Flash.Success(ctx.Tr("settings.remove_account_link_success")) + } + + ctx.JSON(200, map[string]interface{}{ + "redirect": setting.AppSubURL + "/user/settings/security", + }) +} + +func loadSecurityData(ctx *context.Context) { enrolled := true _, err := models.GetTwoFactorByUID(ctx.User.ID) if err != nil { @@ -71,30 +95,10 @@ func Security(ctx *context.Context) { } ctx.Data["AccountLinks"] = sources - if ctx.Query("openid.return_to") != "" { - settingsOpenIDVerify(ctx) - return - } - openid, err := models.GetUserOpenIDs(ctx.User.ID) if err != nil { ctx.ServerError("GetUserOpenIDs", err) return } ctx.Data["OpenIDs"] = openid - - ctx.HTML(200, tplSettingsSecurity) -} - -// DeleteAccountLink delete a single account link -func DeleteAccountLink(ctx *context.Context) { - if _, err := models.RemoveAccountLink(ctx.User, ctx.QueryInt64("loginSourceID")); err != nil { - ctx.Flash.Error("RemoveAccountLink: " + err.Error()) - } else { - ctx.Flash.Success(ctx.Tr("settings.remove_account_link_success")) - } - - ctx.JSON(200, map[string]interface{}{ - "redirect": setting.AppSubURL + "/user/settings/security", - }) } diff --git a/routers/user/setting/security_openid.go b/routers/user/setting/security_openid.go index c98dc2cda..6813765f6 100644 --- a/routers/user/setting/security_openid.go +++ b/routers/user/setting/security_openid.go @@ -19,12 +19,8 @@ func OpenIDPost(ctx *context.Context, form auth.AddOpenIDForm) { ctx.Data["PageIsSettingsSecurity"] = true if ctx.HasError() { - openid, err := models.GetUserOpenIDs(ctx.User.ID) - if err != nil { - ctx.ServerError("GetUserOpenIDs", err) - return - } - ctx.Data["OpenIDs"] = openid + loadSecurityData(ctx) + ctx.HTML(200, tplSettingsSecurity) return } @@ -37,6 +33,8 @@ func OpenIDPost(ctx *context.Context, form auth.AddOpenIDForm) { id, err := openid.Normalize(form.Openid) if err != nil { + loadSecurityData(ctx) + ctx.RenderWithErr(err.Error(), tplSettingsSecurity, &form) return } @@ -53,6 +51,8 @@ func OpenIDPost(ctx *context.Context, form auth.AddOpenIDForm) { // Check that the OpenID is not already used for _, obj := range oids { if obj.URI == id { + loadSecurityData(ctx) + ctx.RenderWithErr(ctx.Tr("form.openid_been_used", id), tplSettingsSecurity, &form) return } @@ -61,6 +61,8 @@ func OpenIDPost(ctx *context.Context, form auth.AddOpenIDForm) { redirectTo := setting.AppURL + "user/settings/security" url, err := openid.RedirectURL(id, redirectTo, setting.AppURL) if err != nil { + loadSecurityData(ctx) + ctx.RenderWithErr(err.Error(), tplSettingsSecurity, &form) return } @@ -73,13 +75,6 @@ func settingsOpenIDVerify(ctx *context.Context) { fullURL := setting.AppURL + ctx.Req.Request.URL.String()[1:] log.Trace("Full URL: " + fullURL) - oids, err := models.GetUserOpenIDs(ctx.User.ID) - if err != nil { - ctx.ServerError("GetUserOpenIDs", err) - return - } - ctx.Data["OpenIDs"] = oids - id, err := openid.Verify(fullURL) if err != nil { ctx.RenderWithErr(err.Error(), tplSettingsSecurity, &auth.AddOpenIDForm{ From 8c6b2324a71bd1335d80fac6db6921b0aa6a3009 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20M?= Date: Tue, 19 Jun 2018 10:48:50 +0200 Subject: [PATCH 11/12] Fix missing close tags in U2F (#4256) --- custom/conf/app.ini.sample | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/custom/conf/app.ini.sample b/custom/conf/app.ini.sample index ef88e5c32..f823f68e4 100644 --- a/custom/conf/app.ini.sample +++ b/custom/conf/app.ini.sample @@ -601,9 +601,9 @@ ko-KR = ko [U2F] ; Two Factor authentication with security keys ; https://developers.yubico.com/U2F/App_ID.html -APP_ID = %(PROTOCOL)s://%(DOMAIN)s:%(HTTP_PORT)s +APP_ID = %(PROTOCOL)s://%(DOMAIN)s:%(HTTP_PORT)s/ ; Comma seperated list of truisted facets -TRUSTED_FACETS = %(PROTOCOL)s://%(DOMAIN)s:%(HTTP_PORT)s +TRUSTED_FACETS = %(PROTOCOL)s://%(DOMAIN)s:%(HTTP_PORT)s/ ; Extension mapping to highlight class ; e.g. .toml=ini From 3f2f5752cb7829c8f49bdb0f03704230493347ac Mon Sep 17 00:00:00 2001 From: GiteaBot Date: Tue, 19 Jun 2018 08:51:02 +0000 Subject: [PATCH 12/12] [skip ci] Updated translations via Crowdin --- options/locale/locale_uk-UA.ini | 20 ++++++++++++++------ options/locale/locale_zh-CN.ini | 1 + 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/options/locale/locale_uk-UA.ini b/options/locale/locale_uk-UA.ini index b3e8a2fe0..8f90f3a3f 100644 --- a/options/locale/locale_uk-UA.ini +++ b/options/locale/locale_uk-UA.ini @@ -204,7 +204,7 @@ non_local_account=Нелокальні акаунти не можуть змін verify=Підтвердити scratch_code=Одноразовий пароль use_scratch_code=Використовувати одноразовий пароль -twofa_scratch_used=Ви використовували одноразовий пароль. Ви були перенаправлені на сторінку налаштувань для генерації нового коду або відключення двуфакторной аутентифікації. +twofa_scratch_used=Ви використовували одноразовий пароль. Ви були перенаправлені на сторінку налаштувань для генерації нового коду або відключення двуфакторної автентифікації. twofa_passcode_incorrect=Ваш пароль є невірним. Якщо ви втратили пристрій, використовуйте ваш одноразовий пароль. twofa_scratch_token_incorrect=Невірний одноразовий пароль. login_userpass=Увійти @@ -399,20 +399,25 @@ generate_token=Згенерувати токен delete_token=Видалити access_token_deletion=Видалити токен доступу -twofa_desc=Двофакторна аутентифікація підвищує безпеку вашого облікового запису. +twofa_desc=Двофакторна автентифікація підвищує безпеку вашого облікового запису. twofa_is_enrolled=Ваш обліковий запис на даний час використовує двофакторну автентифікацію. twofa_disable=Вимкнути двофакторну автентифікацію +twofa_scratch_token_regenerate=Перестворити токен одноразового пароля twofa_enroll=Увімкнути двофакторну автентифікацію +twofa_disable_note=При необхідності можна відключити двофакторну автентифікацію. +regenerate_scratch_token_desc=Якщо ви втратили свій токен одноразового пароля або вже використовували його для входу, ви можете скинути його тут. twofa_disabled=Двофакторна автентифікація вимкнена. -scan_this_image=Проскануйте це зображення вашим додатком для двуфакторної аутентифікації: +scan_this_image=Проскануйте це зображення вашим додатком для двуфакторної автентифікації: or_enter_secret=Або введіть секрет: %s passcode_invalid=Некоректний пароль. Спробуй ще раз. +u2f_desc=Ключами безпеки є апаратні пристрої, що містять криптографічні ключі. Вони можуть використовуватися для двофакторної автентифікації. Ключ безпеки повинен підтримувати стандарт FIDO U2F. u2f_register_key=Додати ключ безпеки u2f_nickname=Псевдонім u2f_delete_key=Видалити ключ безпеки manage_account_links=Керування обліковими записами +manage_account_links_desc=Ці зовнішні акаунти прив'язані до вашого аккаунту Gitea. remove_account_link=Видалити облікові записи orgs_none=Ви не є учасником будь-якої організації. @@ -428,6 +433,7 @@ owner=Власник repo_name=Назва репозиторію visibility=Видимість visiblity_helper=Зробити репозиторій приватним +visiblity_fork_helper=(Зміна цього вплине на всі форки.) clone_helper=Потрібна допомога у клонуванні? Відвідайте Допомогу. fork_repo=Форкнути репозиторій fork_from=Форк з @@ -607,6 +613,7 @@ issues.filter_sort.leastcomment=Найменш коментовані issues.filter_sort.moststars=Найбільш обраних issues.filter_sort.feweststars=Найменш обраних issues.filter_sort.mostforks=Найбільше форків +issues.filter_sort.fewestforks=Найменше форків issues.action_open=Відкрити issues.action_close=Закрити issues.action_label=Мітка @@ -971,6 +978,7 @@ topic.done=Готово [org] org_name_holder=Назва організації org_full_name_holder=Повна назва організації +org_name_helper=Назва організації має бути простою та зрозумілою. create_org=Створити організацію repo_updated=Оновлено people=Учасники @@ -1133,7 +1141,7 @@ repos.forks=Форки repos.issues=Проблеми repos.size=Розмір -auths.auth_manage_panel=Керування джерелом аутентифікації +auths.auth_manage_panel=Керування джерелом автентифікації auths.new=Додати джерело автентифікації auths.name=Ім'я auths.type=Тип @@ -1170,8 +1178,8 @@ auths.oauth2_profileURL=URL профілю auths.oauth2_emailURL=URL електронної пошти auths.enable_auto_register=Увімкнути автоматичну реєстрацію auths.tips=Поради -auths.tips.oauth2.general=OAuth2 аутентифікація -auths.tips.oauth2.general.tip=При додаванні нового OAuth2 провайдера, URL адреса переадресації по завершенні аутентифікації повинена виглядати так:/user/oauth2//callback +auths.tips.oauth2.general=OAuth2 автентифікація +auths.tips.oauth2.general.tip=При додаванні нового OAuth2 провайдера, URL адреса переадресації по завершенні автентифікації повинена виглядати так:/user/oauth2//callback auths.tip.oauth2_provider=Постачальник OAuth2 auths.tip.dropbox=Додайте новий додаток на https://www.dropbox.com/developers/apps auths.tip.facebook=Створіть новий додаток на https://developers.facebook.com/apps і додайте модуль "Facebook Login diff --git a/options/locale/locale_zh-CN.ini b/options/locale/locale_zh-CN.ini index 658f133a2..4e59ed08e 100644 --- a/options/locale/locale_zh-CN.ini +++ b/options/locale/locale_zh-CN.ini @@ -213,6 +213,7 @@ send_reset_mail=单击此处(重新)发送您的密码重置邮件 reset_password=重置密码 invalid_code=此确认密钥无效或已过期。 reset_password_helper=单击此处重置密码 +password_too_short=密码长度不能少于 %d 位。 non_local_account=非本地帐户不能通过 Gitea 的 web 界面更改密码。 verify=验证 scratch_code=验证口令