diff options
| author | Tusooa Zhu <tusooa@kazv.moe> | 2022-03-02 01:41:13 -0500 | 
|---|---|---|
| committer | Tusooa Zhu <tusooa@kazv.moe> | 2022-03-02 01:41:13 -0500 | 
| commit | e644f8dea52cb823076f63a18b18c1566c5190b6 (patch) | |
| tree | 309a2adb469c15e4839099d9e7bcb45410c195c7 /lib | |
| parent | 396f036b132271ebb0a6a88d28672792528b3b9c (diff) | |
| download | pleroma-e644f8dea52cb823076f63a18b18c1566c5190b6.tar.gz pleroma-e644f8dea52cb823076f63a18b18c1566c5190b6.zip | |
Allow user to register with custom language
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/pleroma/user.ex | 3 | ||||
| -rw-r--r-- | lib/pleroma/web/api_spec/operations/account_operation.ex | 5 | ||||
| -rw-r--r-- | lib/pleroma/web/gettext.ex | 8 | ||||
| -rw-r--r-- | lib/pleroma/web/mastodon_api/controllers/account_controller.ex | 2 | ||||
| -rw-r--r-- | lib/pleroma/web/plugs/set_locale_plug.ex | 2 | ||||
| -rw-r--r-- | lib/pleroma/web/twitter_api/twitter_api.ex | 6 | 
6 files changed, 23 insertions, 3 deletions
| diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index cc8a26b48..6bce832ea 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -747,7 +747,8 @@ defmodule Pleroma.User do        :emoji,        :accepts_chat_messages,        :registration_reason, -      :birthday +      :birthday, +      :language      ])      |> validate_required([:name, :nickname, :password, :password_confirmation])      |> validate_confirmation(:password) diff --git a/lib/pleroma/web/api_spec/operations/account_operation.ex b/lib/pleroma/web/api_spec/operations/account_operation.ex index 03efa3c38..c704ef5d6 100644 --- a/lib/pleroma/web/api_spec/operations/account_operation.ex +++ b/lib/pleroma/web/api_spec/operations/account_operation.ex @@ -549,6 +549,11 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do            nullable: true,            description: "User's birthday",            format: :date +        }, +        language: %Schema{ +          type: :string, +          nullable: true, +          description: "User's preferred language for emails"          }        },        example: %{ diff --git a/lib/pleroma/web/gettext.ex b/lib/pleroma/web/gettext.ex index e85290496..828b98b15 100644 --- a/lib/pleroma/web/gettext.ex +++ b/lib/pleroma/web/gettext.ex @@ -35,6 +35,14 @@ defmodule Pleroma.Web.Gettext do      |> String.replace("_", "-", global: true)    end +  def normalize_locale(locale) do +    if is_binary(locale) do +      String.replace(locale, "-", "_") +    else +      nil +    end +  end +    def supports_locale?(locale) do      Pleroma.Web.Gettext      |> Gettext.known_locales() diff --git a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex index 2c97cadc2..e1c68a98e 100644 --- a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex @@ -221,7 +221,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do        # Note: param name is indeed :discoverable (not an error)        |> Maps.put_if_present(:is_discoverable, params[:discoverable])        |> Maps.put_if_present(:birthday, params[:birthday]) -      |> Maps.put_if_present(:language, params[:language]) +      |> Maps.put_if_present(:language, Pleroma.Web.Gettext.normalize_locale(params[:language]))      # What happens here:      # diff --git a/lib/pleroma/web/plugs/set_locale_plug.ex b/lib/pleroma/web/plugs/set_locale_plug.ex index 3c3fffa81..4c6e44fb5 100644 --- a/lib/pleroma/web/plugs/set_locale_plug.ex +++ b/lib/pleroma/web/plugs/set_locale_plug.ex @@ -25,7 +25,7 @@ defmodule Pleroma.Web.Plugs.SetLocalePlug do    defp normalize_language_codes(codes) do      codes -    |> Enum.map(fn code -> String.replace(code, "-", "_") end) +    |> Enum.map(fn code -> Pleroma.Web.Gettext.normalize_locale(code) end)    end    defp extract_preferred_language(conn) do diff --git a/lib/pleroma/web/twitter_api/twitter_api.ex b/lib/pleroma/web/twitter_api/twitter_api.ex index aa4dfb145..a8a931f2a 100644 --- a/lib/pleroma/web/twitter_api/twitter_api.ex +++ b/lib/pleroma/web/twitter_api/twitter_api.ex @@ -12,6 +12,8 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do    alias Pleroma.UserInviteToken    def register_user(params, opts \\ []) do +    fallback_language = Gettext.get_locale() +      params =        params        |> Map.take([:email, :token, :password]) @@ -21,6 +23,10 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do        |> Map.put(:password_confirmation, params[:password])        |> Map.put(:registration_reason, params[:reason])        |> Map.put(:birthday, params[:birthday]) +      |> Map.put( +        :language, +        Pleroma.Web.Gettext.normalize_locale(params[:language]) || fallback_language +      )      if Pleroma.Config.get([:instance, :registrations_open]) do        create_user(params, opts) | 
