diff --git a/lib/outlook/translators.ex b/lib/outlook/translators.ex index d3b9d16..ca5ab7f 100644 --- a/lib/outlook/translators.ex +++ b/lib/outlook/translators.ex @@ -73,7 +73,7 @@ defmodule Outlook.Translators do defp prepare_article(tree) do # Logger.info "so far." - HtmlDocComponent.render_doc(%{tree: tree}) + HtmlDocComponent.render_doc(%{tree: tree, tunit_tag: "tunit"}) |> Phoenix.HTML.Safe.to_iodata() |> IO.iodata_to_binary() end @@ -86,7 +86,7 @@ defmodule Outlook.Translators do def process_translation(translation, tunit_ids) do tunit_map = translation |> Floki.parse_fragment! - |> Floki.find("span.tunit") + |> Floki.find("tunit") |> Enum.map(fn {_,atts,cont} -> %TranslationUnit{ nid: Enum.find(atts, fn {k,_} -> k == "nid" end) |> Tuple.to_list |> Enum.at(1), diff --git a/lib/outlook/translators/deepl.ex b/lib/outlook/translators/deepl.ex index a42b4d4..b94c7f8 100644 --- a/lib/outlook/translators/deepl.ex +++ b/lib/outlook/translators/deepl.ex @@ -26,6 +26,8 @@ defmodule Outlook.Translators.Deepl do [ {"source_lang", options.source_lang}, {"target_lang", options.target_lang}, + {"tag_handling", "xml"}, + {"splitting_tags", "tunit"}, {"file", content, {"form-data", [{:name, "file"}, {:filename, "datei.html"}]}, []} ] ) diff --git a/lib/outlook_web/components/html_doc_component.ex b/lib/outlook_web/components/html_doc_component.ex index 629d4cd..f92508b 100644 --- a/lib/outlook_web/components/html_doc_component.ex +++ b/lib/outlook_web/components/html_doc_component.ex @@ -9,17 +9,22 @@ defmodule OutlookWeb.HtmlDocComponent do attr :tree, :list, required: true - def render_doc(assigns) do + def render_doc(%{tunit_tag: _} = assigns) do ~H""" <%= for node <- @tree do %> - <.dnode node={node} /> + <.dnode node={node} tunit_tag={@tunit_tag} /> <% end %> """ end + def render_doc(assigns) do + assigns + |> assign(:tunit_tag, "span") + |> render_doc() + end def dnode(%{node: %{status: status}} = assigns) do ~H""" - <.dynamic_tag name="span" class="tunit" nid={@node.nid} {Map.get(@node.eph, :attributes, %{})}> + <.dynamic_tag name={@tunit_tag} class="tunit" nid={@node.nid} {Map.get(@node.eph, :attributes, %{})}> <%= @node.content |> raw %> """ @@ -27,9 +32,9 @@ defmodule OutlookWeb.HtmlDocComponent do def dnode(assigns) when assigns.node.type == :element do ~H""" - <.dynamic_tag name={@node.name} nid={@node.nid} {Map.get(@node.eph, :attributes, %{})}> + <.dynamic_tag name={@node.name} nid={@node.nid} {@node.attributes |> Map.merge(Map.get(@node.eph, :attributes, %{}))}> <%= for child_node <- @node.content do %> - <.dnode node={child_node} /> + <.dnode node={child_node} tunit_tag={@tunit_tag} /> <% end %> """