From 0965523dc14a831518452a364c76b8940d921e3e Mon Sep 17 00:00:00 2001 From: SimpleTest Date: Mon, 3 Aug 2026 19:41:42 +0300 Subject: [PATCH] Prepare Android policy-compliant release --- .../app/src/main/res/values-ru/strings.xml | 2 +- .../app/src/main/res/values-uk/strings.xml | 2 +- android/app/src/main/res/values/strings.xml | 2 +- android/play-store/review-access.md | 15 +- android/play-store/store-listing-en-US.md | 2 +- android/play-store/store-listing-ru-RU.md | 2 +- android/play-store/store-listing-uk-UA.md | 2 +- ...google-play-pre-upload-audit-2026-08-03.md | 73 ++++++++ ...oogle-play-release-candidate-2026-08-03.md | 37 ++-- .../controllers/page_html/privacy.html.heex | 9 +- priv/gettext/default.pot | 57 +++--- priv/gettext/en/LC_MESSAGES/default.po | 171 ++++++++++-------- priv/gettext/ru/LC_MESSAGES/default.po | 171 ++++++++++-------- priv/gettext/uk/LC_MESSAGES/default.po | 171 ++++++++++-------- .../controllers/page_controller_test.exs | 3 + 15 files changed, 435 insertions(+), 284 deletions(-) create mode 100644 docs/google-play-pre-upload-audit-2026-08-03.md diff --git a/android/app/src/main/res/values-ru/strings.xml b/android/app/src/main/res/values-ru/strings.xml index 77eaab5..98aec34 100644 --- a/android/app/src/main/res/values-ru/strings.xml +++ b/android/app/src/main/res/values-ru/strings.xml @@ -25,7 +25,7 @@ Who Need Help использует вашу точную геолокацию только для этого действия, чтобы разместить выбранную точку или область. Это не запускает передачу геолокации в реальном времени. Android не смог показать защищённую кнопку геолокации. Геолокация не передавалась. Передавать текущую геолокацию участнику? - 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 index e9473cc..67091db 100644 --- a/android/app/src/main/res/values-uk/strings.xml +++ b/android/app/src/main/res/values-uk/strings.xml @@ -25,7 +25,7 @@ Who Need Help використає вашу точну геолокацію лише для цієї дії, щоб розмістити вибрану точку або область. Це не запускає передавання геолокації в реальному часі. Android не зміг показати захищену кнопку геолокації. Геолокація не передавалася. Передавати поточну геолокацію учаснику? - 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 8d526ba..b98c090 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -25,7 +25,7 @@ Who Need Help will use your precise location only for this action to place the point or area you selected. This does not start live tracking. Android could not provide the secure location button. No location was shared. Share live location with your match? - Who Need Help will collect and send your precise location to the matched requester or helper while sharing is on, including while the app is minimized. A persistent notification remains visible. Use Stop sharing in the app or notification to stop; the current raw position is then deleted. Summary safety evidence may be retained as described in the Privacy Policy. + Who Need Help collects and sends your precise location to the matched requester or helper for live location sharing, including in the background when the app is minimized or not in use. Sharing starts only after you continue. A persistent notification remains visible. Use Stop sharing in the app or notification to stop; the current raw position is then deleted. Summary safety evidence may be retained as described in the Privacy Policy. Continue and share Help request updates Private request, message, and nearby-help notifications. diff --git a/android/play-store/review-access.md b/android/play-store/review-access.md index 33a124f..2044631 100644 --- a/android/play-store/review-access.md +++ b/android/play-store/review-access.md @@ -1,6 +1,7 @@ # Google Play review access -The app has public pages, email/passwordless authentication, and Google sign-in. +The app has public pages, email/passwordless authentication, password +authentication, and Google sign-in. Reviewers must be able to inspect restricted functionality without contacting a real requester or sharing real personal/medical information. @@ -12,9 +13,10 @@ real requester or sharing real personal/medical information. moderation LiveViews require authentication. 2. For authenticated functionality, use the dedicated production reviewer account prepared immediately before submission. -3. Enter the reviewer email on the Log in screen and use the current one-time - sign-in link delivered to the reviewer mailbox, or use the supplied password - if Play Console’s access-instructions field requires fixed credentials. +3. Expand **Use a password instead**, then enter the dedicated reviewer email + and password supplied in Play Console. Do not use an email link or Google + sign-in for review: the supplied password must remain reusable, always + available, and independent of a developer mailbox or one-time code. 4. Use only the pre-created synthetic requests and activity. Their titles must start with `Play review`. 5. A second synthetic account must already be assigned as the counterpart so the @@ -27,7 +29,8 @@ Do not store credentials here or in Git. Put them only in Play Console’s app access field: - Reviewer email: create at release time. -- Reviewer password or mailbox access instructions: create at release time. +- Reviewer password: create at release time and store only in Play Console and + the operator-controlled password manager. - Stable synthetic request URL: create at release time. - Stable synthetic activity URL: create at release time. - Support contact: `contact@whoneedhelp.com`. @@ -39,3 +42,5 @@ access field: expiring fixture, or test/staging domain. - Confirm the reviewer account is not a moderator or administrator. - Confirm all data is synthetic and no real user can be messaged or located. +- Confirm the password works from a clean Play-delivered install without a + second factor, one-time code, developer browser session, or location gate. diff --git a/android/play-store/store-listing-en-US.md b/android/play-store/store-listing-en-US.md index 6a96fce..2c132fb 100644 --- a/android/play-store/store-listing-en-US.md +++ b/android/play-store/store-listing-en-US.md @@ -20,7 +20,7 @@ Key features: - Create a categorized request and show only an approximate public area, or hide the map point until you approve a participant. - Accept a request and coordinate in private real-time chat. -- Share live location only when you choose, with a persistent Android notification and a visible stop action. +- Share live location only when you choose, including in the background while the app is minimized or not in use, with a persistent Android notification and a visible stop action. - Confirm a handover with a one-time code and completion from both people. - Join moderated social activities and use participant group chat after approval. - Build trust through completed-help history and double-blind reviews. diff --git a/android/play-store/store-listing-ru-RU.md b/android/play-store/store-listing-ru-RU.md index 074757a..55307cf 100644 --- a/android/play-store/store-listing-ru-RU.md +++ b/android/play-store/store-listing-ru-RU.md @@ -20,7 +20,7 @@ Who Need Help помогает людям, которым срочно нужн - Создание заявки по категории с примерной публичной областью или скрытой до одобрения точкой. - Принятие заявки и координация в приватном чате в реальном времени. -- Добровольная трансляция геопозиции с постоянным уведомлением Android и заметной кнопкой остановки. +- Добровольная трансляция геопозиции, в том числе в фоновом режиме, когда приложение свёрнуто или не используется, с постоянным уведомлением Android и заметной кнопкой остановки. - Подтверждение передачи одноразовым кодом и завершение обеими сторонами. - Участие в модерируемых мероприятиях и групповом чате после одобрения. - История выполненной помощи и взаимные скрытые до завершения отзывы. diff --git a/android/play-store/store-listing-uk-UA.md b/android/play-store/store-listing-uk-UA.md index 4a5cecd..15c31a7 100644 --- a/android/play-store/store-listing-uk-UA.md +++ b/android/play-store/store-listing-uk-UA.md @@ -20,7 +20,7 @@ Who Need Help допомагає людям, яким терміново пот - Створення заявки за категорією з приблизною публічною областю або прихованою до схвалення точкою. - Прийняття заявки та координація у приватному чаті в реальному часі. -- Добровільна трансляція геопозиції з постійним сповіщенням Android і помітною дією зупинки. +- Добровільна трансляція геопозиції, зокрема у фоновому режимі, коли застосунок згорнуто або він не використовується, з постійним сповіщенням Android і помітною дією зупинки. - Підтвердження передачі одноразовим кодом і завершення обома сторонами. - Участь у модерованих заходах і груповому чаті після схвалення. - Історія виконаної допомоги та взаємні відгуки, приховані до завершення. diff --git a/docs/google-play-pre-upload-audit-2026-08-03.md b/docs/google-play-pre-upload-audit-2026-08-03.md new file mode 100644 index 0000000..6556b6d --- /dev/null +++ b/docs/google-play-pre-upload-audit-2026-08-03.md @@ -0,0 +1,73 @@ +# Google Play pre-upload audit — 2026-08-03 + +This audit separates verified repository/device facts from actions that still +require Play Console. It contains no account credentials or signing keys. + +## Verified locally + +- The selected upload artifact and its checksum are recorded in + `docs/google-play-release-candidate-2026-08-03.md`. +- Package `org.whoneedhelp.mobile`, version code `1`, version name `0.1.0`, + minimum SDK `24`, and target SDK `37` were verified from the release build. +- Release unit tests, lint, R8, signing verification, and bundletool validation + passed. The release lint report contains no errors or warnings. +- The native disclosure appears before the location permission flow and + explicitly describes precise-location collection and transmission, + background use while minimized or not in use, persistent notification, + stopping, raw-location deletion, and retained summary evidence. +- English, Russian, and Ukrainian disclosure and store-listing text describe + the same behavior. +- The public Privacy page identifies Firebase Cloud Messaging and Firebase + Installations, the current OpenStreetMap Foundation tile service, and the + Android foreground location service behavior. +- Public Privacy, Terms, Safety, Support, content-reporting, and account-deletion + routes exist in the product. Reviewer guidance is recorded in + `android/play-store/review-access.md`. +- The release APK was installed on the authorised Android 16 physical device. + The production home and Safety pages rendered, the production App Link opened + `MainActivity`, and Android reported `whoneedhelp.com` as verified. +- The clean PID-scoped application log contains no application crash, + AndroidRuntime, TLS/SSL, or WebView load error. +- No analytics SDK is declared as active in the Android application. Data Safety + answers must still describe the behavior of Firebase Messaging/Installations + and the app's own server communication. + +## Required before the first upload + +- Create the Play Console app if it does not yet exist. This state is not + confirmed by repository or device evidence. +- Deploy the current Privacy-page changes to production before submitting the + app for review. Do not change the frozen hackathon test deployment. +- Create a dedicated non-staff production reviewer account with a fixed, + reusable password. Put its credentials only in Play Console App access and + the operator-controlled password manager. +- Create stable synthetic `Play review` request and activity records with a + second synthetic counterpart, then verify every reviewer instruction from a + clean installation. +- Complete App content: App access, Ads, Content rating, Target audience, + News-app declaration, Data Safety, background-location declaration if Play + presents it, and the account-deletion URL. +- Recheck the store listing, screenshots, support contact, and privacy-policy + URL in Play Console against the prepared files under `android/play-store/`. + +## Required immediately after the first upload + +- Record the Google Play App Signing SHA-1 and SHA-256. These are different from + the upload-certificate fingerprints documented for the local artifact. +- Add the Play App Signing fingerprints to the production Firebase Android app + and production App Links association, then recheck domain verification. +- Install the Play-delivered build from the internal-testing opt-in link and + repeat production-origin, sign-in, push-notification, foreground/background + location, stop-sharing, and App Link smoke tests. +- Only after the Play-delivered build passes, prepare the closed test with at + least 12 continuously opted-in testers for at least 14 days before requesting + production access. + +## Scope protection + +- Do not upload an older candidate or rebuild after choosing the upload AAB + without recording a new source fingerprint and SHA-256. +- Do not put reviewer passwords, service-account JSON, signing keys, `.env` + files, or Play Console tokens in Git. +- Do not update or restart the frozen hackathon test project as part of the Play + release workflow. diff --git a/docs/google-play-release-candidate-2026-08-03.md b/docs/google-play-release-candidate-2026-08-03.md index 0597655..275aba7 100644 --- a/docs/google-play-release-candidate-2026-08-03.md +++ b/docs/google-play-release-candidate-2026-08-03.md @@ -6,15 +6,15 @@ material. ## Upload artifact -- File: `android/dist-release-20260803-183258/who-need-help-release.aab` -- SHA-256: `dfe9c61a3ab50d95574a1bb58125eda3abae9e194872e4df81072d108fdf0778` +- File: `android/dist-release-20260803-162910/who-need-help-release.aab` +- SHA-256: `03d39a9a08e9ca7569caccf1c7bd75e9349f7655935e7bbf23d1998cd37b3837` - Package: `org.whoneedhelp.mobile` - Version code: `1` - Version name: `0.1.0` - Minimum SDK: `24` - Target SDK: `37` - Source fingerprint: - `2abf317a1e1b5f6ca61d54abb09f64f8d0c85949ae53c576b72ef87fde04d7e6` + `34de017cb2a08dcc19fe0b531fb2473df30de3f559cdbac914881059299e0992` The source fingerprint stored next to the artifact matched a fresh local fingerprint after the build. @@ -38,24 +38,33 @@ App Links association. errors or warnings. - R8 release build completed successfully. - APK and AAB signing verification passed. +- The native disclosure shown immediately before Android location permission + explains collection and transmission of precise location, background use + while the app is minimized or not in use, the persistent notification, the + Stop action, raw-location deletion, and retained summary safety evidence. - Universal APK generated from this AAB: - `android/dist-release-20260803-183258/who-need-help-release-universal.apk` + `android/dist-release-20260803-162910/who-need-help-release-universal.apk` - Universal APK SHA-256: - `8792140c45dd823f88f7badb29cc0d39c0d5e9dc3ac0b2fcc8c1f367ab06c354` + `d079a42809155faa86da72281c985f01d4134097e4410cdfbf244869b3027d21` +- The bundletool archive SHA-256 is + `9e9d034c44e55c22bc6d6e7ac3b294e5339ee808170fe0f6c80b1307f9de5907`. - The release APK SHA-256 is - `07bc423b993c819ddcf330b5193df19bb76fcec2cd10dac1301ca4e45cace382`. + `e40f72558aa8b0c94ad917ff885618ba56199acf5dd2beb2f331305f0748f5d2`. - The release APK was installed over the existing production package on the authorised physical Android 16 / API 36 device without deleting app data. - Physical-device evidence is stored in - `output/android-physical-release/20260803-185605-c4a9dbe/`. The branded - loading screen was visible in the 200 ms capture and the production home - page was rendered in the 500 ms capture. + `output/android-physical-release/20260803-1934-policy/` and + `output/android-physical-release/20260803-1934-policy-clean/`. The production + home and Safety pages rendered without visible cropping or overlap. - `https://whoneedhelp.com/safety` was delivered to `org.whoneedhelp.mobile/.MainActivity` by an implicit Android App Link intent - and rendered in the installed app. Android reported the domain as verified - and completed the cold App Link launch in 654 ms. -- No application crash or TLS/SSL/WebView load failure was present in the - filtered release smoke-test log. + and rendered in the installed app. Android reported the domain as verified, + delivered the intent to `org.whoneedhelp.mobile/.MainActivity`, and completed + the clean cold App Link launch in 654 ms. +- A PID-scoped log captured after the clean launch contained no application + crash, AndroidRuntime, TLS/SSL, or WebView load error. An earlier diagnostic + run crashed Android's separate `UiAutomation` process; the application + remained running and that tool crash is not counted as app evidence. - The complete repository quality run passed 443 ExUnit tests and 14 browser dependency tests, plus compiler, format, xref, Credo, Sobelow, Dialyzer, dependency audit, container, Compose, Helm, migration, rollback, @@ -70,6 +79,8 @@ App Links association. 3. Complete the prepared store listing and App content sections using `android/play-store/` and `android/store-assets/`. 4. Upload only the AAB identified above to an internal-testing release first. + The older `android/dist-release-20260803-183258/` candidate is superseded and + must not be uploaded. 5. Install the Play-delivered build from the internal-test opt-in link and repeat the production-origin, sign-in, notification, location, and App Link smoke tests. diff --git a/lib/who_need_help_web/controllers/page_html/privacy.html.heex b/lib/who_need_help_web/controllers/page_html/privacy.html.heex index 73b9ec9..348c2dd 100644 --- a/lib/who_need_help_web/controllers/page_html/privacy.html.heex +++ b/lib/who_need_help_web/controllers/page_html/privacy.html.heex @@ -2,7 +2,7 @@
WHO NEED HELP

