diff --git a/assets/css/app.css b/assets/css/app.css index e5bca1d..8639619 100644 --- a/assets/css/app.css +++ b/assets/css/app.css @@ -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 { diff --git a/assets/js/app.js b/assets/js/app.js index 822b752..7095e06 100644 --- a/assets/js/app.js +++ b/assets/js/app.js @@ -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, diff --git a/assets/js/hooks.js b/assets/js/hooks.js index 4c01860..47befd8 100644 --- a/assets/js/hooks.js +++ b/assets/js/hooks.js @@ -15,90 +15,164 @@ const defaultStyle = { layers: [{id: "osm", type: "raster", source: "osm"}] } +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" + } + } + + state.markReady = () => { + state.element.dataset.mapReady = "true" + } + + 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 = state.element.dataset.mapUnavailableLabel + state.element.replaceChildren(fallback) + } + + state.renderMarkers = () => { + if (!state.map) return + + state.markers.forEach(marker => marker.remove()) + state.markers = [] + + const points = markerPoints(state.element) + points.forEach(point => { + const popupContent = document.createElement("div") + const title = document.createElement("strong") + title.textContent = point.title || "" + popupContent.append(title, document.createElement("br")) + popupContent.append(document.createTextNode(point.location || "")) + + const popup = new maplibregl.Popup({offset: 18}).setDOMContent(popupContent) + const marker = new maplibregl.Marker({color: point.exact ? "#d6573b" : "#278467"}) + .setLngLat([point.longitude, point.latitude]) + .setPopup(popup) + .addTo(state.map) + state.markers.push(marker) + }) + + if (points.length === 1) { + 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])) + 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.markers = [] - this.markLoading = () => { - if (this.el.dataset.mapReady !== "true") { - this.el.dataset.mapReady = "false" - } - } - this.markReady = () => { - this.el.dataset.mapReady = "true" - } - this.showUnavailable = () => { - this.map = null - this.el.dataset.mapUnavailable = "true" - this.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) - } - - if (!supportsMapCanvas()) { - this.showUnavailable() - return - } - - try { - this.map = new maplibregl.Map({ - container: this.el, - style: defaultStyle, - center: [30.5234, 50.4501], - zoom: 5 - }) - } catch (_error) { - this.showUnavailable() - return - } - - 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() + this.aidMap = createAidMap(this.el) + this.aidMap.mount() }, updated() { - this.renderMarkers() + this.aidMap.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 || "[]") - points.forEach(point => { - const popupContent = document.createElement("div") - const title = document.createElement("strong") - title.textContent = point.title || "" - popupContent.append(title, document.createElement("br")) - popupContent.append(document.createTextNode(point.location || "")) - - const popup = new maplibregl.Popup({offset: 18}).setDOMContent(popupContent) - const marker = new maplibregl.Marker({color: point.exact ? "#d6573b" : "#278467"}) - .setLngLat([point.longitude, point.latitude]) - .setPopup(popup) - .addTo(this.map) - this.markers.push(marker) - }) - - if (points.length === 1) { - this.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}) - } + this.aidMap.destroy() } }, diff --git a/lib/who_need_help_web/controllers/page_controller.ex b/lib/who_need_help_web/controllers/page_controller.ex index bb7ab06..14028c2 100644 --- a/lib/who_need_help_web/controllers/page_controller.ex +++ b/lib/who_need_help_web/controllers/page_controller.ex @@ -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 diff --git a/lib/who_need_help_web/controllers/page_html/home.html.heex b/lib/who_need_help_web/controllers/page_html/home.html.heex index 4a274aa..f296356 100644 --- a/lib/who_need_help_web/controllers/page_html/home.html.heex +++ b/lib/who_need_help_web/controllers/page_html/home.html.heex @@ -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 + } + ]) %> + -
+
- {gettext("Fast, local, voluntary help")} + {gettext("Free, nearby, voluntary help")}
-

- {gettext("Help can be closer than you think.")} +

+ {gettext("Need help nearby? Ask the community.")}

{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." )}

- <.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 navigate={~p"/requests"} class="btn btn-outline btn-lg"> + {gettext("I can help")} - <%= if @current_scope do %> - <.link navigate={~p"/requests/new"} class="btn btn-outline btn-lg"> - {gettext("Ask for help")} - - <% else %> - <.link navigate={~p"/users/register"} class="btn btn-outline btn-lg"> - {gettext("Join the community")} - - <% end %>

{gettext( @@ -35,51 +63,338 @@

-
-
+
+
{gettext("Medicine pickup")} {gettext("urgent")}
+
{gettext("Example request")}

{gettext("Medicine order is ready at the pharmacy")}

{gettext( "The pharmacy closes soon and I cannot leave home. The item is already paid for." )}

-
+
{gettext("Approximate area")}
{gettext("Exact address after matching")}
- + <.link navigate={~p"/requests"} class="btn btn-success btn-sm shrink-0"> + {gettext("I can help")} +
+
+
+
+ +
+
+
+ {gettext("Start with urgent practical help")} +
+

+ {gettext("What can you ask the community for?")} +

+

+ {gettext( + "Choose a moderated category. Each one asks only for the details needed for that kind of help." + )} +

+
+ +
+
+ <.icon name="hero-shopping-bag" class="size-7 text-success" /> +

{gettext("Collect medicine")}

+

+ {gettext("The medicine is already legally purchased or reserved for pickup.")} +

+
+
+ <.icon name="hero-truck" class="size-7 text-success" /> +

{gettext("Bring fuel")}

+

+ {gettext("Only after people and the vehicle are away from active traffic danger.")} +

+
+
+ <.icon name="hero-wrench-screwdriver" class="size-7 text-success" /> +

{gettext("Help with a wheel")}

+

+ {gettext("A flat tyre or another small roadside problem in a safe place.")} +

+
+
+ <.icon name="hero-cog-6-tooth" class="size-7 text-success" /> +

{gettext("Bicycle or motorcycle")}

+

+ {gettext("A puncture, broken chain, tyre problem, or similar practical help.")} +

+
+
+
+ +
+
+
+
+
+
+ {gettext("Interactive demo")} + + {gettext("Example data — not live requests")} + +
+
+ +
+
+ {gettext("Privacy by default")} +
+

+ {gettext("See nearby needs without exposing a home address")} +

+

+ {gettext( + "These three points are synthetic examples. Real public discovery follows each requester's location visibility choice." + )} +

+ +
    +
  1. + 1 +
    +

    {gettext("Discover an approximate area")}

    +

    + {gettext("The public marker does not need to reveal an exact address.")} +

    +
    +
  2. +
  3. + 2 +
    +

    {gettext("Accept and open private coordination")}

    +

    + {gettext("Only the matched requester and helper receive the private chat.")} +

    +
    +
  4. +
  5. + 3 +
    +

    {gettext("Share live location only by choice")}

    +

    + {gettext("Current coordinates are optional and deleted when sharing stops.")} +

    +
    +
  6. +
-
-
-
1
-

{gettext("Post a clear request")}

-

- {gettext("Choose a category, urgency, and safe location visibility.")} -

+
+
+
+ {gettext("A clear handover")} +
+

+ {gettext("From request to verified completion")} +

-
-
2
-

{gettext("Match and coordinate")}

-

- {gettext("Use private chat and optional live location sharing.")} -

+ +
+
+
1
+

{gettext("Post a clear request")}

+

+ {gettext("Choose a category, urgency, and safe location visibility.")} +

+
+
+
2
+

{gettext("Match and coordinate")}

+

+ {gettext("Use private chat and optional live location sharing.")} +

+
+
+
3
+

{gettext("Verify the handover")}

+

+ {gettext( + "Both confirm, the helper enters a one-time code, and reviews stay blind until both submit." + )} +

+
-
-
3
-

{gettext("Verify the handover")}

-

- {gettext("Both confirm and the helper enters a one-time code.")} +

+ +
+
+
+
+ {gettext("Built for safer coordination")} +
+

+ {gettext("You stay in control of the match")} +

+
+ +
+
+ <.icon name="hero-gift" class="size-7 text-success" /> +

{gettext("No mandatory payment")}

+

+ {gettext( + "Help is voluntary. An external thank-you link is optional after completion." + )} +

+
+
+ <.icon name="hero-lock-closed" class="size-7 text-success" /> +

{gettext("Private matched chat")}

+

+ {gettext("There is no unsolicited inbox between strangers.")} +

+
+
+ <.icon name="hero-shield-check" class="size-7 text-success" /> +

{gettext("Reports and blocking")}

+

+ {gettext( + "Leave a match, block a person, or send a scoped report when something feels wrong." + )} +

+
+
+ <.icon name="hero-star" class="size-7 text-success" /> +

{gettext("Verified reputation signals")}

+

+ {gettext("Handover codes and unique completed matches matter more than raw totals.")} +

+
+
+ + <.link navigate={~p"/safety"} class="btn btn-outline mt-8"> + {gettext("Read the safety rules")} + +
+
+ +
+
+
+
+ {gettext("Not only urgent help")} +
+

+ {gettext("Find company for coffee, cinema, a walk, or a hike")} +

+

+ {gettext( + "Social activities are separate from urgent requests. Organizers approve participants, and exact meeting details stay inside the approved group." + )} +

+
+ <.link navigate={~p"/activities"} class="btn btn-success btn-lg"> + {gettext("Explore activities")} + +
+
+ +
+
+
+
+ {gettext("Quick answers")} +
+

+ {gettext("Before you create a request")} +

+
+
+
+ + {gettext("Do I have to pay a helper?")} + +

+ {gettext( + "No. Help has no mandatory fee. A helper may optionally publish an external thank-you link after a completed handover." + )} +

+
+
+ + {gettext("Can a volunteer buy medicine for me?")} + +

+ {gettext( + "The medicine must already be legally purchased or reserved. The service does not prescribe, recommend, sell, or handle controlled substances." + )} +

+
+
+ + {gettext("Who can see my exact address?")} + +

+ {gettext( + "You choose the visibility. Exact active coordinates can be limited to the matched helper and are removed when sharing stops." + )} +

+
+
+ + {gettext("What if there is immediate danger?")} + +

+ {gettext( + "Contact the emergency service for your location. Who Need Help is for voluntary practical coordination, not emergencies." + )} +

+
+
+
+
+ +
+
+

{gettext("Ready to ask or help nearby?")}

+

+ {gettext( + "Create one account, choose your role for each situation, and keep control of what you share." + )}

+
+ <.link + navigate={if @current_scope, do: ~p"/requests/new", else: ~p"/users/register"} + class="btn btn-primary btn-lg" + > + {gettext("I need help")} + + <.link + navigate={~p"/requests"} + class="btn btn-outline btn-lg border-neutral-content/45 text-neutral-content" + > + {gettext("I can help")} + +
diff --git a/priv/gettext/default.pot b/priv/gettext/default.pot index 2db69f4..fb45bd9 100644 --- a/priv/gettext/default.pot +++ b/priv/gettext/default.pot @@ -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 "" diff --git a/priv/gettext/en/LC_MESSAGES/default.po b/priv/gettext/en/LC_MESSAGES/default.po index 5d995a2..e59b2e5 100644 --- a/priv/gettext/en/LC_MESSAGES/default.po +++ b/priv/gettext/en/LC_MESSAGES/default.po @@ -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 "" diff --git a/priv/gettext/ru/LC_MESSAGES/default.po b/priv/gettext/ru/LC_MESSAGES/default.po index 2e2f88e..c88eda6 100644 --- a/priv/gettext/ru/LC_MESSAGES/default.po +++ b/priv/gettext/ru/LC_MESSAGES/default.po @@ -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 "Вы контролируете взаимодействие" diff --git a/priv/gettext/uk/LC_MESSAGES/default.po b/priv/gettext/uk/LC_MESSAGES/default.po index 7ad402e..ff628be 100644 --- a/priv/gettext/uk/LC_MESSAGES/default.po +++ b/priv/gettext/uk/LC_MESSAGES/default.po @@ -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 "Ви контролюєте взаємодію" diff --git a/test/who_need_help_web/controllers/page_controller_test.exs b/test/who_need_help_web/controllers/page_controller_test.exs index 8d10cf8..80193d5 100644 --- a/test/who_need_help_web/controllers/page_controller_test.exs +++ b/test/who_need_help_web/controllers/page_controller_test.exs @@ -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