Add supported languages list to /api/v2/instance

Signed-off-by: marcin mikołajczak <git@mkljczk.pl>
This commit is contained in:
marcin mikołajczak 2022-11-08 23:09:42 +01:00
commit 28f8bb00d8
9 changed files with 155 additions and 25 deletions

View file

@ -6,9 +6,9 @@ defmodule Pleroma.Language.Translation do
@cachex Pleroma.Config.get([:cachex, :provider], Cachex)
def configured? do
service = get_service()
provider = get_provider()
!!service and service.configured?
!!provider and provider.configured?
end
def translate(text, source_language, target_language) do
@ -16,13 +16,13 @@ defmodule Pleroma.Language.Translation do
case @cachex.get(:translations_cache, cache_key) do
{:ok, nil} ->
service = get_service()
provider = get_provider()
result =
if !service or !service.configured? do
if !configured?() do
{:error, :not_found}
else
service.translate(text, source_language, target_language)
provider.translate(text, source_language, target_language)
end
store_result(result, cache_key)
@ -37,7 +37,33 @@ defmodule Pleroma.Language.Translation do
end
end
defp get_service, do: Pleroma.Config.get([__MODULE__, :provider])
def supported_languages(type) when type in [:source, :target] do
provider = get_provider()
cache_key = "#{type}_languages/#{provider.name()}"
case @cachex.get(:translations_cache, cache_key) do
{:ok, nil} ->
result =
if !configured?() do
{:error, :not_found}
else
provider.supported_languages(type)
end
store_result(result, cache_key)
result
{:ok, result} ->
{:ok, result}
{:error, error} ->
{:error, error}
end
end
defp get_provider, do: Pleroma.Config.get([__MODULE__, :provider])
defp get_cache_key(text, source_language, target_language) do
"#{source_language}/#{target_language}/#{content_hash(text)}"