2022-10-30 18:52:26 +01:00
|
|
|
# Pleroma: A lightweight social networking server
|
|
|
|
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
|
|
|
|
# SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
|
|
2022-10-31 21:58:10 +01:00
|
|
|
defmodule Pleroma.Language.Translation.Provider do
|
2025-02-22 15:53:44 +01:00
|
|
|
alias Pleroma.Language.Translation.Provider
|
|
|
|
|
|
|
|
|
|
@callback missing_dependencies() :: [String.t()]
|
|
|
|
|
|
2022-10-30 18:52:26 +01:00
|
|
|
@callback configured?() :: boolean()
|
|
|
|
|
|
|
|
|
|
@callback translate(
|
|
|
|
|
content :: String.t(),
|
|
|
|
|
source_language :: String.t(),
|
|
|
|
|
target_language :: String.t()
|
|
|
|
|
) ::
|
|
|
|
|
{:ok,
|
|
|
|
|
%{
|
|
|
|
|
content: String.t(),
|
|
|
|
|
detected_source_language: String.t(),
|
|
|
|
|
provider: String.t()
|
|
|
|
|
}}
|
|
|
|
|
| {:error, atom()}
|
2022-11-08 23:09:42 +01:00
|
|
|
|
|
|
|
|
@callback supported_languages(type :: :string | :target) ::
|
|
|
|
|
{:ok, [String.t()]} | {:error, atom()}
|
|
|
|
|
|
2023-05-13 13:22:04 +02:00
|
|
|
@callback languages_matrix() :: {:ok, Map.t()} | {:error, atom()}
|
|
|
|
|
|
2022-11-08 23:09:42 +01:00
|
|
|
@callback name() :: String.t()
|
2025-02-22 15:53:44 +01:00
|
|
|
|
|
|
|
|
defmacro __using__(_opts) do
|
|
|
|
|
quote do
|
|
|
|
|
@impl Provider
|
|
|
|
|
def missing_dependencies, do: []
|
|
|
|
|
|
|
|
|
|
defoverridable missing_dependencies: 0
|
|
|
|
|
end
|
|
|
|
|
end
|
2022-10-30 18:52:26 +01:00
|
|
|
end
|