1 defmodule Pleroma.Akkoma.Translators.LibreTranslate do
2 @behaviour Pleroma.Akkoma.Translator
9 Config.get([:libre_translate, :api_key])
13 Config.get([:libre_translate, :url])
16 @impl Pleroma.Akkoma.Translator
17 def translate(string, to_language) do
18 with {:ok, %{status: 200} = response} <- do_request(string, to_language),
19 {:ok, body} <- Jason.decode(response.body) do
20 %{"translatedText" => translated, "detectedLanguage" => %{"language" => detected}} = body
22 {:ok, detected, translated}
24 {:ok, %{status: status} = response} ->
25 Logger.warning("libre_translate: request failed, #{inspect(response)}")
26 {:error, "libre_translate: request failed (code #{status})"}
33 defp do_request(string, to_language) do
34 url = URI.parse(url())
35 url = %{url | path: "/translate"}
47 {"content-type", "application/json"}