From 20588517fc5ed86c77865d879027618a1eb54106 Mon Sep 17 00:00:00 2001 From: Tusooa Zhu Date: Wed, 13 Jul 2022 18:31:35 -0400 Subject: Make admin api use translated config descriptions --- .../web/admin_api/controllers/config_controller.ex | 34 +++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) (limited to 'lib/pleroma/web/admin_api/controllers/config_controller.ex') 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 -- cgit v1.2.3 From 1d7e8d6e013bb39e6ca61bd595a22490412db084 Mon Sep 17 00:00:00 2001 From: Tusooa Zhu Date: Thu, 14 Jul 2022 17:41:33 -0400 Subject: Pass in msgctxt for config translation strings --- .../web/admin_api/controllers/config_controller.ex | 42 +++++++++++++++------- 1 file changed, 29 insertions(+), 13 deletions(-) (limited to 'lib/pleroma/web/admin_api/controllers/config_controller.ex') diff --git a/lib/pleroma/web/admin_api/controllers/config_controller.ex b/lib/pleroma/web/admin_api/controllers/config_controller.ex index f6fbbc910..a03318c0e 100644 --- a/lib/pleroma/web/admin_api/controllers/config_controller.ex +++ b/lib/pleroma/web/admin_api/controllers/config_controller.ex @@ -22,35 +22,51 @@ 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) + defp translate_descriptions(descriptions, path \\ []) do + Enum.map(descriptions, fn desc -> translate_item(desc, path) end) end - defp translate_string(str) do - Gettext.dgettext(Pleroma.Web.Gettext, "config_descriptions", str) + defp translate_string(str, path, type) do + Gettext.dpgettext( + Pleroma.Web.Gettext, + "config_descriptions", + Pleroma.Docs.Translator.Compiler.msgctxt_for(path, type), + str + ) end - defp maybe_put_translated(item, key) do + defp maybe_put_translated(item, key, path) do if item[key] do - Map.put(item, key, translate_string(item[key])) + Map.put( + item, + key, + translate_string( + item[key], + path ++ [Pleroma.Docs.Translator.Compiler.key_for(item)], + to_string(key) + ) + ) else item end end - defp translate_item(item) do + defp translate_item(item, path) do item - |> maybe_put_translated(:label) - |> maybe_put_translated(:description) - |> translate_children() + |> maybe_put_translated(:label, path) + |> maybe_put_translated(:description, path) + |> translate_children(path) end - defp translate_children(%{children: children} = item) when is_list(children) do + defp translate_children(%{children: children} = item, path) when is_list(children) do item - |> Map.put(:children, translate_descriptions(children)) + |> Map.put( + :children, + translate_descriptions(children, path ++ [Pleroma.Docs.Translator.Compiler.key_for(item)]) + ) end - defp translate_children(item) do + defp translate_children(item, _path) do item end -- cgit v1.2.3