From b4782e24d2821bbb5647eff2eaf5c338e92324db Mon Sep 17 00:00:00 2001
From: zeripath <art27@cantab.net>
Date: Tue, 14 Dec 2021 05:08:09 +0000
Subject: [PATCH] Return nicer error for ForcePrivate (#17971)

---
 options/locale/locale_en-US.ini | 1 +
 routers/web/repo/setting.go     | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini
index 0debc518b..281922310 100644
--- a/options/locale/locale_en-US.ini
+++ b/options/locale/locale_en-US.ini
@@ -443,6 +443,7 @@ lang_select_error = Select a language from the list.
 username_been_taken = The username is already taken.
 username_change_not_local_user = Non-local users are not allowed to change their username.
 repo_name_been_taken = The repository name is already used.
+repository_force_private = Force Private is enabled: private repositories cannot be made public.
 repository_files_already_exist = Files already exist for this repository. Contact the system administrator.
 repository_files_already_exist.adopt = Files already exist for this repository and can only be Adopted.
 repository_files_already_exist.delete = Files already exist for this repository. You must delete them.
diff --git a/routers/web/repo/setting.go b/routers/web/repo/setting.go
index 81009cb39..a6b121995 100644
--- a/routers/web/repo/setting.go
+++ b/routers/web/repo/setting.go
@@ -144,7 +144,7 @@ func SettingsPost(ctx *context.Context) {
 		visibilityChanged := repo.IsPrivate != form.Private
 		// when ForcePrivate enabled, you could change public repo to private, but only admin users can change private to public
 		if visibilityChanged && setting.Repository.ForcePrivate && !form.Private && !ctx.User.IsAdmin {
-			ctx.ServerError("Force Private enabled", errors.New("cannot change private repository to public"))
+			ctx.RenderWithErr(ctx.Tr("form.repository_force_private"), tplSettingsOptions, form)
 			return
 		}