Pass in msgctxt for config translation strings

This commit is contained in:
Tusooa Zhu 2022-07-14 17:41:33 -04:00
commit 1d7e8d6e01
No known key found for this signature in database
GPG key ID: 7B467EDE43A08224
4 changed files with 5799 additions and 4242 deletions

View file

@ -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