diff --git a/lib/pleroma/language/language_detector.ex b/lib/pleroma/language/language_detector.ex index 42d200a28..2efe22d5e 100644 --- a/lib/pleroma/language/language_detector.ex +++ b/lib/pleroma/language/language_detector.ex @@ -3,8 +3,17 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Language.LanguageDetector do + import Pleroma.EctoType.ActivityPub.ObjectValidators.LanguageCode, + only: [good_locale_code?: 1] + @words_threshold 4 + def configured? do + provider = get_provider() + + !!provider and provider.configured? + end + def missing_dependencies do provider = get_provider() @@ -34,7 +43,12 @@ defmodule Pleroma.Language.LanguageDetector do if word_count < @words_threshold or !provider or !provider.configured? do nil else - provider.detect(text) + with language <- provider.detect(text), + true <- good_locale_code?(language) do + language + else + _ -> nil + end end end diff --git a/lib/pleroma/web/mastodon_api/views/instance_view.ex b/lib/pleroma/web/mastodon_api/views/instance_view.ex index d9cff1504..00ca06243 100644 --- a/lib/pleroma/web/mastodon_api/views/instance_view.ex +++ b/lib/pleroma/web/mastodon_api/views/instance_view.ex @@ -146,7 +146,7 @@ defmodule Pleroma.Web.MastodonAPI.InstanceView do "pleroma:get:main/ostatus", "pleroma:group_actors", "pleroma:bookmark_folders", - if Config.get([Pleroma.Language.LanguageDetector, :provider]) do + if Pleroma.Language.LanguageDetector.configured?() do "pleroma:language_detection" end ]