Synchronize discovery maps and lists

This commit is contained in:
SimpleTest 2026-07-29 03:45:53 +03:00
parent ee6a1f7e70
commit af922b015f
12 changed files with 1227 additions and 780 deletions

View File

@ -219,6 +219,31 @@ html {
background: var(--color-base-100); background: var(--color-base-100);
} }
.request-discovery-controls {
display: flex;
flex: none;
align-items: center;
gap: 0.75rem;
}
.request-map-update-control {
display: inline-flex;
min-height: 2.5rem;
align-items: center;
gap: 0.55rem;
padding-inline: 0.2rem;
color: color-mix(in oklab, var(--color-base-content) 72%, transparent);
font-size: 0.78rem;
font-weight: 650;
cursor: pointer;
}
.request-map-update-control:focus-within {
border-radius: 0.65rem;
outline: 2px solid var(--color-primary);
outline-offset: 3px;
}
.request-view-switcher { .request-view-switcher {
display: inline-flex; display: inline-flex;
flex: none; flex: none;
@ -340,6 +365,37 @@ html {
background: #b63b21; background: #b63b21;
} }
@media (max-width: 56rem) {
.request-discovery-toolbar {
align-items: stretch;
flex-direction: column;
}
.request-discovery-controls {
justify-content: space-between;
flex-wrap: wrap;
}
}
@media (max-width: 38rem) {
.request-discovery-controls {
align-items: stretch;
flex-direction: column;
}
.request-map-update-control {
justify-content: space-between;
width: 100%;
padding: 0.35rem 0.15rem;
}
.request-view-switcher {
display: grid;
width: 100%;
grid-template-columns: repeat(3, minmax(0, 1fr));
}
}
.request-map-cluster:hover, .request-map-cluster:hover,
.request-map-cluster:focus-visible { .request-map-cluster:focus-visible {
transform: scale(1.08); transform: scale(1.08);
@ -381,7 +437,7 @@ html {
.request-view-switcher { .request-view-switcher {
display: grid; display: grid;
grid-template-columns: 1fr 1fr; grid-template-columns: repeat(3, minmax(0, 1fr));
width: 100%; width: 100%;
} }
@ -389,22 +445,24 @@ html {
width: 100%; width: 100%;
} }
.request-view-split {
display: none;
}
.request-discovery[data-view-mode="split"] .request-discovery-content { .request-discovery[data-view-mode="split"] .request-discovery-content {
display: block; display: flex;
flex-direction: column;
} }
.request-discovery[data-view-mode="split"] .request-discovery-map-panel { .request-discovery[data-view-mode="split"] .request-discovery-map-panel {
display: none; position: static;
order: -1;
} }
.request-discovery-map, .request-discovery-map,
.request-discovery[data-view-mode="map"] .request-discovery-map { .request-discovery[data-view-mode="map"] .request-discovery-map {
min-height: max(30rem, calc(100svh - 12rem)); min-height: max(30rem, calc(100svh - 12rem));
} }
.request-discovery[data-view-mode="split"] .request-discovery-map {
min-height: min(30rem, 62svh);
}
} }
.home-demo-map { .home-demo-map {

View File

@ -52,6 +52,14 @@ defmodule WhoNeedHelp.Activities do
|> Pagination.page(limit, &{&1.starts_at, &1.id}) |> Pagination.page(limit, &{&1.starts_at, &1.id})
end end
def count_open_activities(%Scope{user: user}, filters \\ %{}, options \\ []) do
viewport = Keyword.get(options, :viewport)
user
|> open_activities_query(filters, viewport)
|> Repo.aggregate(:count, :id)
end
def map_discovery_items(%Scope{user: user}, filters, %DiscoveryViewport{} = viewport) do def map_discovery_items(%Scope{user: user}, filters, %DiscoveryViewport{} = viewport) do
level = DiscoveryCluster.level_for_zoom(viewport.zoom) level = DiscoveryCluster.level_for_zoom(viewport.zoom)
cell_size = DiscoveryCluster.cell_size_meters(level) cell_size = DiscoveryCluster.cell_size_meters(level)

View File

@ -63,6 +63,14 @@ defmodule WhoNeedHelp.Help do
|> Pagination.page(limit, &{&1.expires_at, &1.id}) |> Pagination.page(limit, &{&1.expires_at, &1.id})
end end
def count_open_requests(%Scope{user: user}, filters \\ %{}, options \\ []) do
viewport = Keyword.get(options, :viewport)
user
|> open_requests_query(filters, viewport)
|> Repo.aggregate(:count, :id)
end
def map_discovery_items(%Scope{user: user}, filters, %DiscoveryViewport{} = viewport) do def map_discovery_items(%Scope{user: user}, filters, %DiscoveryViewport{} = viewport) do
level = DiscoveryCluster.level_for_zoom(viewport.zoom) level = DiscoveryCluster.level_for_zoom(viewport.zoom)
cell_size = DiscoveryCluster.cell_size_meters(level) cell_size = DiscoveryCluster.cell_size_meters(level)
@ -191,11 +199,14 @@ defmodule WhoNeedHelp.Help do
|> Repo.aggregate(:count, :id) |> Repo.aggregate(:count, :id)
end end
# Discovery lists include a privacy area's intersection with the viewport. # Lists and map markers use the same displayed public center. A privacy
# Map markers, however, are loaded by their displayed center. This both # radius describes uncertainty around that center; it must not make a card
# matches normal map panning behaviour and keeps the map query indexable # appear in a viewport where its public marker was not loaded.
# without evaluating a geography distance against every privacy circle.
defp filter_request_map_viewport(query, %DiscoveryViewport{} = viewport) do defp filter_request_map_viewport(query, %DiscoveryViewport{} = viewport) do
where(query, ^request_map_viewport_condition(viewport))
end
defp request_map_viewport_condition(%DiscoveryViewport{} = viewport) do
spatial_condition = spatial_condition =
Enum.reduce(DiscoveryViewport.envelopes(viewport), dynamic(false), fn Enum.reduce(DiscoveryViewport.envelopes(viewport), dynamic(false), fn
{west, south, east, north}, condition -> {west, south, east, north}, condition ->
@ -243,7 +254,7 @@ defmodule WhoNeedHelp.Help do
) )
end) end)
where(query, ^spatial_condition) spatial_condition
end end
def list_open_requests, do: raise(ArgumentError, "an authenticated scope is required") def list_open_requests, do: raise(ArgumentError, "an authenticated scope is required")
@ -1220,62 +1231,7 @@ defmodule WhoNeedHelp.Help do
defp filter_discovery_viewport(query, nil, _filters), do: query defp filter_discovery_viewport(query, nil, _filters), do: query
defp filter_discovery_viewport(query, %DiscoveryViewport{} = viewport, filters) do defp filter_discovery_viewport(query, %DiscoveryViewport{} = viewport, filters) do
maximum_public_radius = Enum.max(HelpRequest.allowed_location_radii()) spatial_condition = request_map_viewport_condition(viewport)
candidate_condition =
Enum.reduce(
DiscoveryViewport.padded_envelopes(viewport, maximum_public_radius),
dynamic(false),
fn {west, south, east, north}, condition ->
dynamic(
[request],
^condition or
fragment(
"? && ST_MakeEnvelope(?, ?, ?, ?, 4326)",
request.location,
^west,
^south,
^east,
^north
)
)
end
)
exact_condition =
Enum.reduce(DiscoveryViewport.envelopes(viewport), dynamic(false), fn
{west, south, east, north}, condition ->
dynamic(
[request],
^condition or
fragment(
"""
(
ST_Intersects(?, ST_MakeEnvelope(?, ?, ?, ?, 4326))
OR
ST_DWithin(
(?)::geography,
ST_MakeEnvelope(?, ?, ?, ?, 4326)::geography,
COALESCE(?, 0)
)
)
""",
request.location,
^west,
^south,
^east,
^north,
request.location,
^west,
^south,
^east,
^north,
request.location_radius_meters
)
)
end)
spatial_condition = dynamic([request], ^candidate_condition and ^exact_condition)
area = filters["area"] || filters[:area] area = filters["area"] || filters[:area]
@ -1283,10 +1239,16 @@ defmodule WhoNeedHelp.Help do
if is_binary(area) and String.trim(area) != "" do if is_binary(area) and String.trim(area) != "" do
dynamic( dynamic(
[request], [request],
(not is_nil(request.location) and ^spatial_condition) or is_nil(request.location) (not is_nil(request.location) and request.location_visibility != :hidden and
^spatial_condition) or request.location_visibility == :hidden or
is_nil(request.location)
) )
else else
dynamic([request], not is_nil(request.location) and ^spatial_condition) dynamic(
[request],
not is_nil(request.location) and request.location_visibility != :hidden and
^spatial_condition
)
end end
where(query, ^condition) where(query, ^condition)

View File

@ -8,7 +8,9 @@ defmodule WhoNeedHelpWeb.ActivityLive.Index do
@discovery_modes ~w(nearby mine) @discovery_modes ~w(nearby mine)
@view_modes ~w(list split map) @view_modes ~w(list split map)
@map_update_modes ~w(manual auto)
@filter_keys ~w(category_id area) @filter_keys ~w(category_id area)
@map_update_delay_ms 450
@impl true @impl true
def mount(_params, _session, socket) do def mount(_params, _session, socket) do
@ -23,13 +25,15 @@ defmodule WhoNeedHelpWeb.ActivityLive.Index do
|> assign(:discovery_mode, "nearby") |> assign(:discovery_mode, "nearby")
|> assign(:view_mode, "split") |> assign(:view_mode, "split")
|> assign(:view_explicit, false) |> assign(:view_explicit, false)
|> assign(:map_update_mode, "manual")
|> assign(:map_update_timer, nil)
|> assign(:viewport, nil) |> assign(:viewport, nil)
|> assign(:pending_viewport, nil) |> assign(:pending_viewport, nil)
|> assign(:activities, []) |> assign(:activities, [])
|> assign(:activities_cursor, nil) |> assign(:activities_cursor, nil)
|> assign(:map_items, Jason.encode!([])) |> assign(:map_items, Jason.encode!([]))
|> assign(:map_result_count, 0) |> assign(:map_result_count, 0)
|> assign(:map_total_count, 0) |> assign(:list_result_count, 0)
|> assign(:discovery_loading, true) |> assign(:discovery_loading, true)
|> assign(:refresh_timer, nil) |> assign(:refresh_timer, nil)
|> assign(:my_activities, []) |> assign(:my_activities, [])
@ -44,14 +48,17 @@ defmodule WhoNeedHelpWeb.ActivityLive.Index do
viewport = parse_viewport(params) viewport = parse_viewport(params)
discovery_mode = normalize_discovery_mode(params["scope"]) discovery_mode = normalize_discovery_mode(params["scope"])
view_mode = normalize_view_mode(params["view"]) view_mode = normalize_view_mode(params["view"])
map_update_mode = normalize_map_update_mode(params["map_update"])
{:noreply, {:noreply,
socket socket
|> cancel_map_update_timer()
|> assign(:filters, filters) |> assign(:filters, filters)
|> assign(:filter_form, to_form(filters, as: :filters)) |> assign(:filter_form, to_form(filters, as: :filters))
|> assign(:discovery_mode, discovery_mode) |> assign(:discovery_mode, discovery_mode)
|> assign(:view_mode, view_mode) |> assign(:view_mode, view_mode)
|> assign(:view_explicit, params["view"] in @view_modes) |> assign(:view_explicit, params["view"] in @view_modes)
|> assign(:map_update_mode, map_update_mode)
|> assign(:viewport, viewport) |> assign(:viewport, viewport)
|> assign(:pending_viewport, nil) |> assign(:pending_viewport, nil)
|> load_if_connected()} |> load_if_connected()}
@ -123,6 +130,17 @@ defmodule WhoNeedHelpWeb.ActivityLive.Index do
{:noreply, socket |> assign(:refresh_timer, nil) |> load_if_connected()} {:noreply, socket |> assign(:refresh_timer, nil) |> load_if_connected()}
end end
def handle_info({:apply_map_viewport, %DiscoveryViewport{} = viewport}, socket) do
socket = assign(socket, :map_update_timer, nil)
if socket.assigns.map_update_mode == "auto" and
DiscoveryViewport.same_area?(viewport, socket.assigns.pending_viewport) do
{:noreply, push_patch(socket, to: activity_path(socket, viewport: viewport))}
else
{:noreply, socket}
end
end
@impl true @impl true
def handle_event("filter", %{"filters" => filters}, socket) do def handle_event("filter", %{"filters" => filters}, socket) do
{:noreply, push_patch(socket, to: activity_path(socket, filters: normalize_filters(filters)))} {:noreply, push_patch(socket, to: activity_path(socket, filters: normalize_filters(filters)))}
@ -147,15 +165,35 @@ defmodule WhoNeedHelpWeb.ActivityLive.Index do
end end
end end
def handle_event("set-map-update-mode", %{"mode" => mode}, socket)
when mode in @map_update_modes do
viewport =
if mode == "auto" and match?(%DiscoveryViewport{}, socket.assigns.pending_viewport),
do: socket.assigns.pending_viewport,
else: socket.assigns.viewport
{:noreply,
push_patch(socket,
to: activity_path(socket, viewport: viewport, map_update_mode: mode)
)}
end
def handle_event("map-viewport-change", params, socket) do def handle_event("map-viewport-change", params, socket) do
case DiscoveryViewport.cast(params) do case DiscoveryViewport.cast(params) do
{:ok, viewport} -> {:ok, viewport} ->
pending = cond do
if DiscoveryViewport.same_area?(viewport, socket.assigns.viewport), DiscoveryViewport.same_area?(viewport, socket.assigns.viewport) ->
do: nil, {:noreply,
else: viewport socket
|> cancel_map_update_timer()
|> assign(:pending_viewport, nil)}
{:noreply, assign(socket, :pending_viewport, pending)} socket.assigns.map_update_mode == "auto" ->
{:noreply, schedule_map_update(socket, viewport)}
true ->
{:noreply, assign(socket, :pending_viewport, viewport)}
end
:error -> :error ->
{:noreply, socket} {:noreply, socket}
@ -235,7 +273,7 @@ defmodule WhoNeedHelpWeb.ActivityLive.Index do
end end
defp load_data(scope, filters, discovery_mode, view_mode, viewport) do defp load_data(scope, filters, discovery_mode, view_mode, viewport) do
{activities_page, map_items} = {activities_page, map_items, list_result_count} =
case {discovery_mode, viewport} do case {discovery_mode, viewport} do
{"nearby", %DiscoveryViewport{} = viewport} -> {"nearby", %DiscoveryViewport{} = viewport} ->
page = page =
@ -252,10 +290,17 @@ defmodule WhoNeedHelpWeb.ActivityLive.Index do
Activities.map_discovery_items(scope, filters, viewport) Activities.map_discovery_items(scope, filters, viewport)
end end
{page, items} list_result_count =
if view_mode == "map" do
0
else
Activities.count_open_activities(scope, filters, viewport: viewport)
end
{page, items, list_result_count}
_mine_or_missing_viewport -> _mine_or_missing_viewport ->
{%Pagination.Page{}, []} {%Pagination.Page{}, [], 0}
end end
my_activities_page = my_activities_page =
@ -267,15 +312,6 @@ defmodule WhoNeedHelpWeb.ActivityLive.Index do
activities = activities_page.entries activities = activities_page.entries
map_total_count =
if discovery_mode == "nearby" and view_mode != "list" do
DiscoveryQueryCache.fetch(map_total_cache_key(scope, filters), fn ->
Activities.count_map_discovery_items(scope, filters)
end)
else
0
end
%{ %{
discovery_loading: false, discovery_loading: false,
activities: activities, activities: activities,
@ -284,7 +320,7 @@ defmodule WhoNeedHelpWeb.ActivityLive.Index do
my_activities_cursor: my_activities_page.next_cursor, my_activities_cursor: my_activities_page.next_cursor,
map_items: Jason.encode!(map_items), map_items: Jason.encode!(map_items),
map_result_count: Enum.reduce(map_items, 0, &(map_item_count(&1) + &2)), map_result_count: Enum.reduce(map_items, 0, &(map_item_count(&1) + &2)),
map_total_count: map_total_count list_result_count: list_result_count
} }
end end
@ -349,11 +385,6 @@ defmodule WhoNeedHelpWeb.ActivityLive.Index do
) )
) )
:ok =
DiscoveryQueryCache.invalidate(
map_total_cache_key(socket.assigns.current_scope, socket.assigns.filters)
)
socket socket
end end
@ -361,8 +392,6 @@ defmodule WhoNeedHelpWeb.ActivityLive.Index do
{:activities, scope.user.id, filters, discovery_mode, view_mode, viewport} {:activities, scope.user.id, filters, discovery_mode, view_mode, viewport}
end end
defp map_total_cache_key(scope, filters), do: {:activity_map_total, scope.user.id, filters}
defp empty_filters, do: %{"category_id" => "", "area" => ""} defp empty_filters, do: %{"category_id" => "", "area" => ""}
defp normalize_filters(params) do defp normalize_filters(params) do
@ -386,12 +415,18 @@ defmodule WhoNeedHelpWeb.ActivityLive.Index do
defp normalize_view_mode(view_mode) when view_mode in @view_modes, do: view_mode defp normalize_view_mode(view_mode) when view_mode in @view_modes, do: view_mode
defp normalize_view_mode(_view_mode), do: "split" defp normalize_view_mode(_view_mode), do: "split"
defp normalize_map_update_mode(mode) when mode in @map_update_modes, do: mode
defp normalize_map_update_mode(_mode), do: "manual"
defp activity_path(socket, overrides) do defp activity_path(socket, overrides) do
filters = Keyword.get(overrides, :filters, socket.assigns.filters) filters = Keyword.get(overrides, :filters, socket.assigns.filters)
viewport = Keyword.get(overrides, :viewport, socket.assigns.viewport) viewport = Keyword.get(overrides, :viewport, socket.assigns.viewport)
discovery_mode = Keyword.get(overrides, :discovery_mode, socket.assigns.discovery_mode) discovery_mode = Keyword.get(overrides, :discovery_mode, socket.assigns.discovery_mode)
view_mode = Keyword.get(overrides, :view_mode, socket.assigns.view_mode) view_mode = Keyword.get(overrides, :view_mode, socket.assigns.view_mode)
map_update_mode =
Keyword.get(overrides, :map_update_mode, socket.assigns.map_update_mode)
params = params =
filters filters
|> Map.reject(fn {_key, value} -> value == "" end) |> Map.reject(fn {_key, value} -> value == "" end)
@ -405,10 +440,32 @@ defmodule WhoNeedHelpWeb.ActivityLive.Index do
else: %{} else: %{}
) )
) )
|> then(fn params ->
if map_update_mode == "auto",
do: Map.put(params, "map_update", "auto"),
else: params
end)
~p"/activities?#{params}" ~p"/activities?#{params}"
end end
defp schedule_map_update(socket, viewport) do
socket = cancel_map_update_timer(socket)
timer = Process.send_after(self(), {:apply_map_viewport, viewport}, @map_update_delay_ms)
socket
|> assign(:pending_viewport, viewport)
|> assign(:map_update_timer, timer)
end
defp cancel_map_update_timer(socket) do
if socket.assigns.map_update_timer do
Process.cancel_timer(socket.assigns.map_update_timer)
end
assign(socket, :map_update_timer, nil)
end
defp viewport_json(nil), do: "" defp viewport_json(nil), do: ""
defp viewport_json(%DiscoveryViewport{} = viewport) do defp viewport_json(%DiscoveryViewport{} = viewport) do
@ -518,29 +575,66 @@ defmodule WhoNeedHelpWeb.ActivityLive.Index do
class="request-discovery mt-6" class="request-discovery mt-6"
> >
<div class="request-discovery-toolbar"> <div class="request-discovery-toolbar">
<div :if={@view_mode != "list" && @discovery_loading}> <div :if={@discovery_loading}>
<strong>{gettext("Loading results…")}</strong> <strong>{gettext("Loading results…")}</strong>
</div> </div>
<div :if={@view_mode != "list" && !@discovery_loading}> <div :if={!@discovery_loading} class="min-w-0" aria-live="polite">
<strong> <strong>
{ngettext( {ngettext(
"%{count} activity in this map area", "%{count} activity in the selected map area",
"%{count} activities in this map area", "%{count} activities in the selected map area",
@map_result_count, if(@view_mode == "map", do: @map_result_count, else: @list_result_count),
count: @map_result_count count: if(@view_mode == "map", do: @map_result_count, else: @list_result_count)
)} )}
</strong> </strong>
<span class="ml-1 text-sm text-base-content/60">
{gettext("of %{count} matching activities with map locations", <span :if={@view_mode != "map"} class="ml-1 text-sm text-base-content/60">
count: @map_total_count {gettext("Showing %{shown} of %{count} in the list.",
shown: length(@activities),
count: @list_result_count
)} )}
</span> </span>
<p class="text-sm text-base-content/60">
{gettext("Move the map, then search the newly visible area.")} <p
:if={@pending_viewport && @map_update_mode == "manual"}
class="mt-1 text-sm font-medium text-warning"
>
{gettext("Map moved. Results still show the previous area.")}
</p>
<p
:if={@pending_viewport && @map_update_mode == "auto"}
class="mt-1 text-sm text-base-content/60"
>
{gettext("Updating results for the visible map area…")}
</p>
<p
:if={!@pending_viewport && @map_update_mode == "auto"}
class="mt-1 text-sm text-base-content/60"
>
{gettext("Results update automatically after you stop moving the map.")}
</p>
<p
:if={!@pending_viewport && @map_update_mode == "manual"}
class="mt-1 text-sm text-base-content/60"
>
{gettext("Move or zoom the map, then choose “Show activities in this area”.")}
</p> </p>
</div> </div>
<div class="request-discovery-controls">
<label class="request-map-update-control">
<input
id="activity-map-auto-update"
type="checkbox"
checked={@map_update_mode == "auto"}
phx-click="set-map-update-mode"
phx-value-mode={if(@map_update_mode == "auto", do: "manual", else: "auto")}
class="toggle toggle-sm toggle-info"
/>
<span>{gettext("Update results as map moves")}</span>
</label>
<div class="request-view-switcher" role="group" aria-label={gettext("Results layout")}> <div class="request-view-switcher" role="group" aria-label={gettext("Results layout")}>
<button <button
type="button" type="button"
@ -574,6 +668,7 @@ defmodule WhoNeedHelpWeb.ActivityLive.Index do
</button> </button>
</div> </div>
</div> </div>
</div>
<div class="request-discovery-content"> <div class="request-discovery-content">
<div id="activity-results-list" class="request-results-list space-y-4"> <div id="activity-results-list" class="request-results-list space-y-4">
@ -611,7 +706,9 @@ defmodule WhoNeedHelpWeb.ActivityLive.Index do
:for={activity <- @activities} :for={activity <- @activities}
id={"open-activity-#{activity.id}"} id={"open-activity-#{activity.id}"}
navigate={~p"/activities/#{activity.id}"} navigate={~p"/activities/#{activity.id}"}
class="block rounded-3xl border border-base-300 bg-base-100 p-6 transition hover:border-info/50" data-discovery-card
data-request-id={activity.id}
class="request-result-card block rounded-3xl border border-base-300 bg-base-100 p-6 transition hover:border-info/50"
> >
<div class="flex items-start justify-between gap-4"> <div class="flex items-start justify-between gap-4">
<div> <div>
@ -683,14 +780,14 @@ defmodule WhoNeedHelpWeb.ActivityLive.Index do
class="aid-map request-discovery-map" class="aid-map request-discovery-map"
/> />
<button <button
:if={@pending_viewport} :if={@pending_viewport && @map_update_mode == "manual"}
id="search-activity-map-area" id="search-activity-map-area"
type="button" type="button"
phx-click="search-map-area" phx-click="search-map-area"
class="btn btn-info request-map-search-button" class="btn btn-info request-map-search-button"
> >
<.icon name="hero-magnifying-glass" class="size-4" /> <.icon name="hero-magnifying-glass" class="size-4" />
{gettext("Search this area")} {gettext("Show activities in this area")}
</button> </button>
</div> </div>
</aside> </aside>

View File

