feat: expand homepage with interactive demo map
Some checks are pending
Quality / full-local-gates (push) Waiting to run
Some checks are pending
Quality / full-local-gates (push) Waiting to run
This commit is contained in:
parent
4f2a9aaacc
commit
ff856f637f
|
|
@ -144,10 +144,54 @@
|
|||
}
|
||||
|
||||
.aid-map {
|
||||
position: relative;
|
||||
min-height: 22rem;
|
||||
border-radius: 1.25rem;
|
||||
overflow: hidden;
|
||||
border: 1px solid color-mix(in oklab, currentColor 12%, transparent);
|
||||
background:
|
||||
linear-gradient(135deg, color-mix(in oklab, var(--color-success) 8%, transparent), transparent),
|
||||
var(--color-base-200);
|
||||
}
|
||||
|
||||
.home-demo-map {
|
||||
min-height: 32rem;
|
||||
border-radius: 2rem;
|
||||
}
|
||||
|
||||
.home-demo-map[data-map-ready="false"]::after {
|
||||
position: absolute;
|
||||
inset: 50% auto auto 50%;
|
||||
width: 2rem;
|
||||
height: 2rem;
|
||||
content: "";
|
||||
border: 3px solid color-mix(in oklab, var(--color-success) 25%, transparent);
|
||||
border-top-color: var(--color-success);
|
||||
border-radius: 9999px;
|
||||
transform: translate(-50%, -50%);
|
||||
animation: home-map-spin 800ms linear infinite;
|
||||
}
|
||||
|
||||
.home-demo-map[data-map-ready="true"]::after {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@keyframes home-map-spin {
|
||||
to {
|
||||
transform: translate(-50%, -50%) rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 47.999rem) {
|
||||
.home-demo-map {
|
||||
min-height: 24rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.home-demo-map[data-map-ready="false"]::after {
|
||||
animation: none;
|
||||
}
|
||||
}
|
||||
|
||||
.help-card {
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ import {Socket} from "phoenix"
|
|||
import {LiveSocket} from "phoenix_live_view"
|
||||
import {hooks as colocatedHooks} from "phoenix-colocated/who_need_help"
|
||||
import topbar from "../vendor/topbar"
|
||||
import {Hooks} from "./hooks"
|
||||
import {Hooks, mountStaticAidMaps} from "./hooks"
|
||||
|
||||
const systemTheme = () =>
|
||||
matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light"
|
||||
|
|
@ -91,6 +91,7 @@ const activateProtectedTokenFragment = () => {
|
|||
|
||||
activateProtectedTokenFragment()
|
||||
window.addEventListener("hashchange", activateProtectedTokenFragment)
|
||||
mountStaticAidMaps(document)
|
||||
|
||||
const liveSocket = new LiveSocket("/live", Socket, {
|
||||
longPollFallbackMs: 2500,
|
||||
|
|
|
|||
|
|
@ -15,68 +15,56 @@ const defaultStyle = {
|
|||
layers: [{id: "osm", type: "raster", source: "osm"}]
|
||||
}
|
||||
|
||||
export const Hooks = {
|
||||
AidMap: {
|
||||
mounted() {
|
||||
this.markers = []
|
||||
this.markLoading = () => {
|
||||
if (this.el.dataset.mapReady !== "true") {
|
||||
this.el.dataset.mapReady = "false"
|
||||
const markerPoints = element => {
|
||||
try {
|
||||
const points = JSON.parse(element.dataset.markers || "[]")
|
||||
|
||||
if (!Array.isArray(points)) return []
|
||||
|
||||
return points.filter(point =>
|
||||
Number.isFinite(point?.longitude) && Number.isFinite(point?.latitude)
|
||||
)
|
||||
} catch (_error) {
|
||||
return []
|
||||
}
|
||||
}
|
||||
|
||||
const createAidMap = element => {
|
||||
const state = {
|
||||
element,
|
||||
map: null,
|
||||
markers: []
|
||||
}
|
||||
|
||||
state.markLoading = () => {
|
||||
if (state.element.dataset.mapReady !== "true") {
|
||||
state.element.dataset.mapReady = "false"
|
||||
}
|
||||
}
|
||||
this.markReady = () => {
|
||||
this.el.dataset.mapReady = "true"
|
||||
|
||||
state.markReady = () => {
|
||||
state.element.dataset.mapReady = "true"
|
||||
}
|
||||
this.showUnavailable = () => {
|
||||
this.map = null
|
||||
this.el.dataset.mapUnavailable = "true"
|
||||
this.markReady()
|
||||
|
||||
state.showUnavailable = () => {
|
||||
state.map = null
|
||||
state.element.dataset.mapUnavailable = "true"
|
||||
state.markReady()
|
||||
|
||||
const fallback = document.createElement("p")
|
||||
fallback.className = "grid h-full place-items-center p-6 text-center text-sm"
|
||||
fallback.dataset.mapFallback = "true"
|
||||
fallback.textContent = this.el.dataset.mapUnavailableLabel
|
||||
this.el.replaceChildren(fallback)
|
||||
fallback.textContent = state.element.dataset.mapUnavailableLabel
|
||||
state.element.replaceChildren(fallback)
|
||||
}
|
||||
|
||||
if (!supportsMapCanvas()) {
|
||||
this.showUnavailable()
|
||||
return
|
||||
}
|
||||
state.renderMarkers = () => {
|
||||
if (!state.map) return
|
||||
|
||||
try {
|
||||
this.map = new maplibregl.Map({
|
||||
container: this.el,
|
||||
style: defaultStyle,
|
||||
center: [30.5234, 50.4501],
|
||||
zoom: 5
|
||||
})
|
||||
} catch (_error) {
|
||||
this.showUnavailable()
|
||||
return
|
||||
}
|
||||
state.markers.forEach(marker => marker.remove())
|
||||
state.markers = []
|
||||
|
||||
this.map.addControl(new maplibregl.NavigationControl(), "top-right")
|
||||
this.map.on("dataloading", this.markLoading)
|
||||
this.map.on("load", this.markReady)
|
||||
this.map.on("idle", this.markReady)
|
||||
this.renderMarkers()
|
||||
},
|
||||
updated() {
|
||||
this.renderMarkers()
|
||||
},
|
||||
destroyed() {
|
||||
this.map?.off("dataloading", this.markLoading)
|
||||
this.map?.off("load", this.markReady)
|
||||
this.map?.off("idle", this.markReady)
|
||||
this.map?.remove()
|
||||
},
|
||||
renderMarkers() {
|
||||
if (!this.map) return
|
||||
this.markers.forEach(marker => marker.remove())
|
||||
this.markers = []
|
||||
|
||||
const points = JSON.parse(this.el.dataset.markers || "[]")
|
||||
const points = markerPoints(state.element)
|
||||
points.forEach(point => {
|
||||
const popupContent = document.createElement("div")
|
||||
const title = document.createElement("strong")
|
||||
|
|
@ -88,18 +76,104 @@ export const Hooks = {
|
|||
const marker = new maplibregl.Marker({color: point.exact ? "#d6573b" : "#278467"})
|
||||
.setLngLat([point.longitude, point.latitude])
|
||||
.setPopup(popup)
|
||||
.addTo(this.map)
|
||||
this.markers.push(marker)
|
||||
.addTo(state.map)
|
||||
state.markers.push(marker)
|
||||
})
|
||||
|
||||
if (points.length === 1) {
|
||||
this.map.flyTo({center: [points[0].longitude, points[0].latitude], zoom: 12})
|
||||
state.map.flyTo({center: [points[0].longitude, points[0].latitude], zoom: 12})
|
||||
} else if (points.length > 1) {
|
||||
const bounds = new maplibregl.LngLatBounds()
|
||||
points.forEach(point => bounds.extend([point.longitude, point.latitude]))
|
||||
this.map.fitBounds(bounds, {padding: 52, maxZoom: 13})
|
||||
state.map.fitBounds(bounds, {padding: 52, maxZoom: 13})
|
||||
}
|
||||
}
|
||||
|
||||
state.mount = () => {
|
||||
state.markLoading()
|
||||
const demoMap = state.element.dataset.demoMap === "true"
|
||||
|
||||
if (!supportsMapCanvas()) {
|
||||
state.showUnavailable()
|
||||
return
|
||||
}
|
||||
|
||||
try {
|
||||
state.map = new maplibregl.Map({
|
||||
container: state.element,
|
||||
style: defaultStyle,
|
||||
center: [30.5234, 50.4501],
|
||||
zoom: 5,
|
||||
attributionControl: true,
|
||||
dragRotate: !demoMap,
|
||||
pitchWithRotate: !demoMap,
|
||||
scrollZoom: !demoMap
|
||||
})
|
||||
} catch (_error) {
|
||||
state.showUnavailable()
|
||||
return
|
||||
}
|
||||
|
||||
if (demoMap) state.map.touchZoomRotate.disableRotation()
|
||||
|
||||
state.map.addControl(
|
||||
new maplibregl.NavigationControl({showCompass: !demoMap}),
|
||||
demoMap ? "bottom-right" : "top-right"
|
||||
)
|
||||
state.map.on("dataloading", state.markLoading)
|
||||
state.map.on("load", state.markReady)
|
||||
state.map.on("idle", state.markReady)
|
||||
state.renderMarkers()
|
||||
}
|
||||
|
||||
state.destroy = () => {
|
||||
state.map?.off("dataloading", state.markLoading)
|
||||
state.map?.off("load", state.markReady)
|
||||
state.map?.off("idle", state.markReady)
|
||||
state.map?.remove()
|
||||
}
|
||||
|
||||
return state
|
||||
}
|
||||
|
||||
export const mountStaticAidMaps = root => {
|
||||
root.querySelectorAll("[data-static-aid-map]").forEach(element => {
|
||||
if (element.dataset.staticMapMounted === "true") return
|
||||
|
||||
const mount = () => {
|
||||
element.dataset.staticMapMounted = "true"
|
||||
element._aidMap = createAidMap(element)
|
||||
element._aidMap.mount()
|
||||
}
|
||||
|
||||
if (!("IntersectionObserver" in window)) {
|
||||
mount()
|
||||
return
|
||||
}
|
||||
|
||||
const observer = new IntersectionObserver(entries => {
|
||||
if (!entries.some(entry => entry.isIntersecting)) return
|
||||
|
||||
observer.disconnect()
|
||||
mount()
|
||||
}, {rootMargin: "240px"})
|
||||
|
||||
observer.observe(element)
|
||||
})
|
||||
}
|
||||
|
||||
export const Hooks = {
|
||||
AidMap: {
|
||||
mounted() {
|
||||
this.aidMap = createAidMap(this.el)
|
||||
this.aidMap.mount()
|
||||
},
|
||||
updated() {
|
||||
this.aidMap.renderMarkers()
|
||||
},
|
||||
destroyed() {
|
||||
this.aidMap.destroy()
|
||||
}
|
||||
},
|
||||
|
||||
LocationPicker: {
|
||||
|
|
|
|||
|
|
@ -2,7 +2,10 @@ defmodule WhoNeedHelpWeb.PageController do
|
|||
use WhoNeedHelpWeb, :controller
|
||||
|
||||
def home(conn, _params) do
|
||||
render(conn, :home)
|
||||
render(conn, :home,
|
||||
page_description:
|
||||
"Ask nearby volunteers for free medicine pickup or safe practical help, coordinate privately, and verify the handover."
|
||||
)
|
||||
end
|
||||
|
||||
def privacy(conn, _params) do
|
||||
|
|
|
|||
|
|
@ -1,30 +1,58 @@
|
|||
<% demo_markers =
|
||||
Jason.encode!([
|
||||
%{
|
||||
title: gettext("Medicine pickup · example"),
|
||||
location: gettext("Approximate area · demo data"),
|
||||
latitude: 50.4501,
|
||||
longitude: 30.5234,
|
||||
exact: false
|
||||
},
|
||||
%{
|
||||
title: gettext("Flat tyre help · example"),
|
||||
location: gettext("Approximate area · demo data"),
|
||||
latitude: 50.4612,
|
||||
longitude: 30.4926,
|
||||
exact: false
|
||||
},
|
||||
%{
|
||||
title: gettext("Bicycle chain help · example"),
|
||||
location: gettext("Approximate area · demo data"),
|
||||
latitude: 50.4328,
|
||||
longitude: 30.5487,
|
||||
exact: false
|
||||
}
|
||||
]) %>
|
||||
|
||||
<Layouts.app flash={@flash} current_scope={@current_scope}>
|
||||
<section class="grid gap-10 py-8 lg:grid-cols-[1.15fr_.85fr] lg:items-center">
|
||||
<section
|
||||
aria-labelledby="home-title"
|
||||
class="grid gap-10 py-8 lg:grid-cols-[1.15fr_.85fr] lg:items-center"
|
||||
>
|
||||
<div>
|
||||
<div class="badge badge-success badge-outline mb-5">
|
||||
{gettext("Fast, local, voluntary help")}
|
||||
{gettext("Free, nearby, voluntary help")}
|
||||
</div>
|
||||
<h1 class="max-w-3xl text-5xl font-black tracking-tight text-balance sm:text-6xl">
|
||||
{gettext("Help can be closer than you think.")}
|
||||
<h1
|
||||
id="home-title"
|
||||
class="max-w-3xl text-5xl font-black tracking-tight text-balance sm:text-6xl"
|
||||
>
|
||||
{gettext("Need help nearby? Ask the community.")}
|
||||
</h1>
|
||||
<p class="mt-6 max-w-2xl text-lg leading-8 text-base-content/70">
|
||||
{gettext(
|
||||
"Who Need Help connects people who urgently need medicine pickup or safe roadside assistance with nearby volunteers who can help for free."
|
||||
"Ask a nearby volunteer to collect medicine that is already purchased or help with a safe roadside problem. There is no mandatory fee."
|
||||
)}
|
||||
</p>
|
||||
<div class="mt-8 flex flex-wrap gap-3">
|
||||
<.link navigate={~p"/requests"} class="btn btn-primary btn-lg">
|
||||
{gettext("See nearby requests")}
|
||||
<.link
|
||||
navigate={if @current_scope, do: ~p"/requests/new", else: ~p"/users/register"}
|
||||
class="btn btn-primary btn-lg"
|
||||
>
|
||||
{gettext("I need help")}
|
||||
</.link>
|
||||
<%= if @current_scope do %>
|
||||
<.link navigate={~p"/requests/new"} class="btn btn-outline btn-lg">
|
||||
{gettext("Ask for help")}
|
||||
<.link navigate={~p"/requests"} class="btn btn-outline btn-lg">
|
||||
{gettext("I can help")}
|
||||
</.link>
|
||||
<% else %>
|
||||
<.link navigate={~p"/users/register"} class="btn btn-outline btn-lg">
|
||||
{gettext("Join the community")}
|
||||
</.link>
|
||||
<% end %>
|
||||
</div>
|
||||
<p class="mt-5 text-sm text-base-content/70">
|
||||
{gettext(
|
||||
|
|
@ -35,51 +63,338 @@
|
|||
|
||||
<div class="relative">
|
||||
<div class="absolute inset-0 rounded-[2rem] bg-success/10 blur-2xl"></div>
|
||||
<div class="relative rounded-[2rem] border border-base-300 bg-base-100 p-7 shadow-xl">
|
||||
<div class="mb-6 flex items-center justify-between">
|
||||
<article class="relative rounded-[2rem] border border-base-300 bg-base-100 p-7 shadow-xl">
|
||||
<div class="mb-6 flex items-center justify-between gap-3">
|
||||
<span class="text-sm font-semibold text-success">{gettext("Medicine pickup")}</span>
|
||||
<span class="badge badge-error badge-sm">{gettext("urgent")}</span>
|
||||
</div>
|
||||
<div class="badge badge-ghost badge-sm mb-4">{gettext("Example request")}</div>
|
||||
<h2 class="text-2xl font-bold">{gettext("Medicine order is ready at the pharmacy")}</h2>
|
||||
<p class="mt-3 text-base-content/65">
|
||||
{gettext(
|
||||
"The pharmacy closes soon and I cannot leave home. The item is already paid for."
|
||||
)}
|
||||
</p>
|
||||
<div class="mt-7 flex items-center justify-between border-t border-base-300 pt-5">
|
||||
<div class="mt-7 flex items-center justify-between gap-4 border-t border-base-300 pt-5">
|
||||
<div>
|
||||
<div class="text-sm font-semibold">{gettext("Approximate area")}</div>
|
||||
<div class="text-xs text-base-content/55">
|
||||
{gettext("Exact address after matching")}
|
||||
</div>
|
||||
</div>
|
||||
<button class="btn btn-success btn-sm" disabled>{gettext("I can help")}</button>
|
||||
<.link navigate={~p"/requests"} class="btn btn-success btn-sm shrink-0">
|
||||
{gettext("I can help")}
|
||||
</.link>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section aria-labelledby="help-types-title" class="py-12">
|
||||
<div class="max-w-3xl">
|
||||
<div class="text-sm font-bold uppercase tracking-[.18em] text-success">
|
||||
{gettext("Start with urgent practical help")}
|
||||
</div>
|
||||
<h2 id="help-types-title" class="mt-3 text-3xl font-black sm:text-4xl">
|
||||
{gettext("What can you ask the community for?")}
|
||||
</h2>
|
||||
<p class="mt-4 text-base-content/65">
|
||||
{gettext(
|
||||
"Choose a moderated category. Each one asks only for the details needed for that kind of help."
|
||||
)}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="mt-8 grid gap-4 sm:grid-cols-2 lg:grid-cols-4">
|
||||
<article class="help-card rounded-3xl border border-base-300 bg-base-100 p-6">
|
||||
<.icon name="hero-shopping-bag" class="size-7 text-success" />
|
||||
<h3 class="mt-5 font-bold">{gettext("Collect medicine")}</h3>
|
||||
<p class="mt-2 text-sm text-base-content/65">
|
||||
{gettext("The medicine is already legally purchased or reserved for pickup.")}
|
||||
</p>
|
||||
</article>
|
||||
<article class="help-card rounded-3xl border border-base-300 bg-base-100 p-6">
|
||||
<.icon name="hero-truck" class="size-7 text-success" />
|
||||
<h3 class="mt-5 font-bold">{gettext("Bring fuel")}</h3>
|
||||
<p class="mt-2 text-sm text-base-content/65">
|
||||
{gettext("Only after people and the vehicle are away from active traffic danger.")}
|
||||
</p>
|
||||
</article>
|
||||
<article class="help-card rounded-3xl border border-base-300 bg-base-100 p-6">
|
||||
<.icon name="hero-wrench-screwdriver" class="size-7 text-success" />
|
||||
<h3 class="mt-5 font-bold">{gettext("Help with a wheel")}</h3>
|
||||
<p class="mt-2 text-sm text-base-content/65">
|
||||
{gettext("A flat tyre or another small roadside problem in a safe place.")}
|
||||
</p>
|
||||
</article>
|
||||
<article class="help-card rounded-3xl border border-base-300 bg-base-100 p-6">
|
||||
<.icon name="hero-cog-6-tooth" class="size-7 text-success" />
|
||||
<h3 class="mt-5 font-bold">{gettext("Bicycle or motorcycle")}</h3>
|
||||
<p class="mt-2 text-sm text-base-content/65">
|
||||
{gettext("A puncture, broken chain, tyre problem, or similar practical help.")}
|
||||
</p>
|
||||
</article>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section aria-labelledby="demo-map-title" class="py-12">
|
||||
<div class="grid gap-8 lg:grid-cols-[1.1fr_.9fr] lg:items-stretch">
|
||||
<div class="relative min-w-0">
|
||||
<div
|
||||
id="home-demo-map"
|
||||
data-static-aid-map="true"
|
||||
data-demo-map="true"
|
||||
data-map-ready="false"
|
||||
data-markers={demo_markers}
|
||||
data-map-unavailable-label={
|
||||
gettext("The demo map is unavailable. The example steps remain available beside it.")
|
||||
}
|
||||
role="region"
|
||||
aria-label={gettext("Demo map with synthetic approximate help requests")}
|
||||
class="aid-map home-demo-map"
|
||||
>
|
||||
</div>
|
||||
<div class="pointer-events-none absolute left-4 top-4 z-10 flex flex-wrap gap-2">
|
||||
<span class="badge badge-neutral shadow-sm">{gettext("Interactive demo")}</span>
|
||||
<span class="badge badge-ghost border border-base-300 bg-base-100/95 shadow-sm">
|
||||
{gettext("Example data — not live requests")}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="rounded-[2rem] bg-base-200 p-7 sm:p-9">
|
||||
<div class="text-sm font-bold uppercase tracking-[.18em] text-success">
|
||||
{gettext("Privacy by default")}
|
||||
</div>
|
||||
<h2 id="demo-map-title" class="mt-3 text-3xl font-black sm:text-4xl">
|
||||
{gettext("See nearby needs without exposing a home address")}
|
||||
</h2>
|
||||
<p class="mt-4 text-base-content/65">
|
||||
{gettext(
|
||||
"These three points are synthetic examples. Real public discovery follows each requester's location visibility choice."
|
||||
)}
|
||||
</p>
|
||||
|
||||
<ol class="mt-7 space-y-5">
|
||||
<li class="flex gap-4">
|
||||
<span class="grid size-9 shrink-0 place-items-center rounded-full bg-success text-sm font-black text-success-content">1</span>
|
||||
<div>
|
||||
<h3 class="font-bold">{gettext("Discover an approximate area")}</h3>
|
||||
<p class="mt-1 text-sm text-base-content/65">
|
||||
{gettext("The public marker does not need to reveal an exact address.")}
|
||||
</p>
|
||||
</div>
|
||||
</li>
|
||||
<li class="flex gap-4">
|
||||
<span class="grid size-9 shrink-0 place-items-center rounded-full bg-success text-sm font-black text-success-content">2</span>
|
||||
<div>
|
||||
<h3 class="font-bold">{gettext("Accept and open private coordination")}</h3>
|
||||
<p class="mt-1 text-sm text-base-content/65">
|
||||
{gettext("Only the matched requester and helper receive the private chat.")}
|
||||
</p>
|
||||
</div>
|
||||
</li>
|
||||
<li class="flex gap-4">
|
||||
<span class="grid size-9 shrink-0 place-items-center rounded-full bg-success text-sm font-black text-success-content">3</span>
|
||||
<div>
|
||||
<h3 class="font-bold">{gettext("Share live location only by choice")}</h3>
|
||||
<p class="mt-1 text-sm text-base-content/65">
|
||||
{gettext("Current coordinates are optional and deleted when sharing stops.")}
|
||||
</p>
|
||||
</div>
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="grid gap-4 py-10 md:grid-cols-3">
|
||||
<div class="rounded-2xl bg-base-200 p-6">
|
||||
<section aria-labelledby="how-title" class="py-12">
|
||||
<div class="max-w-3xl">
|
||||
<div class="text-sm font-bold uppercase tracking-[.18em] text-success">
|
||||
{gettext("A clear handover")}
|
||||
</div>
|
||||
<h2 id="how-title" class="mt-3 text-3xl font-black sm:text-4xl">
|
||||
{gettext("From request to verified completion")}
|
||||
</h2>
|
||||
</div>
|
||||
|
||||
<div class="mt-8 grid gap-4 md:grid-cols-3">
|
||||
<article class="rounded-2xl bg-base-200 p-6">
|
||||
<div class="text-3xl">1</div>
|
||||
<h3 class="mt-4 font-bold">{gettext("Post a clear request")}</h3>
|
||||
<p class="mt-2 text-sm text-base-content/65">
|
||||
{gettext("Choose a category, urgency, and safe location visibility.")}
|
||||
</p>
|
||||
</div>
|
||||
<div class="rounded-2xl bg-base-200 p-6">
|
||||
</article>
|
||||
<article class="rounded-2xl bg-base-200 p-6">
|
||||
<div class="text-3xl">2</div>
|
||||
<h3 class="mt-4 font-bold">{gettext("Match and coordinate")}</h3>
|
||||
<p class="mt-2 text-sm text-base-content/65">
|
||||
{gettext("Use private chat and optional live location sharing.")}
|
||||
</p>
|
||||
</div>
|
||||
<div class="rounded-2xl bg-base-200 p-6">
|
||||
</article>
|
||||
<article class="rounded-2xl bg-base-200 p-6">
|
||||
<div class="text-3xl">3</div>
|
||||
<h3 class="mt-4 font-bold">{gettext("Verify the handover")}</h3>
|
||||
<p class="mt-2 text-sm text-base-content/65">
|
||||
{gettext("Both confirm and the helper enters a one-time code.")}
|
||||
{gettext(
|
||||
"Both confirm, the helper enters a one-time code, and reviews stay blind until both submit."
|
||||
)}
|
||||
</p>
|
||||
</article>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section aria-labelledby="trust-title" class="py-12">
|
||||
<div class="rounded-[2rem] border border-base-300 bg-base-100 p-7 sm:p-10">
|
||||
<div class="max-w-3xl">
|
||||
<div class="text-sm font-bold uppercase tracking-[.18em] text-success">
|
||||
{gettext("Built for safer coordination")}
|
||||
</div>
|
||||
<h2 id="trust-title" class="mt-3 text-3xl font-black sm:text-4xl">
|
||||
{gettext("You stay in control of the match")}
|
||||
</h2>
|
||||
</div>
|
||||
|
||||
<div class="mt-8 grid gap-6 sm:grid-cols-2 lg:grid-cols-4">
|
||||
<div>
|
||||
<.icon name="hero-gift" class="size-7 text-success" />
|
||||
<h3 class="mt-4 font-bold">{gettext("No mandatory payment")}</h3>
|
||||
<p class="mt-2 text-sm text-base-content/65">
|
||||
{gettext(
|
||||
"Help is voluntary. An external thank-you link is optional after completion."
|
||||
)}
|
||||
</p>
|
||||
</div>
|
||||
<div>
|
||||
<.icon name="hero-lock-closed" class="size-7 text-success" />
|
||||
<h3 class="mt-4 font-bold">{gettext("Private matched chat")}</h3>
|
||||
<p class="mt-2 text-sm text-base-content/65">
|
||||
{gettext("There is no unsolicited inbox between strangers.")}
|
||||
</p>
|
||||
</div>
|
||||
<div>
|
||||
<.icon name="hero-shield-check" class="size-7 text-success" />
|
||||
<h3 class="mt-4 font-bold">{gettext("Reports and blocking")}</h3>
|
||||
<p class="mt-2 text-sm text-base-content/65">
|
||||
{gettext(
|
||||
"Leave a match, block a person, or send a scoped report when something feels wrong."
|
||||
)}
|
||||
</p>
|
||||
</div>
|
||||
<div>
|
||||
<.icon name="hero-star" class="size-7 text-success" />
|
||||
<h3 class="mt-4 font-bold">{gettext("Verified reputation signals")}</h3>
|
||||
<p class="mt-2 text-sm text-base-content/65">
|
||||
{gettext("Handover codes and unique completed matches matter more than raw totals.")}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<.link navigate={~p"/safety"} class="btn btn-outline mt-8">
|
||||
{gettext("Read the safety rules")}
|
||||
</.link>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section aria-labelledby="activities-title" class="py-12">
|
||||
<div class="grid gap-6 rounded-[2rem] bg-success/10 p-7 sm:p-10 lg:grid-cols-[1fr_auto] lg:items-center">
|
||||
<div class="max-w-3xl">
|
||||
<div class="text-sm font-bold uppercase tracking-[.18em] text-success">
|
||||
{gettext("Not only urgent help")}
|
||||
</div>
|
||||
<h2 id="activities-title" class="mt-3 text-3xl font-black sm:text-4xl">
|
||||
{gettext("Find company for coffee, cinema, a walk, or a hike")}
|
||||
</h2>
|
||||
<p class="mt-4 text-base-content/65">
|
||||
{gettext(
|
||||
"Social activities are separate from urgent requests. Organizers approve participants, and exact meeting details stay inside the approved group."
|
||||
)}
|
||||
</p>
|
||||
</div>
|
||||
<.link navigate={~p"/activities"} class="btn btn-success btn-lg">
|
||||
{gettext("Explore activities")}
|
||||
</.link>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section aria-labelledby="faq-title" class="py-12">
|
||||
<div class="grid gap-8 lg:grid-cols-[.7fr_1.3fr]">
|
||||
<div>
|
||||
<div class="text-sm font-bold uppercase tracking-[.18em] text-success">
|
||||
{gettext("Quick answers")}
|
||||
</div>
|
||||
<h2 id="faq-title" class="mt-3 text-3xl font-black sm:text-4xl">
|
||||
{gettext("Before you create a request")}
|
||||
</h2>
|
||||
</div>
|
||||
<div class="space-y-3">
|
||||
<details class="group rounded-2xl border border-base-300 bg-base-100 p-5">
|
||||
<summary class="cursor-pointer font-bold">
|
||||
{gettext("Do I have to pay a helper?")}
|
||||
</summary>
|
||||
<p class="mt-3 text-sm leading-6 text-base-content/65">
|
||||
{gettext(
|
||||
"No. Help has no mandatory fee. A helper may optionally publish an external thank-you link after a completed handover."
|
||||
)}
|
||||
</p>
|
||||
</details>
|
||||
<details class="group rounded-2xl border border-base-300 bg-base-100 p-5">
|
||||
<summary class="cursor-pointer font-bold">
|
||||
{gettext("Can a volunteer buy medicine for me?")}
|
||||
</summary>
|
||||
<p class="mt-3 text-sm leading-6 text-base-content/65">
|
||||
{gettext(
|
||||
"The medicine must already be legally purchased or reserved. The service does not prescribe, recommend, sell, or handle controlled substances."
|
||||
)}
|
||||
</p>
|
||||
</details>
|
||||
<details class="group rounded-2xl border border-base-300 bg-base-100 p-5">
|
||||
<summary class="cursor-pointer font-bold">
|
||||
{gettext("Who can see my exact address?")}
|
||||
</summary>
|
||||
<p class="mt-3 text-sm leading-6 text-base-content/65">
|
||||
{gettext(
|
||||
"You choose the visibility. Exact active coordinates can be limited to the matched helper and are removed when sharing stops."
|
||||
)}
|
||||
</p>
|
||||
</details>
|
||||
<details class="group rounded-2xl border border-base-300 bg-base-100 p-5">
|
||||
<summary class="cursor-pointer font-bold">
|
||||
{gettext("What if there is immediate danger?")}
|
||||
</summary>
|
||||
<p class="mt-3 text-sm leading-6 text-base-content/65">
|
||||
{gettext(
|
||||
"Contact the emergency service for your location. Who Need Help is for voluntary practical coordination, not emergencies."
|
||||
)}
|
||||
</p>
|
||||
</details>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="py-12 text-center">
|
||||
<div class="rounded-[2rem] bg-neutral px-6 py-12 text-neutral-content sm:px-10">
|
||||
<h2 class="text-3xl font-black sm:text-4xl">{gettext("Ready to ask or help nearby?")}</h2>
|
||||
<p class="mx-auto mt-4 max-w-2xl text-neutral-content/70">
|
||||
{gettext(
|
||||
"Create one account, choose your role for each situation, and keep control of what you share."
|
||||
)}
|
||||
</p>
|
||||
<div class="mt-8 flex flex-wrap justify-center gap-3">
|
||||
<.link
|
||||
navigate={if @current_scope, do: ~p"/requests/new", else: ~p"/users/register"}
|
||||
class="btn btn-primary btn-lg"
|
||||
>
|
||||
{gettext("I need help")}
|
||||
</.link>
|
||||
<.link
|
||||
navigate={~p"/requests"}
|
||||
class="btn btn-outline btn-lg border-neutral-content/45 text-neutral-content"
|
||||
>
|
||||
{gettext("I can help")}
|
||||
</.link>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</Layouts.app>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,6 @@ msgstr ""
|
|||
|
||||
#: lib/who_need_help_web/components/layouts.ex:70
|
||||
#: lib/who_need_help_web/components/layouts.ex:119
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:21
|
||||
#: lib/who_need_help_web/live/request_live/new.ex:23
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Ask for help"
|
||||
|
|
@ -41,21 +40,6 @@ msgstr ""
|
|||
msgid "Categories"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Fast, local, voluntary help"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:8
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Help can be closer than you think."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:25
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Join the community"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/components/layouts.ex:78
|
||||
#: lib/who_need_help_web/components/layouts.ex:128
|
||||
#: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:9
|
||||
|
|
@ -88,11 +72,6 @@ msgstr ""
|
|||
msgid "Requests"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:17
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "See nearby requests"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/components/layouts.ex:315
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Something went wrong!"
|
||||
|
|
@ -294,7 +273,7 @@ msgstr ""
|
|||
msgid "Approved participants"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:51
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:80
|
||||
#: lib/who_need_help_web/live/activity_live/new.ex:263
|
||||
#: lib/who_need_help_web/live/request_live/new.ex:311
|
||||
#, elixir-autogen, elixir-format
|
||||
|
|
@ -357,11 +336,6 @@ msgstr ""
|
|||
msgid "Blocked users"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:81
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Both confirm and the helper enters a one-time code."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/live/request_live/new.ex:123
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Briefly describe the help you need"
|
||||
|
|
@ -446,7 +420,7 @@ msgstr ""
|
|||
msgid "Changing..."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:67
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:226
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Choose a category, urgency, and safe location visibility."
|
||||
msgstr ""
|
||||
|
|
@ -706,7 +680,7 @@ msgstr ""
|
|||
msgid "Enter handover code"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:53
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:82
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Exact address after matching"
|
||||
msgstr ""
|
||||
|
|
@ -871,7 +845,9 @@ msgstr ""
|
|||
msgid "Human decisions retained"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:56
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:54
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:86
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:395
|
||||
#: lib/who_need_help_web/live/request_live/show.ex:875
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "I can help"
|
||||
|
|
@ -1047,7 +1023,7 @@ msgstr ""
|
|||
msgid "Mark completed"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:72
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:231
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Match and coordinate"
|
||||
msgstr ""
|
||||
|
|
@ -1064,12 +1040,12 @@ msgstr ""
|
|||
msgid "Medicine is ready at the pharmacy"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:43
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:72
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Medicine order is ready at the pharmacy"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:40
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:68
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Medicine pickup"
|
||||
msgstr ""
|
||||
|
|
@ -1223,7 +1199,7 @@ msgstr ""
|
|||
msgid "None revealed yet."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:30
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:58
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Not an emergency or medical service. In immediate danger, contact local emergency services."
|
||||
msgstr ""
|
||||
|
|
@ -1398,7 +1374,7 @@ msgstr ""
|
|||
msgid "Podil, near the central pharmacy"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:65
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:224
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Post a clear request"
|
||||
msgstr ""
|
||||
|
|
@ -1794,7 +1770,7 @@ msgstr ""
|
|||
msgid "Signal updated."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/components/layouts/root.html.heex:27
|
||||
#: lib/who_need_help_web/components/layouts/root.html.heex:34
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Skip to main content"
|
||||
msgstr ""
|
||||
|
|
@ -1959,7 +1935,7 @@ msgstr ""
|
|||
msgid "The organizer has not approved your request yet."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:45
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:74
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "The pharmacy closes soon and I cannot leave home. The item is already paid for."
|
||||
msgstr ""
|
||||
|
|
@ -2164,7 +2140,7 @@ msgstr ""
|
|||
msgid "Use my current foreground location"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:74
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:233
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Use private chat and optional live location sharing."
|
||||
msgstr ""
|
||||
|
|
@ -2222,7 +2198,7 @@ msgstr ""
|
|||
msgid "Verify handover"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:79
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:238
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Verify the handover"
|
||||
msgstr ""
|
||||
|
|
@ -2270,11 +2246,6 @@ msgstr ""
|
|||
msgid "What help do you need?"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:11
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Who Need Help connects people who urgently need medicine pickup or safe roadside assistance with nearby volunteers who can help for free."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/safety.html.heex:8
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Who Need Help coordinates voluntary help between adults. It cannot verify every person, request, item, route, or outcome and cannot guarantee safety."
|
||||
|
|
@ -2555,7 +2526,7 @@ msgstr ""
|
|||
msgid "unverified"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:41
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:69
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "urgent"
|
||||
msgstr ""
|
||||
|
|
@ -3667,3 +3638,321 @@ msgstr ""
|
|||
#, elixir-autogen, elixir-format
|
||||
msgid "and"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:214
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "A clear handover"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:127
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "A flat tyre or another small roadside problem in a safe place."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:134
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "A puncture, broken chain, tyre problem, or similar practical help."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:191
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Accept and open private coordination"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:5
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:12
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:19
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Approximate area · demo data"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:42
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Ask a nearby volunteer to collect medicine that is already purchased or help with a safe roadside problem. There is no mandatory fee."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:328
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Before you create a request"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:18
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Bicycle chain help · example"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:132
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Bicycle or motorcycle"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:240
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Both confirm, the helper enters a one-time code, and reviews stay blind until both submit."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:118
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Bring fuel"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:252
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Built for safer coordination"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:344
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Can a volunteer buy medicine for me?"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:102
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Choose a moderated category. Each one asks only for the details needed for that kind of help."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:111
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Collect medicine"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:367
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Contact the emergency service for your location. Who Need Help is for voluntary practical coordination, not emergencies."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:380
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Create one account, choose your role for each situation, and keep control of what you share."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:202
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Current coordinates are optional and deleted when sharing stops."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:153
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Demo map with synthetic approximate help requests"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:182
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Discover an approximate area"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:334
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Do I have to pay a helper?"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:160
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Example data — not live requests"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:71
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Example request"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:316
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Explore activities"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:307
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Find company for coffee, cinema, a walk, or a hike"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:11
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Flat tyre help · example"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:33
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Free, nearby, voluntary help"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:217
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "From request to verified completion"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:289
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Handover codes and unique completed matches matter more than raw totals."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:264
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Help is voluntary. An external thank-you link is optional after completion."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:125
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Help with a wheel"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:51
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:389
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "I need help"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:158
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Interactive demo"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:280
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Leave a match, block a person, or send a scoped report when something feels wrong."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:4
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Medicine pickup · example"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:39
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Need help nearby? Ask the community."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:262
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "No mandatory payment"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:337
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "No. Help has no mandatory fee. A helper may optionally publish an external thank-you link after a completed handover."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:304
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Not only urgent help"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:120
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Only after people and the vehicle are away from active traffic danger."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:193
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Only the matched requester and helper receive the private chat."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:167
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Privacy by default"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:271
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Private matched chat"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:325
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Quick answers"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:295
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Read the safety rules"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:378
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Ready to ask or help nearby?"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:278
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Reports and blocking"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:170
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "See nearby needs without exposing a home address"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:200
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Share live location only by choice"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:310
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Social activities are separate from urgent requests. Organizers approve participants, and exact meeting details stay inside the approved group."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:96
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Start with urgent practical help"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:150
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "The demo map is unavailable. The example steps remain available beside it."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:113
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "The medicine is already legally purchased or reserved for pickup."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:347
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "The medicine must already be legally purchased or reserved. The service does not prescribe, recommend, sell, or handle controlled substances."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:184
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "The public marker does not need to reveal an exact address."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:273
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "There is no unsolicited inbox between strangers."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:173
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "These three points are synthetic examples. Real public discovery follows each requester's location visibility choice."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:287
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Verified reputation signals"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:99
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "What can you ask the community for?"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:364
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "What if there is immediate danger?"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:354
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Who can see my exact address?"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:357
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "You choose the visibility. Exact active coordinates can be limited to the matched helper and are removed when sharing stops."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:255
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "You stay in control of the match"
|
||||
msgstr ""
|
||||
|
|
|
|||
|
|
@ -24,7 +24,6 @@ msgstr ""
|
|||
|
||||
#: lib/who_need_help_web/components/layouts.ex:70
|
||||
#: lib/who_need_help_web/components/layouts.ex:119
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:21
|
||||
#: lib/who_need_help_web/live/request_live/new.ex:23
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Ask for help"
|
||||
|
|
@ -41,21 +40,6 @@ msgstr ""
|
|||
msgid "Categories"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Fast, local, voluntary help"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:8
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Help can be closer than you think."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:25
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Join the community"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/components/layouts.ex:78
|
||||
#: lib/who_need_help_web/components/layouts.ex:128
|
||||
#: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:9
|
||||
|
|
@ -88,11 +72,6 @@ msgstr ""
|
|||
msgid "Requests"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:17
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "See nearby requests"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/components/layouts.ex:315
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Something went wrong!"
|
||||
|
|
@ -294,7 +273,7 @@ msgstr ""
|
|||
msgid "Approved participants"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:51
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:80
|
||||
#: lib/who_need_help_web/live/activity_live/new.ex:263
|
||||
#: lib/who_need_help_web/live/request_live/new.ex:311
|
||||
#, elixir-autogen, elixir-format
|
||||
|
|
@ -357,11 +336,6 @@ msgstr ""
|
|||
msgid "Blocked users"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:81
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Both confirm and the helper enters a one-time code."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/live/request_live/new.ex:123
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Briefly describe the help you need"
|
||||
|
|
@ -446,7 +420,7 @@ msgstr ""
|
|||
msgid "Changing..."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:67
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:226
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Choose a category, urgency, and safe location visibility."
|
||||
msgstr ""
|
||||
|
|
@ -706,7 +680,7 @@ msgstr ""
|
|||
msgid "Enter handover code"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:53
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:82
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Exact address after matching"
|
||||
msgstr ""
|
||||
|
|
@ -871,7 +845,9 @@ msgstr ""
|
|||
msgid "Human decisions retained"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:56
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:54
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:86
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:395
|
||||
#: lib/who_need_help_web/live/request_live/show.ex:875
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "I can help"
|
||||
|
|
@ -1047,7 +1023,7 @@ msgstr ""
|
|||
msgid "Mark completed"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:72
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:231
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Match and coordinate"
|
||||
msgstr ""
|
||||
|
|
@ -1064,12 +1040,12 @@ msgstr ""
|
|||
msgid "Medicine is ready at the pharmacy"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:43
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:72
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Medicine order is ready at the pharmacy"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:40
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:68
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Medicine pickup"
|
||||
msgstr ""
|
||||
|
|
@ -1223,7 +1199,7 @@ msgstr ""
|
|||
msgid "None revealed yet."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:30
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:58
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Not an emergency or medical service. In immediate danger, contact local emergency services."
|
||||
msgstr ""
|
||||
|
|
@ -1398,7 +1374,7 @@ msgstr ""
|
|||
msgid "Podil, near the central pharmacy"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:65
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:224
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Post a clear request"
|
||||
msgstr ""
|
||||
|
|
@ -1794,7 +1770,7 @@ msgstr ""
|
|||
msgid "Signal updated."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/components/layouts/root.html.heex:27
|
||||
#: lib/who_need_help_web/components/layouts/root.html.heex:34
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Skip to main content"
|
||||
msgstr ""
|
||||
|
|
@ -1959,7 +1935,7 @@ msgstr ""
|
|||
msgid "The organizer has not approved your request yet."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:45
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:74
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "The pharmacy closes soon and I cannot leave home. The item is already paid for."
|
||||
msgstr ""
|
||||
|
|
@ -2164,7 +2140,7 @@ msgstr ""
|
|||
msgid "Use my current foreground location"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:74
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:233
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Use private chat and optional live location sharing."
|
||||
msgstr ""
|
||||
|
|
@ -2222,7 +2198,7 @@ msgstr ""
|
|||
msgid "Verify handover"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:79
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:238
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Verify the handover"
|
||||
msgstr ""
|
||||
|
|
@ -2270,11 +2246,6 @@ msgstr ""
|
|||
msgid "What help do you need?"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:11
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Who Need Help connects people who urgently need medicine pickup or safe roadside assistance with nearby volunteers who can help for free."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/safety.html.heex:8
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Who Need Help coordinates voluntary help between adults. It cannot verify every person, request, item, route, or outcome and cannot guarantee safety."
|
||||
|
|
@ -2555,7 +2526,7 @@ msgstr ""
|
|||
msgid "unverified"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:41
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:69
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "urgent"
|
||||
msgstr ""
|
||||
|
|
@ -3667,3 +3638,321 @@ msgstr "Terms"
|
|||
#, elixir-autogen, elixir-format
|
||||
msgid "and"
|
||||
msgstr "and"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:214
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "A clear handover"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:127
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "A flat tyre or another small roadside problem in a safe place."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:134
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "A puncture, broken chain, tyre problem, or similar practical help."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:191
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Accept and open private coordination"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:5
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:12
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:19
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "Approximate area · demo data"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:42
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Ask a nearby volunteer to collect medicine that is already purchased or help with a safe roadside problem. There is no mandatory fee."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:328
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Before you create a request"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:18
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Bicycle chain help · example"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:132
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Bicycle or motorcycle"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:240
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Both confirm, the helper enters a one-time code, and reviews stay blind until both submit."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:118
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Bring fuel"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:252
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Built for safer coordination"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:344
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Can a volunteer buy medicine for me?"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:102
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Choose a moderated category. Each one asks only for the details needed for that kind of help."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:111
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Collect medicine"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:367
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Contact the emergency service for your location. Who Need Help is for voluntary practical coordination, not emergencies."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:380
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Create one account, choose your role for each situation, and keep control of what you share."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:202
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Current coordinates are optional and deleted when sharing stops."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:153
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Demo map with synthetic approximate help requests"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:182
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Discover an approximate area"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:334
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Do I have to pay a helper?"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:160
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Example data — not live requests"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:71
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "Example request"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:316
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Explore activities"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:307
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Find company for coffee, cinema, a walk, or a hike"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:11
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Flat tyre help · example"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:33
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Free, nearby, voluntary help"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:217
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "From request to verified completion"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:289
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Handover codes and unique completed matches matter more than raw totals."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:264
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Help is voluntary. An external thank-you link is optional after completion."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:125
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Help with a wheel"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:51
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:389
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "I need help"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:158
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Interactive demo"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:280
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Leave a match, block a person, or send a scoped report when something feels wrong."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:4
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "Medicine pickup · example"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:39
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Need help nearby? Ask the community."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:262
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "No mandatory payment"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:337
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "No. Help has no mandatory fee. A helper may optionally publish an external thank-you link after a completed handover."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:304
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Not only urgent help"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:120
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Only after people and the vehicle are away from active traffic danger."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:193
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Only the matched requester and helper receive the private chat."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:167
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Privacy by default"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:271
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "Private matched chat"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:325
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Quick answers"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:295
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Read the safety rules"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:378
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Ready to ask or help nearby?"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:278
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Reports and blocking"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:170
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "See nearby needs without exposing a home address"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:200
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Share live location only by choice"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:310
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Social activities are separate from urgent requests. Organizers approve participants, and exact meeting details stay inside the approved group."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:96
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Start with urgent practical help"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:150
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "The demo map is unavailable. The example steps remain available beside it."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:113
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "The medicine is already legally purchased or reserved for pickup."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:347
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "The medicine must already be legally purchased or reserved. The service does not prescribe, recommend, sell, or handle controlled substances."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:184
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "The public marker does not need to reveal an exact address."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:273
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "There is no unsolicited inbox between strangers."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:173
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "These three points are synthetic examples. Real public discovery follows each requester's location visibility choice."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:287
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Verified reputation signals"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:99
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "What can you ask the community for?"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:364
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "What if there is immediate danger?"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:354
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Who can see my exact address?"
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:357
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "You choose the visibility. Exact active coordinates can be limited to the matched helper and are removed when sharing stops."
|
||||
msgstr ""
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:255
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "You stay in control of the match"
|
||||
msgstr ""
|
||||
|
|
|
|||
|
|
@ -24,7 +24,6 @@ msgstr "Действия"
|
|||
|
||||
#: lib/who_need_help_web/components/layouts.ex:70
|
||||
#: lib/who_need_help_web/components/layouts.ex:119
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:21
|
||||
#: lib/who_need_help_web/live/request_live/new.ex:23
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Ask for help"
|
||||
|
|
@ -41,21 +40,6 @@ msgstr "Пытаемся восстановить соединение"
|
|||
msgid "Categories"
|
||||
msgstr "Категории"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Fast, local, voluntary help"
|
||||
msgstr "Быстрая, локальная, добровольная помощь"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:8
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Help can be closer than you think."
|
||||
msgstr "Помощь может быть ближе, чем кажется."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:25
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Join the community"
|
||||
msgstr "Присоединиться к сообществу"
|
||||
|
||||
#: lib/who_need_help_web/components/layouts.ex:78
|
||||
#: lib/who_need_help_web/components/layouts.ex:128
|
||||
#: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:9
|
||||
|
|
@ -88,11 +72,6 @@ msgstr "Регистрация"
|
|||
msgid "Requests"
|
||||
msgstr "Заявки"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:17
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "See nearby requests"
|
||||
msgstr "Заявки рядом"
|
||||
|
||||
#: lib/who_need_help_web/components/layouts.ex:315
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Something went wrong!"
|
||||
|
|
@ -305,7 +284,7 @@ msgstr "Чат одобренной группы"
|
|||
msgid "Approved participants"
|
||||
msgstr "Одобренные участники"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:51
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:80
|
||||
#: lib/who_need_help_web/live/activity_live/new.ex:263
|
||||
#: lib/who_need_help_web/live/request_live/new.ex:311
|
||||
#, elixir-autogen, elixir-format
|
||||
|
|
@ -373,12 +352,6 @@ msgstr "Заблокировать пользователя"
|
|||
msgid "Blocked users"
|
||||
msgstr "Блокированные пользователи"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:81
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Both confirm and the helper enters a one-time code."
|
||||
msgstr ""
|
||||
"Оба участника подтверждают завершение, а помощник вводит одноразовый код."
|
||||
|
||||
#: lib/who_need_help_web/live/request_live/new.ex:123
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Briefly describe the help you need"
|
||||
|
|
@ -463,7 +436,7 @@ msgstr "Изменить роль"
|
|||
msgid "Changing..."
|
||||
msgstr "Изменение…"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:67
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:226
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Choose a category, urgency, and safe location visibility."
|
||||
msgstr ""
|
||||
|
|
@ -740,7 +713,7 @@ msgstr "Название на английском"
|
|||
msgid "Enter handover code"
|
||||
msgstr "Введите код передачи"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:53
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:82
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Exact address after matching"
|
||||
msgstr "Точный адрес после назначения помощника"
|
||||
|
|
@ -932,7 +905,9 @@ msgstr "Скрыть заявку"
|
|||
msgid "Human decisions retained"
|
||||
msgstr "Решения остаются за человеком"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:56
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:54
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:86
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:395
|
||||
#: lib/who_need_help_web/live/request_live/show.ex:875
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "I can help"
|
||||
|
|
@ -1131,7 +1106,7 @@ msgstr ""
|
|||
msgid "Mark completed"
|
||||
msgstr "Отметить завершённой"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:72
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:231
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Match and coordinate"
|
||||
msgstr "Найдите помощника и согласуйте детали"
|
||||
|
|
@ -1148,12 +1123,12 @@ msgstr "Помощник найден"
|
|||
msgid "Medicine is ready at the pharmacy"
|
||||
msgstr "Лекарство готово к получению в аптеке"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:43
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:72
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Medicine order is ready at the pharmacy"
|
||||
msgstr "Заказ лекарств готов в аптеке"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:40
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:68
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Medicine pickup"
|
||||
msgstr "Доставка лекарств"
|
||||
|
|
@ -1313,7 +1288,7 @@ msgstr "Ссылки на соцсети не добавлены."
|
|||
msgid "None revealed yet."
|
||||
msgstr "Пока ничего не открыто."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:30
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:58
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Not an emergency or medical service. In immediate danger, contact local emergency services."
|
||||
msgstr ""
|
||||
|
|
@ -1498,7 +1473,7 @@ msgstr "Пожалуйста, проверьте отправленное соо
|
|||
msgid "Podil, near the central pharmacy"
|
||||
msgstr "Подол, рядом с центральной аптекой"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:65
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:224
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Post a clear request"
|
||||
msgstr "Опубликуйте понятную заявку"
|
||||
|
|
@ -1921,7 +1896,7 @@ msgstr "Зарегистрироваться"
|
|||
msgid "Signal updated."
|
||||
msgstr "Сигнал обновлен."
|
||||
|
||||
#: lib/who_need_help_web/components/layouts/root.html.heex:27
|
||||
#: lib/who_need_help_web/components/layouts/root.html.heex:34
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Skip to main content"
|
||||
msgstr "Пропустить основной контент"
|
||||
|
|
@ -2086,7 +2061,7 @@ msgstr "Ссылка недействительна или просрочена.
|
|||
msgid "The organizer has not approved your request yet."
|
||||
msgstr "Организатор ещё не одобрил вашу заявку."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:45
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:74
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "The pharmacy closes soon and I cannot leave home. The item is already paid for."
|
||||
msgstr ""
|
||||
|
|
@ -2304,7 +2279,7 @@ msgstr "Включить светлую тему"
|
|||
msgid "Use my current foreground location"
|
||||
msgstr "Использовать мою текущую геопозицию"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:74
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:233
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Use private chat and optional live location sharing."
|
||||
msgstr ""
|
||||
|
|
@ -2364,7 +2339,7 @@ msgstr "Подтвердить через GitHub"
|
|||
msgid "Verify handover"
|
||||
msgstr "Подтвердить передачу"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:79
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:238
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Verify the handover"
|
||||
msgstr "Подтвердите передачу"
|
||||
|
|
@ -2412,14 +2387,6 @@ msgstr "Какая категория помощи отсутствует?"
|
|||
msgid "What help do you need?"
|
||||
msgstr "Какая помощь вам нужна?"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:11
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Who Need Help connects people who urgently need medicine pickup or safe roadside assistance with nearby volunteers who can help for free."
|
||||
msgstr ""
|
||||
"Who Need Help связывает людей, которым срочно нужно забрать лекарства или "
|
||||
"получить безопасную помощь в дороге, с находящимися рядом волонтёрами, "
|
||||
"готовыми помочь бесплатно."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/safety.html.heex:8
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Who Need Help coordinates voluntary help between adults. It cannot verify every person, request, item, route, or outcome and cannot guarantee safety."
|
||||
|
|
@ -2716,7 +2683,7 @@ msgstr "Уникальные люди"
|
|||
msgid "unverified"
|
||||
msgstr "не подтверждено"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:41
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:69
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "urgent"
|
||||
msgstr "срочно"
|
||||
|
|
@ -3828,3 +3795,321 @@ msgstr "Условия"
|
|||
#, elixir-autogen, elixir-format
|
||||
msgid "and"
|
||||
msgstr "и"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:214
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "A clear handover"
|
||||
msgstr "Понятная передача помощи"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:127
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "A flat tyre or another small roadside problem in a safe place."
|
||||
msgstr "Проколотая шина или другая небольшая проблема в дороге в безопасном месте."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:134
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "A puncture, broken chain, tyre problem, or similar practical help."
|
||||
msgstr "Прокол, сломанная цепь, проблема с шиной или похожая практическая помощь."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:191
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Accept and open private coordination"
|
||||
msgstr "Принять заявку и перейти к приватной координации"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:5
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:12
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:19
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Approximate area · demo data"
|
||||
msgstr "Примерный район · демонстрационные данные"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:42
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Ask a nearby volunteer to collect medicine that is already purchased or help with a safe roadside problem. There is no mandatory fee."
|
||||
msgstr "Попросите волонтёра поблизости забрать уже купленное лекарство или помочь с безопасной проблемой в дороге. Обязательной оплаты нет."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:328
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Before you create a request"
|
||||
msgstr "Перед созданием заявки"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:18
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Bicycle chain help · example"
|
||||
msgstr "Помощь с велосипедной цепью · пример"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:132
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Bicycle or motorcycle"
|
||||
msgstr "Велосипед или мотоцикл"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:240
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Both confirm, the helper enters a one-time code, and reviews stay blind until both submit."
|
||||
msgstr "Оба участника подтверждают передачу, помощник вводит одноразовый код, а отзывы остаются скрытыми, пока их не отправят оба."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:118
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Bring fuel"
|
||||
msgstr "Привезти топливо"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:252
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Built for safer coordination"
|
||||
msgstr "Создано для более безопасной координации"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:344
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Can a volunteer buy medicine for me?"
|
||||
msgstr "Может ли волонтёр купить мне лекарство?"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:102
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Choose a moderated category. Each one asks only for the details needed for that kind of help."
|
||||
msgstr "Выберите модерируемую категорию. Каждая запрашивает только сведения, необходимые для этого вида помощи."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:111
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Collect medicine"
|
||||
msgstr "Забрать лекарство"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:367
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Contact the emergency service for your location. Who Need Help is for voluntary practical coordination, not emergencies."
|
||||
msgstr "Обратитесь в экстренную службу по месту нахождения. Who Need Help предназначен для добровольной практической координации, а не для экстренных ситуаций."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:380
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Create one account, choose your role for each situation, and keep control of what you share."
|
||||
msgstr "Создайте один аккаунт, выбирайте свою роль в каждой ситуации и контролируйте, чем делитесь."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:202
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Current coordinates are optional and deleted when sharing stops."
|
||||
msgstr "Текущие координаты передаются по желанию и удаляются после остановки."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:153
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Demo map with synthetic approximate help requests"
|
||||
msgstr "Демонстрационная карта с синтетическими примерными заявками о помощи"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:182
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Discover an approximate area"
|
||||
msgstr "Увидеть примерный район"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:334
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Do I have to pay a helper?"
|
||||
msgstr "Нужно ли платить помощнику?"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:160
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Example data — not live requests"
|
||||
msgstr "Демонстрационные данные — не реальные заявки"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:71
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Example request"
|
||||
msgstr "Пример заявки"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:316
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Explore activities"
|
||||
msgstr "Посмотреть активности"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:307
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Find company for coffee, cinema, a walk, or a hike"
|
||||
msgstr "Найдите компанию для кофе, кино, прогулки или похода"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:11
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Flat tyre help · example"
|
||||
msgstr "Помощь с проколотой шиной · пример"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:33
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Free, nearby, voluntary help"
|
||||
msgstr "Бесплатная добровольная помощь рядом"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:217
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "From request to verified completion"
|
||||
msgstr "От заявки до подтверждённого завершения"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:289
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Handover codes and unique completed matches matter more than raw totals."
|
||||
msgstr "Одноразовые коды передачи и уникальные завершённые взаимодействия важнее простых итоговых чисел."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:264
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Help is voluntary. An external thank-you link is optional after completion."
|
||||
msgstr "Помощь добровольная. Внешняя ссылка для благодарности необязательна и доступна после завершения."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:125
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Help with a wheel"
|
||||
msgstr "Помочь с колесом"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:51
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:389
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "I need help"
|
||||
msgstr "Мне нужна помощь"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:158
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Interactive demo"
|
||||
msgstr "Интерактивный пример"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:280
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Leave a match, block a person, or send a scoped report when something feels wrong."
|
||||
msgstr "Откажитесь от взаимодействия, заблокируйте человека или отправьте жалобу на конкретный объект, если что-то кажется небезопасным."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:4
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Medicine pickup · example"
|
||||
msgstr "Получение лекарства · пример"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:39
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Need help nearby? Ask the community."
|
||||
msgstr "Нужна помощь рядом? Обратитесь к сообществу."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:262
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "No mandatory payment"
|
||||
msgstr "Без обязательной оплаты"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:337
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "No. Help has no mandatory fee. A helper may optionally publish an external thank-you link after a completed handover."
|
||||
msgstr "Нет. Помощь не требует обязательной оплаты. После подтверждённой передачи помощник может по желанию указать внешнюю ссылку для благодарности."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:304
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Not only urgent help"
|
||||
msgstr "Не только срочная помощь"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:120
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Only after people and the vehicle are away from active traffic danger."
|
||||
msgstr "Только когда люди и транспорт находятся вне опасной зоны активного движения."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:193
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Only the matched requester and helper receive the private chat."
|
||||
msgstr "Приватный чат доступен только автору заявки и назначенному помощнику."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:167
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Privacy by default"
|
||||
msgstr "Приватность по умолчанию"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:271
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Private matched chat"
|
||||
msgstr "Приватный чат после совпадения"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:325
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Quick answers"
|
||||
msgstr "Короткие ответы"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:295
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Read the safety rules"
|
||||
msgstr "Прочитать правила безопасности"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:378
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Ready to ask or help nearby?"
|
||||
msgstr "Готовы попросить о помощи или помочь рядом?"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:278
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Reports and blocking"
|
||||
msgstr "Жалобы и блокировка"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:170
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "See nearby needs without exposing a home address"
|
||||
msgstr "Узнавайте о помощи поблизости, не раскрывая домашний адрес"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:200
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Share live location only by choice"
|
||||
msgstr "Делитесь геопозицией только по своему выбору"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:310
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Social activities are separate from urgent requests. Organizers approve participants, and exact meeting details stay inside the approved group."
|
||||
msgstr "Социальные активности отделены от срочных заявок. Организаторы одобряют участников, а точные сведения о встрече остаются внутри одобренной группы."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:96
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Start with urgent practical help"
|
||||
msgstr "Начните со срочной практической помощи"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:150
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "The demo map is unavailable. The example steps remain available beside it."
|
||||
msgstr "Демонстрационная карта недоступна. Шаги примера остаются доступными рядом."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:113
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "The medicine is already legally purchased or reserved for pickup."
|
||||
msgstr "Лекарство уже законно куплено или зарезервировано для получения."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:347
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "The medicine must already be legally purchased or reserved. The service does not prescribe, recommend, sell, or handle controlled substances."
|
||||
msgstr "Лекарство должно быть заранее законно куплено или зарезервировано. Сервис не назначает, не рекомендует, не продаёт и не доставляет контролируемые вещества."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:184
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "The public marker does not need to reveal an exact address."
|
||||
msgstr "Публичная отметка не обязана раскрывать точный адрес."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:273
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "There is no unsolicited inbox between strangers."
|
||||
msgstr "Между незнакомыми людьми нет возможности писать без совпадения."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:173
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "These three points are synthetic examples. Real public discovery follows each requester's location visibility choice."
|
||||
msgstr "Эти три точки — синтетические примеры. Отображение реальных заявок зависит от выбранной автором заявки видимости геопозиции."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:287
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Verified reputation signals"
|
||||
msgstr "Подтверждённые сигналы репутации"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:99
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "What can you ask the community for?"
|
||||
msgstr "О чём можно попросить сообщество?"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:364
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "What if there is immediate danger?"
|
||||
msgstr "Что делать при непосредственной опасности?"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:354
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Who can see my exact address?"
|
||||
msgstr "Кто увидит мой точный адрес?"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:357
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "You choose the visibility. Exact active coordinates can be limited to the matched helper and are removed when sharing stops."
|
||||
msgstr "Вы сами выбираете видимость. Точные текущие координаты можно показывать только назначенному помощнику; после остановки передачи они удаляются."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:255
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "You stay in control of the match"
|
||||
msgstr "Вы контролируете взаимодействие"
|
||||
|
|
|
|||
|
|
@ -24,7 +24,6 @@ msgstr "Дії"
|
|||
|
||||
#: lib/who_need_help_web/components/layouts.ex:70
|
||||
#: lib/who_need_help_web/components/layouts.ex:119
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:21
|
||||
#: lib/who_need_help_web/live/request_live/new.ex:23
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Ask for help"
|
||||
|
|
@ -41,21 +40,6 @@ msgstr "Спроба повторного з’єднання"
|
|||
msgid "Categories"
|
||||
msgstr "Категорії"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Fast, local, voluntary help"
|
||||
msgstr "Швидка, місцева, добровільна допомога"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:8
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Help can be closer than you think."
|
||||
msgstr "Допомога може бути ближче, ніж здається."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:25
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Join the community"
|
||||
msgstr "Приєднуйтеся до спільноти"
|
||||
|
||||
#: lib/who_need_help_web/components/layouts.ex:78
|
||||
#: lib/who_need_help_web/components/layouts.ex:128
|
||||
#: lib/who_need_help_web/controllers/user_registration_html/new.html.heex:9
|
||||
|
|
@ -88,11 +72,6 @@ msgstr "Зареєструватися"
|
|||
msgid "Requests"
|
||||
msgstr "Запити"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:17
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "See nearby requests"
|
||||
msgstr "Переглянути заявки поруч"
|
||||
|
||||
#: lib/who_need_help_web/components/layouts.ex:315
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Something went wrong!"
|
||||
|
|
@ -305,7 +284,7 @@ msgstr "Чат схваленої групи"
|
|||
msgid "Approved participants"
|
||||
msgstr "Схвалені учасники"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:51
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:80
|
||||
#: lib/who_need_help_web/live/activity_live/new.ex:263
|
||||
#: lib/who_need_help_web/live/request_live/new.ex:311
|
||||
#, elixir-autogen, elixir-format
|
||||
|
|
@ -373,13 +352,6 @@ msgstr "Заблокувати користувача"
|
|||
msgid "Blocked users"
|
||||
msgstr "Заблоковані користувачі"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:81
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Both confirm and the helper enters a one-time code."
|
||||
msgstr ""
|
||||
"Обидва учасники підтверджують завершення, а помічник вводить одноразовий "
|
||||
"код."
|
||||
|
||||
#: lib/who_need_help_web/live/request_live/new.ex:123
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Briefly describe the help you need"
|
||||
|
|
@ -464,7 +436,7 @@ msgstr "Змінити роль"
|
|||
msgid "Changing..."
|
||||
msgstr "Зміна…"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:67
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:226
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Choose a category, urgency, and safe location visibility."
|
||||
msgstr ""
|
||||
|
|
@ -740,7 +712,7 @@ msgstr "Назва англійською"
|
|||
msgid "Enter handover code"
|
||||
msgstr "Введіть код передачі"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:53
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:82
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Exact address after matching"
|
||||
msgstr "Точна адреса після призначення помічника"
|
||||
|
|
@ -932,7 +904,9 @@ msgstr "Сховати запит"
|
|||
msgid "Human decisions retained"
|
||||
msgstr "Рішення залишаються за людиною"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:56
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:54
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:86
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:395
|
||||
#: lib/who_need_help_web/live/request_live/show.ex:875
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "I can help"
|
||||
|
|
@ -1127,7 +1101,7 @@ msgstr ""
|
|||
msgid "Mark completed"
|
||||
msgstr "Позначити завершеною"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:72
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:231
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Match and coordinate"
|
||||
msgstr "Знайдіть помічника й узгодьте деталі"
|
||||
|
|
@ -1144,12 +1118,12 @@ msgstr "Помічника знайдено"
|
|||
msgid "Medicine is ready at the pharmacy"
|
||||
msgstr "Ліки готові до отримання в аптеці"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:43
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:72
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Medicine order is ready at the pharmacy"
|
||||
msgstr "Замовлення ліків готове до отримання в аптеці"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:40
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:68
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Medicine pickup"
|
||||
msgstr "Доставка ліків"
|
||||
|
|
@ -1309,7 +1283,7 @@ msgstr "Не додано соціальних посилань."
|
|||
msgid "None revealed yet."
|
||||
msgstr "Ще нічого не відкрито."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:30
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:58
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Not an emergency or medical service. In immediate danger, contact local emergency services."
|
||||
msgstr ""
|
||||
|
|
@ -1493,7 +1467,7 @@ msgstr "Будь ласка, перевірте надіслане повідо
|
|||
msgid "Podil, near the central pharmacy"
|
||||
msgstr "Поділь, поблизу центральної аптеки."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:65
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:224
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Post a clear request"
|
||||
msgstr "Опублікуйте зрозумілу заявку"
|
||||
|
|
@ -1916,7 +1890,7 @@ msgstr "Зареєструватися"
|
|||
msgid "Signal updated."
|
||||
msgstr "Сигнал оновлено."
|
||||
|
||||
#: lib/who_need_help_web/components/layouts/root.html.heex:27
|
||||
#: lib/who_need_help_web/components/layouts/root.html.heex:34
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Skip to main content"
|
||||
msgstr "Перейти до головного вмісту"
|
||||
|
|
@ -2081,7 +2055,7 @@ msgstr "Посилання недійсне або прострочене."
|
|||
msgid "The organizer has not approved your request yet."
|
||||
msgstr "Організатор ще не схвалив ваш запит."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:45
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:74
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "The pharmacy closes soon and I cannot leave home. The item is already paid for."
|
||||
msgstr ""
|
||||
|
|
@ -2298,7 +2272,7 @@ msgstr "Увімкнути світлу тему"
|
|||
msgid "Use my current foreground location"
|
||||
msgstr "Використати мою поточну геопозицію"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:74
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:233
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Use private chat and optional live location sharing."
|
||||
msgstr ""
|
||||
|
|
@ -2358,7 +2332,7 @@ msgstr "Підтвердити через GitHub"
|
|||
msgid "Verify handover"
|
||||
msgstr "Підтвердити передачу"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:79
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:238
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Verify the handover"
|
||||
msgstr "Підтвердьте передачу"
|
||||
|
|
@ -2406,14 +2380,6 @@ msgstr "Яка категорія допомоги відсутня?"
|
|||
msgid "What help do you need?"
|
||||
msgstr "Яка допомога вам потрібна?"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:11
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Who Need Help connects people who urgently need medicine pickup or safe roadside assistance with nearby volunteers who can help for free."
|
||||
msgstr ""
|
||||
"Who Need Help з’єднує людей, яким терміново потрібно забрати ліки або "
|
||||
"отримати безпечну допомогу в дорозі, з волонтерами поруч, готовими допомогти"
|
||||
" безкоштовно."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/safety.html.heex:8
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Who Need Help coordinates voluntary help between adults. It cannot verify every person, request, item, route, or outcome and cannot guarantee safety."
|
||||
|
|
@ -2706,7 +2672,7 @@ msgstr "унікальні люди"
|
|||
msgid "unverified"
|
||||
msgstr "не підтверджено"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:41
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:69
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "urgent"
|
||||
msgstr "терміново"
|
||||
|
|
@ -3818,3 +3784,321 @@ msgstr "Умови"
|
|||
#, elixir-autogen, elixir-format
|
||||
msgid "and"
|
||||
msgstr "та"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:214
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "A clear handover"
|
||||
msgstr "Зрозуміла передача допомоги"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:127
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "A flat tyre or another small roadside problem in a safe place."
|
||||
msgstr "Проколота шина або інша невелика дорожня проблема в безпечному місці."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:134
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "A puncture, broken chain, tyre problem, or similar practical help."
|
||||
msgstr "Прокол, зламаний ланцюг, проблема з шиною чи подібна практична допомога."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:191
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Accept and open private coordination"
|
||||
msgstr "Прийняти заявку й перейти до приватної координації"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:5
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:12
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:19
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Approximate area · demo data"
|
||||
msgstr "Орієнтовний район · демонстраційні дані"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:42
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Ask a nearby volunteer to collect medicine that is already purchased or help with a safe roadside problem. There is no mandatory fee."
|
||||
msgstr "Попросіть волонтера поблизу забрати вже придбані ліки або допомогти з безпечною дорожньою проблемою. Обов’язкової оплати немає."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:328
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Before you create a request"
|
||||
msgstr "Перед створенням заявки"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:18
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Bicycle chain help · example"
|
||||
msgstr "Допомога з велосипедним ланцюгом · приклад"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:132
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Bicycle or motorcycle"
|
||||
msgstr "Велосипед або мотоцикл"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:240
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Both confirm, the helper enters a one-time code, and reviews stay blind until both submit."
|
||||
msgstr "Обидва учасники підтверджують передачу, помічник вводить одноразовий код, а відгуки залишаються прихованими, доки їх не надішлють обоє."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:118
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Bring fuel"
|
||||
msgstr "Привезти пальне"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:252
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Built for safer coordination"
|
||||
msgstr "Створено для безпечнішої координації"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:344
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Can a volunteer buy medicine for me?"
|
||||
msgstr "Чи може волонтер купити мені ліки?"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:102
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Choose a moderated category. Each one asks only for the details needed for that kind of help."
|
||||
msgstr "Оберіть модеровану категорію. Кожна запитує лише відомості, потрібні для цього виду допомоги."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:111
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Collect medicine"
|
||||
msgstr "Забрати ліки"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:367
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Contact the emergency service for your location. Who Need Help is for voluntary practical coordination, not emergencies."
|
||||
msgstr "Зверніться до екстреної служби за місцем перебування. Who Need Help призначений для добровільної практичної координації, а не для надзвичайних ситуацій."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:380
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Create one account, choose your role for each situation, and keep control of what you share."
|
||||
msgstr "Створіть один обліковий запис, обирайте свою роль у кожній ситуації та контролюйте, чим ділитеся."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:202
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Current coordinates are optional and deleted when sharing stops."
|
||||
msgstr "Поточні координати передаються за бажанням і видаляються після зупинення."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:153
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Demo map with synthetic approximate help requests"
|
||||
msgstr "Демонстраційна карта із синтетичними орієнтовними заявками про допомогу"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:182
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Discover an approximate area"
|
||||
msgstr "Побачити орієнтовний район"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:334
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Do I have to pay a helper?"
|
||||
msgstr "Чи потрібно платити помічнику?"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:160
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Example data — not live requests"
|
||||
msgstr "Демонстраційні дані — не реальні заявки"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:71
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Example request"
|
||||
msgstr "Приклад заявки"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:316
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Explore activities"
|
||||
msgstr "Переглянути активності"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:307
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Find company for coffee, cinema, a walk, or a hike"
|
||||
msgstr "Знайдіть компанію для кави, кіно, прогулянки чи походу"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:11
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Flat tyre help · example"
|
||||
msgstr "Допомога з проколотою шиною · приклад"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:33
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Free, nearby, voluntary help"
|
||||
msgstr "Безкоштовна добровільна допомога поруч"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:217
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "From request to verified completion"
|
||||
msgstr "Від заявки до підтвердженого завершення"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:289
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Handover codes and unique completed matches matter more than raw totals."
|
||||
msgstr "Одноразові коди передачі й унікальні завершені взаємодії важливіші за прості підсумкові числа."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:264
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Help is voluntary. An external thank-you link is optional after completion."
|
||||
msgstr "Допомога добровільна. Зовнішнє посилання для подяки необов’язкове й доступне після завершення."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:125
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Help with a wheel"
|
||||
msgstr "Допомогти з колесом"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:51
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:389
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "I need help"
|
||||
msgstr "Мені потрібна допомога"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:158
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Interactive demo"
|
||||
msgstr "Інтерактивний приклад"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:280
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Leave a match, block a person, or send a scoped report when something feels wrong."
|
||||
msgstr "Відмовтеся від взаємодії, заблокуйте людину або надішліть скаргу на конкретний об’єкт, якщо щось здається небезпечним."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:4
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Medicine pickup · example"
|
||||
msgstr "Отримання ліків · приклад"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:39
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Need help nearby? Ask the community."
|
||||
msgstr "Потрібна допомога поруч? Зверніться до спільноти."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:262
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "No mandatory payment"
|
||||
msgstr "Без обов’язкової оплати"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:337
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "No. Help has no mandatory fee. A helper may optionally publish an external thank-you link after a completed handover."
|
||||
msgstr "Ні. Допомога не потребує обов’язкової оплати. Після підтвердженої передачі помічник може за бажанням указати зовнішнє посилання для подяки."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:304
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Not only urgent help"
|
||||
msgstr "Не лише термінова допомога"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:120
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Only after people and the vehicle are away from active traffic danger."
|
||||
msgstr "Лише коли люди й транспорт перебувають поза небезпечною зоною активного руху."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:193
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Only the matched requester and helper receive the private chat."
|
||||
msgstr "Приватний чат доступний лише автору заявки й призначеному помічнику."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:167
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Privacy by default"
|
||||
msgstr "Приватність за замовчуванням"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:271
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Private matched chat"
|
||||
msgstr "Приватний чат після збігу"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:325
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Quick answers"
|
||||
msgstr "Короткі відповіді"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:295
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Read the safety rules"
|
||||
msgstr "Прочитати правила безпеки"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:378
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Ready to ask or help nearby?"
|
||||
msgstr "Готові попросити про допомогу або допомогти поруч?"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:278
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Reports and blocking"
|
||||
msgstr "Скарги й блокування"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:170
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "See nearby needs without exposing a home address"
|
||||
msgstr "Дізнавайтеся про потреби поблизу, не розкриваючи домашню адресу"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:200
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Share live location only by choice"
|
||||
msgstr "Діліться геопозицією лише за власним вибором"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:310
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Social activities are separate from urgent requests. Organizers approve participants, and exact meeting details stay inside the approved group."
|
||||
msgstr "Соціальні активності відокремлені від термінових заявок. Організатори схвалюють учасників, а точні відомості про зустріч залишаються всередині схваленої групи."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:96
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Start with urgent practical help"
|
||||
msgstr "Почніть із термінової практичної допомоги"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:150
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "The demo map is unavailable. The example steps remain available beside it."
|
||||
msgstr "Демонстраційна карта недоступна. Кроки прикладу залишаються доступними поруч."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:113
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "The medicine is already legally purchased or reserved for pickup."
|
||||
msgstr "Ліки вже законно придбані або зарезервовані для отримання."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:347
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "The medicine must already be legally purchased or reserved. The service does not prescribe, recommend, sell, or handle controlled substances."
|
||||
msgstr "Ліки мають бути заздалегідь законно придбані або зарезервовані. Сервіс не призначає, не рекомендує, не продає й не обробляє контрольовані речовини."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:184
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "The public marker does not need to reveal an exact address."
|
||||
msgstr "Публічна позначка не повинна розкривати точну адресу."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:273
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "There is no unsolicited inbox between strangers."
|
||||
msgstr "Між незнайомими людьми немає можливості писати без збігу."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:173
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "These three points are synthetic examples. Real public discovery follows each requester's location visibility choice."
|
||||
msgstr "Ці три точки — синтетичні приклади. Відображення реальних заявок залежить від обраної автором заявки видимості геопозиції."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:287
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Verified reputation signals"
|
||||
msgstr "Підтверджені сигнали репутації"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:99
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "What can you ask the community for?"
|
||||
msgstr "Про що можна попросити спільноту?"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:364
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "What if there is immediate danger?"
|
||||
msgstr "Що робити за безпосередньої небезпеки?"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:354
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Who can see my exact address?"
|
||||
msgstr "Хто побачить мою точну адресу?"
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:357
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "You choose the visibility. Exact active coordinates can be limited to the matched helper and are removed when sharing stops."
|
||||
msgstr "Ви самі обираєте видимість. Точні поточні координати можна показувати лише призначеному помічнику; після зупинення передавання вони видаляються."
|
||||
|
||||
#: lib/who_need_help_web/controllers/page_html/home.html.heex:255
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "You stay in control of the match"
|
||||
msgstr "Ви контролюєте взаємодію"
|
||||
|
|
|
|||
|
|
@ -7,7 +7,15 @@ defmodule WhoNeedHelpWeb.PageControllerTest do
|
|||
document = LazyHTML.from_document(html)
|
||||
[content_security_policy] = get_resp_header(conn, "content-security-policy")
|
||||
|
||||
assert html =~ "Help can be closer than you think."
|
||||
assert html =~ "Need help nearby? Ask the community."
|
||||
assert html =~ "I need help"
|
||||
assert html =~ "I can help"
|
||||
assert html =~ "What can you ask the community for?"
|
||||
assert html =~ "Example data — not live requests"
|
||||
assert html =~ "See nearby needs without exposing a home address"
|
||||
assert html =~ "You stay in control of the match"
|
||||
assert html =~ "Find company for coffee, cinema, a walk, or a hike"
|
||||
assert html =~ "Before you create a request"
|
||||
assert content_security_policy =~ "default-src 'self'"
|
||||
assert content_security_policy =~ "script-src 'self'"
|
||||
refute content_security_policy =~ "script-src 'self' 'unsafe-inline'"
|
||||
|
|
@ -39,6 +47,13 @@ defmodule WhoNeedHelpWeb.PageControllerTest do
|
|||
assert Enum.count(LazyHTML.query(document, "head link[rel='icon'][href='/images/logo.svg']")) ==
|
||||
1
|
||||
|
||||
assert Enum.count(
|
||||
LazyHTML.query(
|
||||
document,
|
||||
"#home-demo-map[role='region'][data-static-aid-map='true'][data-demo-map='true']"
|
||||
)
|
||||
) == 1
|
||||
|
||||
assert Enum.count(
|
||||
LazyHTML.query(document, "head link[rel='apple-touch-icon'][sizes='180x180']")
|
||||
) == 1
|
||||
|
|
@ -76,7 +91,10 @@ defmodule WhoNeedHelpWeb.PageControllerTest do
|
|||
|
||||
test "GET / selects Russian locale", %{conn: conn} do
|
||||
conn = get(conn, ~p"/?locale=ru")
|
||||
assert html_response(conn, 200) =~ "Помощь может быть ближе, чем кажется."
|
||||
html = html_response(conn, 200)
|
||||
|
||||
assert html =~ "Нужна помощь рядом? Обратитесь к сообществу."
|
||||
assert html =~ "Демонстрационные данные — не реальные заявки"
|
||||
end
|
||||
|
||||
test "health endpoints expose status without internal node names", %{conn: conn} do
|
||||
|
|
@ -97,7 +115,10 @@ defmodule WhoNeedHelpWeb.PageControllerTest do
|
|||
assert html_response(conn, 200) =~ "Правила безпеки"
|
||||
|
||||
conn = get(conn, ~p"/")
|
||||
assert html_response(conn, 200) =~ "Допомога може бути ближче, ніж здається."
|
||||
html = html_response(conn, 200)
|
||||
|
||||
assert html =~ "Потрібна допомога поруч? Зверніться до спільноти."
|
||||
assert html =~ "Демонстраційні дані — не реальні заявки"
|
||||
end
|
||||
|
||||
test "GET /safety", %{conn: conn} do
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user