From 80dbbd5501a0665656aadc3b76f3db7d1da9becb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marcin=20miko=C5=82ajczak?= Date: Thu, 25 Apr 2024 23:11:12 +0200 Subject: [PATCH] Detect language for incoming posts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: marcin mikołajczak --- .../web/activity_pub/object_validators/common_fixes.ex | 10 +++++++++- test/support/language_detector_mock.ex | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/pleroma/web/activity_pub/object_validators/common_fixes.ex b/lib/pleroma/web/activity_pub/object_validators/common_fixes.ex index a9dc4a312..52afc827e 100644 --- a/lib/pleroma/web/activity_pub/object_validators/common_fixes.ex +++ b/lib/pleroma/web/activity_pub/object_validators/common_fixes.ex @@ -4,6 +4,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes do alias Pleroma.EctoType.ActivityPub.ObjectValidators + alias Pleroma.Language.LanguageDetector alias Pleroma.Maps alias Pleroma.Object alias Pleroma.Object.Containment @@ -145,7 +146,8 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes do language = [ get_language_from_context(object), - get_language_from_content_map(object) + get_language_from_content_map(object), + get_language_from_content(object) ] |> Enum.find(&good_locale_code?(&1)) @@ -180,6 +182,12 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes do defp get_language_from_content_map(_), do: nil + defp get_language_from_content(%{"summary" => summary, "content" => content}) do + LanguageDetector.detect("#{summary} #{content}") + end + + defp get_language_from_content(_), do: nil + def maybe_add_content_map(%{"language" => language, "content" => content} = object) when not_empty_string(language) do Map.put(object, "contentMap", Map.put(%{}, language, content)) diff --git a/test/support/language_detector_mock.ex b/test/support/language_detector_mock.ex index 2a85dcd63..3e6a258ae 100644 --- a/test/support/language_detector_mock.ex +++ b/test/support/language_detector_mock.ex @@ -14,5 +14,5 @@ defmodule LanguageDetectorMock do def configured?, do: true @impl Provider - def detect(text), do: "fr" + def detect(_text), do: "fr" end