@ -8,7 +8,9 @@ defmodule WhoNeedHelpWeb.RequestLive.Index do
@discovery_modes ~w(nearby mine) @discovery_modes ~w(nearby mine)
@view_modes ~w(list split map) @view_modes ~w(list split map)
@map_update_modes ~w(manual auto)
@filter_keys ~w(category_id urgency area) @filter_keys ~w(category_id urgency area)
@map_update_delay_ms 450
@empty_reputation %{ @empty_reputation %{
completed: 0, completed: 0,
unique_people: 0, unique_people: 0,
@ -30,6 +32,8 @@ defmodule WhoNeedHelpWeb.RequestLive.Index do
|> assign(:discovery_mode, "nearby") |> assign(:discovery_mode, "nearby")
|> assign(:view_mode, "split") |> assign(:view_mode, "split")
|> assign(:view_explicit, false) |> assign(:view_explicit, false)
|> assign(:map_update_mode, "manual")
|> assign(:map_update_timer, nil)
|> assign(:viewport, nil) |> assign(:viewport, nil)
|> assign(:pending_viewport, nil) |> assign(:pending_viewport, nil)
|> assign(:discovery_topics, []) |> assign(:discovery_topics, [])
@ -41,7 +45,7 @@ defmodule WhoNeedHelpWeb.RequestLive.Index do
|> assign(:reputation, @empty_reputation) |> assign(:reputation, @empty_reputation)
|> assign(:map_items, Jason.encode!([])) |> assign(:map_items, Jason.encode!([]))
|> assign(:map_result_count, 0) |> assign(:map_result_count, 0)
|> assign(:map_total_count, 0) |> assign(:list_result_count, 0)
|> assign(:discovery_loading, true) |> assign(:discovery_loading, true)
|> assign(:refresh_timer, nil) |> assign(:refresh_timer, nil)
|> assign(:page_title, gettext("Nearby help")) |> assign(:page_title, gettext("Nearby help"))
@ -53,20 +57,29 @@ defmodule WhoNeedHelpWeb.RequestLive.Index do
filters = normalize_filters(params) filters = normalize_filters(params)
viewport = parse_viewport(params) viewport = parse_viewport(params)
view_mode = normalize_view_mode(params["view"]) view_mode = normalize_view_mode(params["view"])
map_update_mode = normalize_map_update_mode(params["map_update"])
discovery_mode = normalize_discovery_mode(params["scope"]) discovery_mode = normalize_discovery_mode(params["scope"])
socket = socket =
socket socket
|> cancel_map_update_timer()
|> assign(:filters, filters) |> assign(:filters, filters)
|> assign(:filter_form, to_form(filters, as: :filters)) |> assign(:filter_form, to_form(filters, as: :filters))
|> assign(:discovery_mode, discovery_mode) |> assign(:discovery_mode, discovery_mode)
|> assign(:view_mode, view_mode) |> assign(:view_mode, view_mode)
|> assign(:view_explicit, params["view"] in @view_modes) |> assign(:view_explicit, params["view"] in @view_modes)
|> assign(:map_update_mode, map_update_mode)
|> assign(:viewport, viewport) |> assign(:viewport, viewport)
|> assign(:pending_viewport, nil) |> assign(:pending_viewport, nil)
|> assign( |> assign(
:query_params, :query_params,
normalize_query_params(filters, viewport, view_mode, discovery_mode) normalize_query_params(
filters,
viewport,
view_mode,
discovery_mode,
map_update_mode
)
) )
|> refresh_discovery_subscription(viewport, filters, discovery_mode) |> refresh_discovery_subscription(viewport, filters, discovery_mode)
|> load_if_connected() |> load_if_connected()
@ -98,15 +111,35 @@ defmodule WhoNeedHelpWeb.RequestLive.Index do
end end
end end
def handle_event("set-map-update-mode", %{"mode" => mode}, socket)
when mode in @map_update_modes do
viewport =
if mode == "auto" and match?(%DiscoveryViewport{}, socket.assigns.pending_viewport),
do: socket.assigns.pending_viewport,
else: socket.assigns.viewport
{:noreply,
push_patch(socket,
to: request_path(socket, viewport: viewport, map_update_mode: mode)
)}
end
def handle_event("map-viewport-change", params, socket) do def handle_event("map-viewport-change", params, socket) do
case DiscoveryViewport.cast(params) do case DiscoveryViewport.cast(params) do
{:ok, viewport} -> {:ok, viewport} ->
pending = cond do
if DiscoveryViewport.same_area?(viewport, socket.assigns.viewport), DiscoveryViewport.same_area?(viewport, socket.assigns.viewport) ->
do: nil, {:noreply,
else: viewport socket
|> cancel_map_update_timer()
|> assign(:pending_viewport, nil)}
{:noreply, assign(socket, :pending_viewport, pending)} socket.assigns.map_update_mode == "auto" ->
{:noreply, schedule_map_update(socket, viewport)}
true ->
{:noreply, assign(socket, :pending_viewport, viewport)}
end
:error -> :error ->
{:noreply, socket} {:noreply, socket}
@ -191,6 +224,17 @@ defmodule WhoNeedHelpWeb.RequestLive.Index do
{:noreply, socket |> assign(:refresh_timer, nil) |> load_if_connected()} {:noreply, socket |> assign(:refresh_timer, nil) |> load_if_connected()}
end end
def handle_info({:apply_map_viewport, %DiscoveryViewport{} = viewport}, socket) do
socket = assign(socket, :map_update_timer, nil)
if socket.assigns.map_update_mode == "auto" and
DiscoveryViewport.same_area?(viewport, socket.assigns.pending_viewport) do
{:noreply, push_patch(socket, to: request_path(socket, viewport: viewport))}
else
{:noreply, socket}
end
end
@impl true @impl true
def handle_async(:load_discovery, {:ok, result}, socket) do def handle_async(:load_discovery, {:ok, result}, socket) do
{:noreply, assign(socket, result)} {:noreply, assign(socket, result)}
@ -227,10 +271,10 @@ defmodule WhoNeedHelpWeb.RequestLive.Index do
end end
defp load_data(scope, filters, discovery_mode, view_mode, viewport) do defp load_data(scope, filters, discovery_mode, view_mode, viewport) do
{requests_page, map_items} = {requests_page, map_items, list_result_count} =
case {discovery_mode, viewport} do case {discovery_mode, viewport} do
{"mine", _viewport} -> {"mine", _viewport} ->
{%Pagination.Page{}, []} {%Pagination.Page{}, [], 0}
{"nearby", %DiscoveryViewport{} = viewport} -> {"nearby", %DiscoveryViewport{} = viewport} ->
page = page =
@ -247,10 +291,17 @@ defmodule WhoNeedHelpWeb.RequestLive.Index do
Help.map_discovery_items(scope, filters, viewport) Help.map_discovery_items(scope, filters, viewport)
end end
{page, items} list_result_count =
if view_mode == "map" do
0
else
Help.count_open_requests(scope, filters, viewport: viewport)
end
{page, items, list_result_count}
{"nearby", nil} -> {"nearby", nil} ->
{%Pagination.Page{}, []} {%Pagination.Page{}, [], 0}
end end
my_requests_page = my_requests_page =
@ -260,15 +311,6 @@ defmodule WhoNeedHelpWeb.RequestLive.Index do
%Pagination.Page{} %Pagination.Page{}
end end
map_total_count =
if discovery_mode == "nearby" and view_mode != "list" do
DiscoveryQueryCache.fetch(map_total_cache_key(scope, filters), fn ->
Help.count_map_discovery_items(scope, filters)
end)
else
0
end
%{ %{
discovery_loading: false, discovery_loading: false,
requests: requests_page.entries, requests: requests_page.entries,
@ -278,7 +320,7 @@ defmodule WhoNeedHelpWeb.RequestLive.Index do
reputation: Trust.reputation(scope.user.id), reputation: Trust.reputation(scope.user.id),
map_items: Jason.encode!(map_items), map_items: Jason.encode!(map_items),
map_result_count: Enum.reduce(map_items, 0, &(map_item_count(&1) + &2)), map_result_count: Enum.reduce(map_items, 0, &(map_item_count(&1) + &2)),
map_total_count: map_total_count list_result_count: list_result_count
} }
end end
@ -332,11 +374,6 @@ defmodule WhoNeedHelpWeb.RequestLive.Index do
) )
) )
:ok =
DiscoveryQueryCache.invalidate(
map_total_cache_key(socket.assigns.current_scope, socket.assigns.filters)
)
socket socket
end end
@ -344,8 +381,6 @@ defmodule WhoNeedHelpWeb.RequestLive.Index do
{:requests, scope.user.id, filters, discovery_mode, view_mode, viewport} {:requests, scope.user.id, filters, discovery_mode, view_mode, viewport}
end end
defp map_total_cache_key(scope, filters), do: {:request_map_total, scope.user.id, filters}
defp empty_filters, do: %{"category_id" => "", "urgency" => "", "area" => ""} defp empty_filters, do: %{"category_id" => "", "urgency" => "", "area" => ""}
defp normalize_filters(params) do defp normalize_filters(params) do
@ -357,6 +392,9 @@ defmodule WhoNeedHelpWeb.RequestLive.Index do
defp normalize_view_mode(view_mode) when view_mode in @view_modes, do: view_mode defp normalize_view_mode(view_mode) when view_mode in @view_modes, do: view_mode
defp normalize_view_mode(_view_mode), do: "split" defp normalize_view_mode(_view_mode), do: "split"
defp normalize_map_update_mode(mode) when mode in @map_update_modes, do: mode
defp normalize_map_update_mode(_mode), do: "manual"
defp normalize_discovery_mode(discovery_mode) when discovery_mode in @discovery_modes, defp normalize_discovery_mode(discovery_mode) when discovery_mode in @discovery_modes,
do: discovery_mode do: discovery_mode
@ -369,7 +407,13 @@ defmodule WhoNeedHelpWeb.RequestLive.Index do
end end
end end
defp normalize_query_params(filters, viewport, view_mode, discovery_mode) do defp normalize_query_params(
filters,
viewport,
view_mode,
discovery_mode,
map_update_mode
) do
filters filters
|> Map.reject(fn {_key, value} -> value == "" end) |> Map.reject(fn {_key, value} -> value == "" end)
|> Map.put("view", view_mode) |> Map.put("view", view_mode)
@ -382,6 +426,11 @@ defmodule WhoNeedHelpWeb.RequestLive.Index do
else: %{} else: %{}
) )
) )
|> then(fn params ->
if map_update_mode == "auto",
do: Map.put(params, "map_update", "auto"),
else: params
end)
end end
defp request_path(socket, overrides) do defp request_path(socket, overrides) do
@ -389,11 +438,39 @@ defmodule WhoNeedHelpWeb.RequestLive.Index do
viewport = Keyword.get(overrides, :viewport, socket.assigns.viewport) viewport = Keyword.get(overrides, :viewport, socket.assigns.viewport)
view_mode = Keyword.get(overrides, :view_mode, socket.assigns.view_mode) view_mode = Keyword.get(overrides, :view_mode, socket.assigns.view_mode)
discovery_mode = Keyword.get(overrides, :discovery_mode, socket.assigns.discovery_mode) discovery_mode = Keyword.get(overrides, :discovery_mode, socket.assigns.discovery_mode)
params = normalize_query_params(filters, viewport, view_mode, discovery_mode)
map_update_mode =
Keyword.get(overrides, :map_update_mode, socket.assigns.map_update_mode)
params =
normalize_query_params(
filters,
viewport,
view_mode,
discovery_mode,
map_update_mode
)
~p"/requests?#{params}" ~p"/requests?#{params}"
end end
defp schedule_map_update(socket, viewport) do
socket = cancel_map_update_timer(socket)
timer = Process.send_after(self(), {:apply_map_viewport, viewport}, @map_update_delay_ms)
socket
|> assign(:pending_viewport, viewport)
|> assign(:map_update_timer, timer)
end
defp cancel_map_update_timer(socket) do
if socket.assigns.map_update_timer do
Process.cancel_timer(socket.assigns.map_update_timer)
end
assign(socket, :map_update_timer, nil)
end
defp urgency_label(:now), do: gettext("Now") defp urgency_label(:now), do: gettext("Now")
defp urgency_label("now"), do: gettext("Now") defp urgency_label("now"), do: gettext("Now")
defp urgency_label(:today), do: gettext("Today") defp urgency_label(:today), do: gettext("Today")
@ -530,29 +607,66 @@ defmodule WhoNeedHelpWeb.RequestLive.Index do
class="request-discovery mt-6" class="request-discovery mt-6"
> >
<div class="request-discovery-toolbar"> <div class="request-discovery-toolbar">
<div :if={@view_mode != "list" && @discovery_loading}> <div :if={@discovery_loading}>
<strong>{gettext("Loading results…")}</strong> <strong>{gettext("Loading results…")}</strong>
</div> </div>
<div :if={@view_mode != "list" && !@discovery_loading}> <div :if={!@discovery_loading} class="min-w-0" aria-live="polite">
<strong> <strong>
{ngettext( {ngettext(
"%{count} request in this map area", "%{count} request in the selected map area",
"%{count} requests in this map area", "%{count} requests in the selected map area",
@map_result_count, if(@view_mode == "map", do: @map_result_count, else: @list_result_count),
count: @map_result_count count: if(@view_mode == "map", do: @map_result_count, else: @list_result_count)
)} )}
</strong> </strong>
<span class="ml-1 text-sm text-base-content/60">
{gettext("of %{count} matching requests with map locations", <span :if={@view_mode != "map"} class="ml-1 text-sm text-base-content/60">
count: @map_total_count {gettext("Showing %{shown} of %{count} in the list.",
shown: length(@requests),
count: @list_result_count
)} )}
</span> </span>
<p class="text-sm text-base-content/60">
{gettext("Move the map, then search the newly visible area.")} <p
:if={@pending_viewport && @map_update_mode == "manual"}
class="mt-1 text-sm font-medium text-warning"
>
{gettext("Map moved. Results still show the previous area.")}
</p>
<p
:if={@pending_viewport && @map_update_mode == "auto"}
class="mt-1 text-sm text-base-content/60"
>
{gettext("Updating results for the visible map area…")}
</p>
<p
:if={!@pending_viewport && @map_update_mode == "auto"}
class="mt-1 text-sm text-base-content/60"
>
{gettext("Results update automatically after you stop moving the map.")}
</p>
<p
:if={!@pending_viewport && @map_update_mode == "manual"}
class="mt-1 text-sm text-base-content/60"
>
{gettext("Move or zoom the map, then choose “Show requests in this area”.")}
</p> </p>
</div> </div>
<div class="request-discovery-controls">
<label class="request-map-update-control">
<input
id="request-map-auto-update"
type="checkbox"
checked={@map_update_mode == "auto"}
phx-click="set-map-update-mode"
phx-value-mode={if(@map_update_mode == "auto", do: "manual", else: "auto")}
class="toggle toggle-sm toggle-success"
/>
<span>{gettext("Update results as map moves")}</span>
</label>
<div class="request-view-switcher" role="group" aria-label={gettext("Results layout")}> <div class="request-view-switcher" role="group" aria-label={gettext("Results layout")}>
<button <button
type="button" type="button"
@ -586,6 +700,7 @@ defmodule WhoNeedHelpWeb.RequestLive.Index do
</button> </button>
</div> </div>
</div> </div>
</div>
<div class="request-discovery-content"> <div class="request-discovery-content">
<div id="request-results-list" class="request-results-list space-y-4"> <div id="request-results-list" class="request-results-list space-y-4">
@ -709,14 +824,14 @@ defmodule WhoNeedHelpWeb.RequestLive.Index do
class="aid-map request-discovery-map" class="aid-map request-discovery-map"
/> />
<button <button
:if={@pending_viewport} :if={@pending_viewport && @map_update_mode == "manual"}
id="search-map-area" id="search-map-area"
type="button" type="button"
phx-click="search-map-area" phx-click="search-map-area"
class="btn btn-primary request-map-search-button" class="btn btn-primary request-map-search-button"
> >
<.icon name="hero-magnifying-glass" class="size-4" /> <.icon name="hero-magnifying-glass" class="size-4" />
{gettext("Search this area")} {gettext("Show requests in this area")}
</button> </button>
</div> </div>

View File

