mirror of
https://git.pleroma.social/pleroma/pleroma.git
synced 2024-09-26 13:30:04 +00:00
Detect language for incoming posts
Signed-off-by: marcin mikołajczak <git@mkljczk.pl>
This commit is contained in:
parent
9932aeffc5
commit
80dbbd5501
2 changed files with 10 additions and 2 deletions
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
defmodule Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes do
|
defmodule Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes do
|
||||||
alias Pleroma.EctoType.ActivityPub.ObjectValidators
|
alias Pleroma.EctoType.ActivityPub.ObjectValidators
|
||||||
|
alias Pleroma.Language.LanguageDetector
|
||||||
alias Pleroma.Maps
|
alias Pleroma.Maps
|
||||||
alias Pleroma.Object
|
alias Pleroma.Object
|
||||||
alias Pleroma.Object.Containment
|
alias Pleroma.Object.Containment
|
||||||
|
@ -145,7 +146,8 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes do
|
||||||
language =
|
language =
|
||||||
[
|
[
|
||||||
get_language_from_context(object),
|
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))
|
|> 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_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)
|
def maybe_add_content_map(%{"language" => language, "content" => content} = object)
|
||||||
when not_empty_string(language) do
|
when not_empty_string(language) do
|
||||||
Map.put(object, "contentMap", Map.put(%{}, language, content))
|
Map.put(object, "contentMap", Map.put(%{}, language, content))
|
||||||
|
|
|
@ -14,5 +14,5 @@ defmodule LanguageDetectorMock do
|
||||||
def configured?, do: true
|
def configured?, do: true
|
||||||
|
|
||||||
@impl Provider
|
@impl Provider
|
||||||
def detect(text), do: "fr"
|
def detect(_text), do: "fr"
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue