Improve activity location privacy and lifecycle UX
This commit is contained in:
parent
a0e45707a3
commit
cbb13d6888
|
|
@ -1181,11 +1181,43 @@ html {
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.activity-location-workspace .request-location-modes {
|
||||||
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||||
|
}
|
||||||
|
|
||||||
|
.activity-location-workspace .request-location-radius,
|
||||||
|
.activity-location-workspace [data-hidden-guidance] {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.activity-location-workspace[data-location-mode="hidden"] .request-location-grid {
|
||||||
|
grid-template-columns: minmax(0, 1fr) minmax(14rem, 17rem);
|
||||||
|
}
|
||||||
|
|
||||||
|
.activity-location-workspace[data-location-mode="hidden"] .request-location-map,
|
||||||
|
.activity-location-workspace[data-location-mode="hidden"] .request-location-controls,
|
||||||
|
.activity-location-workspace[data-location-mode="hidden"] .request-location-manual {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.activity-location-workspace[data-location-mode="hidden"] .request-location-hidden-state,
|
||||||
|
.activity-location-workspace[data-location-mode="hidden"] [data-approximate-guidance] {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.activity-location-workspace[data-location-mode="hidden"] [data-hidden-guidance] {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
@media (max-width: 63.999rem) {
|
@media (max-width: 63.999rem) {
|
||||||
.request-location-grid {
|
.request-location-grid {
|
||||||
grid-template-columns: 1fr;
|
grid-template-columns: 1fr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.activity-location-workspace[data-location-mode="hidden"] .request-location-grid {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
|
|
||||||
.request-location-map {
|
.request-location-map {
|
||||||
min-height: 26rem;
|
min-height: 26rem;
|
||||||
}
|
}
|
||||||
|
|
@ -1239,6 +1271,10 @@ html {
|
||||||
grid-template-columns: 1fr;
|
grid-template-columns: 1fr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.activity-location-workspace .request-location-modes {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
|
|
||||||
.request-location-mode {
|
.request-location-mode {
|
||||||
min-height: 3.75rem;
|
min-height: 3.75rem;
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
|
|
|
||||||
|
|
@ -1784,6 +1784,7 @@ export const Hooks = {
|
||||||
this.markerMode = null
|
this.markerMode = null
|
||||||
this.mapLoaded = false
|
this.mapLoaded = false
|
||||||
this.mapUnavailable = false
|
this.mapUnavailable = false
|
||||||
|
this.preserveHiddenCoordinates = this.el.dataset.preserveHiddenCoordinates === "true"
|
||||||
this.areaSourceId = `${this.el.id}-selection-area`
|
this.areaSourceId = `${this.el.id}-selection-area`
|
||||||
this.areaFillId = `${this.el.id}-selection-fill`
|
this.areaFillId = `${this.el.id}-selection-fill`
|
||||||
this.areaLineId = `${this.el.id}-selection-line`
|
this.areaLineId = `${this.el.id}-selection-line`
|
||||||
|
|
@ -1874,11 +1875,14 @@ export const Hooks = {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
this.setStatus(
|
const mode = this.mode()
|
||||||
this.mode() === "approximate_public"
|
const message = mode === "hidden" && this.preserveHiddenCoordinates
|
||||||
|
? this.el.dataset.privateSelectedLabel
|
||||||
|
: mode === "approximate_public"
|
||||||
? this.el.dataset.areaSelectedLabel
|
? this.el.dataset.areaSelectedLabel
|
||||||
: this.el.dataset.pointSelectedLabel
|
: this.el.dataset.pointSelectedLabel
|
||||||
)
|
|
||||||
|
this.setStatus(message)
|
||||||
}
|
}
|
||||||
|
|
||||||
this.focusSelection = () => {
|
this.focusSelection = () => {
|
||||||
|
|
@ -1887,7 +1891,7 @@ export const Hooks = {
|
||||||
|
|
||||||
this.map.flyTo({
|
this.map.flyTo({
|
||||||
center: [coordinates.longitude, coordinates.latitude],
|
center: [coordinates.longitude, coordinates.latitude],
|
||||||
zoom: this.mode() === "exact_public" ? 15 : 13
|
zoom: this.mode() === "approximate_public" ? 13 : 15
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1903,7 +1907,10 @@ export const Hooks = {
|
||||||
this.renderSelection()
|
this.renderSelection()
|
||||||
|
|
||||||
if (center && this.map) {
|
if (center && this.map) {
|
||||||
this.map.flyTo({center: [longitude, latitude], zoom: this.mode() === "exact_public" ? 15 : 13})
|
this.map.flyTo({
|
||||||
|
center: [longitude, latitude],
|
||||||
|
zoom: this.mode() === "approximate_public" ? 13 : 15
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if (notify) this.notifyCoordinatesChanged()
|
if (notify) this.notifyCoordinatesChanged()
|
||||||
|
|
@ -1956,7 +1963,11 @@ export const Hooks = {
|
||||||
if (!this.marker) {
|
if (!this.marker) {
|
||||||
this.markerMode = mode
|
this.markerMode = mode
|
||||||
this.marker = new maplibregl.Marker({
|
this.marker = new maplibregl.Marker({
|
||||||
color: mode === "approximate_public" ? "#16725b" : "#d6573b",
|
color: mode === "approximate_public"
|
||||||
|
? "#16725b"
|
||||||
|
: mode === "exact_private"
|
||||||
|
? "#6152a3"
|
||||||
|
: "#d6573b",
|
||||||
draggable: true
|
draggable: true
|
||||||
})
|
})
|
||||||
.setLngLat([coordinates.longitude, coordinates.latitude])
|
.setLngLat([coordinates.longitude, coordinates.latitude])
|
||||||
|
|
@ -1967,12 +1978,16 @@ export const Hooks = {
|
||||||
"aria-label",
|
"aria-label",
|
||||||
mode === "approximate_public"
|
mode === "approximate_public"
|
||||||
? this.el.dataset.areaMarkerLabel
|
? this.el.dataset.areaMarkerLabel
|
||||||
|
: mode === "exact_private"
|
||||||
|
? this.el.dataset.privateMarkerLabel
|
||||||
: this.el.dataset.pointMarkerLabel
|
: this.el.dataset.pointMarkerLabel
|
||||||
)
|
)
|
||||||
markerElement.setAttribute(
|
markerElement.setAttribute(
|
||||||
"title",
|
"title",
|
||||||
mode === "approximate_public"
|
mode === "approximate_public"
|
||||||
? this.el.dataset.areaMarkerLabel
|
? this.el.dataset.areaMarkerLabel
|
||||||
|
: mode === "exact_private"
|
||||||
|
? this.el.dataset.privateMarkerLabel
|
||||||
: this.el.dataset.pointMarkerLabel
|
: this.el.dataset.pointMarkerLabel
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -2009,7 +2024,7 @@ export const Hooks = {
|
||||||
|
|
||||||
if (!this.mapLoaded) return
|
if (!this.mapLoaded) return
|
||||||
|
|
||||||
if (mode === "hidden") {
|
if (mode === "hidden" && !this.preserveHiddenCoordinates) {
|
||||||
this.removeMarker()
|
this.removeMarker()
|
||||||
this.setAreaData(emptyFeatureCollection())
|
this.setAreaData(emptyFeatureCollection())
|
||||||
return
|
return
|
||||||
|
|
@ -2032,14 +2047,17 @@ export const Hooks = {
|
||||||
}
|
}
|
||||||
|
|
||||||
this.setAreaData(emptyFeatureCollection())
|
this.setAreaData(emptyFeatureCollection())
|
||||||
this.ensureSelectionMarker(coordinates, mode)
|
this.ensureSelectionMarker(
|
||||||
|
coordinates,
|
||||||
|
mode === "hidden" ? "exact_private" : mode
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
this.syncMode = () => {
|
this.syncMode = () => {
|
||||||
const mode = this.mode()
|
const mode = this.mode()
|
||||||
this.el.dataset.locationMode = mode
|
this.el.dataset.locationMode = mode
|
||||||
|
|
||||||
if (mode === "hidden") {
|
if (mode === "hidden" && !this.preserveHiddenCoordinates) {
|
||||||
this.clearCoordinates()
|
this.clearCoordinates()
|
||||||
this.setStatus(this.el.dataset.hiddenLabel)
|
this.setStatus(this.el.dataset.hiddenLabel)
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -2093,11 +2111,7 @@ export const Hooks = {
|
||||||
: raw
|
: raw
|
||||||
|
|
||||||
this.setCoordinates(selected, {center: true})
|
this.setCoordinates(selected, {center: true})
|
||||||
this.setStatus(
|
this.setSelectionStatus()
|
||||||
this.mode() === "approximate_public"
|
|
||||||
? this.el.dataset.areaSelectedLabel
|
|
||||||
: this.el.dataset.pointSelectedLabel
|
|
||||||
)
|
|
||||||
button.disabled = false
|
button.disabled = false
|
||||||
},
|
},
|
||||||
() => {
|
() => {
|
||||||
|
|
@ -2169,17 +2183,13 @@ export const Hooks = {
|
||||||
})
|
})
|
||||||
|
|
||||||
this.map.on("click", event => {
|
this.map.on("click", event => {
|
||||||
if (this.mode() === "hidden") return
|
if (this.mode() === "hidden" && !this.preserveHiddenCoordinates) return
|
||||||
|
|
||||||
this.setCoordinates(
|
this.setCoordinates(
|
||||||
{latitude: event.lngLat.lat, longitude: event.lngLat.lng},
|
{latitude: event.lngLat.lat, longitude: event.lngLat.lng},
|
||||||
{center: true}
|
{center: true}
|
||||||
)
|
)
|
||||||
this.setStatus(
|
this.setSelectionStatus()
|
||||||
this.mode() === "approximate_public"
|
|
||||||
? this.el.dataset.areaSelectedLabel
|
|
||||||
: this.el.dataset.pointSelectedLabel
|
|
||||||
)
|
|
||||||
})
|
})
|
||||||
|
|
||||||
this.syncMode()
|
this.syncMode()
|
||||||
|
|
|
||||||
|
|
@ -75,11 +75,14 @@ test("activity approval, privacy controls, reporting, and moderation work end to
|
||||||
await joinDeadlinePicker.getByLabel("Time").fill(joinDeadline.slice(11, 16));
|
await joinDeadlinePicker.getByLabel("Time").fill(joinDeadline.slice(11, 16));
|
||||||
await organizer.page.getByLabel("Total group capacity").fill("3");
|
await organizer.page.getByLabel("Total group capacity").fill("3");
|
||||||
await organizer.page
|
await organizer.page
|
||||||
.getByLabel("Approximate public meeting area")
|
.getByLabel("Public meeting area or landmark")
|
||||||
.fill("E2E central public café");
|
.fill("E2E central public café");
|
||||||
await organizer.page.getByLabel("Public map visibility").selectOption("approximate_public");
|
await organizer.page
|
||||||
await organizer.page.getByLabel("Latitude").fill("50.4501");
|
.getByRole("radio", { name: /Approximate area/ })
|
||||||
await organizer.page.getByLabel("Longitude").fill("30.5234");
|
.check();
|
||||||
|
await organizer.page.locator("#activity-location-manual summary").click();
|
||||||
|
await organizer.page.locator("#activity-latitude").fill("50.4501");
|
||||||
|
await organizer.page.locator("#activity-longitude").fill("30.5234");
|
||||||
await organizer.page.locator("#activity-form input[type=checkbox]").check();
|
await organizer.page.locator("#activity-form input[type=checkbox]").check();
|
||||||
await organizer.page.getByRole("button", { name: "Publish activity" }).click();
|
await organizer.page.getByRole("button", { name: "Publish activity" }).click();
|
||||||
await expect(organizer.page).toHaveURL(/\/activities\/[0-9a-f-]+$/);
|
await expect(organizer.page).toHaveURL(/\/activities\/[0-9a-f-]+$/);
|
||||||
|
|
|
||||||
|
|
@ -152,7 +152,16 @@ defmodule Mix.Tasks.Wnh.StagingFullE2e do
|
||||||
|
|
||||||
message_ids = ids(Message, :assignment_id, assignment_ids)
|
message_ids = ids(Message, :assignment_id, assignment_ids)
|
||||||
tracking_session_ids = ids(TrackingSession, :assignment_id, assignment_ids)
|
tracking_session_ids = ids(TrackingSession, :assignment_id, assignment_ids)
|
||||||
notification_ids = ids(Notification, :user_id, user_ids)
|
|
||||||
|
notification_ids =
|
||||||
|
Notification
|
||||||
|
|> where(
|
||||||
|
[notification],
|
||||||
|
notification.user_id in ^user_ids or
|
||||||
|
fragment("?->>'request_id'", notification.data) in ^request_ids
|
||||||
|
)
|
||||||
|
|> select([notification], notification.id)
|
||||||
|
|> Repo.all()
|
||||||
|
|
||||||
activity_ids = ids(Activity, :creator_id, user_ids)
|
activity_ids = ids(Activity, :creator_id, user_ids)
|
||||||
validate_activity_membership!(activity_ids, user_ids)
|
validate_activity_membership!(activity_ids, user_ids)
|
||||||
|
|
@ -311,11 +320,12 @@ defmodule Mix.Tasks.Wnh.StagingFullE2e do
|
||||||
defp validate_assignments!(assignment_ids, request_ids, user_ids) do
|
defp validate_assignments!(assignment_ids, request_ids, user_ids) do
|
||||||
unexpected? =
|
unexpected? =
|
||||||
Repo.exists?(
|
Repo.exists?(
|
||||||
from assignment in Assignment,
|
from(assignment in Assignment,
|
||||||
where:
|
where:
|
||||||
assignment.id in ^assignment_ids and
|
assignment.id in ^assignment_ids and
|
||||||
(assignment.request_id not in ^request_ids or assignment.helper_id not in ^user_ids)
|
(assignment.request_id not in ^request_ids or assignment.helper_id not in ^user_ids)
|
||||||
)
|
)
|
||||||
|
)
|
||||||
|
|
||||||
if unexpected?,
|
if unexpected?,
|
||||||
do: Mix.raise("a full staging fixture assignment crosses into non-fixture data")
|
do: Mix.raise("a full staging fixture assignment crosses into non-fixture data")
|
||||||
|
|
@ -324,15 +334,17 @@ defmodule Mix.Tasks.Wnh.StagingFullE2e do
|
||||||
defp validate_activity_membership!(activity_ids, user_ids) do
|
defp validate_activity_membership!(activity_ids, user_ids) do
|
||||||
unexpected_participant? =
|
unexpected_participant? =
|
||||||
Repo.exists?(
|
Repo.exists?(
|
||||||
from participant in Participant,
|
from(participant in Participant,
|
||||||
where: participant.user_id in ^user_ids and participant.activity_id not in ^activity_ids
|
where: participant.user_id in ^user_ids and participant.activity_id not in ^activity_ids
|
||||||
)
|
)
|
||||||
|
)
|
||||||
|
|
||||||
unexpected_message? =
|
unexpected_message? =
|
||||||
Repo.exists?(
|
Repo.exists?(
|
||||||
from message in ActivityMessage,
|
from(message in ActivityMessage,
|
||||||
where: message.sender_id in ^user_ids and message.activity_id not in ^activity_ids
|
where: message.sender_id in ^user_ids and message.activity_id not in ^activity_ids
|
||||||
)
|
)
|
||||||
|
)
|
||||||
|
|
||||||
if unexpected_participant? or unexpected_message? do
|
if unexpected_participant? or unexpected_message? do
|
||||||
Mix.raise("a full staging fixture user is linked to a non-fixture activity")
|
Mix.raise("a full staging fixture user is linked to a non-fixture activity")
|
||||||
|
|
@ -342,9 +354,10 @@ defmodule Mix.Tasks.Wnh.StagingFullE2e do
|
||||||
defp validate_category_votes!(proposal_ids, user_ids) do
|
defp validate_category_votes!(proposal_ids, user_ids) do
|
||||||
unexpected? =
|
unexpected? =
|
||||||
Repo.exists?(
|
Repo.exists?(
|
||||||
from vote in CategoryVote,
|
from(vote in CategoryVote,
|
||||||
where: vote.user_id in ^user_ids and vote.proposal_id not in ^proposal_ids
|
where: vote.user_id in ^user_ids and vote.proposal_id not in ^proposal_ids
|
||||||
)
|
)
|
||||||
|
)
|
||||||
|
|
||||||
if unexpected?, do: Mix.raise("a full staging fixture vote targets a non-fixture proposal")
|
if unexpected?, do: Mix.raise("a full staging fixture vote targets a non-fixture proposal")
|
||||||
end
|
end
|
||||||
|
|
@ -352,21 +365,24 @@ defmodule Mix.Tasks.Wnh.StagingFullE2e do
|
||||||
defp validate_reviewed_records!(user_ids, report_ids, proposal_ids) do
|
defp validate_reviewed_records!(user_ids, report_ids, proposal_ids) do
|
||||||
unexpected_report? =
|
unexpected_report? =
|
||||||
Repo.exists?(
|
Repo.exists?(
|
||||||
from report in Report,
|
from(report in Report,
|
||||||
where: report.reviewed_by_id in ^user_ids and report.id not in ^report_ids
|
where: report.reviewed_by_id in ^user_ids and report.id not in ^report_ids
|
||||||
)
|
)
|
||||||
|
)
|
||||||
|
|
||||||
unexpected_proposal? =
|
unexpected_proposal? =
|
||||||
Repo.exists?(
|
Repo.exists?(
|
||||||
from proposal in CategoryProposal,
|
from(proposal in CategoryProposal,
|
||||||
where: proposal.reviewed_by_id in ^user_ids and proposal.id not in ^proposal_ids
|
where: proposal.reviewed_by_id in ^user_ids and proposal.id not in ^proposal_ids
|
||||||
)
|
)
|
||||||
|
)
|
||||||
|
|
||||||
unexpected_signal? =
|
unexpected_signal? =
|
||||||
Repo.exists?(
|
Repo.exists?(
|
||||||
from signal in AbuseSignal,
|
from(signal in AbuseSignal,
|
||||||
where: signal.reviewed_by_id in ^user_ids and signal.subject_id not in ^user_ids
|
where: signal.reviewed_by_id in ^user_ids and signal.subject_id not in ^user_ids
|
||||||
)
|
)
|
||||||
|
)
|
||||||
|
|
||||||
if unexpected_report? or unexpected_proposal? or unexpected_signal? do
|
if unexpected_report? or unexpected_proposal? or unexpected_signal? do
|
||||||
Mix.raise("the run-scoped moderator changed a non-fixture record")
|
Mix.raise("the run-scoped moderator changed a non-fixture record")
|
||||||
|
|
@ -380,19 +396,21 @@ defmodule Mix.Tasks.Wnh.StagingFullE2e do
|
||||||
) do
|
) do
|
||||||
unexpected_support_request? =
|
unexpected_support_request? =
|
||||||
Repo.exists?(
|
Repo.exists?(
|
||||||
from request in SupportRequest,
|
from(request in SupportRequest,
|
||||||
where:
|
where:
|
||||||
request.reviewed_by_id in ^user_ids and
|
request.reviewed_by_id in ^user_ids and
|
||||||
request.id not in ^support_request_ids
|
request.id not in ^support_request_ids
|
||||||
)
|
)
|
||||||
|
)
|
||||||
|
|
||||||
unexpected_content_removal_notice? =
|
unexpected_content_removal_notice? =
|
||||||
Repo.exists?(
|
Repo.exists?(
|
||||||
from notice in Notice,
|
from(notice in Notice,
|
||||||
where:
|
where:
|
||||||
notice.reviewed_by_id in ^user_ids and
|
notice.reviewed_by_id in ^user_ids and
|
||||||
notice.id not in ^content_removal_notice_ids
|
notice.id not in ^content_removal_notice_ids
|
||||||
)
|
)
|
||||||
|
)
|
||||||
|
|
||||||
if unexpected_support_request? or unexpected_content_removal_notice? do
|
if unexpected_support_request? or unexpected_content_removal_notice? do
|
||||||
Mix.raise("the run-scoped moderator changed a non-fixture support record")
|
Mix.raise("the run-scoped moderator changed a non-fixture support record")
|
||||||
|
|
@ -445,7 +463,7 @@ defmodule Mix.Tasks.Wnh.StagingFullE2e do
|
||||||
end
|
end
|
||||||
|
|
||||||
defp assert_prefix_unused!(context) do
|
defp assert_prefix_unused!(context) do
|
||||||
if Repo.exists?(from user in User, where: like(user.email, ^"#{prefix(context.run_id)}%")) do
|
if Repo.exists?(from(user in User, where: like(user.email, ^"#{prefix(context.run_id)}%"))) do
|
||||||
Mix.raise("staging E2E users still exist for #{inspect(context.run_id)}")
|
Mix.raise("staging E2E users still exist for #{inspect(context.run_id)}")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -824,7 +824,19 @@ defmodule WhoNeedHelp.Activities do
|
||||||
[activity],
|
[activity],
|
||||||
^condition or
|
^condition or
|
||||||
fragment(
|
fragment(
|
||||||
"ST_Intersects(?, ST_MakeEnvelope(?, ?, ?, ?, 4326))",
|
"""
|
||||||
|
ST_Intersects(
|
||||||
|
ST_SetSRID(
|
||||||
|
ST_MakePoint(
|
||||||
|
round(ST_X(?)::numeric, 2)::double precision,
|
||||||
|
round(ST_Y(?)::numeric, 2)::double precision
|
||||||
|
),
|
||||||
|
4326
|
||||||
|
),
|
||||||
|
ST_MakeEnvelope(?, ?, ?, ?, 4326)
|
||||||
|
)
|
||||||
|
""",
|
||||||
|
activity.location,
|
||||||
activity.location,
|
activity.location,
|
||||||
^west,
|
^west,
|
||||||
^south,
|
^south,
|
||||||
|
|
@ -894,7 +906,7 @@ defmodule WhoNeedHelp.Activities do
|
||||||
do: is_binary(area) and String.trim(area) != ""
|
do: is_binary(area) and String.trim(area) != ""
|
||||||
|
|
||||||
defp viewport_matches?(activity, %DiscoveryViewport{} = viewport, _area) do
|
defp viewport_matches?(activity, %DiscoveryViewport{} = viewport, _area) do
|
||||||
%{latitude: latitude, longitude: longitude} = Activity.exact_coordinates(activity)
|
%{latitude: latitude, longitude: longitude} = Activity.public_coordinates(activity)
|
||||||
|
|
||||||
latitude >= viewport.south and latitude <= viewport.north and
|
latitude >= viewport.south and latitude <= viewport.north and
|
||||||
longitude_in_viewport?(longitude, viewport)
|
longitude_in_viewport?(longitude, viewport)
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ defmodule WhoNeedHelp.TrackingPresenceCleanup do
|
||||||
":tracking_presence_cleanup_grace_ms must be a non-negative integer"
|
":tracking_presence_cleanup_grace_ms must be a non-negative integer"
|
||||||
end
|
end
|
||||||
|
|
||||||
{:ok, %{grace_ms: grace_ms}}
|
{:ok, %{grace_ms: grace_ms, pending: %{}}}
|
||||||
end
|
end
|
||||||
|
|
||||||
@impl GenServer
|
@impl GenServer
|
||||||
|
|
@ -36,24 +36,41 @@ defmodule WhoNeedHelp.TrackingPresenceCleanup do
|
||||||
{:maybe_stop, key, assignment_id, user_id, tracking_session_id},
|
{:maybe_stop, key, assignment_id, user_id, tracking_session_id},
|
||||||
state
|
state
|
||||||
) do
|
) do
|
||||||
|
cleanup_key = {key, assignment_id, user_id, tracking_session_id}
|
||||||
|
|
||||||
|
case Map.get(state.pending, cleanup_key) do
|
||||||
|
%{timer_ref: timer_ref} -> Process.cancel_timer(timer_ref)
|
||||||
|
nil -> :ok
|
||||||
|
end
|
||||||
|
|
||||||
|
token = make_ref()
|
||||||
|
|
||||||
|
timer_ref =
|
||||||
Process.send_after(
|
Process.send_after(
|
||||||
self(),
|
self(),
|
||||||
{:maybe_stop_after_grace, key, assignment_id, user_id, tracking_session_id},
|
{:maybe_stop_after_grace, cleanup_key, token},
|
||||||
state.grace_ms
|
state.grace_ms
|
||||||
)
|
)
|
||||||
|
|
||||||
{:noreply, state}
|
pending = Map.put(state.pending, cleanup_key, %{timer_ref: timer_ref, token: token})
|
||||||
|
|
||||||
|
{:noreply, %{state | pending: pending}}
|
||||||
end
|
end
|
||||||
|
|
||||||
@impl GenServer
|
@impl GenServer
|
||||||
def handle_info(
|
def handle_info({:maybe_stop_after_grace, cleanup_key, token}, state) do
|
||||||
{:maybe_stop_after_grace, key, assignment_id, user_id, tracking_session_id},
|
case Map.get(state.pending, cleanup_key) do
|
||||||
state
|
%{token: ^token} ->
|
||||||
) do
|
{key, assignment_id, user_id, tracking_session_id} = cleanup_key
|
||||||
|
|
||||||
if Presence.get_by_key(Presence.tracking_topic(), key) == [] do
|
if Presence.get_by_key(Presence.tracking_topic(), key) == [] do
|
||||||
Tracking.stop_browser_session(assignment_id, user_id, tracking_session_id)
|
Tracking.stop_browser_session(assignment_id, user_id, tracking_session_id)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
{:noreply, %{state | pending: Map.delete(state.pending, cleanup_key)}}
|
||||||
|
|
||||||
|
_stale_or_cancelled ->
|
||||||
{:noreply, state}
|
{:noreply, state}
|
||||||
end
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ defmodule WhoNeedHelpWeb.ActivityLive.New do
|
||||||
|> assign(:structured_fields, [])
|
|> assign(:structured_fields, [])
|
||||||
|> assign(:structured_touched_keys, [])
|
|> assign(:structured_touched_keys, [])
|
||||||
|> assign(:structured_submit_attempted, false)
|
|> assign(:structured_submit_attempted, false)
|
||||||
|
|> assign(:submission_errors, [])
|
||||||
|> assign(:form, to_form(Activities.change_activity(%Activity{})))}
|
|> assign(:form, to_form(Activities.change_activity(%Activity{})))}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -37,6 +38,7 @@ defmodule WhoNeedHelpWeb.ActivityLive.New do
|
||||||
socket
|
socket
|
||||||
|> assign(:form, to_form(changeset))
|
|> assign(:form, to_form(changeset))
|
||||||
|> assign(:structured_touched_keys, touched_keys)
|
|> assign(:structured_touched_keys, touched_keys)
|
||||||
|
|> maybe_refresh_submission_errors(changeset)
|
||||||
|> assign_category(params)}
|
|> assign_category(params)}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -55,6 +57,7 @@ defmodule WhoNeedHelpWeb.ActivityLive.New do
|
||||||
socket
|
socket
|
||||||
|> assign(:form, to_form(changeset))
|
|> assign(:form, to_form(changeset))
|
||||||
|> assign(:structured_submit_attempted, true)
|
|> assign(:structured_submit_attempted, true)
|
||||||
|
|> assign(:submission_errors, submission_errors(changeset))
|
||||||
|> assign_category(params)}
|
|> assign_category(params)}
|
||||||
|
|
||||||
{:error, reason} ->
|
{:error, reason} ->
|
||||||
|
|
@ -82,6 +85,24 @@ defmodule WhoNeedHelpWeb.ActivityLive.New do
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
defp maybe_refresh_submission_errors(%{assigns: %{submission_errors: []}} = socket, _changeset),
|
||||||
|
do: socket
|
||||||
|
|
||||||
|
defp maybe_refresh_submission_errors(socket, changeset),
|
||||||
|
do: assign(socket, :submission_errors, submission_errors(changeset))
|
||||||
|
|
||||||
|
defp submission_errors(changeset) do
|
||||||
|
changeset.errors
|
||||||
|
|> Enum.map(fn
|
||||||
|
{:location, _error} ->
|
||||||
|
{:location, gettext("Choose the meeting point on the map or use your current location.")}
|
||||||
|
|
||||||
|
{field, error} ->
|
||||||
|
{field, "#{Phoenix.Naming.humanize(field)}: #{translate_error(error)}"}
|
||||||
|
end)
|
||||||
|
|> Enum.uniq()
|
||||||
|
end
|
||||||
|
|
||||||
defp assign_category(socket, params) do
|
defp assign_category(socket, params) do
|
||||||
category = Enum.find(socket.assigns.categories, &(&1.id == params["category_id"]))
|
category = Enum.find(socket.assigns.categories, &(&1.id == params["category_id"]))
|
||||||
|
|
||||||
|
|
@ -139,6 +160,15 @@ defmodule WhoNeedHelpWeb.ActivityLive.New do
|
||||||
|
|
||||||
defp error_message(_reason), do: gettext("Could not publish the activity. Please try again.")
|
defp error_message(_reason), do: gettext("Could not publish the activity. Please try again.")
|
||||||
|
|
||||||
|
defp location_mode(form) do
|
||||||
|
case to_string(form[:location_visibility].value || "approximate_public") do
|
||||||
|
"hidden" -> "hidden"
|
||||||
|
_approximate_or_missing -> "approximate_public"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
defp coordinate_value(form, key), do: Map.get(form.params || %{}, key, "")
|
||||||
|
|
||||||
@impl true
|
@impl true
|
||||||
def render(assigns) do
|
def render(assigns) do
|
||||||
~H"""
|
~H"""
|
||||||
|
|
@ -292,54 +322,206 @@ defmodule WhoNeedHelpWeb.ActivityLive.New do
|
||||||
min="2"
|
min="2"
|
||||||
label={gettext("Total group capacity")}
|
label={gettext("Total group capacity")}
|
||||||
/>
|
/>
|
||||||
<.input
|
<section
|
||||||
field={@form[:location_label]}
|
id="activity-location-workspace"
|
||||||
label={gettext("Approximate public meeting area")}
|
phx-hook="RequestLocationPicker"
|
||||||
placeholder={gettext("City centre, near the main entrance")}
|
data-location-mode={location_mode(@form)}
|
||||||
/>
|
data-preserve-hidden-coordinates="true"
|
||||||
<.input
|
data-private-center="true"
|
||||||
field={@form[:location_visibility]}
|
data-allowed-radii="1000"
|
||||||
type="select"
|
data-map-target="#activity-location-map"
|
||||||
label={gettext("Public map visibility")}
|
|
||||||
options={[
|
|
||||||
{gettext("Approximate area"), "approximate_public"},
|
|
||||||
{gettext("Hidden"), "hidden"}
|
|
||||||
]}
|
|
||||||
/>
|
|
||||||
<div class="rounded-2xl bg-base-200 p-5">
|
|
||||||
<button
|
|
||||||
type="button"
|
|
||||||
phx-hook="LocationPicker"
|
|
||||||
id="activity-location-picker"
|
|
||||||
data-latitude-target="#activity-latitude"
|
data-latitude-target="#activity-latitude"
|
||||||
data-longitude-target="#activity-longitude"
|
data-longitude-target="#activity-longitude"
|
||||||
data-unavailable-label={gettext("Location is unavailable in this browser.")}
|
data-status-target="#activity-location-status"
|
||||||
data-added-label={gettext("Location added.")}
|
data-map-ready-label={
|
||||||
data-permission-denied-label={gettext("Location permission was denied.")}
|
gettext("Choose the public meeting point on the map or use your current location.")
|
||||||
class="btn btn-outline btn-sm"
|
}
|
||||||
|
data-area-selected-label={
|
||||||
|
gettext(
|
||||||
|
"Meeting point selected. Before approval, people see only its approximate area."
|
||||||
|
)
|
||||||
|
}
|
||||||
|
data-point-selected-label={gettext("Meeting point selected.")}
|
||||||
|
data-private-selected-label={
|
||||||
|
gettext("Private meeting point selected. It appears only after approval.")
|
||||||
|
}
|
||||||
|
data-area-marker-label={gettext("Drag to move the meeting area")}
|
||||||
|
data-point-marker-label={gettext("Drag to move the exact meeting point")}
|
||||||
|
data-private-marker-label={gettext("Drag to move the private meeting point")}
|
||||||
|
data-hidden-label={
|
||||||
|
gettext("Select a meeting point. It will remain hidden until you approve someone.")
|
||||||
|
}
|
||||||
|
data-location-unavailable-label={gettext("Location is unavailable in this browser.")}
|
||||||
|
data-map-retry-label={gettext("Try map again")}
|
||||||
|
data-location-denied-label={gettext("Location permission was denied.")}
|
||||||
|
class="request-location-workspace activity-location-workspace"
|
||||||
>
|
>
|
||||||
{gettext("Use my current foreground location")}
|
<div>
|
||||||
|
<.input
|
||||||
|
field={@form[:location_label]}
|
||||||
|
label={gettext("Public meeting area or landmark")}
|
||||||
|
placeholder={gettext("City centre, near the main entrance")}
|
||||||
|
/>
|
||||||
|
<p class="mt-1 text-sm text-base-content/60">
|
||||||
|
{gettext("This description is visible to everyone. Do not enter a private address.")}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<fieldset class="mt-5">
|
||||||
|
<legend class="mb-2 font-bold">
|
||||||
|
{gettext("What should people see before approval?")}
|
||||||
|
</legend>
|
||||||
|
<div class="request-location-modes">
|
||||||
|
<label class="request-location-mode">
|
||||||
|
<input
|
||||||
|
type="radio"
|
||||||
|
name="activity[location_visibility]"
|
||||||
|
value="approximate_public"
|
||||||
|
checked={location_mode(@form) == "approximate_public"}
|
||||||
|
data-location-mode-input
|
||||||
|
/>
|
||||||
|
<.icon name="hero-map" class="size-5" />
|
||||||
|
<span>
|
||||||
|
<strong>{gettext("Approximate area")}</strong>
|
||||||
|
<small>{gettext("Recommended for discoverability")}</small>
|
||||||
|
</span>
|
||||||
|
</label>
|
||||||
|
<label class="request-location-mode">
|
||||||
|
<input
|
||||||
|
type="radio"
|
||||||
|
name="activity[location_visibility]"
|
||||||
|
value="hidden"
|
||||||
|
checked={location_mode(@form) == "hidden"}
|
||||||
|
data-location-mode-input
|
||||||
|
/>
|
||||||
|
<.icon name="hero-eye-slash" class="size-5" />
|
||||||
|
<span>
|
||||||
|
<strong>{gettext("No public map")}</strong>
|
||||||
|
<small>{gettext("People can find it by the area description")}</small>
|
||||||
|
</span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
<div class="request-location-grid mt-4">
|
||||||
|
<div class="request-location-map-shell">
|
||||||
|
<div
|
||||||
|
id="activity-location-map"
|
||||||
|
phx-update="ignore"
|
||||||
|
data-map-unavailable-label={
|
||||||
|
gettext("The map is unavailable. You can enter coordinates manually.")
|
||||||
|
}
|
||||||
|
data-map-retry-label={gettext("Try map again")}
|
||||||
|
class="aid-map request-location-map"
|
||||||
|
/>
|
||||||
|
<div class="request-location-map-hint">
|
||||||
|
<.icon name="hero-hand-raised" class="size-4 shrink-0" />
|
||||||
|
<span data-approximate-map-hint>
|
||||||
|
{gettext("Click the map or drag the pin to choose the meeting point")}
|
||||||
|
</span>
|
||||||
|
<span data-exact-map-hint>
|
||||||
|
{gettext("Click the map or drag the pin to choose the meeting point")}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<aside class="request-location-controls">
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
data-use-current-location
|
||||||
|
class="btn btn-outline btn-info w-full"
|
||||||
|
>
|
||||||
|
<.icon name="hero-paper-airplane" class="size-5" />
|
||||||
|
{gettext("Use my location")}
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
|
<div class="request-location-privacy mt-4" data-approximate-guidance>
|
||||||
|
<.icon name="hero-shield-check" class="size-6 shrink-0" />
|
||||||
|
<div>
|
||||||
|
<strong>{gettext("The public map stays approximate")}</strong>
|
||||||
|
<p>
|
||||||
|
{gettext(
|
||||||
|
"Only people you approve receive the exact meeting point and group chat."
|
||||||
|
)}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="request-location-after-match mt-4" data-hidden-guidance>
|
||||||
|
<.icon name="hero-lock-closed" class="size-6 shrink-0" />
|
||||||
|
<div>
|
||||||
|
<strong>{gettext("The public map stays hidden")}</strong>
|
||||||
|
<p>
|
||||||
|
{gettext(
|
||||||
|
"People can search by the public area description. Approved participants receive the exact point."
|
||||||
|
)}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</aside>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p
|
||||||
|
id="activity-location-status"
|
||||||
|
role="status"
|
||||||
|
aria-live="polite"
|
||||||
|
class="mt-3 min-h-5 text-sm font-medium text-base-content/65"
|
||||||
|
>
|
||||||
|
{gettext("Choose the public meeting point on the map or use your current location.")}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<details
|
||||||
|
id="activity-location-manual"
|
||||||
|
phx-update="ignore"
|
||||||
|
class="request-location-manual mt-3"
|
||||||
|
>
|
||||||
|
<summary>{gettext("Enter coordinates manually")}</summary>
|
||||||
<p class="mt-2 text-xs text-base-content/60">
|
<p class="mt-2 text-xs text-base-content/60">
|
||||||
{gettext("Exact coordinates are shown only to participants you approve.")}
|
{gettext(
|
||||||
|
"These coordinates are the exact meeting point. They are revealed only after approval."
|
||||||
|
)}
|
||||||
</p>
|
</p>
|
||||||
<div class="mt-3 grid grid-cols-2 gap-3">
|
<div class="mt-3 grid grid-cols-2 gap-3">
|
||||||
<.input
|
<label class="fieldset">
|
||||||
field={@form[:latitude]}
|
<span class="label">{gettext("Latitude")}</span>
|
||||||
|
<input
|
||||||
id="activity-latitude"
|
id="activity-latitude"
|
||||||
|
name="activity[latitude]"
|
||||||
type="number"
|
type="number"
|
||||||
step="any"
|
step="any"
|
||||||
label={gettext("Latitude")}
|
min="-90"
|
||||||
|
max="90"
|
||||||
|
value={coordinate_value(@form, "latitude")}
|
||||||
|
class="input w-full"
|
||||||
|
data-coordinate-input
|
||||||
/>
|
/>
|
||||||
<.input
|
</label>
|
||||||
field={@form[:longitude]}
|
<label class="fieldset">
|
||||||
|
<span class="label">{gettext("Longitude")}</span>
|
||||||
|
<input
|
||||||
id="activity-longitude"
|
id="activity-longitude"
|
||||||
|
name="activity[longitude]"
|
||||||
type="number"
|
type="number"
|
||||||
step="any"
|
step="any"
|
||||||
label={gettext("Longitude")}
|
min="-180"
|
||||||
|
max="180"
|
||||||
|
value={coordinate_value(@form, "longitude")}
|
||||||
|
class="input w-full"
|
||||||
|
data-coordinate-input
|
||||||
/>
|
/>
|
||||||
|
</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</details>
|
||||||
|
|
||||||
|
<p
|
||||||
|
:for={{:location, message} <- @submission_errors}
|
||||||
|
id="activity-location-error"
|
||||||
|
class="mt-3 flex items-center gap-2 text-sm font-semibold text-error"
|
||||||
|
>
|
||||||
|
<.icon name="hero-exclamation-circle" class="size-5" />
|
||||||
|
{message}
|
||||||
|
</p>
|
||||||
|
</section>
|
||||||
<div class="rounded-2xl border border-base-300 p-4 text-sm">
|
<div class="rounded-2xl border border-base-300 p-4 text-sm">
|
||||||
<.input
|
<.input
|
||||||
field={@form[:safety_confirmed]}
|
field={@form[:safety_confirmed]}
|
||||||
|
|
|
||||||
|
|
@ -535,6 +535,7 @@ defmodule WhoNeedHelpWeb.ActivityLive.Show do
|
||||||
|
|
||||||
<aside class="space-y-5">
|
<aside class="space-y-5">
|
||||||
<div
|
<div
|
||||||
|
:if={@coordinates}
|
||||||
id="activity-detail-map"
|
id="activity-detail-map"
|
||||||
phx-hook="AidMap"
|
phx-hook="AidMap"
|
||||||
phx-update="ignore"
|
phx-update="ignore"
|
||||||
|
|
@ -546,7 +547,24 @@ defmodule WhoNeedHelpWeb.ActivityLive.Show do
|
||||||
data-map-recenter-label={gettext("Show location on map")}
|
data-map-recenter-label={gettext("Show location on map")}
|
||||||
class="aid-map"
|
class="aid-map"
|
||||||
/>
|
/>
|
||||||
<div class="rounded-2xl bg-base-200 p-5 text-sm">
|
<div
|
||||||
|
:if={is_nil(@coordinates)}
|
||||||
|
id="activity-detail-map-hidden"
|
||||||
|
class="rounded-2xl border border-base-300 bg-base-200 p-5 text-sm"
|
||||||
|
>
|
||||||
|
<div class="flex items-start gap-3">
|
||||||
|
<.icon name="hero-eye-slash" class="mt-0.5 size-6 shrink-0 text-primary" />
|
||||||
|
<div>
|
||||||
|
<h2 class="font-bold">{gettext("The public map stays hidden")}</h2>
|
||||||
|
<p class="mt-2 text-base-content/65">
|
||||||
|
{gettext(
|
||||||
|
"People can search by the public area description. Approved participants receive the exact point."
|
||||||
|
)}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div :if={@coordinates} class="rounded-2xl bg-base-200 p-5 text-sm">
|
||||||
<h2 class="font-bold">{gettext("Location privacy")}</h2>
|
<h2 class="font-bold">{gettext("Location privacy")}</h2>
|
||||||
<p class="mt-2 text-base-content/65">
|
<p class="mt-2 text-base-content/65">
|
||||||
<%= if @approved? do %>
|
<%= if @approved? do %>
|
||||||
|
|
|
||||||
|
|
@ -189,7 +189,7 @@ msgstr ""
|
||||||
msgid "Activities are optional plans, not urgent help, and do not affect helper reputation. Meet in a suitable public place first. Organizers approve every participant; exact coordinates and group chat are limited to approved participants. Share route and safety plans for hikes, and never publish home addresses, access codes, or travel documents."
|
msgid "Activities are optional plans, not urgent help, and do not affect helper reputation. Meet in a suitable public place first. Organizers approve every participant; exact coordinates and group chat are limited to approved participants. Share route and safety plans for hikes, and never publish home addresses, access codes, or travel documents."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:200
|
#: lib/who_need_help_web/live/activity_live/new.ex:230
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Activity details"
|
msgid "Activity details"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -205,7 +205,7 @@ msgstr ""
|
||||||
msgid "Activity is unavailable."
|
msgid "Activity is unavailable."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:50
|
#: lib/who_need_help_web/live/activity_live/new.ex:52
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Activity published. You approve every participant."
|
msgid "Activity published. You approve every participant."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -216,7 +216,7 @@ msgid "Activity restored."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/index.ex:385
|
#: lib/who_need_help_web/live/activity_live/index.ex:385
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:174
|
#: 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"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -278,17 +278,12 @@ msgid "Approved participants"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:80
|
#: lib/who_need_help_web/controllers/page_html/home.html.heex:80
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:305
|
#: lib/who_need_help_web/live/activity_live/new.ex:385
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:520
|
#: lib/who_need_help_web/live/request_live/new.ex:520
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Approximate area"
|
msgid "Approximate area"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:297
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Approximate public meeting area"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/profile_live.ex:163
|
#: lib/who_need_help_web/live/profile_live.ex:163
|
||||||
#: lib/who_need_help_web/live/request_live/show.ex:996
|
#: lib/who_need_help_web/live/request_live/show.ex:996
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
|
|
@ -425,7 +420,7 @@ msgstr ""
|
||||||
msgid "Choose a category, urgency, and safe location visibility."
|
msgid "Choose a category, urgency, and safe location visibility."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:175
|
#: lib/who_need_help_web/live/activity_live/new.ex:205
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Choose activity"
|
msgid "Choose activity"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -435,15 +430,15 @@ msgstr ""
|
||||||
msgid "Choose category"
|
msgid "Choose category"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:212
|
#: lib/who_need_help_web/live/activity_live/new.ex:242
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:239
|
#: lib/who_need_help_web/live/activity_live/new.ex:269
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:344
|
#: lib/who_need_help_web/live/request_live/new.ex:344
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:371
|
#: lib/who_need_help_web/live/request_live/new.ex:371
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Choose…"
|
msgid "Choose…"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:298
|
#: lib/who_need_help_web/live/activity_live/new.ex:363
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "City centre, near the main entrance"
|
msgid "City centre, near the main entrance"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -459,7 +454,7 @@ msgstr ""
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:269
|
#: lib/who_need_help_web/live/activity_live/new.ex:299
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Coffee and conversation"
|
msgid "Coffee and conversation"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -524,7 +519,7 @@ msgstr ""
|
||||||
msgid "Confirm your account and ensure it is active first."
|
msgid "Confirm your account and ensure it is active first."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:135
|
#: lib/who_need_help_web/live/activity_live/new.ex:156
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:235
|
#: lib/who_need_help_web/live/request_live/new.ex:235
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Confirm your email and ensure your account is active before publishing."
|
msgid "Confirm your email and ensure your account is active before publishing."
|
||||||
|
|
@ -549,7 +544,7 @@ msgid "Create activity"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/index.ex:535
|
#: lib/who_need_help_web/live/activity_live/index.ex:535
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:150
|
#: 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"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -601,7 +596,7 @@ msgstr ""
|
||||||
msgid "Default location visibility"
|
msgid "Default location visibility"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:276
|
#: lib/who_need_help_web/live/activity_live/new.ex:306
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Describe the public plan, approximate duration, and who might enjoy it."
|
msgid "Describe the public plan, approximate duration, and who might enjoy it."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -683,11 +678,6 @@ msgstr ""
|
||||||
msgid "Exact address after matching"
|
msgid "Exact address after matching"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:324
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Exact coordinates are shown only to participants you approve."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/profile_live.ex:164
|
#: lib/who_need_help_web/live/profile_live.ex:164
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Exact for active match"
|
msgid "Exact for active match"
|
||||||
|
|
@ -805,7 +795,6 @@ msgstr ""
|
||||||
msgid "Hi %{email},\n\nYou can log into your account by visiting the URL below:\n\n%{url}\n\nIf you didn't request this email, please ignore this."
|
msgid "Hi %{email},\n\nYou can log into your account by visiting the URL below:\n\n%{url}\n\nIf you didn't request this email, please ignore this."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:306
|
|
||||||
#: lib/who_need_help_web/live/profile_live.ex:162
|
#: lib/who_need_help_web/live/profile_live.ex:162
|
||||||
#: lib/who_need_help_web/live/request_live/show.ex:997
|
#: lib/who_need_help_web/live/request_live/show.ex:997
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
|
|
@ -845,7 +834,7 @@ msgstr ""
|
||||||
msgid "I confirm this is not an emergency, there is no immediate danger, and the requested task is lawful."
|
msgid "I confirm this is not an emergency, there is no immediate danger, and the requested task is lawful."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:348
|
#: lib/who_need_help_web/live/activity_live/new.ex:526
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "I will approve participants individually, keep sensitive details in the approved group, and use an appropriate public first meeting point."
|
msgid "I will approve participants individually, keep sensitive details in the approved group, and use an appropriate public first meeting point."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -904,13 +893,13 @@ msgstr ""
|
||||||
msgid "Join requests are closed."
|
msgid "Join requests are closed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:286
|
#: lib/who_need_help_web/live/activity_live/new.ex:316
|
||||||
#: lib/who_need_help_web/live/activity_live/show.ex:387
|
#: lib/who_need_help_web/live/activity_live/show.ex:387
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Join requests close"
|
msgid "Join requests close"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:332
|
#: lib/who_need_help_web/live/activity_live/new.ex:482
|
||||||
#: lib/who_need_help_web/live/notification_live.ex:686
|
#: lib/who_need_help_web/live/notification_live.ex:686
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:668
|
#: lib/who_need_help_web/live/request_live/new.ex:668
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
|
|
@ -968,7 +957,7 @@ msgstr ""
|
||||||
msgid "Logged out successfully."
|
msgid "Logged out successfully."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:339
|
#: lib/who_need_help_web/live/activity_live/new.ex:496
|
||||||
#: lib/who_need_help_web/live/notification_live.ex:700
|
#: lib/who_need_help_web/live/notification_live.ex:700
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:682
|
#: lib/who_need_help_web/live/request_live/new.ex:682
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
|
|
@ -1103,7 +1092,7 @@ msgstr ""
|
||||||
msgid "New password"
|
msgid "New password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:244
|
#: lib/who_need_help_web/live/activity_live/new.ex:274
|
||||||
#: lib/who_need_help_web/live/activity_live/show.ex:300
|
#: lib/who_need_help_web/live/activity_live/show.ex:300
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:379
|
#: lib/who_need_help_web/live/request_live/new.ex:379
|
||||||
#: lib/who_need_help_web/live/request_live/show.ex:877
|
#: lib/who_need_help_web/live/request_live/show.ex:877
|
||||||
|
|
@ -1289,7 +1278,7 @@ msgstr ""
|
||||||
msgid "Pickup notes"
|
msgid "Pickup notes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:274
|
#: lib/who_need_help_web/live/activity_live/new.ex:304
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Plan and expectations"
|
msgid "Plan and expectations"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -1378,11 +1367,6 @@ msgstr ""
|
||||||
msgid "Public location can be hidden, approximate, or explicitly exact. Live tracking is optional. A browser shares only while its page is open; Android shows a persistent foreground-service notification while sharing. The current exact point is deleted when sharing stops, a match ends, or either participant blocks the other; derived movement and proximity evidence may remain."
|
msgid "Public location can be hidden, approximate, or explicitly exact. Live tracking is optional. A browser shares only while its page is open; Android shows a persistent foreground-service notification while sharing. The current exact point is deleted when sharing stops, a match ends, or either participant blocks the other; derived movement and proximity evidence may remain."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:303
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Public map visibility"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/profile_live.ex:326
|
#: lib/who_need_help_web/live/profile_live.ex:326
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Public profile URL"
|
msgid "Public profile URL"
|
||||||
|
|
@ -1394,12 +1378,12 @@ msgstr ""
|
||||||
msgid "Public reputation"
|
msgid "Public reputation"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:152
|
#: lib/who_need_help_web/live/activity_live/new.ex:182
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Publish a clear public plan. Join requests stay pending until you approve them."
|
msgid "Publish a clear public plan. Join requests stay pending until you approve them."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:360
|
#: lib/who_need_help_web/live/activity_live/new.ex:538
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Publish activity"
|
msgid "Publish activity"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -1414,7 +1398,7 @@ msgstr ""
|
||||||
msgid "Publish request"
|
msgid "Publish request"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:358
|
#: lib/who_need_help_web/live/activity_live/new.ex:536
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:742
|
#: lib/who_need_help_web/live/request_live/new.ex:742
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Publishing…"
|
msgid "Publishing…"
|
||||||
|
|
@ -1697,7 +1681,7 @@ msgstr ""
|
||||||
msgid "Short bio"
|
msgid "Short bio"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:268
|
#: lib/who_need_help_web/live/activity_live/new.ex:298
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:411
|
#: lib/who_need_help_web/live/request_live/new.ex:411
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Short title"
|
msgid "Short title"
|
||||||
|
|
@ -1978,7 +1962,7 @@ msgstr ""
|
||||||
msgid "Today"
|
msgid "Today"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:138
|
#: lib/who_need_help_web/live/activity_live/new.ex:159
|
||||||
#: lib/who_need_help_web/live/activity_live/show.ex:336
|
#: lib/who_need_help_web/live/activity_live/show.ex:336
|
||||||
#: lib/who_need_help_web/live/category_proposal_live.ex:85
|
#: lib/who_need_help_web/live/category_proposal_live.ex:85
|
||||||
#: lib/who_need_help_web/live/profile_live.ex:59
|
#: lib/who_need_help_web/live/profile_live.ex:59
|
||||||
|
|
@ -2009,7 +1993,7 @@ msgstr ""
|
||||||
msgid "Total"
|
msgid "Total"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:293
|
#: lib/who_need_help_web/live/activity_live/new.ex:323
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Total group capacity"
|
msgid "Total group capacity"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -2057,7 +2041,7 @@ msgstr ""
|
||||||
msgid "Urgent help"
|
msgid "Urgent help"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:158
|
#: lib/who_need_help_web/live/activity_live/new.ex:188
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Use a public first meeting point. Do not publish a home address, access code, travel document, or other sensitive information."
|
msgid "Use a public first meeting point. Do not publish a home address, access code, travel document, or other sensitive information."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -2072,11 +2056,6 @@ msgstr ""
|
||||||
msgid "Use light theme"
|
msgid "Use light theme"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:321
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Use my current foreground location"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:251
|
#: lib/who_need_help_web/controllers/page_html/home.html.heex:251
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Use private chat and optional live location sharing."
|
msgid "Use private chat and optional live location sharing."
|
||||||
|
|
@ -2215,7 +2194,7 @@ msgstr ""
|
||||||
msgid "Write a safe coordination message…"
|
msgid "Write a safe coordination message…"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:241
|
#: lib/who_need_help_web/live/activity_live/new.ex:271
|
||||||
#: lib/who_need_help_web/live/activity_live/show.ex:298
|
#: lib/who_need_help_web/live/activity_live/show.ex:298
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:373
|
#: lib/who_need_help_web/live/request_live/new.ex:373
|
||||||
#: lib/who_need_help_web/live/request_live/show.ex:875
|
#: lib/who_need_help_web/live/request_live/show.ex:875
|
||||||
|
|
@ -2452,7 +2431,7 @@ msgstr ""
|
||||||
msgid "← All requests"
|
msgid "← All requests"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:148
|
#: lib/who_need_help_web/live/activity_live/new.ex:178
|
||||||
#: lib/who_need_help_web/live/activity_live/show.ex:352
|
#: lib/who_need_help_web/live/activity_live/show.ex:352
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "← Back to activities"
|
msgid "← Back to activities"
|
||||||
|
|
@ -2578,7 +2557,7 @@ msgstr ""
|
||||||
msgid "Could not complete the action. Please try again."
|
msgid "Could not complete the action. Please try again."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:140
|
#: lib/who_need_help_web/live/activity_live/new.ex:161
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Could not publish the activity. Please try again."
|
msgid "Could not publish the activity. Please try again."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -4038,6 +4017,7 @@ msgstr ""
|
||||||
msgid "Date"
|
msgid "Date"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:474
|
||||||
#: lib/who_need_help_web/live/notification_live.ex:683
|
#: lib/who_need_help_web/live/notification_live.ex:683
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:660
|
#: lib/who_need_help_web/live/request_live/new.ex:660
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
|
|
@ -4125,14 +4105,14 @@ msgstr ""
|
||||||
msgid "In 3 hours"
|
msgid "In 3 hours"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:316
|
#: lib/who_need_help_web/live/activity_live/new.ex:354
|
||||||
#: lib/who_need_help_web/live/notification_live.ex:601
|
#: lib/who_need_help_web/live/notification_live.ex:601
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:484
|
#: lib/who_need_help_web/live/request_live/new.ex:484
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Location is unavailable in this browser."
|
msgid "Location is unavailable in this browser."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:318
|
#: lib/who_need_help_web/live/activity_live/new.ex:356
|
||||||
#: lib/who_need_help_web/live/notification_live.ex:603
|
#: lib/who_need_help_web/live/notification_live.ex:603
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:486
|
#: lib/who_need_help_web/live/request_live/new.ex:486
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
|
|
@ -4283,7 +4263,7 @@ msgstr ""
|
||||||
msgid "Signing in does not create a new account."
|
msgid "Signing in does not create a new account."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:282
|
#: lib/who_need_help_web/live/activity_live/new.ex:312
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Starts at"
|
msgid "Starts at"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -4309,6 +4289,7 @@ msgstr ""
|
||||||
msgid "This activity is closed. The group chat remains available as read-only history."
|
msgid "This activity is closed. The group chat remains available as read-only history."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:366
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:503
|
#: lib/who_need_help_web/live/request_live/new.ex:503
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "This description is visible to everyone. Do not enter a private address."
|
msgid "This description is visible to everyone. Do not enter a private address."
|
||||||
|
|
@ -4385,6 +4366,7 @@ msgstr ""
|
||||||
msgid "Use another email"
|
msgid "Use another email"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:435
|
||||||
#: lib/who_need_help_web/live/notification_live.ex:636
|
#: lib/who_need_help_web/live/notification_live.ex:636
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:595
|
#: lib/who_need_help_web/live/request_live/new.ex:595
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
|
|
@ -4641,6 +4623,8 @@ 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:496
|
#: lib/who_need_help_web/live/activity_live/index.ex:496
|
||||||
|
#: 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/show.ex:545
|
#: lib/who_need_help_web/live/activity_live/show.ex:545
|
||||||
#: 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
|
||||||
|
|
@ -4652,7 +4636,7 @@ msgstr ""
|
||||||
msgid "Try map again"
|
msgid "Try map again"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:124
|
#: lib/who_need_help_web/live/activity_live/new.ex:145
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:193
|
#: lib/who_need_help_web/live/request_live/new.ex:193
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "%{field} is required."
|
msgid "%{field} is required."
|
||||||
|
|
@ -4665,13 +4649,13 @@ msgstr ""
|
||||||
msgid "Both reviews are now visible on participant profiles."
|
msgid "Both reviews are now visible on participant profiles."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:127
|
#: lib/who_need_help_web/live/activity_live/new.ex:148
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:196
|
#: lib/who_need_help_web/live/request_live/new.ex:196
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Check the category details and try again."
|
msgid "Check the category details and try again."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:130
|
#: lib/who_need_help_web/live/activity_live/new.ex:151
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:199
|
#: lib/who_need_help_web/live/request_live/new.ex:199
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Choose a valid value for %{field}."
|
msgid "Choose a valid value for %{field}."
|
||||||
|
|
@ -6470,7 +6454,7 @@ msgstr ""
|
||||||
msgid "A specific option inside an existing category"
|
msgid "A specific option inside an existing category"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:183
|
#: lib/who_need_help_web/live/activity_live/new.ex:213
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:311
|
#: lib/who_need_help_web/live/request_live/new.ex:311
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Can't find the right option? Propose a category"
|
msgid "Can't find the right option? Propose a category"
|
||||||
|
|
@ -6507,7 +6491,7 @@ msgstr ""
|
||||||
msgid "New subcategory"
|
msgid "New subcategory"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:177
|
#: lib/who_need_help_web/live/activity_live/new.ex:207
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "No matching activity. You can propose a new one."
|
msgid "No matching activity. You can propose a new one."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -6522,7 +6506,7 @@ msgstr ""
|
||||||
msgid "No matching main category"
|
msgid "No matching main category"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:176
|
#: lib/who_need_help_web/live/activity_live/new.ex:206
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Search activity categories"
|
msgid "Search activity categories"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -6593,11 +6577,6 @@ msgstr ""
|
||||||
msgid "Android push notifications are not available yet."
|
msgid "Android push notifications are not available yet."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:317
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Location added."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/who_need_help_web/components/layouts/root.html.heex:9
|
#: lib/who_need_help_web/components/layouts/root.html.heex:9
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Map marker"
|
msgid "Map marker"
|
||||||
|
|
@ -6657,3 +6636,110 @@ msgstr ""
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Who Need Help connects adults who need urgent local help with nearby volunteers."
|
msgid "Who Need Help connects adults who need urgent local help with nearby volunteers."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:337
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:470
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Choose the public meeting point on the map or use your current location."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:420
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:423
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Click the map or drag the pin to choose the meeting point"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:349
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Drag to move the exact meeting point"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:348
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Drag to move the meeting area"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:350
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Drag to move the private meeting point"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:344
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Meeting point selected."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:340
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Meeting point selected. Before approval, people see only its approximate area."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:399
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "No public map"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:443
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Only people you approve receive the exact meeting point and group chat."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:400
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "People can find it by the area description"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:455
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "People can search by the public area description. Approved participants receive the exact point."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:346
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Private meeting point selected. It appears only after approval."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:362
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Public meeting area or landmark"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:386
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Recommended for discoverability"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:352
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Select a meeting point. It will remain hidden until you approve someone."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:412
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "The map is unavailable. You can enter coordinates manually."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:441
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "The public map stays approximate"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:453
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "The public map stays hidden"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:476
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "These coordinates are the exact meeting point. They are revealed only after approval."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:372
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "What should people see before approval?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:98
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Choose the meeting point on the map or use your current location."
|
||||||
|
msgstr ""
|
||||||
|
|
|
||||||
|
|
@ -189,7 +189,7 @@ msgstr "Activities"
|
||||||
msgid "Activities are optional plans, not urgent help, and do not affect helper reputation. Meet in a suitable public place first. Organizers approve every participant; exact coordinates and group chat are limited to approved participants. Share route and safety plans for hikes, and never publish home addresses, access codes, or travel documents."
|
msgid "Activities are optional plans, not urgent help, and do not affect helper reputation. Meet in a suitable public place first. Organizers approve every participant; exact coordinates and group chat are limited to approved participants. Share route and safety plans for hikes, and never publish home addresses, access codes, or travel documents."
|
||||||
msgstr "Activities are optional plans, not urgent help, and do not affect helper reputation. Meet in a suitable public place first. Organizers approve every participant; exact coordinates and group chat are limited to approved participants. Share route and safety plans for hikes, and never publish home addresses, access codes, or travel documents."
|
msgstr "Activities are optional plans, not urgent help, and do not affect helper reputation. Meet in a suitable public place first. Organizers approve every participant; exact coordinates and group chat are limited to approved participants. Share route and safety plans for hikes, and never publish home addresses, access codes, or travel documents."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:200
|
#: lib/who_need_help_web/live/activity_live/new.ex:230
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Activity details"
|
msgid "Activity details"
|
||||||
msgstr "Activity details"
|
msgstr "Activity details"
|
||||||
|
|
@ -205,7 +205,7 @@ msgstr "Activity hidden."
|
||||||
msgid "Activity is unavailable."
|
msgid "Activity is unavailable."
|
||||||
msgstr "Activity is unavailable."
|
msgstr "Activity is unavailable."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:50
|
#: lib/who_need_help_web/live/activity_live/new.ex:52
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Activity published. You approve every participant."
|
msgid "Activity published. You approve every participant."
|
||||||
msgstr "Activity published. You approve every participant."
|
msgstr "Activity published. You approve every participant."
|
||||||
|
|
@ -216,7 +216,7 @@ msgid "Activity restored."
|
||||||
msgstr "Activity restored."
|
msgstr "Activity restored."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/index.ex:385
|
#: lib/who_need_help_web/live/activity_live/index.ex:385
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:174
|
#: 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"
|
||||||
msgstr "Activity type"
|
msgstr "Activity type"
|
||||||
|
|
@ -278,17 +278,12 @@ msgid "Approved participants"
|
||||||
msgstr "Approved participants"
|
msgstr "Approved participants"
|
||||||
|
|
||||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:80
|
#: lib/who_need_help_web/controllers/page_html/home.html.heex:80
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:305
|
#: lib/who_need_help_web/live/activity_live/new.ex:385
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:520
|
#: lib/who_need_help_web/live/request_live/new.ex:520
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Approximate area"
|
msgid "Approximate area"
|
||||||
msgstr "Approximate area"
|
msgstr "Approximate area"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:297
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Approximate public meeting area"
|
|
||||||
msgstr "Approximate public meeting area"
|
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/profile_live.ex:163
|
#: lib/who_need_help_web/live/profile_live.ex:163
|
||||||
#: lib/who_need_help_web/live/request_live/show.ex:996
|
#: lib/who_need_help_web/live/request_live/show.ex:996
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
|
|
@ -425,7 +420,7 @@ msgstr "Changing..."
|
||||||
msgid "Choose a category, urgency, and safe location visibility."
|
msgid "Choose a category, urgency, and safe location visibility."
|
||||||
msgstr "Choose a category, urgency, and safe location visibility."
|
msgstr "Choose a category, urgency, and safe location visibility."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:175
|
#: lib/who_need_help_web/live/activity_live/new.ex:205
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Choose activity"
|
msgid "Choose activity"
|
||||||
msgstr "Choose activity"
|
msgstr "Choose activity"
|
||||||
|
|
@ -435,15 +430,15 @@ msgstr "Choose activity"
|
||||||
msgid "Choose category"
|
msgid "Choose category"
|
||||||
msgstr "Choose category"
|
msgstr "Choose category"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:212
|
#: lib/who_need_help_web/live/activity_live/new.ex:242
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:239
|
#: lib/who_need_help_web/live/activity_live/new.ex:269
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:344
|
#: lib/who_need_help_web/live/request_live/new.ex:344
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:371
|
#: lib/who_need_help_web/live/request_live/new.ex:371
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Choose…"
|
msgid "Choose…"
|
||||||
msgstr "Choose…"
|
msgstr "Choose…"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:298
|
#: lib/who_need_help_web/live/activity_live/new.ex:363
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "City centre, near the main entrance"
|
msgid "City centre, near the main entrance"
|
||||||
msgstr "City centre, near the main entrance"
|
msgstr "City centre, near the main entrance"
|
||||||
|
|
@ -459,7 +454,7 @@ msgstr "Clear"
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Close"
|
msgstr "Close"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:269
|
#: lib/who_need_help_web/live/activity_live/new.ex:299
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Coffee and conversation"
|
msgid "Coffee and conversation"
|
||||||
msgstr "Coffee and conversation"
|
msgstr "Coffee and conversation"
|
||||||
|
|
@ -524,7 +519,7 @@ msgstr "Confirm new password"
|
||||||
msgid "Confirm your account and ensure it is active first."
|
msgid "Confirm your account and ensure it is active first."
|
||||||
msgstr "Confirm your account and ensure it is active first."
|
msgstr "Confirm your account and ensure it is active first."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:135
|
#: lib/who_need_help_web/live/activity_live/new.ex:156
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:235
|
#: lib/who_need_help_web/live/request_live/new.ex:235
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Confirm your email and ensure your account is active before publishing."
|
msgid "Confirm your email and ensure your account is active before publishing."
|
||||||
|
|
@ -549,7 +544,7 @@ msgid "Create activity"
|
||||||
msgstr "Create activity"
|
msgstr "Create activity"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/index.ex:535
|
#: lib/who_need_help_web/live/activity_live/index.ex:535
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:150
|
#: 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"
|
||||||
msgstr "Create an activity"
|
msgstr "Create an activity"
|
||||||
|
|
@ -601,7 +596,7 @@ msgstr "Decline"
|
||||||
msgid "Default location visibility"
|
msgid "Default location visibility"
|
||||||
msgstr "Default location visibility"
|
msgstr "Default location visibility"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:276
|
#: lib/who_need_help_web/live/activity_live/new.ex:306
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Describe the public plan, approximate duration, and who might enjoy it."
|
msgid "Describe the public plan, approximate duration, and who might enjoy it."
|
||||||
msgstr "Describe the public plan, approximate duration, and who might enjoy it."
|
msgstr "Describe the public plan, approximate duration, and who might enjoy it."
|
||||||
|
|
@ -683,11 +678,6 @@ msgstr "Enter handover code"
|
||||||
msgid "Exact address after matching"
|
msgid "Exact address after matching"
|
||||||
msgstr "Exact address after matching"
|
msgstr "Exact address after matching"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:324
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Exact coordinates are shown only to participants you approve."
|
|
||||||
msgstr "Exact coordinates are shown only to participants you approve."
|
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/profile_live.ex:164
|
#: lib/who_need_help_web/live/profile_live.ex:164
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Exact for active match"
|
msgid "Exact for active match"
|
||||||
|
|
@ -805,7 +795,6 @@ msgstr "Hi %{email},\n\nYou can confirm your account by visiting the URL below:\
|
||||||
msgid "Hi %{email},\n\nYou can log into your account by visiting the URL below:\n\n%{url}\n\nIf you didn't request this email, please ignore this."
|
msgid "Hi %{email},\n\nYou can log into your account by visiting the URL below:\n\n%{url}\n\nIf you didn't request this email, please ignore this."
|
||||||
msgstr "Hi %{email},\n\nYou can log into your account by visiting the URL below:\n\n%{url}\n\nIf you didn't request this email, please ignore this."
|
msgstr "Hi %{email},\n\nYou can log into your account by visiting the URL below:\n\n%{url}\n\nIf you didn't request this email, please ignore this."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:306
|
|
||||||
#: lib/who_need_help_web/live/profile_live.ex:162
|
#: lib/who_need_help_web/live/profile_live.ex:162
|
||||||
#: lib/who_need_help_web/live/request_live/show.ex:997
|
#: lib/who_need_help_web/live/request_live/show.ex:997
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
|
|
@ -845,7 +834,7 @@ msgstr "I confirm there is no immediate danger, people and vehicles are away fro
|
||||||
msgid "I confirm this is not an emergency, there is no immediate danger, and the requested task is lawful."
|
msgid "I confirm this is not an emergency, there is no immediate danger, and the requested task is lawful."
|
||||||
msgstr "I confirm this is not an emergency, there is no immediate danger, and the requested task is lawful."
|
msgstr "I confirm this is not an emergency, there is no immediate danger, and the requested task is lawful."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:348
|
#: lib/who_need_help_web/live/activity_live/new.ex:526
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "I will approve participants individually, keep sensitive details in the approved group, and use an appropriate public first meeting point."
|
msgid "I will approve participants individually, keep sensitive details in the approved group, and use an appropriate public first meeting point."
|
||||||
msgstr "I will approve participants individually, keep sensitive details in the approved group, and use an appropriate public first meeting point."
|
msgstr "I will approve participants individually, keep sensitive details in the approved group, and use an appropriate public first meeting point."
|
||||||
|
|
@ -904,13 +893,13 @@ msgstr "Invalid email or password"
|
||||||
msgid "Join requests are closed."
|
msgid "Join requests are closed."
|
||||||
msgstr "Join requests are closed."
|
msgstr "Join requests are closed."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:286
|
#: lib/who_need_help_web/live/activity_live/new.ex:316
|
||||||
#: lib/who_need_help_web/live/activity_live/show.ex:387
|
#: lib/who_need_help_web/live/activity_live/show.ex:387
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Join requests close"
|
msgid "Join requests close"
|
||||||
msgstr "Join requests close"
|
msgstr "Join requests close"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:332
|
#: lib/who_need_help_web/live/activity_live/new.ex:482
|
||||||
#: lib/who_need_help_web/live/notification_live.ex:686
|
#: lib/who_need_help_web/live/notification_live.ex:686
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:668
|
#: lib/who_need_help_web/live/request_live/new.ex:668
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
|
|
@ -968,7 +957,7 @@ msgstr "Log in only this time"
|
||||||
msgid "Logged out successfully."
|
msgid "Logged out successfully."
|
||||||
msgstr "Logged out successfully."
|
msgstr "Logged out successfully."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:339
|
#: lib/who_need_help_web/live/activity_live/new.ex:496
|
||||||
#: lib/who_need_help_web/live/notification_live.ex:700
|
#: lib/who_need_help_web/live/notification_live.ex:700
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:682
|
#: lib/who_need_help_web/live/request_live/new.ex:682
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
|
|
@ -1103,7 +1092,7 @@ msgstr "Network"
|
||||||
msgid "New password"
|
msgid "New password"
|
||||||
msgstr "New password"
|
msgstr "New password"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:244
|
#: lib/who_need_help_web/live/activity_live/new.ex:274
|
||||||
#: lib/who_need_help_web/live/activity_live/show.ex:300
|
#: lib/who_need_help_web/live/activity_live/show.ex:300
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:379
|
#: lib/who_need_help_web/live/request_live/new.ex:379
|
||||||
#: lib/who_need_help_web/live/request_live/show.ex:877
|
#: lib/who_need_help_web/live/request_live/show.ex:877
|
||||||
|
|
@ -1289,7 +1278,7 @@ msgstr "Pickup instructions (optional)"
|
||||||
msgid "Pickup notes"
|
msgid "Pickup notes"
|
||||||
msgstr "Pickup notes"
|
msgstr "Pickup notes"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:274
|
#: lib/who_need_help_web/live/activity_live/new.ex:304
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Plan and expectations"
|
msgid "Plan and expectations"
|
||||||
msgstr "Plan and expectations"
|
msgstr "Plan and expectations"
|
||||||
|
|
@ -1378,11 +1367,6 @@ msgstr "Proposals and votes guide moderators. Approval remains a human decision.
|
||||||
msgid "Public location can be hidden, approximate, or explicitly exact. Live tracking is optional. A browser shares only while its page is open; Android shows a persistent foreground-service notification while sharing. The current exact point is deleted when sharing stops, a match ends, or either participant blocks the other; derived movement and proximity evidence may remain."
|
msgid "Public location can be hidden, approximate, or explicitly exact. Live tracking is optional. A browser shares only while its page is open; Android shows a persistent foreground-service notification while sharing. The current exact point is deleted when sharing stops, a match ends, or either participant blocks the other; derived movement and proximity evidence may remain."
|
||||||
msgstr "Public location can be hidden, approximate, or explicitly exact. Live tracking is optional. A browser shares only while its page is open; Android shows a persistent foreground-service notification while sharing. The current exact point is deleted when sharing stops, a match ends, or either participant blocks the other; derived movement and proximity evidence may remain."
|
msgstr "Public location can be hidden, approximate, or explicitly exact. Live tracking is optional. A browser shares only while its page is open; Android shows a persistent foreground-service notification while sharing. The current exact point is deleted when sharing stops, a match ends, or either participant blocks the other; derived movement and proximity evidence may remain."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:303
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Public map visibility"
|
|
||||||
msgstr "Public map visibility"
|
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/profile_live.ex:326
|
#: lib/who_need_help_web/live/profile_live.ex:326
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Public profile URL"
|
msgid "Public profile URL"
|
||||||
|
|
@ -1394,12 +1378,12 @@ msgstr "Public profile URL"
|
||||||
msgid "Public reputation"
|
msgid "Public reputation"
|
||||||
msgstr "Public reputation"
|
msgstr "Public reputation"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:152
|
#: lib/who_need_help_web/live/activity_live/new.ex:182
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Publish a clear public plan. Join requests stay pending until you approve them."
|
msgid "Publish a clear public plan. Join requests stay pending until you approve them."
|
||||||
msgstr "Publish a clear public plan. Join requests stay pending until you approve them."
|
msgstr "Publish a clear public plan. Join requests stay pending until you approve them."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:360
|
#: lib/who_need_help_web/live/activity_live/new.ex:538
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Publish activity"
|
msgid "Publish activity"
|
||||||
msgstr "Publish activity"
|
msgstr "Publish activity"
|
||||||
|
|
@ -1414,7 +1398,7 @@ msgstr "Publish proposal"
|
||||||
msgid "Publish request"
|
msgid "Publish request"
|
||||||
msgstr "Publish request"
|
msgstr "Publish request"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:358
|
#: lib/who_need_help_web/live/activity_live/new.ex:536
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:742
|
#: lib/who_need_help_web/live/request_live/new.ex:742
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Publishing…"
|
msgid "Publishing…"
|
||||||
|
|
@ -1697,7 +1681,7 @@ msgstr "Share only non-sensitive instructions. Exact details can wait for the ma
|
||||||
msgid "Short bio"
|
msgid "Short bio"
|
||||||
msgstr "Short bio"
|
msgstr "Short bio"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:268
|
#: lib/who_need_help_web/live/activity_live/new.ex:298
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:411
|
#: lib/who_need_help_web/live/request_live/new.ex:411
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Short title"
|
msgid "Short title"
|
||||||
|
|
@ -1978,7 +1962,7 @@ msgstr "To see sent emails, visit"
|
||||||
msgid "Today"
|
msgid "Today"
|
||||||
msgstr "Today"
|
msgstr "Today"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:138
|
#: lib/who_need_help_web/live/activity_live/new.ex:159
|
||||||
#: lib/who_need_help_web/live/activity_live/show.ex:336
|
#: lib/who_need_help_web/live/activity_live/show.ex:336
|
||||||
#: lib/who_need_help_web/live/category_proposal_live.ex:85
|
#: lib/who_need_help_web/live/category_proposal_live.ex:85
|
||||||
#: lib/who_need_help_web/live/profile_live.ex:59
|
#: lib/who_need_help_web/live/profile_live.ex:59
|
||||||
|
|
@ -2009,7 +1993,7 @@ msgstr "Too many sign-in emails in the configured time window."
|
||||||
msgid "Total"
|
msgid "Total"
|
||||||
msgstr "Total"
|
msgstr "Total"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:293
|
#: lib/who_need_help_web/live/activity_live/new.ex:323
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Total group capacity"
|
msgid "Total group capacity"
|
||||||
msgstr "Total group capacity"
|
msgstr "Total group capacity"
|
||||||
|
|
@ -2057,7 +2041,7 @@ msgstr "Urgency"
|
||||||
msgid "Urgent help"
|
msgid "Urgent help"
|
||||||
msgstr "Urgent help"
|
msgstr "Urgent help"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:158
|
#: lib/who_need_help_web/live/activity_live/new.ex:188
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Use a public first meeting point. Do not publish a home address, access code, travel document, or other sensitive information."
|
msgid "Use a public first meeting point. Do not publish a home address, access code, travel document, or other sensitive information."
|
||||||
msgstr "Use a public first meeting point. Do not publish a home address, access code, travel document, or other sensitive information."
|
msgstr "Use a public first meeting point. Do not publish a home address, access code, travel document, or other sensitive information."
|
||||||
|
|
@ -2072,11 +2056,6 @@ msgstr "Use dark theme"
|
||||||
msgid "Use light theme"
|
msgid "Use light theme"
|
||||||
msgstr "Use light theme"
|
msgstr "Use light theme"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:321
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Use my current foreground location"
|
|
||||||
msgstr "Use my current foreground location"
|
|
||||||
|
|
||||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:251
|
#: lib/who_need_help_web/controllers/page_html/home.html.heex:251
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Use private chat and optional live location sharing."
|
msgid "Use private chat and optional live location sharing."
|
||||||
|
|
@ -2215,7 +2194,7 @@ msgstr "Withdraw from this request"
|
||||||
msgid "Write a safe coordination message…"
|
msgid "Write a safe coordination message…"
|
||||||
msgstr "Write a safe coordination message…"
|
msgstr "Write a safe coordination message…"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:241
|
#: lib/who_need_help_web/live/activity_live/new.ex:271
|
||||||
#: lib/who_need_help_web/live/activity_live/show.ex:298
|
#: lib/who_need_help_web/live/activity_live/show.ex:298
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:373
|
#: lib/who_need_help_web/live/request_live/new.ex:373
|
||||||
#: lib/who_need_help_web/live/request_live/show.ex:875
|
#: lib/who_need_help_web/live/request_live/show.ex:875
|
||||||
|
|
@ -2452,7 +2431,7 @@ msgstr "verified"
|
||||||
msgid "← All requests"
|
msgid "← All requests"
|
||||||
msgstr "← All requests"
|
msgstr "← All requests"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:148
|
#: lib/who_need_help_web/live/activity_live/new.ex:178
|
||||||
#: lib/who_need_help_web/live/activity_live/show.ex:352
|
#: lib/who_need_help_web/live/activity_live/show.ex:352
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "← Back to activities"
|
msgid "← Back to activities"
|
||||||
|
|
@ -2578,7 +2557,7 @@ msgstr "Could not complete moderation. Please try again."
|
||||||
msgid "Could not complete the action. Please try again."
|
msgid "Could not complete the action. Please try again."
|
||||||
msgstr "Could not complete the action. Please try again."
|
msgstr "Could not complete the action. Please try again."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:140
|
#: lib/who_need_help_web/live/activity_live/new.ex:161
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Could not publish the activity. Please try again."
|
msgid "Could not publish the activity. Please try again."
|
||||||
msgstr "Could not publish the activity. Please try again."
|
msgstr "Could not publish the activity. Please try again."
|
||||||
|
|
@ -4038,6 +4017,7 @@ msgstr ""
|
||||||
msgid "Date"
|
msgid "Date"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:474
|
||||||
#: lib/who_need_help_web/live/notification_live.ex:683
|
#: lib/who_need_help_web/live/notification_live.ex:683
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:660
|
#: lib/who_need_help_web/live/request_live/new.ex:660
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
|
|
@ -4125,14 +4105,14 @@ msgstr ""
|
||||||
msgid "In 3 hours"
|
msgid "In 3 hours"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:316
|
#: lib/who_need_help_web/live/activity_live/new.ex:354
|
||||||
#: lib/who_need_help_web/live/notification_live.ex:601
|
#: lib/who_need_help_web/live/notification_live.ex:601
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:484
|
#: lib/who_need_help_web/live/request_live/new.ex:484
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Location is unavailable in this browser."
|
msgid "Location is unavailable in this browser."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:318
|
#: lib/who_need_help_web/live/activity_live/new.ex:356
|
||||||
#: lib/who_need_help_web/live/notification_live.ex:603
|
#: lib/who_need_help_web/live/notification_live.ex:603
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:486
|
#: lib/who_need_help_web/live/request_live/new.ex:486
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
|
|
@ -4283,7 +4263,7 @@ msgstr ""
|
||||||
msgid "Signing in does not create a new account."
|
msgid "Signing in does not create a new account."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:282
|
#: lib/who_need_help_web/live/activity_live/new.ex:312
|
||||||
#, elixir-autogen, elixir-format, fuzzy
|
#, elixir-autogen, elixir-format, fuzzy
|
||||||
msgid "Starts at"
|
msgid "Starts at"
|
||||||
msgstr "Starts at"
|
msgstr "Starts at"
|
||||||
|
|
@ -4309,6 +4289,7 @@ msgstr ""
|
||||||
msgid "This activity is closed. The group chat remains available as read-only history."
|
msgid "This activity is closed. The group chat remains available as read-only history."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:366
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:503
|
#: lib/who_need_help_web/live/request_live/new.ex:503
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "This description is visible to everyone. Do not enter a private address."
|
msgid "This description is visible to everyone. Do not enter a private address."
|
||||||
|
|
@ -4385,6 +4366,7 @@ msgstr ""
|
||||||
msgid "Use another email"
|
msgid "Use another email"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:435
|
||||||
#: lib/who_need_help_web/live/notification_live.ex:636
|
#: lib/who_need_help_web/live/notification_live.ex:636
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:595
|
#: lib/who_need_help_web/live/request_live/new.ex:595
|
||||||
#, elixir-autogen, elixir-format, fuzzy
|
#, elixir-autogen, elixir-format, fuzzy
|
||||||
|
|
@ -4641,6 +4623,8 @@ 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:496
|
#: lib/who_need_help_web/live/activity_live/index.ex:496
|
||||||
|
#: 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/show.ex:545
|
#: lib/who_need_help_web/live/activity_live/show.ex:545
|
||||||
#: 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
|
||||||
|
|
@ -4652,7 +4636,7 @@ msgstr ""
|
||||||
msgid "Try map again"
|
msgid "Try map again"
|
||||||
msgstr "Try map again"
|
msgstr "Try map again"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:124
|
#: lib/who_need_help_web/live/activity_live/new.ex:145
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:193
|
#: lib/who_need_help_web/live/request_live/new.ex:193
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "%{field} is required."
|
msgid "%{field} is required."
|
||||||
|
|
@ -4665,13 +4649,13 @@ msgstr ""
|
||||||
msgid "Both reviews are now visible on participant profiles."
|
msgid "Both reviews are now visible on participant profiles."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:127
|
#: lib/who_need_help_web/live/activity_live/new.ex:148
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:196
|
#: lib/who_need_help_web/live/request_live/new.ex:196
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Check the category details and try again."
|
msgid "Check the category details and try again."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:130
|
#: lib/who_need_help_web/live/activity_live/new.ex:151
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:199
|
#: lib/who_need_help_web/live/request_live/new.ex:199
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Choose a valid value for %{field}."
|
msgid "Choose a valid value for %{field}."
|
||||||
|
|
@ -6470,7 +6454,7 @@ msgstr "A new broad group of help or activities"
|
||||||
msgid "A specific option inside an existing category"
|
msgid "A specific option inside an existing category"
|
||||||
msgstr "A specific option inside an existing category"
|
msgstr "A specific option inside an existing category"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:183
|
#: lib/who_need_help_web/live/activity_live/new.ex:213
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:311
|
#: lib/who_need_help_web/live/request_live/new.ex:311
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Can't find the right option? Propose a category"
|
msgid "Can't find the right option? Propose a category"
|
||||||
|
|
@ -6507,7 +6491,7 @@ msgstr "New main category"
|
||||||
msgid "New subcategory"
|
msgid "New subcategory"
|
||||||
msgstr "New subcategory"
|
msgstr "New subcategory"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:177
|
#: lib/who_need_help_web/live/activity_live/new.ex:207
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "No matching activity. You can propose a new one."
|
msgid "No matching activity. You can propose a new one."
|
||||||
msgstr "No matching activity. You can propose a new one."
|
msgstr "No matching activity. You can propose a new one."
|
||||||
|
|
@ -6522,7 +6506,7 @@ msgstr "No matching help type. You can propose a new one."
|
||||||
msgid "No matching main category"
|
msgid "No matching main category"
|
||||||
msgstr "No matching main category"
|
msgstr "No matching main category"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:176
|
#: lib/who_need_help_web/live/activity_live/new.ex:206
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Search activity categories"
|
msgid "Search activity categories"
|
||||||
msgstr "Search activity categories"
|
msgstr "Search activity categories"
|
||||||
|
|
@ -6593,11 +6577,6 @@ msgstr "Search languages"
|
||||||
msgid "Android push notifications are not available yet."
|
msgid "Android push notifications are not available yet."
|
||||||
msgstr "Android push notifications are not available yet."
|
msgstr "Android push notifications are not available yet."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:317
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Location added."
|
|
||||||
msgstr "Location added."
|
|
||||||
|
|
||||||
#: lib/who_need_help_web/components/layouts/root.html.heex:9
|
#: lib/who_need_help_web/components/layouts/root.html.heex:9
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Map marker"
|
msgid "Map marker"
|
||||||
|
|
@ -6657,3 +6636,110 @@ msgstr "Waiting for Android notification permission and token…"
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Who Need Help connects adults who need urgent local help with nearby volunteers."
|
msgid "Who Need Help connects adults who need urgent local help with nearby volunteers."
|
||||||
msgstr "Who Need Help connects adults who need urgent local help with nearby volunteers."
|
msgstr "Who Need Help connects adults who need urgent local help with nearby volunteers."
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:337
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:470
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Choose the public meeting point on the map or use your current location."
|
||||||
|
msgstr "Choose the public meeting point on the map or use your current location."
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:420
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:423
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Click the map or drag the pin to choose the meeting point"
|
||||||
|
msgstr "Click the map or drag the pin to choose the meeting point"
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:349
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Drag to move the exact meeting point"
|
||||||
|
msgstr "Drag to move the exact meeting point"
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:348
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Drag to move the meeting area"
|
||||||
|
msgstr "Drag to move the meeting area"
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:350
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Drag to move the private meeting point"
|
||||||
|
msgstr "Drag to move the private meeting point"
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:344
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Meeting point selected."
|
||||||
|
msgstr "Meeting point selected."
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:340
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Meeting point selected. Before approval, people see only its approximate area."
|
||||||
|
msgstr "Meeting point selected. Before approval, people see only its approximate area."
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:399
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "No public map"
|
||||||
|
msgstr "No public map"
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:443
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Only people you approve receive the exact meeting point and group chat."
|
||||||
|
msgstr "Only people you approve receive the exact meeting point and group chat."
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:400
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "People can find it by the area description"
|
||||||
|
msgstr "People can find it by the area description"
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:455
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "People can search by the public area description. Approved participants receive the exact point."
|
||||||
|
msgstr "People can search by the public area description. Approved participants receive the exact point."
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:346
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Private meeting point selected. It appears only after approval."
|
||||||
|
msgstr "Private meeting point selected. It appears only after approval."
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:362
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Public meeting area or landmark"
|
||||||
|
msgstr "Public meeting area or landmark"
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:386
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Recommended for discoverability"
|
||||||
|
msgstr "Recommended for discoverability"
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:352
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Select a meeting point. It will remain hidden until you approve someone."
|
||||||
|
msgstr "Select a meeting point. It will remain hidden until you approve someone."
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:412
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "The map is unavailable. You can enter coordinates manually."
|
||||||
|
msgstr "The map is unavailable. You can enter coordinates manually."
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:441
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "The public map stays approximate"
|
||||||
|
msgstr "The public map stays approximate"
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:453
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "The public map stays hidden"
|
||||||
|
msgstr "The public map stays hidden"
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:476
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "These coordinates are the exact meeting point. They are revealed only after approval."
|
||||||
|
msgstr "These coordinates are the exact meeting point. They are revealed only after approval."
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:372
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "What should people see before approval?"
|
||||||
|
msgstr "What should people see before approval?"
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:98
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
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."
|
||||||
|
|
|
||||||
|
|
@ -200,7 +200,7 @@ msgstr ""
|
||||||
"походов согласуйте маршрут и меры безопасности и никогда не публикуйте "
|
"походов согласуйте маршрут и меры безопасности и никогда не публикуйте "
|
||||||
"домашние адреса, коды доступа или документы для поездки."
|
"домашние адреса, коды доступа или документы для поездки."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:200
|
#: lib/who_need_help_web/live/activity_live/new.ex:230
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Activity details"
|
msgid "Activity details"
|
||||||
msgstr "Детали активности"
|
msgstr "Детали активности"
|
||||||
|
|
@ -216,7 +216,7 @@ msgstr "Активность скрыта."
|
||||||
msgid "Activity is unavailable."
|
msgid "Activity is unavailable."
|
||||||
msgstr "Активность недоступна."
|
msgstr "Активность недоступна."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:50
|
#: lib/who_need_help_web/live/activity_live/new.ex:52
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Activity published. You approve every participant."
|
msgid "Activity published. You approve every participant."
|
||||||
msgstr "Активность опубликована. Вы одобряете каждого участника."
|
msgstr "Активность опубликована. Вы одобряете каждого участника."
|
||||||
|
|
@ -227,7 +227,7 @@ msgid "Activity restored."
|
||||||
msgstr "Активность восстановлена."
|
msgstr "Активность восстановлена."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/index.ex:385
|
#: lib/who_need_help_web/live/activity_live/index.ex:385
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:174
|
#: 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"
|
||||||
msgstr "Тип активности"
|
msgstr "Тип активности"
|
||||||
|
|
@ -289,17 +289,12 @@ msgid "Approved participants"
|
||||||
msgstr "Одобренные участники"
|
msgstr "Одобренные участники"
|
||||||
|
|
||||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:80
|
#: lib/who_need_help_web/controllers/page_html/home.html.heex:80
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:305
|
#: lib/who_need_help_web/live/activity_live/new.ex:385
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:520
|
#: lib/who_need_help_web/live/request_live/new.ex:520
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Approximate area"
|
msgid "Approximate area"
|
||||||
msgstr "Примерный район"
|
msgstr "Примерный район"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:297
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Approximate public meeting area"
|
|
||||||
msgstr "Примерный публичный район встречи"
|
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/profile_live.ex:163
|
#: lib/who_need_help_web/live/profile_live.ex:163
|
||||||
#: lib/who_need_help_web/live/request_live/show.ex:996
|
#: lib/who_need_help_web/live/request_live/show.ex:996
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
|
|
@ -442,7 +437,7 @@ msgid "Choose a category, urgency, and safe location visibility."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Выберите категорию, срочность и безопасный уровень видимости геопозиции."
|
"Выберите категорию, срочность и безопасный уровень видимости геопозиции."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:175
|
#: lib/who_need_help_web/live/activity_live/new.ex:205
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Choose activity"
|
msgid "Choose activity"
|
||||||
msgstr "Выберите активность"
|
msgstr "Выберите активность"
|
||||||
|
|
@ -452,15 +447,15 @@ msgstr "Выберите активность"
|
||||||
msgid "Choose category"
|
msgid "Choose category"
|
||||||
msgstr "Выберите категорию"
|
msgstr "Выберите категорию"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:212
|
#: lib/who_need_help_web/live/activity_live/new.ex:242
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:239
|
#: lib/who_need_help_web/live/activity_live/new.ex:269
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:344
|
#: lib/who_need_help_web/live/request_live/new.ex:344
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:371
|
#: lib/who_need_help_web/live/request_live/new.ex:371
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Choose…"
|
msgid "Choose…"
|
||||||
msgstr "Выберите…"
|
msgstr "Выберите…"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:298
|
#: lib/who_need_help_web/live/activity_live/new.ex:363
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "City centre, near the main entrance"
|
msgid "City centre, near the main entrance"
|
||||||
msgstr "Центр города, рядом с главным входом"
|
msgstr "Центр города, рядом с главным входом"
|
||||||
|
|
@ -476,7 +471,7 @@ msgstr "Очистить"
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Закрыть"
|
msgstr "Закрыть"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:269
|
#: lib/who_need_help_web/live/activity_live/new.ex:299
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Coffee and conversation"
|
msgid "Coffee and conversation"
|
||||||
msgstr "Кофе и разговоры"
|
msgstr "Кофе и разговоры"
|
||||||
|
|
@ -543,7 +538,7 @@ msgstr "Подтвердите новый пароль"
|
||||||
msgid "Confirm your account and ensure it is active first."
|
msgid "Confirm your account and ensure it is active first."
|
||||||
msgstr "Подтвердите свою учетную запись и убедитесь, что она активна."
|
msgstr "Подтвердите свою учетную запись и убедитесь, что она активна."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:135
|
#: lib/who_need_help_web/live/activity_live/new.ex:156
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:235
|
#: lib/who_need_help_web/live/request_live/new.ex:235
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Confirm your email and ensure your account is active before publishing."
|
msgid "Confirm your email and ensure your account is active before publishing."
|
||||||
|
|
@ -570,7 +565,7 @@ msgid "Create activity"
|
||||||
msgstr "Создать активность"
|
msgstr "Создать активность"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/index.ex:535
|
#: lib/who_need_help_web/live/activity_live/index.ex:535
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:150
|
#: 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"
|
||||||
msgstr "Создать активность"
|
msgstr "Создать активность"
|
||||||
|
|
@ -624,7 +619,7 @@ msgstr "Отклонить"
|
||||||
msgid "Default location visibility"
|
msgid "Default location visibility"
|
||||||
msgstr "Видимость местоположения по умолчанию"
|
msgstr "Видимость местоположения по умолчанию"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:276
|
#: lib/who_need_help_web/live/activity_live/new.ex:306
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Describe the public plan, approximate duration, and who might enjoy it."
|
msgid "Describe the public plan, approximate duration, and who might enjoy it."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -716,11 +711,6 @@ msgstr "Введите код передачи"
|
||||||
msgid "Exact address after matching"
|
msgid "Exact address after matching"
|
||||||
msgstr "Точный адрес после назначения помощника"
|
msgstr "Точный адрес после назначения помощника"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:324
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Exact coordinates are shown only to participants you approve."
|
|
||||||
msgstr "Точные координаты показаны только участникам, которых вы одобряете."
|
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/profile_live.ex:164
|
#: lib/who_need_help_web/live/profile_live.ex:164
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Exact for active match"
|
msgid "Exact for active match"
|
||||||
|
|
@ -865,7 +855,6 @@ msgstr ""
|
||||||
"\n"
|
"\n"
|
||||||
"Если вы не запрашивали это письмо, просто проигнорируйте его."
|
"Если вы не запрашивали это письмо, просто проигнорируйте его."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:306
|
|
||||||
#: lib/who_need_help_web/live/profile_live.ex:162
|
#: lib/who_need_help_web/live/profile_live.ex:162
|
||||||
#: lib/who_need_help_web/live/request_live/show.ex:997
|
#: lib/who_need_help_web/live/request_live/show.ex:997
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
|
|
@ -910,7 +899,7 @@ msgstr ""
|
||||||
"Я подтверждаю, что это не экстренная ситуация, непосредственной опасности "
|
"Я подтверждаю, что это не экстренная ситуация, непосредственной опасности "
|
||||||
"нет, а запрашиваемая помощь законна."
|
"нет, а запрашиваемая помощь законна."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:348
|
#: lib/who_need_help_web/live/activity_live/new.ex:526
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "I will approve participants individually, keep sensitive details in the approved group, and use an appropriate public first meeting point."
|
msgid "I will approve participants individually, keep sensitive details in the approved group, and use an appropriate public first meeting point."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -977,13 +966,13 @@ msgstr "Неверная электронная почта или пароль"
|
||||||
msgid "Join requests are closed."
|
msgid "Join requests are closed."
|
||||||
msgstr "Приём заявок на участие закрыт."
|
msgstr "Приём заявок на участие закрыт."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:286
|
#: lib/who_need_help_web/live/activity_live/new.ex:316
|
||||||
#: lib/who_need_help_web/live/activity_live/show.ex:387
|
#: lib/who_need_help_web/live/activity_live/show.ex:387
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Join requests close"
|
msgid "Join requests close"
|
||||||
msgstr "Приём заявок завершается"
|
msgstr "Приём заявок завершается"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:332
|
#: lib/who_need_help_web/live/activity_live/new.ex:482
|
||||||
#: lib/who_need_help_web/live/notification_live.ex:686
|
#: lib/who_need_help_web/live/notification_live.ex:686
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:668
|
#: lib/who_need_help_web/live/request_live/new.ex:668
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
|
|
@ -1043,7 +1032,7 @@ msgstr "Войти только сейчас"
|
||||||
msgid "Logged out successfully."
|
msgid "Logged out successfully."
|
||||||
msgstr "Вы успешно вышли."
|
msgstr "Вы успешно вышли."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:339
|
#: lib/who_need_help_web/live/activity_live/new.ex:496
|
||||||
#: lib/who_need_help_web/live/notification_live.ex:700
|
#: lib/who_need_help_web/live/notification_live.ex:700
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:682
|
#: lib/who_need_help_web/live/request_live/new.ex:682
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
|
|
@ -1189,7 +1178,7 @@ msgstr "Сеть"
|
||||||
msgid "New password"
|
msgid "New password"
|
||||||
msgstr "Новый пароль"
|
msgstr "Новый пароль"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:244
|
#: lib/who_need_help_web/live/activity_live/new.ex:274
|
||||||
#: lib/who_need_help_web/live/activity_live/show.ex:300
|
#: lib/who_need_help_web/live/activity_live/show.ex:300
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:379
|
#: lib/who_need_help_web/live/request_live/new.ex:379
|
||||||
#: lib/who_need_help_web/live/request_live/show.ex:877
|
#: lib/who_need_help_web/live/request_live/show.ex:877
|
||||||
|
|
@ -1379,7 +1368,7 @@ msgstr "Инструкции для получения (необязательн
|
||||||
msgid "Pickup notes"
|
msgid "Pickup notes"
|
||||||
msgstr "Инструкции по получению"
|
msgstr "Инструкции по получению"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:274
|
#: lib/who_need_help_web/live/activity_live/new.ex:304
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Plan and expectations"
|
msgid "Plan and expectations"
|
||||||
msgstr "План и ожидания"
|
msgstr "План и ожидания"
|
||||||
|
|
@ -1479,11 +1468,6 @@ msgstr ""
|
||||||
"одним участником другого; производные признаки движения и близости могут "
|
"одним участником другого; производные признаки движения и близости могут "
|
||||||
"сохраняться."
|
"сохраняться."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:303
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Public map visibility"
|
|
||||||
msgstr "Видимость на публичной карте"
|
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/profile_live.ex:326
|
#: lib/who_need_help_web/live/profile_live.ex:326
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Public profile URL"
|
msgid "Public profile URL"
|
||||||
|
|
@ -1495,14 +1479,14 @@ msgstr "URL публичного профиля"
|
||||||
msgid "Public reputation"
|
msgid "Public reputation"
|
||||||
msgstr "Публичная репутация"
|
msgstr "Публичная репутация"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:152
|
#: lib/who_need_help_web/live/activity_live/new.ex:182
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Publish a clear public plan. Join requests stay pending until you approve them."
|
msgid "Publish a clear public plan. Join requests stay pending until you approve them."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Опубликуйте понятный публичный план. Заявки на участие будут ожидать, пока "
|
"Опубликуйте понятный публичный план. Заявки на участие будут ожидать, пока "
|
||||||
"вы их не одобрите."
|
"вы их не одобрите."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:360
|
#: lib/who_need_help_web/live/activity_live/new.ex:538
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Publish activity"
|
msgid "Publish activity"
|
||||||
msgstr "Опубликовать активность"
|
msgstr "Опубликовать активность"
|
||||||
|
|
@ -1517,7 +1501,7 @@ msgstr "Опубликовать предложение"
|
||||||
msgid "Publish request"
|
msgid "Publish request"
|
||||||
msgstr "Опубликовать заявку"
|
msgstr "Опубликовать заявку"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:358
|
#: lib/who_need_help_web/live/activity_live/new.ex:536
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:742
|
#: lib/who_need_help_web/live/request_live/new.ex:742
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Publishing…"
|
msgid "Publishing…"
|
||||||
|
|
@ -1810,7 +1794,7 @@ msgstr ""
|
||||||
msgid "Short bio"
|
msgid "Short bio"
|
||||||
msgstr "Кратко о себе"
|
msgstr "Кратко о себе"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:268
|
#: lib/who_need_help_web/live/activity_live/new.ex:298
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:411
|
#: lib/who_need_help_web/live/request_live/new.ex:411
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Short title"
|
msgid "Short title"
|
||||||
|
|
@ -2101,7 +2085,7 @@ msgstr "Чтобы посмотреть отправленные письма,
|
||||||
msgid "Today"
|
msgid "Today"
|
||||||
msgstr "Сегодня"
|
msgstr "Сегодня"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:138
|
#: lib/who_need_help_web/live/activity_live/new.ex:159
|
||||||
#: lib/who_need_help_web/live/activity_live/show.ex:336
|
#: lib/who_need_help_web/live/activity_live/show.ex:336
|
||||||
#: lib/who_need_help_web/live/category_proposal_live.ex:85
|
#: lib/who_need_help_web/live/category_proposal_live.ex:85
|
||||||
#: lib/who_need_help_web/live/profile_live.ex:59
|
#: lib/who_need_help_web/live/profile_live.ex:59
|
||||||
|
|
@ -2132,7 +2116,7 @@ msgstr "Слишком много писем для входа за настро
|
||||||
msgid "Total"
|
msgid "Total"
|
||||||
msgstr "Всего"
|
msgstr "Всего"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:293
|
#: lib/who_need_help_web/live/activity_live/new.ex:323
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Total group capacity"
|
msgid "Total group capacity"
|
||||||
msgstr "Общий размер группы"
|
msgstr "Общий размер группы"
|
||||||
|
|
@ -2180,7 +2164,7 @@ msgstr "Срочность"
|
||||||
msgid "Urgent help"
|
msgid "Urgent help"
|
||||||
msgstr "Срочная помощь"
|
msgstr "Срочная помощь"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:158
|
#: lib/who_need_help_web/live/activity_live/new.ex:188
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Use a public first meeting point. Do not publish a home address, access code, travel document, or other sensitive information."
|
msgid "Use a public first meeting point. Do not publish a home address, access code, travel document, or other sensitive information."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -2198,11 +2182,6 @@ msgstr "Включить тёмную тему"
|
||||||
msgid "Use light theme"
|
msgid "Use light theme"
|
||||||
msgstr "Включить светлую тему"
|
msgstr "Включить светлую тему"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:321
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Use my current foreground location"
|
|
||||||
msgstr "Использовать мою текущую геопозицию"
|
|
||||||
|
|
||||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:251
|
#: lib/who_need_help_web/controllers/page_html/home.html.heex:251
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Use private chat and optional live location sharing."
|
msgid "Use private chat and optional live location sharing."
|
||||||
|
|
@ -2349,7 +2328,7 @@ msgstr "Отказаться от этой заявки"
|
||||||
msgid "Write a safe coordination message…"
|
msgid "Write a safe coordination message…"
|
||||||
msgstr "Напишите безопасное сообщение для координации…"
|
msgstr "Напишите безопасное сообщение для координации…"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:241
|
#: lib/who_need_help_web/live/activity_live/new.ex:271
|
||||||
#: lib/who_need_help_web/live/activity_live/show.ex:298
|
#: lib/who_need_help_web/live/activity_live/show.ex:298
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:373
|
#: lib/who_need_help_web/live/request_live/new.ex:373
|
||||||
#: lib/who_need_help_web/live/request_live/show.ex:875
|
#: lib/who_need_help_web/live/request_live/show.ex:875
|
||||||
|
|
@ -2592,7 +2571,7 @@ msgstr "подтверждено"
|
||||||
msgid "← All requests"
|
msgid "← All requests"
|
||||||
msgstr "← Все заявки"
|
msgstr "← Все заявки"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:148
|
#: lib/who_need_help_web/live/activity_live/new.ex:178
|
||||||
#: lib/who_need_help_web/live/activity_live/show.ex:352
|
#: lib/who_need_help_web/live/activity_live/show.ex:352
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "← Back to activities"
|
msgid "← Back to activities"
|
||||||
|
|
@ -2718,7 +2697,7 @@ msgstr "Не удалось завершить модерацию. Попроб
|
||||||
msgid "Could not complete the action. Please try again."
|
msgid "Could not complete the action. Please try again."
|
||||||
msgstr "Не удалось выполнить действие. Попробуйте ещё раз."
|
msgstr "Не удалось выполнить действие. Попробуйте ещё раз."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:140
|
#: lib/who_need_help_web/live/activity_live/new.ex:161
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Could not publish the activity. Please try again."
|
msgid "Could not publish the activity. Please try again."
|
||||||
msgstr "Не удалось опубликовать активность. Попробуйте ещё раз."
|
msgstr "Не удалось опубликовать активность. Попробуйте ещё раз."
|
||||||
|
|
@ -4178,6 +4157,7 @@ msgstr "Не удалось скопировать"
|
||||||
msgid "Date"
|
msgid "Date"
|
||||||
msgstr "Дата"
|
msgstr "Дата"
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:474
|
||||||
#: lib/who_need_help_web/live/notification_live.ex:683
|
#: lib/who_need_help_web/live/notification_live.ex:683
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:660
|
#: lib/who_need_help_web/live/request_live/new.ex:660
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
|
|
@ -4265,14 +4245,14 @@ msgstr "Через 1 час"
|
||||||
msgid "In 3 hours"
|
msgid "In 3 hours"
|
||||||
msgstr "Через 3 часа"
|
msgstr "Через 3 часа"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:316
|
#: lib/who_need_help_web/live/activity_live/new.ex:354
|
||||||
#: lib/who_need_help_web/live/notification_live.ex:601
|
#: lib/who_need_help_web/live/notification_live.ex:601
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:484
|
#: lib/who_need_help_web/live/request_live/new.ex:484
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Location is unavailable in this browser."
|
msgid "Location is unavailable in this browser."
|
||||||
msgstr "Геопозиция недоступна в этом браузере."
|
msgstr "Геопозиция недоступна в этом браузере."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:318
|
#: lib/who_need_help_web/live/activity_live/new.ex:356
|
||||||
#: lib/who_need_help_web/live/notification_live.ex:603
|
#: lib/who_need_help_web/live/notification_live.ex:603
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:486
|
#: lib/who_need_help_web/live/request_live/new.ex:486
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
|
|
@ -4423,7 +4403,7 @@ msgstr "Запрос на вход обработан"
|
||||||
msgid "Signing in does not create a new account."
|
msgid "Signing in does not create a new account."
|
||||||
msgstr "Вход не создаёт новый аккаунт."
|
msgstr "Вход не создаёт новый аккаунт."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:282
|
#: lib/who_need_help_web/live/activity_live/new.ex:312
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Starts at"
|
msgid "Starts at"
|
||||||
msgstr "Начало"
|
msgstr "Начало"
|
||||||
|
|
@ -4449,6 +4429,7 @@ msgstr "Сайт обработал ваш запрос на регистрац
|
||||||
msgid "This activity is closed. The group chat remains available as read-only history."
|
msgid "This activity is closed. The group chat remains available as read-only history."
|
||||||
msgstr "Эта активность закрыта. История группового чата доступна только для чтения."
|
msgstr "Эта активность закрыта. История группового чата доступна только для чтения."
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:366
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:503
|
#: lib/who_need_help_web/live/request_live/new.ex:503
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "This description is visible to everyone. Do not enter a private address."
|
msgid "This description is visible to everyone. Do not enter a private address."
|
||||||
|
|
@ -4525,6 +4506,7 @@ msgstr "Укажите безопасное публичное место вст
|
||||||
msgid "Use another email"
|
msgid "Use another email"
|
||||||
msgstr "Использовать другую почту"
|
msgstr "Использовать другую почту"
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:435
|
||||||
#: lib/who_need_help_web/live/notification_live.ex:636
|
#: lib/who_need_help_web/live/notification_live.ex:636
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:595
|
#: lib/who_need_help_web/live/request_live/new.ex:595
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
|
|
@ -4782,6 +4764,8 @@ 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:496
|
#: lib/who_need_help_web/live/activity_live/index.ex:496
|
||||||
|
#: 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/show.ex:545
|
#: lib/who_need_help_web/live/activity_live/show.ex:545
|
||||||
#: 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
|
||||||
|
|
@ -4793,7 +4777,7 @@ msgstr "Вместе"
|
||||||
msgid "Try map again"
|
msgid "Try map again"
|
||||||
msgstr "Попробовать карту снова"
|
msgstr "Попробовать карту снова"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:124
|
#: lib/who_need_help_web/live/activity_live/new.ex:145
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:193
|
#: lib/who_need_help_web/live/request_live/new.ex:193
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "%{field} is required."
|
msgid "%{field} is required."
|
||||||
|
|
@ -4806,13 +4790,13 @@ msgstr "Поле «%{field}» обязательно."
|
||||||
msgid "Both reviews are now visible on participant profiles."
|
msgid "Both reviews are now visible on participant profiles."
|
||||||
msgstr "Оба отзыва теперь видны в профилях участников."
|
msgstr "Оба отзыва теперь видны в профилях участников."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:127
|
#: lib/who_need_help_web/live/activity_live/new.ex:148
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:196
|
#: lib/who_need_help_web/live/request_live/new.ex:196
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Check the category details and try again."
|
msgid "Check the category details and try again."
|
||||||
msgstr "Проверьте детали категории и повторите попытку."
|
msgstr "Проверьте детали категории и повторите попытку."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:130
|
#: lib/who_need_help_web/live/activity_live/new.ex:151
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:199
|
#: lib/who_need_help_web/live/request_live/new.ex:199
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Choose a valid value for %{field}."
|
msgid "Choose a valid value for %{field}."
|
||||||
|
|
@ -6613,7 +6597,7 @@ msgstr "Новая широкая группа помощи или меропр
|
||||||
msgid "A specific option inside an existing category"
|
msgid "A specific option inside an existing category"
|
||||||
msgstr "Конкретный вариант внутри существующей категории"
|
msgstr "Конкретный вариант внутри существующей категории"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:183
|
#: lib/who_need_help_web/live/activity_live/new.ex:213
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:311
|
#: lib/who_need_help_web/live/request_live/new.ex:311
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Can't find the right option? Propose a category"
|
msgid "Can't find the right option? Propose a category"
|
||||||
|
|
@ -6650,7 +6634,7 @@ msgstr "Новая основная категория"
|
||||||
msgid "New subcategory"
|
msgid "New subcategory"
|
||||||
msgstr "Новая подкатегория"
|
msgstr "Новая подкатегория"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:177
|
#: lib/who_need_help_web/live/activity_live/new.ex:207
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "No matching activity. You can propose a new one."
|
msgid "No matching activity. You can propose a new one."
|
||||||
msgstr "Подходящее мероприятие не найдено. Вы можете предложить новое."
|
msgstr "Подходящее мероприятие не найдено. Вы можете предложить новое."
|
||||||
|
|
@ -6665,7 +6649,7 @@ msgstr "Подходящий тип помощи не найден. Вы мож
|
||||||
msgid "No matching main category"
|
msgid "No matching main category"
|
||||||
msgstr "Подходящая основная категория не найдена"
|
msgstr "Подходящая основная категория не найдена"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:176
|
#: lib/who_need_help_web/live/activity_live/new.ex:206
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Search activity categories"
|
msgid "Search activity categories"
|
||||||
msgstr "Поиск категорий мероприятий"
|
msgstr "Поиск категорий мероприятий"
|
||||||
|
|
@ -6736,11 +6720,6 @@ msgstr "Поиск языков"
|
||||||
msgid "Android push notifications are not available yet."
|
msgid "Android push notifications are not available yet."
|
||||||
msgstr "Push-уведомления Android пока недоступны."
|
msgstr "Push-уведомления Android пока недоступны."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:317
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Location added."
|
|
||||||
msgstr "Местоположение добавлено."
|
|
||||||
|
|
||||||
#: lib/who_need_help_web/components/layouts/root.html.heex:9
|
#: lib/who_need_help_web/components/layouts/root.html.heex:9
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Map marker"
|
msgid "Map marker"
|
||||||
|
|
@ -6800,3 +6779,110 @@ msgstr "Ожидаем разрешения на уведомления и то
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Who Need Help connects adults who need urgent local help with nearby volunteers."
|
msgid "Who Need Help connects adults who need urgent local help with nearby volunteers."
|
||||||
msgstr "Who Need Help связывает взрослых, которым нужна срочная помощь поблизости, с находящимися рядом волонтёрами."
|
msgstr "Who Need Help связывает взрослых, которым нужна срочная помощь поблизости, с находящимися рядом волонтёрами."
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:337
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:470
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Choose the public meeting point on the map or use your current location."
|
||||||
|
msgstr "Выберите публичное место встречи на карте или используйте своё текущее местоположение."
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:420
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:423
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Click the map or drag the pin to choose the meeting point"
|
||||||
|
msgstr "Нажмите на карту или перетащите маркер, чтобы выбрать место встречи"
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:349
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Drag to move the exact meeting point"
|
||||||
|
msgstr "Перетащите, чтобы переместить точное место встречи"
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:348
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Drag to move the meeting area"
|
||||||
|
msgstr "Перетащите, чтобы переместить область встречи"
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:350
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Drag to move the private meeting point"
|
||||||
|
msgstr "Перетащите, чтобы переместить приватное место встречи"
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:344
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Meeting point selected."
|
||||||
|
msgstr "Место встречи выбрано."
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:340
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Meeting point selected. Before approval, people see only its approximate area."
|
||||||
|
msgstr "Место встречи выбрано. До одобрения люди видят только примерную область."
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:399
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "No public map"
|
||||||
|
msgstr "Без публичной карты"
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:443
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Only people you approve receive the exact meeting point and group chat."
|
||||||
|
msgstr "Точное место встречи и групповой чат получат только одобренные вами участники."
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:400
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "People can find it by the area description"
|
||||||
|
msgstr "Активность можно найти по описанию района"
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:455
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "People can search by the public area description. Approved participants receive the exact point."
|
||||||
|
msgstr "Люди могут искать по публичному описанию района. Одобренные участники получат точное место."
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:346
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Private meeting point selected. It appears only after approval."
|
||||||
|
msgstr "Приватное место встречи выбрано. Оно появится только после одобрения."
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:362
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Public meeting area or landmark"
|
||||||
|
msgstr "Публичный район или ориентир места встречи"
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:386
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Recommended for discoverability"
|
||||||
|
msgstr "Рекомендуется, чтобы активность было проще найти"
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:352
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Select a meeting point. It will remain hidden until you approve someone."
|
||||||
|
msgstr "Выберите место встречи. Оно останется скрытым, пока вы не одобрите участника."
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:412
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "The map is unavailable. You can enter coordinates manually."
|
||||||
|
msgstr "Карта недоступна. Введите координаты вручную."
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:441
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "The public map stays approximate"
|
||||||
|
msgstr "На публичной карте показана только примерная область"
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:453
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "The public map stays hidden"
|
||||||
|
msgstr "Публичная карта остаётся скрытой"
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:476
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "These coordinates are the exact meeting point. They are revealed only after approval."
|
||||||
|
msgstr "Эти координаты задают точное место встречи. Они раскрываются только после одобрения."
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:372
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "What should people see before approval?"
|
||||||
|
msgstr "Что должны видеть люди до одобрения?"
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:98
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Choose the meeting point on the map or use your current location."
|
||||||
|
msgstr "Выберите место встречи на карте или используйте своё текущее местоположение."
|
||||||
|
|
|
||||||
|
|
@ -200,7 +200,7 @@ msgstr ""
|
||||||
"узгодьте маршрут і заходи безпеки та ніколи не публікуйте домашні адреси, "
|
"узгодьте маршрут і заходи безпеки та ніколи не публікуйте домашні адреси, "
|
||||||
"коди доступу чи документи для подорожі."
|
"коди доступу чи документи для подорожі."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:200
|
#: lib/who_need_help_web/live/activity_live/new.ex:230
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Activity details"
|
msgid "Activity details"
|
||||||
msgstr "Деталі активності"
|
msgstr "Деталі активності"
|
||||||
|
|
@ -216,7 +216,7 @@ msgstr "Активність приховано."
|
||||||
msgid "Activity is unavailable."
|
msgid "Activity is unavailable."
|
||||||
msgstr "Активність недоступна."
|
msgstr "Активність недоступна."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:50
|
#: lib/who_need_help_web/live/activity_live/new.ex:52
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Activity published. You approve every participant."
|
msgid "Activity published. You approve every participant."
|
||||||
msgstr "Активність опубліковано. Ви схвалюєте кожного учасника."
|
msgstr "Активність опубліковано. Ви схвалюєте кожного учасника."
|
||||||
|
|
@ -227,7 +227,7 @@ msgid "Activity restored."
|
||||||
msgstr "Активність відновлено."
|
msgstr "Активність відновлено."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/index.ex:385
|
#: lib/who_need_help_web/live/activity_live/index.ex:385
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:174
|
#: 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"
|
||||||
msgstr "Тип активності"
|
msgstr "Тип активності"
|
||||||
|
|
@ -289,17 +289,12 @@ msgid "Approved participants"
|
||||||
msgstr "Схвалені учасники"
|
msgstr "Схвалені учасники"
|
||||||
|
|
||||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:80
|
#: lib/who_need_help_web/controllers/page_html/home.html.heex:80
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:305
|
#: lib/who_need_help_web/live/activity_live/new.ex:385
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:520
|
#: lib/who_need_help_web/live/request_live/new.ex:520
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Approximate area"
|
msgid "Approximate area"
|
||||||
msgstr "Орієнтовний район"
|
msgstr "Орієнтовний район"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:297
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Approximate public meeting area"
|
|
||||||
msgstr "Орієнтовний публічний район зустрічі"
|
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/profile_live.ex:163
|
#: lib/who_need_help_web/live/profile_live.ex:163
|
||||||
#: lib/who_need_help_web/live/request_live/show.ex:996
|
#: lib/who_need_help_web/live/request_live/show.ex:996
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
|
|
@ -442,7 +437,7 @@ msgid "Choose a category, urgency, and safe location visibility."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Оберіть категорію, терміновість і безпечний рівень видимості геопозиції."
|
"Оберіть категорію, терміновість і безпечний рівень видимості геопозиції."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:175
|
#: lib/who_need_help_web/live/activity_live/new.ex:205
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Choose activity"
|
msgid "Choose activity"
|
||||||
msgstr "Оберіть активність"
|
msgstr "Оберіть активність"
|
||||||
|
|
@ -452,15 +447,15 @@ msgstr "Оберіть активність"
|
||||||
msgid "Choose category"
|
msgid "Choose category"
|
||||||
msgstr "Виберіть категорію"
|
msgstr "Виберіть категорію"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:212
|
#: lib/who_need_help_web/live/activity_live/new.ex:242
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:239
|
#: lib/who_need_help_web/live/activity_live/new.ex:269
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:344
|
#: lib/who_need_help_web/live/request_live/new.ex:344
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:371
|
#: lib/who_need_help_web/live/request_live/new.ex:371
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Choose…"
|
msgid "Choose…"
|
||||||
msgstr "Оберіть…"
|
msgstr "Оберіть…"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:298
|
#: lib/who_need_help_web/live/activity_live/new.ex:363
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "City centre, near the main entrance"
|
msgid "City centre, near the main entrance"
|
||||||
msgstr "Центр міста, біля головного входу"
|
msgstr "Центр міста, біля головного входу"
|
||||||
|
|
@ -476,7 +471,7 @@ msgstr "Очистити"
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Закрити"
|
msgstr "Закрити"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:269
|
#: lib/who_need_help_web/live/activity_live/new.ex:299
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Coffee and conversation"
|
msgid "Coffee and conversation"
|
||||||
msgstr "Кава й розмова"
|
msgstr "Кава й розмова"
|
||||||
|
|
@ -544,7 +539,7 @@ msgid "Confirm your account and ensure it is active first."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Спочатку підтвердьте обліковий запис і переконайтеся, що він активний."
|
"Спочатку підтвердьте обліковий запис і переконайтеся, що він активний."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:135
|
#: lib/who_need_help_web/live/activity_live/new.ex:156
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:235
|
#: lib/who_need_help_web/live/request_live/new.ex:235
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Confirm your email and ensure your account is active before publishing."
|
msgid "Confirm your email and ensure your account is active before publishing."
|
||||||
|
|
@ -571,7 +566,7 @@ msgid "Create activity"
|
||||||
msgstr "Створити активність"
|
msgstr "Створити активність"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/index.ex:535
|
#: lib/who_need_help_web/live/activity_live/index.ex:535
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:150
|
#: 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"
|
||||||
msgstr "Створити активність"
|
msgstr "Створити активність"
|
||||||
|
|
@ -625,7 +620,7 @@ msgstr "Відхилити"
|
||||||
msgid "Default location visibility"
|
msgid "Default location visibility"
|
||||||
msgstr "Типова видимість геопозиції"
|
msgstr "Типова видимість геопозиції"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:276
|
#: lib/who_need_help_web/live/activity_live/new.ex:306
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Describe the public plan, approximate duration, and who might enjoy it."
|
msgid "Describe the public plan, approximate duration, and who might enjoy it."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -715,11 +710,6 @@ msgstr "Введіть код передачі"
|
||||||
msgid "Exact address after matching"
|
msgid "Exact address after matching"
|
||||||
msgstr "Точна адреса після призначення помічника"
|
msgstr "Точна адреса після призначення помічника"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:324
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Exact coordinates are shown only to participants you approve."
|
|
||||||
msgstr "Точні координати показуються лише схваленим вами учасникам."
|
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/profile_live.ex:164
|
#: lib/who_need_help_web/live/profile_live.ex:164
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Exact for active match"
|
msgid "Exact for active match"
|
||||||
|
|
@ -864,7 +854,6 @@ msgstr ""
|
||||||
"\n"
|
"\n"
|
||||||
"Якщо ви не запитували цей лист, просто проігноруйте його."
|
"Якщо ви не запитували цей лист, просто проігноруйте його."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:306
|
|
||||||
#: lib/who_need_help_web/live/profile_live.ex:162
|
#: lib/who_need_help_web/live/profile_live.ex:162
|
||||||
#: lib/who_need_help_web/live/request_live/show.ex:997
|
#: lib/who_need_help_web/live/request_live/show.ex:997
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
|
|
@ -909,7 +898,7 @@ msgstr ""
|
||||||
"Я підтверджую, що це не екстрена ситуація, безпосередньої небезпеки немає, а"
|
"Я підтверджую, що це не екстрена ситуація, безпосередньої небезпеки немає, а"
|
||||||
" запитувана допомога є законною."
|
" запитувана допомога є законною."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:348
|
#: lib/who_need_help_web/live/activity_live/new.ex:526
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "I will approve participants individually, keep sensitive details in the approved group, and use an appropriate public first meeting point."
|
msgid "I will approve participants individually, keep sensitive details in the approved group, and use an appropriate public first meeting point."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -975,13 +964,13 @@ msgstr "Неправильна електронна пошта або парол
|
||||||
msgid "Join requests are closed."
|
msgid "Join requests are closed."
|
||||||
msgstr "Подання заявок на участь закрито."
|
msgstr "Подання заявок на участь закрито."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:286
|
#: lib/who_need_help_web/live/activity_live/new.ex:316
|
||||||
#: lib/who_need_help_web/live/activity_live/show.ex:387
|
#: lib/who_need_help_web/live/activity_live/show.ex:387
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Join requests close"
|
msgid "Join requests close"
|
||||||
msgstr "Приймання заявок завершується"
|
msgstr "Приймання заявок завершується"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:332
|
#: lib/who_need_help_web/live/activity_live/new.ex:482
|
||||||
#: lib/who_need_help_web/live/notification_live.ex:686
|
#: lib/who_need_help_web/live/notification_live.ex:686
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:668
|
#: lib/who_need_help_web/live/request_live/new.ex:668
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
|
|
@ -1041,7 +1030,7 @@ msgstr "Увійти лише зараз"
|
||||||
msgid "Logged out successfully."
|
msgid "Logged out successfully."
|
||||||
msgstr "Ви успішно вийшли."
|
msgstr "Ви успішно вийшли."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:339
|
#: lib/who_need_help_web/live/activity_live/new.ex:496
|
||||||
#: lib/who_need_help_web/live/notification_live.ex:700
|
#: lib/who_need_help_web/live/notification_live.ex:700
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:682
|
#: lib/who_need_help_web/live/request_live/new.ex:682
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
|
|
@ -1185,7 +1174,7 @@ msgstr "Мережа"
|
||||||
msgid "New password"
|
msgid "New password"
|
||||||
msgstr "Новий пароль"
|
msgstr "Новий пароль"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:244
|
#: lib/who_need_help_web/live/activity_live/new.ex:274
|
||||||
#: lib/who_need_help_web/live/activity_live/show.ex:300
|
#: lib/who_need_help_web/live/activity_live/show.ex:300
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:379
|
#: lib/who_need_help_web/live/request_live/new.ex:379
|
||||||
#: lib/who_need_help_web/live/request_live/show.ex:877
|
#: lib/who_need_help_web/live/request_live/show.ex:877
|
||||||
|
|
@ -1375,7 +1364,7 @@ msgstr "Інструкції для отримання (необов’язко
|
||||||
msgid "Pickup notes"
|
msgid "Pickup notes"
|
||||||
msgstr "Інструкції з отримання"
|
msgstr "Інструкції з отримання"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:274
|
#: lib/who_need_help_web/live/activity_live/new.ex:304
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Plan and expectations"
|
msgid "Plan and expectations"
|
||||||
msgstr "План і очікування"
|
msgstr "План і очікування"
|
||||||
|
|
@ -1475,11 +1464,6 @@ msgstr ""
|
||||||
" одним учасником іншого; похідні ознаки руху й близькості можуть "
|
" одним учасником іншого; похідні ознаки руху й близькості можуть "
|
||||||
"зберігатися."
|
"зберігатися."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:303
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Public map visibility"
|
|
||||||
msgstr "Видимість на публічній мапі"
|
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/profile_live.ex:326
|
#: lib/who_need_help_web/live/profile_live.ex:326
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Public profile URL"
|
msgid "Public profile URL"
|
||||||
|
|
@ -1491,14 +1475,14 @@ msgstr "URL публічного профілю"
|
||||||
msgid "Public reputation"
|
msgid "Public reputation"
|
||||||
msgstr "Публічна репутація"
|
msgstr "Публічна репутація"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:152
|
#: lib/who_need_help_web/live/activity_live/new.ex:182
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Publish a clear public plan. Join requests stay pending until you approve them."
|
msgid "Publish a clear public plan. Join requests stay pending until you approve them."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Опублікуйте зрозумілий публічний план. Заявки на участь очікуватимуть, доки "
|
"Опублікуйте зрозумілий публічний план. Заявки на участь очікуватимуть, доки "
|
||||||
"ви їх не схвалите."
|
"ви їх не схвалите."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:360
|
#: lib/who_need_help_web/live/activity_live/new.ex:538
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Publish activity"
|
msgid "Publish activity"
|
||||||
msgstr "Опублікувати активність"
|
msgstr "Опублікувати активність"
|
||||||
|
|
@ -1513,7 +1497,7 @@ msgstr "Оприлюднити пропозицію"
|
||||||
msgid "Publish request"
|
msgid "Publish request"
|
||||||
msgstr "Опублікувати заявку"
|
msgstr "Опублікувати заявку"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:358
|
#: lib/who_need_help_web/live/activity_live/new.ex:536
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:742
|
#: lib/who_need_help_web/live/request_live/new.ex:742
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Publishing…"
|
msgid "Publishing…"
|
||||||
|
|
@ -1807,7 +1791,7 @@ msgstr ""
|
||||||
msgid "Short bio"
|
msgid "Short bio"
|
||||||
msgstr "Коротко про себе"
|
msgstr "Коротко про себе"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:268
|
#: lib/who_need_help_web/live/activity_live/new.ex:298
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:411
|
#: lib/who_need_help_web/live/request_live/new.ex:411
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Short title"
|
msgid "Short title"
|
||||||
|
|
@ -2098,7 +2082,7 @@ msgstr "Щоб переглянути надіслані листи, відкр
|
||||||
msgid "Today"
|
msgid "Today"
|
||||||
msgstr "Сьогодні"
|
msgstr "Сьогодні"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:138
|
#: lib/who_need_help_web/live/activity_live/new.ex:159
|
||||||
#: lib/who_need_help_web/live/activity_live/show.ex:336
|
#: lib/who_need_help_web/live/activity_live/show.ex:336
|
||||||
#: lib/who_need_help_web/live/category_proposal_live.ex:85
|
#: lib/who_need_help_web/live/category_proposal_live.ex:85
|
||||||
#: lib/who_need_help_web/live/profile_live.ex:59
|
#: lib/who_need_help_web/live/profile_live.ex:59
|
||||||
|
|
@ -2129,7 +2113,7 @@ msgstr "Забагато листів для входу протягом нал
|
||||||
msgid "Total"
|
msgid "Total"
|
||||||
msgstr "Загалом"
|
msgstr "Загалом"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:293
|
#: lib/who_need_help_web/live/activity_live/new.ex:323
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Total group capacity"
|
msgid "Total group capacity"
|
||||||
msgstr "Загальний розмір групи"
|
msgstr "Загальний розмір групи"
|
||||||
|
|
@ -2177,7 +2161,7 @@ msgstr "Терміновість"
|
||||||
msgid "Urgent help"
|
msgid "Urgent help"
|
||||||
msgstr "Термінова допомога"
|
msgstr "Термінова допомога"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:158
|
#: lib/who_need_help_web/live/activity_live/new.ex:188
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Use a public first meeting point. Do not publish a home address, access code, travel document, or other sensitive information."
|
msgid "Use a public first meeting point. Do not publish a home address, access code, travel document, or other sensitive information."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -2194,11 +2178,6 @@ msgstr "Увімкнути темну тему"
|
||||||
msgid "Use light theme"
|
msgid "Use light theme"
|
||||||
msgstr "Увімкнути світлу тему"
|
msgstr "Увімкнути світлу тему"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:321
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Use my current foreground location"
|
|
||||||
msgstr "Використати мою поточну геопозицію"
|
|
||||||
|
|
||||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:251
|
#: lib/who_need_help_web/controllers/page_html/home.html.heex:251
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Use private chat and optional live location sharing."
|
msgid "Use private chat and optional live location sharing."
|
||||||
|
|
@ -2345,7 +2324,7 @@ msgstr "Відмовитися від цієї заявки"
|
||||||
msgid "Write a safe coordination message…"
|
msgid "Write a safe coordination message…"
|
||||||
msgstr "Напишіть безпечне повідомлення для координації…"
|
msgstr "Напишіть безпечне повідомлення для координації…"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:241
|
#: lib/who_need_help_web/live/activity_live/new.ex:271
|
||||||
#: lib/who_need_help_web/live/activity_live/show.ex:298
|
#: lib/who_need_help_web/live/activity_live/show.ex:298
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:373
|
#: lib/who_need_help_web/live/request_live/new.ex:373
|
||||||
#: lib/who_need_help_web/live/request_live/show.ex:875
|
#: lib/who_need_help_web/live/request_live/show.ex:875
|
||||||
|
|
@ -2586,7 +2565,7 @@ msgstr "підтверджено"
|
||||||
msgid "← All requests"
|
msgid "← All requests"
|
||||||
msgstr "← Усі заявки"
|
msgstr "← Усі заявки"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:148
|
#: lib/who_need_help_web/live/activity_live/new.ex:178
|
||||||
#: lib/who_need_help_web/live/activity_live/show.ex:352
|
#: lib/who_need_help_web/live/activity_live/show.ex:352
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "← Back to activities"
|
msgid "← Back to activities"
|
||||||
|
|
@ -2712,7 +2691,7 @@ msgstr "Не вдалося завершити модерацію. Спробу
|
||||||
msgid "Could not complete the action. Please try again."
|
msgid "Could not complete the action. Please try again."
|
||||||
msgstr "Не вдалося завершити дію. Спробуйте ще раз."
|
msgstr "Не вдалося завершити дію. Спробуйте ще раз."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:140
|
#: lib/who_need_help_web/live/activity_live/new.ex:161
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Could not publish the activity. Please try again."
|
msgid "Could not publish the activity. Please try again."
|
||||||
msgstr "Не вдалося опублікувати активність. Спробуйте ще раз."
|
msgstr "Не вдалося опублікувати активність. Спробуйте ще раз."
|
||||||
|
|
@ -4172,6 +4151,7 @@ msgstr "Не вдалося скопіювати"
|
||||||
msgid "Date"
|
msgid "Date"
|
||||||
msgstr "Дата"
|
msgstr "Дата"
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:474
|
||||||
#: lib/who_need_help_web/live/notification_live.ex:683
|
#: lib/who_need_help_web/live/notification_live.ex:683
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:660
|
#: lib/who_need_help_web/live/request_live/new.ex:660
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
|
|
@ -4259,14 +4239,14 @@ msgstr "За 1 годину"
|
||||||
msgid "In 3 hours"
|
msgid "In 3 hours"
|
||||||
msgstr "За 3 години"
|
msgstr "За 3 години"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:316
|
#: lib/who_need_help_web/live/activity_live/new.ex:354
|
||||||
#: lib/who_need_help_web/live/notification_live.ex:601
|
#: lib/who_need_help_web/live/notification_live.ex:601
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:484
|
#: lib/who_need_help_web/live/request_live/new.ex:484
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Location is unavailable in this browser."
|
msgid "Location is unavailable in this browser."
|
||||||
msgstr "Геопозиція недоступна в цьому браузері."
|
msgstr "Геопозиція недоступна в цьому браузері."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:318
|
#: lib/who_need_help_web/live/activity_live/new.ex:356
|
||||||
#: lib/who_need_help_web/live/notification_live.ex:603
|
#: lib/who_need_help_web/live/notification_live.ex:603
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:486
|
#: lib/who_need_help_web/live/request_live/new.ex:486
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
|
|
@ -4417,7 +4397,7 @@ msgstr "Запит на вхід оброблено"
|
||||||
msgid "Signing in does not create a new account."
|
msgid "Signing in does not create a new account."
|
||||||
msgstr "Вхід не створює новий обліковий запис."
|
msgstr "Вхід не створює новий обліковий запис."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:282
|
#: lib/who_need_help_web/live/activity_live/new.ex:312
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Starts at"
|
msgid "Starts at"
|
||||||
msgstr "Початок"
|
msgstr "Початок"
|
||||||
|
|
@ -4443,6 +4423,7 @@ msgstr "Сайт обробив ваш запит на реєстрацію."
|
||||||
msgid "This activity is closed. The group chat remains available as read-only history."
|
msgid "This activity is closed. The group chat remains available as read-only history."
|
||||||
msgstr "Цю активність закрито. Історія групового чату доступна лише для читання."
|
msgstr "Цю активність закрито. Історія групового чату доступна лише для читання."
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:366
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:503
|
#: lib/who_need_help_web/live/request_live/new.ex:503
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "This description is visible to everyone. Do not enter a private address."
|
msgid "This description is visible to everyone. Do not enter a private address."
|
||||||
|
|
@ -4519,6 +4500,7 @@ msgstr "Вкажіть безпечне публічне місце зустрі
|
||||||
msgid "Use another email"
|
msgid "Use another email"
|
||||||
msgstr "Використати іншу пошту"
|
msgstr "Використати іншу пошту"
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:435
|
||||||
#: lib/who_need_help_web/live/notification_live.ex:636
|
#: lib/who_need_help_web/live/notification_live.ex:636
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:595
|
#: lib/who_need_help_web/live/request_live/new.ex:595
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
|
|
@ -4776,6 +4758,8 @@ 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:496
|
#: lib/who_need_help_web/live/activity_live/index.ex:496
|
||||||
|
#: 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/show.ex:545
|
#: lib/who_need_help_web/live/activity_live/show.ex:545
|
||||||
#: 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
|
||||||
|
|
@ -4787,7 +4771,7 @@ msgstr "Разом"
|
||||||
msgid "Try map again"
|
msgid "Try map again"
|
||||||
msgstr "Спробувати карту знову"
|
msgstr "Спробувати карту знову"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:124
|
#: lib/who_need_help_web/live/activity_live/new.ex:145
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:193
|
#: lib/who_need_help_web/live/request_live/new.ex:193
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "%{field} is required."
|
msgid "%{field} is required."
|
||||||
|
|
@ -4800,13 +4784,13 @@ msgstr "Поле «%{field}» обов’язкове."
|
||||||
msgid "Both reviews are now visible on participant profiles."
|
msgid "Both reviews are now visible on participant profiles."
|
||||||
msgstr "Обидва відгуки тепер видно в профілях учасників."
|
msgstr "Обидва відгуки тепер видно в профілях учасників."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:127
|
#: lib/who_need_help_web/live/activity_live/new.ex:148
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:196
|
#: lib/who_need_help_web/live/request_live/new.ex:196
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Check the category details and try again."
|
msgid "Check the category details and try again."
|
||||||
msgstr "Перевірте деталі категорії та спробуйте ще раз."
|
msgstr "Перевірте деталі категорії та спробуйте ще раз."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:130
|
#: lib/who_need_help_web/live/activity_live/new.ex:151
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:199
|
#: lib/who_need_help_web/live/request_live/new.ex:199
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Choose a valid value for %{field}."
|
msgid "Choose a valid value for %{field}."
|
||||||
|
|
@ -6607,7 +6591,7 @@ msgstr "Нова широка група допомоги або заходів"
|
||||||
msgid "A specific option inside an existing category"
|
msgid "A specific option inside an existing category"
|
||||||
msgstr "Конкретний варіант усередині наявної категорії"
|
msgstr "Конкретний варіант усередині наявної категорії"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:183
|
#: lib/who_need_help_web/live/activity_live/new.ex:213
|
||||||
#: lib/who_need_help_web/live/request_live/new.ex:311
|
#: lib/who_need_help_web/live/request_live/new.ex:311
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Can't find the right option? Propose a category"
|
msgid "Can't find the right option? Propose a category"
|
||||||
|
|
@ -6644,7 +6628,7 @@ msgstr "Нова основна категорія"
|
||||||
msgid "New subcategory"
|
msgid "New subcategory"
|
||||||
msgstr "Нова підкатегорія"
|
msgstr "Нова підкатегорія"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:177
|
#: lib/who_need_help_web/live/activity_live/new.ex:207
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "No matching activity. You can propose a new one."
|
msgid "No matching activity. You can propose a new one."
|
||||||
msgstr "Відповідний захід не знайдено. Ви можете запропонувати новий."
|
msgstr "Відповідний захід не знайдено. Ви можете запропонувати новий."
|
||||||
|
|
@ -6659,7 +6643,7 @@ msgstr "Відповідний тип допомоги не знайдено. В
|
||||||
msgid "No matching main category"
|
msgid "No matching main category"
|
||||||
msgstr "Відповідну основну категорію не знайдено"
|
msgstr "Відповідну основну категорію не знайдено"
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:176
|
#: lib/who_need_help_web/live/activity_live/new.ex:206
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Search activity categories"
|
msgid "Search activity categories"
|
||||||
msgstr "Пошук категорій заходів"
|
msgstr "Пошук категорій заходів"
|
||||||
|
|
@ -6730,11 +6714,6 @@ msgstr "Пошук мов"
|
||||||
msgid "Android push notifications are not available yet."
|
msgid "Android push notifications are not available yet."
|
||||||
msgstr "Push-сповіщення Android поки недоступні."
|
msgstr "Push-сповіщення Android поки недоступні."
|
||||||
|
|
||||||
#: lib/who_need_help_web/live/activity_live/new.ex:317
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Location added."
|
|
||||||
msgstr "Місцезнаходження додано."
|
|
||||||
|
|
||||||
#: lib/who_need_help_web/components/layouts/root.html.heex:9
|
#: lib/who_need_help_web/components/layouts/root.html.heex:9
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Map marker"
|
msgid "Map marker"
|
||||||
|
|
@ -6794,3 +6773,110 @@ msgstr "Очікуємо на дозвіл для сповіщень і токе
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Who Need Help connects adults who need urgent local help with nearby volunteers."
|
msgid "Who Need Help connects adults who need urgent local help with nearby volunteers."
|
||||||
msgstr "Who Need Help з’єднує дорослих, яким потрібна термінова допомога поруч, із місцевими волонтерами."
|
msgstr "Who Need Help з’єднує дорослих, яким потрібна термінова допомога поруч, із місцевими волонтерами."
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:337
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:470
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Choose the public meeting point on the map or use your current location."
|
||||||
|
msgstr "Оберіть публічне місце зустрічі на карті або скористайтеся своїм поточним місцезнаходженням."
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:420
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:423
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Click the map or drag the pin to choose the meeting point"
|
||||||
|
msgstr "Натисніть на карту або перетягніть маркер, щоб обрати місце зустрічі"
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:349
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Drag to move the exact meeting point"
|
||||||
|
msgstr "Перетягніть, щоб перемістити точне місце зустрічі"
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:348
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Drag to move the meeting area"
|
||||||
|
msgstr "Перетягніть, щоб перемістити область зустрічі"
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:350
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Drag to move the private meeting point"
|
||||||
|
msgstr "Перетягніть, щоб перемістити приватне місце зустрічі"
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:344
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Meeting point selected."
|
||||||
|
msgstr "Місце зустрічі вибрано."
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:340
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Meeting point selected. Before approval, people see only its approximate area."
|
||||||
|
msgstr "Місце зустрічі вибрано. До схвалення люди бачать лише приблизну область."
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:399
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "No public map"
|
||||||
|
msgstr "Без публічної карти"
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:443
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Only people you approve receive the exact meeting point and group chat."
|
||||||
|
msgstr "Точне місце зустрічі та груповий чат отримають лише схвалені вами учасники."
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:400
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "People can find it by the area description"
|
||||||
|
msgstr "Активність можна знайти за описом району"
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:455
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "People can search by the public area description. Approved participants receive the exact point."
|
||||||
|
msgstr "Люди можуть шукати за публічним описом району. Схвалені учасники отримають точне місце."
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:346
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Private meeting point selected. It appears only after approval."
|
||||||
|
msgstr "Приватне місце зустрічі вибрано. Воно з’явиться лише після схвалення."
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:362
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Public meeting area or landmark"
|
||||||
|
msgstr "Публічний район або орієнтир місця зустрічі"
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:386
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Recommended for discoverability"
|
||||||
|
msgstr "Рекомендовано, щоб активність було легше знайти"
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:352
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Select a meeting point. It will remain hidden until you approve someone."
|
||||||
|
msgstr "Оберіть місце зустрічі. Воно залишатиметься прихованим, доки ви не схвалите учасника."
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:412
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "The map is unavailable. You can enter coordinates manually."
|
||||||
|
msgstr "Карта недоступна. Введіть координати вручну."
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:441
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "The public map stays approximate"
|
||||||
|
msgstr "На публічній карті показано лише приблизну область"
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:453
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "The public map stays hidden"
|
||||||
|
msgstr "Публічна карта залишається прихованою"
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:476
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "These coordinates are the exact meeting point. They are revealed only after approval."
|
||||||
|
msgstr "Ці координати задають точне місце зустрічі. Їх буде розкрито лише після схвалення."
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:372
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "What should people see before approval?"
|
||||||
|
msgstr "Що мають бачити люди до схвалення?"
|
||||||
|
|
||||||
|
#: lib/who_need_help_web/live/activity_live/new.ex:98
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Choose the meeting point on the map or use your current location."
|
||||||
|
msgstr "Оберіть місце зустрічі на карті або скористайтеся своїм поточним місцезнаходженням."
|
||||||
|
|
|
||||||
|
|
@ -383,6 +383,42 @@ defmodule WhoNeedHelp.ActivitiesTest do
|
||||||
refute far_away.id in ids
|
refute far_away.id in ids
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "activity discovery filters by the published approximate point, not the exact point",
|
||||||
|
context do
|
||||||
|
{:ok, activity} =
|
||||||
|
Activities.create_activity(
|
||||||
|
context.organizer_scope,
|
||||||
|
context.attrs
|
||||||
|
|> Map.put("title", "Privacy-safe viewport activity")
|
||||||
|
|> Map.put("latitude", "50.4501")
|
||||||
|
|> Map.put("longitude", "30.5234")
|
||||||
|
)
|
||||||
|
|
||||||
|
exact_only_viewport = viewport!(30.523, 50.449, 30.524, 50.451, 16)
|
||||||
|
|
||||||
|
exact_only_entries =
|
||||||
|
context.outsider_scope
|
||||||
|
|> Activities.paginate_open_activities(%{},
|
||||||
|
viewport: exact_only_viewport,
|
||||||
|
limit: 100
|
||||||
|
)
|
||||||
|
|> Map.fetch!(:entries)
|
||||||
|
|
||||||
|
refute Enum.any?(exact_only_entries, &(&1.id == activity.id))
|
||||||
|
|
||||||
|
published_point_viewport = viewport!(30.519, 50.449, 30.521, 50.451, 16)
|
||||||
|
|
||||||
|
published_entries =
|
||||||
|
context.outsider_scope
|
||||||
|
|> Activities.paginate_open_activities(%{},
|
||||||
|
viewport: published_point_viewport,
|
||||||
|
limit: 100
|
||||||
|
)
|
||||||
|
|> Map.fetch!(:entries)
|
||||||
|
|
||||||
|
assert Enum.any?(published_entries, &(&1.id == activity.id))
|
||||||
|
end
|
||||||
|
|
||||||
test "activity map discovery clusters dense points and keeps sparse points", context do
|
test "activity map discovery clusters dense points and keeps sparse points", context do
|
||||||
for {offset, index} <- Enum.with_index([0.0, 0.00005, 0.0001], 1) do
|
for {offset, index} <- Enum.with_index([0.0, 0.00005, 0.0001], 1) do
|
||||||
assert {:ok, _activity} =
|
assert {:ok, _activity} =
|
||||||
|
|
|
||||||
|
|
@ -314,6 +314,101 @@ defmodule WhoNeedHelpWeb.MutualAidLiveTest do
|
||||||
live(conn, "/activities/not-a-uuid")
|
live(conn, "/activities/not-a-uuid")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "activity creation uses the privacy-aware map picker", %{conn: conn} do
|
||||||
|
Catalog.seed_defaults()
|
||||||
|
|
||||||
|
{:ok, view, _html} = live(conn, ~p"/activities/new")
|
||||||
|
|
||||||
|
assert has_element?(
|
||||||
|
view,
|
||||||
|
"#activity-location-workspace[phx-hook='RequestLocationPicker'][data-preserve-hidden-coordinates='true']"
|
||||||
|
)
|
||||||
|
|
||||||
|
assert has_element?(view, "#activity-location-map[phx-update='ignore']")
|
||||||
|
|
||||||
|
assert has_element?(
|
||||||
|
view,
|
||||||
|
"input[name='activity[location_visibility]'][value='approximate_public'][checked]"
|
||||||
|
)
|
||||||
|
|
||||||
|
assert has_element?(
|
||||||
|
view,
|
||||||
|
"input[name='activity[location_visibility]'][value='hidden']"
|
||||||
|
)
|
||||||
|
|
||||||
|
assert has_element?(view, "#activity-latitude[data-coordinate-input]")
|
||||||
|
assert has_element?(view, "#activity-longitude[data-coordinate-input]")
|
||||||
|
assert has_element?(view, "#activity-location-manual[phx-update='ignore']")
|
||||||
|
refute has_element?(view, "#activity-location-picker[phx-hook='LocationPicker']")
|
||||||
|
|
||||||
|
html =
|
||||||
|
render_change(view, "validate", %{
|
||||||
|
"activity" => %{
|
||||||
|
"location_visibility" => "hidden",
|
||||||
|
"latitude" => "",
|
||||||
|
"longitude" => ""
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
refute html =~ "Choose the meeting point on the map or use your current location."
|
||||||
|
|
||||||
|
html =
|
||||||
|
render_submit(view, "save", %{
|
||||||
|
"activity" => %{
|
||||||
|
"location_visibility" => "hidden",
|
||||||
|
"latitude" => "",
|
||||||
|
"longitude" => ""
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
assert html =~ "Choose the meeting point on the map or use your current location."
|
||||||
|
end
|
||||||
|
|
||||||
|
test "activity with hidden public location omits the map until approval", %{
|
||||||
|
scope: organizer_scope
|
||||||
|
} do
|
||||||
|
Catalog.seed_defaults()
|
||||||
|
participant = user_fixture(display_name: "Hidden-map participant")
|
||||||
|
|
||||||
|
cinema =
|
||||||
|
Catalog.list_categories(:activity)
|
||||||
|
|> Enum.find(&(&1.slug == "cinema-meetup"))
|
||||||
|
|
||||||
|
attrs =
|
||||||
|
activity_attrs(cinema)
|
||||||
|
|> Map.put("location_visibility", "hidden")
|
||||||
|
|> Map.put("structured_data", %{"film_or_genre" => "Public screening"})
|
||||||
|
|
||||||
|
{:ok, activity} = Activities.create_activity(organizer_scope, attrs)
|
||||||
|
|
||||||
|
{:ok, participant_view, html} =
|
||||||
|
build_conn()
|
||||||
|
|> log_in_user(participant)
|
||||||
|
|> live(~p"/activities/#{activity.id}")
|
||||||
|
|
||||||
|
assert html =~ "The public map stays hidden"
|
||||||
|
assert has_element?(participant_view, "#activity-detail-map-hidden")
|
||||||
|
refute has_element?(participant_view, "#activity-detail-map")
|
||||||
|
|
||||||
|
participant_view
|
||||||
|
|> element("button[phx-click='join']")
|
||||||
|
|> render_click()
|
||||||
|
|
||||||
|
organizer = organizer_scope.user
|
||||||
|
|
||||||
|
{:ok, organizer_view, _html} =
|
||||||
|
build_conn()
|
||||||
|
|> log_in_user(organizer)
|
||||||
|
|> live(~p"/activities/#{activity.id}")
|
||||||
|
|
||||||
|
organizer_view
|
||||||
|
|> element("button[phx-click='approve']")
|
||||||
|
|> render_click()
|
||||||
|
|
||||||
|
assert has_element?(participant_view, "#activity-detail-map")
|
||||||
|
refute has_element?(participant_view, "#activity-detail-map-hidden")
|
||||||
|
end
|
||||||
|
|
||||||
test "request index applies PubSub updates without a full page reload" do
|
test "request index applies PubSub updates without a full page reload" do
|
||||||
category = Catalog.seed_defaults()
|
category = Catalog.seed_defaults()
|
||||||
requester = user_fixture(display_name: "Realtime requester")
|
requester = user_fixture(display_name: "Realtime requester")
|
||||||
|
|
@ -664,8 +759,9 @@ defmodule WhoNeedHelpWeb.MutualAidLiveTest do
|
||||||
{:ok, view, html} = live(conn, ~p"/activities/new")
|
{:ok, view, html} = live(conn, ~p"/activities/new")
|
||||||
assert html =~ "Social activity — Hiking"
|
assert html =~ "Social activity — Hiking"
|
||||||
refute html =~ "Medicine pickup status"
|
refute html =~ "Medicine pickup status"
|
||||||
assert html =~ ~s(data-added-label="Location added.")
|
assert html =~ ~s(phx-hook="RequestLocationPicker")
|
||||||
assert html =~ ~s(data-permission-denied-label="Location permission was denied.")
|
assert html =~ ~s(data-preserve-hidden-coordinates="true")
|
||||||
|
assert html =~ ~s(data-location-denied-label="Location permission was denied.")
|
||||||
|
|
||||||
html =
|
html =
|
||||||
render_change(view, "validate", %{
|
render_change(view, "validate", %{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user