@ -179,7 +179,7 @@ msgid "Active"
msgstr "" msgstr ""
#: lib/who_need_help_web/components/layouts.ex:231 #: lib/who_need_help_web/components/layouts.ex:231
#: lib/who_need_help_web/live/activity_live/index.ex:37 #: lib/who_need_help_web/live/activity_live/index.ex:41
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Activities" msgid "Activities"
msgstr "" msgstr ""
@ -215,7 +215,7 @@ msgstr ""
msgid "Activity restored." msgid "Activity restored."
msgstr "" msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:491 #: lib/who_need_help_web/live/activity_live/index.ex:548
#: lib/who_need_help_web/live/activity_live/new.ex:204 #: lib/who_need_help_web/live/activity_live/new.ex:204
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Activity type" msgid "Activity type"
@ -232,12 +232,12 @@ msgstr ""
msgid "Administrator" msgid "Administrator"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:493 #: lib/who_need_help_web/live/activity_live/index.ex:550
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "All activities" msgid "All activities"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/request_live/index.ex:493 #: lib/who_need_help_web/live/request_live/index.ex:570
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "All categories" msgid "All categories"
msgstr "" msgstr ""
@ -252,7 +252,7 @@ msgstr ""
msgid "Another helper already accepted this request." msgid "Another helper already accepted this request."
msgstr "" msgstr ""
#: lib/who_need_help_web/live/request_live/index.ex:508 #: lib/who_need_help_web/live/request_live/index.ex:585
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Any urgency" msgid "Any urgency"
msgstr "" msgstr ""
@ -367,16 +367,16 @@ msgstr ""
msgid "Cancel request" msgid "Cancel request"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:422 #: lib/who_need_help_web/live/activity_live/index.ex:479
#: lib/who_need_help_web/live/activity_live/show.ex:344 #: lib/who_need_help_web/live/activity_live/show.ex:344
#: lib/who_need_help_web/live/request_live/index.ex:413 #: lib/who_need_help_web/live/request_live/index.ex:490
#: lib/who_need_help_web/live/request_live/index.ex:414 #: lib/who_need_help_web/live/request_live/index.ex:491
#: lib/who_need_help_web/live/request_live/show.ex:956 #: lib/who_need_help_web/live/request_live/show.ex:956
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Cancelled" msgid "Cancelled"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/request_live/index.ex:491 #: lib/who_need_help_web/live/request_live/index.ex:568
#: lib/who_need_help_web/live/request_live/new.ex:302 #: lib/who_need_help_web/live/request_live/new.ex:302
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Category" msgid "Category"
@ -459,7 +459,7 @@ msgstr ""
msgid "Coffee and conversation" msgid "Coffee and conversation"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:436 #: lib/who_need_help_web/live/activity_live/index.ex:493
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Coffee, cinema, walks, and hikes are separate from urgent help and never affect helper ratings." msgid "Coffee, cinema, walks, and hikes are separate from urgent help and never affect helper ratings."
msgstr "" msgstr ""
@ -474,19 +474,19 @@ msgstr ""
msgid "Community helpers" msgid "Community helpers"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:647 #: lib/who_need_help_web/live/activity_live/index.ex:744
#: lib/who_need_help_web/live/activity_live/show.ex:403 #: lib/who_need_help_web/live/activity_live/show.ex:403
#: lib/who_need_help_web/live/activity_live/show.ex:639 #: lib/who_need_help_web/live/activity_live/show.ex:639
#: lib/who_need_help_web/live/activity_live/show.ex:698 #: lib/who_need_help_web/live/activity_live/show.ex:698
#: lib/who_need_help_web/live/request_live/index.ex:656 #: lib/who_need_help_web/live/request_live/index.ex:771
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Community member" msgid "Community member"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:421 #: lib/who_need_help_web/live/activity_live/index.ex:478
#: lib/who_need_help_web/live/activity_live/show.ex:343 #: lib/who_need_help_web/live/activity_live/show.ex:343
#: lib/who_need_help_web/live/request_live/index.ex:411 #: lib/who_need_help_web/live/request_live/index.ex:488
#: lib/who_need_help_web/live/request_live/index.ex:412 #: lib/who_need_help_web/live/request_live/index.ex:489
#: lib/who_need_help_web/live/request_live/show.ex:955 #: lib/who_need_help_web/live/request_live/show.ex:955
#: lib/who_need_help_web/live/request_live/show.ex:974 #: lib/who_need_help_web/live/request_live/show.ex:974
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -537,13 +537,13 @@ msgstr ""
msgid "Confirming..." msgid "Confirming..."
msgstr "" msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:442 #: lib/who_need_help_web/live/activity_live/index.ex:499
#: lib/who_need_help_web/live/activity_live/new.ex:12 #: lib/who_need_help_web/live/activity_live/new.ex:12
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Create activity" msgid "Create activity"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:722 #: lib/who_need_help_web/live/activity_live/index.ex:819
#: lib/who_need_help_web/live/activity_live/new.ex:180 #: lib/who_need_help_web/live/activity_live/new.ex:180
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Create an activity" msgid "Create an activity"
@ -554,7 +554,7 @@ msgstr ""
msgid "Create category" msgid "Create category"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/request_live/index.ex:442 #: lib/who_need_help_web/live/request_live/index.ex:519
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Create urgent request" msgid "Create urgent request"
msgstr "" msgstr ""
@ -704,7 +704,7 @@ msgstr ""
msgid "Explain what is already arranged and what the volunteer needs to do." msgid "Explain what is already arranged and what the volunteer needs to do."
msgstr "" msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:433 #: lib/who_need_help_web/live/activity_live/index.ex:490
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Find people to join" msgid "Find people to join"
msgstr "" msgstr ""
@ -865,8 +865,8 @@ msgstr ""
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." 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 ""
#: lib/who_need_help_web/live/request_live/index.ex:409 #: lib/who_need_help_web/live/request_live/index.ex:486
#: lib/who_need_help_web/live/request_live/index.ex:410 #: lib/who_need_help_web/live/request_live/index.ex:487
#: lib/who_need_help_web/live/request_live/show.ex:954 #: lib/who_need_help_web/live/request_live/show.ex:954
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "In progress" msgid "In progress"
@ -989,8 +989,8 @@ msgstr ""
msgid "Match and coordinate" msgid "Match and coordinate"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/request_live/index.ex:407 #: lib/who_need_help_web/live/request_live/index.ex:484
#: lib/who_need_help_web/live/request_live/index.ex:408 #: lib/who_need_help_web/live/request_live/index.ex:485
#: lib/who_need_help_web/live/request_live/show.ex:952 #: lib/who_need_help_web/live/request_live/show.ex:952
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Matched" msgid "Matched"
@ -1016,7 +1016,7 @@ msgstr ""
msgid "Medicine requests" msgid "Medicine requests"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:449 #: lib/who_need_help_web/live/activity_live/index.ex:506
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Meet in public first, keep exact details inside the approved group, and leave or report anything that feels unsafe." msgid "Meet in public first, keep exact details inside the approved group, and leave or report anything that feels unsafe."
msgstr "" msgstr ""
@ -1067,12 +1067,12 @@ msgstr ""
msgid "Moderator access is required." msgid "Moderator access is required."
msgstr "" msgstr ""
#: lib/who_need_help_web/live/request_live/index.ex:433 #: lib/who_need_help_web/live/request_live/index.ex:510
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "NEARBY MUTUAL AID" msgid "NEARBY MUTUAL AID"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/request_live/index.ex:47 #: lib/who_need_help_web/live/request_live/index.ex:51
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Nearby help" msgid "Nearby help"
msgstr "" msgstr ""
@ -1153,9 +1153,9 @@ msgid "Not for emergencies"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/notification_live.ex:748 #: lib/who_need_help_web/live/notification_live.ex:748
#: lib/who_need_help_web/live/request_live/index.ex:397 #: lib/who_need_help_web/live/request_live/index.ex:474
#: lib/who_need_help_web/live/request_live/index.ex:398 #: lib/who_need_help_web/live/request_live/index.ex:475
#: lib/who_need_help_web/live/request_live/index.ex:509 #: lib/who_need_help_web/live/request_live/index.ex:586
#: lib/who_need_help_web/live/request_live/new.ex:449 #: lib/who_need_help_web/live/request_live/new.ex:449
#: lib/who_need_help_web/live/request_live/show.ex:943 #: lib/who_need_help_web/live/request_live/show.ex:943
#: lib/who_need_help_web/live/request_live/show.ex:944 #: lib/who_need_help_web/live/request_live/show.ex:944
@ -1163,7 +1163,7 @@ msgstr ""
msgid "Now" msgid "Now"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:431 #: lib/who_need_help_web/live/activity_live/index.ex:488
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "OPTIONAL SOCIAL PLANS" msgid "OPTIONAL SOCIAL PLANS"
msgstr "" msgstr ""
@ -1181,12 +1181,12 @@ msgstr ""
#: lib/who_need_help/notifications/text.ex:140 #: lib/who_need_help/notifications/text.ex:140
#: lib/who_need_help_web/controllers/content_removal_html.ex:21 #: lib/who_need_help_web/controllers/content_removal_html.ex:21
#: lib/who_need_help_web/controllers/support_html.ex:16 #: lib/who_need_help_web/controllers/support_html.ex:16
#: lib/who_need_help_web/live/activity_live/index.ex:420 #: lib/who_need_help_web/live/activity_live/index.ex:477
#: lib/who_need_help_web/live/activity_live/show.ex:342 #: lib/who_need_help_web/live/activity_live/show.ex:342
#: lib/who_need_help_web/live/moderation_live.ex:258 #: lib/who_need_help_web/live/moderation_live.ex:258
#: lib/who_need_help_web/live/report_live.ex:104 #: lib/who_need_help_web/live/report_live.ex:104
#: lib/who_need_help_web/live/request_live/index.ex:405 #: lib/who_need_help_web/live/request_live/index.ex:482
#: lib/who_need_help_web/live/request_live/index.ex:406 #: lib/who_need_help_web/live/request_live/index.ex:483
#: lib/who_need_help_web/live/request_live/show.ex:951 #: lib/who_need_help_web/live/request_live/show.ex:951
#: lib/who_need_help_web/live/support_operations_live.ex:237 #: lib/who_need_help_web/live/support_operations_live.ex:237
#: lib/who_need_help_web/live/support_operations_live.ex:438 #: lib/who_need_help_web/live/support_operations_live.ex:438
@ -1639,9 +1639,9 @@ msgid "Save profile"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/notification_live.ex:750 #: lib/who_need_help_web/live/notification_live.ex:750
#: lib/who_need_help_web/live/request_live/index.ex:401 #: lib/who_need_help_web/live/request_live/index.ex:478
#: lib/who_need_help_web/live/request_live/index.ex:402 #: lib/who_need_help_web/live/request_live/index.ex:479
#: lib/who_need_help_web/live/request_live/index.ex:511 #: lib/who_need_help_web/live/request_live/index.ex:588
#: lib/who_need_help_web/live/request_live/new.ex:451 #: lib/who_need_help_web/live/request_live/new.ex:451
#: lib/who_need_help_web/live/request_live/show.ex:947 #: lib/who_need_help_web/live/request_live/show.ex:947
#: lib/who_need_help_web/live/request_live/show.ex:948 #: lib/who_need_help_web/live/request_live/show.ex:948
@ -1904,7 +1904,7 @@ msgstr ""
msgid "This interaction is blocked." msgid "This interaction is blocked."
msgstr "" msgstr ""
#: lib/who_need_help_web/live/request_live/index.ex:449 #: lib/who_need_help_web/live/request_live/index.ex:526
#: lib/who_need_help_web/live/request_live/show.ex:1022 #: lib/who_need_help_web/live/request_live/show.ex:1022
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "This is not an emergency service. Contact local emergency services for immediate danger." msgid "This is not an emergency service. Contact local emergency services for immediate danger."
@ -1952,9 +1952,9 @@ msgid "To see sent emails, visit"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/notification_live.ex:749 #: lib/who_need_help_web/live/notification_live.ex:749
#: lib/who_need_help_web/live/request_live/index.ex:399 #: lib/who_need_help_web/live/request_live/index.ex:476
#: lib/who_need_help_web/live/request_live/index.ex:400 #: lib/who_need_help_web/live/request_live/index.ex:477
#: lib/who_need_help_web/live/request_live/index.ex:510 #: lib/who_need_help_web/live/request_live/index.ex:587
#: lib/who_need_help_web/live/request_live/new.ex:450 #: lib/who_need_help_web/live/request_live/new.ex:450
#: lib/who_need_help_web/live/request_live/show.ex:945 #: lib/who_need_help_web/live/request_live/show.ex:945
#: lib/who_need_help_web/live/request_live/show.ex:946 #: lib/who_need_help_web/live/request_live/show.ex:946
@ -2029,7 +2029,7 @@ msgid "Update email instructions"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/notification_live.ex:743 #: lib/who_need_help_web/live/notification_live.ex:743
#: lib/who_need_help_web/live/request_live/index.ex:506 #: lib/who_need_help_web/live/request_live/index.ex:583
#: lib/who_need_help_web/live/request_live/new.ex:447 #: lib/who_need_help_web/live/request_live/new.ex:447
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Urgency" msgid "Urgency"
@ -2174,7 +2174,7 @@ msgstr ""
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." 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 ""
#: lib/who_need_help_web/live/request_live/index.ex:434 #: lib/who_need_help_web/live/request_live/index.ex:511
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Who needs help?" msgid "Who needs help?"
msgstr "" msgstr ""
@ -2292,7 +2292,7 @@ msgstr ""
msgid "Your review is revealed only after both participants submit." msgid "Your review is revealed only after both participants submit."
msgstr "" msgstr ""
#: lib/who_need_help_web/live/request_live/index.ex:724 #: lib/who_need_help_web/live/request_live/index.ex:839
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Your trust summary" msgid "Your trust summary"
msgstr "" msgstr ""
@ -2313,17 +2313,17 @@ msgstr ""
msgid "before confirming." msgid "before confirming."
msgstr "" msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:646 #: lib/who_need_help_web/live/activity_live/index.ex:743
#: lib/who_need_help_web/live/category_proposal_live.ex:252 #: lib/who_need_help_web/live/category_proposal_live.ex:252
#: lib/who_need_help_web/live/moderation_live.ex:372 #: lib/who_need_help_web/live/moderation_live.ex:372
#: lib/who_need_help_web/live/request_live/index.ex:655 #: lib/who_need_help_web/live/request_live/index.ex:770
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "by %{name}" msgid "by %{name}"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/profile_live.ex:190 #: lib/who_need_help_web/live/profile_live.ex:190
#: lib/who_need_help_web/live/public_profile_live.ex:133 #: lib/who_need_help_web/live/public_profile_live.ex:133
#: lib/who_need_help_web/live/request_live/index.ex:728 #: lib/who_need_help_web/live/request_live/index.ex:843
#: lib/who_need_help_web/live/request_live/show.ex:1374 #: lib/who_need_help_web/live/request_live/show.ex:1374
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "completed" msgid "completed"
@ -2359,7 +2359,7 @@ msgstr ""
msgid "participants only" msgid "participants only"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/request_live/index.ex:732 #: lib/who_need_help_web/live/request_live/index.ex:847
#: lib/who_need_help_web/live/request_live/show.ex:1378 #: lib/who_need_help_web/live/request_live/show.ex:1378
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "people" msgid "people"
@ -2419,7 +2419,7 @@ msgstr ""
#: lib/who_need_help_web/live/activity_live/show.ex:719 #: lib/who_need_help_web/live/activity_live/show.ex:719
#: lib/who_need_help_web/live/profile_live.ex:285 #: lib/who_need_help_web/live/profile_live.ex:285
#: lib/who_need_help_web/live/public_profile_live.ex:98 #: lib/who_need_help_web/live/public_profile_live.ex:98
#: lib/who_need_help_web/live/request_live/index.ex:736 #: lib/who_need_help_web/live/request_live/index.ex:851
#: lib/who_need_help_web/live/request_live/show.ex:1093 #: lib/who_need_help_web/live/request_live/show.ex:1093
#: lib/who_need_help_web/live/request_live/show.ex:1476 #: lib/who_need_help_web/live/request_live/show.ex:1476
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -2452,8 +2452,8 @@ msgstr ""
msgid "Approved" msgid "Approved"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/request_live/index.ex:415 #: lib/who_need_help_web/live/request_live/index.ex:492
#: lib/who_need_help_web/live/request_live/index.ex:416 #: lib/who_need_help_web/live/request_live/index.ex:493
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Expired" msgid "Expired"
msgstr "" msgstr ""
@ -2506,8 +2506,8 @@ msgstr ""
msgid "Load earlier messages" msgid "Load earlier messages"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:658 #: lib/who_need_help_web/live/activity_live/index.ex:755
#: lib/who_need_help_web/live/activity_live/index.ex:751 #: lib/who_need_help_web/live/activity_live/index.ex:848
#: lib/who_need_help_web/live/category_proposal_live.ex:284 #: lib/who_need_help_web/live/category_proposal_live.ex:284
#: lib/who_need_help_web/live/leaderboard_live.ex:91 #: lib/who_need_help_web/live/leaderboard_live.ex:91
#: lib/who_need_help_web/live/moderation_live.ex:465 #: lib/who_need_help_web/live/moderation_live.ex:465
@ -2519,7 +2519,7 @@ msgstr ""
#: lib/who_need_help_web/live/profile_live.ex:363 #: lib/who_need_help_web/live/profile_live.ex:363
#: lib/who_need_help_web/live/public_profile_live.ex:178 #: lib/who_need_help_web/live/public_profile_live.ex:178
#: lib/who_need_help_web/live/report_live.ex:98 #: lib/who_need_help_web/live/report_live.ex:98
#: lib/who_need_help_web/live/request_live/index.ex:805 #: lib/who_need_help_web/live/request_live/index.ex:920
#: lib/who_need_help_web/live/support_operations_live.ex:306 #: lib/who_need_help_web/live/support_operations_live.ex:306
#: lib/who_need_help_web/live/support_operations_live.ex:505 #: lib/who_need_help_web/live/support_operations_live.ex:505
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -2527,7 +2527,7 @@ msgid "Load more"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/activity_live/show.ex:544 #: lib/who_need_help_web/live/activity_live/show.ex:544
#: lib/who_need_help_web/live/request_live/index.ex:701 #: lib/who_need_help_web/live/request_live/index.ex:816
#: lib/who_need_help_web/live/request_live/show.ex:1275 #: lib/who_need_help_web/live/request_live/show.ex:1275
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "The map is unavailable in this browser. Request details remain usable." msgid "The map is unavailable in this browser. Request details remain usable."
@ -4516,44 +4516,37 @@ msgstr ""
msgid "Exact point selected. Drag the red pin or click the map to move it." msgid "Exact point selected. Drag the red pin or click the map to move it."
msgstr "" msgstr ""
#: lib/who_need_help_web/live/request_live/index.ex:539 #: lib/who_need_help_web/live/activity_live/index.ex:559
#, elixir-autogen, elixir-format #: lib/who_need_help_web/live/request_live/index.ex:593
msgid "%{count} request in this map area"
msgid_plural "%{count} requests in this map area"
msgstr[0] ""
msgstr[1] ""
#: lib/who_need_help_web/live/activity_live/index.ex:502
#: lib/who_need_help_web/live/request_live/index.ex:516
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Area or city" msgid "Area or city"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:594 #: lib/who_need_help_web/live/activity_live/index.ex:689
#: lib/who_need_help_web/live/request_live/index.ex:606 #: lib/who_need_help_web/live/request_live/index.ex:721
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Choose an area on the map" msgid "Choose an area on the map"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/request_live/index.ex:436 #: lib/who_need_help_web/live/request_live/index.ex:513
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Explore privacy-friendly areas and public exact meeting points chosen by requesters." msgid "Explore privacy-friendly areas and public exact meeting points chosen by requesters."
msgstr "" msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:553 #: lib/who_need_help_web/live/activity_live/index.ex:647
#: lib/who_need_help_web/live/request_live/index.ex:565 #: lib/who_need_help_web/live/request_live/index.ex:679
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "List" msgid "List"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/request_live/index.ex:677 #: lib/who_need_help_web/live/request_live/index.ex:792
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Load more in this area" msgid "Load more in this area"
msgstr "" msgstr ""
#: lib/who_need_help_web/components/layouts/root.html.heex:5 #: lib/who_need_help_web/components/layouts/root.html.heex:5
#: lib/who_need_help_web/live/activity_live/index.ex:573 #: lib/who_need_help_web/live/activity_live/index.ex:667
#: lib/who_need_help_web/live/request_live/index.ex:585 #: lib/who_need_help_web/live/request_live/index.ex:699
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Map" msgid "Map"
msgstr "" msgstr ""
@ -4563,77 +4556,65 @@ msgstr ""
msgid "Map preview" msgid "Map preview"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:606 #: lib/who_need_help_web/live/activity_live/index.ex:701
#: lib/who_need_help_web/live/request_live/index.ex:618 #: lib/who_need_help_web/live/request_live/index.ex:733
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Move or zoom the map to search somewhere else." msgid "Move or zoom the map to search somewhere else."
msgstr "" msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:540 #: lib/who_need_help_web/live/request_live/index.ex:731
#: lib/who_need_help_web/live/request_live/index.ex:552
#, elixir-autogen, elixir-format
msgid "Move the map, then search the newly visible area."
msgstr ""
#: lib/who_need_help_web/live/request_live/index.ex:616
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No open requests in this area" msgid "No open requests in this area"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/request_live/index.ex:608 #: lib/who_need_help_web/live/request_live/index.ex:723
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Only requests from the selected map area will be loaded." msgid "Only requests from the selected map area will be loaded."
msgstr "" msgstr ""
#: lib/who_need_help_web/components/layouts/root.html.heex:8 #: lib/who_need_help_web/components/layouts/root.html.heex:8
#: lib/who_need_help_web/live/request_live/index.ex:704 #: lib/who_need_help_web/live/request_live/index.ex:819
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Open request" msgid "Open request"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:503 #: lib/who_need_help_web/live/activity_live/index.ex:560
#: lib/who_need_help_web/live/request_live/index.ex:517 #: lib/who_need_help_web/live/request_live/index.ex:594
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Optional text search" msgid "Optional text search"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/request_live/index.ex:683 #: lib/who_need_help_web/live/request_live/index.ex:798
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Requests without map coordinates appear only when their public area description matches the text search." msgid "Requests without map coordinates appear only when their public area description matches the text search."
msgstr "" msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:544 #: lib/who_need_help_web/live/activity_live/index.ex:638
#: lib/who_need_help_web/live/request_live/index.ex:556 #: lib/who_need_help_web/live/request_live/index.ex:670
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Results layout" msgid "Results layout"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:693
#: lib/who_need_help_web/live/request_live/index.ex:719
#, elixir-autogen, elixir-format
msgid "Search this area"
msgstr ""
#: lib/who_need_help_web/controllers/page_html/home.html.heex:171 #: lib/who_need_help_web/controllers/page_html/home.html.heex:171
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Static preview" msgid "Static preview"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:563 #: lib/who_need_help_web/live/activity_live/index.ex:657
#: lib/who_need_help_web/live/request_live/index.ex:575 #: lib/who_need_help_web/live/request_live/index.ex:689
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Together" msgid "Together"
msgstr "" msgstr ""
#: lib/who_need_help_web/components/layouts/root.html.heex:6 #: lib/who_need_help_web/components/layouts/root.html.heex:6
#: lib/who_need_help_web/controllers/page_html/home.html.heex:160 #: lib/who_need_help_web/controllers/page_html/home.html.heex:160
#: lib/who_need_help_web/live/activity_live/index.ex:681 #: lib/who_need_help_web/live/activity_live/index.ex:778
#: lib/who_need_help_web/live/activity_live/new.ex:355 #: lib/who_need_help_web/live/activity_live/new.ex:355
#: lib/who_need_help_web/live/activity_live/new.ex:414 #: lib/who_need_help_web/live/activity_live/new.ex:414
#: lib/who_need_help_web/live/activity_live/show.ex:546 #: lib/who_need_help_web/live/activity_live/show.ex:546
#: lib/who_need_help_web/live/notification_live.ex:602 #: lib/who_need_help_web/live/notification_live.ex:602
#: lib/who_need_help_web/live/notification_live.ex:621 #: lib/who_need_help_web/live/notification_live.ex:621
#: lib/who_need_help_web/live/request_live/index.ex:703 #: lib/who_need_help_web/live/request_live/index.ex:818
#: lib/who_need_help_web/live/request_live/new.ex:485 #: lib/who_need_help_web/live/request_live/new.ex:485
#: lib/who_need_help_web/live/request_live/new.ex:563 #: lib/who_need_help_web/live/request_live/new.ex:563
#: lib/who_need_help_web/live/request_live/show.ex:1277 #: lib/who_need_help_web/live/request_live/show.ex:1277
@ -5022,7 +5003,7 @@ msgid "Nearby alert deleted."
msgstr "" msgstr ""
#: lib/who_need_help_web/live/notification_live.ex:456 #: lib/who_need_help_web/live/notification_live.ex:456
#: lib/who_need_help_web/live/request_live/index.ex:462 #: lib/who_need_help_web/live/request_live/index.ex:539
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Nearby requests" msgid "Nearby requests"
msgstr "" msgstr ""
@ -5362,7 +5343,7 @@ msgid "WebGL is unavailable in this browser, so the full map cannot start. Selec
msgstr "" msgstr ""
#: lib/who_need_help_web/components/layouts/root.html.heex:7 #: lib/who_need_help_web/components/layouts/root.html.heex:7
#: lib/who_need_help_web/live/activity_live/index.ex:682 #: lib/who_need_help_web/live/activity_live/index.ex:779
#: lib/who_need_help_web/live/activity_live/show.ex:547 #: lib/who_need_help_web/live/activity_live/show.ex:547
#: lib/who_need_help_web/live/request_live/show.ex:1278 #: lib/who_need_help_web/live/request_live/show.ex:1278
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -5927,7 +5908,7 @@ msgstr ""
msgid "Delivery settings" msgid "Delivery settings"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/request_live/index.ex:660 #: lib/who_need_help_web/live/request_live/index.ex:775
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Expires" msgid "Expires"
msgstr "" msgstr ""
@ -5947,29 +5928,22 @@ msgstr ""
msgid "Notification sections" msgid "Notification sections"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:674 #: lib/who_need_help_web/live/activity_live/index.ex:771
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "%{count} activities" msgid "%{count} activities"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:527 #: lib/who_need_help_web/live/request_live/index.ex:820
#, elixir-autogen, elixir-format
msgid "%{count} activity in this map area"
msgid_plural "%{count} activities in this map area"
msgstr[0] ""
msgstr[1] ""
#: lib/who_need_help_web/live/request_live/index.ex:705
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "%{count} requests" msgid "%{count} requests"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:717 #: lib/who_need_help_web/live/activity_live/index.ex:814
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Activities you create or ask to join will appear here. Leaving removes an activity from this list." msgid "Activities you create or ask to join will appear here. Leaving removes an activity from this list."
msgstr "" msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:457 #: lib/who_need_help_web/live/activity_live/index.ex:514
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Activity views" msgid "Activity views"
msgstr "" msgstr ""
@ -5984,12 +5958,12 @@ msgstr ""
msgid "Confirm the safety guidance before asking nearby people for help." msgid "Confirm the safety guidance before asking nearby people for help."
msgstr "" msgstr ""
#: lib/who_need_help_web/live/request_live/index.ex:753 #: lib/who_need_help_web/live/request_live/index.ex:868
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Create request" msgid "Create request"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/request_live/index.ex:776 #: lib/who_need_help_web/live/request_live/index.ex:891
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Create your first request" msgid "Create your first request"
msgstr "" msgstr ""
@ -6004,43 +5978,43 @@ msgstr ""
msgid "Location" msgid "Location"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:463 #: lib/who_need_help_web/live/activity_live/index.ex:520
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "My activities" msgid "My activities"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/request_live/index.ex:463 #: lib/who_need_help_web/live/request_live/index.ex:540
#: lib/who_need_help_web/live/request_live/index.ex:747 #: lib/who_need_help_web/live/request_live/index.ex:862
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "My requests" msgid "My requests"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:462 #: lib/who_need_help_web/live/activity_live/index.ex:519
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Nearby activities" msgid "Nearby activities"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:715 #: lib/who_need_help_web/live/activity_live/index.ex:812
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No activities yet" msgid "No activities yet"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:604 #: lib/who_need_help_web/live/activity_live/index.ex:699
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No open activities in this area" msgid "No open activities in this area"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/request_live/index.ex:771 #: lib/who_need_help_web/live/request_live/index.ex:886
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No requests yet" msgid "No requests yet"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:596 #: lib/who_need_help_web/live/activity_live/index.ex:691
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Only activities from the selected map area will be loaded." msgid "Only activities from the selected map area will be loaded."
msgstr "" msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:673 #: lib/who_need_help_web/live/activity_live/index.ex:770
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Open activity" msgid "Open activity"
msgstr "" msgstr ""
@ -6050,12 +6024,12 @@ msgstr ""
msgid "Request form steps" msgid "Request form steps"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/request_live/index.ex:457 #: lib/who_need_help_web/live/request_live/index.ex:534
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Request views" msgid "Request views"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/request_live/index.ex:773 #: lib/who_need_help_web/live/request_live/index.ex:888
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Requests you publish or accept will appear here." msgid "Requests you publish or accept will appear here."
msgstr "" msgstr ""
@ -6080,7 +6054,7 @@ msgstr ""
msgid "Share only as much location detail as helpers need." msgid "Share only as much location detail as helpers need."
msgstr "" msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:679 #: lib/who_need_help_web/live/activity_live/index.ex:776
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "The map is unavailable in this browser. Activity details remain usable." msgid "The map is unavailable in this browser. Activity details remain usable."
msgstr "" msgstr ""
@ -6090,7 +6064,7 @@ msgstr ""
msgid "Timing" msgid "Timing"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/request_live/index.ex:749 #: lib/who_need_help_web/live/request_live/index.ex:864
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Track requests you created and requests you accepted as a helper." msgid "Track requests you created and requests you accepted as a helper."
msgstr "" msgstr ""
@ -6751,32 +6725,86 @@ msgstr ""
msgid "Choose the meeting point on the map or use your current location." msgid "Choose the meeting point on the map or use your current location."
msgstr "" msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:522 #: lib/who_need_help_web/live/activity_live/index.ex:579
#: lib/who_need_help_web/live/activity_live/index.ex:586 #: lib/who_need_help_web/live/activity_live/index.ex:681
#: lib/who_need_help_web/live/activity_live/index.ex:707 #: lib/who_need_help_web/live/activity_live/index.ex:804
#: lib/who_need_help_web/live/request_live/index.ex:534 #: lib/who_need_help_web/live/request_live/index.ex:611
#: lib/who_need_help_web/live/request_live/index.ex:598 #: lib/who_need_help_web/live/request_live/index.ex:713
#: lib/who_need_help_web/live/request_live/index.ex:763 #: lib/who_need_help_web/live/request_live/index.ex:878
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Loading results…" msgid "Loading results…"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:676 #: lib/who_need_help_web/live/activity_live/index.ex:773
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Maximum zoom reached. Matching activities are listed beside the map." msgid "Maximum zoom reached. Matching activities are listed beside the map."
msgstr "" msgstr ""
#: lib/who_need_help_web/live/request_live/index.ex:707 #: lib/who_need_help_web/live/request_live/index.ex:822
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Maximum zoom reached. Matching requests are listed beside the map." msgid "Maximum zoom reached. Matching requests are listed beside the map."
msgstr "" msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:535 #: lib/who_need_help_web/live/activity_live/index.ex:584
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "of %{count} matching activities with map locations" msgid "%{count} activity in the selected map area"
msgid_plural "%{count} activities in the selected map area"
msgstr[0] ""
msgstr[1] ""
#: lib/who_need_help_web/live/request_live/index.ex:616
#, elixir-autogen, elixir-format
msgid "%{count} request in the selected map area"
msgid_plural "%{count} requests in the selected map area"
msgstr[0] ""
msgstr[1] ""
#: lib/who_need_help_web/live/activity_live/index.ex:603
#: lib/who_need_help_web/live/request_live/index.ex:635
#, elixir-autogen, elixir-format
msgid "Map moved. Results still show the previous area."
msgstr "" msgstr ""
#: lib/who_need_help_web/live/request_live/index.ex:547 #: lib/who_need_help_web/live/activity_live/index.ex:621
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "of %{count} matching requests with map locations" msgid "Move or zoom the map, then choose “Show activities in this area”."
msgstr ""
#: lib/who_need_help_web/live/request_live/index.ex:653
#, elixir-autogen, elixir-format
msgid "Move or zoom the map, then choose “Show requests in this area”."
msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:615
#: lib/who_need_help_web/live/request_live/index.ex:647
#, elixir-autogen, elixir-format
msgid "Results update automatically after you stop moving the map."
msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:790
#, elixir-autogen, elixir-format
msgid "Show activities in this area"
msgstr ""
#: lib/who_need_help_web/live/request_live/index.ex:834
#, elixir-autogen, elixir-format
msgid "Show requests in this area"
msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:593
#: lib/who_need_help_web/live/request_live/index.ex:625
#, elixir-autogen, elixir-format
msgid "Showing %{shown} of %{count} in the list."
msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:635
#: lib/who_need_help_web/live/request_live/index.ex:667
#, elixir-autogen, elixir-format
msgid "Update results as map moves"
msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:609
#: lib/who_need_help_web/live/request_live/index.ex:641
#, elixir-autogen, elixir-format
msgid "Updating results for the visible map area…"
msgstr "" msgstr ""

View File

@ -179,7 +179,7 @@ msgid "Active"
msgstr "Active" msgstr "Active"
#: lib/who_need_help_web/components/layouts.ex:231 #: lib/who_need_help_web/components/layouts.ex:231
#: lib/who_need_help_web/live/activity_live/index.ex:37 #: lib/who_need_help_web/live/activity_live/index.ex:41
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Activities" msgid "Activities"
msgstr "Activities" msgstr "Activities"
@ -215,7 +215,7 @@ msgstr "Activity published. You approve every participant."
msgid "Activity restored." msgid "Activity restored."
msgstr "Activity restored." msgstr "Activity restored."
#: lib/who_need_help_web/live/activity_live/index.ex:491 #: lib/who_need_help_web/live/activity_live/index.ex:548
#: lib/who_need_help_web/live/activity_live/new.ex:204 #: lib/who_need_help_web/live/activity_live/new.ex:204
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Activity type" msgid "Activity type"
@ -232,12 +232,12 @@ msgstr "Add unverified link"
msgid "Administrator" msgid "Administrator"
msgstr "Administrator" msgstr "Administrator"
#: lib/who_need_help_web/live/activity_live/index.ex:493 #: lib/who_need_help_web/live/activity_live/index.ex:550
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "All activities" msgid "All activities"
msgstr "All activities" msgstr "All activities"
#: lib/who_need_help_web/live/request_live/index.ex:493 #: lib/who_need_help_web/live/request_live/index.ex:570
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "All categories" msgid "All categories"
msgstr "All categories" msgstr "All categories"
@ -252,7 +252,7 @@ msgstr "Already registered?"
msgid "Another helper already accepted this request." msgid "Another helper already accepted this request."
msgstr "Another helper already accepted this request." msgstr "Another helper already accepted this request."
#: lib/who_need_help_web/live/request_live/index.ex:508 #: lib/who_need_help_web/live/request_live/index.ex:585
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Any urgency" msgid "Any urgency"
msgstr "Any urgency" msgstr "Any urgency"
@ -367,16 +367,16 @@ msgstr "Cancel activity"
msgid "Cancel request" msgid "Cancel request"
msgstr "Cancel request" msgstr "Cancel request"
#: lib/who_need_help_web/live/activity_live/index.ex:422 #: lib/who_need_help_web/live/activity_live/index.ex:479
#: lib/who_need_help_web/live/activity_live/show.ex:344 #: lib/who_need_help_web/live/activity_live/show.ex:344
#: lib/who_need_help_web/live/request_live/index.ex:413 #: lib/who_need_help_web/live/request_live/index.ex:490
#: lib/who_need_help_web/live/request_live/index.ex:414 #: lib/who_need_help_web/live/request_live/index.ex:491
#: lib/who_need_help_web/live/request_live/show.ex:956 #: lib/who_need_help_web/live/request_live/show.ex:956
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Cancelled" msgid "Cancelled"
msgstr "Cancelled" msgstr "Cancelled"
#: lib/who_need_help_web/live/request_live/index.ex:491 #: lib/who_need_help_web/live/request_live/index.ex:568
#: lib/who_need_help_web/live/request_live/new.ex:302 #: lib/who_need_help_web/live/request_live/new.ex:302
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Category" msgid "Category"
@ -459,7 +459,7 @@ msgstr "Close"
msgid "Coffee and conversation" msgid "Coffee and conversation"
msgstr "Coffee and conversation" msgstr "Coffee and conversation"
#: lib/who_need_help_web/live/activity_live/index.ex:436 #: lib/who_need_help_web/live/activity_live/index.ex:493
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Coffee, cinema, walks, and hikes are separate from urgent help and never affect helper ratings." msgid "Coffee, cinema, walks, and hikes are separate from urgent help and never affect helper ratings."
msgstr "Coffee, cinema, walks, and hikes are separate from urgent help and never affect helper ratings." msgstr "Coffee, cinema, walks, and hikes are separate from urgent help and never affect helper ratings."
@ -474,19 +474,19 @@ msgstr "Comment (optional)"
msgid "Community helpers" msgid "Community helpers"
msgstr "Community helpers" msgstr "Community helpers"
#: lib/who_need_help_web/live/activity_live/index.ex:647 #: lib/who_need_help_web/live/activity_live/index.ex:744
#: lib/who_need_help_web/live/activity_live/show.ex:403 #: lib/who_need_help_web/live/activity_live/show.ex:403
#: lib/who_need_help_web/live/activity_live/show.ex:639 #: lib/who_need_help_web/live/activity_live/show.ex:639
#: lib/who_need_help_web/live/activity_live/show.ex:698 #: lib/who_need_help_web/live/activity_live/show.ex:698
#: lib/who_need_help_web/live/request_live/index.ex:656 #: lib/who_need_help_web/live/request_live/index.ex:771
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Community member" msgid "Community member"
msgstr "Community member" msgstr "Community member"
#: lib/who_need_help_web/live/activity_live/index.ex:421 #: lib/who_need_help_web/live/activity_live/index.ex:478
#: lib/who_need_help_web/live/activity_live/show.ex:343 #: lib/who_need_help_web/live/activity_live/show.ex:343
#: lib/who_need_help_web/live/request_live/index.ex:411 #: lib/who_need_help_web/live/request_live/index.ex:488
#: lib/who_need_help_web/live/request_live/index.ex:412 #: lib/who_need_help_web/live/request_live/index.ex:489
#: lib/who_need_help_web/live/request_live/show.ex:955 #: lib/who_need_help_web/live/request_live/show.ex:955
#: lib/who_need_help_web/live/request_live/show.ex:974 #: lib/who_need_help_web/live/request_live/show.ex:974
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -537,13 +537,13 @@ msgstr "Confirmation instructions"
msgid "Confirming..." msgid "Confirming..."
msgstr "Confirming..." msgstr "Confirming..."
#: lib/who_need_help_web/live/activity_live/index.ex:442 #: lib/who_need_help_web/live/activity_live/index.ex:499
#: lib/who_need_help_web/live/activity_live/new.ex:12 #: lib/who_need_help_web/live/activity_live/new.ex:12
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Create activity" msgid "Create activity"
msgstr "Create activity" msgstr "Create activity"
#: lib/who_need_help_web/live/activity_live/index.ex:722 #: lib/who_need_help_web/live/activity_live/index.ex:819
#: lib/who_need_help_web/live/activity_live/new.ex:180 #: lib/who_need_help_web/live/activity_live/new.ex:180
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Create an activity" msgid "Create an activity"
@ -554,7 +554,7 @@ msgstr "Create an activity"
msgid "Create category" msgid "Create category"
msgstr "Create category" msgstr "Create category"
#: lib/who_need_help_web/live/request_live/index.ex:442 #: lib/who_need_help_web/live/request_live/index.ex:519
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Create urgent request" msgid "Create urgent request"
msgstr "Create urgent request" msgstr "Create urgent request"
@ -704,7 +704,7 @@ msgstr "Expires:"
msgid "Explain what is already arranged and what the volunteer needs to do." msgid "Explain what is already arranged and what the volunteer needs to do."
msgstr "Explain what is already arranged and what the volunteer needs to do." msgstr "Explain what is already arranged and what the volunteer needs to do."
#: lib/who_need_help_web/live/activity_live/index.ex:433 #: lib/who_need_help_web/live/activity_live/index.ex:490
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Find people to join" msgid "Find people to join"
msgstr "Find people to join" msgstr "Find people to join"
@ -865,8 +865,8 @@ msgstr "Impersonation"
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." 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 "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 "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:409 #: lib/who_need_help_web/live/request_live/index.ex:486
#: lib/who_need_help_web/live/request_live/index.ex:410 #: lib/who_need_help_web/live/request_live/index.ex:487
#: lib/who_need_help_web/live/request_live/show.ex:954 #: lib/who_need_help_web/live/request_live/show.ex:954
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "In progress" msgid "In progress"
@ -989,8 +989,8 @@ msgstr "Mark completed"
msgid "Match and coordinate" msgid "Match and coordinate"
msgstr "Match and coordinate" msgstr "Match and coordinate"
#: lib/who_need_help_web/live/request_live/index.ex:407 #: lib/who_need_help_web/live/request_live/index.ex:484
#: lib/who_need_help_web/live/request_live/index.ex:408 #: lib/who_need_help_web/live/request_live/index.ex:485
#: lib/who_need_help_web/live/request_live/show.ex:952 #: lib/who_need_help_web/live/request_live/show.ex:952
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Matched" msgid "Matched"
@ -1016,7 +1016,7 @@ msgstr "Medicine pickup remains the first priority. Roadside categories use the
msgid "Medicine requests" msgid "Medicine requests"
msgstr "Medicine requests" msgstr "Medicine requests"
#: lib/who_need_help_web/live/activity_live/index.ex:449 #: lib/who_need_help_web/live/activity_live/index.ex:506
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Meet in public first, keep exact details inside the approved group, and leave or report anything that feels unsafe." msgid "Meet in public first, keep exact details inside the approved group, and leave or report anything that feels unsafe."
msgstr "Meet in public first, keep exact details inside the approved group, and leave or report anything that feels unsafe." msgstr "Meet in public first, keep exact details inside the approved group, and leave or report anything that feels unsafe."
@ -1067,12 +1067,12 @@ msgstr "Moderator"
msgid "Moderator access is required." msgid "Moderator access is required."
msgstr "Moderator access is required." msgstr "Moderator access is required."
#: lib/who_need_help_web/live/request_live/index.ex:433 #: lib/who_need_help_web/live/request_live/index.ex:510
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "NEARBY MUTUAL AID" msgid "NEARBY MUTUAL AID"
msgstr "NEARBY MUTUAL AID" msgstr "NEARBY MUTUAL AID"
#: lib/who_need_help_web/live/request_live/index.ex:47 #: lib/who_need_help_web/live/request_live/index.ex:51
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Nearby help" msgid "Nearby help"
msgstr "Nearby help" msgstr "Nearby help"
@ -1153,9 +1153,9 @@ msgid "Not for emergencies"
msgstr "Not for emergencies" msgstr "Not for emergencies"
#: lib/who_need_help_web/live/notification_live.ex:748 #: lib/who_need_help_web/live/notification_live.ex:748
#: lib/who_need_help_web/live/request_live/index.ex:397 #: lib/who_need_help_web/live/request_live/index.ex:474
#: lib/who_need_help_web/live/request_live/index.ex:398 #: lib/who_need_help_web/live/request_live/index.ex:475
#: lib/who_need_help_web/live/request_live/index.ex:509 #: lib/who_need_help_web/live/request_live/index.ex:586
#: lib/who_need_help_web/live/request_live/new.ex:449 #: lib/who_need_help_web/live/request_live/new.ex:449
#: lib/who_need_help_web/live/request_live/show.ex:943 #: lib/who_need_help_web/live/request_live/show.ex:943
#: lib/who_need_help_web/live/request_live/show.ex:944 #: lib/who_need_help_web/live/request_live/show.ex:944
@ -1163,7 +1163,7 @@ msgstr "Not for emergencies"
msgid "Now" msgid "Now"
msgstr "Now" msgstr "Now"
#: lib/who_need_help_web/live/activity_live/index.ex:431 #: lib/who_need_help_web/live/activity_live/index.ex:488
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "OPTIONAL SOCIAL PLANS" msgid "OPTIONAL SOCIAL PLANS"
msgstr "OPTIONAL SOCIAL PLANS" msgstr "OPTIONAL SOCIAL PLANS"
@ -1181,12 +1181,12 @@ msgstr "Only the organizer and approved participants can read or send these mess
#: lib/who_need_help/notifications/text.ex:140 #: lib/who_need_help/notifications/text.ex:140
#: lib/who_need_help_web/controllers/content_removal_html.ex:21 #: lib/who_need_help_web/controllers/content_removal_html.ex:21
#: lib/who_need_help_web/controllers/support_html.ex:16 #: lib/who_need_help_web/controllers/support_html.ex:16
#: lib/who_need_help_web/live/activity_live/index.ex:420 #: lib/who_need_help_web/live/activity_live/index.ex:477
#: lib/who_need_help_web/live/activity_live/show.ex:342 #: lib/who_need_help_web/live/activity_live/show.ex:342
#: lib/who_need_help_web/live/moderation_live.ex:258 #: lib/who_need_help_web/live/moderation_live.ex:258
#: lib/who_need_help_web/live/report_live.ex:104 #: lib/who_need_help_web/live/report_live.ex:104
#: lib/who_need_help_web/live/request_live/index.ex:405 #: lib/who_need_help_web/live/request_live/index.ex:482
#: lib/who_need_help_web/live/request_live/index.ex:406 #: lib/who_need_help_web/live/request_live/index.ex:483
#: lib/who_need_help_web/live/request_live/show.ex:951 #: lib/who_need_help_web/live/request_live/show.ex:951
#: lib/who_need_help_web/live/support_operations_live.ex:237 #: lib/who_need_help_web/live/support_operations_live.ex:237
#: lib/who_need_help_web/live/support_operations_live.ex:438 #: lib/who_need_help_web/live/support_operations_live.ex:438
@ -1639,9 +1639,9 @@ msgid "Save profile"
msgstr "Save profile" msgstr "Save profile"
#: lib/who_need_help_web/live/notification_live.ex:750 #: lib/who_need_help_web/live/notification_live.ex:750
#: lib/who_need_help_web/live/request_live/index.ex:401 #: lib/who_need_help_web/live/request_live/index.ex:478
#: lib/who_need_help_web/live/request_live/index.ex:402 #: lib/who_need_help_web/live/request_live/index.ex:479
#: lib/who_need_help_web/live/request_live/index.ex:511 #: lib/who_need_help_web/live/request_live/index.ex:588
#: lib/who_need_help_web/live/request_live/new.ex:451 #: lib/who_need_help_web/live/request_live/new.ex:451
#: lib/who_need_help_web/live/request_live/show.ex:947 #: lib/who_need_help_web/live/request_live/show.ex:947
#: lib/who_need_help_web/live/request_live/show.ex:948 #: lib/who_need_help_web/live/request_live/show.ex:948
@ -1904,7 +1904,7 @@ msgstr "This activity state has already changed."
msgid "This interaction is blocked." msgid "This interaction is blocked."
msgstr "This interaction is blocked." msgstr "This interaction is blocked."
#: lib/who_need_help_web/live/request_live/index.ex:449 #: lib/who_need_help_web/live/request_live/index.ex:526
#: lib/who_need_help_web/live/request_live/show.ex:1022 #: lib/who_need_help_web/live/request_live/show.ex:1022
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "This is not an emergency service. Contact local emergency services for immediate danger." msgid "This is not an emergency service. Contact local emergency services for immediate danger."
@ -1952,9 +1952,9 @@ msgid "To see sent emails, visit"
msgstr "To see sent emails, visit" msgstr "To see sent emails, visit"
#: lib/who_need_help_web/live/notification_live.ex:749 #: lib/who_need_help_web/live/notification_live.ex:749
#: lib/who_need_help_web/live/request_live/index.ex:399 #: lib/who_need_help_web/live/request_live/index.ex:476
#: lib/who_need_help_web/live/request_live/index.ex:400 #: lib/who_need_help_web/live/request_live/index.ex:477
#: lib/who_need_help_web/live/request_live/index.ex:510 #: lib/who_need_help_web/live/request_live/index.ex:587
#: lib/who_need_help_web/live/request_live/new.ex:450 #: lib/who_need_help_web/live/request_live/new.ex:450
#: lib/who_need_help_web/live/request_live/show.ex:945 #: lib/who_need_help_web/live/request_live/show.ex:945
#: lib/who_need_help_web/live/request_live/show.ex:946 #: lib/who_need_help_web/live/request_live/show.ex:946
@ -2029,7 +2029,7 @@ msgid "Update email instructions"
msgstr "Update email instructions" msgstr "Update email instructions"
#: lib/who_need_help_web/live/notification_live.ex:743 #: lib/who_need_help_web/live/notification_live.ex:743
#: lib/who_need_help_web/live/request_live/index.ex:506 #: lib/who_need_help_web/live/request_live/index.ex:583
#: lib/who_need_help_web/live/request_live/new.ex:447 #: lib/who_need_help_web/live/request_live/new.ex:447
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Urgency" msgid "Urgency"
@ -2174,7 +2174,7 @@ msgstr "Who Need Help home"
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." 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 "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 "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:434 #: lib/who_need_help_web/live/request_live/index.ex:511
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Who needs help?" msgid "Who needs help?"
msgstr "Who needs help?" msgstr "Who needs help?"
@ -2292,7 +2292,7 @@ msgstr "Your requests"
msgid "Your review is revealed only after both participants submit." msgid "Your review is revealed only after both participants submit."
msgstr "Your review is revealed only after both participants submit." msgstr "Your review is revealed only after both participants submit."
#: lib/who_need_help_web/live/request_live/index.ex:724 #: lib/who_need_help_web/live/request_live/index.ex:839
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Your trust summary" msgid "Your trust summary"
msgstr "Your trust summary" msgstr "Your trust summary"
@ -2313,17 +2313,17 @@ msgstr "activity message"
msgid "before confirming." msgid "before confirming."
msgstr "before confirming." msgstr "before confirming."
#: lib/who_need_help_web/live/activity_live/index.ex:646 #: lib/who_need_help_web/live/activity_live/index.ex:743
#: lib/who_need_help_web/live/category_proposal_live.ex:252 #: lib/who_need_help_web/live/category_proposal_live.ex:252
#: lib/who_need_help_web/live/moderation_live.ex:372 #: lib/who_need_help_web/live/moderation_live.ex:372
#: lib/who_need_help_web/live/request_live/index.ex:655 #: lib/who_need_help_web/live/request_live/index.ex:770
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "by %{name}" msgid "by %{name}"
msgstr "by %{name}" msgstr "by %{name}"
#: lib/who_need_help_web/live/profile_live.ex:190 #: lib/who_need_help_web/live/profile_live.ex:190
#: lib/who_need_help_web/live/public_profile_live.ex:133 #: lib/who_need_help_web/live/public_profile_live.ex:133
#: lib/who_need_help_web/live/request_live/index.ex:728 #: lib/who_need_help_web/live/request_live/index.ex:843
#: lib/who_need_help_web/live/request_live/show.ex:1374 #: lib/who_need_help_web/live/request_live/show.ex:1374
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "completed" msgid "completed"
@ -2359,7 +2359,7 @@ msgstr "organizer"
msgid "participants only" msgid "participants only"
msgstr "participants only" msgstr "participants only"
#: lib/who_need_help_web/live/request_live/index.ex:732 #: lib/who_need_help_web/live/request_live/index.ex:847
#: lib/who_need_help_web/live/request_live/show.ex:1378 #: lib/who_need_help_web/live/request_live/show.ex:1378
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "people" msgid "people"
@ -2419,7 +2419,7 @@ msgstr "urgent"
#: lib/who_need_help_web/live/activity_live/show.ex:719 #: lib/who_need_help_web/live/activity_live/show.ex:719
#: lib/who_need_help_web/live/profile_live.ex:285 #: lib/who_need_help_web/live/profile_live.ex:285
#: lib/who_need_help_web/live/public_profile_live.ex:98 #: lib/who_need_help_web/live/public_profile_live.ex:98
#: lib/who_need_help_web/live/request_live/index.ex:736 #: lib/who_need_help_web/live/request_live/index.ex:851
#: lib/who_need_help_web/live/request_live/show.ex:1093 #: lib/who_need_help_web/live/request_live/show.ex:1093
#: lib/who_need_help_web/live/request_live/show.ex:1476 #: lib/who_need_help_web/live/request_live/show.ex:1476
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -2452,8 +2452,8 @@ msgstr "← Requests"
msgid "Approved" msgid "Approved"
msgstr "Approved" msgstr "Approved"
#: lib/who_need_help_web/live/request_live/index.ex:415 #: lib/who_need_help_web/live/request_live/index.ex:492
#: lib/who_need_help_web/live/request_live/index.ex:416 #: lib/who_need_help_web/live/request_live/index.ex:493
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Expired" msgid "Expired"
msgstr "Expired" msgstr "Expired"
@ -2506,8 +2506,8 @@ msgstr "Unusual action rate"
msgid "Load earlier messages" msgid "Load earlier messages"
msgstr "Load earlier messages" msgstr "Load earlier messages"
#: lib/who_need_help_web/live/activity_live/index.ex:658 #: lib/who_need_help_web/live/activity_live/index.ex:755
#: lib/who_need_help_web/live/activity_live/index.ex:751 #: lib/who_need_help_web/live/activity_live/index.ex:848
#: lib/who_need_help_web/live/category_proposal_live.ex:284 #: lib/who_need_help_web/live/category_proposal_live.ex:284
#: lib/who_need_help_web/live/leaderboard_live.ex:91 #: lib/who_need_help_web/live/leaderboard_live.ex:91
#: lib/who_need_help_web/live/moderation_live.ex:465 #: lib/who_need_help_web/live/moderation_live.ex:465
@ -2519,7 +2519,7 @@ msgstr "Load earlier messages"
#: lib/who_need_help_web/live/profile_live.ex:363 #: lib/who_need_help_web/live/profile_live.ex:363
#: lib/who_need_help_web/live/public_profile_live.ex:178 #: lib/who_need_help_web/live/public_profile_live.ex:178
#: lib/who_need_help_web/live/report_live.ex:98 #: lib/who_need_help_web/live/report_live.ex:98
#: lib/who_need_help_web/live/request_live/index.ex:805 #: lib/who_need_help_web/live/request_live/index.ex:920
#: lib/who_need_help_web/live/support_operations_live.ex:306 #: lib/who_need_help_web/live/support_operations_live.ex:306
#: lib/who_need_help_web/live/support_operations_live.ex:505 #: lib/who_need_help_web/live/support_operations_live.ex:505
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -2527,7 +2527,7 @@ msgid "Load more"
msgstr "Load more" msgstr "Load more"
#: lib/who_need_help_web/live/activity_live/show.ex:544 #: lib/who_need_help_web/live/activity_live/show.ex:544
#: lib/who_need_help_web/live/request_live/index.ex:701 #: lib/who_need_help_web/live/request_live/index.ex:816
#: lib/who_need_help_web/live/request_live/show.ex:1275 #: lib/who_need_help_web/live/request_live/show.ex:1275
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "The map is unavailable in this browser. Request details remain usable." msgid "The map is unavailable in this browser. Request details remain usable."
@ -4516,44 +4516,37 @@ msgstr ""
msgid "Exact point selected. Drag the red pin or click the map to move it." msgid "Exact point selected. Drag the red pin or click the map to move it."
msgstr "" msgstr ""
#: lib/who_need_help_web/live/request_live/index.ex:539 #: lib/who_need_help_web/live/activity_live/index.ex:559
#, elixir-autogen, elixir-format #: lib/who_need_help_web/live/request_live/index.ex:593
msgid "%{count} request in this map area"
msgid_plural "%{count} requests in this map area"
msgstr[0] ""
msgstr[1] ""
#: lib/who_need_help_web/live/activity_live/index.ex:502
#: lib/who_need_help_web/live/request_live/index.ex:516
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Area or city" msgid "Area or city"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:594 #: lib/who_need_help_web/live/activity_live/index.ex:689
#: lib/who_need_help_web/live/request_live/index.ex:606 #: lib/who_need_help_web/live/request_live/index.ex:721
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Choose an area on the map" msgid "Choose an area on the map"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/request_live/index.ex:436 #: lib/who_need_help_web/live/request_live/index.ex:513
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Explore privacy-friendly areas and public exact meeting points chosen by requesters." msgid "Explore privacy-friendly areas and public exact meeting points chosen by requesters."
msgstr "" msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:553 #: lib/who_need_help_web/live/activity_live/index.ex:647
#: lib/who_need_help_web/live/request_live/index.ex:565 #: lib/who_need_help_web/live/request_live/index.ex:679
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "List" msgid "List"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/request_live/index.ex:677 #: lib/who_need_help_web/live/request_live/index.ex:792
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Load more in this area" msgid "Load more in this area"
msgstr "Load more in this area" msgstr "Load more in this area"
#: lib/who_need_help_web/components/layouts/root.html.heex:5 #: lib/who_need_help_web/components/layouts/root.html.heex:5
#: lib/who_need_help_web/live/activity_live/index.ex:573 #: lib/who_need_help_web/live/activity_live/index.ex:667
#: lib/who_need_help_web/live/request_live/index.ex:585 #: lib/who_need_help_web/live/request_live/index.ex:699
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Map" msgid "Map"
msgstr "" msgstr ""
@ -4563,77 +4556,65 @@ msgstr ""
msgid "Map preview" msgid "Map preview"
msgstr "Map preview" msgstr "Map preview"
#: lib/who_need_help_web/live/activity_live/index.ex:606 #: lib/who_need_help_web/live/activity_live/index.ex:701
#: lib/who_need_help_web/live/request_live/index.ex:618 #: lib/who_need_help_web/live/request_live/index.ex:733
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Move or zoom the map to search somewhere else." msgid "Move or zoom the map to search somewhere else."
msgstr "" msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:540 #: lib/who_need_help_web/live/request_live/index.ex:731
#: lib/who_need_help_web/live/request_live/index.ex:552
#, elixir-autogen, elixir-format
msgid "Move the map, then search the newly visible area."
msgstr ""
#: lib/who_need_help_web/live/request_live/index.ex:616
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No open requests in this area" msgid "No open requests in this area"
msgstr "No open requests in this area" msgstr "No open requests in this area"
#: lib/who_need_help_web/live/request_live/index.ex:608 #: lib/who_need_help_web/live/request_live/index.ex:723
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Only requests from the selected map area will be loaded." msgid "Only requests from the selected map area will be loaded."
msgstr "" msgstr ""
#: lib/who_need_help_web/components/layouts/root.html.heex:8 #: lib/who_need_help_web/components/layouts/root.html.heex:8
#: lib/who_need_help_web/live/request_live/index.ex:704 #: lib/who_need_help_web/live/request_live/index.ex:819
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Open request" msgid "Open request"
msgstr "Open request" msgstr "Open request"
#: lib/who_need_help_web/live/activity_live/index.ex:503 #: lib/who_need_help_web/live/activity_live/index.ex:560
#: lib/who_need_help_web/live/request_live/index.ex:517 #: lib/who_need_help_web/live/request_live/index.ex:594
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Optional text search" msgid "Optional text search"
msgstr "Optional text search" msgstr "Optional text search"
#: lib/who_need_help_web/live/request_live/index.ex:683 #: lib/who_need_help_web/live/request_live/index.ex:798
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Requests without map coordinates appear only when their public area description matches the text search." msgid "Requests without map coordinates appear only when their public area description matches the text search."
msgstr "" msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:544 #: lib/who_need_help_web/live/activity_live/index.ex:638
#: lib/who_need_help_web/live/request_live/index.ex:556 #: lib/who_need_help_web/live/request_live/index.ex:670
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Results layout" msgid "Results layout"
msgstr "" msgstr ""
#: lib/who_need_help_web/live/activity_live/index.ex:693
#: lib/who_need_help_web/live/request_live/index.ex:719
#, elixir-autogen, elixir-format
msgid "Search this area"
msgstr ""
#: lib/who_need_help_web/controllers/page_html/home.html.heex:171 #: lib/who_need_help_web/controllers/page_html/home.html.heex:171
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Static preview" msgid "Static preview"
msgstr "Static preview" msgstr "Static preview"
#: lib/who_need_help_web/live/activity_live/index.ex:563 #: lib/who_need_help_web/live/activity_live/index.ex:657
#: lib/who_need_help_web/live/request_live/index.ex:575 #: lib/who_need_help_web/live/request_live/index.ex:689
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Together" msgid "Together"
msgstr "" msgstr ""
#: lib/who_need_help_web/components/layouts/root.html.heex:6 #: lib/who_need_help_web/components/layouts/root.html.heex:6
#: lib/who_need_help_web/controllers/page_html/home.html.heex:160 #: lib/who_need_help_web/controllers/page_html/home.html.heex:160
#: lib/who_need_help_web/live/activity_live/index.ex:681 #: lib/who_need_help_web/live/activity_live/index.ex:778
#: lib/who_need_help_web/live/activity_live/new.ex:355 #: lib/who_need_help_web/live/activity_live/new.ex:355
#: lib/who_need_help_web/live/activity_live/new.ex:414 #: lib/who_need_help_web/live/activity_live/new.ex:414
#: lib/who_need_help_web/live/activity_live/show.ex:546 #: lib/who_need_help_web/live/activity_live/show.ex:546
#: lib/who_need_help_web/live/notification_live.ex:602 #: lib/who_need_help_web/live/notification_live.ex:602
#: lib/who_need_help_web/live/notification_live.ex:621 #: lib/who_need_help_web/live/notification_live.ex:621
#: lib/who_need_help_web/live/request_live/index.ex:703 #: lib/who_need_help_web/live/request_live/index.ex:818
#: lib/who_need_help_web/live/request_live/new.ex:485 #: lib/who_need_help_web/live/request_live/new.ex:485
#: lib/who_need_help_web/live/request_live/new.ex:563 #: lib/who_need_help_web/live/request_live/new.ex:563
#: lib/who_need_help_web/live/request_live/show.ex:1277 #: lib/who_need_help_web/live/request_live/show.ex:1277
@ -5022,7 +5003,7 @@ msgid "Nearby alert deleted."
msgstr "" msgstr ""
#: lib/who_need_help_web/live/notification_live.ex:456 #: lib/who_need_help_web/live/notification_live.ex:456
#: lib/who_need_help_web/live/request_live/index.ex:462 #: lib/who_need_help_web/live/request_live/index.ex:539
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Nearby requests" msgid "Nearby requests"
msgstr "" msgstr ""
@ -5362,7 +5343,7 @@ msgid "WebGL is unavailable in this browser, so the full map cannot start. Selec
msgstr "WebGL is unavailable in this browser, so the full map cannot start. Select an example below or retry the map." msgstr "WebGL is unavailable in this browser, so the full map cannot start. Select an example below or retry the map."
#: lib/who_need_help_web/components/layouts/root.html.heex:7 #: lib/who_need_help_web/components/layouts/root.html.heex:7
#: lib/who_need_help_web/live/activity_live/index.ex:682 #: lib/who_need_help_web/live/activity_live/index.ex:779
#: lib/who_need_help_web/live/activity_live/show.ex:547 #: lib/who_need_help_web/live/activity_live/show.ex:547
#: lib/who_need_help_web/live/request_live/show.ex:1278 #: lib/who_need_help_web/live/request_live/show.ex:1278
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -5927,7 +5908,7 @@ msgstr "Your review is now visible"
msgid "Delivery settings" msgid "Delivery settings"
msgstr "Delivery settings" msgstr "Delivery settings"
#: lib/who_need_help_web/live/request_live/index.ex:660 #: lib/who_need_help_web/live/request_live/index.ex:775
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Expires" msgid "Expires"
msgstr "Expires" msgstr "Expires"
@ -5947,29 +5928,22 @@ msgstr "Nearby alerts"
msgid "Notification sections" msgid "Notification sections"
msgstr "Notification sections" msgstr "Notification sections"
#: lib/who_need_help_web/live/activity_live/index.ex:674 #: lib/who_need_help_web/live/activity_live/index.ex:771
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "%{count} activities" msgid "%{count} activities"
msgstr "%{count} activities" msgstr "%{count} activities"
#: lib/who_need_help_web/live/activity_live/index.ex:527 #: lib/who_need_help_web/live/request_live/index.ex:820
#, elixir-autogen, elixir-format
msgid "%{count} activity in this map area"
msgid_plural "%{count} activities in this map area"
msgstr[0] "%{count} activity in this map area"
msgstr[1] "%{count} activities in this map area"
#: lib/who_need_help_web/live/request_live/index.ex:705
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "%{count} requests" msgid "%{count} requests"
msgstr "%{count} requests" msgstr "%{count} requests"
#: lib/who_need_help_web/live/activity_live/index.ex:717 #: lib/who_need_help_web/live/activity_live/index.ex:814
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Activities you create or ask to join will appear here. Leaving removes an activity from this list." msgid "Activities you create or ask to join will appear here. Leaving removes an activity from this list."
msgstr "Activities you create or ask to join will appear here. Leaving removes an activity from this list." msgstr "Activities you create or ask to join will appear here. Leaving removes an activity from this list."
#: lib/who_need_help_web/live/activity_live/index.ex:457 #: lib/who_need_help_web/live/activity_live/index.ex:514
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Activity views" msgid "Activity views"
msgstr "Activity views" msgstr "Activity views"
@ -5984,12 +5958,12 @@ msgstr "Choose a category and describe the task clearly."
msgid "Confirm the safety guidance before asking nearby people for help." msgid "Confirm the safety guidance before asking nearby people for help."
msgstr "Confirm the safety guidance before asking nearby people for help." msgstr "Confirm the safety guidance before asking nearby people for help."
#: lib/who_need_help_web/live/request_live/index.ex:753 #: lib/who_need_help_web/live/request_live/index.ex:868
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Create request" msgid "Create request"
msgstr "Create request" msgstr "Create request"
#: lib/who_need_help_web/live/request_live/index.ex:776 #: lib/who_need_help_web/live/request_live/index.ex:891
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Create your first request" msgid "Create your first request"
msgstr "Create your first request" msgstr "Create your first request"
@ -6004,43 +5978,43 @@ msgstr "Help details"
msgid "Location" msgid "Location"
msgstr "Location" msgstr "Location"
#: lib/who_need_help_web/live/activity_live/index.ex:463 #: lib/who_need_help_web/live/activity_live/index.ex:520
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "My activities" msgid "My activities"
msgstr "My activities" msgstr "My activities"
#: lib/who_need_help_web/live/request_live/index.ex:463 #: lib/who_need_help_web/live/request_live/index.ex:540
#: lib/who_need_help_web/live/request_live/index.ex:747 #: lib/who_need_help_web/live/request_live/index.ex:862
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "My requests" msgid "My requests"
msgstr "My requests" msgstr "My requests"
#: lib/who_need_help_web/live/activity_live/index.ex:462 #: lib/who_need_help_web/live/activity_live/index.ex:519
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Nearby activities" msgid "Nearby activities"
msgstr "Nearby activities" msgstr "Nearby activities"
#: lib/who_need_help_web/live/activity_live/index.ex:715 #: lib/who_need_help_web/live/activity_live/index.ex:812
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No activities yet" msgid "No activities yet"
msgstr "No activities yet" msgstr "No activities yet"
#: lib/who_need_help_web/live/activity_live/index.ex:604 #: lib/who_need_help_web/live/activity_live/index.ex:699
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No open activities in this area" msgid "No open activities in this area"
msgstr "No open activities in this area" msgstr "No open activities in this area"
#: lib/who_need_help_web/live/request_live/index.ex:771 #: lib/who_need_help_web/live/request_live/index.ex:886
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No requests yet" msgid "No requests yet"
msgstr "No requests yet" msgstr "No requests yet"
#: lib/who_need_help_web/live/activity_live/index.ex:596 #: lib/who_need_help_web/live/activity_live/index.ex:691
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Only activities from the selected map area will be loaded." msgid "Only activities from the selected map area will be loaded."
msgstr "Only activities from the selected map area will be loaded." msgstr "Only activities from the selected map area will be loaded."
#: lib/who_need_help_web/live/activity_live/index.ex:673 #: lib/who_need_help_web/live/activity_live/index.ex:770
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Open activity" msgid "Open activity"
msgstr "Open activity" msgstr "Open activity"
@ -6050,12 +6024,12 @@ msgstr "Open activity"
msgid "Request form steps" msgid "Request form steps"
msgstr "Request form steps" msgstr "Request form steps"
#: lib/who_need_help_web/live/request_live/index.ex:457 #: lib/who_need_help_web/live/request_live/index.ex:534
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Request views" msgid "Request views"
msgstr "Request views" msgstr "Request views"
#: lib/who_need_help_web/live/request_live/index.ex:773 #: lib/who_need_help_web/live/request_live/index.ex:888
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Requests you publish or accept will appear here." msgid "Requests you publish or accept will appear here."
msgstr "Requests you publish or accept will appear here." msgstr "Requests you publish or accept will appear here."
@ -6080,7 +6054,7 @@ msgstr "Set urgency and when this request should close."
msgid "Share only as much location detail as helpers need." msgid "Share only as much location detail as helpers need."
msgstr "Share only as much location detail as helpers need." msgstr "Share only as much location detail as helpers need."
#: lib/who_need_help_web/live/activity_live/index.ex:679 #: lib/who_need_help_web/live/activity_live/index.ex:776
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "The map is unavailable in this browser. Activity details remain usable." msgid "The map is unavailable in this browser. Activity details remain usable."
msgstr "The map is unavailable in this browser. Activity details remain usable." msgstr "The map is unavailable in this browser. Activity details remain usable."
@ -6090,7 +6064,7 @@ msgstr "The map is unavailable in this browser. Activity details remain usable."
msgid "Timing" msgid "Timing"
msgstr "Timing" msgstr "Timing"
#: lib/who_need_help_web/live/request_live/index.ex:749 #: lib/who_need_help_web/live/request_live/index.ex:864
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Track requests you created and requests you accepted as a helper." msgid "Track requests you created and requests you accepted as a helper."
msgstr "Track requests you created and requests you accepted as a helper." msgstr "Track requests you created and requests you accepted as a helper."
@ -6751,32 +6725,86 @@ msgstr "What should people see before approval?"
msgid "Choose the meeting point on the map or use your current location." msgid "Choose the meeting point on the map or use your current location."
msgstr "Choose the meeting point on the map or use your current location." msgstr "Choose the meeting point on the map or use your current location."
#: lib/who_need_help_web/live/activity_live/index.ex:522 #: lib/who_need_help_web/live/activity_live/index.ex:579
#: lib/who_need_help_web/live/activity_live/index.ex:586 #: lib/who_need_help_web/live/activity_live/index.ex:681
#: lib/who_need_help_web/live/activity_live/index.ex:707 #: lib/who_need_help_web/live/activity_live/index.ex:804
#: lib/who_need_help_web/live/request_live/index.ex:534 #: lib/who_need_help_web/live/request_live/index.ex:611
#: lib/who_need_help_web/live/request_live/index.ex:598 #: lib/who_need_help_web/live/request_live/index.ex:713
#: lib/who_need_help_web/live/request_live/index.ex:763 #: lib/who_need_help_web/live/request_live/index.ex:878
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Loading results…" msgid "Loading results…"
msgstr "Loading results…" msgstr "Loading results…"
#: lib/who_need_help_web/live/activity_live/index.ex:676 #: lib/who_need_help_web/live/activity_live/index.ex:773
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Maximum zoom reached. Matching activities are listed beside the map." msgid "Maximum zoom reached. Matching activities are listed beside the map."
msgstr "Maximum zoom reached. Matching activities are listed beside the map." msgstr "Maximum zoom reached. Matching activities are listed beside the map."
#: lib/who_need_help_web/live/request_live/index.ex:707 #: lib/who_need_help_web/live/request_live/index.ex:822
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Maximum zoom reached. Matching requests are listed beside the map." msgid "Maximum zoom reached. Matching requests are listed beside the map."
msgstr "Maximum zoom reached. Matching requests are listed beside the map." msgstr "Maximum zoom reached. Matching requests are listed beside the map."
#: lib/who_need_help_web/live/activity_live/index.ex:535 #: lib/who_need_help_web/live/activity_live/index.ex:584
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "of %{count} matching activities with map locations" msgid "%{count} activity in the selected map area"
msgstr "of %{count} matching activities with map locations" msgid_plural "%{count} activities in the selected map area"
msgstr[0] "%{count} activity in the selected map area"
msgstr[1] "%{count} activities in the selected map area"
#: lib/who_need_help_web/live/request_live/index.ex:547 #: lib/who_need_help_web/live/request_live/index.ex:616
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "of %{count} matching requests with map locations" msgid "%{count} request in the selected map area"
msgstr "of %{count} matching requests with map locations" msgid_plural "%{count} requests in the selected map area"
msgstr[0] "%{count} request in the selected map area"
msgstr[1] "%{count} requests in the selected map area"
#: lib/who_need_help_web/live/activity_live/index.ex:603
#: lib/who_need_help_web/live/request_live/index.ex:635
#, elixir-autogen, elixir-format
msgid "Map moved. Results still show the previous area."
msgstr "Map moved. Results still show the previous area."
#: lib/who_need_help_web/live/activity_live/index.ex:621
#, elixir-autogen, elixir-format
msgid "Move or zoom the map, then choose “Show activities in this area”."
msgstr "Move or zoom the map, then choose “Show activities in this area”."
#: lib/who_need_help_web/live/request_live/index.ex:653
#, elixir-autogen, elixir-format
msgid "Move or zoom the map, then choose “Show requests in this area”."
msgstr "Move or zoom the map, then choose “Show requests in this area”."
#: lib/who_need_help_web/live/activity_live/index.ex:615
#: lib/who_need_help_web/live/request_live/index.ex:647
#, elixir-autogen, elixir-format
msgid "Results update automatically after you stop moving the map."
msgstr "Results update automatically after you stop moving the map."
#: lib/who_need_help_web/live/activity_live/index.ex:790
#, elixir-autogen, elixir-format
msgid "Show activities in this area"
msgstr "Show activities in this area"
#: lib/who_need_help_web/live/request_live/index.ex:834
#, elixir-autogen, elixir-format
msgid "Show requests in this area"
msgstr "Show requests in this area"
#: lib/who_need_help_web/live/activity_live/index.ex:593
#: lib/who_need_help_web/live/request_live/index.ex:625
#, elixir-autogen, elixir-format
msgid "Showing %{shown} of %{count} in the list."
msgstr "Showing %{shown} of %{count} in the list."
#: lib/who_need_help_web/live/activity_live/index.ex:635
#: lib/who_need_help_web/live/request_live/index.ex:667
#, elixir-autogen, elixir-format
msgid "Update results as map moves"
msgstr "Update results as map moves"
#: lib/who_need_help_web/live/activity_live/index.ex:609
#: lib/who_need_help_web/live/request_live/index.ex:641
#, elixir-autogen, elixir-format
msgid "Updating results for the visible map area…"
msgstr "Updating results for the visible map area…"

View File

@ -184,7 +184,7 @@ msgid "Active"
msgstr "Активный" msgstr "Активный"
#: lib/who_need_help_web/components/layouts.ex:231 #: lib/who_need_help_web/components/layouts.ex:231
#: lib/who_need_help_web/live/activity_live/index.ex:37 #: lib/who_need_help_web/live/activity_live/index.ex:41
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Activities" msgid "Activities"
msgstr "Активности" msgstr "Активности"
@ -226,7 +226,7 @@ msgstr "Активность опубликована. Вы одобряете
msgid "Activity restored." msgid "Activity restored."
msgstr "Активность восстановлена." msgstr "Активность восстановлена."
#: lib/who_need_help_web/live/activity_live/index.ex:491 #: lib/who_need_help_web/live/activity_live/index.ex:548
#: lib/who_need_help_web/live/activity_live/new.ex:204 #: lib/who_need_help_web/live/activity_live/new.ex:204
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Activity type" msgid "Activity type"
@ -243,12 +243,12 @@ msgstr "Добавить неподтверждённую ссылку"
msgid "Administrator" msgid "Administrator"
msgstr "Администратор" msgstr "Администратор"
#: lib/who_need_help_web/live/activity_live/index.ex:493 #: lib/who_need_help_web/live/activity_live/index.ex:550
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "All activities" msgid "All activities"
msgstr "Все активности" msgstr "Все активности"
#: lib/who_need_help_web/live/request_live/index.ex:493 #: lib/who_need_help_web/live/request_live/index.ex:570
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "All categories" msgid "All categories"
msgstr "Все категории" msgstr "Все категории"
@ -263,7 +263,7 @@ msgstr "Уже зарегистрированы?"
msgid "Another helper already accepted this request." msgid "Another helper already accepted this request."
msgstr "Другой помощник уже принял эту заявку." msgstr "Другой помощник уже принял эту заявку."
#: lib/who_need_help_web/live/request_live/index.ex:508 #: lib/who_need_help_web/live/request_live/index.ex:585
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Any urgency" msgid "Any urgency"
msgstr "Любая срочность" msgstr "Любая срочность"
@ -383,16 +383,16 @@ msgstr "Отменить активность"
msgid "Cancel request" msgid "Cancel request"
msgstr "Отменить заявку" msgstr "Отменить заявку"
#: lib/who_need_help_web/live/activity_live/index.ex:422 #: lib/who_need_help_web/live/activity_live/index.ex:479
#: lib/who_need_help_web/live/activity_live/show.ex:344 #: lib/who_need_help_web/live/activity_live/show.ex:344
#: lib/who_need_help_web/live/request_live/index.ex:413 #: lib/who_need_help_web/live/request_live/index.ex:490
#: lib/who_need_help_web/live/request_live/index.ex:414 #: lib/who_need_help_web/live/request_live/index.ex:491
#: lib/who_need_help_web/live/request_live/show.ex:956 #: lib/who_need_help_web/live/request_live/show.ex:956
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Cancelled" msgid "Cancelled"
msgstr "Отменено" msgstr "Отменено"
#: lib/who_need_help_web/live/request_live/index.ex:491 #: lib/who_need_help_web/live/request_live/index.ex:568
#: lib/who_need_help_web/live/request_live/new.ex:302 #: lib/who_need_help_web/live/request_live/new.ex:302
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Category" msgid "Category"
@ -476,7 +476,7 @@ msgstr "Закрыть"
msgid "Coffee and conversation" msgid "Coffee and conversation"
msgstr "Кофе и разговоры" msgstr "Кофе и разговоры"
#: lib/who_need_help_web/live/activity_live/index.ex:436 #: lib/who_need_help_web/live/activity_live/index.ex:493
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Coffee, cinema, walks, and hikes are separate from urgent help and never affect helper ratings." msgid "Coffee, cinema, walks, and hikes are separate from urgent help and never affect helper ratings."
msgstr "" msgstr ""
@ -493,19 +493,19 @@ msgstr "Комментарий (необязательно)"
msgid "Community helpers" msgid "Community helpers"
msgstr "Помощники сообщества" msgstr "Помощники сообщества"
#: lib/who_need_help_web/live/activity_live/index.ex:647 #: lib/who_need_help_web/live/activity_live/index.ex:744
#: lib/who_need_help_web/live/activity_live/show.ex:403 #: lib/who_need_help_web/live/activity_live/show.ex:403
#: lib/who_need_help_web/live/activity_live/show.ex:639 #: lib/who_need_help_web/live/activity_live/show.ex:639
#: lib/who_need_help_web/live/activity_live/show.ex:698 #: lib/who_need_help_web/live/activity_live/show.ex:698
#: lib/who_need_help_web/live/request_live/index.ex:656 #: lib/who_need_help_web/live/request_live/index.ex:771
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Community member" msgid "Community member"
msgstr "Член сообщества" msgstr "Член сообщества"
#: lib/who_need_help_web/live/activity_live/index.ex:421 #: lib/who_need_help_web/live/activity_live/index.ex:478
#: lib/who_need_help_web/live/activity_live/show.ex:343 #: lib/who_need_help_web/live/activity_live/show.ex:343
#: lib/who_need_help_web/live/request_live/index.ex:411 #: lib/who_need_help_web/live/request_live/index.ex:488
#: lib/who_need_help_web/live/request_live/index.ex:412 #: lib/who_need_help_web/live/request_live/index.ex:489
#: lib/who_need_help_web/live/request_live/show.ex:955 #: lib/who_need_help_web/live/request_live/show.ex:955
#: lib/who_need_help_web/live/request_live/show.ex:974 #: lib/who_need_help_web/live/request_live/show.ex:974
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -558,13 +558,13 @@ msgstr "Инструкции по подтверждению"
msgid "Confirming..." msgid "Confirming..."
msgstr "Подтверждение…" msgstr "Подтверждение…"
#: lib/who_need_help_web/live/activity_live/index.ex:442 #: lib/who_need_help_web/live/activity_live/index.ex:499
#: lib/who_need_help_web/live/activity_live/new.ex:12 #: lib/who_need_help_web/live/activity_live/new.ex:12
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Create activity" msgid "Create activity"
msgstr "Создать активность" msgstr "Создать активность"
#: lib/who_need_help_web/live/activity_live/index.ex:722 #: lib/who_need_help_web/live/activity_live/index.ex:819
#: lib/who_need_help_web/live/activity_live/new.ex:180 #: lib/who_need_help_web/live/activity_live/new.ex:180
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Create an activity" msgid "Create an activity"
@ -575,7 +575,7 @@ msgstr "Создать активность"
msgid "Create category" msgid "Create category"
msgstr "Создать категорию" msgstr "Создать категорию"
#: lib/who_need_help_web/live/request_live/index.ex:442 #: lib/who_need_help_web/live/request_live/index.ex:519
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Create urgent request" msgid "Create urgent request"
msgstr "Создать срочную заявку" msgstr "Создать срочную заявку"
@ -737,7 +737,7 @@ msgstr "Истекает:"
msgid "Explain what is already arranged and what the volunteer needs to do." msgid "Explain what is already arranged and what the volunteer needs to do."
msgstr "Объясните, что уже сделано и что нужно сделать волонтеру." msgstr "Объясните, что уже сделано и что нужно сделать волонтеру."
#: lib/who_need_help_web/live/activity_live/index.ex:433 #: lib/who_need_help_web/live/activity_live/index.ex:490
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Find people to join" msgid "Find people to join"
msgstr "Найти компанию" msgstr "Найти компанию"
@ -938,8 +938,8 @@ msgstr ""
"Android показывает постоянное уведомление и может продолжать передачу после " "Android показывает постоянное уведомление и может продолжать передачу после "
"сворачивания. При остановке передачи исходные координаты удаляются." "сворачивания. При остановке передачи исходные координаты удаляются."
#: lib/who_need_help_web/live/request_live/index.ex:409 #: lib/who_need_help_web/live/request_live/index.ex:486
#: lib/who_need_help_web/live/request_live/index.ex:410 #: lib/who_need_help_web/live/request_live/index.ex:487
#: lib/who_need_help_web/live/request_live/show.ex:954 #: lib/who_need_help_web/live/request_live/show.ex:954
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "In progress" msgid "In progress"
@ -1069,8 +1069,8 @@ msgstr "Отметить завершённой"
msgid "Match and coordinate" msgid "Match and coordinate"
msgstr "Найдите помощника и согласуйте детали" msgstr "Найдите помощника и согласуйте детали"
#: lib/who_need_help_web/live/request_live/index.ex:407 #: lib/who_need_help_web/live/request_live/index.ex:484
#: lib/who_need_help_web/live/request_live/index.ex:408 #: lib/who_need_help_web/live/request_live/index.ex:485
#: lib/who_need_help_web/live/request_live/show.ex:952 #: lib/who_need_help_web/live/request_live/show.ex:952
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Matched" msgid "Matched"
@ -1099,7 +1099,7 @@ msgstr ""
msgid "Medicine requests" msgid "Medicine requests"
msgstr "Заявки на лекарства" msgstr "Заявки на лекарства"
#: lib/who_need_help_web/live/activity_live/index.ex:449 #: lib/who_need_help_web/live/activity_live/index.ex:506
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Meet in public first, keep exact details inside the approved group, and leave or report anything that feels unsafe." msgid "Meet in public first, keep exact details inside the approved group, and leave or report anything that feels unsafe."
msgstr "" msgstr ""
@ -1153,12 +1153,12 @@ msgstr "Модератор"
msgid "Moderator access is required." msgid "Moderator access is required."
msgstr "Требуется доступ модератора." msgstr "Требуется доступ модератора."
#: lib/who_need_help_web/live/request_live/index.ex:433 #: lib/who_need_help_web/live/request_live/index.ex:510
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "NEARBY MUTUAL AID" msgid "NEARBY MUTUAL AID"
msgstr "ВЗАИМОПОМОЩЬ РЯДОМ" msgstr "ВЗАИМОПОМОЩЬ РЯДОМ"
#: lib/who_need_help_web/live/request_live/index.ex:47 #: lib/who_need_help_web/live/request_live/index.ex:51
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Nearby help" msgid "Nearby help"
msgstr "Помощь рядом" msgstr "Помощь рядом"
@ -1241,9 +1241,9 @@ msgid "Not for emergencies"
msgstr "Не для чрезвычайных ситуаций" msgstr "Не для чрезвычайных ситуаций"
#: lib/who_need_help_web/live/notification_live.ex:748 #: lib/who_need_help_web/live/notification_live.ex:748
#: lib/who_need_help_web/live/request_live/index.ex:397 #: lib/who_need_help_web/live/request_live/index.ex:474
#: lib/who_need_help_web/live/request_live/index.ex:398 #: lib/who_need_help_web/live/request_live/index.ex:475
#: lib/who_need_help_web/live/request_live/index.ex:509 #: lib/who_need_help_web/live/request_live/index.ex:586
#: lib/who_need_help_web/live/request_live/new.ex:449 #: lib/who_need_help_web/live/request_live/new.ex:449
#: lib/who_need_help_web/live/request_live/show.ex:943 #: lib/who_need_help_web/live/request_live/show.ex:943
#: lib/who_need_help_web/live/request_live/show.ex:944 #: lib/who_need_help_web/live/request_live/show.ex:944
@ -1251,7 +1251,7 @@ msgstr "Не для чрезвычайных ситуаций"
msgid "Now" msgid "Now"
msgstr "Сейчас" msgstr "Сейчас"
#: lib/who_need_help_web/live/activity_live/index.ex:431 #: lib/who_need_help_web/live/activity_live/index.ex:488
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "OPTIONAL SOCIAL PLANS" msgid "OPTIONAL SOCIAL PLANS"
msgstr "НЕОБЯЗАТЕЛЬНЫЕ СОВМЕСТНЫЕ ПЛАНЫ" msgstr "НЕОБЯЗАТЕЛЬНЫЕ СОВМЕСТНЫЕ ПЛАНЫ"
@ -1271,12 +1271,12 @@ msgstr ""
#: lib/who_need_help/notifications/text.ex:140 #: lib/who_need_help/notifications/text.ex:140
#: lib/who_need_help_web/controllers/content_removal_html.ex:21 #: lib/who_need_help_web/controllers/content_removal_html.ex:21
#: lib/who_need_help_web/controllers/support_html.ex:16 #: lib/who_need_help_web/controllers/support_html.ex:16
#: lib/who_need_help_web/live/activity_live/index.ex:420 #: lib/who_need_help_web/live/activity_live/index.ex:477
#: lib/who_need_help_web/live/activity_live/show.ex:342 #: lib/who_need_help_web/live/activity_live/show.ex:342
#: lib/who_need_help_web/live/moderation_live.ex:258 #: lib/who_need_help_web/live/moderation_live.ex:258
#: lib/who_need_help_web/live/report_live.ex:104 #: lib/who_need_help_web/live/report_live.ex:104
#: lib/who_need_help_web/live/request_live/index.ex:405 #: lib/who_need_help_web/live/request_live/index.ex:482
#: lib/who_need_help_web/live/request_live/index.ex:406 #: lib/who_need_help_web/live/request_live/index.ex:483
#: lib/who_need_help_web/live/request_live/show.ex:951 #: lib/who_need_help_web/live/request_live/show.ex:951
#: lib/who_need_help_web/live/support_operations_live.ex:237 #: lib/who_need_help_web/live/support_operations_live.ex:237
#: lib/who_need_help_web/live/support_operations_live.ex:438 #: lib/who_need_help_web/live/support_operations_live.ex:438
@ -1748,9 +1748,9 @@ msgid "Save profile"
msgstr "Сохранить профиль" msgstr "Сохранить профиль"
#: lib/who_need_help_web/live/notification_live.ex:750 #: lib/who_need_help_web/live/notification_live.ex:750
#: lib/who_need_help_web/live/request_live/index.ex:401 #: lib/who_need_help_web/live/request_live/index.ex:478
#: lib/who_need_help_web/live/request_live/index.ex:402 #: lib/who_need_help_web/live/request_live/index.ex:479
#: lib/who_need_help_web/live/request_live/index.ex:511 #: lib/who_need_help_web/live/request_live/index.ex:588
#: lib/who_need_help_web/live/request_live/new.ex:451 #: lib/who_need_help_web/live/request_live/new.ex:451
#: lib/who_need_help_web/live/request_live/show.ex:947 #: lib/who_need_help_web/live/request_live/show.ex:947
#: lib/who_need_help_web/live/request_live/show.ex:948 #: lib/who_need_help_web/live/request_live/show.ex:948
@ -2022,7 +2022,7 @@ msgstr "Состояние этой активности уже изменило
msgid "This interaction is blocked." msgid "This interaction is blocked."
msgstr "Это взаимодействие заблокировано." msgstr "Это взаимодействие заблокировано."
#: lib/who_need_help_web/live/request_live/index.ex:449 #: lib/who_need_help_web/live/request_live/index.ex:526
#: lib/who_need_help_web/live/request_live/show.ex:1022 #: lib/who_need_help_web/live/request_live/show.ex:1022
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "This is not an emergency service. Contact local emergency services for immediate danger." msgid "This is not an emergency service. Contact local emergency services for immediate danger."
@ -2075,9 +2075,9 @@ msgid "To see sent emails, visit"
msgstr "Чтобы посмотреть отправленные письма, откройте" msgstr "Чтобы посмотреть отправленные письма, откройте"
#: lib/who_need_help_web/live/notification_live.ex:749 #: lib/who_need_help_web/live/notification_live.ex:749
#: lib/who_need_help_web/live/request_live/index.ex:399 #: lib/who_need_help_web/live/request_live/index.ex:476
#: lib/who_need_help_web/live/request_live/index.ex:400 #: lib/who_need_help_web/live/request_live/index.ex:477
#: lib/who_need_help_web/live/request_live/index.ex:510 #: lib/who_need_help_web/live/request_live/index.ex:587
#: lib/who_need_help_web/live/request_live/new.ex:450 #: lib/who_need_help_web/live/request_live/new.ex:450
#: lib/who_need_help_web/live/request_live/show.ex:945 #: lib/who_need_help_web/live/request_live/show.ex:945
#: lib/who_need_help_web/live/request_live/show.ex:946 #: lib/who_need_help_web/live/request_live/show.ex:946
@ -2152,7 +2152,7 @@ msgid "Update email instructions"
msgstr "Инструкции для изменения электронной почты" msgstr "Инструкции для изменения электронной почты"
#: lib/who_need_help_web/live/notification_live.ex:743 #: lib/who_need_help_web/live/notification_live.ex:743
#: lib/who_need_help_web/live/request_live/index.ex:506 #: lib/who_need_help_web/live/request_live/index.ex:583
#: lib/who_need_help_web/live/request_live/new.ex:447 #: lib/who_need_help_web/live/request_live/new.ex:447
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Urgency" msgid "Urgency"
@ -2308,7 +2308,7 @@ msgstr ""
"через подписку ChatGPT разработчика. Ключ OpenAI API и резервный вариант API" "через подписку ChatGPT разработчика. Ключ OpenAI API и резервный вариант API"
" с оплатой по использованию не применяются." " с оплатой по использованию не применяются."
#: lib/who_need_help_web/live/request_live/index.ex:434 #: lib/who_need_help_web/live/request_live/index.ex:511
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Who needs help?" msgid "Who needs help?"
msgstr "Кому нужна помощь?" msgstr "Кому нужна помощь?"
@ -2432,7 +2432,7 @@ msgid "Your review is revealed only after both participants submit."
msgstr "" msgstr ""
"Ваш отзыв откроется только после того, как его отправят оба участника." "Ваш отзыв откроется только после того, как его отправят оба участника."
#: lib/who_need_help_web/live/request_live/index.ex:724 #: lib/who_need_help_web/live/request_live/index.ex:839
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Your trust summary" msgid "Your trust summary"
msgstr "Ваши показатели доверия" msgstr "Ваши показатели доверия"
@ -2453,17 +2453,17 @@ msgstr "сообщение активности"
msgid "before confirming." msgid "before confirming."
msgstr "перед подтверждением." msgstr "перед подтверждением."
#: lib/who_need_help_web/live/activity_live/index.ex:646 #: lib/who_need_help_web/live/activity_live/index.ex:743
#: lib/who_need_help_web/live/category_proposal_live.ex:252 #: lib/who_need_help_web/live/category_proposal_live.ex:252
#: lib/who_need_help_web/live/moderation_live.ex:372 #: lib/who_need_help_web/live/moderation_live.ex:372
#: lib/who_need_help_web/live/request_live/index.ex:655 #: lib/who_need_help_web/live/request_live/index.ex:770
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "by %{name}" msgid "by %{name}"
msgstr "автор: %{name}" msgstr "автор: %{name}"
#: lib/who_need_help_web/live/profile_live.ex:190 #: lib/who_need_help_web/live/profile_live.ex:190
#: lib/who_need_help_web/live/public_profile_live.ex:133 #: lib/who_need_help_web/live/public_profile_live.ex:133
#: lib/who_need_help_web/live/request_live/index.ex:728 #: lib/who_need_help_web/live/request_live/index.ex:843
#: lib/who_need_help_web/live/request_live/show.ex:1374 #: lib/who_need_help_web/live/request_live/show.ex:1374
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "completed" msgid "completed"
@ -2499,7 +2499,7 @@ msgstr "организатор"
msgid "participants only" msgid "participants only"
msgstr "только участники" msgstr "только участники"
#: lib/who_need_help_web/live/request_live/index.ex:732 #: lib/who_need_help_web/live/request_live/index.ex:847
#: lib/who_need_help_web/live/request_live/show.ex:1378 #: lib/who_need_help_web/live/request_live/show.ex:1378
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "people" msgid "people"
@ -2559,7 +2559,7 @@ msgstr "срочно"
#: lib/who_need_help_web/live/activity_live/show.ex:719 #: lib/who_need_help_web/live/activity_live/show.ex:719
#: lib/who_need_help_web/live/profile_live.ex:285 #: lib/who_need_help_web/live/profile_live.ex:285
#: lib/who_need_help_web/live/public_profile_live.ex:98 #: lib/who_need_help_web/live/public_profile_live.ex:98
#: lib/who_need_help_web/live/request_live/index.ex:736 #: lib/who_need_help_web/live/request_live/index.ex:851
#: lib/who_need_help_web/live/request_live/show.ex:1093 #: lib/who_need_help_web/live/request_live/show.ex:1093
#: lib/who_need_help_web/live/request_live/show.ex:1476 #: lib/who_need_help_web/live/request_live/show.ex:1476
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -2592,8 +2592,8 @@ msgstr "← Заявки"
msgid "Approved" msgid "Approved"
msgstr "Одобрено" msgstr "Одобрено"
#: lib/who_need_help_web/live/request_live/index.ex:415 #: lib/who_need_help_web/live/request_live/index.ex:492
#: lib/who_need_help_web/live/request_live/index.ex:416 #: lib/who_need_help_web/live/request_live/index.ex:493
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Expired" msgid "Expired"
msgstr "Истекло" msgstr "Истекло"
@ -2646,8 +2646,8 @@ msgstr "Необычная частота действий"
msgid "Load earlier messages" msgid "Load earlier messages"
msgstr "Загрузить предыдущие сообщения" msgstr "Загрузить предыдущие сообщения"
#: lib/who_need_help_web/live/activity_live/index.ex:658 #: lib/who_need_help_web/live/activity_live/index.ex:755
#: lib/who_need_help_web/live/activity_live/index.ex:751 #: lib/who_need_help_web/live/activity_live/index.ex:848
#: lib/who_need_help_web/live/category_proposal_live.ex:284 #: lib/who_need_help_web/live/category_proposal_live.ex:284
#: lib/who_need_help_web/live/leaderboard_live.ex:91 #: lib/who_need_help_web/live/leaderboard_live.ex:91
#: lib/who_need_help_web/live/moderation_live.ex:465 #: lib/who_need_help_web/live/moderation_live.ex:465
@ -2659,7 +2659,7 @@ msgstr "Загрузить предыдущие сообщения"
#: lib/who_need_help_web/live/profile_live.ex:363 #: lib/who_need_help_web/live/profile_live.ex:363
#: lib/who_need_help_web/live/public_profile_live.ex:178 #: lib/who_need_help_web/live/public_profile_live.ex:178
#: lib/who_need_help_web/live/report_live.ex:98 #: lib/who_need_help_web/live/report_live.ex:98
#: lib/who_need_help_web/live/request_live/index.ex:805 #: lib/who_need_help_web/live/request_live/index.ex:920
#: lib/who_need_help_web/live/support_operations_live.ex:306 #: lib/who_need_help_web/live/support_operations_live.ex:306
#: lib/who_need_help_web/live/support_operations_live.ex:505 #: lib/who_need_help_web/live/support_operations_live.ex:505
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -2667,7 +2667,7 @@ msgid "Load more"
msgstr "Загрузить ещё" msgstr "Загрузить ещё"
#: lib/who_need_help_web/live/activity_live/show.ex:544 #: lib/who_need_help_web/live/activity_live/show.ex:544
#: lib/who_need_help_web/live/request_live/index.ex:701 #: lib/who_need_help_web/live/request_live/index.ex:816
#: lib/who_need_help_web/live/request_live/show.ex:1275 #: lib/who_need_help_web/live/request_live/show.ex:1275
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "The map is unavailable in this browser. Request details remain usable." msgid "The map is unavailable in this browser. Request details remain usable."
@ -4656,45 +4656,37 @@ msgstr "Перетащите, чтобы переместить точную т
msgid "Exact point selected. Drag the red pin or click the map to move it." msgid "Exact point selected. Drag the red pin or click the map to move it."
msgstr "Точная точка выбрана. Перетащите красный маркер или нажмите на карту, чтобы переместить её." msgstr "Точная точка выбрана. Перетащите красный маркер или нажмите на карту, чтобы переместить её."
#: lib/who_need_help_web/live/request_live/index.ex:539 #: lib/who_need_help_web/live/activity_live/index.ex:559
#, elixir-autogen, elixir-format #: lib/who_need_help_web/live/request_live/index.ex:593
msgid "%{count} request in this map area"
msgid_plural "%{count} requests in this map area"
msgstr[0] "%{count} заявка в этой области карты"
msgstr[1] "%{count} заявки в этой области карты"
msgstr[2] "%{count} заявок в этой области карты"
#: lib/who_need_help_web/live/activity_live/index.ex:502
#: lib/who_need_help_web/live/request_live/index.ex:516
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Area or city" msgid "Area or city"
msgstr "Район или город" msgstr "Район или город"
#: lib/who_need_help_web/live/activity_live/index.ex:594 #: lib/who_need_help_web/live/activity_live/index.ex:689
#: lib/who_need_help_web/live/request_live/index.ex:606 #: lib/who_need_help_web/live/request_live/index.ex:721
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Choose an area on the map" msgid "Choose an area on the map"
msgstr "Выберите область на карте" msgstr "Выберите область на карте"
#: lib/who_need_help_web/live/request_live/index.ex:436 #: lib/who_need_help_web/live/request_live/index.ex:513
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Explore privacy-friendly areas and public exact meeting points chosen by requesters." msgid "Explore privacy-friendly areas and public exact meeting points chosen by requesters."
msgstr "Просматривайте безопасные для приватности области и точные публичные места встречи, выбранные авторами заявок." msgstr "Просматривайте безопасные для приватности области и точные публичные места встречи, выбранные авторами заявок."
#: lib/who_need_help_web/live/activity_live/index.ex:553 #: lib/who_need_help_web/live/activity_live/index.ex:647
#: lib/who_need_help_web/live/request_live/index.ex:565 #: lib/who_need_help_web/live/request_live/index.ex:679
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "List" msgid "List"
msgstr "Список" msgstr "Список"
#: lib/who_need_help_web/live/request_live/index.ex:677 #: lib/who_need_help_web/live/request_live/index.ex:792
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Load more in this area" msgid "Load more in this area"
msgstr "Загрузить ещё в этой области" msgstr "Загрузить ещё в этой области"
#: lib/who_need_help_web/components/layouts/root.html.heex:5 #: lib/who_need_help_web/components/layouts/root.html.heex:5
#: lib/who_need_help_web/live/activity_live/index.ex:573 #: lib/who_need_help_web/live/activity_live/index.ex:667
#: lib/who_need_help_web/live/request_live/index.ex:585 #: lib/who_need_help_web/live/request_live/index.ex:699
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Map" msgid "Map"
msgstr "Карта" msgstr "Карта"
@ -4704,77 +4696,65 @@ msgstr "Карта"
msgid "Map preview" msgid "Map preview"
msgstr "Предпросмотр карты" msgstr "Предпросмотр карты"
#: lib/who_need_help_web/live/activity_live/index.ex:606 #: lib/who_need_help_web/live/activity_live/index.ex:701
#: lib/who_need_help_web/live/request_live/index.ex:618 #: lib/who_need_help_web/live/request_live/index.ex:733
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Move or zoom the map to search somewhere else." msgid "Move or zoom the map to search somewhere else."
msgstr "Переместите или масштабируйте карту, чтобы искать в другом месте." msgstr "Переместите или масштабируйте карту, чтобы искать в другом месте."
#: lib/who_need_help_web/live/activity_live/index.ex:540 #: lib/who_need_help_web/live/request_live/index.ex:731
#: lib/who_need_help_web/live/request_live/index.ex:552
#, elixir-autogen, elixir-format
msgid "Move the map, then search the newly visible area."
msgstr "Переместите карту, затем выполните поиск в новой видимой области."
#: lib/who_need_help_web/live/request_live/index.ex:616
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No open requests in this area" msgid "No open requests in this area"
msgstr "В этой области нет открытых заявок" msgstr "В этой области нет открытых заявок"
#: lib/who_need_help_web/live/request_live/index.ex:608 #: lib/who_need_help_web/live/request_live/index.ex:723
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Only requests from the selected map area will be loaded." msgid "Only requests from the selected map area will be loaded."
msgstr "Будут загружены только заявки из выбранной области карты." msgstr "Будут загружены только заявки из выбранной области карты."
#: lib/who_need_help_web/components/layouts/root.html.heex:8 #: lib/who_need_help_web/components/layouts/root.html.heex:8
#: lib/who_need_help_web/live/request_live/index.ex:704 #: lib/who_need_help_web/live/request_live/index.ex:819
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Open request" msgid "Open request"
msgstr "Открыть заявку" msgstr "Открыть заявку"
#: lib/who_need_help_web/live/activity_live/index.ex:503 #: lib/who_need_help_web/live/activity_live/index.ex:560
#: lib/who_need_help_web/live/request_live/index.ex:517 #: lib/who_need_help_web/live/request_live/index.ex:594
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Optional text search" msgid "Optional text search"
msgstr "Необязательный текстовый поиск" msgstr "Необязательный текстовый поиск"
#: lib/who_need_help_web/live/request_live/index.ex:683 #: lib/who_need_help_web/live/request_live/index.ex:798
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Requests without map coordinates appear only when their public area description matches the text search." msgid "Requests without map coordinates appear only when their public area description matches the text search."
msgstr "Заявки без координат на карте отображаются только тогда, когда описание публичной области совпадает с текстовым поиском." msgstr "Заявки без координат на карте отображаются только тогда, когда описание публичной области совпадает с текстовым поиском."
#: lib/who_need_help_web/live/activity_live/index.ex:544 #: lib/who_need_help_web/live/activity_live/index.ex:638
#: lib/who_need_help_web/live/request_live/index.ex:556 #: lib/who_need_help_web/live/request_live/index.ex:670
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Results layout" msgid "Results layout"
msgstr "Расположение результатов" msgstr "Расположение результатов"
#: lib/who_need_help_web/live/activity_live/index.ex:693
#: lib/who_need_help_web/live/request_live/index.ex:719
#, elixir-autogen, elixir-format
msgid "Search this area"
msgstr "Искать в этой области"
#: lib/who_need_help_web/controllers/page_html/home.html.heex:171 #: lib/who_need_help_web/controllers/page_html/home.html.heex:171
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Static preview" msgid "Static preview"
msgstr "Статический просмотр" msgstr "Статический просмотр"
#: lib/who_need_help_web/live/activity_live/index.ex:563 #: lib/who_need_help_web/live/activity_live/index.ex:657
#: lib/who_need_help_web/live/request_live/index.ex:575 #: lib/who_need_help_web/live/request_live/index.ex:689
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Together" msgid "Together"
msgstr "Вместе" msgstr "Вместе"
#: lib/who_need_help_web/components/layouts/root.html.heex:6 #: lib/who_need_help_web/components/layouts/root.html.heex:6
#: lib/who_need_help_web/controllers/page_html/home.html.heex:160 #: lib/who_need_help_web/controllers/page_html/home.html.heex:160
#: lib/who_need_help_web/live/activity_live/index.ex:681 #: lib/who_need_help_web/live/activity_live/index.ex:778
#: lib/who_need_help_web/live/activity_live/new.ex:355 #: lib/who_need_help_web/live/activity_live/new.ex:355
#: lib/who_need_help_web/live/activity_live/new.ex:414 #: lib/who_need_help_web/live/activity_live/new.ex:414
#: lib/who_need_help_web/live/activity_live/show.ex:546 #: lib/who_need_help_web/live/activity_live/show.ex:546
#: lib/who_need_help_web/live/notification_live.ex:602 #: lib/who_need_help_web/live/notification_live.ex:602
#: lib/who_need_help_web/live/notification_live.ex:621 #: lib/who_need_help_web/live/notification_live.ex:621
#: lib/who_need_help_web/live/request_live/index.ex:703 #: lib/who_need_help_web/live/request_live/index.ex:818
#: lib/who_need_help_web/live/request_live/new.ex:485 #: lib/who_need_help_web/live/request_live/new.ex:485
#: lib/who_need_help_web/live/request_live/new.ex:563 #: lib/who_need_help_web/live/request_live/new.ex:563
#: lib/who_need_help_web/live/request_live/show.ex:1277 #: lib/who_need_help_web/live/request_live/show.ex:1277
@ -5164,7 +5144,7 @@ msgid "Nearby alert deleted."
msgstr "Уведомление поблизости удалено." msgstr "Уведомление поблизости удалено."
#: lib/who_need_help_web/live/notification_live.ex:456 #: lib/who_need_help_web/live/notification_live.ex:456
#: lib/who_need_help_web/live/request_live/index.ex:462 #: lib/who_need_help_web/live/request_live/index.ex:539
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Nearby requests" msgid "Nearby requests"
msgstr "Заявки поблизости" msgstr "Заявки поблизости"
@ -5504,7 +5484,7 @@ msgid "WebGL is unavailable in this browser, so the full map cannot start. Selec
msgstr "WebGL недоступен в этом браузере, поэтому полная карта не может запуститься. Выберите пример ниже или попробуйте запустить карту ещё раз." msgstr "WebGL недоступен в этом браузере, поэтому полная карта не может запуститься. Выберите пример ниже или попробуйте запустить карту ещё раз."
#: lib/who_need_help_web/components/layouts/root.html.heex:7 #: lib/who_need_help_web/components/layouts/root.html.heex:7
#: lib/who_need_help_web/live/activity_live/index.ex:682 #: lib/who_need_help_web/live/activity_live/index.ex:779
#: lib/who_need_help_web/live/activity_live/show.ex:547 #: lib/who_need_help_web/live/activity_live/show.ex:547
#: lib/who_need_help_web/live/request_live/show.ex:1278 #: lib/who_need_help_web/live/request_live/show.ex:1278
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -6069,7 +6049,7 @@ msgstr "Теперь ваш отзыв виден"
msgid "Delivery settings" msgid "Delivery settings"
msgstr "Настройки доставки" msgstr "Настройки доставки"
#: lib/who_need_help_web/live/request_live/index.ex:660 #: lib/who_need_help_web/live/request_live/index.ex:775
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Expires" msgid "Expires"
msgstr "Истекает" msgstr "Истекает"
@ -6089,30 +6069,22 @@ msgstr "Оповещения рядом"
msgid "Notification sections" msgid "Notification sections"
msgstr "Разделы уведомлений" msgstr "Разделы уведомлений"
#: lib/who_need_help_web/live/activity_live/index.ex:674 #: lib/who_need_help_web/live/activity_live/index.ex:771
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "%{count} activities" msgid "%{count} activities"
msgstr "Активностей: %{count}" msgstr "Активностей: %{count}"
#: lib/who_need_help_web/live/activity_live/index.ex:527 #: lib/who_need_help_web/live/request_live/index.ex:820
#, elixir-autogen, elixir-format
msgid "%{count} activity in this map area"
msgid_plural "%{count} activities in this map area"
msgstr[0] "%{count} активность в этой области карты"
msgstr[1] "%{count} активности в этой области карты"
msgstr[2] "%{count} активностей в этой области карты"
#: lib/who_need_help_web/live/request_live/index.ex:705
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "%{count} requests" msgid "%{count} requests"
msgstr "Заявок: %{count}" msgstr "Заявок: %{count}"
#: lib/who_need_help_web/live/activity_live/index.ex:717 #: lib/who_need_help_web/live/activity_live/index.ex:814
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Activities you create or ask to join will appear here. Leaving removes an activity from this list." msgid "Activities you create or ask to join will appear here. Leaving removes an activity from this list."
msgstr "Созданные вами активности и те, к которым вы попросили присоединиться, появятся здесь. После выхода активность исчезнет из списка." msgstr "Созданные вами активности и те, к которым вы попросили присоединиться, появятся здесь. После выхода активность исчезнет из списка."
#: lib/who_need_help_web/live/activity_live/index.ex:457 #: lib/who_need_help_web/live/activity_live/index.ex:514
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Activity views" msgid "Activity views"
msgstr "Разделы активностей" msgstr "Разделы активностей"
@ -6127,12 +6099,12 @@ msgstr "Выберите категорию и понятно опишите з
msgid "Confirm the safety guidance before asking nearby people for help." msgid "Confirm the safety guidance before asking nearby people for help."
msgstr "Подтвердите правила безопасности перед публикацией заявки." msgstr "Подтвердите правила безопасности перед публикацией заявки."
#: lib/who_need_help_web/live/request_live/index.ex:753 #: lib/who_need_help_web/live/request_live/index.ex:868
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Create request" msgid "Create request"
msgstr "Создать заявку" msgstr "Создать заявку"
#: lib/who_need_help_web/live/request_live/index.ex:776 #: lib/who_need_help_web/live/request_live/index.ex:891
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Create your first request" msgid "Create your first request"
msgstr "Создать первую заявку" msgstr "Создать первую заявку"
@ -6147,43 +6119,43 @@ msgstr "Что нужно сделать"
msgid "Location" msgid "Location"
msgstr "Место" msgstr "Место"
#: lib/who_need_help_web/live/activity_live/index.ex:463 #: lib/who_need_help_web/live/activity_live/index.ex:520
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "My activities" msgid "My activities"
msgstr "Мои активности" msgstr "Мои активности"
#: lib/who_need_help_web/live/request_live/index.ex:463 #: lib/who_need_help_web/live/request_live/index.ex:540
#: lib/who_need_help_web/live/request_live/index.ex:747 #: lib/who_need_help_web/live/request_live/index.ex:862
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "My requests" msgid "My requests"
msgstr "Мои заявки" msgstr "Мои заявки"
#: lib/who_need_help_web/live/activity_live/index.ex:462 #: lib/who_need_help_web/live/activity_live/index.ex:519
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Nearby activities" msgid "Nearby activities"
msgstr "Активности рядом" msgstr "Активности рядом"
#: lib/who_need_help_web/live/activity_live/index.ex:715 #: lib/who_need_help_web/live/activity_live/index.ex:812
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No activities yet" msgid "No activities yet"
msgstr "Активностей пока нет" msgstr "Активностей пока нет"
#: lib/who_need_help_web/live/activity_live/index.ex:604 #: lib/who_need_help_web/live/activity_live/index.ex:699
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No open activities in this area" msgid "No open activities in this area"
msgstr "В этой области нет открытых активностей" msgstr "В этой области нет открытых активностей"
#: lib/who_need_help_web/live/request_live/index.ex:771 #: lib/who_need_help_web/live/request_live/index.ex:886
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No requests yet" msgid "No requests yet"
msgstr "Заявок пока нет" msgstr "Заявок пока нет"
#: lib/who_need_help_web/live/activity_live/index.ex:596 #: lib/who_need_help_web/live/activity_live/index.ex:691
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Only activities from the selected map area will be loaded." msgid "Only activities from the selected map area will be loaded."
msgstr "Будут загружены только активности из выбранной области карты." msgstr "Будут загружены только активности из выбранной области карты."
#: lib/who_need_help_web/live/activity_live/index.ex:673 #: lib/who_need_help_web/live/activity_live/index.ex:770
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Open activity" msgid "Open activity"
msgstr "Открыть активность" msgstr "Открыть активность"
@ -6193,12 +6165,12 @@ msgstr "Открыть активность"
msgid "Request form steps" msgid "Request form steps"
msgstr "Шаги создания заявки" msgstr "Шаги создания заявки"
#: lib/who_need_help_web/live/request_live/index.ex:457 #: lib/who_need_help_web/live/request_live/index.ex:534
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Request views" msgid "Request views"
msgstr "Разделы заявок" msgstr "Разделы заявок"
#: lib/who_need_help_web/live/request_live/index.ex:773 #: lib/who_need_help_web/live/request_live/index.ex:888
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Requests you publish or accept will appear here." msgid "Requests you publish or accept will appear here."
msgstr "Здесь появятся заявки, которые вы создали или приняли." msgstr "Здесь появятся заявки, которые вы создали или приняли."
@ -6223,7 +6195,7 @@ msgstr "Укажите срочность и время закрытия зая
msgid "Share only as much location detail as helpers need." msgid "Share only as much location detail as helpers need."
msgstr "Покажите помощникам только необходимую информацию о месте." msgstr "Покажите помощникам только необходимую информацию о месте."
#: lib/who_need_help_web/live/activity_live/index.ex:679 #: lib/who_need_help_web/live/activity_live/index.ex:776
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "The map is unavailable in this browser. Activity details remain usable." msgid "The map is unavailable in this browser. Activity details remain usable."
msgstr "Карта недоступна в этом браузере. Информация об активностях по-прежнему доступна." msgstr "Карта недоступна в этом браузере. Информация об активностях по-прежнему доступна."
@ -6233,7 +6205,7 @@ msgstr "Карта недоступна в этом браузере. Инфор
msgid "Timing" msgid "Timing"
msgstr "Время" msgstr "Время"
#: lib/who_need_help_web/live/request_live/index.ex:749 #: lib/who_need_help_web/live/request_live/index.ex:864
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Track requests you created and requests you accepted as a helper." msgid "Track requests you created and requests you accepted as a helper."
msgstr "Следите за созданными заявками и за теми, которые вы приняли как помощник." msgstr "Следите за созданными заявками и за теми, которые вы приняли как помощник."
@ -6894,32 +6866,88 @@ msgstr "Что должны видеть люди до одобрения?"
msgid "Choose the meeting point on the map or use your current location." msgid "Choose the meeting point on the map or use your current location."
msgstr "Выберите место встречи на карте или используйте своё текущее местоположение." msgstr "Выберите место встречи на карте или используйте своё текущее местоположение."
#: lib/who_need_help_web/live/activity_live/index.ex:522 #: lib/who_need_help_web/live/activity_live/index.ex:579
#: lib/who_need_help_web/live/activity_live/index.ex:586 #: lib/who_need_help_web/live/activity_live/index.ex:681
#: lib/who_need_help_web/live/activity_live/index.ex:707 #: lib/who_need_help_web/live/activity_live/index.ex:804
#: lib/who_need_help_web/live/request_live/index.ex:534 #: lib/who_need_help_web/live/request_live/index.ex:611
#: lib/who_need_help_web/live/request_live/index.ex:598 #: lib/who_need_help_web/live/request_live/index.ex:713
#: lib/who_need_help_web/live/request_live/index.ex:763 #: lib/who_need_help_web/live/request_live/index.ex:878
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Loading results…" msgid "Loading results…"
msgstr "Загружаем результаты…" msgstr "Загружаем результаты…"
#: lib/who_need_help_web/live/activity_live/index.ex:676 #: lib/who_need_help_web/live/activity_live/index.ex:773
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Maximum zoom reached. Matching activities are listed beside the map." msgid "Maximum zoom reached. Matching activities are listed beside the map."
msgstr "Достигнут максимальный масштаб. Подходящие мероприятия перечислены рядом с картой." msgstr "Достигнут максимальный масштаб. Подходящие мероприятия перечислены рядом с картой."
#: lib/who_need_help_web/live/request_live/index.ex:707 #: lib/who_need_help_web/live/request_live/index.ex:822
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Maximum zoom reached. Matching requests are listed beside the map." msgid "Maximum zoom reached. Matching requests are listed beside the map."
msgstr "Достигнут максимальный масштаб. Подходящие заявки перечислены рядом с картой." msgstr "Достигнут максимальный масштаб. Подходящие заявки перечислены рядом с картой."
#: lib/who_need_help_web/live/activity_live/index.ex:535 #: lib/who_need_help_web/live/activity_live/index.ex:584
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "of %{count} matching activities with map locations" msgid "%{count} activity in the selected map area"
msgstr "из %{count} подходящих мероприятий с местоположением на карте" msgid_plural "%{count} activities in the selected map area"
msgstr[0] "%{count} мероприятие в выбранной области карты"
msgstr[1] "%{count} мероприятия в выбранной области карты"
msgstr[2] "%{count} мероприятий в выбранной области карты"
#: lib/who_need_help_web/live/request_live/index.ex:547 #: lib/who_need_help_web/live/request_live/index.ex:616
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "of %{count} matching requests with map locations" msgid "%{count} request in the selected map area"
msgstr "из %{count} подходящих заявок с местоположением на карте" msgid_plural "%{count} requests in the selected map area"
msgstr[0] "%{count} заявка в выбранной области карты"
msgstr[1] "%{count} заявки в выбранной области карты"
msgstr[2] "%{count} заявок в выбранной области карты"
#: lib/who_need_help_web/live/activity_live/index.ex:603
#: lib/who_need_help_web/live/request_live/index.ex:635
#, elixir-autogen, elixir-format
msgid "Map moved. Results still show the previous area."
msgstr "Карта перемещена. Пока показаны результаты для предыдущей области."
#: lib/who_need_help_web/live/activity_live/index.ex:621
#, elixir-autogen, elixir-format
msgid "Move or zoom the map, then choose “Show activities in this area”."
msgstr "Переместите или масштабируйте карту, затем нажмите «Показать мероприятия в этой области»."
#: lib/who_need_help_web/live/request_live/index.ex:653
#, elixir-autogen, elixir-format
msgid "Move or zoom the map, then choose “Show requests in this area”."
msgstr "Переместите или масштабируйте карту, затем нажмите «Показать заявки в этой области»."
#: lib/who_need_help_web/live/activity_live/index.ex:615
#: lib/who_need_help_web/live/request_live/index.ex:647
#, elixir-autogen, elixir-format
msgid "Results update automatically after you stop moving the map."
msgstr "Результаты обновятся автоматически, когда вы закончите перемещать карту."
#: lib/who_need_help_web/live/activity_live/index.ex:790
#, elixir-autogen, elixir-format
msgid "Show activities in this area"
msgstr "Показать мероприятия в этой области"
#: lib/who_need_help_web/live/request_live/index.ex:834
#, elixir-autogen, elixir-format
msgid "Show requests in this area"
msgstr "Показать заявки в этой области"
#: lib/who_need_help_web/live/activity_live/index.ex:593
#: lib/who_need_help_web/live/request_live/index.ex:625
#, elixir-autogen, elixir-format
msgid "Showing %{shown} of %{count} in the list."
msgstr "В списке показано %{shown} из %{count}."
#: lib/who_need_help_web/live/activity_live/index.ex:635
#: lib/who_need_help_web/live/request_live/index.ex:667
#, elixir-autogen, elixir-format
msgid "Update results as map moves"
msgstr "Обновлять результаты при перемещении карты"
#: lib/who_need_help_web/live/activity_live/index.ex:609
#: lib/who_need_help_web/live/request_live/index.ex:641
#, elixir-autogen, elixir-format
msgid "Updating results for the visible map area…"
msgstr "Обновляем результаты для видимой области карты…"

View File

@ -184,7 +184,7 @@ msgid "Active"
msgstr "Активний" msgstr "Активний"
#: lib/who_need_help_web/components/layouts.ex:231 #: lib/who_need_help_web/components/layouts.ex:231
#: lib/who_need_help_web/live/activity_live/index.ex:37 #: lib/who_need_help_web/live/activity_live/index.ex:41
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Activities" msgid "Activities"
msgstr "Активності" msgstr "Активності"
@ -226,7 +226,7 @@ msgstr "Активність опубліковано. Ви схвалюєте
msgid "Activity restored." msgid "Activity restored."
msgstr "Активність відновлено." msgstr "Активність відновлено."
#: lib/who_need_help_web/live/activity_live/index.ex:491 #: lib/who_need_help_web/live/activity_live/index.ex:548
#: lib/who_need_help_web/live/activity_live/new.ex:204 #: lib/who_need_help_web/live/activity_live/new.ex:204
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Activity type" msgid "Activity type"
@ -243,12 +243,12 @@ msgstr "Додати непідтверджене посилання"
msgid "Administrator" msgid "Administrator"
msgstr "Адміністратор" msgstr "Адміністратор"
#: lib/who_need_help_web/live/activity_live/index.ex:493 #: lib/who_need_help_web/live/activity_live/index.ex:550
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "All activities" msgid "All activities"
msgstr "Усі активності" msgstr "Усі активності"
#: lib/who_need_help_web/live/request_live/index.ex:493 #: lib/who_need_help_web/live/request_live/index.ex:570
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "All categories" msgid "All categories"
msgstr "Усі категорії" msgstr "Усі категорії"
@ -263,7 +263,7 @@ msgstr "Уже зареєстровані?"
msgid "Another helper already accepted this request." msgid "Another helper already accepted this request."
msgstr "Інший помічник уже прийняв цю заявку." msgstr "Інший помічник уже прийняв цю заявку."
#: lib/who_need_help_web/live/request_live/index.ex:508 #: lib/who_need_help_web/live/request_live/index.ex:585
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Any urgency" msgid "Any urgency"
msgstr "Будь-яка терміновість" msgstr "Будь-яка терміновість"
@ -383,16 +383,16 @@ msgstr "Скасувати активність"
msgid "Cancel request" msgid "Cancel request"
msgstr "Скасувати запит" msgstr "Скасувати запит"
#: lib/who_need_help_web/live/activity_live/index.ex:422 #: lib/who_need_help_web/live/activity_live/index.ex:479
#: lib/who_need_help_web/live/activity_live/show.ex:344 #: lib/who_need_help_web/live/activity_live/show.ex:344
#: lib/who_need_help_web/live/request_live/index.ex:413 #: lib/who_need_help_web/live/request_live/index.ex:490
#: lib/who_need_help_web/live/request_live/index.ex:414 #: lib/who_need_help_web/live/request_live/index.ex:491
#: lib/who_need_help_web/live/request_live/show.ex:956 #: lib/who_need_help_web/live/request_live/show.ex:956
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Cancelled" msgid "Cancelled"
msgstr "Скасовано" msgstr "Скасовано"
#: lib/who_need_help_web/live/request_live/index.ex:491 #: lib/who_need_help_web/live/request_live/index.ex:568
#: lib/who_need_help_web/live/request_live/new.ex:302 #: lib/who_need_help_web/live/request_live/new.ex:302
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Category" msgid "Category"
@ -476,7 +476,7 @@ msgstr "Закрити"
msgid "Coffee and conversation" msgid "Coffee and conversation"
msgstr "Кава й розмова" msgstr "Кава й розмова"
#: lib/who_need_help_web/live/activity_live/index.ex:436 #: lib/who_need_help_web/live/activity_live/index.ex:493
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Coffee, cinema, walks, and hikes are separate from urgent help and never affect helper ratings." msgid "Coffee, cinema, walks, and hikes are separate from urgent help and never affect helper ratings."
msgstr "" msgstr ""
@ -493,19 +493,19 @@ msgstr "Коментар (необов’язково)"
msgid "Community helpers" msgid "Community helpers"
msgstr "Помічники спільноти" msgstr "Помічники спільноти"
#: lib/who_need_help_web/live/activity_live/index.ex:647 #: lib/who_need_help_web/live/activity_live/index.ex:744
#: lib/who_need_help_web/live/activity_live/show.ex:403 #: lib/who_need_help_web/live/activity_live/show.ex:403
#: lib/who_need_help_web/live/activity_live/show.ex:639 #: lib/who_need_help_web/live/activity_live/show.ex:639
#: lib/who_need_help_web/live/activity_live/show.ex:698 #: lib/who_need_help_web/live/activity_live/show.ex:698
#: lib/who_need_help_web/live/request_live/index.ex:656 #: lib/who_need_help_web/live/request_live/index.ex:771
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Community member" msgid "Community member"
msgstr "Член спільноти" msgstr "Член спільноти"
#: lib/who_need_help_web/live/activity_live/index.ex:421 #: lib/who_need_help_web/live/activity_live/index.ex:478
#: lib/who_need_help_web/live/activity_live/show.ex:343 #: lib/who_need_help_web/live/activity_live/show.ex:343
#: lib/who_need_help_web/live/request_live/index.ex:411 #: lib/who_need_help_web/live/request_live/index.ex:488
#: lib/who_need_help_web/live/request_live/index.ex:412 #: lib/who_need_help_web/live/request_live/index.ex:489
#: lib/who_need_help_web/live/request_live/show.ex:955 #: lib/who_need_help_web/live/request_live/show.ex:955
#: lib/who_need_help_web/live/request_live/show.ex:974 #: lib/who_need_help_web/live/request_live/show.ex:974
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -559,13 +559,13 @@ msgstr "Інструкції для підтвердження"
msgid "Confirming..." msgid "Confirming..."
msgstr "Підтвердження…" msgstr "Підтвердження…"
#: lib/who_need_help_web/live/activity_live/index.ex:442 #: lib/who_need_help_web/live/activity_live/index.ex:499
#: lib/who_need_help_web/live/activity_live/new.ex:12 #: lib/who_need_help_web/live/activity_live/new.ex:12
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Create activity" msgid "Create activity"
msgstr "Створити активність" msgstr "Створити активність"
#: lib/who_need_help_web/live/activity_live/index.ex:722 #: lib/who_need_help_web/live/activity_live/index.ex:819
#: lib/who_need_help_web/live/activity_live/new.ex:180 #: lib/who_need_help_web/live/activity_live/new.ex:180
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Create an activity" msgid "Create an activity"
@ -576,7 +576,7 @@ msgstr "Створити активність"
msgid "Create category" msgid "Create category"
msgstr "Створити категорію" msgstr "Створити категорію"
#: lib/who_need_help_web/live/request_live/index.ex:442 #: lib/who_need_help_web/live/request_live/index.ex:519
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Create urgent request" msgid "Create urgent request"
msgstr "Створити термінову заявку" msgstr "Створити термінову заявку"
@ -736,7 +736,7 @@ msgstr "Спливає:"
msgid "Explain what is already arranged and what the volunteer needs to do." msgid "Explain what is already arranged and what the volunteer needs to do."
msgstr "Поясніть, що вже організовано й що має зробити волонтер." msgstr "Поясніть, що вже організовано й що має зробити волонтер."
#: lib/who_need_help_web/live/activity_live/index.ex:433 #: lib/who_need_help_web/live/activity_live/index.ex:490
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Find people to join" msgid "Find people to join"
msgstr "Знайти компанію" msgstr "Знайти компанію"
@ -936,8 +936,8 @@ msgstr ""
"Android показує постійне сповіщення й може продовжувати передавання після " "Android показує постійне сповіщення й може продовжувати передавання після "
"згортання. Після зупинення передавання вихідні координати видаляються." "згортання. Після зупинення передавання вихідні координати видаляються."
#: lib/who_need_help_web/live/request_live/index.ex:409 #: lib/who_need_help_web/live/request_live/index.ex:486
#: lib/who_need_help_web/live/request_live/index.ex:410 #: lib/who_need_help_web/live/request_live/index.ex:487
#: lib/who_need_help_web/live/request_live/show.ex:954 #: lib/who_need_help_web/live/request_live/show.ex:954
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "In progress" msgid "In progress"
@ -1065,8 +1065,8 @@ msgstr "Позначити завершеною"
msgid "Match and coordinate" msgid "Match and coordinate"
msgstr "Знайдіть помічника й узгодьте деталі" msgstr "Знайдіть помічника й узгодьте деталі"
#: lib/who_need_help_web/live/request_live/index.ex:407 #: lib/who_need_help_web/live/request_live/index.ex:484
#: lib/who_need_help_web/live/request_live/index.ex:408 #: lib/who_need_help_web/live/request_live/index.ex:485
#: lib/who_need_help_web/live/request_live/show.ex:952 #: lib/who_need_help_web/live/request_live/show.ex:952
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Matched" msgid "Matched"
@ -1095,7 +1095,7 @@ msgstr ""
msgid "Medicine requests" msgid "Medicine requests"
msgstr "Запити на ліки" msgstr "Запити на ліки"
#: lib/who_need_help_web/live/activity_live/index.ex:449 #: lib/who_need_help_web/live/activity_live/index.ex:506
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Meet in public first, keep exact details inside the approved group, and leave or report anything that feels unsafe." msgid "Meet in public first, keep exact details inside the approved group, and leave or report anything that feels unsafe."
msgstr "" msgstr ""
@ -1149,12 +1149,12 @@ msgstr "Модератор"
msgid "Moderator access is required." msgid "Moderator access is required."
msgstr "Потрібен доступ модератора." msgstr "Потрібен доступ модератора."
#: lib/who_need_help_web/live/request_live/index.ex:433 #: lib/who_need_help_web/live/request_live/index.ex:510
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "NEARBY MUTUAL AID" msgid "NEARBY MUTUAL AID"
msgstr "ВЗАЄМОДОПОМОГА ПОРУЧ" msgstr "ВЗАЄМОДОПОМОГА ПОРУЧ"
#: lib/who_need_help_web/live/request_live/index.ex:47 #: lib/who_need_help_web/live/request_live/index.ex:51
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Nearby help" msgid "Nearby help"
msgstr "Допомога поруч" msgstr "Допомога поруч"
@ -1237,9 +1237,9 @@ msgid "Not for emergencies"
msgstr "Не для екстрених ситуацій" msgstr "Не для екстрених ситуацій"
#: lib/who_need_help_web/live/notification_live.ex:748 #: lib/who_need_help_web/live/notification_live.ex:748
#: lib/who_need_help_web/live/request_live/index.ex:397 #: lib/who_need_help_web/live/request_live/index.ex:474
#: lib/who_need_help_web/live/request_live/index.ex:398 #: lib/who_need_help_web/live/request_live/index.ex:475
#: lib/who_need_help_web/live/request_live/index.ex:509 #: lib/who_need_help_web/live/request_live/index.ex:586
#: lib/who_need_help_web/live/request_live/new.ex:449 #: lib/who_need_help_web/live/request_live/new.ex:449
#: lib/who_need_help_web/live/request_live/show.ex:943 #: lib/who_need_help_web/live/request_live/show.ex:943
#: lib/who_need_help_web/live/request_live/show.ex:944 #: lib/who_need_help_web/live/request_live/show.ex:944
@ -1247,7 +1247,7 @@ msgstr "Не для екстрених ситуацій"
msgid "Now" msgid "Now"
msgstr "Зараз" msgstr "Зараз"
#: lib/who_need_help_web/live/activity_live/index.ex:431 #: lib/who_need_help_web/live/activity_live/index.ex:488
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "OPTIONAL SOCIAL PLANS" msgid "OPTIONAL SOCIAL PLANS"
msgstr "НЕОБОВ’ЯЗКОВІ СПІЛЬНІ ПЛАНИ" msgstr "НЕОБОВ’ЯЗКОВІ СПІЛЬНІ ПЛАНИ"
@ -1267,12 +1267,12 @@ msgstr ""
#: lib/who_need_help/notifications/text.ex:140 #: lib/who_need_help/notifications/text.ex:140
#: lib/who_need_help_web/controllers/content_removal_html.ex:21 #: lib/who_need_help_web/controllers/content_removal_html.ex:21
#: lib/who_need_help_web/controllers/support_html.ex:16 #: lib/who_need_help_web/controllers/support_html.ex:16
#: lib/who_need_help_web/live/activity_live/index.ex:420 #: lib/who_need_help_web/live/activity_live/index.ex:477
#: lib/who_need_help_web/live/activity_live/show.ex:342 #: lib/who_need_help_web/live/activity_live/show.ex:342
#: lib/who_need_help_web/live/moderation_live.ex:258 #: lib/who_need_help_web/live/moderation_live.ex:258
#: lib/who_need_help_web/live/report_live.ex:104 #: lib/who_need_help_web/live/report_live.ex:104
#: lib/who_need_help_web/live/request_live/index.ex:405 #: lib/who_need_help_web/live/request_live/index.ex:482
#: lib/who_need_help_web/live/request_live/index.ex:406 #: lib/who_need_help_web/live/request_live/index.ex:483
#: lib/who_need_help_web/live/request_live/show.ex:951 #: lib/who_need_help_web/live/request_live/show.ex:951
#: lib/who_need_help_web/live/support_operations_live.ex:237 #: lib/who_need_help_web/live/support_operations_live.ex:237
#: lib/who_need_help_web/live/support_operations_live.ex:438 #: lib/who_need_help_web/live/support_operations_live.ex:438
@ -1745,9 +1745,9 @@ msgid "Save profile"
msgstr "Зберегти профіль" msgstr "Зберегти профіль"
#: lib/who_need_help_web/live/notification_live.ex:750 #: lib/who_need_help_web/live/notification_live.ex:750
#: lib/who_need_help_web/live/request_live/index.ex:401 #: lib/who_need_help_web/live/request_live/index.ex:478
#: lib/who_need_help_web/live/request_live/index.ex:402 #: lib/who_need_help_web/live/request_live/index.ex:479
#: lib/who_need_help_web/live/request_live/index.ex:511 #: lib/who_need_help_web/live/request_live/index.ex:588
#: lib/who_need_help_web/live/request_live/new.ex:451 #: lib/who_need_help_web/live/request_live/new.ex:451
#: lib/who_need_help_web/live/request_live/show.ex:947 #: lib/who_need_help_web/live/request_live/show.ex:947
#: lib/who_need_help_web/live/request_live/show.ex:948 #: lib/who_need_help_web/live/request_live/show.ex:948
@ -2019,7 +2019,7 @@ msgstr "Цей стан активності вже змінено."
msgid "This interaction is blocked." msgid "This interaction is blocked."
msgstr "Ця взаємодія заблокована." msgstr "Ця взаємодія заблокована."
#: lib/who_need_help_web/live/request_live/index.ex:449 #: lib/who_need_help_web/live/request_live/index.ex:526
#: lib/who_need_help_web/live/request_live/show.ex:1022 #: lib/who_need_help_web/live/request_live/show.ex:1022
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "This is not an emergency service. Contact local emergency services for immediate danger." msgid "This is not an emergency service. Contact local emergency services for immediate danger."
@ -2072,9 +2072,9 @@ msgid "To see sent emails, visit"
msgstr "Щоб переглянути надіслані листи, відкрийте" msgstr "Щоб переглянути надіслані листи, відкрийте"
#: lib/who_need_help_web/live/notification_live.ex:749 #: lib/who_need_help_web/live/notification_live.ex:749
#: lib/who_need_help_web/live/request_live/index.ex:399 #: lib/who_need_help_web/live/request_live/index.ex:476
#: lib/who_need_help_web/live/request_live/index.ex:400 #: lib/who_need_help_web/live/request_live/index.ex:477
#: lib/who_need_help_web/live/request_live/index.ex:510 #: lib/who_need_help_web/live/request_live/index.ex:587
#: lib/who_need_help_web/live/request_live/new.ex:450 #: lib/who_need_help_web/live/request_live/new.ex:450
#: lib/who_need_help_web/live/request_live/show.ex:945 #: lib/who_need_help_web/live/request_live/show.ex:945
#: lib/who_need_help_web/live/request_live/show.ex:946 #: lib/who_need_help_web/live/request_live/show.ex:946
@ -2149,7 +2149,7 @@ msgid "Update email instructions"
msgstr "Інструкції для зміни електронної пошти" msgstr "Інструкції для зміни електронної пошти"
#: lib/who_need_help_web/live/notification_live.ex:743 #: lib/who_need_help_web/live/notification_live.ex:743
#: lib/who_need_help_web/live/request_live/index.ex:506 #: lib/who_need_help_web/live/request_live/index.ex:583
#: lib/who_need_help_web/live/request_live/new.ex:447 #: lib/who_need_help_web/live/request_live/new.ex:447
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Urgency" msgid "Urgency"
@ -2304,7 +2304,7 @@ msgstr ""
"через підписку ChatGPT розробника. Ключ OpenAI API та резервний варіант API " "через підписку ChatGPT розробника. Ключ OpenAI API та резервний варіант API "
"з оплатою за використання не застосовуються." "з оплатою за використання не застосовуються."
#: lib/who_need_help_web/live/request_live/index.ex:434 #: lib/who_need_help_web/live/request_live/index.ex:511
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Who needs help?" msgid "Who needs help?"
msgstr "Хто потребує допомоги?" msgstr "Хто потребує допомоги?"
@ -2426,7 +2426,7 @@ msgid "Your review is revealed only after both participants submit."
msgstr "" msgstr ""
"Ваш відгук відкриється лише після того, як його надішлють обидва учасники." "Ваш відгук відкриється лише після того, як його надішлють обидва учасники."
#: lib/who_need_help_web/live/request_live/index.ex:724 #: lib/who_need_help_web/live/request_live/index.ex:839
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Your trust summary" msgid "Your trust summary"
msgstr "Ваші показники довіри" msgstr "Ваші показники довіри"
@ -2447,17 +2447,17 @@ msgstr "повідомлення активності"
msgid "before confirming." msgid "before confirming."
msgstr "перед підтвердженням." msgstr "перед підтвердженням."
#: lib/who_need_help_web/live/activity_live/index.ex:646 #: lib/who_need_help_web/live/activity_live/index.ex:743
#: lib/who_need_help_web/live/category_proposal_live.ex:252 #: lib/who_need_help_web/live/category_proposal_live.ex:252
#: lib/who_need_help_web/live/moderation_live.ex:372 #: lib/who_need_help_web/live/moderation_live.ex:372
#: lib/who_need_help_web/live/request_live/index.ex:655 #: lib/who_need_help_web/live/request_live/index.ex:770
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "by %{name}" msgid "by %{name}"
msgstr "автор: %{name}" msgstr "автор: %{name}"
#: lib/who_need_help_web/live/profile_live.ex:190 #: lib/who_need_help_web/live/profile_live.ex:190
#: lib/who_need_help_web/live/public_profile_live.ex:133 #: lib/who_need_help_web/live/public_profile_live.ex:133
#: lib/who_need_help_web/live/request_live/index.ex:728 #: lib/who_need_help_web/live/request_live/index.ex:843
#: lib/who_need_help_web/live/request_live/show.ex:1374 #: lib/who_need_help_web/live/request_live/show.ex:1374
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "completed" msgid "completed"
@ -2493,7 +2493,7 @@ msgstr "організатор"
msgid "participants only" msgid "participants only"
msgstr "лише учасники" msgstr "лише учасники"
#: lib/who_need_help_web/live/request_live/index.ex:732 #: lib/who_need_help_web/live/request_live/index.ex:847
#: lib/who_need_help_web/live/request_live/show.ex:1378 #: lib/who_need_help_web/live/request_live/show.ex:1378
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "people" msgid "people"
@ -2553,7 +2553,7 @@ msgstr "терміново"
#: lib/who_need_help_web/live/activity_live/show.ex:719 #: lib/who_need_help_web/live/activity_live/show.ex:719
#: lib/who_need_help_web/live/profile_live.ex:285 #: lib/who_need_help_web/live/profile_live.ex:285
#: lib/who_need_help_web/live/public_profile_live.ex:98 #: lib/who_need_help_web/live/public_profile_live.ex:98
#: lib/who_need_help_web/live/request_live/index.ex:736 #: lib/who_need_help_web/live/request_live/index.ex:851
#: lib/who_need_help_web/live/request_live/show.ex:1093 #: lib/who_need_help_web/live/request_live/show.ex:1093
#: lib/who_need_help_web/live/request_live/show.ex:1476 #: lib/who_need_help_web/live/request_live/show.ex:1476
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -2586,8 +2586,8 @@ msgstr "← Заявки"
msgid "Approved" msgid "Approved"
msgstr "Схвалено" msgstr "Схвалено"
#: lib/who_need_help_web/live/request_live/index.ex:415 #: lib/who_need_help_web/live/request_live/index.ex:492
#: lib/who_need_help_web/live/request_live/index.ex:416 #: lib/who_need_help_web/live/request_live/index.ex:493
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Expired" msgid "Expired"
msgstr "Спливло" msgstr "Спливло"
@ -2640,8 +2640,8 @@ msgstr "Незвична частота дій"
msgid "Load earlier messages" msgid "Load earlier messages"
msgstr "Завантажити попередні повідомлення" msgstr "Завантажити попередні повідомлення"
#: lib/who_need_help_web/live/activity_live/index.ex:658 #: lib/who_need_help_web/live/activity_live/index.ex:755
#: lib/who_need_help_web/live/activity_live/index.ex:751 #: lib/who_need_help_web/live/activity_live/index.ex:848
#: lib/who_need_help_web/live/category_proposal_live.ex:284 #: lib/who_need_help_web/live/category_proposal_live.ex:284
#: lib/who_need_help_web/live/leaderboard_live.ex:91 #: lib/who_need_help_web/live/leaderboard_live.ex:91
#: lib/who_need_help_web/live/moderation_live.ex:465 #: lib/who_need_help_web/live/moderation_live.ex:465
@ -2653,7 +2653,7 @@ msgstr "Завантажити попередні повідомлення"
#: lib/who_need_help_web/live/profile_live.ex:363 #: lib/who_need_help_web/live/profile_live.ex:363
#: lib/who_need_help_web/live/public_profile_live.ex:178 #: lib/who_need_help_web/live/public_profile_live.ex:178
#: lib/who_need_help_web/live/report_live.ex:98 #: lib/who_need_help_web/live/report_live.ex:98
#: lib/who_need_help_web/live/request_live/index.ex:805 #: lib/who_need_help_web/live/request_live/index.ex:920
#: lib/who_need_help_web/live/support_operations_live.ex:306 #: lib/who_need_help_web/live/support_operations_live.ex:306
#: lib/who_need_help_web/live/support_operations_live.ex:505 #: lib/who_need_help_web/live/support_operations_live.ex:505
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -2661,7 +2661,7 @@ msgid "Load more"
msgstr "Завантажити ще" msgstr "Завантажити ще"
#: lib/who_need_help_web/live/activity_live/show.ex:544 #: lib/who_need_help_web/live/activity_live/show.ex:544
#: lib/who_need_help_web/live/request_live/index.ex:701 #: lib/who_need_help_web/live/request_live/index.ex:816
#: lib/who_need_help_web/live/request_live/show.ex:1275 #: lib/who_need_help_web/live/request_live/show.ex:1275
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "The map is unavailable in this browser. Request details remain usable." msgid "The map is unavailable in this browser. Request details remain usable."
@ -4650,45 +4650,37 @@ msgstr "Перетягніть, щоб перемістити точну точ
msgid "Exact point selected. Drag the red pin or click the map to move it." msgid "Exact point selected. Drag the red pin or click the map to move it."
msgstr "Точну точку вибрано. Перетягніть червоний маркер або натисніть на карту, щоб перемістити її." msgstr "Точну точку вибрано. Перетягніть червоний маркер або натисніть на карту, щоб перемістити її."
#: lib/who_need_help_web/live/request_live/index.ex:539 #: lib/who_need_help_web/live/activity_live/index.ex:559
#, elixir-autogen, elixir-format #: lib/who_need_help_web/live/request_live/index.ex:593
msgid "%{count} request in this map area"
msgid_plural "%{count} requests in this map area"
msgstr[0] "%{count} заявка в цій області карти"
msgstr[1] "%{count} заявки в цій області карти"
msgstr[2] "%{count} заявок у цій області карти"
#: lib/who_need_help_web/live/activity_live/index.ex:502
#: lib/who_need_help_web/live/request_live/index.ex:516
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Area or city" msgid "Area or city"
msgstr "Район або місто" msgstr "Район або місто"
#: lib/who_need_help_web/live/activity_live/index.ex:594 #: lib/who_need_help_web/live/activity_live/index.ex:689
#: lib/who_need_help_web/live/request_live/index.ex:606 #: lib/who_need_help_web/live/request_live/index.ex:721
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Choose an area on the map" msgid "Choose an area on the map"
msgstr "Виберіть область на карті" msgstr "Виберіть область на карті"
#: lib/who_need_help_web/live/request_live/index.ex:436 #: lib/who_need_help_web/live/request_live/index.ex:513
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Explore privacy-friendly areas and public exact meeting points chosen by requesters." msgid "Explore privacy-friendly areas and public exact meeting points chosen by requesters."
msgstr "Переглядайте приватні області та точні публічні місця зустрічі, вибрані авторами заявок." msgstr "Переглядайте приватні області та точні публічні місця зустрічі, вибрані авторами заявок."
#: lib/who_need_help_web/live/activity_live/index.ex:553 #: lib/who_need_help_web/live/activity_live/index.ex:647
#: lib/who_need_help_web/live/request_live/index.ex:565 #: lib/who_need_help_web/live/request_live/index.ex:679
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "List" msgid "List"
msgstr "Список" msgstr "Список"
#: lib/who_need_help_web/live/request_live/index.ex:677 #: lib/who_need_help_web/live/request_live/index.ex:792
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Load more in this area" msgid "Load more in this area"
msgstr "Завантажити ще в цій області" msgstr "Завантажити ще в цій області"
#: lib/who_need_help_web/components/layouts/root.html.heex:5 #: lib/who_need_help_web/components/layouts/root.html.heex:5
#: lib/who_need_help_web/live/activity_live/index.ex:573 #: lib/who_need_help_web/live/activity_live/index.ex:667
#: lib/who_need_help_web/live/request_live/index.ex:585 #: lib/who_need_help_web/live/request_live/index.ex:699
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Map" msgid "Map"
msgstr "Карта" msgstr "Карта"
@ -4698,77 +4690,65 @@ msgstr "Карта"
msgid "Map preview" msgid "Map preview"
msgstr "Попередній перегляд карти" msgstr "Попередній перегляд карти"
#: lib/who_need_help_web/live/activity_live/index.ex:606 #: lib/who_need_help_web/live/activity_live/index.ex:701
#: lib/who_need_help_web/live/request_live/index.ex:618 #: lib/who_need_help_web/live/request_live/index.ex:733
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Move or zoom the map to search somewhere else." msgid "Move or zoom the map to search somewhere else."
msgstr "Перемістіть або масштабуйте карту, щоб шукати в іншому місці." msgstr "Перемістіть або масштабуйте карту, щоб шукати в іншому місці."
#: lib/who_need_help_web/live/activity_live/index.ex:540 #: lib/who_need_help_web/live/request_live/index.ex:731
#: lib/who_need_help_web/live/request_live/index.ex:552
#, elixir-autogen, elixir-format
msgid "Move the map, then search the newly visible area."
msgstr "Перемістіть карту, а потім виконайте пошук у новій видимій області."
#: lib/who_need_help_web/live/request_live/index.ex:616
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No open requests in this area" msgid "No open requests in this area"
msgstr "У цій області немає відкритих заявок" msgstr "У цій області немає відкритих заявок"
#: lib/who_need_help_web/live/request_live/index.ex:608 #: lib/who_need_help_web/live/request_live/index.ex:723
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Only requests from the selected map area will be loaded." msgid "Only requests from the selected map area will be loaded."
msgstr "Буде завантажено лише заявки з вибраної області карти." msgstr "Буде завантажено лише заявки з вибраної області карти."
#: lib/who_need_help_web/components/layouts/root.html.heex:8 #: lib/who_need_help_web/components/layouts/root.html.heex:8
#: lib/who_need_help_web/live/request_live/index.ex:704 #: lib/who_need_help_web/live/request_live/index.ex:819
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Open request" msgid "Open request"
msgstr "Відкрити заявку" msgstr "Відкрити заявку"
#: lib/who_need_help_web/live/activity_live/index.ex:503 #: lib/who_need_help_web/live/activity_live/index.ex:560
#: lib/who_need_help_web/live/request_live/index.ex:517 #: lib/who_need_help_web/live/request_live/index.ex:594
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Optional text search" msgid "Optional text search"
msgstr "Необов’язковий текстовий пошук" msgstr "Необов’язковий текстовий пошук"
#: lib/who_need_help_web/live/request_live/index.ex:683 #: lib/who_need_help_web/live/request_live/index.ex:798
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Requests without map coordinates appear only when their public area description matches the text search." msgid "Requests without map coordinates appear only when their public area description matches the text search."
msgstr "Заявки без координат на карті з’являються лише тоді, коли опис публічної області збігається з текстовим пошуком." msgstr "Заявки без координат на карті з’являються лише тоді, коли опис публічної області збігається з текстовим пошуком."
#: lib/who_need_help_web/live/activity_live/index.ex:544 #: lib/who_need_help_web/live/activity_live/index.ex:638
#: lib/who_need_help_web/live/request_live/index.ex:556 #: lib/who_need_help_web/live/request_live/index.ex:670
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Results layout" msgid "Results layout"
msgstr "Розташування результатів" msgstr "Розташування результатів"
#: lib/who_need_help_web/live/activity_live/index.ex:693
#: lib/who_need_help_web/live/request_live/index.ex:719
#, elixir-autogen, elixir-format
msgid "Search this area"
msgstr "Шукати в цій області"
#: lib/who_need_help_web/controllers/page_html/home.html.heex:171 #: lib/who_need_help_web/controllers/page_html/home.html.heex:171
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Static preview" msgid "Static preview"
msgstr "Статичний перегляд" msgstr "Статичний перегляд"
#: lib/who_need_help_web/live/activity_live/index.ex:563 #: lib/who_need_help_web/live/activity_live/index.ex:657
#: lib/who_need_help_web/live/request_live/index.ex:575 #: lib/who_need_help_web/live/request_live/index.ex:689
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Together" msgid "Together"
msgstr "Разом" msgstr "Разом"
#: lib/who_need_help_web/components/layouts/root.html.heex:6 #: lib/who_need_help_web/components/layouts/root.html.heex:6
#: lib/who_need_help_web/controllers/page_html/home.html.heex:160 #: lib/who_need_help_web/controllers/page_html/home.html.heex:160
#: lib/who_need_help_web/live/activity_live/index.ex:681 #: lib/who_need_help_web/live/activity_live/index.ex:778
#: lib/who_need_help_web/live/activity_live/new.ex:355 #: lib/who_need_help_web/live/activity_live/new.ex:355
#: lib/who_need_help_web/live/activity_live/new.ex:414 #: lib/who_need_help_web/live/activity_live/new.ex:414
#: lib/who_need_help_web/live/activity_live/show.ex:546 #: lib/who_need_help_web/live/activity_live/show.ex:546
#: lib/who_need_help_web/live/notification_live.ex:602 #: lib/who_need_help_web/live/notification_live.ex:602
#: lib/who_need_help_web/live/notification_live.ex:621 #: lib/who_need_help_web/live/notification_live.ex:621
#: lib/who_need_help_web/live/request_live/index.ex:703 #: lib/who_need_help_web/live/request_live/index.ex:818
#: lib/who_need_help_web/live/request_live/new.ex:485 #: lib/who_need_help_web/live/request_live/new.ex:485
#: lib/who_need_help_web/live/request_live/new.ex:563 #: lib/who_need_help_web/live/request_live/new.ex:563
#: lib/who_need_help_web/live/request_live/show.ex:1277 #: lib/who_need_help_web/live/request_live/show.ex:1277
@ -5158,7 +5138,7 @@ msgid "Nearby alert deleted."
msgstr "Сповіщення поблизу видалено." msgstr "Сповіщення поблизу видалено."
#: lib/who_need_help_web/live/notification_live.ex:456 #: lib/who_need_help_web/live/notification_live.ex:456
#: lib/who_need_help_web/live/request_live/index.ex:462 #: lib/who_need_help_web/live/request_live/index.ex:539
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Nearby requests" msgid "Nearby requests"
msgstr "Заявки поблизу" msgstr "Заявки поблизу"
@ -5498,7 +5478,7 @@ msgid "WebGL is unavailable in this browser, so the full map cannot start. Selec
msgstr "WebGL недоступний у цьому браузері, тому повна карта не може запуститися. Виберіть приклад нижче або спробуйте запустити карту ще раз." msgstr "WebGL недоступний у цьому браузері, тому повна карта не може запуститися. Виберіть приклад нижче або спробуйте запустити карту ще раз."
#: lib/who_need_help_web/components/layouts/root.html.heex:7 #: lib/who_need_help_web/components/layouts/root.html.heex:7
#: lib/who_need_help_web/live/activity_live/index.ex:682 #: lib/who_need_help_web/live/activity_live/index.ex:779
#: lib/who_need_help_web/live/activity_live/show.ex:547 #: lib/who_need_help_web/live/activity_live/show.ex:547
#: lib/who_need_help_web/live/request_live/show.ex:1278 #: lib/who_need_help_web/live/request_live/show.ex:1278
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -6063,7 +6043,7 @@ msgstr "Тепер ваш відгук видно"
msgid "Delivery settings" msgid "Delivery settings"
msgstr "Налаштування доставки" msgstr "Налаштування доставки"
#: lib/who_need_help_web/live/request_live/index.ex:660 #: lib/who_need_help_web/live/request_live/index.ex:775
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Expires" msgid "Expires"
msgstr "Спливає" msgstr "Спливає"
@ -6083,30 +6063,22 @@ msgstr "Сповіщення поруч"
msgid "Notification sections" msgid "Notification sections"
msgstr "Розділи сповіщень" msgstr "Розділи сповіщень"
#: lib/who_need_help_web/live/activity_live/index.ex:674 #: lib/who_need_help_web/live/activity_live/index.ex:771
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "%{count} activities" msgid "%{count} activities"
msgstr "Активностей: %{count}" msgstr "Активностей: %{count}"
#: lib/who_need_help_web/live/activity_live/index.ex:527 #: lib/who_need_help_web/live/request_live/index.ex:820
#, elixir-autogen, elixir-format
msgid "%{count} activity in this map area"
msgid_plural "%{count} activities in this map area"
msgstr[0] "%{count} активність у цій області карти"
msgstr[1] "%{count} активності в цій області карти"
msgstr[2] "%{count} активностей у цій області карти"
#: lib/who_need_help_web/live/request_live/index.ex:705
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "%{count} requests" msgid "%{count} requests"
msgstr "Запитів: %{count}" msgstr "Запитів: %{count}"
#: lib/who_need_help_web/live/activity_live/index.ex:717 #: lib/who_need_help_web/live/activity_live/index.ex:814
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Activities you create or ask to join will appear here. Leaving removes an activity from this list." msgid "Activities you create or ask to join will appear here. Leaving removes an activity from this list."
msgstr "Створені вами активності й ті, до яких ви попросили приєднатися, з’являться тут. Після виходу активність зникне зі списку." msgstr "Створені вами активності й ті, до яких ви попросили приєднатися, з’являться тут. Після виходу активність зникне зі списку."
#: lib/who_need_help_web/live/activity_live/index.ex:457 #: lib/who_need_help_web/live/activity_live/index.ex:514
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Activity views" msgid "Activity views"
msgstr "Розділи активностей" msgstr "Розділи активностей"
@ -6121,12 +6093,12 @@ msgstr "Оберіть категорію та зрозуміло опишіть
msgid "Confirm the safety guidance before asking nearby people for help." msgid "Confirm the safety guidance before asking nearby people for help."
msgstr "Підтвердьте правила безпеки перед публікацією запиту." msgstr "Підтвердьте правила безпеки перед публікацією запиту."
#: lib/who_need_help_web/live/request_live/index.ex:753 #: lib/who_need_help_web/live/request_live/index.ex:868
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Create request" msgid "Create request"
msgstr "Створити запит" msgstr "Створити запит"
#: lib/who_need_help_web/live/request_live/index.ex:776 #: lib/who_need_help_web/live/request_live/index.ex:891
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Create your first request" msgid "Create your first request"
msgstr "Створити перший запит" msgstr "Створити перший запит"
@ -6141,43 +6113,43 @@ msgstr "Що потрібно зробити"
msgid "Location" msgid "Location"
msgstr "Місце" msgstr "Місце"
#: lib/who_need_help_web/live/activity_live/index.ex:463 #: lib/who_need_help_web/live/activity_live/index.ex:520
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "My activities" msgid "My activities"
msgstr "Мої активності" msgstr "Мої активності"
#: lib/who_need_help_web/live/request_live/index.ex:463 #: lib/who_need_help_web/live/request_live/index.ex:540
#: lib/who_need_help_web/live/request_live/index.ex:747 #: lib/who_need_help_web/live/request_live/index.ex:862
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "My requests" msgid "My requests"
msgstr "Мої запити" msgstr "Мої запити"
#: lib/who_need_help_web/live/activity_live/index.ex:462 #: lib/who_need_help_web/live/activity_live/index.ex:519
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Nearby activities" msgid "Nearby activities"
msgstr "Активності поруч" msgstr "Активності поруч"
#: lib/who_need_help_web/live/activity_live/index.ex:715 #: lib/who_need_help_web/live/activity_live/index.ex:812
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No activities yet" msgid "No activities yet"
msgstr "Активностей поки немає" msgstr "Активностей поки немає"
#: lib/who_need_help_web/live/activity_live/index.ex:604 #: lib/who_need_help_web/live/activity_live/index.ex:699
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No open activities in this area" msgid "No open activities in this area"
msgstr "У цій області немає відкритих активностей" msgstr "У цій області немає відкритих активностей"
#: lib/who_need_help_web/live/request_live/index.ex:771 #: lib/who_need_help_web/live/request_live/index.ex:886
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No requests yet" msgid "No requests yet"
msgstr "Запитів поки немає" msgstr "Запитів поки немає"
#: lib/who_need_help_web/live/activity_live/index.ex:596 #: lib/who_need_help_web/live/activity_live/index.ex:691
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Only activities from the selected map area will be loaded." msgid "Only activities from the selected map area will be loaded."
msgstr "Буде завантажено лише активності з вибраної області карти." msgstr "Буде завантажено лише активності з вибраної області карти."
#: lib/who_need_help_web/live/activity_live/index.ex:673 #: lib/who_need_help_web/live/activity_live/index.ex:770
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Open activity" msgid "Open activity"
msgstr "Відкрити активність" msgstr "Відкрити активність"
@ -6187,12 +6159,12 @@ msgstr "Відкрити активність"
msgid "Request form steps" msgid "Request form steps"
msgstr "Кроки створення запиту" msgstr "Кроки створення запиту"
#: lib/who_need_help_web/live/request_live/index.ex:457 #: lib/who_need_help_web/live/request_live/index.ex:534
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Request views" msgid "Request views"
msgstr "Розділи запитів" msgstr "Розділи запитів"
#: lib/who_need_help_web/live/request_live/index.ex:773 #: lib/who_need_help_web/live/request_live/index.ex:888
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Requests you publish or accept will appear here." msgid "Requests you publish or accept will appear here."
msgstr "Тут з’являться запити, які ви створили або прийняли." msgstr "Тут з’являться запити, які ви створили або прийняли."
@ -6217,7 +6189,7 @@ msgstr "Укажіть терміновість і час закриття за
msgid "Share only as much location detail as helpers need." msgid "Share only as much location detail as helpers need."
msgstr "Покажіть помічникам лише необхідну інформацію про місце." msgstr "Покажіть помічникам лише необхідну інформацію про місце."
#: lib/who_need_help_web/live/activity_live/index.ex:679 #: lib/who_need_help_web/live/activity_live/index.ex:776
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "The map is unavailable in this browser. Activity details remain usable." msgid "The map is unavailable in this browser. Activity details remain usable."
msgstr "Карта недоступна в цьому браузері. Інформація про активності залишається доступною." msgstr "Карта недоступна в цьому браузері. Інформація про активності залишається доступною."
@ -6227,7 +6199,7 @@ msgstr "Карта недоступна в цьому браузері. Інфо
msgid "Timing" msgid "Timing"
msgstr "Час" msgstr "Час"
#: lib/who_need_help_web/live/request_live/index.ex:749 #: lib/who_need_help_web/live/request_live/index.ex:864
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Track requests you created and requests you accepted as a helper." msgid "Track requests you created and requests you accepted as a helper."
msgstr "Стежте за створеними запитами й тими, які ви прийняли як помічник." msgstr "Стежте за створеними запитами й тими, які ви прийняли як помічник."
@ -6888,32 +6860,88 @@ msgstr "Що мають бачити люди до схвалення?"
msgid "Choose the meeting point on the map or use your current location." msgid "Choose the meeting point on the map or use your current location."
msgstr "Оберіть місце зустрічі на карті або скористайтеся своїм поточним місцезнаходженням." msgstr "Оберіть місце зустрічі на карті або скористайтеся своїм поточним місцезнаходженням."
#: lib/who_need_help_web/live/activity_live/index.ex:522 #: lib/who_need_help_web/live/activity_live/index.ex:579
#: lib/who_need_help_web/live/activity_live/index.ex:586 #: lib/who_need_help_web/live/activity_live/index.ex:681
#: lib/who_need_help_web/live/activity_live/index.ex:707 #: lib/who_need_help_web/live/activity_live/index.ex:804
#: lib/who_need_help_web/live/request_live/index.ex:534 #: lib/who_need_help_web/live/request_live/index.ex:611
#: lib/who_need_help_web/live/request_live/index.ex:598 #: lib/who_need_help_web/live/request_live/index.ex:713
#: lib/who_need_help_web/live/request_live/index.ex:763 #: lib/who_need_help_web/live/request_live/index.ex:878
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Loading results…" msgid "Loading results…"
msgstr "Завантажуємо результати…" msgstr "Завантажуємо результати…"
#: lib/who_need_help_web/live/activity_live/index.ex:676 #: lib/who_need_help_web/live/activity_live/index.ex:773
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Maximum zoom reached. Matching activities are listed beside the map." msgid "Maximum zoom reached. Matching activities are listed beside the map."
msgstr "Досягнуто максимального масштабу. Відповідні заходи перелічено поруч із картою." msgstr "Досягнуто максимального масштабу. Відповідні заходи перелічено поруч із картою."
#: lib/who_need_help_web/live/request_live/index.ex:707 #: lib/who_need_help_web/live/request_live/index.ex:822
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Maximum zoom reached. Matching requests are listed beside the map." msgid "Maximum zoom reached. Matching requests are listed beside the map."
msgstr "Досягнуто максимального масштабу. Відповідні заявки перелічено поруч із картою." msgstr "Досягнуто максимального масштабу. Відповідні заявки перелічено поруч із картою."
#: lib/who_need_help_web/live/activity_live/index.ex:535 #: lib/who_need_help_web/live/activity_live/index.ex:584
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "of %{count} matching activities with map locations" msgid "%{count} activity in the selected map area"
msgstr "із %{count} відповідних заходів із місцезнаходженням на карті" msgid_plural "%{count} activities in the selected map area"
msgstr[0] "%{count} подія у вибраній області карти"
msgstr[1] "%{count} події у вибраній області карти"
msgstr[2] "%{count} подій у вибраній області карти"
#: lib/who_need_help_web/live/request_live/index.ex:547 #: lib/who_need_help_web/live/request_live/index.ex:616
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "of %{count} matching requests with map locations" msgid "%{count} request in the selected map area"
msgstr "із %{count} відповідних заявок із місцезнаходженням на карті" msgid_plural "%{count} requests in the selected map area"
msgstr[0] "%{count} заявка у вибраній області карти"
msgstr[1] "%{count} заявки у вибраній області карти"
msgstr[2] "%{count} заявок у вибраній області карти"
#: lib/who_need_help_web/live/activity_live/index.ex:603
#: lib/who_need_help_web/live/request_live/index.ex:635
#, elixir-autogen, elixir-format
msgid "Map moved. Results still show the previous area."
msgstr "Карту переміщено. Поки показано результати для попередньої області."
#: lib/who_need_help_web/live/activity_live/index.ex:621
#, elixir-autogen, elixir-format
msgid "Move or zoom the map, then choose “Show activities in this area”."
msgstr "Перемістіть або масштабуйте карту, потім натисніть «Показати події в цій області»."
#: lib/who_need_help_web/live/request_live/index.ex:653
#, elixir-autogen, elixir-format
msgid "Move or zoom the map, then choose “Show requests in this area”."
msgstr "Перемістіть або масштабуйте карту, потім натисніть «Показати заявки в цій області»."
#: lib/who_need_help_web/live/activity_live/index.ex:615
#: lib/who_need_help_web/live/request_live/index.ex:647
#, elixir-autogen, elixir-format
msgid "Results update automatically after you stop moving the map."
msgstr "Результати оновляться автоматично, коли ви завершите переміщення карти."
#: lib/who_need_help_web/live/activity_live/index.ex:790
#, elixir-autogen, elixir-format
msgid "Show activities in this area"
msgstr "Показати події в цій області"
#: lib/who_need_help_web/live/request_live/index.ex:834
#, elixir-autogen, elixir-format
msgid "Show requests in this area"
msgstr "Показати заявки в цій області"
#: lib/who_need_help_web/live/activity_live/index.ex:593
#: lib/who_need_help_web/live/request_live/index.ex:625
#, elixir-autogen, elixir-format
msgid "Showing %{shown} of %{count} in the list."
msgstr "У списку показано %{shown} із %{count}."
#: lib/who_need_help_web/live/activity_live/index.ex:635
#: lib/who_need_help_web/live/request_live/index.ex:667
#, elixir-autogen, elixir-format
msgid "Update results as map moves"
msgstr "Оновлювати результати під час переміщення карти"
#: lib/who_need_help_web/live/activity_live/index.ex:609
#: lib/who_need_help_web/live/request_live/index.ex:641
#, elixir-autogen, elixir-format
msgid "Updating results for the visible map area…"
msgstr "Оновлюємо результати для видимої області карти…"

