Merge branch 'translate-posts' into 'develop'

Support translation providers (DeepL, LibreTranslate)

See merge request pleroma/pleroma!4102
This commit is contained in:
lain 2025-03-20 09:11:57 +00:00
commit 81960dccf2
23 changed files with 815 additions and 6 deletions

View file

@ -1706,6 +1706,24 @@ defmodule HttpRequestMock do
}}
end
def post("https://api-free.deepl.com/v2/translate" <> _, _, _, _) do
{:ok,
%Tesla.Env{
status: 200,
body: File.read!("test/fixtures/tesla_mock/deepl-translation.json"),
headers: [{"content-type", "application/json"}]
}}
end
def post("https://api-free.deepl.com/v2/languages" <> _, _, _, _) do
{:ok,
%Tesla.Env{
status: 200,
body: File.read!("test/fixtures/tesla_mock/deepl-languages-list.json"),
headers: [{"content-type", "application/json"}]
}}
end
def post(url, query, body, headers) do
{:error,
"Mock response not implemented for POST #{inspect(url)}, #{query}, #{inspect(body)}, #{inspect(headers)}"}

View file

@ -0,0 +1,43 @@
# Pleroma: A lightweight social networking server
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule TranslationMock do
alias Pleroma.Language.Translation.Provider
use Provider
@behaviour Provider
@name "TranslationMock"
@impl Provider
def configured?, do: true
@impl Provider
def translate(content, source_language, _target_language) do
{:ok,
%{
content: content |> String.reverse(),
detected_source_language: source_language,
provider: @name
}}
end
@impl Provider
def supported_languages(_) do
{:ok, ["en", "pl"]}
end
@impl Provider
def languages_matrix do
{:ok,
%{
"en" => ["pl"],
"pl" => ["en"]
}}
end
@impl Provider
def name, do: @name
end