diff --git a/lib/who_need_help/accounts.ex b/lib/who_need_help/accounts.ex
index 521e07d..2139de2 100644
--- a/lib/who_need_help/accounts.ex
+++ b/lib/who_need_help/accounts.ex
@@ -819,6 +819,14 @@ defmodule WhoNeedHelp.Accounts do
UserNotifier.deliver_login_instructions(user, magic_link_url_fun.(encoded_token))
end
+ @doc "Delivers a one-time local-account verification link before connecting Google."
+ def deliver_google_link_instructions(%User{} = user, magic_link_url_fun)
+ when is_function(magic_link_url_fun, 1) do
+ {encoded_token, user_token} = UserToken.build_email_token(user, "login")
+ Repo.insert!(user_token)
+ UserNotifier.deliver_google_link_instructions(user, magic_link_url_fun.(encoded_token))
+ end
+
@doc """
Deletes the signed token with the given context.
"""
diff --git a/lib/who_need_help/accounts/user_notifier.ex b/lib/who_need_help/accounts/user_notifier.ex
index a6749dc..e18d9f5 100644
--- a/lib/who_need_help/accounts/user_notifier.ex
+++ b/lib/who_need_help/accounts/user_notifier.ex
@@ -49,6 +49,21 @@ defmodule WhoNeedHelp.Accounts.UserNotifier do
end
end
+ @doc "Delivers instructions for verifying a local account before connecting Google sign-in."
+ def deliver_google_link_instructions(user, url) do
+ with_user_locale(user, fn ->
+ deliver(
+ user.email,
+ gettext("Confirm Google sign-in"),
+ gettext(
+ "Hi %{email},\n\nUse the secure link below to sign in and connect Google to your Who Need Help account:\n\n%{url}\n\nIf you did not request this, ignore this email. Google will not be connected.",
+ email: user.email,
+ url: url
+ )
+ )
+ end)
+ end
+
defp deliver_magic_link_instructions(user, url) do
with_user_locale(user, fn ->
deliver(
diff --git a/lib/who_need_help_web/controllers/google_auth_controller.ex b/lib/who_need_help_web/controllers/google_auth_controller.ex
index 8594cf3..da279d8 100644
--- a/lib/who_need_help_web/controllers/google_auth_controller.ex
+++ b/lib/who_need_help_web/controllers/google_auth_controller.ex
@@ -5,7 +5,7 @@ defmodule WhoNeedHelpWeb.GoogleAuthController do
alias WhoNeedHelp.{Accounts, GoogleAuth, Repo, Trust}
alias WhoNeedHelp.Trust.RateLimiter
- alias WhoNeedHelpWeb.UserAuth
+ alias WhoNeedHelpWeb.{GoogleAuthPending, UserAuth}
import WhoNeedHelpWeb.UserAuth, only: [require_sudo_mode: 2]
@@ -16,7 +16,12 @@ defmodule WhoNeedHelpWeb.GoogleAuthController do
plug :require_sudo_mode when action in [:start_link, :disconnect]
def start_login(conn, _params) do
- start_flow(conn, "login", %{}, ~p"/users/log-in")
+ start_flow(
+ conn,
+ "login",
+ %{"locale" => Gettext.get_locale(WhoNeedHelpWeb.Gettext)},
+ ~p"/users/log-in"
+ )
end
def start_registration(conn, %{"google_registration" => params}) when is_map(params) do
@@ -70,6 +75,130 @@ defmodule WhoNeedHelpWeb.GoogleAuthController do
end
end
+ def complete(conn, _params) do
+ case GoogleAuthPending.fetch(conn) do
+ {:ok, pending} ->
+ case Accounts.get_user_by_email(pending.email) do
+ %Accounts.User{moderation_status: :suspended} ->
+ conn
+ |> GoogleAuthPending.delete()
+ |> google_account_unavailable(~p"/users/log-in")
+
+ existing_account ->
+ render(conn, :complete,
+ pending: pending,
+ existing_account: not is_nil(existing_account)
+ )
+ end
+
+ {:error, _reason} ->
+ conn
+ |> GoogleAuthPending.delete()
+ |> put_flash(:error, gettext("Google sign-in session expired. Please start again."))
+ |> redirect(to: ~p"/users/log-in")
+ end
+ end
+
+ def complete_registration(conn, %{"google_registration" => params}) when is_map(params) do
+ terms_accepted = params["terms_accepted"] in [true, "true", "on", "1"]
+
+ with true <- terms_accepted,
+ {:ok, pending} <- GoogleAuthPending.fetch(conn),
+ nil <- Accounts.get_user_by_email(pending.email),
+ {:ok, _limit} <- RateLimiter.check(:registration_email, pending.email),
+ {:ok, {user, _identity}} <-
+ Accounts.register_user_by_google(identity_attrs(pending), %{
+ "locale" => normalize_locale(params["locale"] || pending.locale),
+ "terms_accepted" => true
+ }) do
+ conn
+ |> GoogleAuthPending.delete()
+ |> put_flash(:info, gettext("Your account was created with Google."))
+ |> UserAuth.log_in_user(user)
+ else
+ false ->
+ conn
+ |> put_flash(
+ :error,
+ gettext("Confirm that you are 18 or older and accept the safety rules first.")
+ )
+ |> redirect(to: ~p"/auth/google/complete")
+
+ %Accounts.User{} ->
+ conn
+ |> put_flash(
+ :info,
+ gettext("This email already has an account. Confirm it once to connect Google.")
+ )
+ |> redirect(to: ~p"/auth/google/complete")
+
+ {:error, :rate_limited} ->
+ conn
+ |> put_flash(
+ :error,
+ gettext("Too many registration attempts in the configured time window.")
+ )
+ |> redirect(to: ~p"/auth/google/complete")
+
+ {:error, :missing} ->
+ expired_pending_redirect(conn)
+
+ {:error, :invalid_or_expired} ->
+ expired_pending_redirect(conn)
+
+ {:error, :email_already_registered} ->
+ conn
+ |> put_flash(
+ :info,
+ gettext("This email already has an account. Confirm it once to connect Google.")
+ )
+ |> redirect(to: ~p"/auth/google/complete")
+
+ {:error, _reason} ->
+ google_account_unavailable(conn, ~p"/users/log-in")
+ end
+ end
+
+ def complete_registration(conn, _params) do
+ conn
+ |> put_flash(:error, gettext("The Google registration form is invalid."))
+ |> redirect(to: ~p"/auth/google/complete")
+ end
+
+ def verify_existing(conn, _params) do
+ with {:ok, pending} <- GoogleAuthPending.fetch(conn),
+ %Accounts.User{moderation_status: status} = user when status != :suspended <-
+ Accounts.get_user_by_email(pending.email),
+ {:ok, pending_token} <- GoogleAuthPending.token(conn),
+ {:ok, _limit} <- RateLimiter.check(:magic_link_email, pending.email),
+ {:ok, _email} <- deliver_google_verification(conn, user, pending_token) do
+ conn
+ |> put_flash(
+ :info,
+ gettext(
+ "We sent a verification link to %{email}. Open it to finish connecting Google.",
+ email: pending.email
+ )
+ )
+ |> redirect(to: ~p"/users/log-in")
+ else
+ {:error, :rate_limited} ->
+ conn
+ |> put_flash(
+ :error,
+ gettext("Too many sign-in emails in the configured time window.")
+ )
+ |> redirect(to: ~p"/auth/google/complete")
+
+ {:error, reason} when reason in [:missing, :invalid_or_expired] ->
+ expired_pending_redirect(conn)
+
+ _missing_suspended_or_delivery_error ->
+ Logger.warning("Unable to send Google account verification instructions")
+ google_account_unavailable(conn, ~p"/users/log-in")
+ end
+ end
+
def callback(conn, params) do
flow = get_session(conn, @session_key)
conn = delete_session(conn, @session_key)
@@ -130,7 +259,7 @@ defmodule WhoNeedHelpWeb.GoogleAuthController do
end
end
- defp finish_flow(conn, "login", _flow, identity_attrs) do
+ defp finish_flow(conn, "login", flow, identity_attrs) do
case Accounts.login_user_by_google(identity_attrs) do
{:ok, user} ->
conn
@@ -138,14 +267,10 @@ defmodule WhoNeedHelpWeb.GoogleAuthController do
|> UserAuth.log_in_user(user)
{:error, :not_linked} ->
- conn
- |> put_flash(
- :error,
- gettext(
- "This Google account is not connected yet. Create an account or sign in by email and connect Google in account settings."
- )
- )
- |> redirect(to: ~p"/users/log-in")
+ case GoogleAuthPending.put(conn, identity_attrs, flow_locale(flow)) do
+ {:ok, conn} -> redirect(conn, to: ~p"/auth/google/complete")
+ {:error, _reason} -> google_account_unavailable(conn, ~p"/users/log-in")
+ end
{:error, _reason} ->
google_account_unavailable(conn, ~p"/users/log-in")
@@ -164,14 +289,18 @@ defmodule WhoNeedHelpWeb.GoogleAuthController do
|> UserAuth.log_in_user(user)
else
{:error, :email_already_registered} ->
- conn
- |> put_flash(
- :error,
- gettext(
- "An account with this email already exists. Sign in by email or password, then connect Google in account settings."
- )
- )
- |> redirect(to: ~p"/users/log-in")
+ case GoogleAuthPending.put(conn, identity_attrs, flow_locale(flow)) do
+ {:ok, conn} ->
+ conn
+ |> put_flash(
+ :info,
+ gettext("This email already has an account. Confirm it once to connect Google.")
+ )
+ |> redirect(to: ~p"/auth/google/complete")
+
+ {:error, _reason} ->
+ google_account_unavailable(conn, ~p"/users/log-in")
+ end
{:error, :rate_limited} ->
conn
@@ -255,6 +384,22 @@ defmodule WhoNeedHelpWeb.GoogleAuthController do
|> redirect(to: failure_path(flow))
end
+ defp deliver_google_verification(conn, user, pending_token) do
+ login_url = url(conn, ~p"/users/log-in")
+
+ Accounts.deliver_google_link_instructions(
+ user,
+ &"#{login_url}?google_link=#{URI.encode_www_form(pending_token)}#token=#{URI.encode_www_form(&1)}"
+ )
+ end
+
+ defp expired_pending_redirect(conn) do
+ conn
+ |> GoogleAuthPending.delete()
+ |> put_flash(:error, gettext("Google sign-in session expired. Please start again."))
+ |> redirect(to: ~p"/users/log-in")
+ end
+
defp google_account_unavailable(conn, path) do
conn
|> put_flash(:error, gettext("This Google account cannot be used right now."))
@@ -270,6 +415,12 @@ defmodule WhoNeedHelpWeb.GoogleAuthController do
defp normalize_locale(locale) when locale in @supported_locales, do: locale
defp normalize_locale(_locale), do: "en"
+ defp flow_locale(flow), do: normalize_locale(flow["locale"])
+
+ defp identity_attrs(pending) do
+ Map.take(pending, [:provider_uid, :email, :email_verified, :display_name])
+ end
+
defp error_name(error) when is_atom(error), do: Atom.to_string(error)
defp error_name(%{__struct__: module}), do: inspect(module)
defp error_name(_error), do: "unknown_error"
diff --git a/lib/who_need_help_web/controllers/google_auth_html.ex b/lib/who_need_help_web/controllers/google_auth_html.ex
new file mode 100644
index 0000000..3242e76
--- /dev/null
+++ b/lib/who_need_help_web/controllers/google_auth_html.ex
@@ -0,0 +1,5 @@
+defmodule WhoNeedHelpWeb.GoogleAuthHTML do
+ use WhoNeedHelpWeb, :html
+
+ embed_templates "google_auth_html/*"
+end
diff --git a/lib/who_need_help_web/controllers/google_auth_html/complete.html.heex b/lib/who_need_help_web/controllers/google_auth_html/complete.html.heex
new file mode 100644
index 0000000..9410359
--- /dev/null
+++ b/lib/who_need_help_web/controllers/google_auth_html/complete.html.heex
@@ -0,0 +1,103 @@
+ {@pending.display_name} {@pending.email}
+ {gettext(
+ "Confirm access once so nobody can attach Google to your account using only a matching email address."
+ )}
+
+ {gettext("After this confirmation, future Google sign-ins will take one click.")}
+
+ {gettext("No password is required. Google will be connected as your sign-in method.")}
+
+ {gettext("Read the")}
+ <.link href={~p"/terms"} class="link font-semibold">{gettext("Terms")},
+ <.link href={~p"/privacy"} class="link font-semibold">{gettext("Privacy Policy")}
+ {gettext("and")}
+ <.link href={~p"/safety"} class="link font-semibold">{gettext("Safety Rules")}
+ {gettext("before confirming.")}
+ {gettext("This email already has an account")}
+ {gettext("Create your Who Need Help account")}
+
@@ -81,6 +81,16 @@
+ {gettext( + "Sign in to %{email} once to connect Google. You can use the email link or your existing password.", + email: @pending_google_email + )} +
+ <.form :let={f} for={@form} as={:user} id="login_form_magic" action={~p"/users/log-in"}> <.input readonly={!!@current_scope} diff --git a/lib/who_need_help_web/google_auth_pending.ex b/lib/who_need_help_web/google_auth_pending.ex new file mode 100644 index 0000000..7ee2260 --- /dev/null +++ b/lib/who_need_help_web/google_auth_pending.ex @@ -0,0 +1,128 @@ +defmodule WhoNeedHelpWeb.GoogleAuthPending do + @moduledoc false + + import Plug.Conn + + alias WhoNeedHelp.{Accounts, Repo, Trust} + + @session_key "pending_google_identity" + @token_salt "pending-google-identity" + @max_age_seconds 15 * 60 + @supported_locales ~w(en uk ru) + + def put(conn, identity_attrs, locale \\ "en") do + with {:ok, payload} <- normalize(identity_attrs, locale) do + token = Phoenix.Token.sign(WhoNeedHelpWeb.Endpoint, @token_salt, payload) + {:ok, put_session(conn, @session_key, token)} + end + end + + def fetch(conn) do + conn + |> get_session(@session_key) + |> verify_token() + end + + def restore(conn, token) when is_binary(token) do + case verify_token(token) do + {:ok, _pending} -> {:ok, put_session(conn, @session_key, token)} + {:error, reason} -> {:error, conn, reason} + end + end + + def restore(conn, _token), do: {:error, conn, :invalid} + + def token(conn) do + case fetch(conn) do + {:ok, _pending} -> {:ok, get_session(conn, @session_key)} + {:error, reason} -> {:error, reason} + end + end + + def delete(conn), do: delete_session(conn, @session_key) + + def connect(conn, user) do + with {:ok, pending} <- fetch(conn), + true <- normalized_email(user.email) == pending.email, + {:ok, identity} <- connect_and_audit(user, pending) do + {:ok, delete(conn), identity} + else + false -> {:error, delete(conn), :email_mismatch} + {:error, reason} -> {:error, delete(conn), reason} + end + end + + defp connect_and_audit(user, pending) do + Repo.transact(fn -> + with {:ok, identity} <- Accounts.link_google_identity(user, identity_attrs(pending)), + {:ok, _audit} <- + Trust.audit( + user.id, + "auth_identity.connected", + "auth_identity", + identity.id, + %{"provider" => "google", "method" => "verified_local_sign_in"} + ) do + {:ok, identity} + end + end) + end + + defp verify_token(token) when is_binary(token) do + with {:ok, payload} <- + Phoenix.Token.verify(WhoNeedHelpWeb.Endpoint, @token_salt, token, + max_age: @max_age_seconds + ), + {:ok, pending} <- normalize(payload, value(payload, :locale)) do + {:ok, pending} + else + _invalid_or_expired -> {:error, :invalid_or_expired} + end + end + + defp verify_token(_token), do: {:error, :missing} + + defp normalize(attrs, locale) when is_map(attrs) do + provider_uid = value(attrs, :provider_uid) + email = value(attrs, :email) + email_verified = value(attrs, :email_verified) + display_name = value(attrs, :display_name) + + cond do + email_verified != true -> + {:error, :invalid} + + not is_binary(provider_uid) or provider_uid == "" or byte_size(provider_uid) > 255 -> + {:error, :invalid} + + not is_binary(email) or email == "" or byte_size(email) > 160 -> + {:error, :invalid} + + not is_binary(display_name) or String.trim(display_name) == "" -> + {:error, :invalid} + + true -> + {:ok, + %{ + provider_uid: provider_uid, + email: normalized_email(email), + email_verified: true, + display_name: display_name |> String.trim() |> String.slice(0, 80), + locale: normalize_locale(locale) + }} + end + end + + defp normalize(_attrs, _locale), do: {:error, :invalid} + + defp identity_attrs(pending) do + Map.take(pending, [:provider_uid, :email, :email_verified, :display_name]) + end + + defp value(attrs, key), do: Map.get(attrs, key) || Map.get(attrs, Atom.to_string(key)) + + defp normalized_email(email), do: email |> String.trim() |> String.downcase() + + defp normalize_locale(locale) when locale in @supported_locales, do: locale + defp normalize_locale(_locale), do: "en" +end diff --git a/lib/who_need_help_web/router.ex b/lib/who_need_help_web/router.ex index d815b49..41688b7 100644 --- a/lib/who_need_help_web/router.ex +++ b/lib/who_need_help_web/router.ex @@ -120,6 +120,9 @@ defmodule WhoNeedHelpWeb.Router do post "/users/register", UserRegistrationController, :create post "/auth/google/login", GoogleAuthController, :start_login post "/auth/google/register", GoogleAuthController, :start_registration + get "/auth/google/complete", GoogleAuthController, :complete + post "/auth/google/complete-registration", GoogleAuthController, :complete_registration + post "/auth/google/verify-existing", GoogleAuthController, :verify_existing end scope "/", WhoNeedHelpWeb do diff --git a/priv/gettext/default.pot b/priv/gettext/default.pot index fb45bd9..001f417 100644 --- a/priv/gettext/default.pot +++ b/priv/gettext/default.pot @@ -529,7 +529,7 @@ msgstr "" msgid "Confirm your email and ensure your account is active before publishing." msgstr "" -#: lib/who_need_help/accounts/user_notifier.ex:70 +#: lib/who_need_help/accounts/user_notifier.ex:85 #, elixir-autogen, elixir-format msgid "Confirmation instructions" msgstr "" @@ -637,8 +637,8 @@ msgid "Double-blind review" msgstr "" #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:75 -#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:89 -#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:122 +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:99 +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:132 #: lib/who_need_help_web/controllers/user_settings_html/edit.html.heex:15 #, elixir-autogen, elixir-format msgid "Email" @@ -806,12 +806,12 @@ msgstr "" msgid "Hi %{email},\n\nYou can change your email by visiting the URL below:\n\n%{url}\n\nIf you didn't request this change, please ignore this." msgstr "" -#: lib/who_need_help/accounts/user_notifier.ex:71 +#: lib/who_need_help/accounts/user_notifier.ex:86 #, elixir-autogen, elixir-format msgid "Hi %{email},\n\nYou can confirm your account by visiting the URL below:\n\n%{url}\n\nIf you didn't create an account with us, please ignore this." msgstr "" -#: lib/who_need_help/accounts/user_notifier.ex:57 +#: lib/who_need_help/accounts/user_notifier.ex:72 #, elixir-autogen, elixir-format msgid "Hi %{email},\n\nYou can log into your account by visiting the URL below:\n\n%{url}\n\nIf you didn't request this email, please ignore this." msgstr "" @@ -878,7 +878,7 @@ msgstr "" msgid "Identity and reputation" msgstr "" -#: lib/who_need_help_web/controllers/user_session_controller.ex:89 +#: lib/who_need_help_web/controllers/user_session_controller.ex:97 #, elixir-autogen, elixir-format msgid "If your email is in our system, you will receive instructions for logging in shortly." msgstr "" @@ -915,7 +915,7 @@ msgstr "" msgid "Internal note" msgstr "" -#: lib/who_need_help_web/controllers/user_session_controller.ex:124 +#: lib/who_need_help_web/controllers/user_session_controller.ex:132 #, elixir-autogen, elixir-format msgid "Invalid email or password" msgstr "" @@ -977,22 +977,22 @@ msgstr "" msgid "Location:" msgstr "" -#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:136 +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:146 #, elixir-autogen, elixir-format msgid "Log in and stay logged in" msgstr "" -#: lib/who_need_help/accounts/user_notifier.ex:56 +#: lib/who_need_help/accounts/user_notifier.ex:71 #, elixir-autogen, elixir-format msgid "Log in instructions" msgstr "" -#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:139 +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:149 #, elixir-autogen, elixir-format msgid "Log in only this time" msgstr "" -#: lib/who_need_help_web/controllers/user_session_controller.ex:117 +#: lib/who_need_help_web/controllers/user_session_controller.ex:125 #, elixir-autogen, elixir-format msgid "Logged out successfully." msgstr "" @@ -1323,7 +1323,7 @@ msgstr "" msgid "Participant" msgstr "" -#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:130 +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:140 #, elixir-autogen, elixir-format msgid "Password" msgstr "" @@ -1504,6 +1504,7 @@ msgstr "" msgid "Rating" msgstr "" +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:80 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:43 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:90 #, elixir-autogen, elixir-format @@ -1925,7 +1926,7 @@ msgstr "" msgid "The last administrator cannot demote themselves." msgstr "" -#: lib/who_need_help_web/controllers/user_session_controller.ex:37 +#: lib/who_need_help_web/controllers/user_session_controller.ex:44 #, elixir-autogen, elixir-format msgid "The link is invalid or it has expired." msgstr "" @@ -2046,7 +2047,8 @@ msgstr "" msgid "Too many actions in the configured time window." msgstr "" -#: lib/who_need_help_web/controllers/google_auth_controller.ex:180 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:139 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:309 #: lib/who_need_help_web/controllers/user_registration_controller.ex:49 #, elixir-autogen, elixir-format msgid "Too many registration attempts in the configured time window." @@ -2057,7 +2059,8 @@ msgstr "" msgid "Too many requests in the configured time window." msgstr "" -#: lib/who_need_help_web/controllers/user_session_controller.ex:102 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:189 +#: lib/who_need_help_web/controllers/user_session_controller.ex:110 #, elixir-autogen, elixir-format msgid "Too many sign-in emails in the configured time window." msgstr "" @@ -2162,7 +2165,7 @@ msgstr "" msgid "User blocked. Their requests and new messages are hidden." msgstr "" -#: lib/who_need_help_web/controllers/user_session_controller.ex:25 +#: lib/who_need_help_web/controllers/user_session_controller.ex:31 #, elixir-autogen, elixir-format msgid "User confirmed successfully." msgstr "" @@ -2218,9 +2221,9 @@ msgstr "" msgid "Waiting for a nearby volunteer." msgstr "" -#: lib/who_need_help_web/controllers/google_auth_controller.ex:137 -#: lib/who_need_help_web/controllers/user_session_controller.ex:26 -#: lib/who_need_help_web/controllers/user_session_controller.ex:51 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:266 +#: lib/who_need_help_web/controllers/user_session_controller.ex:32 +#: lib/who_need_help_web/controllers/user_session_controller.ex:58 #, elixir-autogen, elixir-format msgid "Welcome back!" msgstr "" @@ -2423,6 +2426,7 @@ msgstr "" msgid "activity message" msgstr "" +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:85 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:48 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:95 #, elixir-autogen, elixir-format @@ -2737,7 +2741,7 @@ msgstr "" msgid "The settings form is invalid." msgstr "" -#: lib/who_need_help_web/controllers/user_session_controller.ex:111 +#: lib/who_need_help_web/controllers/user_session_controller.ex:119 #, elixir-autogen, elixir-format msgid "The sign-in form is invalid." msgstr "" @@ -2762,7 +2766,7 @@ msgstr "" msgid "This request has expired." msgstr "" -#: lib/who_need_help_web/controllers/user_session_controller.ex:60 +#: lib/who_need_help_web/controllers/user_session_controller.ex:68 #, elixir-autogen, elixir-format msgid "Too many sign-in attempts in the configured time window." msgstr "" @@ -2797,7 +2801,7 @@ msgstr "" msgid "A Google account is connected. You can use it to sign in." msgstr "" -#: lib/who_need_help_web/controllers/google_auth_controller.ex:207 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:336 #, elixir-autogen, elixir-format msgid "A different Google account is already connected." msgstr "" @@ -2807,12 +2811,8 @@ msgstr "" msgid "A password is not required. We will email a one-time confirmation link. You can add a password later in account settings." msgstr "" -#: lib/who_need_help_web/controllers/google_auth_controller.ex:170 -#, elixir-autogen, elixir-format -msgid "An account with this email already exists. Sign in by email or password, then connect Google in account settings." -msgstr "" - -#: lib/who_need_help_web/controllers/google_auth_controller.ex:37 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:42 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:123 #, elixir-autogen, elixir-format msgid "Confirm that you are 18 or older and accept the safety rules first." msgstr "" @@ -2832,17 +2832,17 @@ msgstr "" msgid "Create account and email me a link" msgstr "" -#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:99 +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:109 #, elixir-autogen, elixir-format msgid "Email me a sign-in link" msgstr "" -#: lib/who_need_help_web/controllers/google_auth_controller.ex:215 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:344 #, elixir-autogen, elixir-format msgid "Google account connection session is invalid." msgstr "" -#: lib/who_need_help_web/controllers/google_auth_controller.ex:97 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:226 #, elixir-autogen, elixir-format msgid "Google did not provide a verified email address." msgstr "" @@ -2852,32 +2852,34 @@ msgstr "" msgid "Google sign-in" msgstr "" -#: lib/who_need_help_web/controllers/google_auth_controller.ex:197 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:326 #, elixir-autogen, elixir-format msgid "Google sign-in connected." msgstr "" -#: lib/who_need_help_web/controllers/google_auth_controller.ex:123 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:252 #, elixir-autogen, elixir-format msgid "Google sign-in could not be started." msgstr "" -#: lib/who_need_help_web/controllers/google_auth_controller.ex:102 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:231 #, elixir-autogen, elixir-format msgid "Google sign-in failed. Please try again." msgstr "" -#: lib/who_need_help_web/controllers/google_auth_controller.ex:128 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:257 #, elixir-autogen, elixir-format msgid "Google sign-in is not configured yet." msgstr "" -#: lib/who_need_help_web/controllers/google_auth_controller.ex:87 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:97 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:216 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:399 #, elixir-autogen, elixir-format msgid "Google sign-in session expired. Please start again." msgstr "" -#: lib/who_need_help_web/controllers/google_auth_controller.ex:91 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:220 #, elixir-autogen, elixir-format msgid "Google sign-in session is invalid." msgstr "" @@ -2894,52 +2896,44 @@ msgstr "" msgid "Sending link..." msgstr "" -#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:74 -#, elixir-autogen, elixir-format -msgid "Sign in with Google" -msgstr "" - #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:51 #, elixir-autogen, elixir-format msgid "Sign up with Google" msgstr "" -#: lib/who_need_help_web/controllers/google_auth_controller.ex:202 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:331 #, elixir-autogen, elixir-format msgid "That Google account belongs to another local account." msgstr "" -#: lib/who_need_help_web/controllers/google_auth_controller.ex:45 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:50 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:164 #, elixir-autogen, elixir-format msgid "The Google registration form is invalid." msgstr "" -#: lib/who_need_help_web/controllers/google_auth_controller.ex:260 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:405 #, elixir-autogen, elixir-format msgid "This Google account cannot be used right now." msgstr "" -#: lib/who_need_help_web/controllers/google_auth_controller.ex:144 -#, elixir-autogen, elixir-format -msgid "This Google account is not connected yet. Create an account or sign in by email and connect Google in account settings." -msgstr "" - -#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:109 +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:119 #, elixir-autogen, elixir-format msgid "This works only if you previously added a password in account settings." msgstr "" -#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:105 +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:115 #, elixir-autogen, elixir-format msgid "Use a password instead" msgstr "" -#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:96 +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:106 #, elixir-autogen, elixir-format msgid "We will send a one-time sign-in link. No password is required." msgstr "" -#: lib/who_need_help_web/controllers/google_auth_controller.ex:163 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:116 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:288 #, elixir-autogen, elixir-format msgid "Your account was created with Google." msgstr "" @@ -2964,12 +2958,12 @@ msgstr "" msgid "Disconnect Google sign-in from this account?" msgstr "" -#: lib/who_need_help_web/controllers/google_auth_controller.ex:60 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:65 #, elixir-autogen, elixir-format msgid "Google sign-in disconnected." msgstr "" -#: lib/who_need_help_web/controllers/google_auth_controller.ex:65 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:70 #, elixir-autogen, elixir-format msgid "No Google account is connected." msgstr "" @@ -3603,6 +3597,7 @@ msgstr "" msgid "Please delete my account and associated personal data." msgstr "" +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:76 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:39 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:101 #, elixir-autogen, elixir-format @@ -3614,12 +3609,14 @@ msgstr "" msgid "Privacy" msgstr "" +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:82 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:45 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:92 #, elixir-autogen, elixir-format msgid "Privacy Policy" msgstr "" +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:84 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:47 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:94 #, elixir-autogen, elixir-format @@ -3627,12 +3624,14 @@ msgid "Safety Rules" msgstr "" #: lib/who_need_help_web/components/layouts.ex:149 +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:81 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:44 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:91 #, elixir-autogen, elixir-format msgid "Terms" msgstr "" +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:83 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:46 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:93 #, elixir-autogen, elixir-format @@ -3956,3 +3955,111 @@ msgstr "" #, elixir-autogen, elixir-format msgid "You stay in control of the match" msgstr "" + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:52 +#, elixir-autogen, elixir-format +msgid "After this confirmation, future Google sign-ins will take one click." +msgstr "" + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:99 +#, elixir-autogen, elixir-format +msgid "Cancel and use another sign-in method" +msgstr "" + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:35 +#, elixir-autogen, elixir-format +msgid "Confirm access once so nobody can attach Google to your account using only a matching email address." +msgstr "" + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:5 +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:74 +#, elixir-autogen, elixir-format +msgid "Continue with Google" +msgstr "" + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:91 +#, elixir-autogen, elixir-format +msgid "Create account and continue" +msgstr "" + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:58 +#, elixir-autogen, elixir-format +msgid "Create your Who Need Help account" +msgstr "" + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:89 +#, elixir-autogen, elixir-format +msgid "Creating account..." +msgstr "" + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:43 +#, elixir-autogen, elixir-format +msgid "Email me a verification link" +msgstr "" + +#: lib/who_need_help_web/controllers/user_session_controller.ex:158 +#, elixir-autogen, elixir-format +msgid "Google sign-in connected. You can use it next time." +msgstr "" + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:7 +#, elixir-autogen, elixir-format +msgid "Google verified your identity. Finish this one-time step to continue." +msgstr "" + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:60 +#, elixir-autogen, elixir-format +msgid "No password is required. Google will be connected as your sign-in method." +msgstr "" + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:42 +#, elixir-autogen, elixir-format +msgid "Sending..." +msgstr "" + +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:88 +#, elixir-autogen, elixir-format +msgid "Sign in to %{email} once to connect Google. You can use the email link or your existing password." +msgstr "" + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:33 +#, elixir-autogen, elixir-format +msgid "This email already has an account" +msgstr "" + +#: lib/who_need_help_web/controllers/google_auth_controller.ex:131 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:153 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:297 +#, elixir-autogen, elixir-format +msgid "This email already has an account. Confirm it once to connect Google." +msgstr "" + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:48 +#, elixir-autogen, elixir-format +msgid "Use my password instead" +msgstr "" + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:25 +#, elixir-autogen, elixir-format +msgid "Verified" +msgstr "" + +#: lib/who_need_help_web/controllers/google_auth_controller.ex:178 +#, elixir-autogen, elixir-format +msgid "We sent a verification link to %{email}. Open it to finish connecting Google." +msgstr "" + +#: lib/who_need_help_web/controllers/user_session_controller.ex:171 +#, elixir-autogen, elixir-format +msgid "You are signed in, but Google could not be connected. Try again in account settings." +msgstr "" + +#: lib/who_need_help/accounts/user_notifier.ex:57 +#, elixir-autogen, elixir-format +msgid "Confirm Google sign-in" +msgstr "" + +#: lib/who_need_help/accounts/user_notifier.ex:58 +#, elixir-autogen, elixir-format +msgid "Hi %{email},\n\nUse the secure link below to sign in and connect Google to your Who Need Help account:\n\n%{url}\n\nIf you did not request this, ignore this email. Google will not be connected." +msgstr "" diff --git a/priv/gettext/en/LC_MESSAGES/default.po b/priv/gettext/en/LC_MESSAGES/default.po index e59b2e5..f600663 100644 --- a/priv/gettext/en/LC_MESSAGES/default.po +++ b/priv/gettext/en/LC_MESSAGES/default.po @@ -15,30 +15,30 @@ msgstr "" #: lib/who_need_help_web/components/layouts.ex:270 #, elixir-autogen, elixir-format msgid "Account settings" -msgstr "" +msgstr "Account settings" #: lib/who_need_help_web/components/core_components.ex:446 #, elixir-autogen, elixir-format msgid "Actions" -msgstr "" +msgstr "Actions" #: lib/who_need_help_web/components/layouts.ex:70 #: lib/who_need_help_web/components/layouts.ex:119 #: lib/who_need_help_web/live/request_live/new.ex:23 #, elixir-autogen, elixir-format msgid "Ask for help" -msgstr "" +msgstr "Ask for help" #: lib/who_need_help_web/components/layouts.ex:308 #: lib/who_need_help_web/components/layouts.ex:323 #, elixir-autogen, elixir-format msgid "Attempting to reconnect" -msgstr "" +msgstr "Attempting to reconnect" #: lib/who_need_help_web/components/layouts.ex:179 #, elixir-autogen, elixir-format msgid "Categories" -msgstr "" +msgstr "Categories" #: lib/who_need_help_web/components/layouts.ex:78 #: lib/who_need_help_web/components/layouts.ex:128 @@ -46,331 +46,331 @@ msgstr "" #: lib/who_need_help_web/controllers/user_session_html/new.html.heex:5 #, elixir-autogen, elixir-format msgid "Log in" -msgstr "" +msgstr "Log in" #: lib/who_need_help_web/components/layouts.ex:114 #: lib/who_need_help_web/components/layouts.ex:273 #, elixir-autogen, elixir-format msgid "Log out" -msgstr "" +msgstr "Log out" #: lib/who_need_help_web/components/layouts.ex:108 #: lib/who_need_help_web/components/layouts.ex:267 #: lib/who_need_help_web/live/profile_live.ex:16 #, elixir-autogen, elixir-format msgid "Profile" -msgstr "" +msgstr "Profile" #: lib/who_need_help_web/components/layouts.ex:75 #: lib/who_need_help_web/components/layouts.ex:125 #, elixir-autogen, elixir-format msgid "Register" -msgstr "" +msgstr "Register" #: lib/who_need_help_web/components/layouts.ex:169 #, elixir-autogen, elixir-format msgid "Requests" -msgstr "" +msgstr "Requests" #: lib/who_need_help_web/components/layouts.ex:315 #, elixir-autogen, elixir-format msgid "Something went wrong!" -msgstr "" +msgstr "Something went wrong!" #: lib/who_need_help_web/components/layouts.ex:300 #, elixir-autogen, elixir-format msgid "We can't find the internet" -msgstr "" +msgstr "We can't find the internet" #: lib/who_need_help_web/components/core_components.ex:81 #, elixir-autogen, elixir-format msgid "close" -msgstr "" +msgstr "close" #: lib/who_need_help_web/live/activity_live/show.ex:367 #, elixir-autogen, elixir-format msgid "%{approved}/%{capacity} approved" -msgstr "" +msgstr "%{approved}/%{capacity} approved" #: lib/who_need_help_web/live/moderation_live.ex:485 #, elixir-autogen, elixir-format msgid "%{count} community votes" -msgstr "" +msgstr "%{count} community votes" #: lib/who_need_help_web/live/request_live/show.ex:750 #, elixir-autogen, elixir-format msgid "%{count} unique people" -msgstr "" +msgstr "%{count} unique people" #: lib/who_need_help_web/live/request_live/show.ex:842 #, elixir-autogen, elixir-format msgid "1 — unsafe" -msgstr "" +msgstr "1 — unsafe" #: lib/who_need_help_web/live/request_live/show.ex:841 #, elixir-autogen, elixir-format msgid "2 — poor" -msgstr "" +msgstr "2 — poor" #: lib/who_need_help_web/live/request_live/show.ex:840 #, elixir-autogen, elixir-format msgid "3 — okay" -msgstr "" +msgstr "3 — okay" #: lib/who_need_help_web/live/request_live/show.ex:839 #, elixir-autogen, elixir-format msgid "4 — good" -msgstr "" +msgstr "4 — good" #: lib/who_need_help_web/live/request_live/show.ex:838 #, elixir-autogen, elixir-format msgid "5 — excellent" -msgstr "" +msgstr "5 — excellent" #: lib/who_need_help_web/controllers/user_settings_controller.ex:120 #, elixir-autogen, elixir-format msgid "A link to confirm your email change has been sent to the new address." -msgstr "" +msgstr "A link to confirm your email change has been sent to the new address." #: lib/who_need_help_web/live/moderation_live.ex:437 #, elixir-autogen, elixir-format msgid "A signal requests human review; optional tracking absence is not proof of abuse." -msgstr "" +msgstr "A signal requests human review; optional tracking absence is not proof of abuse." #: lib/who_need_help_web/live/request_live/show.ex:872 #, elixir-autogen, elixir-format msgid "Accept only if you can complete this safely and for free." -msgstr "" +msgstr "Accept only if you can complete this safely and for free." #: lib/who_need_help_web/live/request_live/show.ex:638 #, elixir-autogen, elixir-format msgid "Accepted" -msgstr "" +msgstr "Accepted" #: lib/who_need_help_web/controllers/user_settings_html/edit.html.heex:4 #, elixir-autogen, elixir-format msgid "Account Settings" -msgstr "" +msgstr "Account Settings" #: lib/who_need_help_web/components/layouts.ex:63 #: lib/who_need_help_web/components/layouts.ex:205 #, elixir-autogen, elixir-format msgid "Account and language" -msgstr "" +msgstr "Account and language" #: lib/who_need_help_web/live/moderation_live.ex:569 #, elixir-autogen, elixir-format msgid "Accounts" -msgstr "" +msgstr "Accounts" #: lib/who_need_help_web/live/request_live/show.ex:868 #, elixir-autogen, elixir-format msgid "Action center" -msgstr "" +msgstr "Action center" #: lib/who_need_help_web/live/moderation_live.ex:265 #: lib/who_need_help_web/live/moderation_live.ex:614 #, elixir-autogen, elixir-format msgid "Active" -msgstr "" +msgstr "Active" #: lib/who_need_help_web/components/layouts.ex:174 #: lib/who_need_help_web/live/activity_live/index.ex:118 #, elixir-autogen, elixir-format msgid "Activities" -msgstr "" +msgstr "Activities" #: lib/who_need_help_web/controllers/page_html/safety.html.heex:35 #, elixir-autogen, elixir-format msgid "Activities are optional plans, not urgent help, and do not affect helper reputation. Meet in a suitable public place first. Organizers approve every participant; exact coordinates and group chat are limited to approved participants. Share route and safety plans for hikes, and never publish home addresses, access codes, or travel documents." -msgstr "" +msgstr "Activities are optional plans, not urgent help, and do not affect helper reputation. Meet in a suitable public place first. Organizers approve every participant; exact coordinates and group chat are limited to approved participants. Share route and safety plans for hikes, and never publish home addresses, access codes, or travel documents." #: lib/who_need_help_web/live/activity_live/new.ex:168 #, elixir-autogen, elixir-format msgid "Activity details" -msgstr "" +msgstr "Activity details" #: lib/who_need_help_web/live/moderation_live.ex:74 #, elixir-autogen, elixir-format msgid "Activity hidden." -msgstr "" +msgstr "Activity hidden." #: lib/who_need_help_web/live/activity_live/show.ex:18 #: lib/who_need_help_web/live/activity_live/show.ex:181 #, elixir-autogen, elixir-format msgid "Activity is unavailable." -msgstr "" +msgstr "Activity is unavailable." #: lib/who_need_help_web/live/activity_live/new.ex:41 #, elixir-autogen, elixir-format msgid "Activity published. You approve every participant." -msgstr "" +msgstr "Activity published. You approve every participant." #: lib/who_need_help_web/live/moderation_live.ex:82 #, elixir-autogen, elixir-format msgid "Activity restored." -msgstr "" +msgstr "Activity restored." #: lib/who_need_help_web/live/activity_live/index.ex:210 #: lib/who_need_help_web/live/activity_live/new.ex:144 #, elixir-autogen, elixir-format msgid "Activity type" -msgstr "" +msgstr "Activity type" #: lib/who_need_help_web/live/profile_live.ex:325 #, elixir-autogen, elixir-format msgid "Add unverified link" -msgstr "" +msgstr "Add unverified link" #: lib/who_need_help_web/live/moderation_live.ex:272 #: lib/who_need_help_web/live/moderation_live.ex:638 #, elixir-autogen, elixir-format msgid "Administrator" -msgstr "" +msgstr "Administrator" #: lib/who_need_help_web/live/activity_live/index.ex:212 #, elixir-autogen, elixir-format msgid "All activities" -msgstr "" +msgstr "All activities" #: lib/who_need_help_web/live/request_live/index.ex:227 #, elixir-autogen, elixir-format msgid "All categories" -msgstr "" +msgstr "All categories" #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:7 #, elixir-autogen, elixir-format msgid "Already registered?" -msgstr "" +msgstr "Already registered?" #: lib/who_need_help_web/live/request_live/show.ex:608 #, elixir-autogen, elixir-format msgid "Another helper already accepted this request." -msgstr "" +msgstr "Another helper already accepted this request." #: lib/who_need_help_web/live/request_live/index.ex:242 #, elixir-autogen, elixir-format msgid "Any urgency" -msgstr "" +msgstr "Any urgency" #: lib/who_need_help_web/live/activity_live/show.ex:528 #, elixir-autogen, elixir-format msgid "Approval pending" -msgstr "" +msgstr "Approval pending" #: lib/who_need_help_web/live/activity_live/show.ex:581 #, elixir-autogen, elixir-format msgid "Approve" -msgstr "" +msgstr "Approve" #: lib/who_need_help_web/live/activity_live/show.ex:439 #, elixir-autogen, elixir-format msgid "Approved group chat" -msgstr "" +msgstr "Approved group chat" #: lib/who_need_help_web/live/activity_live/show.ex:607 #, elixir-autogen, elixir-format msgid "Approved participants" -msgstr "" +msgstr "Approved participants" #: lib/who_need_help_web/controllers/page_html/home.html.heex:80 #: lib/who_need_help_web/live/activity_live/new.ex:263 #: lib/who_need_help_web/live/request_live/new.ex:311 #, elixir-autogen, elixir-format msgid "Approximate area" -msgstr "" +msgstr "Approximate area" #: lib/who_need_help_web/live/activity_live/new.ex:255 #, elixir-autogen, elixir-format msgid "Approximate public meeting area" -msgstr "" +msgstr "Approximate public meeting area" #: lib/who_need_help_web/live/profile_live.ex:167 #: lib/who_need_help_web/live/request_live/show.ex:644 #, elixir-autogen, elixir-format msgid "Approximate publicly" -msgstr "" +msgstr "Approximate publicly" #: lib/who_need_help_web/live/request_live/new.ex:319 #, elixir-autogen, elixir-format msgid "Approximate publicly (recommended)" -msgstr "" +msgstr "Approximate publicly (recommended)" #: lib/who_need_help_web/live/request_live/show.ex:707 #, elixir-autogen, elixir-format msgid "Area:" -msgstr "" +msgstr "Area:" #: lib/who_need_help_web/live/request_live/new.ex:159 #, elixir-autogen, elixir-format msgid "Ask for urgent help" -msgstr "" +msgstr "Ask for urgent help" #: lib/who_need_help_web/live/category_proposal_live.ex:98 #, elixir-autogen, elixir-format msgid "Bicycle puncture" -msgstr "" +msgstr "Bicycle puncture" #: lib/who_need_help_web/controllers/page_html/safety.html.heex:71 #, elixir-autogen, elixir-format msgid "Block a person to hide discovery in both directions and stop new chat. Report dangerous, fraudulent, prohibited, impersonating, harassing, or spam content. Automated signals ask for human review and are not proof by themselves." -msgstr "" +msgstr "Block a person to hide discovery in both directions and stop new chat. Report dangerous, fraudulent, prohibited, impersonating, harassing, or spam content. Automated signals ask for human review and are not proof by themselves." #: lib/who_need_help_web/controllers/page_html/safety.html.heex:69 #, elixir-autogen, elixir-format msgid "Block and report" -msgstr "" +msgstr "Block and report" #: lib/who_need_help_web/live/activity_live/show.ex:648 #, elixir-autogen, elixir-format msgid "Block organizer" -msgstr "" +msgstr "Block organizer" #: lib/who_need_help_web/live/request_live/show.ex:1075 #, elixir-autogen, elixir-format msgid "Block this user" -msgstr "" +msgstr "Block this user" #: lib/who_need_help_web/live/profile_live.ex:331 #, elixir-autogen, elixir-format msgid "Blocked users" -msgstr "" +msgstr "Blocked users" #: lib/who_need_help_web/live/request_live/new.ex:123 #, elixir-autogen, elixir-format msgid "Briefly describe the help you need" -msgstr "" +msgstr "Briefly describe the help you need" #: lib/who_need_help_web/components/layouts.ex:155 #, elixir-autogen, elixir-format msgid "Build Week feedback" -msgstr "" +msgstr "Build Week feedback" #: lib/who_need_help_web/controllers/feedback_html/show.html.heex:4 #, elixir-autogen, elixir-format msgid "Build feedback" -msgstr "" +msgstr "Build feedback" #: lib/who_need_help_web/live/leaderboard_live.ex:40 #, elixir-autogen, elixir-format msgid "COMMUNITY TRUST" -msgstr "" +msgstr "COMMUNITY TRUST" #: lib/who_need_help_web/live/category_proposal_live.ex:81 #, elixir-autogen, elixir-format msgid "COMMUNITY-DRIVEN TAXONOMY" -msgstr "" +msgstr "COMMUNITY-DRIVEN TAXONOMY" #: lib/who_need_help_web/live/activity_live/show.ex:601 #, elixir-autogen, elixir-format msgid "Cancel activity" -msgstr "" +msgstr "Cancel activity" #: lib/who_need_help_web/live/request_live/show.ex:886 #: lib/who_need_help_web/live/request_live/show.ex:980 #, elixir-autogen, elixir-format msgid "Cancel request" -msgstr "" +msgstr "Cancel request" #: lib/who_need_help_web/live/activity_live/index.ex:168 #: lib/who_need_help_web/live/activity_live/show.ex:344 @@ -379,61 +379,61 @@ msgstr "" #: lib/who_need_help_web/live/request_live/show.ex:641 #, elixir-autogen, elixir-format msgid "Cancelled" -msgstr "" +msgstr "Cancelled" #: lib/who_need_help_web/live/request_live/index.ex:225 #: lib/who_need_help_web/live/request_live/new.ex:185 #, elixir-autogen, elixir-format msgid "Category" -msgstr "" +msgstr "Category" #: lib/who_need_help_web/live/moderation_live.ex:116 #, elixir-autogen, elixir-format msgid "Category created and proposal approved." -msgstr "" +msgstr "Category created and proposal approved." #: lib/who_need_help_web/live/request_live/new.ex:216 #: lib/who_need_help_web/live/request_live/show.ex:696 #, elixir-autogen, elixir-format msgid "Category details" -msgstr "" +msgstr "Category details" #: lib/who_need_help_web/live/category_proposal_live.ex:67 #: lib/who_need_help_web/live/moderation_live.ex:466 #, elixir-autogen, elixir-format msgid "Category proposals" -msgstr "" +msgstr "Category proposals" #: lib/who_need_help_web/controllers/user_settings_html/edit.html.heex:22 #, elixir-autogen, elixir-format msgid "Change Email" -msgstr "" +msgstr "Change Email" #: lib/who_need_help_web/live/moderation_live.ex:642 #, elixir-autogen, elixir-format msgid "Change role" -msgstr "" +msgstr "Change role" #: lib/who_need_help_web/controllers/user_settings_html/edit.html.heex:21 #: lib/who_need_help_web/controllers/user_settings_html/edit.html.heex:107 #, elixir-autogen, elixir-format msgid "Changing..." -msgstr "" +msgstr "Changing..." #: lib/who_need_help_web/controllers/page_html/home.html.heex:226 #, elixir-autogen, elixir-format msgid "Choose a category, urgency, and safe location visibility." -msgstr "" +msgstr "Choose a category, urgency, and safe location visibility." #: lib/who_need_help_web/live/activity_live/new.ex:145 #, elixir-autogen, elixir-format msgid "Choose activity" -msgstr "" +msgstr "Choose activity" #: lib/who_need_help_web/live/request_live/new.ex:186 #, elixir-autogen, elixir-format msgid "Choose category" -msgstr "" +msgstr "Choose category" #: lib/who_need_help_web/live/activity_live/new.ex:180 #: lib/who_need_help_web/live/activity_live/new.ex:207 @@ -441,43 +441,43 @@ msgstr "" #: lib/who_need_help_web/live/request_live/new.ex:255 #, elixir-autogen, elixir-format msgid "Choose…" -msgstr "" +msgstr "Choose…" #: lib/who_need_help_web/live/activity_live/new.ex:256 #, elixir-autogen, elixir-format msgid "City centre, near the main entrance" -msgstr "" +msgstr "City centre, near the main entrance" #: lib/who_need_help_web/live/activity_live/show.ex:666 #: lib/who_need_help_web/live/request_live/show.ex:1096 #, elixir-autogen, elixir-format msgid "Clear" -msgstr "" +msgstr "Clear" #: lib/who_need_help_web/live/moderation_live.ex:391 #, elixir-autogen, elixir-format msgid "Close" -msgstr "" +msgstr "Close" #: lib/who_need_help_web/live/activity_live/new.ex:225 #, elixir-autogen, elixir-format msgid "Coffee and conversation" -msgstr "" +msgstr "Coffee and conversation" #: lib/who_need_help_web/live/activity_live/index.ex:182 #, elixir-autogen, elixir-format msgid "Coffee, cinema, walks, and hikes are separate from urgent help and never affect helper ratings." -msgstr "" +msgstr "Coffee, cinema, walks, and hikes are separate from urgent help and never affect helper ratings." #: lib/who_need_help_web/live/request_live/show.ex:848 #, elixir-autogen, elixir-format msgid "Comment (optional)" -msgstr "" +msgstr "Comment (optional)" #: lib/who_need_help_web/live/leaderboard_live.ex:12 #, elixir-autogen, elixir-format msgid "Community helpers" -msgstr "" +msgstr "Community helpers" #: lib/who_need_help_web/live/activity_live/index.ex:262 #: lib/who_need_help_web/live/activity_live/show.ex:396 @@ -486,7 +486,7 @@ msgstr "" #: lib/who_need_help_web/live/request_live/index.ex:287 #, elixir-autogen, elixir-format msgid "Community member" -msgstr "" +msgstr "Community member" #: lib/who_need_help_web/live/activity_live/index.ex:167 #: lib/who_need_help_web/live/activity_live/show.ex:343 @@ -495,326 +495,326 @@ msgstr "" #: lib/who_need_help_web/live/request_live/show.ex:640 #, elixir-autogen, elixir-format msgid "Completed" -msgstr "" +msgstr "Completed" #: lib/who_need_help_web/controllers/user_session_html/new.html.heex:61 #, elixir-autogen, elixir-format msgid "Confirm and log in only this time" -msgstr "" +msgstr "Confirm and log in only this time" #: lib/who_need_help_web/controllers/user_session_html/new.html.heex:55 #, elixir-autogen, elixir-format msgid "Confirm and stay logged in" -msgstr "" +msgstr "Confirm and stay logged in" #: lib/who_need_help_web/live/request_live/show.ex:960 #, elixir-autogen, elixir-format msgid "Confirm my part is complete" -msgstr "" +msgstr "Confirm my part is complete" #: lib/who_need_help_web/controllers/user_settings_html/edit.html.heex:102 #, elixir-autogen, elixir-format msgid "Confirm new password" -msgstr "" +msgstr "Confirm new password" #: lib/who_need_help_web/live/category_proposal_live.ex:52 #: lib/who_need_help_web/live/request_live/show.ex:616 #, elixir-autogen, elixir-format msgid "Confirm your account and ensure it is active first." -msgstr "" +msgstr "Confirm your account and ensure it is active first." #: lib/who_need_help_web/live/activity_live/new.ex:105 #: lib/who_need_help_web/live/request_live/new.ex:144 #, elixir-autogen, elixir-format msgid "Confirm your email and ensure your account is active before publishing." -msgstr "" +msgstr "Confirm your email and ensure your account is active before publishing." -#: lib/who_need_help/accounts/user_notifier.ex:70 +#: lib/who_need_help/accounts/user_notifier.ex:85 #, elixir-autogen, elixir-format msgid "Confirmation instructions" -msgstr "" +msgstr "Confirmation instructions" #: lib/who_need_help_web/controllers/user_session_html/new.html.heex:52 #: lib/who_need_help_web/controllers/user_session_html/new.html.heex:58 #: lib/who_need_help_web/controllers/user_settings_html/confirm_email.html.heex:15 #, elixir-autogen, elixir-format msgid "Confirming..." -msgstr "" +msgstr "Confirming..." #: lib/who_need_help_web/live/activity_live/index.ex:229 #, elixir-autogen, elixir-format msgid "Create a clear plan in a public place." -msgstr "" +msgstr "Create a clear plan in a public place." #: lib/who_need_help_web/live/activity_live/index.ex:188 #: lib/who_need_help_web/live/activity_live/new.ex:12 #, elixir-autogen, elixir-format msgid "Create activity" -msgstr "" +msgstr "Create activity" #: lib/who_need_help_web/live/activity_live/new.ex:120 #, elixir-autogen, elixir-format msgid "Create an activity" -msgstr "" +msgstr "Create an activity" #: lib/who_need_help_web/live/moderation_live.ex:525 #, elixir-autogen, elixir-format msgid "Create category" -msgstr "" +msgstr "Create category" #: lib/who_need_help_web/live/request_live/index.ex:203 #, elixir-autogen, elixir-format msgid "Create urgent request" -msgstr "" +msgstr "Create urgent request" #: lib/who_need_help_web/live/activity_live/show.ex:675 #, elixir-autogen, elixir-format msgid "Dangerous plan" -msgstr "" +msgstr "Dangerous plan" #: lib/who_need_help_web/live/moderation_live.ex:248 #: lib/who_need_help_web/live/request_live/show.ex:1104 #, elixir-autogen, elixir-format msgid "Dangerous request" -msgstr "" +msgstr "Dangerous request" #: lib/who_need_help_web/live/moderation_live.ex:577 #, elixir-autogen, elixir-format msgid "Decision" -msgstr "" +msgstr "Decision" #: lib/who_need_help_web/live/moderation_live.ex:523 #, elixir-autogen, elixir-format msgid "Decision note" -msgstr "" +msgstr "Decision note" #: lib/who_need_help_web/live/moderation_live.ex:293 #, elixir-autogen, elixir-format msgid "Decisions and access to reported chat evidence are written to the audit log." -msgstr "" +msgstr "Decisions and access to reported chat evidence are written to the audit log." #: lib/who_need_help_web/live/activity_live/show.ex:588 #, elixir-autogen, elixir-format msgid "Decline" -msgstr "" +msgstr "Decline" #: lib/who_need_help_web/live/profile_live.ex:164 #, elixir-autogen, elixir-format msgid "Default location visibility" -msgstr "" +msgstr "Default location visibility" #: lib/who_need_help_web/live/activity_live/new.ex:232 #, elixir-autogen, elixir-format msgid "Describe the public plan, approximate duration, and who might enjoy it." -msgstr "" +msgstr "Describe the public plan, approximate duration, and who might enjoy it." #: lib/who_need_help_web/live/moderation_live.ex:260 #: lib/who_need_help_web/live/moderation_live.ex:366 #: lib/who_need_help_web/live/moderation_live.ex:452 #, elixir-autogen, elixir-format msgid "Dismissed" -msgstr "" +msgstr "Dismissed" #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:84 #: lib/who_need_help_web/live/profile_live.ex:149 #, elixir-autogen, elixir-format msgid "Display name" -msgstr "" +msgstr "Display name" #: lib/who_need_help_web/controllers/page_html/safety.html.heex:17 #, elixir-autogen, elixir-format msgid "Do not wait for a volunteer when there is immediate danger, a serious medical situation, fire, violence, or a crime in progress. Contact the emergency service for your location." -msgstr "" +msgstr "Do not wait for a volunteer when there is immediate danger, a serious medical situation, fire, violence, or a crime in progress. Contact the emergency service for your location." #: lib/who_need_help_web/controllers/user_session_html/new.html.heex:10 #, elixir-autogen, elixir-format msgid "Don't have an account?" -msgstr "" +msgstr "Don't have an account?" #: lib/who_need_help_web/live/request_live/show.ex:820 #, elixir-autogen, elixir-format msgid "Double-blind review" -msgstr "" +msgstr "Double-blind review" #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:75 -#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:89 -#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:122 +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:99 +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:132 #: lib/who_need_help_web/controllers/user_settings_html/edit.html.heex:15 #, elixir-autogen, elixir-format msgid "Email" -msgstr "" +msgstr "Email" #: lib/who_need_help_web/controllers/user_settings_controller.ex:89 #: lib/who_need_help_web/controllers/user_settings_controller.ex:96 #, elixir-autogen, elixir-format msgid "Email change link is invalid or it has expired." -msgstr "" +msgstr "Email change link is invalid or it has expired." #: lib/who_need_help_web/controllers/user_settings_controller.ex:84 #, elixir-autogen, elixir-format msgid "Email changed successfully." -msgstr "" +msgstr "Email changed successfully." #: lib/who_need_help_web/controllers/page_html/safety.html.heex:62 #, elixir-autogen, elixir-format msgid "Email confirmation and social links are not identity guarantees. Manually attached social links are marked unverified. Check the person's history, unique interactions, handover evidence, and revealed reviews, and meet only where you feel safe." -msgstr "" +msgstr "Email confirmation and social links are not identity guarantees. Manually attached social links are marked unverified. Check the person's history, unique interactions, handover evidence, and revealed reviews, and meet only where you feel safe." #: lib/who_need_help_web/live/profile_live.ex:156 #, elixir-autogen, elixir-format msgid "English" -msgstr "" +msgstr "English" #: lib/who_need_help_web/live/moderation_live.ex:506 #, elixir-autogen, elixir-format msgid "English description" -msgstr "" +msgstr "English description" #: lib/who_need_help_web/live/moderation_live.ex:495 #, elixir-autogen, elixir-format msgid "English name" -msgstr "" +msgstr "English name" #: lib/who_need_help_web/live/request_live/show.ex:1005 #, elixir-autogen, elixir-format msgid "Enter handover code" -msgstr "" +msgstr "Enter handover code" #: lib/who_need_help_web/controllers/page_html/home.html.heex:82 #, elixir-autogen, elixir-format msgid "Exact address after matching" -msgstr "" +msgstr "Exact address after matching" #: lib/who_need_help_web/live/activity_live/new.ex:279 #, elixir-autogen, elixir-format msgid "Exact coordinates are shown only to participants you approve." -msgstr "" +msgstr "Exact coordinates are shown only to participants you approve." #: lib/who_need_help_web/live/profile_live.ex:168 #, elixir-autogen, elixir-format msgid "Exact for active match" -msgstr "" +msgstr "Exact for active match" #: lib/who_need_help_web/live/request_live/new.ex:321 #: lib/who_need_help_web/live/request_live/show.ex:646 #, elixir-autogen, elixir-format msgid "Exact only for active match" -msgstr "" +msgstr "Exact only for active match" #: lib/who_need_help_web/live/profile_live.ex:169 #: lib/who_need_help_web/live/request_live/show.ex:647 #, elixir-autogen, elixir-format msgid "Exact publicly" -msgstr "" +msgstr "Exact publicly" #: lib/who_need_help_web/live/request_live/new.ex:322 #, elixir-autogen, elixir-format msgid "Exact publicly — explicit consent" -msgstr "" +msgstr "Exact publicly — explicit consent" #: lib/who_need_help_web/live/request_live/show.ex:715 #, elixir-autogen, elixir-format msgid "Expires:" -msgstr "" +msgstr "Expires:" #: lib/who_need_help_web/live/request_live/new.ex:279 #, elixir-autogen, elixir-format msgid "Explain what is already arranged and what the volunteer needs to do." -msgstr "" +msgstr "Explain what is already arranged and what the volunteer needs to do." #: lib/who_need_help_web/live/activity_live/index.ex:179 #, elixir-autogen, elixir-format msgid "Find people to join" -msgstr "" +msgstr "Find people to join" #: lib/who_need_help_web/live/activity_live/show.ex:676 #: lib/who_need_help_web/live/moderation_live.ex:250 #: lib/who_need_help_web/live/request_live/show.ex:1106 #, elixir-autogen, elixir-format msgid "Fraud" -msgstr "" +msgstr "Fraud" #: lib/who_need_help_web/controllers/page_html/safety.html.heex:42 #, elixir-autogen, elixir-format msgid "Free help and thanks" -msgstr "" +msgstr "Free help and thanks" #: lib/who_need_help_web/controllers/social_oauth_controller.ex:62 #, elixir-autogen, elixir-format msgid "GitHub profile verified." -msgstr "" +msgstr "GitHub profile verified." #: lib/who_need_help_web/live/profile_live.ex:253 #, elixir-autogen, elixir-format msgid "GitHub verification is unavailable until the operator configures its OAuth credentials. No manually entered link is treated as verified." -msgstr "" +msgstr "GitHub verification is unavailable until the operator configures its OAuth credentials. No manually entered link is treated as verified." #: lib/who_need_help_web/live/request_live/show.ex:988 #, elixir-autogen, elixir-format msgid "HANDOVER CODE FOR THE HELPER" -msgstr "" +msgstr "HANDOVER CODE FOR THE HELPER" #: lib/who_need_help_web/live/profile_live.ex:322 #, elixir-autogen, elixir-format msgid "Handle (optional)" -msgstr "" +msgstr "Handle (optional)" #: lib/who_need_help_web/live/request_live/show.ex:147 #, elixir-autogen, elixir-format msgid "Handover code verified." -msgstr "" +msgstr "Handover code verified." #: lib/who_need_help_web/live/activity_live/show.ex:674 #: lib/who_need_help_web/live/moderation_live.ex:249 #: lib/who_need_help_web/live/request_live/show.ex:1105 #, elixir-autogen, elixir-format msgid "Harassment" -msgstr "" +msgstr "Harassment" #: lib/who_need_help_web/live/request_live/show.ex:135 #, elixir-autogen, elixir-format msgid "Help is in progress." -msgstr "" +msgstr "Help is in progress." #: lib/who_need_help_web/controllers/page_html/safety.html.heex:44 #, elixir-autogen, elixir-format msgid "Help is voluntary and has no required fee. An external thank-you link is optional and appears only after completion. The platform does not receive, split, refund, guarantee, or report that transfer." -msgstr "" +msgstr "Help is voluntary and has no required fee. An external thank-you link is optional and appears only after completion. The platform does not receive, split, refund, guarantee, or report that transfer." #: lib/who_need_help_web/live/leaderboard_live.ex:55 #, elixir-autogen, elixir-format msgid "Helper" -msgstr "" +msgstr "Helper" #: lib/who_need_help_web/live/request_live/show.ex:891 #, elixir-autogen, elixir-format msgid "Helper: %{name}" -msgstr "" +msgstr "Helper: %{name}" #: lib/who_need_help_web/components/layouts.ex:184 #, elixir-autogen, elixir-format msgid "Helpers" -msgstr "" +msgstr "Helpers" #: lib/who_need_help_web/live/leaderboard_live.ex:42 #, elixir-autogen, elixir-format msgid "Helpers leaderboard" -msgstr "" +msgstr "Helpers leaderboard" #: lib/who_need_help/accounts/user_notifier.ex:33 #, elixir-autogen, elixir-format msgid "Hi %{email},\n\nYou can change your email by visiting the URL below:\n\n%{url}\n\nIf you didn't request this change, please ignore this." -msgstr "" +msgstr "Hi %{email},\n\nYou can change your email by visiting the URL below:\n\n%{url}\n\nIf you didn't request this change, please ignore this." -#: lib/who_need_help/accounts/user_notifier.ex:71 +#: lib/who_need_help/accounts/user_notifier.ex:86 #, elixir-autogen, elixir-format msgid "Hi %{email},\n\nYou can confirm your account by visiting the URL below:\n\n%{url}\n\nIf you didn't create an account with us, please ignore this." -msgstr "" +msgstr "Hi %{email},\n\nYou can confirm your account by visiting the URL below:\n\n%{url}\n\nIf you didn't create an account with us, please ignore this." -#: lib/who_need_help/accounts/user_notifier.ex:57 +#: lib/who_need_help/accounts/user_notifier.ex:72 #, elixir-autogen, elixir-format msgid "Hi %{email},\n\nYou can log into your account by visiting the URL below:\n\n%{url}\n\nIf you didn't request this email, please ignore this." -msgstr "" +msgstr "Hi %{email},\n\nYou can log into your account by visiting the URL below:\n\n%{url}\n\nIf you didn't request this email, please ignore this." #: lib/who_need_help_web/live/activity_live/new.ex:264 #: lib/who_need_help_web/live/profile_live.ex:166 @@ -822,28 +822,28 @@ msgstr "" #: lib/who_need_help_web/live/request_live/show.ex:645 #, elixir-autogen, elixir-format msgid "Hidden" -msgstr "" +msgstr "Hidden" #: lib/who_need_help_web/live/moderation_live.ex:350 #, elixir-autogen, elixir-format msgid "Hide activity" -msgstr "" +msgstr "Hide activity" #: lib/who_need_help_web/live/moderation_live.ex:336 #: lib/who_need_help_web/live/moderation_live.ex:348 #, elixir-autogen, elixir-format msgid "Hide reason" -msgstr "" +msgstr "Hide reason" #: lib/who_need_help_web/live/moderation_live.ex:338 #, elixir-autogen, elixir-format msgid "Hide request" -msgstr "" +msgstr "Hide request" #: lib/who_need_help_web/controllers/feedback_html/show.html.heex:28 #, elixir-autogen, elixir-format msgid "Human decisions retained" -msgstr "" +msgstr "Human decisions retained" #: lib/who_need_help_web/controllers/page_html/home.html.heex:54 #: lib/who_need_help_web/controllers/page_html/home.html.heex:86 @@ -851,37 +851,37 @@ msgstr "" #: lib/who_need_help_web/live/request_live/show.ex:875 #, elixir-autogen, elixir-format msgid "I can help" -msgstr "" +msgstr "I can help" #: lib/who_need_help_web/live/request_live/new.ex:132 #, elixir-autogen, elixir-format msgid "I confirm there is no immediate danger, people and vehicles are away from active traffic or emergency services have already been contacted, and the requested task is lawful." -msgstr "" +msgstr "I confirm there is no immediate danger, people and vehicles are away from active traffic or emergency services have already been contacted, and the requested task is lawful." #: lib/who_need_help_web/live/request_live/new.ex:126 #, elixir-autogen, elixir-format msgid "I confirm this is not an emergency, medical advice request, controlled substance, or request to buy medicine on my behalf." -msgstr "" +msgstr "I confirm this is not an emergency, medical advice request, controlled substance, or request to buy medicine on my behalf." #: lib/who_need_help_web/live/request_live/new.ex:138 #, elixir-autogen, elixir-format msgid "I confirm this is not an emergency, there is no immediate danger, and the requested task is lawful." -msgstr "" +msgstr "I confirm this is not an emergency, there is no immediate danger, and the requested task is lawful." #: lib/who_need_help_web/live/activity_live/new.ex:303 #, elixir-autogen, elixir-format msgid "I will approve participants individually, keep sensitive details in the approved group, and use an appropriate public first meeting point." -msgstr "" +msgstr "I will approve participants individually, keep sensitive details in the approved group, and use an appropriate public first meeting point." #: lib/who_need_help_web/controllers/page_html/safety.html.heex:60 #, elixir-autogen, elixir-format msgid "Identity and reputation" -msgstr "" +msgstr "Identity and reputation" -#: lib/who_need_help_web/controllers/user_session_controller.ex:89 +#: lib/who_need_help_web/controllers/user_session_controller.ex:97 #, elixir-autogen, elixir-format msgid "If your email is in our system, you will receive instructions for logging in shortly." -msgstr "" +msgstr "If your email is in our system, you will receive instructions for logging in shortly." #: lib/who_need_help_web/controllers/content_removal_html.ex:9 #: lib/who_need_help_web/controllers/content_removal_html/new.html.heex:25 @@ -891,254 +891,254 @@ msgstr "" #: lib/who_need_help_web/live/support_operations_live.ex:91 #, elixir-autogen, elixir-format msgid "Impersonation" -msgstr "" +msgstr "Impersonation" #: lib/who_need_help_web/live/request_live/show.ex:1040 #, elixir-autogen, elixir-format msgid "In a browser this works only while the page remains open. The Android app shows a persistent notification and can continue after it is minimized. Raw coordinates are removed when sharing stops." -msgstr "" +msgstr "In a browser this works only while the page remains open. The Android app shows a persistent notification and can continue after it is minimized. Raw coordinates are removed when sharing stops." #: lib/who_need_help_web/live/request_live/index.ex:180 #: lib/who_need_help_web/live/request_live/index.ex:181 #: lib/who_need_help_web/live/request_live/show.ex:639 #, elixir-autogen, elixir-format msgid "In progress" -msgstr "" +msgstr "In progress" #: lib/who_need_help_web/live/profile_live.ex:154 #, elixir-autogen, elixir-format msgid "Interface language" -msgstr "" +msgstr "Interface language" #: lib/who_need_help_web/live/moderation_live.ex:621 #, elixir-autogen, elixir-format msgid "Internal note" -msgstr "" +msgstr "Internal note" -#: lib/who_need_help_web/controllers/user_session_controller.ex:124 +#: lib/who_need_help_web/controllers/user_session_controller.ex:132 #, elixir-autogen, elixir-format msgid "Invalid email or password" -msgstr "" +msgstr "Invalid email or password" #: lib/who_need_help_web/live/activity_live/show.ex:318 #, elixir-autogen, elixir-format msgid "Join requests are closed." -msgstr "" +msgstr "Join requests are closed." #: lib/who_need_help_web/live/activity_live/show.ex:384 #, elixir-autogen, elixir-format msgid "Join requests close" -msgstr "" +msgstr "Join requests close" #: lib/who_need_help_web/live/activity_live/new.ex:244 #, elixir-autogen, elixir-format msgid "Join requests close (UTC)" -msgstr "" +msgstr "Join requests close (UTC)" #: lib/who_need_help_web/live/activity_live/new.ex:287 #: lib/who_need_help_web/live/request_live/new.ex:345 #, elixir-autogen, elixir-format msgid "Latitude" -msgstr "" +msgstr "Latitude" #: lib/who_need_help_web/live/activity_live/show.ex:541 #, elixir-autogen, elixir-format msgid "Leave activity" -msgstr "" +msgstr "Leave activity" #: lib/who_need_help_web/live/request_live/show.ex:1038 #, elixir-autogen, elixir-format msgid "Live location" -msgstr "" +msgstr "Live location" #: lib/who_need_help_web/controllers/page_html/safety.html.heex:51 #: lib/who_need_help_web/live/activity_live/show.ex:507 #, elixir-autogen, elixir-format msgid "Location privacy" -msgstr "" +msgstr "Location privacy" #: lib/who_need_help_web/live/request_live/show.ex:927 #, elixir-autogen, elixir-format msgid "Location sharing is optional; missing evidence is not proof of abuse." -msgstr "" +msgstr "Location sharing is optional; missing evidence is not proof of abuse." #: lib/who_need_help_web/live/request_live/new.ex:317 #, elixir-autogen, elixir-format msgid "Location visibility" -msgstr "" +msgstr "Location visibility" #: lib/who_need_help_web/live/leaderboard_live.ex:56 #, elixir-autogen, elixir-format msgid "Location-supported people" -msgstr "" +msgstr "Location-supported people" #: lib/who_need_help_web/live/request_live/show.ex:722 #, elixir-autogen, elixir-format msgid "Location:" -msgstr "" +msgstr "Location:" -#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:136 +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:146 #, elixir-autogen, elixir-format msgid "Log in and stay logged in" -msgstr "" +msgstr "Log in and stay logged in" -#: lib/who_need_help/accounts/user_notifier.ex:56 +#: lib/who_need_help/accounts/user_notifier.ex:71 #, elixir-autogen, elixir-format msgid "Log in instructions" -msgstr "" +msgstr "Log in instructions" -#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:139 +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:149 #, elixir-autogen, elixir-format msgid "Log in only this time" -msgstr "" +msgstr "Log in only this time" -#: lib/who_need_help_web/controllers/user_session_controller.ex:117 +#: lib/who_need_help_web/controllers/user_session_controller.ex:125 #, elixir-autogen, elixir-format msgid "Logged out successfully." -msgstr "" +msgstr "Logged out successfully." #: lib/who_need_help_web/live/activity_live/new.ex:294 #: lib/who_need_help_web/live/request_live/new.ex:352 #, elixir-autogen, elixir-format msgid "Longitude" -msgstr "" +msgstr "Longitude" #: lib/who_need_help_web/controllers/feedback_html/show.html.heex:12 #, elixir-autogen, elixir-format msgid "Main Codex session ID" -msgstr "" +msgstr "Main Codex session ID" #: lib/who_need_help_web/controllers/user_settings_html/edit.html.heex:5 #, elixir-autogen, elixir-format msgid "Manage your account email address and password settings" -msgstr "" +msgstr "Manage your account email address and password settings" #: lib/who_need_help_web/live/profile_live.ex:235 #, elixir-autogen, elixir-format msgid "Manually added links are public and marked unverified. A verified badge is only granted after completing a provider authorization flow." -msgstr "" +msgstr "Manually added links are public and marked unverified. A verified badge is only granted after completing a provider authorization flow." #: lib/who_need_help_web/live/activity_live/show.ex:598 #, elixir-autogen, elixir-format msgid "Mark completed" -msgstr "" +msgstr "Mark completed" #: lib/who_need_help_web/controllers/page_html/home.html.heex:231 #, elixir-autogen, elixir-format msgid "Match and coordinate" -msgstr "" +msgstr "Match and coordinate" #: lib/who_need_help_web/live/request_live/index.ex:178 #: lib/who_need_help_web/live/request_live/index.ex:179 #: lib/who_need_help_web/live/request_live/show.ex:637 #, elixir-autogen, elixir-format msgid "Matched" -msgstr "" +msgstr "Matched" #: lib/who_need_help_web/live/request_live/new.ex:118 #, elixir-autogen, elixir-format msgid "Medicine is ready at the pharmacy" -msgstr "" +msgstr "Medicine is ready at the pharmacy" #: lib/who_need_help_web/controllers/page_html/home.html.heex:72 #, elixir-autogen, elixir-format msgid "Medicine order is ready at the pharmacy" -msgstr "" +msgstr "Medicine order is ready at the pharmacy" #: lib/who_need_help_web/controllers/page_html/home.html.heex:68 #, elixir-autogen, elixir-format msgid "Medicine pickup" -msgstr "" +msgstr "Medicine pickup" #: lib/who_need_help_web/live/request_live/new.ex:161 #, elixir-autogen, elixir-format msgid "Medicine pickup remains the first priority. Roadside categories use the same moderated, extensible request flow with details specific to each type of help." -msgstr "" +msgstr "Medicine pickup remains the first priority. Roadside categories use the same moderated, extensible request flow with details specific to each type of help." #: lib/who_need_help_web/controllers/page_html/safety.html.heex:24 #, elixir-autogen, elixir-format msgid "Medicine requests" -msgstr "" +msgstr "Medicine requests" #: lib/who_need_help_web/live/activity_live/index.ex:195 #, elixir-autogen, elixir-format msgid "Meet in public first, keep exact details inside the approved group, and leave or report anything that feels unsafe." -msgstr "" +msgstr "Meet in public first, keep exact details inside the approved group, and leave or report anything that feels unsafe." #: lib/who_need_help_web/live/activity_live/show.ex:390 #, elixir-autogen, elixir-format msgid "Meeting area" -msgstr "" +msgstr "Meeting area" #: lib/who_need_help_web/live/moderation_live.ex:552 #, elixir-autogen, elixir-format msgid "Merge" -msgstr "" +msgstr "Merge" #: lib/who_need_help_web/live/moderation_live.ex:546 #, elixir-autogen, elixir-format msgid "Merge into" -msgstr "" +msgstr "Merge into" #: lib/who_need_help_web/live/moderation_live.ex:551 #, elixir-autogen, elixir-format msgid "Merge note" -msgstr "" +msgstr "Merge note" #: lib/who_need_help_web/live/activity_live/show.ex:487 #, elixir-autogen, elixir-format msgid "Message the approved group" -msgstr "" +msgstr "Message the approved group" #: lib/who_need_help_web/live/category_proposal_live.ex:103 #, elixir-autogen, elixir-format msgid "Mode" -msgstr "" +msgstr "Mode" #: lib/who_need_help_web/components/layouts.ex:189 #: lib/who_need_help_web/live/moderation_live.ex:9 #: lib/who_need_help_web/live/moderation_live.ex:291 #, elixir-autogen, elixir-format msgid "Moderation" -msgstr "" +msgstr "Moderation" #: lib/who_need_help_web/live/moderation_live.ex:271 #: lib/who_need_help_web/live/moderation_live.ex:637 #, elixir-autogen, elixir-format msgid "Moderator" -msgstr "" +msgstr "Moderator" #: lib/who_need_help_web/live/moderation_live.ex:230 #: lib/who_need_help_web/live/support_operations_live.ex:73 #: lib/who_need_help_web/user_auth.ex:306 #, elixir-autogen, elixir-format msgid "Moderator access is required." -msgstr "" +msgstr "Moderator access is required." #: lib/who_need_help_web/live/request_live/index.ex:196 #, elixir-autogen, elixir-format msgid "NEARBY MUTUAL AID" -msgstr "" +msgstr "NEARBY MUTUAL AID" #: lib/who_need_help_web/live/request_live/index.ex:97 #, elixir-autogen, elixir-format msgid "Nearby help" -msgstr "" +msgstr "Nearby help" #: lib/who_need_help_web/live/request_live/new.ex:121 #, elixir-autogen, elixir-format msgid "Need roadside help in a safe location" -msgstr "" +msgstr "Need roadside help in a safe location" #: lib/who_need_help_web/live/profile_live.ex:304 #, elixir-autogen, elixir-format msgid "Network" -msgstr "" +msgstr "Network" #: lib/who_need_help_web/controllers/user_settings_html/edit.html.heex:94 #, elixir-autogen, elixir-format msgid "New password" -msgstr "" +msgstr "New password" #: lib/who_need_help_web/live/activity_live/new.ex:212 #: lib/who_need_help_web/live/activity_live/show.ex:300 @@ -1146,68 +1146,68 @@ msgstr "" #: lib/who_need_help_web/live/request_live/show.ex:568 #, elixir-autogen, elixir-format msgid "No" -msgstr "" +msgstr "No" #: lib/who_need_help_web/live/leaderboard_live.ex:66 #, elixir-autogen, elixir-format msgid "No completed help yet." -msgstr "" +msgstr "No completed help yet." #: lib/who_need_help_web/live/activity_live/show.ex:455 #: lib/who_need_help_web/live/request_live/show.ex:776 #, elixir-autogen, elixir-format msgid "No messages yet." -msgstr "" +msgstr "No messages yet." #: lib/who_need_help_web/live/activity_live/index.ex:227 #, elixir-autogen, elixir-format msgid "No open activities yet" -msgstr "" +msgstr "No open activities yet" #: lib/who_need_help_web/live/request_live/index.ex:254 #, elixir-autogen, elixir-format msgid "No open requests yet" -msgstr "" +msgstr "No open requests yet" #: lib/who_need_help_web/live/moderation_live.ex:460 #, elixir-autogen, elixir-format msgid "No open signals." -msgstr "" +msgstr "No open signals." #: lib/who_need_help_web/live/activity_live/show.ex:593 #, elixir-autogen, elixir-format msgid "No pending join requests." -msgstr "" +msgstr "No pending join requests." #: lib/who_need_help_web/live/category_proposal_live.ex:140 #, elixir-autogen, elixir-format msgid "No proposals yet." -msgstr "" +msgstr "No proposals yet." #: lib/who_need_help_web/live/moderation_live.ex:376 #, elixir-autogen, elixir-format msgid "No reports." -msgstr "" +msgstr "No reports." #: lib/who_need_help_web/live/profile_live.ex:261 #, elixir-autogen, elixir-format msgid "No social links added." -msgstr "" +msgstr "No social links added." #: lib/who_need_help_web/live/profile_live.ex:212 #, elixir-autogen, elixir-format msgid "None revealed yet." -msgstr "" +msgstr "None revealed yet." #: lib/who_need_help_web/controllers/page_html/home.html.heex:58 #, elixir-autogen, elixir-format msgid "Not an emergency or medical service. In immediate danger, contact local emergency services." -msgstr "" +msgstr "Not an emergency or medical service. In immediate danger, contact local emergency services." #: lib/who_need_help_web/controllers/page_html/safety.html.heex:15 #, elixir-autogen, elixir-format msgid "Not for emergencies" -msgstr "" +msgstr "Not for emergencies" #: lib/who_need_help_web/live/request_live/index.ex:168 #: lib/who_need_help_web/live/request_live/index.ex:169 @@ -1217,32 +1217,32 @@ msgstr "" #: lib/who_need_help_web/live/request_live/show.ex:629 #, elixir-autogen, elixir-format msgid "Now" -msgstr "" +msgstr "Now" #: lib/who_need_help_web/live/activity_live/index.ex:177 #, elixir-autogen, elixir-format msgid "OPTIONAL SOCIAL PLANS" -msgstr "" +msgstr "OPTIONAL SOCIAL PLANS" #: lib/who_need_help_web/live/request_live/index.ex:199 #, elixir-autogen, elixir-format msgid "Only approximate areas are shown before a safe match." -msgstr "" +msgstr "Only approximate areas are shown before a safe match." #: lib/who_need_help_web/controllers/page_html/safety.html.heex:26 #, elixir-autogen, elixir-format msgid "Only request pickup of a legal item already reserved or paid for. Do not request medical advice, a prescription, controlled substances, cash advances, repackaging, or a purchase on your behalf. Follow pharmacy rules and local law." -msgstr "" +msgstr "Only request pickup of a legal item already reserved or paid for. Do not request medical advice, a prescription, controlled substances, cash advances, repackaging, or a purchase on your behalf. Follow pharmacy rules and local law." #: lib/who_need_help_web/live/moderation_live.ex:394 #, elixir-autogen, elixir-format msgid "Only the conversation linked to this report is displayed." -msgstr "" +msgstr "Only the conversation linked to this report is displayed." #: lib/who_need_help_web/live/activity_live/show.ex:441 #, elixir-autogen, elixir-format msgid "Only the organizer and approved participants can read or send these messages." -msgstr "" +msgstr "Only the organizer and approved participants can read or send these messages." #: lib/who_need_help_web/controllers/content_removal_html.ex:21 #: lib/who_need_help_web/controllers/support_html.ex:16 @@ -1256,47 +1256,47 @@ msgstr "" #: lib/who_need_help_web/live/support_operations_live.ex:252 #, elixir-autogen, elixir-format msgid "Open" -msgstr "" +msgstr "Open" #: lib/who_need_help_web/live/moderation_live.ex:424 #, elixir-autogen, elixir-format msgid "Open abuse signals" -msgstr "" +msgstr "Open abuse signals" #: lib/who_need_help_web/live/category_proposal_live.ex:134 #, elixir-autogen, elixir-format msgid "Open proposals" -msgstr "" +msgstr "Open proposals" #: lib/who_need_help_web/live/profile_live.ex:174 #, elixir-autogen, elixir-format msgid "Optional external thank-you link" -msgstr "" +msgstr "Optional external thank-you link" #: lib/who_need_help_web/live/request_live/show.ex:1024 #, elixir-autogen, elixir-format msgid "Optional thank-you link" -msgstr "" +msgstr "Optional thank-you link" #: lib/who_need_help_web/live/activity_live/show.ex:394 #, elixir-autogen, elixir-format msgid "Organizer" -msgstr "" +msgstr "Organizer" #: lib/who_need_help_web/live/activity_live/show.ex:159 #, elixir-autogen, elixir-format msgid "Organizer blocked. Their activities and messages are hidden." -msgstr "" +msgstr "Organizer blocked. Their activities and messages are hidden." #: lib/who_need_help_web/live/activity_live/show.ex:546 #, elixir-autogen, elixir-format msgid "Organizer controls" -msgstr "" +msgstr "Organizer controls" #: lib/who_need_help_web/live/activity_live/show.ex:403 #, elixir-autogen, elixir-format msgid "Organizer social links" -msgstr "" +msgstr "Organizer social links" #: lib/who_need_help_web/controllers/content_removal_html.ex:18 #: lib/who_need_help_web/controllers/content_removal_html/new.html.heex:29 @@ -1311,316 +1311,317 @@ msgstr "" #: lib/who_need_help_web/live/support_operations_live.ex:100 #, elixir-autogen, elixir-format msgid "Other" -msgstr "" +msgstr "Other" #: lib/who_need_help_web/live/category_proposal_live.ex:112 #, elixir-autogen, elixir-format msgid "Parent (optional)" -msgstr "" +msgstr "Parent (optional)" #: lib/who_need_help_web/live/activity_live/show.ex:463 #, elixir-autogen, elixir-format msgid "Participant" -msgstr "" +msgstr "Participant" -#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:130 +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:140 #, elixir-autogen, elixir-format msgid "Password" -msgstr "" +msgstr "Password" #: lib/who_need_help_web/controllers/user_settings_controller.ex:60 #, elixir-autogen, elixir-format msgid "Password updated successfully." -msgstr "" +msgstr "Password updated successfully." #: lib/who_need_help_web/live/request_live/new.ex:285 #, elixir-autogen, elixir-format msgid "Pickup instructions (optional)" -msgstr "" +msgstr "Pickup instructions (optional)" #: lib/who_need_help_web/live/request_live/show.ex:691 #, elixir-autogen, elixir-format msgid "Pickup notes" -msgstr "" +msgstr "Pickup notes" #: lib/who_need_help_web/live/activity_live/new.ex:230 #, elixir-autogen, elixir-format msgid "Plan and expectations" -msgstr "" +msgstr "Plan and expectations" #: lib/who_need_help_web/live/activity_live/show.ex:425 #, elixir-autogen, elixir-format msgid "Plan details" -msgstr "" +msgstr "Plan details" #: lib/who_need_help_web/live/request_live/show.ex:624 #, elixir-autogen, elixir-format msgid "Please check the entered data." -msgstr "" +msgstr "Please check the entered data." #: lib/who_need_help_web/live/moderation_live.ex:240 #: lib/who_need_help_web/live/support_operations_live.ex:75 #, elixir-autogen, elixir-format msgid "Please check the submitted fields." -msgstr "" +msgstr "Please check the submitted fields." #: lib/who_need_help_web/live/activity_live/show.ex:338 #, elixir-autogen, elixir-format msgid "Please check the submitted message." -msgstr "" +msgstr "Please check the submitted message." #: lib/who_need_help_web/live/request_live/new.ex:312 #, elixir-autogen, elixir-format msgid "Podil, near the central pharmacy" -msgstr "" +msgstr "Podil, near the central pharmacy" #: lib/who_need_help_web/controllers/page_html/home.html.heex:224 #, elixir-autogen, elixir-format msgid "Post a clear request" -msgstr "" +msgstr "Post a clear request" #: lib/who_need_help_web/components/layouts.ex:55 #: lib/who_need_help_web/components/layouts.ex:87 #, elixir-autogen, elixir-format msgid "Primary navigation" -msgstr "" +msgstr "Primary navigation" #: lib/who_need_help_web/live/request_live/show.ex:760 #, elixir-autogen, elixir-format msgid "Private match chat" -msgstr "" +msgstr "Private match chat" #: lib/who_need_help_web/controllers/feedback_html/show.html.heex:24 #, elixir-autogen, elixir-format msgid "Product boundaries, architecture decisions, Phoenix contexts, migrations, LiveView flows, Docker/Helm packaging, and verification." -msgstr "" +msgstr "Product boundaries, architecture decisions, Phoenix contexts, migrations, LiveView flows, Docker/Helm packaging, and verification." #: lib/who_need_help_web/live/profile_live.ex:37 #, elixir-autogen, elixir-format msgid "Profile updated." -msgstr "" +msgstr "Profile updated." #: lib/who_need_help_web/live/moderation_live.ex:251 #: lib/who_need_help_web/live/request_live/show.ex:1107 #, elixir-autogen, elixir-format msgid "Prohibited item" -msgstr "" +msgstr "Prohibited item" #: lib/who_need_help_web/live/moderation_live.ex:145 #, elixir-autogen, elixir-format msgid "Proposal merged." -msgstr "" +msgstr "Proposal merged." #: lib/who_need_help_web/live/category_proposal_live.ex:18 #, elixir-autogen, elixir-format msgid "Proposal published for community voting." -msgstr "" +msgstr "Proposal published for community voting." #: lib/who_need_help_web/live/moderation_live.ex:133 #, elixir-autogen, elixir-format msgid "Proposal rejected." -msgstr "" +msgstr "Proposal rejected." #: lib/who_need_help_web/live/category_proposal_live.ex:87 #, elixir-autogen, elixir-format msgid "Proposals and votes guide moderators. Approval remains a human decision." -msgstr "" +msgstr "Proposals and votes guide moderators. Approval remains a human decision." #: lib/who_need_help_web/live/category_proposal_live.ex:97 #, elixir-autogen, elixir-format msgid "Proposed category" -msgstr "" +msgstr "Proposed category" #: lib/who_need_help_web/controllers/page_html/safety.html.heex:53 #, elixir-autogen, elixir-format msgid "Public location can be hidden, approximate, or explicitly exact. Live tracking is optional. A browser shares only while its page is open; Android shows a persistent foreground-service notification while sharing. The current exact point is deleted when sharing stops, a match ends, or either participant blocks the other; derived movement and proximity evidence may remain." -msgstr "" +msgstr "Public location can be hidden, approximate, or explicitly exact. Live tracking is optional. A browser shares only while its page is open; Android shows a persistent foreground-service notification while sharing. The current exact point is deleted when sharing stops, a match ends, or either participant blocks the other; derived movement and proximity evidence may remain." #: lib/who_need_help_web/live/activity_live/new.ex:261 #, elixir-autogen, elixir-format msgid "Public map visibility" -msgstr "" +msgstr "Public map visibility" #: lib/who_need_help_web/live/profile_live.ex:317 #, elixir-autogen, elixir-format msgid "Public profile URL" -msgstr "" +msgstr "Public profile URL" #: lib/who_need_help_web/live/profile_live.ex:185 #, elixir-autogen, elixir-format msgid "Public reputation" -msgstr "" +msgstr "Public reputation" #: lib/who_need_help_web/live/activity_live/new.ex:122 #, elixir-autogen, elixir-format msgid "Publish a clear public plan. Join requests stay pending until you approve them." -msgstr "" +msgstr "Publish a clear public plan. Join requests stay pending until you approve them." #: lib/who_need_help_web/live/activity_live/new.ex:315 #, elixir-autogen, elixir-format msgid "Publish activity" -msgstr "" +msgstr "Publish activity" #: lib/who_need_help_web/live/category_proposal_live.ex:129 #, elixir-autogen, elixir-format msgid "Publish proposal" -msgstr "" +msgstr "Publish proposal" #: lib/who_need_help_web/live/request_live/new.ex:369 #, elixir-autogen, elixir-format msgid "Publish request" -msgstr "" +msgstr "Publish request" #: lib/who_need_help_web/live/activity_live/new.ex:313 #: lib/who_need_help_web/live/request_live/new.ex:367 #, elixir-autogen, elixir-format msgid "Publishing…" -msgstr "" +msgstr "Publishing…" #: lib/who_need_help_web/controllers/page_html/safety.html.heex:4 #, elixir-autogen, elixir-format msgid "READ BEFORE USING THE SERVICE" -msgstr "" +msgstr "READ BEFORE USING THE SERVICE" #: lib/who_need_help_web/live/moderation_live.ex:290 #: lib/who_need_help_web/live/support_operations_live.ex:111 #, elixir-autogen, elixir-format msgid "RESTRICTED WORKSPACE" -msgstr "" +msgstr "RESTRICTED WORKSPACE" #: lib/who_need_help_web/live/leaderboard_live.ex:54 #, elixir-autogen, elixir-format msgid "Rank" -msgstr "" +msgstr "Rank" #: lib/who_need_help_web/live/leaderboard_live.ex:45 #, elixir-autogen, elixir-format msgid "Ranking prioritizes unique people helped with optional location-supported evidence, then unique verified handovers. Repeated help between the same pair does not inflate the primary score." -msgstr "" +msgstr "Ranking prioritizes unique people helped with optional location-supported evidence, then unique verified handovers. Repeated help between the same pair does not inflate the primary score." #: lib/who_need_help_web/live/leaderboard_live.ex:60 #: lib/who_need_help_web/live/request_live/show.ex:836 #, elixir-autogen, elixir-format msgid "Rating" -msgstr "" +msgstr "Rating" +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:80 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:43 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:90 #, elixir-autogen, elixir-format msgid "Read the" -msgstr "" +msgstr "Read the" #: lib/who_need_help_web/controllers/content_removal_html/new.html.heex:20 #: lib/who_need_help_web/live/activity_live/show.ex:672 #, elixir-autogen, elixir-format msgid "Reason" -msgstr "" +msgstr "Reason" #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:5 #, elixir-autogen, elixir-format msgid "Register for an account" -msgstr "" +msgstr "Register for an account" #: lib/who_need_help_web/live/moderation_live.ex:535 #, elixir-autogen, elixir-format msgid "Reject" -msgstr "" +msgstr "Reject" #: lib/who_need_help_web/live/moderation_live.ex:534 #, elixir-autogen, elixir-format msgid "Rejection note" -msgstr "" +msgstr "Rejection note" #: lib/who_need_help_web/live/profile_live.ex:295 #, elixir-autogen, elixir-format msgid "Remove" -msgstr "" +msgstr "Remove" #: lib/who_need_help_web/live/activity_live/show.ex:472 #, elixir-autogen, elixir-format msgid "Report" -msgstr "" +msgstr "Report" #: lib/who_need_help_web/live/request_live/show.ex:794 #, elixir-autogen, elixir-format msgid "Report message" -msgstr "" +msgstr "Report message" #: lib/who_need_help_web/live/request_live/show.ex:1102 #, elixir-autogen, elixir-format msgid "Report reason" -msgstr "" +msgstr "Report reason" #: lib/who_need_help_web/live/activity_live/show.ex:126 #: lib/who_need_help_web/live/request_live/show.ex:261 #, elixir-autogen, elixir-format msgid "Report sent to moderators." -msgstr "" +msgstr "Report sent to moderators." #: lib/who_need_help_web/live/moderation_live.ex:17 #, elixir-autogen, elixir-format msgid "Report updated." -msgstr "" +msgstr "Report updated." #: lib/who_need_help_web/live/moderation_live.ex:390 #, elixir-autogen, elixir-format msgid "Reported evidence" -msgstr "" +msgstr "Reported evidence" #: lib/who_need_help_web/live/moderation_live.ex:297 #, elixir-autogen, elixir-format msgid "Reports" -msgstr "" +msgstr "Reports" #: lib/who_need_help_web/live/request_live/show.ex:1066 #, elixir-autogen, elixir-format msgid "Reports go to moderators. Blocking hides requests in both directions and prevents new chat messages." -msgstr "" +msgstr "Reports go to moderators. Blocking hides requests in both directions and prevents new chat messages." #: lib/who_need_help_web/live/request_live/show.ex:127 #, elixir-autogen, elixir-format msgid "Request cancelled." -msgstr "" +msgstr "Request cancelled." #: lib/who_need_help_web/live/request_live/new.ex:306 #, elixir-autogen, elixir-format msgid "Request expires (UTC)" -msgstr "" +msgstr "Request expires (UTC)" #: lib/who_need_help_web/live/moderation_live.ex:58 #, elixir-autogen, elixir-format msgid "Request hidden." -msgstr "" +msgstr "Request hidden." #: lib/who_need_help_web/live/moderation_live.ex:66 #, elixir-autogen, elixir-format msgid "Request restored." -msgstr "" +msgstr "Request restored." #: lib/who_need_help_web/live/activity_live/show.ex:525 #, elixir-autogen, elixir-format msgid "Request to join" -msgstr "" +msgstr "Request to join" #: lib/who_need_help_web/live/request_live/show.ex:730 #, elixir-autogen, elixir-format msgid "Requester links:" -msgstr "" +msgstr "Requester links:" #: lib/who_need_help_web/live/request_live/show.ex:711 #, elixir-autogen, elixir-format msgid "Requester:" -msgstr "" +msgstr "Requester:" #: lib/who_need_help_web/live/request_live/show.ex:745 #, elixir-autogen, elixir-format msgid "Requester: %{count} completed" -msgstr "" +msgstr "Requester: %{count} completed" #: lib/who_need_help_web/live/moderation_live.ex:371 #, elixir-autogen, elixir-format msgid "Resolution note" -msgstr "" +msgstr "Resolution note" #: lib/who_need_help_web/controllers/support_html.ex:19 #: lib/who_need_help_web/live/moderation_live.ex:259 @@ -1628,30 +1629,30 @@ msgstr "" #: lib/who_need_help_web/live/support_operations_live.ex:255 #, elixir-autogen, elixir-format msgid "Resolved" -msgstr "" +msgstr "Resolved" #: lib/who_need_help_web/live/moderation_live.ex:266 #: lib/who_need_help_web/live/moderation_live.ex:615 #, elixir-autogen, elixir-format msgid "Restricted" -msgstr "" +msgstr "Restricted" #: lib/who_need_help_web/live/moderation_live.ex:455 #, elixir-autogen, elixir-format msgid "Review note" -msgstr "" +msgstr "Review note" #: lib/who_need_help_web/live/request_live/show.ex:233 #: lib/who_need_help_web/live/request_live/show.ex:825 #, elixir-autogen, elixir-format msgid "Review saved. It appears after both participants review." -msgstr "" +msgstr "Review saved. It appears after both participants review." #: lib/who_need_help_web/live/moderation_live.ex:261 #: lib/who_need_help_web/live/moderation_live.ex:451 #, elixir-autogen, elixir-format msgid "Reviewed" -msgstr "" +msgstr "Reviewed" #: lib/who_need_help_web/controllers/content_removal_html.ex:23 #: lib/who_need_help_web/controllers/support_html.ex:17 @@ -1661,56 +1662,56 @@ msgstr "" #: lib/who_need_help_web/live/support_operations_live.ex:253 #, elixir-autogen, elixir-format msgid "Reviewing" -msgstr "" +msgstr "Reviewing" #: lib/who_need_help_web/live/moderation_live.ex:575 #, elixir-autogen, elixir-format msgid "Role" -msgstr "" +msgstr "Role" #: lib/who_need_help_web/live/moderation_live.ex:514 #, elixir-autogen, elixir-format msgid "Russian description (optional)" -msgstr "" +msgstr "Russian description (optional)" #: lib/who_need_help_web/live/moderation_live.ex:502 #, elixir-autogen, elixir-format msgid "Russian name (optional)" -msgstr "" +msgstr "Russian name (optional)" #: lib/who_need_help_web/live/activity_live/show.ex:642 #: lib/who_need_help_web/live/request_live/show.ex:1064 #, elixir-autogen, elixir-format msgid "Safety controls" -msgstr "" +msgstr "Safety controls" #: lib/who_need_help_web/controllers/feedback_html/show.html.heex:30 #, elixir-autogen, elixir-format msgid "Safety policy, category approval, account moderation, public launch, and every production infrastructure change remain human-controlled." -msgstr "" +msgstr "Safety policy, category approval, account moderation, public launch, and every production infrastructure change remain human-controlled." #: lib/who_need_help_web/components/layouts.ex:145 #: lib/who_need_help_web/controllers/page_html/safety.html.heex:6 #, elixir-autogen, elixir-format msgid "Safety rules" -msgstr "" +msgstr "Safety rules" #: lib/who_need_help_web/live/moderation_live.ex:373 #: lib/who_need_help_web/live/moderation_live.ex:456 #: lib/who_need_help_web/live/moderation_live.ex:623 #, elixir-autogen, elixir-format msgid "Save" -msgstr "" +msgstr "Save" #: lib/who_need_help_web/controllers/user_settings_html/edit.html.heex:108 #, elixir-autogen, elixir-format msgid "Save Password" -msgstr "" +msgstr "Save Password" #: lib/who_need_help_web/live/profile_live.ex:180 #, elixir-autogen, elixir-format msgid "Save profile" -msgstr "" +msgstr "Save profile" #: lib/who_need_help_web/live/request_live/index.ex:172 #: lib/who_need_help_web/live/request_live/index.ex:173 @@ -1720,312 +1721,312 @@ msgstr "" #: lib/who_need_help_web/live/request_live/show.ex:633 #, elixir-autogen, elixir-format msgid "Scheduled" -msgstr "" +msgstr "Scheduled" #: lib/who_need_help_web/live/activity_live/show.ex:490 #: lib/who_need_help_web/live/request_live/show.ex:811 #, elixir-autogen, elixir-format msgid "Send" -msgstr "" +msgstr "Send" #: lib/who_need_help_web/live/activity_live/show.ex:688 #: lib/who_need_help_web/live/request_live/show.ex:1119 #, elixir-autogen, elixir-format msgid "Send report" -msgstr "" +msgstr "Send report" #: lib/who_need_help_web/controllers/feedback_html/show.html.heex:17 #, elixir-autogen, elixir-format msgid "Set CODEX_SESSION_ID in the deployment environment before the submission recording." -msgstr "" +msgstr "Set CODEX_SESSION_ID in the deployment environment before the submission recording." #: lib/who_need_help_web/live/request_live/show.ex:1051 #, elixir-autogen, elixir-format msgid "Share location" -msgstr "" +msgstr "Share location" #: lib/who_need_help_web/live/request_live/new.ex:287 #, elixir-autogen, elixir-format msgid "Share only non-sensitive instructions. Exact details can wait for the matched chat." -msgstr "" +msgstr "Share only non-sensitive instructions. Exact details can wait for the matched chat." #: lib/who_need_help_web/live/profile_live.ex:150 #, elixir-autogen, elixir-format msgid "Short bio" -msgstr "" +msgstr "Short bio" #: lib/who_need_help_web/live/activity_live/new.ex:224 #: lib/who_need_help_web/live/request_live/new.ex:271 #, elixir-autogen, elixir-format msgid "Short title" -msgstr "" +msgstr "Short title" #: lib/who_need_help_web/controllers/user_session_html/new.html.heex:15 #, elixir-autogen, elixir-format msgid "Sign up" -msgstr "" +msgstr "Sign up" #: lib/who_need_help_web/live/moderation_live.ex:34 #, elixir-autogen, elixir-format msgid "Signal updated." -msgstr "" +msgstr "Signal updated." #: lib/who_need_help_web/components/layouts/root.html.heex:34 #, elixir-autogen, elixir-format msgid "Skip to main content" -msgstr "" +msgstr "Skip to main content" #: lib/who_need_help_web/live/moderation_live.ex:494 #, elixir-autogen, elixir-format msgid "Slug" -msgstr "" +msgstr "Slug" #: lib/who_need_help_web/controllers/page_html/safety.html.heex:33 #, elixir-autogen, elixir-format msgid "Social activities" -msgstr "" +msgstr "Social activities" #: lib/who_need_help_web/live/category_proposal_live.ex:106 #: lib/who_need_help_web/live/category_proposal_live.ex:149 #, elixir-autogen, elixir-format msgid "Social activity" -msgstr "" +msgstr "Social activity" #: lib/who_need_help_web/live/profile_live.ex:52 #, elixir-autogen, elixir-format msgid "Social link added as unverified." -msgstr "" +msgstr "Social link added as unverified." #: lib/who_need_help_web/live/profile_live.ex:74 #, elixir-autogen, elixir-format msgid "Social link was not found." -msgstr "" +msgstr "Social link was not found." #: lib/who_need_help_web/live/profile_live.ex:233 #, elixir-autogen, elixir-format msgid "Social links" -msgstr "" +msgstr "Social links" #: lib/who_need_help_web/controllers/social_oauth_controller.ex:31 #, elixir-autogen, elixir-format msgid "Social verification could not be started." -msgstr "" +msgstr "Social verification could not be started." #: lib/who_need_help_web/controllers/social_oauth_controller.ex:88 #, elixir-autogen, elixir-format msgid "Social verification failed. Please retry." -msgstr "" +msgstr "Social verification failed. Please retry." #: lib/who_need_help_web/controllers/social_oauth_controller.ex:69 #, elixir-autogen, elixir-format msgid "Social verification session expired. Please retry." -msgstr "" +msgstr "Social verification session expired. Please retry." #: lib/who_need_help_web/controllers/social_oauth_controller.ex:76 #, elixir-autogen, elixir-format msgid "Social verification session is invalid." -msgstr "" +msgstr "Social verification session is invalid." #: lib/who_need_help_web/live/activity_live/show.ex:677 #: lib/who_need_help_web/live/moderation_live.ex:252 #: lib/who_need_help_web/live/request_live/show.ex:1108 #, elixir-autogen, elixir-format msgid "Spam" -msgstr "" +msgstr "Spam" #: lib/who_need_help_web/live/request_live/show.ex:953 #, elixir-autogen, elixir-format msgid "Start helping" -msgstr "" +msgstr "Start helping" #: lib/who_need_help_web/live/activity_live/show.ex:378 #, elixir-autogen, elixir-format msgid "Starts" -msgstr "" +msgstr "Starts" #: lib/who_need_help_web/live/activity_live/new.ex:239 #, elixir-autogen, elixir-format msgid "Starts at (UTC)" -msgstr "" +msgstr "Starts at (UTC)" #: lib/who_need_help_web/live/moderation_live.ex:576 #, elixir-autogen, elixir-format msgid "Status" -msgstr "" +msgstr "Status" #: lib/who_need_help_web/live/request_live/show.ex:1059 #, elixir-autogen, elixir-format msgid "Stop and delete position" -msgstr "" +msgstr "Stop and delete position" #: lib/who_need_help_web/live/moderation_live.ex:519 #, elixir-autogen, elixir-format msgid "Structured fields JSON" -msgstr "" +msgstr "Structured fields JSON" #: lib/who_need_help_web/live/moderation_live.ex:124 #, elixir-autogen, elixir-format msgid "Structured fields must be a valid JSON object." -msgstr "" +msgstr "Structured fields must be a valid JSON object." #: lib/who_need_help_web/live/request_live/show.ex:850 #, elixir-autogen, elixir-format msgid "Submit review" -msgstr "" +msgstr "Submit review" #: lib/who_need_help_web/live/moderation_live.ex:267 #: lib/who_need_help_web/live/moderation_live.ex:616 #, elixir-autogen, elixir-format msgid "Suspended" -msgstr "" +msgstr "Suspended" #: lib/who_need_help_web/live/request_live/show.ex:609 #, elixir-autogen, elixir-format msgid "That handover code is not correct." -msgstr "" +msgstr "That handover code is not correct." #: lib/who_need_help_web/live/activity_live/show.ex:144 #: lib/who_need_help_web/live/request_live/show.ex:279 #, elixir-autogen, elixir-format msgid "That message cannot be reported from this view." -msgstr "" +msgstr "That message cannot be reported from this view." #: lib/who_need_help_web/controllers/social_oauth_controller.ex:80 #, elixir-autogen, elixir-format msgid "That social account is already linked." -msgstr "" +msgstr "That social account is already linked." #: lib/who_need_help_web/live/request_live/show.ex:613 #, elixir-autogen, elixir-format msgid "That step is not available in the current state." -msgstr "" +msgstr "That step is not available in the current state." #: lib/who_need_help_web/controllers/social_oauth_controller.ex:24 #, elixir-autogen, elixir-format msgid "That verification provider is not configured." -msgstr "" +msgstr "That verification provider is not configured." #: lib/who_need_help_web/controllers/social_oauth_controller.ex:27 #, elixir-autogen, elixir-format msgid "That verification provider is not supported." -msgstr "" +msgstr "That verification provider is not supported." #: lib/who_need_help_web/live/activity_live/show.ex:316 #, elixir-autogen, elixir-format msgid "The approved group has reached its capacity." -msgstr "" +msgstr "The approved group has reached its capacity." #: lib/who_need_help_web/live/request_live/show.ex:208 #, elixir-autogen, elixir-format msgid "The browser could not share your location." -msgstr "" +msgstr "The browser could not share your location." #: lib/who_need_help_web/live/moderation_live.ex:237 #, elixir-autogen, elixir-format msgid "The last administrator cannot demote themselves." -msgstr "" +msgstr "The last administrator cannot demote themselves." -#: lib/who_need_help_web/controllers/user_session_controller.ex:37 +#: lib/who_need_help_web/controllers/user_session_controller.ex:44 #, elixir-autogen, elixir-format msgid "The link is invalid or it has expired." -msgstr "" +msgstr "The link is invalid or it has expired." #: lib/who_need_help_web/live/activity_live/show.ex:530 #, elixir-autogen, elixir-format msgid "The organizer has not approved your request yet." -msgstr "" +msgstr "The organizer has not approved your request yet." #: lib/who_need_help_web/controllers/page_html/home.html.heex:74 #, elixir-autogen, elixir-format msgid "The pharmacy closes soon and I cannot leave home. The item is already paid for." -msgstr "" +msgstr "The pharmacy closes soon and I cannot leave home. The item is already paid for." #: lib/who_need_help_web/live/profile_live.ex:178 #, elixir-autogen, elixir-format msgid "The platform never handles, requires, splits, or guarantees a payment." -msgstr "" +msgstr "The platform never handles, requires, splits, or guarantees a payment." #: lib/who_need_help_web/live/activity_live/show.ex:512 #, elixir-autogen, elixir-format msgid "The public map is approximate or hidden. Exact coordinates appear only after approval." -msgstr "" +msgstr "The public map is approximate or hidden. Exact coordinates appear only after approval." #: lib/who_need_help_web/live/activity_live/show.ex:660 #, elixir-autogen, elixir-format msgid "The report is scoped to the selected group message." -msgstr "" +msgstr "The report is scoped to the selected group message." #: lib/who_need_help_web/live/request_live/show.ex:1094 #, elixir-autogen, elixir-format msgid "The report will be scoped to the selected chat message." -msgstr "" +msgstr "The report will be scoped to the selected chat message." #: lib/who_need_help_web/live/activity_live/show.ex:319 #, elixir-autogen, elixir-format msgid "This action is unavailable." -msgstr "" +msgstr "This action is unavailable." #: lib/who_need_help_web/live/activity_live/show.ex:326 #, elixir-autogen, elixir-format msgid "This activity is no longer open." -msgstr "" +msgstr "This activity is no longer open." #: lib/who_need_help_web/live/activity_live/show.ex:324 #, elixir-autogen, elixir-format msgid "This activity state has already changed." -msgstr "" +msgstr "This activity state has already changed." #: lib/who_need_help_web/live/request_live/show.ex:618 #, elixir-autogen, elixir-format msgid "This interaction is blocked." -msgstr "" +msgstr "This interaction is blocked." #: lib/who_need_help_web/live/request_live/index.ex:210 #: lib/who_need_help_web/live/request_live/show.ex:670 #, elixir-autogen, elixir-format msgid "This is not an emergency service. Contact local emergency services for immediate danger." -msgstr "" +msgstr "This is not an emergency service. Contact local emergency services for immediate danger." #: lib/who_need_help_web/live/request_live/new.ex:169 #, elixir-autogen, elixir-format msgid "This is not an emergency service. Contact local emergency services for immediate danger. Never include prescription details, payment card data, access codes, or other sensitive information." -msgstr "" +msgstr "This is not an emergency service. Contact local emergency services for immediate danger. Never include prescription details, payment card data, access codes, or other sensitive information." #: lib/who_need_help_web/live/moderation_live.ex:231 #, elixir-autogen, elixir-format msgid "This proposal has already been reviewed." -msgstr "" +msgstr "This proposal has already been reviewed." #: lib/who_need_help_web/live/category_proposal_live.ex:57 #, elixir-autogen, elixir-format msgid "This proposal is already closed." -msgstr "" +msgstr "This proposal is already closed." #: lib/who_need_help_web/live/moderation_live.ex:410 #, elixir-autogen, elixir-format msgid "This report has no linked conversation." -msgstr "" +msgstr "This report has no linked conversation." #: lib/who_need_help_web/live/request_live/show.ex:1029 #, elixir-autogen, elixir-format msgid "This request already has a helper." -msgstr "" +msgstr "This request already has a helper." #: lib/who_need_help_web/live/request_live/show.ex:74 #: lib/who_need_help_web/live/request_live/show.ex:620 #, elixir-autogen, elixir-format msgid "This request is no longer available." -msgstr "" +msgstr "This request is no longer available." #: lib/who_need_help_web/live/request_live/show.ex:59 #, elixir-autogen, elixir-format msgid "This request is unavailable." -msgstr "" +msgstr "This request is unavailable." #: lib/who_need_help_web/controllers/user_session_html/new.html.heex:27 #, elixir-autogen, elixir-format msgid "To see sent emails, visit" -msgstr "" +msgstr "To see sent emails, visit" #: lib/who_need_help_web/live/request_live/index.ex:170 #: lib/who_need_help_web/live/request_live/index.ex:171 @@ -2035,7 +2036,7 @@ msgstr "" #: lib/who_need_help_web/live/request_live/show.ex:631 #, elixir-autogen, elixir-format msgid "Today" -msgstr "" +msgstr "Today" #: lib/who_need_help_web/live/activity_live/new.ex:108 #: lib/who_need_help_web/live/activity_live/show.ex:336 @@ -2044,247 +2045,249 @@ msgstr "" #: lib/who_need_help_web/live/request_live/show.ex:623 #, elixir-autogen, elixir-format msgid "Too many actions in the configured time window." -msgstr "" +msgstr "Too many actions in the configured time window." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:180 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:139 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:309 #: lib/who_need_help_web/controllers/user_registration_controller.ex:49 #, elixir-autogen, elixir-format msgid "Too many registration attempts in the configured time window." -msgstr "" +msgstr "Too many registration attempts in the configured time window." #: lib/who_need_help_web/live/request_live/new.ex:147 #, elixir-autogen, elixir-format msgid "Too many requests in the configured time window." -msgstr "" +msgstr "Too many requests in the configured time window." -#: lib/who_need_help_web/controllers/user_session_controller.ex:102 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:189 +#: lib/who_need_help_web/controllers/user_session_controller.ex:110 #, elixir-autogen, elixir-format msgid "Too many sign-in emails in the configured time window." -msgstr "" +msgstr "Too many sign-in emails in the configured time window." #: lib/who_need_help_web/live/category_proposal_live.ex:113 #, elixir-autogen, elixir-format msgid "Top level" -msgstr "" +msgstr "Top level" #: lib/who_need_help_web/live/leaderboard_live.ex:59 #, elixir-autogen, elixir-format msgid "Total" -msgstr "" +msgstr "Total" #: lib/who_need_help_web/live/activity_live/new.ex:251 #, elixir-autogen, elixir-format msgid "Total group capacity" -msgstr "" +msgstr "Total group capacity" #: lib/who_need_help_web/live/moderation_live.ex:510 #, elixir-autogen, elixir-format msgid "Ukrainian description (optional)" -msgstr "" +msgstr "Ukrainian description (optional)" #: lib/who_need_help_web/live/moderation_live.ex:498 #, elixir-autogen, elixir-format msgid "Ukrainian name (optional)" -msgstr "" +msgstr "Ukrainian name (optional)" #: lib/who_need_help_web/live/profile_live.ex:345 #, elixir-autogen, elixir-format msgid "Unblock" -msgstr "" +msgstr "Unblock" #: lib/who_need_help_web/live/request_live/show.ex:1082 #, elixir-autogen, elixir-format msgid "Unblock this user" -msgstr "" +msgstr "Unblock this user" #: lib/who_need_help_web/live/leaderboard_live.ex:58 #, elixir-autogen, elixir-format msgid "Unique people" -msgstr "" +msgstr "Unique people" #: lib/who_need_help/accounts/user_notifier.ex:32 #, elixir-autogen, elixir-format msgid "Update email instructions" -msgstr "" +msgstr "Update email instructions" #: lib/who_need_help_web/live/request_live/index.ex:240 #: lib/who_need_help_web/live/request_live/new.ex:296 #, elixir-autogen, elixir-format msgid "Urgency" -msgstr "" +msgstr "Urgency" #: lib/who_need_help_web/live/category_proposal_live.ex:105 #: lib/who_need_help_web/live/category_proposal_live.ex:148 #, elixir-autogen, elixir-format msgid "Urgent help" -msgstr "" +msgstr "Urgent help" #: lib/who_need_help_web/live/activity_live/new.ex:128 #, elixir-autogen, elixir-format msgid "Use a public first meeting point. Do not publish a home address, access code, travel document, or other sensitive information." -msgstr "" +msgstr "Use a public first meeting point. Do not publish a home address, access code, travel document, or other sensitive information." #: lib/who_need_help_web/components/layouts.ex:362 #, elixir-autogen, elixir-format msgid "Use dark theme" -msgstr "" +msgstr "Use dark theme" #: lib/who_need_help_web/components/layouts.ex:353 #, elixir-autogen, elixir-format msgid "Use light theme" -msgstr "" +msgstr "Use light theme" #: lib/who_need_help_web/live/activity_live/new.ex:276 #: lib/who_need_help_web/live/request_live/new.ex:334 #, elixir-autogen, elixir-format msgid "Use my current foreground location" -msgstr "" +msgstr "Use my current foreground location" #: lib/who_need_help_web/controllers/page_html/home.html.heex:233 #, elixir-autogen, elixir-format msgid "Use private chat and optional live location sharing." -msgstr "" +msgstr "Use private chat and optional live location sharing." #: lib/who_need_help_web/components/layouts.ex:344 #, elixir-autogen, elixir-format msgid "Use system theme" -msgstr "" +msgstr "Use system theme" #: lib/who_need_help_web/live/moderation_live.ex:270 #: lib/who_need_help_web/live/moderation_live.ex:574 #: lib/who_need_help_web/live/moderation_live.ex:636 #, elixir-autogen, elixir-format msgid "User" -msgstr "" +msgstr "User" #: lib/who_need_help_web/live/request_live/show.ex:308 #, elixir-autogen, elixir-format msgid "User blocked. Their requests and new messages are hidden." -msgstr "" +msgstr "User blocked. Their requests and new messages are hidden." -#: lib/who_need_help_web/controllers/user_session_controller.ex:25 +#: lib/who_need_help_web/controllers/user_session_controller.ex:31 #, elixir-autogen, elixir-format msgid "User confirmed successfully." -msgstr "" +msgstr "User confirmed successfully." #: lib/who_need_help_web/live/moderation_live.ex:50 #, elixir-autogen, elixir-format msgid "User role updated." -msgstr "" +msgstr "User role updated." #: lib/who_need_help_web/live/moderation_live.ex:42 #, elixir-autogen, elixir-format msgid "User status updated." -msgstr "" +msgstr "User status updated." #: lib/who_need_help_web/live/profile_live.ex:87 #: lib/who_need_help_web/live/request_live/show.ex:322 #, elixir-autogen, elixir-format msgid "User unblocked." -msgstr "" +msgstr "User unblocked." #: lib/who_need_help_web/live/leaderboard_live.ex:57 #, elixir-autogen, elixir-format msgid "Verified people" -msgstr "" +msgstr "Verified people" #: lib/who_need_help_web/live/profile_live.ex:245 #, elixir-autogen, elixir-format msgid "Verify GitHub" -msgstr "" +msgstr "Verify GitHub" #: lib/who_need_help_web/live/request_live/show.ex:1009 #, elixir-autogen, elixir-format msgid "Verify handover" -msgstr "" +msgstr "Verify handover" #: lib/who_need_help_web/controllers/page_html/home.html.heex:238 #, elixir-autogen, elixir-format msgid "Verify the handover" -msgstr "" +msgstr "Verify the handover" #: lib/who_need_help_web/live/moderation_live.ex:327 #, elixir-autogen, elixir-format msgid "View scoped evidence" -msgstr "" +msgstr "View scoped evidence" #: lib/who_need_help_web/live/profile_live.ex:210 #, elixir-autogen, elixir-format msgid "Visible reviews" -msgstr "" +msgstr "Visible reviews" #: lib/who_need_help_web/live/request_live/show.ex:879 #, elixir-autogen, elixir-format msgid "Waiting for a nearby volunteer." -msgstr "" +msgstr "Waiting for a nearby volunteer." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:137 -#: lib/who_need_help_web/controllers/user_session_controller.ex:26 -#: lib/who_need_help_web/controllers/user_session_controller.ex:51 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:266 +#: lib/who_need_help_web/controllers/user_session_controller.ex:32 +#: lib/who_need_help_web/controllers/user_session_controller.ex:58 #, elixir-autogen, elixir-format msgid "Welcome back!" -msgstr "" +msgstr "Welcome back!" #: lib/who_need_help_web/controllers/feedback_html/show.html.heex:22 #, elixir-autogen, elixir-format msgid "What Codex contributed" -msgstr "" +msgstr "What Codex contributed" #: lib/who_need_help_web/live/activity_live/show.ex:685 #: lib/who_need_help_web/live/request_live/show.ex:1116 #, elixir-autogen, elixir-format msgid "What happened?" -msgstr "" +msgstr "What happened?" #: lib/who_need_help_web/live/category_proposal_live.ex:84 #, elixir-autogen, elixir-format msgid "What help category is missing?" -msgstr "" +msgstr "What help category is missing?" #: lib/who_need_help_web/live/request_live/new.ex:277 #, elixir-autogen, elixir-format msgid "What help do you need?" -msgstr "" +msgstr "What help do you need?" #: lib/who_need_help_web/controllers/page_html/safety.html.heex:8 #, elixir-autogen, elixir-format msgid "Who Need Help coordinates voluntary help between adults. It cannot verify every person, request, item, route, or outcome and cannot guarantee safety." -msgstr "" +msgstr "Who Need Help coordinates voluntary help between adults. It cannot verify every person, request, item, route, or outcome and cannot guarantee safety." #: lib/who_need_help_web/components/layouts.ex:43 #, elixir-autogen, elixir-format msgid "Who Need Help home" -msgstr "" +msgstr "Who Need Help home" #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:106 #, elixir-autogen, elixir-format msgid "Who Need Help is not an emergency or medical service. Medicine requests are limited to pickup of legal items already purchased or reserved." -msgstr "" +msgstr "Who Need Help is not an emergency or medical service. Medicine requests are limited to pickup of legal items already purchased or reserved." #: lib/who_need_help_web/controllers/feedback_html/show.html.heex:6 #, elixir-autogen, elixir-format msgid "Who Need Help was developed with the local Codex CLI authenticated through the builder's ChatGPT subscription. No OpenAI API key or usage-based API fallback is used." -msgstr "" +msgstr "Who Need Help was developed with the local Codex CLI authenticated through the builder's ChatGPT subscription. No OpenAI API key or usage-based API fallback is used." #: lib/who_need_help_web/live/request_live/index.ex:197 #, elixir-autogen, elixir-format msgid "Who needs help?" -msgstr "" +msgstr "Who needs help?" #: lib/who_need_help_web/live/category_proposal_live.ex:127 #, elixir-autogen, elixir-format msgid "Why is this useful?" -msgstr "" +msgstr "Why is this useful?" #: lib/who_need_help_web/live/request_live/show.ex:970 #, elixir-autogen, elixir-format msgid "Withdraw from this request" -msgstr "" +msgstr "Withdraw from this request" #: lib/who_need_help_web/live/request_live/show.ex:807 #, elixir-autogen, elixir-format msgid "Write a safe coordination message…" -msgstr "" +msgstr "Write a safe coordination message…" #: lib/who_need_help_web/live/activity_live/new.ex:209 #: lib/who_need_help_web/live/activity_live/show.ex:298 @@ -2292,142 +2295,143 @@ msgstr "" #: lib/who_need_help_web/live/request_live/show.ex:566 #, elixir-autogen, elixir-format msgid "Yes" -msgstr "" +msgstr "Yes" #: lib/who_need_help_web/live/activity_live/show.ex:313 #, elixir-autogen, elixir-format msgid "You already have a join request for this activity." -msgstr "" +msgstr "You already have a join request for this activity." #: lib/who_need_help_web/live/category_proposal_live.ex:59 #, elixir-autogen, elixir-format msgid "You already voted for this proposal." -msgstr "" +msgstr "You already voted for this proposal." #: lib/who_need_help_web/live/activity_live/show.ex:510 #, elixir-autogen, elixir-format msgid "You are approved, so the map can show the exact meeting coordinates." -msgstr "" +msgstr "You are approved, so the map can show the exact meeting coordinates." #: lib/who_need_help_web/live/request_live/show.ex:117 #, elixir-autogen, elixir-format msgid "You are matched. Use chat to coordinate safely." -msgstr "" +msgstr "You are matched. Use chat to coordinate safely." #: lib/who_need_help_web/live/activity_live/show.ex:321 #: lib/who_need_help_web/live/request_live/show.ex:610 #, elixir-autogen, elixir-format msgid "You are not allowed to do that." -msgstr "" +msgstr "You are not allowed to do that." #: lib/who_need_help_web/controllers/user_session_html/new.html.heex:25 #, elixir-autogen, elixir-format msgid "You are running the local mail adapter." -msgstr "" +msgstr "You are running the local mail adapter." #: lib/who_need_help_web/live/request_live/new.ex:337 #, elixir-autogen, elixir-format msgid "You can also enter coordinates manually for local testing." -msgstr "" +msgstr "You can also enter coordinates manually for local testing." #: lib/who_need_help_web/live/request_live/index.ex:256 #, elixir-autogen, elixir-format msgid "You can be the first person to ask the community." -msgstr "" +msgstr "You can be the first person to ask the community." #: lib/who_need_help_web/live/request_live/show.ex:607 #, elixir-autogen, elixir-format msgid "You cannot accept your own request." -msgstr "" +msgstr "You cannot accept your own request." #: lib/who_need_help_web/live/activity_live/show.ex:320 #, elixir-autogen, elixir-format msgid "You cannot report your own content." -msgstr "" +msgstr "You cannot report your own content." #: lib/who_need_help_web/live/moderation_live.ex:234 #, elixir-autogen, elixir-format msgid "You cannot restrict your own moderator account." -msgstr "" +msgstr "You cannot restrict your own moderator account." #: lib/who_need_help_web/live/profile_live.ex:333 #, elixir-autogen, elixir-format msgid "You have not blocked anyone." -msgstr "" +msgstr "You have not blocked anyone." #: lib/who_need_help_web/user_auth.ex:256 #: lib/who_need_help_web/user_auth.ex:288 #: lib/who_need_help_web/user_auth.ex:318 #, elixir-autogen, elixir-format msgid "You must log in to access this page." -msgstr "" +msgstr "You must log in to access this page." #: lib/who_need_help_web/user_auth.ex:226 #, elixir-autogen, elixir-format msgid "You must re-authenticate to access this page." -msgstr "" +msgstr "You must re-authenticate to access this page." #: lib/who_need_help_web/controllers/user_session_html/new.html.heex:8 #, elixir-autogen, elixir-format msgid "You need to reauthenticate to perform sensitive actions on your account." -msgstr "" +msgstr "You need to reauthenticate to perform sensitive actions on your account." #: lib/who_need_help_web/live/request_live/show.ex:142 #, elixir-autogen, elixir-format msgid "You withdrew from this request." -msgstr "" +msgstr "You withdrew from this request." #: lib/who_need_help_web/live/activity_live/index.ex:292 #, elixir-autogen, elixir-format msgid "Your activities" -msgstr "" +msgstr "Your activities" #: lib/who_need_help_web/live/request_live/show.ex:138 #, elixir-autogen, elixir-format msgid "Your confirmation was saved." -msgstr "" +msgstr "Your confirmation was saved." #: lib/who_need_help_web/live/profile_live.ex:142 #, elixir-autogen, elixir-format msgid "Your profile" -msgstr "" +msgstr "Your profile" #: lib/who_need_help_web/live/request_live/new.ex:52 #, elixir-autogen, elixir-format msgid "Your request is now visible to nearby helpers." -msgstr "" +msgstr "Your request is now visible to nearby helpers." #: lib/who_need_help_web/controllers/support_html/index.html.heex:6 #: lib/who_need_help_web/live/request_live/index.ex:342 #, elixir-autogen, elixir-format msgid "Your requests" -msgstr "" +msgstr "Your requests" #: lib/who_need_help_web/live/request_live/show.ex:822 #, elixir-autogen, elixir-format msgid "Your review is revealed only after both participants submit." -msgstr "" +msgstr "Your review is revealed only after both participants submit." #: lib/who_need_help_web/live/request_live/index.ex:319 #, elixir-autogen, elixir-format msgid "Your trust summary" -msgstr "" +msgstr "Your trust summary" #: lib/who_need_help_web/live/moderation_live.ex:311 #, elixir-autogen, elixir-format msgid "activity" -msgstr "" +msgstr "activity" #: lib/who_need_help_web/live/moderation_live.ex:314 #, elixir-autogen, elixir-format msgid "activity message" -msgstr "" +msgstr "activity message" +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:85 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:48 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:95 #, elixir-autogen, elixir-format msgid "before confirming." -msgstr "" +msgstr "before confirming." #: lib/who_need_help_web/live/activity_live/index.ex:261 #: lib/who_need_help_web/live/category_proposal_live.ex:153 @@ -2435,86 +2439,86 @@ msgstr "" #: lib/who_need_help_web/live/request_live/index.ex:286 #, elixir-autogen, elixir-format msgid "by %{name}" -msgstr "" +msgstr "by %{name}" #: lib/who_need_help_web/live/profile_live.ex:189 #: lib/who_need_help_web/live/request_live/index.ex:323 #: lib/who_need_help_web/live/request_live/show.ex:896 #, elixir-autogen, elixir-format msgid "completed" -msgstr "" +msgstr "completed" #: lib/who_need_help_web/live/request_live/index.ex:291 #, elixir-autogen, elixir-format msgid "expires %{time}" -msgstr "" +msgstr "expires %{time}" #: lib/who_need_help_web/controllers/user_session_html/new.html.heex:16 #, elixir-autogen, elixir-format msgid "for an account now." -msgstr "" +msgstr "for an account now." #: lib/who_need_help_web/live/request_live/show.ex:923 #, elixir-autogen, elixir-format msgid "helper movement supported" -msgstr "" +msgstr "helper movement supported" #: lib/who_need_help_web/live/request_live/show.ex:924 #, elixir-autogen, elixir-format msgid "no movement evidence" -msgstr "" +msgstr "no movement evidence" #: lib/who_need_help_web/live/request_live/show.ex:915 #, elixir-autogen, elixir-format msgid "no proximity evidence" -msgstr "" +msgstr "no proximity evidence" #: lib/who_need_help_web/live/activity_live/show.ex:612 #, elixir-autogen, elixir-format msgid "organizer" -msgstr "" +msgstr "organizer" #: lib/who_need_help_web/live/request_live/show.ex:761 #, elixir-autogen, elixir-format msgid "participants only" -msgstr "" +msgstr "participants only" #: lib/who_need_help_web/live/request_live/index.ex:328 #: lib/who_need_help_web/live/request_live/show.ex:900 #, elixir-autogen, elixir-format msgid "people" -msgstr "" +msgstr "people" #: lib/who_need_help_web/live/request_live/show.ex:914 #, elixir-autogen, elixir-format msgid "proximity supported" -msgstr "" +msgstr "proximity supported" #: lib/who_need_help_web/live/profile_live.ex:204 #: lib/who_need_help_web/live/request_live/show.ex:904 #, elixir-autogen, elixir-format msgid "rating" -msgstr "" +msgstr "rating" #: lib/who_need_help_web/live/request_live/show.ex:753 #, elixir-autogen, elixir-format msgid "rating %{rating}" -msgstr "" +msgstr "rating %{rating}" #: lib/who_need_help_web/controllers/user_session_html/new.html.heex:28 #, elixir-autogen, elixir-format msgid "the mailbox page" -msgstr "" +msgstr "the mailbox page" #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:11 #, elixir-autogen, elixir-format msgid "to your account now." -msgstr "" +msgstr "to your account now." #: lib/who_need_help_web/live/profile_live.ex:194 #, elixir-autogen, elixir-format msgid "unique people" -msgstr "" +msgstr "unique people" #: lib/who_need_help_web/live/activity_live/show.ex:418 #: lib/who_need_help_web/live/activity_live/show.ex:572 @@ -2524,12 +2528,12 @@ msgstr "" #: lib/who_need_help_web/live/request_live/show.ex:945 #, elixir-autogen, elixir-format msgid "unverified" -msgstr "" +msgstr "unverified" #: lib/who_need_help_web/controllers/page_html/home.html.heex:69 #, elixir-autogen, elixir-format msgid "urgent" -msgstr "" +msgstr "urgent" #: lib/who_need_help_web/live/activity_live/show.ex:417 #: lib/who_need_help_web/live/activity_live/show.ex:571 @@ -2540,92 +2544,92 @@ msgstr "" #: lib/who_need_help_web/live/request_live/show.ex:944 #, elixir-autogen, elixir-format msgid "verified" -msgstr "" +msgstr "verified" #: lib/who_need_help_web/live/profile_live.ex:199 #, elixir-autogen, elixir-format msgid "verified handovers" -msgstr "" +msgstr "verified handovers" #: lib/who_need_help_web/live/request_live/show.ex:665 #, elixir-autogen, elixir-format msgid "← All requests" -msgstr "" +msgstr "← All requests" #: lib/who_need_help_web/live/activity_live/new.ex:118 #: lib/who_need_help_web/live/activity_live/show.ex:352 #, elixir-autogen, elixir-format msgid "← Back to activities" -msgstr "" +msgstr "← Back to activities" #: lib/who_need_help_web/live/request_live/new.ex:157 #, elixir-autogen, elixir-format msgid "← Back to requests" -msgstr "" +msgstr "← Back to requests" #: lib/who_need_help_web/live/leaderboard_live.ex:37 #, elixir-autogen, elixir-format msgid "← Requests" -msgstr "" +msgstr "← Requests" #: lib/who_need_help_web/live/moderation_live.ex:262 #, elixir-autogen, elixir-format msgid "Approved" -msgstr "" +msgstr "Approved" #: lib/who_need_help_web/live/request_live/index.ex:186 #: lib/who_need_help_web/live/request_live/index.ex:187 #, elixir-autogen, elixir-format msgid "Expired" -msgstr "" +msgstr "Expired" #: lib/who_need_help_web/live/moderation_live.ex:279 #, elixir-autogen, elixir-format msgid "Handover without location evidence" -msgstr "" +msgstr "Handover without location evidence" #: lib/who_need_help_web/live/moderation_live.ex:281 #, elixir-autogen, elixir-format msgid "Location without movement" -msgstr "" +msgstr "Location without movement" #: lib/who_need_help_web/live/moderation_live.ex:283 #, elixir-autogen, elixir-format msgid "Manual review" -msgstr "" +msgstr "Manual review" #: lib/who_need_help_web/live/moderation_live.ex:264 #, elixir-autogen, elixir-format msgid "Merged" -msgstr "" +msgstr "Merged" #: lib/who_need_help_web/live/moderation_live.ex:282 #, elixir-autogen, elixir-format msgid "Reciprocal rating ring" -msgstr "" +msgstr "Reciprocal rating ring" #: lib/who_need_help_web/controllers/content_removal_html.ex:26 #: lib/who_need_help_web/live/moderation_live.ex:263 #: lib/who_need_help_web/live/support_operations_live.ex:194 #, elixir-autogen, elixir-format msgid "Rejected" -msgstr "" +msgstr "Rejected" #: lib/who_need_help_web/live/moderation_live.ex:276 #, elixir-autogen, elixir-format msgid "Repeated participant pair" -msgstr "" +msgstr "Repeated participant pair" #: lib/who_need_help_web/live/moderation_live.ex:275 #, elixir-autogen, elixir-format msgid "Unusual action rate" -msgstr "" +msgstr "Unusual action rate" #: lib/who_need_help_web/live/activity_live/show.ex:452 #: lib/who_need_help_web/live/request_live/show.ex:773 #, elixir-autogen, elixir-format msgid "Load earlier messages" -msgstr "" +msgstr "Load earlier messages" #: lib/who_need_help_web/live/activity_live/index.ex:273 #: lib/who_need_help_web/live/activity_live/index.ex:310 @@ -2643,7 +2647,7 @@ msgstr "" #: lib/who_need_help_web/live/support_operations_live.ex:276 #, elixir-autogen, elixir-format msgid "Load more" -msgstr "" +msgstr "Load more" #: lib/who_need_help_web/live/activity_live/index.ex:284 #: lib/who_need_help_web/live/activity_live/show.ex:502 @@ -2651,131 +2655,131 @@ msgstr "" #: lib/who_need_help_web/live/request_live/show.ex:862 #, elixir-autogen, elixir-format msgid "The map is unavailable in this browser. Request details remain usable." -msgstr "" +msgstr "The map is unavailable in this browser. Request details remain usable." #: lib/who_need_help_web/controllers/user_settings_html/confirm_email.html.heex:4 #: lib/who_need_help_web/controllers/user_settings_html/confirm_email.html.heex:16 #, elixir-autogen, elixir-format msgid "Confirm email change" -msgstr "" +msgstr "Confirm email change" #: lib/who_need_help_web/controllers/user_settings_html/confirm_email.html.heex:5 #, elixir-autogen, elixir-format msgid "Confirm the new email address for your account." -msgstr "" +msgstr "Confirm the new email address for your account." #: lib/who_need_help_web/live/moderation_live.ex:242 #, elixir-autogen, elixir-format msgid "Could not complete moderation. Please try again." -msgstr "" +msgstr "Could not complete moderation. Please try again." #: lib/who_need_help_web/live/activity_live/show.ex:340 #: lib/who_need_help_web/live/category_proposal_live.ex:61 #: lib/who_need_help_web/live/request_live/show.ex:626 #, elixir-autogen, elixir-format msgid "Could not complete the action. Please try again." -msgstr "" +msgstr "Could not complete the action. Please try again." #: lib/who_need_help_web/live/activity_live/new.ex:110 #, elixir-autogen, elixir-format msgid "Could not publish the activity. Please try again." -msgstr "" +msgstr "Could not publish the activity. Please try again." #: lib/who_need_help_web/live/request_live/new.ex:149 #, elixir-autogen, elixir-format msgid "Could not publish the request. Please try again." -msgstr "" +msgstr "Could not publish the request. Please try again." #: lib/who_need_help_web/live/profile_live.ex:91 #, elixir-autogen, elixir-format msgid "Could not unblock this user. Please try again." -msgstr "" +msgstr "Could not unblock this user. Please try again." #: lib/who_need_help_web/controllers/user_settings_html/confirm_email.html.heex:22 #, elixir-autogen, elixir-format msgid "JavaScript is required to confirm this protected email link." -msgstr "" +msgstr "JavaScript is required to confirm this protected email link." #: lib/who_need_help_web/live/request_live/show.ex:599 #, elixir-autogen, elixir-format msgid "Last update: %{time}" -msgstr "" +msgstr "Last update: %{time}" #: lib/who_need_help_web/live/request_live/show.ex:622 #, elixir-autogen, elixir-format msgid "Live location sharing is not active." -msgstr "" +msgstr "Live location sharing is not active." #: lib/who_need_help_web/live/request_live/show.ex:597 #, elixir-autogen, elixir-format msgid "Shared location" -msgstr "" +msgstr "Shared location" #: lib/who_need_help_web/live/activity_live/show.ex:333 #, elixir-autogen, elixir-format msgid "The organizer cannot leave the activity." -msgstr "" +msgstr "The organizer cannot leave the activity." #: lib/who_need_help_web/live/activity_live/show.ex:330 #, elixir-autogen, elixir-format msgid "The organizer is already attending." -msgstr "" +msgstr "The organizer is already attending." #: lib/who_need_help_web/controllers/user_registration_controller.ex:58 #, elixir-autogen, elixir-format msgid "The registration form is invalid." -msgstr "" +msgstr "The registration form is invalid." #: lib/who_need_help_web/live/moderation_live.ex:239 #: lib/who_need_help_web/live/support_operations_live.ex:74 #, elixir-autogen, elixir-format msgid "The selected record is no longer available." -msgstr "" +msgstr "The selected record is no longer available." #: lib/who_need_help_web/controllers/user_settings_controller.ex:72 #, elixir-autogen, elixir-format msgid "The settings form is invalid." -msgstr "" +msgstr "The settings form is invalid." -#: lib/who_need_help_web/controllers/user_session_controller.ex:111 +#: lib/who_need_help_web/controllers/user_session_controller.ex:119 #, elixir-autogen, elixir-format msgid "The sign-in form is invalid." -msgstr "" +msgstr "The sign-in form is invalid." #: lib/who_need_help_web/live/activity_live/show.ex:327 #, elixir-autogen, elixir-format msgid "This activity is no longer available." -msgstr "" +msgstr "This activity is no longer available." #: lib/who_need_help_web/live/request_live/show.ex:621 #, elixir-autogen, elixir-format msgid "This match is no longer active." -msgstr "" +msgstr "This match is no longer active." #: lib/who_need_help_web/live/category_proposal_live.ex:58 #, elixir-autogen, elixir-format msgid "This proposal is no longer available." -msgstr "" +msgstr "This proposal is no longer available." #: lib/who_need_help_web/live/request_live/show.ex:619 #, elixir-autogen, elixir-format msgid "This request has expired." -msgstr "" +msgstr "This request has expired." -#: lib/who_need_help_web/controllers/user_session_controller.ex:60 +#: lib/who_need_help_web/controllers/user_session_controller.ex:68 #, elixir-autogen, elixir-format msgid "Too many sign-in attempts in the configured time window." -msgstr "" +msgstr "Too many sign-in attempts in the configured time window." #: lib/who_need_help_web/controllers/user_session_html/new.html.heex:46 #, elixir-autogen, elixir-format msgid "Your secure email link is ready. Continue to sign in." -msgstr "" +msgstr "Your secure email link is ready. Continue to sign in." #: lib/who_need_help_web/controllers/user_settings_controller.ex:130 #, elixir-autogen, elixir-format msgid "The confirmation email could not be sent. Please try again." -msgstr "" +msgstr "The confirmation email could not be sent. Please try again." #: lib/who_need_help_web/controllers/user_registration_controller.ex:107 #, elixir-autogen, elixir-format @@ -2785,7 +2789,7 @@ msgstr "If this address can be registered or signed in, login instructions will #: lib/who_need_help_web/live/profile_live.ex:62 #, elixir-autogen, elixir-format msgid "This account cannot perform that action." -msgstr "" +msgstr "This account cannot perform that action." #: lib/who_need_help_web/controllers/user_settings_controller.ex:40 #, elixir-autogen, elixir-format @@ -2795,164 +2799,154 @@ msgstr "Too many email-change requests in the configured time window." #: lib/who_need_help_web/controllers/user_settings_html/edit.html.heex:32 #, elixir-autogen, elixir-format msgid "A Google account is connected. You can use it to sign in." -msgstr "" +msgstr "A Google account is connected. You can use it to sign in." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:207 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:336 #, elixir-autogen, elixir-format msgid "A different Google account is already connected." -msgstr "" +msgstr "A different Google account is already connected." #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:17 #, elixir-autogen, elixir-format msgid "A password is not required. We will email a one-time confirmation link. You can add a password later in account settings." -msgstr "" +msgstr "A password is not required. We will email a one-time confirmation link. You can add a password later in account settings." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:170 -#, elixir-autogen, elixir-format -msgid "An account with this email already exists. Sign in by email or password, then connect Google in account settings." -msgstr "" - -#: lib/who_need_help_web/controllers/google_auth_controller.ex:37 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:42 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:123 #, elixir-autogen, elixir-format msgid "Confirm that you are 18 or older and accept the safety rules first." -msgstr "" +msgstr "Confirm that you are 18 or older and accept the safety rules first." #: lib/who_need_help_web/controllers/user_settings_html/edit.html.heex:49 #, elixir-autogen, elixir-format msgid "Connect Google account" -msgstr "" +msgstr "Connect Google account" #: lib/who_need_help_web/controllers/user_settings_html/edit.html.heex:34 #, elixir-autogen, elixir-format msgid "Connect Google only after signing in here. We never merge accounts automatically by matching email addresses." -msgstr "" +msgstr "Connect Google only after signing in here. We never merge accounts automatically by matching email addresses." #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:112 #, elixir-autogen, elixir-format msgid "Create account and email me a link" -msgstr "" +msgstr "Create account and email me a link" -#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:99 +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:109 #, elixir-autogen, elixir-format msgid "Email me a sign-in link" -msgstr "" +msgstr "Email me a sign-in link" -#: lib/who_need_help_web/controllers/google_auth_controller.ex:215 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:344 #, elixir-autogen, elixir-format msgid "Google account connection session is invalid." -msgstr "" +msgstr "Google account connection session is invalid." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:97 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:226 #, elixir-autogen, elixir-format msgid "Google did not provide a verified email address." -msgstr "" +msgstr "Google did not provide a verified email address." #: lib/who_need_help_web/controllers/user_settings_html/edit.html.heex:29 #, elixir-autogen, elixir-format msgid "Google sign-in" -msgstr "" +msgstr "Google sign-in" -#: lib/who_need_help_web/controllers/google_auth_controller.ex:197 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:326 #, elixir-autogen, elixir-format msgid "Google sign-in connected." -msgstr "" +msgstr "Google sign-in connected." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:123 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:252 #, elixir-autogen, elixir-format msgid "Google sign-in could not be started." -msgstr "" +msgstr "Google sign-in could not be started." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:102 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:231 #, elixir-autogen, elixir-format msgid "Google sign-in failed. Please try again." -msgstr "" +msgstr "Google sign-in failed. Please try again." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:128 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:257 #, elixir-autogen, elixir-format msgid "Google sign-in is not configured yet." -msgstr "" +msgstr "Google sign-in is not configured yet." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:87 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:97 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:216 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:399 #, elixir-autogen, elixir-format msgid "Google sign-in session expired. Please start again." -msgstr "" +msgstr "Google sign-in session expired. Please start again." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:91 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:220 #, elixir-autogen, elixir-format msgid "Google sign-in session is invalid." -msgstr "" +msgstr "Google sign-in session is invalid." #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:55 #: lib/who_need_help_web/controllers/user_session_html/new.html.heex:78 #: lib/who_need_help_web/controllers/user_settings_html/edit.html.heex:53 #, elixir-autogen, elixir-format msgid "Google sign-in will be available after the operator configures it." -msgstr "" +msgstr "Google sign-in will be available after the operator configures it." #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:111 #, elixir-autogen, elixir-format msgid "Sending link..." -msgstr "" - -#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:74 -#, elixir-autogen, elixir-format -msgid "Sign in with Google" -msgstr "" +msgstr "Sending link..." #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:51 #, elixir-autogen, elixir-format msgid "Sign up with Google" -msgstr "" +msgstr "Sign up with Google" -#: lib/who_need_help_web/controllers/google_auth_controller.ex:202 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:331 #, elixir-autogen, elixir-format msgid "That Google account belongs to another local account." -msgstr "" +msgstr "That Google account belongs to another local account." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:45 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:50 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:164 #, elixir-autogen, elixir-format, fuzzy msgid "The Google registration form is invalid." -msgstr "" +msgstr "The Google registration form is invalid." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:260 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:405 #, elixir-autogen, elixir-format msgid "This Google account cannot be used right now." -msgstr "" +msgstr "This Google account cannot be used right now." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:144 -#, elixir-autogen, elixir-format -msgid "This Google account is not connected yet. Create an account or sign in by email and connect Google in account settings." -msgstr "" - -#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:109 +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:119 #, elixir-autogen, elixir-format msgid "This works only if you previously added a password in account settings." -msgstr "" +msgstr "This works only if you previously added a password in account settings." -#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:105 +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:115 #, elixir-autogen, elixir-format msgid "Use a password instead" -msgstr "" +msgstr "Use a password instead" -#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:96 +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:106 #, elixir-autogen, elixir-format msgid "We will send a one-time sign-in link. No password is required." -msgstr "" +msgstr "We will send a one-time sign-in link. No password is required." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:163 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:116 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:288 #, elixir-autogen, elixir-format msgid "Your account was created with Google." -msgstr "" +msgstr "Your account was created with Google." #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:59 #, elixir-autogen, elixir-format, fuzzy msgid "or sign up with email" -msgstr "" +msgstr "or sign up with email" #: lib/who_need_help_web/controllers/user_session_html/new.html.heex:82 #, elixir-autogen, elixir-format msgid "or use email" -msgstr "" +msgstr "or use email" #: lib/who_need_help_web/controllers/user_settings_html/edit.html.heex:70 #, elixir-autogen, elixir-format @@ -2964,12 +2958,12 @@ msgstr "Disconnect Google" msgid "Disconnect Google sign-in from this account?" msgstr "Disconnect Google sign-in from this account?" -#: lib/who_need_help_web/controllers/google_auth_controller.ex:60 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:65 #, elixir-autogen, elixir-format msgid "Google sign-in disconnected." msgstr "Google sign-in disconnected." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:65 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:70 #, elixir-autogen, elixir-format msgid "No Google account is connected." msgstr "No Google account is connected." @@ -2977,97 +2971,97 @@ msgstr "No Google account is connected." #: lib/who_need_help_web/controllers/content_removal_html/take_it_down.html.heex:45 #, elixir-autogen, elixir-format msgid "A person I am authorised to represent" -msgstr "" +msgstr "A person I am authorised to represent" #: lib/who_need_help_web/controllers/content_removal_html/received.html.heex:8 #, elixir-autogen, elixir-format msgid "A private status link has been sent when a contact email was provided and delivery is configured. Opening that link verifies the contact address. Keep the reference for follow-up." -msgstr "" +msgstr "A private status link has been sent when a contact email was provided and delivery is configured. Opening that link verifies the contact address. Keep the reference for follow-up." #: lib/who_need_help_web/controllers/support_html/delete_account.html.heex:3 #, elixir-autogen, elixir-format msgid "ACCOUNT AND DATA" -msgstr "" +msgstr "ACCOUNT AND DATA" #: lib/who_need_help_web/controllers/support_html.ex:6 #: lib/who_need_help_web/controllers/support_html/new.html.heex:29 #: lib/who_need_help_web/live/support_operations_live.ex:78 #, elixir-autogen, elixir-format, fuzzy msgid "Account access" -msgstr "" +msgstr "Account access" #: lib/who_need_help_web/controllers/user_settings_html/edit.html.heex:115 #, elixir-autogen, elixir-format msgid "Account and personal data" -msgstr "" +msgstr "Account and personal data" #: lib/who_need_help_web/controllers/support_html.ex:10 #: lib/who_need_help_web/live/support_operations_live.ex:82 #, elixir-autogen, elixir-format, fuzzy msgid "Account deletion" -msgstr "" +msgstr "Account deletion" #: lib/who_need_help_web/controllers/support_html/delete_account.html.heex:26 #, elixir-autogen, elixir-format, fuzzy msgid "Account email" -msgstr "" +msgstr "Account email" #: lib/who_need_help_web/controllers/content_removal_html.ex:25 #: lib/who_need_help_web/live/support_operations_live.ex:193 #, elixir-autogen, elixir-format, fuzzy msgid "Action taken" -msgstr "" +msgstr "Action taken" #: lib/who_need_help_web/controllers/support_html/delete_account.html.heex:34 #, elixir-autogen, elixir-format msgid "Additional information" -msgstr "" +msgstr "Additional information" #: lib/who_need_help_web/controllers/support_html/new.html.heex:32 #, elixir-autogen, elixir-format msgid "Appeal a moderation decision" -msgstr "" +msgstr "Appeal a moderation decision" #: lib/who_need_help_web/controllers/content_removal_html/received.html.heex:13 #, elixir-autogen, elixir-format msgid "Back to removal form" -msgstr "" +msgstr "Back to removal form" #: lib/who_need_help_web/controllers/support_html/received.html.heex:11 #, elixir-autogen, elixir-format msgid "Back to support" -msgstr "" +msgstr "Back to support" #: lib/who_need_help_web/controllers/content_removal_html/new.html.heex:3 #, elixir-autogen, elixir-format msgid "CONTENT REMOVAL" -msgstr "" +msgstr "CONTENT REMOVAL" #: lib/who_need_help_web/controllers/support_html/received.html.heex:4 #, elixir-autogen, elixir-format msgid "Check your email" -msgstr "" +msgstr "Check your email" #: lib/who_need_help_web/controllers/content_removal_html/take_it_down.html.heex:27 #, elixir-autogen, elixir-format, fuzzy msgid "Choose a category" -msgstr "" +msgstr "Choose a category" #: lib/who_need_help_web/controllers/content_removal_html/new.html.heex:31 #, elixir-autogen, elixir-format msgid "Choose a reason" -msgstr "" +msgstr "Choose a reason" #: lib/who_need_help_web/controllers/content_removal_html/new.html.heex:51 #: lib/who_need_help_web/controllers/content_removal_html/take_it_down.html.heex:47 #, elixir-autogen, elixir-format msgid "Choose a relationship" -msgstr "" +msgstr "Choose a relationship" #: lib/who_need_help_web/controllers/support_html/new.html.heex:37 #, elixir-autogen, elixir-format msgid "Choose a topic" -msgstr "" +msgstr "Choose a topic" #: lib/who_need_help_web/controllers/content_removal_html.ex:27 #: lib/who_need_help_web/controllers/support_html.ex:20 @@ -3075,209 +3069,209 @@ msgstr "" #: lib/who_need_help_web/live/support_operations_live.ex:256 #, elixir-autogen, elixir-format, fuzzy msgid "Closed" -msgstr "" +msgstr "Closed" #: lib/who_need_help_web/live/support_operations_live.ex:160 #, elixir-autogen, elixir-format msgid "Contact" -msgstr "" +msgstr "Contact" #: lib/who_need_help_web/controllers/support_html/new.html.heex:4 #, elixir-autogen, elixir-format msgid "Contact Who Need Help" -msgstr "" +msgstr "Contact Who Need Help" #: lib/who_need_help_web/controllers/content_removal_html/new.html.heex:38 #: lib/who_need_help_web/controllers/content_removal_html/take_it_down.html.heex:34 #: lib/who_need_help_web/controllers/support_html/new.html.heex:43 #, elixir-autogen, elixir-format msgid "Contact email" -msgstr "" +msgstr "Contact email" #: lib/who_need_help_web/live/support_operations_live.ex:127 #, elixir-autogen, elixir-format msgid "Content removal and TAKE IT DOWN" -msgstr "" +msgstr "Content removal and TAKE IT DOWN" #: lib/who_need_help_web/controllers/content_removal_html/show.html.heex:13 #, elixir-autogen, elixir-format msgid "Content-removal notice" -msgstr "" +msgstr "Content-removal notice" #: lib/who_need_help_web/controllers/content_removal_html.ex:8 #: lib/who_need_help_web/controllers/content_removal_html/new.html.heex:24 #: lib/who_need_help_web/live/support_operations_live.ex:90 #, elixir-autogen, elixir-format msgid "Copyright" -msgstr "" +msgstr "Copyright" #: lib/who_need_help_web/live/support_operations_live.ex:76 #, elixir-autogen, elixir-format, fuzzy msgid "Could not update the request. Please try again." -msgstr "" +msgstr "Could not update the request. Please try again." #: lib/who_need_help_web/controllers/support_html.ex:11 #: lib/who_need_help_web/controllers/support_html/new.html.heex:34 #: lib/who_need_help_web/live/support_operations_live.ex:83 #, elixir-autogen, elixir-format msgid "Data export" -msgstr "" +msgstr "Data export" #: lib/who_need_help_web/live/support_operations_live.ex:201 #, elixir-autogen, elixir-format msgid "Decision or information request" -msgstr "" +msgstr "Decision or information request" #: lib/who_need_help_web/controllers/content_removal_html/show.html.heex:30 #, elixir-autogen, elixir-format msgid "Decision or request for information" -msgstr "" +msgstr "Decision or request for information" #: lib/who_need_help_web/controllers/support_html/new.html.heex:19 #, elixir-autogen, elixir-format msgid "Delete an account" -msgstr "" +msgstr "Delete an account" #: lib/who_need_help_web/controllers/support_html/new.html.heex:52 #, elixir-autogen, elixir-format msgid "Describe the problem" -msgstr "" +msgstr "Describe the problem" #: lib/who_need_help_web/controllers/support_html/new.html.heex:56 #, elixir-autogen, elixir-format msgid "Do not include passwords, payment card details, access codes, prescriptions, or unnecessary medical information." -msgstr "" +msgstr "Do not include passwords, payment card details, access codes, prescriptions, or unnecessary medical information." #: lib/who_need_help_web/controllers/content_removal_html/take_it_down.html.heex:13 #, elixir-autogen, elixir-format msgid "Do not upload the image or video. Provide only the exact Who Need Help URL where it appears and enough text to identify it safely." -msgstr "" +msgstr "Do not upload the image or video. Provide only the exact Who Need Help URL where it appears and enough text to identify it safely." #: lib/who_need_help_web/controllers/content_removal_html/new.html.heex:72 #: lib/who_need_help_web/controllers/content_removal_html/take_it_down.html.heex:68 #, elixir-autogen, elixir-format msgid "Electronic signature (type your full name)" -msgstr "" +msgstr "Electronic signature (type your full name)" #: lib/who_need_help_web/controllers/content_removal_html/new.html.heex:56 #: lib/who_need_help_web/controllers/content_removal_html/take_it_down.html.heex:53 #, elixir-autogen, elixir-format msgid "Exact content URLs — one per line" -msgstr "" +msgstr "Exact content URLs — one per line" #: lib/who_need_help_web/live/support_operations_live.ex:220 #, elixir-autogen, elixir-format msgid "General support and data requests" -msgstr "" +msgstr "General support and data requests" #: lib/who_need_help_web/controllers/content_removal_html/new.html.heex:48 #, elixir-autogen, elixir-format msgid "I am an authorised representative" -msgstr "" +msgstr "I am an authorised representative" #: lib/who_need_help_web/controllers/content_removal_html/new.html.heex:47 #, elixir-autogen, elixir-format msgid "I am the affected person or rights holder" -msgstr "" +msgstr "I am the affected person or rights holder" #: lib/who_need_help_web/controllers/content_removal_html/new.html.heex:78 #, elixir-autogen, elixir-format msgid "I believe in good faith that the identified content is illegal or infringes the stated right." -msgstr "" +msgstr "I believe in good faith that the identified content is illegal or infringes the stated right." #: lib/who_need_help_web/controllers/content_removal_html/take_it_down.html.heex:84 #, elixir-autogen, elixir-format msgid "I confirm that the information in this request is accurate and that I am the depicted person or authorised to act for them." -msgstr "" +msgstr "I confirm that the information in this request is accurate and that I am the depicted person or authorised to act for them." #: lib/who_need_help_web/controllers/content_removal_html/new.html.heex:87 #, elixir-autogen, elixir-format msgid "I confirm that this notice is accurate and complete to the best of my knowledge." -msgstr "" +msgstr "I confirm that this notice is accurate and complete to the best of my knowledge." #: lib/who_need_help_web/controllers/content_removal_html/take_it_down.html.heex:75 #, elixir-autogen, elixir-format msgid "I have a good-faith belief that this intimate visual material was shared without consent." -msgstr "" +msgstr "I have a good-faith belief that this intimate visual material was shared without consent." #: lib/who_need_help_web/controllers/content_removal_html/take_it_down.html.heex:60 #, elixir-autogen, elixir-format msgid "Identify the material without reproducing it and explain why it is non-consensual" -msgstr "" +msgstr "Identify the material without reproducing it and explain why it is non-consensual" #: lib/who_need_help_web/controllers/content_removal_html/new.html.heex:93 #, elixir-autogen, elixir-format msgid "Identity and contact fields may be omitted for reports of sexual material involving a minor. Do not include or upload the material itself." -msgstr "" +msgstr "Identity and contact fields may be omitted for reports of sexual material involving a minor. Do not include or upload the material itself." #: lib/who_need_help_web/controllers/content_removal_html.ex:6 #: lib/who_need_help_web/controllers/content_removal_html/new.html.heex:22 #: lib/who_need_help_web/live/support_operations_live.ex:88 #, elixir-autogen, elixir-format msgid "Illegal content" -msgstr "" +msgstr "Illegal content" #: lib/who_need_help_web/controllers/support_html/show.html.heex:20 #, elixir-autogen, elixir-format msgid "Keep this status link private. A copy is sent to the contact email when email delivery is configured." -msgstr "" +msgstr "Keep this status link private. A copy is sent to the contact email when email delivery is configured." #: lib/who_need_help_web/controllers/content_removal_html/show.html.heex:34 #, elixir-autogen, elixir-format msgid "Keep this status link private. The submitter identity is not shown publicly or automatically disclosed to the person who posted the reported content." -msgstr "" +msgstr "Keep this status link private. The submitter identity is not shown publicly or automatically disclosed to the person who posted the reported content." #: lib/who_need_help_web/controllers/content_removal_html/new.html.heex:68 #, elixir-autogen, elixir-format msgid "Law, right, or policy involved, if known" -msgstr "" +msgstr "Law, right, or policy involved, if known" #: lib/who_need_help_web/live/support_operations_live.ex:162 #, elixir-autogen, elixir-format, fuzzy msgid "Locations" -msgstr "" +msgstr "Locations" #: lib/who_need_help_web/controllers/content_removal_html/take_it_down.html.heex:22 #, elixir-autogen, elixir-format msgid "Material involved" -msgstr "" +msgstr "Material involved" #: lib/who_need_help_web/controllers/support_html.ex:9 #: lib/who_need_help_web/live/support_operations_live.ex:81 #, elixir-autogen, elixir-format, fuzzy msgid "Moderation appeal" -msgstr "" +msgstr "Moderation appeal" #: lib/who_need_help_web/controllers/content_removal_html.ex:24 #: lib/who_need_help_web/live/support_operations_live.ex:192 #, elixir-autogen, elixir-format msgid "More information needed" -msgstr "" +msgstr "More information needed" #: lib/who_need_help_web/controllers/content_removal_html/take_it_down.html.heex:44 #, elixir-autogen, elixir-format msgid "Myself" -msgstr "" +msgstr "Myself" #: lib/who_need_help_web/controllers/content_removal_html/received.html.heex:3 #, elixir-autogen, elixir-format msgid "NOTICE RECEIVED" -msgstr "" +msgstr "NOTICE RECEIVED" #: lib/who_need_help_web/controllers/support_html/index.html.heex:8 #, elixir-autogen, elixir-format, fuzzy msgid "New request" -msgstr "" +msgstr "New request" #: lib/who_need_help_web/live/support_operations_live.ex:207 #, elixir-autogen, elixir-format msgid "No removal notices." -msgstr "" +msgstr "No removal notices." #: lib/who_need_help_web/live/support_operations_live.ex:268 #, elixir-autogen, elixir-format msgid "No support requests." -msgstr "" +msgstr "No support requests." #: lib/who_need_help_web/controllers/content_removal_html.ex:12 #: lib/who_need_help_web/controllers/content_removal_html/new.html.heex:26 @@ -3285,99 +3279,99 @@ msgstr "" #: lib/who_need_help_web/live/support_operations_live.ex:94 #, elixir-autogen, elixir-format msgid "Non-consensual intimate image or video" -msgstr "" +msgstr "Non-consensual intimate image or video" #: lib/who_need_help_web/live/support_operations_live.ex:159 #: lib/who_need_help_web/live/support_operations_live.ex:161 #, elixir-autogen, elixir-format msgid "Not provided" -msgstr "" +msgstr "Not provided" #: lib/who_need_help_web/controllers/support_html.ex:12 #: lib/who_need_help_web/controllers/support_html/new.html.heex:33 #: lib/who_need_help_web/live/support_operations_live.ex:84 #, elixir-autogen, elixir-format msgid "Privacy request" -msgstr "" +msgstr "Privacy request" #: lib/who_need_help_web/controllers/content_removal_html.ex:7 #: lib/who_need_help_web/controllers/content_removal_html/new.html.heex:23 #: lib/who_need_help_web/live/support_operations_live.ex:89 #, elixir-autogen, elixir-format msgid "Privacy violation" -msgstr "" +msgstr "Privacy violation" #: lib/who_need_help_web/controllers/content_removal_html/new.html.heex:11 #, elixir-autogen, elixir-format msgid "Provide exact Who Need Help URLs. Do not upload or paste intimate imagery, identity documents, passwords, access codes, or unnecessary medical information." -msgstr "" +msgstr "Provide exact Who Need Help URLs. Do not upload or paste intimate imagery, identity documents, passwords, access codes, or unnecessary medical information." #: lib/who_need_help_web/controllers/support_html/received.html.heex:3 #, elixir-autogen, elixir-format msgid "REQUEST RECEIVED" -msgstr "" +msgstr "REQUEST RECEIVED" #: lib/who_need_help_web/live/support_operations_live.ex:24 #, elixir-autogen, elixir-format msgid "Removal notice updated." -msgstr "" +msgstr "Removal notice updated." #: lib/who_need_help_web/components/layouts.ex:153 #: lib/who_need_help_web/controllers/support_html/new.html.heex:13 #, elixir-autogen, elixir-format, fuzzy msgid "Report content" -msgstr "" +msgstr "Report content" #: lib/who_need_help_web/controllers/content_removal_html/new.html.heex:4 #, elixir-autogen, elixir-format msgid "Report illegal or harmful content" -msgstr "" +msgstr "Report illegal or harmful content" #: lib/who_need_help_web/controllers/content_removal_html/show.html.heex:16 #, elixir-autogen, elixir-format msgid "Reported locations" -msgstr "" +msgstr "Reported locations" #: lib/who_need_help_web/controllers/support_html/delete_account.html.heex:4 #: lib/who_need_help_web/controllers/support_html/delete_account.html.heex:37 #: lib/who_need_help_web/controllers/user_settings_html/edit.html.heex:123 #, elixir-autogen, elixir-format, fuzzy msgid "Request account deletion" -msgstr "" +msgstr "Request account deletion" #: lib/who_need_help_web/controllers/user_settings_html/edit.html.heex:117 #, elixir-autogen, elixir-format msgid "Request deletion of your account and associated personal data, or contact support about access and export requests." -msgstr "" +msgstr "Request deletion of your account and associated personal data, or contact support about access and export requests." #: lib/who_need_help_web/controllers/content_removal_html/take_it_down.html.heex:5 #, elixir-autogen, elixir-format msgid "Request removal of intimate visual material" -msgstr "" +msgstr "Request removal of intimate visual material" #: lib/who_need_help_web/controllers/support_html/index.html.heex:5 #: lib/who_need_help_web/controllers/support_html/new.html.heex:3 #, elixir-autogen, elixir-format msgid "SUPPORT" -msgstr "" +msgstr "SUPPORT" #: lib/who_need_help_web/controllers/support_html.ex:8 #: lib/who_need_help_web/controllers/support_html/new.html.heex:31 #: lib/who_need_help_web/live/support_operations_live.ex:80 #, elixir-autogen, elixir-format, fuzzy msgid "Safety concern" -msgstr "" +msgstr "Safety concern" #: lib/who_need_help_web/live/support_operations_live.ex:203 #: lib/who_need_help_web/live/support_operations_live.ex:264 #, elixir-autogen, elixir-format msgid "Save and notify" -msgstr "" +msgstr "Save and notify" #: lib/who_need_help_web/controllers/support_html/new.html.heex:60 #, elixir-autogen, elixir-format msgid "Send support request" -msgstr "" +msgstr "Send support request" #: lib/who_need_help_web/controllers/content_removal_html.ex:15 #: lib/who_need_help_web/controllers/content_removal_html/new.html.heex:27 @@ -3385,224 +3379,225 @@ msgstr "" #: lib/who_need_help_web/live/support_operations_live.ex:97 #, elixir-autogen, elixir-format msgid "Sexual material involving a minor" -msgstr "" +msgstr "Sexual material involving a minor" #: lib/who_need_help_web/live/support_operations_live.ex:177 #, elixir-autogen, elixir-format msgid "Stated basis:" -msgstr "" +msgstr "Stated basis:" #: lib/who_need_help_web/controllers/support_html/new.html.heex:48 #, elixir-autogen, elixir-format msgid "Subject" -msgstr "" +msgstr "Subject" #: lib/who_need_help_web/live/activity_live/show.ex:696 #: lib/who_need_help_web/live/request_live/show.ex:1127 #, elixir-autogen, elixir-format msgid "Submit a legal content-removal notice" -msgstr "" +msgstr "Submit a legal content-removal notice" #: lib/who_need_help_web/controllers/content_removal_html/new.html.heex:97 #, elixir-autogen, elixir-format, fuzzy msgid "Submit removal notice" -msgstr "" +msgstr "Submit removal notice" #: lib/who_need_help_web/controllers/content_removal_html/take_it_down.html.heex:89 #, elixir-autogen, elixir-format msgid "Submit urgent removal request" -msgstr "" +msgstr "Submit urgent removal request" #: lib/who_need_help_web/live/support_operations_live.ex:158 #, elixir-autogen, elixir-format msgid "Submitter" -msgstr "" +msgstr "Submitter" #: lib/who_need_help_web/controllers/support_html/delete_account.html.heex:11 #, elixir-autogen, elixir-format msgid "Submitting this form does not immediately sign you out or erase evidence required for an open safety investigation. Support will verify and process the request." -msgstr "" +msgstr "Submitting this form does not immediately sign you out or erase evidence required for an open safety investigation. Support will verify and process the request." #: lib/who_need_help_web/components/layouts.ex:151 #, elixir-autogen, elixir-format msgid "Support" -msgstr "" +msgstr "Support" #: lib/who_need_help_web/live/support_operations_live.ex:8 #: lib/who_need_help_web/live/support_operations_live.ex:114 #, elixir-autogen, elixir-format msgid "Support operations" -msgstr "" +msgstr "Support operations" #: lib/who_need_help_web/components/layouts.ex:194 #, elixir-autogen, elixir-format msgid "Support queue" -msgstr "" +msgstr "Support queue" #: lib/who_need_help_web/live/support_operations_live.ex:16 #, elixir-autogen, elixir-format msgid "Support request updated." -msgstr "" +msgstr "Support request updated." #: lib/who_need_help_web/live/support_operations_live.ex:116 #, elixir-autogen, elixir-format msgid "Support requests and legal removal notices are separate queues. Decisions and operator identity are audited." -msgstr "" +msgstr "Support requests and legal removal notices are separate queues. Decisions and operator identity are audited." #: lib/who_need_help_web/controllers/support_html/show.html.heex:16 #: lib/who_need_help_web/live/support_operations_live.ex:262 #, elixir-autogen, elixir-format msgid "Support response" -msgstr "" +msgstr "Support response" #: lib/who_need_help_web/controllers/content_removal_html/take_it_down.html.heex:3 #, elixir-autogen, elixir-format msgid "TAKE IT DOWN" -msgstr "" +msgstr "TAKE IT DOWN" #: lib/who_need_help_web/controllers/support_html/new.html.heex:16 #, elixir-autogen, elixir-format msgid "TAKE IT DOWN request" -msgstr "" +msgstr "TAKE IT DOWN request" #: lib/who_need_help_web/controllers/support_html.ex:7 #: lib/who_need_help_web/controllers/support_html/new.html.heex:30 #: lib/who_need_help_web/live/support_operations_live.ex:79 #, elixir-autogen, elixir-format msgid "Technical issue" -msgstr "" +msgstr "Technical issue" #: lib/who_need_help_web/controllers/support_html/delete_account.html.heex:6 #, elixir-autogen, elixir-format msgid "This requests deletion of your Who Need Help account and associated personal data. Some records may need to be retained when required for safety, fraud prevention, legal obligations, or resolving an active dispute; any retained data must be described in the applicable retention notice." -msgstr "" +msgstr "This requests deletion of your Who Need Help account and associated personal data. Some records may need to be retained when required for safety, fraud prevention, legal obligations, or resolving an active dispute; any retained data must be described in the applicable retention notice." #: lib/who_need_help_web/controllers/content_removal_html.ex:17 #: lib/who_need_help_web/controllers/content_removal_html/new.html.heex:28 #: lib/who_need_help_web/live/support_operations_live.ex:99 #, elixir-autogen, elixir-format msgid "Threat to life or safety" -msgstr "" +msgstr "Threat to life or safety" #: lib/who_need_help_web/controllers/content_removal_controller.ex:54 #, elixir-autogen, elixir-format msgid "Too many removal notices. Please try again later." -msgstr "" +msgstr "Too many removal notices. Please try again later." #: lib/who_need_help_web/controllers/support_controller.ex:34 #: lib/who_need_help_web/controllers/support_controller.ex:72 #, elixir-autogen, elixir-format msgid "Too many support requests. Please try again later." -msgstr "" +msgstr "Too many support requests. Please try again later." #: lib/who_need_help_web/live/support_operations_live.ex:122 #, elixir-autogen, elixir-format msgid "Trust and safety moderation" -msgstr "" +msgstr "Trust and safety moderation" #: lib/who_need_help_web/controllers/content_removal_html.ex:22 #: lib/who_need_help_web/live/support_operations_live.ex:190 #, elixir-autogen, elixir-format msgid "Urgent review" -msgstr "" +msgstr "Urgent review" #: lib/who_need_help_web/controllers/content_removal_html/take_it_down.html.heex:8 #, elixir-autogen, elixir-format msgid "Use this dedicated process when an identifiable person is shown in an intimate image or video shared without consent, including a digital forgery. You may submit for yourself or as an authorised representative." -msgstr "" +msgstr "Use this dedicated process when an identifiable person is shown in an intimate image or video shared without consent, including a digital forgery. You may submit for yourself or as an authorised representative." #: lib/who_need_help_web/controllers/content_removal_html/new.html.heex:6 #, elixir-autogen, elixir-format msgid "Use this electronic notice for specific content on Who Need Help that you believe is illegal or infringes your rights. Ordinary safety reports inside a request or chat remain available to signed-in users." -msgstr "" +msgstr "Use this electronic notice for specific content on Who Need Help that you believe is illegal or infringes your rights. Ordinary safety reports inside a request or chat remain available to signed-in users." #: lib/who_need_help_web/controllers/support_html/new.html.heex:6 #, elixir-autogen, elixir-format msgid "Use this form for account access, technical problems, privacy questions, or other support. For illegal content or a removal request, use the dedicated removal form." -msgstr "" +msgstr "Use this form for account access, technical problems, privacy questions, or other support. For illegal content or a removal request, use the dedicated removal form." #: lib/who_need_help_web/controllers/user_settings_html/edit.html.heex:126 #, elixir-autogen, elixir-format msgid "View support requests" -msgstr "" +msgstr "View support requests" #: lib/who_need_help_web/live/support_operations_live.ex:254 #, elixir-autogen, elixir-format, fuzzy msgid "Waiting for requester" -msgstr "" +msgstr "Waiting for requester" #: lib/who_need_help_web/controllers/support_html.ex:18 #, elixir-autogen, elixir-format msgid "Waiting for your response" -msgstr "" +msgstr "Waiting for your response" #: lib/who_need_help_web/controllers/support_html/received.html.heex:6 #, elixir-autogen, elixir-format msgid "We created support request %{reference}. A private status link has been sent to the contact email when delivery is configured. Opening that link verifies the address for public requests." -msgstr "" +msgstr "We created support request %{reference}. A private status link has been sent to the contact email when delivery is configured. Opening that link verifies the address for public requests." #: lib/who_need_help_web/controllers/support_html/new.html.heex:27 #, elixir-autogen, elixir-format, fuzzy msgid "What do you need help with?" -msgstr "" +msgstr "What do you need help with?" #: lib/who_need_help_web/controllers/content_removal_html/take_it_down.html.heex:42 #, elixir-autogen, elixir-format msgid "Who are you submitting for?" -msgstr "" +msgstr "Who are you submitting for?" #: lib/who_need_help_web/controllers/content_removal_html/new.html.heex:62 #, elixir-autogen, elixir-format msgid "Why do you believe this content should be removed?" -msgstr "" +msgstr "Why do you believe this content should be removed?" #: lib/who_need_help_web/controllers/support_html/index.html.heex:26 #, elixir-autogen, elixir-format msgid "You have not submitted any support requests." -msgstr "" +msgstr "You have not submitted any support requests." #: lib/who_need_help_web/controllers/content_removal_html/take_it_down.html.heex:30 #, elixir-autogen, elixir-format msgid "Your full name" -msgstr "" +msgstr "Your full name" #: lib/who_need_help_web/controllers/content_removal_html/new.html.heex:34 #, elixir-autogen, elixir-format msgid "Your name or organisation" -msgstr "" +msgstr "Your name or organisation" #: lib/who_need_help_web/controllers/content_removal_html/received.html.heex:5 #, elixir-autogen, elixir-format msgid "Your reference is %{reference}" -msgstr "" +msgstr "Your reference is %{reference}" #: lib/who_need_help_web/controllers/content_removal_html/new.html.heex:45 #, elixir-autogen, elixir-format msgid "Your relationship to the affected person or rights holder" -msgstr "" +msgstr "Your relationship to the affected person or rights holder" #: lib/who_need_help_web/live/support_operations_live.ex:150 #: lib/who_need_help_web/live/support_operations_live.ex:235 #, elixir-autogen, elixir-format, fuzzy msgid "contact unverified" -msgstr "" +msgstr "contact unverified" #: lib/who_need_help_web/live/support_operations_live.ex:154 #, elixir-autogen, elixir-format msgid "review by %{time}" -msgstr "" +msgstr "review by %{time}" #: lib/who_need_help_web/controllers/support_controller.ex:47 #: lib/who_need_help_web/controllers/support_controller.ex:58 #, elixir-autogen, elixir-format msgid "Delete my Who Need Help account" -msgstr "" +msgstr "Delete my Who Need Help account" #: lib/who_need_help_web/controllers/support_controller.ex:48 #, elixir-autogen, elixir-format msgid "Please delete my account and associated personal data." -msgstr "" +msgstr "Please delete my account and associated personal data." +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:76 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:39 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:101 #, elixir-autogen, elixir-format @@ -3614,12 +3609,14 @@ msgstr "I am 18 or older and accept the Terms and Safety Rules" msgid "Privacy" msgstr "Privacy" +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:82 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:45 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:92 #, elixir-autogen, elixir-format msgid "Privacy Policy" msgstr "Privacy Policy" +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:84 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:47 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:94 #, elixir-autogen, elixir-format @@ -3627,12 +3624,14 @@ msgid "Safety Rules" msgstr "Safety Rules" #: lib/who_need_help_web/components/layouts.ex:149 +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:81 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:44 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:91 #, elixir-autogen, elixir-format msgid "Terms" msgstr "Terms" +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:83 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:46 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:93 #, elixir-autogen, elixir-format @@ -3642,317 +3641,425 @@ msgstr "and" #: lib/who_need_help_web/controllers/page_html/home.html.heex:214 #, elixir-autogen, elixir-format msgid "A clear handover" -msgstr "" +msgstr "A clear handover" #: lib/who_need_help_web/controllers/page_html/home.html.heex:127 #, elixir-autogen, elixir-format msgid "A flat tyre or another small roadside problem in a safe place." -msgstr "" +msgstr "A flat tyre or another small roadside problem in a safe place." #: lib/who_need_help_web/controllers/page_html/home.html.heex:134 #, elixir-autogen, elixir-format msgid "A puncture, broken chain, tyre problem, or similar practical help." -msgstr "" +msgstr "A puncture, broken chain, tyre problem, or similar practical help." #: lib/who_need_help_web/controllers/page_html/home.html.heex:191 #, elixir-autogen, elixir-format msgid "Accept and open private coordination" -msgstr "" +msgstr "Accept and open private coordination" #: lib/who_need_help_web/controllers/page_html/home.html.heex:5 #: lib/who_need_help_web/controllers/page_html/home.html.heex:12 #: lib/who_need_help_web/controllers/page_html/home.html.heex:19 -#, elixir-autogen, elixir-format, fuzzy +#, elixir-autogen, elixir-format msgid "Approximate area · demo data" -msgstr "" +msgstr "Approximate area · demo data" #: lib/who_need_help_web/controllers/page_html/home.html.heex:42 #, elixir-autogen, elixir-format msgid "Ask a nearby volunteer to collect medicine that is already purchased or help with a safe roadside problem. There is no mandatory fee." -msgstr "" +msgstr "Ask a nearby volunteer to collect medicine that is already purchased or help with a safe roadside problem. There is no mandatory fee." #: lib/who_need_help_web/controllers/page_html/home.html.heex:328 #, elixir-autogen, elixir-format msgid "Before you create a request" -msgstr "" +msgstr "Before you create a request" #: lib/who_need_help_web/controllers/page_html/home.html.heex:18 #, elixir-autogen, elixir-format msgid "Bicycle chain help · example" -msgstr "" +msgstr "Bicycle chain help · example" #: lib/who_need_help_web/controllers/page_html/home.html.heex:132 #, elixir-autogen, elixir-format msgid "Bicycle or motorcycle" -msgstr "" +msgstr "Bicycle or motorcycle" #: lib/who_need_help_web/controllers/page_html/home.html.heex:240 #, elixir-autogen, elixir-format msgid "Both confirm, the helper enters a one-time code, and reviews stay blind until both submit." -msgstr "" +msgstr "Both confirm, the helper enters a one-time code, and reviews stay blind until both submit." #: lib/who_need_help_web/controllers/page_html/home.html.heex:118 #, elixir-autogen, elixir-format msgid "Bring fuel" -msgstr "" +msgstr "Bring fuel" #: lib/who_need_help_web/controllers/page_html/home.html.heex:252 #, elixir-autogen, elixir-format msgid "Built for safer coordination" -msgstr "" +msgstr "Built for safer coordination" #: lib/who_need_help_web/controllers/page_html/home.html.heex:344 #, elixir-autogen, elixir-format msgid "Can a volunteer buy medicine for me?" -msgstr "" +msgstr "Can a volunteer buy medicine for me?" #: lib/who_need_help_web/controllers/page_html/home.html.heex:102 #, elixir-autogen, elixir-format msgid "Choose a moderated category. Each one asks only for the details needed for that kind of help." -msgstr "" +msgstr "Choose a moderated category. Each one asks only for the details needed for that kind of help." #: lib/who_need_help_web/controllers/page_html/home.html.heex:111 #, elixir-autogen, elixir-format msgid "Collect medicine" -msgstr "" +msgstr "Collect medicine" #: lib/who_need_help_web/controllers/page_html/home.html.heex:367 #, elixir-autogen, elixir-format msgid "Contact the emergency service for your location. Who Need Help is for voluntary practical coordination, not emergencies." -msgstr "" +msgstr "Contact the emergency service for your location. Who Need Help is for voluntary practical coordination, not emergencies." #: lib/who_need_help_web/controllers/page_html/home.html.heex:380 #, elixir-autogen, elixir-format msgid "Create one account, choose your role for each situation, and keep control of what you share." -msgstr "" +msgstr "Create one account, choose your role for each situation, and keep control of what you share." #: lib/who_need_help_web/controllers/page_html/home.html.heex:202 #, elixir-autogen, elixir-format msgid "Current coordinates are optional and deleted when sharing stops." -msgstr "" +msgstr "Current coordinates are optional and deleted when sharing stops." #: lib/who_need_help_web/controllers/page_html/home.html.heex:153 #, elixir-autogen, elixir-format msgid "Demo map with synthetic approximate help requests" -msgstr "" +msgstr "Demo map with synthetic approximate help requests" #: lib/who_need_help_web/controllers/page_html/home.html.heex:182 #, elixir-autogen, elixir-format msgid "Discover an approximate area" -msgstr "" +msgstr "Discover an approximate area" #: lib/who_need_help_web/controllers/page_html/home.html.heex:334 #, elixir-autogen, elixir-format msgid "Do I have to pay a helper?" -msgstr "" +msgstr "Do I have to pay a helper?" #: lib/who_need_help_web/controllers/page_html/home.html.heex:160 #, elixir-autogen, elixir-format msgid "Example data — not live requests" -msgstr "" +msgstr "Example data — not live requests" #: lib/who_need_help_web/controllers/page_html/home.html.heex:71 -#, elixir-autogen, elixir-format, fuzzy +#, elixir-autogen, elixir-format msgid "Example request" -msgstr "" +msgstr "Example request" #: lib/who_need_help_web/controllers/page_html/home.html.heex:316 #, elixir-autogen, elixir-format msgid "Explore activities" -msgstr "" +msgstr "Explore activities" #: lib/who_need_help_web/controllers/page_html/home.html.heex:307 #, elixir-autogen, elixir-format msgid "Find company for coffee, cinema, a walk, or a hike" -msgstr "" +msgstr "Find company for coffee, cinema, a walk, or a hike" #: lib/who_need_help_web/controllers/page_html/home.html.heex:11 #, elixir-autogen, elixir-format msgid "Flat tyre help · example" -msgstr "" +msgstr "Flat tyre help · example" #: lib/who_need_help_web/controllers/page_html/home.html.heex:33 #, elixir-autogen, elixir-format msgid "Free, nearby, voluntary help" -msgstr "" +msgstr "Free, nearby, voluntary help" #: lib/who_need_help_web/controllers/page_html/home.html.heex:217 #, elixir-autogen, elixir-format msgid "From request to verified completion" -msgstr "" +msgstr "From request to verified completion" #: lib/who_need_help_web/controllers/page_html/home.html.heex:289 #, elixir-autogen, elixir-format msgid "Handover codes and unique completed matches matter more than raw totals." -msgstr "" +msgstr "Handover codes and unique completed matches matter more than raw totals." #: lib/who_need_help_web/controllers/page_html/home.html.heex:264 #, elixir-autogen, elixir-format msgid "Help is voluntary. An external thank-you link is optional after completion." -msgstr "" +msgstr "Help is voluntary. An external thank-you link is optional after completion." #: lib/who_need_help_web/controllers/page_html/home.html.heex:125 #, elixir-autogen, elixir-format msgid "Help with a wheel" -msgstr "" +msgstr "Help with a wheel" #: lib/who_need_help_web/controllers/page_html/home.html.heex:51 #: lib/who_need_help_web/controllers/page_html/home.html.heex:389 #, elixir-autogen, elixir-format msgid "I need help" -msgstr "" +msgstr "I need help" #: lib/who_need_help_web/controllers/page_html/home.html.heex:158 #, elixir-autogen, elixir-format msgid "Interactive demo" -msgstr "" +msgstr "Interactive demo" #: lib/who_need_help_web/controllers/page_html/home.html.heex:280 #, elixir-autogen, elixir-format msgid "Leave a match, block a person, or send a scoped report when something feels wrong." -msgstr "" +msgstr "Leave a match, block a person, or send a scoped report when something feels wrong." #: lib/who_need_help_web/controllers/page_html/home.html.heex:4 -#, elixir-autogen, elixir-format, fuzzy +#, elixir-autogen, elixir-format msgid "Medicine pickup · example" -msgstr "" +msgstr "Medicine pickup · example" #: lib/who_need_help_web/controllers/page_html/home.html.heex:39 #, elixir-autogen, elixir-format msgid "Need help nearby? Ask the community." -msgstr "" +msgstr "Need help nearby? Ask the community." #: lib/who_need_help_web/controllers/page_html/home.html.heex:262 #, elixir-autogen, elixir-format msgid "No mandatory payment" -msgstr "" +msgstr "No mandatory payment" #: lib/who_need_help_web/controllers/page_html/home.html.heex:337 #, elixir-autogen, elixir-format msgid "No. Help has no mandatory fee. A helper may optionally publish an external thank-you link after a completed handover." -msgstr "" +msgstr "No. Help has no mandatory fee. A helper may optionally publish an external thank-you link after a completed handover." #: lib/who_need_help_web/controllers/page_html/home.html.heex:304 #, elixir-autogen, elixir-format msgid "Not only urgent help" -msgstr "" +msgstr "Not only urgent help" #: lib/who_need_help_web/controllers/page_html/home.html.heex:120 #, elixir-autogen, elixir-format msgid "Only after people and the vehicle are away from active traffic danger." -msgstr "" +msgstr "Only after people and the vehicle are away from active traffic danger." #: lib/who_need_help_web/controllers/page_html/home.html.heex:193 #, elixir-autogen, elixir-format msgid "Only the matched requester and helper receive the private chat." -msgstr "" +msgstr "Only the matched requester and helper receive the private chat." #: lib/who_need_help_web/controllers/page_html/home.html.heex:167 #, elixir-autogen, elixir-format msgid "Privacy by default" -msgstr "" +msgstr "Privacy by default" #: lib/who_need_help_web/controllers/page_html/home.html.heex:271 -#, elixir-autogen, elixir-format, fuzzy +#, elixir-autogen, elixir-format msgid "Private matched chat" -msgstr "" +msgstr "Private matched chat" #: lib/who_need_help_web/controllers/page_html/home.html.heex:325 #, elixir-autogen, elixir-format msgid "Quick answers" -msgstr "" +msgstr "Quick answers" #: lib/who_need_help_web/controllers/page_html/home.html.heex:295 #, elixir-autogen, elixir-format msgid "Read the safety rules" -msgstr "" +msgstr "Read the safety rules" #: lib/who_need_help_web/controllers/page_html/home.html.heex:378 #, elixir-autogen, elixir-format msgid "Ready to ask or help nearby?" -msgstr "" +msgstr "Ready to ask or help nearby?" #: lib/who_need_help_web/controllers/page_html/home.html.heex:278 #, elixir-autogen, elixir-format msgid "Reports and blocking" -msgstr "" +msgstr "Reports and blocking" #: lib/who_need_help_web/controllers/page_html/home.html.heex:170 #, elixir-autogen, elixir-format msgid "See nearby needs without exposing a home address" -msgstr "" +msgstr "See nearby needs without exposing a home address" #: lib/who_need_help_web/controllers/page_html/home.html.heex:200 #, elixir-autogen, elixir-format msgid "Share live location only by choice" -msgstr "" +msgstr "Share live location only by choice" #: lib/who_need_help_web/controllers/page_html/home.html.heex:310 #, elixir-autogen, elixir-format msgid "Social activities are separate from urgent requests. Organizers approve participants, and exact meeting details stay inside the approved group." -msgstr "" +msgstr "Social activities are separate from urgent requests. Organizers approve participants, and exact meeting details stay inside the approved group." #: lib/who_need_help_web/controllers/page_html/home.html.heex:96 #, elixir-autogen, elixir-format msgid "Start with urgent practical help" -msgstr "" +msgstr "Start with urgent practical help" #: lib/who_need_help_web/controllers/page_html/home.html.heex:150 #, elixir-autogen, elixir-format msgid "The demo map is unavailable. The example steps remain available beside it." -msgstr "" +msgstr "The demo map is unavailable. The example steps remain available beside it." #: lib/who_need_help_web/controllers/page_html/home.html.heex:113 #, elixir-autogen, elixir-format msgid "The medicine is already legally purchased or reserved for pickup." -msgstr "" +msgstr "The medicine is already legally purchased or reserved for pickup." #: lib/who_need_help_web/controllers/page_html/home.html.heex:347 #, elixir-autogen, elixir-format msgid "The medicine must already be legally purchased or reserved. The service does not prescribe, recommend, sell, or handle controlled substances." -msgstr "" +msgstr "The medicine must already be legally purchased or reserved. The service does not prescribe, recommend, sell, or handle controlled substances." #: lib/who_need_help_web/controllers/page_html/home.html.heex:184 #, elixir-autogen, elixir-format msgid "The public marker does not need to reveal an exact address." -msgstr "" +msgstr "The public marker does not need to reveal an exact address." #: lib/who_need_help_web/controllers/page_html/home.html.heex:273 #, elixir-autogen, elixir-format msgid "There is no unsolicited inbox between strangers." -msgstr "" +msgstr "There is no unsolicited inbox between strangers." #: lib/who_need_help_web/controllers/page_html/home.html.heex:173 #, elixir-autogen, elixir-format msgid "These three points are synthetic examples. Real public discovery follows each requester's location visibility choice." -msgstr "" +msgstr "These three points are synthetic examples. Real public discovery follows each requester's location visibility choice." #: lib/who_need_help_web/controllers/page_html/home.html.heex:287 #, elixir-autogen, elixir-format msgid "Verified reputation signals" -msgstr "" +msgstr "Verified reputation signals" #: lib/who_need_help_web/controllers/page_html/home.html.heex:99 #, elixir-autogen, elixir-format msgid "What can you ask the community for?" -msgstr "" +msgstr "What can you ask the community for?" #: lib/who_need_help_web/controllers/page_html/home.html.heex:364 #, elixir-autogen, elixir-format msgid "What if there is immediate danger?" -msgstr "" +msgstr "What if there is immediate danger?" #: lib/who_need_help_web/controllers/page_html/home.html.heex:354 #, elixir-autogen, elixir-format msgid "Who can see my exact address?" -msgstr "" +msgstr "Who can see my exact address?" #: lib/who_need_help_web/controllers/page_html/home.html.heex:357 #, elixir-autogen, elixir-format msgid "You choose the visibility. Exact active coordinates can be limited to the matched helper and are removed when sharing stops." -msgstr "" +msgstr "You choose the visibility. Exact active coordinates can be limited to the matched helper and are removed when sharing stops." #: lib/who_need_help_web/controllers/page_html/home.html.heex:255 #, elixir-autogen, elixir-format msgid "You stay in control of the match" -msgstr "" +msgstr "You stay in control of the match" + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:52 +#, elixir-autogen, elixir-format +msgid "After this confirmation, future Google sign-ins will take one click." +msgstr "After this confirmation, future Google sign-ins will take one click." + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:99 +#, elixir-autogen, elixir-format +msgid "Cancel and use another sign-in method" +msgstr "Cancel and use another sign-in method" + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:35 +#, elixir-autogen, elixir-format +msgid "Confirm access once so nobody can attach Google to your account using only a matching email address." +msgstr "Confirm access once so nobody can attach Google to your account using only a matching email address." + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:5 +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:74 +#, elixir-autogen, elixir-format +msgid "Continue with Google" +msgstr "Continue with Google" + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:91 +#, elixir-autogen, elixir-format +msgid "Create account and continue" +msgstr "Create account and continue" + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:58 +#, elixir-autogen, elixir-format +msgid "Create your Who Need Help account" +msgstr "Create your Who Need Help account" + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:89 +#, elixir-autogen, elixir-format +msgid "Creating account..." +msgstr "Creating account..." + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:43 +#, elixir-autogen, elixir-format +msgid "Email me a verification link" +msgstr "Email me a verification link" + +#: lib/who_need_help_web/controllers/user_session_controller.ex:158 +#, elixir-autogen, elixir-format +msgid "Google sign-in connected. You can use it next time." +msgstr "Google sign-in connected. You can use it next time." + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:7 +#, elixir-autogen, elixir-format +msgid "Google verified your identity. Finish this one-time step to continue." +msgstr "Google verified your identity. Finish this one-time step to continue." + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:60 +#, elixir-autogen, elixir-format +msgid "No password is required. Google will be connected as your sign-in method." +msgstr "No password is required. Google will be connected as your sign-in method." + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:42 +#, elixir-autogen, elixir-format +msgid "Sending..." +msgstr "Sending..." + +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:88 +#, elixir-autogen, elixir-format +msgid "Sign in to %{email} once to connect Google. You can use the email link or your existing password." +msgstr "Sign in to %{email} once to connect Google. You can use the email link or your existing password." + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:33 +#, elixir-autogen, elixir-format +msgid "This email already has an account" +msgstr "This email already has an account" + +#: lib/who_need_help_web/controllers/google_auth_controller.ex:131 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:153 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:297 +#, elixir-autogen, elixir-format +msgid "This email already has an account. Confirm it once to connect Google." +msgstr "This email already has an account. Confirm it once to connect Google." + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:48 +#, elixir-autogen, elixir-format +msgid "Use my password instead" +msgstr "Use my password instead" + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:25 +#, elixir-autogen, elixir-format +msgid "Verified" +msgstr "Verified" + +#: lib/who_need_help_web/controllers/google_auth_controller.ex:178 +#, elixir-autogen, elixir-format +msgid "We sent a verification link to %{email}. Open it to finish connecting Google." +msgstr "We sent a verification link to %{email}. Open it to finish connecting Google." + +#: lib/who_need_help_web/controllers/user_session_controller.ex:171 +#, elixir-autogen, elixir-format +msgid "You are signed in, but Google could not be connected. Try again in account settings." +msgstr "You are signed in, but Google could not be connected. Try again in account settings." + +#: lib/who_need_help/accounts/user_notifier.ex:57 +#, elixir-autogen, elixir-format +msgid "Confirm Google sign-in" +msgstr "Confirm Google sign-in" + +#: lib/who_need_help/accounts/user_notifier.ex:58 +#, elixir-autogen, elixir-format +msgid "Hi %{email},\n\nUse the secure link below to sign in and connect Google to your Who Need Help account:\n\n%{url}\n\nIf you did not request this, ignore this email. Google will not be connected." +msgstr "Hi %{email},\n\nUse the secure link below to sign in and connect Google to your Who Need Help account:\n\n%{url}\n\nIf you did not request this, ignore this email. Google will not be connected." diff --git a/priv/gettext/ru/LC_MESSAGES/default.po b/priv/gettext/ru/LC_MESSAGES/default.po index c88eda6..ff431db 100644 --- a/priv/gettext/ru/LC_MESSAGES/default.po +++ b/priv/gettext/ru/LC_MESSAGES/default.po @@ -550,7 +550,7 @@ msgstr "" "Перед публикацией подтвердите электронную почту и убедитесь, что учётная " "запись активна." -#: lib/who_need_help/accounts/user_notifier.ex:70 +#: lib/who_need_help/accounts/user_notifier.ex:85 #, elixir-autogen, elixir-format msgid "Confirmation instructions" msgstr "Инструкции по подтверждению" @@ -665,8 +665,8 @@ msgid "Double-blind review" msgstr "Двусторонний скрытый отзыв" #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:75 -#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:89 -#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:122 +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:99 +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:132 #: lib/who_need_help_web/controllers/user_settings_html/edit.html.heex:15 #, elixir-autogen, elixir-format msgid "Email" @@ -852,7 +852,7 @@ msgstr "" "\n" "Если вы не запрашивали это изменение, просто проигнорируйте письмо." -#: lib/who_need_help/accounts/user_notifier.ex:71 +#: lib/who_need_help/accounts/user_notifier.ex:86 #, elixir-autogen, elixir-format msgid "Hi %{email},\n\nYou can confirm your account by visiting the URL below:\n\n%{url}\n\nIf you didn't create an account with us, please ignore this." msgstr "" @@ -864,7 +864,7 @@ msgstr "" "\n" "Если вы не создавали у нас учётную запись, просто проигнорируйте письмо." -#: lib/who_need_help/accounts/user_notifier.ex:57 +#: lib/who_need_help/accounts/user_notifier.ex:72 #, elixir-autogen, elixir-format msgid "Hi %{email},\n\nYou can log into your account by visiting the URL below:\n\n%{url}\n\nIf you didn't request this email, please ignore this." msgstr "" @@ -949,7 +949,7 @@ msgstr "" msgid "Identity and reputation" msgstr "Личность и репутация" -#: lib/who_need_help_web/controllers/user_session_controller.ex:89 +#: lib/who_need_help_web/controllers/user_session_controller.ex:97 #, elixir-autogen, elixir-format msgid "If your email is in our system, you will receive instructions for logging in shortly." msgstr "" @@ -991,7 +991,7 @@ msgstr "Язык интерфейса" msgid "Internal note" msgstr "Внутренняя заметка" -#: lib/who_need_help_web/controllers/user_session_controller.ex:124 +#: lib/who_need_help_web/controllers/user_session_controller.ex:132 #, elixir-autogen, elixir-format msgid "Invalid email or password" msgstr "Неверная электронная почта или пароль" @@ -1055,22 +1055,22 @@ msgstr "Люди с подтверждением геопозицией" msgid "Location:" msgstr "Геопозиция:" -#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:136 +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:146 #, elixir-autogen, elixir-format msgid "Log in and stay logged in" msgstr "Войти и оставаться в системе" -#: lib/who_need_help/accounts/user_notifier.ex:56 +#: lib/who_need_help/accounts/user_notifier.ex:71 #, elixir-autogen, elixir-format msgid "Log in instructions" msgstr "Инструкции для входа" -#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:139 +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:149 #, elixir-autogen, elixir-format msgid "Log in only this time" msgstr "Войти только сейчас" -#: lib/who_need_help_web/controllers/user_session_controller.ex:117 +#: lib/who_need_help_web/controllers/user_session_controller.ex:125 #, elixir-autogen, elixir-format msgid "Logged out successfully." msgstr "Вы успешно вышли." @@ -1422,7 +1422,7 @@ msgstr "Родительская категория (необязательно) msgid "Participant" msgstr "Участник" -#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:130 +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:140 #, elixir-autogen, elixir-format msgid "Password" msgstr "Пароль" @@ -1620,6 +1620,7 @@ msgstr "" msgid "Rating" msgstr "Оценка" +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:80 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:43 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:90 #, elixir-autogen, elixir-format @@ -2051,7 +2052,7 @@ msgstr "Браузеру не удалось передать вашу геоп msgid "The last administrator cannot demote themselves." msgstr "Последний администратор не может понизить собственную роль." -#: lib/who_need_help_web/controllers/user_session_controller.ex:37 +#: lib/who_need_help_web/controllers/user_session_controller.ex:44 #, elixir-autogen, elixir-format msgid "The link is invalid or it has expired." msgstr "Ссылка недействительна или просрочена." @@ -2182,7 +2183,8 @@ msgstr "Сегодня" msgid "Too many actions in the configured time window." msgstr "Слишком много действий за настроенный промежуток времени." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:180 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:139 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:309 #: lib/who_need_help_web/controllers/user_registration_controller.ex:49 #, elixir-autogen, elixir-format msgid "Too many registration attempts in the configured time window." @@ -2193,7 +2195,8 @@ msgstr "Слишком много попыток регистрации за н msgid "Too many requests in the configured time window." msgstr "Слишком много запросов за настроенный промежуток времени." -#: lib/who_need_help_web/controllers/user_session_controller.ex:102 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:189 +#: lib/who_need_help_web/controllers/user_session_controller.ex:110 #, elixir-autogen, elixir-format msgid "Too many sign-in emails in the configured time window." msgstr "Слишком много писем для входа за настроенный промежуток времени." @@ -2303,7 +2306,7 @@ msgstr "Пользователь" msgid "User blocked. Their requests and new messages are hidden." msgstr "Пользователь заблокирован. Его заявки и новые сообщения скрыты." -#: lib/who_need_help_web/controllers/user_session_controller.ex:25 +#: lib/who_need_help_web/controllers/user_session_controller.ex:31 #, elixir-autogen, elixir-format msgid "User confirmed successfully." msgstr "Пользователь успешно подтверждён." @@ -2359,9 +2362,9 @@ msgstr "Открытые отзывы" msgid "Waiting for a nearby volunteer." msgstr "Ожидаем помощника поблизости." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:137 -#: lib/who_need_help_web/controllers/user_session_controller.ex:26 -#: lib/who_need_help_web/controllers/user_session_controller.ex:51 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:266 +#: lib/who_need_help_web/controllers/user_session_controller.ex:32 +#: lib/who_need_help_web/controllers/user_session_controller.ex:58 #, elixir-autogen, elixir-format msgid "Welcome back!" msgstr "С возвращением!" @@ -2580,6 +2583,7 @@ msgstr "активность" msgid "activity message" msgstr "сообщение активности" +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:85 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:48 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:95 #, elixir-autogen, elixir-format @@ -2894,7 +2898,7 @@ msgstr "Выбранная запись больше недоступна." msgid "The settings form is invalid." msgstr "Форма настроек заполнена неверно." -#: lib/who_need_help_web/controllers/user_session_controller.ex:111 +#: lib/who_need_help_web/controllers/user_session_controller.ex:119 #, elixir-autogen, elixir-format msgid "The sign-in form is invalid." msgstr "Форма входа заполнена неверно." @@ -2919,7 +2923,7 @@ msgstr "Это предложение больше недоступно." msgid "This request has expired." msgstr "Срок действия этой заявки истёк." -#: lib/who_need_help_web/controllers/user_session_controller.ex:60 +#: lib/who_need_help_web/controllers/user_session_controller.ex:68 #, elixir-autogen, elixir-format msgid "Too many sign-in attempts in the configured time window." msgstr "Слишком много попыток входа за настроенный промежуток времени." @@ -2954,7 +2958,7 @@ msgstr "Слишком много запросов на смену email за н msgid "A Google account is connected. You can use it to sign in." msgstr "Аккаунт Google подключён. Теперь с его помощью можно входить." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:207 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:336 #, elixir-autogen, elixir-format msgid "A different Google account is already connected." msgstr "Уже подключён другой аккаунт Google." @@ -2964,12 +2968,8 @@ msgstr "Уже подключён другой аккаунт Google." msgid "A password is not required. We will email a one-time confirmation link. You can add a password later in account settings." msgstr "Пароль не обязателен. Мы отправим на email одноразовую ссылку для подтверждения. Пароль можно добавить позже в настройках аккаунта." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:170 -#, elixir-autogen, elixir-format -msgid "An account with this email already exists. Sign in by email or password, then connect Google in account settings." -msgstr "Учётная запись с таким email уже существует. Войдите по email или паролю, затем подключите Google в настройках аккаунта." - -#: lib/who_need_help_web/controllers/google_auth_controller.ex:37 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:42 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:123 #, elixir-autogen, elixir-format msgid "Confirm that you are 18 or older and accept the safety rules first." msgstr "Сначала подтвердите, что вам уже исполнилось 18 лет, и примите правила безопасности." @@ -2989,17 +2989,17 @@ msgstr "Подключайте Google только после входа зде msgid "Create account and email me a link" msgstr "Создать аккаунт и отправить ссылку на email" -#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:99 +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:109 #, elixir-autogen, elixir-format msgid "Email me a sign-in link" msgstr "Отправить ссылку для входа на email" -#: lib/who_need_help_web/controllers/google_auth_controller.ex:215 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:344 #, elixir-autogen, elixir-format msgid "Google account connection session is invalid." msgstr "Сессия подключения аккаунта Google недействительна." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:97 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:226 #, elixir-autogen, elixir-format msgid "Google did not provide a verified email address." msgstr "Google не предоставил подтверждённый адрес email." @@ -3009,32 +3009,34 @@ msgstr "Google не предоставил подтверждённый адре msgid "Google sign-in" msgstr "Вход через Google" -#: lib/who_need_help_web/controllers/google_auth_controller.ex:197 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:326 #, elixir-autogen, elixir-format msgid "Google sign-in connected." msgstr "Вход через Google подключён." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:123 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:252 #, elixir-autogen, elixir-format msgid "Google sign-in could not be started." msgstr "Не удалось начать вход через Google." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:102 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:231 #, elixir-autogen, elixir-format msgid "Google sign-in failed. Please try again." msgstr "Не удалось войти через Google. Попробуйте ещё раз." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:128 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:257 #, elixir-autogen, elixir-format msgid "Google sign-in is not configured yet." msgstr "Вход через Google пока не настроен." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:87 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:97 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:216 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:399 #, elixir-autogen, elixir-format msgid "Google sign-in session expired. Please start again." msgstr "Сессия входа через Google истекла. Начните заново." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:91 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:220 #, elixir-autogen, elixir-format msgid "Google sign-in session is invalid." msgstr "Сессия входа через Google недействительна." @@ -3051,52 +3053,44 @@ msgstr "Вход через Google станет доступен после на msgid "Sending link..." msgstr "Отправляем ссылку..." -#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:74 -#, elixir-autogen, elixir-format -msgid "Sign in with Google" -msgstr "Войти через Google" - #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:51 #, elixir-autogen, elixir-format msgid "Sign up with Google" msgstr "Зарегистрироваться через Google" -#: lib/who_need_help_web/controllers/google_auth_controller.ex:202 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:331 #, elixir-autogen, elixir-format msgid "That Google account belongs to another local account." msgstr "Этот аккаунт Google принадлежит другой локальной учётной записи." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:45 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:50 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:164 #, elixir-autogen, elixir-format msgid "The Google registration form is invalid." msgstr "Форма регистрации через Google заполнена неверно." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:260 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:405 #, elixir-autogen, elixir-format msgid "This Google account cannot be used right now." msgstr "Этот аккаунт Google сейчас нельзя использовать." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:144 -#, elixir-autogen, elixir-format -msgid "This Google account is not connected yet. Create an account or sign in by email and connect Google in account settings." -msgstr "Этот аккаунт Google ещё не подключён. Создайте учётную запись или войдите по email и подключите Google в настройках аккаунта." - -#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:109 +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:119 #, elixir-autogen, elixir-format msgid "This works only if you previously added a password in account settings." msgstr "Это работает, только если вы ранее добавили пароль в настройках аккаунта." -#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:105 +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:115 #, elixir-autogen, elixir-format msgid "Use a password instead" msgstr "Войти по паролю" -#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:96 +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:106 #, elixir-autogen, elixir-format msgid "We will send a one-time sign-in link. No password is required." msgstr "Мы отправим одноразовую ссылку для входа. Пароль не требуется." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:163 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:116 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:288 #, elixir-autogen, elixir-format msgid "Your account was created with Google." msgstr "Ваша учётная запись создана через Google." @@ -3121,12 +3115,12 @@ msgstr "Отключить Google" msgid "Disconnect Google sign-in from this account?" msgstr "Отключить вход через Google для этой учётной записи?" -#: lib/who_need_help_web/controllers/google_auth_controller.ex:60 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:65 #, elixir-autogen, elixir-format msgid "Google sign-in disconnected." msgstr "Вход через Google отключён." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:65 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:70 #, elixir-autogen, elixir-format msgid "No Google account is connected." msgstr "Аккаунт Google не подключён." @@ -3760,6 +3754,7 @@ msgstr "Удалить мой аккаунт Who Need Help" msgid "Please delete my account and associated personal data." msgstr "Пожалуйста, удалите мой аккаунт и связанные персональные данные." +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:76 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:39 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:101 #, elixir-autogen, elixir-format @@ -3771,12 +3766,14 @@ msgstr "Мне 18 лет или больше, и я принимаю Услов msgid "Privacy" msgstr "Конфиденциальность" +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:82 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:45 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:92 #, elixir-autogen, elixir-format msgid "Privacy Policy" msgstr "Политика конфиденциальности" +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:84 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:47 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:94 #, elixir-autogen, elixir-format @@ -3784,12 +3781,14 @@ msgid "Safety Rules" msgstr "Правила безопасности" #: lib/who_need_help_web/components/layouts.ex:149 +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:81 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:44 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:91 #, elixir-autogen, elixir-format msgid "Terms" msgstr "Условия" +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:83 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:46 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:93 #, elixir-autogen, elixir-format @@ -4113,3 +4112,111 @@ msgstr "Вы сами выбираете видимость. Точные тек #, elixir-autogen, elixir-format msgid "You stay in control of the match" msgstr "Вы контролируете взаимодействие" + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:52 +#, elixir-autogen, elixir-format +msgid "After this confirmation, future Google sign-ins will take one click." +msgstr "После этого подтверждения дальнейший вход через Google будет выполняться одним нажатием." + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:99 +#, elixir-autogen, elixir-format +msgid "Cancel and use another sign-in method" +msgstr "Отменить и выбрать другой способ входа" + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:35 +#, elixir-autogen, elixir-format +msgid "Confirm access once so nobody can attach Google to your account using only a matching email address." +msgstr "Один раз подтвердите доступ, чтобы никто не смог привязать Google к вашему аккаунту лишь по совпадающему email." + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:5 +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:74 +#, elixir-autogen, elixir-format +msgid "Continue with Google" +msgstr "Продолжить с Google" + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:91 +#, elixir-autogen, elixir-format +msgid "Create account and continue" +msgstr "Создать аккаунт и продолжить" + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:58 +#, elixir-autogen, elixir-format +msgid "Create your Who Need Help account" +msgstr "Создайте аккаунт Who Need Help" + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:89 +#, elixir-autogen, elixir-format +msgid "Creating account..." +msgstr "Создаём аккаунт..." + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:43 +#, elixir-autogen, elixir-format +msgid "Email me a verification link" +msgstr "Отправить ссылку для подтверждения на email" + +#: lib/who_need_help_web/controllers/user_session_controller.ex:158 +#, elixir-autogen, elixir-format +msgid "Google sign-in connected. You can use it next time." +msgstr "Вход через Google подключён. В следующий раз можно использовать его." + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:7 +#, elixir-autogen, elixir-format +msgid "Google verified your identity. Finish this one-time step to continue." +msgstr "Google подтвердил вашу личность. Выполните этот разовый шаг, чтобы продолжить." + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:60 +#, elixir-autogen, elixir-format +msgid "No password is required. Google will be connected as your sign-in method." +msgstr "Пароль не нужен. Google будет подключён как способ входа." + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:42 +#, elixir-autogen, elixir-format +msgid "Sending..." +msgstr "Отправляем..." + +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:88 +#, elixir-autogen, elixir-format +msgid "Sign in to %{email} once to connect Google. You can use the email link or your existing password." +msgstr "Один раз войдите в %{email}, чтобы подключить Google. Можно использовать ссылку из письма или существующий пароль." + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:33 +#, elixir-autogen, elixir-format +msgid "This email already has an account" +msgstr "Для этого email уже есть аккаунт" + +#: lib/who_need_help_web/controllers/google_auth_controller.ex:131 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:153 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:297 +#, elixir-autogen, elixir-format +msgid "This email already has an account. Confirm it once to connect Google." +msgstr "Для этого email уже есть аккаунт. Один раз подтвердите его, чтобы подключить Google." + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:48 +#, elixir-autogen, elixir-format +msgid "Use my password instead" +msgstr "Использовать пароль" + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:25 +#, elixir-autogen, elixir-format +msgid "Verified" +msgstr "Подтверждено" + +#: lib/who_need_help_web/controllers/google_auth_controller.ex:178 +#, elixir-autogen, elixir-format +msgid "We sent a verification link to %{email}. Open it to finish connecting Google." +msgstr "Мы отправили ссылку для подтверждения на %{email}. Откройте её, чтобы завершить подключение Google." + +#: lib/who_need_help_web/controllers/user_session_controller.ex:171 +#, elixir-autogen, elixir-format +msgid "You are signed in, but Google could not be connected. Try again in account settings." +msgstr "Вы вошли, но подключить Google не удалось. Повторите попытку в настройках аккаунта." + +#: lib/who_need_help/accounts/user_notifier.ex:57 +#, elixir-autogen, elixir-format +msgid "Confirm Google sign-in" +msgstr "Подтвердите вход через Google" + +#: lib/who_need_help/accounts/user_notifier.ex:58 +#, elixir-autogen, elixir-format +msgid "Hi %{email},\n\nUse the secure link below to sign in and connect Google to your Who Need Help account:\n\n%{url}\n\nIf you did not request this, ignore this email. Google will not be connected." +msgstr "Здравствуйте, %{email}!\n\nПерейдите по защищённой ссылке ниже, чтобы войти и подключить Google к аккаунту Who Need Help:\n\n%{url}\n\nЕсли вы не запрашивали это действие, проигнорируйте письмо. Google не будет подключён." diff --git a/priv/gettext/uk/LC_MESSAGES/default.po b/priv/gettext/uk/LC_MESSAGES/default.po index ff628be..69782b0 100644 --- a/priv/gettext/uk/LC_MESSAGES/default.po +++ b/priv/gettext/uk/LC_MESSAGES/default.po @@ -551,7 +551,7 @@ msgstr "" "Перед публікацією підтвердьте електронну пошту й переконайтеся, що обліковий" " запис активний." -#: lib/who_need_help/accounts/user_notifier.ex:70 +#: lib/who_need_help/accounts/user_notifier.ex:85 #, elixir-autogen, elixir-format msgid "Confirmation instructions" msgstr "Інструкції для підтвердження" @@ -665,8 +665,8 @@ msgid "Double-blind review" msgstr "Двосторонній прихований відгук" #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:75 -#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:89 -#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:122 +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:99 +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:132 #: lib/who_need_help_web/controllers/user_settings_html/edit.html.heex:15 #, elixir-autogen, elixir-format msgid "Email" @@ -851,7 +851,7 @@ msgstr "" "\n" "Якщо ви не запитували цю зміну, просто проігноруйте лист." -#: lib/who_need_help/accounts/user_notifier.ex:71 +#: lib/who_need_help/accounts/user_notifier.ex:86 #, elixir-autogen, elixir-format msgid "Hi %{email},\n\nYou can confirm your account by visiting the URL below:\n\n%{url}\n\nIf you didn't create an account with us, please ignore this." msgstr "" @@ -863,7 +863,7 @@ msgstr "" "\n" "Якщо ви не створювали в нас обліковий запис, просто проігноруйте лист." -#: lib/who_need_help/accounts/user_notifier.ex:57 +#: lib/who_need_help/accounts/user_notifier.ex:72 #, elixir-autogen, elixir-format msgid "Hi %{email},\n\nYou can log into your account by visiting the URL below:\n\n%{url}\n\nIf you didn't request this email, please ignore this." msgstr "" @@ -946,7 +946,7 @@ msgstr "" msgid "Identity and reputation" msgstr "Особа й репутація" -#: lib/who_need_help_web/controllers/user_session_controller.ex:89 +#: lib/who_need_help_web/controllers/user_session_controller.ex:97 #, elixir-autogen, elixir-format msgid "If your email is in our system, you will receive instructions for logging in shortly." msgstr "" @@ -988,7 +988,7 @@ msgstr "Мова інтерфейсу" msgid "Internal note" msgstr "Внутрішня нотатка" -#: lib/who_need_help_web/controllers/user_session_controller.ex:124 +#: lib/who_need_help_web/controllers/user_session_controller.ex:132 #, elixir-autogen, elixir-format msgid "Invalid email or password" msgstr "Неправильна електронна пошта або пароль" @@ -1052,22 +1052,22 @@ msgstr "Люди з підтвердженням геопозицією" msgid "Location:" msgstr "Геопозиція:" -#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:136 +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:146 #, elixir-autogen, elixir-format msgid "Log in and stay logged in" msgstr "Увійти й залишатися в системі" -#: lib/who_need_help/accounts/user_notifier.ex:56 +#: lib/who_need_help/accounts/user_notifier.ex:71 #, elixir-autogen, elixir-format msgid "Log in instructions" msgstr "Інструкції для входу" -#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:139 +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:149 #, elixir-autogen, elixir-format msgid "Log in only this time" msgstr "Увійти лише зараз" -#: lib/who_need_help_web/controllers/user_session_controller.ex:117 +#: lib/who_need_help_web/controllers/user_session_controller.ex:125 #, elixir-autogen, elixir-format msgid "Logged out successfully." msgstr "Ви успішно вийшли." @@ -1416,7 +1416,7 @@ msgstr "Батьківська категорія (необов’язково)" msgid "Participant" msgstr "Учасник" -#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:130 +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:140 #, elixir-autogen, elixir-format msgid "Password" msgstr "Пароль" @@ -1613,6 +1613,7 @@ msgstr "" msgid "Rating" msgstr "Оцінка" +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:80 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:43 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:90 #, elixir-autogen, elixir-format @@ -2045,7 +2046,7 @@ msgstr "Браузеру не вдалося передати вашу геоп msgid "The last administrator cannot demote themselves." msgstr "Останній адміністратор не може понизити власну роль." -#: lib/who_need_help_web/controllers/user_session_controller.ex:37 +#: lib/who_need_help_web/controllers/user_session_controller.ex:44 #, elixir-autogen, elixir-format msgid "The link is invalid or it has expired." msgstr "Посилання недійсне або прострочене." @@ -2176,7 +2177,8 @@ msgstr "Сьогодні" msgid "Too many actions in the configured time window." msgstr "Забагато дій протягом налаштованого проміжку часу." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:180 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:139 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:309 #: lib/who_need_help_web/controllers/user_registration_controller.ex:49 #, elixir-autogen, elixir-format msgid "Too many registration attempts in the configured time window." @@ -2187,7 +2189,8 @@ msgstr "Забагато спроб реєстрації протягом нал msgid "Too many requests in the configured time window." msgstr "Забагато запитів протягом налаштованого проміжку часу." -#: lib/who_need_help_web/controllers/user_session_controller.ex:102 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:189 +#: lib/who_need_help_web/controllers/user_session_controller.ex:110 #, elixir-autogen, elixir-format msgid "Too many sign-in emails in the configured time window." msgstr "Забагато листів для входу протягом налаштованого проміжку часу." @@ -2296,7 +2299,7 @@ msgstr "Користувач" msgid "User blocked. Their requests and new messages are hidden." msgstr "Користувача заблоковано. Його заявки й нові повідомлення приховано." -#: lib/who_need_help_web/controllers/user_session_controller.ex:25 +#: lib/who_need_help_web/controllers/user_session_controller.ex:31 #, elixir-autogen, elixir-format msgid "User confirmed successfully." msgstr "Користувача успішно підтверджено." @@ -2352,9 +2355,9 @@ msgstr "Відкриті відгуки" msgid "Waiting for a nearby volunteer." msgstr "Очікуємо помічника поруч." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:137 -#: lib/who_need_help_web/controllers/user_session_controller.ex:26 -#: lib/who_need_help_web/controllers/user_session_controller.ex:51 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:266 +#: lib/who_need_help_web/controllers/user_session_controller.ex:32 +#: lib/who_need_help_web/controllers/user_session_controller.ex:58 #, elixir-autogen, elixir-format msgid "Welcome back!" msgstr "З поверненням!" @@ -2569,6 +2572,7 @@ msgstr "активність" msgid "activity message" msgstr "повідомлення активності" +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:85 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:48 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:95 #, elixir-autogen, elixir-format @@ -2883,7 +2887,7 @@ msgstr "Вибраний запис більше недоступний." msgid "The settings form is invalid." msgstr "Форму налаштувань заповнено неправильно." -#: lib/who_need_help_web/controllers/user_session_controller.ex:111 +#: lib/who_need_help_web/controllers/user_session_controller.ex:119 #, elixir-autogen, elixir-format msgid "The sign-in form is invalid." msgstr "Форму входу заповнено неправильно." @@ -2908,7 +2912,7 @@ msgstr "Ця пропозиція більше недоступна." msgid "This request has expired." msgstr "Термін дії цієї заявки минув." -#: lib/who_need_help_web/controllers/user_session_controller.ex:60 +#: lib/who_need_help_web/controllers/user_session_controller.ex:68 #, elixir-autogen, elixir-format msgid "Too many sign-in attempts in the configured time window." msgstr "Забагато спроб входу протягом налаштованого проміжку часу." @@ -2943,7 +2947,7 @@ msgstr "Забагато запитів на зміну email протягом msgid "A Google account is connected. You can use it to sign in." msgstr "Обліковий запис Google підключено. Тепер за його допомогою можна входити." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:207 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:336 #, elixir-autogen, elixir-format msgid "A different Google account is already connected." msgstr "Уже підключено інший обліковий запис Google." @@ -2953,12 +2957,8 @@ msgstr "Уже підключено інший обліковий запис Goo msgid "A password is not required. We will email a one-time confirmation link. You can add a password later in account settings." msgstr "Пароль не обов’язковий. Ми надішлемо на email одноразове посилання для підтвердження. Пароль можна додати пізніше в налаштуваннях облікового запису." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:170 -#, elixir-autogen, elixir-format -msgid "An account with this email already exists. Sign in by email or password, then connect Google in account settings." -msgstr "Обліковий запис із таким email уже існує. Увійдіть за email або паролем, а потім підключіть Google у налаштуваннях облікового запису." - -#: lib/who_need_help_web/controllers/google_auth_controller.ex:37 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:42 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:123 #, elixir-autogen, elixir-format msgid "Confirm that you are 18 or older and accept the safety rules first." msgstr "Спочатку підтвердьте, що вам уже виповнилося 18 років, і прийміть правила безпеки." @@ -2978,17 +2978,17 @@ msgstr "Підключайте Google лише після входу тут. М msgid "Create account and email me a link" msgstr "Створити обліковий запис і надіслати посилання на email" -#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:99 +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:109 #, elixir-autogen, elixir-format msgid "Email me a sign-in link" msgstr "Надіслати посилання для входу на email" -#: lib/who_need_help_web/controllers/google_auth_controller.ex:215 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:344 #, elixir-autogen, elixir-format msgid "Google account connection session is invalid." msgstr "Сесія підключення облікового запису Google недійсна." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:97 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:226 #, elixir-autogen, elixir-format msgid "Google did not provide a verified email address." msgstr "Google не надав підтверджену адресу email." @@ -2998,32 +2998,34 @@ msgstr "Google не надав підтверджену адресу email." msgid "Google sign-in" msgstr "Вхід через Google" -#: lib/who_need_help_web/controllers/google_auth_controller.ex:197 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:326 #, elixir-autogen, elixir-format msgid "Google sign-in connected." msgstr "Вхід через Google підключено." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:123 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:252 #, elixir-autogen, elixir-format msgid "Google sign-in could not be started." msgstr "Не вдалося розпочати вхід через Google." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:102 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:231 #, elixir-autogen, elixir-format msgid "Google sign-in failed. Please try again." msgstr "Не вдалося увійти через Google. Спробуйте ще раз." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:128 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:257 #, elixir-autogen, elixir-format msgid "Google sign-in is not configured yet." msgstr "Вхід через Google ще не налаштовано." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:87 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:97 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:216 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:399 #, elixir-autogen, elixir-format msgid "Google sign-in session expired. Please start again." msgstr "Сесія входу через Google завершилася. Почніть заново." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:91 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:220 #, elixir-autogen, elixir-format msgid "Google sign-in session is invalid." msgstr "Сесія входу через Google недійсна." @@ -3040,52 +3042,44 @@ msgstr "Вхід через Google стане доступним після на msgid "Sending link..." msgstr "Надсилаємо посилання..." -#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:74 -#, elixir-autogen, elixir-format -msgid "Sign in with Google" -msgstr "Увійти через Google" - #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:51 #, elixir-autogen, elixir-format msgid "Sign up with Google" msgstr "Зареєструватися через Google" -#: lib/who_need_help_web/controllers/google_auth_controller.ex:202 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:331 #, elixir-autogen, elixir-format msgid "That Google account belongs to another local account." msgstr "Цей обліковий запис Google належить іншому локальному обліковому запису." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:45 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:50 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:164 #, elixir-autogen, elixir-format msgid "The Google registration form is invalid." msgstr "Форму реєстрації через Google заповнено неправильно." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:260 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:405 #, elixir-autogen, elixir-format msgid "This Google account cannot be used right now." msgstr "Цей обліковий запис Google зараз не можна використовувати." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:144 -#, elixir-autogen, elixir-format -msgid "This Google account is not connected yet. Create an account or sign in by email and connect Google in account settings." -msgstr "Цей обліковий запис Google ще не підключено. Створіть обліковий запис або увійдіть за email і підключіть Google у налаштуваннях." - -#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:109 +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:119 #, elixir-autogen, elixir-format msgid "This works only if you previously added a password in account settings." msgstr "Це працює, лише якщо ви раніше додали пароль у налаштуваннях облікового запису." -#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:105 +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:115 #, elixir-autogen, elixir-format msgid "Use a password instead" msgstr "Увійти за паролем" -#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:96 +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:106 #, elixir-autogen, elixir-format msgid "We will send a one-time sign-in link. No password is required." msgstr "Ми надішлемо одноразове посилання для входу. Пароль не потрібен." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:163 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:116 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:288 #, elixir-autogen, elixir-format msgid "Your account was created with Google." msgstr "Ваш обліковий запис створено через Google." @@ -3110,12 +3104,12 @@ msgstr "Відключити Google" msgid "Disconnect Google sign-in from this account?" msgstr "Відключити вхід через Google для цього облікового запису?" -#: lib/who_need_help_web/controllers/google_auth_controller.ex:60 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:65 #, elixir-autogen, elixir-format msgid "Google sign-in disconnected." msgstr "Вхід через Google відключено." -#: lib/who_need_help_web/controllers/google_auth_controller.ex:65 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:70 #, elixir-autogen, elixir-format msgid "No Google account is connected." msgstr "Обліковий запис Google не підключено." @@ -3749,6 +3743,7 @@ msgstr "Видалити мій обліковий запис Who Need Help" msgid "Please delete my account and associated personal data." msgstr "Будь ласка, видаліть мій обліковий запис і пов’язані персональні дані." +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:76 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:39 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:101 #, elixir-autogen, elixir-format @@ -3760,12 +3755,14 @@ msgstr "Мені 18 років або більше, і я приймаю Умо msgid "Privacy" msgstr "Конфіденційність" +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:82 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:45 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:92 #, elixir-autogen, elixir-format msgid "Privacy Policy" msgstr "Політика конфіденційності" +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:84 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:47 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:94 #, elixir-autogen, elixir-format @@ -3773,12 +3770,14 @@ msgid "Safety Rules" msgstr "Правила безпеки" #: lib/who_need_help_web/components/layouts.ex:149 +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:81 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:44 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:91 #, elixir-autogen, elixir-format msgid "Terms" msgstr "Умови" +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:83 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:46 #: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:93 #, elixir-autogen, elixir-format @@ -4102,3 +4101,111 @@ msgstr "Ви самі обираєте видимість. Точні поточ #, elixir-autogen, elixir-format msgid "You stay in control of the match" msgstr "Ви контролюєте взаємодію" + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:52 +#, elixir-autogen, elixir-format +msgid "After this confirmation, future Google sign-ins will take one click." +msgstr "Після цього підтвердження подальший вхід через Google виконуватиметься одним натисканням." + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:99 +#, elixir-autogen, elixir-format +msgid "Cancel and use another sign-in method" +msgstr "Скасувати й вибрати інший спосіб входу" + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:35 +#, elixir-autogen, elixir-format +msgid "Confirm access once so nobody can attach Google to your account using only a matching email address." +msgstr "Один раз підтвердьте доступ, щоб ніхто не зміг прив’язати Google до вашого облікового запису лише за збігом email." + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:5 +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:74 +#, elixir-autogen, elixir-format +msgid "Continue with Google" +msgstr "Продовжити з Google" + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:91 +#, elixir-autogen, elixir-format +msgid "Create account and continue" +msgstr "Створити обліковий запис і продовжити" + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:58 +#, elixir-autogen, elixir-format +msgid "Create your Who Need Help account" +msgstr "Створіть обліковий запис Who Need Help" + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:89 +#, elixir-autogen, elixir-format +msgid "Creating account..." +msgstr "Створюємо обліковий запис..." + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:43 +#, elixir-autogen, elixir-format +msgid "Email me a verification link" +msgstr "Надіслати посилання для підтвердження на email" + +#: lib/who_need_help_web/controllers/user_session_controller.ex:158 +#, elixir-autogen, elixir-format +msgid "Google sign-in connected. You can use it next time." +msgstr "Вхід через Google підключено. Наступного разу можна скористатися ним." + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:7 +#, elixir-autogen, elixir-format +msgid "Google verified your identity. Finish this one-time step to continue." +msgstr "Google підтвердив вашу особу. Виконайте цей разовий крок, щоб продовжити." + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:60 +#, elixir-autogen, elixir-format +msgid "No password is required. Google will be connected as your sign-in method." +msgstr "Пароль не потрібен. Google буде підключено як спосіб входу." + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:42 +#, elixir-autogen, elixir-format +msgid "Sending..." +msgstr "Надсилаємо..." + +#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:88 +#, elixir-autogen, elixir-format +msgid "Sign in to %{email} once to connect Google. You can use the email link or your existing password." +msgstr "Один раз увійдіть до %{email}, щоб підключити Google. Можна скористатися посиланням із листа або чинним паролем." + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:33 +#, elixir-autogen, elixir-format +msgid "This email already has an account" +msgstr "Для цього email уже є обліковий запис" + +#: lib/who_need_help_web/controllers/google_auth_controller.ex:131 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:153 +#: lib/who_need_help_web/controllers/google_auth_controller.ex:297 +#, elixir-autogen, elixir-format +msgid "This email already has an account. Confirm it once to connect Google." +msgstr "Для цього email уже є обліковий запис. Один раз підтвердьте його, щоб підключити Google." + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:48 +#, elixir-autogen, elixir-format +msgid "Use my password instead" +msgstr "Скористатися паролем" + +#: lib/who_need_help_web/controllers/google_auth_html/complete.html.heex:25 +#, elixir-autogen, elixir-format +msgid "Verified" +msgstr "Підтверджено" + +#: lib/who_need_help_web/controllers/google_auth_controller.ex:178 +#, elixir-autogen, elixir-format +msgid "We sent a verification link to %{email}. Open it to finish connecting Google." +msgstr "Ми надіслали посилання для підтвердження на %{email}. Відкрийте його, щоб завершити підключення Google." + +#: lib/who_need_help_web/controllers/user_session_controller.ex:171 +#, elixir-autogen, elixir-format +msgid "You are signed in, but Google could not be connected. Try again in account settings." +msgstr "Ви ввійшли, але підключити Google не вдалося. Повторіть спробу в налаштуваннях облікового запису." + +#: lib/who_need_help/accounts/user_notifier.ex:57 +#, elixir-autogen, elixir-format +msgid "Confirm Google sign-in" +msgstr "Підтвердьте вхід через Google" + +#: lib/who_need_help/accounts/user_notifier.ex:58 +#, elixir-autogen, elixir-format +msgid "Hi %{email},\n\nUse the secure link below to sign in and connect Google to your Who Need Help account:\n\n%{url}\n\nIf you did not request this, ignore this email. Google will not be connected." +msgstr "Вітаємо, %{email}!\n\nПерейдіть за захищеним посиланням нижче, щоб увійти й підключити Google до облікового запису Who Need Help:\n\n%{url}\n\nЯкщо ви не запитували цю дію, проігноруйте лист. Google не буде підключено." diff --git a/test/who_need_help_web/controllers/google_auth_controller_test.exs b/test/who_need_help_web/controllers/google_auth_controller_test.exs index 48c4727..cc0ba00 100644 --- a/test/who_need_help_web/controllers/google_auth_controller_test.exs +++ b/test/who_need_help_web/controllers/google_auth_controller_test.exs @@ -7,6 +7,7 @@ defmodule WhoNeedHelpWeb.GoogleAuthControllerTest do alias WhoNeedHelp.Trust.AuditEvent import WhoNeedHelp.AccountsFixtures + import Swoosh.TestAssertions test "starts a login flow with callback state, nonce, and PKCE session data", %{conn: conn} do conn = post(conn, ~p"/auth/google/login") @@ -68,7 +69,7 @@ defmodule WhoNeedHelpWeb.GoogleAuthControllerTest do assert user_id == user.id end - test "does not automatically merge an existing email account", %{conn: conn} do + test "requires local-account verification before linking a matching email", %{conn: conn} do user = user_fixture() conn = @@ -81,10 +82,14 @@ defmodule WhoNeedHelpWeb.GoogleAuthControllerTest do ~p"/auth/google/callback?code=code&state=google-test-state&uid=new-google&email=#{user.email}" ) - assert redirected_to(conn) == ~p"/users/log-in" - assert Phoenix.Flash.get(conn.assigns.flash, :error) =~ "already exists" + assert redirected_to(conn) == ~p"/auth/google/complete" + assert Phoenix.Flash.get(conn.assigns.flash, :info) =~ "Confirm it once" refute get_session(conn, :user_token) refute Repo.get_by(AuthIdentity, provider: :google, provider_uid: "new-google") + + html = conn |> recycle() |> get(~p"/auth/google/complete") |> html_response(200) + assert html =~ "This email already has an account" + assert html =~ "Email me a verification link" end test "logs in only through an identity already linked to the local account", %{conn: conn} do @@ -110,7 +115,7 @@ defmodule WhoNeedHelpWeb.GoogleAuthControllerTest do assert get_session(conn, :user_token) end - test "does not create an account from the login-only flow", %{conn: conn} do + test "continues an unlinked Google user into account creation", %{conn: conn} do email = unique_user_email() conn = @@ -121,10 +126,119 @@ defmodule WhoNeedHelpWeb.GoogleAuthControllerTest do ~p"/auth/google/callback?code=code&state=google-test-state&uid=unknown-google&email=#{email}" ) - assert redirected_to(conn) == ~p"/users/log-in" - assert Phoenix.Flash.get(conn.assigns.flash, :error) =~ "not connected" + assert redirected_to(conn) == ~p"/auth/google/complete" refute Accounts.get_user_by_email(email) refute get_session(conn, :user_token) + + html = conn |> recycle() |> get(~p"/auth/google/complete") |> html_response(200) + assert html =~ "Create your Who Need Help account" + assert html =~ email + end + + test "creates and links an unlinked Google user after terms acceptance", %{conn: conn} do + email = unique_user_email() + + conn = + conn + |> post(~p"/auth/google/login") + |> recycle() + |> get( + ~p"/auth/google/callback?code=code&state=google-test-state&uid=continue-google&email=#{email}&name=Continued%20Helper" + ) + |> recycle() + |> post(~p"/auth/google/complete-registration", %{ + "google_registration" => %{"locale" => "uk", "terms_accepted" => "true"} + }) + + assert redirected_to(conn) == ~p"/" + assert get_session(conn, :user_token) + + user = Accounts.get_user_by_email(email) + assert user.confirmed_at + assert user.accepted_terms_at + assert user.locale == "uk" + assert user.display_name == "Continued Helper" + + assert %AuthIdentity{user_id: user_id} = + Repo.get_by!(AuthIdentity, provider: :google, provider_uid: "continue-google") + + assert user_id == user.id + end + + test "does not create a continued Google account without accepting terms", %{conn: conn} do + email = unique_user_email() + + conn = + conn + |> post(~p"/auth/google/login") + |> recycle() + |> get( + ~p"/auth/google/callback?code=code&state=google-test-state&uid=no-terms-google&email=#{email}" + ) + |> recycle() + |> post(~p"/auth/google/complete-registration", %{ + "google_registration" => %{"locale" => "en", "terms_accepted" => "false"} + }) + + assert redirected_to(conn) == ~p"/auth/google/complete" + assert Phoenix.Flash.get(conn.assigns.flash, :error) =~ "18 or older" + refute Accounts.get_user_by_email(email) + refute Repo.get_by(AuthIdentity, provider: :google, provider_uid: "no-terms-google") + end + + test "links an existing account after one magic-link verification", %{conn: conn} do + user = user_fixture() + assert_email_sent() + + conn = + conn + |> post(~p"/auth/google/login") + |> recycle() + |> get( + ~p"/auth/google/callback?code=code&state=google-test-state&uid=verified-existing-google&email=#{user.email}" + ) + |> recycle() + |> post(~p"/auth/google/verify-existing") + + assert redirected_to(conn) == ~p"/users/log-in" + assert Phoenix.Flash.get(conn.assigns.flash, :info) =~ "finish connecting Google" + + assert_email_sent(fn email -> + email.subject == "Confirm Google sign-in" and + email.text_body =~ "connect Google to your Who Need Help account" and + email.text_body =~ "google_link=" and email.text_body =~ "#token=" + end) + + pending_token = get_session(conn, "pending_google_identity") + assert is_binary(pending_token) + {token, _hashed_token} = generate_user_magic_link_token(user) + + conn = + build_conn() + |> get(~p"/users/log-in?google_link=#{pending_token}") + |> recycle() + |> post(~p"/users/log-in", %{"user" => %{"token" => token}}) + + assert redirected_to(conn) == ~p"/" + assert get_session(conn, :user_token) + assert Phoenix.Flash.get(conn.assigns.flash, :info) =~ "Google sign-in connected" + + identity = + Repo.get_by!(AuthIdentity, + provider: :google, + provider_uid: "verified-existing-google" + ) + + assert identity.user_id == user.id + + assert %AuditEvent{actor_id: actor_id, metadata: metadata} = + Repo.get_by!(AuditEvent, + action: "auth_identity.connected", + target_id: identity.id + ) + + assert actor_id == user.id + assert metadata["method"] == "verified_local_sign_in" end test "rejects unverified Google email and consumes the flow session", %{conn: conn} do diff --git a/test/who_need_help_web/controllers/user_session_controller_test.exs b/test/who_need_help_web/controllers/user_session_controller_test.exs index 24c64a5..c3a2d42 100644 --- a/test/who_need_help_web/controllers/user_session_controller_test.exs +++ b/test/who_need_help_web/controllers/user_session_controller_test.exs @@ -17,7 +17,7 @@ defmodule WhoNeedHelpWeb.UserSessionControllerTest do assert response =~ "Log in" assert response =~ ~p"/users/register" assert response =~ "Email me a sign-in link" - assert response =~ "Sign in with Google" + assert response =~ "Continue with Google" assert response =~ "Use a password instead" assert response =~ ~s(id="magic-link-fragment-form") assert response =~ ~s(hidden)