View File

@ -381,6 +381,17 @@ defmodule WhoNeedHelp.ActivitiesTest do
assert nearby.id in ids assert nearby.id in ids
refute far_away.id in ids refute far_away.id in ids
assert Activities.count_open_activities(context.outsider_scope, %{}, viewport: viewport) == 1
map_count =
context.outsider_scope
|> Activities.map_discovery_items(%{}, viewport)
|> Enum.reduce(0, fn
%{type: "cluster", count: count}, total -> total + count
_activity, total -> total + 1
end)
assert map_count == length(ids)
end end
test "activity discovery filters by the published approximate point, not the exact point", test "activity discovery filters by the published approximate point, not the exact point",

View File

@ -461,11 +461,11 @@ defmodule WhoNeedHelp.MutualAidFlowTest do
|> Map.put("location_label", "Kyiv center") |> Map.put("location_label", "Kyiv center")
) )
{:ok, intersecting_area} = {:ok, radius_only_intersection} =
Help.create_request( Help.create_request(
context.requester_scope, context.requester_scope,
context.request_attrs context.request_attrs
|> Map.put("title", "Area intersects viewport") |> Map.put("title", "Radius intersects but marker is outside viewport")
|> Map.put("location_label", "Kyiv western edge") |> Map.put("location_label", "Kyiv western edge")
|> Map.put("longitude", "29.99") |> Map.put("longitude", "29.99")
|> Map.put("location_radius_meters", 2_000) |> Map.put("location_radius_meters", 2_000)
@ -490,8 +490,19 @@ defmodule WhoNeedHelp.MutualAidFlowTest do
|> Enum.map(& &1.id) |> Enum.map(& &1.id)
assert kyiv_request.id in ids assert kyiv_request.id in ids
assert intersecting_area.id in ids refute radius_only_intersection.id in ids
refute berlin_request.id in ids refute berlin_request.id in ids
assert Help.count_open_requests(context.helper_scope, %{}, viewport: viewport) == 1
map_count =
context.helper_scope
|> Help.map_discovery_items(%{}, viewport)
|> Enum.reduce(0, fn
%{type: "cluster", count: count}, total -> total + count
_request, total -> total + 1
end)
assert map_count == length(ids)
end end
test "hidden coordinates require an explicit area-label search and never become map points", test "hidden coordinates require an explicit area-label search and never become map points",

View File

@ -379,6 +379,79 @@ defmodule WhoNeedHelpWeb.MutualAidLiveTest do
) )
end end
test "request discovery keeps the previous list until a moved map area is applied", %{
conn: conn,
scope: scope
} do
category = Catalog.seed_defaults()
{:ok, request} = Help.create_request(scope, request_attrs(category))
{:ok, view, _html} = live(conn, requests_in_kyiv_path())
render_async(view)
assert has_element?(view, "#open-request-#{request.id}")
assert render(view) =~ "Showing 1 of 1 in the list."
assert has_element?(view, "#request-map-auto-update:not([checked])")
moved = %{
"west" => "30.50",
"south" => "50.40",
"east" => "30.60",
"north" => "50.50",
"zoom" => "13",
"width" => "900",
"height" => "700"
}
render_hook(view, "map-viewport-change", moved)
assert has_element?(view, "#search-map-area", "Show requests in this area")
assert render(view) =~ "Results still show the previous area."
assert has_element?(view, "#open-request-#{request.id}")
view |> element("#search-map-area") |> render_click()
assert_patch(
view,
~p"/requests?#{Map.merge(moved, %{"east" => "30.6", "north" => "50.5", "south" => "50.4", "view" => "split", "west" => "30.5"})}"
)
render_async(view)
end
test "request discovery can update automatically after map movement", %{conn: conn} do
path =
~p"/requests?#{%{west: 30, south: 50, east: 31, north: 51, zoom: 10, width: 1200, height: 720, view: "split", map_update: "auto"}}"
{:ok, view, _html} = live(conn, path)
render_async(view)
assert has_element?(view, "#request-map-auto-update[checked]")
assert render(view) =~ "Results update automatically after you stop moving the map."
moved = %{
"west" => "30.50",
"south" => "50.40",
"east" => "30.60",
"north" => "50.50",
"zoom" => "13",
"width" => "900",
"height" => "700"
}
render_hook(view, "map-viewport-change", moved)
assert render(view) =~ "Updating results for the visible map area"
refute has_element?(view, "#search-map-area")
assert_patch(
view,
~p"/requests?#{Map.merge(moved, %{"east" => "30.6", "map_update" => "auto", "north" => "50.5", "south" => "50.4", "view" => "split", "west" => "30.5"})}",
1_000
)
render_async(view)
end
test "activity cluster expansion immediately searches the expanded viewport", %{conn: conn} do test "activity cluster expansion immediately searches the expanded viewport", %{conn: conn} do
{:ok, view, _html} = live(conn, activities_in_kyiv_path()) {:ok, view, _html} = live(conn, activities_in_kyiv_path())