commit: 80dbbd5501a0665656aadc3b76f3db7d1da9becb
parent 9932aeffc5b1469c9e42799d31f4599fc3db993b
Author: marcin mikołajczak <git@mkljczk.pl>
Date: Thu, 25 Apr 2024 23:11:12 +0200
Detect language for incoming posts
Signed-off-by: marcin mikołajczak <git@mkljczk.pl>
Diffstat:
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
@@ -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
@@ -14,5 +14,5 @@ defmodule LanguageDetectorMock do
def configured?, do: true
@impl Provider
- def detect(text), do: "fr"
+ def detect(_text), do: "fr"
end