aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/docs/translator/compiler.ex
diff options
context:
space:
mode:
authorTusooa Zhu <tusooa@kazv.moe>2022-07-14 17:41:33 -0400
committerTusooa Zhu <tusooa@kazv.moe>2022-07-14 17:41:33 -0400
commit1d7e8d6e013bb39e6ca61bd595a22490412db084 (patch)
tree82c735a452239a06ce569bd051e27899b793d8cf /lib/pleroma/docs/translator/compiler.ex
parent074a94e90d44a7c173606c277270eea1327ea42a (diff)
downloadpleroma-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.ex62
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