{gettext("Privacy Policy")}

-

{gettext("Effective: 21 July 2026")}

+

{gettext("Effective: 3 August 2026")}

{gettext( "This policy explains how Who Need Help processes personal data when people use the voluntary-help service, including Google sign-in. Who Need Help is not an advertising network and does not sell personal data." @@ -36,7 +36,7 @@

  • {gettext("Location and tracking:")} {gettext( - "a request or activity location that the user selects, plus exact location, accuracy, and capture time only when a participant actively starts live sharing. Tracking sessions retain summary evidence such as distance, sample count, movement, and proximity timestamps." + "a request or activity location that the user selects, plus exact location, accuracy, and capture time only when a participant actively starts live sharing. On Android, live sharing can continue through a foreground location service in the background while the app is minimized or not in use. A persistent notification remains visible and provides a Stop action. Tracking sessions retain summary evidence such as distance, sample count, movement, and proximity timestamps." )}
  • @@ -91,6 +91,11 @@ "Hosting, database, backup, transactional-email, and map-tile providers process the minimum data needed to provide their component of the service. External social-profile and thank-you links are controlled by their own operators and policies." )}

    +

    + {gettext( + "After the user enables notifications, Firebase Cloud Messaging and Firebase Installations process an app-installation identifier, app metadata, and push token to deliver notifications. The configured map-tile provider, currently the OpenStreetMap Foundation tile service, receives the network request needed to fetch map images, including the IP address, browser or app metadata, request time, and requested tile coordinates. Detailed tile coordinates may describe a small map area. Who Need Help does not intentionally send private request text, chat messages, email addresses, handover codes, or raw live-location API payloads to the map-tile provider." + )} +

    diff --git a/priv/gettext/default.pot b/priv/gettext/default.pot index c353e18..6969061 100644 --- a/priv/gettext/default.pot +++ b/priv/gettext/default.pot @@ -2890,7 +2890,7 @@ msgstr "" msgid "Closed" msgstr "" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:154 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:159 #: lib/who_need_help_web/controllers/page_html/terms.html.heex:132 #, elixir-autogen, elixir-format msgid "Contact" @@ -5921,7 +5921,7 @@ msgstr "" msgid "Account and profile:" msgstr "" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:117 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:122 #, elixir-autogen, elixir-format msgid "Account settings control profile, location visibility, direct messages, and connected Google sign-in. Live tracking is optional and can be stopped. You may submit a" msgstr "" @@ -5931,7 +5931,7 @@ msgstr "" msgid "Ask nearby volunteers for free medicine pickup or safe practical help, coordinate privately, and verify the handover." msgstr "" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:157 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:162 #, elixir-autogen, elixir-format msgid "Contact the Who Need Help operator through the" msgstr "" @@ -5946,7 +5946,6 @@ msgstr "" msgid "Data we process" msgstr "" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:5 #: lib/who_need_help_web/controllers/page_html/terms.html.heex:5 #, elixir-autogen, elixir-format msgid "Effective: 21 July 2026" @@ -6032,7 +6031,7 @@ msgstr "" msgid "Optional thanks and third parties" msgstr "" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:106 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:111 #, elixir-autogen, elixir-format msgid "Other account, content, communication, moderation, support, and legal records are kept while needed to provide the service, resolve disputes, prevent fraud, meet legal duties, or preserve the integrity of completed-help records. Backup copies may remain until the relevant backup expires. A deletion request does not erase records that must still be retained for those purposes." msgstr "" @@ -6047,7 +6046,7 @@ msgstr "" msgid "Questions, disputes, appeals, and accessibility issues can be submitted through the" msgstr "" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:98 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:103 #, elixir-autogen, elixir-format msgid "Retention and deletion" msgstr "" @@ -6057,12 +6056,12 @@ msgstr "" msgid "Security and operation:" msgstr "" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:138 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:143 #, elixir-autogen, elixir-format msgid "Security, adults, and changes" msgstr "" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:160 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:165 #, elixir-autogen, elixir-format msgid "Select “Privacy request”, “Data export”, or “Account deletion” so the request reaches the appropriate queue." msgstr "" @@ -6083,7 +6082,7 @@ msgstr "" msgid "The conditions for using Who Need Help to coordinate voluntary help and social activities." msgstr "" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:101 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:106 #, elixir-autogen, elixir-format msgid "The current exact tracking point is deleted when sharing stops, the match ends, or either participant blocks the other. Derived movement and proximity evidence may remain to protect reputation integrity and investigate abuse. Login tokens and rate-limit buckets expire or are pruned according to their operational windows." msgstr "" @@ -6093,7 +6092,7 @@ msgstr "" msgid "The service is not an emergency, medical, pharmacy, transport, roadside-assistance, or payment service. In immediate danger, contact the emergency service for your location." msgstr "" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:141 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:146 #, elixir-autogen, elixir-format msgid "The service uses access controls, hashed credentials and handover codes, encrypted HTTPS transport, restricted visibility, and audit records. No internet service can guarantee absolute security. Who Need Help is intended only for adults aged 18 or older." msgstr "" @@ -6103,7 +6102,7 @@ msgstr "" msgid "These terms describe the conditions for using Who Need Help. The service coordinates voluntary help and optional social activities between adults; it is not the provider of the requested help." msgstr "" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:146 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:151 #, elixir-autogen, elixir-format msgid "This page will be updated when data practices materially change. The effective date above identifies the current version." msgstr "" @@ -6118,7 +6117,7 @@ msgstr "" msgid "Trust and support:" msgstr "" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:126 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:131 #, elixir-autogen, elixir-format msgid "Use the" msgstr "" @@ -6168,17 +6167,12 @@ msgstr "" msgid "Your content and privacy" msgstr "" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:114 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:119 #, elixir-autogen, elixir-format msgid "Your controls" msgstr "" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:38 -#, elixir-autogen, elixir-format -msgid "a request or activity location that the user selects, plus exact location, accuracy, and capture time only when a participant actively starts live sharing. Tracking sessions retain summary evidence such as distance, sample count, movement, and proximity timestamps." -msgstr "" - -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:125 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:130 #: lib/who_need_help_web/controllers/page_html/terms.html.heex:123 #, elixir-autogen, elixir-format msgid "account-deletion request" @@ -6189,7 +6183,7 @@ msgstr "" msgid "blocks, reports, moderation signals and decisions, support requests, account-deletion or data-export requests, and legal content-removal notices. These records may include the content, contact details, timestamps, and reviewer actions needed to handle the case." msgstr "" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:130 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:135 #: lib/who_need_help_web/controllers/page_html/terms.html.heex:105 #, elixir-autogen, elixir-format msgid "content-removal form" @@ -6200,12 +6194,12 @@ msgstr "" msgid "email address, password hash if a password is added, display name, biography, locale, privacy and messaging preferences, optional thank-you URL, linked social profiles, confirmation status, and the time at which the registration rules were accepted." msgstr "" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:132 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:137 #, elixir-autogen, elixir-format msgid "for a specific item of illegal, infringing, or privacy-violating content." msgstr "" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:123 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:128 #, elixir-autogen, elixir-format msgid "or an" msgstr "" @@ -6215,12 +6209,12 @@ msgstr "" msgid "or the" msgstr "" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:121 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:126 #, elixir-autogen, elixir-format msgid "privacy or data-export request" msgstr "" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:159 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:164 #, elixir-autogen, elixir-format msgid "public support form" msgstr "" @@ -7734,3 +7728,18 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Your staff access" msgstr "" + +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:95 +#, elixir-autogen, elixir-format +msgid "After the user enables notifications, Firebase Cloud Messaging and Firebase Installations process an app-installation identifier, app metadata, and push token to deliver notifications. The configured map-tile provider, currently the OpenStreetMap Foundation tile service, receives the network request needed to fetch map images, including the IP address, browser or app metadata, request time, and requested tile coordinates. Detailed tile coordinates may describe a small map area. Who Need Help does not intentionally send private request text, chat messages, email addresses, handover codes, or raw live-location API payloads to the map-tile provider." +msgstr "" + +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:5 +#, elixir-autogen, elixir-format +msgid "Effective: 3 August 2026" +msgstr "" + +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:38 +#, elixir-autogen, elixir-format +msgid "a request or activity location that the user selects, plus exact location, accuracy, and capture time only when a participant actively starts live sharing. On Android, live sharing can continue through a foreground location service in the background while the app is minimized or not in use. A persistent notification remains visible and provides a Stop action. Tracking sessions retain summary evidence such as distance, sample count, movement, and proximity timestamps." +msgstr "" diff --git a/priv/gettext/en/LC_MESSAGES/default.po b/priv/gettext/en/LC_MESSAGES/default.po index 18f47ac..99c664e 100644 --- a/priv/gettext/en/LC_MESSAGES/default.po +++ b/priv/gettext/en/LC_MESSAGES/default.po @@ -205,8 +205,8 @@ msgstr "Account and language" msgid "Action center" msgstr "Action center" -#: lib/who_need_help_web/live/admin_user_live.ex:113 -#: lib/who_need_help_web/live/admin_user_live.ex:193 +#: lib/who_need_help_web/live/admin_user_live.ex:109 +#: lib/who_need_help_web/live/admin_user_live.ex:188 #: lib/who_need_help_web/live/admin_users_live.ex:125 #: lib/who_need_help_web/live/admin_users_live.ex:185 #: lib/who_need_help_web/live/notification_live.ex:521 @@ -264,7 +264,7 @@ msgid "Add unverified link" msgstr "Add unverified link" #: lib/who_need_help_web/live/admin_dashboard_live.ex:135 -#: lib/who_need_help_web/live/admin_user_live.ex:102 +#: lib/who_need_help_web/live/admin_user_live.ex:98 #: lib/who_need_help_web/live/admin_users_live.ex:123 #, elixir-autogen, elixir-format msgid "Administrator" @@ -891,7 +891,7 @@ msgstr "In progress" msgid "Interface language" msgstr "Interface language" -#: lib/who_need_help_web/live/admin_user_live.ex:201 +#: lib/who_need_help_web/live/admin_user_live.ex:196 #, elixir-autogen, elixir-format msgid "Internal note" msgstr "Internal note" @@ -1060,7 +1060,7 @@ msgid "Moderation" msgstr "Moderation" #: lib/who_need_help_web/live/admin_dashboard_live.ex:132 -#: lib/who_need_help_web/live/admin_user_live.ex:99 +#: lib/who_need_help_web/live/admin_user_live.ex:95 #: lib/who_need_help_web/live/admin_users_live.ex:120 #, elixir-autogen, elixir-format msgid "Moderator" @@ -1549,8 +1549,8 @@ msgstr "Resolution note" msgid "Resolved" msgstr "Resolved" -#: lib/who_need_help_web/live/admin_user_live.ex:114 -#: lib/who_need_help_web/live/admin_user_live.ex:194 +#: lib/who_need_help_web/live/admin_user_live.ex:110 +#: lib/who_need_help_web/live/admin_user_live.ex:189 #: lib/who_need_help_web/live/admin_users_live.ex:126 #: lib/who_need_help_web/live/admin_users_live.ex:186 #, elixir-autogen, elixir-format @@ -1759,7 +1759,7 @@ msgstr "Start helping" msgid "Starts" msgstr "Starts" -#: lib/who_need_help_web/live/admin_user_live.ex:191 +#: lib/who_need_help_web/live/admin_user_live.ex:186 #: lib/who_need_help_web/live/admin_users_live.ex:236 #: lib/who_need_help_web/live/moderation_live.ex:632 #: lib/who_need_help_web/live/moderation_live.ex:812 @@ -1792,8 +1792,8 @@ msgstr "Structured fields must be a valid JSON object." msgid "Submit review" msgstr "Submit review" -#: lib/who_need_help_web/live/admin_user_live.ex:115 -#: lib/who_need_help_web/live/admin_user_live.ex:195 +#: lib/who_need_help_web/live/admin_user_live.ex:111 +#: lib/who_need_help_web/live/admin_user_live.ex:190 #: lib/who_need_help_web/live/admin_users_live.ex:127 #: lib/who_need_help_web/live/admin_users_live.ex:187 #, elixir-autogen, elixir-format @@ -2795,7 +2795,7 @@ msgstr "ACCOUNT AND DATA" #: lib/who_need_help_web/controllers/support_html.ex:6 #: lib/who_need_help_web/controllers/support_html/new.html.heex:32 -#: lib/who_need_help_web/live/admin_user_live.ex:174 +#: lib/who_need_help_web/live/admin_user_live.ex:170 #: lib/who_need_help_web/live/support_operation_live.ex:140 #: lib/who_need_help_web/live/support_operations_live.ex:244 #: lib/who_need_help_web/live/support_operations_live.ex:395 @@ -2890,7 +2890,7 @@ msgstr "Choose a topic" msgid "Closed" msgstr "Closed" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:154 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:159 #: lib/who_need_help_web/controllers/page_html/terms.html.heex:132 #, elixir-autogen, elixir-format msgid "Contact" @@ -3232,7 +3232,7 @@ msgstr "Submitting this form does not immediately sign you out or erase evidence #: lib/who_need_help_web/components/admin_components.ex:166 #: lib/who_need_help_web/components/layouts.ex:197 #: lib/who_need_help_web/live/admin_dashboard_live.ex:131 -#: lib/who_need_help_web/live/admin_user_live.ex:98 +#: lib/who_need_help_web/live/admin_user_live.ex:94 #: lib/who_need_help_web/live/admin_users_live.ex:119 #: lib/who_need_help_web/live/support_operations_live.ex:340 #, elixir-autogen, elixir-format @@ -5447,7 +5447,7 @@ msgstr "Restore request" msgid "Safety guidance for voluntary help, medicine pickup, roadside requests, location sharing, and in-person activities." msgstr "Safety guidance for voluntary help, medicine pickup, roadside requests, location sharing, and in-person activities." -#: lib/who_need_help_web/live/admin_user_live.ex:205 +#: lib/who_need_help_web/live/admin_user_live.ex:200 #: lib/who_need_help_web/live/support_operation_live.ex:335 #: lib/who_need_help_web/live/support_operation_live.ex:438 #, elixir-autogen, elixir-format @@ -5921,7 +5921,7 @@ msgstr "Acceptable use" msgid "Account and profile:" msgstr "Account and profile:" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:117 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:122 #, elixir-autogen, elixir-format msgid "Account settings control profile, location visibility, direct messages, and connected Google sign-in. Live tracking is optional and can be stopped. You may submit a" msgstr "Account settings control profile, location visibility, direct messages, and connected Google sign-in. Live tracking is optional and can be stopped. You may submit a" @@ -5931,7 +5931,7 @@ msgstr "Account settings control profile, location visibility, direct messages, msgid "Ask nearby volunteers for free medicine pickup or safe practical help, coordinate privately, and verify the handover." msgstr "Ask nearby volunteers for free medicine pickup or safe practical help, coordinate privately, and verify the handover." -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:157 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:162 #, elixir-autogen, elixir-format msgid "Contact the Who Need Help operator through the" msgstr "Contact the Who Need Help operator through the" @@ -5946,7 +5946,6 @@ msgstr "Data is used to authenticate accounts, publish and match requests, coord msgid "Data we process" msgstr "Data we process" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:5 #: lib/who_need_help_web/controllers/page_html/terms.html.heex:5 #, elixir-autogen, elixir-format msgid "Effective: 21 July 2026" @@ -6032,7 +6031,7 @@ msgstr "Nature of the service" msgid "Optional thanks and third parties" msgstr "Optional thanks and third parties" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:106 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:111 #, elixir-autogen, elixir-format msgid "Other account, content, communication, moderation, support, and legal records are kept while needed to provide the service, resolve disputes, prevent fraud, meet legal duties, or preserve the integrity of completed-help records. Backup copies may remain until the relevant backup expires. A deletion request does not erase records that must still be retained for those purposes." msgstr "Other account, content, communication, moderation, support, and legal records are kept while needed to provide the service, resolve disputes, prevent fraud, meet legal duties, or preserve the integrity of completed-help records. Backup copies may remain until the relevant backup expires. A deletion request does not erase records that must still be retained for those purposes." @@ -6047,7 +6046,7 @@ msgstr "Other users see profile, request, activity, reputation, and location inf msgid "Questions, disputes, appeals, and accessibility issues can be submitted through the" msgstr "Questions, disputes, appeals, and accessibility issues can be submitted through the" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:98 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:103 #, elixir-autogen, elixir-format msgid "Retention and deletion" msgstr "Retention and deletion" @@ -6057,12 +6056,12 @@ msgstr "Retention and deletion" msgid "Security and operation:" msgstr "Security and operation:" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:138 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:143 #, elixir-autogen, elixir-format msgid "Security, adults, and changes" msgstr "Security, adults, and changes" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:160 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:165 #, elixir-autogen, elixir-format msgid "Select “Privacy request”, “Data export”, or “Account deletion” so the request reaches the appropriate queue." msgstr "Select “Privacy request”, “Data export”, or “Account deletion” so the request reaches the appropriate queue." @@ -6083,7 +6082,7 @@ msgstr "Terms of Service" msgid "The conditions for using Who Need Help to coordinate voluntary help and social activities." msgstr "The conditions for using Who Need Help to coordinate voluntary help and social activities." -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:101 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:106 #, elixir-autogen, elixir-format msgid "The current exact tracking point is deleted when sharing stops, the match ends, or either participant blocks the other. Derived movement and proximity evidence may remain to protect reputation integrity and investigate abuse. Login tokens and rate-limit buckets expire or are pruned according to their operational windows." msgstr "The current exact tracking point is deleted when sharing stops, the match ends, or either participant blocks the other. Derived movement and proximity evidence may remain to protect reputation integrity and investigate abuse. Login tokens and rate-limit buckets expire or are pruned according to their operational windows." @@ -6093,7 +6092,7 @@ msgstr "The current exact tracking point is deleted when sharing stops, the matc msgid "The service is not an emergency, medical, pharmacy, transport, roadside-assistance, or payment service. In immediate danger, contact the emergency service for your location." msgstr "The service is not an emergency, medical, pharmacy, transport, roadside-assistance, or payment service. In immediate danger, contact the emergency service for your location." -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:141 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:146 #, elixir-autogen, elixir-format msgid "The service uses access controls, hashed credentials and handover codes, encrypted HTTPS transport, restricted visibility, and audit records. No internet service can guarantee absolute security. Who Need Help is intended only for adults aged 18 or older." msgstr "The service uses access controls, hashed credentials and handover codes, encrypted HTTPS transport, restricted visibility, and audit records. No internet service can guarantee absolute security. Who Need Help is intended only for adults aged 18 or older." @@ -6103,7 +6102,7 @@ msgstr "The service uses access controls, hashed credentials and handover codes, msgid "These terms describe the conditions for using Who Need Help. The service coordinates voluntary help and optional social activities between adults; it is not the provider of the requested help." msgstr "These terms describe the conditions for using Who Need Help. The service coordinates voluntary help and optional social activities between adults; it is not the provider of the requested help." -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:146 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:151 #, elixir-autogen, elixir-format msgid "This page will be updated when data practices materially change. The effective date above identifies the current version." msgstr "This page will be updated when data practices materially change. The effective date above identifies the current version." @@ -6118,7 +6117,7 @@ msgstr "This policy explains how Who Need Help processes personal data when peop msgid "Trust and support:" msgstr "Trust and support:" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:126 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:131 #, elixir-autogen, elixir-format msgid "Use the" msgstr "Use the" @@ -6168,17 +6167,12 @@ msgstr "You retain responsibility for content you submit. You give Who Need Help msgid "Your content and privacy" msgstr "Your content and privacy" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:114 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:119 #, elixir-autogen, elixir-format msgid "Your controls" msgstr "Your controls" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:38 -#, elixir-autogen, elixir-format -msgid "a request or activity location that the user selects, plus exact location, accuracy, and capture time only when a participant actively starts live sharing. Tracking sessions retain summary evidence such as distance, sample count, movement, and proximity timestamps." -msgstr "a request or activity location that the user selects, plus exact location, accuracy, and capture time only when a participant actively starts live sharing. Tracking sessions retain summary evidence such as distance, sample count, movement, and proximity timestamps." - -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:125 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:130 #: lib/who_need_help_web/controllers/page_html/terms.html.heex:123 #, elixir-autogen, elixir-format msgid "account-deletion request" @@ -6189,7 +6183,7 @@ msgstr "account-deletion request" msgid "blocks, reports, moderation signals and decisions, support requests, account-deletion or data-export requests, and legal content-removal notices. These records may include the content, contact details, timestamps, and reviewer actions needed to handle the case." msgstr "blocks, reports, moderation signals and decisions, support requests, account-deletion or data-export requests, and legal content-removal notices. These records may include the content, contact details, timestamps, and reviewer actions needed to handle the case." -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:130 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:135 #: lib/who_need_help_web/controllers/page_html/terms.html.heex:105 #, elixir-autogen, elixir-format msgid "content-removal form" @@ -6200,12 +6194,12 @@ msgstr "content-removal form" msgid "email address, password hash if a password is added, display name, biography, locale, privacy and messaging preferences, optional thank-you URL, linked social profiles, confirmation status, and the time at which the registration rules were accepted." msgstr "email address, password hash if a password is added, display name, biography, locale, privacy and messaging preferences, optional thank-you URL, linked social profiles, confirmation status, and the time at which the registration rules were accepted." -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:132 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:137 #, elixir-autogen, elixir-format msgid "for a specific item of illegal, infringing, or privacy-violating content." msgstr "for a specific item of illegal, infringing, or privacy-violating content." -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:123 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:128 #, elixir-autogen, elixir-format msgid "or an" msgstr "or an" @@ -6215,12 +6209,12 @@ msgstr "or an" msgid "or the" msgstr "or the" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:121 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:126 #, elixir-autogen, elixir-format msgid "privacy or data-export request" msgstr "privacy or data-export request" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:159 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:164 #, elixir-autogen, elixir-format msgid "public support form" msgstr "public support form" @@ -6777,7 +6771,7 @@ msgstr[1] "%{count} votes" msgid "A single starting point for users, support, safety, legal work, analytics, roles, and audited staff actions." msgstr "A single starting point for users, support, safety, legal work, analytics, roles, and audited staff actions." -#: lib/who_need_help_web/live/admin_user_live.ex:222 +#: lib/who_need_help_web/live/admin_user_live.ex:217 #, elixir-autogen, elixir-format msgid "A staff member may hold several fixed roles." msgstr "A staff member may hold several fixed roles." @@ -6828,7 +6822,7 @@ msgstr "All measured actions" msgid "All metrics" msgstr "All metrics" -#: lib/who_need_help_web/live/admin_user_live.ex:111 +#: lib/who_need_help_web/live/admin_user_live.ex:107 #, elixir-autogen, elixir-format msgid "All permissions, staff roles, and audit log" msgstr "All permissions, staff roles, and audit log" @@ -6839,7 +6833,7 @@ msgid "An account may hold several roles. Permissions are the union of those rol msgstr "An account may hold several roles. Permissions are the union of those roles; administrator includes every permission." #: lib/who_need_help_web/live/admin_dashboard_live.ex:134 -#: lib/who_need_help_web/live/admin_user_live.ex:101 +#: lib/who_need_help_web/live/admin_user_live.ex:97 #: lib/who_need_help_web/live/admin_users_live.ex:122 #, elixir-autogen, elixir-format msgid "Analyst" @@ -6948,7 +6942,7 @@ msgstr "Automated signals are review prompts, not proof of abuse." msgid "Back to queue" msgstr "Back to queue" -#: lib/who_need_help_web/live/admin_user_live.ex:140 +#: lib/who_need_help_web/live/admin_user_live.ex:136 #, elixir-autogen, elixir-format msgid "Back to users" msgstr "Back to users" @@ -6958,7 +6952,7 @@ msgstr "Back to users" msgid "Chat message" msgstr "Chat message" -#: lib/who_need_help_web/live/admin_user_live.ex:95 +#: lib/who_need_help_web/live/admin_user_live.ex:91 #, elixir-autogen, elixir-format msgid "Check the status and internal note." msgstr "Check the status and internal note." @@ -6973,7 +6967,7 @@ msgstr "Choose a staff tool. Only permitted sections are shown." msgid "Content locations" msgstr "Content locations" -#: lib/who_need_help_web/live/admin_user_live.ex:109 +#: lib/who_need_help_web/live/admin_user_live.ex:105 #, elixir-autogen, elixir-format msgid "Content-removal and legal notice queue" msgstr "Content-removal and legal notice queue" @@ -7055,7 +7049,7 @@ msgid "Joined %{date}" msgstr "Joined %{date}" #: lib/who_need_help_web/live/admin_dashboard_live.ex:133 -#: lib/who_need_help_web/live/admin_user_live.ex:100 +#: lib/who_need_help_web/live/admin_user_live.ex:96 #: lib/who_need_help_web/live/admin_users_live.ex:121 #, elixir-autogen, elixir-format msgid "Legal" @@ -7099,7 +7093,7 @@ msgid "Manage %{name}" msgstr "Manage %{name}" #: lib/who_need_help_web/live/admin_user_live.ex:20 -#: lib/who_need_help_web/live/admin_user_live.ex:135 +#: lib/who_need_help_web/live/admin_user_live.ex:131 #, elixir-autogen, elixir-format msgid "Manage user" msgstr "Manage user" @@ -7114,10 +7108,13 @@ msgstr "Matched conversation" msgid "Name, reason, or reference" msgstr "Name, reason, or reference" -#: lib/who_need_help_web/live/admin_audit_live.ex:262 +#: lib/who_need_help_web/live/admin_audit_live.ex:260 +#: lib/who_need_help_web/live/admin_audit_live.ex:264 #: lib/who_need_help_web/live/admin_users_live.ex:345 -#: lib/who_need_help_web/live/moderation_live.ex:1140 -#: lib/who_need_help_web/live/product_analytics_live.ex:298 +#: lib/who_need_help_web/live/moderation_live.ex:1138 +#: lib/who_need_help_web/live/moderation_live.ex:1142 +#: lib/who_need_help_web/live/product_analytics_live.ex:296 +#: lib/who_need_help_web/live/product_analytics_live.ex:300 #: lib/who_need_help_web/live/support_operations_live.ex:513 #, elixir-autogen, elixir-format msgid "Next" @@ -7179,7 +7176,7 @@ msgstr "Not available" msgid "Notice" msgstr "Notice" -#: lib/who_need_help_web/live/admin_user_live.ex:93 +#: lib/who_need_help_web/live/admin_user_live.ex:89 #, elixir-autogen, elixir-format msgid "One or more staff roles are invalid." msgstr "One or more staff roles are invalid." @@ -7189,7 +7186,7 @@ msgstr "One or more staff roles are invalid." msgid "One row per date, metric, and non-identifying dimension." msgstr "One row per date, metric, and non-identifying dimension." -#: lib/who_need_help_web/live/admin_user_live.ex:267 +#: lib/who_need_help_web/live/admin_user_live.ex:262 #, elixir-autogen, elixir-format msgid "Only administrators can change staff roles." msgstr "Only administrators can change staff roles." @@ -7225,27 +7222,30 @@ msgstr "Operations queues" msgid "Overview" msgstr "Overview" -#: lib/who_need_help_web/live/admin_audit_live.ex:255 +#: lib/who_need_help_web/live/admin_audit_live.ex:256 #: lib/who_need_help_web/live/admin_users_live.ex:227 #: lib/who_need_help_web/live/admin_users_live.ex:338 -#: lib/who_need_help_web/live/moderation_live.ex:1129 -#: lib/who_need_help_web/live/product_analytics_live.ex:291 +#: lib/who_need_help_web/live/moderation_live.ex:1130 +#: lib/who_need_help_web/live/product_analytics_live.ex:292 #: lib/who_need_help_web/live/support_operations_live.ex:506 #: lib/who_need_help_web/live/support_operations_live.ex:537 #, elixir-autogen, elixir-format msgid "Page %{page}" msgstr "Page %{page}" -#: lib/who_need_help_web/live/admin_audit_live.ex:253 +#: lib/who_need_help_web/live/admin_audit_live.ex:249 +#: lib/who_need_help_web/live/admin_audit_live.ex:254 #: lib/who_need_help_web/live/admin_users_live.ex:336 -#: lib/who_need_help_web/live/moderation_live.ex:1126 -#: lib/who_need_help_web/live/product_analytics_live.ex:289 +#: lib/who_need_help_web/live/moderation_live.ex:1122 +#: lib/who_need_help_web/live/moderation_live.ex:1127 +#: lib/who_need_help_web/live/product_analytics_live.ex:285 +#: lib/who_need_help_web/live/product_analytics_live.ex:290 #: lib/who_need_help_web/live/support_operations_live.ex:504 #, elixir-autogen, elixir-format msgid "Previous" msgstr "Previous" -#: lib/who_need_help_web/live/admin_user_live.ex:110 +#: lib/who_need_help_web/live/admin_user_live.ex:106 #, elixir-autogen, elixir-format msgid "Privacy-preserving aggregate product analytics" msgstr "Privacy-preserving aggregate product analytics" @@ -7320,14 +7320,14 @@ msgstr "Registered users" msgid "Registrations" msgstr "Registrations" -#: lib/who_need_help_web/live/admin_user_live.ex:159 +#: lib/who_need_help_web/live/admin_user_live.ex:155 #: lib/who_need_help_web/live/admin_users_live.ex:263 #: lib/who_need_help_web/live/admin_users_live.ex:304 #, elixir-autogen, elixir-format msgid "Regular user" msgstr "Regular user" -#: lib/who_need_help_web/live/admin_user_live.ex:107 +#: lib/who_need_help_web/live/admin_user_live.ex:103 #, elixir-autogen, elixir-format msgid "Reports, safety signals, user restrictions, and categories" msgstr "Reports, safety signals, user restrictions, and categories" @@ -7347,7 +7347,7 @@ msgstr "Requests completed" msgid "Requests created" msgstr "Requests created" -#: lib/who_need_help_web/live/admin_user_live.ex:176 +#: lib/who_need_help_web/live/admin_user_live.ex:172 #, elixir-autogen, elixir-format msgid "Restrict or suspend access and record an internal reason." msgstr "Restrict or suspend access and record an internal reason." @@ -7357,7 +7357,7 @@ msgstr "Restrict or suspend access and record an internal reason." msgid "Restricted workspace" msgstr "Restricted workspace" -#: lib/who_need_help_web/live/admin_user_live.ex:136 +#: lib/who_need_help_web/live/admin_user_live.ex:132 #, elixir-autogen, elixir-format msgid "Review account access and staff permissions for one user." msgstr "Review account access and staff permissions for one user." @@ -7415,7 +7415,7 @@ msgstr "Rows %{first}–%{last}" msgid "SUBMISSION SAVED" msgstr "SUBMISSION SAVED" -#: lib/who_need_help_web/live/admin_user_live.ex:206 +#: lib/who_need_help_web/live/admin_user_live.ex:201 #, elixir-autogen, elixir-format msgid "Save account status" msgstr "Save account status" @@ -7451,7 +7451,7 @@ msgid "Search users" msgstr "Search users" #: lib/who_need_help_web/live/admin_users_live.ex:218 -#: lib/who_need_help_web/live/moderation_live.ex:1131 +#: lib/who_need_help_web/live/moderation_live.ex:1132 #: lib/who_need_help_web/live/support_operations_live.ex:531 #, elixir-autogen, elixir-format msgid "Showing %{first}–%{last}" @@ -7472,13 +7472,13 @@ msgstr "Staff accounts" msgid "Staff role" msgstr "Staff role" -#: lib/who_need_help_web/live/admin_user_live.ex:220 -#: lib/who_need_help_web/live/admin_user_live.ex:234 +#: lib/who_need_help_web/live/admin_user_live.ex:215 +#: lib/who_need_help_web/live/admin_user_live.ex:229 #, elixir-autogen, elixir-format msgid "Staff roles" msgstr "Staff roles" -#: lib/who_need_help_web/live/admin_user_live.ex:45 +#: lib/who_need_help_web/live/admin_user_live.ex:41 #, elixir-autogen, elixir-format msgid "Staff roles updated." msgstr "Staff roles updated." @@ -7513,7 +7513,7 @@ msgstr "Support and legal" msgid "Support and legal operations" msgstr "Support and legal operations" -#: lib/who_need_help_web/live/admin_user_live.ex:104 +#: lib/who_need_help_web/live/admin_user_live.ex:100 #, elixir-autogen, elixir-format msgid "Support conversations and verified support cases" msgstr "Support conversations and verified support cases" @@ -7543,19 +7543,19 @@ msgstr "Taxonomy" msgid "Technical signal metadata" msgstr "Technical signal metadata" -#: lib/who_need_help_web/live/admin_user_live.ex:96 +#: lib/who_need_help_web/live/admin_user_live.ex:92 #, elixir-autogen, elixir-format msgid "The account could not be updated." msgstr "The account could not be updated." -#: lib/who_need_help_web/live/admin_user_live.ex:91 +#: lib/who_need_help_web/live/admin_user_live.ex:87 #, elixir-autogen, elixir-format msgid "The last active administrator cannot lose administrator access or be restricted." msgstr "The last active administrator cannot lose administrator access or be restricted." #: lib/who_need_help_web/live/admin_user_live.ex:14 -#: lib/who_need_help_web/live/admin_user_live.ex:57 -#: lib/who_need_help_web/live/admin_user_live.ex:94 +#: lib/who_need_help_web/live/admin_user_live.ex:53 +#: lib/who_need_help_web/live/admin_user_live.ex:90 #, elixir-autogen, elixir-format msgid "The selected account is no longer available." msgstr "The selected account is no longer available." @@ -7610,13 +7610,13 @@ msgstr "Unassigned" msgid "Unknown staff member" msgstr "Unknown staff member" -#: lib/who_need_help_web/live/admin_user_live.ex:148 +#: lib/who_need_help_web/live/admin_user_live.ex:144 #: lib/who_need_help_web/live/admin_users_live.ex:129 #, elixir-autogen, elixir-format msgid "Unnamed user" msgstr "Unnamed user" -#: lib/who_need_help_web/live/admin_user_live.ex:259 +#: lib/who_need_help_web/live/admin_user_live.ex:254 #, elixir-autogen, elixir-format msgid "Update staff roles" msgstr "Update staff roles" @@ -7626,7 +7626,7 @@ msgstr "Update staff roles" msgid "Update status, assignment, and optionally reply." msgstr "Update status, assignment, and optionally reply." -#: lib/who_need_help_web/live/admin_user_live.ex:257 +#: lib/who_need_help_web/live/admin_user_live.ex:252 #, elixir-autogen, elixir-format msgid "Updating…" msgstr "Updating…" @@ -7688,12 +7688,12 @@ msgstr "Work one review queue at a time. Sensitive evidence and every moderation msgid "Write the decision, next step, or information you need…" msgstr "Write the decision, next step, or information you need…" -#: lib/who_need_help_web/live/admin_user_live.ex:214 +#: lib/who_need_help_web/live/admin_user_live.ex:209 #, elixir-autogen, elixir-format msgid "You can view this account but cannot change its access." msgstr "You can view this account but cannot change its access." -#: lib/who_need_help_web/live/admin_user_live.ex:87 +#: lib/who_need_help_web/live/admin_user_live.ex:83 #, elixir-autogen, elixir-format msgid "You cannot restrict or suspend your own account." msgstr "You cannot restrict or suspend your own account." @@ -7709,7 +7709,7 @@ msgstr "You do not have access to that workspace." msgid "You do not have permission for this action." msgstr "You do not have permission for this action." -#: lib/who_need_help_web/live/admin_user_live.ex:82 +#: lib/who_need_help_web/live/admin_user_live.ex:78 #, elixir-autogen, elixir-format msgid "You do not have permission for this action. Role changes also require a recent sign-in." msgstr "You do not have permission for this action. Role changes also require a recent sign-in." @@ -7727,4 +7727,19 @@ msgstr "Your email was confirmed and the request was sent to support." #: lib/who_need_help_web/live/admin_dashboard_live.ex:84 #, elixir-autogen, elixir-format msgid "Your staff access" -msgstr "Your staff access" \ No newline at end of file +msgstr "Your staff access" + +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:95 +#, elixir-autogen, elixir-format +msgid "After the user enables notifications, Firebase Cloud Messaging and Firebase Installations process an app-installation identifier, app metadata, and push token to deliver notifications. The configured map-tile provider, currently the OpenStreetMap Foundation tile service, receives the network request needed to fetch map images, including the IP address, browser or app metadata, request time, and requested tile coordinates. Detailed tile coordinates may describe a small map area. Who Need Help does not intentionally send private request text, chat messages, email addresses, handover codes, or raw live-location API payloads to the map-tile provider." +msgstr "After the user enables notifications, Firebase Cloud Messaging and Firebase Installations process an app-installation identifier, app metadata, and push token to deliver notifications. The configured map-tile provider, currently the OpenStreetMap Foundation tile service, receives the network request needed to fetch map images, including the IP address, browser or app metadata, request time, and requested tile coordinates. Detailed tile coordinates may describe a small map area. Who Need Help does not intentionally send private request text, chat messages, email addresses, handover codes, or raw live-location API payloads to the map-tile provider." + +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:5 +#, elixir-autogen, elixir-format +msgid "Effective: 3 August 2026" +msgstr "Effective: 3 August 2026" + +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:38 +#, elixir-autogen, elixir-format +msgid "a request or activity location that the user selects, plus exact location, accuracy, and capture time only when a participant actively starts live sharing. On Android, live sharing can continue through a foreground location service in the background while the app is minimized or not in use. A persistent notification remains visible and provides a Stop action. Tracking sessions retain summary evidence such as distance, sample count, movement, and proximity timestamps." +msgstr "a request or activity location that the user selects, plus exact location, accuracy, and capture time only when a participant actively starts live sharing. On Android, live sharing can continue through a foreground location service in the background while the app is minimized or not in use. A persistent notification remains visible and provides a Stop action. Tracking sessions retain summary evidence such as distance, sample count, movement, and proximity timestamps." diff --git a/priv/gettext/ru/LC_MESSAGES/default.po b/priv/gettext/ru/LC_MESSAGES/default.po index 1e05e2f..29a3f02 100644 --- a/priv/gettext/ru/LC_MESSAGES/default.po +++ b/priv/gettext/ru/LC_MESSAGES/default.po @@ -209,8 +209,8 @@ msgstr "Аккаунт и язык" msgid "Action center" msgstr "Центр действий" -#: lib/who_need_help_web/live/admin_user_live.ex:113 -#: lib/who_need_help_web/live/admin_user_live.ex:193 +#: lib/who_need_help_web/live/admin_user_live.ex:109 +#: lib/who_need_help_web/live/admin_user_live.ex:188 #: lib/who_need_help_web/live/admin_users_live.ex:125 #: lib/who_need_help_web/live/admin_users_live.ex:185 #: lib/who_need_help_web/live/notification_live.ex:521 @@ -274,7 +274,7 @@ msgid "Add unverified link" msgstr "Добавить неподтверждённую ссылку" #: lib/who_need_help_web/live/admin_dashboard_live.ex:135 -#: lib/who_need_help_web/live/admin_user_live.ex:102 +#: lib/who_need_help_web/live/admin_user_live.ex:98 #: lib/who_need_help_web/live/admin_users_live.ex:123 #, elixir-autogen, elixir-format msgid "Administrator" @@ -940,7 +940,7 @@ msgstr "В процессе" msgid "Interface language" msgstr "Язык интерфейса" -#: lib/who_need_help_web/live/admin_user_live.ex:201 +#: lib/who_need_help_web/live/admin_user_live.ex:196 #, elixir-autogen, elixir-format msgid "Internal note" msgstr "Внутренняя заметка" @@ -1122,7 +1122,7 @@ msgid "Moderation" msgstr "Модерация" #: lib/who_need_help_web/live/admin_dashboard_live.ex:132 -#: lib/who_need_help_web/live/admin_user_live.ex:99 +#: lib/who_need_help_web/live/admin_user_live.ex:95 #: lib/who_need_help_web/live/admin_users_live.ex:120 #, elixir-autogen, elixir-format msgid "Moderator" @@ -1630,8 +1630,8 @@ msgstr "Примечание к решению" msgid "Resolved" msgstr "Решено" -#: lib/who_need_help_web/live/admin_user_live.ex:114 -#: lib/who_need_help_web/live/admin_user_live.ex:194 +#: lib/who_need_help_web/live/admin_user_live.ex:110 +#: lib/who_need_help_web/live/admin_user_live.ex:189 #: lib/who_need_help_web/live/admin_users_live.ex:126 #: lib/who_need_help_web/live/admin_users_live.ex:186 #, elixir-autogen, elixir-format @@ -1848,7 +1848,7 @@ msgstr "Начать помогать" msgid "Starts" msgstr "Начало" -#: lib/who_need_help_web/live/admin_user_live.ex:191 +#: lib/who_need_help_web/live/admin_user_live.ex:186 #: lib/who_need_help_web/live/admin_users_live.ex:236 #: lib/who_need_help_web/live/moderation_live.ex:632 #: lib/who_need_help_web/live/moderation_live.ex:812 @@ -1881,8 +1881,8 @@ msgstr "Структурированные поля должны быть дей msgid "Submit review" msgstr "Отправить отзыв" -#: lib/who_need_help_web/live/admin_user_live.ex:115 -#: lib/who_need_help_web/live/admin_user_live.ex:195 +#: lib/who_need_help_web/live/admin_user_live.ex:111 +#: lib/who_need_help_web/live/admin_user_live.ex:190 #: lib/who_need_help_web/live/admin_users_live.ex:127 #: lib/who_need_help_web/live/admin_users_live.ex:187 #, elixir-autogen, elixir-format @@ -2911,7 +2911,7 @@ msgstr "АККАУНТ И ДАННЫЕ" #: lib/who_need_help_web/controllers/support_html.ex:6 #: lib/who_need_help_web/controllers/support_html/new.html.heex:32 -#: lib/who_need_help_web/live/admin_user_live.ex:174 +#: lib/who_need_help_web/live/admin_user_live.ex:170 #: lib/who_need_help_web/live/support_operation_live.ex:140 #: lib/who_need_help_web/live/support_operations_live.ex:244 #: lib/who_need_help_web/live/support_operations_live.ex:395 @@ -3006,7 +3006,7 @@ msgstr "Выберите тему" msgid "Closed" msgstr "Закрыто" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:154 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:159 #: lib/who_need_help_web/controllers/page_html/terms.html.heex:132 #, elixir-autogen, elixir-format msgid "Contact" @@ -3348,7 +3348,7 @@ msgstr "Отправка формы не приводит к немедленн #: lib/who_need_help_web/components/admin_components.ex:166 #: lib/who_need_help_web/components/layouts.ex:197 #: lib/who_need_help_web/live/admin_dashboard_live.ex:131 -#: lib/who_need_help_web/live/admin_user_live.ex:98 +#: lib/who_need_help_web/live/admin_user_live.ex:94 #: lib/who_need_help_web/live/admin_users_live.ex:119 #: lib/who_need_help_web/live/support_operations_live.ex:340 #, elixir-autogen, elixir-format @@ -5564,7 +5564,7 @@ msgstr "Восстановить заявку" msgid "Safety guidance for voluntary help, medicine pickup, roadside requests, location sharing, and in-person activities." msgstr "Правила безопасности для добровольной помощи, доставки лекарств, помощи на дороге, передачи геопозиции и личных встреч." -#: lib/who_need_help_web/live/admin_user_live.ex:205 +#: lib/who_need_help_web/live/admin_user_live.ex:200 #: lib/who_need_help_web/live/support_operation_live.ex:335 #: lib/who_need_help_web/live/support_operation_live.ex:438 #, elixir-autogen, elixir-format @@ -6038,7 +6038,7 @@ msgstr "Допустимое использование" msgid "Account and profile:" msgstr "Учётная запись и профиль:" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:117 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:122 #, elixir-autogen, elixir-format msgid "Account settings control profile, location visibility, direct messages, and connected Google sign-in. Live tracking is optional and can be stopped. You may submit a" msgstr "В настройках учётной записи можно управлять профилем, видимостью местоположения, личными сообщениями и подключённым входом через Google. Отслеживание в реальном времени необязательно, и его можно остановить. Вы можете отправить" @@ -6048,7 +6048,7 @@ msgstr "В настройках учётной записи можно упра msgid "Ask nearby volunteers for free medicine pickup or safe practical help, coordinate privately, and verify the handover." msgstr "Попросите находящихся рядом волонтёров бесплатно забрать лекарство или оказать безопасную практическую помощь, договоритесь в личном чате и подтвердите передачу." -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:157 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:162 #, elixir-autogen, elixir-format msgid "Contact the Who Need Help operator through the" msgstr "Свяжитесь с оператором Who Need Help через" @@ -6063,7 +6063,6 @@ msgstr "Данные используются для аутентификаци msgid "Data we process" msgstr "Какие данные мы обрабатываем" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:5 #: lib/who_need_help_web/controllers/page_html/terms.html.heex:5 #, elixir-autogen, elixir-format msgid "Effective: 21 July 2026" @@ -6149,7 +6148,7 @@ msgstr "Характер сервиса" msgid "Optional thanks and third parties" msgstr "Необязательная благодарность и третьи стороны" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:106 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:111 #, elixir-autogen, elixir-format msgid "Other account, content, communication, moderation, support, and legal records are kept while needed to provide the service, resolve disputes, prevent fraud, meet legal duties, or preserve the integrity of completed-help records. Backup copies may remain until the relevant backup expires. A deletion request does not erase records that must still be retained for those purposes." msgstr "Другие данные учётной записи, контент, переписка, записи модерации, поддержки и юридические записи хранятся, пока это необходимо для предоставления сервиса, разрешения споров, предотвращения мошенничества, выполнения юридических обязанностей или сохранения целостности записей о завершённой помощи. Резервные копии могут сохраняться до истечения срока соответствующей копии. Запрос на удаление не стирает записи, которые всё ещё должны храниться для этих целей." @@ -6164,7 +6163,7 @@ msgstr "Другие пользователи видят сведения про msgid "Questions, disputes, appeals, and accessibility issues can be submitted through the" msgstr "Вопросы, споры, апелляции и проблемы доступности можно отправить через" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:98 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:103 #, elixir-autogen, elixir-format msgid "Retention and deletion" msgstr "Хранение и удаление" @@ -6174,12 +6173,12 @@ msgstr "Хранение и удаление" msgid "Security and operation:" msgstr "Безопасность и работа сервиса:" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:138 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:143 #, elixir-autogen, elixir-format msgid "Security, adults, and changes" msgstr "Безопасность, совершеннолетние пользователи и изменения" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:160 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:165 #, elixir-autogen, elixir-format msgid "Select “Privacy request”, “Data export”, or “Account deletion” so the request reaches the appropriate queue." msgstr "Выберите «Запрос о конфиденциальности», «Экспорт данных» или «Удаление учётной записи», чтобы обращение попало в нужную очередь." @@ -6200,7 +6199,7 @@ msgstr "Условия использования" msgid "The conditions for using Who Need Help to coordinate voluntary help and social activities." msgstr "Условия использования Who Need Help для координации добровольной помощи и совместных активностей." -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:101 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:106 #, elixir-autogen, elixir-format msgid "The current exact tracking point is deleted when sharing stops, the match ends, or either participant blocks the other. Derived movement and proximity evidence may remain to protect reputation integrity and investigate abuse. Login tokens and rate-limit buckets expire or are pruned according to their operational windows." msgstr "Текущая точная точка отслеживания удаляется, когда передача местоположения прекращается, совпадение завершается или один участник блокирует другого. Производные сведения о движении и близости могут сохраняться для защиты целостности репутации и расследования злоупотреблений. Токены входа и корзины ограничения частоты истекают или очищаются в соответствии с их рабочими интервалами." @@ -6210,7 +6209,7 @@ msgstr "Текущая точная точка отслеживания удал msgid "The service is not an emergency, medical, pharmacy, transport, roadside-assistance, or payment service. In immediate danger, contact the emergency service for your location." msgstr "Сервис не является службой экстренной помощи, медицинской, аптечной, транспортной, дорожной или платёжной службой. При непосредственной опасности обратитесь в экстренную службу по месту нахождения." -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:141 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:146 #, elixir-autogen, elixir-format msgid "The service uses access controls, hashed credentials and handover codes, encrypted HTTPS transport, restricted visibility, and audit records. No internet service can guarantee absolute security. Who Need Help is intended only for adults aged 18 or older." msgstr "Сервис использует контроль доступа, хешированные учётные данные и коды передачи, зашифрованное HTTPS-соединение, ограниченную видимость и журналы аудита. Ни один интернет-сервис не может гарантировать абсолютную безопасность. Who Need Help предназначен только для взрослых от 18 лет." @@ -6220,7 +6219,7 @@ msgstr "Сервис использует контроль доступа, хе msgid "These terms describe the conditions for using Who Need Help. The service coordinates voluntary help and optional social activities between adults; it is not the provider of the requested help." msgstr "Эти условия описывают правила использования Who Need Help. Сервис координирует добровольную помощь и необязательные совместные активности между взрослыми, но не является исполнителем запрошенной помощи." -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:146 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:151 #, elixir-autogen, elixir-format msgid "This page will be updated when data practices materially change. The effective date above identifies the current version." msgstr "Эта страница будет обновлена при существенном изменении практик обработки данных. Указанная выше дата вступления в силу обозначает текущую версию." @@ -6235,7 +6234,7 @@ msgstr "Эта политика объясняет, как Who Need Help обр msgid "Trust and support:" msgstr "Доверие и поддержка:" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:126 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:131 #, elixir-autogen, elixir-format msgid "Use the" msgstr "Используйте" @@ -6285,17 +6284,12 @@ msgstr "Вы сохраняете ответственность за отпра msgid "Your content and privacy" msgstr "Ваш контент и конфиденциальность" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:114 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:119 #, elixir-autogen, elixir-format msgid "Your controls" msgstr "Ваши настройки" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:38 -#, elixir-autogen, elixir-format -msgid "a request or activity location that the user selects, plus exact location, accuracy, and capture time only when a participant actively starts live sharing. Tracking sessions retain summary evidence such as distance, sample count, movement, and proximity timestamps." -msgstr "выбранное пользователем местоположение заявки или активности, а также точное местоположение, точность и время фиксации только тогда, когда участник сам запускает передачу геопозиции. Сеансы отслеживания сохраняют сводные доказательства: расстояние, количество точек, движение и временные отметки близости." - -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:125 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:130 #: lib/who_need_help_web/controllers/page_html/terms.html.heex:123 #, elixir-autogen, elixir-format msgid "account-deletion request" @@ -6306,7 +6300,7 @@ msgstr "запрос на удаление учётной записи" msgid "blocks, reports, moderation signals and decisions, support requests, account-deletion or data-export requests, and legal content-removal notices. These records may include the content, contact details, timestamps, and reviewer actions needed to handle the case." msgstr "блокировки, жалобы, сигналы и решения модерации, обращения в поддержку, запросы на удаление учётной записи или экспорт данных и юридические уведомления об удалении контента. Такие записи могут включать содержимое, контактные данные, временные отметки и действия проверяющего, необходимые для рассмотрения случая." -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:130 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:135 #: lib/who_need_help_web/controllers/page_html/terms.html.heex:105 #, elixir-autogen, elixir-format msgid "content-removal form" @@ -6317,12 +6311,12 @@ msgstr "форму удаления контента" msgid "email address, password hash if a password is added, display name, biography, locale, privacy and messaging preferences, optional thank-you URL, linked social profiles, confirmation status, and the time at which the registration rules were accepted." msgstr "адрес электронной почты, хеш пароля, если пароль добавлен, отображаемое имя, биография, язык, настройки конфиденциальности и сообщений, необязательная ссылка для благодарности, привязанные социальные профили, статус подтверждения и время принятия правил регистрации." -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:132 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:137 #, elixir-autogen, elixir-format msgid "for a specific item of illegal, infringing, or privacy-violating content." msgstr "для конкретного незаконного контента, материала, нарушающего права или конфиденциальность." -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:123 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:128 #, elixir-autogen, elixir-format msgid "or an" msgstr "или" @@ -6332,12 +6326,12 @@ msgstr "или" msgid "or the" msgstr "или" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:121 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:126 #, elixir-autogen, elixir-format msgid "privacy or data-export request" msgstr "запрос о конфиденциальности или экспорте данных" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:159 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:164 #, elixir-autogen, elixir-format msgid "public support form" msgstr "публичную форму поддержки" @@ -6897,7 +6891,7 @@ msgstr[2] "%{count} голосов" msgid "A single starting point for users, support, safety, legal work, analytics, roles, and audited staff actions." msgstr "Единая точка входа для работы с пользователями, поддержкой, безопасностью, юридическими вопросами, аналитикой, ролями и аудитом действий сотрудников." -#: lib/who_need_help_web/live/admin_user_live.ex:222 +#: lib/who_need_help_web/live/admin_user_live.ex:217 #, elixir-autogen, elixir-format msgid "A staff member may hold several fixed roles." msgstr "Сотрудник может совмещать несколько фиксированных ролей." @@ -6948,7 +6942,7 @@ msgstr "Все измеряемые действия" msgid "All metrics" msgstr "Все метрики" -#: lib/who_need_help_web/live/admin_user_live.ex:111 +#: lib/who_need_help_web/live/admin_user_live.ex:107 #, elixir-autogen, elixir-format msgid "All permissions, staff roles, and audit log" msgstr "Все разрешения, роли сотрудников и журнал аудита" @@ -6959,7 +6953,7 @@ msgid "An account may hold several roles. Permissions are the union of those rol msgstr "Аккаунт может иметь несколько ролей. Его разрешения объединяются; администратор получает все разрешения." #: lib/who_need_help_web/live/admin_dashboard_live.ex:134 -#: lib/who_need_help_web/live/admin_user_live.ex:101 +#: lib/who_need_help_web/live/admin_user_live.ex:97 #: lib/who_need_help_web/live/admin_users_live.ex:122 #, elixir-autogen, elixir-format msgid "Analyst" @@ -7068,7 +7062,7 @@ msgstr "Автоматические сигналы требуют провер msgid "Back to queue" msgstr "Вернуться к очереди" -#: lib/who_need_help_web/live/admin_user_live.ex:140 +#: lib/who_need_help_web/live/admin_user_live.ex:136 #, elixir-autogen, elixir-format msgid "Back to users" msgstr "Вернуться к пользователям" @@ -7078,7 +7072,7 @@ msgstr "Вернуться к пользователям" msgid "Chat message" msgstr "Сообщение чата" -#: lib/who_need_help_web/live/admin_user_live.ex:95 +#: lib/who_need_help_web/live/admin_user_live.ex:91 #, elixir-autogen, elixir-format msgid "Check the status and internal note." msgstr "Проверьте статус и внутреннюю заметку." @@ -7093,7 +7087,7 @@ msgstr "Выберите инструмент сотрудника. Показа msgid "Content locations" msgstr "Местоположение контента" -#: lib/who_need_help_web/live/admin_user_live.ex:109 +#: lib/who_need_help_web/live/admin_user_live.ex:105 #, elixir-autogen, elixir-format msgid "Content-removal and legal notice queue" msgstr "Очередь удаления контента и юридических уведомлений" @@ -7175,7 +7169,7 @@ msgid "Joined %{date}" msgstr "Зарегистрирован %{date}" #: lib/who_need_help_web/live/admin_dashboard_live.ex:133 -#: lib/who_need_help_web/live/admin_user_live.ex:100 +#: lib/who_need_help_web/live/admin_user_live.ex:96 #: lib/who_need_help_web/live/admin_users_live.ex:121 #, elixir-autogen, elixir-format msgid "Legal" @@ -7219,7 +7213,7 @@ msgid "Manage %{name}" msgstr "Управление: %{name}" #: lib/who_need_help_web/live/admin_user_live.ex:20 -#: lib/who_need_help_web/live/admin_user_live.ex:135 +#: lib/who_need_help_web/live/admin_user_live.ex:131 #, elixir-autogen, elixir-format msgid "Manage user" msgstr "Управление пользователем" @@ -7234,10 +7228,13 @@ msgstr "Чат участников заявки" msgid "Name, reason, or reference" msgstr "Имя, причина или номер" -#: lib/who_need_help_web/live/admin_audit_live.ex:262 +#: lib/who_need_help_web/live/admin_audit_live.ex:260 +#: lib/who_need_help_web/live/admin_audit_live.ex:264 #: lib/who_need_help_web/live/admin_users_live.ex:345 -#: lib/who_need_help_web/live/moderation_live.ex:1140 -#: lib/who_need_help_web/live/product_analytics_live.ex:298 +#: lib/who_need_help_web/live/moderation_live.ex:1138 +#: lib/who_need_help_web/live/moderation_live.ex:1142 +#: lib/who_need_help_web/live/product_analytics_live.ex:296 +#: lib/who_need_help_web/live/product_analytics_live.ex:300 #: lib/who_need_help_web/live/support_operations_live.ex:513 #, elixir-autogen, elixir-format msgid "Next" @@ -7299,7 +7296,7 @@ msgstr "Недоступно" msgid "Notice" msgstr "Уведомление" -#: lib/who_need_help_web/live/admin_user_live.ex:93 +#: lib/who_need_help_web/live/admin_user_live.ex:89 #, elixir-autogen, elixir-format msgid "One or more staff roles are invalid." msgstr "Одна или несколько ролей сотрудников недействительны." @@ -7309,7 +7306,7 @@ msgstr "Одна или несколько ролей сотрудников н msgid "One row per date, metric, and non-identifying dimension." msgstr "Одна строка для каждой даты, метрики и обезличенного измерения." -#: lib/who_need_help_web/live/admin_user_live.ex:267 +#: lib/who_need_help_web/live/admin_user_live.ex:262 #, elixir-autogen, elixir-format msgid "Only administrators can change staff roles." msgstr "Только администраторы могут изменять роли сотрудников." @@ -7345,27 +7342,30 @@ msgstr "Очереди операций" msgid "Overview" msgstr "Обзор" -#: lib/who_need_help_web/live/admin_audit_live.ex:255 +#: lib/who_need_help_web/live/admin_audit_live.ex:256 #: lib/who_need_help_web/live/admin_users_live.ex:227 #: lib/who_need_help_web/live/admin_users_live.ex:338 -#: lib/who_need_help_web/live/moderation_live.ex:1129 -#: lib/who_need_help_web/live/product_analytics_live.ex:291 +#: lib/who_need_help_web/live/moderation_live.ex:1130 +#: lib/who_need_help_web/live/product_analytics_live.ex:292 #: lib/who_need_help_web/live/support_operations_live.ex:506 #: lib/who_need_help_web/live/support_operations_live.ex:537 #, elixir-autogen, elixir-format msgid "Page %{page}" msgstr "Страница %{page}" -#: lib/who_need_help_web/live/admin_audit_live.ex:253 +#: lib/who_need_help_web/live/admin_audit_live.ex:249 +#: lib/who_need_help_web/live/admin_audit_live.ex:254 #: lib/who_need_help_web/live/admin_users_live.ex:336 -#: lib/who_need_help_web/live/moderation_live.ex:1126 -#: lib/who_need_help_web/live/product_analytics_live.ex:289 +#: lib/who_need_help_web/live/moderation_live.ex:1122 +#: lib/who_need_help_web/live/moderation_live.ex:1127 +#: lib/who_need_help_web/live/product_analytics_live.ex:285 +#: lib/who_need_help_web/live/product_analytics_live.ex:290 #: lib/who_need_help_web/live/support_operations_live.ex:504 #, elixir-autogen, elixir-format msgid "Previous" msgstr "Назад" -#: lib/who_need_help_web/live/admin_user_live.ex:110 +#: lib/who_need_help_web/live/admin_user_live.ex:106 #, elixir-autogen, elixir-format msgid "Privacy-preserving aggregate product analytics" msgstr "Агрегированная продуктовая аналитика с защитой конфиденциальности" @@ -7440,14 +7440,14 @@ msgstr "Зарегистрированные пользователи" msgid "Registrations" msgstr "Регистрации" -#: lib/who_need_help_web/live/admin_user_live.ex:159 +#: lib/who_need_help_web/live/admin_user_live.ex:155 #: lib/who_need_help_web/live/admin_users_live.ex:263 #: lib/who_need_help_web/live/admin_users_live.ex:304 #, elixir-autogen, elixir-format msgid "Regular user" msgstr "Обычный пользователь" -#: lib/who_need_help_web/live/admin_user_live.ex:107 +#: lib/who_need_help_web/live/admin_user_live.ex:103 #, elixir-autogen, elixir-format msgid "Reports, safety signals, user restrictions, and categories" msgstr "Жалобы, сигналы безопасности, ограничения пользователей и категории" @@ -7467,7 +7467,7 @@ msgstr "Заявки завершены" msgid "Requests created" msgstr "Заявки созданы" -#: lib/who_need_help_web/live/admin_user_live.ex:176 +#: lib/who_need_help_web/live/admin_user_live.ex:172 #, elixir-autogen, elixir-format msgid "Restrict or suspend access and record an internal reason." msgstr "Ограничьте или приостановите доступ и укажите внутреннюю причину." @@ -7477,7 +7477,7 @@ msgstr "Ограничьте или приостановите доступ и msgid "Restricted workspace" msgstr "Закрытая рабочая область" -#: lib/who_need_help_web/live/admin_user_live.ex:136 +#: lib/who_need_help_web/live/admin_user_live.ex:132 #, elixir-autogen, elixir-format msgid "Review account access and staff permissions for one user." msgstr "Проверьте доступ к аккаунту и разрешения сотрудника для одного пользователя." @@ -7535,7 +7535,7 @@ msgstr "Строки %{first}–%{last}" msgid "SUBMISSION SAVED" msgstr "ОБРАЩЕНИЕ СОХРАНЕНО" -#: lib/who_need_help_web/live/admin_user_live.ex:206 +#: lib/who_need_help_web/live/admin_user_live.ex:201 #, elixir-autogen, elixir-format msgid "Save account status" msgstr "Сохранить статус аккаунта" @@ -7571,7 +7571,7 @@ msgid "Search users" msgstr "Поиск пользователей" #: lib/who_need_help_web/live/admin_users_live.ex:218 -#: lib/who_need_help_web/live/moderation_live.ex:1131 +#: lib/who_need_help_web/live/moderation_live.ex:1132 #: lib/who_need_help_web/live/support_operations_live.ex:531 #, elixir-autogen, elixir-format msgid "Showing %{first}–%{last}" @@ -7592,13 +7592,13 @@ msgstr "Аккаунты сотрудников" msgid "Staff role" msgstr "Роль сотрудника" -#: lib/who_need_help_web/live/admin_user_live.ex:220 -#: lib/who_need_help_web/live/admin_user_live.ex:234 +#: lib/who_need_help_web/live/admin_user_live.ex:215 +#: lib/who_need_help_web/live/admin_user_live.ex:229 #, elixir-autogen, elixir-format msgid "Staff roles" msgstr "Роли сотрудников" -#: lib/who_need_help_web/live/admin_user_live.ex:45 +#: lib/who_need_help_web/live/admin_user_live.ex:41 #, elixir-autogen, elixir-format msgid "Staff roles updated." msgstr "Роли сотрудников обновлены." @@ -7633,7 +7633,7 @@ msgstr "Поддержка и юридические вопросы" msgid "Support and legal operations" msgstr "Операции поддержки и юридического отдела" -#: lib/who_need_help_web/live/admin_user_live.ex:104 +#: lib/who_need_help_web/live/admin_user_live.ex:100 #, elixir-autogen, elixir-format msgid "Support conversations and verified support cases" msgstr "Диалоги поддержки и подтверждённые обращения" @@ -7663,19 +7663,19 @@ msgstr "Таксономия" msgid "Technical signal metadata" msgstr "Технические метаданные сигнала" -#: lib/who_need_help_web/live/admin_user_live.ex:96 +#: lib/who_need_help_web/live/admin_user_live.ex:92 #, elixir-autogen, elixir-format msgid "The account could not be updated." msgstr "Не удалось обновить аккаунт." -#: lib/who_need_help_web/live/admin_user_live.ex:91 +#: lib/who_need_help_web/live/admin_user_live.ex:87 #, elixir-autogen, elixir-format msgid "The last active administrator cannot lose administrator access or be restricted." msgstr "Нельзя снять права администратора или ограничить доступ последнего активного администратора." #: lib/who_need_help_web/live/admin_user_live.ex:14 -#: lib/who_need_help_web/live/admin_user_live.ex:57 -#: lib/who_need_help_web/live/admin_user_live.ex:94 +#: lib/who_need_help_web/live/admin_user_live.ex:53 +#: lib/who_need_help_web/live/admin_user_live.ex:90 #, elixir-autogen, elixir-format msgid "The selected account is no longer available." msgstr "Выбранный аккаунт больше недоступен." @@ -7730,13 +7730,13 @@ msgstr "Не назначено" msgid "Unknown staff member" msgstr "Неизвестный сотрудник" -#: lib/who_need_help_web/live/admin_user_live.ex:148 +#: lib/who_need_help_web/live/admin_user_live.ex:144 #: lib/who_need_help_web/live/admin_users_live.ex:129 #, elixir-autogen, elixir-format msgid "Unnamed user" msgstr "Пользователь без имени" -#: lib/who_need_help_web/live/admin_user_live.ex:259 +#: lib/who_need_help_web/live/admin_user_live.ex:254 #, elixir-autogen, elixir-format msgid "Update staff roles" msgstr "Обновить роли сотрудников" @@ -7746,7 +7746,7 @@ msgstr "Обновить роли сотрудников" msgid "Update status, assignment, and optionally reply." msgstr "Обновите статус и исполнителя и при необходимости отправьте ответ." -#: lib/who_need_help_web/live/admin_user_live.ex:257 +#: lib/who_need_help_web/live/admin_user_live.ex:252 #, elixir-autogen, elixir-format msgid "Updating…" msgstr "Обновление…" @@ -7808,12 +7808,12 @@ msgstr "Работайте с одной очередью проверки за msgid "Write the decision, next step, or information you need…" msgstr "Опишите решение, следующий шаг или необходимую информацию…" -#: lib/who_need_help_web/live/admin_user_live.ex:214 +#: lib/who_need_help_web/live/admin_user_live.ex:209 #, elixir-autogen, elixir-format msgid "You can view this account but cannot change its access." msgstr "Вы можете просматривать этот аккаунт, но не можете изменять его доступ." -#: lib/who_need_help_web/live/admin_user_live.ex:87 +#: lib/who_need_help_web/live/admin_user_live.ex:83 #, elixir-autogen, elixir-format msgid "You cannot restrict or suspend your own account." msgstr "Вы не можете ограничить или приостановить собственный аккаунт." @@ -7829,7 +7829,7 @@ msgstr "У вас нет доступа к этой рабочей област msgid "You do not have permission for this action." msgstr "У вас нет разрешения на это действие." -#: lib/who_need_help_web/live/admin_user_live.ex:82 +#: lib/who_need_help_web/live/admin_user_live.ex:78 #, elixir-autogen, elixir-format msgid "You do not have permission for this action. Role changes also require a recent sign-in." msgstr "У вас нет разрешения на это действие. Для изменения ролей также требуется недавний вход." @@ -7847,4 +7847,19 @@ msgstr "Ваш email подтверждён, обращение отправле #: lib/who_need_help_web/live/admin_dashboard_live.ex:84 #, elixir-autogen, elixir-format msgid "Your staff access" -msgstr "Ваш доступ сотрудника" \ No newline at end of file +msgstr "Ваш доступ сотрудника" + +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:95 +#, elixir-autogen, elixir-format +msgid "After the user enables notifications, Firebase Cloud Messaging and Firebase Installations process an app-installation identifier, app metadata, and push token to deliver notifications. The configured map-tile provider, currently the OpenStreetMap Foundation tile service, receives the network request needed to fetch map images, including the IP address, browser or app metadata, request time, and requested tile coordinates. Detailed tile coordinates may describe a small map area. Who Need Help does not intentionally send private request text, chat messages, email addresses, handover codes, or raw live-location API payloads to the map-tile provider." +msgstr "После того как пользователь включает уведомления, Firebase Cloud Messaging и Firebase Installations обрабатывают идентификатор установки приложения, метаданные приложения и push-токен для доставки уведомлений. Настроенный поставщик картографических тайлов — сейчас служба тайлов OpenStreetMap Foundation — получает сетевой запрос, необходимый для загрузки изображений карты, включая IP-адрес, метаданные браузера или приложения, время запроса и координаты запрошенных тайлов. Детальные координаты тайлов могут описывать небольшой участок карты. Who Need Help намеренно не передаёт поставщику картографических тайлов приватный текст заявок, сообщения чата, адреса электронной почты, коды передачи или необработанные данные API текущей геопозиции." + +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:5 +#, elixir-autogen, elixir-format +msgid "Effective: 3 August 2026" +msgstr "Действует с 3 августа 2026 года" + +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:38 +#, elixir-autogen, elixir-format +msgid "a request or activity location that the user selects, plus exact location, accuracy, and capture time only when a participant actively starts live sharing. On Android, live sharing can continue through a foreground location service in the background while the app is minimized or not in use. A persistent notification remains visible and provides a Stop action. Tracking sessions retain summary evidence such as distance, sample count, movement, and proximity timestamps." +msgstr "местоположение заявки или активности, выбранное пользователем, а также точное местоположение, точность и время фиксации — только когда участник явно запускает передачу геопозиции в реальном времени. На Android передача может продолжаться через фоновую службу геолокации, когда приложение свёрнуто или не используется. Постоянное уведомление остаётся видимым и содержит действие «Остановить». Сеансы отслеживания сохраняют сводные признаки, например расстояние, число образцов, движение и время нахождения поблизости." diff --git a/priv/gettext/uk/LC_MESSAGES/default.po b/priv/gettext/uk/LC_MESSAGES/default.po index fc83a41..64981ee 100644 --- a/priv/gettext/uk/LC_MESSAGES/default.po +++ b/priv/gettext/uk/LC_MESSAGES/default.po @@ -209,8 +209,8 @@ msgstr "Акаунт і мова" msgid "Action center" msgstr "Центр дій" -#: lib/who_need_help_web/live/admin_user_live.ex:113 -#: lib/who_need_help_web/live/admin_user_live.ex:193 +#: lib/who_need_help_web/live/admin_user_live.ex:109 +#: lib/who_need_help_web/live/admin_user_live.ex:188 #: lib/who_need_help_web/live/admin_users_live.ex:125 #: lib/who_need_help_web/live/admin_users_live.ex:185 #: lib/who_need_help_web/live/notification_live.ex:521 @@ -274,7 +274,7 @@ msgid "Add unverified link" msgstr "Додати непідтверджене посилання" #: lib/who_need_help_web/live/admin_dashboard_live.ex:135 -#: lib/who_need_help_web/live/admin_user_live.ex:102 +#: lib/who_need_help_web/live/admin_user_live.ex:98 #: lib/who_need_help_web/live/admin_users_live.ex:123 #, elixir-autogen, elixir-format msgid "Administrator" @@ -938,7 +938,7 @@ msgstr "В процесі" msgid "Interface language" msgstr "Мова інтерфейсу" -#: lib/who_need_help_web/live/admin_user_live.ex:201 +#: lib/who_need_help_web/live/admin_user_live.ex:196 #, elixir-autogen, elixir-format msgid "Internal note" msgstr "Внутрішня нотатка" @@ -1118,7 +1118,7 @@ msgid "Moderation" msgstr "Модерація" #: lib/who_need_help_web/live/admin_dashboard_live.ex:132 -#: lib/who_need_help_web/live/admin_user_live.ex:99 +#: lib/who_need_help_web/live/admin_user_live.ex:95 #: lib/who_need_help_web/live/admin_users_live.ex:120 #, elixir-autogen, elixir-format msgid "Moderator" @@ -1626,8 +1626,8 @@ msgstr "Примітка до рішення" msgid "Resolved" msgstr "Вирішено" -#: lib/who_need_help_web/live/admin_user_live.ex:114 -#: lib/who_need_help_web/live/admin_user_live.ex:194 +#: lib/who_need_help_web/live/admin_user_live.ex:110 +#: lib/who_need_help_web/live/admin_user_live.ex:189 #: lib/who_need_help_web/live/admin_users_live.ex:126 #: lib/who_need_help_web/live/admin_users_live.ex:186 #, elixir-autogen, elixir-format @@ -1845,7 +1845,7 @@ msgstr "Почати допомагати" msgid "Starts" msgstr "Початок" -#: lib/who_need_help_web/live/admin_user_live.ex:191 +#: lib/who_need_help_web/live/admin_user_live.ex:186 #: lib/who_need_help_web/live/admin_users_live.ex:236 #: lib/who_need_help_web/live/moderation_live.ex:632 #: lib/who_need_help_web/live/moderation_live.ex:812 @@ -1878,8 +1878,8 @@ msgstr "Структуровані поля мають бути коректни msgid "Submit review" msgstr "Надіслати відгук" -#: lib/who_need_help_web/live/admin_user_live.ex:115 -#: lib/who_need_help_web/live/admin_user_live.ex:195 +#: lib/who_need_help_web/live/admin_user_live.ex:111 +#: lib/who_need_help_web/live/admin_user_live.ex:190 #: lib/who_need_help_web/live/admin_users_live.ex:127 #: lib/who_need_help_web/live/admin_users_live.ex:187 #, elixir-autogen, elixir-format @@ -2905,7 +2905,7 @@ msgstr "ОБЛІКОВИЙ ЗАПИС І ДАНІ" #: lib/who_need_help_web/controllers/support_html.ex:6 #: lib/who_need_help_web/controllers/support_html/new.html.heex:32 -#: lib/who_need_help_web/live/admin_user_live.ex:174 +#: lib/who_need_help_web/live/admin_user_live.ex:170 #: lib/who_need_help_web/live/support_operation_live.ex:140 #: lib/who_need_help_web/live/support_operations_live.ex:244 #: lib/who_need_help_web/live/support_operations_live.ex:395 @@ -3000,7 +3000,7 @@ msgstr "Виберіть тему" msgid "Closed" msgstr "Закрито" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:154 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:159 #: lib/who_need_help_web/controllers/page_html/terms.html.heex:132 #, elixir-autogen, elixir-format msgid "Contact" @@ -3342,7 +3342,7 @@ msgstr "Надсилання форми не призводить до нега #: lib/who_need_help_web/components/admin_components.ex:166 #: lib/who_need_help_web/components/layouts.ex:197 #: lib/who_need_help_web/live/admin_dashboard_live.ex:131 -#: lib/who_need_help_web/live/admin_user_live.ex:98 +#: lib/who_need_help_web/live/admin_user_live.ex:94 #: lib/who_need_help_web/live/admin_users_live.ex:119 #: lib/who_need_help_web/live/support_operations_live.ex:340 #, elixir-autogen, elixir-format @@ -5558,7 +5558,7 @@ msgstr "Відновити заявку" msgid "Safety guidance for voluntary help, medicine pickup, roadside requests, location sharing, and in-person activities." msgstr "Правила безпеки для добровільної допомоги, доставки ліків, допомоги на дорозі, передавання геопозиції та особистих зустрічей." -#: lib/who_need_help_web/live/admin_user_live.ex:205 +#: lib/who_need_help_web/live/admin_user_live.ex:200 #: lib/who_need_help_web/live/support_operation_live.ex:335 #: lib/who_need_help_web/live/support_operation_live.ex:438 #, elixir-autogen, elixir-format @@ -6032,7 +6032,7 @@ msgstr "Допустиме використання" msgid "Account and profile:" msgstr "Обліковий запис і профіль:" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:117 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:122 #, elixir-autogen, elixir-format msgid "Account settings control profile, location visibility, direct messages, and connected Google sign-in. Live tracking is optional and can be stopped. You may submit a" msgstr "У налаштуваннях облікового запису можна керувати профілем, видимістю місцезнаходження, особистими повідомленнями та підключеним входом через Google. Відстеження в реальному часі необов’язкове, і його можна зупинити. Ви можете надіслати" @@ -6042,7 +6042,7 @@ msgstr "У налаштуваннях облікового запису можн msgid "Ask nearby volunteers for free medicine pickup or safe practical help, coordinate privately, and verify the handover." msgstr "Попросіть волонтерів поблизу безкоштовно забрати ліки або надати безпечну практичну допомогу, домовтеся в приватному чаті та підтвердьте передачу." -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:157 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:162 #, elixir-autogen, elixir-format msgid "Contact the Who Need Help operator through the" msgstr "Зв’яжіться з оператором Who Need Help через" @@ -6057,7 +6057,6 @@ msgstr "Дані використовуються для автентифіка msgid "Data we process" msgstr "Які дані ми обробляємо" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:5 #: lib/who_need_help_web/controllers/page_html/terms.html.heex:5 #, elixir-autogen, elixir-format msgid "Effective: 21 July 2026" @@ -6143,7 +6142,7 @@ msgstr "Характер сервісу" msgid "Optional thanks and third parties" msgstr "Необов’язкова подяка та треті сторони" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:106 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:111 #, elixir-autogen, elixir-format msgid "Other account, content, communication, moderation, support, and legal records are kept while needed to provide the service, resolve disputes, prevent fraud, meet legal duties, or preserve the integrity of completed-help records. Backup copies may remain until the relevant backup expires. A deletion request does not erase records that must still be retained for those purposes." msgstr "Інші дані облікового запису, контент, листування, записи модерації, підтримки та юридичні записи зберігаються, доки це потрібно для надання сервісу, вирішення спорів, запобігання шахрайству, виконання юридичних обов’язків або збереження цілісності записів про завершену допомогу. Резервні копії можуть зберігатися до завершення строку відповідної копії. Запит на видалення не стирає записи, які все ще мають зберігатися для цих цілей." @@ -6158,7 +6157,7 @@ msgstr "Інші користувачі бачать відомості проф msgid "Questions, disputes, appeals, and accessibility issues can be submitted through the" msgstr "Запитання, спори, апеляції та проблеми доступності можна надіслати через" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:98 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:103 #, elixir-autogen, elixir-format msgid "Retention and deletion" msgstr "Зберігання та видалення" @@ -6168,12 +6167,12 @@ msgstr "Зберігання та видалення" msgid "Security and operation:" msgstr "Безпека та робота сервісу:" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:138 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:143 #, elixir-autogen, elixir-format msgid "Security, adults, and changes" msgstr "Безпека, повнолітні користувачі та зміни" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:160 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:165 #, elixir-autogen, elixir-format msgid "Select “Privacy request”, “Data export”, or “Account deletion” so the request reaches the appropriate queue." msgstr "Виберіть «Запит щодо приватності», «Експорт даних» або «Видалення облікового запису», щоб звернення потрапило до потрібної черги." @@ -6194,7 +6193,7 @@ msgstr "Умови використання" msgid "The conditions for using Who Need Help to coordinate voluntary help and social activities." msgstr "Умови використання Who Need Help для координації добровільної допомоги та спільних активностей." -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:101 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:106 #, elixir-autogen, elixir-format msgid "The current exact tracking point is deleted when sharing stops, the match ends, or either participant blocks the other. Derived movement and proximity evidence may remain to protect reputation integrity and investigate abuse. Login tokens and rate-limit buckets expire or are pruned according to their operational windows." msgstr "Поточна точна точка відстеження видаляється, коли передавання місцезнаходження припиняється, збіг завершується або один учасник блокує іншого. Похідні відомості про рух і близькість можуть зберігатися для захисту цілісності репутації та розслідування зловживань. Токени входу й кошики обмеження частоти спливають або очищуються відповідно до їхніх робочих інтервалів." @@ -6204,7 +6203,7 @@ msgstr "Поточна точна точка відстеження видаля msgid "The service is not an emergency, medical, pharmacy, transport, roadside-assistance, or payment service. In immediate danger, contact the emergency service for your location." msgstr "Сервіс не є службою екстреної допомоги, медичною, аптечною, транспортною, дорожньою чи платіжною службою. У разі безпосередньої небезпеки зверніться до екстреної служби за місцем перебування." -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:141 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:146 #, elixir-autogen, elixir-format msgid "The service uses access controls, hashed credentials and handover codes, encrypted HTTPS transport, restricted visibility, and audit records. No internet service can guarantee absolute security. Who Need Help is intended only for adults aged 18 or older." msgstr "Сервіс використовує контроль доступу, хешовані облікові дані та коди передачі, зашифроване HTTPS-з’єднання, обмежену видимість і журнали аудиту. Жоден інтернет-сервіс не може гарантувати абсолютну безпеку. Who Need Help призначений лише для дорослих віком від 18 років." @@ -6214,7 +6213,7 @@ msgstr "Сервіс використовує контроль доступу, msgid "These terms describe the conditions for using Who Need Help. The service coordinates voluntary help and optional social activities between adults; it is not the provider of the requested help." msgstr "Ці умови описують правила використання Who Need Help. Сервіс координує добровільну допомогу та необов’язкові спільні активності між дорослими, але не є виконавцем запитаної допомоги." -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:146 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:151 #, elixir-autogen, elixir-format msgid "This page will be updated when data practices materially change. The effective date above identifies the current version." msgstr "Цю сторінку буде оновлено в разі істотної зміни практик обробки даних. Зазначена вище дата набрання чинності позначає поточну версію." @@ -6229,7 +6228,7 @@ msgstr "Ця політика пояснює, як Who Need Help обробля msgid "Trust and support:" msgstr "Довіра та підтримка:" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:126 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:131 #, elixir-autogen, elixir-format msgid "Use the" msgstr "Скористайтеся" @@ -6279,17 +6278,12 @@ msgstr "Ви зберігаєте відповідальність за наді msgid "Your content and privacy" msgstr "Ваш контент і конфіденційність" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:114 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:119 #, elixir-autogen, elixir-format msgid "Your controls" msgstr "Ваші налаштування" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:38 -#, elixir-autogen, elixir-format -msgid "a request or activity location that the user selects, plus exact location, accuracy, and capture time only when a participant actively starts live sharing. Tracking sessions retain summary evidence such as distance, sample count, movement, and proximity timestamps." -msgstr "вибране користувачем місцезнаходження запиту або активності, а також точне місцезнаходження, точність і час фіксації лише тоді, коли учасник сам запускає передавання геопозиції. Сеанси відстеження зберігають зведені докази: відстань, кількість точок, рух і часові позначки близькості." - -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:125 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:130 #: lib/who_need_help_web/controllers/page_html/terms.html.heex:123 #, elixir-autogen, elixir-format msgid "account-deletion request" @@ -6300,7 +6294,7 @@ msgstr "запит на видалення облікового запису" msgid "blocks, reports, moderation signals and decisions, support requests, account-deletion or data-export requests, and legal content-removal notices. These records may include the content, contact details, timestamps, and reviewer actions needed to handle the case." msgstr "блокування, скарги, сигнали й рішення модерації, звернення до підтримки, запити на видалення облікового запису або експорт даних і юридичні повідомлення про видалення контенту. Такі записи можуть містити вміст, контактні дані, часові позначки та дії перевіряльника, потрібні для розгляду випадку." -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:130 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:135 #: lib/who_need_help_web/controllers/page_html/terms.html.heex:105 #, elixir-autogen, elixir-format msgid "content-removal form" @@ -6311,12 +6305,12 @@ msgstr "форму видалення контенту" msgid "email address, password hash if a password is added, display name, biography, locale, privacy and messaging preferences, optional thank-you URL, linked social profiles, confirmation status, and the time at which the registration rules were accepted." msgstr "адресу електронної пошти, хеш пароля, якщо пароль додано, відображуване ім’я, біографію, мову, налаштування конфіденційності й повідомлень, необов’язкове посилання для подяки, прив’язані соціальні профілі, статус підтвердження та час прийняття правил реєстрації." -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:132 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:137 #, elixir-autogen, elixir-format msgid "for a specific item of illegal, infringing, or privacy-violating content." msgstr "для конкретного незаконного контенту, матеріалу, що порушує права або конфіденційність." -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:123 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:128 #, elixir-autogen, elixir-format msgid "or an" msgstr "або" @@ -6326,12 +6320,12 @@ msgstr "або" msgid "or the" msgstr "або" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:121 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:126 #, elixir-autogen, elixir-format msgid "privacy or data-export request" msgstr "запит щодо приватності або експорту даних" -#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:159 +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:164 #, elixir-autogen, elixir-format msgid "public support form" msgstr "публічну форму підтримки" @@ -6891,7 +6885,7 @@ msgstr[2] "%{count} голосів" msgid "A single starting point for users, support, safety, legal work, analytics, roles, and audited staff actions." msgstr "Єдина точка входу для роботи з користувачами, підтримкою, безпекою, юридичними питаннями, аналітикою, ролями та аудитом дій працівників." -#: lib/who_need_help_web/live/admin_user_live.ex:222 +#: lib/who_need_help_web/live/admin_user_live.ex:217 #, elixir-autogen, elixir-format msgid "A staff member may hold several fixed roles." msgstr "Працівник може поєднувати кілька фіксованих ролей." @@ -6942,7 +6936,7 @@ msgstr "Усі вимірювані дії" msgid "All metrics" msgstr "Усі метрики" -#: lib/who_need_help_web/live/admin_user_live.ex:111 +#: lib/who_need_help_web/live/admin_user_live.ex:107 #, elixir-autogen, elixir-format msgid "All permissions, staff roles, and audit log" msgstr "Усі дозволи, ролі працівників і журнал аудиту" @@ -6953,7 +6947,7 @@ msgid "An account may hold several roles. Permissions are the union of those rol msgstr "Обліковий запис може мати кілька ролей. Його дозволи об’єднуються; адміністратор отримує всі дозволи." #: lib/who_need_help_web/live/admin_dashboard_live.ex:134 -#: lib/who_need_help_web/live/admin_user_live.ex:101 +#: lib/who_need_help_web/live/admin_user_live.ex:97 #: lib/who_need_help_web/live/admin_users_live.ex:122 #, elixir-autogen, elixir-format msgid "Analyst" @@ -7062,7 +7056,7 @@ msgstr "Автоматичні сигнали потребують переві msgid "Back to queue" msgstr "Повернутися до черги" -#: lib/who_need_help_web/live/admin_user_live.ex:140 +#: lib/who_need_help_web/live/admin_user_live.ex:136 #, elixir-autogen, elixir-format msgid "Back to users" msgstr "Повернутися до користувачів" @@ -7072,7 +7066,7 @@ msgstr "Повернутися до користувачів" msgid "Chat message" msgstr "Повідомлення чату" -#: lib/who_need_help_web/live/admin_user_live.ex:95 +#: lib/who_need_help_web/live/admin_user_live.ex:91 #, elixir-autogen, elixir-format msgid "Check the status and internal note." msgstr "Перевірте статус і внутрішню нотатку." @@ -7087,7 +7081,7 @@ msgstr "Виберіть інструмент працівника. Показа msgid "Content locations" msgstr "Розташування контенту" -#: lib/who_need_help_web/live/admin_user_live.ex:109 +#: lib/who_need_help_web/live/admin_user_live.ex:105 #, elixir-autogen, elixir-format msgid "Content-removal and legal notice queue" msgstr "Черга видалення контенту та юридичних повідомлень" @@ -7169,7 +7163,7 @@ msgid "Joined %{date}" msgstr "Зареєстровано %{date}" #: lib/who_need_help_web/live/admin_dashboard_live.ex:133 -#: lib/who_need_help_web/live/admin_user_live.ex:100 +#: lib/who_need_help_web/live/admin_user_live.ex:96 #: lib/who_need_help_web/live/admin_users_live.ex:121 #, elixir-autogen, elixir-format msgid "Legal" @@ -7213,7 +7207,7 @@ msgid "Manage %{name}" msgstr "Керування: %{name}" #: lib/who_need_help_web/live/admin_user_live.ex:20 -#: lib/who_need_help_web/live/admin_user_live.ex:135 +#: lib/who_need_help_web/live/admin_user_live.ex:131 #, elixir-autogen, elixir-format msgid "Manage user" msgstr "Керування користувачем" @@ -7228,10 +7222,13 @@ msgstr "Чат учасників заявки" msgid "Name, reason, or reference" msgstr "Ім’я, причина або номер" -#: lib/who_need_help_web/live/admin_audit_live.ex:262 +#: lib/who_need_help_web/live/admin_audit_live.ex:260 +#: lib/who_need_help_web/live/admin_audit_live.ex:264 #: lib/who_need_help_web/live/admin_users_live.ex:345 -#: lib/who_need_help_web/live/moderation_live.ex:1140 -#: lib/who_need_help_web/live/product_analytics_live.ex:298 +#: lib/who_need_help_web/live/moderation_live.ex:1138 +#: lib/who_need_help_web/live/moderation_live.ex:1142 +#: lib/who_need_help_web/live/product_analytics_live.ex:296 +#: lib/who_need_help_web/live/product_analytics_live.ex:300 #: lib/who_need_help_web/live/support_operations_live.ex:513 #, elixir-autogen, elixir-format msgid "Next" @@ -7293,7 +7290,7 @@ msgstr "Недоступно" msgid "Notice" msgstr "Повідомлення" -#: lib/who_need_help_web/live/admin_user_live.ex:93 +#: lib/who_need_help_web/live/admin_user_live.ex:89 #, elixir-autogen, elixir-format msgid "One or more staff roles are invalid." msgstr "Одна або кілька ролей працівників недійсні." @@ -7303,7 +7300,7 @@ msgstr "Одна або кілька ролей працівників неді msgid "One row per date, metric, and non-identifying dimension." msgstr "Один рядок для кожної дати, метрики та знеособленого виміру." -#: lib/who_need_help_web/live/admin_user_live.ex:267 +#: lib/who_need_help_web/live/admin_user_live.ex:262 #, elixir-autogen, elixir-format msgid "Only administrators can change staff roles." msgstr "Лише адміністратори можуть змінювати ролі працівників." @@ -7339,27 +7336,30 @@ msgstr "Черги операцій" msgid "Overview" msgstr "Огляд" -#: lib/who_need_help_web/live/admin_audit_live.ex:255 +#: lib/who_need_help_web/live/admin_audit_live.ex:256 #: lib/who_need_help_web/live/admin_users_live.ex:227 #: lib/who_need_help_web/live/admin_users_live.ex:338 -#: lib/who_need_help_web/live/moderation_live.ex:1129 -#: lib/who_need_help_web/live/product_analytics_live.ex:291 +#: lib/who_need_help_web/live/moderation_live.ex:1130 +#: lib/who_need_help_web/live/product_analytics_live.ex:292 #: lib/who_need_help_web/live/support_operations_live.ex:506 #: lib/who_need_help_web/live/support_operations_live.ex:537 #, elixir-autogen, elixir-format msgid "Page %{page}" msgstr "Сторінка %{page}" -#: lib/who_need_help_web/live/admin_audit_live.ex:253 +#: lib/who_need_help_web/live/admin_audit_live.ex:249 +#: lib/who_need_help_web/live/admin_audit_live.ex:254 #: lib/who_need_help_web/live/admin_users_live.ex:336 -#: lib/who_need_help_web/live/moderation_live.ex:1126 -#: lib/who_need_help_web/live/product_analytics_live.ex:289 +#: lib/who_need_help_web/live/moderation_live.ex:1122 +#: lib/who_need_help_web/live/moderation_live.ex:1127 +#: lib/who_need_help_web/live/product_analytics_live.ex:285 +#: lib/who_need_help_web/live/product_analytics_live.ex:290 #: lib/who_need_help_web/live/support_operations_live.ex:504 #, elixir-autogen, elixir-format msgid "Previous" msgstr "Назад" -#: lib/who_need_help_web/live/admin_user_live.ex:110 +#: lib/who_need_help_web/live/admin_user_live.ex:106 #, elixir-autogen, elixir-format msgid "Privacy-preserving aggregate product analytics" msgstr "Агрегована продуктова аналітика із захистом конфіденційності" @@ -7434,14 +7434,14 @@ msgstr "Зареєстровані користувачі" msgid "Registrations" msgstr "Реєстрації" -#: lib/who_need_help_web/live/admin_user_live.ex:159 +#: lib/who_need_help_web/live/admin_user_live.ex:155 #: lib/who_need_help_web/live/admin_users_live.ex:263 #: lib/who_need_help_web/live/admin_users_live.ex:304 #, elixir-autogen, elixir-format msgid "Regular user" msgstr "Звичайний користувач" -#: lib/who_need_help_web/live/admin_user_live.ex:107 +#: lib/who_need_help_web/live/admin_user_live.ex:103 #, elixir-autogen, elixir-format msgid "Reports, safety signals, user restrictions, and categories" msgstr "Скарги, сигнали безпеки, обмеження користувачів і категорії" @@ -7461,7 +7461,7 @@ msgstr "Заявки завершено" msgid "Requests created" msgstr "Заявки створено" -#: lib/who_need_help_web/live/admin_user_live.ex:176 +#: lib/who_need_help_web/live/admin_user_live.ex:172 #, elixir-autogen, elixir-format msgid "Restrict or suspend access and record an internal reason." msgstr "Обмежте або призупиніть доступ і вкажіть внутрішню причину." @@ -7471,7 +7471,7 @@ msgstr "Обмежте або призупиніть доступ і вкажі msgid "Restricted workspace" msgstr "Закрита робоча область" -#: lib/who_need_help_web/live/admin_user_live.ex:136 +#: lib/who_need_help_web/live/admin_user_live.ex:132 #, elixir-autogen, elixir-format msgid "Review account access and staff permissions for one user." msgstr "Перевірте доступ до облікового запису та дозволи працівника для одного користувача." @@ -7529,7 +7529,7 @@ msgstr "Рядки %{first}–%{last}" msgid "SUBMISSION SAVED" msgstr "ЗВЕРНЕННЯ ЗБЕРЕЖЕНО" -#: lib/who_need_help_web/live/admin_user_live.ex:206 +#: lib/who_need_help_web/live/admin_user_live.ex:201 #, elixir-autogen, elixir-format msgid "Save account status" msgstr "Зберегти статус облікового запису" @@ -7565,7 +7565,7 @@ msgid "Search users" msgstr "Пошук користувачів" #: lib/who_need_help_web/live/admin_users_live.ex:218 -#: lib/who_need_help_web/live/moderation_live.ex:1131 +#: lib/who_need_help_web/live/moderation_live.ex:1132 #: lib/who_need_help_web/live/support_operations_live.ex:531 #, elixir-autogen, elixir-format msgid "Showing %{first}–%{last}" @@ -7586,13 +7586,13 @@ msgstr "Облікові записи працівників" msgid "Staff role" msgstr "Роль працівника" -#: lib/who_need_help_web/live/admin_user_live.ex:220 -#: lib/who_need_help_web/live/admin_user_live.ex:234 +#: lib/who_need_help_web/live/admin_user_live.ex:215 +#: lib/who_need_help_web/live/admin_user_live.ex:229 #, elixir-autogen, elixir-format msgid "Staff roles" msgstr "Ролі працівників" -#: lib/who_need_help_web/live/admin_user_live.ex:45 +#: lib/who_need_help_web/live/admin_user_live.ex:41 #, elixir-autogen, elixir-format msgid "Staff roles updated." msgstr "Ролі працівників оновлено." @@ -7627,7 +7627,7 @@ msgstr "Підтримка та юридичні питання" msgid "Support and legal operations" msgstr "Операції підтримки та юридичного відділу" -#: lib/who_need_help_web/live/admin_user_live.ex:104 +#: lib/who_need_help_web/live/admin_user_live.ex:100 #, elixir-autogen, elixir-format msgid "Support conversations and verified support cases" msgstr "Діалоги підтримки та підтверджені звернення" @@ -7657,19 +7657,19 @@ msgstr "Таксономія" msgid "Technical signal metadata" msgstr "Технічні метадані сигналу" -#: lib/who_need_help_web/live/admin_user_live.ex:96 +#: lib/who_need_help_web/live/admin_user_live.ex:92 #, elixir-autogen, elixir-format msgid "The account could not be updated." msgstr "Не вдалося оновити обліковий запис." -#: lib/who_need_help_web/live/admin_user_live.ex:91 +#: lib/who_need_help_web/live/admin_user_live.ex:87 #, elixir-autogen, elixir-format msgid "The last active administrator cannot lose administrator access or be restricted." msgstr "Не можна забрати права адміністратора або обмежити доступ останнього активного адміністратора." #: lib/who_need_help_web/live/admin_user_live.ex:14 -#: lib/who_need_help_web/live/admin_user_live.ex:57 -#: lib/who_need_help_web/live/admin_user_live.ex:94 +#: lib/who_need_help_web/live/admin_user_live.ex:53 +#: lib/who_need_help_web/live/admin_user_live.ex:90 #, elixir-autogen, elixir-format msgid "The selected account is no longer available." msgstr "Вибраний обліковий запис більше недоступний." @@ -7724,13 +7724,13 @@ msgstr "Не призначено" msgid "Unknown staff member" msgstr "Невідомий працівник" -#: lib/who_need_help_web/live/admin_user_live.ex:148 +#: lib/who_need_help_web/live/admin_user_live.ex:144 #: lib/who_need_help_web/live/admin_users_live.ex:129 #, elixir-autogen, elixir-format msgid "Unnamed user" msgstr "Користувач без імені" -#: lib/who_need_help_web/live/admin_user_live.ex:259 +#: lib/who_need_help_web/live/admin_user_live.ex:254 #, elixir-autogen, elixir-format msgid "Update staff roles" msgstr "Оновити ролі працівників" @@ -7740,7 +7740,7 @@ msgstr "Оновити ролі працівників" msgid "Update status, assignment, and optionally reply." msgstr "Оновіть статус і виконавця та за потреби надішліть відповідь." -#: lib/who_need_help_web/live/admin_user_live.ex:257 +#: lib/who_need_help_web/live/admin_user_live.ex:252 #, elixir-autogen, elixir-format msgid "Updating…" msgstr "Оновлення…" @@ -7802,12 +7802,12 @@ msgstr "Працюйте з однією чергою перевірки за р msgid "Write the decision, next step, or information you need…" msgstr "Опишіть рішення, наступний крок або потрібну інформацію…" -#: lib/who_need_help_web/live/admin_user_live.ex:214 +#: lib/who_need_help_web/live/admin_user_live.ex:209 #, elixir-autogen, elixir-format msgid "You can view this account but cannot change its access." msgstr "Ви можете переглядати цей обліковий запис, але не можете змінювати його доступ." -#: lib/who_need_help_web/live/admin_user_live.ex:87 +#: lib/who_need_help_web/live/admin_user_live.ex:83 #, elixir-autogen, elixir-format msgid "You cannot restrict or suspend your own account." msgstr "Ви не можете обмежити або призупинити власний обліковий запис." @@ -7823,7 +7823,7 @@ msgstr "У вас немає доступу до цієї робочої обл msgid "You do not have permission for this action." msgstr "У вас немає дозволу на цю дію." -#: lib/who_need_help_web/live/admin_user_live.ex:82 +#: lib/who_need_help_web/live/admin_user_live.ex:78 #, elixir-autogen, elixir-format msgid "You do not have permission for this action. Role changes also require a recent sign-in." msgstr "У вас немає дозволу на цю дію. Для зміни ролей також потрібен нещодавній вхід." @@ -7841,4 +7841,19 @@ msgstr "Ваш email підтверджено, звернення надісла #: lib/who_need_help_web/live/admin_dashboard_live.ex:84 #, elixir-autogen, elixir-format msgid "Your staff access" -msgstr "Ваш доступ працівника" \ No newline at end of file +msgstr "Ваш доступ працівника" + +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:95 +#, elixir-autogen, elixir-format +msgid "After the user enables notifications, Firebase Cloud Messaging and Firebase Installations process an app-installation identifier, app metadata, and push token to deliver notifications. The configured map-tile provider, currently the OpenStreetMap Foundation tile service, receives the network request needed to fetch map images, including the IP address, browser or app metadata, request time, and requested tile coordinates. Detailed tile coordinates may describe a small map area. Who Need Help does not intentionally send private request text, chat messages, email addresses, handover codes, or raw live-location API payloads to the map-tile provider." +msgstr "Після того як користувач вмикає сповіщення, Firebase Cloud Messaging і Firebase Installations обробляють ідентифікатор інсталяції застосунку, метадані застосунку та push-токен для доставлення сповіщень. Налаштований постачальник картографічних тайлів — наразі служба тайлів OpenStreetMap Foundation — отримує мережевий запит, потрібний для завантаження зображень карти, зокрема IP-адресу, метадані браузера або застосунку, час запиту й координати запитаних тайлів. Детальні координати тайлів можуть описувати невелику ділянку карти. Who Need Help навмисно не передає постачальнику картографічних тайлів приватний текст запитів, повідомлення чату, адреси електронної пошти, коди передачі або необроблені дані API поточної геопозиції." + +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:5 +#, elixir-autogen, elixir-format +msgid "Effective: 3 August 2026" +msgstr "Чинна з 3 серпня 2026 року" + +#: lib/who_need_help_web/controllers/page_html/privacy.html.heex:38 +#, elixir-autogen, elixir-format +msgid "a request or activity location that the user selects, plus exact location, accuracy, and capture time only when a participant actively starts live sharing. On Android, live sharing can continue through a foreground location service in the background while the app is minimized or not in use. A persistent notification remains visible and provides a Stop action. Tracking sessions retain summary evidence such as distance, sample count, movement, and proximity timestamps." +msgstr "місцезнаходження запиту або активності, вибране користувачем, а також точне місцезнаходження, точність і час фіксації — лише коли учасник явно запускає передавання геопозиції в реальному часі. На Android передавання може продовжуватися через фонову службу геолокації, коли застосунок згорнуто або він не використовується. Постійне сповіщення залишається видимим і містить дію «Зупинити». Сеанси відстеження зберігають зведені ознаки, наприклад відстань, кількість зразків, рух і час перебування поблизу." diff --git a/test/who_need_help_web/controllers/page_controller_test.exs b/test/who_need_help_web/controllers/page_controller_test.exs index d32c0a3..0aeb391 100644 --- a/test/who_need_help_web/controllers/page_controller_test.exs +++ b/test/who_need_help_web/controllers/page_controller_test.exs @@ -198,6 +198,9 @@ defmodule WhoNeedHelpWeb.PageControllerTest do assert html =~ "How Who Need Help processes account, Google sign-in, location" assert html =~ ~s(href="/account/delete") assert html =~ ~s(href="/support") + assert html =~ "Firebase Cloud Messaging" + assert html =~ "OpenStreetMap Foundation" + assert html =~ "in the background while the app is minimized or not in use" end test "GET /terms links the safety and privacy documents", %{conn: conn} do