aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTusooa Zhu <tusooa@kazv.moe>2022-07-13 18:31:35 -0400
committerTusooa Zhu <tusooa@kazv.moe>2022-07-13 18:31:35 -0400
commit20588517fc5ed86c77865d879027618a1eb54106 (patch)
treef9cdcef277b01200d982b07cb5e1734d6bdf540d
parent36f6d92d987ccfcd3139f090efb449fb3c2f79d7 (diff)
downloadpleroma-20588517fc5ed86c77865d879027618a1eb54106.tar.gz
Make admin api use translated config descriptions
-rw-r--r--lib/pleroma/web/admin_api/controllers/config_controller.ex34
1 files changed, 33 insertions, 1 deletions
diff --git a/lib/pleroma/web/admin_api/controllers/config_controller.ex b/lib/pleroma/web/admin_api/controllers/config_controller.ex
index 55ab6d063..f6fbbc910 100644
--- a/lib/pleroma/web/admin_api/controllers/config_controller.ex
+++ b/lib/pleroma/web/admin_api/controllers/config_controller.ex
@@ -22,10 +22,42 @@ defmodule Pleroma.Web.AdminAPI.ConfigController do
defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.Admin.ConfigOperation
+ defp translate_descriptions(descriptions) do
+ Enum.map(descriptions, &translate_item/1)
+ end
+
+ defp translate_string(str) do
+ Gettext.dgettext(Pleroma.Web.Gettext, "config_descriptions", str)
+ end
+
+ defp maybe_put_translated(item, key) do
+ if item[key] do
+ Map.put(item, key, translate_string(item[key]))
+ else
+ item
+ end
+ end
+
+ defp translate_item(item) do
+ item
+ |> maybe_put_translated(:label)
+ |> maybe_put_translated(:description)
+ |> translate_children()
+ end
+
+ defp translate_children(%{children: children} = item) when is_list(children) do
+ item
+ |> Map.put(:children, translate_descriptions(children))
+ end
+
+ defp translate_children(item) do
+ item
+ end
+
def descriptions(conn, _params) do
descriptions = Enum.filter(Pleroma.Docs.JSON.compiled_descriptions(), &whitelisted_config?/1)
- json(conn, descriptions)
+ json(conn, translate_descriptions(descriptions))
end
def show(conn, %{only_db: true}) do