diff options
author | Tusooa Zhu <tusooa@kazv.moe> | 2022-07-14 17:41:33 -0400 |
---|---|---|
committer | Tusooa Zhu <tusooa@kazv.moe> | 2022-07-14 17:41:33 -0400 |
commit | 1d7e8d6e013bb39e6ca61bd595a22490412db084 (patch) | |
tree | 82c735a452239a06ce569bd051e27899b793d8cf /lib/pleroma/docs/translator/compiler.ex | |
parent | 074a94e90d44a7c173606c277270eea1327ea42a (diff) | |
download | pleroma-1d7e8d6e013bb39e6ca61bd595a22490412db084.tar.gz |
Pass in msgctxt for config translation strings
Diffstat (limited to 'lib/pleroma/docs/translator/compiler.ex')
-rw-r--r-- | lib/pleroma/docs/translator/compiler.ex | 62 |
1 files changed, 53 insertions, 9 deletions
diff --git a/lib/pleroma/docs/translator/compiler.ex b/lib/pleroma/docs/translator/compiler.ex index 21c02b50b..5d27d9fa2 100644 --- a/lib/pleroma/docs/translator/compiler.ex +++ b/lib/pleroma/docs/translator/compiler.ex @@ -17,9 +17,15 @@ defmodule Pleroma.Docs.Translator.Compiler do unquote do Enum.map( strings, - fn string -> + fn {path, type, string} -> + ctxt = msgctxt_for(path, type) + quote do - Pleroma.Web.Gettext.dgettext_noop("config_descriptions", unquote(string)) + Pleroma.Web.Gettext.dpgettext_noop( + "config_descriptions", + unquote(ctxt), + unquote(string) + ) end end ) @@ -36,7 +42,8 @@ defmodule Pleroma.Docs.Translator.Compiler do def extract_strings(descriptions) do descriptions - |> Enum.reduce([], &process_item/2) + |> Enum.reduce(%{strings: [], path: []}, &process_item/2) + |> Map.get(:strings) end defp process_item(entity, acc) do @@ -48,28 +55,65 @@ defmodule Pleroma.Docs.Translator.Compiler do process_children(entity, current_level) end - defp process_desc(acc, %{description: desc}) do - [desc | acc] + defp process_desc(acc, %{description: desc} = item) do + %{ + strings: [{acc.path ++ [key_for(item)], "description", desc} | acc.strings], + path: acc.path + } end defp process_desc(acc, _) do acc end - defp process_label(acc, %{label: label}) do - [label | acc] + defp process_label(acc, %{label: label} = item) do + %{ + strings: [{acc.path ++ [key_for(item)], "label", label} | acc.strings], + path: acc.path + } end defp process_label(acc, _) do acc end - defp process_children(%{children: children}, acc) do + defp process_children(%{children: children} = item, acc) do + current_level = Map.put(acc, :path, acc.path ++ [key_for(item)]) + children - |> Enum.reduce(acc, &process_item/2) + |> Enum.reduce(current_level, &process_item/2) + |> Map.put(:path, acc.path) end defp process_children(_, acc) do acc end + + def msgctxt_for(path, type) do + "config #{type} at #{Enum.join(path, " > ")}" + end + + defp convert_group({_, group}) do + group + end + + defp convert_group(group) do + group + end + + def key_for(%{group: group, key: key}) do + "#{convert_group(group)}-#{key}" + end + + def key_for(%{group: group}) do + convert_group(group) + end + + def key_for(%{key: key}) do + key + end + + def key_for(_) do + nil + end end |