From 3dfdf7a360b11c4ba6b498de076bc9316c115b3d Mon Sep 17 00:00:00 2001 From: SimpleTest Date: Wed, 22 Jul 2026 15:10:44 +0300 Subject: [PATCH] Make request area map draggable --- assets/css/app.css | 49 ++++++++ assets/js/hooks.js | 84 +++++++++++--- design-qa.md | 65 +++++++---- e2e/tests/request-location-picker.spec.ts | 30 ++++- .../live/request_live/new.ex | 17 ++- priv/gettext/default.pot | 108 +++++++++++------- priv/gettext/en/LC_MESSAGES/default.po | 108 +++++++++++------- priv/gettext/ru/LC_MESSAGES/default.po | 108 +++++++++++------- priv/gettext/uk/LC_MESSAGES/default.po | 108 +++++++++++------- 9 files changed, 459 insertions(+), 218 deletions(-) diff --git a/assets/css/app.css b/assets/css/app.css index ed86d84..0c10035 100644 --- a/assets/css/app.css +++ b/assets/css/app.css @@ -392,6 +392,30 @@ html { min-width: 0; } +.request-location-map-hint { + position: absolute; + z-index: 2; + top: 0.75rem; + right: 0.75rem; + display: flex; + max-width: min(20rem, calc(100% - 5.25rem)); + align-items: center; + gap: 0.4rem; + padding: 0.5rem 0.65rem; + border: 1px solid color-mix(in oklab, var(--color-base-content) 12%, transparent); + border-radius: 999px; + background: color-mix(in oklab, var(--color-base-100) 92%, transparent); + box-shadow: 0 0.3rem 1rem rgb(23 37 31 / 0.12); + font-size: 0.7rem; + font-weight: 700; + line-height: 1.2; + pointer-events: none; +} + +.request-location-map-hint [data-exact-map-hint] { + display: none; +} + .request-location-map { min-height: 31rem; border-radius: 0.9rem; @@ -405,6 +429,11 @@ html { color: color-mix(in oklab, var(--color-base-content) 65%, transparent); } +.request-location-map-shell:has(.request-location-map[data-map-unavailable="true"]) + .request-location-map-hint { + display: none; +} + .request-location-hidden-state { display: none; min-height: 16rem; @@ -512,6 +541,18 @@ html { display: flex; } +.request-location-workspace[data-location-mode="exact_public"] + .request-location-map-hint + [data-approximate-map-hint] { + display: none; +} + +.request-location-workspace[data-location-mode="exact_public"] + .request-location-map-hint + [data-exact-map-hint] { + display: inline; +} + .request-location-workspace[data-location-mode="hidden"] .request-location-grid { grid-template-columns: 1fr; } @@ -559,4 +600,12 @@ html { .request-location-map { min-height: 22rem; } + + .request-location-map-hint { + top: 0.55rem; + right: 0.55rem; + max-width: calc(100% - 4.65rem); + padding: 0.4rem 0.55rem; + font-size: 0.65rem; + } } diff --git a/assets/js/hooks.js b/assets/js/hooks.js index 67a539a..a80d06e 100644 --- a/assets/js/hooks.js +++ b/assets/js/hooks.js @@ -571,7 +571,9 @@ export const Hooks = { mounted() { this.map = null this.marker = null + this.markerMode = null this.mapLoaded = false + this.mapUnavailable = false this.areaSourceId = `${this.el.id}-selection-area` this.areaFillId = `${this.el.id}-selection-fill` this.areaLineId = `${this.el.id}-selection-line` @@ -583,6 +585,13 @@ export const Hooks = { this.statusElement = this.el.querySelector(this.el.dataset.statusTarget) } + this.renderMapUnavailable = () => { + if (!this.mapElement) return + + this.mapElement.dataset.mapUnavailable = "true" + this.mapElement.textContent = this.mapElement.dataset.mapUnavailableLabel + } + this.mode = () => this.el.querySelector("[data-location-mode-input]:checked")?.value || this.el.dataset.locationMode || @@ -698,6 +707,59 @@ export const Hooks = { this.removeMarker = () => { this.marker?.remove() this.marker = null + this.markerMode = null + } + + this.ensureSelectionMarker = (coordinates, mode) => { + if (this.marker && this.markerMode !== mode) this.removeMarker() + + if (!this.marker) { + this.markerMode = mode + this.marker = new maplibregl.Marker({ + color: mode === "approximate_public" ? "#16725b" : "#d6573b", + draggable: true + }) + .setLngLat([coordinates.longitude, coordinates.latitude]) + .addTo(this.map) + + const markerElement = this.marker.getElement() + markerElement.setAttribute( + "aria-label", + mode === "approximate_public" + ? this.el.dataset.areaMarkerLabel + : this.el.dataset.pointMarkerLabel + ) + markerElement.setAttribute( + "title", + mode === "approximate_public" + ? this.el.dataset.areaMarkerLabel + : this.el.dataset.pointMarkerLabel + ) + + this.marker.on("drag", () => { + const point = this.marker.getLngLat() + + if (this.latitudeInput) this.latitudeInput.value = point.lat.toFixed(6) + if (this.longitudeInput) this.longitudeInput.value = point.lng.toFixed(6) + + if (this.markerMode === "approximate_public") { + this.setAreaData(areaFeatureCollection([{ + latitude: point.lat, + longitude: point.lng, + exact: false, + radius_meters: this.radius() + }])) + } + }) + + this.marker.on("dragend", () => { + const point = this.marker.getLngLat() + this.setCoordinates({latitude: point.lat, longitude: point.lng}) + this.setSelectionStatus() + }) + } else { + this.marker.setLngLat([coordinates.longitude, coordinates.latitude]) + } } this.renderSelection = () => { @@ -720,7 +782,7 @@ export const Hooks = { } if (mode === "approximate_public") { - this.removeMarker() + this.ensureSelectionMarker(coordinates, mode) this.setAreaData(areaFeatureCollection([{ ...coordinates, exact: false, @@ -730,20 +792,7 @@ export const Hooks = { } this.setAreaData(emptyFeatureCollection()) - - if (!this.marker) { - this.marker = new maplibregl.Marker({color: "#d6573b", draggable: true}) - .setLngLat([coordinates.longitude, coordinates.latitude]) - .addTo(this.map) - - this.marker.on("dragend", () => { - const point = this.marker.getLngLat() - this.setCoordinates({latitude: point.lat, longitude: point.lng}) - this.setStatus(this.el.dataset.pointSelectedLabel) - }) - } else { - this.marker.setLngLat([coordinates.longitude, coordinates.latitude]) - } + this.ensureSelectionMarker(coordinates, mode) } this.syncMode = () => { @@ -824,8 +873,8 @@ export const Hooks = { if (!this.mapElement || !supportsMapCanvas()) { if (this.mapElement) { - this.mapElement.dataset.mapUnavailable = "true" - this.mapElement.textContent = this.mapElement.dataset.mapUnavailableLabel + this.mapUnavailable = true + this.renderMapUnavailable() } this.syncMode() return @@ -871,6 +920,7 @@ export const Hooks = { }, updated() { this.cacheElements() + if (this.mapUnavailable) this.renderMapUnavailable() this.syncMode() }, destroyed() { diff --git a/design-qa.md b/design-qa.md index 225b2a8..863b3d1 100644 --- a/design-qa.md +++ b/design-qa.md @@ -1,35 +1,58 @@ # Request location picker — design QA -## Reference and implementation +## Evidence -- Target image: `/home/simple/.codex/generated_images/019f725d-87b5-79e1-8a9f-66e6eaffb35a/exec-d7ad900f-ed0f-4909-8a64-43bfc32dce7e.png` -- Desktop implementation: `/d/my_projects/who_need_help/output/playwright/location-picker-approximate-final.png` -- Mobile implementation: `/d/my_projects/who_need_help/output/playwright/location-picker-mobile-focused.png` -- Side-by-side comparison: `/d/my_projects/who_need_help/output/playwright/location-picker-comparison.png` -- Viewports checked: desktop `1673×1288`, mobile `390×844` +- Source visual truth: `/home/simple/.codex/generated_images/019f725d-87b5-79e1-8a9f-66e6eaffb35a/exec-d7ad900f-ed0f-4909-8a64-43bfc32dce7e.png` +- Browser-rendered implementation: `/d/my_projects/who_need_help/output/playwright/location-picker-real-map-focused.png` +- Full browser viewport: `/d/my_projects/who_need_help/output/playwright/location-picker-real-map-selected.png` +- Side-by-side comparison: `/d/my_projects/who_need_help/output/playwright/location-picker-real-map-comparison.png` +- Source pixels: `1672×941` at the supplied image density. +- Implementation component pixels and CSS size: `1024×888`, captured at `deviceScaleFactor: 1`. +- Full browser viewport: `1673×1288` CSS pixels at `deviceScaleFactor: 1`. +- Normalization: both focused images were scaled to `900 px` height only for the side-by-side comparison; the original captures remain available above. +- State: light theme, authenticated request form, approximate-area mode, `1 km` radius, selected Kyiv map position. -## Comparison +## Full-view comparison evidence -The implementation preserves the selected direction: a public landmark field, three clearly separated privacy modes, a large interactive map, radius choices for an approximate area, privacy guidance, and an optional manual-coordinate fallback. It adapts the reference into the existing Who Need Help visual system and request form rather than reproducing it as a disconnected screen. +The implementation keeps the reference hierarchy: public landmark field, three privacy choices, large map, radius controls, privacy guidance, post-match guidance, status, and manual-coordinate fallback. It uses the existing Who Need Help container width and type scale, so the component is narrower than the standalone concept while preserving the same information structure. -The local end-to-end environment intentionally uses a deterministic solid raster tile. Map controls, marker/circle geometry, dragging, clicking, geolocation handling, and responsive layout are still exercised; the application continues to obtain its real raster tile URL from runtime configuration. +The live implementation now renders real OpenStreetMap raster tiles, a bounded translucent area, and a green draggable MapLibre marker. The marker is intentionally visible only in the editing form. Public request maps render the area without disclosing a center marker. -## Findings +## Focused-region comparison evidence + +The focused component capture makes the important interaction details readable. Typography, spacing, semantic green, radii, borders, map attribution, control hierarchy, and instructional copy were compared directly. No additional crop was needed because the component screenshot contains the entire location workspace at native CSS density. + +## Required fidelity surfaces + +- Fonts and typography: existing application font stack and optical weights are consistent across the form; headings, control labels, help text, and map hint retain clear hierarchy without clipping. +- Spacing and layout rhythm: the three modes align as one segmented control; map and sidebar tracks remain balanced; cards, status, and fallback use the existing form rhythm. +- Colors and visual tokens: success green, neutral borders, translucent area fill, warning semantics, and contrast use the existing DaisyUI/application tokens. +- Image and asset quality: real OpenStreetMap tiles are sharp at the checked density; MapLibre and Heroicons supply map controls, marker, and UI icons. No placeholder map or handcrafted icon remains. +- Copy and content: the interface explicitly says how to move the area, what becomes public, and what can be shared privately after matching. + +## Comparison history + +1. P1 — the first visual E2E preview used a deterministic solid tile, which looked like a missing map. Fixed by running the visual review stack with the configured OpenStreetMap tile URL. Post-fix evidence: `location-picker-real-map-focused.png`. +2. P1 — the area could be moved by clicking, but that affordance was not discoverable and the circle itself had no drag handle. Fixed by adding a green draggable center marker, live circle movement, a map overlay hint, and a persistent status message. Post-fix evidence: `location-picker-real-map-focused.png` and the passing drag E2E scenario. +3. P2 — the map-unavailable fallback could retain the movement hint after a LiveView patch. Fixed by persisting the unavailable state in the hook and hiding the hint in fallback mode. Post-fix evidence: the Firefox fallback branch in the passing cross-browser E2E scenario. + +## Current findings - P0: none. - P1: none. - P2: none. -- P3: the mobile screenshot shows only the location section because the full request form is vertically scrollable; no horizontal overflow was observed. +- P3: the implementation adds more explicit safety/help copy than the concept; this is an intentional product constraint and does not obstruct the map task. -## Interaction checks +## Interaction and runtime checks -- Approximate mode stores and displays a bounded `500 m`, `1 km`, or `2 km` public area. -- Browser geolocation is privacy-snapped before it reaches the form in approximate mode. -- Exact mode displays a draggable marker and makes the public disclosure explicit. -- No-map mode clears coordinates and hides the map. -- A participant can later share live location privately after matching, independently of the public request location. -- The manual coordinate fallback remains open while both values are entered. +- Clicking the map creates or moves the area. +- Dragging the green marker moves the circle and updates the stored center. +- `500 m`, `1 km`, and `2 km` are the only selectable public radii. +- Exact mode uses a separate red draggable marker. +- No-map mode clears coordinates and hides map controls. +- Chromium and WebKit exercised the map and drag interaction; the containerized Firefox runner exercised the no-Canvas fallback. +- Server test suite: `302 passed`. +- Targeted browser E2E: `3 passed` across Chromium, Firefox, and WebKit. +- Visible Chrome console after the final interaction: `0 errors`, `0 warnings`. -## Result - -Passed. No P0–P2 design discrepancy remains in the checked desktop and mobile states. +final result: passed diff --git a/e2e/tests/request-location-picker.spec.ts b/e2e/tests/request-location-picker.spec.ts index a3e5546..93166d5 100644 --- a/e2e/tests/request-location-picker.spec.ts +++ b/e2e/tests/request-location-picker.spec.ts @@ -33,18 +33,44 @@ test("request location picker separates approximate, exact, and hidden disclosur await workspace.getByRole("button", { name: "Use my location" }).click(); await expect(workspace.locator("#request-location-status")).toHaveText( - "Approximate area selected. Your exact position is not stored.", + "Area selected. Drag the green pin or click the map to move it.", ); await expect(latitude).not.toHaveValue("50.450123"); await expect(longitude).not.toHaveValue("30.523456"); + const map = workspace.locator("#request-location-map"); + const approximateMarker = workspace.locator(".maplibregl-marker"); + + if ((await map.locator("canvas").count()) === 0) { + await expect(map).toContainText("The map is unavailable"); + await expect(approximateMarker).toHaveCount(0); + await expect(workspace.locator(".request-location-map-hint")).toBeHidden(); + } else { + const approximateLatitude = await latitude.inputValue(); + await expect(approximateMarker).toBeVisible(); + const markerBox = await approximateMarker.boundingBox(); + expect(markerBox).not.toBeNull(); + await user.page.mouse.move( + markerBox!.x + markerBox!.width / 2, + markerBox!.y + markerBox!.height / 2, + ); + await user.page.mouse.down(); + await user.page.mouse.move( + markerBox!.x + markerBox!.width / 2 + 48, + markerBox!.y + markerBox!.height / 2 + 24, + { steps: 5 }, + ); + await user.page.mouse.up(); + await expect(latitude).not.toHaveValue(approximateLatitude); + } + await workspace .locator('input[name="help_request[location_visibility]"][value="exact_public"]') .check(); await expect(workspace.getByText("This point is public")).toBeVisible(); await workspace.getByRole("button", { name: "Use my location" }).click(); await expect(workspace.locator("#request-location-status")).toHaveText( - "Exact public point selected.", + "Exact point selected. Drag the red pin or click the map to move it.", ); await expect(latitude).toHaveValue("50.450123"); await expect(longitude).toHaveValue("30.523456"); diff --git a/lib/who_need_help_web/live/request_live/new.ex b/lib/who_need_help_web/live/request_live/new.ex index bd3f0e8..b253d33 100644 --- a/lib/who_need_help_web/live/request_live/new.ex +++ b/lib/who_need_help_web/live/request_live/new.ex @@ -382,9 +382,13 @@ defmodule WhoNeedHelpWeb.RequestLive.New do data-status-target="#request-location-status" data-map-ready-label={gettext("Choose a place on the map or use your current location.")} data-area-selected-label={ - gettext("Approximate area selected. Your exact position is not stored.") + gettext("Area selected. Drag the green pin or click the map to move it.") } - data-point-selected-label={gettext("Exact public point selected.")} + data-point-selected-label={ + gettext("Exact point selected. Drag the red pin or click the map to move it.") + } + data-area-marker-label={gettext("Drag to move the approximate area")} + data-point-marker-label={gettext("Drag to move the exact point")} data-hidden-label={gettext("No map coordinates will be stored.")} data-location-unavailable-label={gettext("Location is unavailable in this browser.")} data-location-denied-label={gettext("Location permission was denied.")} @@ -460,6 +464,15 @@ defmodule WhoNeedHelpWeb.RequestLive.New do } class="aid-map request-location-map" /> +
+ <.icon name="hero-hand-raised" class="size-4 shrink-0" /> + + {gettext("Click the map or drag the green pin to move the area")} + + + {gettext("Click the map or drag the red pin to move the point")} + +
<.icon name="hero-eye-slash" class="size-8" />
diff --git a/priv/gettext/default.pot b/priv/gettext/default.pot index ffb00f0..cc300f3 100644 --- a/priv/gettext/default.pot +++ b/priv/gettext/default.pot @@ -275,7 +275,7 @@ msgstr "" #: lib/who_need_help_web/controllers/page_html/home.html.heex:80 #: lib/who_need_help_web/live/activity_live/new.ex:261 -#: lib/who_need_help_web/live/request_live/new.ex:418 +#: lib/who_need_help_web/live/request_live/new.ex:422 #, elixir-autogen, elixir-format msgid "Approximate area" msgstr "" @@ -915,7 +915,7 @@ msgid "Join requests close" msgstr "" #: lib/who_need_help_web/live/activity_live/new.ex:285 -#: lib/who_need_help_web/live/request_live/new.ex:552 +#: lib/who_need_help_web/live/request_live/new.ex:569 #, elixir-autogen, elixir-format msgid "Latitude" msgstr "" @@ -972,7 +972,7 @@ msgid "Logged out successfully." msgstr "" #: lib/who_need_help_web/live/activity_live/new.ex:292 -#: lib/who_need_help_web/live/request_live/new.ex:566 +#: lib/who_need_help_web/live/request_live/new.ex:583 #, elixir-autogen, elixir-format msgid "Longitude" msgstr "" @@ -1345,7 +1345,7 @@ msgstr "" msgid "Please check the submitted message." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:398 +#: lib/who_need_help_web/live/request_live/new.ex:402 #, elixir-autogen, elixir-format msgid "Podil, near the central pharmacy" msgstr "" @@ -1443,13 +1443,13 @@ msgstr "" msgid "Publish proposal" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:620 +#: lib/who_need_help_web/live/request_live/new.ex:637 #, elixir-autogen, elixir-format msgid "Publish request" msgstr "" #: lib/who_need_help_web/live/activity_live/new.ex:311 -#: lib/who_need_help_web/live/request_live/new.ex:618 +#: lib/who_need_help_web/live/request_live/new.ex:635 #, elixir-autogen, elixir-format msgid "Publishing…" msgstr "" @@ -4052,7 +4052,7 @@ msgstr "" msgid "A volunteer accepted this request. Use private chat to coordinate safely." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:523 +#: lib/who_need_help_web/live/request_live/new.ex:536 #, elixir-autogen, elixir-format msgid "After a helper accepts" msgstr "" @@ -4062,17 +4062,12 @@ msgstr "" msgid "Already registered? Check your email" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:385 -#, elixir-autogen, elixir-format -msgid "Approximate area selected. Your exact position is not stored." -msgstr "" - -#: lib/who_need_help_web/live/request_live/new.ex:397 +#: lib/who_need_help_web/live/request_live/new.ex:401 #, elixir-autogen, elixir-format msgid "Area or public landmark" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:487 +#: lib/who_need_help_web/live/request_live/new.ex:500 #, elixir-autogen, elixir-format msgid "Area radius" msgstr "" @@ -4103,7 +4098,7 @@ msgid "Choose a category from the same mode." msgstr "" #: lib/who_need_help_web/live/request_live/new.ex:383 -#: lib/who_need_help_web/live/request_live/new.ex:540 +#: lib/who_need_help_web/live/request_live/new.ex:553 #, elixir-autogen, elixir-format msgid "Choose a place on the map or use your current location." msgstr "" @@ -4144,7 +4139,7 @@ msgstr "" msgid "Date" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:544 +#: lib/who_need_help_web/live/request_live/new.ex:561 #, elixir-autogen, elixir-format msgid "Enter coordinates manually" msgstr "" @@ -4154,22 +4149,17 @@ msgstr "" msgid "Enter the six digits shown to the requester." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:432 +#: lib/who_need_help_web/live/request_live/new.ex:436 #, elixir-autogen, elixir-format msgid "Exact point" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:387 -#, elixir-autogen, elixir-format -msgid "Exact public point selected." -msgstr "" - -#: lib/who_need_help_web/live/request_live/new.ex:610 +#: lib/who_need_help_web/live/request_live/new.ex:627 #, elixir-autogen, elixir-format msgid "Fix the following details and publish again:" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:546 +#: lib/who_need_help_web/live/request_live/new.ex:563 #, elixir-autogen, elixir-format msgid "For an approximate area, these coordinates are the area center—not your exact position." msgstr "" @@ -4209,7 +4199,7 @@ msgstr "" msgid "Helper:" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:468 +#: lib/who_need_help_web/live/request_live/new.ex:481 #, elixir-autogen, elixir-format msgid "Helpers will see only the area or landmark written above. You can share a live location later after matching." msgstr "" @@ -4234,17 +4224,17 @@ msgstr "" msgid "In 3 hours" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:389 +#: lib/who_need_help_web/live/request_live/new.ex:393 #, elixir-autogen, elixir-format msgid "Location is unavailable in this browser." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:390 +#: lib/who_need_help_web/live/request_live/new.ex:394 #, elixir-autogen, elixir-format msgid "Location permission was denied." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:508 +#: lib/who_need_help_web/live/request_live/new.ex:521 #, elixir-autogen, elixir-format msgid "Move the map area so it covers a useful public meeting place." msgstr "" @@ -4254,17 +4244,17 @@ msgstr "" msgid "New notice" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:466 +#: lib/who_need_help_web/live/request_live/new.ex:479 #, elixir-autogen, elixir-format msgid "No coordinates will be stored" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:388 +#: lib/who_need_help_web/live/request_live/new.ex:392 #, elixir-autogen, elixir-format msgid "No map coordinates will be stored." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:446 +#: lib/who_need_help_web/live/request_live/new.ex:450 #, elixir-autogen, elixir-format msgid "No map location" msgstr "" @@ -4279,7 +4269,7 @@ msgstr "" msgid "Only notices submitted while signed in appear here. Notices submitted without an account remain accessible through their private email link." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:447 +#: lib/who_need_help_web/live/request_live/new.ex:451 #, elixir-autogen, elixir-format msgid "Only the public area description" msgstr "" @@ -4321,7 +4311,7 @@ msgstr "" msgid "Read" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:419 +#: lib/who_need_help_web/live/request_live/new.ex:423 #, elixir-autogen, elixir-format msgid "Recommended for privacy" msgstr "" @@ -4346,7 +4336,7 @@ msgstr "" msgid "Request to join again" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:609 +#: lib/who_need_help_web/live/request_live/new.ex:626 #, elixir-autogen, elixir-format msgid "Request was not published" msgstr "" @@ -4398,7 +4388,7 @@ msgstr "" msgid "Status updates go to the email address of your signed-in account." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:459 +#: lib/who_need_help_web/live/request_live/new.ex:463 #, elixir-autogen, elixir-format msgid "The map is unavailable. You can use the manual coordinate fallback." msgstr "" @@ -4413,7 +4403,7 @@ msgstr "" msgid "This activity is closed. The group chat remains available as read-only history." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:401 +#: lib/who_need_help_web/live/request_live/new.ex:405 #, elixir-autogen, elixir-format msgid "This description is visible to everyone. Do not enter a private address." msgstr "" @@ -4443,7 +4433,7 @@ msgstr "" msgid "This person has not added a public bio yet." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:515 +#: lib/who_need_help_web/live/request_live/new.ex:528 #, elixir-autogen, elixir-format msgid "This point is public" msgstr "" @@ -4478,7 +4468,7 @@ msgstr "" msgid "Tomorrow" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:516 +#: lib/who_need_help_web/live/request_live/new.ex:529 #, elixir-autogen, elixir-format msgid "Use a safe public meeting point instead of a private address." msgstr "" @@ -4488,7 +4478,7 @@ msgstr "" msgid "Use another email" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:483 +#: lib/who_need_help_web/live/request_live/new.ex:496 #, elixir-autogen, elixir-format msgid "Use my location" msgstr "" @@ -4526,7 +4516,7 @@ msgstr "" msgid "View my requests" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:433 +#: lib/who_need_help_web/live/request_live/new.ex:437 #, elixir-autogen, elixir-format msgid "Visible before matching" msgstr "" @@ -4541,12 +4531,12 @@ msgstr "" msgid "Voted" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:406 +#: lib/who_need_help_web/live/request_live/new.ex:410 #, elixir-autogen, elixir-format msgid "What should people see?" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:394 +#: lib/who_need_help_web/live/request_live/new.ex:398 #, elixir-autogen, elixir-format msgid "Where is help needed?" msgstr "" @@ -4561,7 +4551,7 @@ msgstr "" msgid "You are not a participant. You can send a new request while registration is open." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:525 +#: lib/who_need_help_web/live/request_live/new.ex:538 #, elixir-autogen, elixir-format msgid "You can separately share live location with the matched person and stop sharing at any time." msgstr "" @@ -4581,7 +4571,7 @@ msgstr "" msgid "Your completion confirmation is saved." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:507 +#: lib/who_need_help_web/live/request_live/new.ex:520 #, elixir-autogen, elixir-format msgid "Your exact position is not shown" msgstr "" @@ -4605,3 +4595,33 @@ msgstr "" #, elixir-autogen, elixir-format msgid "← Community helpers" msgstr "" + +#: lib/who_need_help_web/live/request_live/new.ex:385 +#, elixir-autogen, elixir-format +msgid "Area selected. Drag the green pin or click the map to move it." +msgstr "" + +#: lib/who_need_help_web/live/request_live/new.ex:470 +#, elixir-autogen, elixir-format +msgid "Click the map or drag the green pin to move the area" +msgstr "" + +#: lib/who_need_help_web/live/request_live/new.ex:473 +#, elixir-autogen, elixir-format +msgid "Click the map or drag the red pin to move the point" +msgstr "" + +#: lib/who_need_help_web/live/request_live/new.ex:390 +#, elixir-autogen, elixir-format +msgid "Drag to move the approximate area" +msgstr "" + +#: lib/who_need_help_web/live/request_live/new.ex:391 +#, elixir-autogen, elixir-format +msgid "Drag to move the exact point" +msgstr "" + +#: lib/who_need_help_web/live/request_live/new.ex:388 +#, elixir-autogen, elixir-format +msgid "Exact point selected. Drag the red pin or click the map to move it." +msgstr "" diff --git a/priv/gettext/en/LC_MESSAGES/default.po b/priv/gettext/en/LC_MESSAGES/default.po index a504e2d..0827c86 100644 --- a/priv/gettext/en/LC_MESSAGES/default.po +++ b/priv/gettext/en/LC_MESSAGES/default.po @@ -275,7 +275,7 @@ msgstr "Approved participants" #: lib/who_need_help_web/controllers/page_html/home.html.heex:80 #: lib/who_need_help_web/live/activity_live/new.ex:261 -#: lib/who_need_help_web/live/request_live/new.ex:418 +#: lib/who_need_help_web/live/request_live/new.ex:422 #, elixir-autogen, elixir-format msgid "Approximate area" msgstr "Approximate area" @@ -915,7 +915,7 @@ msgid "Join requests close" msgstr "Join requests close" #: lib/who_need_help_web/live/activity_live/new.ex:285 -#: lib/who_need_help_web/live/request_live/new.ex:552 +#: lib/who_need_help_web/live/request_live/new.ex:569 #, elixir-autogen, elixir-format msgid "Latitude" msgstr "Latitude" @@ -972,7 +972,7 @@ msgid "Logged out successfully." msgstr "Logged out successfully." #: lib/who_need_help_web/live/activity_live/new.ex:292 -#: lib/who_need_help_web/live/request_live/new.ex:566 +#: lib/who_need_help_web/live/request_live/new.ex:583 #, elixir-autogen, elixir-format msgid "Longitude" msgstr "Longitude" @@ -1345,7 +1345,7 @@ msgstr "Please check the submitted fields." msgid "Please check the submitted message." msgstr "Please check the submitted message." -#: lib/who_need_help_web/live/request_live/new.ex:398 +#: lib/who_need_help_web/live/request_live/new.ex:402 #, elixir-autogen, elixir-format msgid "Podil, near the central pharmacy" msgstr "Podil, near the central pharmacy" @@ -1443,13 +1443,13 @@ msgstr "Publish activity" msgid "Publish proposal" msgstr "Publish proposal" -#: lib/who_need_help_web/live/request_live/new.ex:620 +#: lib/who_need_help_web/live/request_live/new.ex:637 #, elixir-autogen, elixir-format msgid "Publish request" msgstr "Publish request" #: lib/who_need_help_web/live/activity_live/new.ex:311 -#: lib/who_need_help_web/live/request_live/new.ex:618 +#: lib/who_need_help_web/live/request_live/new.ex:635 #, elixir-autogen, elixir-format msgid "Publishing…" msgstr "Publishing…" @@ -4052,7 +4052,7 @@ msgstr "" msgid "A volunteer accepted this request. Use private chat to coordinate safely." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:523 +#: lib/who_need_help_web/live/request_live/new.ex:536 #, elixir-autogen, elixir-format msgid "After a helper accepts" msgstr "" @@ -4062,17 +4062,12 @@ msgstr "" msgid "Already registered? Check your email" msgstr "Already registered? Check your email" -#: lib/who_need_help_web/live/request_live/new.ex:385 -#, elixir-autogen, elixir-format -msgid "Approximate area selected. Your exact position is not stored." -msgstr "" - -#: lib/who_need_help_web/live/request_live/new.ex:397 +#: lib/who_need_help_web/live/request_live/new.ex:401 #, elixir-autogen, elixir-format msgid "Area or public landmark" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:487 +#: lib/who_need_help_web/live/request_live/new.ex:500 #, elixir-autogen, elixir-format msgid "Area radius" msgstr "" @@ -4103,7 +4098,7 @@ msgid "Choose a category from the same mode." msgstr "Choose a category from the same mode." #: lib/who_need_help_web/live/request_live/new.ex:383 -#: lib/who_need_help_web/live/request_live/new.ex:540 +#: lib/who_need_help_web/live/request_live/new.ex:553 #, elixir-autogen, elixir-format msgid "Choose a place on the map or use your current location." msgstr "" @@ -4144,7 +4139,7 @@ msgstr "" msgid "Date" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:544 +#: lib/who_need_help_web/live/request_live/new.ex:561 #, elixir-autogen, elixir-format msgid "Enter coordinates manually" msgstr "" @@ -4154,22 +4149,17 @@ msgstr "" msgid "Enter the six digits shown to the requester." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:432 +#: lib/who_need_help_web/live/request_live/new.ex:436 #, elixir-autogen, elixir-format msgid "Exact point" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:387 -#, elixir-autogen, elixir-format, fuzzy -msgid "Exact public point selected." -msgstr "Exact public point selected." - -#: lib/who_need_help_web/live/request_live/new.ex:610 +#: lib/who_need_help_web/live/request_live/new.ex:627 #, elixir-autogen, elixir-format msgid "Fix the following details and publish again:" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:546 +#: lib/who_need_help_web/live/request_live/new.ex:563 #, elixir-autogen, elixir-format msgid "For an approximate area, these coordinates are the area center—not your exact position." msgstr "" @@ -4209,7 +4199,7 @@ msgstr "" msgid "Helper:" msgstr "Helper:" -#: lib/who_need_help_web/live/request_live/new.ex:468 +#: lib/who_need_help_web/live/request_live/new.ex:481 #, elixir-autogen, elixir-format msgid "Helpers will see only the area or landmark written above. You can share a live location later after matching." msgstr "" @@ -4234,17 +4224,17 @@ msgstr "" msgid "In 3 hours" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:389 +#: lib/who_need_help_web/live/request_live/new.ex:393 #, elixir-autogen, elixir-format msgid "Location is unavailable in this browser." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:390 +#: lib/who_need_help_web/live/request_live/new.ex:394 #, elixir-autogen, elixir-format msgid "Location permission was denied." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:508 +#: lib/who_need_help_web/live/request_live/new.ex:521 #, elixir-autogen, elixir-format msgid "Move the map area so it covers a useful public meeting place." msgstr "" @@ -4254,17 +4244,17 @@ msgstr "" msgid "New notice" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:466 +#: lib/who_need_help_web/live/request_live/new.ex:479 #, elixir-autogen, elixir-format msgid "No coordinates will be stored" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:388 +#: lib/who_need_help_web/live/request_live/new.ex:392 #, elixir-autogen, elixir-format msgid "No map coordinates will be stored." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:446 +#: lib/who_need_help_web/live/request_live/new.ex:450 #, elixir-autogen, elixir-format msgid "No map location" msgstr "" @@ -4279,7 +4269,7 @@ msgstr "No public social links added." msgid "Only notices submitted while signed in appear here. Notices submitted without an account remain accessible through their private email link." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:447 +#: lib/who_need_help_web/live/request_live/new.ex:451 #, elixir-autogen, elixir-format msgid "Only the public area description" msgstr "" @@ -4321,7 +4311,7 @@ msgstr "" msgid "Read" msgstr "Read" -#: lib/who_need_help_web/live/request_live/new.ex:419 +#: lib/who_need_help_web/live/request_live/new.ex:423 #, elixir-autogen, elixir-format msgid "Recommended for privacy" msgstr "" @@ -4346,7 +4336,7 @@ msgstr "Request expires" msgid "Request to join again" msgstr "Request to join again" -#: lib/who_need_help_web/live/request_live/new.ex:609 +#: lib/who_need_help_web/live/request_live/new.ex:626 #, elixir-autogen, elixir-format msgid "Request was not published" msgstr "" @@ -4398,7 +4388,7 @@ msgstr "Starts at" msgid "Status updates go to the email address of your signed-in account." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:459 +#: lib/who_need_help_web/live/request_live/new.ex:463 #, elixir-autogen, elixir-format msgid "The map is unavailable. You can use the manual coordinate fallback." msgstr "" @@ -4413,7 +4403,7 @@ msgstr "" msgid "This activity is closed. The group chat remains available as read-only history." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:401 +#: lib/who_need_help_web/live/request_live/new.ex:405 #, elixir-autogen, elixir-format msgid "This description is visible to everyone. Do not enter a private address." msgstr "" @@ -4443,7 +4433,7 @@ msgstr "" msgid "This person has not added a public bio yet." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:515 +#: lib/who_need_help_web/live/request_live/new.ex:528 #, elixir-autogen, elixir-format msgid "This point is public" msgstr "" @@ -4478,7 +4468,7 @@ msgstr "" msgid "Tomorrow" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:516 +#: lib/who_need_help_web/live/request_live/new.ex:529 #, elixir-autogen, elixir-format msgid "Use a safe public meeting point instead of a private address." msgstr "" @@ -4488,7 +4478,7 @@ msgstr "" msgid "Use another email" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:483 +#: lib/who_need_help_web/live/request_live/new.ex:496 #, elixir-autogen, elixir-format, fuzzy msgid "Use my location" msgstr "Use my location" @@ -4526,7 +4516,7 @@ msgstr "" msgid "View my requests" msgstr "View my requests" -#: lib/who_need_help_web/live/request_live/new.ex:433 +#: lib/who_need_help_web/live/request_live/new.ex:437 #, elixir-autogen, elixir-format msgid "Visible before matching" msgstr "" @@ -4541,12 +4531,12 @@ msgstr "" msgid "Voted" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:406 +#: lib/who_need_help_web/live/request_live/new.ex:410 #, elixir-autogen, elixir-format msgid "What should people see?" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:394 +#: lib/who_need_help_web/live/request_live/new.ex:398 #, elixir-autogen, elixir-format msgid "Where is help needed?" msgstr "" @@ -4561,7 +4551,7 @@ msgstr "" msgid "You are not a participant. You can send a new request while registration is open." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:525 +#: lib/who_need_help_web/live/request_live/new.ex:538 #, elixir-autogen, elixir-format msgid "You can separately share live location with the matched person and stop sharing at any time." msgstr "" @@ -4581,7 +4571,7 @@ msgstr "" msgid "Your completion confirmation is saved." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:507 +#: lib/who_need_help_web/live/request_live/new.ex:520 #, elixir-autogen, elixir-format msgid "Your exact position is not shown" msgstr "" @@ -4605,3 +4595,33 @@ msgstr "" #, elixir-autogen, elixir-format, fuzzy msgid "← Community helpers" msgstr "← Community helpers" + +#: lib/who_need_help_web/live/request_live/new.ex:385 +#, elixir-autogen, elixir-format +msgid "Area selected. Drag the green pin or click the map to move it." +msgstr "" + +#: lib/who_need_help_web/live/request_live/new.ex:470 +#, elixir-autogen, elixir-format +msgid "Click the map or drag the green pin to move the area" +msgstr "" + +#: lib/who_need_help_web/live/request_live/new.ex:473 +#, elixir-autogen, elixir-format +msgid "Click the map or drag the red pin to move the point" +msgstr "" + +#: lib/who_need_help_web/live/request_live/new.ex:390 +#, elixir-autogen, elixir-format +msgid "Drag to move the approximate area" +msgstr "" + +#: lib/who_need_help_web/live/request_live/new.ex:391 +#, elixir-autogen, elixir-format +msgid "Drag to move the exact point" +msgstr "" + +#: lib/who_need_help_web/live/request_live/new.ex:388 +#, elixir-autogen, elixir-format +msgid "Exact point selected. Drag the red pin or click the map to move it." +msgstr "" diff --git a/priv/gettext/ru/LC_MESSAGES/default.po b/priv/gettext/ru/LC_MESSAGES/default.po index 71cd693..380765d 100644 --- a/priv/gettext/ru/LC_MESSAGES/default.po +++ b/priv/gettext/ru/LC_MESSAGES/default.po @@ -286,7 +286,7 @@ msgstr "Одобренные участники" #: lib/who_need_help_web/controllers/page_html/home.html.heex:80 #: lib/who_need_help_web/live/activity_live/new.ex:261 -#: lib/who_need_help_web/live/request_live/new.ex:418 +#: lib/who_need_help_web/live/request_live/new.ex:422 #, elixir-autogen, elixir-format msgid "Approximate area" msgstr "Примерный район" @@ -991,7 +991,7 @@ msgid "Join requests close" msgstr "Приём заявок завершается" #: lib/who_need_help_web/live/activity_live/new.ex:285 -#: lib/who_need_help_web/live/request_live/new.ex:552 +#: lib/who_need_help_web/live/request_live/new.ex:569 #, elixir-autogen, elixir-format msgid "Latitude" msgstr "Широта" @@ -1050,7 +1050,7 @@ msgid "Logged out successfully." msgstr "Вы успешно вышли." #: lib/who_need_help_web/live/activity_live/new.ex:292 -#: lib/who_need_help_web/live/request_live/new.ex:566 +#: lib/who_need_help_web/live/request_live/new.ex:583 #, elixir-autogen, elixir-format msgid "Longitude" msgstr "Долгота" @@ -1444,7 +1444,7 @@ msgstr "Пожалуйста, проверьте представленные п msgid "Please check the submitted message." msgstr "Пожалуйста, проверьте отправленное сообщение." -#: lib/who_need_help_web/live/request_live/new.ex:398 +#: lib/who_need_help_web/live/request_live/new.ex:402 #, elixir-autogen, elixir-format msgid "Podil, near the central pharmacy" msgstr "Подол, рядом с центральной аптекой" @@ -1555,13 +1555,13 @@ msgstr "Опубликовать активность" msgid "Publish proposal" msgstr "Опубликовать предложение" -#: lib/who_need_help_web/live/request_live/new.ex:620 +#: lib/who_need_help_web/live/request_live/new.ex:637 #, elixir-autogen, elixir-format msgid "Publish request" msgstr "Опубликовать заявку" #: lib/who_need_help_web/live/activity_live/new.ex:311 -#: lib/who_need_help_web/live/request_live/new.ex:618 +#: lib/who_need_help_web/live/request_live/new.ex:635 #, elixir-autogen, elixir-format msgid "Publishing…" msgstr "Публикация…" @@ -4208,7 +4208,7 @@ msgstr "" msgid "A volunteer accepted this request. Use private chat to coordinate safely." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:523 +#: lib/who_need_help_web/live/request_live/new.ex:536 #, elixir-autogen, elixir-format msgid "After a helper accepts" msgstr "После принятия заявки помощником" @@ -4218,17 +4218,12 @@ msgstr "После принятия заявки помощником" msgid "Already registered? Check your email" msgstr "Уже зарегистрированы?" -#: lib/who_need_help_web/live/request_live/new.ex:385 -#, elixir-autogen, elixir-format -msgid "Approximate area selected. Your exact position is not stored." -msgstr "Примерная зона выбрана. Точная позиция не сохраняется." - -#: lib/who_need_help_web/live/request_live/new.ex:397 +#: lib/who_need_help_web/live/request_live/new.ex:401 #, elixir-autogen, elixir-format msgid "Area or public landmark" msgstr "Район или публичный ориентир" -#: lib/who_need_help_web/live/request_live/new.ex:487 +#: lib/who_need_help_web/live/request_live/new.ex:500 #, elixir-autogen, elixir-format msgid "Area radius" msgstr "Радиус зоны" @@ -4259,7 +4254,7 @@ msgid "Choose a category from the same mode." msgstr "Выберите категорию" #: lib/who_need_help_web/live/request_live/new.ex:383 -#: lib/who_need_help_web/live/request_live/new.ex:540 +#: lib/who_need_help_web/live/request_live/new.ex:553 #, elixir-autogen, elixir-format msgid "Choose a place on the map or use your current location." msgstr "Выберите место на карте или используйте текущую геопозицию." @@ -4300,7 +4295,7 @@ msgstr "" msgid "Date" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:544 +#: lib/who_need_help_web/live/request_live/new.ex:561 #, elixir-autogen, elixir-format msgid "Enter coordinates manually" msgstr "Ввести координаты вручную" @@ -4310,22 +4305,17 @@ msgstr "Ввести координаты вручную" msgid "Enter the six digits shown to the requester." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:432 +#: lib/who_need_help_web/live/request_live/new.ex:436 #, elixir-autogen, elixir-format msgid "Exact point" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:387 -#, elixir-autogen, elixir-format, fuzzy -msgid "Exact public point selected." -msgstr "Выбрана точная публичная точка." - -#: lib/who_need_help_web/live/request_live/new.ex:610 +#: lib/who_need_help_web/live/request_live/new.ex:627 #, elixir-autogen, elixir-format msgid "Fix the following details and publish again:" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:546 +#: lib/who_need_help_web/live/request_live/new.ex:563 #, elixir-autogen, elixir-format msgid "For an approximate area, these coordinates are the area center—not your exact position." msgstr "Для примерной зоны эти координаты задают центр области, а не вашу точную позицию." @@ -4365,7 +4355,7 @@ msgstr "" msgid "Helper:" msgstr "Помощник" -#: lib/who_need_help_web/live/request_live/new.ex:468 +#: lib/who_need_help_web/live/request_live/new.ex:481 #, elixir-autogen, elixir-format msgid "Helpers will see only the area or landmark written above. You can share a live location later after matching." msgstr "Помощники увидят только указанный выше район или ориентир. После совпадения можно отдельно поделиться геопозицией." @@ -4390,17 +4380,17 @@ msgstr "" msgid "In 3 hours" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:389 +#: lib/who_need_help_web/live/request_live/new.ex:393 #, elixir-autogen, elixir-format msgid "Location is unavailable in this browser." msgstr "Геопозиция недоступна в этом браузере." -#: lib/who_need_help_web/live/request_live/new.ex:390 +#: lib/who_need_help_web/live/request_live/new.ex:394 #, elixir-autogen, elixir-format msgid "Location permission was denied." msgstr "Доступ к геопозиции отклонён." -#: lib/who_need_help_web/live/request_live/new.ex:508 +#: lib/who_need_help_web/live/request_live/new.ex:521 #, elixir-autogen, elixir-format msgid "Move the map area so it covers a useful public meeting place." msgstr "Переместите зону так, чтобы она охватывала удобное публичное место встречи." @@ -4410,17 +4400,17 @@ msgstr "Переместите зону так, чтобы она охватыв msgid "New notice" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:466 +#: lib/who_need_help_web/live/request_live/new.ex:479 #, elixir-autogen, elixir-format msgid "No coordinates will be stored" msgstr "Координаты не будут сохранены" -#: lib/who_need_help_web/live/request_live/new.ex:388 +#: lib/who_need_help_web/live/request_live/new.ex:392 #, elixir-autogen, elixir-format msgid "No map coordinates will be stored." msgstr "Координаты на карте не будут сохранены." -#: lib/who_need_help_web/live/request_live/new.ex:446 +#: lib/who_need_help_web/live/request_live/new.ex:450 #, elixir-autogen, elixir-format msgid "No map location" msgstr "Не показывать место на карте" @@ -4435,7 +4425,7 @@ msgstr "Ссылки на соцсети не добавлены." msgid "Only notices submitted while signed in appear here. Notices submitted without an account remain accessible through their private email link." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:447 +#: lib/who_need_help_web/live/request_live/new.ex:451 #, elixir-autogen, elixir-format msgid "Only the public area description" msgstr "Только публичное описание района" @@ -4477,7 +4467,7 @@ msgstr "" msgid "Read" msgstr "Прочитайте" -#: lib/who_need_help_web/live/request_live/new.ex:419 +#: lib/who_need_help_web/live/request_live/new.ex:423 #, elixir-autogen, elixir-format msgid "Recommended for privacy" msgstr "Рекомендуется для приватности" @@ -4502,7 +4492,7 @@ msgstr "Срок действия заявки (UTC)" msgid "Request to join again" msgstr "Подать заявку на участие" -#: lib/who_need_help_web/live/request_live/new.ex:609 +#: lib/who_need_help_web/live/request_live/new.ex:626 #, elixir-autogen, elixir-format msgid "Request was not published" msgstr "" @@ -4554,7 +4544,7 @@ msgstr "Начало" msgid "Status updates go to the email address of your signed-in account." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:459 +#: lib/who_need_help_web/live/request_live/new.ex:463 #, elixir-autogen, elixir-format msgid "The map is unavailable. You can use the manual coordinate fallback." msgstr "Карта недоступна. Можно использовать резервный ручной ввод координат." @@ -4569,7 +4559,7 @@ msgstr "" msgid "This activity is closed. The group chat remains available as read-only history." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:401 +#: lib/who_need_help_web/live/request_live/new.ex:405 #, elixir-autogen, elixir-format msgid "This description is visible to everyone. Do not enter a private address." msgstr "Это описание видно всем. Не указывайте частный адрес." @@ -4599,7 +4589,7 @@ msgstr "" msgid "This person has not added a public bio yet." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:515 +#: lib/who_need_help_web/live/request_live/new.ex:528 #, elixir-autogen, elixir-format msgid "This point is public" msgstr "Эта точка видна всем" @@ -4634,7 +4624,7 @@ msgstr "" msgid "Tomorrow" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:516 +#: lib/who_need_help_web/live/request_live/new.ex:529 #, elixir-autogen, elixir-format msgid "Use a safe public meeting point instead of a private address." msgstr "Укажите безопасное публичное место встречи вместо частного адреса." @@ -4644,7 +4634,7 @@ msgstr "Укажите безопасное публичное место вст msgid "Use another email" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:483 +#: lib/who_need_help_web/live/request_live/new.ex:496 #, elixir-autogen, elixir-format, fuzzy msgid "Use my location" msgstr "Использовать мою геопозицию" @@ -4682,7 +4672,7 @@ msgstr "" msgid "View my requests" msgstr "Новое обращение" -#: lib/who_need_help_web/live/request_live/new.ex:433 +#: lib/who_need_help_web/live/request_live/new.ex:437 #, elixir-autogen, elixir-format msgid "Visible before matching" msgstr "Видно до принятия заявки" @@ -4697,12 +4687,12 @@ msgstr "" msgid "Voted" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:406 +#: lib/who_need_help_web/live/request_live/new.ex:410 #, elixir-autogen, elixir-format msgid "What should people see?" msgstr "Что должны видеть другие?" -#: lib/who_need_help_web/live/request_live/new.ex:394 +#: lib/who_need_help_web/live/request_live/new.ex:398 #, elixir-autogen, elixir-format msgid "Where is help needed?" msgstr "Где нужна помощь?" @@ -4717,7 +4707,7 @@ msgstr "" msgid "You are not a participant. You can send a new request while registration is open." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:525 +#: lib/who_need_help_web/live/request_live/new.ex:538 #, elixir-autogen, elixir-format msgid "You can separately share live location with the matched person and stop sharing at any time." msgstr "Можно отдельно поделиться геопозицией с подобранным человеком и остановить передачу в любой момент." @@ -4737,7 +4727,7 @@ msgstr "" msgid "Your completion confirmation is saved." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:507 +#: lib/who_need_help_web/live/request_live/new.ex:520 #, elixir-autogen, elixir-format msgid "Your exact position is not shown" msgstr "Ваша точная позиция не показывается" @@ -4761,3 +4751,33 @@ msgstr "" #, elixir-autogen, elixir-format, fuzzy msgid "← Community helpers" msgstr "Помощники сообщества" + +#: lib/who_need_help_web/live/request_live/new.ex:385 +#, elixir-autogen, elixir-format +msgid "Area selected. Drag the green pin or click the map to move it." +msgstr "Область выбрана. Перетащите зелёный маркер или нажмите на карту, чтобы переместить её." + +#: lib/who_need_help_web/live/request_live/new.ex:470 +#, elixir-autogen, elixir-format +msgid "Click the map or drag the green pin to move the area" +msgstr "Нажмите на карту или перетащите зелёный маркер, чтобы переместить область" + +#: lib/who_need_help_web/live/request_live/new.ex:473 +#, elixir-autogen, elixir-format +msgid "Click the map or drag the red pin to move the point" +msgstr "Нажмите на карту или перетащите красный маркер, чтобы переместить точку" + +#: lib/who_need_help_web/live/request_live/new.ex:390 +#, elixir-autogen, elixir-format +msgid "Drag to move the approximate area" +msgstr "Перетащите, чтобы переместить приблизительную область" + +#: lib/who_need_help_web/live/request_live/new.ex:391 +#, elixir-autogen, elixir-format +msgid "Drag to move the exact point" +msgstr "Перетащите, чтобы переместить точную точку" + +#: lib/who_need_help_web/live/request_live/new.ex:388 +#, elixir-autogen, elixir-format +msgid "Exact point selected. Drag the red pin or click the map to move it." +msgstr "Точная точка выбрана. Перетащите красный маркер или нажмите на карту, чтобы переместить её." diff --git a/priv/gettext/uk/LC_MESSAGES/default.po b/priv/gettext/uk/LC_MESSAGES/default.po index 8abbfac..9bdb5d9 100644 --- a/priv/gettext/uk/LC_MESSAGES/default.po +++ b/priv/gettext/uk/LC_MESSAGES/default.po @@ -286,7 +286,7 @@ msgstr "Схвалені учасники" #: lib/who_need_help_web/controllers/page_html/home.html.heex:80 #: lib/who_need_help_web/live/activity_live/new.ex:261 -#: lib/who_need_help_web/live/request_live/new.ex:418 +#: lib/who_need_help_web/live/request_live/new.ex:422 #, elixir-autogen, elixir-format msgid "Approximate area" msgstr "Орієнтовний район" @@ -988,7 +988,7 @@ msgid "Join requests close" msgstr "Приймання заявок завершується" #: lib/who_need_help_web/live/activity_live/new.ex:285 -#: lib/who_need_help_web/live/request_live/new.ex:552 +#: lib/who_need_help_web/live/request_live/new.ex:569 #, elixir-autogen, elixir-format msgid "Latitude" msgstr "Широта" @@ -1047,7 +1047,7 @@ msgid "Logged out successfully." msgstr "Ви успішно вийшли." #: lib/who_need_help_web/live/activity_live/new.ex:292 -#: lib/who_need_help_web/live/request_live/new.ex:566 +#: lib/who_need_help_web/live/request_live/new.ex:583 #, elixir-autogen, elixir-format msgid "Longitude" msgstr "Довгота" @@ -1438,7 +1438,7 @@ msgstr "Будь ласка, перевірте вказані поля." msgid "Please check the submitted message." msgstr "Будь ласка, перевірте надіслане повідомлення." -#: lib/who_need_help_web/live/request_live/new.ex:398 +#: lib/who_need_help_web/live/request_live/new.ex:402 #, elixir-autogen, elixir-format msgid "Podil, near the central pharmacy" msgstr "Поділь, поблизу центральної аптеки." @@ -1549,13 +1549,13 @@ msgstr "Опублікувати активність" msgid "Publish proposal" msgstr "Оприлюднити пропозицію" -#: lib/who_need_help_web/live/request_live/new.ex:620 +#: lib/who_need_help_web/live/request_live/new.ex:637 #, elixir-autogen, elixir-format msgid "Publish request" msgstr "Опублікувати заявку" #: lib/who_need_help_web/live/activity_live/new.ex:311 -#: lib/who_need_help_web/live/request_live/new.ex:618 +#: lib/who_need_help_web/live/request_live/new.ex:635 #, elixir-autogen, elixir-format msgid "Publishing…" msgstr "Публікація…" @@ -4198,7 +4198,7 @@ msgstr "" msgid "A volunteer accepted this request. Use private chat to coordinate safely." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:523 +#: lib/who_need_help_web/live/request_live/new.ex:536 #, elixir-autogen, elixir-format msgid "After a helper accepts" msgstr "Після прийняття заявки помічником" @@ -4208,17 +4208,12 @@ msgstr "Після прийняття заявки помічником" msgid "Already registered? Check your email" msgstr "Уже зареєстровані?" -#: lib/who_need_help_web/live/request_live/new.ex:385 -#, elixir-autogen, elixir-format -msgid "Approximate area selected. Your exact position is not stored." -msgstr "Обрано приблизну зону. Точна позиція не зберігається." - -#: lib/who_need_help_web/live/request_live/new.ex:397 +#: lib/who_need_help_web/live/request_live/new.ex:401 #, elixir-autogen, elixir-format msgid "Area or public landmark" msgstr "Район або публічний орієнтир" -#: lib/who_need_help_web/live/request_live/new.ex:487 +#: lib/who_need_help_web/live/request_live/new.ex:500 #, elixir-autogen, elixir-format msgid "Area radius" msgstr "Радіус зони" @@ -4249,7 +4244,7 @@ msgid "Choose a category from the same mode." msgstr "Виберіть категорію" #: lib/who_need_help_web/live/request_live/new.ex:383 -#: lib/who_need_help_web/live/request_live/new.ex:540 +#: lib/who_need_help_web/live/request_live/new.ex:553 #, elixir-autogen, elixir-format msgid "Choose a place on the map or use your current location." msgstr "Оберіть місце на карті або використайте поточну геопозицію." @@ -4290,7 +4285,7 @@ msgstr "" msgid "Date" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:544 +#: lib/who_need_help_web/live/request_live/new.ex:561 #, elixir-autogen, elixir-format msgid "Enter coordinates manually" msgstr "Ввести координати вручну" @@ -4300,22 +4295,17 @@ msgstr "Ввести координати вручну" msgid "Enter the six digits shown to the requester." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:432 +#: lib/who_need_help_web/live/request_live/new.ex:436 #, elixir-autogen, elixir-format msgid "Exact point" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:387 -#, elixir-autogen, elixir-format, fuzzy -msgid "Exact public point selected." -msgstr "Обрано точну публічну точку." - -#: lib/who_need_help_web/live/request_live/new.ex:610 +#: lib/who_need_help_web/live/request_live/new.ex:627 #, elixir-autogen, elixir-format msgid "Fix the following details and publish again:" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:546 +#: lib/who_need_help_web/live/request_live/new.ex:563 #, elixir-autogen, elixir-format msgid "For an approximate area, these coordinates are the area center—not your exact position." msgstr "Для приблизної зони ці координати задають центр області, а не вашу точну позицію." @@ -4355,7 +4345,7 @@ msgstr "" msgid "Helper:" msgstr "Помічник" -#: lib/who_need_help_web/live/request_live/new.ex:468 +#: lib/who_need_help_web/live/request_live/new.ex:481 #, elixir-autogen, elixir-format msgid "Helpers will see only the area or landmark written above. You can share a live location later after matching." msgstr "Помічники бачитимуть лише вказаний вище район або орієнтир. Після збігу можна окремо поділитися геопозицією." @@ -4380,17 +4370,17 @@ msgstr "" msgid "In 3 hours" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:389 +#: lib/who_need_help_web/live/request_live/new.ex:393 #, elixir-autogen, elixir-format msgid "Location is unavailable in this browser." msgstr "Геопозиція недоступна в цьому браузері." -#: lib/who_need_help_web/live/request_live/new.ex:390 +#: lib/who_need_help_web/live/request_live/new.ex:394 #, elixir-autogen, elixir-format msgid "Location permission was denied." msgstr "Доступ до геопозиції відхилено." -#: lib/who_need_help_web/live/request_live/new.ex:508 +#: lib/who_need_help_web/live/request_live/new.ex:521 #, elixir-autogen, elixir-format msgid "Move the map area so it covers a useful public meeting place." msgstr "Перемістіть зону так, щоб вона охоплювала зручне публічне місце зустрічі." @@ -4400,17 +4390,17 @@ msgstr "Перемістіть зону так, щоб вона охоплюва msgid "New notice" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:466 +#: lib/who_need_help_web/live/request_live/new.ex:479 #, elixir-autogen, elixir-format msgid "No coordinates will be stored" msgstr "Координати не зберігатимуться" -#: lib/who_need_help_web/live/request_live/new.ex:388 +#: lib/who_need_help_web/live/request_live/new.ex:392 #, elixir-autogen, elixir-format msgid "No map coordinates will be stored." msgstr "Координати на карті не зберігатимуться." -#: lib/who_need_help_web/live/request_live/new.ex:446 +#: lib/who_need_help_web/live/request_live/new.ex:450 #, elixir-autogen, elixir-format msgid "No map location" msgstr "Не показувати місце на карті" @@ -4425,7 +4415,7 @@ msgstr "Не додано соціальних посилань." msgid "Only notices submitted while signed in appear here. Notices submitted without an account remain accessible through their private email link." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:447 +#: lib/who_need_help_web/live/request_live/new.ex:451 #, elixir-autogen, elixir-format msgid "Only the public area description" msgstr "Лише публічний опис району" @@ -4467,7 +4457,7 @@ msgstr "" msgid "Read" msgstr "Прочитайте" -#: lib/who_need_help_web/live/request_live/new.ex:419 +#: lib/who_need_help_web/live/request_live/new.ex:423 #, elixir-autogen, elixir-format msgid "Recommended for privacy" msgstr "Рекомендовано для приватності" @@ -4492,7 +4482,7 @@ msgstr "Запит закінчується (UTC)" msgid "Request to join again" msgstr "Подати заявку на участь" -#: lib/who_need_help_web/live/request_live/new.ex:609 +#: lib/who_need_help_web/live/request_live/new.ex:626 #, elixir-autogen, elixir-format msgid "Request was not published" msgstr "" @@ -4544,7 +4534,7 @@ msgstr "Початок" msgid "Status updates go to the email address of your signed-in account." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:459 +#: lib/who_need_help_web/live/request_live/new.ex:463 #, elixir-autogen, elixir-format msgid "The map is unavailable. You can use the manual coordinate fallback." msgstr "Карта недоступна. Можна використати резервне ручне введення координат." @@ -4559,7 +4549,7 @@ msgstr "" msgid "This activity is closed. The group chat remains available as read-only history." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:401 +#: lib/who_need_help_web/live/request_live/new.ex:405 #, elixir-autogen, elixir-format msgid "This description is visible to everyone. Do not enter a private address." msgstr "Цей опис бачать усі. Не вказуйте приватну адресу." @@ -4589,7 +4579,7 @@ msgstr "" msgid "This person has not added a public bio yet." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:515 +#: lib/who_need_help_web/live/request_live/new.ex:528 #, elixir-autogen, elixir-format msgid "This point is public" msgstr "Цю точку видно всім" @@ -4624,7 +4614,7 @@ msgstr "" msgid "Tomorrow" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:516 +#: lib/who_need_help_web/live/request_live/new.ex:529 #, elixir-autogen, elixir-format msgid "Use a safe public meeting point instead of a private address." msgstr "Вкажіть безпечне публічне місце зустрічі замість приватної адреси." @@ -4634,7 +4624,7 @@ msgstr "Вкажіть безпечне публічне місце зустрі msgid "Use another email" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:483 +#: lib/who_need_help_web/live/request_live/new.ex:496 #, elixir-autogen, elixir-format, fuzzy msgid "Use my location" msgstr "Використати мою геопозицію" @@ -4672,7 +4662,7 @@ msgstr "" msgid "View my requests" msgstr "Нове звернення" -#: lib/who_need_help_web/live/request_live/new.ex:433 +#: lib/who_need_help_web/live/request_live/new.ex:437 #, elixir-autogen, elixir-format msgid "Visible before matching" msgstr "Видно до прийняття заявки" @@ -4687,12 +4677,12 @@ msgstr "" msgid "Voted" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:406 +#: lib/who_need_help_web/live/request_live/new.ex:410 #, elixir-autogen, elixir-format msgid "What should people see?" msgstr "Що мають бачити інші?" -#: lib/who_need_help_web/live/request_live/new.ex:394 +#: lib/who_need_help_web/live/request_live/new.ex:398 #, elixir-autogen, elixir-format msgid "Where is help needed?" msgstr "Де потрібна допомога?" @@ -4707,7 +4697,7 @@ msgstr "" msgid "You are not a participant. You can send a new request while registration is open." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:525 +#: lib/who_need_help_web/live/request_live/new.ex:538 #, elixir-autogen, elixir-format msgid "You can separately share live location with the matched person and stop sharing at any time." msgstr "Можна окремо поділитися геопозицією з підібраною людиною та зупинити передачу будь-коли." @@ -4727,7 +4717,7 @@ msgstr "" msgid "Your completion confirmation is saved." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:507 +#: lib/who_need_help_web/live/request_live/new.ex:520 #, elixir-autogen, elixir-format msgid "Your exact position is not shown" msgstr "Вашу точну позицію не показано" @@ -4751,3 +4741,33 @@ msgstr "" #, elixir-autogen, elixir-format, fuzzy msgid "← Community helpers" msgstr "Помічники спільноти" + +#: lib/who_need_help_web/live/request_live/new.ex:385 +#, elixir-autogen, elixir-format +msgid "Area selected. Drag the green pin or click the map to move it." +msgstr "Область вибрано. Перетягніть зелений маркер або натисніть на карту, щоб перемістити її." + +#: lib/who_need_help_web/live/request_live/new.ex:470 +#, elixir-autogen, elixir-format +msgid "Click the map or drag the green pin to move the area" +msgstr "Натисніть на карту або перетягніть зелений маркер, щоб перемістити область" + +#: lib/who_need_help_web/live/request_live/new.ex:473 +#, elixir-autogen, elixir-format +msgid "Click the map or drag the red pin to move the point" +msgstr "Натисніть на карту або перетягніть червоний маркер, щоб перемістити точку" + +#: lib/who_need_help_web/live/request_live/new.ex:390 +#, elixir-autogen, elixir-format +msgid "Drag to move the approximate area" +msgstr "Перетягніть, щоб перемістити приблизну область" + +#: lib/who_need_help_web/live/request_live/new.ex:391 +#, elixir-autogen, elixir-format +msgid "Drag to move the exact point" +msgstr "Перетягніть, щоб перемістити точну точку" + +#: lib/who_need_help_web/live/request_live/new.ex:388 +#, elixir-autogen, elixir-format +msgid "Exact point selected. Drag the red pin or click the map to move it." +msgstr "Точну точку вибрано. Перетягніть червоний маркер або натисніть на карту, щоб перемістити її."