diff --git a/android/app/src/main/java/org/whoneedhelp/mobile/WhoNeedHelpMessagingService.java b/android/app/src/main/java/org/whoneedhelp/mobile/WhoNeedHelpMessagingService.java
index 8cfb133..f23ccce 100644
--- a/android/app/src/main/java/org/whoneedhelp/mobile/WhoNeedHelpMessagingService.java
+++ b/android/app/src/main/java/org/whoneedhelp/mobile/WhoNeedHelpMessagingService.java
@@ -45,7 +45,7 @@ public final class WhoNeedHelpMessagingService extends FirebaseMessagingService
}
String title = limited(data.get("title"), getString(R.string.app_name), 120);
- String body = limited(data.get("body"), "Open Who Need Help for the update.", 240);
+ String body = limited(data.get("body"), getString(R.string.updates_default_body), 240);
String notificationId = limited(data.get("notification_id"), route, 160);
createChannel();
diff --git a/android/app/src/main/res/values-ru/strings.xml b/android/app/src/main/res/values-ru/strings.xml
new file mode 100644
index 0000000..a732fc0
--- /dev/null
+++ b/android/app/src/main/res/values-ru/strings.xml
@@ -0,0 +1,25 @@
+
+
+ Who Need Help
+ Нет приложения, которое может открыть эту ссылку.
+ Страница недоступна
+ Не удалось загрузить Who Need Help. Проверьте подключение и повторите попытку.
+ Повторить
+ Закрыть
+ Безопасное подключение было отклонено.
+ Этот тип ссылки не поддерживается.
+ Геолокация активной помощи
+ Видимая передача геолокации для активной принятой заявки.
+ Передача текущей геолокации
+ Who Need Help может продолжать передачу, когда приложение свёрнуто.
+ Остановить передачу
+ Остановка передачи геолокации
+ Ожидаем подтверждения удаления текущей позиции с сервера.
+ Не удалось подтвердить остановку
+ Новые обновления приостановлены. Нажмите «Остановить передачу», чтобы повторить удаление текущей позиции.
+ Геолокация недоступна
+ Включите геолокацию устройства, вернитесь к заявке и повторите попытку.
+ Обновления заявок о помощи
+ Приватные уведомления о заявках, сообщениях и помощи поблизости.
+ Откройте Who Need Help, чтобы просмотреть обновление.
+
diff --git a/android/app/src/main/res/values-uk/strings.xml b/android/app/src/main/res/values-uk/strings.xml
new file mode 100644
index 0000000..59481c0
--- /dev/null
+++ b/android/app/src/main/res/values-uk/strings.xml
@@ -0,0 +1,25 @@
+
+
+ Who Need Help
+ Немає застосунку, який може відкрити це посилання.
+ Сторінка недоступна
+ Не вдалося завантажити Who Need Help. Перевірте з’єднання та повторіть спробу.
+ Повторити
+ Закрити
+ Захищене з’єднання було відхилено.
+ Цей тип посилання не підтримується.
+ Геолокація активної допомоги
+ Видима передача геолокації для активної прийнятої заявки.
+ Передача поточної геолокації
+ Who Need Help може продовжувати передачу, коли застосунок згорнуто.
+ Зупинити передачу
+ Зупинення передачі геолокації
+ Очікуємо підтвердження видалення поточної позиції із сервера.
+ Не вдалося підтвердити зупинення
+ Нові оновлення призупинено. Натисніть «Зупинити передачу», щоб повторити видалення поточної позиції.
+ Геолокація недоступна
+ Увімкніть геолокацію пристрою, поверніться до заявки та повторіть спробу.
+ Оновлення заявок про допомогу
+ Приватні сповіщення про заявки, повідомлення та допомогу поблизу.
+ Відкрийте Who Need Help, щоб переглянути оновлення.
+
diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml
index db81873..c7eb571 100644
--- a/android/app/src/main/res/values/strings.xml
+++ b/android/app/src/main/res/values/strings.xml
@@ -21,4 +21,5 @@
Enable device location, then return to the request and try again.
Help request updates
Private request, message, and nearby-help notifications.
+ Open Who Need Help to view the update.
diff --git a/assets/js/app.js b/assets/js/app.js
index 2032bf8..e507d5c 100644
--- a/assets/js/app.js
+++ b/assets/js/app.js
@@ -180,7 +180,7 @@ window.addEventListener("wnh:native-google-error", () => {
const status = form.querySelector("[data-native-google-status]")
if (status instanceof HTMLElement) {
status.textContent =
- form.dataset.nativeGoogleError || "Google sign-in could not be completed."
+ form.dataset.nativeGoogleError || document.documentElement.dataset.googleSignInError || ""
status.classList.add("text-error")
}
})
diff --git a/assets/js/hooks.js b/assets/js/hooks.js
index 26a220b..5f18335 100644
--- a/assets/js/hooks.js
+++ b/assets/js/hooks.js
@@ -3,6 +3,7 @@ import maplibregl from "maplibre-gl"
const trackingMinTimeMs = 5000
const uiLocale = () => document.documentElement.lang || undefined
+const uiText = key => document.documentElement.dataset[key] || ""
const mapLocaleByLanguage = {
ru: {
@@ -74,7 +75,7 @@ const mapUiLocale = () => {
return mapLocaleByLanguage[language] || {}
}
-const mapRegionLabel = () => mapUiLocale()["Map.Title"] || "Map"
+const mapRegionLabel = () => uiText("mapLabel") || mapUiLocale()["Map.Title"] || ""
const defaultStyle = {
version: 8,
@@ -216,7 +217,7 @@ const mapRetryButton = (element, retry) => {
button.type = "button"
button.className = "btn btn-sm btn-outline map-retry-button"
button.dataset.mapRetry = "true"
- button.textContent = element.dataset.mapRetryLabel || "Try map again"
+ button.textContent = element.dataset.mapRetryLabel || uiText("mapRetryLabel")
button.addEventListener("click", retry, {once: true})
return button
}
@@ -232,7 +233,7 @@ const mapRecenterControl = (element, recenter) => {
return {
onAdd() {
- const label = element.dataset.mapRecenterLabel || "Show location on map"
+ const label = element.dataset.mapRecenterLabel || uiText("mapRecenterLabel")
const iconNamespace = "http://www.w3.org/2000/svg"
container = document.createElement("div")
@@ -444,7 +445,7 @@ const createAidMap = element => {
link.textContent =
state.element.dataset.itemLabel ||
state.element.dataset.requestLabel ||
- "Open request"
+ uiText("openRequestLabel")
content.append(link)
}
@@ -589,7 +590,7 @@ const createAidMap = element => {
const markerElement = marker.getElement()
markerElement.dataset.markerType = point.type || "request"
- markerElement.setAttribute("aria-label", point.title || "Map marker")
+ markerElement.setAttribute("aria-label", point.title || uiText("mapMarkerLabel"))
if (point.id) {
markerElement.dataset.requestId = point.id
@@ -1087,6 +1088,7 @@ export const Hooks = {
this.native = typeof window.WhoNeedHelpAndroid?.postMessage === "function"
this.statusMessage = null
this.buttonEnabled = null
+ this.message = key => this.el.dataset[key] || ""
if (this.native && this.button) this.button.disabled = false
@@ -1191,15 +1193,17 @@ export const Hooks = {
provider: "fcm",
token: detail.token,
installation_id: detail.installation_id,
- device_label: String(detail.device_label || "Android · FCM").slice(0, 120),
+ device_label: String(
+ detail.device_label || this.el.dataset.deviceAndroidLabel || "Android · FCM"
+ ).slice(0, 120),
user_agent: navigator.userAgent.slice(0, 500)
})
this.setButtonState(true)
- this.setStatus("Push notifications are enabled on this Android device.")
+ this.setStatus(this.message("statusAndroidEnabled"))
} catch (error) {
console.warn("Android push registration failed", error)
this.setButtonState(false)
- this.setStatus("The Android push token could not be saved. Please try again.")
+ this.setStatus(this.message("statusAndroidSaveFailed"))
} finally {
if (this.button) this.button.disabled = false
}
@@ -1210,8 +1214,8 @@ export const Hooks = {
this.setButtonState(false)
this.setStatus(
reason === "permission_denied"
- ? "Notification permission was not granted."
- : "Android push notifications are not available yet."
+ ? this.message("statusPermissionDenied")
+ : this.message("statusAndroidUnavailable")
)
if (this.button) this.button.disabled = false
}
@@ -1227,7 +1231,7 @@ export const Hooks = {
if (this.native) {
this.postNative({action: "disable_push"})
this.setButtonState(false)
- this.setStatus("Push notifications are disabled on this device.")
+ this.setStatus(this.message("statusDisabled"))
return
}
@@ -1239,7 +1243,7 @@ export const Hooks = {
console.warn("Browser push unsubscribe failed", error)
} finally {
this.setButtonState(false)
- this.setStatus("Push notifications are disabled on this device.")
+ this.setStatus(this.message("statusDisabled"))
}
}
@@ -1248,13 +1252,13 @@ export const Hooks = {
if (this.native) {
this.button.disabled = true
- this.setStatus("Waiting for Android notification permission and token…")
+ this.setStatus(this.message("statusAndroidWaiting"))
this.postNative({action: "enable_push"})
return
}
if (!publicKey || !("serviceWorker" in navigator) || !("PushManager" in window)) {
- this.setStatus("Push notifications are unavailable in this browser.")
+ this.setStatus(this.message("statusBrowserUnavailable"))
return
}
@@ -1263,7 +1267,7 @@ export const Hooks = {
try {
const permission = await Notification.requestPermission()
if (permission !== "granted") {
- this.setStatus("Notification permission was not granted.")
+ this.setStatus(this.message("statusPermissionDenied"))
return
}
@@ -1278,14 +1282,16 @@ export const Hooks = {
installation_id: this.installationId(),
p256dh: json.keys?.p256dh,
auth_secret: json.keys?.auth,
- device_label: `${navigator.platform || "Browser"} · Web Push`.slice(0, 120),
+ device_label:
+ `${navigator.platform || this.el.dataset.deviceBrowserLabel || ""} · Web Push`
+ .slice(0, 120),
user_agent: navigator.userAgent.slice(0, 500)
})
this.setButtonState(true)
- this.setStatus("Push notifications are enabled on this device.")
+ this.setStatus(this.message("statusBrowserEnabled"))
} catch (error) {
console.warn("Push notification registration failed", error)
- this.setStatus("Push notifications could not be enabled.")
+ this.setStatus(this.message("statusBrowserEnableFailed"))
} finally {
this.button.disabled = false
}
@@ -1305,7 +1311,7 @@ export const Hooks = {
if (!this.native || !this.activeServerDevice()) return
this.setButtonState(true)
- this.setStatus("Push notifications are enabled on this Android device.")
+ this.setStatus(this.message("statusAndroidEnabled"))
}
this.restoreWebState = async () => {
@@ -1313,12 +1319,12 @@ export const Hooks = {
const publicKey = String(this.el.dataset.vapidPublicKey || "")
if (!publicKey || !("serviceWorker" in navigator) || !("PushManager" in window)) {
- this.setStatus("Push notifications are unavailable in this browser.")
+ this.setStatus(this.message("statusBrowserUnavailable"))
return
}
if (Notification.permission === "denied") {
- this.setStatus("Notification permission was not granted.")
+ this.setStatus(this.message("statusPermissionDenied"))
return
}
@@ -1334,13 +1340,13 @@ export const Hooks = {
if (subscription && currentKey && activeServerDevice) {
this.setButtonState(true)
- this.setStatus("Push notifications are enabled on this device.")
+ this.setStatus(this.message("statusBrowserEnabled"))
} else if (subscription && !currentKey) {
this.setStatus(
- "Push keys changed. Enable notifications to reconnect this device securely."
+ this.message("statusKeysChanged")
)
} else if (subscription || activeServerDevice) {
- this.setStatus("This browser has a push subscription. Enable it to reconnect this device.")
+ this.setStatus(this.message("statusReconnectRequired"))
}
} catch (error) {
console.warn("Push notification state could not be restored", error)
@@ -2202,7 +2208,7 @@ export const Hooks = {
const longitudeInput = document.querySelector(this.el.dataset.longitudeTarget)
if (!latitudeInput || !longitudeInput || !navigator.geolocation) {
- this.el.textContent = "Location is unavailable"
+ this.el.textContent = this.el.dataset.unavailableLabel
this.el.classList.add("btn-error")
return
}
@@ -2213,11 +2219,11 @@ export const Hooks = {
longitudeInput.value = position.coords.longitude
latitudeInput.dispatchEvent(new Event("input", {bubbles: true}))
longitudeInput.dispatchEvent(new Event("input", {bubbles: true}))
- this.el.textContent = "Location added"
+ this.el.textContent = this.el.dataset.addedLabel
this.el.classList.add("btn-success")
},
() => {
- this.el.textContent = "Location permission denied"
+ this.el.textContent = this.el.dataset.permissionDeniedLabel
this.el.classList.add("btn-error")
},
{enableHighAccuracy: true, timeout: 10000}
diff --git a/lib/who_need_help_web/components/layouts/root.html.heex b/lib/who_need_help_web/components/layouts/root.html.heex
index ac223ef..4b3ae0d 100644
--- a/lib/who_need_help_web/components/layouts/root.html.heex
+++ b/lib/who_need_help_web/components/layouts/root.html.heex
@@ -2,6 +2,12 @@
@@ -14,7 +20,9 @@
name="description"
content={
assigns[:page_description] ||
- "Who Need Help connects adults who need urgent local help with nearby volunteers."
+ gettext(
+ "Who Need Help connects adults who need urgent local help with nearby volunteers."
+ )
}
/>
<.live_title
diff --git a/lib/who_need_help_web/live/activity_live/new.ex b/lib/who_need_help_web/live/activity_live/new.ex
index 1743a3b..c93a0e7 100644
--- a/lib/who_need_help_web/live/activity_live/new.ex
+++ b/lib/who_need_help_web/live/activity_live/new.ex
@@ -313,6 +313,9 @@ defmodule WhoNeedHelpWeb.ActivityLive.New do
id="activity-location-picker"
data-latitude-target="#activity-latitude"
data-longitude-target="#activity-longitude"
+ data-unavailable-label={gettext("Location is unavailable in this browser.")}
+ data-added-label={gettext("Location added.")}
+ data-permission-denied-label={gettext("Location permission was denied.")}
class="btn btn-outline btn-sm"
>
{gettext("Use my current foreground location")}
diff --git a/lib/who_need_help_web/live/notification_live.ex b/lib/who_need_help_web/live/notification_live.ex
index 465433a..6af1b99 100644
--- a/lib/who_need_help_web/live/notification_live.ex
+++ b/lib/who_need_help_web/live/notification_live.ex
@@ -338,6 +338,33 @@ defmodule WhoNeedHelpWeb.NotificationLive do
id="push-device-registration"
phx-hook="PushNotifications"
data-vapid-public-key={@web_push_public_key || ""}
+ data-status-android-enabled={
+ gettext("Push notifications are enabled on this Android device.")
+ }
+ data-status-android-save-failed={
+ gettext("The Android push token could not be saved. Please try again.")
+ }
+ data-status-permission-denied={gettext("Notification permission was not granted.")}
+ data-status-android-unavailable={
+ gettext("Android push notifications are not available yet.")
+ }
+ data-status-disabled={gettext("Push notifications are disabled on this device.")}
+ data-status-android-waiting={
+ gettext("Waiting for Android notification permission and token…")
+ }
+ data-status-browser-unavailable={
+ gettext("Push notifications are unavailable in this browser.")
+ }
+ data-status-browser-enabled={gettext("Push notifications are enabled on this device.")}
+ data-status-browser-enable-failed={gettext("Push notifications could not be enabled.")}
+ data-status-keys-changed={
+ gettext("Push keys changed. Enable notifications to reconnect this device securely.")
+ }
+ data-status-reconnect-required={
+ gettext("This browser has a push subscription. Enable it to reconnect this device.")
+ }
+ data-device-android-label="Android · FCM"
+ data-device-browser-label={gettext("Web browser")}
class="rounded-3xl border border-base-300 bg-base-100 p-5 sm:p-6"
>
{gettext("Delivery channels and quiet hours")}
diff --git a/priv/gettext/default.pot b/priv/gettext/default.pot
index 0141dc3..1480e20 100644
--- a/priv/gettext/default.pot
+++ b/priv/gettext/default.pot
@@ -37,7 +37,7 @@ msgid "Attempting to reconnect"
msgstr ""
#: lib/who_need_help_web/components/layouts.ex:236
-#: lib/who_need_help_web/live/notification_live.ex:691
+#: lib/who_need_help_web/live/notification_live.ex:718
#, elixir-autogen, elixir-format
msgid "Categories"
msgstr ""
@@ -173,7 +173,7 @@ msgstr ""
#: lib/who_need_help_web/live/moderation_live.ex:266
#: lib/who_need_help_web/live/moderation_live.ex:702
-#: lib/who_need_help_web/live/notification_live.ex:504
+#: lib/who_need_help_web/live/notification_live.ex:531
#, elixir-autogen, elixir-format
msgid "Active"
msgstr ""
@@ -641,8 +641,8 @@ msgstr ""
#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:104
#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:137
#: lib/who_need_help_web/controllers/user_settings_html/edit.html.heex:15
-#: lib/who_need_help_web/live/notification_live.ex:441
-#: lib/who_need_help_web/live/notification_live.ex:495
+#: lib/who_need_help_web/live/notification_live.ex:468
+#: lib/who_need_help_web/live/notification_live.ex:522
#, elixir-autogen, elixir-format
msgid "Email"
msgstr ""
@@ -683,7 +683,7 @@ msgstr ""
msgid "Exact address after matching"
msgstr ""
-#: lib/who_need_help_web/live/activity_live/new.ex:321
+#: lib/who_need_help_web/live/activity_live/new.ex:324
#, elixir-autogen, elixir-format
msgid "Exact coordinates are shown only to participants you approve."
msgstr ""
@@ -845,7 +845,7 @@ msgstr ""
msgid "I confirm this is not an emergency, there is no immediate danger, and the requested task is lawful."
msgstr ""
-#: lib/who_need_help_web/live/activity_live/new.ex:345
+#: lib/who_need_help_web/live/activity_live/new.ex:348
#, elixir-autogen, elixir-format
msgid "I will approve participants individually, keep sensitive details in the approved group, and use an appropriate public first meeting point."
msgstr ""
@@ -910,8 +910,8 @@ msgstr ""
msgid "Join requests close"
msgstr ""
-#: lib/who_need_help_web/live/activity_live/new.ex:329
-#: lib/who_need_help_web/live/notification_live.ex:659
+#: lib/who_need_help_web/live/activity_live/new.ex:332
+#: lib/who_need_help_web/live/notification_live.ex:686
#: lib/who_need_help_web/live/request_live/new.ex:668
#, elixir-autogen, elixir-format
msgid "Latitude"
@@ -968,8 +968,8 @@ msgstr ""
msgid "Logged out successfully."
msgstr ""
-#: lib/who_need_help_web/live/activity_live/new.ex:336
-#: lib/who_need_help_web/live/notification_live.ex:673
+#: lib/who_need_help_web/live/activity_live/new.ex:339
+#: lib/who_need_help_web/live/notification_live.ex:700
#: lib/who_need_help_web/live/request_live/new.ex:682
#, elixir-autogen, elixir-format
msgid "Longitude"
@@ -1163,7 +1163,7 @@ msgstr ""
msgid "Not for emergencies"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:721
+#: lib/who_need_help_web/live/notification_live.ex:748
#: lib/who_need_help_web/live/request_live/index.ex:297
#: lib/who_need_help_web/live/request_live/index.ex:298
#: lib/who_need_help_web/live/request_live/index.ex:409
@@ -1399,7 +1399,7 @@ msgstr ""
msgid "Publish a clear public plan. Join requests stay pending until you approve them."
msgstr ""
-#: lib/who_need_help_web/live/activity_live/new.ex:357
+#: lib/who_need_help_web/live/activity_live/new.ex:360
#, elixir-autogen, elixir-format
msgid "Publish activity"
msgstr ""
@@ -1414,7 +1414,7 @@ msgstr ""
msgid "Publish request"
msgstr ""
-#: lib/who_need_help_web/live/activity_live/new.ex:355
+#: lib/who_need_help_web/live/activity_live/new.ex:358
#: lib/who_need_help_web/live/request_live/new.ex:742
#, elixir-autogen, elixir-format
msgid "Publishing…"
@@ -1654,7 +1654,7 @@ msgstr ""
msgid "Save profile"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:723
+#: lib/who_need_help_web/live/notification_live.ex:750
#: lib/who_need_help_web/live/request_live/index.ex:301
#: lib/who_need_help_web/live/request_live/index.ex:302
#: lib/who_need_help_web/live/request_live/index.ex:411
@@ -1713,7 +1713,7 @@ msgstr ""
msgid "Signal updated."
msgstr ""
-#: lib/who_need_help_web/components/layouts/root.html.heex:40
+#: lib/who_need_help_web/components/layouts/root.html.heex:48
#, elixir-autogen, elixir-format
msgid "Skip to main content"
msgstr ""
@@ -1967,7 +1967,7 @@ msgstr ""
msgid "To see sent emails, visit"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:722
+#: lib/who_need_help_web/live/notification_live.ex:749
#: lib/who_need_help_web/live/request_live/index.ex:299
#: lib/who_need_help_web/live/request_live/index.ex:300
#: lib/who_need_help_web/live/request_live/index.ex:410
@@ -2044,7 +2044,7 @@ msgstr ""
msgid "Update email instructions"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:716
+#: lib/who_need_help_web/live/notification_live.ex:743
#: lib/who_need_help_web/live/request_live/index.ex:406
#: lib/who_need_help_web/live/request_live/new.ex:447
#, elixir-autogen, elixir-format
@@ -2072,7 +2072,7 @@ msgstr ""
msgid "Use light theme"
msgstr ""
-#: lib/who_need_help_web/live/activity_live/new.ex:318
+#: lib/who_need_help_web/live/activity_live/new.ex:321
#, elixir-autogen, elixir-format
msgid "Use my current foreground location"
msgstr ""
@@ -4038,7 +4038,7 @@ msgstr ""
msgid "Date"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:656
+#: lib/who_need_help_web/live/notification_live.ex:683
#: lib/who_need_help_web/live/request_live/new.ex:660
#, elixir-autogen, elixir-format
msgid "Enter coordinates manually"
@@ -4125,13 +4125,15 @@ msgstr ""
msgid "In 3 hours"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:574
+#: lib/who_need_help_web/live/activity_live/new.ex:316
+#: lib/who_need_help_web/live/notification_live.ex:601
#: lib/who_need_help_web/live/request_live/new.ex:484
#, elixir-autogen, elixir-format
msgid "Location is unavailable in this browser."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:576
+#: lib/who_need_help_web/live/activity_live/new.ex:318
+#: lib/who_need_help_web/live/notification_live.ex:603
#: lib/who_need_help_web/live/request_live/new.ex:486
#, elixir-autogen, elixir-format
msgid "Location permission was denied."
@@ -4383,7 +4385,7 @@ msgstr ""
msgid "Use another email"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:609
+#: lib/who_need_help_web/live/notification_live.ex:636
#: lib/who_need_help_web/live/request_live/new.ex:595
#, elixir-autogen, elixir-format
msgid "Use my location"
@@ -4566,6 +4568,7 @@ msgstr ""
msgid "Load more in this area"
msgstr ""
+#: lib/who_need_help_web/components/layouts/root.html.heex:5
#: lib/who_need_help_web/live/request_live/index.ex:475
#, elixir-autogen, elixir-format
msgid "Map"
@@ -4597,6 +4600,7 @@ msgstr ""
msgid "Only requests from the selected map area will be loaded."
msgstr ""
+#: lib/who_need_help_web/components/layouts/root.html.heex:8
#: lib/who_need_help_web/live/request_live/index.ex:585
#, elixir-autogen, elixir-format
msgid "Open request"
@@ -4634,11 +4638,12 @@ msgstr ""
msgid "Together"
msgstr ""
+#: lib/who_need_help_web/components/layouts/root.html.heex:6
#: lib/who_need_help_web/controllers/page_html/home.html.heex:160
#: lib/who_need_help_web/live/activity_live/index.ex:496
#: lib/who_need_help_web/live/activity_live/show.ex:545
-#: lib/who_need_help_web/live/notification_live.ex:575
-#: lib/who_need_help_web/live/notification_live.ex:594
+#: lib/who_need_help_web/live/notification_live.ex:602
+#: lib/who_need_help_web/live/notification_live.ex:621
#: lib/who_need_help_web/live/request_live/index.ex:584
#: lib/who_need_help_web/live/request_live/new.ex:485
#: lib/who_need_help_web/live/request_live/new.ex:563
@@ -4684,7 +4689,7 @@ msgstr[1] ""
msgid "A request matching one of your nearby-help alerts is available.\n\nOpen Who Need Help to review the public details:\n%{url}\n\nYou can change nearby alerts and email delivery in Notification settings."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:439
+#: lib/who_need_help_web/live/notification_live.ex:466
#, elixir-autogen, elixir-format
msgid "Acceptance, arrival, completion, and cancellation"
msgstr ""
@@ -4694,22 +4699,22 @@ msgstr ""
msgid "Active or unresolved product state must be handled first."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:570
+#: lib/who_need_help_web/live/notification_live.ex:597
#, elixir-autogen, elixir-format
msgid "Alert area selected."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:569
+#: lib/who_need_help_web/live/notification_live.ex:596
#, elixir-autogen, elixir-format
msgid "Alert area selected. Drag the pin to move it."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:549
+#: lib/who_need_help_web/live/notification_live.ex:576
#, elixir-autogen, elixir-format
msgid "Alert name"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:612
+#: lib/who_need_help_web/live/notification_live.ex:639
#, elixir-autogen, elixir-format
msgid "Alert radius"
msgstr ""
@@ -4720,12 +4725,12 @@ msgstr ""
msgid "Alert was not found."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:445
+#: lib/who_need_help_web/live/notification_live.ex:472
#, elixir-autogen, elixir-format
msgid "Allow email notifications"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:424
+#: lib/who_need_help_web/live/notification_live.ex:451
#, elixir-autogen, elixir-format
msgid "Allow push notifications"
msgstr ""
@@ -4740,17 +4745,17 @@ msgstr ""
msgid "Automatic erasure is disabled: no jurisdiction-specific retention and anonymisation policy is configured. Do not mark the case resolved until the approved data action is completed and recorded."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:740
+#: lib/who_need_help_web/live/notification_live.ex:767
#, elixir-autogen, elixir-format
msgid "Available days"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:773
+#: lib/who_need_help_web/live/notification_live.ex:800
#, elixir-autogen, elixir-format
msgid "Available from (optional)"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:778
+#: lib/who_need_help_web/live/notification_live.ex:805
#, elixir-autogen, elixir-format
msgid "Available until (optional)"
msgstr ""
@@ -4776,23 +4781,23 @@ msgstr ""
msgid "Cancelling…"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:537
+#: lib/who_need_help_web/live/notification_live.ex:564
#, elixir-autogen, elixir-format
msgid "Choose an area, categories, urgency, and the times when you are available."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:784
+#: lib/who_need_help_web/live/notification_live.ex:811
#, elixir-autogen, elixir-format
msgid "Choose at least one way to receive this nearby alert."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:568
-#: lib/who_need_help_web/live/notification_live.ex:649
+#: lib/who_need_help_web/live/notification_live.ex:595
+#: lib/who_need_help_web/live/notification_live.ex:676
#, elixir-autogen, elixir-format
msgid "Choose the private center of your alert area."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:599
+#: lib/who_need_help_web/live/notification_live.ex:626
#, elixir-autogen, elixir-format
msgid "Click the map or drag the green pin to move your private alert area"
msgstr ""
@@ -4818,12 +4823,12 @@ msgstr ""
msgid "Count"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:535
+#: lib/who_need_help_web/live/notification_live.ex:562
#, elixir-autogen, elixir-format
msgid "Create a nearby alert"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:799
+#: lib/who_need_help_web/live/notification_live.ex:826
#, elixir-autogen, elixir-format
msgid "Create nearby alert"
msgstr ""
@@ -4833,22 +4838,22 @@ msgstr ""
msgid "Daily aggregate counters only. No user ID, email, coordinate, request text, chat text, medicine name, or device credential is stored here."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:524
+#: lib/who_need_help_web/live/notification_live.ex:551
#, elixir-autogen, elixir-format
msgid "Delete"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:521
+#: lib/who_need_help_web/live/notification_live.ex:548
#, elixir-autogen, elixir-format
msgid "Delete this nearby alert?"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:782
+#: lib/who_need_help_web/live/notification_live.ex:809
#, elixir-autogen, elixir-format
msgid "Delivery channels"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:343
+#: lib/who_need_help_web/live/notification_live.ex:370
#, elixir-autogen, elixir-format
msgid "Delivery channels and quiet hours"
msgstr ""
@@ -4863,7 +4868,7 @@ msgstr ""
msgid "Dimension"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:397
+#: lib/who_need_help_web/live/notification_live.ex:424
#, elixir-autogen, elixir-format
msgid "Disable"
msgstr ""
@@ -4873,19 +4878,19 @@ msgstr ""
msgid "Download my data"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:571
-#: lib/who_need_help_web/live/notification_live.ex:572
+#: lib/who_need_help_web/live/notification_live.ex:598
+#: lib/who_need_help_web/live/notification_live.ex:599
#, elixir-autogen, elixir-format
msgid "Drag to move the alert area"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:795
+#: lib/who_need_help_web/live/notification_live.ex:822
#, elixir-autogen, elixir-format
msgid "Email notification"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:358
-#: lib/who_need_help_web/live/notification_live.ex:361
+#: lib/who_need_help_web/live/notification_live.ex:385
+#: lib/who_need_help_web/live/notification_live.ex:388
#, elixir-autogen, elixir-format
msgid "Enable push on this device"
msgstr ""
@@ -4895,12 +4900,12 @@ msgstr ""
msgid "Follow request updates and choose which nearby needs should reach this device."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:749
+#: lib/who_need_help_web/live/notification_live.ex:776
#, elixir-autogen, elixir-format
msgid "Fri"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:458
+#: lib/who_need_help_web/live/notification_live.ex:485
#, elixir-autogen, elixir-format
msgid "From"
msgstr ""
@@ -4910,6 +4915,7 @@ msgstr ""
msgid "Google could not be connected. Please try again."
msgstr ""
+#: lib/who_need_help_web/components/layouts/root.html.heex:10
#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:79
#, elixir-autogen, elixir-format
msgid "Google sign-in could not be completed. Please try again."
@@ -4950,7 +4956,7 @@ msgstr ""
msgid "Helper's live location"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:555
+#: lib/who_need_help_web/live/notification_live.ex:582
#, elixir-autogen, elixir-format
msgid "Home area"
msgstr ""
@@ -4971,7 +4977,7 @@ msgstr ""
msgid "Inbox"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:693
+#: lib/who_need_help_web/live/notification_live.ex:720
#, elixir-autogen, elixir-format
msgid "Leave every category unchecked to receive all matching requests."
msgstr ""
@@ -5011,7 +5017,7 @@ msgstr ""
msgid "Metric"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:745
+#: lib/who_need_help_web/live/notification_live.ex:772
#, elixir-autogen, elixir-format
msgid "Mon"
msgstr ""
@@ -5026,13 +5032,13 @@ msgstr ""
msgid "Nearby alert deleted."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:429
+#: lib/who_need_help_web/live/notification_live.ex:456
#: lib/who_need_help_web/live/request_live/index.ex:362
#, elixir-autogen, elixir-format
msgid "Nearby requests"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:450
+#: lib/who_need_help_web/live/notification_live.ex:477
#, elixir-autogen, elixir-format
msgid "Nearby requests by email"
msgstr ""
@@ -5043,7 +5049,7 @@ msgstr ""
msgid "New help request nearby"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:434
+#: lib/who_need_help_web/live/notification_live.ex:461
#, elixir-autogen, elixir-format
msgid "New private messages"
msgstr ""
@@ -5058,7 +5064,7 @@ msgstr ""
msgid "No aggregate events recorded yet."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:476
+#: lib/who_need_help_web/live/notification_live.ex:503
#, elixir-autogen, elixir-format
msgid "No nearby alerts configured yet."
msgstr ""
@@ -5085,7 +5091,7 @@ msgstr ""
msgid "Notification preferences saved."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:345
+#: lib/who_need_help_web/live/notification_live.ex:372
#, elixir-autogen, elixir-format
msgid "Notification text never contains chat messages or exact coordinates."
msgstr ""
@@ -5109,17 +5115,17 @@ msgstr ""
msgid "Operations"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:638
+#: lib/who_need_help_web/live/notification_live.ex:665
#, elixir-autogen, elixir-format
msgid "Other users never see this saved point."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:515
+#: lib/who_need_help_web/live/notification_live.ex:542
#, elixir-autogen, elixir-format
msgid "Pause"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:504
+#: lib/who_need_help_web/live/notification_live.ex:531
#, elixir-autogen, elixir-format
msgid "Paused"
msgstr ""
@@ -5129,12 +5135,12 @@ msgstr ""
msgid "Plans changed"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:554
+#: lib/who_need_help_web/live/notification_live.ex:581
#, elixir-autogen, elixir-format
msgid "Private area label"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:637
+#: lib/who_need_help_web/live/notification_live.ex:664
#, elixir-autogen, elixir-format
msgid "Private matching center"
msgstr ""
@@ -5151,17 +5157,17 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:492
+#: lib/who_need_help_web/live/notification_live.ex:519
#, elixir-autogen, elixir-format
msgid "Push"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:359
+#: lib/who_need_help_web/live/notification_live.ex:386
#, elixir-autogen, elixir-format
msgid "Push enabled on this device"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:790
+#: lib/who_need_help_web/live/notification_live.ex:817
#, elixir-autogen, elixir-format
msgid "Push notification"
msgstr ""
@@ -5201,7 +5207,7 @@ msgstr ""
msgid "Requester's live location"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:515
+#: lib/who_need_help_web/live/notification_live.ex:542
#, elixir-autogen, elixir-format
msgid "Resume"
msgstr ""
@@ -5211,12 +5217,12 @@ msgstr ""
msgid "Run deletion preflight"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:750
+#: lib/who_need_help_web/live/notification_live.ex:777
#, elixir-autogen, elixir-format
msgid "Sat"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:461
+#: lib/who_need_help_web/live/notification_live.ex:488
#, elixir-autogen, elixir-format
msgid "Save preferences"
msgstr ""
@@ -5231,7 +5237,7 @@ msgstr ""
msgid "Stay available without refreshing"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:751
+#: lib/who_need_help_web/live/notification_live.ex:778
#, elixir-autogen, elixir-format
msgid "Sun"
msgstr ""
@@ -5241,7 +5247,7 @@ msgstr ""
msgid "The linked account no longer exists."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:592
+#: lib/who_need_help_web/live/notification_live.ex:619
#, elixir-autogen, elixir-format
msgid "The map is unavailable. Enter coordinates manually."
msgstr ""
@@ -5256,7 +5262,7 @@ msgstr ""
msgid "The request is not linked to an account."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:472
+#: lib/who_need_help_web/live/notification_live.ex:499
#, elixir-autogen, elixir-format
msgid "The saved center is private and is used only to find matching requests."
msgstr ""
@@ -5272,27 +5278,27 @@ msgstr ""
msgid "This is not an account-deletion case."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:748
+#: lib/who_need_help_web/live/notification_live.ex:775
#, elixir-autogen, elixir-format
msgid "Thu"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:746
+#: lib/who_need_help_web/live/notification_live.ex:773
#, elixir-autogen, elixir-format
msgid "Tue"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:459
+#: lib/who_need_help_web/live/notification_live.ex:486
#, elixir-autogen, elixir-format
msgid "Until"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:550
+#: lib/who_need_help_web/live/notification_live.ex:577
#, elixir-autogen, elixir-format
msgid "Urgent medicine near home"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:455
+#: lib/who_need_help_web/live/notification_live.ex:482
#, elixir-autogen, elixir-format
msgid "Use quiet hours"
msgstr ""
@@ -5302,17 +5308,18 @@ msgstr ""
msgid "Verify the requester contact first."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:368
+#: lib/who_need_help_web/live/notification_live.ex:395
#, elixir-autogen, elixir-format
msgid "Web Push keys are not configured in this local environment yet."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:380
+#: lib/who_need_help_web/live/notification_live.ex:367
+#: lib/who_need_help_web/live/notification_live.ex:407
#, elixir-autogen, elixir-format
msgid "Web browser"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:747
+#: lib/who_need_help_web/live/notification_live.ex:774
#, elixir-autogen, elixir-format
msgid "Wed"
msgstr ""
@@ -5329,12 +5336,12 @@ msgstr ""
msgid "You left this match. The request is open for another helper if time remains."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:366
+#: lib/who_need_help_web/live/notification_live.ex:393
#, elixir-autogen, elixir-format
msgid "Your browser will ask for notification permission."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:470
+#: lib/who_need_help_web/live/notification_live.ex:497
#, elixir-autogen, elixir-format
msgid "Your nearby alerts"
msgstr ""
@@ -5365,6 +5372,7 @@ msgstr ""
msgid "WebGL is unavailable in this browser, so the full map cannot start. Select an example below or retry the map."
msgstr ""
+#: lib/who_need_help_web/components/layouts/root.html.heex:7
#: lib/who_need_help_web/live/activity_live/index.ex:497
#: lib/who_need_help_web/live/activity_live/show.ex:546
#: lib/who_need_help_web/live/request_live/show.ex:1278
@@ -6579,3 +6587,73 @@ msgstr ""
#, elixir-autogen, elixir-format
msgid "Search languages"
msgstr ""
+
+#: lib/who_need_help_web/live/notification_live.ex:349
+#, elixir-autogen, elixir-format
+msgid "Android push notifications are not available yet."
+msgstr ""
+
+#: lib/who_need_help_web/live/activity_live/new.ex:317
+#, elixir-autogen, elixir-format
+msgid "Location added."
+msgstr ""
+
+#: lib/who_need_help_web/components/layouts/root.html.heex:9
+#, elixir-autogen, elixir-format
+msgid "Map marker"
+msgstr ""
+
+#: lib/who_need_help_web/live/notification_live.ex:347
+#, elixir-autogen, elixir-format
+msgid "Notification permission was not granted."
+msgstr ""
+
+#: lib/who_need_help_web/live/notification_live.ex:361
+#, elixir-autogen, elixir-format
+msgid "Push keys changed. Enable notifications to reconnect this device securely."
+msgstr ""
+
+#: lib/who_need_help_web/live/notification_live.ex:351
+#, elixir-autogen, elixir-format
+msgid "Push notifications are disabled on this device."
+msgstr ""
+
+#: lib/who_need_help_web/live/notification_live.ex:342
+#, elixir-autogen, elixir-format
+msgid "Push notifications are enabled on this Android device."
+msgstr ""
+
+#: lib/who_need_help_web/live/notification_live.ex:358
+#, elixir-autogen, elixir-format
+msgid "Push notifications are enabled on this device."
+msgstr ""
+
+#: lib/who_need_help_web/live/notification_live.ex:356
+#, elixir-autogen, elixir-format
+msgid "Push notifications are unavailable in this browser."
+msgstr ""
+
+#: lib/who_need_help_web/live/notification_live.ex:359
+#, elixir-autogen, elixir-format
+msgid "Push notifications could not be enabled."
+msgstr ""
+
+#: lib/who_need_help_web/live/notification_live.ex:345
+#, elixir-autogen, elixir-format
+msgid "The Android push token could not be saved. Please try again."
+msgstr ""
+
+#: lib/who_need_help_web/live/notification_live.ex:364
+#, elixir-autogen, elixir-format
+msgid "This browser has a push subscription. Enable it to reconnect this device."
+msgstr ""
+
+#: lib/who_need_help_web/live/notification_live.ex:353
+#, elixir-autogen, elixir-format
+msgid "Waiting for Android notification permission and token…"
+msgstr ""
+
+#: lib/who_need_help_web/components/layouts/root.html.heex:23
+#, elixir-autogen, elixir-format
+msgid "Who Need Help connects adults who need urgent local help with nearby volunteers."
+msgstr ""
diff --git a/priv/gettext/en/LC_MESSAGES/default.po b/priv/gettext/en/LC_MESSAGES/default.po
index e466e52..07b938d 100644
--- a/priv/gettext/en/LC_MESSAGES/default.po
+++ b/priv/gettext/en/LC_MESSAGES/default.po
@@ -37,7 +37,7 @@ msgid "Attempting to reconnect"
msgstr "Attempting to reconnect"
#: lib/who_need_help_web/components/layouts.ex:236
-#: lib/who_need_help_web/live/notification_live.ex:691
+#: lib/who_need_help_web/live/notification_live.ex:718
#, elixir-autogen, elixir-format
msgid "Categories"
msgstr "Categories"
@@ -173,7 +173,7 @@ msgstr "Action center"
#: lib/who_need_help_web/live/moderation_live.ex:266
#: lib/who_need_help_web/live/moderation_live.ex:702
-#: lib/who_need_help_web/live/notification_live.ex:504
+#: lib/who_need_help_web/live/notification_live.ex:531
#, elixir-autogen, elixir-format
msgid "Active"
msgstr "Active"
@@ -641,8 +641,8 @@ msgstr "Double-blind review"
#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:104
#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:137
#: lib/who_need_help_web/controllers/user_settings_html/edit.html.heex:15
-#: lib/who_need_help_web/live/notification_live.ex:441
-#: lib/who_need_help_web/live/notification_live.ex:495
+#: lib/who_need_help_web/live/notification_live.ex:468
+#: lib/who_need_help_web/live/notification_live.ex:522
#, elixir-autogen, elixir-format
msgid "Email"
msgstr "Email"
@@ -683,7 +683,7 @@ msgstr "Enter handover code"
msgid "Exact address after matching"
msgstr "Exact address after matching"
-#: lib/who_need_help_web/live/activity_live/new.ex:321
+#: lib/who_need_help_web/live/activity_live/new.ex:324
#, elixir-autogen, elixir-format
msgid "Exact coordinates are shown only to participants you approve."
msgstr "Exact coordinates are shown only to participants you approve."
@@ -845,7 +845,7 @@ msgstr "I confirm there is no immediate danger, people and vehicles are away fro
msgid "I confirm this is not an emergency, there is no immediate danger, and the requested task is lawful."
msgstr "I confirm this is not an emergency, there is no immediate danger, and the requested task is lawful."
-#: lib/who_need_help_web/live/activity_live/new.ex:345
+#: lib/who_need_help_web/live/activity_live/new.ex:348
#, elixir-autogen, elixir-format
msgid "I will approve participants individually, keep sensitive details in the approved group, and use an appropriate public first meeting point."
msgstr "I will approve participants individually, keep sensitive details in the approved group, and use an appropriate public first meeting point."
@@ -910,8 +910,8 @@ msgstr "Join requests are closed."
msgid "Join requests close"
msgstr "Join requests close"
-#: lib/who_need_help_web/live/activity_live/new.ex:329
-#: lib/who_need_help_web/live/notification_live.ex:659
+#: lib/who_need_help_web/live/activity_live/new.ex:332
+#: lib/who_need_help_web/live/notification_live.ex:686
#: lib/who_need_help_web/live/request_live/new.ex:668
#, elixir-autogen, elixir-format
msgid "Latitude"
@@ -968,8 +968,8 @@ msgstr "Log in only this time"
msgid "Logged out successfully."
msgstr "Logged out successfully."
-#: lib/who_need_help_web/live/activity_live/new.ex:336
-#: lib/who_need_help_web/live/notification_live.ex:673
+#: lib/who_need_help_web/live/activity_live/new.ex:339
+#: lib/who_need_help_web/live/notification_live.ex:700
#: lib/who_need_help_web/live/request_live/new.ex:682
#, elixir-autogen, elixir-format
msgid "Longitude"
@@ -1163,7 +1163,7 @@ msgstr "Not an emergency or medical service. In immediate danger, contact local
msgid "Not for emergencies"
msgstr "Not for emergencies"
-#: lib/who_need_help_web/live/notification_live.ex:721
+#: lib/who_need_help_web/live/notification_live.ex:748
#: lib/who_need_help_web/live/request_live/index.ex:297
#: lib/who_need_help_web/live/request_live/index.ex:298
#: lib/who_need_help_web/live/request_live/index.ex:409
@@ -1399,7 +1399,7 @@ msgstr "Public reputation"
msgid "Publish a clear public plan. Join requests stay pending until you approve them."
msgstr "Publish a clear public plan. Join requests stay pending until you approve them."
-#: lib/who_need_help_web/live/activity_live/new.ex:357
+#: lib/who_need_help_web/live/activity_live/new.ex:360
#, elixir-autogen, elixir-format
msgid "Publish activity"
msgstr "Publish activity"
@@ -1414,7 +1414,7 @@ msgstr "Publish proposal"
msgid "Publish request"
msgstr "Publish request"
-#: lib/who_need_help_web/live/activity_live/new.ex:355
+#: lib/who_need_help_web/live/activity_live/new.ex:358
#: lib/who_need_help_web/live/request_live/new.ex:742
#, elixir-autogen, elixir-format
msgid "Publishing…"
@@ -1654,7 +1654,7 @@ msgstr "Save Password"
msgid "Save profile"
msgstr "Save profile"
-#: lib/who_need_help_web/live/notification_live.ex:723
+#: lib/who_need_help_web/live/notification_live.ex:750
#: lib/who_need_help_web/live/request_live/index.ex:301
#: lib/who_need_help_web/live/request_live/index.ex:302
#: lib/who_need_help_web/live/request_live/index.ex:411
@@ -1713,7 +1713,7 @@ msgstr "Sign up"
msgid "Signal updated."
msgstr "Signal updated."
-#: lib/who_need_help_web/components/layouts/root.html.heex:40
+#: lib/who_need_help_web/components/layouts/root.html.heex:48
#, elixir-autogen, elixir-format
msgid "Skip to main content"
msgstr "Skip to main content"
@@ -1967,7 +1967,7 @@ msgstr "This request is unavailable."
msgid "To see sent emails, visit"
msgstr "To see sent emails, visit"
-#: lib/who_need_help_web/live/notification_live.ex:722
+#: lib/who_need_help_web/live/notification_live.ex:749
#: lib/who_need_help_web/live/request_live/index.ex:299
#: lib/who_need_help_web/live/request_live/index.ex:300
#: lib/who_need_help_web/live/request_live/index.ex:410
@@ -2044,7 +2044,7 @@ msgstr "Unique people"
msgid "Update email instructions"
msgstr "Update email instructions"
-#: lib/who_need_help_web/live/notification_live.ex:716
+#: lib/who_need_help_web/live/notification_live.ex:743
#: lib/who_need_help_web/live/request_live/index.ex:406
#: lib/who_need_help_web/live/request_live/new.ex:447
#, elixir-autogen, elixir-format
@@ -2072,7 +2072,7 @@ msgstr "Use dark theme"
msgid "Use light theme"
msgstr "Use light theme"
-#: lib/who_need_help_web/live/activity_live/new.ex:318
+#: lib/who_need_help_web/live/activity_live/new.ex:321
#, elixir-autogen, elixir-format
msgid "Use my current foreground location"
msgstr "Use my current foreground location"
@@ -4038,7 +4038,7 @@ msgstr ""
msgid "Date"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:656
+#: lib/who_need_help_web/live/notification_live.ex:683
#: lib/who_need_help_web/live/request_live/new.ex:660
#, elixir-autogen, elixir-format
msgid "Enter coordinates manually"
@@ -4125,13 +4125,15 @@ msgstr ""
msgid "In 3 hours"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:574
+#: lib/who_need_help_web/live/activity_live/new.ex:316
+#: lib/who_need_help_web/live/notification_live.ex:601
#: lib/who_need_help_web/live/request_live/new.ex:484
#, elixir-autogen, elixir-format
msgid "Location is unavailable in this browser."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:576
+#: lib/who_need_help_web/live/activity_live/new.ex:318
+#: lib/who_need_help_web/live/notification_live.ex:603
#: lib/who_need_help_web/live/request_live/new.ex:486
#, elixir-autogen, elixir-format
msgid "Location permission was denied."
@@ -4383,7 +4385,7 @@ msgstr ""
msgid "Use another email"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:609
+#: lib/who_need_help_web/live/notification_live.ex:636
#: lib/who_need_help_web/live/request_live/new.ex:595
#, elixir-autogen, elixir-format, fuzzy
msgid "Use my location"
@@ -4566,6 +4568,7 @@ msgstr ""
msgid "Load more in this area"
msgstr "Load more in this area"
+#: lib/who_need_help_web/components/layouts/root.html.heex:5
#: lib/who_need_help_web/live/request_live/index.ex:475
#, elixir-autogen, elixir-format
msgid "Map"
@@ -4597,6 +4600,7 @@ msgstr "No open requests in this area"
msgid "Only requests from the selected map area will be loaded."
msgstr ""
+#: lib/who_need_help_web/components/layouts/root.html.heex:8
#: lib/who_need_help_web/live/request_live/index.ex:585
#, elixir-autogen, elixir-format
msgid "Open request"
@@ -4634,11 +4638,12 @@ msgstr "Static preview"
msgid "Together"
msgstr ""
+#: lib/who_need_help_web/components/layouts/root.html.heex:6
#: lib/who_need_help_web/controllers/page_html/home.html.heex:160
#: lib/who_need_help_web/live/activity_live/index.ex:496
#: lib/who_need_help_web/live/activity_live/show.ex:545
-#: lib/who_need_help_web/live/notification_live.ex:575
-#: lib/who_need_help_web/live/notification_live.ex:594
+#: lib/who_need_help_web/live/notification_live.ex:602
+#: lib/who_need_help_web/live/notification_live.ex:621
#: lib/who_need_help_web/live/request_live/index.ex:584
#: lib/who_need_help_web/live/request_live/new.ex:485
#: lib/who_need_help_web/live/request_live/new.ex:563
@@ -4684,7 +4689,7 @@ msgstr[1] ""
msgid "A request matching one of your nearby-help alerts is available.\n\nOpen Who Need Help to review the public details:\n%{url}\n\nYou can change nearby alerts and email delivery in Notification settings."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:439
+#: lib/who_need_help_web/live/notification_live.ex:466
#, elixir-autogen, elixir-format
msgid "Acceptance, arrival, completion, and cancellation"
msgstr ""
@@ -4694,22 +4699,22 @@ msgstr ""
msgid "Active or unresolved product state must be handled first."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:570
+#: lib/who_need_help_web/live/notification_live.ex:597
#, elixir-autogen, elixir-format
msgid "Alert area selected."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:569
+#: lib/who_need_help_web/live/notification_live.ex:596
#, elixir-autogen, elixir-format
msgid "Alert area selected. Drag the pin to move it."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:549
+#: lib/who_need_help_web/live/notification_live.ex:576
#, elixir-autogen, elixir-format
msgid "Alert name"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:612
+#: lib/who_need_help_web/live/notification_live.ex:639
#, elixir-autogen, elixir-format
msgid "Alert radius"
msgstr ""
@@ -4720,12 +4725,12 @@ msgstr ""
msgid "Alert was not found."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:445
+#: lib/who_need_help_web/live/notification_live.ex:472
#, elixir-autogen, elixir-format
msgid "Allow email notifications"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:424
+#: lib/who_need_help_web/live/notification_live.ex:451
#, elixir-autogen, elixir-format
msgid "Allow push notifications"
msgstr ""
@@ -4740,17 +4745,17 @@ msgstr ""
msgid "Automatic erasure is disabled: no jurisdiction-specific retention and anonymisation policy is configured. Do not mark the case resolved until the approved data action is completed and recorded."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:740
+#: lib/who_need_help_web/live/notification_live.ex:767
#, elixir-autogen, elixir-format
msgid "Available days"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:773
+#: lib/who_need_help_web/live/notification_live.ex:800
#, elixir-autogen, elixir-format
msgid "Available from (optional)"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:778
+#: lib/who_need_help_web/live/notification_live.ex:805
#, elixir-autogen, elixir-format
msgid "Available until (optional)"
msgstr ""
@@ -4776,23 +4781,23 @@ msgstr ""
msgid "Cancelling…"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:537
+#: lib/who_need_help_web/live/notification_live.ex:564
#, elixir-autogen, elixir-format
msgid "Choose an area, categories, urgency, and the times when you are available."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:784
+#: lib/who_need_help_web/live/notification_live.ex:811
#, elixir-autogen, elixir-format
msgid "Choose at least one way to receive this nearby alert."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:568
-#: lib/who_need_help_web/live/notification_live.ex:649
+#: lib/who_need_help_web/live/notification_live.ex:595
+#: lib/who_need_help_web/live/notification_live.ex:676
#, elixir-autogen, elixir-format
msgid "Choose the private center of your alert area."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:599
+#: lib/who_need_help_web/live/notification_live.ex:626
#, elixir-autogen, elixir-format
msgid "Click the map or drag the green pin to move your private alert area"
msgstr ""
@@ -4818,12 +4823,12 @@ msgstr ""
msgid "Count"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:535
+#: lib/who_need_help_web/live/notification_live.ex:562
#, elixir-autogen, elixir-format
msgid "Create a nearby alert"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:799
+#: lib/who_need_help_web/live/notification_live.ex:826
#, elixir-autogen, elixir-format
msgid "Create nearby alert"
msgstr ""
@@ -4833,22 +4838,22 @@ msgstr ""
msgid "Daily aggregate counters only. No user ID, email, coordinate, request text, chat text, medicine name, or device credential is stored here."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:524
+#: lib/who_need_help_web/live/notification_live.ex:551
#, elixir-autogen, elixir-format
msgid "Delete"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:521
+#: lib/who_need_help_web/live/notification_live.ex:548
#, elixir-autogen, elixir-format
msgid "Delete this nearby alert?"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:782
+#: lib/who_need_help_web/live/notification_live.ex:809
#, elixir-autogen, elixir-format
msgid "Delivery channels"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:343
+#: lib/who_need_help_web/live/notification_live.ex:370
#, elixir-autogen, elixir-format
msgid "Delivery channels and quiet hours"
msgstr ""
@@ -4863,7 +4868,7 @@ msgstr ""
msgid "Dimension"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:397
+#: lib/who_need_help_web/live/notification_live.ex:424
#, elixir-autogen, elixir-format
msgid "Disable"
msgstr ""
@@ -4873,19 +4878,19 @@ msgstr ""
msgid "Download my data"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:571
-#: lib/who_need_help_web/live/notification_live.ex:572
+#: lib/who_need_help_web/live/notification_live.ex:598
+#: lib/who_need_help_web/live/notification_live.ex:599
#, elixir-autogen, elixir-format
msgid "Drag to move the alert area"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:795
+#: lib/who_need_help_web/live/notification_live.ex:822
#, elixir-autogen, elixir-format
msgid "Email notification"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:358
-#: lib/who_need_help_web/live/notification_live.ex:361
+#: lib/who_need_help_web/live/notification_live.ex:385
+#: lib/who_need_help_web/live/notification_live.ex:388
#, elixir-autogen, elixir-format
msgid "Enable push on this device"
msgstr ""
@@ -4895,12 +4900,12 @@ msgstr ""
msgid "Follow request updates and choose which nearby needs should reach this device."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:749
+#: lib/who_need_help_web/live/notification_live.ex:776
#, elixir-autogen, elixir-format
msgid "Fri"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:458
+#: lib/who_need_help_web/live/notification_live.ex:485
#, elixir-autogen, elixir-format
msgid "From"
msgstr ""
@@ -4910,6 +4915,7 @@ msgstr ""
msgid "Google could not be connected. Please try again."
msgstr ""
+#: lib/who_need_help_web/components/layouts/root.html.heex:10
#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:79
#, elixir-autogen, elixir-format
msgid "Google sign-in could not be completed. Please try again."
@@ -4950,7 +4956,7 @@ msgstr ""
msgid "Helper's live location"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:555
+#: lib/who_need_help_web/live/notification_live.ex:582
#, elixir-autogen, elixir-format
msgid "Home area"
msgstr ""
@@ -4971,7 +4977,7 @@ msgstr ""
msgid "Inbox"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:693
+#: lib/who_need_help_web/live/notification_live.ex:720
#, elixir-autogen, elixir-format
msgid "Leave every category unchecked to receive all matching requests."
msgstr ""
@@ -5011,7 +5017,7 @@ msgstr ""
msgid "Metric"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:745
+#: lib/who_need_help_web/live/notification_live.ex:772
#, elixir-autogen, elixir-format
msgid "Mon"
msgstr ""
@@ -5026,13 +5032,13 @@ msgstr ""
msgid "Nearby alert deleted."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:429
+#: lib/who_need_help_web/live/notification_live.ex:456
#: lib/who_need_help_web/live/request_live/index.ex:362
#, elixir-autogen, elixir-format
msgid "Nearby requests"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:450
+#: lib/who_need_help_web/live/notification_live.ex:477
#, elixir-autogen, elixir-format
msgid "Nearby requests by email"
msgstr ""
@@ -5043,7 +5049,7 @@ msgstr ""
msgid "New help request nearby"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:434
+#: lib/who_need_help_web/live/notification_live.ex:461
#, elixir-autogen, elixir-format
msgid "New private messages"
msgstr ""
@@ -5058,7 +5064,7 @@ msgstr ""
msgid "No aggregate events recorded yet."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:476
+#: lib/who_need_help_web/live/notification_live.ex:503
#, elixir-autogen, elixir-format
msgid "No nearby alerts configured yet."
msgstr ""
@@ -5085,7 +5091,7 @@ msgstr ""
msgid "Notification preferences saved."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:345
+#: lib/who_need_help_web/live/notification_live.ex:372
#, elixir-autogen, elixir-format
msgid "Notification text never contains chat messages or exact coordinates."
msgstr ""
@@ -5109,17 +5115,17 @@ msgstr ""
msgid "Operations"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:638
+#: lib/who_need_help_web/live/notification_live.ex:665
#, elixir-autogen, elixir-format
msgid "Other users never see this saved point."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:515
+#: lib/who_need_help_web/live/notification_live.ex:542
#, elixir-autogen, elixir-format
msgid "Pause"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:504
+#: lib/who_need_help_web/live/notification_live.ex:531
#, elixir-autogen, elixir-format
msgid "Paused"
msgstr ""
@@ -5129,12 +5135,12 @@ msgstr ""
msgid "Plans changed"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:554
+#: lib/who_need_help_web/live/notification_live.ex:581
#, elixir-autogen, elixir-format
msgid "Private area label"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:637
+#: lib/who_need_help_web/live/notification_live.ex:664
#, elixir-autogen, elixir-format
msgid "Private matching center"
msgstr ""
@@ -5151,17 +5157,17 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:492
+#: lib/who_need_help_web/live/notification_live.ex:519
#, elixir-autogen, elixir-format
msgid "Push"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:359
+#: lib/who_need_help_web/live/notification_live.ex:386
#, elixir-autogen, elixir-format
msgid "Push enabled on this device"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:790
+#: lib/who_need_help_web/live/notification_live.ex:817
#, elixir-autogen, elixir-format
msgid "Push notification"
msgstr ""
@@ -5201,7 +5207,7 @@ msgstr ""
msgid "Requester's live location"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:515
+#: lib/who_need_help_web/live/notification_live.ex:542
#, elixir-autogen, elixir-format
msgid "Resume"
msgstr ""
@@ -5211,12 +5217,12 @@ msgstr ""
msgid "Run deletion preflight"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:750
+#: lib/who_need_help_web/live/notification_live.ex:777
#, elixir-autogen, elixir-format
msgid "Sat"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:461
+#: lib/who_need_help_web/live/notification_live.ex:488
#, elixir-autogen, elixir-format
msgid "Save preferences"
msgstr ""
@@ -5231,7 +5237,7 @@ msgstr ""
msgid "Stay available without refreshing"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:751
+#: lib/who_need_help_web/live/notification_live.ex:778
#, elixir-autogen, elixir-format
msgid "Sun"
msgstr ""
@@ -5241,7 +5247,7 @@ msgstr ""
msgid "The linked account no longer exists."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:592
+#: lib/who_need_help_web/live/notification_live.ex:619
#, elixir-autogen, elixir-format
msgid "The map is unavailable. Enter coordinates manually."
msgstr ""
@@ -5256,7 +5262,7 @@ msgstr ""
msgid "The request is not linked to an account."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:472
+#: lib/who_need_help_web/live/notification_live.ex:499
#, elixir-autogen, elixir-format
msgid "The saved center is private and is used only to find matching requests."
msgstr ""
@@ -5272,27 +5278,27 @@ msgstr ""
msgid "This is not an account-deletion case."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:748
+#: lib/who_need_help_web/live/notification_live.ex:775
#, elixir-autogen, elixir-format
msgid "Thu"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:746
+#: lib/who_need_help_web/live/notification_live.ex:773
#, elixir-autogen, elixir-format
msgid "Tue"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:459
+#: lib/who_need_help_web/live/notification_live.ex:486
#, elixir-autogen, elixir-format
msgid "Until"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:550
+#: lib/who_need_help_web/live/notification_live.ex:577
#, elixir-autogen, elixir-format
msgid "Urgent medicine near home"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:455
+#: lib/who_need_help_web/live/notification_live.ex:482
#, elixir-autogen, elixir-format
msgid "Use quiet hours"
msgstr ""
@@ -5302,17 +5308,18 @@ msgstr ""
msgid "Verify the requester contact first."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:368
+#: lib/who_need_help_web/live/notification_live.ex:395
#, elixir-autogen, elixir-format
msgid "Web Push keys are not configured in this local environment yet."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:380
+#: lib/who_need_help_web/live/notification_live.ex:367
+#: lib/who_need_help_web/live/notification_live.ex:407
#, elixir-autogen, elixir-format
msgid "Web browser"
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:747
+#: lib/who_need_help_web/live/notification_live.ex:774
#, elixir-autogen, elixir-format
msgid "Wed"
msgstr ""
@@ -5329,12 +5336,12 @@ msgstr ""
msgid "You left this match. The request is open for another helper if time remains."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:366
+#: lib/who_need_help_web/live/notification_live.ex:393
#, elixir-autogen, elixir-format
msgid "Your browser will ask for notification permission."
msgstr ""
-#: lib/who_need_help_web/live/notification_live.ex:470
+#: lib/who_need_help_web/live/notification_live.ex:497
#, elixir-autogen, elixir-format
msgid "Your nearby alerts"
msgstr ""
@@ -5365,6 +5372,7 @@ msgstr "Selected example:"
msgid "WebGL is unavailable in this browser, so the full map cannot start. Select an example below or retry the map."
msgstr "WebGL is unavailable in this browser, so the full map cannot start. Select an example below or retry the map."
+#: lib/who_need_help_web/components/layouts/root.html.heex:7
#: lib/who_need_help_web/live/activity_live/index.ex:497
#: lib/who_need_help_web/live/activity_live/show.ex:546
#: lib/who_need_help_web/live/request_live/show.ex:1278
@@ -6579,3 +6587,73 @@ msgstr "No languages found"
#, elixir-autogen, elixir-format
msgid "Search languages"
msgstr "Search languages"
+
+#: lib/who_need_help_web/live/notification_live.ex:349
+#, elixir-autogen, elixir-format
+msgid "Android push notifications are not available yet."
+msgstr "Android push notifications are not available yet."
+
+#: lib/who_need_help_web/live/activity_live/new.ex:317
+#, elixir-autogen, elixir-format
+msgid "Location added."
+msgstr "Location added."
+
+#: lib/who_need_help_web/components/layouts/root.html.heex:9
+#, elixir-autogen, elixir-format
+msgid "Map marker"
+msgstr "Map marker"
+
+#: lib/who_need_help_web/live/notification_live.ex:347
+#, elixir-autogen, elixir-format
+msgid "Notification permission was not granted."
+msgstr "Notification permission was not granted."
+
+#: lib/who_need_help_web/live/notification_live.ex:361
+#, elixir-autogen, elixir-format
+msgid "Push keys changed. Enable notifications to reconnect this device securely."
+msgstr "Push keys changed. Enable notifications to reconnect this device securely."
+
+#: lib/who_need_help_web/live/notification_live.ex:351
+#, elixir-autogen, elixir-format
+msgid "Push notifications are disabled on this device."
+msgstr "Push notifications are disabled on this device."
+
+#: lib/who_need_help_web/live/notification_live.ex:342
+#, elixir-autogen, elixir-format
+msgid "Push notifications are enabled on this Android device."
+msgstr "Push notifications are enabled on this Android device."
+
+#: lib/who_need_help_web/live/notification_live.ex:358
+#, elixir-autogen, elixir-format
+msgid "Push notifications are enabled on this device."
+msgstr "Push notifications are enabled on this device."
+
+#: lib/who_need_help_web/live/notification_live.ex:356
+#, elixir-autogen, elixir-format
+msgid "Push notifications are unavailable in this browser."
+msgstr "Push notifications are unavailable in this browser."
+
+#: lib/who_need_help_web/live/notification_live.ex:359
+#, elixir-autogen, elixir-format
+msgid "Push notifications could not be enabled."
+msgstr "Push notifications could not be enabled."
+
+#: lib/who_need_help_web/live/notification_live.ex:345
+#, elixir-autogen, elixir-format
+msgid "The Android push token could not be saved. Please try again."
+msgstr "The Android push token could not be saved. Please try again."
+
+#: lib/who_need_help_web/live/notification_live.ex:364
+#, elixir-autogen, elixir-format
+msgid "This browser has a push subscription. Enable it to reconnect this device."
+msgstr "This browser has a push subscription. Enable it to reconnect this device."
+
+#: lib/who_need_help_web/live/notification_live.ex:353
+#, elixir-autogen, elixir-format
+msgid "Waiting for Android notification permission and token…"
+msgstr "Waiting for Android notification permission and token…"
+
+#: lib/who_need_help_web/components/layouts/root.html.heex:23
+#, elixir-autogen, elixir-format
+msgid "Who Need Help connects adults who need urgent local help with nearby volunteers."
+msgstr "Who Need Help connects adults who need urgent local help with nearby volunteers."
diff --git a/priv/gettext/ru/LC_MESSAGES/default.po b/priv/gettext/ru/LC_MESSAGES/default.po
index 144e176..c4f707f 100644
--- a/priv/gettext/ru/LC_MESSAGES/default.po
+++ b/priv/gettext/ru/LC_MESSAGES/default.po
@@ -37,7 +37,7 @@ msgid "Attempting to reconnect"
msgstr "Пытаемся восстановить соединение"
#: lib/who_need_help_web/components/layouts.ex:236
-#: lib/who_need_help_web/live/notification_live.ex:691
+#: lib/who_need_help_web/live/notification_live.ex:718
#, elixir-autogen, elixir-format
msgid "Categories"
msgstr "Категории"
@@ -178,7 +178,7 @@ msgstr "Центр действий"
#: lib/who_need_help_web/live/moderation_live.ex:266
#: lib/who_need_help_web/live/moderation_live.ex:702
-#: lib/who_need_help_web/live/notification_live.ex:504
+#: lib/who_need_help_web/live/notification_live.ex:531
#, elixir-autogen, elixir-format
msgid "Active"
msgstr "Активный"
@@ -669,8 +669,8 @@ msgstr "Двусторонний скрытый отзыв"
#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:104
#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:137
#: lib/who_need_help_web/controllers/user_settings_html/edit.html.heex:15
-#: lib/who_need_help_web/live/notification_live.ex:441
-#: lib/who_need_help_web/live/notification_live.ex:495
+#: lib/who_need_help_web/live/notification_live.ex:468
+#: lib/who_need_help_web/live/notification_live.ex:522
#, elixir-autogen, elixir-format
msgid "Email"
msgstr "Электронная почта"
@@ -716,7 +716,7 @@ msgstr "Введите код передачи"
msgid "Exact address after matching"
msgstr "Точный адрес после назначения помощника"
-#: lib/who_need_help_web/live/activity_live/new.ex:321
+#: lib/who_need_help_web/live/activity_live/new.ex:324
#, elixir-autogen, elixir-format
msgid "Exact coordinates are shown only to participants you approve."
msgstr "Точные координаты показаны только участникам, которых вы одобряете."
@@ -910,7 +910,7 @@ msgstr ""
"Я подтверждаю, что это не экстренная ситуация, непосредственной опасности "
"нет, а запрашиваемая помощь законна."
-#: lib/who_need_help_web/live/activity_live/new.ex:345
+#: lib/who_need_help_web/live/activity_live/new.ex:348
#, elixir-autogen, elixir-format
msgid "I will approve participants individually, keep sensitive details in the approved group, and use an appropriate public first meeting point."
msgstr ""
@@ -983,8 +983,8 @@ msgstr "Приём заявок на участие закрыт."
msgid "Join requests close"
msgstr "Приём заявок завершается"
-#: lib/who_need_help_web/live/activity_live/new.ex:329
-#: lib/who_need_help_web/live/notification_live.ex:659
+#: lib/who_need_help_web/live/activity_live/new.ex:332
+#: lib/who_need_help_web/live/notification_live.ex:686
#: lib/who_need_help_web/live/request_live/new.ex:668
#, elixir-autogen, elixir-format
msgid "Latitude"
@@ -1043,8 +1043,8 @@ msgstr "Войти только сейчас"
msgid "Logged out successfully."
msgstr "Вы успешно вышли."
-#: lib/who_need_help_web/live/activity_live/new.ex:336
-#: lib/who_need_help_web/live/notification_live.ex:673
+#: lib/who_need_help_web/live/activity_live/new.ex:339
+#: lib/who_need_help_web/live/notification_live.ex:700
#: lib/who_need_help_web/live/request_live/new.ex:682
#, elixir-autogen, elixir-format
msgid "Longitude"
@@ -1251,7 +1251,7 @@ msgstr ""
msgid "Not for emergencies"
msgstr "Не для чрезвычайных ситуаций"
-#: lib/who_need_help_web/live/notification_live.ex:721
+#: lib/who_need_help_web/live/notification_live.ex:748
#: lib/who_need_help_web/live/request_live/index.ex:297
#: lib/who_need_help_web/live/request_live/index.ex:298
#: lib/who_need_help_web/live/request_live/index.ex:409
@@ -1502,7 +1502,7 @@ msgstr ""
"Опубликуйте понятный публичный план. Заявки на участие будут ожидать, пока "
"вы их не одобрите."
-#: lib/who_need_help_web/live/activity_live/new.ex:357
+#: lib/who_need_help_web/live/activity_live/new.ex:360
#, elixir-autogen, elixir-format
msgid "Publish activity"
msgstr "Опубликовать активность"
@@ -1517,7 +1517,7 @@ msgstr "Опубликовать предложение"
msgid "Publish request"
msgstr "Опубликовать заявку"
-#: lib/who_need_help_web/live/activity_live/new.ex:355
+#: lib/who_need_help_web/live/activity_live/new.ex:358
#: lib/who_need_help_web/live/request_live/new.ex:742
#, elixir-autogen, elixir-format
msgid "Publishing…"
@@ -1763,7 +1763,7 @@ msgstr "Сохранить пароль"
msgid "Save profile"
msgstr "Сохранить профиль"
-#: lib/who_need_help_web/live/notification_live.ex:723
+#: lib/who_need_help_web/live/notification_live.ex:750
#: lib/who_need_help_web/live/request_live/index.ex:301
#: lib/who_need_help_web/live/request_live/index.ex:302
#: lib/who_need_help_web/live/request_live/index.ex:411
@@ -1826,7 +1826,7 @@ msgstr "Зарегистрироваться"
msgid "Signal updated."
msgstr "Сигнал обновлен."
-#: lib/who_need_help_web/components/layouts/root.html.heex:40
+#: lib/who_need_help_web/components/layouts/root.html.heex:48
#, elixir-autogen, elixir-format
msgid "Skip to main content"
msgstr "Пропустить основной контент"
@@ -2090,7 +2090,7 @@ msgstr "Эта заявка недоступна."
msgid "To see sent emails, visit"
msgstr "Чтобы посмотреть отправленные письма, откройте"
-#: lib/who_need_help_web/live/notification_live.ex:722
+#: lib/who_need_help_web/live/notification_live.ex:749
#: lib/who_need_help_web/live/request_live/index.ex:299
#: lib/who_need_help_web/live/request_live/index.ex:300
#: lib/who_need_help_web/live/request_live/index.ex:410
@@ -2167,7 +2167,7 @@ msgstr "Уникальные люди"
msgid "Update email instructions"
msgstr "Инструкции для изменения электронной почты"
-#: lib/who_need_help_web/live/notification_live.ex:716
+#: lib/who_need_help_web/live/notification_live.ex:743
#: lib/who_need_help_web/live/request_live/index.ex:406
#: lib/who_need_help_web/live/request_live/new.ex:447
#, elixir-autogen, elixir-format
@@ -2198,7 +2198,7 @@ msgstr "Включить тёмную тему"
msgid "Use light theme"
msgstr "Включить светлую тему"
-#: lib/who_need_help_web/live/activity_live/new.ex:318
+#: lib/who_need_help_web/live/activity_live/new.ex:321
#, elixir-autogen, elixir-format
msgid "Use my current foreground location"
msgstr "Использовать мою текущую геопозицию"
@@ -4178,7 +4178,7 @@ msgstr "Не удалось скопировать"
msgid "Date"
msgstr "Дата"
-#: lib/who_need_help_web/live/notification_live.ex:656
+#: lib/who_need_help_web/live/notification_live.ex:683
#: lib/who_need_help_web/live/request_live/new.ex:660
#, elixir-autogen, elixir-format
msgid "Enter coordinates manually"
@@ -4265,13 +4265,15 @@ msgstr "Через 1 час"
msgid "In 3 hours"
msgstr "Через 3 часа"
-#: lib/who_need_help_web/live/notification_live.ex:574
+#: lib/who_need_help_web/live/activity_live/new.ex:316
+#: lib/who_need_help_web/live/notification_live.ex:601
#: lib/who_need_help_web/live/request_live/new.ex:484
#, elixir-autogen, elixir-format
msgid "Location is unavailable in this browser."
msgstr "Геопозиция недоступна в этом браузере."
-#: lib/who_need_help_web/live/notification_live.ex:576
+#: lib/who_need_help_web/live/activity_live/new.ex:318
+#: lib/who_need_help_web/live/notification_live.ex:603
#: lib/who_need_help_web/live/request_live/new.ex:486
#, elixir-autogen, elixir-format
msgid "Location permission was denied."
@@ -4523,7 +4525,7 @@ msgstr "Укажите безопасное публичное место вст
msgid "Use another email"
msgstr "Использовать другую почту"
-#: lib/who_need_help_web/live/notification_live.ex:609
+#: lib/who_need_help_web/live/notification_live.ex:636
#: lib/who_need_help_web/live/request_live/new.ex:595
#, elixir-autogen, elixir-format
msgid "Use my location"
@@ -4707,6 +4709,7 @@ msgstr "Список"
msgid "Load more in this area"
msgstr "Загрузить ещё в этой области"
+#: lib/who_need_help_web/components/layouts/root.html.heex:5
#: lib/who_need_help_web/live/request_live/index.ex:475
#, elixir-autogen, elixir-format
msgid "Map"
@@ -4738,6 +4741,7 @@ msgstr "В этой области нет открытых заявок"
msgid "Only requests from the selected map area will be loaded."
msgstr "Будут загружены только заявки из выбранной области карты."
+#: lib/who_need_help_web/components/layouts/root.html.heex:8
#: lib/who_need_help_web/live/request_live/index.ex:585
#, elixir-autogen, elixir-format
msgid "Open request"
@@ -4775,11 +4779,12 @@ msgstr "Статический просмотр"
msgid "Together"
msgstr "Вместе"
+#: lib/who_need_help_web/components/layouts/root.html.heex:6
#: lib/who_need_help_web/controllers/page_html/home.html.heex:160
#: lib/who_need_help_web/live/activity_live/index.ex:496
#: lib/who_need_help_web/live/activity_live/show.ex:545
-#: lib/who_need_help_web/live/notification_live.ex:575
-#: lib/who_need_help_web/live/notification_live.ex:594
+#: lib/who_need_help_web/live/notification_live.ex:602
+#: lib/who_need_help_web/live/notification_live.ex:621
#: lib/who_need_help_web/live/request_live/index.ex:584
#: lib/who_need_help_web/live/request_live/new.ex:485
#: lib/who_need_help_web/live/request_live/new.ex:563
@@ -4826,7 +4831,7 @@ msgstr[2] "%{count} непрочитанных уведомлений"
msgid "A request matching one of your nearby-help alerts is available.\n\nOpen Who Need Help to review the public details:\n%{url}\n\nYou can change nearby alerts and email delivery in Notification settings."
msgstr "Появилась заявка, подходящая под одно из ваших уведомлений о помощи рядом.\n\nОткройте Who Need Help, чтобы посмотреть публичные сведения:\n%{url}\n\nНастроить уведомления поблизости и отправку писем можно в разделе уведомлений."
-#: lib/who_need_help_web/live/notification_live.ex:439
+#: lib/who_need_help_web/live/notification_live.ex:466
#, elixir-autogen, elixir-format
msgid "Acceptance, arrival, completion, and cancellation"
msgstr "Принятие, прибытие, завершение и отмена"
@@ -4836,22 +4841,22 @@ msgstr "Принятие, прибытие, завершение и отмена
msgid "Active or unresolved product state must be handled first."
msgstr "Сначала нужно обработать активное или незавершённое состояние."
-#: lib/who_need_help_web/live/notification_live.ex:570
+#: lib/who_need_help_web/live/notification_live.ex:597
#, elixir-autogen, elixir-format
msgid "Alert area selected."
msgstr "Область уведомления выбрана."
-#: lib/who_need_help_web/live/notification_live.ex:569
+#: lib/who_need_help_web/live/notification_live.ex:596
#, elixir-autogen, elixir-format
msgid "Alert area selected. Drag the pin to move it."
msgstr "Область уведомления выбрана. Перетащите маркер, чтобы её переместить."
-#: lib/who_need_help_web/live/notification_live.ex:549
+#: lib/who_need_help_web/live/notification_live.ex:576
#, elixir-autogen, elixir-format
msgid "Alert name"
msgstr "Название уведомления"
-#: lib/who_need_help_web/live/notification_live.ex:612
+#: lib/who_need_help_web/live/notification_live.ex:639
#, elixir-autogen, elixir-format
msgid "Alert radius"
msgstr "Радиус уведомления"
@@ -4862,12 +4867,12 @@ msgstr "Радиус уведомления"
msgid "Alert was not found."
msgstr "Уведомление не найдено."
-#: lib/who_need_help_web/live/notification_live.ex:445
+#: lib/who_need_help_web/live/notification_live.ex:472
#, elixir-autogen, elixir-format
msgid "Allow email notifications"
msgstr "Разрешить уведомления по почте"
-#: lib/who_need_help_web/live/notification_live.ex:424
+#: lib/who_need_help_web/live/notification_live.ex:451
#, elixir-autogen, elixir-format
msgid "Allow push notifications"
msgstr "Разрешить push-уведомления"
@@ -4882,17 +4887,17 @@ msgstr "Прибытие сохранено. Автор заявки получ
msgid "Automatic erasure is disabled: no jurisdiction-specific retention and anonymisation policy is configured. Do not mark the case resolved until the approved data action is completed and recorded."
msgstr "Автоматическое удаление отключено: правила хранения и обезличивания для выбранной юрисдикции не настроены. Не отмечайте обращение решённым, пока согласованное действие с данными не выполнено и не зафиксировано."
-#: lib/who_need_help_web/live/notification_live.ex:740
+#: lib/who_need_help_web/live/notification_live.ex:767
#, elixir-autogen, elixir-format
msgid "Available days"
msgstr "Доступные дни"
-#: lib/who_need_help_web/live/notification_live.ex:773
+#: lib/who_need_help_web/live/notification_live.ex:800
#, elixir-autogen, elixir-format
msgid "Available from (optional)"
msgstr "Доступен с (необязательно)"
-#: lib/who_need_help_web/live/notification_live.ex:778
+#: lib/who_need_help_web/live/notification_live.ex:805
#, elixir-autogen, elixir-format
msgid "Available until (optional)"
msgstr "Доступен до (необязательно)"
@@ -4918,23 +4923,23 @@ msgstr "Отмена завершит эту помощь и остановит
msgid "Cancelling…"
msgstr "Отменяем…"
-#: lib/who_need_help_web/live/notification_live.ex:537
+#: lib/who_need_help_web/live/notification_live.ex:564
#, elixir-autogen, elixir-format
msgid "Choose an area, categories, urgency, and the times when you are available."
msgstr "Выберите область, категории, срочность и время, когда вы доступны."
-#: lib/who_need_help_web/live/notification_live.ex:784
+#: lib/who_need_help_web/live/notification_live.ex:811
#, elixir-autogen, elixir-format
msgid "Choose at least one way to receive this nearby alert."
msgstr "Выберите хотя бы один способ получения этого уведомления."
-#: lib/who_need_help_web/live/notification_live.ex:568
-#: lib/who_need_help_web/live/notification_live.ex:649
+#: lib/who_need_help_web/live/notification_live.ex:595
+#: lib/who_need_help_web/live/notification_live.ex:676
#, elixir-autogen, elixir-format
msgid "Choose the private center of your alert area."
msgstr "Выберите скрытый центр области уведомления."
-#: lib/who_need_help_web/live/notification_live.ex:599
+#: lib/who_need_help_web/live/notification_live.ex:626
#, elixir-autogen, elixir-format
msgid "Click the map or drag the green pin to move your private alert area"
msgstr "Нажмите на карту или перетащите зелёный маркер, чтобы переместить скрытую область уведомления"
@@ -4960,12 +4965,12 @@ msgstr "Подтвердить выход"
msgid "Count"
msgstr "Количество"
-#: lib/who_need_help_web/live/notification_live.ex:535
+#: lib/who_need_help_web/live/notification_live.ex:562
#, elixir-autogen, elixir-format
msgid "Create a nearby alert"
msgstr "Создать уведомление поблизости"
-#: lib/who_need_help_web/live/notification_live.ex:799
+#: lib/who_need_help_web/live/notification_live.ex:826
#, elixir-autogen, elixir-format
msgid "Create nearby alert"
msgstr "Создать уведомление"
@@ -4975,22 +4980,22 @@ msgstr "Создать уведомление"
msgid "Daily aggregate counters only. No user ID, email, coordinate, request text, chat text, medicine name, or device credential is stored here."
msgstr "Здесь хранятся только дневные суммарные показатели. Идентификаторы пользователей, почта, координаты, тексты заявок и чатов, названия лекарств и данные устройств не сохраняются."
-#: lib/who_need_help_web/live/notification_live.ex:524
+#: lib/who_need_help_web/live/notification_live.ex:551
#, elixir-autogen, elixir-format
msgid "Delete"
msgstr "Удалить"
-#: lib/who_need_help_web/live/notification_live.ex:521
+#: lib/who_need_help_web/live/notification_live.ex:548
#, elixir-autogen, elixir-format
msgid "Delete this nearby alert?"
msgstr "Удалить это уведомление поблизости?"
-#: lib/who_need_help_web/live/notification_live.ex:782
+#: lib/who_need_help_web/live/notification_live.ex:809
#, elixir-autogen, elixir-format
msgid "Delivery channels"
msgstr "Каналы доставки"
-#: lib/who_need_help_web/live/notification_live.ex:343
+#: lib/who_need_help_web/live/notification_live.ex:370
#, elixir-autogen, elixir-format
msgid "Delivery channels and quiet hours"
msgstr "Каналы доставки и тихие часы"
@@ -5005,7 +5010,7 @@ msgstr "Устройство не найдено."
msgid "Dimension"
msgstr "Параметр"
-#: lib/who_need_help_web/live/notification_live.ex:397
+#: lib/who_need_help_web/live/notification_live.ex:424
#, elixir-autogen, elixir-format
msgid "Disable"
msgstr "Отключить"
@@ -5015,19 +5020,19 @@ msgstr "Отключить"
msgid "Download my data"
msgstr "Скачать мои данные"
-#: lib/who_need_help_web/live/notification_live.ex:571
-#: lib/who_need_help_web/live/notification_live.ex:572
+#: lib/who_need_help_web/live/notification_live.ex:598
+#: lib/who_need_help_web/live/notification_live.ex:599
#, elixir-autogen, elixir-format
msgid "Drag to move the alert area"
msgstr "Перетащите, чтобы переместить область уведомления"
-#: lib/who_need_help_web/live/notification_live.ex:795
+#: lib/who_need_help_web/live/notification_live.ex:822
#, elixir-autogen, elixir-format
msgid "Email notification"
msgstr "Уведомление по почте"
-#: lib/who_need_help_web/live/notification_live.ex:358
-#: lib/who_need_help_web/live/notification_live.ex:361
+#: lib/who_need_help_web/live/notification_live.ex:385
+#: lib/who_need_help_web/live/notification_live.ex:388
#, elixir-autogen, elixir-format
msgid "Enable push on this device"
msgstr "Включить push на этом устройстве"
@@ -5037,12 +5042,12 @@ msgstr "Включить push на этом устройстве"
msgid "Follow request updates and choose which nearby needs should reach this device."
msgstr "Следите за обновлениями заявок и выбирайте, какие просьбы поблизости получать на этом устройстве."
-#: lib/who_need_help_web/live/notification_live.ex:749
+#: lib/who_need_help_web/live/notification_live.ex:776
#, elixir-autogen, elixir-format
msgid "Fri"
msgstr "Пт"
-#: lib/who_need_help_web/live/notification_live.ex:458
+#: lib/who_need_help_web/live/notification_live.ex:485
#, elixir-autogen, elixir-format
msgid "From"
msgstr "С"
@@ -5052,6 +5057,7 @@ msgstr "С"
msgid "Google could not be connected. Please try again."
msgstr "Не удалось подключить Google. Попробуйте снова."
+#: lib/who_need_help_web/components/layouts/root.html.heex:10
#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:79
#, elixir-autogen, elixir-format
msgid "Google sign-in could not be completed. Please try again."
@@ -5092,7 +5098,7 @@ msgstr "Помощник прибыл"
msgid "Helper's live location"
msgstr "Текущая геопозиция помощника"
-#: lib/who_need_help_web/live/notification_live.ex:555
+#: lib/who_need_help_web/live/notification_live.ex:582
#, elixir-autogen, elixir-format
msgid "Home area"
msgstr "Район дома"
@@ -5113,7 +5119,7 @@ msgstr "Я прибыл"
msgid "Inbox"
msgstr "Входящие"
-#: lib/who_need_help_web/live/notification_live.ex:693
+#: lib/who_need_help_web/live/notification_live.ex:720
#, elixir-autogen, elixir-format
msgid "Leave every category unchecked to receive all matching requests."
msgstr "Не выбирайте категории, чтобы получать все подходящие заявки."
@@ -5153,7 +5159,7 @@ msgstr "Отметить все прочитанными"
msgid "Metric"
msgstr "Показатель"
-#: lib/who_need_help_web/live/notification_live.ex:745
+#: lib/who_need_help_web/live/notification_live.ex:772
#, elixir-autogen, elixir-format
msgid "Mon"
msgstr "Пн"
@@ -5168,13 +5174,13 @@ msgstr "Уведомление поблизости создано."
msgid "Nearby alert deleted."
msgstr "Уведомление поблизости удалено."
-#: lib/who_need_help_web/live/notification_live.ex:429
+#: lib/who_need_help_web/live/notification_live.ex:456
#: lib/who_need_help_web/live/request_live/index.ex:362
#, elixir-autogen, elixir-format
msgid "Nearby requests"
msgstr "Заявки поблизости"
-#: lib/who_need_help_web/live/notification_live.ex:450
+#: lib/who_need_help_web/live/notification_live.ex:477
#, elixir-autogen, elixir-format
msgid "Nearby requests by email"
msgstr "Заявки поблизости по почте"
@@ -5185,7 +5191,7 @@ msgstr "Заявки поблизости по почте"
msgid "New help request nearby"
msgstr "Новая заявка на помощь поблизости"
-#: lib/who_need_help_web/live/notification_live.ex:434
+#: lib/who_need_help_web/live/notification_live.ex:461
#, elixir-autogen, elixir-format
msgid "New private messages"
msgstr "Новые личные сообщения"
@@ -5200,7 +5206,7 @@ msgstr "Активный пользовательский процесс не н
msgid "No aggregate events recorded yet."
msgstr "Суммарных событий пока нет."
-#: lib/who_need_help_web/live/notification_live.ex:476
+#: lib/who_need_help_web/live/notification_live.ex:503
#, elixir-autogen, elixir-format
msgid "No nearby alerts configured yet."
msgstr "Уведомления поблизости ещё не настроены."
@@ -5227,7 +5233,7 @@ msgstr "Уведомление не найдено."
msgid "Notification preferences saved."
msgstr "Настройки уведомлений сохранены."
-#: lib/who_need_help_web/live/notification_live.ex:345
+#: lib/who_need_help_web/live/notification_live.ex:372
#, elixir-autogen, elixir-format
msgid "Notification text never contains chat messages or exact coordinates."
msgstr "Текст уведомления никогда не содержит сообщения из чата или точные координаты."
@@ -5251,17 +5257,17 @@ msgstr "Уведомления и помощь поблизости"
msgid "Operations"
msgstr "Операции"
-#: lib/who_need_help_web/live/notification_live.ex:638
+#: lib/who_need_help_web/live/notification_live.ex:665
#, elixir-autogen, elixir-format
msgid "Other users never see this saved point."
msgstr "Другие пользователи никогда не видят эту сохранённую точку."
-#: lib/who_need_help_web/live/notification_live.ex:515
+#: lib/who_need_help_web/live/notification_live.ex:542
#, elixir-autogen, elixir-format
msgid "Pause"
msgstr "Приостановить"
-#: lib/who_need_help_web/live/notification_live.ex:504
+#: lib/who_need_help_web/live/notification_live.ex:531
#, elixir-autogen, elixir-format
msgid "Paused"
msgstr "Приостановлено"
@@ -5271,12 +5277,12 @@ msgstr "Приостановлено"
msgid "Plans changed"
msgstr "Планы изменились"
-#: lib/who_need_help_web/live/notification_live.ex:554
+#: lib/who_need_help_web/live/notification_live.ex:581
#, elixir-autogen, elixir-format
msgid "Private area label"
msgstr "Личное название области"
-#: lib/who_need_help_web/live/notification_live.ex:637
+#: lib/who_need_help_web/live/notification_live.ex:664
#, elixir-autogen, elixir-format
msgid "Private matching center"
msgstr "Скрытый центр поиска"
@@ -5293,17 +5299,17 @@ msgstr "Аналитика продукта"
msgid "Progress"
msgstr "Ход выполнения"
-#: lib/who_need_help_web/live/notification_live.ex:492
+#: lib/who_need_help_web/live/notification_live.ex:519
#, elixir-autogen, elixir-format
msgid "Push"
msgstr "Push"
-#: lib/who_need_help_web/live/notification_live.ex:359
+#: lib/who_need_help_web/live/notification_live.ex:386
#, elixir-autogen, elixir-format
msgid "Push enabled on this device"
msgstr "Push включён на этом устройстве"
-#: lib/who_need_help_web/live/notification_live.ex:790
+#: lib/who_need_help_web/live/notification_live.ex:817
#, elixir-autogen, elixir-format
msgid "Push notification"
msgstr "Push-уведомление"
@@ -5343,7 +5349,7 @@ msgstr "Не удаётся связаться с автором заявки"
msgid "Requester's live location"
msgstr "Текущая геопозиция автора заявки"
-#: lib/who_need_help_web/live/notification_live.ex:515
+#: lib/who_need_help_web/live/notification_live.ex:542
#, elixir-autogen, elixir-format
msgid "Resume"
msgstr "Возобновить"
@@ -5353,12 +5359,12 @@ msgstr "Возобновить"
msgid "Run deletion preflight"
msgstr "Проверить возможность удаления"
-#: lib/who_need_help_web/live/notification_live.ex:750
+#: lib/who_need_help_web/live/notification_live.ex:777
#, elixir-autogen, elixir-format
msgid "Sat"
msgstr "Сб"
-#: lib/who_need_help_web/live/notification_live.ex:461
+#: lib/who_need_help_web/live/notification_live.ex:488
#, elixir-autogen, elixir-format
msgid "Save preferences"
msgstr "Сохранить настройки"
@@ -5373,7 +5379,7 @@ msgstr "Передаваемая геопозиция"
msgid "Stay available without refreshing"
msgstr "Оставайтесь на связи без обновления страницы"
-#: lib/who_need_help_web/live/notification_live.ex:751
+#: lib/who_need_help_web/live/notification_live.ex:778
#, elixir-autogen, elixir-format
msgid "Sun"
msgstr "Вс"
@@ -5383,7 +5389,7 @@ msgstr "Вс"
msgid "The linked account no longer exists."
msgstr "Связанный аккаунт больше не существует."
-#: lib/who_need_help_web/live/notification_live.ex:592
+#: lib/who_need_help_web/live/notification_live.ex:619
#, elixir-autogen, elixir-format
msgid "The map is unavailable. Enter coordinates manually."
msgstr "Карта недоступна. Введите координаты вручную."
@@ -5398,7 +5404,7 @@ msgstr "Предыдущий помощник вышел. Заявка снов
msgid "The request is not linked to an account."
msgstr "Заявка не связана с аккаунтом."
-#: lib/who_need_help_web/live/notification_live.ex:472
+#: lib/who_need_help_web/live/notification_live.ex:499
#, elixir-autogen, elixir-format
msgid "The saved center is private and is used only to find matching requests."
msgstr "Сохранённый центр скрыт и используется только для поиска подходящих заявок."
@@ -5414,27 +5420,27 @@ msgstr "Это показатели активности, а не проверк
msgid "This is not an account-deletion case."
msgstr "Это обращение не связано с удалением аккаунта."
-#: lib/who_need_help_web/live/notification_live.ex:748
+#: lib/who_need_help_web/live/notification_live.ex:775
#, elixir-autogen, elixir-format
msgid "Thu"
msgstr "Чт"
-#: lib/who_need_help_web/live/notification_live.ex:746
+#: lib/who_need_help_web/live/notification_live.ex:773
#, elixir-autogen, elixir-format
msgid "Tue"
msgstr "Вт"
-#: lib/who_need_help_web/live/notification_live.ex:459
+#: lib/who_need_help_web/live/notification_live.ex:486
#, elixir-autogen, elixir-format
msgid "Until"
msgstr "До"
-#: lib/who_need_help_web/live/notification_live.ex:550
+#: lib/who_need_help_web/live/notification_live.ex:577
#, elixir-autogen, elixir-format
msgid "Urgent medicine near home"
msgstr "Срочная доставка лекарства рядом с домом"
-#: lib/who_need_help_web/live/notification_live.ex:455
+#: lib/who_need_help_web/live/notification_live.ex:482
#, elixir-autogen, elixir-format
msgid "Use quiet hours"
msgstr "Использовать тихие часы"
@@ -5444,17 +5450,18 @@ msgstr "Использовать тихие часы"
msgid "Verify the requester contact first."
msgstr "Сначала подтвердите контакт автора заявки."
-#: lib/who_need_help_web/live/notification_live.ex:368
+#: lib/who_need_help_web/live/notification_live.ex:395
#, elixir-autogen, elixir-format
msgid "Web Push keys are not configured in this local environment yet."
msgstr "Ключи Web Push ещё не настроены в этом локальном окружении."
-#: lib/who_need_help_web/live/notification_live.ex:380
+#: lib/who_need_help_web/live/notification_live.ex:367
+#: lib/who_need_help_web/live/notification_live.ex:407
#, elixir-autogen, elixir-format
msgid "Web browser"
msgstr "Веб-браузер"
-#: lib/who_need_help_web/live/notification_live.ex:747
+#: lib/who_need_help_web/live/notification_live.ex:774
#, elixir-autogen, elixir-format
msgid "Wed"
msgstr "Ср"
@@ -5471,12 +5478,12 @@ msgstr "Вы приняли эту заявку. Безопасно соглас
msgid "You left this match. The request is open for another helper if time remains."
msgstr "Вы вышли из этой помощи. Если время не истекло, заявку сможет принять другой помощник."
-#: lib/who_need_help_web/live/notification_live.ex:366
+#: lib/who_need_help_web/live/notification_live.ex:393
#, elixir-autogen, elixir-format
msgid "Your browser will ask for notification permission."
msgstr "Браузер запросит разрешение на уведомления."
-#: lib/who_need_help_web/live/notification_live.ex:470
+#: lib/who_need_help_web/live/notification_live.ex:497
#, elixir-autogen, elixir-format
msgid "Your nearby alerts"
msgstr "Ваши уведомления поблизости"
@@ -5507,6 +5514,7 @@ msgstr "Выбранный пример:"
msgid "WebGL is unavailable in this browser, so the full map cannot start. Select an example below or retry the map."
msgstr "WebGL недоступен в этом браузере, поэтому полная карта не может запуститься. Выберите пример ниже или попробуйте запустить карту ещё раз."
+#: lib/who_need_help_web/components/layouts/root.html.heex:7
#: lib/who_need_help_web/live/activity_live/index.ex:497
#: lib/who_need_help_web/live/activity_live/show.ex:546
#: lib/who_need_help_web/live/request_live/show.ex:1278
@@ -6722,3 +6730,73 @@ msgstr "Языки не найдены"
#, elixir-autogen, elixir-format
msgid "Search languages"
msgstr "Поиск языков"
+
+#: lib/who_need_help_web/live/notification_live.ex:349
+#, elixir-autogen, elixir-format
+msgid "Android push notifications are not available yet."
+msgstr "Push-уведомления Android пока недоступны."
+
+#: lib/who_need_help_web/live/activity_live/new.ex:317
+#, elixir-autogen, elixir-format
+msgid "Location added."
+msgstr "Местоположение добавлено."
+
+#: lib/who_need_help_web/components/layouts/root.html.heex:9
+#, elixir-autogen, elixir-format
+msgid "Map marker"
+msgstr "Маркер на карте"
+
+#: lib/who_need_help_web/live/notification_live.ex:347
+#, elixir-autogen, elixir-format
+msgid "Notification permission was not granted."
+msgstr "Разрешение на уведомления не предоставлено."
+
+#: lib/who_need_help_web/live/notification_live.ex:361
+#, elixir-autogen, elixir-format
+msgid "Push keys changed. Enable notifications to reconnect this device securely."
+msgstr "Ключи push-уведомлений изменились. Включите уведомления, чтобы безопасно переподключить это устройство."
+
+#: lib/who_need_help_web/live/notification_live.ex:351
+#, elixir-autogen, elixir-format
+msgid "Push notifications are disabled on this device."
+msgstr "Push-уведомления отключены для этого устройства."
+
+#: lib/who_need_help_web/live/notification_live.ex:342
+#, elixir-autogen, elixir-format
+msgid "Push notifications are enabled on this Android device."
+msgstr "Push-уведомления включены на этом Android-устройстве."
+
+#: lib/who_need_help_web/live/notification_live.ex:358
+#, elixir-autogen, elixir-format
+msgid "Push notifications are enabled on this device."
+msgstr "Push-уведомления включены на этом устройстве."
+
+#: lib/who_need_help_web/live/notification_live.ex:356
+#, elixir-autogen, elixir-format
+msgid "Push notifications are unavailable in this browser."
+msgstr "Push-уведомления недоступны в этом браузере."
+
+#: lib/who_need_help_web/live/notification_live.ex:359
+#, elixir-autogen, elixir-format
+msgid "Push notifications could not be enabled."
+msgstr "Не удалось включить push-уведомления."
+
+#: lib/who_need_help_web/live/notification_live.ex:345
+#, elixir-autogen, elixir-format
+msgid "The Android push token could not be saved. Please try again."
+msgstr "Не удалось сохранить push-токен Android. Повторите попытку."
+
+#: lib/who_need_help_web/live/notification_live.ex:364
+#, elixir-autogen, elixir-format
+msgid "This browser has a push subscription. Enable it to reconnect this device."
+msgstr "В этом браузере есть push-подписка. Включите уведомления, чтобы переподключить это устройство."
+
+#: lib/who_need_help_web/live/notification_live.ex:353
+#, elixir-autogen, elixir-format
+msgid "Waiting for Android notification permission and token…"
+msgstr "Ожидаем разрешения на уведомления и токен Android…"
+
+#: lib/who_need_help_web/components/layouts/root.html.heex:23
+#, elixir-autogen, elixir-format
+msgid "Who Need Help connects adults who need urgent local help with nearby volunteers."
+msgstr "Who Need Help связывает взрослых, которым нужна срочная помощь поблизости, с находящимися рядом волонтёрами."
diff --git a/priv/gettext/uk/LC_MESSAGES/default.po b/priv/gettext/uk/LC_MESSAGES/default.po
index cd0a667..d64fbe8 100644
--- a/priv/gettext/uk/LC_MESSAGES/default.po
+++ b/priv/gettext/uk/LC_MESSAGES/default.po
@@ -37,7 +37,7 @@ msgid "Attempting to reconnect"
msgstr "Спроба повторного з’єднання"
#: lib/who_need_help_web/components/layouts.ex:236
-#: lib/who_need_help_web/live/notification_live.ex:691
+#: lib/who_need_help_web/live/notification_live.ex:718
#, elixir-autogen, elixir-format
msgid "Categories"
msgstr "Категорії"
@@ -178,7 +178,7 @@ msgstr "Центр дій"
#: lib/who_need_help_web/live/moderation_live.ex:266
#: lib/who_need_help_web/live/moderation_live.ex:702
-#: lib/who_need_help_web/live/notification_live.ex:504
+#: lib/who_need_help_web/live/notification_live.ex:531
#, elixir-autogen, elixir-format
msgid "Active"
msgstr "Активний"
@@ -669,8 +669,8 @@ msgstr "Двосторонній прихований відгук"
#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:104
#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:137
#: lib/who_need_help_web/controllers/user_settings_html/edit.html.heex:15
-#: lib/who_need_help_web/live/notification_live.ex:441
-#: lib/who_need_help_web/live/notification_live.ex:495
+#: lib/who_need_help_web/live/notification_live.ex:468
+#: lib/who_need_help_web/live/notification_live.ex:522
#, elixir-autogen, elixir-format
msgid "Email"
msgstr "Електронна пошта"
@@ -715,7 +715,7 @@ msgstr "Введіть код передачі"
msgid "Exact address after matching"
msgstr "Точна адреса після призначення помічника"
-#: lib/who_need_help_web/live/activity_live/new.ex:321
+#: lib/who_need_help_web/live/activity_live/new.ex:324
#, elixir-autogen, elixir-format
msgid "Exact coordinates are shown only to participants you approve."
msgstr "Точні координати показуються лише схваленим вами учасникам."
@@ -909,7 +909,7 @@ msgstr ""
"Я підтверджую, що це не екстрена ситуація, безпосередньої небезпеки немає, а"
" запитувана допомога є законною."
-#: lib/who_need_help_web/live/activity_live/new.ex:345
+#: lib/who_need_help_web/live/activity_live/new.ex:348
#, elixir-autogen, elixir-format
msgid "I will approve participants individually, keep sensitive details in the approved group, and use an appropriate public first meeting point."
msgstr ""
@@ -981,8 +981,8 @@ msgstr "Подання заявок на участь закрито."
msgid "Join requests close"
msgstr "Приймання заявок завершується"
-#: lib/who_need_help_web/live/activity_live/new.ex:329
-#: lib/who_need_help_web/live/notification_live.ex:659
+#: lib/who_need_help_web/live/activity_live/new.ex:332
+#: lib/who_need_help_web/live/notification_live.ex:686
#: lib/who_need_help_web/live/request_live/new.ex:668
#, elixir-autogen, elixir-format
msgid "Latitude"
@@ -1041,8 +1041,8 @@ msgstr "Увійти лише зараз"
msgid "Logged out successfully."
msgstr "Ви успішно вийшли."
-#: lib/who_need_help_web/live/activity_live/new.ex:336
-#: lib/who_need_help_web/live/notification_live.ex:673
+#: lib/who_need_help_web/live/activity_live/new.ex:339
+#: lib/who_need_help_web/live/notification_live.ex:700
#: lib/who_need_help_web/live/request_live/new.ex:682
#, elixir-autogen, elixir-format
msgid "Longitude"
@@ -1247,7 +1247,7 @@ msgstr ""
msgid "Not for emergencies"
msgstr "Не для екстрених ситуацій"
-#: lib/who_need_help_web/live/notification_live.ex:721
+#: lib/who_need_help_web/live/notification_live.ex:748
#: lib/who_need_help_web/live/request_live/index.ex:297
#: lib/who_need_help_web/live/request_live/index.ex:298
#: lib/who_need_help_web/live/request_live/index.ex:409
@@ -1498,7 +1498,7 @@ msgstr ""
"Опублікуйте зрозумілий публічний план. Заявки на участь очікуватимуть, доки "
"ви їх не схвалите."
-#: lib/who_need_help_web/live/activity_live/new.ex:357
+#: lib/who_need_help_web/live/activity_live/new.ex:360
#, elixir-autogen, elixir-format
msgid "Publish activity"
msgstr "Опублікувати активність"
@@ -1513,7 +1513,7 @@ msgstr "Оприлюднити пропозицію"
msgid "Publish request"
msgstr "Опублікувати заявку"
-#: lib/who_need_help_web/live/activity_live/new.ex:355
+#: lib/who_need_help_web/live/activity_live/new.ex:358
#: lib/who_need_help_web/live/request_live/new.ex:742
#, elixir-autogen, elixir-format
msgid "Publishing…"
@@ -1760,7 +1760,7 @@ msgstr "Зберегти пароль"
msgid "Save profile"
msgstr "Зберегти профіль"
-#: lib/who_need_help_web/live/notification_live.ex:723
+#: lib/who_need_help_web/live/notification_live.ex:750
#: lib/who_need_help_web/live/request_live/index.ex:301
#: lib/who_need_help_web/live/request_live/index.ex:302
#: lib/who_need_help_web/live/request_live/index.ex:411
@@ -1823,7 +1823,7 @@ msgstr "Зареєструватися"
msgid "Signal updated."
msgstr "Сигнал оновлено."
-#: lib/who_need_help_web/components/layouts/root.html.heex:40
+#: lib/who_need_help_web/components/layouts/root.html.heex:48
#, elixir-autogen, elixir-format
msgid "Skip to main content"
msgstr "Перейти до головного вмісту"
@@ -2087,7 +2087,7 @@ msgstr "Ця заявка недоступна."
msgid "To see sent emails, visit"
msgstr "Щоб переглянути надіслані листи, відкрийте"
-#: lib/who_need_help_web/live/notification_live.ex:722
+#: lib/who_need_help_web/live/notification_live.ex:749
#: lib/who_need_help_web/live/request_live/index.ex:299
#: lib/who_need_help_web/live/request_live/index.ex:300
#: lib/who_need_help_web/live/request_live/index.ex:410
@@ -2164,7 +2164,7 @@ msgstr "Унікальні люди"
msgid "Update email instructions"
msgstr "Інструкції для зміни електронної пошти"
-#: lib/who_need_help_web/live/notification_live.ex:716
+#: lib/who_need_help_web/live/notification_live.ex:743
#: lib/who_need_help_web/live/request_live/index.ex:406
#: lib/who_need_help_web/live/request_live/new.ex:447
#, elixir-autogen, elixir-format
@@ -2194,7 +2194,7 @@ msgstr "Увімкнути темну тему"
msgid "Use light theme"
msgstr "Увімкнути світлу тему"
-#: lib/who_need_help_web/live/activity_live/new.ex:318
+#: lib/who_need_help_web/live/activity_live/new.ex:321
#, elixir-autogen, elixir-format
msgid "Use my current foreground location"
msgstr "Використати мою поточну геопозицію"
@@ -4172,7 +4172,7 @@ msgstr "Не вдалося скопіювати"
msgid "Date"
msgstr "Дата"
-#: lib/who_need_help_web/live/notification_live.ex:656
+#: lib/who_need_help_web/live/notification_live.ex:683
#: lib/who_need_help_web/live/request_live/new.ex:660
#, elixir-autogen, elixir-format
msgid "Enter coordinates manually"
@@ -4259,13 +4259,15 @@ msgstr "За 1 годину"
msgid "In 3 hours"
msgstr "За 3 години"
-#: lib/who_need_help_web/live/notification_live.ex:574
+#: lib/who_need_help_web/live/activity_live/new.ex:316
+#: lib/who_need_help_web/live/notification_live.ex:601
#: lib/who_need_help_web/live/request_live/new.ex:484
#, elixir-autogen, elixir-format
msgid "Location is unavailable in this browser."
msgstr "Геопозиція недоступна в цьому браузері."
-#: lib/who_need_help_web/live/notification_live.ex:576
+#: lib/who_need_help_web/live/activity_live/new.ex:318
+#: lib/who_need_help_web/live/notification_live.ex:603
#: lib/who_need_help_web/live/request_live/new.ex:486
#, elixir-autogen, elixir-format
msgid "Location permission was denied."
@@ -4517,7 +4519,7 @@ msgstr "Вкажіть безпечне публічне місце зустрі
msgid "Use another email"
msgstr "Використати іншу пошту"
-#: lib/who_need_help_web/live/notification_live.ex:609
+#: lib/who_need_help_web/live/notification_live.ex:636
#: lib/who_need_help_web/live/request_live/new.ex:595
#, elixir-autogen, elixir-format
msgid "Use my location"
@@ -4701,6 +4703,7 @@ msgstr "Список"
msgid "Load more in this area"
msgstr "Завантажити ще в цій області"
+#: lib/who_need_help_web/components/layouts/root.html.heex:5
#: lib/who_need_help_web/live/request_live/index.ex:475
#, elixir-autogen, elixir-format
msgid "Map"
@@ -4732,6 +4735,7 @@ msgstr "У цій області немає відкритих заявок"
msgid "Only requests from the selected map area will be loaded."
msgstr "Буде завантажено лише заявки з вибраної області карти."
+#: lib/who_need_help_web/components/layouts/root.html.heex:8
#: lib/who_need_help_web/live/request_live/index.ex:585
#, elixir-autogen, elixir-format
msgid "Open request"
@@ -4769,11 +4773,12 @@ msgstr "Статичний перегляд"
msgid "Together"
msgstr "Разом"
+#: lib/who_need_help_web/components/layouts/root.html.heex:6
#: lib/who_need_help_web/controllers/page_html/home.html.heex:160
#: lib/who_need_help_web/live/activity_live/index.ex:496
#: lib/who_need_help_web/live/activity_live/show.ex:545
-#: lib/who_need_help_web/live/notification_live.ex:575
-#: lib/who_need_help_web/live/notification_live.ex:594
+#: lib/who_need_help_web/live/notification_live.ex:602
+#: lib/who_need_help_web/live/notification_live.ex:621
#: lib/who_need_help_web/live/request_live/index.ex:584
#: lib/who_need_help_web/live/request_live/new.ex:485
#: lib/who_need_help_web/live/request_live/new.ex:563
@@ -4820,7 +4825,7 @@ msgstr[2] "%{count} непрочитаних сповіщень"
msgid "A request matching one of your nearby-help alerts is available.\n\nOpen Who Need Help to review the public details:\n%{url}\n\nYou can change nearby alerts and email delivery in Notification settings."
msgstr "З’явилася заявка, що відповідає одному з ваших сповіщень про допомогу поруч.\n\nВідкрийте Who Need Help, щоб переглянути публічні відомості:\n%{url}\n\nНалаштувати сповіщення поблизу та надсилання листів можна в розділі сповіщень."
-#: lib/who_need_help_web/live/notification_live.ex:439
+#: lib/who_need_help_web/live/notification_live.ex:466
#, elixir-autogen, elixir-format
msgid "Acceptance, arrival, completion, and cancellation"
msgstr "Прийняття, прибуття, завершення та скасування"
@@ -4830,22 +4835,22 @@ msgstr "Прийняття, прибуття, завершення та скас
msgid "Active or unresolved product state must be handled first."
msgstr "Спочатку потрібно опрацювати активний або незавершений стан."
-#: lib/who_need_help_web/live/notification_live.ex:570
+#: lib/who_need_help_web/live/notification_live.ex:597
#, elixir-autogen, elixir-format
msgid "Alert area selected."
msgstr "Область сповіщення вибрано."
-#: lib/who_need_help_web/live/notification_live.ex:569
+#: lib/who_need_help_web/live/notification_live.ex:596
#, elixir-autogen, elixir-format
msgid "Alert area selected. Drag the pin to move it."
msgstr "Область сповіщення вибрано. Перетягніть маркер, щоб її перемістити."
-#: lib/who_need_help_web/live/notification_live.ex:549
+#: lib/who_need_help_web/live/notification_live.ex:576
#, elixir-autogen, elixir-format
msgid "Alert name"
msgstr "Назва сповіщення"
-#: lib/who_need_help_web/live/notification_live.ex:612
+#: lib/who_need_help_web/live/notification_live.ex:639
#, elixir-autogen, elixir-format
msgid "Alert radius"
msgstr "Радіус сповіщення"
@@ -4856,12 +4861,12 @@ msgstr "Радіус сповіщення"
msgid "Alert was not found."
msgstr "Сповіщення не знайдено."
-#: lib/who_need_help_web/live/notification_live.ex:445
+#: lib/who_need_help_web/live/notification_live.ex:472
#, elixir-autogen, elixir-format
msgid "Allow email notifications"
msgstr "Дозволити сповіщення поштою"
-#: lib/who_need_help_web/live/notification_live.ex:424
+#: lib/who_need_help_web/live/notification_live.ex:451
#, elixir-autogen, elixir-format
msgid "Allow push notifications"
msgstr "Дозволити push-сповіщення"
@@ -4876,17 +4881,17 @@ msgstr "Прибуття збережено. Автор заявки отрим
msgid "Automatic erasure is disabled: no jurisdiction-specific retention and anonymisation policy is configured. Do not mark the case resolved until the approved data action is completed and recorded."
msgstr "Автоматичне видалення вимкнено: правила зберігання й знеособлення для вибраної юрисдикції не налаштовано. Не позначайте звернення вирішеним, доки погоджену дію з даними не виконано й не зафіксовано."
-#: lib/who_need_help_web/live/notification_live.ex:740
+#: lib/who_need_help_web/live/notification_live.ex:767
#, elixir-autogen, elixir-format
msgid "Available days"
msgstr "Доступні дні"
-#: lib/who_need_help_web/live/notification_live.ex:773
+#: lib/who_need_help_web/live/notification_live.ex:800
#, elixir-autogen, elixir-format
msgid "Available from (optional)"
msgstr "Доступний з (необов’язково)"
-#: lib/who_need_help_web/live/notification_live.ex:778
+#: lib/who_need_help_web/live/notification_live.ex:805
#, elixir-autogen, elixir-format
msgid "Available until (optional)"
msgstr "Доступний до (необов’язково)"
@@ -4912,23 +4917,23 @@ msgstr "Скасування завершить цю допомогу й зуп
msgid "Cancelling…"
msgstr "Скасовуємо…"
-#: lib/who_need_help_web/live/notification_live.ex:537
+#: lib/who_need_help_web/live/notification_live.ex:564
#, elixir-autogen, elixir-format
msgid "Choose an area, categories, urgency, and the times when you are available."
msgstr "Виберіть область, категорії, терміновість і час, коли ви доступні."
-#: lib/who_need_help_web/live/notification_live.ex:784
+#: lib/who_need_help_web/live/notification_live.ex:811
#, elixir-autogen, elixir-format
msgid "Choose at least one way to receive this nearby alert."
msgstr "Виберіть хоча б один спосіб отримання цього сповіщення."
-#: lib/who_need_help_web/live/notification_live.ex:568
-#: lib/who_need_help_web/live/notification_live.ex:649
+#: lib/who_need_help_web/live/notification_live.ex:595
+#: lib/who_need_help_web/live/notification_live.ex:676
#, elixir-autogen, elixir-format
msgid "Choose the private center of your alert area."
msgstr "Виберіть прихований центр області сповіщення."
-#: lib/who_need_help_web/live/notification_live.ex:599
+#: lib/who_need_help_web/live/notification_live.ex:626
#, elixir-autogen, elixir-format
msgid "Click the map or drag the green pin to move your private alert area"
msgstr "Натисніть на карту або перетягніть зелений маркер, щоб перемістити приховану область сповіщення"
@@ -4954,12 +4959,12 @@ msgstr "Підтвердити вихід"
msgid "Count"
msgstr "Кількість"
-#: lib/who_need_help_web/live/notification_live.ex:535
+#: lib/who_need_help_web/live/notification_live.ex:562
#, elixir-autogen, elixir-format
msgid "Create a nearby alert"
msgstr "Створити сповіщення поблизу"
-#: lib/who_need_help_web/live/notification_live.ex:799
+#: lib/who_need_help_web/live/notification_live.ex:826
#, elixir-autogen, elixir-format
msgid "Create nearby alert"
msgstr "Створити сповіщення"
@@ -4969,22 +4974,22 @@ msgstr "Створити сповіщення"
msgid "Daily aggregate counters only. No user ID, email, coordinate, request text, chat text, medicine name, or device credential is stored here."
msgstr "Тут зберігаються лише щоденні зведені показники. Ідентифікатори користувачів, пошта, координати, тексти заявок і чатів, назви ліків та дані пристроїв не зберігаються."
-#: lib/who_need_help_web/live/notification_live.ex:524
+#: lib/who_need_help_web/live/notification_live.ex:551
#, elixir-autogen, elixir-format
msgid "Delete"
msgstr "Видалити"
-#: lib/who_need_help_web/live/notification_live.ex:521
+#: lib/who_need_help_web/live/notification_live.ex:548
#, elixir-autogen, elixir-format
msgid "Delete this nearby alert?"
msgstr "Видалити це сповіщення поблизу?"
-#: lib/who_need_help_web/live/notification_live.ex:782
+#: lib/who_need_help_web/live/notification_live.ex:809
#, elixir-autogen, elixir-format
msgid "Delivery channels"
msgstr "Канали доставки"
-#: lib/who_need_help_web/live/notification_live.ex:343
+#: lib/who_need_help_web/live/notification_live.ex:370
#, elixir-autogen, elixir-format
msgid "Delivery channels and quiet hours"
msgstr "Канали доставки й тихі години"
@@ -4999,7 +5004,7 @@ msgstr "Пристрій не знайдено."
msgid "Dimension"
msgstr "Параметр"
-#: lib/who_need_help_web/live/notification_live.ex:397
+#: lib/who_need_help_web/live/notification_live.ex:424
#, elixir-autogen, elixir-format
msgid "Disable"
msgstr "Вимкнути"
@@ -5009,19 +5014,19 @@ msgstr "Вимкнути"
msgid "Download my data"
msgstr "Завантажити мої дані"
-#: lib/who_need_help_web/live/notification_live.ex:571
-#: lib/who_need_help_web/live/notification_live.ex:572
+#: lib/who_need_help_web/live/notification_live.ex:598
+#: lib/who_need_help_web/live/notification_live.ex:599
#, elixir-autogen, elixir-format
msgid "Drag to move the alert area"
msgstr "Перетягніть, щоб перемістити область сповіщення"
-#: lib/who_need_help_web/live/notification_live.ex:795
+#: lib/who_need_help_web/live/notification_live.ex:822
#, elixir-autogen, elixir-format
msgid "Email notification"
msgstr "Сповіщення поштою"
-#: lib/who_need_help_web/live/notification_live.ex:358
-#: lib/who_need_help_web/live/notification_live.ex:361
+#: lib/who_need_help_web/live/notification_live.ex:385
+#: lib/who_need_help_web/live/notification_live.ex:388
#, elixir-autogen, elixir-format
msgid "Enable push on this device"
msgstr "Увімкнути push на цьому пристрої"
@@ -5031,12 +5036,12 @@ msgstr "Увімкнути push на цьому пристрої"
msgid "Follow request updates and choose which nearby needs should reach this device."
msgstr "Стежте за оновленнями заявок і вибирайте, які прохання поблизу отримувати на цьому пристрої."
-#: lib/who_need_help_web/live/notification_live.ex:749
+#: lib/who_need_help_web/live/notification_live.ex:776
#, elixir-autogen, elixir-format
msgid "Fri"
msgstr "Пт"
-#: lib/who_need_help_web/live/notification_live.ex:458
+#: lib/who_need_help_web/live/notification_live.ex:485
#, elixir-autogen, elixir-format
msgid "From"
msgstr "З"
@@ -5046,6 +5051,7 @@ msgstr "З"
msgid "Google could not be connected. Please try again."
msgstr "Не вдалося підключити Google. Спробуйте ще раз."
+#: lib/who_need_help_web/components/layouts/root.html.heex:10
#: lib/who_need_help_web/controllers/user_session_html/new.html.heex:79
#, elixir-autogen, elixir-format
msgid "Google sign-in could not be completed. Please try again."
@@ -5086,7 +5092,7 @@ msgstr "Помічник прибув"
msgid "Helper's live location"
msgstr "Поточна геопозиція помічника"
-#: lib/who_need_help_web/live/notification_live.ex:555
+#: lib/who_need_help_web/live/notification_live.ex:582
#, elixir-autogen, elixir-format
msgid "Home area"
msgstr "Район дому"
@@ -5107,7 +5113,7 @@ msgstr "Я прибув"
msgid "Inbox"
msgstr "Вхідні"
-#: lib/who_need_help_web/live/notification_live.ex:693
+#: lib/who_need_help_web/live/notification_live.ex:720
#, elixir-autogen, elixir-format
msgid "Leave every category unchecked to receive all matching requests."
msgstr "Не вибирайте категорій, щоб отримувати всі відповідні заявки."
@@ -5147,7 +5153,7 @@ msgstr "Позначити все прочитаним"
msgid "Metric"
msgstr "Показник"
-#: lib/who_need_help_web/live/notification_live.ex:745
+#: lib/who_need_help_web/live/notification_live.ex:772
#, elixir-autogen, elixir-format
msgid "Mon"
msgstr "Пн"
@@ -5162,13 +5168,13 @@ msgstr "Сповіщення поблизу створено."
msgid "Nearby alert deleted."
msgstr "Сповіщення поблизу видалено."
-#: lib/who_need_help_web/live/notification_live.ex:429
+#: lib/who_need_help_web/live/notification_live.ex:456
#: lib/who_need_help_web/live/request_live/index.ex:362
#, elixir-autogen, elixir-format
msgid "Nearby requests"
msgstr "Заявки поблизу"
-#: lib/who_need_help_web/live/notification_live.ex:450
+#: lib/who_need_help_web/live/notification_live.ex:477
#, elixir-autogen, elixir-format
msgid "Nearby requests by email"
msgstr "Заявки поблизу поштою"
@@ -5179,7 +5185,7 @@ msgstr "Заявки поблизу поштою"
msgid "New help request nearby"
msgstr "Нова заявка на допомогу поблизу"
-#: lib/who_need_help_web/live/notification_live.ex:434
+#: lib/who_need_help_web/live/notification_live.ex:461
#, elixir-autogen, elixir-format
msgid "New private messages"
msgstr "Нові приватні повідомлення"
@@ -5194,7 +5200,7 @@ msgstr "Активний користувацький процес не знай
msgid "No aggregate events recorded yet."
msgstr "Зведених подій поки немає."
-#: lib/who_need_help_web/live/notification_live.ex:476
+#: lib/who_need_help_web/live/notification_live.ex:503
#, elixir-autogen, elixir-format
msgid "No nearby alerts configured yet."
msgstr "Сповіщення поблизу ще не налаштовано."
@@ -5221,7 +5227,7 @@ msgstr "Сповіщення не знайдено."
msgid "Notification preferences saved."
msgstr "Налаштування сповіщень збережено."
-#: lib/who_need_help_web/live/notification_live.ex:345
+#: lib/who_need_help_web/live/notification_live.ex:372
#, elixir-autogen, elixir-format
msgid "Notification text never contains chat messages or exact coordinates."
msgstr "Текст сповіщення ніколи не містить повідомлень із чату або точних координат."
@@ -5245,17 +5251,17 @@ msgstr "Сповіщення та допомога поблизу"
msgid "Operations"
msgstr "Операції"
-#: lib/who_need_help_web/live/notification_live.ex:638
+#: lib/who_need_help_web/live/notification_live.ex:665
#, elixir-autogen, elixir-format
msgid "Other users never see this saved point."
msgstr "Інші користувачі ніколи не бачать цю збережену точку."
-#: lib/who_need_help_web/live/notification_live.ex:515
+#: lib/who_need_help_web/live/notification_live.ex:542
#, elixir-autogen, elixir-format
msgid "Pause"
msgstr "Призупинити"
-#: lib/who_need_help_web/live/notification_live.ex:504
+#: lib/who_need_help_web/live/notification_live.ex:531
#, elixir-autogen, elixir-format
msgid "Paused"
msgstr "Призупинено"
@@ -5265,12 +5271,12 @@ msgstr "Призупинено"
msgid "Plans changed"
msgstr "Плани змінилися"
-#: lib/who_need_help_web/live/notification_live.ex:554
+#: lib/who_need_help_web/live/notification_live.ex:581
#, elixir-autogen, elixir-format
msgid "Private area label"
msgstr "Особиста назва області"
-#: lib/who_need_help_web/live/notification_live.ex:637
+#: lib/who_need_help_web/live/notification_live.ex:664
#, elixir-autogen, elixir-format
msgid "Private matching center"
msgstr "Прихований центр пошуку"
@@ -5287,17 +5293,17 @@ msgstr "Аналітика продукту"
msgid "Progress"
msgstr "Хід виконання"
-#: lib/who_need_help_web/live/notification_live.ex:492
+#: lib/who_need_help_web/live/notification_live.ex:519
#, elixir-autogen, elixir-format
msgid "Push"
msgstr "Push"
-#: lib/who_need_help_web/live/notification_live.ex:359
+#: lib/who_need_help_web/live/notification_live.ex:386
#, elixir-autogen, elixir-format
msgid "Push enabled on this device"
msgstr "Push увімкнено на цьому пристрої"
-#: lib/who_need_help_web/live/notification_live.ex:790
+#: lib/who_need_help_web/live/notification_live.ex:817
#, elixir-autogen, elixir-format
msgid "Push notification"
msgstr "Push-сповіщення"
@@ -5337,7 +5343,7 @@ msgstr "Не вдається зв’язатися з автором заявк
msgid "Requester's live location"
msgstr "Поточна геопозиція автора заявки"
-#: lib/who_need_help_web/live/notification_live.ex:515
+#: lib/who_need_help_web/live/notification_live.ex:542
#, elixir-autogen, elixir-format
msgid "Resume"
msgstr "Відновити"
@@ -5347,12 +5353,12 @@ msgstr "Відновити"
msgid "Run deletion preflight"
msgstr "Перевірити можливість видалення"
-#: lib/who_need_help_web/live/notification_live.ex:750
+#: lib/who_need_help_web/live/notification_live.ex:777
#, elixir-autogen, elixir-format
msgid "Sat"
msgstr "Сб"
-#: lib/who_need_help_web/live/notification_live.ex:461
+#: lib/who_need_help_web/live/notification_live.ex:488
#, elixir-autogen, elixir-format
msgid "Save preferences"
msgstr "Зберегти налаштування"
@@ -5367,7 +5373,7 @@ msgstr "Геопозиція, що передається"
msgid "Stay available without refreshing"
msgstr "Залишайтеся на зв’язку без оновлення сторінки"
-#: lib/who_need_help_web/live/notification_live.ex:751
+#: lib/who_need_help_web/live/notification_live.ex:778
#, elixir-autogen, elixir-format
msgid "Sun"
msgstr "Нд"
@@ -5377,7 +5383,7 @@ msgstr "Нд"
msgid "The linked account no longer exists."
msgstr "Пов’язаний обліковий запис більше не існує."
-#: lib/who_need_help_web/live/notification_live.ex:592
+#: lib/who_need_help_web/live/notification_live.ex:619
#, elixir-autogen, elixir-format
msgid "The map is unavailable. Enter coordinates manually."
msgstr "Карта недоступна. Введіть координати вручну."
@@ -5392,7 +5398,7 @@ msgstr "Попередній помічник вийшов. Заявку зно
msgid "The request is not linked to an account."
msgstr "Заявка не пов’язана з обліковим записом."
-#: lib/who_need_help_web/live/notification_live.ex:472
+#: lib/who_need_help_web/live/notification_live.ex:499
#, elixir-autogen, elixir-format
msgid "The saved center is private and is used only to find matching requests."
msgstr "Збережений центр прихований і використовується лише для пошуку відповідних заявок."
@@ -5408,27 +5414,27 @@ msgstr "Це показники активності, а не перевірка
msgid "This is not an account-deletion case."
msgstr "Це звернення не пов’язане з видаленням облікового запису."
-#: lib/who_need_help_web/live/notification_live.ex:748
+#: lib/who_need_help_web/live/notification_live.ex:775
#, elixir-autogen, elixir-format
msgid "Thu"
msgstr "Чт"
-#: lib/who_need_help_web/live/notification_live.ex:746
+#: lib/who_need_help_web/live/notification_live.ex:773
#, elixir-autogen, elixir-format
msgid "Tue"
msgstr "Вт"
-#: lib/who_need_help_web/live/notification_live.ex:459
+#: lib/who_need_help_web/live/notification_live.ex:486
#, elixir-autogen, elixir-format
msgid "Until"
msgstr "До"
-#: lib/who_need_help_web/live/notification_live.ex:550
+#: lib/who_need_help_web/live/notification_live.ex:577
#, elixir-autogen, elixir-format
msgid "Urgent medicine near home"
msgstr "Термінова доставка ліків поруч із домом"
-#: lib/who_need_help_web/live/notification_live.ex:455
+#: lib/who_need_help_web/live/notification_live.ex:482
#, elixir-autogen, elixir-format
msgid "Use quiet hours"
msgstr "Використовувати тихі години"
@@ -5438,17 +5444,18 @@ msgstr "Використовувати тихі години"
msgid "Verify the requester contact first."
msgstr "Спочатку підтвердьте контакт автора заявки."
-#: lib/who_need_help_web/live/notification_live.ex:368
+#: lib/who_need_help_web/live/notification_live.ex:395
#, elixir-autogen, elixir-format
msgid "Web Push keys are not configured in this local environment yet."
msgstr "Ключі Web Push ще не налаштовано в цьому локальному середовищі."
-#: lib/who_need_help_web/live/notification_live.ex:380
+#: lib/who_need_help_web/live/notification_live.ex:367
+#: lib/who_need_help_web/live/notification_live.ex:407
#, elixir-autogen, elixir-format
msgid "Web browser"
msgstr "Веббраузер"
-#: lib/who_need_help_web/live/notification_live.ex:747
+#: lib/who_need_help_web/live/notification_live.ex:774
#, elixir-autogen, elixir-format
msgid "Wed"
msgstr "Ср"
@@ -5465,12 +5472,12 @@ msgstr "Ви прийняли цю заявку. Безпечно узгодьт
msgid "You left this match. The request is open for another helper if time remains."
msgstr "Ви вийшли з цієї допомоги. Якщо час не минув, заявку зможе прийняти інший помічник."
-#: lib/who_need_help_web/live/notification_live.ex:366
+#: lib/who_need_help_web/live/notification_live.ex:393
#, elixir-autogen, elixir-format
msgid "Your browser will ask for notification permission."
msgstr "Браузер попросить дозвіл на сповіщення."
-#: lib/who_need_help_web/live/notification_live.ex:470
+#: lib/who_need_help_web/live/notification_live.ex:497
#, elixir-autogen, elixir-format
msgid "Your nearby alerts"
msgstr "Ваші сповіщення поблизу"
@@ -5501,6 +5508,7 @@ msgstr "Вибраний приклад:"
msgid "WebGL is unavailable in this browser, so the full map cannot start. Select an example below or retry the map."
msgstr "WebGL недоступний у цьому браузері, тому повна карта не може запуститися. Виберіть приклад нижче або спробуйте запустити карту ще раз."
+#: lib/who_need_help_web/components/layouts/root.html.heex:7
#: lib/who_need_help_web/live/activity_live/index.ex:497
#: lib/who_need_help_web/live/activity_live/show.ex:546
#: lib/who_need_help_web/live/request_live/show.ex:1278
@@ -6716,3 +6724,73 @@ msgstr "Мов не знайдено"
#, elixir-autogen, elixir-format
msgid "Search languages"
msgstr "Пошук мов"
+
+#: lib/who_need_help_web/live/notification_live.ex:349
+#, elixir-autogen, elixir-format
+msgid "Android push notifications are not available yet."
+msgstr "Push-сповіщення Android поки недоступні."
+
+#: lib/who_need_help_web/live/activity_live/new.ex:317
+#, elixir-autogen, elixir-format
+msgid "Location added."
+msgstr "Місцезнаходження додано."
+
+#: lib/who_need_help_web/components/layouts/root.html.heex:9
+#, elixir-autogen, elixir-format
+msgid "Map marker"
+msgstr "Маркер на карті"
+
+#: lib/who_need_help_web/live/notification_live.ex:347
+#, elixir-autogen, elixir-format
+msgid "Notification permission was not granted."
+msgstr "Дозвіл на сповіщення не надано."
+
+#: lib/who_need_help_web/live/notification_live.ex:361
+#, elixir-autogen, elixir-format
+msgid "Push keys changed. Enable notifications to reconnect this device securely."
+msgstr "Ключі push-сповіщень змінилися. Увімкніть сповіщення, щоб безпечно перепідключити цей пристрій."
+
+#: lib/who_need_help_web/live/notification_live.ex:351
+#, elixir-autogen, elixir-format
+msgid "Push notifications are disabled on this device."
+msgstr "Push-сповіщення вимкнено для цього пристрою."
+
+#: lib/who_need_help_web/live/notification_live.ex:342
+#, elixir-autogen, elixir-format
+msgid "Push notifications are enabled on this Android device."
+msgstr "Push-сповіщення ввімкнено на цьому Android-пристрої."
+
+#: lib/who_need_help_web/live/notification_live.ex:358
+#, elixir-autogen, elixir-format
+msgid "Push notifications are enabled on this device."
+msgstr "Push-сповіщення ввімкнено на цьому пристрої."
+
+#: lib/who_need_help_web/live/notification_live.ex:356
+#, elixir-autogen, elixir-format
+msgid "Push notifications are unavailable in this browser."
+msgstr "Push-сповіщення недоступні в цьому браузері."
+
+#: lib/who_need_help_web/live/notification_live.ex:359
+#, elixir-autogen, elixir-format
+msgid "Push notifications could not be enabled."
+msgstr "Не вдалося ввімкнути push-сповіщення."
+
+#: lib/who_need_help_web/live/notification_live.ex:345
+#, elixir-autogen, elixir-format
+msgid "The Android push token could not be saved. Please try again."
+msgstr "Не вдалося зберегти push-токен Android. Повторіть спробу."
+
+#: lib/who_need_help_web/live/notification_live.ex:364
+#, elixir-autogen, elixir-format
+msgid "This browser has a push subscription. Enable it to reconnect this device."
+msgstr "У цьому браузері є push-підписка. Увімкніть сповіщення, щоб перепідключити цей пристрій."
+
+#: lib/who_need_help_web/live/notification_live.ex:353
+#, elixir-autogen, elixir-format
+msgid "Waiting for Android notification permission and token…"
+msgstr "Очікуємо на дозвіл для сповіщень і токен Android…"
+
+#: lib/who_need_help_web/components/layouts/root.html.heex:23
+#, elixir-autogen, elixir-format
+msgid "Who Need Help connects adults who need urgent local help with nearby volunteers."
+msgstr "Who Need Help з’єднує дорослих, яким потрібна термінова допомога поруч, із місцевими волонтерами."
diff --git a/test/who_need_help_web/live/mutual_aid_live_test.exs b/test/who_need_help_web/live/mutual_aid_live_test.exs
index b28c5e2..a9a071b 100644
--- a/test/who_need_help_web/live/mutual_aid_live_test.exs
+++ b/test/who_need_help_web/live/mutual_aid_live_test.exs
@@ -96,6 +96,16 @@ defmodule WhoNeedHelpWeb.MutualAidLiveTest do
html = render(view)
assert html =~ ~s(data-enable-label="Enable push on this device")
assert html =~ ~s(data-enabled-label="Push enabled on this device")
+
+ assert html =~
+ ~s(data-status-android-enabled="Push notifications are enabled on this Android device.")
+
+ assert html =~
+ ~s(data-status-browser-unavailable="Push notifications are unavailable in this browser.")
+
+ assert html =~
+ ~s(data-status-reconnect-required="This browser has a push subscription. Enable it to reconnect this device.")
+
assert has_element?(view, "[data-disable-device='#{push_device.id}']")
view
@@ -654,6 +664,8 @@ defmodule WhoNeedHelpWeb.MutualAidLiveTest do
{:ok, view, html} = live(conn, ~p"/activities/new")
assert html =~ "Social activity — Hiking"
refute html =~ "Medicine pickup status"
+ assert html =~ ~s(data-added-label="Location added.")
+ assert html =~ ~s(data-permission-denied-label="Location permission was denied.")
html =
render_change(view, "validate", %{