diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9a1b2e64a..1883f8ef0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -306,7 +306,7 @@ docker-latest: # Packaging app for amd64 package-app: - image: mobilizon/buildpack:1.15.7-erlang-26.1.2-${SYSTEM} + image: mobilizon/buildpack:1.16.1-erlang-26.2.2-${SYSTEM} stage: build variables: &release-variables MIX_ENV: "prod" @@ -340,7 +340,6 @@ package-app: "debian-buster", "ubuntu-jammy", "ubuntu-focal", - "ubuntu-bionic", "fedora-38", "fedora-39", ] diff --git a/.sobelow-skips b/.sobelow-skips index b0d6ee102..881741d19 100644 --- a/.sobelow-skips +++ b/.sobelow-skips @@ -1,20 +1,14 @@ -155A1FB53DE39EC8EFCFD7FB94EA823D -1C29EE70E90ECED01AF28EC58D2575B5 26ED12A8E03D044BEDC08749BAA5E357 -2BB1D36656B423758A470021718FCB09 31CE26BC979C57B9E3CC97B40C290CE5 -3529E7A4CECC24D02678820E6F521162 -3644C4E850300482AA409471EFE1EFB3 4E7C044C59E0BCB76AA826789998F624 -53CBBEB6243FAF5C37249CBA17DE6F4C 5BCE3651A03711295046DE48BDFE007E 5C4CED447689F00D9D1ACEB9B895ED29 +5D8350E7A2DE5BB1CBCC983AF121F0DA 94ACF7B17C3FF42F64E57DD1DA936BD8 A32E125003F1EDFAD95C487C6A969725 -ACF6272A1DBB3A2ABD96C0C120B5CA69 C46C4893B2F702ACADC4CAA5683FE370 -CDF2CCE0CF10F49CDFAE22FE26208155 +CD4CD6571816FCAF1E305066CDA0CD2F E720CB13C50FF3ADEE7C522531E11217 F3D5851D3FB050939841ED2F14307A27 FD1C9756370A195B74E95CE504C45E9E \ No newline at end of file diff --git a/.tool-versions b/.tool-versions index 1c43fd8c8..91256ffc0 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1,2 +1,3 @@ erlang 26.2.2 elixir 1.16.1-otp-26 +nodejs 18.19.1 diff --git a/CHANGELOG.md b/CHANGELOG.md index 657d80bde..7aaaac264 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,105 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## 4.1.0 (2024-02-29) + +This release is the last provided by Framasoft. [The project is now supported by the Kaihuri association](https://framacolibri.org/t/mobilizon-nous/19752). + +The highlights for this release are the following: + - improved event federation with https://event-federation.eu and https://gancio.org, as well as adding event metadata in summary for micro-blogging platforms that make use of it like Mastodon + - allowing to filter events by local-only, so that you can find only the events created on this instance + + +### Features + +* **activitpub:** add summary of metadata to events ([1441d35](https://framagit.org/framasoft/mobilizon/commits/1441d35e0b0c3a151b8626711b3acaf30d3dcf58)) +* **activitypub:** allow simple text for address field ([64237cf](https://framagit.org/framasoft/mobilizon/commits/64237cfc2633794a48022a059c79155b1ece14d1)), closes [#1387](https://framagit.org/framasoft/mobilizon/issues/1387) +* **activitypub:** implement FEP-2677 to identify the application actor used for federation ([f10977a](https://framagit.org/framasoft/mobilizon/commits/f10977a99ac73ce5a702a12ed31e773a4b0f6961)), closes [#1367](https://framagit.org/framasoft/mobilizon/issues/1367) +* allow to filter events by local-only ([9d99684](https://framagit.org/framasoft/mobilizon/commits/9d996844025f9d128305a54f8f169fb4b1ffac44)), closes [#1322](https://framagit.org/framasoft/mobilizon/issues/1322) +* **config:** enable instance feeds by default ([ab3f5df](https://framagit.org/framasoft/mobilizon/commits/ab3f5dfd278dc55dd0f28bb11cf4a976d212e9fc)) +* **docker:** add new environment variables for Docker config ([28430d6](https://framagit.org/framasoft/mobilizon/commits/28430d6d57a85b568c839e75ba1bcbff90e4149e)) +* **front:** upgrade to Oruga 0.8.x ([a9676d6](https://framagit.org/framasoft/mobilizon/commits/a9676d6481e6966d939ea4e44ad610eb9231c370)) +* **graphql:** increase max_complexity to 300 ([dcbb8ea](https://framagit.org/framasoft/mobilizon/commits/dcbb8eae01012e6e3aa2c83e06cc50f61176b8ef)) +* **http:** allow to provide self-signed certificates ([baa11c1](https://framagit.org/framasoft/mobilizon/commits/baa11c18b03684e508e56793a800878e95644962)), closes [#1355](https://framagit.org/framasoft/mobilizon/issues/1355) +* **nodeinfo:** extract and save NodeInfo information from instances to display it on instances list ([99b2339](https://framagit.org/framasoft/mobilizon/commits/99b2339424edb5b0c514581fbd6a42e4f0fcc5e1)), closes [#1392](https://framagit.org/framasoft/mobilizon/issues/1392) + +### Bug Fixes + +* **activitypub:** also handle as:Public and Public values for public addressing ([4dc2f48](https://framagit.org/framasoft/mobilizon/commits/4dc2f489e79d4f7d64ba3d5c2588d5d6ec0bc99c)), closes [#1413](https://framagit.org/framasoft/mobilizon/issues/1413) +* **activitypub:** consider PM as private conversations even if attributed_to_id is defined ([387d3b1](https://framagit.org/framasoft/mobilizon/commits/387d3b1c30ec719a992c565fd495ef2b6642641e)) +* **activitypub:** do not try to calculate timezone from missing geo-coordinates ([001a0ed](https://framagit.org/framasoft/mobilizon/commits/001a0ed1a50894ad1abe0f7fc9dc5b9666de5dae)) +* **activitypub:** handle actors following with manually_approves_followers not set ([7351468](https://framagit.org/framasoft/mobilizon/commits/73514688423b92b9f62b52fd54f2e523abeb3e34)) +* **activitypub:** handle any type of error when fetching Application actor from NodeInfo ([9308c53](https://framagit.org/framasoft/mobilizon/commits/9308c5399dc2e7afd8844d083de2ea291a3c5a66)) +* **activitypub:** handle issue with AP Fetcher not catching some changeset errors ([e3b3643](https://framagit.org/framasoft/mobilizon/commits/e3b36434cb05feb2e6add2b6b229e83b9dccf825)), closes [#1409](https://framagit.org/framasoft/mobilizon/issues/1409) +* **activitypub:** make relay outbox events ordered by desc publication date ([e73fd9b](https://framagit.org/framasoft/mobilizon/commits/e73fd9b370b9679a0ab424a0bd44f262a21a4697)) +* **activitypub:** refresh NodeInfo metadata straight away when adding a new instance to follow ([2f4b8fe](https://framagit.org/framasoft/mobilizon/commits/2f4b8feeba9e7e1c4d1fc967505b3ed80e314b3c)) +* allow html_to_text to receive nil, e.g. for empty event descriptions ([5030b75](https://framagit.org/framasoft/mobilizon/commits/5030b755a0880a022d0656598b591cb47ebd7dc5)) +* **announcements:** error message not showing when an event announcement is created with empty text ([ef20585](https://framagit.org/framasoft/mobilizon/commits/ef20585f8cc1e4ac2f2f3359a70b7f456d2adeeb)) +* **announcements:** make sure only valid announcements are shown to the user ([c9a1c35](https://framagit.org/framasoft/mobilizon/commits/c9a1c35aa7a1d399b524dc5cc1fbebb38681ee24)) +* **backend:** avoid duplicating locality and region if they are the same ([5de22f9](https://framagit.org/framasoft/mobilizon/commits/5de22f91e22109da9e2169928dc744acd94b7299)) +* **backend:** fix sending N notifications to a single conversation participant ([9537988](https://framagit.org/framasoft/mobilizon/commits/95379885c8fb3decd19fa434774023a7b05ef0b5)), closes [#1384](https://framagit.org/framasoft/mobilizon/issues/1384) +* **backend:** hide non-public replies to comments in event comment threads ([10c4038](https://framagit.org/framasoft/mobilizon/commits/10c4038b856b7e5c4981dcdce0bb9a885afb3cea)) +* **backend:** only send announcement event emails when the comment author has the right to do so ([0bd00de](https://framagit.org/framasoft/mobilizon/commits/0bd00de501b36c5f2320c2530019f302bf084517)) +* **backend:** validate length of instance actor details and set description column to text ([f7585cf](https://framagit.org/framasoft/mobilizon/commits/f7585cfc759576475133bcc86d2e816b2553626d)), closes [#1393](https://framagit.org/framasoft/mobilizon/issues/1393) +* **back:** fix instances filtering ([b3ba45e](https://framagit.org/framasoft/mobilizon/commits/b3ba45e8a73038dc70286afbb479c1db51b6fbcd)) +* **back:** sitemapper fix after upgrade ([1acf931](https://framagit.org/framasoft/mobilizon/commits/1acf931ac558ac0818213264a6177a1f647393f1)) +* **docker:** add --break-system-packages to pip install to add weasyprint and pyexcel-ods3 ([889cb91](https://framagit.org/framasoft/mobilizon/commits/889cb91f2649861a87eb7e959065cfb49b30f366)) +* **docker:** remove openssl1.1-compat ([75d7816](https://framagit.org/framasoft/mobilizon/commits/75d7816a6cd1fe6754a66c1bb81153068b9c13e3)), closes [#1390](https://framagit.org/framasoft/mobilizon/issues/1390) +* **event announcements:** only show comments from event organizers in event announcement list ([01eecbf](https://framagit.org/framasoft/mobilizon/commits/01eecbf1d46614241c92e1a38e30057a84c55744)) +* **feeds:** increase feed item limit from 500 to 5000 ([ff0440c](https://framagit.org/framasoft/mobilizon/commits/ff0440c634ac17813607f5929cd4024d87601c3b)) +* **feeds:** make sure posts for feeds are ordered by publication date desc ([3c75856](https://framagit.org/framasoft/mobilizon/commits/3c7585614971849035011ede6c0d5d2d5621df81)) +* **front-end:** fix current actor not being set on first access when relogging ([ae466b8](https://framagit.org/framasoft/mobilizon/commits/ae466b879cd09a9d04ffab0469ee991c7d90ce8e)) +* **front-end:** fix issues with expired accessToken refreshment queue ([d4489f6](https://framagit.org/framasoft/mobilizon/commits/d4489f691b312891013767f7e39d92a9b0863387)) +* **front:** add a required attribute to the text editor and show error message if text empty on blur ([ba66874](https://framagit.org/framasoft/mobilizon/commits/ba66874cc3e5979c2a9a6f86ea55463eca911472)) +* **front:** add announcements link on EventParticipationCard as well as EventView ([83eb5c6](https://framagit.org/framasoft/mobilizon/commits/83eb5c6a69ac312c19dc3cef10f26ab686cb4be7)) +* **front:** add condition on DraggableList in ResourceFolder.vue ([a408b47](https://framagit.org/framasoft/mobilizon/commits/a408b476cf2151298c7cf4eb6b3268334be13599)) +* **front:** correctly show error message when a tag is too short ([cba2075](https://framagit.org/framasoft/mobilizon/commits/cba2075431d1de4bf621e1d2b2a2e5f0641997c6)), closes [#1382](https://framagit.org/framasoft/mobilizon/issues/1382) +* **front:** create head without old options ([45f8757](https://framagit.org/framasoft/mobilizon/commits/45f8757d72d1a2c72d069ced6fcbe21571d334c5)) +* **frontend:** various fixes ([456dc36](https://framagit.org/framasoft/mobilizon/commits/456dc36f64b3eb7c43d8ff69aa458b89b5a5b4ab)) +* **front:** escape event.title when it's passed to dialog component HTML message ([f4ee116](https://framagit.org/framasoft/mobilizon/commits/f4ee11611294c2cc957453768f768de0a51b05a7)) +* **front:** fix debouncing instances filtering ([fe0cf93](https://framagit.org/framasoft/mobilizon/commits/fe0cf9360428185d261dad4065a7bea1dd8d8d59)) +* **front:** fix dialog from EventParticipationCard.vue without input ([89641c5](https://framagit.org/framasoft/mobilizon/commits/89641c502ef5771f93cfa55caea6b52c63e73b4b)) +* **front:** fix ErrorComponent.vue sentry integration ([00d8bc7](https://framagit.org/framasoft/mobilizon/commits/00d8bc733d52a810c438e1081496e3b0ac58958f)) +* **front:** fix focus when creating a new resource ([76668e0](https://framagit.org/framasoft/mobilizon/commits/76668e0bebd2bd235925494f90fac6400e74d179)) +* **front:** fix focusing text editor ([3b7124a](https://framagit.org/framasoft/mobilizon/commits/3b7124a57b2dedf5583fdebced6b9a4e502e8731)) +* **front:** fix reporting group ([57d0372](https://framagit.org/framasoft/mobilizon/commits/57d0372ce8b29952caff8bbf7c902c7862a77b49)) +* **front:** fix TagInput display ([790db90](https://framagit.org/framasoft/mobilizon/commits/790db906a6e814352aa694c26febb9d6a43fa321)) +* **front:** fix TagInput width properly ([6a4123f](https://framagit.org/framasoft/mobilizon/commits/6a4123f385fb2e20aab1c1cbc666c5d1a3f93589)) +* **front:** husky fixes after upgrade ([04edc4f](https://framagit.org/framasoft/mobilizon/commits/04edc4fef08306c55067abd0e22443c4cb43d7c8)) +* **front:** improve display of SendPasswordReset view ([1d39eb5](https://framagit.org/framasoft/mobilizon/commits/1d39eb548898b3c4840b4a36950a62b4ce46ba90)) +* **front:** only update identity username from name if it's a new identity ([34c0dd6](https://framagit.org/framasoft/mobilizon/commits/34c0dd6498247cf6a90576a602c4e305c80c9692)) +* **front:** patch vue-i18n-extract because of mjs incompatibility ([1f4a7c2](https://framagit.org/framasoft/mobilizon/commits/1f4a7c253bfe40809b432f3a36faa6b5fb340ae9)) +* **front:** remove broken identity check in EventMinimalistCard ([ee63814](https://framagit.org/framasoft/mobilizon/commits/ee6381463d9f8e6d130e29b410cf5e2700f3c10b)) +* **front:** reset instances list to page 1 if filter or follow status changes ([2b5439b](https://framagit.org/framasoft/mobilizon/commits/2b5439b1d0ef1f60c19019540a01eb6d437eee23)) +* **front:** reset page to lower or page 1 if we didn't found results in instances view ([48f57ec](https://framagit.org/framasoft/mobilizon/commits/48f57ec1cf3ce81c3c83333bea59c2a7d8c70e99)) +* **front:** rollback to vue 3.3 for now ([5cb4fc1](https://framagit.org/framasoft/mobilizon/commits/5cb4fc11c4ccc381a041cb2615913a8fb77e1b85)) +* **front:** show correct label when adding a new calc or videoconference resource in resources ([cecbea6](https://framagit.org/framasoft/mobilizon/commits/cecbea6db52d360e046d69cf0762eb1208c45f19)) +* **front:** tagInput fixes ([f6bcb02](https://framagit.org/framasoft/mobilizon/commits/f6bcb02b9802e04bd8e9c80092a0680b64482688)) +* **front:** uI fixes ([0948cce](https://framagit.org/framasoft/mobilizon/commits/0948cce83e5af128f78b67891ed24c323b159f0f)) +* **front:** use functions to generate classnames dynamically ([98230a5](https://framagit.org/framasoft/mobilizon/commits/98230a56bb5e1c75f070e4d4c352028741869066)) +* **front:** various cleanups ([6a482b0](https://framagit.org/framasoft/mobilizon/commits/6a482b0d9754fc85f1f61922e92852fbca52beb9)) +* **front:** various little CSS fixes ([51d43aa](https://framagit.org/framasoft/mobilizon/commits/51d43aa2d1d1f099078895d67a45fc27b74d4604)) +* **front:** various UI improvements ([a6a1ab7](https://framagit.org/framasoft/mobilizon/commits/a6a1ab71c23264805d61b5312982e6d345454027)) +* **front:** vite fixes after upgrade (everything is esm) ([b1ecf4b](https://framagit.org/framasoft/mobilizon/commits/b1ecf4b36f5855c895f72c4d9dc0f7e1beb449e1)) +* **graphql:** add missing operation name for RegisterPerson ([a47f4f6](https://framagit.org/framasoft/mobilizon/commits/a47f4f6444d12a13a6f7e79ed6746e74088ca294)) +* **graphql:** fix checking actor identity when publishing event announcements ([5bc0593](https://framagit.org/framasoft/mobilizon/commits/5bc0593ed6e772d48722c308ccb444dc49f3c079)) +* **nodeinfo:** fix getting application actor information from NodeInfo response ([dd775b6](https://framagit.org/framasoft/mobilizon/commits/dd775b6ae25f381cf76e00999fd7d37764870122)) +* **nodeinfo:** make sure we only process JSON content ([da3b074](https://framagit.org/framasoft/mobilizon/commits/da3b0746198544d7977d9c0b32d8a26e1da64d40)) +* **front:** fix adding tags to an event ([d75d464](https://framagit.org/framasoft/mobilizon/commits/d75d464135332f639bd275684109a89980718b75)), closes [#1419](https://framagit.org/framasoft/mobilizon/issues/1419) +* **front:** fix space around input icons ([ba9299c](https://framagit.org/framasoft/mobilizon/commits/ba9299c6321cd62bb84efb6db5b6e122e4b1b264)) +* **backend:** set Gettext default locale to "en" ([d390a91](https://framagit.org/framasoft/mobilizon/commits/d390a915d80ce5d2447f5323b78c71e9e1aa58dc)) +* **front:** fix discussion comment changed subscription done before having slug value ([0670297](https://framagit.org/framasoft/mobilizon/commits/067029705dd3c78b54ea4765357ba58930144aab)) +* **front:** fix typing for canReport prop on DiscussionComment ([c2055d9](https://framagit.org/framasoft/mobilizon/commits/c2055d92ae7707b5aab3fd14ea827df0696cca61)) +* **front:** remove extra classes on comment that are not needed ([a9b9775](https://framagit.org/framasoft/mobilizon/commits/a9b977540b900416cfe0d5739cba13e506f83120)) + +## 4.1.0-beta.1 (2024-02-27) + +### Bug Fixes + +* **front:** fix adding tags to an event ([d75d464](https://framagit.org/framasoft/mobilizon/commits/d75d464135332f639bd275684109a89980718b75)), closes [#1419](https://framagit.org/framasoft/mobilizon/issues/1419) +* **front:** fix space around input icons ([ba9299c](https://framagit.org/framasoft/mobilizon/commits/ba9299c6321cd62bb84efb6db5b6e122e4b1b264)) + + ## 4.1.0-alpha.1 (2024-02-09) ### Features diff --git a/LICENSE b/LICENSE index 58db0a43d..db9fb08d8 100644 --- a/LICENSE +++ b/LICENSE @@ -630,7 +630,7 @@ state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Mobilizon - Copyright (C) 2018 Thomas Citharel + Copyright (C) 2018 - 2024 Framasoft This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published diff --git a/Makefile b/Makefile index c4be98db4..26322ad7c 100644 --- a/Makefile +++ b/Makefile @@ -19,8 +19,8 @@ stop: @bash docker/message.sh "Mobilizon is stopped" test: stop @bash docker/message.sh "Running tests" - docker compose -f docker compose.yml -f docker compose.test.yml run api mix prepare_test - docker compose -f docker compose.yml -f docker compose.test.yml run api mix test $(only) + docker compose -f docker-compose.yml -f docker-compose.test.yml run api mix prepare_test + docker compose -f docker-compose.yml -f docker-compose.test.yml run api mix test $(only) @bash docker/message.sh "Done running tests" format: docker compose run --rm api bash -c "mix format && mix credo --strict" diff --git a/README.md b/README.md index 195842f80..a44cf925b 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Mobilizon is your federated organization and mobilization platform. Gather people with a convivial, ethical, and emancipating tool. <p align="center"> - <strong>Developed with ♥ by <a href="https://framasoft.org">Framasoft</a></strong> + <strong>2017 - 2024 Developed with ♥ by <a href="https://framasoft.org">Framasoft</a></strong> </p> <p align="center"> diff --git a/SECURITY.md b/SECURITY.md index be9788c4d..6c9ab1d37 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -1,7 +1,7 @@ [Mobilizon](https://joinmobilizon.org) takes security, privacy and user control seriously, and we want to put them front and centre of our project. This document outlines security procedures and general policies for the Mobilizon project. -Framasoft, the Mobilizon maintainer team and community take all security bugs in Mobilizon seriously. Thank you for improving the security of Mobilizon. We appreciate your efforts and responsible disclosure and will make every effort to acknowledge your contributions. +The Mobilizon maintainer team and community take all security bugs in Mobilizon seriously. Thank you for improving the security of Mobilizon. We appreciate your efforts and responsible disclosure and will make every effort to acknowledge your contributions. ### Goals @@ -15,8 +15,6 @@ Framasoft, the Mobilizon maintainer team and community take all security bugs in * GDPR compliance. -Framasoft is both a developer of open-source/free/libre self-hosted software, and a service provider with users in the European Union. As a result, we are putting user privacy, data sovereignty, and GDPR compliance into our security plans, including asking both the Framasoft community and outside hackers to review our approaches and implementations. - ### Challenges [Mobilizon](https://joinmobilizon.org) will be challenging to keep secure, as it is: @@ -33,14 +31,14 @@ This means there are more attack surfaces compared to typical proprietary, centr We are committed to working with security researchers to verify, reproduce, and respond to legitimate reported vulnerabilities. You can help us by following these simple guidelines: -* Alert us about the vulnerability as soon as you become aware of it by emailing the lead maintainer at tcit+mobilizon@framasoft.org. +* Alert us about the vulnerability as soon as you become aware of it by emailing the lead maintainer. * Provide details needed to reproduce and validate the vulnerability and a Proof of Concept (PoC) as soon as possible * Act in good faith to avoid privacy violations, destruction of data, and interruption or degradation of services * Do not access or modify users’ private data, without explicit permission of the owner. Only interact with your own accounts or test accounts for security research purposes; -* Contact Framasoft or a maintainer of the Mobilizon project (or the instance admin) immediately if you do inadvertently encounter user data. Do not view, alter, save, store, transfer, or otherwise access the data, and immediately purge any local information upon reporting the vulnerability; +* Contact a maintainer of the Mobilizon project (or the instance admin) immediately if you do inadvertently encounter user data. Do not view, alter, save, store, transfer, or otherwise access the data, and immediately purge any local information upon reporting the vulnerability; * The lead maintainer will acknowledge your email within 48 hours, and will send a more detailed response within 48 hours indicating the next steps in handling your report. After the initial reply to your report, the security team will endeavor to keep you informed of the progress towards a fix and full announcement, and may ask for additional information or guidance. * Give us time to confirm, determine the affected versions and prepare fixes to correct the issue before disclosing it to other parties (if after waiting a reasonable amount of time, we are clearly unable or unwilling to do anything about it, please do hold us accountable!) -* Please test against a local instance of the software, and refrain from running any Denial of Service or automated testing tools against Framasoft's (and our partners') infrastructure +* Please test against a local instance of the software, and refrain from running any Denial of Service or automated testing tools against the project managers (and their partners') infrastructure Note : Please report security bugs in third-party modules to the person or team maintaining the module. diff --git a/config/config.exs b/config/config.exs index 03c613a7c..6e89ba0a6 100644 --- a/config/config.exs +++ b/config/config.exs @@ -36,6 +36,7 @@ config :mobilizon, :instance, unconfirmed_user_grace_period_hours: 48, activity_expire_days: 365, activity_keep_number: 100, + duration_of_long_event: 30, enable_instance_feeds: true, email_from: "noreply@localhost", email_reply_to: "noreply@localhost" @@ -205,6 +206,8 @@ config :codepagex, :encodings, [ :"VENDORS/MICSFT/WINDOWS/CP1252" ] +config :gettext, :default_locale, "en" + config :mobilizon, Mobilizon.Web.Gettext, split_module_by: [:locale, :domain] config :ex_cldr, diff --git a/config/dev.exs b/config/dev.exs index 429a84391..a12c110f0 100644 --- a/config/dev.exs +++ b/config/dev.exs @@ -5,9 +5,9 @@ config :mobilizon, Mobilizon.Web.Endpoint, port: String.to_integer(System.get_env("MOBILIZON_INSTANCE_HOST_PORT", "4000")) ], url: [ - host: System.get_env("MOBILIZON_INSTANCE_HOST", "mobilizon.local"), - port: String.to_integer(System.get_env("MOBILIZON_INSTANCE_HOST_PORT", "80")), - scheme: "http" + host: System.get_env("MOBILIZON_INSTANCE_HOST", "localhost"), + port: String.to_integer(System.get_env("MOBILIZON_INSTANCE_HOST_PORT", "4000")), + scheme: System.get_env("MOBILIZON_INSTANCE_SCHEME", "http") ], secret_key_base: System.get_env("MOBILIZON_INSTANCE_SECRET_KEY_BASE", "changethis"), debug_errors: true, diff --git a/config/test.exs b/config/test.exs index 2e66b1a69..01dc74134 100644 --- a/config/test.exs +++ b/config/test.exs @@ -2,7 +2,8 @@ import Config config :mobilizon, :instance, name: "Test instance", - registrations_open: true + registrations_open: true, + duration_of_long_event: 0 # We don't run a server during test. If one is required, # you can enable the server option below. diff --git a/docker/multiarch/Dockerfile b/docker/multiarch/Dockerfile index 391507d76..77eee5027 100644 --- a/docker/multiarch/Dockerfile +++ b/docker/multiarch/Dockerfile @@ -1,4 +1,4 @@ -ARG IMAGE="elixir:1.15" +ARG IMAGE="elixir:1.16" FROM ${IMAGE} as build SHELL ["/bin/bash", "-c"] diff --git a/docker/production/Dockerfile b/docker/production/Dockerfile index d79986bb3..6091b2446 100644 --- a/docker/production/Dockerfile +++ b/docker/production/Dockerfile @@ -9,7 +9,7 @@ COPY . . RUN npm install && npm run build # Then, build the application binary -FROM elixir:1.15-alpine AS builder +FROM elixir:1.16-alpine AS builder # Fix qemu segfault on arm64 # See https://github.com/plausible/analytics/pull/2879 and https://github.com/erlang/otp/pull/6340 diff --git a/docker/tests/Dockerfile b/docker/tests/Dockerfile index 7cccbada3..7c0d5b1d2 100644 --- a/docker/tests/Dockerfile +++ b/docker/tests/Dockerfile @@ -1,11 +1,10 @@ FROM elixir:latest -LABEL maintainer="Thomas Citharel <thomas.citharel@framasoft.org>" -ENV REFRESHED_AT=2023-11-20 +ENV REFRESHED_AT=2024-02-29 RUN apt-get update -yq && apt-get install -yq ca-certificates build-essential inotify-tools postgresql-client git curl gnupg xvfb libgtk-3-dev libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2 cmake exiftool python3-pip python3-setuptools RUN mkdir -p /etc/apt/keyrings && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list && apt-get update && apt-get install nodejs -yq RUN npm install -g wait-on RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* RUN mix local.hex --force && mix local.rebar --force -RUN pip3 --no-cache-dir install -Iv weasyprint pyexcel_ods3 +RUN pip --no-cache-dir install --break-system-packages weasyprint pyexcel-ods3 RUN curl https://dbip.mirror.framasoft.org/files/dbip-city-lite-latest.mmdb --output GeoLite2-City.mmdb -s && mkdir -p /usr/share/GeoIP && mv GeoLite2-City.mmdb /usr/share/GeoIP/ diff --git a/lib/graphql/api/events.ex b/lib/graphql/api/events.ex index a67787661..78bf77364 100644 --- a/lib/graphql/api/events.ex +++ b/lib/graphql/api/events.ex @@ -57,15 +57,25 @@ defmodule Mobilizon.GraphQL.API.Events do defp process_picture(%{media_id: _picture_id} = args, _), do: args defp process_picture(%{media: media}, %Actor{id: actor_id}) do - with uploaded when is_map(uploaded) <- - media - |> Map.get(:file) - |> Utils.make_media_data(description: Map.get(media, :name)) do + # case url + if Map.has_key?(media, :url) do %{ - file: Map.take(uploaded, [:url, :name, :content_type, :size]), - metadata: Map.take(uploaded, [:width, :height, :blurhash]), + file: %{"url" => media.url, "name" => media.name}, actor_id: actor_id } + + # case upload + else + with uploaded when is_map(uploaded) <- + media + |> Map.get(:file) + |> Utils.make_media_data(description: Map.get(media, :name)) do + %{ + file: Map.take(uploaded, [:url, :name, :content_type, :size]), + metadata: Map.take(uploaded, [:width, :height, :blurhash]), + actor_id: actor_id + } + end end end diff --git a/lib/graphql/resolvers/admin.ex b/lib/graphql/resolvers/admin.ex index fd0f81f5a..76bb1a362 100644 --- a/lib/graphql/resolvers/admin.ex +++ b/lib/graphql/resolvers/admin.ex @@ -5,11 +5,10 @@ defmodule Mobilizon.GraphQL.Resolvers.Admin do import Mobilizon.Users.Guards - alias Mobilizon.{Actors, Admin, Config, Events, Instances, Users} + alias Mobilizon.{Actors, Admin, Config, Events, Instances, Media, Users} alias Mobilizon.Actors.{Actor, Follower} - alias Mobilizon.Admin.{ActionLog, Setting} + alias Mobilizon.Admin.{ActionLog, Setting, SettingMedia} alias Mobilizon.Cldr.Language - alias Mobilizon.Config alias Mobilizon.Discussions.Comment alias Mobilizon.Events.Event alias Mobilizon.Federation.ActivityPub.{Actions, Relay} @@ -20,6 +19,9 @@ defmodule Mobilizon.GraphQL.Resolvers.Admin do alias Mobilizon.Storage.Page alias Mobilizon.Users.User alias Mobilizon.Web.Email + + alias Mobilizon.GraphQL.Resolvers.Media, as: MediaResolver + import Mobilizon.Web.Gettext require Logger @@ -268,8 +270,11 @@ defmodule Mobilizon.GraphQL.Resolvers.Admin do with {:ok, res} <- Admin.save_settings("instance", args), res <- res - |> Enum.map(fn {key, %Setting{value: value}} -> - {key, Admin.get_setting_value(value)} + |> Enum.map(fn {key, val} -> + case val do + %Setting{value: value} -> {key, Admin.get_setting_value(value)} + %SettingMedia{media: media} -> {key, media} + end end) |> Enum.into(%{}), :ok <- eventually_update_instance_actor(res) do @@ -284,6 +289,38 @@ defmodule Mobilizon.GraphQL.Resolvers.Admin do dgettext("errors", "You need to be logged-in and an administrator to save admin settings")} end + @spec get_media_setting(any(), any(), Absinthe.Resolution.t()) :: + {:ok, Media.t()} | {:error, String.t()} + def get_media_setting(_parent, %{group: group, name: name}, %{ + context: %{current_user: %User{role: role}} + }) + when is_admin(role) do + {:ok, MediaResolver.transform_media(Admin.get_admin_setting_media(group, name, nil))} + end + + def get_media_setting(_parent, _args, _resolution) do + {:error, + dgettext("errors", "You need to be logged-in and an administrator to access admin settings")} + end + + @spec get_instance_logo(any(), any(), Absinthe.Resolution.t()) :: + {:ok, Media.t() | nil} | {:error, String.t()} + def get_instance_logo(parent, _args, resolution) do + get_media_setting(parent, %{group: "instance", name: "instance_logo"}, resolution) + end + + @spec get_instance_favicon(any(), any(), Absinthe.Resolution.t()) :: + {:ok, Media.t() | nil} | {:error, String.t()} + def get_instance_favicon(parent, _args, resolution) do + get_media_setting(parent, %{group: "instance", name: "instance_favicon"}, resolution) + end + + @spec get_default_picture(any(), any(), Absinthe.Resolution.t()) :: + {:ok, Media.t() | nil} | {:error, String.t()} + def get_default_picture(parent, _args, resolution) do + get_media_setting(parent, %{group: "instance", name: "default_picture"}, resolution) + end + @spec update_user(any, map(), Absinthe.Resolution.t()) :: {:error, :invalid_argument | :user_not_found | binary | Ecto.Changeset.t()} | {:ok, Mobilizon.Users.User.t()} diff --git a/lib/graphql/resolvers/config.ex b/lib/graphql/resolvers/config.ex index 8e5a316e4..10f90849d 100644 --- a/lib/graphql/resolvers/config.ex +++ b/lib/graphql/resolvers/config.ex @@ -5,8 +5,11 @@ defmodule Mobilizon.GraphQL.Resolvers.Config do alias Mobilizon.Config alias Mobilizon.Events.Categories + alias Mobilizon.Medias.Media alias Mobilizon.Service.{AntiSpam, FrontEndAnalytics} + alias Mobilizon.GraphQL.Resolvers.Media, as: MediaResolver + @doc """ Gets config. """ @@ -31,6 +34,16 @@ defmodule Mobilizon.GraphQL.Resolvers.Config do {:ok, data} end + @spec instance_logo(any(), map(), Absinthe.Resolution.t()) :: {:ok, Media.t()} + def instance_logo(_parent, _params, _resolution) do + {:ok, MediaResolver.transform_media(Config.instance_logo())} + end + + @spec default_picture(any(), map(), Absinthe.Resolution.t()) :: {:ok, Media.t()} + def default_picture(_parent, _params, _resolution) do + {:ok, MediaResolver.transform_media(Config.default_picture())} + end + @spec terms(any(), map(), Absinthe.Resolution.t()) :: {:ok, map()} def terms(_parent, %{locale: locale}, _resolution) do type = Config.instance_terms_type() @@ -94,10 +107,15 @@ defmodule Mobilizon.GraphQL.Resolvers.Config do registrations_allowlist: Config.instance_registrations_allowlist?(), contact: Config.contact(), demo_mode: Config.instance_demo_mode?(), + long_events: Config.instance_long_events?(), description: Config.instance_description(), long_description: Config.instance_long_description(), slogan: Config.instance_slogan(), languages: Config.instance_languages(), + instance_logo: Config.instance_logo(), + primary_color: Config.primary_color(), + secondary_color: Config.secondary_color(), + default_picture: Config.default_picture(), anonymous: %{ participation: %{ allowed: Config.anonymous_participation?(), diff --git a/lib/graphql/resolvers/media.ex b/lib/graphql/resolvers/media.ex index 579403799..7647657df 100644 --- a/lib/graphql/resolvers/media.ex +++ b/lib/graphql/resolvers/media.ex @@ -18,6 +18,10 @@ defmodule Mobilizon.GraphQL.Resolvers.Media do do_fetch_media(media_id) end + def media(%{media_id: media_id} = _parent, _args, _resolution) do + do_fetch_media(media_id) + end + def media(%{picture: media} = _parent, _args, _resolution), do: {:ok, media} def media(_parent, %{id: media_id}, _resolution), do: do_fetch_media(media_id) def media(_parent, _args, _resolution), do: {:ok, nil} @@ -133,8 +137,10 @@ defmodule Mobilizon.GraphQL.Resolvers.Media do def user_size(_parent, _args, _resolution), do: {:error, :unauthenticated} - @spec transform_media(Media.t()) :: map() - defp transform_media(%Media{id: id, file: file, metadata: metadata}) do + @spec transform_media(Media.t() | nil) :: map() | nil + def transform_media(nil), do: nil + + def transform_media(%Media{id: id, file: file, metadata: metadata}) do %{ name: file.name, url: file.url, diff --git a/lib/graphql/schema/admin.ex b/lib/graphql/schema/admin.ex index 59c6b810b..c5f2beb9a 100644 --- a/lib/graphql/schema/admin.ex +++ b/lib/graphql/schema/admin.ex @@ -124,6 +124,24 @@ defmodule Mobilizon.GraphQL.Schema.AdminType do field(:instance_terms_type, :instance_terms_type, description: "The instance's terms type") field(:instance_terms_url, :string, description: "The instance's terms URL") + field(:instance_logo, :media, + description: "The instance's logo", + resolve: &Admin.get_instance_logo/3 + ) + + field(:instance_favicon, :media, + description: "The instance's favicon", + resolve: &Admin.get_instance_favicon/3 + ) + + field(:default_picture, :media, + description: "The default picture", + resolve: &Admin.get_default_picture/3 + ) + + field(:primary_color, :string, description: "The instance's primary color") + field(:secondary_color, :string, description: "The instance's secondary color") + field(:instance_privacy_policy, :string, description: "The instance's privacy policy body text" ) @@ -412,6 +430,25 @@ defmodule Mobilizon.GraphQL.Schema.AdminType do arg(:instance_long_description, :string, description: "The instance's long description") arg(:instance_slogan, :string, description: "The instance's slogan") arg(:contact, :string, description: "The instance's contact details") + + arg(:instance_logo, :media_input, + description: + "The instance's logo, either as an object or directly the ID of an existing media" + ) + + arg(:instance_favicon, :media_input, + description: + "The instance's favicon, either as an object or directly the ID of an existing media" + ) + + arg(:default_picture, :media_input, + description: + "The default picture, either as an object or directly the ID of an existing media" + ) + + arg(:primary_color, :string, description: "The instance's primary color") + arg(:secondary_color, :string, description: "The instance's secondary color") + arg(:instance_terms, :string, description: "The instance's terms body text") arg(:instance_terms_type, :instance_terms_type, description: "The instance's terms type") arg(:instance_terms_url, :string, description: "The instance's terms URL") diff --git a/lib/graphql/schema/config.ex b/lib/graphql/schema/config.ex index 59579a6e3..b4e68180a 100644 --- a/lib/graphql/schema/config.ex +++ b/lib/graphql/schema/config.ex @@ -31,6 +31,7 @@ defmodule Mobilizon.GraphQL.Schema.ConfigType do ) field(:demo_mode, :boolean, description: "Whether the demo mode is enabled") + field(:long_events, :boolean, description: "Whether the long events mode is enabled") field(:country_code, :string, description: "The country code from the IP") field(:location, :lonlat, description: "The IP's location") field(:geocoding, :geocoding, description: "The instance's geocoding settings") @@ -59,6 +60,17 @@ defmodule Mobilizon.GraphQL.Schema.ConfigType do resolve(&Config.terms/3) end + field(:instance_logo, :media, description: "The instance's logo") do + resolve(&Config.instance_logo/3) + end + + field(:default_picture, :media, description: "The default picture") do + resolve(&Config.default_picture/3) + end + + field(:primary_color, :string, description: "The instance's primary color") + field(:secondary_color, :string, description: "The instance's secondary color") + field(:privacy, :privacy, description: "The instance's privacy policy") do arg(:locale, :string, default_value: "en", diff --git a/lib/graphql/schema/event.ex b/lib/graphql/schema/event.ex index 9c6e04d5a..e2961794d 100644 --- a/lib/graphql/schema/event.ex +++ b/lib/graphql/schema/event.ex @@ -263,6 +263,10 @@ defmodule Mobilizon.GraphQL.Schema.EventType do description: "Whether or not to show the participation price" ) + field(:hide_number_of_participants, :boolean, + description: "Whether or not the number of participants is hidden" + ) + field(:show_start_time, :boolean, description: "Show event start time") field(:show_end_time, :boolean, description: "Show event end time") @@ -316,6 +320,10 @@ defmodule Mobilizon.GraphQL.Schema.EventType do description: "Whether or not to show the participation price" ) + field(:hide_number_of_participants, :boolean, + description: "Whether or not the number of participants is hidden" + ) + field(:show_start_time, :boolean, description: "Show event start time") field(:show_end_time, :boolean, description: "Show event end time") diff --git a/lib/graphql/schema/media.ex b/lib/graphql/schema/media.ex index 7e77b9fcb..8514ee406 100644 --- a/lib/graphql/schema/media.ex +++ b/lib/graphql/schema/media.ex @@ -52,8 +52,9 @@ defmodule Mobilizon.GraphQL.Schema.MediaType do input_object :media_input_object do field(:name, non_null(:string), description: "The media's name") field(:alt, :string, description: "The media's alternative text") - field(:file, non_null(:upload), description: "The media file") + field(:file, :upload, description: "The media file") field(:actor_id, :id, description: "The media owner") + field(:url, :string, description: "The media URL") end object :media_queries do diff --git a/lib/graphql/schema/search.ex b/lib/graphql/schema/search.ex index 626a693c0..f518c13dc 100644 --- a/lib/graphql/schema/search.ex +++ b/lib/graphql/schema/search.ex @@ -273,6 +273,8 @@ defmodule Mobilizon.GraphQL.Schema.SearchType do description: "Radius around the location to search in" ) + arg(:longevents, :boolean, description: "if mention filter in or out long events") + arg(:bbox, :string, description: "The bbox to search events into") arg(:zoom, :integer, description: "The zoom level for searching events") diff --git a/lib/mobilizon/admin/admin.ex b/lib/mobilizon/admin/admin.ex index 9a93b02f1..16ae49aa0 100644 --- a/lib/mobilizon/admin/admin.ex +++ b/lib/mobilizon/admin/admin.ex @@ -9,7 +9,8 @@ defmodule Mobilizon.Admin do alias Mobilizon.Actors.Actor alias Mobilizon.{Admin, Users} alias Mobilizon.Admin.ActionLog - alias Mobilizon.Admin.Setting + alias Mobilizon.Admin.{Setting, SettingMedia} + alias Mobilizon.Medias.Media alias Mobilizon.Storage.{Page, Repo} alias Mobilizon.Users.User @@ -78,9 +79,47 @@ defmodule Mobilizon.Admin do defp stringify_struct(struct), do: struct - @spec get_all_admin_settings :: list(Setting.t()) + @spec get_all_admin_settings :: map() def get_all_admin_settings do - Repo.all(Setting) + medias = + SettingMedia + |> Repo.all() + |> Repo.preload(:media) + |> Enum.map(fn %SettingMedia{group: group, name: name, media: media} -> + {group, name, media} + end) + + values = + Setting + |> Repo.all() + |> Enum.map(fn %Setting{group: group, name: name, value: value} -> + {group, name, get_setting_value(value)} + end) + + all_settings = Enum.concat(values, medias) + + Enum.reduce( + all_settings, + %{}, + # For each {group,name,value} + fn {group, name, value}, acc -> + # We update the %{group: map} in the accumulator + {_, new_acc} = + Map.get_and_update( + acc, + group, + # We put the %{name: value} into the %{group: map} + fn group_map -> + { + group_map, + Map.put(group_map || %{}, name, value) + } + end + ) + + new_acc + end + ) end @spec get_admin_setting_value(String.t(), String.t(), String.t() | nil) :: @@ -119,21 +158,40 @@ defmodule Mobilizon.Admin do end end + @spec get_admin_setting_media(String.t(), String.t(), String.t() | nil) :: + {:ok, Media.t()} | {:error, :not_found} | nil + def get_admin_setting_media(group, name, fallback \\ nil) + when is_binary(group) and is_binary(name) do + case SettingMedia + |> where(group: ^group) + |> where(name: ^name) + |> preload(:media) + |> Repo.one() do + nil -> + fallback + + %SettingMedia{media: media} -> + media + + %SettingMedia{} -> + fallback + end + end + @spec save_settings(String.t(), map()) :: {:ok, any} | {:error, any} def save_settings(group, args) do + {medias, values} = Map.split(args, [:instance_logo, :instance_favicon, :default_picture]) + Multi.new() - |> do_save_setting(group, args) + |> do_save_media_setting(group, medias) + |> do_save_value_setting(group, values) |> Repo.transaction() end - def clear_settings(group) do - Setting |> where([s], s.group == ^group) |> Repo.delete_all() - end + @spec do_save_value_setting(Ecto.Multi.t(), String.t(), map()) :: Ecto.Multi.t() + defp do_save_value_setting(transaction, _group, args) when args == %{}, do: transaction - @spec do_save_setting(Ecto.Multi.t(), String.t(), map()) :: Ecto.Multi.t() - defp do_save_setting(transaction, _group, args) when args == %{}, do: transaction - - defp do_save_setting(transaction, group, args) do + defp do_save_value_setting(transaction, group, args) do key = hd(Map.keys(args)) {val, rest} = Map.pop(args, key) @@ -150,7 +208,40 @@ defmodule Mobilizon.Admin do conflict_target: [:group, :name] ) - do_save_setting(transaction, group, rest) + do_save_value_setting(transaction, group, rest) + end + + @spec do_save_media_setting(Ecto.Multi.t(), String.t(), map()) :: Ecto.Multi.t() + defp do_save_media_setting(transaction, _group, args) when args == %{}, do: transaction + + defp do_save_media_setting(transaction, group, args) do + key = hd(Map.keys(args)) + {val, rest} = Map.pop(args, key) + + transaction = + case val do + val -> + Multi.insert( + transaction, + key, + SettingMedia.changeset(%SettingMedia{}, %{ + group: group, + name: Atom.to_string(key), + media: val + }), + on_conflict: :replace_all, + conflict_target: [:group, :name] + ) + end + + do_save_media_setting(transaction, group, rest) + end + + def clear_settings(group) do + Multi.new() + |> Multi.delete_all(:settings, Setting |> where([s], s.group == ^group)) + |> Multi.delete_all(:settings_medias, SettingMedia |> where([s], s.group == ^group)) + |> Repo.transaction() end @spec convert_to_string(any()) :: String.t() diff --git a/lib/mobilizon/admin/setting.ex b/lib/mobilizon/admin/setting.ex index a505358ec..cf363a61c 100644 --- a/lib/mobilizon/admin/setting.ex +++ b/lib/mobilizon/admin/setting.ex @@ -4,6 +4,7 @@ defmodule Mobilizon.Admin.Setting do """ use Ecto.Schema import Ecto.Changeset + alias Ecto.Changeset @required_attrs [:group, :name] @optional_attrs [:value] @@ -32,3 +33,93 @@ defmodule Mobilizon.Admin.Setting do |> unique_constraint(:group, name: :admin_settings_group_name_index) end end + +defmodule Mobilizon.Admin.SettingMedia do + @moduledoc """ + A Key-Value settings table for media settings + """ + use Ecto.Schema + import Ecto.Changeset + alias Ecto.Changeset + alias Mobilizon.Federation.ActivityPub.Relay + alias Mobilizon.Medias + alias Mobilizon.Medias.Media + alias Mobilizon.Storage.Repo + + @required_attrs [:group, :name] + + @type t :: %{ + group: String.t(), + name: String.t(), + media: Media.t() + } + + schema "admin_settings_medias" do + field(:group, :string) + field(:name, :string) + belongs_to(:media, Media, on_replace: :delete) + + timestamps() + end + + @doc false + @spec changeset(t | Ecto.Schema.t(), map) :: Ecto.Changeset.t() + def changeset(setting_media, attrs) do + setting_media + |> Repo.preload(:media) + |> cast(attrs, @required_attrs) + |> put_media(attrs) + |> validate_required(@required_attrs) + |> unique_constraint(:group, name: :admin_settings_medias_group_name_index) + end + + # # In case the provided media is an existing one + @spec put_media(Changeset.t(), map) :: Changeset.t() + defp put_media(%Changeset{} = changeset, %{media: %{media_id: id}}) do + %Media{} = media = Medias.get_media!(id) + put_assoc(changeset, :media, media) + end + + # In case it's a new media + defp put_media(%Changeset{} = changeset, %{media: %{media: media}}) do + {:ok, media} = upload_media(media) + put_assoc(changeset, :media, media) + end + + # In case there is no media + defp put_media(%Changeset{} = changeset, _media) do + put_assoc(changeset, :media, nil) + end + + import Mobilizon.Web.Gettext + @spec upload_media(map) :: {:ok, Media.t()} | {:error, any} + defp upload_media(%{file: %Plug.Upload{} = file} = args) do + with {:ok, + %{ + name: _name, + url: url, + content_type: content_type, + size: size + } = uploaded} <- + Mobilizon.Web.Upload.store(file), + args <- + args + |> Map.put(:url, url) + |> Map.put(:size, size) + |> Map.put(:content_type, content_type), + {:ok, media = %Media{}} <- + Medias.create_media(%{ + file: args, + actor_id: Map.get(args, :actor_id, Relay.get_actor().id), + metadata: Map.take(uploaded, [:width, :height, :blurhash]) + }) do + {:ok, media} + else + {:error, :mime_type_not_allowed} -> + {:error, dgettext("errors", "File doesn't have an allowed MIME type.")} + + error -> + {:error, error} + end + end +end diff --git a/lib/mobilizon/config.ex b/lib/mobilizon/config.ex index cdfe427a5..1836de764 100644 --- a/lib/mobilizon/config.ex +++ b/lib/mobilizon/config.ex @@ -4,7 +4,8 @@ defmodule Mobilizon.Config do """ alias Mobilizon.Actors - alias Mobilizon.Admin.Setting + alias Mobilizon.Admin + alias Mobilizon.Medias.Media alias Mobilizon.Service.GitStatus require Logger import Mobilizon.Service.Export.Participants.Common, only: [enabled_formats: 0] @@ -30,56 +31,18 @@ defmodule Mobilizon.Config do @spec instance_config :: mobilizon_config def instance_config, do: Application.get_env(:mobilizon, :instance) - @spec db_instance_config :: list(Setting.t()) - def db_instance_config, do: Mobilizon.Admin.get_all_admin_settings() - @spec config_cache :: map() def config_cache do - case Cachex.fetch(:config, :all_db_config, fn _key -> - value = - Enum.reduce( - Mobilizon.Admin.get_all_admin_settings(), - %{}, - &arrange_values/2 - ) - - {:commit, value} - end) do + case Cachex.fetch( + :config, + :all_db_config, + fn _key -> {:commit, Admin.get_all_admin_settings()} end + ) do {status, value} when status in [:ok, :commit] -> value _err -> %{} end end - @spec arrange_values(Setting.t(), map()) :: map() - defp arrange_values(setting, acc) do - {_, new_data} = - Map.get_and_update(acc, setting.group, fn current_value -> - new_value = current_value || %{} - - {current_value, Map.put(new_value, setting.name, process_value(setting.value))} - end) - - new_data - end - - @spec process_value(String.t() | nil) :: any() - defp process_value(nil), do: nil - defp process_value(""), do: nil - - defp process_value(value) do - case Jason.decode(value) do - {:ok, val} -> - val - - {:error, _} -> - case value do - "true" -> true - "false" -> false - value -> value - end - end - end - @spec config_cached_value(String.t(), String.t(), String.t()) :: any() def config_cached_value(group, name, fallback \\ nil) do config_cache() @@ -116,10 +79,23 @@ defmodule Mobilizon.Config do @spec instance_slogan :: String.t() | nil def instance_slogan, do: config_cached_value("instance", "instance_slogan") + @spec instance_logo :: Media.t() | nil + def instance_logo, do: config_cached_value("instance", "instance_logo") + + @spec instance_favicon :: Media.t() | nil + def instance_favicon, do: config_cached_value("instance", "instance_favicon") + + @spec default_picture :: Media.t() | nil + def default_picture, do: config_cached_value("instance", "default_picture") + + @spec primary_color :: Media.t() | nil + def primary_color, do: config_cached_value("instance", "primary_color") + + @spec secondary_color :: Media.t() | nil + def secondary_color, do: config_cached_value("instance", "secondary_color") + @spec contact :: String.t() | nil - def contact do - config_cached_value("instance", "contact") - end + def contact, do: config_cached_value("instance", "contact") @spec instance_terms(String.t()) :: String.t() def instance_terms(locale \\ "en") do @@ -201,6 +177,9 @@ defmodule Mobilizon.Config do @spec instance_demo_mode? :: boolean def instance_demo_mode?, do: to_boolean(instance_config()[:demo]) + @spec instance_long_events? :: boolean + def instance_long_events?, do: instance_config()[:duration_of_long_event] > 0 + @spec instance_repository :: String.t() def instance_repository, do: instance_config()[:repository] @@ -469,6 +448,9 @@ defmodule Mobilizon.Config do instance_slogan: instance_slogan(), registrations_open: instance_registrations_open?(), contact: contact(), + primary_color: primary_color(), + secondary_color: secondary_color(), + instance_logo: instance_logo(), instance_terms: instance_terms(), instance_terms_type: instance_terms_type(), instance_terms_url: instance_terms_url(), diff --git a/lib/mobilizon/events/event_options.ex b/lib/mobilizon/events/event_options.ex index 3a2780b9b..894d33106 100644 --- a/lib/mobilizon/events/event_options.ex +++ b/lib/mobilizon/events/event_options.ex @@ -25,6 +25,7 @@ defmodule Mobilizon.Events.EventOptions do show_participation_price: boolean, offers: [EventOffer.t()], participation_condition: [EventParticipationCondition.t()], + hide_number_of_participants: boolean, show_start_time: boolean, show_end_time: boolean, timezone: String.t() | nil, @@ -41,6 +42,7 @@ defmodule Mobilizon.Events.EventOptions do :program, :comment_moderation, :show_participation_price, + :hide_number_of_participants, :show_start_time, :show_end_time, :timezone, @@ -59,6 +61,7 @@ defmodule Mobilizon.Events.EventOptions do field(:program, :string) field(:comment_moderation, CommentModeration) field(:show_participation_price, :boolean) + field(:hide_number_of_participants, :boolean, default: false) field(:show_start_time, :boolean, default: true) field(:show_end_time, :boolean, default: true) field(:timezone, :string) diff --git a/lib/mobilizon/events/events.ex b/lib/mobilizon/events/events.ex index bc97ab50d..1009a0197 100644 --- a/lib/mobilizon/events/events.ex +++ b/lib/mobilizon/events/events.ex @@ -16,6 +16,7 @@ defmodule Mobilizon.Events do alias Mobilizon.Actors.{Actor, Follower} alias Mobilizon.Addresses.Address + alias Mobilizon.Config alias Mobilizon.Events.{ Event, @@ -571,6 +572,7 @@ defmodule Mobilizon.Events do |> events_for_search_query() |> events_for_begins_on(Map.get(args, :begins_on, DateTime.utc_now())) |> events_for_ends_on(Map.get(args, :ends_on)) + |> events_for_longevents(args) |> events_for_category(args) |> events_for_categories(args) |> events_for_languages(args) @@ -1377,6 +1379,38 @@ defmodule Mobilizon.Events do end end + @spec events_for_longevents(Ecto.Queryable.t(), map()) :: Ecto.Query.t() + defp events_for_longevents(query, args) do + duration = Config.get([:instance, :duration_of_long_event], 0) + + if duration <= 0 do + query + else + longevents = Map.get(args, :longevents) + + case longevents do + nil -> + query + + true -> + where( + query, + [q], + not is_nil(q.ends_on) and + q.ends_on > fragment("? + '1 days'::interval * ?", q.begins_on, ^duration) + ) + + false -> + where( + query, + [q], + is_nil(q.ends_on) or + q.ends_on <= fragment("? + '1 days'::interval * ?", q.begins_on, ^duration) + ) + end + end + end + @spec events_for_category(Ecto.Queryable.t(), map()) :: Ecto.Query.t() defp events_for_category(query, %{category: category}) when is_valid_string(category) do where(query, [q], q.category == ^category) diff --git a/lib/mobilizon/medias/medias.ex b/lib/mobilizon/medias/medias.ex index 29cccd780..06c8ce500 100644 --- a/lib/mobilizon/medias/medias.ex +++ b/lib/mobilizon/medias/medias.ex @@ -185,7 +185,8 @@ defmodule Mobilizon.Medias do [from: "events_medias", param: "media_id"], [from: "posts", param: "picture_id"], [from: "posts_medias", param: "media_id"], - [from: "comments_medias", param: "media_id"] + [from: "comments_medias", param: "media_id"], + [from: "admin_settings_medias", param: "media_id"] ] |> Enum.map_join(" UNION ", fn [from: from, param: param] -> "SELECT 1 FROM #{from} WHERE #{from}.#{param} = m0.id" diff --git a/lib/service/geospatial/hat.ex b/lib/service/geospatial/hat.ex new file mode 100644 index 000000000..d743ee34b --- /dev/null +++ b/lib/service/geospatial/hat.ex @@ -0,0 +1,44 @@ +defmodule Mobilizon.Service.Geospatial.Hat do + @moduledoc """ + Hat backend. + """ + + alias Mobilizon.Addresses.Address + alias Mobilizon.Service.Geospatial.Addok + alias Mobilizon.Service.Geospatial.Nominatim + alias Mobilizon.Service.Geospatial.Provider + import Mobilizon.Service.Geospatial.Provider, only: [endpoint: 1] + require Logger + + @behaviour Provider + + @impl Provider + @doc """ + Hat implementation for `c:Mobilizon.Service.Geospatial.Provider.geocode/3`. + """ + @spec geocode(String.t(), keyword()) :: list(Address.t()) + def geocode(lon, lat, options \\ []) do + tasks = [ + Task.async(fn -> Addok.geocode(lon, lat, options) end), + Task.async(fn -> Nominatim.geocode(lon, lat, options) end) + ] + + [addrlist1, addrlist2] = Task.await_many(tasks, 12_000) + addrlist2 ++ addrlist1 + end + + @impl Provider + @doc """ + Hat implementation for `c:Mobilizon.Service.Geospatial.Provider.search/2`. + """ + @spec search(String.t(), keyword()) :: list(Address.t()) + def search(q, options \\ []) do + tasks = [ + Task.async(fn -> Addok.search(q, options) end), + Task.async(fn -> Nominatim.search(q, options) end) + ] + + [addrlist1, addrlist2] = Task.await_many(tasks, 12_000) + addrlist2 ++ addrlist1 + end +end diff --git a/lib/web/controllers/manifest_controller.ex b/lib/web/controllers/manifest_controller.ex new file mode 100644 index 000000000..c26f841f9 --- /dev/null +++ b/lib/web/controllers/manifest_controller.ex @@ -0,0 +1,58 @@ +defmodule Mobilizon.Web.ManifestController do + use Mobilizon.Web, :controller + + alias Mobilizon.Config + alias Mobilizon.Medias.Media + + @spec manifest(Plug.Conn.t(), any) :: Plug.Conn.t() + def manifest(conn, _params) do + favicons = + case Config.instance_favicon() do + %Media{file: %{url: url}, metadata: metadata} -> + [ + Map.merge( + %{ + src: url + }, + case metadata do + %{width: width} -> %{sizes: "#{width}x#{width}"} + _ -> %{} + end + ) + ] + + _ -> + [ + %{ + src: "./img/icons/android-chrome-512x512.png", + sizes: "512x512", + type: "image/png" + }, + %{ + src: "./img/icons/android-chrome-192x192.png", + sizes: "192x192", + type: "image/png" + } + ] + end + + json(conn, %{ + name: Config.instance_name(), + start_url: "/", + scope: "/", + display: "standalone", + background_color: "#ffffff", + theme_color: "#ffd599", + orientation: "portrait-primary", + icons: favicons + }) + end + + @spec favicon(Plug.Conn.t(), any) :: Plug.Conn.t() + def favicon(conn, _params) do + case Config.instance_favicon() do + %Media{file: %{url: url}} -> redirect(conn, external: url) + _ -> redirect(conn, to: "/img/icons/favicon.ico") + end + end +end diff --git a/lib/web/mobilizon_web.ex b/lib/web/mobilizon_web.ex index a1f97a6e3..9848b880b 100644 --- a/lib/web/mobilizon_web.ex +++ b/lib/web/mobilizon_web.ex @@ -18,8 +18,7 @@ defmodule Mobilizon.Web do """ def static_paths, - do: - ~w(index.html manifest.json manifest.webmanifest service-worker.js css fonts img js favicon.ico robots.txt assets) + do: ~w(index.html service-worker.js css fonts img js robots.txt assets) def controller do quote do diff --git a/lib/web/router.ex b/lib/web/router.ex index bc50ead97..a960fba36 100644 --- a/lib/web/router.ex +++ b/lib/web/router.ex @@ -113,6 +113,12 @@ defmodule Mobilizon.Web.Router do get("/nodeinfo/:version", NodeInfoController, :nodeinfo) end + scope "/", Mobilizon.Web do + get("/manifest.webmanifest", ManifestController, :manifest) + get("/manifest.json", ManifestController, :manifest) + get("/favicon.ico", ManifestController, :favicon) + end + scope "/", Mobilizon.Web do pipe_through(:activity_pub_and_html) pipe_through(:activity_pub_signature) diff --git a/lib/web/templates/api/terms.html.heex b/lib/web/templates/api/terms.html.heex index 8f7f8366f..dafe7b100 100644 --- a/lib/web/templates/api/terms.html.heex +++ b/lib/web/templates/api/terms.html.heex @@ -54,7 +54,7 @@ <p> <%= pgettext( "terms", - "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by <a href=\"https://framasoft.org\">Framasoft</a>, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." + "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." ) |> raw %> </p> diff --git a/lib/web/templates/page/index.html.heex b/lib/web/templates/page/index.html.heex index 9d23adacd..b1b2ab77b 100644 --- a/lib/web/templates/page/index.html.heex +++ b/lib/web/templates/page/index.html.heex @@ -4,21 +4,23 @@ <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <link rel="apple-touch-icon" href="/img/icons/apple-touch-icon-152x152.png" sizes="152x152" /> + <link rel="apple-touch-icon" href={favicon_url()} sizes={favicon_sizes()} /> + <link rel="icon" href={favicon_url()} sizes={favicon_sizes()} /> <link rel="mask-icon" href="/img/icons/safari-pinned-tab.svg" color={theme_color()} /> <link rel="manifest" href="/manifest.webmanifest" /> <meta name="theme-color" content={theme_color()} /> <script> if (localStorage.theme === 'dark' || (!('theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches)) { - document.documentElement.classList.add('dark') + document.documentElement.classList.add('dark') } else { - document.documentElement.classList.remove('dark') + document.documentElement.classList.remove('dark') } </script> <%= tags(assigns) || assigns.tags %> <%= Vite.vite_client() %> <%= Vite.vite_snippet("src/main.ts") %> </head> + <body> <noscript> <strong> diff --git a/lib/web/views/page_view.ex b/lib/web/views/page_view.ex index 288b8a4fc..d226f0f3f 100644 --- a/lib/web/views/page_view.ex +++ b/lib/web/views/page_view.ex @@ -6,6 +6,7 @@ defmodule Mobilizon.Web.PageView do use Mobilizon.Web, :view alias Mobilizon.Actors.Actor + alias Mobilizon.Config alias Mobilizon.Discussions.{Comment, Discussion} alias Mobilizon.Events.Event alias Mobilizon.Posts.Post @@ -91,4 +92,27 @@ defmodule Mobilizon.Web.PageView do def root?(assigns) do assigns |> Map.get(:conn, %{request_path: "/"}) |> Map.get(:request_path, "/") == "/" end + + defp favicon do + case Config.instance_favicon() do + %{file: %{url: url}, metadata: metadata} -> + %{ + src: url, + sizes: + case metadata do + %{width: width} -> "#{width}x#{width}" + _ -> "any" + end + } + + _ -> + %{ + src: "/img/icons/apple-touch-icon-152x152.png", + sizes: "152x152" + } + end + end + + def favicon_url, do: Map.get(favicon(), :src) + def favicon_sizes, do: Map.get(favicon(), :sizes) end diff --git a/mix.exs b/mix.exs index 54283c7c0..8c413b104 100644 --- a/mix.exs +++ b/mix.exs @@ -1,7 +1,7 @@ defmodule Mobilizon.Mixfile do use Mix.Project - @version "4.1.0-alpha.1" + @version "5.0.0-beta.1" def project do [ @@ -185,7 +185,7 @@ defmodule Mobilizon.Mixfile do {:floki, "~> 0.31"}, {:ip_reserved, "~> 0.1.0"}, {:fast_sanitize, "~> 0.1"}, - {:ueberauth, "0.10.7", override: true}, + {:ueberauth, "0.10.8", override: true}, {:ueberauth_twitter, "~> 0.4"}, {:ueberauth_discord, "~> 0.7"}, {:ueberauth_github, "~> 0.8.1"}, diff --git a/mix.lock b/mix.lock index 9d2636e15..3bceb2bc1 100644 --- a/mix.lock +++ b/mix.lock @@ -4,7 +4,7 @@ "absinthe_plug": {:hex, :absinthe_plug, "1.5.8", "38d230641ba9dca8f72f1fed2dfc8abd53b3907d1996363da32434ab6ee5d6ab", [:mix], [{:absinthe, "~> 1.5", [hex: :absinthe, repo: "hexpm", optional: false]}, {:plug, "~> 1.4", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "bbb04176647b735828861e7b2705465e53e2cf54ccf5a73ddd1ebd855f996e5a"}, "argon2_elixir": {:hex, :argon2_elixir, "4.0.0", "7f6cd2e4a93a37f61d58a367d82f830ad9527082ff3c820b8197a8a736648941", [:make, :mix], [{:comeonin, "~> 5.3", [hex: :comeonin, repo: "hexpm", optional: false]}, {:elixir_make, "~> 0.6", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "f9da27cf060c9ea61b1bd47837a28d7e48a8f6fa13a745e252556c14f9132c7f"}, "atomex": {:hex, :atomex, "0.5.1", "706a8241fd6d1719b27a77b6d1192d2f85e6ecc78e6eadab29207d8cb9bb7ae5", [:mix], [{:xml_builder, "~> 2.1", [hex: :xml_builder, repo: "hexpm", optional: false]}], "hexpm", "6248891b5fcab8503982e090eedeeadb757a6311c2ef2e2998b874f7d319ab3f"}, - "bandit": {:hex, :bandit, "1.2.0", "2b5784909cc25b2514868055ff27458cdc63314514b90d86448ff91d18bece80", [:mix], [{:hpax, "~> 0.1.1", [hex: :hpax, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:thousand_island, "~> 1.0", [hex: :thousand_island, repo: "hexpm", optional: false]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "05688b883d87cc3b32991517a61e8c2ce8ee2dd6aa6eb73635426002a6661491"}, + "bandit": {:hex, :bandit, "1.2.3", "a98d664a96fec23b68e776062296d76a94b4459795b38209f4ae89cb4225709c", [:mix], [{:hpax, "~> 0.1.1", [hex: :hpax, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:thousand_island, "~> 1.0", [hex: :thousand_island, repo: "hexpm", optional: false]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "3e29150245a9b5f56944434e5240966e75c917dad248f689ab589b32187a81af"}, "bunt": {:hex, :bunt, "1.0.0", "081c2c665f086849e6d57900292b3a161727ab40431219529f13c4ddcf3e7a44", [:mix], [], "hexpm", "dc5f86aa08a5f6fa6b8096f0735c4e76d54ae5c9fa2c143e5a1fc7c1cd9bb6b5"}, "cachex": {:hex, :cachex, "3.6.0", "14a1bfbeee060dd9bec25a5b6f4e4691e3670ebda28c8ba2884b12fe30b36bf8", [:mix], [{:eternal, "~> 1.2", [hex: :eternal, repo: "hexpm", optional: false]}, {:jumper, "~> 1.0", [hex: :jumper, repo: "hexpm", optional: false]}, {:sleeplocks, "~> 1.1", [hex: :sleeplocks, repo: "hexpm", optional: false]}, {:unsafe, "~> 1.0", [hex: :unsafe, repo: "hexpm", optional: false]}], "hexpm", "ebf24e373883bc8e0c8d894a63bbe102ae13d918f790121f5cfe6e485cc8e2e2"}, "castore": {:hex, :castore, "1.0.5", "9eeebb394cc9a0f3ae56b813459f990abb0a3dedee1be6b27fdb50301930502f", [:mix], [], "hexpm", "8d7c597c3e4a64c395980882d4bca3cebb8d74197c590dc272cfd3b6a6310578"}, @@ -14,7 +14,7 @@ "combine": {:hex, :combine, "0.10.0", "eff8224eeb56498a2af13011d142c5e7997a80c8f5b97c499f84c841032e429f", [:mix], [], "hexpm", "1b1dbc1790073076580d0d1d64e42eae2366583e7aecd455d1215b0d16f2451b"}, "comeonin": {:hex, :comeonin, "5.4.0", "246a56ca3f41d404380fc6465650ddaa532c7f98be4bda1b4656b3a37cc13abe", [:mix], [], "hexpm", "796393a9e50d01999d56b7b8420ab0481a7538d0caf80919da493b4a6e51faf1"}, "cors_plug": {:hex, :cors_plug, "3.0.3", "7c3ac52b39624bc616db2e937c282f3f623f25f8d550068b6710e58d04a0e330", [:mix], [{:plug, "~> 1.13", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "3f2d759e8c272ed3835fab2ef11b46bddab8c1ab9528167bd463b6452edf830d"}, - "credo": {:hex, :credo, "1.7.4", "68ca5cf89071511c12fd9919eb84e388d231121988f6932756596195ccf7fd35", [:mix], [{:bunt, "~> 0.2.1 or ~> 1.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "9cf776d062c78bbe0f0de1ecaee183f18f2c3ec591326107989b054b7dddefc2"}, + "credo": {:hex, :credo, "1.7.5", "643213503b1c766ec0496d828c90c424471ea54da77c8a168c725686377b9545", [:mix], [{:bunt, "~> 0.2.1 or ~> 1.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "f799e9b5cd1891577d8c773d245668aa74a2fcd15eb277f51a0131690ebfb3fd"}, "credo_code_climate": {:hex, :credo_code_climate, "0.1.0", "1c4efbd11cb0244622ed5f09246b9afbbf796316ce03e78f67db6d81271d2978", [:mix], [{:credo, "~> 1.5", [hex: :credo, repo: "hexpm", optional: false]}, {:jason, "~> 1.2", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "75529fe38056f4e229821d604758282838b8397c82e2c12e409fda16b16821ca"}, "dataloader": {:hex, :dataloader, "2.0.0", "49b42d60b9bb06d761a71d7b034c4b34787957e713d4fae15387a25fcd639112", [:mix], [{:ecto, ">= 3.4.3 and < 4.0.0", [hex: :ecto, repo: "hexpm", optional: true]}, {:opentelemetry_process_propagator, "~> 0.2.1", [hex: :opentelemetry_process_propagator, repo: "hexpm", optional: true]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "09d61781b76ce216e395cdbc883ff00d00f46a503e215c22722dba82507dfef0"}, "db_connection": {:hex, :db_connection, "2.6.0", "77d835c472b5b67fc4f29556dee74bf511bbafecdcaf98c27d27fa5918152086", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "c2f992d15725e721ec7fbc1189d4ecdb8afef76648c746a8e1cad35e3b8a35f3"}, @@ -50,13 +50,13 @@ "excoveralls": {:hex, :excoveralls, "0.18.0", "b92497e69465dc51bc37a6422226ee690ab437e4c06877e836f1c18daeb35da9", [:mix], [{:castore, "~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "1109bb911f3cb583401760be49c02cbbd16aed66ea9509fc5479335d284da60b"}, "exgravatar": {:hex, :exgravatar, "2.0.3", "2349709832ee535f826f48db98cddd294ae62b01acb44d539a16419bd8ebc3e5", [:mix], [], "hexpm", "aca18ff9bd8991d3be3e5446d3bdefc051be084c1ffc9ab2d43b3e65339300e1"}, "exkismet": {:git, "https://github.com/tcitworld/exkismet.git", "8b5485fde00fafbde20f315bec387a77f7358334", []}, - "expo": {:hex, :expo, "0.5.1", "249e826a897cac48f591deba863b26c16682b43711dd15ee86b92f25eafd96d9", [:mix], [], "hexpm", "68a4233b0658a3d12ee00d27d37d856b1ba48607e7ce20fd376958d0ba6ce92b"}, + "expo": {:hex, :expo, "0.5.2", "beba786aab8e3c5431813d7a44b828e7b922bfa431d6bfbada0904535342efe2", [:mix], [], "hexpm", "8c9bfa06ca017c9cb4020fabe980bc7fdb1aaec059fd004c2ab3bff03b1c599c"}, "export": {:hex, :export, "0.1.1", "6dfd268b0692428f89b9285859a2dc02b6dcd2e8fdfbca34ac6e6a331351df91", [:mix], [{:erlport, "~> 0.9", [hex: :erlport, repo: "hexpm", optional: false]}], "hexpm", "3da7444ff4053f1824352f4bdb13fbd2c28c93c2011786fb686b649fdca1021f"}, "fast_html": {:hex, :fast_html, "2.3.0", "08c1d8ead840dd3060ba02c761bed9f37f456a1ddfe30bcdcfee8f651cec06a6", [:make, :mix], [{:elixir_make, "~> 0.4", [hex: :elixir_make, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 0.2.0", [hex: :nimble_pool, repo: "hexpm", optional: false]}], "hexpm", "f18e3c7668f82d3ae0b15f48d48feeb257e28aa5ab1b0dbf781c7312e5da029d"}, "fast_sanitize": {:hex, :fast_sanitize, "0.2.3", "67b93dfb34e302bef49fec3aaab74951e0f0602fd9fa99085987af05bd91c7a5", [:mix], [{:fast_html, "~> 2.0", [hex: :fast_html, repo: "hexpm", optional: false]}, {:plug, "~> 1.8", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "e8ad286d10d0386e15d67d0ee125245ebcfbc7d7290b08712ba9013c8c5e56e2"}, "file_info": {:hex, :file_info, "0.0.4", "2e0e77f211e833f38ead22cb29ce53761d457d80b3ffe0ffe0eb93880b0963b2", [:mix], [{:mimetype_parser, "~> 0.1.2", [hex: :mimetype_parser, repo: "hexpm", optional: false]}], "hexpm", "50e7ad01c2c8b9339010675fe4dc4a113b8d6ca7eddce24d1d74fd0e762781a5"}, "file_system": {:hex, :file_system, "0.2.10", "fb082005a9cd1711c05b5248710f8826b02d7d1784e7c3451f9c1231d4fc162d", [:mix], [], "hexpm", "41195edbfb562a593726eda3b3e8b103a309b733ad25f3d642ba49696bf715dc"}, - "floki": {:hex, :floki, "0.35.3", "0c8c6234aa71cb2b069cf801e8f8f30f8d096eb452c3dae2ccc409510ec32720", [:mix], [], "hexpm", "6d9f07f3fc76599f3b66c39f4a81ac62c8f4d9631140268db92aacad5d0e56d4"}, + "floki": {:hex, :floki, "0.35.4", "cc947b446024732c07274ac656600c5c4dc014caa1f8fb2dfff93d275b83890d", [:mix], [], "hexpm", "27fa185d3469bd8fc5947ef0f8d5c4e47f0af02eb6b070b63c868f69e3af0204"}, "gen_smtp": {:hex, :gen_smtp, "1.2.0", "9cfc75c72a8821588b9b9fe947ae5ab2aed95a052b81237e0928633a13276fd3", [:rebar3], [{:ranch, ">= 1.8.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "5ee0375680bca8f20c4d85f58c2894441443a743355430ff33a783fe03296779"}, "geo": {:hex, :geo, "3.6.0", "00c9c6338579f67e91cd5950af4ae2eb25cdce0c3398718c232539f61625d0bd", [:mix], [{:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "1dbdebf617183b54bc3c8ad7a36531a9a76ada8ca93f75f573b0ae94006168da"}, "geo_postgis": {:hex, :geo_postgis, "3.5.0", "e3675b6276b8c2166dc20a6fa9d992eb73c665de2b09b666d09c7824dc8a8300", [:mix], [{:ecto, "~> 3.0", [hex: :ecto, repo: "hexpm", optional: true]}, {:geo, "~> 3.5", [hex: :geo, repo: "hexpm", optional: false]}, {:jason, "~> 1.2", [hex: :jason, repo: "hexpm", optional: true]}, {:poison, "~> 2.2 or ~> 3.0 or ~> 4.0 or ~> 5.0", [hex: :poison, repo: "hexpm", optional: true]}, {:postgrex, ">= 0.0.0", [hex: :postgrex, repo: "hexpm", optional: false]}], "hexpm", "0bebc5b00f8b11835066bd6213fbeeec03704b4a1c206920b81c1ec2201d185f"}, @@ -68,7 +68,7 @@ "guardian_db": {:hex, :guardian_db, "3.0.0", "c42902e3f1af1ba1e2d0c10913b926a1421f3a7e38eb4fc382b715c17489abdb", [:mix], [{:ecto, "~> 3.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:ecto_sql, "~> 3.1", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:guardian, "~> 1.0 or ~> 2.0", [hex: :guardian, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.13", [hex: :postgrex, repo: "hexpm", optional: true]}], "hexpm", "9c2ec4278efa34f9f1cc6ba795e552d41fdc7ffba5319d67eeb533b89392d183"}, "guardian_phoenix": {:hex, :guardian_phoenix, "2.0.1", "89a817265af09a6ddf7cb1e77f17ffca90cea2db10ff888375ef34502b2731b1", [:mix], [{:guardian, "~> 2.0", [hex: :guardian, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.3", [hex: :phoenix, repo: "hexpm", optional: false]}], "hexpm", "21f439246715192b231f228680465d1ed5fbdf01555a4a3b17165532f5f9a08c"}, "hackney": {:hex, :hackney, "1.20.1", "8d97aec62ddddd757d128bfd1df6c5861093419f8f7a4223823537bad5d064e2", [:rebar3], [{:certifi, "~> 2.12.0", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "~> 6.1.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "~> 1.0.0", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~> 1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:parse_trans, "3.4.1", [hex: :parse_trans, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "~> 1.1.0", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}, {:unicode_util_compat, "~> 0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "fe9094e5f1a2a2c0a7d10918fee36bfec0ec2a979994cff8cfe8058cd9af38e3"}, - "hammer": {:hex, :hammer, "6.2.0", "956e578f210ee67f7801caf7109b0e1145d2dad77ed5a0e5c0041a04739ede36", [:mix], [{:poolboy, "~> 1.5", [hex: :poolboy, repo: "hexpm", optional: false]}], "hexpm", "1431a30e1f9c816e0fc58d2587de2d5f4c709b74bf81be77515dc902e35bb3a7"}, + "hammer": {:hex, :hammer, "6.2.1", "5ae9c33e3dceaeb42de0db46bf505bd9c35f259c8defb03390cd7556fea67ee2", [:mix], [{:poolboy, "~> 1.5", [hex: :poolboy, repo: "hexpm", optional: false]}], "hexpm", "b9476d0c13883d2dc0cc72e786bac6ac28911fba7cc2e04b70ce6a6d9c4b2bdc"}, "haversine": {:hex, :haversine, "0.1.0", "14240e90dae07c9459f538d12a811492f655d95fc68f999403503b4f6c4ec522", [:mix], [], "hexpm", "54dc48e895bc18a59437a37026c873634e17b648a64cb87bfafb96f64d607060"}, "hpax": {:hex, :hpax, "0.1.2", "09a75600d9d8bbd064cdd741f21fc06fc1f4cf3d0fcc335e5aa19be1a7235c84", [:mix], [], "hexpm", "2c87843d5a23f5f16748ebe77969880e29809580efdaccd615cd3bed628a8c13"}, "html_entities": {:hex, :html_entities, "0.5.2", "9e47e70598da7de2a9ff6af8758399251db6dbb7eebe2b013f2bbd2515895c3c", [:mix], [], "hexpm", "c53ba390403485615623b9531e97696f076ed415e8d8058b1dbaa28181f4fdcc"}, @@ -85,7 +85,7 @@ "linkify": {:hex, :linkify, "0.5.3", "5f8143d8f61f5ff08d3aeeff47ef6509492b4948d8f08007fbf66e4d2246a7f2", [:mix], [], "hexpm", "3ef35a1377d47c25506e07c1c005ea9d38d700699d92ee92825f024434258177"}, "makeup": {:hex, :makeup, "1.1.1", "fa0bc768698053b2b3869fa8a62616501ff9d11a562f3ce39580d60860c3a55e", [:mix], [{:nimble_parsec, "~> 1.2.2 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "5dc62fbdd0de44de194898b6710692490be74baa02d9d108bc29f007783b0b48"}, "makeup_elixir": {:hex, :makeup_elixir, "0.16.1", "cc9e3ca312f1cfeccc572b37a09980287e243648108384b97ff2b76e505c3555", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "e127a341ad1b209bd80f7bd1620a15693a9908ed780c3b763bccf7d200c767c6"}, - "makeup_erlang": {:hex, :makeup_erlang, "0.1.4", "29563475afa9b8a2add1b7a9c8fb68d06ca7737648f28398e04461f008b69521", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "f4ed47ecda66de70dd817698a703f8816daa91272e7e45812469498614ae8b29"}, + "makeup_erlang": {:hex, :makeup_erlang, "0.1.5", "e0ff5a7c708dda34311f7522a8758e23bfcd7d8d8068dc312b5eb41c6fd76eba", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "94d2e986428585a21516d7d7149781480013c56e30c6a233534bedf38867a59a"}, "meck": {:hex, :meck, "0.9.2", "85ccbab053f1db86c7ca240e9fc718170ee5bda03810a6292b5306bf31bae5f5", [:rebar3], [], "hexpm", "81344f561357dc40a8344afa53767c32669153355b626ea9fcbc8da6b3045826"}, "metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], [], "hexpm", "69b09adddc4f74a40716ae54d140f93beb0fb8978d8636eaded0c31b6f099f16"}, "mime": {:hex, :mime, "2.0.5", "dc34c8efd439abe6ae0343edbb8556f4d63f178594894720607772a041b04b02", [:mix], [], "hexpm", "da0d64a365c45bc9935cc5c8a7fc5e49a0e0f9932a761c55d6c52b142780a05c"}, @@ -101,14 +101,14 @@ "nimble_pool": {:hex, :nimble_pool, "0.2.6", "91f2f4c357da4c4a0a548286c84a3a28004f68f05609b4534526871a22053cde", [:mix], [], "hexpm", "1c715055095d3f2705c4e236c18b618420a35490da94149ff8b580a2144f653f"}, "oauth2": {:hex, :oauth2, "2.1.0", "beb657f393814a3a7a8a15bd5e5776ecae341fd344df425342a3b6f1904c2989", [:mix], [{:tesla, "~> 1.5", [hex: :tesla, repo: "hexpm", optional: false]}], "hexpm", "8ac07f85b3307dd1acfeb0ec852f64161b22f57d0ce0c15e616a1dfc8ebe2b41"}, "oauther": {:hex, :oauther, "1.3.0", "82b399607f0ca9d01c640438b34d74ebd9e4acd716508f868e864537ecdb1f76", [:mix], [], "hexpm", "78eb888ea875c72ca27b0864a6f550bc6ee84f2eeca37b093d3d833fbcaec04e"}, - "oban": {:hex, :oban, "2.17.3", "ddfd5710aadcd550d2e174c8d73ce5f1865601418cf54a91775f20443fb832b7", [:mix], [{:ecto_sql, "~> 3.6", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:ecto_sqlite3, "~> 0.9", [hex: :ecto_sqlite3, repo: "hexpm", optional: true]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.16", [hex: :postgrex, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "452eada8bfe0d0fefd0740ab5fa8cf3ef6c375df0b4a3c3805d179022a04738a"}, + "oban": {:hex, :oban, "2.17.5", "3d1bf04ac701ad3c0241eb1f2eb94ea6b8f2f2a3f99ea828847377d2dd256cfe", [:mix], [{:ecto_sql, "~> 3.10", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:ecto_sqlite3, "~> 0.9", [hex: :ecto_sqlite3, repo: "hexpm", optional: true]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.16", [hex: :postgrex, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "fd3ccbbfdbb2bc77107c8790946f9821a831ed0720688485ee6adcd7863886cf"}, "paasaa": {:hex, :paasaa, "0.6.0", "07c8ed81010caa25db351d474f0c053072c809821c60f9646f7b1547bec52f6d", [:mix], [], "hexpm", "732ddfc21bac0831edb26aec468af3ec2b8997d74f6209810b1cc53199c29f2e"}, "parse_trans": {:hex, :parse_trans, "3.4.1", "6e6aa8167cb44cc8f39441d05193be6e6f4e7c2946cb2759f015f8c56b76e5ff", [:rebar3], [], "hexpm", "620a406ce75dada827b82e453c19cf06776be266f5a67cff34e1ef2cbb60e49a"}, "phoenix": {:hex, :phoenix, "1.7.11", "1d88fc6b05ab0c735b250932c4e6e33bfa1c186f76dcf623d8dd52f07d6379c7", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.7", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:websock_adapter, "~> 0.5.3", [hex: :websock_adapter, repo: "hexpm", optional: false]}], "hexpm", "b1ec57f2e40316b306708fe59b92a16b9f6f4bf50ccfa41aa8c7feb79e0ec02a"}, "phoenix_ecto": {:hex, :phoenix_ecto, "4.4.3", "86e9878f833829c3f66da03d75254c155d91d72a201eb56ae83482328dc7ca93", [:mix], [{:ecto, "~> 3.5", [hex: :ecto, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.14.2 or ~> 3.0 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "d36c401206f3011fefd63d04e8ef626ec8791975d9d107f9a0817d426f61ac07"}, "phoenix_html": {:hex, :phoenix_html, "3.3.3", "380b8fb45912b5638d2f1d925a3771b4516b9a78587249cabe394e0a5d579dc9", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "923ebe6fec6e2e3b3e569dfbdc6560de932cd54b000ada0208b5f45024bdd76c"}, "phoenix_live_reload": {:hex, :phoenix_live_reload, "1.4.1", "2aff698f5e47369decde4357ba91fc9c37c6487a512b41732818f2204a8ef1d3", [:mix], [{:file_system, "~> 0.2.1 or ~> 0.3", [hex: :file_system, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.4", [hex: :phoenix, repo: "hexpm", optional: false]}], "hexpm", "9bffb834e7ddf08467fe54ae58b5785507aaba6255568ae22b4d46e2bb3615ab"}, - "phoenix_live_view": {:hex, :phoenix_live_view, "0.20.5", "6207acfdc6a824327d8d55c59b9c3398c0ddeac8935501ac0686921ad30482f3", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6.15 or ~> 1.7.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.3 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.15", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "2c4d28e91f531a48e24a0ae2b24aad3d56ad122ddd424d2e220070dd9930f0c4"}, + "phoenix_live_view": {:hex, :phoenix_live_view, "0.20.10", "a790858cf9b63815bb93d1748e26c73f0c7f09f20873562f4f307dd52b0ca32f", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6.15 or ~> 1.7.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.3 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.15", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "daa17b3fbdfd6347aaade4db01a5dd24d23af0f4344e2e24934e8adfb4a11607"}, "phoenix_pubsub": {:hex, :phoenix_pubsub, "2.1.3", "3168d78ba41835aecad272d5e8cd51aa87a7ac9eb836eabc42f6e57538e3731d", [:mix], [], "hexpm", "bba06bc1dcfd8cb086759f0edc94a8ba2bc8896d5331a1e2c2902bf8e36ee502"}, "phoenix_swoosh": {:hex, :phoenix_swoosh, "1.2.1", "b74ccaa8046fbc388a62134360ee7d9742d5a8ae74063f34eb050279de7a99e1", [:mix], [{:finch, "~> 0.8", [hex: :finch, repo: "hexpm", optional: true]}, {:hackney, "~> 1.10", [hex: :hackney, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6", [hex: :phoenix, repo: "hexpm", optional: true]}, {:phoenix_html, "~> 3.0 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_view, "~> 1.0 or ~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: false]}, {:swoosh, "~> 1.5", [hex: :swoosh, repo: "hexpm", optional: false]}], "hexpm", "4000eeba3f9d7d1a6bf56d2bd56733d5cadf41a7f0d8ffe5bb67e7d667e204a2"}, "phoenix_template": {:hex, :phoenix_template, "1.0.4", "e2092c132f3b5e5b2d49c96695342eb36d0ed514c5b252a77048d5969330d639", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}], "hexpm", "2c0c81f0e5c6753faf5cca2f229c9709919aba34fab866d3bc05060c9c444206"}, @@ -132,15 +132,15 @@ "ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.7", "354c321cf377240c7b8716899e182ce4890c5938111a1296add3ec74cf1715df", [:make, :mix, :rebar3], [], "hexpm", "fe4c190e8f37401d30167c8c405eda19469f34577987c76dde613e838bbc67f8"}, "struct_access": {:hex, :struct_access, "1.1.2", "a42e6ceedd9b9ea090ee94a6da089d56e16f374dbbc010c3eebdf8be17df286f", [:mix], [], "hexpm", "e4c411dcc0226081b95709909551fc92b8feb1a3476108348ea7e3f6c12e586a"}, "sweet_xml": {:hex, :sweet_xml, "0.7.4", "a8b7e1ce7ecd775c7e8a65d501bc2cd933bff3a9c41ab763f5105688ef485d08", [:mix], [], "hexpm", "e7c4b0bdbf460c928234951def54fe87edf1a170f6896675443279e2dbeba167"}, - "swoosh": {:hex, :swoosh, "1.15.2", "490ea85a98e8fb5178c07039e0d8519839e38127724a58947a668c00db7574ee", [:mix], [{:bandit, ">= 1.0.0", [hex: :bandit, repo: "hexpm", optional: true]}, {:cowboy, "~> 1.1 or ~> 2.4", [hex: :cowboy, repo: "hexpm", optional: true]}, {:ex_aws, "~> 2.1", [hex: :ex_aws, repo: "hexpm", optional: true]}, {:finch, "~> 0.6", [hex: :finch, repo: "hexpm", optional: true]}, {:gen_smtp, "~> 0.13 or ~> 1.0", [hex: :gen_smtp, repo: "hexpm", optional: true]}, {:hackney, "~> 1.9", [hex: :hackney, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mail, "~> 0.2", [hex: :mail, repo: "hexpm", optional: true]}, {:mime, "~> 1.1 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: true]}, {:plug_cowboy, ">= 1.0.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:req, "~> 0.4 or ~> 1.0", [hex: :req, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "9f7739c02f6c7c0ca82ee397f3bfe0465dbe4c8a65372ac2a5584bf147dd5831"}, + "swoosh": {:hex, :swoosh, "1.15.3", "5c3f05b6e4e08cd4f75ad7e90db3c2b73c9d9de00503cce36a694951c2d69185", [:mix], [{:bandit, ">= 1.0.0", [hex: :bandit, repo: "hexpm", optional: true]}, {:cowboy, "~> 1.1 or ~> 2.4", [hex: :cowboy, repo: "hexpm", optional: true]}, {:ex_aws, "~> 2.1", [hex: :ex_aws, repo: "hexpm", optional: true]}, {:finch, "~> 0.6", [hex: :finch, repo: "hexpm", optional: true]}, {:gen_smtp, "~> 0.13 or ~> 1.0", [hex: :gen_smtp, repo: "hexpm", optional: true]}, {:hackney, "~> 1.9", [hex: :hackney, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mail, "~> 0.2", [hex: :mail, repo: "hexpm", optional: true]}, {:mime, "~> 1.1 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: true]}, {:plug_cowboy, ">= 1.0.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:req, "~> 0.4 or ~> 1.0", [hex: :req, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "97a667b96ca8cc48a4679f6cd1f40a36d8701cf052587298473614caa70f164a"}, "telemetry": {:hex, :telemetry, "1.2.1", "68fdfe8d8f05a8428483a97d7aab2f268aaff24b49e0f599faa091f1d4e7f61c", [:rebar3], [], "hexpm", "dad9ce9d8effc621708f99eac538ef1cbe05d6a874dd741de2e689c47feafed5"}, "tesla": {:hex, :tesla, "1.8.0", "d511a4f5c5e42538d97eef7c40ec4f3e44effdc5068206f42ed859e09e51d1fd", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:exjsx, ">= 3.0.0", [hex: :exjsx, repo: "hexpm", optional: true]}, {:finch, "~> 0.13", [hex: :finch, repo: "hexpm", optional: true]}, {:fuse, "~> 2.4", [hex: :fuse, repo: "hexpm", optional: true]}, {:gun, ">= 1.0.0", [hex: :gun, repo: "hexpm", optional: true]}, {:hackney, "~> 1.6", [hex: :hackney, repo: "hexpm", optional: true]}, {:ibrowse, "4.4.2", [hex: :ibrowse, repo: "hexpm", optional: true]}, {:jason, ">= 1.0.0", [hex: :jason, repo: "hexpm", optional: true]}, {:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mint, "~> 1.0", [hex: :mint, repo: "hexpm", optional: true]}, {:msgpax, "~> 2.3", [hex: :msgpax, repo: "hexpm", optional: true]}, {:poison, ">= 1.0.0", [hex: :poison, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm", "10501f360cd926a309501287470372af1a6e1cbed0f43949203a4c13300bc79f"}, - "thousand_island": {:hex, :thousand_island, "1.3.2", "bc27f9afba6e1a676dd36507d42e429935a142cf5ee69b8e3f90bff1383943cd", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "0e085b93012cd1057b378fce40cbfbf381ff6d957a382bfdd5eca1a98eec2535"}, + "thousand_island": {:hex, :thousand_island, "1.3.5", "6022b6338f1635b3d32406ff98d68b843ba73b3aa95cfc27154223244f3a6ca5", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "2be6954916fdfe4756af3239fb6b6d75d0b8063b5df03ba76fd8a4c87849e180"}, "timex": {:hex, :timex, "3.7.11", "bb95cb4eb1d06e27346325de506bcc6c30f9c6dea40d1ebe390b262fad1862d1", [:mix], [{:combine, "~> 0.10", [hex: :combine, repo: "hexpm", optional: false]}, {:gettext, "~> 0.20", [hex: :gettext, repo: "hexpm", optional: false]}, {:tzdata, "~> 1.1", [hex: :tzdata, repo: "hexpm", optional: false]}], "hexpm", "8b9024f7efbabaf9bd7aa04f65cf8dcd7c9818ca5737677c7b76acbc6a94d1aa"}, "tls_certificate_check": {:hex, :tls_certificate_check, "1.21.0", "042ab2c0c860652bc5cf69c94e3a31f96676d14682e22ec7813bd173ceff1788", [:rebar3], [{:ssl_verify_fun, "~> 1.1", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}], "hexpm", "6cee6cffc35a390840d48d463541d50746a7b0e421acaadb833cfc7961e490e7"}, "tz_world": {:hex, :tz_world, "1.3.2", "15d331ad1ff22735dfcc8c98bfc7b2a9fdc17f1f071e31e21cdafe2d9318a300", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:certifi, "~> 2.5", [hex: :certifi, repo: "hexpm", optional: true]}, {:geo, "~> 1.0 or ~> 2.0 or ~> 3.3", [hex: :geo, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "d1a345e07b3378c4c902ad54fbd5d54c8c3dd55dba883b7407fe57bcec45ff2a"}, "tzdata": {:hex, :tzdata, "1.1.1", "20c8043476dfda8504952d00adac41c6eda23912278add38edc140ae0c5bcc46", [:mix], [{:hackney, "~> 1.17", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "a69cec8352eafcd2e198dea28a34113b60fdc6cb57eb5ad65c10292a6ba89787"}, - "ueberauth": {:hex, :ueberauth, "0.10.7", "5a31cbe11e7ce5c7484d745dc9e1f11948e89662f8510d03c616de03df581ebd", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "0bccf73e2ffd6337971340832947ba232877aa8122dba4c95be9f729c8987377"}, + "ueberauth": {:hex, :ueberauth, "0.10.8", "ba78fbcbb27d811a6cd06ad851793aaf7d27c3b30c9e95349c2c362b344cd8f0", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "f2d3172e52821375bccb8460e5fa5cb91cfd60b19b636b6e57e9759b6f8c10c1"}, "ueberauth_cas": {:hex, :ueberauth_cas, "2.3.1", "df45a1f2c5df8bc80191cbca4baeeed808d697702ec5ebe5bd5d5a264481752f", [:mix], [{:httpoison, "~> 1.8", [hex: :httpoison, repo: "hexpm", optional: false]}, {:sweet_xml, "~> 0.7", [hex: :sweet_xml, repo: "hexpm", optional: false]}, {:ueberauth, "~> 0.6", [hex: :ueberauth, repo: "hexpm", optional: false]}], "hexpm", "5068ae2b9e217c2f05aa9a67483a6531e21ba0be9a6f6c8749bb7fd1599be321"}, "ueberauth_discord": {:hex, :ueberauth_discord, "0.7.0", "463f6dfe1ed10a76739331ce8e1dd3600ab611f10524dd828eb3aa50e76e9d43", [:mix], [{:oauth2, "~> 1.0 or ~> 2.0", [hex: :oauth2, repo: "hexpm", optional: false]}, {:ueberauth, "~> 0.7", [hex: :ueberauth, repo: "hexpm", optional: false]}], "hexpm", "d6f98ef91abb4ddceada4b7acba470e0e68c4d2de9735ff2f24172a8e19896b4"}, "ueberauth_facebook": {:hex, :ueberauth_facebook, "0.10.0", "0d607fbd1b7c6e0449981571027d869c2d156b8ad20c42e3672346678c05ccf1", [:mix], [{:oauth2, "~> 1.0 or ~> 2.0", [hex: :oauth2, repo: "hexpm", optional: false]}, {:ueberauth, "~> 0.7", [hex: :ueberauth, repo: "hexpm", optional: false]}], "hexpm", "bf8ce5d66b1c50da8abff77e8086c1b710bdde63f4acaef19a651ba43a9537a8"}, diff --git a/package-lock.json b/package-lock.json index 0fe0b5dc6..fe2562419 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,13 @@ { "name": "mobilizon", - "version": "4.1.0-alpha.1", + "version": "5.0.0-beta.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "mobilizon", - "version": "4.1.0-alpha.1", + "version": "4.1.0", + "hasInstallScript": true, "dependencies": { "@apollo/client": "^3.9.5", "@framasoft/socket": "^1.0.0", @@ -77,7 +78,7 @@ "tailwindcss": "^3", "tippy.js": "^6.2.3", "unfetch": "^5.0.0", - "vue": "3.4.16", + "vue": "^3.4.20", "vue-i18n": "9", "vue-material-design-icons": "^5.1.2", "vue-matomo": "^4.1.0", @@ -124,8 +125,8 @@ "sass": "^1.34.1", "typescript": "~5.3.2", "vite": "^5.0.12", - "vite-plugin-pwa": "^0.17.0", "vite-svg-loader": "^4.0.0", + "vite-plugin-pwa": "^0.19.0", "vitest": "^1.2.2", "vue-i18n-extract": "^2.0.4", "vue-router-mock": "^1.0.0" @@ -309,9 +310,9 @@ } }, "node_modules/@babel/core": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz", - "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz", + "integrity": "sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", @@ -319,11 +320,11 @@ "@babel/generator": "^7.23.6", "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.9", - "@babel/parser": "^7.23.9", - "@babel/template": "^7.23.9", - "@babel/traverse": "^7.23.9", - "@babel/types": "^7.23.9", + "@babel/helpers": "^7.24.0", + "@babel/parser": "^7.24.0", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.0", + "@babel/types": "^7.24.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -433,9 +434,9 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.23.10", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.10.tgz", - "integrity": "sha512-2XpP2XhkXzgxecPNEEK8Vz8Asj9aRxt08oKOqtiZoqV2UGZ5T+EkyP9sXQ9nwMxBIG34a7jmasVqoMop7VdPUw==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.0.tgz", + "integrity": "sha512-QAH+vfvts51BCsNZ2PhY6HAggnlS6omLLFTsIpeqZk/MmJ6cW7tgz5yRv0fMJThcr6FmbMrENh1RgrWPTYA76g==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", @@ -596,9 +597,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz", + "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==", "dev": true, "engines": { "node": ">=6.9.0" @@ -716,14 +717,14 @@ } }, "node_modules/@babel/helpers": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.9.tgz", - "integrity": "sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.0.tgz", + "integrity": "sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==", "dev": true, "dependencies": { - "@babel/template": "^7.23.9", - "@babel/traverse": "^7.23.9", - "@babel/types": "^7.23.9" + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.0", + "@babel/types": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -815,9 +816,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", - "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz", + "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==", "bin": { "parser": "bin/babel-parser.js" }, @@ -1600,14 +1601,14 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz", - "integrity": "sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.0.tgz", + "integrity": "sha512-y/yKMm7buHpFFXfxVFS4Vk1ToRJDilIa6fKRioB9Vjichv58TDGXTvqV0dN7plobAmTW5eSEGXDngE+Mm+uO+w==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.23.3", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/compat-data": "^7.23.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-transform-parameters": "^7.23.3" }, @@ -1902,14 +1903,14 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.9.tgz", - "integrity": "sha512-3kBGTNBBk9DQiPoXYS0g0BYlwTQYUTifqgKTjxUwEUkduRT2QOa0FPGBJ+NROQhGyYO5BuTJwGvBnqKDykac6A==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.0.tgz", + "integrity": "sha512-ZxPEzV9IgvGn73iK0E6VB9/95Nd7aMFpbE0l8KQFDG70cOV9IxRP7Y2FUPmlK0v6ImlLqYX50iuZ3ZTVhOF2lA==", "dev": true, "dependencies": { "@babel/compat-data": "^7.23.5", "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-validator-option": "^7.23.5", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", @@ -1962,7 +1963,7 @@ "@babel/plugin-transform-new-target": "^7.23.3", "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", "@babel/plugin-transform-numeric-separator": "^7.23.4", - "@babel/plugin-transform-object-rest-spread": "^7.23.4", + "@babel/plugin-transform-object-rest-spread": "^7.24.0", "@babel/plugin-transform-object-super": "^7.23.3", "@babel/plugin-transform-optional-catch-binding": "^7.23.4", "@babel/plugin-transform-optional-chaining": "^7.23.4", @@ -2025,9 +2026,9 @@ "dev": true }, "node_modules/@babel/runtime": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz", - "integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.0.tgz", + "integrity": "sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -2036,23 +2037,23 @@ } }, "node_modules/@babel/template": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz", - "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", "dev": true, "dependencies": { "@babel/code-frame": "^7.23.5", - "@babel/parser": "^7.23.9", - "@babel/types": "^7.23.9" + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.9.tgz", - "integrity": "sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.0.tgz", + "integrity": "sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==", "dev": true, "dependencies": { "@babel/code-frame": "^7.23.5", @@ -2061,8 +2062,8 @@ "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.9", - "@babel/types": "^7.23.9", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -2080,9 +2081,9 @@ } }, "node_modules/@babel/types": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz", - "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", + "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.23.4", @@ -2147,9 +2148,9 @@ } }, "node_modules/@codemirror/state": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.4.0.tgz", - "integrity": "sha512-hm8XshYj5Fo30Bb922QX9hXB/bxOAVH+qaqHBzw5TKa72vOeslyGwd4X8M0c1dJ9JqxlaMceOQ8RsL9tC7gU0A==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.4.1.tgz", + "integrity": "sha512-QkEyUiLhsJoZkbumGZlswmAhA7CBU02Wrz7zvH4SrcifbsqwlXShVXg65f3v/ts57W3dqyamEriMhij1Z3Zz4A==", "dev": true }, "node_modules/@codemirror/theme-one-dark": { @@ -2165,9 +2166,9 @@ } }, "node_modules/@codemirror/view": { - "version": "6.24.0", - "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.24.0.tgz", - "integrity": "sha512-zK6m5pNkdhdJl8idPP1gA4N8JKTiSsOz8U/Iw+C1ChMwyLG7+MLiNXnH/wFuAk6KeGEe33/adOiAh5jMqee03w==", + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.24.1.tgz", + "integrity": "sha512-sBfP4rniPBRQzNakwuQEqjEuiJDWJyF2kqLLqij4WXRoVwPPJfjx966Eq3F7+OPQxDtMt/Q9MWLoZLWjeveBlg==", "dev": true, "dependencies": { "@codemirror/state": "^6.4.0", @@ -2613,9 +2614,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", - "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2745,9 +2746,9 @@ } }, "node_modules/@histoire/plugin-vue": { - "version": "0.17.11", - "resolved": "https://registry.npmjs.org/@histoire/plugin-vue/-/plugin-vue-0.17.11.tgz", - "integrity": "sha512-6QPs1imD2NLfsQAjJN32P60IUI0yRyswVB7c+D8JMvVeHQoot2dB7YoCSyuTRq02p1goqHS8pwlqmOYKm3obfQ==", + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@histoire/plugin-vue/-/plugin-vue-0.17.12.tgz", + "integrity": "sha512-mpx2uwHq/qemnX+ARQtDR3M9kIt1y4kBCmzBkOquhJTp61mtHMu4hZKSzzQpQWA2QxEyuuwpaNiU7Mlms13EaQ==", "dev": true, "dependencies": { "@histoire/controls": "^0.17.9", @@ -2945,9 +2946,9 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.4.tgz", + "integrity": "sha512-Oud2QPM5dHviZNn4y/WhhYKSXksv+1xLEIsNrAbGcFzUN3ubqWRFT5gwPchNc5NuzILOU4tPBDTZ4VwhL8Y7cw==", "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -2958,17 +2959,17 @@ } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "engines": { "node": ">=6.0.0" } @@ -2989,9 +2990,9 @@ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.22", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz", - "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==", + "version": "0.3.23", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.23.tgz", + "integrity": "sha512-9/4foRoUKp8s96tSkh8DlAAc5A0Ty8vLXld+l9gjKKY6ckwI8G15f0hskGmuLZu78ZlGa1vtsfOa+lnB4vG6Jg==", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -3138,9 +3139,9 @@ "dev": true }, "node_modules/@oruga-ui/oruga-next": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/@oruga-ui/oruga-next/-/oruga-next-0.8.3.tgz", - "integrity": "sha512-TH0SIGc45ADm7nA2SogWuCw3rRq8beRGTkDy55REeeM6mWAWlo7xKv0XZBhlW293CAXJiN1UFNjRnG3KgCr7EQ==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@oruga-ui/oruga-next/-/oruga-next-0.8.5.tgz", + "integrity": "sha512-HnODRTrurmke7O5rRNdrbqYuNIdMrnBJ+P3jh6J7/Lk/zgMnpsObSGj/6JfQRvdf5Wq++Ch5yVUys0V4Lm08JQ==", "peerDependencies": { "vue": "^3.0.0" } @@ -3172,12 +3173,12 @@ } }, "node_modules/@playwright/test": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.41.2.tgz", - "integrity": "sha512-qQB9h7KbibJzrDpkXkYvsmiDJK14FULCCZgEcoe2AvFAS64oCirWTwzTlAYEbKaRxWs5TFesE1Na6izMv3HfGg==", + "version": "1.42.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.42.0.tgz", + "integrity": "sha512-2k1HzC28Fs+HiwbJOQDUwrWMttqSLUVdjCqitBOjdCD0svWOMQUVqrXX6iFD7POps6xXAojsX/dGBpKnjZctLA==", "dev": true, "dependencies": { - "playwright": "1.41.2" + "playwright": "1.42.0" }, "bin": { "playwright": "cli.js" @@ -3259,9 +3260,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.6.tgz", - "integrity": "sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.12.0.tgz", + "integrity": "sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w==", "cpu": [ "arm" ], @@ -3272,9 +3273,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.6.tgz", - "integrity": "sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.12.0.tgz", + "integrity": "sha512-OBqcX2BMe6nvjQ0Nyp7cC90cnumt8PXmO7Dp3gfAju/6YwG0Tj74z1vKrfRz7qAv23nBcYM8BCbhrsWqO7PzQQ==", "cpu": [ "arm64" ], @@ -3285,9 +3286,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.6.tgz", - "integrity": "sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.12.0.tgz", + "integrity": "sha512-X64tZd8dRE/QTrBIEs63kaOBG0b5GVEd3ccoLtyf6IdXtHdh8h+I56C2yC3PtC9Ucnv0CpNFJLqKFVgCYe0lOQ==", "cpu": [ "arm64" ], @@ -3298,9 +3299,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.6.tgz", - "integrity": "sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.12.0.tgz", + "integrity": "sha512-cc71KUZoVbUJmGP2cOuiZ9HSOP14AzBAThn3OU+9LcA1+IUqswJyR1cAJj3Mg55HbjZP6OLAIscbQsQLrpgTOg==", "cpu": [ "x64" ], @@ -3311,9 +3312,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.6.tgz", - "integrity": "sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.12.0.tgz", + "integrity": "sha512-a6w/Y3hyyO6GlpKL2xJ4IOh/7d+APaqLYdMf86xnczU3nurFTaVN9s9jOXQg97BE4nYm/7Ga51rjec5nfRdrvA==", "cpu": [ "arm" ], @@ -3324,9 +3325,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.6.tgz", - "integrity": "sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.12.0.tgz", + "integrity": "sha512-0fZBq27b+D7Ar5CQMofVN8sggOVhEtzFUwOwPppQt0k+VR+7UHMZZY4y+64WJ06XOhBTKXtQB/Sv0NwQMXyNAA==", "cpu": [ "arm64" ], @@ -3337,9 +3338,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.6.tgz", - "integrity": "sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.12.0.tgz", + "integrity": "sha512-eTvzUS3hhhlgeAv6bfigekzWZjaEX9xP9HhxB0Dvrdbkk5w/b+1Sxct2ZuDxNJKzsRStSq1EaEkVSEe7A7ipgQ==", "cpu": [ "arm64" ], @@ -3350,9 +3351,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.6.tgz", - "integrity": "sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.12.0.tgz", + "integrity": "sha512-ix+qAB9qmrCRiaO71VFfY8rkiAZJL8zQRXveS27HS+pKdjwUfEhqo2+YF2oI+H/22Xsiski+qqwIBxVewLK7sw==", "cpu": [ "riscv64" ], @@ -3363,9 +3364,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.6.tgz", - "integrity": "sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.12.0.tgz", + "integrity": "sha512-TenQhZVOtw/3qKOPa7d+QgkeM6xY0LtwzR8OplmyL5LrgTWIXpTQg2Q2ycBf8jm+SFW2Wt/DTn1gf7nFp3ssVA==", "cpu": [ "x64" ], @@ -3376,9 +3377,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.6.tgz", - "integrity": "sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.12.0.tgz", + "integrity": "sha512-LfFdRhNnW0zdMvdCb5FNuWlls2WbbSridJvxOvYWgSBOYZtgBfW9UGNJG//rwMqTX1xQE9BAodvMH9tAusKDUw==", "cpu": [ "x64" ], @@ -3389,9 +3390,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.6.tgz", - "integrity": "sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.12.0.tgz", + "integrity": "sha512-JPDxovheWNp6d7AHCgsUlkuCKvtu3RB55iNEkaQcf0ttsDU/JZF+iQnYcQJSk/7PtT4mjjVG8N1kpwnI9SLYaw==", "cpu": [ "arm64" ], @@ -3402,9 +3403,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.6.tgz", - "integrity": "sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.12.0.tgz", + "integrity": "sha512-fjtuvMWRGJn1oZacG8IPnzIV6GF2/XG+h71FKn76OYFqySXInJtseAqdprVTDTyqPxQOG9Exak5/E9Z3+EJ8ZA==", "cpu": [ "ia32" ], @@ -3415,9 +3416,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.6.tgz", - "integrity": "sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.12.0.tgz", + "integrity": "sha512-ZYmr5mS2wd4Dew/JjT0Fqi2NPB/ZhZ2VvPp7SmvPZb4Y1CG/LRcS6tcRo2cYU7zLK5A7cdbhWnnWmUjoI4qapg==", "cpu": [ "x64" ], @@ -3434,127 +3435,127 @@ "dev": true }, "node_modules/@sentry-internal/feedback": { - "version": "7.100.1", - "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.100.1.tgz", - "integrity": "sha512-yqcRVnjf+qS+tC4NxOKLJOaSJ+csHmh/dHUzvCTkf5rLsplwXYRnny2r0tqGTQ4tuXMxwgSMKPYwicg81P+xuw==", + "version": "7.103.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.103.0.tgz", + "integrity": "sha512-2nYoCfP7FpiUR+xxO5y5BL2ajHrhM4fL7HSup6QKNn7gI7vLyllYOOuYFNHhSmsXCD0i00U8DBClGLcn+6DQqw==", "dependencies": { - "@sentry/core": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1" + "@sentry/core": "7.103.0", + "@sentry/types": "7.103.0", + "@sentry/utils": "7.103.0" }, "engines": { "node": ">=12" } }, "node_modules/@sentry-internal/replay-canvas": { - "version": "7.100.1", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-7.100.1.tgz", - "integrity": "sha512-TnqxqJGhbFhhYRhTG2WLFer+lVieV7mNGeIxFBiw1L4kuj8KGl+C0sknssKyZSRVJFSahhHIosHJGRMkkD//7g==", + "version": "7.103.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-7.103.0.tgz", + "integrity": "sha512-EyDRMdlSqtwY8zGFhOWwl+nwwo98hlhJz+bpF5PQ6VmFpbplh6Wqfx2p+cPXQr40TGMMC4+vPFlSWTOMjcO9zQ==", "dependencies": { - "@sentry/core": "7.100.1", - "@sentry/replay": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1" + "@sentry/core": "7.103.0", + "@sentry/replay": "7.103.0", + "@sentry/types": "7.103.0", + "@sentry/utils": "7.103.0" }, "engines": { "node": ">=12" } }, "node_modules/@sentry-internal/tracing": { - "version": "7.100.1", - "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.100.1.tgz", - "integrity": "sha512-+u9RRf5eL3StiyiRyAHZmdkAR7GTSGx4Mt4Lmi5NEtCcWlTGZ1QgW2r8ZbhouVmTiJkjhQgYCyej3cojtazeJg==", + "version": "7.103.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.103.0.tgz", + "integrity": "sha512-sZ/Wao8HOvGaBs7WlOdflMpHGAFkOBWL6hBiirHaOy5d+IDm7n7et5U6zhvcfiyYBO4nY36gy1Tg5mw+aNO0Vw==", "dependencies": { - "@sentry/core": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1" + "@sentry/core": "7.103.0", + "@sentry/types": "7.103.0", + "@sentry/utils": "7.103.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/browser": { - "version": "7.100.1", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.100.1.tgz", - "integrity": "sha512-IxHQ08ixf0bmaWpe4yt1J4UUsOpg02fxax9z3tOQYXw5MSzz5pDXn8M8DFUVJB3wWuyXhHXTub9yD3VIP9fnoA==", + "version": "7.103.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.103.0.tgz", + "integrity": "sha512-lP3Oplnwo1lY8ltk8SWzQURbxnSfVhYA099mVs1T95sdwXS16Za6SX7Ld/9T506ZW/WyoU4VCq7eKtG2kPFhMQ==", "dependencies": { - "@sentry-internal/feedback": "7.100.1", - "@sentry-internal/replay-canvas": "7.100.1", - "@sentry-internal/tracing": "7.100.1", - "@sentry/core": "7.100.1", - "@sentry/replay": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1" + "@sentry-internal/feedback": "7.103.0", + "@sentry-internal/replay-canvas": "7.103.0", + "@sentry-internal/tracing": "7.103.0", + "@sentry/core": "7.103.0", + "@sentry/replay": "7.103.0", + "@sentry/types": "7.103.0", + "@sentry/utils": "7.103.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/core": { - "version": "7.100.1", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.100.1.tgz", - "integrity": "sha512-f+ItUge/o9AjlveQq0ZUbQauKlPH1FIJbC1TRaYLJ4KNfOdrsh8yZ29RmWv0cFJ/e+FGTr603gWpRPObF5rM8Q==", + "version": "7.103.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.103.0.tgz", + "integrity": "sha512-LCI+PIDoF/RLqN41fNXum3ilmS6ukni6L7t38vSdibbe2G0804EbPLtOIpv2PkS8E6CFuRW5zOb+8OwEAAtZWw==", "dependencies": { - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1" + "@sentry/types": "7.103.0", + "@sentry/utils": "7.103.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/replay": { - "version": "7.100.1", - "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.100.1.tgz", - "integrity": "sha512-B1NFjzGEFaqejxBRdUyEzH8ChXc2kfiqlA/W/Lg0aoWIl2/7nuMk+l4ld9gW5F5bIAXDTVd5vYltb1lWEbpr7w==", + "version": "7.103.0", + "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.103.0.tgz", + "integrity": "sha512-I37komyb+DruQG8lPPPOFxLLbOijNXeTxiWLsIn+KFZqRtKqxxQWdNnk56V4YSTpFzxnMEFMRCpXhncuTWu4LA==", "dependencies": { - "@sentry-internal/tracing": "7.100.1", - "@sentry/core": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1" + "@sentry-internal/tracing": "7.103.0", + "@sentry/core": "7.103.0", + "@sentry/types": "7.103.0", + "@sentry/utils": "7.103.0" }, "engines": { "node": ">=12" } }, "node_modules/@sentry/tracing": { - "version": "7.100.1", - "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.100.1.tgz", - "integrity": "sha512-cmm2yz0qvOcW0RPegCn88X5nwbJdLx3w+Wl8319Kzkivc200e2tXQiDNwJ8kQdUvFsJg7Jz3G+hfZoy3ejtH7Q==", + "version": "7.103.0", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.103.0.tgz", + "integrity": "sha512-wlL9XidxcjC1dWXj7KSdYMgPgK+ry4dYy+YoW9gqRL+FbS6BJebV73Tni+5zponzCW+LMWP/IgMIB9IZt0WWTQ==", "dependencies": { - "@sentry-internal/tracing": "7.100.1" + "@sentry-internal/tracing": "7.103.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/types": { - "version": "7.100.1", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.100.1.tgz", - "integrity": "sha512-fLM+LedHuKzOd8IhXBqaQuym+AA519MGjeczBa5kGakes/BbAsUMwsNfjsKQedp7Kh44RgYF99jwoRPK2oDrXw==", + "version": "7.103.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.103.0.tgz", + "integrity": "sha512-NCvKyx8d2AGBQKPARrJemZmZ16DiMo688OEikZg4BbvFNDUzK5Egm2BH0vfLDhbNkU19o3maJowrYo42m8r9Zw==", "engines": { "node": ">=8" } }, "node_modules/@sentry/utils": { - "version": "7.100.1", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.100.1.tgz", - "integrity": "sha512-Ve6dXr1o6xiBe3VCoJgiutmBKrugryI65EZAbYto5XI+t+PjiLLf9wXtEMF24ZrwImo4Lv3E9Uqza+fWkEbw6A==", + "version": "7.103.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.103.0.tgz", + "integrity": "sha512-phkUJt3F0UOkVq+M4GfdAh2ewI3ASrNiJddx9aO7GnT0aDwwVBHZltnqt95qgAB8W+BipTSt1dAh8yUbbq1Ceg==", "dependencies": { - "@sentry/types": "7.100.1" + "@sentry/types": "7.103.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/vue": { - "version": "7.100.1", - "resolved": "https://registry.npmjs.org/@sentry/vue/-/vue-7.100.1.tgz", - "integrity": "sha512-WtLAYmqad9aKp+/Rl6yEXTtnylj/WrPYNwE+EVO34AEP73w2EVeuwAu+o3TGRV7TvCLf4CQ3ZA3KZWCR7uGqIQ==", + "version": "7.103.0", + "resolved": "https://registry.npmjs.org/@sentry/vue/-/vue-7.103.0.tgz", + "integrity": "sha512-o5DlC+B6Yq39KY8SguyX2LWM+daPmjzv5teIx+Vj/MOXRb84gooEqgGvHTO/dlR7qhP89aSw7GRdnjyV+WO5WQ==", "dependencies": { - "@sentry/browser": "7.100.1", - "@sentry/core": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1" + "@sentry/browser": "7.103.0", + "@sentry/core": "7.103.0", + "@sentry/types": "7.103.0", + "@sentry/utils": "7.103.0" }, "engines": { "node": ">=8" @@ -3630,9 +3631,9 @@ } }, "node_modules/@tiptap/core": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.2.2.tgz", - "integrity": "sha512-fec26LtNgYFGhKzEA9+Of+qLKIKUxDL/XZQofoPcxP71NffcmpZ+ZjAx9NjnvuYtvylUSySZiPauY6WhN3aprw==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.2.4.tgz", + "integrity": "sha512-cRrI8IlLIhCE1hacBQzXIC8dsRvGq6a4lYWQK/BaHuZg21CG7szp3Vd8Ix+ra1f5v0xPOT+Hy+QFNQooRMKMCw==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3642,9 +3643,9 @@ } }, "node_modules/@tiptap/extension-blockquote": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-2.2.2.tgz", - "integrity": "sha512-ENCGx/yhNdUQ0epGOeTN4HFeUSfQDK2CQBy2szkQVtzG/Vhv8ExxBWTxHJcMoeSfEVmKag4B506vfRkKH24IMA==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-2.2.4.tgz", + "integrity": "sha512-FrfPnn0VgVrUwWLwja1afX99JGLp6PE9ThVcmri+tLwUZQvTTVcCvHoCdOakav3/nge1+aV4iE3tQdyq1tWI9Q==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3654,9 +3655,9 @@ } }, "node_modules/@tiptap/extension-bold": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-2.2.2.tgz", - "integrity": "sha512-8/KLpPHwO+GXlWsXEION7ppLfFIaSpnw5m2QYXz/LGRK32hzpTavbdXV3rx9+Vu+7Z+0yQF9G/ro1z9dqTQHpw==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-2.2.4.tgz", + "integrity": "sha512-v3tTLc8YESFZPOGj5ByFr8VbmQ/PTo49T1vsK50VubxIN/5r9cXlKH8kb3dZlZxCxJa3FrXNO/M8rdGBSWQvSg==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3666,9 +3667,9 @@ } }, "node_modules/@tiptap/extension-bubble-menu": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.2.2.tgz", - "integrity": "sha512-W3OvoHxgBdQSrlX8FXvIs5wA+eHXe/0jGsqQdwLXPtqZOSR4Ks9OLmxDk2+O8ci0KCLPb6/doJYg7j/8Ic4KRg==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.2.4.tgz", + "integrity": "sha512-Nx1fS9jcFlhxaTDYlnayz2UulhK6CMaePc36+7PQIVI+u20RhgTCRNr25zKNemvsiM0RPZZVUjlHkxC0l5as1Q==", "dependencies": { "tippy.js": "^6.3.7" }, @@ -3682,9 +3683,9 @@ } }, "node_modules/@tiptap/extension-bullet-list": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-2.2.2.tgz", - "integrity": "sha512-mZznxwymWitQRHYxEN8LX7theJdQ1/O6kUsvwDyHw42+jaCsZumTHEWGckBwkxk3BWWKbrkRGv/cC78sa3cNJw==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-2.2.4.tgz", + "integrity": "sha512-z/MPmW8bhRougMuorl6MAQBXeK4rhlP+jBWlNwT+CT8h5IkXqPnDbM1sZeagp2nYfVV6Yc4RWpzimqHHtGnYTA==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3694,9 +3695,9 @@ } }, "node_modules/@tiptap/extension-document": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-2.2.2.tgz", - "integrity": "sha512-eUhpYq8ErVAlxuTg5wslc96mniEQs+VN+tFmRrx9Q0n0nG/aDKUQFDgcSMpAMpHK7+h7tGc/rDq+ydpzZhFXlQ==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-2.2.4.tgz", + "integrity": "sha512-z+05xGK0OFoXV1GL+/8bzcZuWMdMA3+EKwk5c+iziG60VZcvGTF7jBRsZidlu9Oaj0cDwWHCeeo6L9SgSh6i2A==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3706,9 +3707,9 @@ } }, "node_modules/@tiptap/extension-dropcursor": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-2.2.2.tgz", - "integrity": "sha512-HxXEf6m+W3PnT63Ib49qAmcwmapZvmyWgq9cvB5kSfl/znQT04wBgShEigkgUBLqgcM/R/RI8NS1GQl1Zpv9iQ==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-2.2.4.tgz", + "integrity": "sha512-IHwkEKmqpqXyJi16h7871NrcIqeyN7I6XRE2qdqi+MhGigVWI8nWHoYbjRKa7K/1uhs5zeRYyDlq5EuZyL6mgA==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3719,9 +3720,9 @@ } }, "node_modules/@tiptap/extension-floating-menu": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@tiptap/extension-floating-menu/-/extension-floating-menu-2.2.2.tgz", - "integrity": "sha512-DRz9kzcPt7S8s22EQC+KS/ghnHRV6j7Qequ+0kLjfLYPdqj2u4G5xTrFM7sWfzUqf2HdH8SS8Yo9WFMYm69D9w==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@tiptap/extension-floating-menu/-/extension-floating-menu-2.2.4.tgz", + "integrity": "sha512-U25l7PEzOmlAPugNRl8t8lqyhQZS6W/+3f92+FdwW9qXju3i62iX/3OGCC3Gv+vybmQ4fbZmMjvl+VDfenNi3A==", "dependencies": { "tippy.js": "^6.3.7" }, @@ -3735,9 +3736,9 @@ } }, "node_modules/@tiptap/extension-gapcursor": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-2.2.2.tgz", - "integrity": "sha512-qsE8yI9nZOLHg6XdFwn4BYMhR2f/50gppHJdsHx53575y2ci6uowMI+WjdEentl6yR9ctgV1jelHLs9ShmPzwQ==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-2.2.4.tgz", + "integrity": "sha512-Y6htT/RDSqkQ1UwG2Ia+rNVRvxrKPOs3RbqKHPaWr3vbFWwhHyKhMCvi/FqfI3d5pViVHOZQ7jhb5hT/a0BmNw==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3748,9 +3749,9 @@ } }, "node_modules/@tiptap/extension-heading": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-2.2.2.tgz", - "integrity": "sha512-oCd8VsLnrqJFY+lgA+5I/2EjBa4mQzB5DFLzCI460PfZnQJ2DmaNUdpY38BpHUv8E2PbBXzxxWS9h88yycW6yw==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-2.2.4.tgz", + "integrity": "sha512-gkq7Ns2FcrOCRq7Q+VRYt5saMt2R9g4REAtWy/jEevJ5UV5vA2AiGnYDmxwAkHutoYU0sAUkjqx37wE0wpamNw==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3760,9 +3761,9 @@ } }, "node_modules/@tiptap/extension-history": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@tiptap/extension-history/-/extension-history-2.2.2.tgz", - "integrity": "sha512-hcCEh7mP5H38ZY3YtbyyUOTNfKWAvITkJhVqjKbrRI3E+FOlG3pWPH3wz4srW5bHK38oUsiKwyP9FqC3C2Mixg==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@tiptap/extension-history/-/extension-history-2.2.4.tgz", + "integrity": "sha512-FDM32XYF5NU4mzh+fJ8w2CyUqv0l2Nl15sd6fOhQkVxSj8t57z+DUXc9ZR3zkH+1RAagYJo/2Gu3e99KpMr0tg==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3773,9 +3774,9 @@ } }, "node_modules/@tiptap/extension-image": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@tiptap/extension-image/-/extension-image-2.2.2.tgz", - "integrity": "sha512-fqZ2VB3K/c/Mi/2QTfav6CmTe33yGRkeQEivllSCCxgDD+kNYGto/P9maHSIJSG3RZWZHYfIPHmUJKfUlJRTXQ==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@tiptap/extension-image/-/extension-image-2.2.4.tgz", + "integrity": "sha512-xOnqZpnP/fAfmK5AKmXplVQdXBtY5AoZ9B+qllH129aLABaDRzl3e14ZRHC8ahQawOmCe6AOCCXYUBXDOlY5Jg==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3785,9 +3786,9 @@ } }, "node_modules/@tiptap/extension-italic": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-2.2.2.tgz", - "integrity": "sha512-l9NZK4vYqYY9Y5UskLQpdbvi0sXG4I/MuhRxPdjitK8E3SVhZxMnoNwCTkq0+I1xBjCD/jSrDMV4FqkKesrl2w==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-2.2.4.tgz", + "integrity": "sha512-qIhGNvWnsQswSgEMRA8jQQjxfkOGNAuNWKEVQX9DPoqAUgknT41hQcAMP8L2+OdACpb2jbVMOO5Cy5Dof2L8/w==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3797,9 +3798,9 @@ } }, "node_modules/@tiptap/extension-link": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@tiptap/extension-link/-/extension-link-2.2.2.tgz", - "integrity": "sha512-hk2cxSWeFagv2erxVI4UUN9kTLqhTSLhtHKVNbKOW50dtkDqjzp9tri1+LYYpiObxDKoFFKfKjE6ojVtqMyn2w==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@tiptap/extension-link/-/extension-link-2.2.4.tgz", + "integrity": "sha512-Qsx0cFZm4dxbkToXs5TcXbSoUdicv8db1gV1DYIZdETqjBm4wFjlzCUP7hPHFlvNfeSy1BzAMRt+RpeuiwvxWQ==", "dependencies": { "linkifyjs": "^4.1.0" }, @@ -3813,9 +3814,9 @@ } }, "node_modules/@tiptap/extension-list-item": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-2.2.2.tgz", - "integrity": "sha512-VuHlbhLePXvKTx55X0iIZ1EXARAoOf6lpbKJK8180jny2gpYxGhk7rwG1G8s6G6ZDST+kyVa04gncxz8F/z6oA==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-2.2.4.tgz", + "integrity": "sha512-lPLKGKsHpM9ClUa8n7GEUn8pG6HCYU0vFruIy3l2t6jZdHkrgBnYtVGMZ13K8UDnj/hlAlccxku0D0P4mA1Vrg==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3825,9 +3826,9 @@ } }, "node_modules/@tiptap/extension-mention": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@tiptap/extension-mention/-/extension-mention-2.2.2.tgz", - "integrity": "sha512-REmjd01kyoZryORdFbkdo+8E4ZHq1sPK6fePXo0+5LYEFnVGs9k2EvpENkZ94pzVZgV6V1K6s8oEQAxSy45oOQ==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@tiptap/extension-mention/-/extension-mention-2.2.4.tgz", + "integrity": "sha512-myUlwpbrQgWfRJwG4UHM2PbiSp+squJv6LPKfKINs5yDxIproaZ0/4TAJt3heeSXZJnboPAQxSP7eLd5pY8lBw==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3839,9 +3840,9 @@ } }, "node_modules/@tiptap/extension-ordered-list": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-2.2.2.tgz", - "integrity": "sha512-TgG+mJyQB5CfeqCD65B9CLesl2IQTjc7tAKm8ZxRzF80GrCrmWNnoXi424TWmSF6cUV/4TY0G5dTkc9kB+S2tw==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-2.2.4.tgz", + "integrity": "sha512-TpFy140O9Af1JciXt+xwqYUXxcJ6YG8zi/B5UDJujp+FH5sCmlYYBBnWxiFMhVaj6yEmA2eafu1qUkic/1X5Aw==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3851,9 +3852,9 @@ } }, "node_modules/@tiptap/extension-paragraph": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-2.2.2.tgz", - "integrity": "sha512-USTzajni/hsQXsBF0Lbw++FyPJKCDlROyaKbZi77QQoUsU2MbJIka7k4tGc0kwyTB04aAl+E6+0iS4xIhC3rug==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-2.2.4.tgz", + "integrity": "sha512-m1KwyvTNJxsq7StbspbcOhxO4Wk4YpElDbqOouWi+H4c8azdpI5Pn96ZqhFeE9bSyjByg6OcB/wqoJsLbeFWdQ==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3863,9 +3864,9 @@ } }, "node_modules/@tiptap/extension-placeholder": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@tiptap/extension-placeholder/-/extension-placeholder-2.2.2.tgz", - "integrity": "sha512-dPN15nVu+HlONJSCiKjEl9n5/61CltTLSefhyRVQJeE7lmtMUGrsErUdOYMxGskehDQWIQW1VM0OiF63ln/3sA==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@tiptap/extension-placeholder/-/extension-placeholder-2.2.4.tgz", + "integrity": "sha512-UL4Fn9T33SoS7vdI3NnSxBJVeGUIgCIutgXZZ5J8CkcRoDIeS78z492z+6J+qGctHwTd0xUL5NzNJI82HfiTdg==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3876,9 +3877,9 @@ } }, "node_modules/@tiptap/extension-strike": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-2.2.2.tgz", - "integrity": "sha512-0wsqiZPatw9QrK3DJ1jCMukenc8DRQtEXo4/dQjtnzNDhe7ZySed6kPpGO9A4lASG7NV7GmYZ/k5iEELr+iE6Q==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-2.2.4.tgz", + "integrity": "sha512-/a2EwQgA+PpG17V2tVRspcrIY0SN3blwcgM7lxdW4aucGkqSKnf7+91dkhQEwCZ//o8kv9mBCyRoCUcGy6S5Xg==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3888,9 +3889,9 @@ } }, "node_modules/@tiptap/extension-text": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-2.2.2.tgz", - "integrity": "sha512-Zj53Vp/9MSQj5uiaObFaD3y7grUpMy+PfHmrK5XAZSFhRx+QpGUp+oItlKod6IJEIu8rq4dChgE7i6kT9uwWlA==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-2.2.4.tgz", + "integrity": "sha512-NlKHMPnRJXB+0AGtDlU0P2Pg+SdesA2lMMd7JzDUgJgL7pX2jOb8eUqSeOjFKuSzFSqYfH6C3o6mQiNhuQMv+g==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3900,9 +3901,9 @@ } }, "node_modules/@tiptap/extension-underline": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@tiptap/extension-underline/-/extension-underline-2.2.2.tgz", - "integrity": "sha512-sCgbFbBU1fMWKCmDjZ6Am257kXM6ZjCV24AwbNusweieQnnD3aTXC7/iZg101sa2VshLsXozm8t2QDTyafnL+Q==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@tiptap/extension-underline/-/extension-underline-2.2.4.tgz", + "integrity": "sha512-jCHgIJMwtXlGHVy/j3L8/QvglHCikkHJw7YS5yf8E/8HlPh1tZfVy/IxdgacDOpUN30X+UPJZQDdVKymafgwdA==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3912,9 +3913,9 @@ } }, "node_modules/@tiptap/pm": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-2.2.2.tgz", - "integrity": "sha512-TcUxqevVcqLYOcbAGlmvZfOB5LL5zZmb6jxSHyevl41SRpGZLe9Jt0e1v98jS0o9GMS7nvcTK/scYQu9e0HqTA==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-2.2.4.tgz", + "integrity": "sha512-Po0klR165zgtinhVp1nwMubjyKx6gAY9kH3IzcniYLCkqhPgiqnAcCr61TBpp4hfK8YURBS4ihvCB1dyfCyY8A==", "dependencies": { "prosemirror-changeset": "^2.2.1", "prosemirror-collab": "^1.3.1", @@ -3941,9 +3942,9 @@ } }, "node_modules/@tiptap/suggestion": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@tiptap/suggestion/-/suggestion-2.2.2.tgz", - "integrity": "sha512-3Po78jqoWwYCYP9gMqO7bV5oV63cL1Y6KS1RzTVhBUTdpRoLc2rHCDPqbL9EqKBwyHeTrp37fjUz9T54/LBNpA==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@tiptap/suggestion/-/suggestion-2.2.4.tgz", + "integrity": "sha512-g6HHsKM6K3asW+ZlwMYyLCRqCRaswoliZOQofY4iZt5ru5HNTSzm3YW4XSyW5RGXJIuc319yyrOFgtJ3Fyu5rQ==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3954,12 +3955,12 @@ } }, "node_modules/@tiptap/vue-3": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@tiptap/vue-3/-/vue-3-2.2.2.tgz", - "integrity": "sha512-4QNjruL7qiOgSANczipKtbYmMZS/gGuqV2UeBKKXTXIGFr5qA5R5n9Icy+El0oJOUZ8MNDFOVSGaHh/ts+pY3g==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@tiptap/vue-3/-/vue-3-2.2.4.tgz", + "integrity": "sha512-6Rue56OUmDl/OT07QcLsH1UvYGUmV8OFSDCrLrUyku/2lAYHwHz6+KhAB5paZt70nEGIw03G1KCT074negj6NQ==", "dependencies": { - "@tiptap/extension-bubble-menu": "^2.2.2", - "@tiptap/extension-floating-menu": "^2.2.2" + "@tiptap/extension-bubble-menu": "^2.2.4", + "@tiptap/extension-floating-menu": "^2.2.4" }, "funding": { "type": "github", @@ -4102,9 +4103,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.11.17", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.17.tgz", - "integrity": "sha512-QmgQZGWu1Yw9TDyAP9ZzpFJKynYNeOvwMJmaxABfieQoVoiVOS6MN1WSpqpRcbeA5+RW82kraAVxCCJg+780Qw==", + "version": "20.11.22", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.22.tgz", + "integrity": "sha512-/G+IxWxma6V3E+pqK1tSl2Fo1kl41pK1yeCyDsgkF9WlVAme4j5ISYM2zR11bgLFJGLN5sVK40T4RJNuiZbEjA==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -4145,9 +4146,9 @@ } }, "node_modules/@types/semver": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", - "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", "dev": true }, "node_modules/@types/throttle-debounce": { @@ -4444,9 +4445,9 @@ } }, "node_modules/@vitejs/plugin-vue": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.0.3.tgz", - "integrity": "sha512-b8S5dVS40rgHdDrw+DQi/xOM9ed+kSRZzfm1T74bMmBDCd8XO87NKlFYInzCtwvtWwXZvo1QxE2OSspTATWrbA==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.0.4.tgz", + "integrity": "sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==", "dev": true, "engines": { "node": "^18.0.0 || >=20.0.0" @@ -4457,9 +4458,9 @@ } }, "node_modules/@vitest/coverage-v8": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-1.2.2.tgz", - "integrity": "sha512-IHyKnDz18SFclIEEAHb9Y4Uxx0sPKC2VO1kdDCs1BF6Ip4S8rQprs971zIsooLUn7Afs71GRxWMWpkCGZpRMhw==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-1.3.1.tgz", + "integrity": "sha512-UuBnkSJUNE9rdHjDCPyJ4fYuMkoMtnghes1XohYa4At0MS3OQSAo97FrbwSLRshYsXThMZy1+ybD/byK5llyIg==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.1", @@ -4480,17 +4481,17 @@ "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "vitest": "^1.0.0" + "vitest": "1.3.1" } }, "node_modules/@vitest/expect": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.2.2.tgz", - "integrity": "sha512-3jpcdPAD7LwHUUiT2pZTj2U82I2Tcgg2oVPvKxhn6mDI2On6tfvPQTjAI4628GUGDZrCm4Zna9iQHm5cEexOAg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.3.1.tgz", + "integrity": "sha512-xofQFwIzfdmLLlHa6ag0dPV8YsnKOCP1KdAeVVh34vSjN2dcUiXYCD9htu/9eM7t8Xln4v03U9HLxLpPlsXdZw==", "dev": true, "dependencies": { - "@vitest/spy": "1.2.2", - "@vitest/utils": "1.2.2", + "@vitest/spy": "1.3.1", + "@vitest/utils": "1.3.1", "chai": "^4.3.10" }, "funding": { @@ -4498,12 +4499,12 @@ } }, "node_modules/@vitest/runner": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.2.2.tgz", - "integrity": "sha512-JctG7QZ4LSDXr5CsUweFgcpEvrcxOV1Gft7uHrvkQ+fsAVylmWQvnaAr/HDp3LAH1fztGMQZugIheTWjaGzYIg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.3.1.tgz", + "integrity": "sha512-5FzF9c3jG/z5bgCnjr8j9LNq/9OxV2uEBAITOXfoe3rdZJTdO7jzThth7FXv/6b+kdY65tpRQB7WaKhNZwX+Kg==", "dev": true, "dependencies": { - "@vitest/utils": "1.2.2", + "@vitest/utils": "1.3.1", "p-limit": "^5.0.0", "pathe": "^1.1.1" }, @@ -4539,9 +4540,9 @@ } }, "node_modules/@vitest/snapshot": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.2.2.tgz", - "integrity": "sha512-SmGY4saEw1+bwE1th6S/cZmPxz/Q4JWsl7LvbQIky2tKE35US4gd0Mjzqfr84/4OD0tikGWaWdMja/nWL5NIPA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.3.1.tgz", + "integrity": "sha512-EF++BZbt6RZmOlE3SuTPu/NfwBF6q4ABS37HHXzs2LUVPBLx2QoY/K0fKpRChSo8eLiuxcbCVfqKgx/dplCDuQ==", "dev": true, "dependencies": { "magic-string": "^0.30.5", @@ -4553,9 +4554,9 @@ } }, "node_modules/@vitest/spy": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.2.2.tgz", - "integrity": "sha512-k9Gcahssw8d7X3pSLq3e3XEu/0L78mUkCjivUqCQeXJm9clfXR/Td8+AP+VC1O6fKPIDLcHDTAmBOINVuv6+7g==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.3.1.tgz", + "integrity": "sha512-xAcW+S099ylC9VLU7eZfdT9myV67Nor9w9zhf0mGCYJSO+zM2839tOeROTdikOi/8Qeusffvxb/MyBSOja1Uig==", "dev": true, "dependencies": { "tinyspy": "^2.2.0" @@ -4565,12 +4566,12 @@ } }, "node_modules/@vitest/ui": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-1.2.2.tgz", - "integrity": "sha512-CG+5fa8lyoBr+9i+UZGS31Qw81v33QlD10uecHxN2CLJVN+jLnqx4pGzGvFFeJ7jSnUCT0AlbmVWY6fU6NJZmw==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-1.3.1.tgz", + "integrity": "sha512-2UrFLJ62c/eJGPHcclstMKlAR7E1WB1ITe1isuowEPJJHi3HfqofvsUqQ1cGrEF7kitG1DJuwURUA3HLDtQkXA==", "dev": true, "dependencies": { - "@vitest/utils": "1.2.2", + "@vitest/utils": "1.3.1", "fast-glob": "^3.3.2", "fflate": "^0.8.1", "flatted": "^3.2.9", @@ -4582,13 +4583,13 @@ "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "vitest": "^1.0.0" + "vitest": "1.3.1" } }, "node_modules/@vitest/utils": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.2.2.tgz", - "integrity": "sha512-WKITBHLsBHlpjnDQahr+XK6RE7MiAsgrIkr0pGhQ9ygoxBfUeG0lUG5iLlzqjmKSlBv3+j5EGsriBzh+C3Tq9g==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.3.1.tgz", + "integrity": "sha512-d3Waie/299qqRyHTm2DjADeTaNdNSVsnwHPWrs20JMpjh6eiVq7ggggweO8rc4arhf6rRkWuHKwvxGvejUXZZQ==", "dev": true, "dependencies": { "diff-sequences": "^29.6.3", @@ -4674,12 +4675,12 @@ } }, "node_modules/@vue/compiler-core": { - "version": "3.4.18", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.18.tgz", - "integrity": "sha512-F7YK8lMK0iv6b9/Gdk15A67wM0KKZvxDxed0RR60C1z9tIJTKta+urs4j0RTN5XqHISzI3etN3mX0uHhjmoqjQ==", + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.21.tgz", + "integrity": "sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==", "dependencies": { "@babel/parser": "^7.23.9", - "@vue/shared": "3.4.18", + "@vue/shared": "3.4.21", "entities": "^4.5.0", "estree-walker": "^2.0.2", "source-map-js": "^1.0.2" @@ -4691,27 +4692,27 @@ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" }, "node_modules/@vue/compiler-dom": { - "version": "3.4.18", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.18.tgz", - "integrity": "sha512-24Eb8lcMfInefvQ6YlEVS18w5Q66f4+uXWVA+yb7praKbyjHRNuKVWGuinfSSjM0ZIiPi++QWukhkgznBaqpEA==", + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.21.tgz", + "integrity": "sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==", "dependencies": { - "@vue/compiler-core": "3.4.18", - "@vue/shared": "3.4.18" + "@vue/compiler-core": "3.4.21", + "@vue/shared": "3.4.21" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.4.18", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.18.tgz", - "integrity": "sha512-rG5tqtnzwrVpMqAQ7FHtvHaV70G6LLfJIWLYZB/jZ9m/hrnZmIQh+H3ewnC5onwe/ibljm9+ZupxeElzqCkTAw==", + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.21.tgz", + "integrity": "sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==", "dependencies": { "@babel/parser": "^7.23.9", - "@vue/compiler-core": "3.4.18", - "@vue/compiler-dom": "3.4.18", - "@vue/compiler-ssr": "3.4.18", - "@vue/shared": "3.4.18", + "@vue/compiler-core": "3.4.21", + "@vue/compiler-dom": "3.4.21", + "@vue/compiler-ssr": "3.4.21", + "@vue/shared": "3.4.21", "estree-walker": "^2.0.2", - "magic-string": "^0.30.6", - "postcss": "^8.4.33", + "magic-string": "^0.30.7", + "postcss": "^8.4.35", "source-map-js": "^1.0.2" } }, @@ -4721,18 +4722,18 @@ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" }, "node_modules/@vue/compiler-ssr": { - "version": "3.4.18", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.18.tgz", - "integrity": "sha512-hSlv20oUhPxo2UYUacHgGaxtqP0tvFo6ixxxD6JlXIkwzwoZ9eKK6PFQN4hNK/R13JlNyldwWt/fqGBKgWJ6nQ==", + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.21.tgz", + "integrity": "sha512-M5+9nI2lPpAsgXOGQobnIueVqc9sisBFexh5yMIMRAPYLa7+5wEJs8iqOZc1WAa9WQbx9GR2twgznU8LTIiZ4Q==", "dependencies": { - "@vue/compiler-dom": "3.4.18", - "@vue/shared": "3.4.18" + "@vue/compiler-dom": "3.4.21", + "@vue/shared": "3.4.21" } }, "node_modules/@vue/devtools-api": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.1.tgz", - "integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==" + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.1.tgz", + "integrity": "sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==" }, "node_modules/@vue/eslint-config-prettier": { "version": "9.0.0", @@ -4773,103 +4774,48 @@ } }, "node_modules/@vue/reactivity": { - "version": "3.4.16", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.16.tgz", - "integrity": "sha512-XTWRMBG10PGs4MxDoUdBEhMacS5QBUAlGeb5AmQysTQ16tXxQ0lymgbSTmR2h79v5dJDFuULuLWUbwc0uj6zqQ==", + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.21.tgz", + "integrity": "sha512-UhenImdc0L0/4ahGCyEzc/pZNwVgcglGy9HVzJ1Bq2Mm9qXOpP8RyNTjookw/gOCUlXSEtuZ2fUg5nrHcoqJcw==", "dependencies": { - "@vue/shared": "3.4.16" + "@vue/shared": "3.4.21" } }, - "node_modules/@vue/reactivity/node_modules/@vue/shared": { - "version": "3.4.16", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.16.tgz", - "integrity": "sha512-HKCjeaxR+R95dCw1BDaytcHdlzZj9lxj7RlFnxWtcKq670t8oSeMsbPlkzkNc2V6IUzHaMtUxdBcdREAhb+7NA==" - }, "node_modules/@vue/runtime-core": { - "version": "3.4.16", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.16.tgz", - "integrity": "sha512-vgS25M79AOY2EsBWxBcy9yAou10x2WHJhGN0FM/Ii8yum0a+KBfg8ehzq/cuDqfOPrtVrDPW+QkH3WNJNakfRw==", + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.21.tgz", + "integrity": "sha512-pQthsuYzE1XcGZznTKn73G0s14eCJcjaLvp3/DKeYWoFacD9glJoqlNBxt3W2c5S40t6CCcpPf+jG01N3ULyrA==", "dependencies": { - "@vue/reactivity": "3.4.16", - "@vue/shared": "3.4.16" + "@vue/reactivity": "3.4.21", + "@vue/shared": "3.4.21" } }, - "node_modules/@vue/runtime-core/node_modules/@vue/shared": { - "version": "3.4.16", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.16.tgz", - "integrity": "sha512-HKCjeaxR+R95dCw1BDaytcHdlzZj9lxj7RlFnxWtcKq670t8oSeMsbPlkzkNc2V6IUzHaMtUxdBcdREAhb+7NA==" - }, "node_modules/@vue/runtime-dom": { - "version": "3.4.16", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.16.tgz", - "integrity": "sha512-X+knHfhefB8tX0rJG3d14U8p1CpeZ/qZxol9rN8ZAD9UalTInIsKXlBTd/xLC8GwO2aXVXxjaSIiTU5th5wj9Q==", + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.21.tgz", + "integrity": "sha512-gvf+C9cFpevsQxbkRBS1NpU8CqxKw0ebqMvLwcGQrNpx6gqRDodqKqA+A2VZZpQ9RpK2f9yfg8VbW/EpdFUOJw==", "dependencies": { - "@vue/runtime-core": "3.4.16", - "@vue/shared": "3.4.16", + "@vue/runtime-core": "3.4.21", + "@vue/shared": "3.4.21", "csstype": "^3.1.3" } }, - "node_modules/@vue/runtime-dom/node_modules/@vue/shared": { - "version": "3.4.16", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.16.tgz", - "integrity": "sha512-HKCjeaxR+R95dCw1BDaytcHdlzZj9lxj7RlFnxWtcKq670t8oSeMsbPlkzkNc2V6IUzHaMtUxdBcdREAhb+7NA==" - }, "node_modules/@vue/server-renderer": { - "version": "3.4.16", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.16.tgz", - "integrity": "sha512-e0PZDpk/eZgICYb0DTQ+OeBlgt0FYGo+2DEcUkZxw+pDgF1qL0aYaOqmPcSbL5KK0nizvuSd7k5HZOkSwSaC2g==", + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.21.tgz", + "integrity": "sha512-aV1gXyKSN6Rz+6kZ6kr5+Ll14YzmIbeuWe7ryJl5muJ4uwSwY/aStXTixx76TwkZFJLm1aAlA/HSWEJ4EyiMkg==", "dependencies": { - "@vue/compiler-ssr": "3.4.16", - "@vue/shared": "3.4.16" + "@vue/compiler-ssr": "3.4.21", + "@vue/shared": "3.4.21" }, "peerDependencies": { - "vue": "3.4.16" + "vue": "3.4.21" } }, - "node_modules/@vue/server-renderer/node_modules/@vue/compiler-core": { - "version": "3.4.16", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.16.tgz", - "integrity": "sha512-HXgyy7gen4FNJS8Hz2q/NNBEdzD3QInhDTWaP2/mS0TlmV9CnjmXip7TZ0ROYiQM4FgXZCCJvh74yDikFkPpkQ==", - "dependencies": { - "@babel/parser": "^7.23.9", - "@vue/shared": "3.4.16", - "entities": "^4.5.0", - "estree-walker": "^2.0.2", - "source-map-js": "^1.0.2" - } - }, - "node_modules/@vue/server-renderer/node_modules/@vue/compiler-dom": { - "version": "3.4.16", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.16.tgz", - "integrity": "sha512-lvs9ankPzLEuIC5aB72ntLUcwVGmgY7ASkXDRvo9+lUMWOOCqnAmM/64AZPeVAZ4EnjocCE40OUN+ZboNe4ygA==", - "dependencies": { - "@vue/compiler-core": "3.4.16", - "@vue/shared": "3.4.16" - } - }, - "node_modules/@vue/server-renderer/node_modules/@vue/compiler-ssr": { - "version": "3.4.16", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.16.tgz", - "integrity": "sha512-1kNF+fHdEB+5aTcPZ0hh/gzi9Ezq5IBO4bl/hV4Dg4fub6t12W6VGlsERtvdUaEowL35M3pojv0hOvLaq0FbdQ==", - "dependencies": { - "@vue/compiler-dom": "3.4.16", - "@vue/shared": "3.4.16" - } - }, - "node_modules/@vue/server-renderer/node_modules/@vue/shared": { - "version": "3.4.16", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.16.tgz", - "integrity": "sha512-HKCjeaxR+R95dCw1BDaytcHdlzZj9lxj7RlFnxWtcKq670t8oSeMsbPlkzkNc2V6IUzHaMtUxdBcdREAhb+7NA==" - }, - "node_modules/@vue/server-renderer/node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" - }, "node_modules/@vue/shared": { - "version": "3.4.18", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.18.tgz", - "integrity": "sha512-CxouGFxxaW5r1WbrSmWwck3No58rApXgRSBxrqgnY1K+jk20F6DrXJkHdH9n4HVT+/B6G2CAn213Uq3npWiy8Q==" + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.21.tgz", + "integrity": "sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==" }, "node_modules/@vue/test-utils": { "version": "2.4.4", @@ -4891,14 +4837,14 @@ } }, "node_modules/@vueuse/core": { - "version": "10.7.2", - "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.7.2.tgz", - "integrity": "sha512-AOyAL2rK0By62Hm+iqQn6Rbu8bfmbgaIMXcE3TSr7BdQ42wnSFlwIdPjInO62onYsEMK/yDMU8C6oGfDAtZ2qQ==", + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.9.0.tgz", + "integrity": "sha512-/1vjTol8SXnx6xewDEKfS0Ra//ncg4Hb0DaZiwKf7drgfMsKFExQ+FnnENcN6efPen+1kIzhLQoGSy0eDUVOMg==", "dependencies": { "@types/web-bluetooth": "^0.0.20", - "@vueuse/metadata": "10.7.2", - "@vueuse/shared": "10.7.2", - "vue-demi": ">=0.14.6" + "@vueuse/metadata": "10.9.0", + "@vueuse/shared": "10.9.0", + "vue-demi": ">=0.14.7" }, "funding": { "url": "https://github.com/sponsors/antfu" @@ -4930,20 +4876,20 @@ } }, "node_modules/@vueuse/metadata": { - "version": "10.7.2", - "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.7.2.tgz", - "integrity": "sha512-kCWPb4J2KGrwLtn1eJwaJD742u1k5h6v/St5wFe8Quih90+k2a0JP8BS4Zp34XUuJqS2AxFYMb1wjUL8HfhWsQ==", + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.9.0.tgz", + "integrity": "sha512-iddNbg3yZM0X7qFY2sAotomgdHK7YJ6sKUvQqbvwnf7TmaVPxS4EJydcNsVejNdS8iWCtDk+fYXr7E32nyTnGA==", "funding": { "url": "https://github.com/sponsors/antfu" } }, "node_modules/@vueuse/router": { - "version": "10.7.2", - "resolved": "https://registry.npmjs.org/@vueuse/router/-/router-10.7.2.tgz", - "integrity": "sha512-TE9QtcqtZ793bwJWnlxn1gir7TXHJh5Y0KTIAS2DFOFvz4f3yTPmxAtIHC5e96oBVaVdnzxQQ9EsOhBDfBtCDg==", + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/@vueuse/router/-/router-10.9.0.tgz", + "integrity": "sha512-MOmrCMQlRuPS4PExE1hy8T0XbZUXaNbEuh7CAG5mC8kdvdgANQMkdvJ7vIEOP27n5mXK/4YjvXJOZSsur4E0QQ==", "dependencies": { - "@vueuse/shared": "10.7.2", - "vue-demi": ">=0.14.6" + "@vueuse/shared": "10.9.0", + "vue-demi": ">=0.14.7" }, "funding": { "url": "https://github.com/sponsors/antfu" @@ -4978,11 +4924,11 @@ } }, "node_modules/@vueuse/shared": { - "version": "10.7.2", - "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.7.2.tgz", - "integrity": "sha512-qFbXoxS44pi2FkgFjPvF4h7c9oMDutpyBdcJdMYIMg9XyXli2meFMuaKn+UMgsClo//Th6+beeCgqweT/79BVA==", + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.9.0.tgz", + "integrity": "sha512-Uud2IWncmAfJvRaFYzv5OHDli+FbOzxiVEQdLCKQKLyhz94PIyFC3CHcH7EDMwIn8NPtD06+PNbC/PiO0LGLtw==", "dependencies": { - "vue-demi": ">=0.14.6" + "vue-demi": ">=0.14.7" }, "funding": { "url": "https://github.com/sponsors/antfu" @@ -5460,10 +5406,13 @@ } }, "node_modules/available-typed-arrays": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.6.tgz", - "integrity": "sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -5620,9 +5569,9 @@ } }, "node_modules/browserslist": { - "version": "4.22.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.3.tgz", - "integrity": "sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==", + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", "funding": [ { "type": "opencollective", @@ -5638,8 +5587,8 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001580", - "electron-to-chromium": "^1.4.648", + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", "node-releases": "^2.0.14", "update-browserslist-db": "^1.0.13" }, @@ -5678,14 +5627,15 @@ } }, "node_modules/call-bind": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.6.tgz", - "integrity": "sha512-Mj50FLHtlsoVfRfnHaZvyrooHcrlceNZdL/QBvJJVd9Ta55qCQK0gs4ss2oZDeV9zFCs6ewzYgVE5yfVmfFpVg==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dependencies": { + "es-define-property": "^1.0.0", "es-errors": "^1.3.0", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.3", - "set-function-length": "^1.2.0" + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -5722,9 +5672,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001585", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001585.tgz", - "integrity": "sha512-yr2BWR1yLXQ8fMpdS/4ZZXpseBgE7o4g41x3a6AJOqZuOi+iE/WdJYAuZ6Y95i4Ohd2Y+9MzIWRR+uGABH4s3Q==", + "version": "1.0.30001591", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001591.tgz", + "integrity": "sha512-PCzRMei/vXjJyL5mJtzNiUCKP59dm8Apqc3PH8gJkMnMXZGox93RbE76jHsmLwmIo6/3nsYIpJtx0O7u5PqFuQ==", "funding": [ { "type": "opencollective", @@ -6120,9 +6070,9 @@ "dev": true }, "node_modules/core-js": { - "version": "3.35.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.35.1.tgz", - "integrity": "sha512-IgdsbxNyMskrTFxa9lWHyMwAJU5gXOPP+1yO+K59d50VLVAIDAbs7gIv705KzALModfK3ZrSZTPNpC0PQgIZuw==", + "version": "3.36.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.36.0.tgz", + "integrity": "sha512-mt7+TUBbTFg5+GngsAxeKBTl5/VS0guFeJacYge9OmHb+m058UwwIm41SE9T4Den7ClatV57B6TYTuJ0CX1MAw==", "hasInstallScript": true, "funding": { "type": "opencollective", @@ -6130,12 +6080,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.35.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.35.1.tgz", - "integrity": "sha512-sftHa5qUJY3rs9Zht1WEnmkvXputCyDBczPnr7QDgL8n3qrF3CMXY4VPSYtOLLiOUJcah2WNXREd48iOl6mQIw==", + "version": "3.36.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.0.tgz", + "integrity": "sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw==", "dev": true, "dependencies": { - "browserslist": "^4.22.2" + "browserslist": "^4.22.3" }, "funding": { "type": "opencollective", @@ -6368,17 +6318,19 @@ } }, "node_modules/define-data-property": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.2.tgz", - "integrity": "sha512-SRtsSqsDbgpJBbW3pABMCOt6rQyeM8s8RiyeSN8jYG8sYmt/kGJejbydttUsnDs1tadr19tvhT4ShwMyoqAm4g==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dependencies": { + "es-define-property": "^1.0.0", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.2", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.1" + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/define-lazy-prop": { @@ -6669,9 +6621,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.664", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.664.tgz", - "integrity": "sha512-k9VKKSkOSNPvSckZgDDl/IQx45E1quMjX8QfLzUsAs/zve8AyFDK+ByRynSP/OfEfryiKHpQeMf00z0leLCc3A==" + "version": "1.4.687", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.687.tgz", + "integrity": "sha512-Ic85cOuXSP6h7KM0AIJ2hpJ98Bo4hyTUjc4yjMbkvD+8yTxEhfK9+8exT2KKYsSjnCn2tGsKVSZwE7ZgTORQCw==" }, "node_modules/emoji-regex": { "version": "9.2.2", @@ -6699,50 +6651,52 @@ } }, "node_modules/es-abstract": { - "version": "1.22.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", - "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", + "version": "1.22.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.5.tgz", + "integrity": "sha512-oW69R+4q2wG+Hc3KZePPZxOiisRIqfKBVo/HLx94QcJeWGU/8sZhCvc829rd1kS366vlJbzBfXf9yWwf0+Ko7w==", "dev": true, "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.2", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.5", - "es-set-tostringtag": "^2.0.1", + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.2", - "get-symbol-description": "^1.0.0", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "hasown": "^2.0.0", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", + "hasown": "^2.0.1", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", + "is-negative-zero": "^2.0.3", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", + "is-shared-array-buffer": "^1.0.3", "is-string": "^1.0.7", - "is-typed-array": "^1.1.12", + "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "safe-array-concat": "^1.0.1", - "safe-regex-test": "^1.0.0", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.0", + "safe-regex-test": "^1.0.3", "string.prototype.trim": "^1.2.8", "string.prototype.trimend": "^1.0.7", "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.5", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.13" + "which-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -6757,6 +6711,17 @@ "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", "dev": true }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-errors": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", @@ -6766,14 +6731,14 @@ } }, "node_modules/es-set-tostringtag": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", - "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.2", - "has-tostringtag": "^1.0.0", - "hasown": "^2.0.0" + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" }, "engines": { "node": ">= 0.4" @@ -6890,16 +6855,16 @@ } }, "node_modules/eslint": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", - "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.56.0", - "@humanwhocodes/config-array": "^0.11.13", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "@ungap/structured-clone": "^1.2.0", @@ -6977,9 +6942,9 @@ } }, "node_modules/eslint-module-utils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", - "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", + "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", "dev": true, "dependencies": { "debug": "^3.2.7" @@ -7116,16 +7081,16 @@ } }, "node_modules/eslint-plugin-vue": { - "version": "9.21.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.21.1.tgz", - "integrity": "sha512-XVtI7z39yOVBFJyi8Ljbn7kY9yHzznKXL02qQYn+ta63Iy4A9JFBw6o4OSB9hyD2++tVT+su9kQqetUyCCwhjw==", + "version": "9.22.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.22.0.tgz", + "integrity": "sha512-7wCXv5zuVnBtZE/74z4yZ0CM8AjH6bk4MQGm7hZjUC2DBppKU5ioeOk5LGSg/s9a1ZJnIsdPLJpXnu1Rc+cVHg==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "natural-compare": "^1.4.0", "nth-check": "^2.1.1", - "postcss-selector-parser": "^6.0.13", - "semver": "^7.5.4", + "postcss-selector-parser": "^6.0.15", + "semver": "^7.6.0", "vue-eslint-parser": "^9.4.2", "xml-name-validator": "^4.0.0" }, @@ -7516,9 +7481,9 @@ } }, "node_modules/flatted": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", "dev": true }, "node_modules/flexsearch": { @@ -7974,20 +7939,20 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", - "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dependencies": { - "get-intrinsic": "^1.2.2" + "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "engines": { "node": ">= 0.4" }, @@ -8022,9 +7987,9 @@ } }, "node_modules/hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", + "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==", "dependencies": { "function-bind": "^1.1.2" }, @@ -8323,9 +8288,9 @@ } }, "node_modules/http-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", - "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, "dependencies": { "agent-base": "^7.1.0", @@ -8336,9 +8301,9 @@ } }, "node_modules/https-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", - "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", "dev": true, "dependencies": { "agent-base": "^7.0.2", @@ -8358,9 +8323,9 @@ } }, "node_modules/husky": { - "version": "9.0.10", - "resolved": "https://registry.npmjs.org/husky/-/husky-9.0.10.tgz", - "integrity": "sha512-TQGNknoiy6bURzIO77pPRu+XHi6zI7T93rX+QnJsoYFf3xdjKOur+IlfqzJGMHIK/wXrLg+GsvMs8Op7vI2jVA==", + "version": "9.0.11", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.0.11.tgz", + "integrity": "sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw==", "dev": true, "bin": { "husky": "bin.mjs" @@ -8639,9 +8604,9 @@ "dev": true }, "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true, "engines": { "node": ">= 0.4" @@ -8734,12 +8699,15 @@ } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8890,9 +8858,9 @@ } }, "node_modules/istanbul-reports": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", - "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", "dev": true, "dependencies": { "html-escaper": "^2.0.0", @@ -8987,14 +8955,15 @@ } }, "node_modules/js-beautify": { - "version": "1.14.11", - "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.11.tgz", - "integrity": "sha512-rPogWqAfoYh1Ryqqh2agUpVfbxAhbjuN1SmU86dskQUKouRiggUTCO4+2ym9UPXllc2WAp0J+T5qxn7Um3lCdw==", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.15.1.tgz", + "integrity": "sha512-ESjNzSlt/sWE8sciZH8kBF8BPlwXPwhR6pWKAw8bw4Bwj+iZcnKW6ONWUutJ7eObuBZQpiIb8S7OYspWrKt7rA==", "dev": true, "dependencies": { "config-chain": "^1.1.13", - "editorconfig": "^1.0.3", + "editorconfig": "^1.0.4", "glob": "^10.3.3", + "js-cookie": "^3.0.5", "nopt": "^7.2.0" }, "bin": { @@ -9006,6 +8975,15 @@ "node": ">=14" } }, + "node_modules/js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", + "dev": true, + "engines": { + "node": ">=14" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -9951,9 +9929,9 @@ } }, "node_modules/mlly": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.5.0.tgz", - "integrity": "sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.6.1.tgz", + "integrity": "sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==", "dev": true, "dependencies": { "acorn": "^8.11.3", @@ -10083,9 +10061,9 @@ } }, "node_modules/npm-run-path": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.2.0.tgz", - "integrity": "sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "dev": true, "dependencies": { "path-key": "^4.0.0" @@ -10694,12 +10672,12 @@ } }, "node_modules/playwright": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.41.2.tgz", - "integrity": "sha512-v0bOa6H2GJChDL8pAeLa/LZC4feoAMbSQm1/jF/ySsWWoaNItvrMP7GEkvEEFyCTUYKMxjQKaTSg5up7nR6/8A==", + "version": "1.42.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.42.0.tgz", + "integrity": "sha512-Ko7YRUgj5xBHbntrgt4EIw/nE//XBHOKVKnBjO1KuZkmkhlbgyggTe5s9hjqQ1LpN+Xg+kHsQyt5Pa0Bw5XpvQ==", "dev": true, "dependencies": { - "playwright-core": "1.41.2" + "playwright-core": "1.42.0" }, "bin": { "playwright": "cli.js" @@ -10712,9 +10690,9 @@ } }, "node_modules/playwright-core": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.41.2.tgz", - "integrity": "sha512-VaTvwCA4Y8kxEe+kfm2+uUUw5Lubf38RxF7FpBxLPmGe5sdNkSg5e3ChEigaGrX7qdqT3pt2m/98LiyvU2x6CA==", + "version": "1.42.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.42.0.tgz", + "integrity": "sha512-0HD9y8qEVlcbsAjdpBaFjmaTHf+1FeIddy8VJLeiqwhcNqGCBe4Wp2e8knpqiYbzxtxarxiXyNDw2cG8sCaNMQ==", "dev": true, "bin": { "playwright-core": "cli.js" @@ -10737,6 +10715,15 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/postcss": { "version": "8.4.35", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", @@ -11181,9 +11168,9 @@ } }, "node_modules/prosemirror-tables": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/prosemirror-tables/-/prosemirror-tables-1.3.5.tgz", - "integrity": "sha512-JSZ2cCNlApu/ObAhdPyotrjBe2cimniniTpz60YXzbL0kZ+47nEYk2LWbfKU2lKpBkUNquta2PjteoNi4YCluQ==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/prosemirror-tables/-/prosemirror-tables-1.3.6.tgz", + "integrity": "sha512-95yL7w+/KcC5AD1VlacTrtFCJ0vNC+jRklGbikATPz0xSyuYq7XO6f/YCaMfWAtsGTbwt3zh1uWkzsIYyPeK9g==", "dependencies": { "prosemirror-keymap": "^1.1.2", "prosemirror-model": "^1.8.1", @@ -11216,9 +11203,9 @@ } }, "node_modules/prosemirror-view": { - "version": "1.32.7", - "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.32.7.tgz", - "integrity": "sha512-pvxiOoD4shW41X5bYDjRQk3DSG4fMqxh36yPMt7VYgU3dWRmqFzWJM/R6zeo1KtC8nyk717ZbQND3CC9VNeptw==", + "version": "1.33.1", + "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.33.1.tgz", + "integrity": "sha512-62qkYgSJIkwIMMCpuGuPzc52DiK1Iod6TWoIMxP4ja6BTD4yO8kCUL64PZ/WhH/dJ9fW0CDO39FhH1EMyhUFEg==", "dependencies": { "prosemirror-model": "^1.16.0", "prosemirror-state": "^1.0.0", @@ -11345,14 +11332,15 @@ } }, "node_modules/regexp.prototype.flags": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", - "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "set-function-name": "^2.0.0" + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" }, "engines": { "node": ">= 0.4" @@ -11603,9 +11591,9 @@ } }, "node_modules/rollup": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.6.tgz", - "integrity": "sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.12.0.tgz", + "integrity": "sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q==", "dev": true, "dependencies": { "@types/estree": "1.0.5" @@ -11618,19 +11606,19 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.9.6", - "@rollup/rollup-android-arm64": "4.9.6", - "@rollup/rollup-darwin-arm64": "4.9.6", - "@rollup/rollup-darwin-x64": "4.9.6", - "@rollup/rollup-linux-arm-gnueabihf": "4.9.6", - "@rollup/rollup-linux-arm64-gnu": "4.9.6", - "@rollup/rollup-linux-arm64-musl": "4.9.6", - "@rollup/rollup-linux-riscv64-gnu": "4.9.6", - "@rollup/rollup-linux-x64-gnu": "4.9.6", - "@rollup/rollup-linux-x64-musl": "4.9.6", - "@rollup/rollup-win32-arm64-msvc": "4.9.6", - "@rollup/rollup-win32-ia32-msvc": "4.9.6", - "@rollup/rollup-win32-x64-msvc": "4.9.6", + "@rollup/rollup-android-arm-eabi": "4.12.0", + "@rollup/rollup-android-arm64": "4.12.0", + "@rollup/rollup-darwin-arm64": "4.12.0", + "@rollup/rollup-darwin-x64": "4.12.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.12.0", + "@rollup/rollup-linux-arm64-gnu": "4.12.0", + "@rollup/rollup-linux-arm64-musl": "4.12.0", + "@rollup/rollup-linux-riscv64-gnu": "4.12.0", + "@rollup/rollup-linux-x64-gnu": "4.12.0", + "@rollup/rollup-linux-x64-musl": "4.12.0", + "@rollup/rollup-win32-arm64-msvc": "4.12.0", + "@rollup/rollup-win32-ia32-msvc": "4.12.0", + "@rollup/rollup-win32-x64-msvc": "4.12.0", "fsevents": "~2.3.2" } }, @@ -11809,9 +11797,9 @@ "dev": true }, "node_modules/sanitize-html": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.11.0.tgz", - "integrity": "sha512-BG68EDHRaGKqlsNjJ2xUB7gpInPA8gVx/mvjO743hZaeMCZ2DwzW7xvsqZ+KNU4QKwj86HJ3uu2liISf2qBBUA==", + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.12.1.tgz", + "integrity": "sha512-Plh+JAn0UVDpBRP/xEjsk+xDCoOvMBwQUf/K+/cBAVuTbtX8bj2VB7S1sL1dssVpykqp0/KPSesHrqXtokVBpA==", "dependencies": { "deepmerge": "^4.2.2", "escape-string-regexp": "^4.0.0", @@ -11830,9 +11818,9 @@ } }, "node_modules/sass": { - "version": "1.70.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.70.0.tgz", - "integrity": "sha512-uUxNQ3zAHeAx5nRFskBnrWzDUJrrvpCPD5FNAoRvTi0WwremlheES3tg+56PaVtCs5QDRX5CBLxxKMDJMEa1WQ==", + "version": "1.71.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.71.1.tgz", + "integrity": "sha512-wovtnV2PxzteLlfNzbgm1tFXPLoZILYAMJtvoXXkD7/+1uP41eKkIt1ypWq5/q2uT94qHjXehEYfmjKOvjL9sg==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -11938,14 +11926,15 @@ } }, "node_modules/set-function-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", - "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", "dev": true, "dependencies": { - "define-data-property": "^1.0.1", + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -12391,21 +12380,27 @@ } }, "node_modules/strip-literal": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.3.0.tgz", - "integrity": "sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.0.0.tgz", + "integrity": "sha512-f9vHgsCWBq2ugHAkGMiiYY+AYG0D/cbloKKg0nhaaaSNsujdGIpVXCNsrJpCKr5M0f4aI31mr13UjY6GAuXCKA==", "dev": true, "dependencies": { - "acorn": "^8.10.0" + "js-tokens": "^8.0.2" }, "funding": { "url": "https://github.com/sponsors/antfu" } }, + "node_modules/strip-literal/node_modules/js-tokens": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-8.0.3.tgz", + "integrity": "sha512-UfJMcSJc+SEXEl9lH/VLHSZbThQyLpw1vLO1Lb+j4RWDvG3N2f7yj3PVQA3cmkTBNldJ9eFnM+xEXxHIXrYiJw==", + "dev": true + }, "node_modules/style-mod": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.0.tgz", - "integrity": "sha512-Ca5ib8HrFn+f+0n4N4ScTIA9iTOQ7MaGS1ylHcoVqW9J7w2w8PzN6g9gKmTYgGEBH8e120+RCmhpje6jC5uGWA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.1.tgz", + "integrity": "sha512-nFSNaYG2I8jgB3GZ67q7WjnHlZBzyX5OKgx89k6JkPlaNoyMlRstdBvWgo95qRgUa6tUuvpt4zZM6KWCj+oU6Q==", "dev": true }, "node_modules/sucrase": { @@ -12642,9 +12637,9 @@ } }, "node_modules/terser": { - "version": "5.27.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.27.0.tgz", - "integrity": "sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==", + "version": "5.28.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.28.1.tgz", + "integrity": "sha512-wM+bZp54v/E9eRRGXb5ZFDvinrJIOaTapx3WUokyVGZu5ucVCK55zEgGd5Dl2fSr3jUo5sDiERErUWLY6QPFyA==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -12954,12 +12949,12 @@ } }, "node_modules/typed-array-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.1.tgz", - "integrity": "sha512-RSqu1UEuSlrBhHTWC8O9FnPjOduNs4M7rJ4pRKoEjtx1zUNOPN2sSXHLDX+Y2WPbHIxbvg4JFo2DNAEfPIKWoQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.6", + "call-bind": "^1.0.7", "es-errors": "^1.3.0", "is-typed-array": "^1.1.13" }, @@ -12968,15 +12963,16 @@ } }, "node_modules/typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -12986,16 +12982,17 @@ } }, "node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -13005,14 +13002,20 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.5.tgz", + "integrity": "sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -13260,9 +13263,9 @@ } }, "node_modules/vite": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.1.tgz", - "integrity": "sha512-wclpAgY3F1tR7t9LL5CcHC41YPkQIpKUGeIuT8MdNwNZr6OqOTLs7JX5vIHAtzqLWXts0T+GDrh9pN2arneKqg==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.4.tgz", + "integrity": "sha512-n+MPqzq+d9nMVTKyewqw6kSt+R3CkvF9QAKY8obiQn8g1fwTscKxyfaYnC632HtBXAQGc1Yjomphwn1dtwGAHg==", "dev": true, "dependencies": { "esbuild": "^0.19.3", @@ -13338,9 +13341,9 @@ } }, "node_modules/vite-plugin-pwa": { - "version": "0.17.5", - "resolved": "https://registry.npmjs.org/vite-plugin-pwa/-/vite-plugin-pwa-0.17.5.tgz", - "integrity": "sha512-UxRNPiJBzh4tqU/vc8G2TxmrUTzT6BqvSzhszLk62uKsf+npXdvLxGDz9C675f4BJi6MbD2tPnJhi5txlMzxbQ==", + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/vite-plugin-pwa/-/vite-plugin-pwa-0.19.1.tgz", + "integrity": "sha512-pxubJSqDfiUflmFfU8ErPP2eIHz7SqiSuJz6Qk2dPlEeC5Wm2hTInYhmVBYVx1KbVUEhQ4f8uCdmhYB/YP/pqw==", "dev": true, "dependencies": { "debug": "^4.3.4", @@ -13356,9 +13359,15 @@ "url": "https://github.com/sponsors/antfu" }, "peerDependencies": { + "@vite-pwa/assets-generator": "^0.2.4", "vite": "^3.1.0 || ^4.0.0 || ^5.0.0", "workbox-build": "^7.0.0", "workbox-window": "^7.0.0" + }, + "peerDependenciesMeta": { + "@vite-pwa/assets-generator": { + "optional": true + } } }, "node_modules/vite-svg-loader": { @@ -13372,18 +13381,17 @@ } }, "node_modules/vitest": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.2.2.tgz", - "integrity": "sha512-d5Ouvrnms3GD9USIK36KG8OZ5bEvKEkITFtnGv56HFaSlbItJuYr7hv2Lkn903+AvRAgSixiamozUVfORUekjw==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.3.1.tgz", + "integrity": "sha512-/1QJqXs8YbCrfv/GPQ05wAZf2eakUPLPa18vkJAKE7RXOKfVHqMZZ1WlTjiwl6Gcn65M5vpNUB6EFLnEdRdEXQ==", "dev": true, "dependencies": { - "@vitest/expect": "1.2.2", - "@vitest/runner": "1.2.2", - "@vitest/snapshot": "1.2.2", - "@vitest/spy": "1.2.2", - "@vitest/utils": "1.2.2", + "@vitest/expect": "1.3.1", + "@vitest/runner": "1.3.1", + "@vitest/snapshot": "1.3.1", + "@vitest/spy": "1.3.1", + "@vitest/utils": "1.3.1", "acorn-walk": "^8.3.2", - "cac": "^6.7.14", "chai": "^4.3.10", "debug": "^4.3.4", "execa": "^8.0.1", @@ -13392,11 +13400,11 @@ "pathe": "^1.1.1", "picocolors": "^1.0.0", "std-env": "^3.5.0", - "strip-literal": "^1.3.0", + "strip-literal": "^2.0.0", "tinybench": "^2.5.1", "tinypool": "^0.8.2", "vite": "^5.0.0", - "vite-node": "1.2.2", + "vite-node": "1.3.1", "why-is-node-running": "^2.2.2" }, "bin": { @@ -13411,8 +13419,8 @@ "peerDependencies": { "@edge-runtime/vm": "*", "@types/node": "^18.0.0 || >=20.0.0", - "@vitest/browser": "^1.0.0", - "@vitest/ui": "^1.0.0", + "@vitest/browser": "1.3.1", + "@vitest/ui": "1.3.1", "happy-dom": "*", "jsdom": "*" }, @@ -13438,9 +13446,9 @@ } }, "node_modules/vitest/node_modules/vite-node": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.2.2.tgz", - "integrity": "sha512-1as4rDTgVWJO3n1uHmUYqq7nsFgINQ9u+mRcXpjeOMJUmviqNKjcZB7UfRZrlM7MjYXMKpuWp5oGkjaFLnjawg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.3.1.tgz", + "integrity": "sha512-azbRrqRxlWTJEVbzInZCTchx0X69M/XPTCz4H+TLvlTcR/xH/3hkRqhOakT41fMJCMzXTu4UvegkZiEoJAWvng==", "dev": true, "dependencies": { "cac": "^6.7.14", @@ -13460,15 +13468,15 @@ } }, "node_modules/vue": { - "version": "3.4.16", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.16.tgz", - "integrity": "sha512-l5/KcZRp3GbsFXQGeCL9ll1JfRU285K/7l8mZM+dEO+CnE1j26MvfBKJi17iCRRwstl+Jz7KSLlzj9L79fB6WA==", + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.21.tgz", + "integrity": "sha512-5hjyV/jLEIKD/jYl4cavMcnzKwjMKohureP8ejn3hhEjwhWIhWeuzL2kJAjzl/WyVsgPY56Sy4Z40C3lVshxXA==", "dependencies": { - "@vue/compiler-dom": "3.4.16", - "@vue/compiler-sfc": "3.4.16", - "@vue/runtime-dom": "3.4.16", - "@vue/server-renderer": "3.4.16", - "@vue/shared": "3.4.16" + "@vue/compiler-dom": "3.4.21", + "@vue/compiler-sfc": "3.4.21", + "@vue/runtime-dom": "3.4.21", + "@vue/server-renderer": "3.4.21", + "@vue/shared": "3.4.21" }, "peerDependencies": { "typescript": "*" @@ -13606,11 +13614,11 @@ } }, "node_modules/vue-router": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.5.tgz", - "integrity": "sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.3.0.tgz", + "integrity": "sha512-dqUcs8tUeG+ssgWhcPbjHvazML16Oga5w34uCUmsk7i0BcnskoLGwjpa15fqMr2Fa5JgVBrdL2MEgqz6XZ/6IQ==", "dependencies": { - "@vue/devtools-api": "^6.5.0" + "@vue/devtools-api": "^6.5.1" }, "funding": { "url": "https://github.com/sponsors/posva" @@ -13681,62 +13689,6 @@ } } }, - "node_modules/vue/node_modules/@vue/compiler-core": { - "version": "3.4.16", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.16.tgz", - "integrity": "sha512-HXgyy7gen4FNJS8Hz2q/NNBEdzD3QInhDTWaP2/mS0TlmV9CnjmXip7TZ0ROYiQM4FgXZCCJvh74yDikFkPpkQ==", - "dependencies": { - "@babel/parser": "^7.23.9", - "@vue/shared": "3.4.16", - "entities": "^4.5.0", - "estree-walker": "^2.0.2", - "source-map-js": "^1.0.2" - } - }, - "node_modules/vue/node_modules/@vue/compiler-dom": { - "version": "3.4.16", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.16.tgz", - "integrity": "sha512-lvs9ankPzLEuIC5aB72ntLUcwVGmgY7ASkXDRvo9+lUMWOOCqnAmM/64AZPeVAZ4EnjocCE40OUN+ZboNe4ygA==", - "dependencies": { - "@vue/compiler-core": "3.4.16", - "@vue/shared": "3.4.16" - } - }, - "node_modules/vue/node_modules/@vue/compiler-sfc": { - "version": "3.4.16", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.16.tgz", - "integrity": "sha512-zVYC42Q/NmbB4nigGcQeIvsLpBlq6K9wJP5jTFCqfpXWnkodxfLFQHDu2GntZ7yKOgwAjxuvLwrPx+I6LPL2vg==", - "dependencies": { - "@babel/parser": "^7.23.9", - "@vue/compiler-core": "3.4.16", - "@vue/compiler-dom": "3.4.16", - "@vue/compiler-ssr": "3.4.16", - "@vue/shared": "3.4.16", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.6", - "postcss": "^8.4.33", - "source-map-js": "^1.0.2" - } - }, - "node_modules/vue/node_modules/@vue/compiler-ssr": { - "version": "3.4.16", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.16.tgz", - "integrity": "sha512-1kNF+fHdEB+5aTcPZ0hh/gzi9Ezq5IBO4bl/hV4Dg4fub6t12W6VGlsERtvdUaEowL35M3pojv0hOvLaq0FbdQ==", - "dependencies": { - "@vue/compiler-dom": "3.4.16", - "@vue/shared": "3.4.16" - } - }, - "node_modules/vue/node_modules/@vue/shared": { - "version": "3.4.16", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.16.tgz", - "integrity": "sha512-HKCjeaxR+R95dCw1BDaytcHdlzZj9lxj7RlFnxWtcKq670t8oSeMsbPlkzkNc2V6IUzHaMtUxdBcdREAhb+7NA==" - }, - "node_modules/vue/node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" - }, "node_modules/w3c-keyname": { "version": "2.2.8", "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", @@ -14244,6 +14196,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-7.0.0.tgz", "integrity": "sha512-MEYM1JTn/qiC3DbpvP2BVhyIH+dV/5BjHk756u9VbwuAhu0QHyKscTnisQuz21lfRpOwiS9z4XdqeVAKol0bzg==", + "deprecated": "It is not compatible with newer versions of GA starting with v4, as long as you are using GAv3 it should be ok, but the package is not longer being maintained", "dev": true, "dependencies": { "workbox-background-sync": "7.0.0", diff --git a/package.json b/package.json index 14da32d0b..d2b5182ef 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mobilizon", - "version": "4.1.0-alpha.1", + "version": "5.0.0-beta.1", "private": true, "scripts": { "dev": "vite", @@ -38,6 +38,10 @@ "@fullcalendar/vue3": "^6.1.10", "@oruga-ui/oruga-next": "^0.8.2", "@oruga-ui/theme-oruga": "^0.2.0", + "@fullcalendar/core": "^6.1.10", + "@fullcalendar/daygrid": "^6.1.10", + "@fullcalendar/interaction": "^6.1.10", + "@fullcalendar/vue3": "^6.1.10", "@sentry/tracing": "^7.1", "@sentry/vue": "^7.1", "@tiptap/core": "^2.0.0-beta.41", @@ -98,7 +102,7 @@ "tailwindcss": "^3", "tippy.js": "^6.2.3", "unfetch": "^5.0.0", - "vue": "3.4.16", + "vue": "^3.4.20", "vue-i18n": "9", "vue-material-design-icons": "^5.1.2", "vue-matomo": "^4.1.0", @@ -145,8 +149,8 @@ "sass": "^1.34.1", "typescript": "~5.3.2", "vite": "^5.0.12", - "vite-plugin-pwa": "^0.17.0", "vite-svg-loader": "^4.0.0", + "vite-plugin-pwa": "^0.19.0", "vitest": "^1.2.2", "vue-i18n-extract": "^2.0.4", "vue-router-mock": "^1.0.0" diff --git a/priv/gettext/activity.pot b/priv/gettext/activity.pot index ee7859b26..760150dbb 100644 --- a/priv/gettext/activity.pot +++ b/priv/gettext/activity.pot @@ -214,7 +214,7 @@ msgstr "" #: lib/web/templates/email/email_direct_activity.html.heex:230 #: lib/web/templates/email/email_direct_activity.text.eex:23 -#, elixir-format +#, elixir-format, elixir-autogen msgid "View one more activity" msgid_plural "View %{count} more activities" msgstr[0] "" @@ -224,7 +224,7 @@ msgstr[1] "" #: lib/web/templates/email/email_direct_activity.html.heex:60 #: lib/web/templates/email/email_direct_activity.text.eex:6 #: lib/web/templates/email/email_direct_activity.text.eex:7 -#, elixir-format +#, elixir-format, elixir-autogen msgid "There has been an activity!" msgid_plural "There has been some activity!" msgstr[0] "" diff --git a/priv/gettext/ar/LC_MESSAGES/activity.po b/priv/gettext/ar/LC_MESSAGES/activity.po index b1602b143..f1c9a50dc 100644 --- a/priv/gettext/ar/LC_MESSAGES/activity.po +++ b/priv/gettext/ar/LC_MESSAGES/activity.po @@ -216,7 +216,7 @@ msgstr "" #: lib/web/templates/email/email_direct_activity.html.heex:230 #: lib/web/templates/email/email_direct_activity.text.eex:23 -#, elixir-format +#, elixir-format, elixir-autogen msgid "View one more activity" msgid_plural "View %{count} more activities" msgstr[0] "" @@ -230,7 +230,7 @@ msgstr[5] "" #: lib/web/templates/email/email_direct_activity.html.heex:60 #: lib/web/templates/email/email_direct_activity.text.eex:6 #: lib/web/templates/email/email_direct_activity.text.eex:7 -#, elixir-format +#, elixir-format, elixir-autogen msgid "There has been an activity!" msgid_plural "There has been some activity!" msgstr[0] "" diff --git a/priv/gettext/ar/LC_MESSAGES/default.po b/priv/gettext/ar/LC_MESSAGES/default.po index 0656231a0..44e3bd8dc 100644 --- a/priv/gettext/ar/LC_MESSAGES/default.po +++ b/priv/gettext/ar/LC_MESSAGES/default.po @@ -317,7 +317,7 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "" #: lib/web/email/notification.ex:52 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "" @@ -329,7 +329,7 @@ msgstr[5] "" #: lib/web/templates/email/on_day_notification.html.heex:47 #: lib/web/templates/email/on_day_notification.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "" @@ -383,7 +383,7 @@ msgid "You have been invited by %{inviter} to join group %{group}" msgstr "" #: lib/web/email/notification.ex:81 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "" @@ -394,7 +394,7 @@ msgstr[4] "" msgstr[5] "" #: lib/web/email/notification.ex:107 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "" @@ -406,7 +406,7 @@ msgstr[5] "" #: lib/web/templates/email/notification_each_week.html.heex:47 #: lib/web/templates/email/notification_each_week.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "" @@ -776,7 +776,7 @@ msgstr "" #: lib/web/templates/email/notification_each_week.text.eex:11 #: lib/web/templates/email/on_day_notification.html.heex:89 #: lib/web/templates/email/on_day_notification.text.eex:11 -#, elixir-format +#, elixir-format, elixir-autogen msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "" @@ -1076,7 +1076,7 @@ msgstr "" msgid "Your instance's moderation team has decided to suspend %{group_name} (%{group_address}). You are no longer a member of this group." msgstr "" -#: lib/web/email/group.ex:108 +#: lib/web/email/group.ex:106 #, elixir-autogen, elixir-format msgid "The group %{group} has been suspended on %{instance}" msgstr "" @@ -1160,12 +1160,6 @@ msgctxt "terms" msgid "We reserve the right to modify these Terms at any time. For instance, we may need to change these Terms if we come out with a new feature." msgstr "" -#: lib/web/templates/api/terms.html.heex:55 -#, elixir-autogen, elixir-format -msgctxt "terms" -msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by <a href=\"https://framasoft.org\">Framasoft</a>, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." -msgstr "" - #: lib/web/templates/api/terms.html.heex:105 #, elixir-autogen, elixir-format msgctxt "terms" @@ -1650,7 +1644,7 @@ msgstr "" #: lib/web/templates/email/pending_participation_notification.html.heex:47 #: lib/web/templates/email/pending_participation_notification.text.eex:4 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one pending attendance request to process for the following event:" msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" msgstr[0] "" @@ -2048,3 +2042,9 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Well done!" msgstr "" + +#: lib/web/templates/api/terms.html.heex:55 +#, elixir-autogen, elixir-format, fuzzy +msgctxt "terms" +msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." +msgstr "" diff --git a/priv/gettext/ar/LC_MESSAGES/errors.po b/priv/gettext/ar/LC_MESSAGES/errors.po index e4efbe032..92b22aeaf 100644 --- a/priv/gettext/ar/LC_MESSAGES/errors.po +++ b/priv/gettext/ar/LC_MESSAGES/errors.po @@ -207,13 +207,13 @@ msgstr "" msgid "The current password is invalid" msgstr "" -#: lib/graphql/resolvers/admin.ex:334 +#: lib/graphql/resolvers/admin.ex:335 #: lib/graphql/resolvers/user.ex:527 #, elixir-autogen, elixir-format msgid "The new email doesn't seem to be valid" msgstr "" -#: lib/graphql/resolvers/admin.ex:323 +#: lib/graphql/resolvers/admin.ex:324 #: lib/graphql/resolvers/user.ex:514 #, elixir-autogen, elixir-format msgid "The new email must be different" @@ -647,7 +647,7 @@ msgstr "" msgid "You don't have permission to delete this token" msgstr "" -#: lib/graphql/resolvers/admin.ex:56 +#: lib/graphql/resolvers/admin.ex:57 #, elixir-autogen, elixir-format msgid "You need to be logged-in and a moderator to list action logs" msgstr "" @@ -667,17 +667,17 @@ msgstr "" msgid "You need to be logged-in and a moderator to view a report" msgstr "" -#: lib/graphql/resolvers/admin.ex:258 +#: lib/graphql/resolvers/admin.ex:259 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" -#: lib/graphql/resolvers/admin.ex:242 +#: lib/graphql/resolvers/admin.ex:243 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" -#: lib/graphql/resolvers/admin.ex:283 +#: lib/graphql/resolvers/admin.ex:284 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" @@ -964,7 +964,7 @@ msgstr "" msgid "Failed to update the group" msgstr "" -#: lib/graphql/resolvers/admin.ex:357 +#: lib/graphql/resolvers/admin.ex:358 #: lib/graphql/resolvers/user.ex:547 #, elixir-autogen, elixir-format msgid "Failed to update user email" @@ -1095,22 +1095,22 @@ msgstr "" msgid "Your email seems to be using an invalid format" msgstr "" -#: lib/graphql/resolvers/admin.ex:399 +#: lib/graphql/resolvers/admin.ex:400 #, elixir-autogen, elixir-format msgid "Can't confirm an already confirmed user" msgstr "" -#: lib/graphql/resolvers/admin.ex:403 +#: lib/graphql/resolvers/admin.ex:404 #, elixir-autogen, elixir-format msgid "Deconfirming users is not supported" msgstr "" -#: lib/graphql/resolvers/admin.ex:375 +#: lib/graphql/resolvers/admin.ex:376 #, elixir-autogen, elixir-format, fuzzy msgid "The new role must be different" msgstr "" -#: lib/graphql/resolvers/admin.ex:314 +#: lib/graphql/resolvers/admin.ex:315 #, elixir-autogen, elixir-format, fuzzy msgid "You need to be logged-in and an administrator to edit an user's details" msgstr "" @@ -1120,7 +1120,7 @@ msgstr "" msgid "A profile or group with that name already exists" msgstr "" -#: lib/graphql/resolvers/admin.ex:542 +#: lib/graphql/resolvers/admin.ex:560 #, elixir-autogen, elixir-format msgid "Unable to find an instance to follow at this address" msgstr "" @@ -1382,7 +1382,7 @@ msgstr "" msgid "The same push subscription has already been registered" msgstr "" -#: lib/graphql/resolvers/admin.ex:536 +#: lib/graphql/resolvers/admin.ex:554 #, elixir-autogen, elixir-format msgid "This instance is pending follow approval" msgstr "" @@ -1392,7 +1392,7 @@ msgstr "" msgid "Timezone ID %{timezone} is invalid" msgstr "" -#: lib/graphql/resolvers/admin.ex:539 +#: lib/graphql/resolvers/admin.ex:557 #, elixir-autogen, elixir-format, fuzzy msgid "You are already following this instance" msgstr "" @@ -1412,12 +1412,12 @@ msgstr "" msgid "The token you provided is invalid. Make sure that the URL is exactly the one provided inside the email you got." msgstr "" -#: lib/graphql/resolvers/conversation.ex:161 +#: lib/graphql/resolvers/conversation.ex:164 #, elixir-autogen, elixir-format msgid "Conversation needs to mention at least one participant that's not yourself" msgstr "" -#: lib/graphql/resolvers/participant.ex:396 +#: lib/graphql/resolvers/participant.ex:401 #, elixir-autogen, elixir-format msgid "There are no participants matching the audience you've selected." msgstr "" diff --git a/priv/gettext/be/LC_MESSAGES/activity.po b/priv/gettext/be/LC_MESSAGES/activity.po index b24f809b0..657f1185d 100644 --- a/priv/gettext/be/LC_MESSAGES/activity.po +++ b/priv/gettext/be/LC_MESSAGES/activity.po @@ -215,7 +215,7 @@ msgstr "" #: lib/web/templates/email/email_direct_activity.html.heex:230 #: lib/web/templates/email/email_direct_activity.text.eex:23 -#, elixir-format +#, elixir-format, elixir-autogen msgid "View one more activity" msgid_plural "View %{count} more activities" msgstr[0] "" @@ -226,7 +226,7 @@ msgstr[2] "" #: lib/web/templates/email/email_direct_activity.html.heex:60 #: lib/web/templates/email/email_direct_activity.text.eex:6 #: lib/web/templates/email/email_direct_activity.text.eex:7 -#, elixir-format +#, elixir-format, elixir-autogen msgid "There has been an activity!" msgid_plural "There has been some activity!" msgstr[0] "" diff --git a/priv/gettext/be/LC_MESSAGES/default.po b/priv/gettext/be/LC_MESSAGES/default.po index c7b3902e0..666353ae0 100644 --- a/priv/gettext/be/LC_MESSAGES/default.po +++ b/priv/gettext/be/LC_MESSAGES/default.po @@ -315,7 +315,7 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "" #: lib/web/email/notification.ex:52 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "" @@ -324,7 +324,7 @@ msgstr[2] "" #: lib/web/templates/email/on_day_notification.html.heex:47 #: lib/web/templates/email/on_day_notification.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "" @@ -375,7 +375,7 @@ msgid "You have been invited by %{inviter} to join group %{group}" msgstr "" #: lib/web/email/notification.ex:81 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "" @@ -383,7 +383,7 @@ msgstr[1] "" msgstr[2] "" #: lib/web/email/notification.ex:107 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "" @@ -392,7 +392,7 @@ msgstr[2] "" #: lib/web/templates/email/notification_each_week.html.heex:47 #: lib/web/templates/email/notification_each_week.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "" @@ -759,7 +759,7 @@ msgstr "" #: lib/web/templates/email/notification_each_week.text.eex:11 #: lib/web/templates/email/on_day_notification.html.heex:89 #: lib/web/templates/email/on_day_notification.text.eex:11 -#, elixir-format +#, elixir-format, elixir-autogen msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "" @@ -1056,7 +1056,7 @@ msgstr "" msgid "Your instance's moderation team has decided to suspend %{group_name} (%{group_address}). You are no longer a member of this group." msgstr "" -#: lib/web/email/group.ex:108 +#: lib/web/email/group.ex:106 #, elixir-autogen, elixir-format msgid "The group %{group} has been suspended on %{instance}" msgstr "" @@ -1140,12 +1140,6 @@ msgctxt "terms" msgid "We reserve the right to modify these Terms at any time. For instance, we may need to change these Terms if we come out with a new feature." msgstr "" -#: lib/web/templates/api/terms.html.heex:55 -#, elixir-autogen, elixir-format -msgctxt "terms" -msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by <a href=\"https://framasoft.org\">Framasoft</a>, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." -msgstr "" - #: lib/web/templates/api/terms.html.heex:105 #, elixir-autogen, elixir-format msgctxt "terms" @@ -1630,7 +1624,7 @@ msgstr "" #: lib/web/templates/email/pending_participation_notification.html.heex:47 #: lib/web/templates/email/pending_participation_notification.text.eex:4 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one pending attendance request to process for the following event:" msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" msgstr[0] "" @@ -2025,3 +2019,9 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Well done!" msgstr "" + +#: lib/web/templates/api/terms.html.heex:55 +#, elixir-autogen, elixir-format, fuzzy +msgctxt "terms" +msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." +msgstr "" diff --git a/priv/gettext/be/LC_MESSAGES/errors.po b/priv/gettext/be/LC_MESSAGES/errors.po index dfd7e8329..9cfd18244 100644 --- a/priv/gettext/be/LC_MESSAGES/errors.po +++ b/priv/gettext/be/LC_MESSAGES/errors.po @@ -181,13 +181,13 @@ msgstr "" msgid "The current password is invalid" msgstr "" -#: lib/graphql/resolvers/admin.ex:334 +#: lib/graphql/resolvers/admin.ex:335 #: lib/graphql/resolvers/user.ex:527 #, elixir-autogen, elixir-format msgid "The new email doesn't seem to be valid" msgstr "" -#: lib/graphql/resolvers/admin.ex:323 +#: lib/graphql/resolvers/admin.ex:324 #: lib/graphql/resolvers/user.ex:514 #, elixir-autogen, elixir-format msgid "The new email must be different" @@ -621,7 +621,7 @@ msgstr "" msgid "You don't have permission to delete this token" msgstr "" -#: lib/graphql/resolvers/admin.ex:56 +#: lib/graphql/resolvers/admin.ex:57 #, elixir-autogen, elixir-format msgid "You need to be logged-in and a moderator to list action logs" msgstr "" @@ -641,17 +641,17 @@ msgstr "" msgid "You need to be logged-in and a moderator to view a report" msgstr "" -#: lib/graphql/resolvers/admin.ex:258 +#: lib/graphql/resolvers/admin.ex:259 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" -#: lib/graphql/resolvers/admin.ex:242 +#: lib/graphql/resolvers/admin.ex:243 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" -#: lib/graphql/resolvers/admin.ex:283 +#: lib/graphql/resolvers/admin.ex:284 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" @@ -938,7 +938,7 @@ msgstr "" msgid "Failed to update the group" msgstr "" -#: lib/graphql/resolvers/admin.ex:357 +#: lib/graphql/resolvers/admin.ex:358 #: lib/graphql/resolvers/user.ex:547 #, elixir-autogen, elixir-format msgid "Failed to update user email" @@ -1069,22 +1069,22 @@ msgstr "" msgid "Your email seems to be using an invalid format" msgstr "" -#: lib/graphql/resolvers/admin.ex:399 +#: lib/graphql/resolvers/admin.ex:400 #, elixir-autogen, elixir-format msgid "Can't confirm an already confirmed user" msgstr "" -#: lib/graphql/resolvers/admin.ex:403 +#: lib/graphql/resolvers/admin.ex:404 #, elixir-autogen, elixir-format msgid "Deconfirming users is not supported" msgstr "" -#: lib/graphql/resolvers/admin.ex:375 +#: lib/graphql/resolvers/admin.ex:376 #, elixir-autogen, elixir-format, fuzzy msgid "The new role must be different" msgstr "" -#: lib/graphql/resolvers/admin.ex:314 +#: lib/graphql/resolvers/admin.ex:315 #, elixir-autogen, elixir-format, fuzzy msgid "You need to be logged-in and an administrator to edit an user's details" msgstr "" @@ -1094,7 +1094,7 @@ msgstr "" msgid "A profile or group with that name already exists" msgstr "" -#: lib/graphql/resolvers/admin.ex:542 +#: lib/graphql/resolvers/admin.ex:560 #, elixir-autogen, elixir-format msgid "Unable to find an instance to follow at this address" msgstr "" @@ -1356,7 +1356,7 @@ msgstr "" msgid "The same push subscription has already been registered" msgstr "" -#: lib/graphql/resolvers/admin.ex:536 +#: lib/graphql/resolvers/admin.ex:554 #, elixir-autogen, elixir-format msgid "This instance is pending follow approval" msgstr "" @@ -1366,7 +1366,7 @@ msgstr "" msgid "Timezone ID %{timezone} is invalid" msgstr "" -#: lib/graphql/resolvers/admin.ex:539 +#: lib/graphql/resolvers/admin.ex:557 #, elixir-autogen, elixir-format, fuzzy msgid "You are already following this instance" msgstr "" @@ -1386,12 +1386,12 @@ msgstr "" msgid "The token you provided is invalid. Make sure that the URL is exactly the one provided inside the email you got." msgstr "" -#: lib/graphql/resolvers/conversation.ex:161 +#: lib/graphql/resolvers/conversation.ex:164 #, elixir-autogen, elixir-format msgid "Conversation needs to mention at least one participant that's not yourself" msgstr "" -#: lib/graphql/resolvers/participant.ex:396 +#: lib/graphql/resolvers/participant.ex:401 #, elixir-autogen, elixir-format msgid "There are no participants matching the audience you've selected." msgstr "" diff --git a/priv/gettext/ca/LC_MESSAGES/activity.po b/priv/gettext/ca/LC_MESSAGES/activity.po index 60f297ccc..9fb8201be 100644 --- a/priv/gettext/ca/LC_MESSAGES/activity.po +++ b/priv/gettext/ca/LC_MESSAGES/activity.po @@ -222,7 +222,7 @@ msgstr "" #: lib/web/templates/email/email_direct_activity.html.heex:230 #: lib/web/templates/email/email_direct_activity.text.eex:23 -#, elixir-format +#, elixir-format, elixir-autogen msgid "View one more activity" msgid_plural "View %{count} more activities" msgstr[0] "" @@ -232,7 +232,7 @@ msgstr[1] "" #: lib/web/templates/email/email_direct_activity.html.heex:60 #: lib/web/templates/email/email_direct_activity.text.eex:6 #: lib/web/templates/email/email_direct_activity.text.eex:7 -#, elixir-format +#, elixir-format, elixir-autogen msgid "There has been an activity!" msgid_plural "There has been some activity!" msgstr[0] "" diff --git a/priv/gettext/ca/LC_MESSAGES/default.po b/priv/gettext/ca/LC_MESSAGES/default.po index 83921993b..19b4256d2 100644 --- a/priv/gettext/ca/LC_MESSAGES/default.po +++ b/priv/gettext/ca/LC_MESSAGES/default.po @@ -358,7 +358,7 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon a %{instance}: s'ha canviat l'adreça de correu" #: lib/web/email/notification.ex:52 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "Una activitat planificada per avui" @@ -366,7 +366,7 @@ msgstr[1] "%{nb_events} activitats planificades avui" #: lib/web/templates/email/on_day_notification.html.heex:47 #: lib/web/templates/email/on_day_notification.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "Tens una activitat avui:" @@ -416,14 +416,14 @@ msgid "You have been invited by %{inviter} to join group %{group}" msgstr "%{inviter} t'ha convidat al grup %{group}" #: lib/web/email/notification.ex:81 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "Una activitat planificada per aquesta setmana" msgstr[1] "%{nb_events} planificades per aquesta setmana" #: lib/web/email/notification.ex:107 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "Hi ha una soŀlicitud de participar a %{title} pendent de resoldre" @@ -433,7 +433,7 @@ msgstr[1] "" #: lib/web/templates/email/notification_each_week.html.heex:47 #: lib/web/templates/email/notification_each_week.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "Tens una activitat aquesta setmana:" @@ -925,7 +925,7 @@ msgstr "No ho facis servir més que proves, sisplau" #: lib/web/templates/email/notification_each_week.text.eex:11 #: lib/web/templates/email/on_day_notification.html.heex:89 #: lib/web/templates/email/on_day_notification.text.eex:11 -#, elixir-format +#, elixir-format, elixir-autogen msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "" @@ -1261,7 +1261,7 @@ msgstr "" "L'equip de moderació de la teva instància ha decidit suspendre el grup " "%{group_name} (%{group_address}). Ja no formes part del grup." -#: lib/web/email/group.ex:108 +#: lib/web/email/group.ex:106 #, elixir-autogen, elixir-format msgid "The group %{group} has been suspended on %{instance}" msgstr "El grup %{group} ha estat suspès a %{instance}" @@ -1375,12 +1375,6 @@ msgctxt "terms" msgid "We reserve the right to modify these Terms at any time. For instance, we may need to change these Terms if we come out with a new feature." msgstr "" -#: lib/web/templates/api/terms.html.heex:55 -#, elixir-autogen, elixir-format -msgctxt "terms" -msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by <a href=\"https://framasoft.org\">Framasoft</a>, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." -msgstr "" - #: lib/web/templates/api/terms.html.heex:105 #, elixir-autogen, elixir-format msgctxt "terms" @@ -1876,7 +1870,7 @@ msgstr "" #: lib/web/templates/email/pending_participation_notification.html.heex:47 #: lib/web/templates/email/pending_participation_notification.text.eex:4 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one pending attendance request to process for the following event:" msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" msgstr[0] "Tens una soŀlicitud de participació pendent de resoldre:" @@ -2283,3 +2277,9 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Well done!" msgstr "" + +#: lib/web/templates/api/terms.html.heex:55 +#, elixir-autogen, elixir-format, fuzzy +msgctxt "terms" +msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." +msgstr "" diff --git a/priv/gettext/ca/LC_MESSAGES/errors.po b/priv/gettext/ca/LC_MESSAGES/errors.po index 1bba8fcc0..9dea6fb34 100644 --- a/priv/gettext/ca/LC_MESSAGES/errors.po +++ b/priv/gettext/ca/LC_MESSAGES/errors.po @@ -182,13 +182,13 @@ msgstr "" msgid "The current password is invalid" msgstr "" -#: lib/graphql/resolvers/admin.ex:334 +#: lib/graphql/resolvers/admin.ex:335 #: lib/graphql/resolvers/user.ex:527 #, elixir-autogen, elixir-format msgid "The new email doesn't seem to be valid" msgstr "" -#: lib/graphql/resolvers/admin.ex:323 +#: lib/graphql/resolvers/admin.ex:324 #: lib/graphql/resolvers/user.ex:514 #, elixir-autogen, elixir-format msgid "The new email must be different" @@ -622,7 +622,7 @@ msgstr "" msgid "You don't have permission to delete this token" msgstr "" -#: lib/graphql/resolvers/admin.ex:56 +#: lib/graphql/resolvers/admin.ex:57 #, elixir-autogen, elixir-format msgid "You need to be logged-in and a moderator to list action logs" msgstr "" @@ -642,17 +642,17 @@ msgstr "" msgid "You need to be logged-in and a moderator to view a report" msgstr "" -#: lib/graphql/resolvers/admin.ex:258 +#: lib/graphql/resolvers/admin.ex:259 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" -#: lib/graphql/resolvers/admin.ex:242 +#: lib/graphql/resolvers/admin.ex:243 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" -#: lib/graphql/resolvers/admin.ex:283 +#: lib/graphql/resolvers/admin.ex:284 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" @@ -939,7 +939,7 @@ msgstr "" msgid "Failed to update the group" msgstr "" -#: lib/graphql/resolvers/admin.ex:357 +#: lib/graphql/resolvers/admin.ex:358 #: lib/graphql/resolvers/user.ex:547 #, elixir-autogen, elixir-format msgid "Failed to update user email" @@ -1070,22 +1070,22 @@ msgstr "" msgid "Your email seems to be using an invalid format" msgstr "" -#: lib/graphql/resolvers/admin.ex:399 +#: lib/graphql/resolvers/admin.ex:400 #, elixir-autogen, elixir-format msgid "Can't confirm an already confirmed user" msgstr "" -#: lib/graphql/resolvers/admin.ex:403 +#: lib/graphql/resolvers/admin.ex:404 #, elixir-autogen, elixir-format msgid "Deconfirming users is not supported" msgstr "" -#: lib/graphql/resolvers/admin.ex:375 +#: lib/graphql/resolvers/admin.ex:376 #, elixir-autogen, elixir-format, fuzzy msgid "The new role must be different" msgstr "" -#: lib/graphql/resolvers/admin.ex:314 +#: lib/graphql/resolvers/admin.ex:315 #, elixir-autogen, elixir-format, fuzzy msgid "You need to be logged-in and an administrator to edit an user's details" msgstr "" @@ -1095,7 +1095,7 @@ msgstr "" msgid "A profile or group with that name already exists" msgstr "" -#: lib/graphql/resolvers/admin.ex:542 +#: lib/graphql/resolvers/admin.ex:560 #, elixir-autogen, elixir-format msgid "Unable to find an instance to follow at this address" msgstr "" @@ -1357,7 +1357,7 @@ msgstr "" msgid "The same push subscription has already been registered" msgstr "" -#: lib/graphql/resolvers/admin.ex:536 +#: lib/graphql/resolvers/admin.ex:554 #, elixir-autogen, elixir-format msgid "This instance is pending follow approval" msgstr "" @@ -1367,7 +1367,7 @@ msgstr "" msgid "Timezone ID %{timezone} is invalid" msgstr "" -#: lib/graphql/resolvers/admin.ex:539 +#: lib/graphql/resolvers/admin.ex:557 #, elixir-autogen, elixir-format, fuzzy msgid "You are already following this instance" msgstr "" @@ -1387,12 +1387,12 @@ msgstr "" msgid "The token you provided is invalid. Make sure that the URL is exactly the one provided inside the email you got." msgstr "" -#: lib/graphql/resolvers/conversation.ex:161 +#: lib/graphql/resolvers/conversation.ex:164 #, elixir-autogen, elixir-format msgid "Conversation needs to mention at least one participant that's not yourself" msgstr "" -#: lib/graphql/resolvers/participant.ex:396 +#: lib/graphql/resolvers/participant.ex:401 #, elixir-autogen, elixir-format msgid "There are no participants matching the audience you've selected." msgstr "" diff --git a/priv/gettext/cs/LC_MESSAGES/activity.po b/priv/gettext/cs/LC_MESSAGES/activity.po index 9782ae98e..b70a63ab6 100644 --- a/priv/gettext/cs/LC_MESSAGES/activity.po +++ b/priv/gettext/cs/LC_MESSAGES/activity.po @@ -224,7 +224,7 @@ msgstr "" #: lib/web/templates/email/email_direct_activity.html.heex:230 #: lib/web/templates/email/email_direct_activity.text.eex:23 -#, elixir-format +#, elixir-format, elixir-autogen msgid "View one more activity" msgid_plural "View %{count} more activities" msgstr[0] "Zobrazit jednu další aktivitu" @@ -235,7 +235,7 @@ msgstr[2] "Zobrazit %{count} dalších aktivit" #: lib/web/templates/email/email_direct_activity.html.heex:60 #: lib/web/templates/email/email_direct_activity.text.eex:6 #: lib/web/templates/email/email_direct_activity.text.eex:7 -#, elixir-format +#, elixir-format, elixir-autogen msgid "There has been an activity!" msgid_plural "There has been some activity!" msgstr[0] "Došlo k aktivitě!" diff --git a/priv/gettext/cs/LC_MESSAGES/default.po b/priv/gettext/cs/LC_MESSAGES/default.po index c7430749a..ce02fdb3f 100644 --- a/priv/gettext/cs/LC_MESSAGES/default.po +++ b/priv/gettext/cs/LC_MESSAGES/default.po @@ -355,7 +355,7 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon na %{instance}: e-mail změněn" #: lib/web/email/notification.ex:52 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "Na dnešek je naplánována jedna událost" @@ -364,7 +364,7 @@ msgstr[2] "%{nb_events} událostí plánovaných na dnešek" #: lib/web/templates/email/on_day_notification.html.heex:47 #: lib/web/templates/email/on_day_notification.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "Dnes máte jednu událost:" @@ -415,7 +415,7 @@ msgid "You have been invited by %{inviter} to join group %{group}" msgstr "Byl/a jste pozván/a %{inviter} do skupiny %{group}" #: lib/web/email/notification.ex:81 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "Tento týden je naplánována jedna akce" @@ -423,7 +423,7 @@ msgstr[1] "%{nb_events} události plánované na tento týden" msgstr[2] "%{nb_events} událostí plánovaných na tento týden" #: lib/web/email/notification.ex:107 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "Jeden požadavek na účast pro událost %{title} ke zpracování" @@ -436,7 +436,7 @@ msgstr[2] "" #: lib/web/templates/email/notification_each_week.html.heex:47 #: lib/web/templates/email/notification_each_week.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "Tento týden máte jednu událost:" @@ -932,7 +932,7 @@ msgstr "Nepoužívejte ji pro skutečné účely." #: lib/web/templates/email/notification_each_week.text.eex:11 #: lib/web/templates/email/on_day_notification.html.heex:89 #: lib/web/templates/email/on_day_notification.text.eex:11 -#, elixir-format +#, elixir-format, elixir-autogen msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "" @@ -1278,7 +1278,7 @@ msgstr "" "Moderátorský tým vaší instance se rozhodl pozastavit %{group_name} " "(%{group_address}). Již nejste členem této skupiny." -#: lib/web/email/group.ex:108 +#: lib/web/email/group.ex:106 #, elixir-autogen, elixir-format msgid "The group %{group} has been suspended on %{instance}" msgstr "Skupina %{group} byla pozastavena na %{instance}" @@ -1403,20 +1403,6 @@ msgstr "" "Vyhrazujeme si právo tyto podmínky kdykoli změnit. Tyto podmínky můžeme " "například změnit, pokud přijdeme s novou funkcí." -#: lib/web/templates/api/terms.html.heex:55 -#, elixir-autogen, elixir-format -msgctxt "terms" -msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by <a href=\"https://framasoft.org\">Framasoft</a>, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." -msgstr "" -"Když v tomto dokumentu říkáme \"my\", \"naše\" nebo \"nás\", máme na mysli " -"vlastníky, provozovatele a správce této instance Mobilizon. Software " -"Mobilizon je poskytován týmem přispěvatelů Mobilizonu, který je podporován " -"<a href=\"https://framasoft.org\">Framasoft</a>, francouzskou neziskovou " -"organizací prosazující svobodný software. Pokud to není výslovně uvedeno, je " -"tato instance Mobilizonu nezávislou službou využívající zdrojový kód " -"Mobilizonu. Více informací o této instanci najdete na stránce <a href=\"/" -"about/instance\">\"O této instanci\"</a>." - #: lib/web/templates/api/terms.html.heex:105 #, elixir-autogen, elixir-format msgctxt "terms" @@ -1945,7 +1931,7 @@ msgstr "" #: lib/web/templates/email/pending_participation_notification.html.heex:47 #: lib/web/templates/email/pending_participation_notification.text.eex:4 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one pending attendance request to process for the following event:" msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" msgstr[0] "" @@ -2376,3 +2362,17 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Well done!" msgstr "" + +#: lib/web/templates/api/terms.html.heex:55 +#, elixir-autogen, elixir-format, fuzzy +msgctxt "terms" +msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." +msgstr "" +"Když v tomto dokumentu říkáme \"my\", \"naše\" nebo \"nás\", máme na mysli " +"vlastníky, provozovatele a správce této instance Mobilizon. Software " +"Mobilizon je poskytován týmem přispěvatelů Mobilizonu, který je podporován " +"<a href=\"https://framasoft.org\">Framasoft</a>, francouzskou neziskovou " +"organizací prosazující svobodný software. Pokud to není výslovně uvedeno, je " +"tato instance Mobilizonu nezávislou službou využívající zdrojový kód " +"Mobilizonu. Více informací o této instanci najdete na stránce <a href=\"/" +"about/instance\">\"O této instanci\"</a>." diff --git a/priv/gettext/cs/LC_MESSAGES/errors.po b/priv/gettext/cs/LC_MESSAGES/errors.po index 155943dfc..2125d4b4d 100644 --- a/priv/gettext/cs/LC_MESSAGES/errors.po +++ b/priv/gettext/cs/LC_MESSAGES/errors.po @@ -190,13 +190,13 @@ msgstr "Registrace nejsou otevřeny" msgid "The current password is invalid" msgstr "Aktuální heslo je neplatné" -#: lib/graphql/resolvers/admin.ex:334 +#: lib/graphql/resolvers/admin.ex:335 #: lib/graphql/resolvers/user.ex:527 #, elixir-autogen, elixir-format msgid "The new email doesn't seem to be valid" msgstr "Nový e-mail se nezdá být platný" -#: lib/graphql/resolvers/admin.ex:323 +#: lib/graphql/resolvers/admin.ex:324 #: lib/graphql/resolvers/user.ex:514 #, elixir-autogen, elixir-format msgid "The new email must be different" @@ -635,7 +635,7 @@ msgstr "Do této skupiny nelze zvát" msgid "You don't have permission to delete this token" msgstr "Nemáte oprávnění tento token odstranit" -#: lib/graphql/resolvers/admin.ex:56 +#: lib/graphql/resolvers/admin.ex:57 #, elixir-autogen, elixir-format msgid "You need to be logged-in and a moderator to list action logs" msgstr "" @@ -656,19 +656,19 @@ msgstr "Chcete-li aktualizovat zprávu, musíte být přihlášeni a být moder msgid "You need to be logged-in and a moderator to view a report" msgstr "Pro zobrazení zprávy musíte být přihlášeni a být moderátorem" -#: lib/graphql/resolvers/admin.ex:258 +#: lib/graphql/resolvers/admin.ex:259 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access admin settings" msgstr "Pro přístup k nastavení správce musíte být přihlášeni jako správce" -#: lib/graphql/resolvers/admin.ex:242 +#: lib/graphql/resolvers/admin.ex:243 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" "Pro přístup ke statistikám ovládacího panelu musíte být přihlášeni jako " "správce" -#: lib/graphql/resolvers/admin.ex:283 +#: lib/graphql/resolvers/admin.ex:284 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" @@ -959,7 +959,7 @@ msgstr "Nepodařilo se opustit událost" msgid "Failed to update the group" msgstr "Nepodařilo se aktualizovat skupinu" -#: lib/graphql/resolvers/admin.ex:357 +#: lib/graphql/resolvers/admin.ex:358 #: lib/graphql/resolvers/user.ex:547 #, elixir-autogen, elixir-format msgid "Failed to update user email" @@ -1090,22 +1090,22 @@ msgstr "Chcete-li odebrat člena, musíte být přihlášeni" msgid "Your email seems to be using an invalid format" msgstr "Váš e-mail zřejmě používá nesprávný formát" -#: lib/graphql/resolvers/admin.ex:399 +#: lib/graphql/resolvers/admin.ex:400 #, elixir-autogen, elixir-format msgid "Can't confirm an already confirmed user" msgstr "Nelze potvrdit již potvrzeného uživatele" -#: lib/graphql/resolvers/admin.ex:403 +#: lib/graphql/resolvers/admin.ex:404 #, elixir-autogen, elixir-format msgid "Deconfirming users is not supported" msgstr "Zrušení potvrzení uživatelů není podporováno" -#: lib/graphql/resolvers/admin.ex:375 +#: lib/graphql/resolvers/admin.ex:376 #, elixir-autogen, elixir-format msgid "The new role must be different" msgstr "Nová role musí být jiná" -#: lib/graphql/resolvers/admin.ex:314 +#: lib/graphql/resolvers/admin.ex:315 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to edit an user's details" msgstr "" @@ -1116,7 +1116,7 @@ msgstr "" msgid "A profile or group with that name already exists" msgstr "Profil nebo skupina s tímto názvem již existuje" -#: lib/graphql/resolvers/admin.ex:542 +#: lib/graphql/resolvers/admin.ex:560 #, elixir-autogen, elixir-format msgid "Unable to find an instance to follow at this address" msgstr "" @@ -1389,7 +1389,7 @@ msgstr "" msgid "The same push subscription has already been registered" msgstr "" -#: lib/graphql/resolvers/admin.ex:536 +#: lib/graphql/resolvers/admin.ex:554 #, elixir-autogen, elixir-format msgid "This instance is pending follow approval" msgstr "" @@ -1399,7 +1399,7 @@ msgstr "" msgid "Timezone ID %{timezone} is invalid" msgstr "" -#: lib/graphql/resolvers/admin.ex:539 +#: lib/graphql/resolvers/admin.ex:557 #, elixir-autogen, elixir-format, fuzzy msgid "You are already following this instance" msgstr "Tuto skupinu již sledujete" @@ -1419,12 +1419,12 @@ msgstr "" msgid "The token you provided is invalid. Make sure that the URL is exactly the one provided inside the email you got." msgstr "" -#: lib/graphql/resolvers/conversation.ex:161 +#: lib/graphql/resolvers/conversation.ex:164 #, elixir-autogen, elixir-format msgid "Conversation needs to mention at least one participant that's not yourself" msgstr "" -#: lib/graphql/resolvers/participant.ex:396 +#: lib/graphql/resolvers/participant.ex:401 #, elixir-autogen, elixir-format msgid "There are no participants matching the audience you've selected." msgstr "" diff --git a/priv/gettext/de/LC_MESSAGES/activity.po b/priv/gettext/de/LC_MESSAGES/activity.po index bebe75a70..f339bb3e0 100644 --- a/priv/gettext/de/LC_MESSAGES/activity.po +++ b/priv/gettext/de/LC_MESSAGES/activity.po @@ -228,7 +228,7 @@ msgstr "" #: lib/web/templates/email/email_direct_activity.html.heex:230 #: lib/web/templates/email/email_direct_activity.text.eex:23 -#, elixir-format +#, elixir-format, elixir-autogen msgid "View one more activity" msgid_plural "View %{count} more activities" msgstr[0] "%{count} weitere Aktivität anzeigen" @@ -238,7 +238,7 @@ msgstr[1] "Eine weitere Aktivität anzeigen" #: lib/web/templates/email/email_direct_activity.html.heex:60 #: lib/web/templates/email/email_direct_activity.text.eex:6 #: lib/web/templates/email/email_direct_activity.text.eex:7 -#, elixir-format +#, elixir-format, elixir-autogen msgid "There has been an activity!" msgid_plural "There has been some activity!" msgstr[0] "Es hat sich etwas getan!" diff --git a/priv/gettext/de/LC_MESSAGES/default.po b/priv/gettext/de/LC_MESSAGES/default.po index bba08e717..7967cf96b 100644 --- a/priv/gettext/de/LC_MESSAGES/default.po +++ b/priv/gettext/de/LC_MESSAGES/default.po @@ -365,7 +365,7 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon auf %{instance}: E-Mail geändert" #: lib/web/email/notification.ex:52 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "Ein Event wurde heute geplannt" @@ -373,7 +373,7 @@ msgstr[1] "%{nb_events} wurden heute geplannt" #: lib/web/templates/email/on_day_notification.html.heex:47 #: lib/web/templates/email/on_day_notification.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "Sie haben ein neues Event:" @@ -423,14 +423,14 @@ msgid "You have been invited by %{inviter} to join group %{group}" msgstr "Sie wurden von %{inviter} eingeladen, der Gruppe %{group} beizutreten" #: lib/web/email/notification.ex:81 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "Ein Event ist für diese Woche geplant" msgstr[1] "%{nb_events} Events sind für diese Woche geplant" #: lib/web/email/notification.ex:107 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "Eine Teilnahmeanfrage für die Veranstaltung %{title} zu bearbeiten" @@ -440,7 +440,7 @@ msgstr[1] "" #: lib/web/templates/email/notification_each_week.html.heex:47 #: lib/web/templates/email/notification_each_week.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "Sie haben diese Woche eine Veranstaltung:" @@ -960,7 +960,7 @@ msgstr "Bitte verwenden Sie es nicht für reale Zwecke." #: lib/web/templates/email/notification_each_week.text.eex:11 #: lib/web/templates/email/on_day_notification.html.heex:89 #: lib/web/templates/email/on_day_notification.text.eex:11 -#, elixir-format +#, elixir-format, elixir-autogen msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "" @@ -1309,7 +1309,7 @@ msgstr "" "(%{group_address}) zu suspendieren. Sie sind nicht länger ein Mitglied " "dieser Gruppe." -#: lib/web/email/group.ex:108 +#: lib/web/email/group.ex:106 #, elixir-autogen, elixir-format msgid "The group %{group} has been suspended on %{instance}" msgstr "Die Gruppe %{group} wurde auf %{instance} ausgesetzt" @@ -1439,21 +1439,6 @@ msgstr "" "Beispiel kann es sein, dass wir diese Bedingungen ändern müssen, wenn wir " "eine neue Funktion einführen." -#: lib/web/templates/api/terms.html.heex:55 -#, elixir-autogen, elixir-format -msgctxt "terms" -msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by <a href=\"https://framasoft.org\">Framasoft</a>, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." -msgstr "" -"Wenn wir in diesem Dokument „wir“, „unser“ oder „uns“ sagen, beziehen wir " -"uns auf die Eigentümer, Betreiber und Administratoren dieser Mobilizon-" -"Instanz. Die Mobilizon-Software wird vom Team der Mobilizon-Mitwirkenden " -"bereitgestellt, unterstützt von <a href=\"https://framasoft.org\">Framasoft</" -"a>, einer französischen Non-Profit-Organisation, die sich für freie/libre " -"Software einsetzt. Sofern nicht ausdrücklich angegeben, ist diese Mobilizon-" -"Instanz ein unabhängiger Dienst, der den Quellcode von Mobilizon verwendet. " -"Weitere Informationen über diese Instanz finden Sie auf der Seite <a href=\"/" -"about/instance\">„Über diese Instanz“</a>." - #: lib/web/templates/api/terms.html.heex:105 #, elixir-autogen, elixir-format msgctxt "terms" @@ -1998,7 +1983,7 @@ msgstr "" #: lib/web/templates/email/pending_participation_notification.html.heex:47 #: lib/web/templates/email/pending_participation_notification.text.eex:4 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one pending attendance request to process for the following event:" msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" msgstr[0] "Sie haben eine ausstehende Anwesenheitsanforderung zu bearbeiten:" @@ -2447,3 +2432,18 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Well done!" msgstr "" + +#: lib/web/templates/api/terms.html.heex:55 +#, elixir-autogen, elixir-format, fuzzy +msgctxt "terms" +msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." +msgstr "" +"Wenn wir in diesem Dokument „wir“, „unser“ oder „uns“ sagen, beziehen wir " +"uns auf die Eigentümer, Betreiber und Administratoren dieser Mobilizon-" +"Instanz. Die Mobilizon-Software wird vom Team der Mobilizon-Mitwirkenden " +"bereitgestellt, unterstützt von <a href=\"https://framasoft.org\">Framasoft</" +"a>, einer französischen Non-Profit-Organisation, die sich für freie/libre " +"Software einsetzt. Sofern nicht ausdrücklich angegeben, ist diese Mobilizon-" +"Instanz ein unabhängiger Dienst, der den Quellcode von Mobilizon verwendet. " +"Weitere Informationen über diese Instanz finden Sie auf der Seite <a href=\"/" +"about/instance\">„Über diese Instanz“</a>." diff --git a/priv/gettext/de/LC_MESSAGES/errors.po b/priv/gettext/de/LC_MESSAGES/errors.po index 21e17a9a8..5afeba246 100644 --- a/priv/gettext/de/LC_MESSAGES/errors.po +++ b/priv/gettext/de/LC_MESSAGES/errors.po @@ -185,13 +185,13 @@ msgstr "Registrierungen sind nicht geöffnet" msgid "The current password is invalid" msgstr "Das aktuelle Passwort ist ungültig" -#: lib/graphql/resolvers/admin.ex:334 +#: lib/graphql/resolvers/admin.ex:335 #: lib/graphql/resolvers/user.ex:527 #, elixir-autogen, elixir-format msgid "The new email doesn't seem to be valid" msgstr "Die neue E-Mail scheint nicht gültig zu sein" -#: lib/graphql/resolvers/admin.ex:323 +#: lib/graphql/resolvers/admin.ex:324 #: lib/graphql/resolvers/user.ex:514 #, elixir-autogen, elixir-format msgid "The new email must be different" @@ -637,7 +637,7 @@ msgstr "Sie können nicht in diese Gruppe einladen" msgid "You don't have permission to delete this token" msgstr "Sie haben nicht die Berechtigung diesen Token zu löschen" -#: lib/graphql/resolvers/admin.ex:56 +#: lib/graphql/resolvers/admin.ex:57 #, elixir-autogen, elixir-format msgid "You need to be logged-in and a moderator to list action logs" msgstr "" @@ -661,21 +661,21 @@ msgstr "" msgid "You need to be logged-in and a moderator to view a report" msgstr "Sie müssen eingeloggt und ein Moderator sein, um einen Bericht zu sehen" -#: lib/graphql/resolvers/admin.ex:258 +#: lib/graphql/resolvers/admin.ex:259 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" "Sie müssen angemeldet und ein Administrator sein, um auf die Admin-" "Einstellungen zugreifen zu können" -#: lib/graphql/resolvers/admin.ex:242 +#: lib/graphql/resolvers/admin.ex:243 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" "Sie müssen angemeldet und ein Administrator sein, um auf die Dashboard-" "Statistiken zugreifen zu können" -#: lib/graphql/resolvers/admin.ex:283 +#: lib/graphql/resolvers/admin.ex:284 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" @@ -974,7 +974,7 @@ msgstr "Das Verlassen der Veranstaltung fehlgeschlagen" msgid "Failed to update the group" msgstr "Aktualisierung der Gruppe fehlgeschlagen" -#: lib/graphql/resolvers/admin.ex:357 +#: lib/graphql/resolvers/admin.ex:358 #: lib/graphql/resolvers/user.ex:547 #, elixir-autogen, elixir-format msgid "Failed to update user email" @@ -1107,22 +1107,22 @@ msgstr "Sie müssen angemeldet sein, um ein Mitglied zu entfernen" msgid "Your email seems to be using an invalid format" msgstr "Ihre E-Mail scheint ein ungültiges Format zu verwenden" -#: lib/graphql/resolvers/admin.ex:399 +#: lib/graphql/resolvers/admin.ex:400 #, elixir-autogen, elixir-format msgid "Can't confirm an already confirmed user" msgstr "Kann einen bereits bestätigten Benutzer nicht bestätigen" -#: lib/graphql/resolvers/admin.ex:403 +#: lib/graphql/resolvers/admin.ex:404 #, elixir-autogen, elixir-format msgid "Deconfirming users is not supported" msgstr "Das Zurücknehmen einer Bestätigung von Benutzern wird nicht unterstützt" -#: lib/graphql/resolvers/admin.ex:375 +#: lib/graphql/resolvers/admin.ex:376 #, elixir-autogen, elixir-format msgid "The new role must be different" msgstr "Die neue Rolle muss anders sein" -#: lib/graphql/resolvers/admin.ex:314 +#: lib/graphql/resolvers/admin.ex:315 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to edit an user's details" msgstr "" @@ -1134,7 +1134,7 @@ msgstr "" msgid "A profile or group with that name already exists" msgstr "Ein Profil oder eine Gruppe mit diesem Namen existiert bereits" -#: lib/graphql/resolvers/admin.ex:542 +#: lib/graphql/resolvers/admin.ex:560 #, elixir-autogen, elixir-format msgid "Unable to find an instance to follow at this address" msgstr "Keine Instanz gefunden um dieser Adresse zu folgen" @@ -1401,7 +1401,7 @@ msgstr "" msgid "The same push subscription has already been registered" msgstr "" -#: lib/graphql/resolvers/admin.ex:536 +#: lib/graphql/resolvers/admin.ex:554 #, elixir-autogen, elixir-format msgid "This instance is pending follow approval" msgstr "" @@ -1411,7 +1411,7 @@ msgstr "" msgid "Timezone ID %{timezone} is invalid" msgstr "" -#: lib/graphql/resolvers/admin.ex:539 +#: lib/graphql/resolvers/admin.ex:557 #, elixir-autogen, elixir-format, fuzzy msgid "You are already following this instance" msgstr "Sie folgen dieser Gruppe bereits" @@ -1431,12 +1431,12 @@ msgstr "" msgid "The token you provided is invalid. Make sure that the URL is exactly the one provided inside the email you got." msgstr "" -#: lib/graphql/resolvers/conversation.ex:161 +#: lib/graphql/resolvers/conversation.ex:164 #, elixir-autogen, elixir-format msgid "Conversation needs to mention at least one participant that's not yourself" msgstr "" -#: lib/graphql/resolvers/participant.ex:396 +#: lib/graphql/resolvers/participant.ex:401 #, elixir-autogen, elixir-format msgid "There are no participants matching the audience you've selected." msgstr "" diff --git a/priv/gettext/default.pot b/priv/gettext/default.pot index b7984ecc1..205f33eac 100644 --- a/priv/gettext/default.pot +++ b/priv/gettext/default.pot @@ -300,7 +300,7 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "" #: lib/web/email/notification.ex:52 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "" @@ -308,7 +308,7 @@ msgstr[1] "" #: lib/web/templates/email/on_day_notification.html.heex:47 #: lib/web/templates/email/on_day_notification.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "" @@ -358,14 +358,14 @@ msgid "You have been invited by %{inviter} to join group %{group}" msgstr "" #: lib/web/email/notification.ex:81 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "" msgstr[1] "" #: lib/web/email/notification.ex:107 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "" @@ -373,7 +373,7 @@ msgstr[1] "" #: lib/web/templates/email/notification_each_week.html.heex:47 #: lib/web/templates/email/notification_each_week.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "" @@ -739,7 +739,7 @@ msgstr "" #: lib/web/templates/email/notification_each_week.text.eex:11 #: lib/web/templates/email/on_day_notification.html.heex:89 #: lib/web/templates/email/on_day_notification.text.eex:11 -#, elixir-format +#, elixir-format, elixir-autogen msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "" @@ -1035,7 +1035,7 @@ msgstr "" msgid "Your instance's moderation team has decided to suspend %{group_name} (%{group_address}). You are no longer a member of this group." msgstr "" -#: lib/web/email/group.ex:108 +#: lib/web/email/group.ex:106 #, elixir-autogen, elixir-format msgid "The group %{group} has been suspended on %{instance}" msgstr "" @@ -1119,12 +1119,6 @@ msgctxt "terms" msgid "We reserve the right to modify these Terms at any time. For instance, we may need to change these Terms if we come out with a new feature." msgstr "" -#: lib/web/templates/api/terms.html.heex:55 -#, elixir-autogen, elixir-format -msgctxt "terms" -msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by <a href=\"https://framasoft.org\">Framasoft</a>, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." -msgstr "" - #: lib/web/templates/api/terms.html.heex:105 #, elixir-autogen, elixir-format msgctxt "terms" @@ -1609,7 +1603,7 @@ msgstr "" #: lib/web/templates/email/pending_participation_notification.html.heex:47 #: lib/web/templates/email/pending_participation_notification.text.eex:4 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one pending attendance request to process for the following event:" msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" msgstr[0] "" @@ -2003,3 +1997,9 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Well done!" msgstr "" + +#: lib/web/templates/api/terms.html.heex:55 +#, elixir-autogen, elixir-format +msgctxt "terms" +msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." +msgstr "" diff --git a/priv/gettext/en/LC_MESSAGES/activity.po b/priv/gettext/en/LC_MESSAGES/activity.po index c353e4c67..d6b3b55c3 100644 --- a/priv/gettext/en/LC_MESSAGES/activity.po +++ b/priv/gettext/en/LC_MESSAGES/activity.po @@ -215,7 +215,7 @@ msgstr "" #: lib/web/templates/email/email_direct_activity.html.heex:230 #: lib/web/templates/email/email_direct_activity.text.eex:23 -#, elixir-format +#, elixir-format, elixir-autogen msgid "View one more activity" msgid_plural "View %{count} more activities" msgstr[0] "" @@ -225,7 +225,7 @@ msgstr[1] "" #: lib/web/templates/email/email_direct_activity.html.heex:60 #: lib/web/templates/email/email_direct_activity.text.eex:6 #: lib/web/templates/email/email_direct_activity.text.eex:7 -#, elixir-format +#, elixir-format, elixir-autogen msgid "There has been an activity!" msgid_plural "There has been some activity!" msgstr[0] "" diff --git a/priv/gettext/en/LC_MESSAGES/default.po b/priv/gettext/en/LC_MESSAGES/default.po index 6fd213077..0e744bd99 100644 --- a/priv/gettext/en/LC_MESSAGES/default.po +++ b/priv/gettext/en/LC_MESSAGES/default.po @@ -353,7 +353,7 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "" #: lib/web/email/notification.ex:52 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "" @@ -361,7 +361,7 @@ msgstr[1] "" #: lib/web/templates/email/on_day_notification.html.heex:47 #: lib/web/templates/email/on_day_notification.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "" @@ -411,14 +411,14 @@ msgid "You have been invited by %{inviter} to join group %{group}" msgstr "" #: lib/web/email/notification.ex:81 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "" msgstr[1] "" #: lib/web/email/notification.ex:107 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "" @@ -426,7 +426,7 @@ msgstr[1] "" #: lib/web/templates/email/notification_each_week.html.heex:47 #: lib/web/templates/email/notification_each_week.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "" @@ -792,7 +792,7 @@ msgstr "Please do not use it in any real way" #: lib/web/templates/email/notification_each_week.text.eex:11 #: lib/web/templates/email/on_day_notification.html.heex:89 #: lib/web/templates/email/on_day_notification.text.eex:11 -#, elixir-format +#, elixir-format, elixir-autogen msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "If you need to cancel your participation, just access the event page through link above and click on the participation button." @@ -1088,7 +1088,7 @@ msgstr "" msgid "Your instance's moderation team has decided to suspend %{group_name} (%{group_address}). You are no longer a member of this group." msgstr "" -#: lib/web/email/group.ex:108 +#: lib/web/email/group.ex:106 #, elixir-autogen, elixir-format msgid "The group %{group} has been suspended on %{instance}" msgstr "" @@ -1172,12 +1172,6 @@ msgctxt "terms" msgid "We reserve the right to modify these Terms at any time. For instance, we may need to change these Terms if we come out with a new feature." msgstr "" -#: lib/web/templates/api/terms.html.heex:55 -#, elixir-autogen, elixir-format -msgctxt "terms" -msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by <a href=\"https://framasoft.org\">Framasoft</a>, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." -msgstr "" - #: lib/web/templates/api/terms.html.heex:105 #, elixir-autogen, elixir-format msgctxt "terms" @@ -1662,7 +1656,7 @@ msgstr "" #: lib/web/templates/email/pending_participation_notification.html.heex:47 #: lib/web/templates/email/pending_participation_notification.text.eex:4 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one pending attendance request to process for the following event:" msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" msgstr[0] "" @@ -2098,3 +2092,9 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Well done!" msgstr "" + +#: lib/web/templates/api/terms.html.heex:55 +#, elixir-autogen, elixir-format, fuzzy +msgctxt "terms" +msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." +msgstr "" diff --git a/priv/gettext/en/LC_MESSAGES/errors.po b/priv/gettext/en/LC_MESSAGES/errors.po index a53b425f8..072eb9654 100644 --- a/priv/gettext/en/LC_MESSAGES/errors.po +++ b/priv/gettext/en/LC_MESSAGES/errors.po @@ -185,13 +185,13 @@ msgstr "" msgid "The current password is invalid" msgstr "" -#: lib/graphql/resolvers/admin.ex:334 +#: lib/graphql/resolvers/admin.ex:335 #: lib/graphql/resolvers/user.ex:527 #, elixir-autogen, elixir-format msgid "The new email doesn't seem to be valid" msgstr "" -#: lib/graphql/resolvers/admin.ex:323 +#: lib/graphql/resolvers/admin.ex:324 #: lib/graphql/resolvers/user.ex:514 #, elixir-autogen, elixir-format msgid "The new email must be different" @@ -625,7 +625,7 @@ msgstr "" msgid "You don't have permission to delete this token" msgstr "" -#: lib/graphql/resolvers/admin.ex:56 +#: lib/graphql/resolvers/admin.ex:57 #, elixir-autogen, elixir-format msgid "You need to be logged-in and a moderator to list action logs" msgstr "" @@ -645,17 +645,17 @@ msgstr "" msgid "You need to be logged-in and a moderator to view a report" msgstr "" -#: lib/graphql/resolvers/admin.ex:258 +#: lib/graphql/resolvers/admin.ex:259 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" -#: lib/graphql/resolvers/admin.ex:242 +#: lib/graphql/resolvers/admin.ex:243 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" -#: lib/graphql/resolvers/admin.ex:283 +#: lib/graphql/resolvers/admin.ex:284 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" @@ -942,7 +942,7 @@ msgstr "" msgid "Failed to update the group" msgstr "" -#: lib/graphql/resolvers/admin.ex:357 +#: lib/graphql/resolvers/admin.ex:358 #: lib/graphql/resolvers/user.ex:547 #, elixir-autogen, elixir-format msgid "Failed to update user email" @@ -1073,22 +1073,22 @@ msgstr "" msgid "Your email seems to be using an invalid format" msgstr "" -#: lib/graphql/resolvers/admin.ex:399 +#: lib/graphql/resolvers/admin.ex:400 #, elixir-autogen, elixir-format msgid "Can't confirm an already confirmed user" msgstr "" -#: lib/graphql/resolvers/admin.ex:403 +#: lib/graphql/resolvers/admin.ex:404 #, elixir-autogen, elixir-format msgid "Deconfirming users is not supported" msgstr "" -#: lib/graphql/resolvers/admin.ex:375 +#: lib/graphql/resolvers/admin.ex:376 #, elixir-autogen, elixir-format, fuzzy msgid "The new role must be different" msgstr "" -#: lib/graphql/resolvers/admin.ex:314 +#: lib/graphql/resolvers/admin.ex:315 #, elixir-autogen, elixir-format, fuzzy msgid "You need to be logged-in and an administrator to edit an user's details" msgstr "" @@ -1098,7 +1098,7 @@ msgstr "" msgid "A profile or group with that name already exists" msgstr "" -#: lib/graphql/resolvers/admin.ex:542 +#: lib/graphql/resolvers/admin.ex:560 #, elixir-autogen, elixir-format msgid "Unable to find an instance to follow at this address" msgstr "" @@ -1360,7 +1360,7 @@ msgstr "" msgid "The same push subscription has already been registered" msgstr "" -#: lib/graphql/resolvers/admin.ex:536 +#: lib/graphql/resolvers/admin.ex:554 #, elixir-autogen, elixir-format msgid "This instance is pending follow approval" msgstr "" @@ -1370,7 +1370,7 @@ msgstr "" msgid "Timezone ID %{timezone} is invalid" msgstr "" -#: lib/graphql/resolvers/admin.ex:539 +#: lib/graphql/resolvers/admin.ex:557 #, elixir-autogen, elixir-format, fuzzy msgid "You are already following this instance" msgstr "" @@ -1390,12 +1390,12 @@ msgstr "" msgid "The token you provided is invalid. Make sure that the URL is exactly the one provided inside the email you got." msgstr "" -#: lib/graphql/resolvers/conversation.ex:161 +#: lib/graphql/resolvers/conversation.ex:164 #, elixir-autogen, elixir-format msgid "Conversation needs to mention at least one participant that's not yourself" msgstr "" -#: lib/graphql/resolvers/participant.ex:396 +#: lib/graphql/resolvers/participant.ex:401 #, elixir-autogen, elixir-format msgid "There are no participants matching the audience you've selected." msgstr "" diff --git a/priv/gettext/errors.pot b/priv/gettext/errors.pot index 43ce04214..546a73a5d 100644 --- a/priv/gettext/errors.pot +++ b/priv/gettext/errors.pot @@ -3,7 +3,6 @@ ## `msgid`s here are often extracted from source code. ## Add new translations manually only if they're dynamic ## translations that can't be statically extracted. -## ## Run `mix gettext.extract` to bring this file up to ## date. Leave `msgstr`s empty as changing them here as no ## effect: edit them in PO (`.po`) files instead. @@ -182,13 +181,13 @@ msgstr "" msgid "The current password is invalid" msgstr "" -#: lib/graphql/resolvers/admin.ex:334 +#: lib/graphql/resolvers/admin.ex:335 #: lib/graphql/resolvers/user.ex:527 #, elixir-autogen, elixir-format msgid "The new email doesn't seem to be valid" msgstr "" -#: lib/graphql/resolvers/admin.ex:323 +#: lib/graphql/resolvers/admin.ex:324 #: lib/graphql/resolvers/user.ex:514 #, elixir-autogen, elixir-format msgid "The new email must be different" @@ -622,7 +621,7 @@ msgstr "" msgid "You don't have permission to delete this token" msgstr "" -#: lib/graphql/resolvers/admin.ex:56 +#: lib/graphql/resolvers/admin.ex:57 #, elixir-autogen, elixir-format msgid "You need to be logged-in and a moderator to list action logs" msgstr "" @@ -642,17 +641,17 @@ msgstr "" msgid "You need to be logged-in and a moderator to view a report" msgstr "" -#: lib/graphql/resolvers/admin.ex:258 +#: lib/graphql/resolvers/admin.ex:259 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" -#: lib/graphql/resolvers/admin.ex:242 +#: lib/graphql/resolvers/admin.ex:243 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" -#: lib/graphql/resolvers/admin.ex:283 +#: lib/graphql/resolvers/admin.ex:284 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" @@ -939,7 +938,7 @@ msgstr "" msgid "Failed to update the group" msgstr "" -#: lib/graphql/resolvers/admin.ex:357 +#: lib/graphql/resolvers/admin.ex:358 #: lib/graphql/resolvers/user.ex:547 #, elixir-autogen, elixir-format msgid "Failed to update user email" @@ -1070,22 +1069,22 @@ msgstr "" msgid "Your email seems to be using an invalid format" msgstr "" -#: lib/graphql/resolvers/admin.ex:399 +#: lib/graphql/resolvers/admin.ex:400 #, elixir-autogen, elixir-format msgid "Can't confirm an already confirmed user" msgstr "" -#: lib/graphql/resolvers/admin.ex:403 +#: lib/graphql/resolvers/admin.ex:404 #, elixir-autogen, elixir-format msgid "Deconfirming users is not supported" msgstr "" -#: lib/graphql/resolvers/admin.ex:375 +#: lib/graphql/resolvers/admin.ex:376 #, elixir-autogen, elixir-format msgid "The new role must be different" msgstr "" -#: lib/graphql/resolvers/admin.ex:314 +#: lib/graphql/resolvers/admin.ex:315 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to edit an user's details" msgstr "" @@ -1095,7 +1094,7 @@ msgstr "" msgid "A profile or group with that name already exists" msgstr "" -#: lib/graphql/resolvers/admin.ex:542 +#: lib/graphql/resolvers/admin.ex:560 #, elixir-autogen, elixir-format msgid "Unable to find an instance to follow at this address" msgstr "" @@ -1357,7 +1356,7 @@ msgstr "" msgid "The same push subscription has already been registered" msgstr "" -#: lib/graphql/resolvers/admin.ex:536 +#: lib/graphql/resolvers/admin.ex:554 #, elixir-autogen, elixir-format msgid "This instance is pending follow approval" msgstr "" @@ -1367,7 +1366,7 @@ msgstr "" msgid "Timezone ID %{timezone} is invalid" msgstr "" -#: lib/graphql/resolvers/admin.ex:539 +#: lib/graphql/resolvers/admin.ex:557 #, elixir-autogen, elixir-format msgid "You are already following this instance" msgstr "" @@ -1387,12 +1386,12 @@ msgstr "" msgid "The token you provided is invalid. Make sure that the URL is exactly the one provided inside the email you got." msgstr "" -#: lib/graphql/resolvers/conversation.ex:161 +#: lib/graphql/resolvers/conversation.ex:164 #, elixir-autogen, elixir-format msgid "Conversation needs to mention at least one participant that's not yourself" msgstr "" -#: lib/graphql/resolvers/participant.ex:396 +#: lib/graphql/resolvers/participant.ex:401 #, elixir-autogen, elixir-format msgid "There are no participants matching the audience you've selected." msgstr "" diff --git a/priv/gettext/es/LC_MESSAGES/activity.po b/priv/gettext/es/LC_MESSAGES/activity.po index 1f02db2ec..ee0d7fe2f 100644 --- a/priv/gettext/es/LC_MESSAGES/activity.po +++ b/priv/gettext/es/LC_MESSAGES/activity.po @@ -227,7 +227,7 @@ msgstr "" #: lib/web/templates/email/email_direct_activity.html.heex:230 #: lib/web/templates/email/email_direct_activity.text.eex:23 -#, elixir-format +#, elixir-format, elixir-autogen msgid "View one more activity" msgid_plural "View %{count} more activities" msgstr[0] "Ver una actividad más" @@ -237,7 +237,7 @@ msgstr[1] "Ver %{count} actividades más" #: lib/web/templates/email/email_direct_activity.html.heex:60 #: lib/web/templates/email/email_direct_activity.text.eex:6 #: lib/web/templates/email/email_direct_activity.text.eex:7 -#, elixir-format +#, elixir-format, elixir-autogen msgid "There has been an activity!" msgid_plural "There has been some activity!" msgstr[0] "¡Ha habido una actividad!" diff --git a/priv/gettext/es/LC_MESSAGES/default.po b/priv/gettext/es/LC_MESSAGES/default.po index 90574afca..acf4ab265 100644 --- a/priv/gettext/es/LC_MESSAGES/default.po +++ b/priv/gettext/es/LC_MESSAGES/default.po @@ -360,7 +360,7 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon en %{instance}: correo electrónico modificado" #: lib/web/email/notification.ex:52 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "Un evento programado para hoy" @@ -368,7 +368,7 @@ msgstr[1] "%{nb_events} eventos planeados hoy" #: lib/web/templates/email/on_day_notification.html.heex:47 #: lib/web/templates/email/on_day_notification.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "Tienes un evento hoy:" @@ -418,14 +418,14 @@ msgid "You have been invited by %{inviter} to join group %{group}" msgstr "%{Inviter} te ha invitado a unirte al grupo %{group}" #: lib/web/email/notification.ex:81 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "Un evento programado para hoy" msgstr[1] "%{nb_events} eventos planeados hoy" #: lib/web/email/notification.ex:107 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "Una solicitud para participar en el evento %{title} a procesar" @@ -435,7 +435,7 @@ msgstr[1] "" #: lib/web/templates/email/notification_each_week.html.heex:47 #: lib/web/templates/email/notification_each_week.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "Tienes un evento hoy:" @@ -938,7 +938,7 @@ msgstr "Por favor no lo use de ninguna manera real." #: lib/web/templates/email/notification_each_week.text.eex:11 #: lib/web/templates/email/on_day_notification.html.heex:89 #: lib/web/templates/email/on_day_notification.text.eex:11 -#, elixir-format +#, elixir-format, elixir-autogen msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "" @@ -1275,7 +1275,7 @@ msgstr "" "El equipo de moderación de su instancia ha decidido suspender a " "%{group_name} (%{group_address}). Ya no eres miembro de este grupo." -#: lib/web/email/group.ex:108 +#: lib/web/email/group.ex:106 #, elixir-autogen, elixir-format msgid "The group %{group} has been suspended on %{instance}" msgstr "El grupo %{group} ha sido suspendido en %{instance}" @@ -1406,22 +1406,6 @@ msgstr "" "Por ejemplo, es posible que necesitemos cambiar estos Términos si " "presentamos una nueva función o por alguna otra razón." -#: lib/web/templates/api/terms.html.heex:55 -#, elixir-autogen, elixir-format -msgctxt "terms" -msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by <a href=\"https://framasoft.org\">Framasoft</a>, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." -msgstr "" -"Cuando decimos \"nosotros\", \"nuestro\" o \"nosotros\" en este documento, " -"nos referimos a los propietarios, operadores y administradores de esta " -"instancia de Mobilizon. El software de Mobilizon es proporcionado por el " -"equipo de contribuyentes de Mobilizon, respaldado por <a href=\"https://" -"framasoft.org\"> Framasoft </a>, una organización educativa popular francesa " -"sin fines de lucro que aboga por el Software Libre. A menos que se indique " -"explícitamente, esta instancia de Mobilizon es un servicio independiente que " -"utiliza el código fuente de Mobilizon. Puede encontrar más información sobre " -"esta instancia en la página <a href=\"/about/instance\"> \"Acerca de esta " -"instancia\" </a>." - #: lib/web/templates/api/terms.html.heex:105 #, elixir-autogen, elixir-format msgctxt "terms" @@ -1949,7 +1933,7 @@ msgstr "" #: lib/web/templates/email/pending_participation_notification.html.heex:47 #: lib/web/templates/email/pending_participation_notification.text.eex:4 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one pending attendance request to process for the following event:" msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" msgstr[0] "Tiene una solicitud de participación pendiente de procesar:" @@ -2380,3 +2364,19 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Well done!" msgstr "" + +#: lib/web/templates/api/terms.html.heex:55 +#, elixir-autogen, elixir-format, fuzzy +msgctxt "terms" +msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." +msgstr "" +"Cuando decimos \"nosotros\", \"nuestro\" o \"nosotros\" en este documento, " +"nos referimos a los propietarios, operadores y administradores de esta " +"instancia de Mobilizon. El software de Mobilizon es proporcionado por el " +"equipo de contribuyentes de Mobilizon, respaldado por <a href=\"https://" +"framasoft.org\"> Framasoft </a>, una organización educativa popular francesa " +"sin fines de lucro que aboga por el Software Libre. A menos que se indique " +"explícitamente, esta instancia de Mobilizon es un servicio independiente que " +"utiliza el código fuente de Mobilizon. Puede encontrar más información sobre " +"esta instancia en la página <a href=\"/about/instance\"> \"Acerca de esta " +"instancia\" </a>." diff --git a/priv/gettext/es/LC_MESSAGES/errors.po b/priv/gettext/es/LC_MESSAGES/errors.po index e5dc3ffdb..e5bfa6cc5 100644 --- a/priv/gettext/es/LC_MESSAGES/errors.po +++ b/priv/gettext/es/LC_MESSAGES/errors.po @@ -183,13 +183,13 @@ msgstr "Las inscripciones no están abiertas" msgid "The current password is invalid" msgstr "La contraseña actual no es válida" -#: lib/graphql/resolvers/admin.ex:334 +#: lib/graphql/resolvers/admin.ex:335 #: lib/graphql/resolvers/user.ex:527 #, elixir-autogen, elixir-format msgid "The new email doesn't seem to be valid" msgstr "El nuevo correo electrónico no parece ser válido" -#: lib/graphql/resolvers/admin.ex:323 +#: lib/graphql/resolvers/admin.ex:324 #: lib/graphql/resolvers/user.ex:514 #, elixir-autogen, elixir-format msgid "The new email must be different" @@ -631,7 +631,7 @@ msgstr "No puedes invitar a este grupo" msgid "You don't have permission to delete this token" msgstr "No tienes permiso para eliminar este token" -#: lib/graphql/resolvers/admin.ex:56 +#: lib/graphql/resolvers/admin.ex:57 #, elixir-autogen, elixir-format msgid "You need to be logged-in and a moderator to list action logs" msgstr "" @@ -652,21 +652,21 @@ msgstr "Debe iniciar sesión y ser un moderador para actualizar un informe" msgid "You need to be logged-in and a moderator to view a report" msgstr "Debe iniciar sesión y ser un moderador para actualizar un informe" -#: lib/graphql/resolvers/admin.ex:258 +#: lib/graphql/resolvers/admin.ex:259 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" "Debe iniciar sesión y ser administrador para acceder a la configuración de " "administrador" -#: lib/graphql/resolvers/admin.ex:242 +#: lib/graphql/resolvers/admin.ex:243 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" "Debe iniciar sesión y ser administrador para acceder a las estadísticas del " "panel" -#: lib/graphql/resolvers/admin.ex:283 +#: lib/graphql/resolvers/admin.ex:284 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" @@ -964,7 +964,7 @@ msgstr "No se pudo salir del evento" msgid "Failed to update the group" msgstr "No se pudo actualizar el grupo" -#: lib/graphql/resolvers/admin.ex:357 +#: lib/graphql/resolvers/admin.ex:358 #: lib/graphql/resolvers/user.ex:547 #, elixir-autogen, elixir-format msgid "Failed to update user email" @@ -1096,22 +1096,22 @@ msgstr "Debes iniciar sesión para eliminar un miembro" msgid "Your email seems to be using an invalid format" msgstr "Su correo electrónico parece estar usando un formato no válido" -#: lib/graphql/resolvers/admin.ex:399 +#: lib/graphql/resolvers/admin.ex:400 #, elixir-autogen, elixir-format msgid "Can't confirm an already confirmed user" msgstr "No puedo confirmar un usuario ya confirmado" -#: lib/graphql/resolvers/admin.ex:403 +#: lib/graphql/resolvers/admin.ex:404 #, elixir-autogen, elixir-format msgid "Deconfirming users is not supported" msgstr "No se admite la desconfirmación de usuarios" -#: lib/graphql/resolvers/admin.ex:375 +#: lib/graphql/resolvers/admin.ex:376 #, elixir-autogen, elixir-format msgid "The new role must be different" msgstr "El nuevo rol debe ser diferente" -#: lib/graphql/resolvers/admin.ex:314 +#: lib/graphql/resolvers/admin.ex:315 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to edit an user's details" msgstr "" @@ -1123,7 +1123,7 @@ msgstr "" msgid "A profile or group with that name already exists" msgstr "Ya existe un perfil o grupo con ese nombre" -#: lib/graphql/resolvers/admin.ex:542 +#: lib/graphql/resolvers/admin.ex:560 #, elixir-autogen, elixir-format msgid "Unable to find an instance to follow at this address" msgstr "No se puede encontrar una instancia para seguir en esta dirección" @@ -1387,7 +1387,7 @@ msgstr "" msgid "The same push subscription has already been registered" msgstr "" -#: lib/graphql/resolvers/admin.ex:536 +#: lib/graphql/resolvers/admin.ex:554 #, elixir-autogen, elixir-format msgid "This instance is pending follow approval" msgstr "" @@ -1397,7 +1397,7 @@ msgstr "" msgid "Timezone ID %{timezone} is invalid" msgstr "" -#: lib/graphql/resolvers/admin.ex:539 +#: lib/graphql/resolvers/admin.ex:557 #, elixir-autogen, elixir-format, fuzzy msgid "You are already following this instance" msgstr "Ya estas siguiendo este grupo" @@ -1418,12 +1418,12 @@ msgstr "" msgid "The token you provided is invalid. Make sure that the URL is exactly the one provided inside the email you got." msgstr "" -#: lib/graphql/resolvers/conversation.ex:161 +#: lib/graphql/resolvers/conversation.ex:164 #, elixir-autogen, elixir-format msgid "Conversation needs to mention at least one participant that's not yourself" msgstr "" -#: lib/graphql/resolvers/participant.ex:396 +#: lib/graphql/resolvers/participant.ex:401 #, elixir-autogen, elixir-format msgid "There are no participants matching the audience you've selected." msgstr "" diff --git a/priv/gettext/fi/LC_MESSAGES/activity.po b/priv/gettext/fi/LC_MESSAGES/activity.po index 725753ff5..2a31ccb79 100644 --- a/priv/gettext/fi/LC_MESSAGES/activity.po +++ b/priv/gettext/fi/LC_MESSAGES/activity.po @@ -224,7 +224,7 @@ msgstr "" #: lib/web/templates/email/email_direct_activity.html.heex:230 #: lib/web/templates/email/email_direct_activity.text.eex:23 -#, elixir-format +#, elixir-format, elixir-autogen msgid "View one more activity" msgid_plural "View %{count} more activities" msgstr[0] "Näytä seuraava toimenpide" @@ -234,7 +234,7 @@ msgstr[1] "Näytä %{count} seuraavaa toimenpidettä" #: lib/web/templates/email/email_direct_activity.html.heex:60 #: lib/web/templates/email/email_direct_activity.text.eex:6 #: lib/web/templates/email/email_direct_activity.text.eex:7 -#, elixir-format +#, elixir-format, elixir-autogen msgid "There has been an activity!" msgid_plural "There has been some activity!" msgstr[0] "Toimenpide!" diff --git a/priv/gettext/fi/LC_MESSAGES/default.po b/priv/gettext/fi/LC_MESSAGES/default.po index 2b01c700c..0d374cd68 100644 --- a/priv/gettext/fi/LC_MESSAGES/default.po +++ b/priv/gettext/fi/LC_MESSAGES/default.po @@ -354,7 +354,7 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon palvelimella %{instance}: sähköpostiosoite vaihdettu" #: lib/web/email/notification.ex:52 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "Yksi suunniteltu tapahtuma tänään" @@ -362,7 +362,7 @@ msgstr[1] "%{nb_events} suunniteltua tapahtumaa tänään" #: lib/web/templates/email/on_day_notification.html.heex:47 #: lib/web/templates/email/on_day_notification.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "Sinulla on tänään yksi tapahtuma:" @@ -412,14 +412,14 @@ msgid "You have been invited by %{inviter} to join group %{group}" msgstr "%{inviter} kutsui sinut ryhmään %{group}" #: lib/web/email/notification.ex:81 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "Yksi suunniteltu tapahtuma tällä viikolla" msgstr[1] "%{nb_events} suunniteltua tapahtumaa tällä viikolla" #: lib/web/email/notification.ex:107 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "Yksi osallistujapyyntö tapahtumaan %{title} odottaa käsittelyä" @@ -429,7 +429,7 @@ msgstr[1] "" #: lib/web/templates/email/notification_each_week.html.heex:47 #: lib/web/templates/email/notification_each_week.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "Sinulla on tällä viikolla yksi tapahtuma:" @@ -920,7 +920,7 @@ msgstr "Älä käytä todellisiin tarkoituksiin." #: lib/web/templates/email/notification_each_week.text.eex:11 #: lib/web/templates/email/on_day_notification.html.heex:89 #: lib/web/templates/email/on_day_notification.text.eex:11 -#, elixir-format +#, elixir-format, elixir-autogen msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "" @@ -1256,7 +1256,7 @@ msgstr "" "Palvelimesi moderointitiimi on päättänyt estää ryhmän %{group_name} " "(%{group_address}). Et ole enää tämän ryhmän jäsen." -#: lib/web/email/group.ex:108 +#: lib/web/email/group.ex:106 #, elixir-autogen, elixir-format msgid "The group %{group} has been suspended on %{instance}" msgstr "Ryhmä %{group} on estetty palvelimella %{instance}" @@ -1378,20 +1378,6 @@ msgstr "" "esimerkiksi olla tarpeen muuttaa, jos käyttöön otetaan uusia ominaisuuksia, " "tai muusta syystä." -#: lib/web/templates/api/terms.html.heex:55 -#, elixir-autogen, elixir-format -msgctxt "terms" -msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by <a href=\"https://framasoft.org\">Framasoft</a>, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." -msgstr "" -"Tässä asiakirjassa ”me” tarkoittaa tämän Mobilizon-palvelimen omistajia, " -"operaattoreita ja ylläpitäjiä. Mobilizon-ohjelman on tuottanut Mobilizon-" -"toteuttajatiimi, ja tuotantoa on tukenut <a href=\"https://framasoft.org\"" -">Framasoft</a>, joka on ranskalainen voittoa tavoittelematon, vapaiden ja " -"ilmaisten ohjelmistojen käyttöä edistävä kansansivistysjärjestö. Ellei " -"toisin mainita, tämä Mobilizon-palvelin on Mobilizonin lähdekoodia käyttävä " -"itsenäinen palvelu. Voit lukea lisää tästä palvelimesta <a href=\"/about/" -"instance\">”Tietoja tästä palvelimesta” -sivulta</a>." - #: lib/web/templates/api/terms.html.heex:105 #, elixir-autogen, elixir-format msgctxt "terms" @@ -1915,7 +1901,7 @@ msgstr "" #: lib/web/templates/email/pending_participation_notification.html.heex:47 #: lib/web/templates/email/pending_participation_notification.text.eex:4 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one pending attendance request to process for the following event:" msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" msgstr[0] "Yksi osallistujapyyntö odottaa käsittelyäsi:" @@ -2320,3 +2306,17 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Well done!" msgstr "" + +#: lib/web/templates/api/terms.html.heex:55 +#, elixir-autogen, elixir-format, fuzzy +msgctxt "terms" +msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." +msgstr "" +"Tässä asiakirjassa ”me” tarkoittaa tämän Mobilizon-palvelimen omistajia, " +"operaattoreita ja ylläpitäjiä. Mobilizon-ohjelman on tuottanut Mobilizon-" +"toteuttajatiimi, ja tuotantoa on tukenut <a href=\"https://framasoft.org\"" +">Framasoft</a>, joka on ranskalainen voittoa tavoittelematon, vapaiden ja " +"ilmaisten ohjelmistojen käyttöä edistävä kansansivistysjärjestö. Ellei " +"toisin mainita, tämä Mobilizon-palvelin on Mobilizonin lähdekoodia käyttävä " +"itsenäinen palvelu. Voit lukea lisää tästä palvelimesta <a href=\"/about/" +"instance\">”Tietoja tästä palvelimesta” -sivulta</a>." diff --git a/priv/gettext/fi/LC_MESSAGES/errors.po b/priv/gettext/fi/LC_MESSAGES/errors.po index 478c1105b..230379e3b 100644 --- a/priv/gettext/fi/LC_MESSAGES/errors.po +++ b/priv/gettext/fi/LC_MESSAGES/errors.po @@ -183,13 +183,13 @@ msgstr "Ei voi rekisteröityä" msgid "The current password is invalid" msgstr "Nykyinen salasana ei kelpaa" -#: lib/graphql/resolvers/admin.ex:334 +#: lib/graphql/resolvers/admin.ex:335 #: lib/graphql/resolvers/user.ex:527 #, elixir-autogen, elixir-format msgid "The new email doesn't seem to be valid" msgstr "Uusi sähköpostiosoite ei vaikuta kelvolliselta" -#: lib/graphql/resolvers/admin.ex:323 +#: lib/graphql/resolvers/admin.ex:324 #: lib/graphql/resolvers/user.ex:514 #, elixir-autogen, elixir-format msgid "The new email must be different" @@ -628,7 +628,7 @@ msgstr "Et voi kutsua tähän ryhmään" msgid "You don't have permission to delete this token" msgstr "Sinulla ei ole oikeutta poistaa tätä merkkiä" -#: lib/graphql/resolvers/admin.ex:56 +#: lib/graphql/resolvers/admin.ex:57 #, elixir-autogen, elixir-format msgid "You need to be logged-in and a moderator to list action logs" msgstr "Toimintalokien katselu vain moderaattorille sisäänkirjautuneena" @@ -648,17 +648,17 @@ msgstr "Raportin päivittäminen vain moderaattorille sisäänkirjautuneena" msgid "You need to be logged-in and a moderator to view a report" msgstr "Raportin katselu vain moderaattorille sisäänkirjautuneena" -#: lib/graphql/resolvers/admin.ex:258 +#: lib/graphql/resolvers/admin.ex:259 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access admin settings" msgstr "Pääsy ylläpitoasetuksiin vain ylläpitäjälle sisäänkirjautuneena" -#: lib/graphql/resolvers/admin.ex:242 +#: lib/graphql/resolvers/admin.ex:243 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "Pääsy koontinäytön tilastoihin vain ylläpitäjälle sisäänkirjautuneena" -#: lib/graphql/resolvers/admin.ex:283 +#: lib/graphql/resolvers/admin.ex:284 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to save admin settings" msgstr "Ylläpitoasetusten tallennus vain ylläpitäjälle sisäänkirjautuneena" @@ -945,7 +945,7 @@ msgstr "" msgid "Failed to update the group" msgstr "" -#: lib/graphql/resolvers/admin.ex:357 +#: lib/graphql/resolvers/admin.ex:358 #: lib/graphql/resolvers/user.ex:547 #, elixir-autogen, elixir-format msgid "Failed to update user email" @@ -1076,22 +1076,22 @@ msgstr "" msgid "Your email seems to be using an invalid format" msgstr "" -#: lib/graphql/resolvers/admin.ex:399 +#: lib/graphql/resolvers/admin.ex:400 #, elixir-autogen, elixir-format msgid "Can't confirm an already confirmed user" msgstr "" -#: lib/graphql/resolvers/admin.ex:403 +#: lib/graphql/resolvers/admin.ex:404 #, elixir-autogen, elixir-format msgid "Deconfirming users is not supported" msgstr "" -#: lib/graphql/resolvers/admin.ex:375 +#: lib/graphql/resolvers/admin.ex:376 #, elixir-autogen, elixir-format, fuzzy msgid "The new role must be different" msgstr "Uuden sähköpostiosoitteen on poikettava vanhasta" -#: lib/graphql/resolvers/admin.ex:314 +#: lib/graphql/resolvers/admin.ex:315 #, elixir-autogen, elixir-format, fuzzy msgid "You need to be logged-in and an administrator to edit an user's details" msgstr "Ylläpitoasetusten tallennus vain ylläpitäjälle sisäänkirjautuneena" @@ -1101,7 +1101,7 @@ msgstr "Ylläpitoasetusten tallennus vain ylläpitäjälle sisäänkirjautuneena msgid "A profile or group with that name already exists" msgstr "" -#: lib/graphql/resolvers/admin.ex:542 +#: lib/graphql/resolvers/admin.ex:560 #, elixir-autogen, elixir-format msgid "Unable to find an instance to follow at this address" msgstr "" @@ -1363,7 +1363,7 @@ msgstr "" msgid "The same push subscription has already been registered" msgstr "" -#: lib/graphql/resolvers/admin.ex:536 +#: lib/graphql/resolvers/admin.ex:554 #, elixir-autogen, elixir-format msgid "This instance is pending follow approval" msgstr "" @@ -1373,7 +1373,7 @@ msgstr "" msgid "Timezone ID %{timezone} is invalid" msgstr "" -#: lib/graphql/resolvers/admin.ex:539 +#: lib/graphql/resolvers/admin.ex:557 #, elixir-autogen, elixir-format, fuzzy msgid "You are already following this instance" msgstr "" @@ -1393,12 +1393,12 @@ msgstr "" msgid "The token you provided is invalid. Make sure that the URL is exactly the one provided inside the email you got." msgstr "" -#: lib/graphql/resolvers/conversation.ex:161 +#: lib/graphql/resolvers/conversation.ex:164 #, elixir-autogen, elixir-format msgid "Conversation needs to mention at least one participant that's not yourself" msgstr "" -#: lib/graphql/resolvers/participant.ex:396 +#: lib/graphql/resolvers/participant.ex:401 #, elixir-autogen, elixir-format msgid "There are no participants matching the audience you've selected." msgstr "" diff --git a/priv/gettext/fr/LC_MESSAGES/activity.po b/priv/gettext/fr/LC_MESSAGES/activity.po index ba0c3650a..835c8deb9 100644 --- a/priv/gettext/fr/LC_MESSAGES/activity.po +++ b/priv/gettext/fr/LC_MESSAGES/activity.po @@ -224,7 +224,7 @@ msgstr "Vous ne voulez pas recevoir de notifications d'activité ? Vous pouvez #: lib/web/templates/email/email_direct_activity.html.heex:230 #: lib/web/templates/email/email_direct_activity.text.eex:23 -#, elixir-format +#, elixir-format, elixir-autogen msgid "View one more activity" msgid_plural "View %{count} more activities" msgstr[0] "Voir une activité de plus" @@ -234,7 +234,7 @@ msgstr[1] "Voir %{count} activités de plus" #: lib/web/templates/email/email_direct_activity.html.heex:60 #: lib/web/templates/email/email_direct_activity.text.eex:6 #: lib/web/templates/email/email_direct_activity.text.eex:7 -#, elixir-format +#, elixir-format, elixir-autogen msgid "There has been an activity!" msgid_plural "There has been some activity!" msgstr[0] "Il y a eu une activité !" diff --git a/priv/gettext/fr/LC_MESSAGES/default.po b/priv/gettext/fr/LC_MESSAGES/default.po index f99961124..489962327 100644 --- a/priv/gettext/fr/LC_MESSAGES/default.po +++ b/priv/gettext/fr/LC_MESSAGES/default.po @@ -10,19 +10,25 @@ msgid "" msgstr "" "Project-Id-Version: \n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2023-12-06 18:50+0100\n" +"PO-Revision-Date: 2024-02-29 10:37+0100\n" "Last-Translator: Thomas Citharel <thomas.citharel@framasoft.org>\n" -"Language-Team: French <https://weblate.framasoft.org/projects/mobilizon/backend/fr/>\n" +"Language-Team: French <https://weblate.framasoft.org/projects/mobilizon/backend/" +"fr/>\n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Poedit 3.4\n" +"X-Generator: Poedit 3.4.2\n" #: lib/web/templates/email/password_reset.html.heex:66 -msgid "If you didn't request this, please ignore this email. Your password won't change until you access the link below and create a new one." -msgstr "Si vous n'avez pas demandé ceci, vous pouvez ignorer cet email. Votre mot de passe ne changera pas tant que vous n'en créerez pas un nouveau en cliquant sur le lien ci-dessous." +msgid "" +"If you didn't request this, please ignore this email. Your password won't " +"change until you access the link below and create a new one." +msgstr "" +"Si vous n'avez pas demandé ceci, vous pouvez ignorer cet email. Votre mot de " +"passe ne changera pas tant que vous n'en créerez pas un nouveau en cliquant sur " +"le lien ci-dessous." #: lib/web/templates/email/report.html.heex:121 msgid "%{title} by %{creator}" @@ -32,7 +38,8 @@ msgstr "%{title} par %{creator}" msgid "Activate my account" msgstr "Activer mon compte" -#: lib/web/templates/email/email.html.heex:150 lib/web/templates/email/email.text.eex:9 +#: lib/web/templates/email/email.html.heex:150 +#: lib/web/templates/email/email.text.eex:9 msgid "Ask the community on Framacolibri" msgstr "Demander à la communauté sur Framacolibri" @@ -53,8 +60,12 @@ msgid "Reset Password" msgstr "Réinitialiser mon mot de passe" #: lib/web/templates/email/password_reset.html.heex:53 -msgid "Resetting your password is easy. Just press the button below and follow the instructions. We'll have you up and running in no time." -msgstr "Réinitialiser votre mot de passe est facile. Cliquez simplement sur le bouton et suivez les inscriptions. Vous serez opérationnel en un rien de temps." +msgid "" +"Resetting your password is easy. Just press the button below and follow the " +"instructions. We'll have you up and running in no time." +msgstr "" +"Réinitialiser votre mot de passe est facile. Cliquez simplement sur le bouton " +"et suivez les inscriptions. Vous serez opérationnel en un rien de temps." #: lib/web/email/user.ex:26 msgid "Instructions to confirm your Mobilizon account on %{instance}" @@ -64,7 +75,8 @@ msgstr "Instructions pour confirmer votre compte Mobilizon sur %{instance}" msgid "New report on Mobilizon instance %{instance}" msgstr "Nouveau signalement sur l'instance Mobilizon %{instance}" -#: lib/web/templates/email/before_event_notification.html.heex:65 lib/web/templates/email/before_event_notification.text.eex:4 +#: lib/web/templates/email/before_event_notification.html.heex:65 +#: lib/web/templates/email/before_event_notification.text.eex:4 msgid "Go to event page" msgstr "Aller à la page de l'événement" @@ -76,17 +88,26 @@ msgstr "Nouveau signalement de la part de %{reporter} sur %{instance}" msgid "Participation approved" msgstr "Participation approuvée" -#: lib/web/templates/email/password_reset.html.heex:18 lib/web/templates/email/password_reset.text.eex:1 +#: lib/web/templates/email/password_reset.html.heex:18 +#: lib/web/templates/email/password_reset.text.eex:1 msgid "Password reset" msgstr "Réinitialisation du mot de passe" #: lib/web/templates/email/password_reset.text.eex:7 -msgid "Resetting your password is easy. Just click the link below and follow the instructions. We'll have you up and running in no time." -msgstr "Réinitialiser votre mot de passe est facile. Cliquez simplement sur le bouton et suivez les instructions. Vous serez opérationnel en un rien de temps." +msgid "" +"Resetting your password is easy. Just click the link below and follow the " +"instructions. We'll have you up and running in no time." +msgstr "" +"Réinitialiser votre mot de passe est facile. Cliquez simplement sur le bouton " +"et suivez les instructions. Vous serez opérationnel en un rien de temps." #: lib/web/templates/email/registration_confirmation.text.eex:5 -msgid "You created an account on %{host} with this email address. You are one click away from activating it. If this wasn't you, please ignore this email." -msgstr "Vous avez créé un compte sur %{host} avec cette adresse email. Vous êtes à un clic de l'activer." +msgid "" +"You created an account on %{host} with this email address. You are one click " +"away from activating it. If this wasn't you, please ignore this email." +msgstr "" +"Vous avez créé un compte sur %{host} avec cette adresse email. Vous êtes à un " +"clic de l'activer." #: lib/web/email/participation.ex:115 msgid "Your participation to event %{title} has been approved" @@ -106,7 +127,8 @@ msgstr "Nouveau titre : %{title}" #: lib/web/templates/email/password_reset.text.eex:5 msgid "You requested a new password for your account on %{instance}." -msgstr "Vous avez demandé un nouveau mot de passe pour votre compte sur %{instance}." +msgstr "" +"Vous avez demandé un nouveau mot de passe pour votre compte sur %{instance}." #: lib/web/templates/email/email.html.heex:105 msgid "Warning" @@ -128,8 +150,10 @@ msgstr "Une identité utilisateur·ice interne" #: lib/web/templates/api/privacy.html.heex:47 msgctxt "terms" -msgid "Any of the information we collect from you may be used in the following ways:" -msgstr "Les informations que nous vous nous fournissez pourront être utilisées ainsi :" +msgid "" +"Any of the information we collect from you may be used in the following ways:" +msgstr "" +"Les informations que nous vous nous fournissez pourront être utilisées ainsi :" #: lib/web/templates/api/privacy.html.heex:13 msgctxt "terms" @@ -168,8 +192,11 @@ msgstr "Événements publiés et commentaires" #: lib/web/templates/api/privacy.html.heex:93 msgctxt "terms" -msgid "Retain the IP addresses associated with registered users no more than 12 months." -msgstr "Ne pas conserver les adresses IP associées aux utilisateur·ices enregistrés pas plus de 12 mois." +msgid "" +"Retain the IP addresses associated with registered users no more than 12 months." +msgstr "" +"Ne pas conserver les adresses IP associées aux utilisateur·ices enregistrés pas " +"plus de 12 mois." #: lib/web/templates/api/privacy.html.heex:107 msgctxt "terms" @@ -178,13 +205,19 @@ msgstr "Jetons pour vous identifier" #: lib/web/templates/api/privacy.html.heex:38 msgctxt "terms" -msgid "We also may retain server logs which include the IP address of every request to our server." -msgstr "Nous pouvons également conserver les données d'authentification y compris les adresses IP de toutes les requêtes de notre serveur." +msgid "" +"We also may retain server logs which include the IP address of every request to " +"our server." +msgstr "" +"Nous pouvons également conserver les données d'authentification y compris les " +"adresses IP de toutes les requêtes de notre serveur." #: lib/web/templates/api/privacy.html.heex:102 msgctxt "terms" msgid "We store the following information on your device when you connect:" -msgstr "Nous conservons les informations suivantes sur votre appareil lorsque vous vous connectez :" +msgstr "" +"Nous conservons les informations suivantes sur votre appareil lorsque vous vous " +"connectez :" #: lib/web/templates/api/privacy.html.heex:84 msgctxt "terms" @@ -213,23 +246,51 @@ msgstr "Modifications de notre politique de confidentialité" #: lib/web/templates/api/privacy.html.heex:139 msgctxt "terms" -msgid "If this server is in the EU or the EEA: Our site, products and services are all directed to people who are at least 16 years old. If you are under the age of 16, per the requirements of the GDPR (<a href=\"https://en.wikipedia.org/wiki/General_Data_Protection_Regulation\">General Data Protection Regulation</a>) do not use this site." -msgstr "Si ce serveur est dans l'Union Européenne ou dans l'Espace Economique Européen : nos sites, produits et services sont tous destinés aux personnes âgées de plus de 16 ans. Si vous avez moins de 16 ans, suivant le RGPD (<a href=\"https://fr.wikipedia.org/wiki/R%C3%A8glement_g%C3%A9n%C3%A9ral_sur_la_protection_des_donn%C3%A9es\">Règlement général sur la protection des données</a>), n'utilisez pas ce site." +msgid "" +"If this server is in the EU or the EEA: Our site, products and services are all " +"directed to people who are at least 16 years old. If you are under the age of " +"16, per the requirements of the GDPR (<a href=\"https://en.wikipedia.org/wiki/" +"General_Data_Protection_Regulation\">General Data Protection Regulation</a>) do " +"not use this site." +msgstr "" +"Si ce serveur est dans l'Union Européenne ou dans l'Espace Economique " +"Européen : nos sites, produits et services sont tous destinés aux personnes " +"âgées de plus de 16 ans. Si vous avez moins de 16 ans, suivant le RGPD (<a " +"href=\"https://fr.wikipedia.org/wiki/" +"R%C3%A8glement_g%C3%A9n%C3%A9ral_sur_la_protection_des_donn%C3%A9es\">Règlement " +"général sur la protection des données</a>), n'utilisez pas ce site." #: lib/web/templates/api/privacy.html.heex:146 msgctxt "terms" -msgid "If this server is in the USA: Our site, products and services are all directed to people who are at least 13 years old. If you are under the age of 13, per the requirements of COPPA (<a href=\"https://en.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act\">Children's Online Privacy Protection Act</a>) do not use this site." -msgstr "Si le serveur est situé aux Etats-Unis : Notre site, nos produits et services sont tous à destination de personnes agées d'au moins 13 ans. Si vous avez moins de 13 ans, d'après les recommandations de COOPA (<a href=\"https://en.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act\">Children's Online Privacy Protection Act</a>) n'utilisez pas ce site." +msgid "" +"If this server is in the USA: Our site, products and services are all directed " +"to people who are at least 13 years old. If you are under the age of 13, per " +"the requirements of COPPA (<a href=\"https://en.wikipedia.org/wiki/" +"Children%27s_Online_Privacy_Protection_Act\">Children's Online Privacy " +"Protection Act</a>) do not use this site." +msgstr "" +"Si le serveur est situé aux Etats-Unis : Notre site, nos produits et services " +"sont tous à destination de personnes agées d'au moins 13 ans. Si vous avez " +"moins de 13 ans, d'après les recommandations de COOPA (<a href=\"https://en." +"wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act\">Children's " +"Online Privacy Protection Act</a>) n'utilisez pas ce site." #: lib/web/templates/api/privacy.html.heex:160 msgctxt "terms" -msgid "If we decide to change our privacy policy, we will post those changes on this page." -msgstr "Si nous décidons de changer notre politique de confidentialité, nous présenterons ces changements sur cette page." +msgid "" +"If we decide to change our privacy policy, we will post those changes on this " +"page." +msgstr "" +"Si nous décidons de changer notre politique de confidentialité, nous " +"présenterons ces changements sur cette page." #: lib/web/templates/api/privacy.html.heex:153 msgctxt "terms" -msgid "Law requirements can be different if this server is in another jurisdiction." -msgstr "Les conditions juridiques peuvent différer si le serveur est sous une autre juridiction." +msgid "" +"Law requirements can be different if this server is in another jurisdiction." +msgstr "" +"Les conditions juridiques peuvent différer si le serveur est sous une autre " +"juridiction." #: lib/web/templates/api/privacy.html.heex:137 msgctxt "terms" @@ -239,31 +300,43 @@ msgstr "Utilisation du site par des mineurs" #: lib/web/templates/api/privacy.html.heex:68 msgctxt "terms" msgid "" -"The email address you provide may be used to send you information, updates and notifications about other people\n" -" interacting with your content or sending you messages and to respond to inquiries, and/or other requests or\n" +"The email address you provide may be used to send you information, updates and " +"notifications about other people\n" +" interacting with your content or sending you messages and to respond to " +"inquiries, and/or other requests or\n" " questions." msgstr "" -"L'adresse électronique que vous nous fournissez peut être utilisée pour vous envoyer des informations, des mises à jour et des notifications concernant d'autres personnes\n" -"qui interagissent avec vos contenus ou vous envoient des messages et pour répondre à des demandes,\n" +"L'adresse électronique que vous nous fournissez peut être utilisée pour vous " +"envoyer des informations, des mises à jour et des notifications concernant " +"d'autres personnes\n" +"qui interagissent avec vos contenus ou vous envoient des messages et pour " +"répondre à des demandes,\n" "et/ou à d'autres requêtes ou questions." #: lib/web/templates/api/privacy.html.heex:61 msgctxt "terms" msgid "" -"To aid moderation of the community, for example comparing your IP address with other known ones to determine ban\n" +"To aid moderation of the community, for example comparing your IP address with " +"other known ones to determine ban\n" " evasion or other violations." msgstr "" -"Afin d'aider à la modération de la communauté, par exemple en comparant votre adresse IP avec d'autres adresses connues\n" -"dans le but de détecter des tentatives de contournement d'un bannissement ou d'autres violations." +"Afin d'aider à la modération de la communauté, par exemple en comparant votre " +"adresse IP avec d'autres adresses connues\n" +"dans le but de détecter des tentatives de contournement d'un bannissement ou " +"d'autres violations." #: lib/web/templates/api/privacy.html.heex:54 msgctxt "terms" msgid "" -"To provide the core functionality of Mobilizon. Depending on this instance's policy you may only be able to\n" -" interact with other people's content and post your own content if you are logged in." +"To provide the core functionality of Mobilizon. Depending on this instance's " +"policy you may only be able to\n" +" interact with other people's content and post your own content if you are " +"logged in." msgstr "" -"Fournir la fonctionnalité de base de Mobilizon. Selon la politique de cette instance, vous ne pourrez interagir\n" -"avec le contenu d'autres personnes et publier votre propre contenu que si vous êtes connecté." +"Fournir la fonctionnalité de base de Mobilizon. Selon la politique de cette " +"instance, vous ne pourrez interagir\n" +"avec le contenu d'autres personnes et publier votre propre contenu que si vous " +"êtes connecté." #: lib/web/templates/api/privacy.html.heex:10 msgctxt "terms" @@ -284,7 +357,8 @@ msgid_plural "%{nb_events} events planned today" msgstr[0] "Un événement prévu aujourd'hui" msgstr[1] "%{nb_events} événements prévus aujourd'hui" -#: lib/web/templates/email/on_day_notification.html.heex:47 lib/web/templates/email/on_day_notification.text.eex:3 +#: lib/web/templates/email/on_day_notification.html.heex:47 +#: lib/web/templates/email/on_day_notification.text.eex:3 msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "Vous avez un événement aujourd'hui :" @@ -294,7 +368,8 @@ msgstr[1] "Vous avez %{total} événements aujourd'hui :" msgid "%{inviter} just invited you to join their group %{group}" msgstr "%{inviter} vient de vous inviter à rejoindre son groupe %{group}" -#: lib/web/templates/email/group_invite.html.heex:18 lib/web/templates/email/group_invite.text.eex:1 +#: lib/web/templates/email/group_invite.html.heex:18 +#: lib/web/templates/email/group_invite.text.eex:1 msgid "Come along!" msgstr "Rejoignez-nous !" @@ -302,7 +377,8 @@ msgstr "Rejoignez-nous !" msgid "Don't forget to go to %{title}" msgstr "N'oubliez pas de vous rendre à %{title}" -#: lib/web/templates/email/before_event_notification.html.heex:47 lib/web/templates/email/before_event_notification.text.eex:3 +#: lib/web/templates/email/before_event_notification.html.heex:47 +#: lib/web/templates/email/before_event_notification.text.eex:3 msgid "Get ready for %{title}" msgstr "Préparez vous pour %{title}" @@ -310,7 +386,8 @@ msgstr "Préparez vous pour %{title}" msgid "See my groups" msgstr "Voir mes groupes" -#: lib/web/templates/email/group_invite.html.heex:65 lib/web/templates/email/group_invite.text.eex:5 +#: lib/web/templates/email/group_invite.html.heex:65 +#: lib/web/templates/email/group_invite.text.eex:5 msgid "To accept this invitation, head over to your groups." msgstr "Pour accepter cette invitation, rendez-vous dans vos groupes." @@ -330,11 +407,16 @@ msgstr[1] "%{nb_events} événements prévus cette semaine" #: lib/web/email/notification.ex:107 msgid "One participation request for event %{title} to process" -msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" +msgid_plural "" +"%{number_participation_requests} participation requests for event %{title} to " +"process" msgstr[0] "Une demande de participation à l'événement %{title} à traiter" -msgstr[1] "%{number_participation_requests} demandes de participation à l'événement %{title} à traiter" +msgstr[1] "" +"%{number_participation_requests} demandes de participation à l'événement " +"%{title} à traiter" -#: lib/web/templates/email/notification_each_week.html.heex:47 lib/web/templates/email/notification_each_week.text.eex:3 +#: lib/web/templates/email/notification_each_week.html.heex:47 +#: lib/web/templates/email/notification_each_week.text.eex:3 msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "Vous avez un événement aujourd'hui :" @@ -346,13 +428,39 @@ msgstr "L'organisateur·ice de l'événement n'a pas ajouté de description." #: lib/web/templates/api/privacy.html.heex:78 msgctxt "terms" -msgid "We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information. Among other things, your browser session, as well as the traffic between your applications and the API, are secured with SSL/TLS, and your password is hashed using a strong one-way algorithm." -msgstr "Nous utilisons plusieurs mesures de sécurité pour assurer la confidentialité de vos informations personnelles lorsque vous soumettez ou accédez à vos informations. Entre autres, votre session de navigateur et la connexion entre vos applications et l'API sont sécurisés par SSL/TLS, et votre mot de passe est haché avec un algorithme fort à sens unique." +msgid "" +"We implement a variety of security measures to maintain the safety of your " +"personal information when you enter, submit, or access your personal " +"information. Among other things, your browser session, as well as the traffic " +"between your applications and the API, are secured with SSL/TLS, and your " +"password is hashed using a strong one-way algorithm." +msgstr "" +"Nous utilisons plusieurs mesures de sécurité pour assurer la confidentialité de " +"vos informations personnelles lorsque vous soumettez ou accédez à vos " +"informations. Entre autres, votre session de navigateur et la connexion entre " +"vos applications et l'API sont sécurisés par SSL/TLS, et votre mot de passe est " +"haché avec un algorithme fort à sens unique." #: lib/web/templates/api/privacy.html.heex:126 msgctxt "terms" -msgid "No. We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our site, conducting our business, or servicing you, so long as those parties agree to keep this information confidential. We may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety." -msgstr "Non. Nous ne vendons, n’échangeons ou ne transférons d’une quelque manière que soit des informations permettant de vous identifier personnellement. Cela n’inclut pas les tierces parties de confiance qui nous aident à opérer ce site, à conduire nos activités commerciales ou à vous servir, tant qu’elles acceptent de garder ces informations confidentielles. Nous sommes également susceptibles de partager vos informations quand nous pensons que c’est nécessaire pour nous conformer à la loi, pour appliquer les politiques de notre site ainsi que pour défendre nos droits, notre propriété, notre sécurité et celles et ceux d’autres personnes." +msgid "" +"No. We do not sell, trade, or otherwise transfer to outside parties your " +"personally identifiable information. This does not include trusted third " +"parties who assist us in operating our site, conducting our business, or " +"servicing you, so long as those parties agree to keep this information " +"confidential. We may also release your information when we believe release is " +"appropriate to comply with the law, enforce our site policies, or protect ours " +"or others rights, property, or safety." +msgstr "" +"Non. Nous ne vendons, n’échangeons ou ne transférons d’une quelque manière que " +"soit des informations permettant de vous identifier personnellement. Cela " +"n’inclut pas les tierces parties de confiance qui nous aident à opérer ce site, " +"à conduire nos activités commerciales ou à vous servir, tant qu’elles acceptent " +"de garder ces informations confidentielles. Nous sommes également susceptibles " +"de partager vos informations quand nous pensons que c’est nécessaire pour nous " +"conformer à la loi, pour appliquer les politiques de notre site ainsi que pour " +"défendre nos droits, notre propriété, notre sécurité et celles et ceux d’autres " +"personnes." #: lib/web/templates/api/terms.html.heex:62 msgctxt "terms" @@ -366,33 +474,70 @@ msgstr "Modifications de ces Conditions d'Utilisation" #: lib/web/templates/api/terms.html.heex:271 msgctxt "terms" -msgid "A lot of the content on the Service is from you and others, and we don't review, verify or authenticate it, and it may include inaccuracies or false information. We make no representations, warranties, or guarantees relating to the quality, suitability, truth, accuracy or completeness of any content contained in the Service. You acknowledge sole responsibility for and assume all risk arising from your use of or reliance on any content." -msgstr "Une grande partie du contenu du Service provient de vous et d'autres personnes, et nous ne l'examinons, ne le vérifions ni ne l'authentifions, et il peut contenir des inexactitudes ou de fausses informations. Nous ne faisons aucune déclaration, garantie ou assurance concernant la qualité, la pertinence, la véracité, l'exactitude ou l'exhaustivité de tout contenu du Service. Vous reconnaissez être seul responsable et assumez tous les risques découlant de votre utilisation ou de votre confiance dans tout contenu." +msgid "" +"A lot of the content on the Service is from you and others, and we don't " +"review, verify or authenticate it, and it may include inaccuracies or false " +"information. We make no representations, warranties, or guarantees relating to " +"the quality, suitability, truth, accuracy or completeness of any content " +"contained in the Service. You acknowledge sole responsibility for and assume " +"all risk arising from your use of or reliance on any content." +msgstr "" +"Une grande partie du contenu du Service provient de vous et d'autres personnes, " +"et nous ne l'examinons, ne le vérifions ni ne l'authentifions, et il peut " +"contenir des inexactitudes ou de fausses informations. Nous ne faisons aucune " +"déclaration, garantie ou assurance concernant la qualité, la pertinence, la " +"véracité, l'exactitude ou l'exhaustivité de tout contenu du Service. Vous " +"reconnaissez être seul responsable et assumez tous les risques découlant de " +"votre utilisation ou de votre confiance dans tout contenu." #: lib/web/templates/api/terms.html.heex:192 msgctxt "terms" -msgid "Also, you agree that you will not do any of the following in connection with the Service or other users:" -msgstr "De plus, vous acceptez de ne pas faire ce qui suit en relation avec le Service ou les autres utilisateur·ices :" +msgid "" +"Also, you agree that you will not do any of the following in connection with " +"the Service or other users:" +msgstr "" +"De plus, vous acceptez de ne pas faire ce qui suit en relation avec le Service " +"ou les autres utilisateur·ices :" #: lib/web/templates/api/terms.html.heex:217 msgctxt "terms" -msgid "Circumvent or attempt to circumvent any filtering, security measures, rate limits or other features designed to protect the Service, users of the Service, or third parties." -msgstr "Contourner ou tenter de contourner tout filtrage, mesures de sécurité, limites d'accès ou autres caractéristiques destinées à protéger le Service, les utilisateur·ices du Service ou des tiers." +msgid "" +"Circumvent or attempt to circumvent any filtering, security measures, rate " +"limits or other features designed to protect the Service, users of the Service, " +"or third parties." +msgstr "" +"Contourner ou tenter de contourner tout filtrage, mesures de sécurité, limites " +"d'accès ou autres caractéristiques destinées à protéger le Service, les " +"utilisateur·ices du Service ou des tiers." #: lib/web/templates/api/terms.html.heex:211 msgctxt "terms" -msgid "Collect any personal information about other users, or intimidate, threaten, stalk or otherwise harass other users of the Service;" -msgstr "Recueillir des informations personnelles sur les autres utilisateur·ices, ou intimider, menacer, traquer ou harceler de toute autre manière les autres utilisateurs du Service ;" +msgid "" +"Collect any personal information about other users, or intimidate, threaten, " +"stalk or otherwise harass other users of the Service;" +msgstr "" +"Recueillir des informations personnelles sur les autres utilisateur·ices, ou " +"intimider, menacer, traquer ou harceler de toute autre manière les autres " +"utilisateurs du Service ;" #: lib/web/templates/api/terms.html.heex:167 msgctxt "terms" -msgid "Content that is illegal or unlawful, that would otherwise create liability;" -msgstr "Du contenu qui est illégal ou illicite, qui autrement entraînerait une responsabilité ;" +msgid "" +"Content that is illegal or unlawful, that would otherwise create liability;" +msgstr "" +"Du contenu qui est illégal ou illicite, qui autrement entraînerait une " +"responsabilité ;" #: lib/web/templates/api/terms.html.heex:173 msgctxt "terms" -msgid "Content that may infringe or violate any patent, trademark, trade secret, copyright, right of privacy, right of publicity or other intellectual or other right of any party;" -msgstr "Du contenu susceptible d'enfreindre ou de violer un brevet, une marque de commerce, un secret commercial, un droit d'auteur, un droit à la vie privée, un droit de publicité ou tout autre droit intellectuel ou autre de toute partie ;" +msgid "" +"Content that may infringe or violate any patent, trademark, trade secret, " +"copyright, right of privacy, right of publicity or other intellectual or other " +"right of any party;" +msgstr "" +"Du contenu susceptible d'enfreindre ou de violer un brevet, une marque de " +"commerce, un secret commercial, un droit d'auteur, un droit à la vie privée, un " +"droit de publicité ou tout autre droit intellectuel ou autre de toute partie ;" #: lib/web/templates/api/terms.html.heex:103 msgctxt "terms" @@ -416,18 +561,34 @@ msgstr "Liens hypertexte et contenu tiers" #: lib/web/templates/api/terms.html.heex:279 msgctxt "terms" -msgid "If you breach any of these Terms, we have the right to suspend or disable your access to or use of the Service." -msgstr "Si vous enfreignez l'une de ces Conditions, nous avons le droit de suspendre ou de désactiver votre accès ou votre utilisation du Service." +msgid "" +"If you breach any of these Terms, we have the right to suspend or disable your " +"access to or use of the Service." +msgstr "" +"Si vous enfreignez l'une de ces Conditions, nous avons le droit de suspendre ou " +"de désactiver votre accès ou votre utilisation du Service." #: lib/web/templates/api/terms.html.heex:205 msgctxt "terms" -msgid "Impersonate or post on behalf of any person or entity or otherwise misrepresent your affiliation with a person or entity;" -msgstr "Usurper l'identité d'une personne ou d'une entité ou afficher au nom d'une personne ou d'une entité, ou encore présenter de manière inexacte votre affiliation à une personne ou une entité ;" +msgid "" +"Impersonate or post on behalf of any person or entity or otherwise misrepresent " +"your affiliation with a person or entity;" +msgstr "" +"Usurper l'identité d'une personne ou d'une entité ou afficher au nom d'une " +"personne ou d'une entité, ou encore présenter de manière inexacte votre " +"affiliation à une personne ou une entité ;" #: lib/web/templates/api/terms.html.heex:128 msgctxt "terms" -msgid "Our Service allows you and other users to post, link and otherwise make available content. You are responsible for the content that you make available to the Service, including its legality, reliability, and appropriateness." -msgstr "Notre Service vous permet, ainsi qu'à d'autres utilisateur·ices, de publier, d'établir des liens et de mettre à disposition du contenu. Vous êtes responsable du contenu que vous mettez à la disposition du service, y compris de sa légalité, de sa fiabilité et de sa pertinence." +msgid "" +"Our Service allows you and other users to post, link and otherwise make " +"available content. You are responsible for the content that you make available " +"to the Service, including its legality, reliability, and appropriateness." +msgstr "" +"Notre Service vous permet, ainsi qu'à d'autres utilisateur·ices, de publier, " +"d'établir des liens et de mettre à disposition du contenu. Vous êtes " +"responsable du contenu que vous mettez à la disposition du service, y compris " +"de sa légalité, de sa fiabilité et de sa pertinence." #: lib/web/templates/api/terms.html.heex:94 msgctxt "terms" @@ -446,8 +607,15 @@ msgstr "Résiliation" #: lib/web/templates/api/terms.html.heex:199 msgctxt "terms" -msgid "Use the Service in any manner that could interfere with, disrupt, negatively affect or inhibit other users from fully enjoying the Service or that could damage, disable, overburden or impair the functioning of the Service;" -msgstr "Utiliser le Service de toute manière qui pourrait interférer, perturber, affecter négativement ou empêcher d'autres utilisateur·ices de profiter pleinement du Service ou qui pourrait endommager, désactiver, surcharger ou altérer le fonctionnement du Service ;" +msgid "" +"Use the Service in any manner that could interfere with, disrupt, negatively " +"affect or inhibit other users from fully enjoying the Service or that could " +"damage, disable, overburden or impair the functioning of the Service;" +msgstr "" +"Utiliser le Service de toute manière qui pourrait interférer, perturber, " +"affecter négativement ou empêcher d'autres utilisateur·ices de profiter " +"pleinement du Service ou qui pourrait endommager, désactiver, surcharger ou " +"altérer le fonctionnement du Service ;" #: lib/web/templates/api/terms.html.heex:126 msgctxt "terms" @@ -456,68 +624,165 @@ msgstr "Votre contenu et votre conduite" #: lib/web/templates/api/terms.html.heex:263 msgctxt "terms" -msgid "<b>%{instance_name}</b> makes no claim or representation regarding, and accepts no responsibility for third party websites accessible by hyperlink from the Service or websites linking to the Service. When you leave the Service, you should be aware that these Terms and our policies no longer govern. The inclusion of any link does not imply endorsement by <b>%{instance_name}</b> of the site. Use of any such linked website is at the user's own risk." -msgstr "<b>%{instance_name}</b> ne fait aucune revendication et n'accepte aucune responsabilité concernant les sites web de tiers accessibles par lien hypertexte depuis le Service ou les sites web liés au Service. Lorsque vous quittez le Service, vous devez savoir que les présentes Conditions et nos politiques de confidentialité ne sont plus applicables. L'inclusion d'un lien n'implique pas l'approbation par <b>%{instance_name}</b> du site. L'utilisation de tout site web lié est aux risques et périls de l'utilisateur·ice." +msgid "" +"<b>%{instance_name}</b> makes no claim or representation regarding, and accepts " +"no responsibility for third party websites accessible by hyperlink from the " +"Service or websites linking to the Service. When you leave the Service, you " +"should be aware that these Terms and our policies no longer govern. The " +"inclusion of any link does not imply endorsement by <b>%{instance_name}</b> of " +"the site. Use of any such linked website is at the user's own risk." +msgstr "" +"<b>%{instance_name}</b> ne fait aucune revendication et n'accepte aucune " +"responsabilité concernant les sites web de tiers accessibles par lien " +"hypertexte depuis le Service ou les sites web liés au Service. Lorsque vous " +"quittez le Service, vous devez savoir que les présentes Conditions et nos " +"politiques de confidentialité ne sont plus applicables. L'inclusion d'un lien " +"n'implique pas l'approbation par <b>%{instance_name}</b> du site. L'utilisation " +"de tout site web lié est aux risques et périls de l'utilisateur·ice." #: lib/web/templates/api/terms.html.heex:224 msgctxt "terms" -msgid "Finally, your use of the Service is also subject to acceptance of <a href=\"/rules\">the instance's own specific rules</a> regarding the code of conduct and moderation rules. Breaking those rules may also result in your account being disabled or suspended." -msgstr "Enfin, votre utilisation du Service est également soumise à l'acceptation des <a href=\"/rules\">règles spécifiques de l'instance </a> concernant le code de conduite et les règles de modération. Le non-respect de ces règles peut également entraîner la désactivation ou la suspension de votre compte." +msgid "" +"Finally, your use of the Service is also subject to acceptance of <a href=\"/" +"rules\">the instance's own specific rules</a> regarding the code of conduct and " +"moderation rules. Breaking those rules may also result in your account being " +"disabled or suspended." +msgstr "" +"Enfin, votre utilisation du Service est également soumise à l'acceptation des " +"<a href=\"/rules\">règles spécifiques de l'instance </a> concernant le code de " +"conduite et les règles de modération. Le non-respect de ces règles peut " +"également entraîner la désactivation ou la suspension de votre compte." #: lib/web/templates/api/terms.html.heex:254 msgctxt "terms" -msgid "For full details about the Mobilizon software <a href=\"https://joinmobilizon.org\">see here</a>." -msgstr "Pour plus de détails sur le logiciel Mobilizon <a href=\"https://joinmobilizon.org\">voir ici</a>." +msgid "" +"For full details about the Mobilizon software <a href=\"https://joinmobilizon." +"org\">see here</a>." +msgstr "" +"Pour plus de détails sur le logiciel Mobilizon <a href=\"https://joinmobilizon." +"org\">voir ici</a>." #: lib/web/templates/api/terms.html.heex:47 msgctxt "terms" -msgid "Here are the important things you need to know about accessing and using the <b>%{instance_name}</b> (<a href=\"https://%{instance_url}\">%{instance_url}</a>) website and service (collectively, \"Service\"). These are our terms of service (\"Terms\"). Please read them carefully." -msgstr "Voici les points importants que vous devez savoir sur l'accès et l'utilisation du site web et du Service <b>%{instance_name}</b> (<a href=\"https://%{instance_url}\">%{instance_url}</a>) (conjointement, \"Service\"). Ce sont nos conditions de service (\"Conditions\"). Veuillez les lire attentivement." +msgid "" +"Here are the important things you need to know about accessing and using the " +"<b>%{instance_name}</b> (<a href=\"https://%{instance_url}\">%{instance_url}</" +"a>) website and service (collectively, \"Service\"). These are our terms of " +"service (\"Terms\"). Please read them carefully." +msgstr "" +"Voici les points importants que vous devez savoir sur l'accès et l'utilisation " +"du site web et du Service <b>%{instance_name}</b> (<a href=\"https://" +"%{instance_url}\">%{instance_url}</a>) (conjointement, \"Service\"). Ce sont " +"nos conditions de service (\"Conditions\"). Veuillez les lire attentivement." #: lib/web/templates/api/terms.html.heex:82 msgctxt "terms" -msgid "If we make major changes, we will notify our users in a clear and prominent manner. Minor changes may only be highlighted in the footer of our website. It is your responsibility to check the website regularly for changes to these Terms." -msgstr "Si nous apportons des changements majeurs, nous en informerons nos utilisateur·ices de manière claire et visible. Il est possible que les changements mineurs ne soient mis en évidence que dans le pied de page de cette page. Il est de votre responsabilité de vérifier régulièrement sur le site web si des modifications ont été apportées aux présentes Conditions." +msgid "" +"If we make major changes, we will notify our users in a clear and prominent " +"manner. Minor changes may only be highlighted in the footer of our website. It " +"is your responsibility to check the website regularly for changes to these " +"Terms." +msgstr "" +"Si nous apportons des changements majeurs, nous en informerons nos " +"utilisateur·ices de manière claire et visible. Il est possible que les " +"changements mineurs ne soient mis en évidence que dans le pied de page de cette " +"page. Il est de votre responsabilité de vérifier régulièrement sur le site web " +"si des modifications ont été apportées aux présentes Conditions." #: lib/web/templates/api/terms.html.heex:158 msgctxt "terms" -msgid "In order to make <b>%{instance_name}</b> a great place for all of us, please do not post, link and otherwise make available on or through the Service any of the following:" -msgstr "Afin de faire de <b>%{instance_name}</b> un endroit idéal pour nous toutes et tous, nous vous prions de ne pas publier, relier ou rendre disponible sur ou par le biais du Service l'un des éléments suivants :" +msgid "" +"In order to make <b>%{instance_name}</b> a great place for all of us, please do " +"not post, link and otherwise make available on or through the Service any of " +"the following:" +msgstr "" +"Afin de faire de <b>%{instance_name}</b> un endroit idéal pour nous toutes et " +"tous, nous vous prions de ne pas publier, relier ou rendre disponible sur ou " +"par le biais du Service l'un des éléments suivants :" #: lib/web/templates/api/terms.html.heex:179 msgctxt "terms" -msgid "Private information of any third party (e.g., addresses, phone numbers, email addresses, Social Security numbers and credit card numbers); and" -msgstr "Les informations privées de toute personne tierce (par exemple, les adresses, les numéros de téléphone, les adresses électroniques, les numéros de sécurité sociale et les numéros de carte de crédit) ; et" +msgid "" +"Private information of any third party (e.g., addresses, phone numbers, email " +"addresses, Social Security numbers and credit card numbers); and" +msgstr "" +"Les informations privées de toute personne tierce (par exemple, les adresses, " +"les numéros de téléphone, les adresses électroniques, les numéros de sécurité " +"sociale et les numéros de carte de crédit) ; et" #: lib/web/templates/api/terms.html.heex:152 msgctxt "terms" -msgid "Since Mobilizon is a distributed network, it is possible, depending on the visibility rules set to your content, that your content has been distributed to other Mobilizon instances. When you delete your content, we will request those other instances to also delete the content. Our responsibility on the content being deleted from those other instances ends here. If for some reason, some other instance does not delete the content, we cannot be held responsible." -msgstr "Mobilizon étant un réseau distribué, il est possible, en fonction des règles de visibilité définies pour votre contenu, que celui-ci ait été distribué à d'autres instances de Mobilizon. Lorsque vous supprimez votre contenu, nous demandons à ces autres instances de supprimer également le contenu. Notre responsabilité quant au contenu supprimé de ces autres instances s'arrête ici. Si, pour une raison quelconque, une autre instance ne supprime pas le contenu, nous ne pouvons être tenus responsables." +msgid "" +"Since Mobilizon is a distributed network, it is possible, depending on the " +"visibility rules set to your content, that your content has been distributed to " +"other Mobilizon instances. When you delete your content, we will request those " +"other instances to also delete the content. Our responsibility on the content " +"being deleted from those other instances ends here. If for some reason, some " +"other instance does not delete the content, we cannot be held responsible." +msgstr "" +"Mobilizon étant un réseau distribué, il est possible, en fonction des règles de " +"visibilité définies pour votre contenu, que celui-ci ait été distribué à " +"d'autres instances de Mobilizon. Lorsque vous supprimez votre contenu, nous " +"demandons à ces autres instances de supprimer également le contenu. Notre " +"responsabilité quant au contenu supprimé de ces autres instances s'arrête ici. " +"Si, pour une raison quelconque, une autre instance ne supprime pas le contenu, " +"nous ne pouvons être tenus responsables." #: lib/web/templates/api/terms.html.heex:286 msgctxt "terms" -msgid "These Terms constitute the entire agreement between you and <b>%{instance_name}</b> regarding the use of the Service, superseding any prior agreements between you and <b>%{instance_name}</b> relating to your use of the Service." -msgstr "Les présentes Conditions constituent l'intégralité de l'accord entre vous et <b>%{instance_name}</b> concernant l'utilisation du Service, remplaçant tout accord préalable entre vous et <b>%{instance_name}</b> relatif à votre utilisation du Service." +msgid "" +"These Terms constitute the entire agreement between you and <b>%{instance_name}" +"</b> regarding the use of the Service, superseding any prior agreements between " +"you and <b>%{instance_name}</b> relating to your use of the Service." +msgstr "" +"Les présentes Conditions constituent l'intégralité de l'accord entre vous et " +"<b>%{instance_name}</b> concernant l'utilisation du Service, remplaçant tout " +"accord préalable entre vous et <b>%{instance_name}</b> relatif à votre " +"utilisation du Service." #: lib/web/templates/api/terms.html.heex:247 msgctxt "terms" -msgid "This Service runs on a Mobilizon instance. This source code is licensed under an <a href=\"https://tldrlegal.com/license/gnu-affero-general-public-license-v3-(agpl-3.0)\">AGPLv3 license</a> which means you are allowed to and even encouraged to take the source code, modify it and use it." -msgstr "Ce Service fonctionne sur une instance de Mobilizon. Ce code source est sous <a href=\"https://tldrlegal.com/license/gnu-affero-general-public-license-v3-(agpl-3.0)\">licence AGPLv3</a> ce qui signifie que vous êtes autorisé et même encouragé à prendre le code source, le modifier et l'utiliser." +msgid "" +"This Service runs on a Mobilizon instance. This source code is licensed under " +"an <a href=\"https://tldrlegal.com/license/gnu-affero-general-public-license-v3-" +"(agpl-3.0)\">AGPLv3 license</a> which means you are allowed to and even " +"encouraged to take the source code, modify it and use it." +msgstr "" +"Ce Service fonctionne sur une instance de Mobilizon. Ce code source est sous <a " +"href=\"https://tldrlegal.com/license/gnu-affero-general-public-license-v3-" +"(agpl-3.0)\">licence AGPLv3</a> ce qui signifie que vous êtes autorisé et même " +"encouragé à prendre le code source, le modifier et l'utiliser." #: lib/web/templates/api/terms.html.heex:185 msgctxt "terms" -msgid "Viruses, corrupted data or other harmful, disruptive or destructive files or code." -msgstr "Virus, données corrompues ou autres fichiers ou codes nuisibles, perturbateurs ou destructeurs." +msgid "" +"Viruses, corrupted data or other harmful, disruptive or destructive files or " +"code." +msgstr "" +"Virus, données corrompues ou autres fichiers ou codes nuisibles, perturbateurs " +"ou destructeurs." #: lib/web/templates/api/terms.html.heex:146 msgctxt "terms" -msgid "You can remove the content that you posted by deleting it. Once you delete your content, it will not appear on the Service, but copies of your deleted content may remain in our system or backups for some period of time. Web server access logs might also be stored for some time in the system." -msgstr "Vous pouvez supprimer le contenu que vous avez publié en le supprimant. Une fois que vous avez supprimé votre contenu, il n'apparaîtra plus sur le Service, mais des copies de votre contenu supprimé peuvent rester dans notre système ou des sauvegardes pendant un certain temps. Les journaux d'accès au serveur web peuvent également être stockés pendant un certain temps dans le système." +msgid "" +"You can remove the content that you posted by deleting it. Once you delete your " +"content, it will not appear on the Service, but copies of your deleted content " +"may remain in our system or backups for some period of time. Web server access " +"logs might also be stored for some time in the system." +msgstr "" +"Vous pouvez supprimer le contenu que vous avez publié en le supprimant. Une " +"fois que vous avez supprimé votre contenu, il n'apparaîtra plus sur le Service, " +"mais des copies de votre contenu supprimé peuvent rester dans notre système ou " +"des sauvegardes pendant un certain temps. Les journaux d'accès au serveur web " +"peuvent également être stockés pendant un certain temps dans le système." #: lib/web/templates/api/terms.html.heex:306 msgctxt "terms" -msgid "Questions or comments about the Service may be directed to us at %{contact}" -msgstr "Les questions ou commentaires concernant le Service peuvent nous être adressés à %{contact}" +msgid "" +"Questions or comments about the Service may be directed to us at %{contact}" +msgstr "" +"Les questions ou commentaires concernant le Service peuvent nous être adressés " +"à %{contact}" #: lib/web/templates/api/terms.html.heex:245 msgctxt "terms" @@ -526,38 +791,90 @@ msgstr "Code source" #: lib/web/templates/api/terms.html.heex:296 msgctxt "terms" -msgid "We love feedback. Please let us know what you think of the Service, these Terms and, in general, <b>%{instance_name}</b>." -msgstr "Nous aimons les retours d'information. N'hésitez pas à nous faire savoir ce que vous pensez du Service, des présentes Conditions et, en général, de <b>%{instance_name}</b>." +msgid "" +"We love feedback. Please let us know what you think of the Service, these Terms " +"and, in general, <b>%{instance_name}</b>." +msgstr "" +"Nous aimons les retours d'information. N'hésitez pas à nous faire savoir ce que " +"vous pensez du Service, des présentes Conditions et, en général, de " +"<b>%{instance_name}</b>." #: lib/web/templates/api/terms.html.heex:234 msgctxt "terms" -msgid "Instance administrators (and community moderators, given the relevant access) are responsible for monitoring and acting on flagged content and other user reports, and have the right and responsibility to remove or edit content that is not aligned to this Instance set of rules, or to suspend, block or ban (temporarily or permanently) any account, community, or instance for breaking these terms, or for other behaviours that they deem inappropriate, threatening, offensive, or harmful." -msgstr "Les administrateurs d'instance (et les modérateurs de la communauté, sous réserve d'un accès approprié) sont chargés de surveiller et d'agir sur les contenus signalés et autres rapports d'utilisateur·ices, et ont le droit et la responsabilité de supprimer ou de modifier les contenus qui ne sont pas conformes aux règles de cette d'instance, ou de suspendre, bloquer ou interdire (temporairement ou définitivement) tout compte, communauté ou instance pour violation de ces conditions, ou pour d'autres comportements qu'ils jugent inappropriés, menaçants, offensants ou nuisibles." +msgid "" +"Instance administrators (and community moderators, given the relevant access) " +"are responsible for monitoring and acting on flagged content and other user " +"reports, and have the right and responsibility to remove or edit content that " +"is not aligned to this Instance set of rules, or to suspend, block or ban " +"(temporarily or permanently) any account, community, or instance for breaking " +"these terms, or for other behaviours that they deem inappropriate, threatening, " +"offensive, or harmful." +msgstr "" +"Les administrateurs d'instance (et les modérateurs de la communauté, sous " +"réserve d'un accès approprié) sont chargés de surveiller et d'agir sur les " +"contenus signalés et autres rapports d'utilisateur·ices, et ont le droit et la " +"responsabilité de supprimer ou de modifier les contenus qui ne sont pas " +"conformes aux règles de cette d'instance, ou de suspendre, bloquer ou interdire " +"(temporairement ou définitivement) tout compte, communauté ou instance pour " +"violation de ces conditions, ou pour d'autres comportements qu'ils jugent " +"inappropriés, menaçants, offensants ou nuisibles." #: lib/web/templates/api/terms.html.heex:7 msgctxt "terms" -msgid "<b>%{instance_name}</b> will not use or transmit or resell your personal data" -msgstr "<b>%{instance_name}</b> n'utilisera pas ni ne transmettra ou revendra vos données" +msgid "" +"<b>%{instance_name}</b> will not use or transmit or resell your personal data" +msgstr "" +"<b>%{instance_name}</b> n'utilisera pas ni ne transmettra ou revendra vos " +"données" #: lib/web/templates/api/terms.html.heex:113 msgctxt "terms" -msgid "If you discover or suspect any Service security breaches, please let us know as soon as possible. For security holes in the Mobilizon software itself, please contact <a href=\"https://framagit.org/framasoft/mobilizon/\">its contributors</a> directly." -msgstr "Si vous découvrez ou soupçonnez des failles de sécurité du Service, veuillez nous en informer dès que possible. Pour les failles de sécurité dans le logiciel Mobilizon lui-même, veuillez contacter directement <a href=\"https://framagit.org/framasoft/mobilizon/\">ses contributeur·ices</a>." +msgid "" +"If you discover or suspect any Service security breaches, please let us know as " +"soon as possible. For security holes in the Mobilizon software itself, please " +"contact <a href=\"https://framagit.org/framasoft/mobilizon/\">its contributors</" +"a> directly." +msgstr "" +"Si vous découvrez ou soupçonnez des failles de sécurité du Service, veuillez " +"nous en informer dès que possible. Pour les failles de sécurité dans le " +"logiciel Mobilizon lui-même, veuillez contacter directement <a href=\"https://" +"framagit.org/framasoft/mobilizon/\">ses contributeur·ices</a>." #: lib/web/templates/api/terms.html.heex:240 msgctxt "terms" -msgid "Instance administrators should ensure that every community hosted on the instance is properly moderated according to the defined rules." -msgstr "Les administrateur·ices d'instance doivent s'assurer que chaque communauté hébergée sur l'instance est correctement modérée conformément aux règles définies." +msgid "" +"Instance administrators should ensure that every community hosted on the " +"instance is properly moderated according to the defined rules." +msgstr "" +"Les administrateur·ices d'instance doivent s'assurer que chaque communauté " +"hébergée sur l'instance est correctement modérée conformément aux règles " +"définies." #: lib/web/templates/api/terms.html.heex:321 msgctxt "terms" -msgid "Originally adapted from the <a href=\"https://joindiaspora.com/terms\">Diaspora*</a> and <a href=\"https://github.com/appdotnet/terms-of-service\">App.net</a> privacy policies, also licensed under <a href=\"https://creativecommons.org/licenses/by-sa/4.0/\">CC BY-SA</a>." -msgstr "Adaptée à l'origine des politiques de confidentialité de <a href=\"https://joindiaspora.com/terms\">Diaspora*</a> et <a href=\"https://github.com/appdotnet/terms-of-service\">App.net</a>, aussi sous licence <a href=\"https://creativecommons.org/licenses/by-sa/4.0/\">CC BY-SA</a>." +msgid "" +"Originally adapted from the <a href=\"https://joindiaspora.com/" +"terms\">Diaspora*</a> and <a href=\"https://github.com/appdotnet/terms-of-" +"service\">App.net</a> privacy policies, also licensed under <a href=\"https://" +"creativecommons.org/licenses/by-sa/4.0/\">CC BY-SA</a>." +msgstr "" +"Adaptée à l'origine des politiques de confidentialité de <a href=\"https://" +"joindiaspora.com/terms\">Diaspora*</a> et <a href=\"https://github.com/" +"appdotnet/terms-of-service\">App.net</a>, aussi sous licence <a href=\"https://" +"creativecommons.org/licenses/by-sa/4.0/\">CC BY-SA</a>." #: lib/web/templates/api/privacy.html.heex:173 msgctxt "terms" -msgid "Originally adapted from the <a href=\"https://mastodon.social/terms\">Mastodon</a> and <a href=\"https://github.com/discourse/discourse\">Discourse</a> privacy policies, also licensed under <a href=\"https://creativecommons.org/licenses/by-sa/4.0/\">CC BY-SA</a>." -msgstr "Adaptée à l'origine des politiques de confidentialité de <a href=\"https://mastodon.social/terms\">Mastodon</a> et <a href=\"https://github.com/discourse/discourse\">Discourse</a>, aussi sous licence <a href=\"https://creativecommons.org/licenses/by-sa/4.0/\">CC BY-SA</a>." +msgid "" +"Originally adapted from the <a href=\"https://mastodon.social/terms\">Mastodon</" +"a> and <a href=\"https://github.com/discourse/discourse\">Discourse</a> privacy " +"policies, also licensed under <a href=\"https://creativecommons.org/licenses/by-" +"sa/4.0/\">CC BY-SA</a>." +msgstr "" +"Adaptée à l'origine des politiques de confidentialité de <a href=\"https://" +"mastodon.social/terms\">Mastodon</a> et <a href=\"https://github.com/discourse/" +"discourse\">Discourse</a>, aussi sous licence <a href=\"https://creativecommons." +"org/licenses/by-sa/4.0/\">CC BY-SA</a>." #: lib/web/templates/api/terms.html.heex:3 msgctxt "terms" @@ -566,23 +883,39 @@ msgstr "Version courte" #: lib/web/templates/api/terms.html.heex:29 msgctxt "terms" -msgid "The service is provided without warranties and these terms may change in the future" -msgstr "Le service est fourni sans garanties et ces conditions peuvent changer dans le futur" +msgid "" +"The service is provided without warranties and these terms may change in the " +"future" +msgstr "" +"Le service est fourni sans garanties et ces conditions peuvent changer dans le " +"futur" #: lib/web/templates/api/privacy.html.heex:166 msgctxt "terms" -msgid "This document is licensed under <a href=\"https://creativecommons.org/licenses/by-sa/4.0/\">CC BY-SA</a>. It was last updated June 18, 2020." -msgstr "Ce document est sous licence <a href=\"https://creativecommons.org/licenses/by-sa/4.0/\">CC BY-SA</a>. La dernière mise à jour date du 18 juin 2020." +msgid "" +"This document is licensed under <a href=\"https://creativecommons.org/licenses/" +"by-sa/4.0/\">CC BY-SA</a>. It was last updated June 18, 2020." +msgstr "" +"Ce document est sous licence <a href=\"https://creativecommons.org/licenses/by-" +"sa/4.0/\">CC BY-SA</a>. La dernière mise à jour date du 18 juin 2020." #: lib/web/templates/api/terms.html.heex:314 msgctxt "terms" -msgid "This document is licensed under <a href=\"https://creativecommons.org/licenses/by-sa/4.0/\">CC BY-SA</a>. It was last updated June 22, 2020." -msgstr "Ce document est sous licence <a href=\"https://creativecommons.org/licenses/by-sa/4.0/\">CC BY-SA</a>. La dernière mise à jour date du 22 juin 2020." +msgid "" +"This document is licensed under <a href=\"https://creativecommons.org/licenses/" +"by-sa/4.0/\">CC BY-SA</a>. It was last updated June 22, 2020." +msgstr "" +"Ce document est sous licence <a href=\"https://creativecommons.org/licenses/by-" +"sa/4.0/\">CC BY-SA</a>. La dernière mise à jour date du 22 juin 2020." #: lib/web/templates/api/terms.html.heex:21 msgctxt "terms" -msgid "You must respect other people and <b>%{instance_name}</b>'s rules when using the service" -msgstr "Vous devez respecter les autres et les règles de <b>%{instance_name}</b> lorsque vous utilisez le service" +msgid "" +"You must respect other people and <b>%{instance_name}</b>'s rules when using " +"the service" +msgstr "" +"Vous devez respecter les autres et les règles de <b>%{instance_name}</b> " +"lorsque vous utilisez le service" #: lib/web/templates/api/terms.html.heex:15 msgctxt "terms" @@ -598,21 +931,31 @@ msgstr "Votre contenu vous appartient" msgid "Confirm my e-mail address" msgstr "Confirmer mon adresse email" -#: lib/web/templates/email/anonymous_participation_confirmation.html.heex:18 lib/web/templates/email/anonymous_participation_confirmation.text.eex:1 +#: lib/web/templates/email/anonymous_participation_confirmation.html.heex:18 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:1 msgid "Confirm your e-mail" msgstr "Confirmez votre adresse email" #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:3 -msgid "Hi there! You just registered to join this event: « %{title} ». Please confirm the e-mail address you provided:" -msgstr "Salut ! Vous venez de vous enregistrer pour rejoindre cet événement : « %{title} ». Merci de confirmer l'adresse email que vous avez fournie :" +msgid "" +"Hi there! You just registered to join this event: « %{title} ». Please confirm " +"the e-mail address you provided:" +msgstr "" +"Salut ! Vous venez de vous enregistrer pour rejoindre cet événement : " +"« %{title} ». Merci de confirmer l'adresse email que vous avez fournie :" -#: lib/web/templates/email/email.html.heex:142 lib/web/templates/email/email.text.eex:8 +#: lib/web/templates/email/email.html.heex:142 +#: lib/web/templates/email/email.text.eex:8 msgid "Need help? Is something not working as expected?" msgstr "Besoin d'aide ? Quelque chose ne fonctionne pas correctement ?" #: lib/web/templates/email/registration_confirmation.html.heex:47 -msgid "You created an account on <b>%{host}</b> with this email address. You are one click away from activating it." -msgstr "Vous avez créé un compte sur <b>%{host}</b> avec cette adresse email. Vous êtes à un clic de l'activer." +msgid "" +"You created an account on <b>%{host}</b> with this email address. You are one " +"click away from activating it." +msgstr "" +"Vous avez créé un compte sur <b>%{host}</b> avec cette adresse email. Vous êtes " +"à un clic de l'activer." #: lib/web/templates/email/report.html.heex:18 msgid "New report on <b>%{instance}</b>" @@ -620,21 +963,42 @@ msgstr "Nouveau signalement sur <b>%{instance}</b>" #: lib/web/templates/email/email_changed_old.html.heex:47 msgid "The email address for your account on <b>%{host}</b> is being changed to:" -msgstr "L'adresse email pour votre compte sur <b>%{host}</b> est en train d'être changée pour :" +msgstr "" +"L'adresse email pour votre compte sur <b>%{host}</b> est en train d'être " +"changée pour :" #: lib/web/templates/email/password_reset.html.heex:47 msgid "You requested a new password for your account on <b>%{instance}</b>." -msgstr "Vous avez demandé un nouveau mot de passe pour votre compte sur <b>%{instance}</b>." +msgstr "" +"Vous avez demandé un nouveau mot de passe pour votre compte sur <b>%{instance}</" +"b>." -#: lib/web/templates/email/email.html.heex:112 lib/web/templates/email/email.text.eex:5 +#: lib/web/templates/email/email.html.heex:112 +#: lib/web/templates/email/email.text.eex:5 msgid "Please do not use it for real purposes." msgstr "Veuillez ne pas l'utiliser pour un cas réel." -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:172 lib/web/templates/email/event_updated.text.eex:14 lib/web/templates/email/notification_each_week.html.heex:92 lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:89 lib/web/templates/email/on_day_notification.text.eex:11 -msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." -msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." -msgstr[0] "Si vous avez besoin d'annuler votre participation, il suffit d'accéder à la page de l'événement à partir du lien ci-dessus et de cliquer sur le bouton « Je participe »." -msgstr[1] "Si vous avez besoin d'annuler votre participation à un ou plusieurs événements, il suffit d'accéder aux pages des événement grâce aux liens ci-dessus et de cliquer sur le bouton « Je participe »." +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 +#: lib/web/templates/email/event_updated.html.heex:172 +#: lib/web/templates/email/event_updated.text.eex:14 +#: lib/web/templates/email/notification_each_week.html.heex:92 +#: lib/web/templates/email/notification_each_week.text.eex:11 +#: lib/web/templates/email/on_day_notification.html.heex:89 +#: lib/web/templates/email/on_day_notification.text.eex:11 +msgid "" +"Would you wish to cancel your attendance, visit the event page through the link " +"above and click the « Attending » button." +msgid_plural "" +"Would you wish to cancel your attendance to one or several events, visit the " +"event pages through the links above and click the « Attending » button." +msgstr[0] "" +"Si vous avez besoin d'annuler votre participation, il suffit d'accéder à la " +"page de l'événement à partir du lien ci-dessus et de cliquer sur le bouton « Je " +"participe »." +msgstr[1] "" +"Si vous avez besoin d'annuler votre participation à un ou plusieurs événements, " +"il suffit d'accéder aux pages des événement grâce aux liens ci-dessus et de " +"cliquer sur le bouton « Je participe »." #: lib/web/templates/email/email.text.eex:11 msgid "%{instance} is powered by Mobilizon." @@ -644,15 +1008,18 @@ msgstr "%{instance} est une instance Mobilizon." msgid "<b>%{instance}</b> is powered by Mobilizon." msgstr "<b>%{instance}</b> est une instance Mobilizon." -#: lib/web/templates/email/pending_participation_notification.html.heex:18 lib/web/templates/email/pending_participation_notification.text.eex:1 +#: lib/web/templates/email/pending_participation_notification.html.heex:18 +#: lib/web/templates/email/pending_participation_notification.text.eex:1 msgid "A request is pending!" msgstr "Une demande est en attente !" -#: lib/web/templates/email/before_event_notification.html.heex:18 lib/web/templates/email/before_event_notification.text.eex:1 +#: lib/web/templates/email/before_event_notification.html.heex:18 +#: lib/web/templates/email/before_event_notification.text.eex:1 msgid "An event is upcoming!" msgstr "Un événement est à venir !" -#: lib/web/templates/email/email_changed_new.html.heex:18 lib/web/templates/email/email_changed_new.text.eex:1 +#: lib/web/templates/email/email_changed_new.html.heex:18 +#: lib/web/templates/email/email_changed_new.text.eex:1 msgid "Confirm new email" msgstr "Confirmez votre adresse email" @@ -660,7 +1027,8 @@ msgstr "Confirmez votre adresse email" msgid "End" msgstr "Fin" -#: lib/web/templates/email/event_updated.html.heex:18 lib/web/templates/email/event_updated.text.eex:1 +#: lib/web/templates/email/event_updated.html.heex:18 +#: lib/web/templates/email/event_updated.text.eex:1 msgid "Event update!" msgstr "Événement mis à jour !" @@ -668,39 +1036,84 @@ msgstr "Événement mis à jour !" msgid "Flagged comments" msgstr "Commentaires signalés" -#: lib/web/templates/email/event_participation_approved.html.heex:61 lib/web/templates/email/event_participation_approved.text.eex:7 -msgid "Good news: one of the event organizers just approved your request. Update your calendar, because you're on the guest list now!" -msgstr "Bonne nouvelle : un·e des organisateur·ices de l'événement vient d'approuver votre demande. Mettez à jour votre agenda, car vous êtes maintenant un·e participant·e !" +#: lib/web/templates/email/event_participation_approved.html.heex:61 +#: lib/web/templates/email/event_participation_approved.text.eex:7 +msgid "" +"Good news: one of the event organizers just approved your request. Update your " +"calendar, because you're on the guest list now!" +msgstr "" +"Bonne nouvelle : un·e des organisateur·ices de l'événement vient d'approuver " +"votre demande. Mettez à jour votre agenda, car vous êtes maintenant un·e " +"participant·e !" #: lib/web/templates/email/email_changed_new.html.heex:47 -msgid "Hi there! It seems like you wanted to change the email address linked to your account on <b>%{instance}</b>. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." -msgstr "Salut ! Il semblerait que vous avez demandé la modification de l'adresse e-mail liée à votre compte sur <b>%{instance}</b>. Si vous voulez toujours effectuer ce changement, merci de cliquer sur le bouton ci-dessous pour confirmer la modification. Vous pourrez alors vous connecter à %{instance} avec cette nouvelle adresse." +msgid "" +"Hi there! It seems like you wanted to change the email address linked to your " +"account on <b>%{instance}</b>. If you still wish to do so, please click the " +"button below to confirm the change. You will then be able to log in to " +"%{instance} with this new email address." +msgstr "" +"Salut ! Il semblerait que vous avez demandé la modification de l'adresse e-mail " +"liée à votre compte sur <b>%{instance}</b>. Si vous voulez toujours effectuer " +"ce changement, merci de cliquer sur le bouton ci-dessous pour confirmer la " +"modification. Vous pourrez alors vous connecter à %{instance} avec cette " +"nouvelle adresse." #: lib/web/templates/email/email_changed_old.text.eex:3 -msgid "Hi there! Just a quick note to confirm that the email address linked to your account on %{host} has been changed from this one to:" -msgstr "Salut ! Juste un petite note pour confirmer que l'adresse e-mail liée à votre compte sur %{host} a été changée depuis celle-ci à :" +msgid "" +"Hi there! Just a quick note to confirm that the email address linked to your " +"account on %{host} has been changed from this one to:" +msgstr "" +"Salut ! Juste un petite note pour confirmer que l'adresse e-mail liée à votre " +"compte sur %{host} a été changée depuis celle-ci à :" -#: lib/web/templates/email/email_changed_old.html.heex:79 lib/web/templates/email/email_changed_old.text.eex:5 -msgid "If you did not trigger this change yourself, it is likely that someone has gained access to your %{host} account. Please log in and change your password immediately. If you cannot login, contact the admin on %{host}." -msgstr "Si vous n'avez pas effectué cette modification vous-même, il est probable que quelqu'un ait eu accès à votre compte %{host}. Veuillez vous connecter et changer immédiatement votre mot de passe. Si vous ne pouvez pas vous connecter, contactez l'administrateur·ice sur %{host}." +#: lib/web/templates/email/email_changed_old.html.heex:79 +#: lib/web/templates/email/email_changed_old.text.eex:5 +msgid "" +"If you did not trigger this change yourself, it is likely that someone has " +"gained access to your %{host} account. Please log in and change your password " +"immediately. If you cannot login, contact the admin on %{host}." +msgstr "" +"Si vous n'avez pas effectué cette modification vous-même, il est probable que " +"quelqu'un ait eu accès à votre compte %{host}. Veuillez vous connecter et " +"changer immédiatement votre mot de passe. Si vous ne pouvez pas vous connecter, " +"contactez l'administrateur·ice sur %{host}." #: lib/web/templates/email/password_reset.text.eex:12 -msgid "If you didn't trigger the change yourself, please ignore this message. Your password won't be changed until you click the link above." -msgstr "Si vous n'êtes pas à l'origine de cette modification, merci d'ignorer ce message. Votre mot de passe ne sera pas modifié tant que vous ne cliquerez pas le lien ci-dessus." +msgid "" +"If you didn't trigger the change yourself, please ignore this message. Your " +"password won't be changed until you click the link above." +msgstr "" +"Si vous n'êtes pas à l'origine de cette modification, merci d'ignorer ce " +"message. Votre mot de passe ne sera pas modifié tant que vous ne cliquerez pas " +"le lien ci-dessus." -#: lib/web/templates/email/anonymous_participation_confirmation.html.heex:130 lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.heex:62 lib/web/templates/email/registration_confirmation.text.eex:7 +#: lib/web/templates/email/anonymous_participation_confirmation.html.heex:130 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 +#: lib/web/templates/email/registration_confirmation.html.heex:62 +#: lib/web/templates/email/registration_confirmation.text.eex:7 msgid "If you didn't trigger this email, you may safely ignore it." -msgstr "Si vous n'avez pas déclenché cette alerte, vous pouvez ignorer cet e-mail sans souci." +msgstr "" +"Si vous n'avez pas déclenché cette alerte, vous pouvez ignorer cet e-mail sans " +"souci." -#: lib/web/templates/email/before_event_notification.html.heex:82 lib/web/templates/email/before_event_notification.text.eex:6 -msgid "If you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." -msgstr "Si vous avez besoin d'annuler votre participation, il suffit d'accéder à la page de l'événement à partir du lien ci-dessus et de cliquer sur le bouton « Je participe »." +#: lib/web/templates/email/before_event_notification.html.heex:82 +#: lib/web/templates/email/before_event_notification.text.eex:6 +msgid "" +"If you wish to cancel your attendance, visit the event page through the link " +"above and click the « Attending » button." +msgstr "" +"Si vous avez besoin d'annuler votre participation, il suffit d'accéder à la " +"page de l'événement à partir du lien ci-dessus et de cliquer sur le bouton « Je " +"participe »." -#: lib/web/templates/email/email.html.heex:193 lib/web/templates/email/email.text.eex:11 +#: lib/web/templates/email/email.html.heex:193 +#: lib/web/templates/email/email.text.eex:11 msgid "Learn more about Mobilizon here!" msgstr "En apprendre plus à propos de Mobilizon ici !" -#: lib/web/templates/email/event_updated.html.heex:123 lib/web/templates/export/event_participants.html.heex:129 +#: lib/web/templates/email/event_updated.html.heex:123 +#: lib/web/templates/export/event_participants.html.heex:129 msgid "Location" msgstr "Localisation" @@ -708,15 +1121,18 @@ msgstr "Localisation" msgid "Location address was removed" msgstr "L'adresse physique a été enlevée" -#: lib/web/templates/email/pending_participation_notification.html.heex:89 lib/web/templates/email/pending_participation_notification.text.eex:8 +#: lib/web/templates/email/pending_participation_notification.html.heex:89 +#: lib/web/templates/email/pending_participation_notification.text.eex:8 msgid "Manage pending requests" msgstr "Gérer les demandes de participation en attente" -#: lib/web/templates/email/registration_confirmation.html.heex:18 lib/web/templates/email/registration_confirmation.text.eex:1 +#: lib/web/templates/email/registration_confirmation.html.heex:18 +#: lib/web/templates/email/registration_confirmation.text.eex:1 msgid "Nearly there!" msgstr "Vous y êtes presque !" -#: lib/web/templates/email/email_changed_old.html.heex:18 lib/web/templates/email/email_changed_old.text.eex:1 +#: lib/web/templates/email/email_changed_old.html.heex:18 +#: lib/web/templates/email/email_changed_old.text.eex:1 msgid "New email confirmation" msgstr "Confirmation de nouvel e-mail" @@ -725,10 +1141,12 @@ msgid "Reasons for report" msgstr "Raisons du signalement" #: lib/web/templates/email/report.html.heex:48 -msgid "Someone on <b>%{instance}</b> reported the following content for you to analyze:" +msgid "" +"Someone on <b>%{instance}</b> reported the following content for you to analyze:" msgstr "Une personne de <b>%{instance}</b> a signalé le contenu suivant :" -#: lib/web/templates/email/event_participation_rejected.html.heex:18 lib/web/templates/email/event_participation_rejected.text.eex:1 +#: lib/web/templates/email/event_participation_rejected.html.heex:18 +#: lib/web/templates/email/event_participation_rejected.text.eex:1 msgid "Sorry! You're not going." msgstr "Désolé ! Vous n'y allez pas." @@ -738,23 +1156,35 @@ msgstr "Début" #: lib/web/templates/email/event_updated.text.eex:3 msgid "There have been changes for %{title} so we'd thought we'd let you know." -msgstr "Il y a eu des changements pour %{title} donc nous avons pensé que nous vous le ferions savoir." +msgstr "" +"Il y a eu des changements pour %{title} donc nous avons pensé que nous vous le " +"ferions savoir." -#: lib/web/templates/email/event_updated.html.heex:74 lib/web/templates/email/event_updated.text.eex:6 +#: lib/web/templates/email/event_updated.html.heex:74 +#: lib/web/templates/email/event_updated.text.eex:6 msgid "This event has been cancelled by its organizers. Sorry!" msgstr "Cet événement a été annulé par ses organisateur·ices. Désolé !" -#: lib/web/templates/email/event_updated.html.heex:68 lib/web/templates/email/event_updated.text.eex:4 +#: lib/web/templates/email/event_updated.html.heex:68 +#: lib/web/templates/email/event_updated.text.eex:4 msgid "This event has been confirmed" msgstr "L'événement a été confirmé" -#: lib/web/templates/email/event_updated.html.heex:70 lib/web/templates/email/event_updated.text.eex:5 -msgid "This event has yet to be confirmed: organizers will let you know if they do confirm it." -msgstr "Cet événement doit encore être confirmé : les organisateur·ices vous feront savoir si l'événement est confirmé." +#: lib/web/templates/email/event_updated.html.heex:70 +#: lib/web/templates/email/event_updated.text.eex:5 +msgid "" +"This event has yet to be confirmed: organizers will let you know if they do " +"confirm it." +msgstr "" +"Cet événement doit encore être confirmé : les organisateur·ices vous feront " +"savoir si l'événement est confirmé." -#: lib/web/templates/email/event_participation_rejected.html.heex:61 lib/web/templates/email/event_participation_rejected.text.eex:7 +#: lib/web/templates/email/event_participation_rejected.html.heex:61 +#: lib/web/templates/email/event_participation_rejected.text.eex:7 msgid "Unfortunately, the organizers rejected your request." -msgstr "Malheureusement, les organisateur⋅ices ont rejeté votre demande de participation." +msgstr "" +"Malheureusement, les organisateur⋅ices ont rejeté votre demande de " +"participation." #: lib/web/templates/email/email_changed_new.html.heex:68 msgid "Verify your email address" @@ -768,7 +1198,10 @@ msgstr "Voir le signalement" msgid "View report:" msgstr "Voir le signalement :" -#: lib/web/templates/email/email_anonymous_activity.html.heex:85 lib/web/templates/email/email_anonymous_activity.html.heex:182 lib/web/templates/email/event_participation_approved.html.heex:81 lib/web/templates/email/event_participation_confirmed.html.heex:81 +#: lib/web/templates/email/email_anonymous_activity.html.heex:85 +#: lib/web/templates/email/email_anonymous_activity.html.heex:182 +#: lib/web/templates/email/event_participation_approved.html.heex:81 +#: lib/web/templates/email/event_participation_confirmed.html.heex:81 msgid "Visit event page" msgstr "Voir la page de l'événement" @@ -780,99 +1213,180 @@ msgstr "Voir la page de l'événement mis à jour" msgid "Visit the updated event page: %{link}" msgstr "Voir l'événement mis à jour sur : %{link}" -#: lib/web/templates/email/on_day_notification.html.heex:18 lib/web/templates/email/on_day_notification.text.eex:1 +#: lib/web/templates/email/on_day_notification.html.heex:18 +#: lib/web/templates/email/on_day_notification.text.eex:1 msgid "What's up today?" msgstr "Quoi de neuf aujourd'hui ?" -#: lib/web/templates/email/event_participation_approved.html.heex:98 lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.heex:140 lib/web/templates/email/event_participation_confirmed.text.eex:6 -msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." -msgstr "Si vous souhaitez mettre à jour ou annuler votre participation, il vous suffit d'accéder à la page de l'événement par le lien ci-dessus et de cliquer sur le bouton Participer." +#: lib/web/templates/email/event_participation_approved.html.heex:98 +#: lib/web/templates/email/event_participation_approved.text.eex:11 +#: lib/web/templates/email/event_participation_confirmed.html.heex:140 +#: lib/web/templates/email/event_participation_confirmed.text.eex:6 +msgid "" +"Would you wish to update or cancel your attendance, simply access the event " +"page through the link above and click on the Attending button." +msgstr "" +"Si vous souhaitez mettre à jour ou annuler votre participation, il vous suffit " +"d'accéder à la page de l'événement par le lien ci-dessus et de cliquer sur le " +"bouton Participer." -#: lib/web/templates/email/pending_participation_notification.html.heex:106 lib/web/templates/email/pending_participation_notification.text.eex:10 -msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." -msgstr "Vous recevez ce courriel parce que vous avez choisi de recevoir des notifications pour les demandes de participation en attente à vos événements. Vous pouvez désactiver ou modifier vos paramètres de notification dans les paramètres de votre compte utilisateur dans « Notifications »." +#: lib/web/templates/email/pending_participation_notification.html.heex:106 +#: lib/web/templates/email/pending_participation_notification.text.eex:10 +msgid "" +"You are receiving this email because you chose to get notifications for pending " +"attendance requests to your events. You can disable or change your notification " +"settings in your user account settings under « Notifications »." +msgstr "" +"Vous recevez ce courriel parce que vous avez choisi de recevoir des " +"notifications pour les demandes de participation en attente à vos événements. " +"Vous pouvez désactiver ou modifier vos paramètres de notification dans les " +"paramètres de votre compte utilisateur dans « Notifications »." #: lib/web/templates/email/event_participation_rejected.text.eex:5 msgid "You issued a request to attend %{title}." msgstr "Vous avez effectué une demande de participation à %{title}." -#: lib/web/templates/email/event_participation_approved.text.eex:5 lib/web/templates/email/event_participation_confirmed.text.eex:3 +#: lib/web/templates/email/event_participation_approved.text.eex:5 +#: lib/web/templates/email/event_participation_confirmed.text.eex:3 msgid "You recently requested to attend %{title}." msgstr "Vous avez demandé à participer à l'événement %{title}." -#: lib/web/templates/email/event_participation_approved.html.heex:18 lib/web/templates/email/event_participation_confirmed.html.heex:18 lib/web/templates/email/event_participation_confirmed.text.eex:1 +#: lib/web/templates/email/event_participation_approved.html.heex:18 +#: lib/web/templates/email/event_participation_confirmed.html.heex:18 +#: lib/web/templates/email/event_participation_confirmed.text.eex:1 msgid "You're going!" msgstr "Vous y allez !" -#: lib/web/templates/email/email_changed_new.html.heex:85 lib/web/templates/email/email_changed_new.text.eex:5 +#: lib/web/templates/email/email_changed_new.html.heex:85 +#: lib/web/templates/email/email_changed_new.text.eex:5 msgid "If you didn't trigger the change yourself, please ignore this message." -msgstr "Si vous n'êtes pas à l'origine de cette modification, merci d'ignorer ce message." +msgstr "" +"Si vous n'êtes pas à l'origine de cette modification, merci d'ignorer ce " +"message." -#: lib/web/templates/email/group_member_removal.html.heex:64 lib/web/templates/email/group_member_removal.text.eex:5 -msgid "If you feel this is an error, you may contact the group's administrators so that they can add you back." -msgstr "Si vous pensez qu'il s'agit d'une erreur, vous pouvez contacter les administrateurs du groupe afin qu'ils vous réintègrent." +#: lib/web/templates/email/group_member_removal.html.heex:64 +#: lib/web/templates/email/group_member_removal.text.eex:5 +msgid "" +"If you feel this is an error, you may contact the group's administrators so " +"that they can add you back." +msgstr "" +"Si vous pensez qu'il s'agit d'une erreur, vous pouvez contacter les " +"administrateurs du groupe afin qu'ils vous réintègrent." #: lib/web/email/member.ex:114 msgid "You have been removed from group %{group}" msgstr "Vous avez été enlevé du groupe %{group}" #: lib/web/templates/email/group_member_removal.text.eex:3 -msgid "You have been removed from group %{group}. You will not be able to access this group's private content anymore." -msgstr "Vous avez été enlevé du groupe %{group}. Vous ne serez plus en mesure d'accéder au contenu privé du groupe." +msgid "" +"You have been removed from group %{group}. You will not be able to access this " +"group's private content anymore." +msgstr "" +"Vous avez été enlevé du groupe %{group}. Vous ne serez plus en mesure d'accéder " +"au contenu privé du groupe." #: lib/web/templates/email/group_invite.html.heex:47 -msgid "<b>%{inviter}</b> just invited you to join their group %{link_start}<b>%{group}</b>%{link_end}" -msgstr "<b>%{inviter}</b> vient de vous inviter à rejoindre son groupe %{link_start}<b>%{group}</b>%{link_end}" +msgid "" +"<b>%{inviter}</b> just invited you to join their group %{link_start}<b>%{group}" +"</b>%{link_end}" +msgstr "" +"<b>%{inviter}</b> vient de vous inviter à rejoindre son groupe %{link_start}" +"<b>%{group}</b>%{link_end}" #: lib/web/templates/email/group_member_removal.html.heex:47 -msgid "You have been removed from group %{link_start}<b>%{group}</b>%{link_end}. You will not be able to access this group's private content anymore." -msgstr "Vous avez été enlevé du groupe %{link_start}<b>%{group}</b>%{link_end}. Vous ne serez plus en mesure d'accéder au contenu privé du groupe." +msgid "" +"You have been removed from group %{link_start}<b>%{group}</b>%{link_end}. You " +"will not be able to access this group's private content anymore." +msgstr "" +"Vous avez été enlevé du groupe %{link_start}<b>%{group}</b>%{link_end}. Vous ne " +"serez plus en mesure d'accéder au contenu privé du groupe." -#: lib/web/templates/email/group_suspension.html.heex:81 lib/web/templates/email/group_suspension.text.eex:7 -msgid "As this group was located on another instance, it will continue to work for other instances than this one." -msgstr "Comme ce groupe était originaire d'une autre instance, il continuera à fonctionner pour d'autres instances que celle-ci." +#: lib/web/templates/email/group_suspension.html.heex:81 +#: lib/web/templates/email/group_suspension.text.eex:7 +msgid "" +"As this group was located on another instance, it will continue to work for " +"other instances than this one." +msgstr "" +"Comme ce groupe était originaire d'une autre instance, il continuera à " +"fonctionner pour d'autres instances que celle-ci." -#: lib/web/templates/email/group_suspension.html.heex:18 lib/web/templates/email/group_suspension.text.eex:1 +#: lib/web/templates/email/group_suspension.html.heex:18 +#: lib/web/templates/email/group_suspension.text.eex:1 msgid "The group %{group} has been suspended on %{instance}!" msgstr "Le groupe %{group} a été suspendu sur %{instance} !" #: lib/web/templates/email/group_suspension.text.eex:3 -msgid "Your instance's moderation team has decided to suspend %{group_name} (%{group_address}). You are no longer a member of this group." -msgstr "L'équipe de modération de votre instance a décidé de suspendre %{group_name} (%{group_address}). Vous n'êtes désormais plus membre de ce groupe." +msgid "" +"Your instance's moderation team has decided to suspend %{group_name} " +"(%{group_address}). You are no longer a member of this group." +msgstr "" +"L'équipe de modération de votre instance a décidé de suspendre %{group_name} " +"(%{group_address}). Vous n'êtes désormais plus membre de ce groupe." -#: lib/web/email/group.ex:108 +#: lib/web/email/group.ex:106 msgid "The group %{group} has been suspended on %{instance}" msgstr "Le groupe %{group} a été suspendu sur %{instance}" #: lib/web/templates/api/terms.html.heex:64 msgctxt "terms" -msgid "By accessing or using the Service, this means you agree to be bound by all the terms below. If these terms are in any way unclear, please let us know by contacting %{contact}." -msgstr "Si vous accédez au Service ou utilisez le Service, cela signifie que vous acceptez d'être lié·e par toutes les Conditions ci-dessous. Si une condition n'a pas de sens pour vous, veuillez nous le faire savoir en contactant %{contact}." +msgid "" +"By accessing or using the Service, this means you agree to be bound by all the " +"terms below. If these terms are in any way unclear, please let us know by " +"contacting %{contact}." +msgstr "" +"Si vous accédez au Service ou utilisez le Service, cela signifie que vous " +"acceptez d'être lié·e par toutes les Conditions ci-dessous. Si une condition " +"n'a pas de sens pour vous, veuillez nous le faire savoir en contactant " +"%{contact}." #: lib/web/templates/api/terms.html.heex:96 msgctxt "terms" -msgid "For information about how we collect and use information about users of the Service, please check our <a href=\"/privacy\">privacy policy</a>." -msgstr "Pour savoir comment nous recueillons et utilisons les informations sur les utilisateur·ice·s du Service, veuillez consulter notre <a href=\"/privacy\">politique de confidentialité</a>." +msgid "" +"For information about how we collect and use information about users of the " +"Service, please check our <a href=\"/privacy\">privacy policy</a>." +msgstr "" +"Pour savoir comment nous recueillons et utilisons les informations sur les " +"utilisateur·ice·s du Service, veuillez consulter notre <a href=\"/" +"privacy\">politique de confidentialité</a>." #: lib/web/templates/api/terms.html.heex:88 msgctxt "terms" -msgid "If you continue to use the Service after the revised Terms go into effect, you accept the revised Terms." -msgstr "Si vous continuez à utiliser le Service après l'entrée en vigueur des Conditions révisées, vous acceptez les conditions révisées." +msgid "" +"If you continue to use the Service after the revised Terms go into effect, you " +"accept the revised Terms." +msgstr "" +"Si vous continuez à utiliser le Service après l'entrée en vigueur des " +"Conditions révisées, vous acceptez les conditions révisées." #: lib/web/templates/api/privacy.html.heex:109 msgctxt "terms" msgid "If you delete this information, you need to login again." -msgstr "Si vous supprimez ces informations, vous devrez vous connecter de nouveau." +msgstr "" +"Si vous supprimez ces informations, vous devrez vous connecter de nouveau." #: lib/web/templates/api/privacy.html.heex:111 msgctxt "terms" -msgid "If you're not connected, we don't store any information on your device, unless you participate in an event anonymously. In this specific case we store the hash of an unique identifier for the event and participation status in your browser so that we may display participation status. Deleting this information will only stop displaying participation status in your browser." -msgstr "Si vous n'êtes pas connecté·e, nous ne conserverons aucune information sur votre appareil, sauf si vous participez anonymement à un événement. Dans ce cas spécifique nous conservons le hash d'un identifiant unique pour l'événement et les statuts de participation dans votre navigateur pour pouvoir les afficher. Supprimer ces informations aura pour seule conséquence que votre participation ne sera plus affichée dans votre navigateur." +msgid "" +"If you're not connected, we don't store any information on your device, unless " +"you participate in an event anonymously. In this specific case we store the " +"hash of an unique identifier for the event and participation status in your " +"browser so that we may display participation status. Deleting this information " +"will only stop displaying participation status in your browser." +msgstr "" +"Si vous n'êtes pas connecté·e, nous ne conserverons aucune information sur " +"votre appareil, sauf si vous participez anonymement à un événement. Dans ce cas " +"spécifique nous conservons le hash d'un identifiant unique pour l'événement et " +"les statuts de participation dans votre navigateur pour pouvoir les afficher. " +"Supprimer ces informations aura pour seule conséquence que votre participation " +"ne sera plus affichée dans votre navigateur." #: lib/web/templates/api/privacy.html.heex:117 msgctxt "terms" -msgid "Note: This information is stored in your localStorage and not your cookies." -msgstr "Attention : Ces informations sont conservées dans votre stockage local et non vos cookies." +msgid "" +"Note: This information is stored in your localStorage and not your cookies." +msgstr "" +"Attention : Ces informations sont conservées dans votre stockage local et non " +"vos cookies." #: lib/web/templates/api/terms.html.heex:231 msgctxt "terms" @@ -881,66 +1395,169 @@ msgstr "Notre responsabilité" #: lib/web/templates/api/privacy.html.heex:87 msgctxt "terms" -msgid "Retain server logs containing the IP address of all requests to this server, insofar as such logs are kept, no more than 90 days." -msgstr "Conserver les journaux du serveur contenant l'adresse IP de toutes les demandes adressées à ce serveur, dans la mesure où ces journaux sont conservés, pas plus de 90 jours." +msgid "" +"Retain server logs containing the IP address of all requests to this server, " +"insofar as such logs are kept, no more than 90 days." +msgstr "" +"Conserver les journaux du serveur contenant l'adresse IP de toutes les demandes " +"adressées à ce serveur, dans la mesure où ces journaux sont conservés, pas plus " +"de 90 jours." -#: lib/web/templates/api/privacy.html.heex:3 lib/web/templates/api/terms.html.heex:39 +#: lib/web/templates/api/privacy.html.heex:3 +#: lib/web/templates/api/terms.html.heex:39 msgctxt "terms" -msgid "Some terms, technical or otherwise, used in the text below may cover concepts that are difficult to grasp. We have provided <a href=\"/glossary\">a glossary</a> to help you understand them better." -msgstr "Certains termes, techniques ou non, utilisés dans le texte ci-dessous peuvent recouvrir des concepts difficiles à appréhender. Nous vous proposons <a href=\"/glossary\">un glossaire</a> qui pourra vous aider à mieux les comprendre." +msgid "" +"Some terms, technical or otherwise, used in the text below may cover concepts " +"that are difficult to grasp. We have provided <a href=\"/glossary\">a glossary</" +"a> to help you understand them better." +msgstr "" +"Certains termes, techniques ou non, utilisés dans le texte ci-dessous peuvent " +"recouvrir des concepts difficiles à appréhender. Nous vous proposons <a href=\"/" +"glossary\">un glossaire</a> qui pourra vous aider à mieux les comprendre." #: lib/web/templates/api/terms.html.heex:120 msgctxt "terms" -msgid "We are not liable for any loss you may incur as a result of someone else using your email or password, either with or without your knowledge." -msgstr "Nous ne sommes pas responsables des pertes que vous pourriez subir si quelqu'un d'autre utilise votre adresse électronique ou votre mot de passe, à votre insu ou non." +msgid "" +"We are not liable for any loss you may incur as a result of someone else using " +"your email or password, either with or without your knowledge." +msgstr "" +"Nous ne sommes pas responsables des pertes que vous pourriez subir si quelqu'un " +"d'autre utilise votre adresse électronique ou votre mot de passe, à votre insu " +"ou non." #: lib/web/templates/api/terms.html.heex:140 msgctxt "terms" -msgid "We cannot be held responsible should a programming or administrative error make your content visible to a larger audience than intended. Aside from our limited right to your content, you retain all of your rights to the content you post, link and otherwise make available on or through the Service." -msgstr "Nous ne pouvons être tenus responsables si une erreur de programmation ou d'administration rend votre contenu visible à un public plus large que celui que vous aviez prévu. Outre notre droit limité sur votre contenu, vous conservez tous vos droits sur le contenu que vous publiez, mettez en lien et rendez disponible sur ou via le Service." +msgid "" +"We cannot be held responsible should a programming or administrative error make " +"your content visible to a larger audience than intended. Aside from our limited " +"right to your content, you retain all of your rights to the content you post, " +"link and otherwise make available on or through the Service." +msgstr "" +"Nous ne pouvons être tenus responsables si une erreur de programmation ou " +"d'administration rend votre contenu visible à un public plus large que celui " +"que vous aviez prévu. Outre notre droit limité sur votre contenu, vous " +"conservez tous vos droits sur le contenu que vous publiez, mettez en lien et " +"rendez disponible sur ou via le Service." #: lib/web/templates/api/privacy.html.heex:15 msgctxt "terms" -msgid "We collect information from you when you register on this instance and gather data when you participate in the platform by reading, writing, and interacting with content shared here. If you register on this instance, you will be asked to enter <b>an email address, a password</b> (hashed) and at least <b>an username</b>. Your email address will be verified by an email containing a unique link. Once the link is activated, we know you control that email address. You may also enter additional profile information such as <b>a display name and biography, and upload a profile picture and header image</b>. The username, display name, biography, profile picture and header image <b>are always listed publicly</b>. <b>You may however visit this instance without registering</b>." +msgid "" +"We collect information from you when you register on this instance and gather " +"data when you participate in the platform by reading, writing, and interacting " +"with content shared here. If you register on this instance, you will be asked " +"to enter <b>an email address, a password</b> (hashed) and at least <b>an " +"username</b>. Your email address will be verified by an email containing a " +"unique link. Once the link is activated, we know you control that email " +"address. You may also enter additional profile information such as <b>a display " +"name and biography, and upload a profile picture and header image</b>. The " +"username, display name, biography, profile picture and header image <b>are " +"always listed publicly</b>. <b>You may however visit this instance without " +"registering</b>." msgstr "" -"Nous collectons des informations sur vous lorsque vous vous inscrivez sur cette instance et récupérons des données lorsque vous utilisez la plateforme en lisant, écrivant, et en interagissant avec les contenus partagés. Si vous vous inscrivez sur cette instance, nous vous demanderons <b>une adresse courriel, un mot de passe</b> (haché) et au moins <b>un nom d'utilisateur.ice</b>. Votre adresse courriel sera vérifiée par l'envoi d'un courriel de confirmation contenant un lien unique. Si ce lien est activé, nous saurons que vous contrôlez cette adresse courriel. Vous pouvez également entrer des informations supplémentaires au profil, comme <b>un pseudonyme, une biographie, une image de profil et une image d'en-tête</b>. Le nom d'utilisateur, le pseudonyme affiché, la " -"biographie, les images de profil et d'en-tête <b>sont toujours publiques</b>. <b>Vous pouvez toutefois utiliser ce serveur sans vous inscrire</b>." +"Nous collectons des informations sur vous lorsque vous vous inscrivez sur cette " +"instance et récupérons des données lorsque vous utilisez la plateforme en " +"lisant, écrivant, et en interagissant avec les contenus partagés. Si vous vous " +"inscrivez sur cette instance, nous vous demanderons <b>une adresse courriel, un " +"mot de passe</b> (haché) et au moins <b>un nom d'utilisateur.ice</b>. Votre " +"adresse courriel sera vérifiée par l'envoi d'un courriel de confirmation " +"contenant un lien unique. Si ce lien est activé, nous saurons que vous " +"contrôlez cette adresse courriel. Vous pouvez également entrer des informations " +"supplémentaires au profil, comme <b>un pseudonyme, une biographie, une image de " +"profil et une image d'en-tête</b>. Le nom d'utilisateur, le pseudonyme affiché, " +"la biographie, les images de profil et d'en-tête <b>sont toujours publiques</" +"b>. <b>Vous pouvez toutefois utiliser ce serveur sans vous inscrire</b>." #: lib/web/templates/api/terms.html.heex:76 msgctxt "terms" -msgid "We reserve the right to modify these Terms at any time. For instance, we may need to change these Terms if we come out with a new feature." -msgstr "Nous nous réservons le droit de modifier ces Conditions à tout moment. Par exemple, nous pouvons être amenés à modifier ces Conditions si nous proposons une nouvelle fonctionnalité." - -#: lib/web/templates/api/terms.html.heex:55 -msgctxt "terms" -msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by <a href=\"https://framasoft.org\">Framasoft</a>, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." -msgstr "Lorsque nous disons « nous », « notre » ou « nos » dans ce document, nous faisons référence aux propriétaires, opérateur·ices et administrateur·ices de cette instance de Mobilizon. Le logiciel Mobilizon est fourni par l'équipe des contributeur·ices de Mobilizon, soutenue par <a href=\"https://framasoft.org\">Framasoft</a>, une organisation française d'éducation populaire à but non lucratif qui défend les logiciels libres. Sauf mention explicite, cette instance de Mobilizon est un service indépendant utilisant le code source de Mobilizon. Vous pouvez trouver plus d'informations sur cette instance sur la page <a href=\"/about/instance\">« A propos de cette instance »</a>." +msgid "" +"We reserve the right to modify these Terms at any time. For instance, we may " +"need to change these Terms if we come out with a new feature." +msgstr "" +"Nous nous réservons le droit de modifier ces Conditions à tout moment. Par " +"exemple, nous pouvons être amenés à modifier ces Conditions si nous proposons " +"une nouvelle fonctionnalité." #: lib/web/templates/api/terms.html.heex:105 msgctxt "terms" -msgid "When you create an account you agree to maintain the security and confidentiality of your password and accept all risks of unauthorized access to your account data and any other information you provide to <b>%{instance_name}</b>." -msgstr "Lorsque vous créez un compte, vous acceptez également de maintenir la sécurité et la confidentialité de votre mot de passe et vous acceptez tous les risques d'accès non autorisé aux données de votre compte et à toute autre information que vous fournissez à <b>%{instance_name}</b>." +msgid "" +"When you create an account you agree to maintain the security and " +"confidentiality of your password and accept all risks of unauthorized access to " +"your account data and any other information you provide to <b>%{instance_name}</" +"b>." +msgstr "" +"Lorsque vous créez un compte, vous acceptez également de maintenir la sécurité " +"et la confidentialité de votre mot de passe et vous acceptez tous les risques " +"d'accès non autorisé aux données de votre compte et à toute autre information " +"que vous fournissez à <b>%{instance_name}</b>." #: lib/web/templates/api/terms.html.heex:134 msgctxt "terms" -msgid "When you post, link or otherwise make available content to the Service, you grant us the right and license to display and distribute your content on or through the Service (including via applications). We may format your content for display throughout the Service, but we will not edit or revise the substance of your content itself. The displaying and distribution of your content happens only according to the visibility rules you have set for the content. We will not modify the visibility of the content you have set." -msgstr "Lorsque vous publiez, liez ou mettez à disposition un contenu sur le Service, vous nous accordez le droit et la licence d'afficher et de distribuer votre contenu sur ou via le Service (y compris via des applications). Nous pouvons formater votre contenu pour l'afficher dans le Service, mais nous ne modifierons pas ou ne réviserons pas la substance de votre contenu lui-même. L'affichage et la distribution de votre contenu se fait strictement selon les règles de visibilité que vous avez définies pour le contenu. Nous ne modifierons pas la visibilité du contenu que vous avez défini." +msgid "" +"When you post, link or otherwise make available content to the Service, you " +"grant us the right and license to display and distribute your content on or " +"through the Service (including via applications). We may format your content " +"for display throughout the Service, but we will not edit or revise the " +"substance of your content itself. The displaying and distribution of your " +"content happens only according to the visibility rules you have set for the " +"content. We will not modify the visibility of the content you have set." +msgstr "" +"Lorsque vous publiez, liez ou mettez à disposition un contenu sur le Service, " +"vous nous accordez le droit et la licence d'afficher et de distribuer votre " +"contenu sur ou via le Service (y compris via des applications). Nous pouvons " +"formater votre contenu pour l'afficher dans le Service, mais nous ne " +"modifierons pas ou ne réviserons pas la substance de votre contenu lui-même. " +"L'affichage et la distribution de votre contenu se fait strictement selon les " +"règles de visibilité que vous avez définies pour le contenu. Nous ne " +"modifierons pas la visibilité du contenu que vous avez défini." #: lib/web/templates/api/privacy.html.heex:25 msgctxt "terms" -msgid "Your <b>events</b> and <b>comments</b> are delivered to other instances that follow your own, meaning they are delivered to different instances and copies are stored there. When you delete events or comments, this is likewise delivered to these other instances. All interactions related to event features - such as joining an event - or group features - such as managing resources - are federated as well. Please keep in mind that the operators of the instance and any receiving instances may view such messages and information, and that recipients may screenshot, copy or otherwise re-share them." -msgstr "Vos <b>événements</b> et <b>commentaires</b> sont transmis aux instances qui suivent la vôtre, ce qui signifie que d'autres instances posséderont des copies de ces contenus. Lorsque vous supprimez un événement ou un commentaire, ceci est transmis de la même façon aux autres instances. Toutes les interactions liées aux fonctionnalités des événements - comme rejoindre un événement - ou bien aux fonctionnalités de groupes - comme gérer ses ressources - sont également fédérées. Veuillez noter que les administrateur·ices de cette instance et de toutes les instances fédérées peuvent voir ces messages, et que les destinataires peuvent les copier, en faire des captures d'écran et les repartager de différentes façons." +msgid "" +"Your <b>events</b> and <b>comments</b> are delivered to other instances that " +"follow your own, meaning they are delivered to different instances and copies " +"are stored there. When you delete events or comments, this is likewise " +"delivered to these other instances. All interactions related to event features " +"- such as joining an event - or group features - such as managing resources - " +"are federated as well. Please keep in mind that the operators of the instance " +"and any receiving instances may view such messages and information, and that " +"recipients may screenshot, copy or otherwise re-share them." +msgstr "" +"Vos <b>événements</b> et <b>commentaires</b> sont transmis aux instances qui " +"suivent la vôtre, ce qui signifie que d'autres instances posséderont des copies " +"de ces contenus. Lorsque vous supprimez un événement ou un commentaire, ceci " +"est transmis de la même façon aux autres instances. Toutes les interactions " +"liées aux fonctionnalités des événements - comme rejoindre un événement - ou " +"bien aux fonctionnalités de groupes - comme gérer ses ressources - sont " +"également fédérées. Veuillez noter que les administrateur·ices de cette " +"instance et de toutes les instances fédérées peuvent voir ces messages, et que " +"les destinataires peuvent les copier, en faire des captures d'écran et les " +"repartager de différentes façons." #: lib/web/templates/api/privacy.html.heex:132 msgctxt "terms" -msgid "Your content may be downloaded by other instances in the network. Your public events and comments are delivered to the instances following your own instance. Content created through a group is forwarded to all the instances of all the members of the group, insofar as these members reside on a different instance than this one." -msgstr "Votre contenu peut être téléchargé par d'autres instances du réseau. Vos événements publics et commentaires sont transmis aux instances abonnées à votre instance. Le contenu créé à travers un groupe est transmis à toutes les instances de tous les membres du groupe, si celleux-ci sont inscrit·e·s sur une autre instance que la vôtre." +msgid "" +"Your content may be downloaded by other instances in the network. Your public " +"events and comments are delivered to the instances following your own instance. " +"Content created through a group is forwarded to all the instances of all the " +"members of the group, insofar as these members reside on a different instance " +"than this one." +msgstr "" +"Votre contenu peut être téléchargé par d'autres instances du réseau. Vos " +"événements publics et commentaires sont transmis aux instances abonnées à votre " +"instance. Le contenu créé à travers un groupe est transmis à toutes les " +"instances de tous les membres du groupe, si celleux-ci sont inscrit·e·s sur une " +"autre instance que la vôtre." #: lib/web/templates/email/event_participation_confirmed.text.eex:4 -msgid "You have confirmed your participation. Update your calendar, because you're on the guest list now!" -msgstr "Vous avez confirmé votre participation. Mettez à jour votre agenda, car vous êtes maintenant sur la liste des invités !" +msgid "" +"You have confirmed your participation. Update your calendar, because you're on " +"the guest list now!" +msgstr "" +"Vous avez confirmé votre participation. Mettez à jour votre agenda, car vous " +"êtes maintenant sur la liste des invités !" -#: lib/web/templates/email/event_participation_approved.html.heex:47 lib/web/templates/email/event_participation_confirmed.html.heex:47 +#: lib/web/templates/email/event_participation_approved.html.heex:47 +#: lib/web/templates/email/event_participation_confirmed.html.heex:47 msgid "You recently requested to attend <b>%{title}</b>." msgstr "Vous avez demandé à participer à l'événement <b>%{title}</b>." @@ -969,8 +1586,12 @@ msgid "Profile reported" msgstr "Profil signalé" #: lib/web/templates/email/event_participation_confirmed.html.heex:61 -msgid "You have now confirmed your participation. Update your calendar, because you're on the guest list now!" -msgstr "Vous avez maintenant confirmé votre participation. Mettez à jour votre agenda, car vous êtes maintenant sur la liste des invités !" +msgid "" +"You have now confirmed your participation. Update your calendar, because you're " +"on the guest list now!" +msgstr "" +"Vous avez maintenant confirmé votre participation. Mettez à jour votre agenda, " +"car vous êtes maintenant sur la liste des invités !" #: lib/mobilizon/posts/post.ex:98 msgid "A text is required for the post" @@ -984,25 +1605,36 @@ msgstr "Un titre est requis pour le billet" msgid "%{name} requests to follow your instance" msgstr "%{name} demande à suivre votre instance" -#: lib/web/templates/email/instance_follow.html.heex:53 lib/web/templates/email/instance_follow.text.eex:6 +#: lib/web/templates/email/instance_follow.html.heex:53 +#: lib/web/templates/email/instance_follow.text.eex:6 msgid "If you accept, this instance will receive all of your public events." -msgstr "Si vous acceptez, leur instance recevra tous les événements publics de votre instance." +msgstr "" +"Si vous acceptez, leur instance recevra tous les événements publics de votre " +"instance." #: lib/web/email/follow.ex:54 msgid "Instance %{name} (%{domain}) requests to follow your instance" msgstr "L'instance %{name} (%{domain}) demande à suivre votre instance" -#: lib/web/templates/email/instance_follow.html.heex:84 lib/web/templates/email/instance_follow.text.eex:9 +#: lib/web/templates/email/instance_follow.html.heex:84 +#: lib/web/templates/email/instance_follow.text.eex:9 msgid "To accept this invitation, head over to the instance's admin settings." -msgstr "Pour accepter cette invitation, rendez-vous dans les paramètres de fédération de l'instance." +msgstr "" +"Pour accepter cette invitation, rendez-vous dans les paramètres de fédération " +"de l'instance." -#: lib/web/templates/email/instance_follow.html.heex:18 lib/web/templates/email/instance_follow.text.eex:1 +#: lib/web/templates/email/instance_follow.html.heex:18 +#: lib/web/templates/email/instance_follow.text.eex:1 msgid "Want to connect?" msgstr "Voulez-vous vous connecter ?" #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:47 -msgid "Hi there! You just registered to join this event: « <b>%{title}</b> ». Please confirm the e-mail address you provided:" -msgstr "Salut ! Vous venez de vous enregistrer pour rejoindre cet événement : « <b>%{title}</b> ». Merci de confirmer l'adresse email que vous avez fournie :" +msgid "" +"Hi there! You just registered to join this event: « <b>%{title}</b> ». Please " +"confirm the e-mail address you provided:" +msgstr "" +"Salut ! Vous venez de vous enregistrer pour rejoindre cet événement : " +"« <b>%{title}</b> ». Merci de confirmer l'adresse email que vous avez fournie :" #: lib/web/templates/email/event_participation_rejected.html.heex:47 msgid "You issued a request to attend <b>%{title}</b>." @@ -1013,8 +1645,11 @@ msgid "Event title" msgstr "Titre de l'événement" #: lib/web/templates/email/event_updated.html.heex:47 -msgid "There have been changes for <b>%{title}</b> so we'd thought we'd let you know." -msgstr "Il y a eu des changements pour <b>%{title}</b> donc nous avons pensé que nous vous le ferions savoir." +msgid "" +"There have been changes for <b>%{title}</b> so we'd thought we'd let you know." +msgstr "" +"Il y a eu des changements pour <b>%{title}</b> donc nous avons pensé que nous " +"vous le ferions savoir." #: lib/web/templates/error/500_page.html.heex:7 msgid "This page is not correct" @@ -1024,11 +1659,13 @@ msgstr "Cette page n’est pas correcte" msgid "We're sorry, but something went wrong on our end." msgstr "Nous sommes désolé·e·s, mais quelque chose s’est mal passé de notre côté." -#: lib/web/templates/email/email.html.heex:109 lib/web/templates/email/email.text.eex:4 +#: lib/web/templates/email/email.html.heex:109 +#: lib/web/templates/email/email.text.eex:4 msgid "This is a demonstration site to test Mobilizon." msgstr "Ceci est un site de démonstration permettant de tester Mobilizon." -#: lib/service/metadata/actor.ex:86 lib/service/metadata/actor.ex:93 lib/service/metadata/instance.ex:60 lib/service/metadata/instance.ex:66 +#: lib/service/metadata/actor.ex:86 lib/service/metadata/actor.ex:93 +#: lib/service/metadata/instance.ex:60 lib/service/metadata/instance.ex:66 msgid "%{name}'s feed" msgstr "Flux de %{name}" @@ -1045,12 +1682,17 @@ msgid "Feed for %{email} on %{instance}" msgstr "Flux pour %{email} sur %{instance}" #: lib/web/templates/error/500_page.html.heex:61 -msgid "If the issue persists, you may contact the server administrator at %{contact}." -msgstr "Si le problème persiste, vous pouvez contacter l'administrateur⋅ice du serveur à %{contact}." +msgid "" +"If the issue persists, you may contact the server administrator at %{contact}." +msgstr "" +"Si le problème persiste, vous pouvez contacter l'administrateur⋅ice du serveur " +"à %{contact}." #: lib/web/templates/error/500_page.html.heex:59 msgid "If the issue persists, you may try to contact the server administrator." -msgstr "Si le problème persiste, vous pouvez essayer de contacter l'administrateur⋅ice du serveur." +msgstr "" +"Si le problème persiste, vous pouvez essayer de contacter l'administrateur⋅ice " +"du serveur." #: lib/web/templates/error/500_page.html.heex:82 msgid "Technical details" @@ -1068,20 +1710,35 @@ msgstr "Flux public pour %{instance}" msgid "Your participation to %{event} has been cancelled!" msgstr "Votre participation à l'événement %{event} a été annulée !" -#: lib/web/templates/email/actor_suspension_participants.html.heex:50 lib/web/templates/email/actor_suspension_participants.text.eex:3 -msgid "Your instance's moderation team has decided to suspend %{actor_name} (%{actor_address}). All of their events have been removed and your participation to event %{event} cancelled." -msgstr "L'équipe de modération de votre instance a décidé de suspendre %{actor_name} (%{actor_address}). Tous leurs événements ont été supprimés et votre participation à %{event} annulée." +#: lib/web/templates/email/actor_suspension_participants.html.heex:50 +#: lib/web/templates/email/actor_suspension_participants.text.eex:3 +msgid "" +"Your instance's moderation team has decided to suspend %{actor_name} " +"(%{actor_address}). All of their events have been removed and your " +"participation to event %{event} cancelled." +msgstr "" +"L'équipe de modération de votre instance a décidé de suspendre %{actor_name} " +"(%{actor_address}). Tous leurs événements ont été supprimés et votre " +"participation à %{event} annulée." #: lib/web/templates/email/group_suspension.html.heex:50 -msgid "Your instance's moderation team has decided to suspend <b>%{group_name}</b> (%{group_address}). You are no longer a member of this group." -msgstr "L'équipe de modération de votre instance a décidé de suspendre <b>%{group_name}</b> (%{group_address}). Vous n'êtes désormais plus membre de ce groupe." +msgid "" +"Your instance's moderation team has decided to suspend <b>%{group_name}</b> " +"(%{group_address}). You are no longer a member of this group." +msgstr "" +"L'équipe de modération de votre instance a décidé de suspendre <b>%{group_name}" +"</b> (%{group_address}). Vous n'êtes désormais plus membre de ce groupe." -#: lib/web/templates/email/actor_suspension_participants.html.heex:18 lib/web/templates/email/actor_suspension_participants.text.eex:1 +#: lib/web/templates/email/actor_suspension_participants.html.heex:18 +#: lib/web/templates/email/actor_suspension_participants.text.eex:1 msgid "Your participation to %{event} on %{instance} has been cancelled!" -msgstr "Votre participation à l'événement %{event} sur %{instance} a été annulée !" +msgstr "" +"Votre participation à l'événement %{event} sur %{instance} a été annulée !" #. File name template for exported list of participants. Should NOT contain spaces. Make sure the output is going to be something standardized that is acceptable as a file name on most systems. -#: lib/service/export/participants/csv.ex:97 lib/service/export/participants/ods.ex:86 lib/service/export/participants/pdf.ex:96 +#: lib/service/export/participants/csv.ex:97 +#: lib/service/export/participants/ods.ex:86 +#: lib/service/export/participants/pdf.ex:96 msgid "%{event}_participants" msgstr "%{event}_participants" @@ -1097,7 +1754,9 @@ msgstr "Nom du participant" msgid "Participant status" msgstr "Statut du participant" -#: lib/service/export/participants/common.ex:53 lib/web/templates/email/admin/_role.html.heex:3 lib/web/templates/email/admin/_role.text.eex:1 +#: lib/service/export/participants/common.ex:53 +#: lib/web/templates/email/admin/_role.html.heex:3 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Administrator" msgstr "Administrateur⋅ice" @@ -1105,7 +1764,9 @@ msgstr "Administrateur⋅ice" msgid "Creator" msgstr "Créateur⋅ice" -#: lib/service/export/participants/common.ex:50 lib/web/templates/email/admin/_role.html.heex:5 lib/web/templates/email/admin/_role.text.eex:1 +#: lib/service/export/participants/common.ex:50 +#: lib/web/templates/email/admin/_role.html.heex:5 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Moderator" msgstr "Modérateur⋅ice" @@ -1145,7 +1806,10 @@ msgstr "Participant⋅es pour %{event}" msgid "Anonymous participant" msgstr "Participant⋅e anonyme" -#: lib/web/templates/email/date/event_tz_date.html.heex:12 lib/web/templates/email/date/event_tz_date_range.html.heex:20 lib/web/templates/email/date/event_tz_date_range.html.heex:36 lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date.html.heex:12 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:20 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:36 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 msgid "🌐 %{timezone} %{offset}" msgstr "🌐 %{timezone} %{offset}" @@ -1157,7 +1821,8 @@ msgstr "%{date_time} (%{timezone} %{offset})" msgid "%{date_time} (in your timezone %{timezone} %{offset})" msgstr "%{date_time} (dans votre fuseau horaire %{timezone} %{offset})" -#: lib/web/templates/email/notification_each_week.html.heex:18 lib/web/templates/email/notification_each_week.text.eex:1 +#: lib/web/templates/email/notification_each_week.html.heex:18 +#: lib/web/templates/email/notification_each_week.text.eex:1 msgid "On the agenda this week" msgstr "Au programme cette semaine" @@ -1165,7 +1830,8 @@ msgstr "Au programme cette semaine" msgid "Details" msgstr "Détails" -#: lib/web/templates/email/date/event_tz_date_range.html.heex:28 lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:28 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 msgid "From the %{start} to the %{end}" msgstr "Du %{start} au %{end}" @@ -1173,7 +1839,8 @@ msgstr "Du %{start} au %{end}" msgid "Manage your participation" msgstr "Gérer votre participation" -#: lib/web/templates/email/date/event_tz_date_range.html.heex:11 lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:11 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 msgid "On %{date} from %{start_time} to %{end_time}" msgstr "Le %{date} de %{start_time} à %{end_time}" @@ -1181,7 +1848,8 @@ msgstr "Le %{date} de %{start_time} à %{end_time}" msgid "Read more" msgstr "Lire plus" -#: lib/web/templates/email/participation/card/_metadata.html.heex:121 lib/web/templates/email/participation/card/_metadata.text.eex:2 +#: lib/web/templates/email/participation/card/_metadata.html.heex:121 +#: lib/web/templates/email/participation/card/_metadata.text.eex:2 msgid "Online event" msgstr "Événement en ligne" @@ -1245,7 +1913,8 @@ msgstr "Nouvelle localisation :" msgid "New start date:" msgstr "Nouvelle date de début :" -#: lib/web/templates/email/group_membership_rejection.html.heex:18 lib/web/templates/email/group_membership_rejection.text.eex:1 +#: lib/web/templates/email/group_membership_rejection.html.heex:18 +#: lib/web/templates/email/group_membership_rejection.text.eex:1 msgid "Sorry, not this time!" msgstr "Désolé, pas cette fois !" @@ -1253,7 +1922,8 @@ msgstr "Désolé, pas cette fois !" msgid "View the group" msgstr "Voir le groupe" -#: lib/web/templates/email/group_membership_approval.html.heex:18 lib/web/templates/email/group_membership_approval.text.eex:1 +#: lib/web/templates/email/group_membership_approval.html.heex:18 +#: lib/web/templates/email/group_membership_approval.text.eex:1 msgid "You're in!" msgstr "Vous en êtes !" @@ -1270,24 +1940,41 @@ msgid "Your membership request for group %{group} has been rejected." msgstr "Votre demande d'adhésion pour le groupe %{group} a été rejetée." #: lib/web/templates/email/group_membership_rejection.html.heex:47 -msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected." -msgstr "Votre demande d'adhésion pour le groupe %{link_start}<b>%{group}</b>%{link_end} a été rejetée." +msgid "" +"Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has " +"been rejected." +msgstr "" +"Votre demande d'adhésion pour le groupe %{link_start}<b>%{group}</b>%{link_end} " +"a été rejetée." #: lib/web/templates/email/group_membership_approval.text.eex:3 msgid "Your membership request for group %{group} has been approved." msgstr "Votre demande d'adhésion pour le groupe %{group} a été approuvée." #: lib/web/templates/email/group_membership_approval.html.heex:47 -msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved." -msgstr "Votre demande d'adhésion pour le groupe %{link_start}<b>%{group}</b>%{link_end} a été approuvée." +msgid "" +"Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has " +"been approved." +msgstr "" +"Votre demande d'adhésion pour le groupe %{link_start}<b>%{group}</b>%{link_end} " +"a été approuvée." -#: lib/web/templates/email/pending_participation_notification.html.heex:47 lib/web/templates/email/pending_participation_notification.text.eex:4 -msgid "You have one pending attendance request to process for the following event:" -msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" -msgstr[0] "Vous avez une demande de participation en attente à traiter pour l'événement suivant :" -msgstr[1] "Vous avez %{number_participation_requests} demandes de participation en attente à traiter pour l'événement suivant :" +#: lib/web/templates/email/pending_participation_notification.html.heex:47 +#: lib/web/templates/email/pending_participation_notification.text.eex:4 +msgid "" +"You have one pending attendance request to process for the following event:" +msgid_plural "" +"You have %{number_participation_requests} attendance requests to process for " +"the following event:" +msgstr[0] "" +"Vous avez une demande de participation en attente à traiter pour l'événement " +"suivant :" +msgstr[1] "" +"Vous avez %{number_participation_requests} demandes de participation en attente " +"à traiter pour l'événement suivant :" -#: lib/web/templates/email/admin_user_role_changed.html.heex:18 lib/web/templates/email/admin_user_role_changed.text.eex:1 +#: lib/web/templates/email/admin_user_role_changed.html.heex:18 +#: lib/web/templates/email/admin_user_role_changed.text.eex:1 msgid "An administrator changed your role" msgstr "Un⋅e administrateur⋅ice a changé votre rôle" @@ -1295,15 +1982,24 @@ msgstr "Un⋅e administrateur⋅ice a changé votre rôle" msgid "An administrator confirmed your account on %{instance}" msgstr "Un⋅e administrateur⋅ice a confirmé votre compte sur %{instance}" -#: lib/web/templates/email/admin_user_email_changed_new.html.heex:18 lib/web/templates/email/admin_user_email_changed_new.text.eex:1 lib/web/templates/email/admin_user_email_changed_old.html.heex:18 lib/web/templates/email/admin_user_email_changed_old.text.eex:1 +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:18 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:1 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:18 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:1 msgid "An administrator manually changed the email attached to your account" -msgstr "Une administrateur⋅ice a manuellement changé le courriel attaché à votre compte" +msgstr "" +"Une administrateur⋅ice a manuellement changé le courriel attaché à votre compte" #: lib/web/email/admin.ex:43 lib/web/email/admin.ex:70 -msgid "An administrator manually changed the email attached to your account on %{instance}" -msgstr "Une administrateur⋅ice a manuellement changé le courriel attaché à votre compte sur %{instance}" +msgid "" +"An administrator manually changed the email attached to your account on " +"%{instance}" +msgstr "" +"Une administrateur⋅ice a manuellement changé le courriel attaché à votre compte " +"sur %{instance}" -#: lib/web/templates/email/admin_user_confirmation.html.heex:18 lib/web/templates/email/admin_user_confirmation.text.eex:1 +#: lib/web/templates/email/admin_user_confirmation.html.heex:18 +#: lib/web/templates/email/admin_user_confirmation.text.eex:1 msgid "An administrator manually confirmed your account" msgstr "Un⋅e administrateur⋅ice a manuellement confirmé votre compte" @@ -1312,36 +2008,90 @@ msgid "An administrator updated your role on %{instance}" msgstr "Un⋅e administrateur⋅ice a mis à jour votre rôle sur %{instance}" #: lib/web/templates/email/email_changed_new.text.eex:3 -msgid "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." -msgstr "Salut ! Il semblerait que vous avez demandé la modification de l'adresse e-mail liée à votre compte sur %{instance}. Si vous voulez toujours effectuer ce changement, merci de cliquer sur le bouton ci-dessous pour confirmer la modification. Vous pourrez alors vous connecter à %{instance} avec cette nouvelle adresse." +msgid "" +"Hi there! It seems like you wanted to change the email address linked to your " +"account on %{instance}. If you still wish to do so, please click the button " +"below to confirm the change. You will then be able to log in to %{instance} " +"with this new email address." +msgstr "" +"Salut ! Il semblerait que vous avez demandé la modification de l'adresse e-mail " +"liée à votre compte sur %{instance}. Si vous voulez toujours effectuer ce " +"changement, merci de cliquer sur le bouton ci-dessous pour confirmer la " +"modification. Vous pourrez alors vous connecter à %{instance} avec cette " +"nouvelle adresse." -#: lib/web/templates/email/admin_user_email_changed_new.text.eex:3 lib/web/templates/email/admin_user_email_changed_old.text.eex:3 -msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually changed your account email from %{old_email} (this one) to %{new_email}." -msgstr "Salut ! Nous voulions juste vous informer qu'un⋅e administrateur⋅ice de %{instance} vient de changer manuellement le courriel de votre compte de %{old_email} (celui-ci) à %{new_email}." +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:3 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:3 +msgid "" +"Hi there! We just wanted to inform you that an administrator from %{instance} " +"just manually changed your account email from %{old_email} (this one) to " +"%{new_email}." +msgstr "" +"Salut ! Nous voulions juste vous informer qu'un⋅e administrateur⋅ice de " +"%{instance} vient de changer manuellement le courriel de votre compte de " +"%{old_email} (celui-ci) à %{new_email}." #: lib/web/templates/email/admin_user_confirmation.text.eex:3 -msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually confirmed your account." -msgstr "Salut ! Nous voulions juste vous informer qu'un⋅e administrateur⋅ice de %{instance} vient de confirmer manuellement votre compte." +msgid "" +"Hi there! We just wanted to inform you that an administrator from %{instance} " +"just manually confirmed your account." +msgstr "" +"Salut ! Nous voulions juste vous informer qu'un⋅e administrateur⋅ice de " +"%{instance} vient de confirmer manuellement votre compte." #: lib/web/templates/email/admin_user_email_changed_old.html.heex:47 -msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> (this one) to <b>%{new_email}</b>." -msgstr "Salut ! Nous voulions juste vous informer qu'un⋅e administrateur⋅ice de <b>%{instance}</b> vient de changer manuellement le courriel de votre compte de <b>%{old_email}</b> (celui-ci) à <b>%{new_email}</b>." +msgid "" +"Hi there! We just wanted to inform you that an administrator from <b>%{instance}" +"</b> just manually changed your account email from <b>%{old_email}</b> (this " +"one) to <b>%{new_email}</b>." +msgstr "" +"Salut ! Nous voulions juste vous informer qu'un⋅e administrateur⋅ice de " +"<b>%{instance}</b> vient de changer manuellement le courriel de votre compte de " +"<b>%{old_email}</b> (celui-ci) à <b>%{new_email}</b>." #: lib/web/templates/email/admin_user_email_changed_new.html.heex:47 -msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> to <b>%{new_email}</b> (this one)." -msgstr "Salut ! Nous voulions juste vous informer qu'un⋅e administrateur⋅ice de <b>%{instance}</b> vient de changer manuellement le courriel de votre compte de <b>%{old_email}</b> à <b>%{new_email}</b> (celui-ci)." +msgid "" +"Hi there! We just wanted to inform you that an administrator from <b>%{instance}" +"</b> just manually changed your account email from <b>%{old_email}</b> to " +"<b>%{new_email}</b> (this one)." +msgstr "" +"Salut ! Nous voulions juste vous informer qu'un⋅e administrateur⋅ice de " +"<b>%{instance}</b> vient de changer manuellement le courriel de votre compte de " +"<b>%{old_email}</b> à <b>%{new_email}</b> (celui-ci)." #: lib/web/templates/email/admin_user_confirmation.html.heex:47 -msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually confirmed your account." -msgstr "Salut ! Nous voulions juste vous informer qu'un⋅e administrateur⋅ice de <b>%{instance}</b> vient de confirmer manuellement votre compte." +msgid "" +"Hi there! We just wanted to inform you that an administrator from <b>%{instance}" +"</b> just manually confirmed your account." +msgstr "" +"Salut ! Nous voulions juste vous informer qu'un⋅e administrateur⋅ice de " +"<b>%{instance}</b> vient de confirmer manuellement votre compte." -#: lib/web/templates/email/admin_user_confirmation.html.heex:96 lib/web/templates/email/admin_user_email_changed_new.html.heex:62 lib/web/templates/email/admin_user_email_changed_old.html.heex:62 lib/web/templates/email/admin_user_role_changed.html.heex:88 -msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods %{start_link}on the instance's about page%{end_link}." -msgstr "Si quelque chose ne vous semble pas correct, merci de contacter l'administrateur⋅ice de l'instance via les moyens de contacts %{start_link}sur la page « À propos » de l'instance%{end_link}." +#: lib/web/templates/email/admin_user_confirmation.html.heex:96 +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:62 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:62 +#: lib/web/templates/email/admin_user_role_changed.html.heex:88 +msgid "" +"If something doesn't feel right to you, please contact the instance " +"administrator through the contact methods %{start_link}on the instance's about " +"page%{end_link}." +msgstr "" +"Si quelque chose ne vous semble pas correct, merci de contacter " +"l'administrateur⋅ice de l'instance via les moyens de contacts %{start_link}sur " +"la page « À propos » de l'instance%{end_link}." -#: lib/web/templates/email/admin_user_confirmation.text.eex:7 lib/web/templates/email/admin_user_email_changed_new.text.eex:4 lib/web/templates/email/admin_user_email_changed_old.text.eex:4 lib/web/templates/email/admin_user_role_changed.text.eex:8 -msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods on the instance's about page: %{about_page}." -msgstr "Si quelque chose ne vous semble pas correct, merci de contacter l'administrateur⋅ice de l'instance via les moyens de contacts sur la page « À propos » de l'instance : %{about_page}." +#: lib/web/templates/email/admin_user_confirmation.text.eex:7 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:4 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:4 +#: lib/web/templates/email/admin_user_role_changed.text.eex:8 +msgid "" +"If something doesn't feel right to you, please contact the instance " +"administrator through the contact methods on the instance's about page: " +"%{about_page}." +msgstr "" +"Si quelque chose ne vous semble pas correct, merci de contacter " +"l'administrateur⋅ice de l'instance via les moyens de contacts sur la page « À " +"propos » de l'instance : %{about_page}." #: lib/web/templates/email/admin_user_confirmation.html.heex:79 msgid "Login on %{instance}" @@ -1363,25 +2113,38 @@ msgstr "Ancien rôle" msgid "Old role:" msgstr "Ancien rôle :" -#: lib/web/templates/email/admin/_role.html.heex:7 lib/web/templates/email/admin/_role.text.eex:1 +#: lib/web/templates/email/admin/_role.html.heex:7 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "User" msgstr "Utilisateur⋅ice" #: lib/web/templates/email/admin_user_confirmation.html.heex:62 msgid "You may now login using your credentials on the service." -msgstr "Vous pouvez à présent vous connecter en utilisant vos identifiants sur le service." +msgstr "" +"Vous pouvez à présent vous connecter en utilisant vos identifiants sur le " +"service." #: lib/web/templates/email/admin_user_confirmation.text.eex:5 msgid "You may now login using your credentials on the service:" -msgstr "Vous pouvez à présent vous connecter en utilisant vos identifiants sur le service :" +msgstr "" +"Vous pouvez à présent vous connecter en utilisant vos identifiants sur le " +"service :" #: lib/web/templates/email/admin_user_role_changed.text.eex:3 -msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just changed your account role." -msgstr "Salut ! Nous voulions juste vous informer qu'un⋅e administrateur⋅ice de %{instance} vient de changer le rôle de votre compte." +msgid "" +"Hi there! We just wanted to inform you that an administrator from %{instance} " +"just changed your account role." +msgstr "" +"Salut ! Nous voulions juste vous informer qu'un⋅e administrateur⋅ice de " +"%{instance} vient de changer le rôle de votre compte." #: lib/web/templates/email/admin_user_role_changed.html.heex:47 -msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just changed your account role." -msgstr "Salut ! Nous voulions juste vous informer qu'un⋅e administrateur⋅ice de <b>%{instance}</b> vient de changer le rôle de votre compte." +msgid "" +"Hi there! We just wanted to inform you that an administrator from <b>%{instance}" +"</b> just changed your account role." +msgstr "" +"Salut ! Nous voulions juste vous informer qu'un⋅e administrateur⋅ice de " +"<b>%{instance}</b> vient de changer le rôle de votre compte." #: lib/web/templates/email/instance_follow.text.eex:5 msgid "%{name} just requested to follow your instance." @@ -1391,15 +2154,22 @@ msgstr "%{name} vient de demander à suivre votre instance." msgid "<b>%{name}</b> just requested to follow your instance." msgstr "<b>%{name}</b> demande à suivre votre instance." -#: lib/web/templates/email/instance_follow.html.heex:55 lib/web/templates/email/instance_follow.text.eex:6 +#: lib/web/templates/email/instance_follow.html.heex:55 +#: lib/web/templates/email/instance_follow.text.eex:6 msgid "If you accept, this profile will receive all of your public events." -msgstr "Si vous acceptez, ce profil recevra tous les événements publics de votre instance." +msgstr "" +"Si vous acceptez, ce profil recevra tous les événements publics de votre " +"instance." -#: lib/web/templates/email/instance_follow.html.heex:88 lib/web/templates/email/instance_follow.text.eex:9 +#: lib/web/templates/email/instance_follow.html.heex:88 +#: lib/web/templates/email/instance_follow.text.eex:9 msgid "To accept this invitation, head over to the profile's admin page." -msgstr "Pour accepter cette invitation, rendez-vous sur la page du profil dans l'administration." +msgstr "" +"Pour accepter cette invitation, rendez-vous sur la page du profil dans " +"l'administration." -#: lib/web/templates/email/instance_follow.html.heex:110 lib/web/templates/email/instance_follow.html.heex:120 +#: lib/web/templates/email/instance_follow.html.heex:110 +#: lib/web/templates/email/instance_follow.html.heex:120 msgid "View the details" msgstr "Voir les détails" @@ -1535,17 +2305,28 @@ msgstr "Activer mon compte :" msgid "Instance %{domain} requests to follow your instance" msgstr "L'instance %{domain} demande à suivre votre instance" -#: lib/web/templates/email/instance_follow.html.heex:68 lib/web/templates/email/instance_follow.text.eex:7 -msgid "Note: %{name} following you doesn't necessarily imply that you follow this instance, but you can ask to follow them too." -msgstr "Note : le fait que %{name} vous suive n'implique pas nécessairement que vous suivez cette instance, mais vous pouvez demander à les suivre également." +#: lib/web/templates/email/instance_follow.html.heex:68 +#: lib/web/templates/email/instance_follow.text.eex:7 +msgid "" +"Note: %{name} following you doesn't necessarily imply that you follow this " +"instance, but you can ask to follow them too." +msgstr "" +"Note : le fait que %{name} vous suive n'implique pas nécessairement que vous " +"suivez cette instance, mais vous pouvez demander à les suivre également." -#: lib/web/templates/email/group_member_removal.html.heex:18 lib/web/templates/email/group_member_removal.text.eex:1 +#: lib/web/templates/email/group_member_removal.html.heex:18 +#: lib/web/templates/email/group_member_removal.text.eex:1 msgid "Until next time!" msgstr "À la prochaine fois !" -#: lib/web/templates/email/group_suspension.html.heex:67 lib/web/templates/email/group_suspension.text.eex:5 -msgid "As this group was located on this instance, all of its data has been irretrievably deleted." -msgstr "Comme ce groupe était originaire de cette instance, toutes ses données ont été irrémédiablement détruites." +#: lib/web/templates/email/group_suspension.html.heex:67 +#: lib/web/templates/email/group_suspension.text.eex:5 +msgid "" +"As this group was located on this instance, all of its data has been " +"irretrievably deleted." +msgstr "" +"Comme ce groupe était originaire de cette instance, toutes ses données ont été " +"irrémédiablement détruites." #: lib/web/templates/email/report.text.eex:11 msgid "Events" @@ -1559,22 +2340,47 @@ msgstr "Événements signalés" msgid "Participant registration date" msgstr "Date d'inscription du participant" -#: lib/web/templates/email/anonymous_participation_confirmation.html.heex:113 lib/web/templates/email/event_participation_confirmed.html.heex:122 +#: lib/web/templates/email/anonymous_participation_confirmation.html.heex:113 +#: lib/web/templates/email/event_participation_confirmed.html.heex:122 msgid "Cancel my attendance" msgstr "Annuler ma participation" -#: lib/web/templates/email/anonymous_participation_confirmation.html.heex:90 lib/web/templates/email/event_participation_confirmed.html.heex:99 +#: lib/web/templates/email/anonymous_participation_confirmation.html.heex:90 +#: lib/web/templates/email/event_participation_confirmed.html.heex:99 msgid "If you wish to cancel your participation, simply click on the link below." -msgstr "Si vous souhaitez annuler votre participation, il vous suffit de cliquer sur le lien ci-dessous." +msgstr "" +"Si vous souhaitez annuler votre participation, il vous suffit de cliquer sur le " +"lien ci-dessous." #: lib/web/email/admin.ex:142 msgid "Email configuration test for %{instance}" msgstr "Test de configuration des e-mails pour %{instance}" -#: lib/web/templates/email/email_configuration_test.html.heex:47 lib/web/templates/email/email_configuration_test.text.eex:3 +#: lib/web/templates/email/email_configuration_test.html.heex:47 +#: lib/web/templates/email/email_configuration_test.text.eex:3 msgid "If you received this email, the email configuration seems to be correct." -msgstr "Si vous avez reçu cet e-mail, la configuration des e-mails semble correcte." +msgstr "" +"Si vous avez reçu cet e-mail, la configuration des e-mails semble correcte." -#: lib/web/templates/email/email_configuration_test.html.heex:18 lib/web/templates/email/email_configuration_test.text.eex:1 +#: lib/web/templates/email/email_configuration_test.html.heex:18 +#: lib/web/templates/email/email_configuration_test.text.eex:1 msgid "Well done!" msgstr "Bien joué !" + +#: lib/web/templates/api/terms.html.heex:55 +msgctxt "terms" +msgid "" +"When we say “we”, “our”, or “us” in this document, we are referring to the " +"owners, operators and administrators of this Mobilizon instance. The Mobilizon " +"software is provided by the team of Mobilizon contributors. Unless explicitly " +"stated, this Mobilizon instance is an independent service using Mobilizon's " +"source code. You may find more information about this instance on the <a " +"href=\"/about/instance\">\"About this instance\"</a> page." +msgstr "" +"Lorsque nous disons « nous », « notre » ou « nos » dans ce document, nous " +"faisons référence aux propriétaires, opérateur·ices et administrateur·ices de " +"cette instance de Mobilizon. Le logiciel Mobilizon est fourni par l'équipe des " +"contributeur·ices de Mobilizon. Sauf mention explicite, cette instance de " +"Mobilizon est un service indépendant utilisant le code source de Mobilizon. " +"Vous pouvez trouver plus d'informations sur cette instance sur la page <a " +"href=\"/about/instance\">« A propos de cette instance »</a>." diff --git a/priv/gettext/fr/LC_MESSAGES/errors.po b/priv/gettext/fr/LC_MESSAGES/errors.po index b18e13cd3..5432b1ea8 100644 --- a/priv/gettext/fr/LC_MESSAGES/errors.po +++ b/priv/gettext/fr/LC_MESSAGES/errors.po @@ -184,13 +184,13 @@ msgstr "Les inscriptions ne sont pas ouvertes" msgid "The current password is invalid" msgstr "Le mot de passe actuel est invalide" -#: lib/graphql/resolvers/admin.ex:334 +#: lib/graphql/resolvers/admin.ex:335 #: lib/graphql/resolvers/user.ex:527 #, elixir-autogen, elixir-format msgid "The new email doesn't seem to be valid" msgstr "La nouvelle adresse e-mail ne semble pas être valide" -#: lib/graphql/resolvers/admin.ex:323 +#: lib/graphql/resolvers/admin.ex:324 #: lib/graphql/resolvers/user.ex:514 #, elixir-autogen, elixir-format msgid "The new email must be different" @@ -624,7 +624,7 @@ msgstr "Vous ne pouvez pas rejoindre ce groupe" msgid "You don't have permission to delete this token" msgstr "Vous n'avez pas la permission de supprimer ce jeton" -#: lib/graphql/resolvers/admin.ex:56 +#: lib/graphql/resolvers/admin.ex:57 #, elixir-autogen, elixir-format msgid "You need to be logged-in and a moderator to list action logs" msgstr "Vous devez être connecté·e et une modérateur·ice pour lister les journaux de modération" @@ -644,17 +644,17 @@ msgstr "Vous devez être connecté·e et une modérateur·ice pour modifier un s msgid "You need to be logged-in and a moderator to view a report" msgstr "Vous devez être connecté·e pour et une modérateur·ice pour visionner un signalement" -#: lib/graphql/resolvers/admin.ex:258 +#: lib/graphql/resolvers/admin.ex:259 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access admin settings" msgstr "Vous devez être connecté·e et un·e administrateur·ice pour accéder aux paramètres administrateur" -#: lib/graphql/resolvers/admin.ex:242 +#: lib/graphql/resolvers/admin.ex:243 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "Vous devez être connecté·e et un·e administrateur·ice pour accéder aux panneau de statistiques" -#: lib/graphql/resolvers/admin.ex:283 +#: lib/graphql/resolvers/admin.ex:284 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to save admin settings" msgstr "Vous devez être connecté·e et un·e administrateur·ice pour sauvegarder les paramètres administrateur" @@ -941,7 +941,7 @@ msgstr "Impossible de quitter l'événement" msgid "Failed to update the group" msgstr "Impossible de mettre à jour le groupe" -#: lib/graphql/resolvers/admin.ex:357 +#: lib/graphql/resolvers/admin.ex:358 #: lib/graphql/resolvers/user.ex:547 #, elixir-autogen, elixir-format msgid "Failed to update user email" @@ -1072,22 +1072,22 @@ msgstr "Vous devez être connecté⋅e pour supprimer un⋅e membre" msgid "Your email seems to be using an invalid format" msgstr "Votre email semble utiliser un format invalide" -#: lib/graphql/resolvers/admin.ex:399 +#: lib/graphql/resolvers/admin.ex:400 #, elixir-autogen, elixir-format msgid "Can't confirm an already confirmed user" msgstr "Impossible de confirmer un⋅e utilisateur⋅ice déjà confirmé⋅e" -#: lib/graphql/resolvers/admin.ex:403 +#: lib/graphql/resolvers/admin.ex:404 #, elixir-autogen, elixir-format msgid "Deconfirming users is not supported" msgstr "Dé-confirmer des utilisateur⋅ices n'est pas supporté" -#: lib/graphql/resolvers/admin.ex:375 +#: lib/graphql/resolvers/admin.ex:376 #, elixir-autogen, elixir-format msgid "The new role must be different" msgstr "Le nouveau rôle doit être différent" -#: lib/graphql/resolvers/admin.ex:314 +#: lib/graphql/resolvers/admin.ex:315 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to edit an user's details" msgstr "Vous devez être connecté·e et un·e administrateur·ice pour éditer les détails d'un⋅e utilisateur⋅ice" @@ -1097,7 +1097,7 @@ msgstr "Vous devez être connecté·e et un·e administrateur·ice pour éditer msgid "A profile or group with that name already exists" msgstr "Un profil ou un groupe avec ce nom existe déjà" -#: lib/graphql/resolvers/admin.ex:542 +#: lib/graphql/resolvers/admin.ex:560 #, elixir-autogen, elixir-format msgid "Unable to find an instance to follow at this address" msgstr "Impossible de trouver une instance à suivre à cette adresse" @@ -1361,7 +1361,7 @@ msgstr "L'enregistrement externe n'est pas autorisé" msgid "The same push subscription has already been registered" msgstr "Le même abonnement push a déjà été enregistré" -#: lib/graphql/resolvers/admin.ex:536 +#: lib/graphql/resolvers/admin.ex:554 #, elixir-autogen, elixir-format msgid "This instance is pending follow approval" msgstr "Cette instance est en attente d'une approbation de suivi" @@ -1371,7 +1371,7 @@ msgstr "Cette instance est en attente d'une approbation de suivi" msgid "Timezone ID %{timezone} is invalid" msgstr "L'ID de fuseau horaire %{timezone} est invalide" -#: lib/graphql/resolvers/admin.ex:539 +#: lib/graphql/resolvers/admin.ex:557 #, elixir-autogen, elixir-format msgid "You are already following this instance" msgstr "Vous suivez déjà cette instance" @@ -1393,12 +1393,12 @@ msgstr "" "Le jeton que vous avez fourni n'est pas valide. Assurez-vous que l'URL est exactement la même que celle fournie dans le courriel que vous " "avez reçu." -#: lib/graphql/resolvers/conversation.ex:161 +#: lib/graphql/resolvers/conversation.ex:164 #, elixir-autogen, elixir-format msgid "Conversation needs to mention at least one participant that's not yourself" msgstr "La conversation doit mentionner au moins un·e participant·e qui n'est pas vous-même" -#: lib/graphql/resolvers/participant.ex:396 +#: lib/graphql/resolvers/participant.ex:401 #, elixir-autogen, elixir-format msgid "There are no participants matching the audience you've selected." msgstr "Il n'y a pas de participant·es correspondant à l'audience que vous avez sélectionnée." diff --git a/priv/gettext/gd/LC_MESSAGES/activity.po b/priv/gettext/gd/LC_MESSAGES/activity.po index ec8f0214e..a779c1630 100644 --- a/priv/gettext/gd/LC_MESSAGES/activity.po +++ b/priv/gettext/gd/LC_MESSAGES/activity.po @@ -231,7 +231,7 @@ msgstr "" #: lib/web/templates/email/email_direct_activity.html.heex:230 #: lib/web/templates/email/email_direct_activity.text.eex:23 -#, elixir-format +#, elixir-format, elixir-autogen msgid "View one more activity" msgid_plural "View %{count} more activities" msgstr[0] "Seall %{count} ghnìomhachd a bharrachd" @@ -243,7 +243,7 @@ msgstr[3] "Seall %{count} gnìomhachd a bharrachd" #: lib/web/templates/email/email_direct_activity.html.heex:60 #: lib/web/templates/email/email_direct_activity.text.eex:6 #: lib/web/templates/email/email_direct_activity.text.eex:7 -#, elixir-format +#, elixir-format, elixir-autogen msgid "There has been an activity!" msgid_plural "There has been some activity!" msgstr[0] "Bha gnìomhachd ann!" diff --git a/priv/gettext/gd/LC_MESSAGES/default.po b/priv/gettext/gd/LC_MESSAGES/default.po index a40afd486..e25a318a9 100644 --- a/priv/gettext/gd/LC_MESSAGES/default.po +++ b/priv/gettext/gd/LC_MESSAGES/default.po @@ -321,7 +321,7 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "" #: lib/web/email/notification.ex:52 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "" @@ -331,7 +331,7 @@ msgstr[3] "" #: lib/web/templates/email/on_day_notification.html.heex:47 #: lib/web/templates/email/on_day_notification.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "" @@ -383,7 +383,7 @@ msgid "You have been invited by %{inviter} to join group %{group}" msgstr "" #: lib/web/email/notification.ex:81 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "" @@ -392,7 +392,7 @@ msgstr[2] "" msgstr[3] "" #: lib/web/email/notification.ex:107 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "" @@ -402,7 +402,7 @@ msgstr[3] "" #: lib/web/templates/email/notification_each_week.html.heex:47 #: lib/web/templates/email/notification_each_week.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "" @@ -770,7 +770,7 @@ msgstr "" #: lib/web/templates/email/notification_each_week.text.eex:11 #: lib/web/templates/email/on_day_notification.html.heex:89 #: lib/web/templates/email/on_day_notification.text.eex:11 -#, elixir-format +#, elixir-format, elixir-autogen msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "" @@ -1068,7 +1068,7 @@ msgstr "" msgid "Your instance's moderation team has decided to suspend %{group_name} (%{group_address}). You are no longer a member of this group." msgstr "" -#: lib/web/email/group.ex:108 +#: lib/web/email/group.ex:106 #, elixir-autogen, elixir-format msgid "The group %{group} has been suspended on %{instance}" msgstr "" @@ -1152,12 +1152,6 @@ msgctxt "terms" msgid "We reserve the right to modify these Terms at any time. For instance, we may need to change these Terms if we come out with a new feature." msgstr "" -#: lib/web/templates/api/terms.html.heex:55 -#, elixir-autogen, elixir-format -msgctxt "terms" -msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by <a href=\"https://framasoft.org\">Framasoft</a>, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." -msgstr "" - #: lib/web/templates/api/terms.html.heex:105 #, elixir-autogen, elixir-format msgctxt "terms" @@ -1642,7 +1636,7 @@ msgstr "" #: lib/web/templates/email/pending_participation_notification.html.heex:47 #: lib/web/templates/email/pending_participation_notification.text.eex:4 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one pending attendance request to process for the following event:" msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" msgstr[0] "" @@ -2038,3 +2032,9 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Well done!" msgstr "" + +#: lib/web/templates/api/terms.html.heex:55 +#, elixir-autogen, elixir-format, fuzzy +msgctxt "terms" +msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." +msgstr "" diff --git a/priv/gettext/gd/LC_MESSAGES/errors.po b/priv/gettext/gd/LC_MESSAGES/errors.po index 9fa4ea687..411bfa621 100644 --- a/priv/gettext/gd/LC_MESSAGES/errors.po +++ b/priv/gettext/gd/LC_MESSAGES/errors.po @@ -188,13 +188,13 @@ msgstr "" msgid "The current password is invalid" msgstr "" -#: lib/graphql/resolvers/admin.ex:334 +#: lib/graphql/resolvers/admin.ex:335 #: lib/graphql/resolvers/user.ex:527 #, elixir-autogen, elixir-format msgid "The new email doesn't seem to be valid" msgstr "" -#: lib/graphql/resolvers/admin.ex:323 +#: lib/graphql/resolvers/admin.ex:324 #: lib/graphql/resolvers/user.ex:514 #, elixir-autogen, elixir-format msgid "The new email must be different" @@ -628,7 +628,7 @@ msgstr "" msgid "You don't have permission to delete this token" msgstr "" -#: lib/graphql/resolvers/admin.ex:56 +#: lib/graphql/resolvers/admin.ex:57 #, elixir-autogen, elixir-format msgid "You need to be logged-in and a moderator to list action logs" msgstr "" @@ -648,17 +648,17 @@ msgstr "" msgid "You need to be logged-in and a moderator to view a report" msgstr "" -#: lib/graphql/resolvers/admin.ex:258 +#: lib/graphql/resolvers/admin.ex:259 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" -#: lib/graphql/resolvers/admin.ex:242 +#: lib/graphql/resolvers/admin.ex:243 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" -#: lib/graphql/resolvers/admin.ex:283 +#: lib/graphql/resolvers/admin.ex:284 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" @@ -945,7 +945,7 @@ msgstr "" msgid "Failed to update the group" msgstr "" -#: lib/graphql/resolvers/admin.ex:357 +#: lib/graphql/resolvers/admin.ex:358 #: lib/graphql/resolvers/user.ex:547 #, elixir-autogen, elixir-format msgid "Failed to update user email" @@ -1076,22 +1076,22 @@ msgstr "" msgid "Your email seems to be using an invalid format" msgstr "" -#: lib/graphql/resolvers/admin.ex:399 +#: lib/graphql/resolvers/admin.ex:400 #, elixir-autogen, elixir-format msgid "Can't confirm an already confirmed user" msgstr "" -#: lib/graphql/resolvers/admin.ex:403 +#: lib/graphql/resolvers/admin.ex:404 #, elixir-autogen, elixir-format msgid "Deconfirming users is not supported" msgstr "" -#: lib/graphql/resolvers/admin.ex:375 +#: lib/graphql/resolvers/admin.ex:376 #, elixir-autogen, elixir-format, fuzzy msgid "The new role must be different" msgstr "" -#: lib/graphql/resolvers/admin.ex:314 +#: lib/graphql/resolvers/admin.ex:315 #, elixir-autogen, elixir-format, fuzzy msgid "You need to be logged-in and an administrator to edit an user's details" msgstr "" @@ -1101,7 +1101,7 @@ msgstr "" msgid "A profile or group with that name already exists" msgstr "" -#: lib/graphql/resolvers/admin.ex:542 +#: lib/graphql/resolvers/admin.ex:560 #, elixir-autogen, elixir-format msgid "Unable to find an instance to follow at this address" msgstr "" @@ -1363,7 +1363,7 @@ msgstr "" msgid "The same push subscription has already been registered" msgstr "" -#: lib/graphql/resolvers/admin.ex:536 +#: lib/graphql/resolvers/admin.ex:554 #, elixir-autogen, elixir-format msgid "This instance is pending follow approval" msgstr "" @@ -1373,7 +1373,7 @@ msgstr "" msgid "Timezone ID %{timezone} is invalid" msgstr "" -#: lib/graphql/resolvers/admin.ex:539 +#: lib/graphql/resolvers/admin.ex:557 #, elixir-autogen, elixir-format, fuzzy msgid "You are already following this instance" msgstr "" @@ -1393,12 +1393,12 @@ msgstr "" msgid "The token you provided is invalid. Make sure that the URL is exactly the one provided inside the email you got." msgstr "" -#: lib/graphql/resolvers/conversation.ex:161 +#: lib/graphql/resolvers/conversation.ex:164 #, elixir-autogen, elixir-format msgid "Conversation needs to mention at least one participant that's not yourself" msgstr "" -#: lib/graphql/resolvers/participant.ex:396 +#: lib/graphql/resolvers/participant.ex:401 #, elixir-autogen, elixir-format msgid "There are no participants matching the audience you've selected." msgstr "" diff --git a/priv/gettext/gl/LC_MESSAGES/activity.po b/priv/gettext/gl/LC_MESSAGES/activity.po index 51189462a..0944e8163 100644 --- a/priv/gettext/gl/LC_MESSAGES/activity.po +++ b/priv/gettext/gl/LC_MESSAGES/activity.po @@ -228,7 +228,7 @@ msgstr "" #: lib/web/templates/email/email_direct_activity.html.heex:230 #: lib/web/templates/email/email_direct_activity.text.eex:23 -#, elixir-format +#, elixir-format, elixir-autogen msgid "View one more activity" msgid_plural "View %{count} more activities" msgstr[0] "Ver unha actividade máis" @@ -238,7 +238,7 @@ msgstr[1] "Ver %{count} actividades máis" #: lib/web/templates/email/email_direct_activity.html.heex:60 #: lib/web/templates/email/email_direct_activity.text.eex:6 #: lib/web/templates/email/email_direct_activity.text.eex:7 -#, elixir-format +#, elixir-format, elixir-autogen msgid "There has been an activity!" msgid_plural "There has been some activity!" msgstr[0] "Houbo actividade!" diff --git a/priv/gettext/gl/LC_MESSAGES/default.po b/priv/gettext/gl/LC_MESSAGES/default.po index 90af06c4c..da086b36e 100644 --- a/priv/gettext/gl/LC_MESSAGES/default.po +++ b/priv/gettext/gl/LC_MESSAGES/default.po @@ -356,7 +356,7 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon en %{instance}: email cambiado" #: lib/web/email/notification.ex:52 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "Un evento previsto para hoxe" @@ -364,7 +364,7 @@ msgstr[1] "%{nb_events} eventos previstos hoxe" #: lib/web/templates/email/on_day_notification.html.heex:47 #: lib/web/templates/email/on_day_notification.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "Hoxe tes un evento:" @@ -414,14 +414,14 @@ msgid "You have been invited by %{inviter} to join group %{group}" msgstr "%{inviter} convidoute a unirte ó grupo %{group}" #: lib/web/email/notification.ex:81 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "Un evento previsto nesta semana" msgstr[1] "%{nb_events} eventos previstos nesta semana" #: lib/web/email/notification.ex:107 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "Hai unha solicitude de participación para o evento %{title} que atender" @@ -431,7 +431,7 @@ msgstr[1] "" #: lib/web/templates/email/notification_each_week.html.heex:47 #: lib/web/templates/email/notification_each_week.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "Tes un evento esta semana:" @@ -916,7 +916,7 @@ msgstr "Por favor, non o utilices nun entorno de produción." #: lib/web/templates/email/notification_each_week.text.eex:11 #: lib/web/templates/email/on_day_notification.html.heex:89 #: lib/web/templates/email/on_day_notification.text.eex:11 -#, elixir-format +#, elixir-format, elixir-autogen msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "" @@ -1252,7 +1252,7 @@ msgstr "" "Os moderadores da túa instancia decidiron suspender %{group_name} " "(%{group_address}). Xa non pertences a este grupo." -#: lib/web/email/group.ex:108 +#: lib/web/email/group.ex:106 #, elixir-autogen, elixir-format msgid "The group %{group} has been suspended on %{instance}" msgstr "O grupo %{group} foi suspendido en %{instance}" @@ -1375,21 +1375,6 @@ msgstr "" "Reservamos o dereito a modificar estos Termos en calquera momento. Por " "exemplo, poderiamos cambiar os Termos se introducimos novas funcións." -#: lib/web/templates/api/terms.html.heex:55 -#, elixir-autogen, elixir-format -msgctxt "terms" -msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by <a href=\"https://framasoft.org\">Framasoft</a>, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." -msgstr "" -"Cando dicimos \"nós\", \"noso\" ou \"a nós\" neste documento, referímonos ás " -"persoas donas, operadoras e administradoras desta instancia Mobilizon. O " -"software Mobilizon está proporcionado polo equipo de colaboradoras de " -"Mobilizon, coa axuda de <a href=\"https://framasoft.org\">Framasoft</a>, " -"unha organización francesa sen ánimo de lucro que fomenta o Software Libre. " -"A non ser que se indique o contrario, esta instancia Mobilizon é un servizo " -"independente que está a usar o código fonte de Mobilizon. Podes atopar máis " -"información sobre esta instancia na páxina <a href=\"/about/instance\"" -">Acerca desta instancia</a>." - #: lib/web/templates/api/terms.html.heex:105 #, elixir-autogen, elixir-format msgctxt "terms" @@ -1911,7 +1896,7 @@ msgstr "" #: lib/web/templates/email/pending_participation_notification.html.heex:47 #: lib/web/templates/email/pending_participation_notification.text.eex:4 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one pending attendance request to process for the following event:" msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" msgstr[0] "Tes unha solicitude de participación pendente de atender:" @@ -2316,3 +2301,18 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Well done!" msgstr "" + +#: lib/web/templates/api/terms.html.heex:55 +#, elixir-autogen, elixir-format, fuzzy +msgctxt "terms" +msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." +msgstr "" +"Cando dicimos \"nós\", \"noso\" ou \"a nós\" neste documento, referímonos ás " +"persoas donas, operadoras e administradoras desta instancia Mobilizon. O " +"software Mobilizon está proporcionado polo equipo de colaboradoras de " +"Mobilizon, coa axuda de <a href=\"https://framasoft.org\">Framasoft</a>, " +"unha organización francesa sen ánimo de lucro que fomenta o Software Libre. " +"A non ser que se indique o contrario, esta instancia Mobilizon é un servizo " +"independente que está a usar o código fonte de Mobilizon. Podes atopar máis " +"información sobre esta instancia na páxina <a href=\"/about/instance\"" +">Acerca desta instancia</a>." diff --git a/priv/gettext/gl/LC_MESSAGES/errors.po b/priv/gettext/gl/LC_MESSAGES/errors.po index 13b3eba4c..11444ba29 100644 --- a/priv/gettext/gl/LC_MESSAGES/errors.po +++ b/priv/gettext/gl/LC_MESSAGES/errors.po @@ -183,13 +183,13 @@ msgstr "O rexistro está pechado" msgid "The current password is invalid" msgstr "O contrasinal actual non é válido" -#: lib/graphql/resolvers/admin.ex:334 +#: lib/graphql/resolvers/admin.ex:335 #: lib/graphql/resolvers/user.ex:527 #, elixir-autogen, elixir-format msgid "The new email doesn't seem to be valid" msgstr "O novo email non semella ser válido" -#: lib/graphql/resolvers/admin.ex:323 +#: lib/graphql/resolvers/admin.ex:324 #: lib/graphql/resolvers/user.ex:514 #, elixir-autogen, elixir-format msgid "The new email must be different" @@ -628,7 +628,7 @@ msgstr "Non podes convidar a este grupo" msgid "You don't have permission to delete this token" msgstr "Non tes permiso para eliminar este token" -#: lib/graphql/resolvers/admin.ex:56 +#: lib/graphql/resolvers/admin.ex:57 #, elixir-autogen, elixir-format msgid "You need to be logged-in and a moderator to list action logs" msgstr "" @@ -650,21 +650,21 @@ msgstr "Tes que estas conectada e ser moderadora para actualizar unha denuncia" msgid "You need to be logged-in and a moderator to view a report" msgstr "Tes que estar conectada e ser moderadora para ver unha denuncia" -#: lib/graphql/resolvers/admin.ex:258 +#: lib/graphql/resolvers/admin.ex:259 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" "Tes que estar conectada e ser administradora para acceder ós axustes de " "administración" -#: lib/graphql/resolvers/admin.ex:242 +#: lib/graphql/resolvers/admin.ex:243 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" "Tes que estar conectada e ser administradora para acceder ó taboleiro de " "estatísticas" -#: lib/graphql/resolvers/admin.ex:283 +#: lib/graphql/resolvers/admin.ex:284 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" @@ -959,7 +959,7 @@ msgstr "" msgid "Failed to update the group" msgstr "" -#: lib/graphql/resolvers/admin.ex:357 +#: lib/graphql/resolvers/admin.ex:358 #: lib/graphql/resolvers/user.ex:547 #, elixir-autogen, elixir-format msgid "Failed to update user email" @@ -1090,22 +1090,22 @@ msgstr "" msgid "Your email seems to be using an invalid format" msgstr "" -#: lib/graphql/resolvers/admin.ex:399 +#: lib/graphql/resolvers/admin.ex:400 #, elixir-autogen, elixir-format msgid "Can't confirm an already confirmed user" msgstr "" -#: lib/graphql/resolvers/admin.ex:403 +#: lib/graphql/resolvers/admin.ex:404 #, elixir-autogen, elixir-format msgid "Deconfirming users is not supported" msgstr "" -#: lib/graphql/resolvers/admin.ex:375 +#: lib/graphql/resolvers/admin.ex:376 #, elixir-autogen, elixir-format, fuzzy msgid "The new role must be different" msgstr "O novo email ten que ser diferente" -#: lib/graphql/resolvers/admin.ex:314 +#: lib/graphql/resolvers/admin.ex:315 #, elixir-autogen, elixir-format, fuzzy msgid "You need to be logged-in and an administrator to edit an user's details" msgstr "" @@ -1117,7 +1117,7 @@ msgstr "" msgid "A profile or group with that name already exists" msgstr "" -#: lib/graphql/resolvers/admin.ex:542 +#: lib/graphql/resolvers/admin.ex:560 #, elixir-autogen, elixir-format msgid "Unable to find an instance to follow at this address" msgstr "" @@ -1379,7 +1379,7 @@ msgstr "" msgid "The same push subscription has already been registered" msgstr "" -#: lib/graphql/resolvers/admin.ex:536 +#: lib/graphql/resolvers/admin.ex:554 #, elixir-autogen, elixir-format msgid "This instance is pending follow approval" msgstr "" @@ -1389,7 +1389,7 @@ msgstr "" msgid "Timezone ID %{timezone} is invalid" msgstr "" -#: lib/graphql/resolvers/admin.ex:539 +#: lib/graphql/resolvers/admin.ex:557 #, elixir-autogen, elixir-format, fuzzy msgid "You are already following this instance" msgstr "" @@ -1409,12 +1409,12 @@ msgstr "" msgid "The token you provided is invalid. Make sure that the URL is exactly the one provided inside the email you got." msgstr "" -#: lib/graphql/resolvers/conversation.ex:161 +#: lib/graphql/resolvers/conversation.ex:164 #, elixir-autogen, elixir-format msgid "Conversation needs to mention at least one participant that's not yourself" msgstr "" -#: lib/graphql/resolvers/participant.ex:396 +#: lib/graphql/resolvers/participant.ex:401 #, elixir-autogen, elixir-format msgid "There are no participants matching the audience you've selected." msgstr "" diff --git a/priv/gettext/he/LC_MESSAGES/activity.po b/priv/gettext/he/LC_MESSAGES/activity.po index 70b2c84fa..20969fa23 100644 --- a/priv/gettext/he/LC_MESSAGES/activity.po +++ b/priv/gettext/he/LC_MESSAGES/activity.po @@ -230,7 +230,7 @@ msgstr "" #: lib/web/templates/email/email_direct_activity.html.heex:230 #: lib/web/templates/email/email_direct_activity.text.eex:23 -#, elixir-format +#, elixir-format, elixir-autogen msgid "View one more activity" msgid_plural "View %{count} more activities" msgstr[0] "להציג עוד פעילות אחת" @@ -242,7 +242,7 @@ msgstr[3] "להציג עוד %{count} פעילויות" #: lib/web/templates/email/email_direct_activity.html.heex:60 #: lib/web/templates/email/email_direct_activity.text.eex:6 #: lib/web/templates/email/email_direct_activity.text.eex:7 -#, elixir-format +#, elixir-format, elixir-autogen msgid "There has been an activity!" msgid_plural "There has been some activity!" msgstr[0] "התרחשה פעילות!" diff --git a/priv/gettext/he/LC_MESSAGES/default.po b/priv/gettext/he/LC_MESSAGES/default.po index 909075445..d5b679ef3 100644 --- a/priv/gettext/he/LC_MESSAGES/default.po +++ b/priv/gettext/he/LC_MESSAGES/default.po @@ -314,7 +314,7 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "" #: lib/web/email/notification.ex:52 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "" @@ -324,7 +324,7 @@ msgstr[3] "" #: lib/web/templates/email/on_day_notification.html.heex:47 #: lib/web/templates/email/on_day_notification.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "" @@ -376,7 +376,7 @@ msgid "You have been invited by %{inviter} to join group %{group}" msgstr "" #: lib/web/email/notification.ex:81 -#, elixir-format, fuzzy +#, elixir-format, elixir-autogen, fuzzy msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "" @@ -385,7 +385,7 @@ msgstr[2] "" msgstr[3] "" #: lib/web/email/notification.ex:107 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "" @@ -395,7 +395,7 @@ msgstr[3] "" #: lib/web/templates/email/notification_each_week.html.heex:47 #: lib/web/templates/email/notification_each_week.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "" @@ -763,7 +763,7 @@ msgstr "" #: lib/web/templates/email/notification_each_week.text.eex:11 #: lib/web/templates/email/on_day_notification.html.heex:89 #: lib/web/templates/email/on_day_notification.text.eex:11 -#, elixir-format, fuzzy +#, elixir-format, elixir-autogen, fuzzy msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "" @@ -1061,7 +1061,7 @@ msgstr "" msgid "Your instance's moderation team has decided to suspend %{group_name} (%{group_address}). You are no longer a member of this group." msgstr "" -#: lib/web/email/group.ex:108 +#: lib/web/email/group.ex:106 #, elixir-autogen, elixir-format msgid "The group %{group} has been suspended on %{instance}" msgstr "" @@ -1145,12 +1145,6 @@ msgctxt "terms" msgid "We reserve the right to modify these Terms at any time. For instance, we may need to change these Terms if we come out with a new feature." msgstr "" -#: lib/web/templates/api/terms.html.heex:55 -#, elixir-autogen, elixir-format -msgctxt "terms" -msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by <a href=\"https://framasoft.org\">Framasoft</a>, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." -msgstr "" - #: lib/web/templates/api/terms.html.heex:105 #, elixir-autogen, elixir-format msgctxt "terms" @@ -1635,7 +1629,7 @@ msgstr "" #: lib/web/templates/email/pending_participation_notification.html.heex:47 #: lib/web/templates/email/pending_participation_notification.text.eex:4 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one pending attendance request to process for the following event:" msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" msgstr[0] "" @@ -2031,3 +2025,9 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Well done!" msgstr "" + +#: lib/web/templates/api/terms.html.heex:55 +#, elixir-autogen, elixir-format, fuzzy +msgctxt "terms" +msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." +msgstr "" diff --git a/priv/gettext/he/LC_MESSAGES/errors.po b/priv/gettext/he/LC_MESSAGES/errors.po index 56913831b..6841b1083 100644 --- a/priv/gettext/he/LC_MESSAGES/errors.po +++ b/priv/gettext/he/LC_MESSAGES/errors.po @@ -189,13 +189,13 @@ msgstr "" msgid "The current password is invalid" msgstr "" -#: lib/graphql/resolvers/admin.ex:334 +#: lib/graphql/resolvers/admin.ex:335 #: lib/graphql/resolvers/user.ex:527 #, elixir-autogen, elixir-format msgid "The new email doesn't seem to be valid" msgstr "" -#: lib/graphql/resolvers/admin.ex:323 +#: lib/graphql/resolvers/admin.ex:324 #: lib/graphql/resolvers/user.ex:514 #, elixir-autogen, elixir-format msgid "The new email must be different" @@ -629,7 +629,7 @@ msgstr "" msgid "You don't have permission to delete this token" msgstr "" -#: lib/graphql/resolvers/admin.ex:56 +#: lib/graphql/resolvers/admin.ex:57 #, elixir-autogen, elixir-format msgid "You need to be logged-in and a moderator to list action logs" msgstr "" @@ -649,17 +649,17 @@ msgstr "" msgid "You need to be logged-in and a moderator to view a report" msgstr "" -#: lib/graphql/resolvers/admin.ex:258 +#: lib/graphql/resolvers/admin.ex:259 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" -#: lib/graphql/resolvers/admin.ex:242 +#: lib/graphql/resolvers/admin.ex:243 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" -#: lib/graphql/resolvers/admin.ex:283 +#: lib/graphql/resolvers/admin.ex:284 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" @@ -946,7 +946,7 @@ msgstr "" msgid "Failed to update the group" msgstr "" -#: lib/graphql/resolvers/admin.ex:357 +#: lib/graphql/resolvers/admin.ex:358 #: lib/graphql/resolvers/user.ex:547 #, elixir-autogen, elixir-format msgid "Failed to update user email" @@ -1077,22 +1077,22 @@ msgstr "" msgid "Your email seems to be using an invalid format" msgstr "" -#: lib/graphql/resolvers/admin.ex:399 +#: lib/graphql/resolvers/admin.ex:400 #, elixir-autogen, elixir-format msgid "Can't confirm an already confirmed user" msgstr "" -#: lib/graphql/resolvers/admin.ex:403 +#: lib/graphql/resolvers/admin.ex:404 #, elixir-autogen, elixir-format msgid "Deconfirming users is not supported" msgstr "" -#: lib/graphql/resolvers/admin.ex:375 +#: lib/graphql/resolvers/admin.ex:376 #, elixir-autogen, elixir-format, fuzzy msgid "The new role must be different" msgstr "" -#: lib/graphql/resolvers/admin.ex:314 +#: lib/graphql/resolvers/admin.ex:315 #, elixir-autogen, elixir-format, fuzzy msgid "You need to be logged-in and an administrator to edit an user's details" msgstr "" @@ -1102,7 +1102,7 @@ msgstr "" msgid "A profile or group with that name already exists" msgstr "" -#: lib/graphql/resolvers/admin.ex:542 +#: lib/graphql/resolvers/admin.ex:560 #, elixir-autogen, elixir-format msgid "Unable to find an instance to follow at this address" msgstr "" @@ -1364,7 +1364,7 @@ msgstr "" msgid "The same push subscription has already been registered" msgstr "" -#: lib/graphql/resolvers/admin.ex:536 +#: lib/graphql/resolvers/admin.ex:554 #, elixir-autogen, elixir-format msgid "This instance is pending follow approval" msgstr "" @@ -1374,7 +1374,7 @@ msgstr "" msgid "Timezone ID %{timezone} is invalid" msgstr "" -#: lib/graphql/resolvers/admin.ex:539 +#: lib/graphql/resolvers/admin.ex:557 #, elixir-autogen, elixir-format, fuzzy msgid "You are already following this instance" msgstr "" @@ -1394,12 +1394,12 @@ msgstr "" msgid "The token you provided is invalid. Make sure that the URL is exactly the one provided inside the email you got." msgstr "" -#: lib/graphql/resolvers/conversation.ex:161 +#: lib/graphql/resolvers/conversation.ex:164 #, elixir-autogen, elixir-format msgid "Conversation needs to mention at least one participant that's not yourself" msgstr "" -#: lib/graphql/resolvers/participant.ex:396 +#: lib/graphql/resolvers/participant.ex:401 #, elixir-autogen, elixir-format msgid "There are no participants matching the audience you've selected." msgstr "" diff --git a/priv/gettext/hr/LC_MESSAGES/activity.po b/priv/gettext/hr/LC_MESSAGES/activity.po index 779659aeb..36aabbbd2 100644 --- a/priv/gettext/hr/LC_MESSAGES/activity.po +++ b/priv/gettext/hr/LC_MESSAGES/activity.po @@ -231,7 +231,7 @@ msgstr "" #: lib/web/templates/email/email_direct_activity.html.heex:230 #: lib/web/templates/email/email_direct_activity.text.eex:23 -#, elixir-format +#, elixir-format, elixir-autogen msgid "View one more activity" msgid_plural "View %{count} more activities" msgstr[0] "Prikaži još jednu aktivnost" @@ -242,7 +242,7 @@ msgstr[2] "Prikaži još %{count} aktivnosti" #: lib/web/templates/email/email_direct_activity.html.heex:60 #: lib/web/templates/email/email_direct_activity.text.eex:6 #: lib/web/templates/email/email_direct_activity.text.eex:7 -#, elixir-format +#, elixir-format, elixir-autogen msgid "There has been an activity!" msgid_plural "There has been some activity!" msgstr[0] "Aktivnost!" diff --git a/priv/gettext/hr/LC_MESSAGES/default.po b/priv/gettext/hr/LC_MESSAGES/default.po index d95e45f64..9396a818e 100644 --- a/priv/gettext/hr/LC_MESSAGES/default.po +++ b/priv/gettext/hr/LC_MESSAGES/default.po @@ -333,7 +333,7 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon na %{instance}: e-mail adresa se promijenila" #: lib/web/email/notification.ex:52 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "Za danas je planiran jedan događaj" @@ -342,7 +342,7 @@ msgstr[2] "Za danas je planirano %{nb_events} događaja" #: lib/web/templates/email/on_day_notification.html.heex:47 #: lib/web/templates/email/on_day_notification.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "Danas imaš jedan događaj:" @@ -393,7 +393,7 @@ msgid "You have been invited by %{inviter} to join group %{group}" msgstr "%{inviter} te pozvao/la da se pridružiš grupi %{group}" #: lib/web/email/notification.ex:81 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "Ovaj tjedan je planiran jedan događaj" @@ -401,7 +401,7 @@ msgstr[1] "Ovaj tjedan su planirana %{nb_events} događaja" msgstr[2] "Ovaj tjedan je planirano %{nb_events} događaja" #: lib/web/email/notification.ex:107 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "Jedan zahtjev za sudjelovanje događaju %{title} koji se mora obraditi" @@ -414,7 +414,7 @@ msgstr[2] "" #: lib/web/templates/email/notification_each_week.html.heex:47 #: lib/web/templates/email/notification_each_week.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "Ovaj tjedan imaš jedan događaj:" @@ -800,7 +800,7 @@ msgstr "Nemoj to koristiti u stvarne svrhe." #: lib/web/templates/email/notification_each_week.text.eex:11 #: lib/web/templates/email/on_day_notification.html.heex:89 #: lib/web/templates/email/on_day_notification.text.eex:11 -#, elixir-format +#, elixir-format, elixir-autogen msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "" @@ -1133,7 +1133,7 @@ msgstr "" "Tim za moderiranje tvoje instance je odlučio suspendirati %{group_name} " "(%{group_address}). Više nisi član ove grupe." -#: lib/web/email/group.ex:108 +#: lib/web/email/group.ex:106 #, elixir-autogen, elixir-format msgid "The group %{group} has been suspended on %{instance}" msgstr "Grupa %{group} je suspendirana na instanci %{instance}" @@ -1222,12 +1222,6 @@ msgctxt "terms" msgid "We reserve the right to modify these Terms at any time. For instance, we may need to change these Terms if we come out with a new feature." msgstr "" -#: lib/web/templates/api/terms.html.heex:55 -#, elixir-autogen, elixir-format -msgctxt "terms" -msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by <a href=\"https://framasoft.org\">Framasoft</a>, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." -msgstr "" - #: lib/web/templates/api/terms.html.heex:105 #, elixir-autogen, elixir-format msgctxt "terms" @@ -1738,7 +1732,7 @@ msgstr "" #: lib/web/templates/email/pending_participation_notification.html.heex:47 #: lib/web/templates/email/pending_participation_notification.text.eex:4 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one pending attendance request to process for the following event:" msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" msgstr[0] "Imaš jedan neriješen zahtjev za prisustvovanje za sljedeći događaj:" @@ -2162,3 +2156,9 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Well done!" msgstr "" + +#: lib/web/templates/api/terms.html.heex:55 +#, elixir-autogen, elixir-format, fuzzy +msgctxt "terms" +msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." +msgstr "" diff --git a/priv/gettext/hr/LC_MESSAGES/errors.po b/priv/gettext/hr/LC_MESSAGES/errors.po index ff3cb95f6..790b8f136 100644 --- a/priv/gettext/hr/LC_MESSAGES/errors.po +++ b/priv/gettext/hr/LC_MESSAGES/errors.po @@ -206,13 +206,13 @@ msgstr "Registracije nisu otvorene" msgid "The current password is invalid" msgstr "Aktualna lozinka nije ispravna" -#: lib/graphql/resolvers/admin.ex:334 +#: lib/graphql/resolvers/admin.ex:335 #: lib/graphql/resolvers/user.ex:527 #, elixir-autogen, elixir-format msgid "The new email doesn't seem to be valid" msgstr "Čini se da nova e-mail adresa nije ispravna" -#: lib/graphql/resolvers/admin.ex:323 +#: lib/graphql/resolvers/admin.ex:324 #: lib/graphql/resolvers/user.ex:514 #, elixir-autogen, elixir-format msgid "The new email must be different" @@ -650,7 +650,7 @@ msgstr "Ne možeš pozivati u ovu grupu" msgid "You don't have permission to delete this token" msgstr "Nemaš dozvole za brisanje ovog tokena" -#: lib/graphql/resolvers/admin.ex:56 +#: lib/graphql/resolvers/admin.ex:57 #, elixir-autogen, elixir-format msgid "You need to be logged-in and a moderator to list action logs" msgstr "Za prikaz zapisnike radnji moraš biti prijavljen/a i biti moderator" @@ -670,21 +670,21 @@ msgstr "Za aktualiziranje izvještaja moraš biti prijavljen/a i biti moderator" msgid "You need to be logged-in and a moderator to view a report" msgstr "Za prikaz izvještaja moraš biti prijavljen/a i biti moderator" -#: lib/graphql/resolvers/admin.ex:258 +#: lib/graphql/resolvers/admin.ex:259 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" "Za pristup administratorskim postavkama moraš biti prijavljen/a i biti " "moderator" -#: lib/graphql/resolvers/admin.ex:242 +#: lib/graphql/resolvers/admin.ex:243 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" "Za pristup nadzornoj ploči statistike moraš biti prijavljen/a i biti " "administrator" -#: lib/graphql/resolvers/admin.ex:283 +#: lib/graphql/resolvers/admin.ex:284 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" @@ -975,7 +975,7 @@ msgstr "" msgid "Failed to update the group" msgstr "" -#: lib/graphql/resolvers/admin.ex:357 +#: lib/graphql/resolvers/admin.ex:358 #: lib/graphql/resolvers/user.ex:547 #, elixir-autogen, elixir-format msgid "Failed to update user email" @@ -1106,22 +1106,22 @@ msgstr "" msgid "Your email seems to be using an invalid format" msgstr "" -#: lib/graphql/resolvers/admin.ex:399 +#: lib/graphql/resolvers/admin.ex:400 #, elixir-autogen, elixir-format msgid "Can't confirm an already confirmed user" msgstr "" -#: lib/graphql/resolvers/admin.ex:403 +#: lib/graphql/resolvers/admin.ex:404 #, elixir-autogen, elixir-format msgid "Deconfirming users is not supported" msgstr "" -#: lib/graphql/resolvers/admin.ex:375 +#: lib/graphql/resolvers/admin.ex:376 #, elixir-autogen, elixir-format msgid "The new role must be different" msgstr "Nova uloga mora biti drugačija" -#: lib/graphql/resolvers/admin.ex:314 +#: lib/graphql/resolvers/admin.ex:315 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to edit an user's details" msgstr "" @@ -1132,7 +1132,7 @@ msgstr "" msgid "A profile or group with that name already exists" msgstr "" -#: lib/graphql/resolvers/admin.ex:542 +#: lib/graphql/resolvers/admin.ex:560 #, elixir-autogen, elixir-format msgid "Unable to find an instance to follow at this address" msgstr "" @@ -1394,7 +1394,7 @@ msgstr "" msgid "The same push subscription has already been registered" msgstr "" -#: lib/graphql/resolvers/admin.ex:536 +#: lib/graphql/resolvers/admin.ex:554 #, elixir-autogen, elixir-format msgid "This instance is pending follow approval" msgstr "" @@ -1404,7 +1404,7 @@ msgstr "" msgid "Timezone ID %{timezone} is invalid" msgstr "" -#: lib/graphql/resolvers/admin.ex:539 +#: lib/graphql/resolvers/admin.ex:557 #, elixir-autogen, elixir-format, fuzzy msgid "You are already following this instance" msgstr "" @@ -1424,12 +1424,12 @@ msgstr "" msgid "The token you provided is invalid. Make sure that the URL is exactly the one provided inside the email you got." msgstr "" -#: lib/graphql/resolvers/conversation.ex:161 +#: lib/graphql/resolvers/conversation.ex:164 #, elixir-autogen, elixir-format msgid "Conversation needs to mention at least one participant that's not yourself" msgstr "Konverzacija treba spomenuti barem jednog sudionika koji nisi ti" -#: lib/graphql/resolvers/participant.ex:396 +#: lib/graphql/resolvers/participant.ex:401 #, elixir-autogen, elixir-format msgid "There are no participants matching the audience you've selected." msgstr "" diff --git a/priv/gettext/hu/LC_MESSAGES/activity.po b/priv/gettext/hu/LC_MESSAGES/activity.po index e0f7fe2e3..c124e230f 100644 --- a/priv/gettext/hu/LC_MESSAGES/activity.po +++ b/priv/gettext/hu/LC_MESSAGES/activity.po @@ -228,7 +228,7 @@ msgstr "" #: lib/web/templates/email/email_direct_activity.html.heex:230 #: lib/web/templates/email/email_direct_activity.text.eex:23 -#, elixir-format +#, elixir-format, elixir-autogen msgid "View one more activity" msgid_plural "View %{count} more activities" msgstr[0] "Még egy tevékenység megtekintése" @@ -238,7 +238,7 @@ msgstr[1] "Még %{count} tevékenység megtekintése" #: lib/web/templates/email/email_direct_activity.html.heex:60 #: lib/web/templates/email/email_direct_activity.text.eex:6 #: lib/web/templates/email/email_direct_activity.text.eex:7 -#, elixir-format +#, elixir-format, elixir-autogen msgid "There has been an activity!" msgid_plural "There has been some activity!" msgstr[0] "Történt egy tevékenység!" diff --git a/priv/gettext/hu/LC_MESSAGES/default.po b/priv/gettext/hu/LC_MESSAGES/default.po index a3b053a1a..a54b0658a 100644 --- a/priv/gettext/hu/LC_MESSAGES/default.po +++ b/priv/gettext/hu/LC_MESSAGES/default.po @@ -360,7 +360,7 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon a(z) %{instance} példányon: e-mail-cím megváltoztatva" #: lib/web/email/notification.ex:52 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "Egy esemény van tervezve mára" @@ -368,7 +368,7 @@ msgstr[1] "%{nb_events} esemény van tervezve mára" #: lib/web/templates/email/on_day_notification.html.heex:47 #: lib/web/templates/email/on_day_notification.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "Egy eseménye van mára:" @@ -418,14 +418,14 @@ msgid "You have been invited by %{inviter} to join group %{group}" msgstr "%{inviter} meghívta, hogy csatlakozzon a(z) %{group} csoporthoz" #: lib/web/email/notification.ex:81 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "Egy esemény van tervezve erre a hétre" msgstr[1] "%{nb_events} esemény van tervezve erre a hétre" #: lib/web/email/notification.ex:107 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "Egy feldolgozandó részvételi kérés a(z) %{title} eseménynél" @@ -435,7 +435,7 @@ msgstr[1] "" #: lib/web/templates/email/notification_each_week.html.heex:47 #: lib/web/templates/email/notification_each_week.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "Egy eseménye van ezen héten:" @@ -823,7 +823,7 @@ msgstr "Ne használja valós célokhoz." #: lib/web/templates/email/notification_each_week.text.eex:11 #: lib/web/templates/email/on_day_notification.html.heex:89 #: lib/web/templates/email/on_day_notification.text.eex:11 -#, elixir-format +#, elixir-format, elixir-autogen msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "" @@ -1166,7 +1166,7 @@ msgstr "" "A példánya moderátori csapata úgy döntött, hogy felfüggeszti a(z) " "%{group_name} csoportot (%{group_address}). Többé már nem a csoport tagja." -#: lib/web/email/group.ex:108 +#: lib/web/email/group.ex:106 #, elixir-autogen, elixir-format msgid "The group %{group} has been suspended on %{instance}" msgstr "A(z) %{group} csoport fel lett függesztve a(z) %{instance} példányon" @@ -1255,12 +1255,6 @@ msgctxt "terms" msgid "We reserve the right to modify these Terms at any time. For instance, we may need to change these Terms if we come out with a new feature." msgstr "" -#: lib/web/templates/api/terms.html.heex:55 -#, elixir-autogen, elixir-format -msgctxt "terms" -msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by <a href=\"https://framasoft.org\">Framasoft</a>, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." -msgstr "" - #: lib/web/templates/api/terms.html.heex:105 #, elixir-autogen, elixir-format msgctxt "terms" @@ -1768,7 +1762,7 @@ msgstr "" #: lib/web/templates/email/pending_participation_notification.html.heex:47 #: lib/web/templates/email/pending_participation_notification.text.eex:4 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one pending attendance request to process for the following event:" msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" msgstr[0] "Egy függőben lévő részvételi kérése van a következő eseménynél:" @@ -2202,3 +2196,9 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Well done!" msgstr "Szép munka." + +#: lib/web/templates/api/terms.html.heex:55 +#, elixir-autogen, elixir-format, fuzzy +msgctxt "terms" +msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." +msgstr "" diff --git a/priv/gettext/hu/LC_MESSAGES/errors.po b/priv/gettext/hu/LC_MESSAGES/errors.po index e8e2d72a4..d041f991a 100644 --- a/priv/gettext/hu/LC_MESSAGES/errors.po +++ b/priv/gettext/hu/LC_MESSAGES/errors.po @@ -198,13 +198,13 @@ msgstr "A regisztrációk nincsenek nyitva" msgid "The current password is invalid" msgstr "A jelenlegi jelszó érvénytelen" -#: lib/graphql/resolvers/admin.ex:334 +#: lib/graphql/resolvers/admin.ex:335 #: lib/graphql/resolvers/user.ex:527 #, elixir-autogen, elixir-format msgid "The new email doesn't seem to be valid" msgstr "Az új e-mail-cím nem tűnik érvényesnek" -#: lib/graphql/resolvers/admin.ex:323 +#: lib/graphql/resolvers/admin.ex:324 #: lib/graphql/resolvers/user.ex:514 #, elixir-autogen, elixir-format msgid "The new email must be different" @@ -645,7 +645,7 @@ msgstr "Nem tud meghívni ebbe a csoportba" msgid "You don't have permission to delete this token" msgstr "Nincs jogosultsága a token törléséhez" -#: lib/graphql/resolvers/admin.ex:56 +#: lib/graphql/resolvers/admin.ex:57 #, elixir-autogen, elixir-format msgid "You need to be logged-in and a moderator to list action logs" msgstr "" @@ -673,21 +673,21 @@ msgstr "" "Bejelentkezve kell lennie és moderátornak kell lennie egy jelentés " "megtekintéséhez" -#: lib/graphql/resolvers/admin.ex:258 +#: lib/graphql/resolvers/admin.ex:259 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" "Bejelentkezve kell lennie és adminisztrátornak kell lennie az " "adminisztrátori beállításokhoz való hozzáféréshez" -#: lib/graphql/resolvers/admin.ex:242 +#: lib/graphql/resolvers/admin.ex:243 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" "Bejelentkezve kell lennie és adminisztrátornak kell lennie a vezérlőpulti " "statisztikákhoz való hozzáféréshez" -#: lib/graphql/resolvers/admin.ex:283 +#: lib/graphql/resolvers/admin.ex:284 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" @@ -986,7 +986,7 @@ msgstr "Nem sikerült elhagyni az eseményt" msgid "Failed to update the group" msgstr "Nem sikerült frissíteni a csoportot" -#: lib/graphql/resolvers/admin.ex:357 +#: lib/graphql/resolvers/admin.ex:358 #: lib/graphql/resolvers/user.ex:547 #, elixir-autogen, elixir-format msgid "Failed to update user email" @@ -1121,22 +1121,22 @@ msgstr "Bejelentkezve kell lennie egy tag eltávolításához" msgid "Your email seems to be using an invalid format" msgstr "Úgy tűnik, hogy az e-mail-címe érvénytelen formátumot használ" -#: lib/graphql/resolvers/admin.ex:399 +#: lib/graphql/resolvers/admin.ex:400 #, elixir-autogen, elixir-format msgid "Can't confirm an already confirmed user" msgstr "A már megerősített felhasználó nem erősíthető meg" -#: lib/graphql/resolvers/admin.ex:403 +#: lib/graphql/resolvers/admin.ex:404 #, elixir-autogen, elixir-format msgid "Deconfirming users is not supported" msgstr "A felhasználók megerősítésének visszavonása nem támogatott" -#: lib/graphql/resolvers/admin.ex:375 +#: lib/graphql/resolvers/admin.ex:376 #, elixir-autogen, elixir-format msgid "The new role must be different" msgstr "Az új szerepnek eltérőnek kell lennie" -#: lib/graphql/resolvers/admin.ex:314 +#: lib/graphql/resolvers/admin.ex:315 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to edit an user's details" msgstr "" @@ -1148,7 +1148,7 @@ msgstr "" msgid "A profile or group with that name already exists" msgstr "Már létezik ilyen nevű profil vagy csoport" -#: lib/graphql/resolvers/admin.ex:542 +#: lib/graphql/resolvers/admin.ex:560 #, elixir-autogen, elixir-format msgid "Unable to find an instance to follow at this address" msgstr "Nem található követhető példány ezen a címen" @@ -1412,7 +1412,7 @@ msgstr "" msgid "The same push subscription has already been registered" msgstr "" -#: lib/graphql/resolvers/admin.ex:536 +#: lib/graphql/resolvers/admin.ex:554 #, elixir-autogen, elixir-format msgid "This instance is pending follow approval" msgstr "" @@ -1422,7 +1422,7 @@ msgstr "" msgid "Timezone ID %{timezone} is invalid" msgstr "" -#: lib/graphql/resolvers/admin.ex:539 +#: lib/graphql/resolvers/admin.ex:557 #, elixir-autogen, elixir-format, fuzzy msgid "You are already following this instance" msgstr "Már követi ezt a csoportot" @@ -1442,12 +1442,12 @@ msgstr "" msgid "The token you provided is invalid. Make sure that the URL is exactly the one provided inside the email you got." msgstr "" -#: lib/graphql/resolvers/conversation.ex:161 +#: lib/graphql/resolvers/conversation.ex:164 #, elixir-autogen, elixir-format msgid "Conversation needs to mention at least one participant that's not yourself" msgstr "" -#: lib/graphql/resolvers/participant.ex:396 +#: lib/graphql/resolvers/participant.ex:401 #, elixir-autogen, elixir-format msgid "There are no participants matching the audience you've selected." msgstr "" diff --git a/priv/gettext/id/LC_MESSAGES/activity.po b/priv/gettext/id/LC_MESSAGES/activity.po index f54b8b053..6ade84c13 100644 --- a/priv/gettext/id/LC_MESSAGES/activity.po +++ b/priv/gettext/id/LC_MESSAGES/activity.po @@ -227,7 +227,7 @@ msgstr "" #: lib/web/templates/email/email_direct_activity.html.heex:230 #: lib/web/templates/email/email_direct_activity.text.eex:23 -#, elixir-format +#, elixir-format, elixir-autogen msgid "View one more activity" msgid_plural "View %{count} more activities" msgstr[0] "Lihat %{count} aktivitas lagi" @@ -236,7 +236,7 @@ msgstr[0] "Lihat %{count} aktivitas lagi" #: lib/web/templates/email/email_direct_activity.html.heex:60 #: lib/web/templates/email/email_direct_activity.text.eex:6 #: lib/web/templates/email/email_direct_activity.text.eex:7 -#, elixir-format +#, elixir-format, elixir-autogen msgid "There has been an activity!" msgid_plural "There has been some activity!" msgstr[0] "" diff --git a/priv/gettext/id/LC_MESSAGES/default.po b/priv/gettext/id/LC_MESSAGES/default.po index eb48df415..aec1e4e4a 100644 --- a/priv/gettext/id/LC_MESSAGES/default.po +++ b/priv/gettext/id/LC_MESSAGES/default.po @@ -333,14 +333,14 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon pada %{instance}: surel diubah" #: lib/web/email/notification.ex:52 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "%{nb_events} acara direncanakan hari ini" #: lib/web/templates/email/on_day_notification.html.heex:47 #: lib/web/templates/email/on_day_notification.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "Anda memiliki %{total} acara hari ini:" @@ -390,20 +390,20 @@ msgstr "" "Anda telah diundang oleh %{inviter} untuk bergabung ke kelompok %{group}" #: lib/web/email/notification.ex:81 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "%{nb_events} acara direncanakan pekan ini" #: lib/web/email/notification.ex:107 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "" #: lib/web/templates/email/notification_each_week.html.heex:47 #: lib/web/templates/email/notification_each_week.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "Anda memiliki %{total} acara pekan ini:" @@ -785,7 +785,7 @@ msgstr "" #: lib/web/templates/email/notification_each_week.text.eex:11 #: lib/web/templates/email/on_day_notification.html.heex:89 #: lib/web/templates/email/on_day_notification.text.eex:11 -#, elixir-format +#, elixir-format, elixir-autogen msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "" @@ -1085,7 +1085,7 @@ msgstr "" msgid "Your instance's moderation team has decided to suspend %{group_name} (%{group_address}). You are no longer a member of this group." msgstr "" -#: lib/web/email/group.ex:108 +#: lib/web/email/group.ex:106 #, elixir-autogen, elixir-format msgid "The group %{group} has been suspended on %{instance}" msgstr "" @@ -1169,12 +1169,6 @@ msgctxt "terms" msgid "We reserve the right to modify these Terms at any time. For instance, we may need to change these Terms if we come out with a new feature." msgstr "" -#: lib/web/templates/api/terms.html.heex:55 -#, elixir-autogen, elixir-format -msgctxt "terms" -msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by <a href=\"https://framasoft.org\">Framasoft</a>, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." -msgstr "" - #: lib/web/templates/api/terms.html.heex:105 #, elixir-autogen, elixir-format msgctxt "terms" @@ -1659,7 +1653,7 @@ msgstr "" #: lib/web/templates/email/pending_participation_notification.html.heex:47 #: lib/web/templates/email/pending_participation_notification.text.eex:4 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one pending attendance request to process for the following event:" msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" msgstr[0] "" @@ -2052,3 +2046,9 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Well done!" msgstr "" + +#: lib/web/templates/api/terms.html.heex:55 +#, elixir-autogen, elixir-format, fuzzy +msgctxt "terms" +msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." +msgstr "" diff --git a/priv/gettext/id/LC_MESSAGES/errors.po b/priv/gettext/id/LC_MESSAGES/errors.po index 0256bd284..9af13f0e5 100644 --- a/priv/gettext/id/LC_MESSAGES/errors.po +++ b/priv/gettext/id/LC_MESSAGES/errors.po @@ -176,13 +176,13 @@ msgstr "" msgid "The current password is invalid" msgstr "" -#: lib/graphql/resolvers/admin.ex:334 +#: lib/graphql/resolvers/admin.ex:335 #: lib/graphql/resolvers/user.ex:527 #, elixir-autogen, elixir-format msgid "The new email doesn't seem to be valid" msgstr "" -#: lib/graphql/resolvers/admin.ex:323 +#: lib/graphql/resolvers/admin.ex:324 #: lib/graphql/resolvers/user.ex:514 #, elixir-autogen, elixir-format msgid "The new email must be different" @@ -616,7 +616,7 @@ msgstr "" msgid "You don't have permission to delete this token" msgstr "" -#: lib/graphql/resolvers/admin.ex:56 +#: lib/graphql/resolvers/admin.ex:57 #, elixir-autogen, elixir-format msgid "You need to be logged-in and a moderator to list action logs" msgstr "" @@ -636,17 +636,17 @@ msgstr "" msgid "You need to be logged-in and a moderator to view a report" msgstr "" -#: lib/graphql/resolvers/admin.ex:258 +#: lib/graphql/resolvers/admin.ex:259 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" -#: lib/graphql/resolvers/admin.ex:242 +#: lib/graphql/resolvers/admin.ex:243 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" -#: lib/graphql/resolvers/admin.ex:283 +#: lib/graphql/resolvers/admin.ex:284 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" @@ -933,7 +933,7 @@ msgstr "" msgid "Failed to update the group" msgstr "" -#: lib/graphql/resolvers/admin.ex:357 +#: lib/graphql/resolvers/admin.ex:358 #: lib/graphql/resolvers/user.ex:547 #, elixir-autogen, elixir-format msgid "Failed to update user email" @@ -1064,22 +1064,22 @@ msgstr "" msgid "Your email seems to be using an invalid format" msgstr "" -#: lib/graphql/resolvers/admin.ex:399 +#: lib/graphql/resolvers/admin.ex:400 #, elixir-autogen, elixir-format msgid "Can't confirm an already confirmed user" msgstr "" -#: lib/graphql/resolvers/admin.ex:403 +#: lib/graphql/resolvers/admin.ex:404 #, elixir-autogen, elixir-format msgid "Deconfirming users is not supported" msgstr "" -#: lib/graphql/resolvers/admin.ex:375 +#: lib/graphql/resolvers/admin.ex:376 #, elixir-autogen, elixir-format, fuzzy msgid "The new role must be different" msgstr "" -#: lib/graphql/resolvers/admin.ex:314 +#: lib/graphql/resolvers/admin.ex:315 #, elixir-autogen, elixir-format, fuzzy msgid "You need to be logged-in and an administrator to edit an user's details" msgstr "" @@ -1089,7 +1089,7 @@ msgstr "" msgid "A profile or group with that name already exists" msgstr "" -#: lib/graphql/resolvers/admin.ex:542 +#: lib/graphql/resolvers/admin.ex:560 #, elixir-autogen, elixir-format msgid "Unable to find an instance to follow at this address" msgstr "" @@ -1351,7 +1351,7 @@ msgstr "" msgid "The same push subscription has already been registered" msgstr "" -#: lib/graphql/resolvers/admin.ex:536 +#: lib/graphql/resolvers/admin.ex:554 #, elixir-autogen, elixir-format msgid "This instance is pending follow approval" msgstr "" @@ -1361,7 +1361,7 @@ msgstr "" msgid "Timezone ID %{timezone} is invalid" msgstr "" -#: lib/graphql/resolvers/admin.ex:539 +#: lib/graphql/resolvers/admin.ex:557 #, elixir-autogen, elixir-format, fuzzy msgid "You are already following this instance" msgstr "" @@ -1381,12 +1381,12 @@ msgstr "" msgid "The token you provided is invalid. Make sure that the URL is exactly the one provided inside the email you got." msgstr "" -#: lib/graphql/resolvers/conversation.ex:161 +#: lib/graphql/resolvers/conversation.ex:164 #, elixir-autogen, elixir-format msgid "Conversation needs to mention at least one participant that's not yourself" msgstr "" -#: lib/graphql/resolvers/participant.ex:396 +#: lib/graphql/resolvers/participant.ex:401 #, elixir-autogen, elixir-format msgid "There are no participants matching the audience you've selected." msgstr "" diff --git a/priv/gettext/it/LC_MESSAGES/activity.po b/priv/gettext/it/LC_MESSAGES/activity.po index 1ed495603..c238e6df1 100644 --- a/priv/gettext/it/LC_MESSAGES/activity.po +++ b/priv/gettext/it/LC_MESSAGES/activity.po @@ -226,7 +226,7 @@ msgstr "" #: lib/web/templates/email/email_direct_activity.html.heex:230 #: lib/web/templates/email/email_direct_activity.text.eex:23 -#, elixir-format +#, elixir-format, elixir-autogen msgid "View one more activity" msgid_plural "View %{count} more activities" msgstr[0] "Visualizza un'altra attività" @@ -236,7 +236,7 @@ msgstr[1] "Visualizza altre %{count} attività" #: lib/web/templates/email/email_direct_activity.html.heex:60 #: lib/web/templates/email/email_direct_activity.text.eex:6 #: lib/web/templates/email/email_direct_activity.text.eex:7 -#, elixir-format +#, elixir-format, elixir-autogen msgid "There has been an activity!" msgid_plural "There has been some activity!" msgstr[0] "C'è stata un'attività!" diff --git a/priv/gettext/it/LC_MESSAGES/default.po b/priv/gettext/it/LC_MESSAGES/default.po index 5704efc91..46b62ae66 100644 --- a/priv/gettext/it/LC_MESSAGES/default.po +++ b/priv/gettext/it/LC_MESSAGES/default.po @@ -357,7 +357,7 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon su %{instance}: email modificata" #: lib/web/email/notification.ex:52 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "Un evento programmato oggi" @@ -365,7 +365,7 @@ msgstr[1] "%{nb_events} eventi programmati oggi" #: lib/web/templates/email/on_day_notification.html.heex:47 #: lib/web/templates/email/on_day_notification.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "Hai un evento oggi:" @@ -415,14 +415,14 @@ msgid "You have been invited by %{inviter} to join group %{group}" msgstr "Sei stato invitato da %{inviter} a unirti al gruppo %{group}" #: lib/web/email/notification.ex:81 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "Un evento in programma questa settimana" msgstr[1] "%{nb_events} eventi in programma questa settimana" #: lib/web/email/notification.ex:107 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "Una richiesta di partecipazione per l'evento %{title} da elaborare" @@ -432,7 +432,7 @@ msgstr[1] "" #: lib/web/templates/email/notification_each_week.html.heex:47 #: lib/web/templates/email/notification_each_week.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "Hai un evento questa settimana:" @@ -941,7 +941,7 @@ msgstr "Si prega di non usarlo per scopi reali." #: lib/web/templates/email/notification_each_week.text.eex:11 #: lib/web/templates/email/on_day_notification.html.heex:89 #: lib/web/templates/email/on_day_notification.text.eex:11 -#, elixir-format +#, elixir-format, elixir-autogen msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "" @@ -1285,7 +1285,7 @@ msgstr "" "Il team di moderazione della tua istanza ha deciso di sospendere " "%{group_name} (%{group_address}). Non sei più un membro di questo gruppo." -#: lib/web/email/group.ex:108 +#: lib/web/email/group.ex:106 #, elixir-autogen, elixir-format msgid "The group %{group} has been suspended on %{instance}" msgstr "Il gruppo %{group} è stato sospeso su %{instance}" @@ -1416,21 +1416,6 @@ msgstr "" "momento. Ad esempio, potrebbe essere necessario modificare questi Termini se " "pubblichiamo una nuova funzionalità." -#: lib/web/templates/api/terms.html.heex:55 -#, elixir-autogen, elixir-format -msgctxt "terms" -msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by <a href=\"https://framasoft.org\">Framasoft</a>, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." -msgstr "" -"Quando diciamo \"noi\" o \"nostro\" in questo documento, ci riferiamo ai " -"proprietari, operatori e amministratori di questa istanza di Mobilizon. Il " -"software Mobilizon è fornito dal team di collaboratori di Mobilizon, " -"supportato da <a href=\"https://framasoft.org\">Framasoft</a>, " -"un'organizzazione francese senza scopo di lucro che sostiene il software " -"gratuito/libero. Se non diversamente specificato, questa istanza di " -"Mobilizon è un servizio indipendente che utilizza il codice sorgente di " -"Mobilizon. Puoi trovare ulteriori informazioni su questa istanza nella " -"pagina <a href=\"/about/instance\">\"Informazioni su questa istanza\"</a>." - #: lib/web/templates/api/terms.html.heex:105 #, elixir-autogen, elixir-format msgctxt "terms" @@ -1964,7 +1949,7 @@ msgstr "" #: lib/web/templates/email/pending_participation_notification.html.heex:47 #: lib/web/templates/email/pending_participation_notification.text.eex:4 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one pending attendance request to process for the following event:" msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" msgstr[0] "Hai una richiesta di partecipazione in sospeso da esaminare:" @@ -2399,3 +2384,18 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Well done!" msgstr "" + +#: lib/web/templates/api/terms.html.heex:55 +#, elixir-autogen, elixir-format, fuzzy +msgctxt "terms" +msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." +msgstr "" +"Quando diciamo \"noi\" o \"nostro\" in questo documento, ci riferiamo ai " +"proprietari, operatori e amministratori di questa istanza di Mobilizon. Il " +"software Mobilizon è fornito dal team di collaboratori di Mobilizon, " +"supportato da <a href=\"https://framasoft.org\">Framasoft</a>, " +"un'organizzazione francese senza scopo di lucro che sostiene il software " +"gratuito/libero. Se non diversamente specificato, questa istanza di " +"Mobilizon è un servizio indipendente che utilizza il codice sorgente di " +"Mobilizon. Puoi trovare ulteriori informazioni su questa istanza nella " +"pagina <a href=\"/about/instance\">\"Informazioni su questa istanza\"</a>." diff --git a/priv/gettext/it/LC_MESSAGES/errors.po b/priv/gettext/it/LC_MESSAGES/errors.po index 178e804b4..5812a4715 100644 --- a/priv/gettext/it/LC_MESSAGES/errors.po +++ b/priv/gettext/it/LC_MESSAGES/errors.po @@ -182,13 +182,13 @@ msgstr "Le registrazioni non sono aperte" msgid "The current password is invalid" msgstr "la password corrente non è valida" -#: lib/graphql/resolvers/admin.ex:334 +#: lib/graphql/resolvers/admin.ex:335 #: lib/graphql/resolvers/user.ex:527 #, elixir-autogen, elixir-format msgid "The new email doesn't seem to be valid" msgstr "La nuova email sembra non valida" -#: lib/graphql/resolvers/admin.ex:323 +#: lib/graphql/resolvers/admin.ex:324 #: lib/graphql/resolvers/user.ex:514 #, elixir-autogen, elixir-format msgid "The new email must be different" @@ -627,7 +627,7 @@ msgstr "Non puoi invitare in questo gruppo" msgid "You don't have permission to delete this token" msgstr "Non hai il permesso di cancellare questo token" -#: lib/graphql/resolvers/admin.ex:56 +#: lib/graphql/resolvers/admin.ex:57 #, elixir-autogen, elixir-format msgid "You need to be logged-in and a moderator to list action logs" msgstr "Devi essere connesso e un moderatore per elencare i log delle azioni" @@ -647,21 +647,21 @@ msgstr "Devi essere connesso e un moderatore per aggiornare un rapporto" msgid "You need to be logged-in and a moderator to view a report" msgstr "Devi essere connesso e un moderatore per visualizzare un rapporto" -#: lib/graphql/resolvers/admin.ex:258 +#: lib/graphql/resolvers/admin.ex:259 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" "Devi essere connesso e un moderatore per accedere alle opzioni " "dell'amministratore" -#: lib/graphql/resolvers/admin.ex:242 +#: lib/graphql/resolvers/admin.ex:243 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" "Devi essere connesso e un moderatore per accedere alle statistiche del " "dashboard" -#: lib/graphql/resolvers/admin.ex:283 +#: lib/graphql/resolvers/admin.ex:284 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" @@ -962,7 +962,7 @@ msgstr "Non è stato possibile abbandonare l'evento" msgid "Failed to update the group" msgstr "Non è stato possibile aggiornare il gruppo" -#: lib/graphql/resolvers/admin.ex:357 +#: lib/graphql/resolvers/admin.ex:358 #: lib/graphql/resolvers/user.ex:547 #, elixir-autogen, elixir-format msgid "Failed to update user email" @@ -1094,22 +1094,22 @@ msgstr "Per rimuovere un membro è necessario aver effettuato il login" msgid "Your email seems to be using an invalid format" msgstr "La tua email sembra utilizzare un formato non valido" -#: lib/graphql/resolvers/admin.ex:399 +#: lib/graphql/resolvers/admin.ex:400 #, elixir-autogen, elixir-format msgid "Can't confirm an already confirmed user" msgstr "Non è possibile confermare un utente già confermato" -#: lib/graphql/resolvers/admin.ex:403 +#: lib/graphql/resolvers/admin.ex:404 #, elixir-autogen, elixir-format msgid "Deconfirming users is not supported" msgstr "La deconferma degli utenti non è supportata" -#: lib/graphql/resolvers/admin.ex:375 +#: lib/graphql/resolvers/admin.ex:376 #, elixir-autogen, elixir-format msgid "The new role must be different" msgstr "La nuova email dev'essere diversa" -#: lib/graphql/resolvers/admin.ex:314 +#: lib/graphql/resolvers/admin.ex:315 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to edit an user's details" msgstr "" @@ -1121,7 +1121,7 @@ msgstr "" msgid "A profile or group with that name already exists" msgstr "Esiste già un profilo o un gruppo con quel nome" -#: lib/graphql/resolvers/admin.ex:542 +#: lib/graphql/resolvers/admin.ex:560 #, elixir-autogen, elixir-format msgid "Unable to find an instance to follow at this address" msgstr "Non è stato possibile trovare un'istanza da seguire a questo indirizzo" @@ -1387,7 +1387,7 @@ msgstr "" msgid "The same push subscription has already been registered" msgstr "" -#: lib/graphql/resolvers/admin.ex:536 +#: lib/graphql/resolvers/admin.ex:554 #, elixir-autogen, elixir-format msgid "This instance is pending follow approval" msgstr "" @@ -1397,7 +1397,7 @@ msgstr "" msgid "Timezone ID %{timezone} is invalid" msgstr "" -#: lib/graphql/resolvers/admin.ex:539 +#: lib/graphql/resolvers/admin.ex:557 #, elixir-autogen, elixir-format, fuzzy msgid "You are already following this instance" msgstr "Stai già seguendo questo gruppo" @@ -1417,12 +1417,12 @@ msgstr "" msgid "The token you provided is invalid. Make sure that the URL is exactly the one provided inside the email you got." msgstr "" -#: lib/graphql/resolvers/conversation.ex:161 +#: lib/graphql/resolvers/conversation.ex:164 #, elixir-autogen, elixir-format msgid "Conversation needs to mention at least one participant that's not yourself" msgstr "" -#: lib/graphql/resolvers/participant.ex:396 +#: lib/graphql/resolvers/participant.ex:401 #, elixir-autogen, elixir-format msgid "There are no participants matching the audience you've selected." msgstr "" diff --git a/priv/gettext/ja/LC_MESSAGES/activity.po b/priv/gettext/ja/LC_MESSAGES/activity.po index e68b339fc..12eca49e9 100644 --- a/priv/gettext/ja/LC_MESSAGES/activity.po +++ b/priv/gettext/ja/LC_MESSAGES/activity.po @@ -224,7 +224,7 @@ msgstr "通知の頻度と有効・無効の設定はアカウントの設定で #: lib/web/templates/email/email_direct_activity.html.heex:230 #: lib/web/templates/email/email_direct_activity.text.eex:23 -#, elixir-format +#, elixir-format, elixir-autogen msgid "View one more activity" msgid_plural "View %{count} more activities" msgstr[0] "もっと更新・投稿を見る" @@ -233,7 +233,7 @@ msgstr[0] "もっと更新・投稿を見る" #: lib/web/templates/email/email_direct_activity.html.heex:60 #: lib/web/templates/email/email_direct_activity.text.eex:6 #: lib/web/templates/email/email_direct_activity.text.eex:7 -#, elixir-format +#, elixir-format, elixir-autogen msgid "There has been an activity!" msgid_plural "There has been some activity!" msgstr[0] "更新か投稿がありました!" diff --git a/priv/gettext/ja/LC_MESSAGES/default.po b/priv/gettext/ja/LC_MESSAGES/default.po index aca43e360..c5e0256bc 100644 --- a/priv/gettext/ja/LC_MESSAGES/default.po +++ b/priv/gettext/ja/LC_MESSAGES/default.po @@ -316,14 +316,14 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "" #: lib/web/email/notification.ex:52 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "" #: lib/web/templates/email/on_day_notification.html.heex:47 #: lib/web/templates/email/on_day_notification.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "" @@ -372,20 +372,20 @@ msgid "You have been invited by %{inviter} to join group %{group}" msgstr "" #: lib/web/email/notification.ex:81 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "" #: lib/web/email/notification.ex:107 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "" #: lib/web/templates/email/notification_each_week.html.heex:47 #: lib/web/templates/email/notification_each_week.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "" @@ -750,7 +750,7 @@ msgstr "" #: lib/web/templates/email/notification_each_week.text.eex:11 #: lib/web/templates/email/on_day_notification.html.heex:89 #: lib/web/templates/email/on_day_notification.text.eex:11 -#, elixir-format +#, elixir-format, elixir-autogen msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "" @@ -1045,7 +1045,7 @@ msgstr "" msgid "Your instance's moderation team has decided to suspend %{group_name} (%{group_address}). You are no longer a member of this group." msgstr "" -#: lib/web/email/group.ex:108 +#: lib/web/email/group.ex:106 #, elixir-autogen, elixir-format msgid "The group %{group} has been suspended on %{instance}" msgstr "" @@ -1130,12 +1130,6 @@ msgctxt "terms" msgid "We reserve the right to modify these Terms at any time. For instance, we may need to change these Terms if we come out with a new feature." msgstr "" -#: lib/web/templates/api/terms.html.heex:55 -#, elixir-autogen, elixir-format -msgctxt "terms" -msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by <a href=\"https://framasoft.org\">Framasoft</a>, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." -msgstr "" - #: lib/web/templates/api/terms.html.heex:105 #, elixir-autogen, elixir-format msgctxt "terms" @@ -1621,7 +1615,7 @@ msgstr "" #: lib/web/templates/email/pending_participation_notification.html.heex:47 #: lib/web/templates/email/pending_participation_notification.text.eex:4 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one pending attendance request to process for the following event:" msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" msgstr[0] "" @@ -2019,3 +2013,9 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Well done!" msgstr "" + +#: lib/web/templates/api/terms.html.heex:55 +#, elixir-autogen, elixir-format, fuzzy +msgctxt "terms" +msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." +msgstr "" diff --git a/priv/gettext/ja/LC_MESSAGES/errors.po b/priv/gettext/ja/LC_MESSAGES/errors.po index 40377a498..08b931c97 100644 --- a/priv/gettext/ja/LC_MESSAGES/errors.po +++ b/priv/gettext/ja/LC_MESSAGES/errors.po @@ -176,13 +176,13 @@ msgstr "" msgid "The current password is invalid" msgstr "" -#: lib/graphql/resolvers/admin.ex:334 +#: lib/graphql/resolvers/admin.ex:335 #: lib/graphql/resolvers/user.ex:527 #, elixir-autogen, elixir-format msgid "The new email doesn't seem to be valid" msgstr "" -#: lib/graphql/resolvers/admin.ex:323 +#: lib/graphql/resolvers/admin.ex:324 #: lib/graphql/resolvers/user.ex:514 #, elixir-autogen, elixir-format msgid "The new email must be different" @@ -616,7 +616,7 @@ msgstr "" msgid "You don't have permission to delete this token" msgstr "" -#: lib/graphql/resolvers/admin.ex:56 +#: lib/graphql/resolvers/admin.ex:57 #, elixir-autogen, elixir-format msgid "You need to be logged-in and a moderator to list action logs" msgstr "" @@ -636,17 +636,17 @@ msgstr "" msgid "You need to be logged-in and a moderator to view a report" msgstr "" -#: lib/graphql/resolvers/admin.ex:258 +#: lib/graphql/resolvers/admin.ex:259 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" -#: lib/graphql/resolvers/admin.ex:242 +#: lib/graphql/resolvers/admin.ex:243 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" -#: lib/graphql/resolvers/admin.ex:283 +#: lib/graphql/resolvers/admin.ex:284 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" @@ -933,7 +933,7 @@ msgstr "" msgid "Failed to update the group" msgstr "" -#: lib/graphql/resolvers/admin.ex:357 +#: lib/graphql/resolvers/admin.ex:358 #: lib/graphql/resolvers/user.ex:547 #, elixir-autogen, elixir-format msgid "Failed to update user email" @@ -1064,22 +1064,22 @@ msgstr "" msgid "Your email seems to be using an invalid format" msgstr "" -#: lib/graphql/resolvers/admin.ex:399 +#: lib/graphql/resolvers/admin.ex:400 #, elixir-autogen, elixir-format msgid "Can't confirm an already confirmed user" msgstr "" -#: lib/graphql/resolvers/admin.ex:403 +#: lib/graphql/resolvers/admin.ex:404 #, elixir-autogen, elixir-format msgid "Deconfirming users is not supported" msgstr "" -#: lib/graphql/resolvers/admin.ex:375 +#: lib/graphql/resolvers/admin.ex:376 #, elixir-autogen, elixir-format, fuzzy msgid "The new role must be different" msgstr "" -#: lib/graphql/resolvers/admin.ex:314 +#: lib/graphql/resolvers/admin.ex:315 #, elixir-autogen, elixir-format, fuzzy msgid "You need to be logged-in and an administrator to edit an user's details" msgstr "" @@ -1089,7 +1089,7 @@ msgstr "" msgid "A profile or group with that name already exists" msgstr "" -#: lib/graphql/resolvers/admin.ex:542 +#: lib/graphql/resolvers/admin.ex:560 #, elixir-autogen, elixir-format msgid "Unable to find an instance to follow at this address" msgstr "" @@ -1351,7 +1351,7 @@ msgstr "" msgid "The same push subscription has already been registered" msgstr "" -#: lib/graphql/resolvers/admin.ex:536 +#: lib/graphql/resolvers/admin.ex:554 #, elixir-autogen, elixir-format msgid "This instance is pending follow approval" msgstr "" @@ -1361,7 +1361,7 @@ msgstr "" msgid "Timezone ID %{timezone} is invalid" msgstr "" -#: lib/graphql/resolvers/admin.ex:539 +#: lib/graphql/resolvers/admin.ex:557 #, elixir-autogen, elixir-format, fuzzy msgid "You are already following this instance" msgstr "" @@ -1381,12 +1381,12 @@ msgstr "" msgid "The token you provided is invalid. Make sure that the URL is exactly the one provided inside the email you got." msgstr "" -#: lib/graphql/resolvers/conversation.ex:161 +#: lib/graphql/resolvers/conversation.ex:164 #, elixir-autogen, elixir-format msgid "Conversation needs to mention at least one participant that's not yourself" msgstr "" -#: lib/graphql/resolvers/participant.ex:396 +#: lib/graphql/resolvers/participant.ex:401 #, elixir-autogen, elixir-format msgid "There are no participants matching the audience you've selected." msgstr "" diff --git a/priv/gettext/ko/LC_MESSAGES/activity.po b/priv/gettext/ko/LC_MESSAGES/activity.po index 9cd90a465..76e083cd8 100644 --- a/priv/gettext/ko/LC_MESSAGES/activity.po +++ b/priv/gettext/ko/LC_MESSAGES/activity.po @@ -225,7 +225,7 @@ msgstr "" #: lib/web/templates/email/email_direct_activity.html.heex:230 #: lib/web/templates/email/email_direct_activity.text.eex:23 -#, elixir-format +#, elixir-format, elixir-autogen msgid "View one more activity" msgid_plural "View %{count} more activities" msgstr[0] "" @@ -235,7 +235,7 @@ msgstr[1] "" #: lib/web/templates/email/email_direct_activity.html.heex:60 #: lib/web/templates/email/email_direct_activity.text.eex:6 #: lib/web/templates/email/email_direct_activity.text.eex:7 -#, elixir-format +#, elixir-format, elixir-autogen msgid "There has been an activity!" msgid_plural "There has been some activity!" msgstr[0] "" diff --git a/priv/gettext/ko/LC_MESSAGES/default.po b/priv/gettext/ko/LC_MESSAGES/default.po index a1b49a565..5394a2bbf 100644 --- a/priv/gettext/ko/LC_MESSAGES/default.po +++ b/priv/gettext/ko/LC_MESSAGES/default.po @@ -320,14 +320,14 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "" #: lib/web/email/notification.ex:52 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "" #: lib/web/templates/email/on_day_notification.html.heex:47 #: lib/web/templates/email/on_day_notification.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "" @@ -376,20 +376,20 @@ msgid "You have been invited by %{inviter} to join group %{group}" msgstr "" #: lib/web/email/notification.ex:81 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "" #: lib/web/email/notification.ex:107 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "" #: lib/web/templates/email/notification_each_week.html.heex:47 #: lib/web/templates/email/notification_each_week.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "" @@ -754,7 +754,7 @@ msgstr "" #: lib/web/templates/email/notification_each_week.text.eex:11 #: lib/web/templates/email/on_day_notification.html.heex:89 #: lib/web/templates/email/on_day_notification.text.eex:11 -#, elixir-format +#, elixir-format, elixir-autogen msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "" @@ -1049,7 +1049,7 @@ msgstr "" msgid "Your instance's moderation team has decided to suspend %{group_name} (%{group_address}). You are no longer a member of this group." msgstr "" -#: lib/web/email/group.ex:108 +#: lib/web/email/group.ex:106 #, elixir-autogen, elixir-format msgid "The group %{group} has been suspended on %{instance}" msgstr "" @@ -1133,12 +1133,6 @@ msgctxt "terms" msgid "We reserve the right to modify these Terms at any time. For instance, we may need to change these Terms if we come out with a new feature." msgstr "" -#: lib/web/templates/api/terms.html.heex:55 -#, elixir-autogen, elixir-format -msgctxt "terms" -msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by <a href=\"https://framasoft.org\">Framasoft</a>, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." -msgstr "" - #: lib/web/templates/api/terms.html.heex:105 #, elixir-autogen, elixir-format msgctxt "terms" @@ -1623,7 +1617,7 @@ msgstr "" #: lib/web/templates/email/pending_participation_notification.html.heex:47 #: lib/web/templates/email/pending_participation_notification.text.eex:4 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one pending attendance request to process for the following event:" msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" msgstr[0] "" @@ -2016,3 +2010,9 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Well done!" msgstr "" + +#: lib/web/templates/api/terms.html.heex:55 +#, elixir-autogen, elixir-format, fuzzy +msgctxt "terms" +msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." +msgstr "" diff --git a/priv/gettext/ko/LC_MESSAGES/errors.po b/priv/gettext/ko/LC_MESSAGES/errors.po index d6260f61f..f41df25b0 100644 --- a/priv/gettext/ko/LC_MESSAGES/errors.po +++ b/priv/gettext/ko/LC_MESSAGES/errors.po @@ -169,13 +169,13 @@ msgstr "" msgid "The current password is invalid" msgstr "" -#: lib/graphql/resolvers/admin.ex:334 +#: lib/graphql/resolvers/admin.ex:335 #: lib/graphql/resolvers/user.ex:527 #, elixir-autogen, elixir-format msgid "The new email doesn't seem to be valid" msgstr "" -#: lib/graphql/resolvers/admin.ex:323 +#: lib/graphql/resolvers/admin.ex:324 #: lib/graphql/resolvers/user.ex:514 #, elixir-autogen, elixir-format msgid "The new email must be different" @@ -609,7 +609,7 @@ msgstr "" msgid "You don't have permission to delete this token" msgstr "" -#: lib/graphql/resolvers/admin.ex:56 +#: lib/graphql/resolvers/admin.ex:57 #, elixir-autogen, elixir-format msgid "You need to be logged-in and a moderator to list action logs" msgstr "" @@ -629,17 +629,17 @@ msgstr "" msgid "You need to be logged-in and a moderator to view a report" msgstr "" -#: lib/graphql/resolvers/admin.ex:258 +#: lib/graphql/resolvers/admin.ex:259 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" -#: lib/graphql/resolvers/admin.ex:242 +#: lib/graphql/resolvers/admin.ex:243 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" -#: lib/graphql/resolvers/admin.ex:283 +#: lib/graphql/resolvers/admin.ex:284 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" @@ -926,7 +926,7 @@ msgstr "" msgid "Failed to update the group" msgstr "" -#: lib/graphql/resolvers/admin.ex:357 +#: lib/graphql/resolvers/admin.ex:358 #: lib/graphql/resolvers/user.ex:547 #, elixir-autogen, elixir-format msgid "Failed to update user email" @@ -1057,22 +1057,22 @@ msgstr "" msgid "Your email seems to be using an invalid format" msgstr "" -#: lib/graphql/resolvers/admin.ex:399 +#: lib/graphql/resolvers/admin.ex:400 #, elixir-autogen, elixir-format msgid "Can't confirm an already confirmed user" msgstr "" -#: lib/graphql/resolvers/admin.ex:403 +#: lib/graphql/resolvers/admin.ex:404 #, elixir-autogen, elixir-format msgid "Deconfirming users is not supported" msgstr "" -#: lib/graphql/resolvers/admin.ex:375 +#: lib/graphql/resolvers/admin.ex:376 #, elixir-autogen, elixir-format msgid "The new role must be different" msgstr "" -#: lib/graphql/resolvers/admin.ex:314 +#: lib/graphql/resolvers/admin.ex:315 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to edit an user's details" msgstr "" @@ -1082,7 +1082,7 @@ msgstr "" msgid "A profile or group with that name already exists" msgstr "" -#: lib/graphql/resolvers/admin.ex:542 +#: lib/graphql/resolvers/admin.ex:560 #, elixir-autogen, elixir-format msgid "Unable to find an instance to follow at this address" msgstr "" @@ -1344,7 +1344,7 @@ msgstr "" msgid "The same push subscription has already been registered" msgstr "" -#: lib/graphql/resolvers/admin.ex:536 +#: lib/graphql/resolvers/admin.ex:554 #, elixir-autogen, elixir-format msgid "This instance is pending follow approval" msgstr "" @@ -1354,7 +1354,7 @@ msgstr "" msgid "Timezone ID %{timezone} is invalid" msgstr "" -#: lib/graphql/resolvers/admin.ex:539 +#: lib/graphql/resolvers/admin.ex:557 #, elixir-autogen, elixir-format msgid "You are already following this instance" msgstr "" @@ -1374,12 +1374,12 @@ msgstr "" msgid "The token you provided is invalid. Make sure that the URL is exactly the one provided inside the email you got." msgstr "" -#: lib/graphql/resolvers/conversation.ex:161 +#: lib/graphql/resolvers/conversation.ex:164 #, elixir-autogen, elixir-format msgid "Conversation needs to mention at least one participant that's not yourself" msgstr "" -#: lib/graphql/resolvers/participant.ex:396 +#: lib/graphql/resolvers/participant.ex:401 #, elixir-autogen, elixir-format msgid "There are no participants matching the audience you've selected." msgstr "" diff --git a/priv/gettext/nb_NO/LC_MESSAGES/activity.po b/priv/gettext/nb_NO/LC_MESSAGES/activity.po index 6bfa5bc99..a636a4b5d 100644 --- a/priv/gettext/nb_NO/LC_MESSAGES/activity.po +++ b/priv/gettext/nb_NO/LC_MESSAGES/activity.po @@ -215,7 +215,7 @@ msgstr "" #: lib/web/templates/email/email_direct_activity.html.heex:230 #: lib/web/templates/email/email_direct_activity.text.eex:23 -#, elixir-format +#, elixir-format, elixir-autogen msgid "View one more activity" msgid_plural "View %{count} more activities" msgstr[0] "" @@ -225,7 +225,7 @@ msgstr[1] "" #: lib/web/templates/email/email_direct_activity.html.heex:60 #: lib/web/templates/email/email_direct_activity.text.eex:6 #: lib/web/templates/email/email_direct_activity.text.eex:7 -#, elixir-format +#, elixir-format, elixir-autogen msgid "There has been an activity!" msgid_plural "There has been some activity!" msgstr[0] "" diff --git a/priv/gettext/nb_NO/LC_MESSAGES/default.po b/priv/gettext/nb_NO/LC_MESSAGES/default.po index 1fa3658f2..20cd9f9fd 100644 --- a/priv/gettext/nb_NO/LC_MESSAGES/default.po +++ b/priv/gettext/nb_NO/LC_MESSAGES/default.po @@ -322,7 +322,7 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "" #: lib/web/email/notification.ex:52 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "" @@ -330,7 +330,7 @@ msgstr[1] "" #: lib/web/templates/email/on_day_notification.html.heex:47 #: lib/web/templates/email/on_day_notification.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "" @@ -380,14 +380,14 @@ msgid "You have been invited by %{inviter} to join group %{group}" msgstr "" #: lib/web/email/notification.ex:81 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "" msgstr[1] "" #: lib/web/email/notification.ex:107 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "" @@ -395,7 +395,7 @@ msgstr[1] "" #: lib/web/templates/email/notification_each_week.html.heex:47 #: lib/web/templates/email/notification_each_week.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "" @@ -761,7 +761,7 @@ msgstr "" #: lib/web/templates/email/notification_each_week.text.eex:11 #: lib/web/templates/email/on_day_notification.html.heex:89 #: lib/web/templates/email/on_day_notification.text.eex:11 -#, elixir-format +#, elixir-format, elixir-autogen msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "" @@ -1057,7 +1057,7 @@ msgstr "" msgid "Your instance's moderation team has decided to suspend %{group_name} (%{group_address}). You are no longer a member of this group." msgstr "" -#: lib/web/email/group.ex:108 +#: lib/web/email/group.ex:106 #, elixir-autogen, elixir-format msgid "The group %{group} has been suspended on %{instance}" msgstr "" @@ -1141,12 +1141,6 @@ msgctxt "terms" msgid "We reserve the right to modify these Terms at any time. For instance, we may need to change these Terms if we come out with a new feature." msgstr "" -#: lib/web/templates/api/terms.html.heex:55 -#, elixir-autogen, elixir-format -msgctxt "terms" -msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by <a href=\"https://framasoft.org\">Framasoft</a>, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." -msgstr "" - #: lib/web/templates/api/terms.html.heex:105 #, elixir-autogen, elixir-format msgctxt "terms" @@ -1631,7 +1625,7 @@ msgstr "" #: lib/web/templates/email/pending_participation_notification.html.heex:47 #: lib/web/templates/email/pending_participation_notification.text.eex:4 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one pending attendance request to process for the following event:" msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" msgstr[0] "" @@ -2025,3 +2019,9 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Well done!" msgstr "" + +#: lib/web/templates/api/terms.html.heex:55 +#, elixir-autogen, elixir-format, fuzzy +msgctxt "terms" +msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." +msgstr "" diff --git a/priv/gettext/nb_NO/LC_MESSAGES/errors.po b/priv/gettext/nb_NO/LC_MESSAGES/errors.po index dc5c1d116..35278e7e1 100644 --- a/priv/gettext/nb_NO/LC_MESSAGES/errors.po +++ b/priv/gettext/nb_NO/LC_MESSAGES/errors.po @@ -175,13 +175,13 @@ msgstr "" msgid "The current password is invalid" msgstr "" -#: lib/graphql/resolvers/admin.ex:334 +#: lib/graphql/resolvers/admin.ex:335 #: lib/graphql/resolvers/user.ex:527 #, elixir-autogen, elixir-format msgid "The new email doesn't seem to be valid" msgstr "" -#: lib/graphql/resolvers/admin.ex:323 +#: lib/graphql/resolvers/admin.ex:324 #: lib/graphql/resolvers/user.ex:514 #, elixir-autogen, elixir-format msgid "The new email must be different" @@ -615,7 +615,7 @@ msgstr "" msgid "You don't have permission to delete this token" msgstr "" -#: lib/graphql/resolvers/admin.ex:56 +#: lib/graphql/resolvers/admin.ex:57 #, elixir-autogen, elixir-format msgid "You need to be logged-in and a moderator to list action logs" msgstr "" @@ -635,17 +635,17 @@ msgstr "" msgid "You need to be logged-in and a moderator to view a report" msgstr "" -#: lib/graphql/resolvers/admin.ex:258 +#: lib/graphql/resolvers/admin.ex:259 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" -#: lib/graphql/resolvers/admin.ex:242 +#: lib/graphql/resolvers/admin.ex:243 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" -#: lib/graphql/resolvers/admin.ex:283 +#: lib/graphql/resolvers/admin.ex:284 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" @@ -932,7 +932,7 @@ msgstr "" msgid "Failed to update the group" msgstr "" -#: lib/graphql/resolvers/admin.ex:357 +#: lib/graphql/resolvers/admin.ex:358 #: lib/graphql/resolvers/user.ex:547 #, elixir-autogen, elixir-format msgid "Failed to update user email" @@ -1063,22 +1063,22 @@ msgstr "" msgid "Your email seems to be using an invalid format" msgstr "" -#: lib/graphql/resolvers/admin.ex:399 +#: lib/graphql/resolvers/admin.ex:400 #, elixir-autogen, elixir-format msgid "Can't confirm an already confirmed user" msgstr "" -#: lib/graphql/resolvers/admin.ex:403 +#: lib/graphql/resolvers/admin.ex:404 #, elixir-autogen, elixir-format msgid "Deconfirming users is not supported" msgstr "" -#: lib/graphql/resolvers/admin.ex:375 +#: lib/graphql/resolvers/admin.ex:376 #, elixir-autogen, elixir-format msgid "The new role must be different" msgstr "" -#: lib/graphql/resolvers/admin.ex:314 +#: lib/graphql/resolvers/admin.ex:315 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to edit an user's details" msgstr "" @@ -1088,7 +1088,7 @@ msgstr "" msgid "A profile or group with that name already exists" msgstr "" -#: lib/graphql/resolvers/admin.ex:542 +#: lib/graphql/resolvers/admin.ex:560 #, elixir-autogen, elixir-format msgid "Unable to find an instance to follow at this address" msgstr "" @@ -1350,7 +1350,7 @@ msgstr "" msgid "The same push subscription has already been registered" msgstr "" -#: lib/graphql/resolvers/admin.ex:536 +#: lib/graphql/resolvers/admin.ex:554 #, elixir-autogen, elixir-format msgid "This instance is pending follow approval" msgstr "" @@ -1360,7 +1360,7 @@ msgstr "" msgid "Timezone ID %{timezone} is invalid" msgstr "" -#: lib/graphql/resolvers/admin.ex:539 +#: lib/graphql/resolvers/admin.ex:557 #, elixir-autogen, elixir-format, fuzzy msgid "You are already following this instance" msgstr "" @@ -1380,12 +1380,12 @@ msgstr "" msgid "The token you provided is invalid. Make sure that the URL is exactly the one provided inside the email you got." msgstr "" -#: lib/graphql/resolvers/conversation.ex:161 +#: lib/graphql/resolvers/conversation.ex:164 #, elixir-autogen, elixir-format msgid "Conversation needs to mention at least one participant that's not yourself" msgstr "" -#: lib/graphql/resolvers/participant.ex:396 +#: lib/graphql/resolvers/participant.ex:401 #, elixir-autogen, elixir-format msgid "There are no participants matching the audience you've selected." msgstr "" diff --git a/priv/gettext/nl/LC_MESSAGES/activity.po b/priv/gettext/nl/LC_MESSAGES/activity.po index ea5e27fce..c69d2e394 100644 --- a/priv/gettext/nl/LC_MESSAGES/activity.po +++ b/priv/gettext/nl/LC_MESSAGES/activity.po @@ -222,7 +222,7 @@ msgstr "" #: lib/web/templates/email/email_direct_activity.html.heex:230 #: lib/web/templates/email/email_direct_activity.text.eex:23 -#, elixir-format +#, elixir-format, elixir-autogen msgid "View one more activity" msgid_plural "View %{count} more activities" msgstr[0] "" @@ -232,7 +232,7 @@ msgstr[1] "" #: lib/web/templates/email/email_direct_activity.html.heex:60 #: lib/web/templates/email/email_direct_activity.text.eex:6 #: lib/web/templates/email/email_direct_activity.text.eex:7 -#, elixir-format +#, elixir-format, elixir-autogen msgid "There has been an activity!" msgid_plural "There has been some activity!" msgstr[0] "" diff --git a/priv/gettext/nl/LC_MESSAGES/default.po b/priv/gettext/nl/LC_MESSAGES/default.po index 5c20c272c..73b08b60b 100644 --- a/priv/gettext/nl/LC_MESSAGES/default.po +++ b/priv/gettext/nl/LC_MESSAGES/default.po @@ -325,7 +325,7 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "" #: lib/web/email/notification.ex:52 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "" @@ -333,7 +333,7 @@ msgstr[1] "" #: lib/web/templates/email/on_day_notification.html.heex:47 #: lib/web/templates/email/on_day_notification.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "" @@ -383,14 +383,14 @@ msgid "You have been invited by %{inviter} to join group %{group}" msgstr "" #: lib/web/email/notification.ex:81 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "" msgstr[1] "" #: lib/web/email/notification.ex:107 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "" @@ -398,7 +398,7 @@ msgstr[1] "" #: lib/web/templates/email/notification_each_week.html.heex:47 #: lib/web/templates/email/notification_each_week.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "" @@ -768,7 +768,7 @@ msgstr "" #: lib/web/templates/email/notification_each_week.text.eex:11 #: lib/web/templates/email/on_day_notification.html.heex:89 #: lib/web/templates/email/on_day_notification.text.eex:11 -#, elixir-format +#, elixir-format, elixir-autogen msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "" @@ -1071,7 +1071,7 @@ msgstr "" msgid "Your instance's moderation team has decided to suspend %{group_name} (%{group_address}). You are no longer a member of this group." msgstr "" -#: lib/web/email/group.ex:108 +#: lib/web/email/group.ex:106 #, elixir-autogen, elixir-format msgid "The group %{group} has been suspended on %{instance}" msgstr "" @@ -1159,12 +1159,6 @@ msgctxt "terms" msgid "We reserve the right to modify these Terms at any time. For instance, we may need to change these Terms if we come out with a new feature." msgstr "" -#: lib/web/templates/api/terms.html.heex:55 -#, elixir-autogen, elixir-format -msgctxt "terms" -msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by <a href=\"https://framasoft.org\">Framasoft</a>, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." -msgstr "" - #: lib/web/templates/api/terms.html.heex:105 #, elixir-autogen, elixir-format msgctxt "terms" @@ -1651,7 +1645,7 @@ msgstr "" #: lib/web/templates/email/pending_participation_notification.html.heex:47 #: lib/web/templates/email/pending_participation_notification.text.eex:4 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one pending attendance request to process for the following event:" msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" msgstr[0] "" @@ -2055,3 +2049,9 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Well done!" msgstr "" + +#: lib/web/templates/api/terms.html.heex:55 +#, elixir-autogen, elixir-format, fuzzy +msgctxt "terms" +msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." +msgstr "" diff --git a/priv/gettext/nl/LC_MESSAGES/errors.po b/priv/gettext/nl/LC_MESSAGES/errors.po index 523a10661..24ea4ef2e 100644 --- a/priv/gettext/nl/LC_MESSAGES/errors.po +++ b/priv/gettext/nl/LC_MESSAGES/errors.po @@ -175,13 +175,13 @@ msgstr "" msgid "The current password is invalid" msgstr "" -#: lib/graphql/resolvers/admin.ex:334 +#: lib/graphql/resolvers/admin.ex:335 #: lib/graphql/resolvers/user.ex:527 #, elixir-autogen, elixir-format msgid "The new email doesn't seem to be valid" msgstr "" -#: lib/graphql/resolvers/admin.ex:323 +#: lib/graphql/resolvers/admin.ex:324 #: lib/graphql/resolvers/user.ex:514 #, elixir-autogen, elixir-format msgid "The new email must be different" @@ -615,7 +615,7 @@ msgstr "" msgid "You don't have permission to delete this token" msgstr "" -#: lib/graphql/resolvers/admin.ex:56 +#: lib/graphql/resolvers/admin.ex:57 #, elixir-autogen, elixir-format msgid "You need to be logged-in and a moderator to list action logs" msgstr "" @@ -635,17 +635,17 @@ msgstr "" msgid "You need to be logged-in and a moderator to view a report" msgstr "" -#: lib/graphql/resolvers/admin.ex:258 +#: lib/graphql/resolvers/admin.ex:259 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" -#: lib/graphql/resolvers/admin.ex:242 +#: lib/graphql/resolvers/admin.ex:243 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" -#: lib/graphql/resolvers/admin.ex:283 +#: lib/graphql/resolvers/admin.ex:284 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" @@ -932,7 +932,7 @@ msgstr "" msgid "Failed to update the group" msgstr "" -#: lib/graphql/resolvers/admin.ex:357 +#: lib/graphql/resolvers/admin.ex:358 #: lib/graphql/resolvers/user.ex:547 #, elixir-autogen, elixir-format msgid "Failed to update user email" @@ -1063,22 +1063,22 @@ msgstr "" msgid "Your email seems to be using an invalid format" msgstr "" -#: lib/graphql/resolvers/admin.ex:399 +#: lib/graphql/resolvers/admin.ex:400 #, elixir-autogen, elixir-format msgid "Can't confirm an already confirmed user" msgstr "" -#: lib/graphql/resolvers/admin.ex:403 +#: lib/graphql/resolvers/admin.ex:404 #, elixir-autogen, elixir-format msgid "Deconfirming users is not supported" msgstr "" -#: lib/graphql/resolvers/admin.ex:375 +#: lib/graphql/resolvers/admin.ex:376 #, elixir-autogen, elixir-format, fuzzy msgid "The new role must be different" msgstr "" -#: lib/graphql/resolvers/admin.ex:314 +#: lib/graphql/resolvers/admin.ex:315 #, elixir-autogen, elixir-format, fuzzy msgid "You need to be logged-in and an administrator to edit an user's details" msgstr "" @@ -1088,7 +1088,7 @@ msgstr "" msgid "A profile or group with that name already exists" msgstr "" -#: lib/graphql/resolvers/admin.ex:542 +#: lib/graphql/resolvers/admin.ex:560 #, elixir-autogen, elixir-format msgid "Unable to find an instance to follow at this address" msgstr "" @@ -1350,7 +1350,7 @@ msgstr "" msgid "The same push subscription has already been registered" msgstr "" -#: lib/graphql/resolvers/admin.ex:536 +#: lib/graphql/resolvers/admin.ex:554 #, elixir-autogen, elixir-format msgid "This instance is pending follow approval" msgstr "" @@ -1360,7 +1360,7 @@ msgstr "" msgid "Timezone ID %{timezone} is invalid" msgstr "" -#: lib/graphql/resolvers/admin.ex:539 +#: lib/graphql/resolvers/admin.ex:557 #, elixir-autogen, elixir-format, fuzzy msgid "You are already following this instance" msgstr "" @@ -1380,12 +1380,12 @@ msgstr "" msgid "The token you provided is invalid. Make sure that the URL is exactly the one provided inside the email you got." msgstr "" -#: lib/graphql/resolvers/conversation.ex:161 +#: lib/graphql/resolvers/conversation.ex:164 #, elixir-autogen, elixir-format msgid "Conversation needs to mention at least one participant that's not yourself" msgstr "" -#: lib/graphql/resolvers/participant.ex:396 +#: lib/graphql/resolvers/participant.ex:401 #, elixir-autogen, elixir-format msgid "There are no participants matching the audience you've selected." msgstr "" diff --git a/priv/gettext/nn/LC_MESSAGES/activity.po b/priv/gettext/nn/LC_MESSAGES/activity.po index 294dbd591..61e5b408b 100644 --- a/priv/gettext/nn/LC_MESSAGES/activity.po +++ b/priv/gettext/nn/LC_MESSAGES/activity.po @@ -225,7 +225,7 @@ msgstr "" #: lib/web/templates/email/email_direct_activity.html.heex:230 #: lib/web/templates/email/email_direct_activity.text.eex:23 -#, elixir-format +#, elixir-format, elixir-autogen msgid "View one more activity" msgid_plural "View %{count} more activities" msgstr[0] "Sjå ein aktivitet til" @@ -235,7 +235,7 @@ msgstr[1] "Sjå %{count} aktivitetar til" #: lib/web/templates/email/email_direct_activity.html.heex:60 #: lib/web/templates/email/email_direct_activity.text.eex:6 #: lib/web/templates/email/email_direct_activity.text.eex:7 -#, elixir-format +#, elixir-format, elixir-autogen msgid "There has been an activity!" msgid_plural "There has been some activity!" msgstr[0] "Det har skjedd noko!" diff --git a/priv/gettext/nn/LC_MESSAGES/default.po b/priv/gettext/nn/LC_MESSAGES/default.po index e2d619a43..83f3b6500 100644 --- a/priv/gettext/nn/LC_MESSAGES/default.po +++ b/priv/gettext/nn/LC_MESSAGES/default.po @@ -351,7 +351,7 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon på %{instance}: epostadressa er endra" #: lib/web/email/notification.ex:52 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "Ei planlagd hending i dag" @@ -359,7 +359,7 @@ msgstr[1] "%{nb_events} planlagde hendingar i dag" #: lib/web/templates/email/on_day_notification.html.heex:47 #: lib/web/templates/email/on_day_notification.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "Du har ei hending i dag:" @@ -409,14 +409,14 @@ msgid "You have been invited by %{inviter} to join group %{group}" msgstr "%{inviter} har invitert deg til å bli med i gruppa %{group}" #: lib/web/email/notification.ex:81 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "Ei planlagd hending denne veka" msgstr[1] "%{nb_events} planlagde hendingar denne veka" #: lib/web/email/notification.ex:107 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "Du har ein førespurnad om å delta på %{title} å handtera" @@ -426,7 +426,7 @@ msgstr[1] "" #: lib/web/templates/email/notification_each_week.html.heex:47 #: lib/web/templates/email/notification_each_week.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "Du har ei hending denne veka:" @@ -911,7 +911,7 @@ msgstr "Ikkje bruk han på ordentleg." #: lib/web/templates/email/notification_each_week.text.eex:11 #: lib/web/templates/email/on_day_notification.html.heex:89 #: lib/web/templates/email/on_day_notification.text.eex:11 -#, elixir-format +#, elixir-format, elixir-autogen msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "" @@ -1248,7 +1248,7 @@ msgstr "" "Styrarane på nettstaden din har avgjort å sperra gruppa %{group_name} " "(%{group_address}). Du er ikkje lenger medlem av gruppa." -#: lib/web/email/group.ex:108 +#: lib/web/email/group.ex:106 #, elixir-autogen, elixir-format msgid "The group %{group} has been suspended on %{instance}" msgstr "Gruppa %{group} på %{instance} er sperra" @@ -1372,20 +1372,6 @@ msgstr "" "Me held på retten til å endra desse vilkåra til ei kvar tid. Til dømes kan " "me ha bruk for å endra vilkåra dersom det kjem nye funksjonar på nettstaden." -#: lib/web/templates/api/terms.html.heex:55 -#, elixir-autogen, elixir-format -msgctxt "terms" -msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by <a href=\"https://framasoft.org\">Framasoft</a>, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." -msgstr "" -"Når me seier «me», «vår» eller «oss» i dette dokumentet, meiner me dei som " -"eig, driv og styrer denne Mobilizon-nettstaden. Programvara Mobilizon blir " -"gjeven ut av eit lag med bidragsytarar, støtta av <a href=\"https://framasoft" -".org\">Framasoft</a>, som er ein fransk ideell organisasjon som arbeider for " -"fri og gratis programvare. Dersom det ikkje står anna, er denne Mobilizon-" -"nettstaden ei uavhengig teneste som bruker kjeldekode frå Mobilizon. Du kan " -"lesa meir om denne nettstaden på <a href=\"/about/instance\">«Om " -"oss»</a>-sida." - #: lib/web/templates/api/terms.html.heex:105 #, elixir-autogen, elixir-format msgctxt "terms" @@ -1916,7 +1902,7 @@ msgstr "" #: lib/web/templates/email/pending_participation_notification.html.heex:47 #: lib/web/templates/email/pending_participation_notification.text.eex:4 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one pending attendance request to process for the following event:" msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" msgstr[0] "Du har ein førespurnad om deltaking å handtera:" @@ -2348,3 +2334,17 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Well done!" msgstr "" + +#: lib/web/templates/api/terms.html.heex:55 +#, elixir-autogen, elixir-format, fuzzy +msgctxt "terms" +msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." +msgstr "" +"Når me seier «me», «vår» eller «oss» i dette dokumentet, meiner me dei som " +"eig, driv og styrer denne Mobilizon-nettstaden. Programvara Mobilizon blir " +"gjeven ut av eit lag med bidragsytarar, støtta av <a href=\"https://framasoft" +".org\">Framasoft</a>, som er ein fransk ideell organisasjon som arbeider for " +"fri og gratis programvare. Dersom det ikkje står anna, er denne Mobilizon-" +"nettstaden ei uavhengig teneste som bruker kjeldekode frå Mobilizon. Du kan " +"lesa meir om denne nettstaden på <a href=\"/about/instance\">«Om " +"oss»</a>-sida." diff --git a/priv/gettext/nn/LC_MESSAGES/errors.po b/priv/gettext/nn/LC_MESSAGES/errors.po index a842f0712..712bc1d32 100644 --- a/priv/gettext/nn/LC_MESSAGES/errors.po +++ b/priv/gettext/nn/LC_MESSAGES/errors.po @@ -198,13 +198,13 @@ msgstr "Det er ikkje opna for å registrera seg" msgid "The current password is invalid" msgstr "Dette passordet er ugyldig" -#: lib/graphql/resolvers/admin.ex:334 +#: lib/graphql/resolvers/admin.ex:335 #: lib/graphql/resolvers/user.ex:527 #, elixir-autogen, elixir-format msgid "The new email doesn't seem to be valid" msgstr "Den nye epostadressa ser ut til å vera feil" -#: lib/graphql/resolvers/admin.ex:323 +#: lib/graphql/resolvers/admin.ex:324 #: lib/graphql/resolvers/user.ex:514 #, elixir-autogen, elixir-format msgid "The new email must be different" @@ -643,7 +643,7 @@ msgstr "Du kan ikkje invitera til denne gruppa" msgid "You don't have permission to delete this token" msgstr "Du har ikkje løyve til å sletta dette teiknet" -#: lib/graphql/resolvers/admin.ex:56 +#: lib/graphql/resolvers/admin.ex:57 #, elixir-autogen, elixir-format msgid "You need to be logged-in and a moderator to list action logs" msgstr "" @@ -664,21 +664,21 @@ msgstr "Du må vera innlogga og ha ei moderatorrolle for å oppdatera ein rappor msgid "You need to be logged-in and a moderator to view a report" msgstr "Du må vera innlogga og ha ei moderatorrolle for å lesa rapportar" -#: lib/graphql/resolvers/admin.ex:258 +#: lib/graphql/resolvers/admin.ex:259 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" "Du må vera innlogga og ha ei administratorrolle for å sjå admin-" "innstillingane" -#: lib/graphql/resolvers/admin.ex:242 +#: lib/graphql/resolvers/admin.ex:243 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" "Du må vera innlogga og ha ei administratorrolle for å sjå statistikk på " "styringspanelet" -#: lib/graphql/resolvers/admin.ex:283 +#: lib/graphql/resolvers/admin.ex:284 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" @@ -975,7 +975,7 @@ msgstr "Greidde ikkje forlata hendinga" msgid "Failed to update the group" msgstr "Greidde ikkje oppdatera gruppa" -#: lib/graphql/resolvers/admin.ex:357 +#: lib/graphql/resolvers/admin.ex:358 #: lib/graphql/resolvers/user.ex:547 #, elixir-autogen, elixir-format msgid "Failed to update user email" @@ -1107,22 +1107,22 @@ msgstr "Du må vera innlogga for å fjerna medlemer" msgid "Your email seems to be using an invalid format" msgstr "Det ser ut som epostadressa di er ugyldig" -#: lib/graphql/resolvers/admin.ex:399 +#: lib/graphql/resolvers/admin.ex:400 #, elixir-autogen, elixir-format msgid "Can't confirm an already confirmed user" msgstr "Du kan ikkje stadfesta ein brukar som allereie er stadfesta" -#: lib/graphql/resolvers/admin.ex:403 +#: lib/graphql/resolvers/admin.ex:404 #, elixir-autogen, elixir-format msgid "Deconfirming users is not supported" msgstr "Du kan ikkje oppheva stadfesting av brukarar" -#: lib/graphql/resolvers/admin.ex:375 +#: lib/graphql/resolvers/admin.ex:376 #, elixir-autogen, elixir-format msgid "The new role must be different" msgstr "Den nye rolla må vera annleis" -#: lib/graphql/resolvers/admin.ex:314 +#: lib/graphql/resolvers/admin.ex:315 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to edit an user's details" msgstr "Du må vera innlogga og ha ei administratorrolle for å redigera brukarar" @@ -1132,7 +1132,7 @@ msgstr "Du må vera innlogga og ha ei administratorrolle for å redigera brukara msgid "A profile or group with that name already exists" msgstr "Det finst allereie ein brukar eller ei gruppe med det namnet" -#: lib/graphql/resolvers/admin.ex:542 +#: lib/graphql/resolvers/admin.ex:560 #, elixir-autogen, elixir-format msgid "Unable to find an instance to follow at this address" msgstr "Greidde ikkje finna ein nettstad å fylgja på denne adressa" @@ -1394,7 +1394,7 @@ msgstr "" msgid "The same push subscription has already been registered" msgstr "" -#: lib/graphql/resolvers/admin.ex:536 +#: lib/graphql/resolvers/admin.ex:554 #, elixir-autogen, elixir-format msgid "This instance is pending follow approval" msgstr "" @@ -1404,7 +1404,7 @@ msgstr "" msgid "Timezone ID %{timezone} is invalid" msgstr "" -#: lib/graphql/resolvers/admin.ex:539 +#: lib/graphql/resolvers/admin.ex:557 #, elixir-autogen, elixir-format, fuzzy msgid "You are already following this instance" msgstr "Du fylgjer allereie denne gruppa" @@ -1424,12 +1424,12 @@ msgstr "" msgid "The token you provided is invalid. Make sure that the URL is exactly the one provided inside the email you got." msgstr "" -#: lib/graphql/resolvers/conversation.ex:161 +#: lib/graphql/resolvers/conversation.ex:164 #, elixir-autogen, elixir-format msgid "Conversation needs to mention at least one participant that's not yourself" msgstr "" -#: lib/graphql/resolvers/participant.ex:396 +#: lib/graphql/resolvers/participant.ex:401 #, elixir-autogen, elixir-format msgid "There are no participants matching the audience you've selected." msgstr "" diff --git a/priv/gettext/oc/LC_MESSAGES/activity.po b/priv/gettext/oc/LC_MESSAGES/activity.po index 06fa6392d..3e603e63c 100644 --- a/priv/gettext/oc/LC_MESSAGES/activity.po +++ b/priv/gettext/oc/LC_MESSAGES/activity.po @@ -215,7 +215,7 @@ msgstr "" #: lib/web/templates/email/email_direct_activity.html.heex:230 #: lib/web/templates/email/email_direct_activity.text.eex:23 -#, elixir-format +#, elixir-format, elixir-autogen msgid "View one more activity" msgid_plural "View %{count} more activities" msgstr[0] "" @@ -225,7 +225,7 @@ msgstr[1] "" #: lib/web/templates/email/email_direct_activity.html.heex:60 #: lib/web/templates/email/email_direct_activity.text.eex:6 #: lib/web/templates/email/email_direct_activity.text.eex:7 -#, elixir-format +#, elixir-format, elixir-autogen msgid "There has been an activity!" msgid_plural "There has been some activity!" msgstr[0] "" diff --git a/priv/gettext/oc/LC_MESSAGES/default.po b/priv/gettext/oc/LC_MESSAGES/default.po index 9fe4ea1d5..410ebd307 100644 --- a/priv/gettext/oc/LC_MESSAGES/default.po +++ b/priv/gettext/oc/LC_MESSAGES/default.po @@ -348,7 +348,7 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon sus %{instance} : adreça electronica cambiada" #: lib/web/email/notification.ex:52 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "Un eveniment previst uèi" @@ -356,7 +356,7 @@ msgstr[1] "%{nb_events} eveniments previstes uèi" #: lib/web/templates/email/on_day_notification.html.heex:47 #: lib/web/templates/email/on_day_notification.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "Avètz un eveniment uèi :" @@ -406,14 +406,14 @@ msgid "You have been invited by %{inviter} to join group %{group}" msgstr "%{inviter} vos a convidat a rejónher lo grop %{group}" #: lib/web/email/notification.ex:81 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "Un eveniment previst aquesta setmana" msgstr[1] "%{nb_events} eveniments previstes aquesta setmana" #: lib/web/email/notification.ex:107 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "Una demanda de participacion a l’eveniment %{title} a tractar" @@ -423,7 +423,7 @@ msgstr[1] "" #: lib/web/templates/email/notification_each_week.html.heex:47 #: lib/web/templates/email/notification_each_week.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "Avètz un eveniment aquesta setmana :" @@ -836,7 +836,7 @@ msgstr "Mercés de l’utilizar pas d’un biais real." #: lib/web/templates/email/notification_each_week.text.eex:11 #: lib/web/templates/email/on_day_notification.html.heex:89 #: lib/web/templates/email/on_day_notification.text.eex:11 -#, elixir-format +#, elixir-format, elixir-autogen msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "" @@ -1149,7 +1149,7 @@ msgstr "Lo grop %{group} foguèt suspendut sus %{instance} !" msgid "Your instance's moderation team has decided to suspend %{group_name} (%{group_address}). You are no longer a member of this group." msgstr "" -#: lib/web/email/group.ex:108 +#: lib/web/email/group.ex:106 #, elixir-autogen, elixir-format msgid "The group %{group} has been suspended on %{instance}" msgstr "Lo grop %{group} foguèt suspendut sus %{instance}" @@ -1235,12 +1235,6 @@ msgctxt "terms" msgid "We reserve the right to modify these Terms at any time. For instance, we may need to change these Terms if we come out with a new feature." msgstr "" -#: lib/web/templates/api/terms.html.heex:55 -#, elixir-autogen, elixir-format -msgctxt "terms" -msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by <a href=\"https://framasoft.org\">Framasoft</a>, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." -msgstr "" - #: lib/web/templates/api/terms.html.heex:105 #, elixir-autogen, elixir-format msgctxt "terms" @@ -1726,7 +1720,7 @@ msgstr "" #: lib/web/templates/email/pending_participation_notification.html.heex:47 #: lib/web/templates/email/pending_participation_notification.text.eex:4 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one pending attendance request to process for the following event:" msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" msgstr[0] "" @@ -2122,3 +2116,9 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Well done!" msgstr "" + +#: lib/web/templates/api/terms.html.heex:55 +#, elixir-autogen, elixir-format, fuzzy +msgctxt "terms" +msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." +msgstr "" diff --git a/priv/gettext/oc/LC_MESSAGES/errors.po b/priv/gettext/oc/LC_MESSAGES/errors.po index 86e10f9d7..507209e58 100644 --- a/priv/gettext/oc/LC_MESSAGES/errors.po +++ b/priv/gettext/oc/LC_MESSAGES/errors.po @@ -184,13 +184,13 @@ msgstr "Las inscripciones sèn pas obèrtas" msgid "The current password is invalid" msgstr "Lo mòt de santa clara actuau es invalid" -#: lib/graphql/resolvers/admin.ex:334 +#: lib/graphql/resolvers/admin.ex:335 #: lib/graphql/resolvers/user.ex:527 #, elixir-autogen, elixir-format msgid "The new email doesn't seem to be valid" msgstr "Lo email nau sèm invalid" -#: lib/graphql/resolvers/admin.ex:323 +#: lib/graphql/resolvers/admin.ex:324 #: lib/graphql/resolvers/user.ex:514 #, elixir-autogen, elixir-format msgid "The new email must be different" @@ -627,7 +627,7 @@ msgstr "" msgid "You don't have permission to delete this token" msgstr "" -#: lib/graphql/resolvers/admin.ex:56 +#: lib/graphql/resolvers/admin.ex:57 #, elixir-autogen, elixir-format msgid "You need to be logged-in and a moderator to list action logs" msgstr "" @@ -647,17 +647,17 @@ msgstr "" msgid "You need to be logged-in and a moderator to view a report" msgstr "" -#: lib/graphql/resolvers/admin.ex:258 +#: lib/graphql/resolvers/admin.ex:259 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" -#: lib/graphql/resolvers/admin.ex:242 +#: lib/graphql/resolvers/admin.ex:243 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" -#: lib/graphql/resolvers/admin.ex:283 +#: lib/graphql/resolvers/admin.ex:284 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" @@ -944,7 +944,7 @@ msgstr "" msgid "Failed to update the group" msgstr "" -#: lib/graphql/resolvers/admin.ex:357 +#: lib/graphql/resolvers/admin.ex:358 #: lib/graphql/resolvers/user.ex:547 #, elixir-autogen, elixir-format msgid "Failed to update user email" @@ -1075,22 +1075,22 @@ msgstr "" msgid "Your email seems to be using an invalid format" msgstr "" -#: lib/graphql/resolvers/admin.ex:399 +#: lib/graphql/resolvers/admin.ex:400 #, elixir-autogen, elixir-format msgid "Can't confirm an already confirmed user" msgstr "" -#: lib/graphql/resolvers/admin.ex:403 +#: lib/graphql/resolvers/admin.ex:404 #, elixir-autogen, elixir-format msgid "Deconfirming users is not supported" msgstr "" -#: lib/graphql/resolvers/admin.ex:375 +#: lib/graphql/resolvers/admin.ex:376 #, elixir-autogen, elixir-format, fuzzy msgid "The new role must be different" msgstr "Lo email nau deb esser different" -#: lib/graphql/resolvers/admin.ex:314 +#: lib/graphql/resolvers/admin.ex:315 #, elixir-autogen, elixir-format, fuzzy msgid "You need to be logged-in and an administrator to edit an user's details" msgstr "" @@ -1100,7 +1100,7 @@ msgstr "" msgid "A profile or group with that name already exists" msgstr "" -#: lib/graphql/resolvers/admin.ex:542 +#: lib/graphql/resolvers/admin.ex:560 #, elixir-autogen, elixir-format msgid "Unable to find an instance to follow at this address" msgstr "" @@ -1362,7 +1362,7 @@ msgstr "" msgid "The same push subscription has already been registered" msgstr "" -#: lib/graphql/resolvers/admin.ex:536 +#: lib/graphql/resolvers/admin.ex:554 #, elixir-autogen, elixir-format msgid "This instance is pending follow approval" msgstr "" @@ -1372,7 +1372,7 @@ msgstr "" msgid "Timezone ID %{timezone} is invalid" msgstr "" -#: lib/graphql/resolvers/admin.ex:539 +#: lib/graphql/resolvers/admin.ex:557 #, elixir-autogen, elixir-format, fuzzy msgid "You are already following this instance" msgstr "" @@ -1392,12 +1392,12 @@ msgstr "" msgid "The token you provided is invalid. Make sure that the URL is exactly the one provided inside the email you got." msgstr "" -#: lib/graphql/resolvers/conversation.ex:161 +#: lib/graphql/resolvers/conversation.ex:164 #, elixir-autogen, elixir-format msgid "Conversation needs to mention at least one participant that's not yourself" msgstr "" -#: lib/graphql/resolvers/participant.ex:396 +#: lib/graphql/resolvers/participant.ex:401 #, elixir-autogen, elixir-format msgid "There are no participants matching the audience you've selected." msgstr "" diff --git a/priv/gettext/pl/LC_MESSAGES/activity.po b/priv/gettext/pl/LC_MESSAGES/activity.po index be2681a2c..3eed5c541 100644 --- a/priv/gettext/pl/LC_MESSAGES/activity.po +++ b/priv/gettext/pl/LC_MESSAGES/activity.po @@ -229,7 +229,7 @@ msgstr "" #: lib/web/templates/email/email_direct_activity.html.heex:230 #: lib/web/templates/email/email_direct_activity.text.eex:23 -#, elixir-format +#, elixir-format, elixir-autogen msgid "View one more activity" msgid_plural "View %{count} more activities" msgstr[0] "Zobacz jeszcze jedną aktywność" @@ -240,7 +240,7 @@ msgstr[2] "Zobacz jeszcze %{count} aktywności" #: lib/web/templates/email/email_direct_activity.html.heex:60 #: lib/web/templates/email/email_direct_activity.text.eex:6 #: lib/web/templates/email/email_direct_activity.text.eex:7 -#, elixir-format +#, elixir-format, elixir-autogen msgid "There has been an activity!" msgid_plural "There has been some activity!" msgstr[0] "Wystąpiła aktywność!" diff --git a/priv/gettext/pl/LC_MESSAGES/default.po b/priv/gettext/pl/LC_MESSAGES/default.po index 69bc7059a..e44df87a6 100644 --- a/priv/gettext/pl/LC_MESSAGES/default.po +++ b/priv/gettext/pl/LC_MESSAGES/default.po @@ -359,7 +359,7 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon na %{instance}: zmieniono e-mail" #: lib/web/email/notification.ex:52 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "Jedno wydarzenie zaplanowane na dzisiaj" @@ -368,7 +368,7 @@ msgstr[2] "%{nv_events} wydareń zaplanowanych na dzisiaj" #: lib/web/templates/email/on_day_notification.html.heex:47 #: lib/web/templates/email/on_day_notification.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "Masz dzisiaj jedno wydarzenie:" @@ -420,7 +420,7 @@ msgid "You have been invited by %{inviter} to join group %{group}" msgstr "Dostałeś(-aś) zaproszenie od %{inviter}, aby dołączyć do grupy %{group}" #: lib/web/email/notification.ex:81 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "Jedno wydarzenie zaplanowane na ten tydzień" @@ -428,7 +428,7 @@ msgstr[1] "%{nb_events} wydarzenia zaplanowane na ten tydzień" msgstr[2] "%{nb_events} wydarzeń zaplanowanych na ten tydzień" #: lib/web/email/notification.ex:107 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "Jedno zgłoszenie uczestnictwa dla wydarzenia %{title} do zatwierdzenia" @@ -441,7 +441,7 @@ msgstr[2] "" #: lib/web/templates/email/notification_each_week.html.heex:47 #: lib/web/templates/email/notification_each_week.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "Masz w tym tygodniu jedno wydarzenie:" @@ -947,7 +947,7 @@ msgstr "Nie używaj go do żadnych rzeczywistych zastosowań." #: lib/web/templates/email/notification_each_week.text.eex:11 #: lib/web/templates/email/on_day_notification.html.heex:89 #: lib/web/templates/email/on_day_notification.text.eex:11 -#, elixir-format +#, elixir-format, elixir-autogen msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "" @@ -1289,7 +1289,7 @@ msgstr "" "Zespół moderatorów(-ek) Twojej instancji zdecydował się zawiesić " "%{nazwa_grupy} (%{adres_grupy}). Nie należysz już do tej grupy." -#: lib/web/email/group.ex:108 +#: lib/web/email/group.ex:106 #, elixir-autogen, elixir-format msgid "The group %{group} has been suspended on %{instance}" msgstr "Grupa %{group} została zawieszona na %{instance}" @@ -1419,21 +1419,6 @@ msgstr "" "momencie. Na przykład, możemy być zmuszeni do zmiany niniejszych Warunków, " "jeśli wprowadzimy nową funkcję." -#: lib/web/templates/api/terms.html.heex:55 -#, elixir-autogen, elixir-format -msgctxt "terms" -msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by <a href=\"https://framasoft.org\">Framasoft</a>, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." -msgstr "" -"Kiedy mówimy „my”, „nasz” lub „nas” w tym dokumencie, mamy na myśli " -"właścicieli(-ki), operatorów(-ki) i administratorów(-ki) tej instancji " -"Mobilizon. Oprogramowanie Mobilizon jest dostarczane przez zespół " -"współpracowników(-czek) Mobilizon, wspieranych przez <a href=\"https" -"://framasoft.org\">Framasoft</a>, francuską organizację non-profit " -"działającą na rzecz darmowego/wolnego oprogramowania. O ile wyraźnie nie " -"zaznaczono, ta instancja Mobilizon jest niezależną usługą korzystającą z " -"kodu źródłowego Mobilizon. Więcej informacji o tej instancji można znaleźć " -"na stronie <a href=\"/about/instance\">„Informacje o tej instancji”</a>." - #: lib/web/templates/api/terms.html.heex:105 #, elixir-autogen, elixir-format msgctxt "terms" @@ -1969,7 +1954,7 @@ msgstr "" #: lib/web/templates/email/pending_participation_notification.html.heex:47 #: lib/web/templates/email/pending_participation_notification.text.eex:4 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one pending attendance request to process for the following event:" msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" msgstr[0] "Masz jedną prośbę o zatwierdzenie uczestnictwa do przejrzenia:" @@ -2412,3 +2397,18 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Well done!" msgstr "" + +#: lib/web/templates/api/terms.html.heex:55 +#, elixir-autogen, elixir-format, fuzzy +msgctxt "terms" +msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." +msgstr "" +"Kiedy mówimy „my”, „nasz” lub „nas” w tym dokumencie, mamy na myśli " +"właścicieli(-ki), operatorów(-ki) i administratorów(-ki) tej instancji " +"Mobilizon. Oprogramowanie Mobilizon jest dostarczane przez zespół " +"współpracowników(-czek) Mobilizon, wspieranych przez <a href=\"https" +"://framasoft.org\">Framasoft</a>, francuską organizację non-profit " +"działającą na rzecz darmowego/wolnego oprogramowania. O ile wyraźnie nie " +"zaznaczono, ta instancja Mobilizon jest niezależną usługą korzystającą z " +"kodu źródłowego Mobilizon. Więcej informacji o tej instancji można znaleźć " +"na stronie <a href=\"/about/instance\">„Informacje o tej instancji”</a>." diff --git a/priv/gettext/pl/LC_MESSAGES/errors.po b/priv/gettext/pl/LC_MESSAGES/errors.po index 3764693eb..8fa3a74bc 100644 --- a/priv/gettext/pl/LC_MESSAGES/errors.po +++ b/priv/gettext/pl/LC_MESSAGES/errors.po @@ -192,13 +192,13 @@ msgstr "Rejestracje nie są otwarte" msgid "The current password is invalid" msgstr "Obecne hasło jest nieprawidłowe" -#: lib/graphql/resolvers/admin.ex:334 +#: lib/graphql/resolvers/admin.ex:335 #: lib/graphql/resolvers/user.ex:527 #, elixir-autogen, elixir-format msgid "The new email doesn't seem to be valid" msgstr "Nowy adres e-mail nie wydaje się być prawidłowy" -#: lib/graphql/resolvers/admin.ex:323 +#: lib/graphql/resolvers/admin.ex:324 #: lib/graphql/resolvers/user.ex:514 #, elixir-autogen, elixir-format msgid "The new email must be different" @@ -641,7 +641,7 @@ msgstr "Nie możesz zaprosić do tej grupy" msgid "You don't have permission to delete this token" msgstr "Nie masz uprawnień do usunięcia tego tokenu" -#: lib/graphql/resolvers/admin.ex:56 +#: lib/graphql/resolvers/admin.ex:57 #, elixir-autogen, elixir-format msgid "You need to be logged-in and a moderator to list action logs" msgstr "" @@ -666,21 +666,21 @@ msgstr "" msgid "You need to be logged-in and a moderator to view a report" msgstr "Musisz być zalogowanym(-ą) moderatorem(-ką), aby wyświetlić zgłoszenie" -#: lib/graphql/resolvers/admin.ex:258 +#: lib/graphql/resolvers/admin.ex:259 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" "Musisz być zalogowanym(-ą) administratorem(-ką), aby uzyskać dostęp do " "ustawień administratora(-ki)" -#: lib/graphql/resolvers/admin.ex:242 +#: lib/graphql/resolvers/admin.ex:243 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" "Musisz być zalogowanym(-ą) administratorem(-ką), aby uzyskać dostęp do " "statystyk w panelu" -#: lib/graphql/resolvers/admin.ex:283 +#: lib/graphql/resolvers/admin.ex:284 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" @@ -977,7 +977,7 @@ msgstr "Nie udało się opuścić wydarzenia" msgid "Failed to update the group" msgstr "Nie udało się zaktualizować grupy" -#: lib/graphql/resolvers/admin.ex:357 +#: lib/graphql/resolvers/admin.ex:358 #: lib/graphql/resolvers/user.ex:547 #, elixir-autogen, elixir-format msgid "Failed to update user email" @@ -1108,22 +1108,22 @@ msgstr "Musisz być zalogowany(-a), aby usunąć członka" msgid "Your email seems to be using an invalid format" msgstr "Wiadomość e-mail ma nieprawidłowy format" -#: lib/graphql/resolvers/admin.ex:399 +#: lib/graphql/resolvers/admin.ex:400 #, elixir-autogen, elixir-format msgid "Can't confirm an already confirmed user" msgstr "Nie można potwierdzić już potwierdzonego(-ej) użytkownika(-czki)" -#: lib/graphql/resolvers/admin.ex:403 +#: lib/graphql/resolvers/admin.ex:404 #, elixir-autogen, elixir-format msgid "Deconfirming users is not supported" msgstr "Cofanie potwierdzenia nie jest obsługiwane" -#: lib/graphql/resolvers/admin.ex:375 +#: lib/graphql/resolvers/admin.ex:376 #, elixir-autogen, elixir-format msgid "The new role must be different" msgstr "Nowa rola musi być inna" -#: lib/graphql/resolvers/admin.ex:314 +#: lib/graphql/resolvers/admin.ex:315 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to edit an user's details" msgstr "" @@ -1135,7 +1135,7 @@ msgstr "" msgid "A profile or group with that name already exists" msgstr "Profil lub grupa o tej nazwie już istnieje" -#: lib/graphql/resolvers/admin.ex:542 +#: lib/graphql/resolvers/admin.ex:560 #, elixir-autogen, elixir-format msgid "Unable to find an instance to follow at this address" msgstr "Nie można znaleźć instancji do obserwacji pod tym adresem" @@ -1418,7 +1418,7 @@ msgstr "Zapewnienie zewnętrznej rejestracji nie jest dozwolone" msgid "The same push subscription has already been registered" msgstr "Ta sama subskrypcja push została już zarejestrowana" -#: lib/graphql/resolvers/admin.ex:536 +#: lib/graphql/resolvers/admin.ex:554 #, elixir-autogen, elixir-format msgid "This instance is pending follow approval" msgstr "Ta instancja oczekuje na zatwierdzenie obserwacji" @@ -1428,7 +1428,7 @@ msgstr "Ta instancja oczekuje na zatwierdzenie obserwacji" msgid "Timezone ID %{timezone} is invalid" msgstr "Identyfikator strefy czasowej %{timezone} jest nieprawidłowy" -#: lib/graphql/resolvers/admin.ex:539 +#: lib/graphql/resolvers/admin.ex:557 #, elixir-autogen, elixir-format msgid "You are already following this instance" msgstr "Obserwujesz już tę instancję" @@ -1454,12 +1454,12 @@ msgstr "" "Podany token jest nieprawidłowy. Upewnij się, że adres URL jest dokładnie " "taki sam, jak podany w otrzymanej wiadomości e-mail." -#: lib/graphql/resolvers/conversation.ex:161 +#: lib/graphql/resolvers/conversation.ex:164 #, elixir-autogen, elixir-format msgid "Conversation needs to mention at least one participant that's not yourself" msgstr "" -#: lib/graphql/resolvers/participant.ex:396 +#: lib/graphql/resolvers/participant.ex:401 #, elixir-autogen, elixir-format msgid "There are no participants matching the audience you've selected." msgstr "" diff --git a/priv/gettext/pt/LC_MESSAGES/activity.po b/priv/gettext/pt/LC_MESSAGES/activity.po index 2a5434361..aaf414b4a 100644 --- a/priv/gettext/pt/LC_MESSAGES/activity.po +++ b/priv/gettext/pt/LC_MESSAGES/activity.po @@ -215,7 +215,7 @@ msgstr "" #: lib/web/templates/email/email_direct_activity.html.heex:230 #: lib/web/templates/email/email_direct_activity.text.eex:23 -#, elixir-format +#, elixir-format, elixir-autogen msgid "View one more activity" msgid_plural "View %{count} more activities" msgstr[0] "" @@ -225,7 +225,7 @@ msgstr[1] "" #: lib/web/templates/email/email_direct_activity.html.heex:60 #: lib/web/templates/email/email_direct_activity.text.eex:6 #: lib/web/templates/email/email_direct_activity.text.eex:7 -#, elixir-format +#, elixir-format, elixir-autogen msgid "There has been an activity!" msgid_plural "There has been some activity!" msgstr[0] "" diff --git a/priv/gettext/pt/LC_MESSAGES/default.po b/priv/gettext/pt/LC_MESSAGES/default.po index 47319fc74..e038ad6ec 100644 --- a/priv/gettext/pt/LC_MESSAGES/default.po +++ b/priv/gettext/pt/LC_MESSAGES/default.po @@ -315,7 +315,7 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "" #: lib/web/email/notification.ex:52 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "" @@ -323,7 +323,7 @@ msgstr[1] "" #: lib/web/templates/email/on_day_notification.html.heex:47 #: lib/web/templates/email/on_day_notification.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "" @@ -373,14 +373,14 @@ msgid "You have been invited by %{inviter} to join group %{group}" msgstr "" #: lib/web/email/notification.ex:81 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "" msgstr[1] "" #: lib/web/email/notification.ex:107 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "" @@ -388,7 +388,7 @@ msgstr[1] "" #: lib/web/templates/email/notification_each_week.html.heex:47 #: lib/web/templates/email/notification_each_week.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "" @@ -754,7 +754,7 @@ msgstr "" #: lib/web/templates/email/notification_each_week.text.eex:11 #: lib/web/templates/email/on_day_notification.html.heex:89 #: lib/web/templates/email/on_day_notification.text.eex:11 -#, elixir-format +#, elixir-format, elixir-autogen msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "" @@ -1050,7 +1050,7 @@ msgstr "" msgid "Your instance's moderation team has decided to suspend %{group_name} (%{group_address}). You are no longer a member of this group." msgstr "" -#: lib/web/email/group.ex:108 +#: lib/web/email/group.ex:106 #, elixir-autogen, elixir-format msgid "The group %{group} has been suspended on %{instance}" msgstr "" @@ -1134,12 +1134,6 @@ msgctxt "terms" msgid "We reserve the right to modify these Terms at any time. For instance, we may need to change these Terms if we come out with a new feature." msgstr "" -#: lib/web/templates/api/terms.html.heex:55 -#, elixir-autogen, elixir-format -msgctxt "terms" -msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by <a href=\"https://framasoft.org\">Framasoft</a>, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." -msgstr "" - #: lib/web/templates/api/terms.html.heex:105 #, elixir-autogen, elixir-format msgctxt "terms" @@ -1624,7 +1618,7 @@ msgstr "" #: lib/web/templates/email/pending_participation_notification.html.heex:47 #: lib/web/templates/email/pending_participation_notification.text.eex:4 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one pending attendance request to process for the following event:" msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" msgstr[0] "" @@ -2018,3 +2012,9 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Well done!" msgstr "" + +#: lib/web/templates/api/terms.html.heex:55 +#, elixir-autogen, elixir-format, fuzzy +msgctxt "terms" +msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." +msgstr "" diff --git a/priv/gettext/pt/LC_MESSAGES/errors.po b/priv/gettext/pt/LC_MESSAGES/errors.po index 8bb1a2c30..aa03789ab 100644 --- a/priv/gettext/pt/LC_MESSAGES/errors.po +++ b/priv/gettext/pt/LC_MESSAGES/errors.po @@ -175,13 +175,13 @@ msgstr "" msgid "The current password is invalid" msgstr "" -#: lib/graphql/resolvers/admin.ex:334 +#: lib/graphql/resolvers/admin.ex:335 #: lib/graphql/resolvers/user.ex:527 #, elixir-autogen, elixir-format msgid "The new email doesn't seem to be valid" msgstr "" -#: lib/graphql/resolvers/admin.ex:323 +#: lib/graphql/resolvers/admin.ex:324 #: lib/graphql/resolvers/user.ex:514 #, elixir-autogen, elixir-format msgid "The new email must be different" @@ -615,7 +615,7 @@ msgstr "" msgid "You don't have permission to delete this token" msgstr "" -#: lib/graphql/resolvers/admin.ex:56 +#: lib/graphql/resolvers/admin.ex:57 #, elixir-autogen, elixir-format msgid "You need to be logged-in and a moderator to list action logs" msgstr "" @@ -635,17 +635,17 @@ msgstr "" msgid "You need to be logged-in and a moderator to view a report" msgstr "" -#: lib/graphql/resolvers/admin.ex:258 +#: lib/graphql/resolvers/admin.ex:259 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" -#: lib/graphql/resolvers/admin.ex:242 +#: lib/graphql/resolvers/admin.ex:243 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" -#: lib/graphql/resolvers/admin.ex:283 +#: lib/graphql/resolvers/admin.ex:284 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" @@ -932,7 +932,7 @@ msgstr "" msgid "Failed to update the group" msgstr "" -#: lib/graphql/resolvers/admin.ex:357 +#: lib/graphql/resolvers/admin.ex:358 #: lib/graphql/resolvers/user.ex:547 #, elixir-autogen, elixir-format msgid "Failed to update user email" @@ -1063,22 +1063,22 @@ msgstr "" msgid "Your email seems to be using an invalid format" msgstr "" -#: lib/graphql/resolvers/admin.ex:399 +#: lib/graphql/resolvers/admin.ex:400 #, elixir-autogen, elixir-format msgid "Can't confirm an already confirmed user" msgstr "" -#: lib/graphql/resolvers/admin.ex:403 +#: lib/graphql/resolvers/admin.ex:404 #, elixir-autogen, elixir-format msgid "Deconfirming users is not supported" msgstr "" -#: lib/graphql/resolvers/admin.ex:375 +#: lib/graphql/resolvers/admin.ex:376 #, elixir-autogen, elixir-format, fuzzy msgid "The new role must be different" msgstr "" -#: lib/graphql/resolvers/admin.ex:314 +#: lib/graphql/resolvers/admin.ex:315 #, elixir-autogen, elixir-format, fuzzy msgid "You need to be logged-in and an administrator to edit an user's details" msgstr "" @@ -1088,7 +1088,7 @@ msgstr "" msgid "A profile or group with that name already exists" msgstr "" -#: lib/graphql/resolvers/admin.ex:542 +#: lib/graphql/resolvers/admin.ex:560 #, elixir-autogen, elixir-format msgid "Unable to find an instance to follow at this address" msgstr "" @@ -1350,7 +1350,7 @@ msgstr "" msgid "The same push subscription has already been registered" msgstr "" -#: lib/graphql/resolvers/admin.ex:536 +#: lib/graphql/resolvers/admin.ex:554 #, elixir-autogen, elixir-format msgid "This instance is pending follow approval" msgstr "" @@ -1360,7 +1360,7 @@ msgstr "" msgid "Timezone ID %{timezone} is invalid" msgstr "" -#: lib/graphql/resolvers/admin.ex:539 +#: lib/graphql/resolvers/admin.ex:557 #, elixir-autogen, elixir-format, fuzzy msgid "You are already following this instance" msgstr "" @@ -1380,12 +1380,12 @@ msgstr "" msgid "The token you provided is invalid. Make sure that the URL is exactly the one provided inside the email you got." msgstr "" -#: lib/graphql/resolvers/conversation.ex:161 +#: lib/graphql/resolvers/conversation.ex:164 #, elixir-autogen, elixir-format msgid "Conversation needs to mention at least one participant that's not yourself" msgstr "" -#: lib/graphql/resolvers/participant.ex:396 +#: lib/graphql/resolvers/participant.ex:401 #, elixir-autogen, elixir-format msgid "There are no participants matching the audience you've selected." msgstr "" diff --git a/priv/gettext/pt_BR/LC_MESSAGES/activity.po b/priv/gettext/pt_BR/LC_MESSAGES/activity.po index 2410ddbe9..2c6b58c1d 100644 --- a/priv/gettext/pt_BR/LC_MESSAGES/activity.po +++ b/priv/gettext/pt_BR/LC_MESSAGES/activity.po @@ -226,7 +226,7 @@ msgstr "" #: lib/web/templates/email/email_direct_activity.html.heex:230 #: lib/web/templates/email/email_direct_activity.text.eex:23 -#, elixir-format +#, elixir-format, elixir-autogen msgid "View one more activity" msgid_plural "View %{count} more activities" msgstr[0] "Ver mais uma atividade" @@ -236,7 +236,7 @@ msgstr[1] "Ver mais %{count} atividades" #: lib/web/templates/email/email_direct_activity.html.heex:60 #: lib/web/templates/email/email_direct_activity.text.eex:6 #: lib/web/templates/email/email_direct_activity.text.eex:7 -#, elixir-format +#, elixir-format, elixir-autogen msgid "There has been an activity!" msgid_plural "There has been some activity!" msgstr[0] "Houve uma atividade!" diff --git a/priv/gettext/pt_BR/LC_MESSAGES/default.po b/priv/gettext/pt_BR/LC_MESSAGES/default.po index efeb001bb..41e3d1dac 100644 --- a/priv/gettext/pt_BR/LC_MESSAGES/default.po +++ b/priv/gettext/pt_BR/LC_MESSAGES/default.po @@ -360,7 +360,7 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon da instância %{instance}: email alterado" #: lib/web/email/notification.ex:52 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "Um evento planejado para hoje" @@ -368,7 +368,7 @@ msgstr[1] "%{nb_events} eventos planejadospara hoje" #: lib/web/templates/email/on_day_notification.html.heex:47 #: lib/web/templates/email/on_day_notification.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "Você tem um evento hoje:" @@ -419,14 +419,14 @@ msgid "You have been invited by %{inviter} to join group %{group}" msgstr "Você foi convidado por %{inviter} para ingressar no grupo %{group}" #: lib/web/email/notification.ex:81 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "Um evento planejado esta semana" msgstr[1] "%{nb_events} eventos planejados esta semana" #: lib/web/email/notification.ex:107 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "" @@ -434,7 +434,7 @@ msgstr[1] "" #: lib/web/templates/email/notification_each_week.html.heex:47 #: lib/web/templates/email/notification_each_week.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "Você tem um evento esta semana:" @@ -825,7 +825,7 @@ msgstr "Por favor não utilize este serviço em nenhum caso real" #: lib/web/templates/email/notification_each_week.text.eex:11 #: lib/web/templates/email/on_day_notification.html.heex:89 #: lib/web/templates/email/on_day_notification.text.eex:11 -#, elixir-format +#, elixir-format, elixir-autogen msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "" @@ -1127,7 +1127,7 @@ msgstr "" msgid "Your instance's moderation team has decided to suspend %{group_name} (%{group_address}). You are no longer a member of this group." msgstr "" -#: lib/web/email/group.ex:108 +#: lib/web/email/group.ex:106 #, elixir-autogen, elixir-format msgid "The group %{group} has been suspended on %{instance}" msgstr "" @@ -1237,12 +1237,6 @@ msgctxt "terms" msgid "We reserve the right to modify these Terms at any time. For instance, we may need to change these Terms if we come out with a new feature." msgstr "" -#: lib/web/templates/api/terms.html.heex:55 -#, elixir-autogen, elixir-format -msgctxt "terms" -msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by <a href=\"https://framasoft.org\">Framasoft</a>, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." -msgstr "" - #: lib/web/templates/api/terms.html.heex:105 #, elixir-autogen, elixir-format msgctxt "terms" @@ -1736,7 +1730,7 @@ msgstr "" #: lib/web/templates/email/pending_participation_notification.html.heex:47 #: lib/web/templates/email/pending_participation_notification.text.eex:4 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one pending attendance request to process for the following event:" msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" msgstr[0] "" @@ -2130,3 +2124,9 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Well done!" msgstr "" + +#: lib/web/templates/api/terms.html.heex:55 +#, elixir-autogen, elixir-format, fuzzy +msgctxt "terms" +msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." +msgstr "" diff --git a/priv/gettext/pt_BR/LC_MESSAGES/errors.po b/priv/gettext/pt_BR/LC_MESSAGES/errors.po index 7d34adb20..42d738551 100644 --- a/priv/gettext/pt_BR/LC_MESSAGES/errors.po +++ b/priv/gettext/pt_BR/LC_MESSAGES/errors.po @@ -182,13 +182,13 @@ msgstr "" msgid "The current password is invalid" msgstr "" -#: lib/graphql/resolvers/admin.ex:334 +#: lib/graphql/resolvers/admin.ex:335 #: lib/graphql/resolvers/user.ex:527 #, elixir-autogen, elixir-format msgid "The new email doesn't seem to be valid" msgstr "" -#: lib/graphql/resolvers/admin.ex:323 +#: lib/graphql/resolvers/admin.ex:324 #: lib/graphql/resolvers/user.ex:514 #, elixir-autogen, elixir-format msgid "The new email must be different" @@ -622,7 +622,7 @@ msgstr "" msgid "You don't have permission to delete this token" msgstr "" -#: lib/graphql/resolvers/admin.ex:56 +#: lib/graphql/resolvers/admin.ex:57 #, elixir-autogen, elixir-format msgid "You need to be logged-in and a moderator to list action logs" msgstr "" @@ -642,17 +642,17 @@ msgstr "" msgid "You need to be logged-in and a moderator to view a report" msgstr "" -#: lib/graphql/resolvers/admin.ex:258 +#: lib/graphql/resolvers/admin.ex:259 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" -#: lib/graphql/resolvers/admin.ex:242 +#: lib/graphql/resolvers/admin.ex:243 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" -#: lib/graphql/resolvers/admin.ex:283 +#: lib/graphql/resolvers/admin.ex:284 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" @@ -939,7 +939,7 @@ msgstr "" msgid "Failed to update the group" msgstr "" -#: lib/graphql/resolvers/admin.ex:357 +#: lib/graphql/resolvers/admin.ex:358 #: lib/graphql/resolvers/user.ex:547 #, elixir-autogen, elixir-format msgid "Failed to update user email" @@ -1070,22 +1070,22 @@ msgstr "" msgid "Your email seems to be using an invalid format" msgstr "" -#: lib/graphql/resolvers/admin.ex:399 +#: lib/graphql/resolvers/admin.ex:400 #, elixir-autogen, elixir-format msgid "Can't confirm an already confirmed user" msgstr "" -#: lib/graphql/resolvers/admin.ex:403 +#: lib/graphql/resolvers/admin.ex:404 #, elixir-autogen, elixir-format msgid "Deconfirming users is not supported" msgstr "" -#: lib/graphql/resolvers/admin.ex:375 +#: lib/graphql/resolvers/admin.ex:376 #, elixir-autogen, elixir-format, fuzzy msgid "The new role must be different" msgstr "" -#: lib/graphql/resolvers/admin.ex:314 +#: lib/graphql/resolvers/admin.ex:315 #, elixir-autogen, elixir-format, fuzzy msgid "You need to be logged-in and an administrator to edit an user's details" msgstr "" @@ -1095,7 +1095,7 @@ msgstr "" msgid "A profile or group with that name already exists" msgstr "" -#: lib/graphql/resolvers/admin.ex:542 +#: lib/graphql/resolvers/admin.ex:560 #, elixir-autogen, elixir-format msgid "Unable to find an instance to follow at this address" msgstr "" @@ -1357,7 +1357,7 @@ msgstr "" msgid "The same push subscription has already been registered" msgstr "" -#: lib/graphql/resolvers/admin.ex:536 +#: lib/graphql/resolvers/admin.ex:554 #, elixir-autogen, elixir-format msgid "This instance is pending follow approval" msgstr "" @@ -1367,7 +1367,7 @@ msgstr "" msgid "Timezone ID %{timezone} is invalid" msgstr "" -#: lib/graphql/resolvers/admin.ex:539 +#: lib/graphql/resolvers/admin.ex:557 #, elixir-autogen, elixir-format, fuzzy msgid "You are already following this instance" msgstr "" @@ -1387,12 +1387,12 @@ msgstr "" msgid "The token you provided is invalid. Make sure that the URL is exactly the one provided inside the email you got." msgstr "" -#: lib/graphql/resolvers/conversation.ex:161 +#: lib/graphql/resolvers/conversation.ex:164 #, elixir-autogen, elixir-format msgid "Conversation needs to mention at least one participant that's not yourself" msgstr "" -#: lib/graphql/resolvers/participant.ex:396 +#: lib/graphql/resolvers/participant.ex:401 #, elixir-autogen, elixir-format msgid "There are no participants matching the audience you've selected." msgstr "" diff --git a/priv/gettext/ru/LC_MESSAGES/activity.po b/priv/gettext/ru/LC_MESSAGES/activity.po index e417614f2..e0ff73f29 100644 --- a/priv/gettext/ru/LC_MESSAGES/activity.po +++ b/priv/gettext/ru/LC_MESSAGES/activity.po @@ -225,7 +225,7 @@ msgstr "" #: lib/web/templates/email/email_direct_activity.html.heex:230 #: lib/web/templates/email/email_direct_activity.text.eex:23 -#, elixir-format +#, elixir-format, elixir-autogen msgid "View one more activity" msgid_plural "View %{count} more activities" msgstr[0] "Посмотреть еще одно событие" @@ -236,7 +236,7 @@ msgstr[2] "Посмотреть еще %{count} событий" #: lib/web/templates/email/email_direct_activity.html.heex:60 #: lib/web/templates/email/email_direct_activity.text.eex:6 #: lib/web/templates/email/email_direct_activity.text.eex:7 -#, elixir-format +#, elixir-format, elixir-autogen msgid "There has been an activity!" msgid_plural "There has been some activity!" msgstr[0] "Было событие!" diff --git a/priv/gettext/ru/LC_MESSAGES/default.po b/priv/gettext/ru/LC_MESSAGES/default.po index 8a78c61af..648b02891 100644 --- a/priv/gettext/ru/LC_MESSAGES/default.po +++ b/priv/gettext/ru/LC_MESSAGES/default.po @@ -359,7 +359,7 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon на %{instance}: адрес электронной почты изменен" #: lib/web/email/notification.ex:52 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "Сегодня запланировано одно мероприятие" @@ -368,7 +368,7 @@ msgstr[2] "Сегодня запланировано %{nb_events} меропри #: lib/web/templates/email/on_day_notification.html.heex:47 #: lib/web/templates/email/on_day_notification.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "У вас сегодня одно мероприятие:" @@ -419,7 +419,7 @@ msgid "You have been invited by %{inviter} to join group %{group}" msgstr "%{Inviter} пригласил вас присоединиться к группе %{group}" #: lib/web/email/notification.ex:81 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "На этой неделе запланировано одно мероприятие" @@ -427,7 +427,7 @@ msgstr[1] "На этой неделе запланировано %{nb_events} м msgstr[2] "На этой неделе запланировано %{nb_events} мероприятий" #: lib/web/email/notification.ex:107 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "Одна заявка на участие в мероприятии %{title} ожидает одобрения" @@ -440,7 +440,7 @@ msgstr[2] "" #: lib/web/templates/email/notification_each_week.html.heex:47 #: lib/web/templates/email/notification_each_week.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "У вас одно мероприятие на этой неделе:" @@ -937,7 +937,7 @@ msgstr "Пожалуйста, используйте это только для #: lib/web/templates/email/notification_each_week.text.eex:11 #: lib/web/templates/email/on_day_notification.html.heex:89 #: lib/web/templates/email/on_day_notification.text.eex:11 -#, elixir-format +#, elixir-format, elixir-autogen msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "" @@ -1282,7 +1282,7 @@ msgstr "" "%{group_name} (%{group_address}). Вы больше не являетесь участником этой " "группы." -#: lib/web/email/group.ex:108 +#: lib/web/email/group.ex:106 #, elixir-autogen, elixir-format msgid "The group %{group} has been suspended on %{instance}" msgstr "Группа %{group} заблокирована на %{instance}" @@ -1408,20 +1408,6 @@ msgstr "" "Мы оставляем за собой право изменять эти Условия в любое время. Например, " "нам может потребоваться сделать это при добавлении новой функции." -#: lib/web/templates/api/terms.html.heex:55 -#, elixir-autogen, elixir-format -msgctxt "terms" -msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by <a href=\"https://framasoft.org\">Framasoft</a>, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." -msgstr "" -"Когда мы говорим «мы», «наш» или «нас» в этом документе, то имеем в виду " -"владельцев, операторов и администраторов данного узла Mobilizon. Программное " -"обеспечение Mobilizon предоставляется командой разработчиков Mobilizon при " -"поддержке <a href=\"https://framasoft.org\">Framasoft</a>, французской " -"некоммерческой организации, выступающей за Открытое / Свободное ПО. Если " -"явно не указано иное, этот узел Mobilizon является независимой службой, " -"использующей исходный код Mobilizon. Дополнительную информацию об этом узле " -"можно найти на странице <a href=\"/about/instance\">«Об этом узле»</a>." - #: lib/web/templates/api/terms.html.heex:105 #, elixir-autogen, elixir-format msgctxt "terms" @@ -1956,7 +1942,7 @@ msgstr "" #: lib/web/templates/email/pending_participation_notification.html.heex:47 #: lib/web/templates/email/pending_participation_notification.text.eex:4 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one pending attendance request to process for the following event:" msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" msgstr[0] "У вас есть ожидающий рассмотрения запрос на участие:" @@ -2365,3 +2351,17 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Well done!" msgstr "" + +#: lib/web/templates/api/terms.html.heex:55 +#, elixir-autogen, elixir-format, fuzzy +msgctxt "terms" +msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." +msgstr "" +"Когда мы говорим «мы», «наш» или «нас» в этом документе, то имеем в виду " +"владельцев, операторов и администраторов данного узла Mobilizon. Программное " +"обеспечение Mobilizon предоставляется командой разработчиков Mobilizon при " +"поддержке <a href=\"https://framasoft.org\">Framasoft</a>, французской " +"некоммерческой организации, выступающей за Открытое / Свободное ПО. Если " +"явно не указано иное, этот узел Mobilizon является независимой службой, " +"использующей исходный код Mobilizon. Дополнительную информацию об этом узле " +"можно найти на странице <a href=\"/about/instance\">«Об этом узле»</a>." diff --git a/priv/gettext/ru/LC_MESSAGES/errors.po b/priv/gettext/ru/LC_MESSAGES/errors.po index 1726fc443..ef3eadcea 100644 --- a/priv/gettext/ru/LC_MESSAGES/errors.po +++ b/priv/gettext/ru/LC_MESSAGES/errors.po @@ -193,13 +193,13 @@ msgstr "Регистрация не открыта" msgid "The current password is invalid" msgstr "Текущий пароль неверен" -#: lib/graphql/resolvers/admin.ex:334 +#: lib/graphql/resolvers/admin.ex:335 #: lib/graphql/resolvers/user.ex:527 #, elixir-autogen, elixir-format msgid "The new email doesn't seem to be valid" msgstr "Новый адрес электронной почты недействителен" -#: lib/graphql/resolvers/admin.ex:323 +#: lib/graphql/resolvers/admin.ex:324 #: lib/graphql/resolvers/user.ex:514 #, elixir-autogen, elixir-format msgid "The new email must be different" @@ -643,7 +643,7 @@ msgstr "Вы не можете приглашать в эту группу" msgid "You don't have permission to delete this token" msgstr "У вас нет прав на удаление этого токена" -#: lib/graphql/resolvers/admin.ex:56 +#: lib/graphql/resolvers/admin.ex:57 #, elixir-autogen, elixir-format msgid "You need to be logged-in and a moderator to list action logs" msgstr "" @@ -668,20 +668,20 @@ msgstr "" msgid "You need to be logged-in and a moderator to view a report" msgstr "Для просмотра отчёта вы должны войти в систему и иметь права модератора" -#: lib/graphql/resolvers/admin.ex:258 +#: lib/graphql/resolvers/admin.ex:259 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" "Для доступа в админку вы должны войти в систему и иметь права администратора" -#: lib/graphql/resolvers/admin.ex:242 +#: lib/graphql/resolvers/admin.ex:243 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" "Для доступа к панели со статистикой вы должны войти в систему и иметь права " "администратора" -#: lib/graphql/resolvers/admin.ex:283 +#: lib/graphql/resolvers/admin.ex:284 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" @@ -987,7 +987,7 @@ msgstr "Не удалось покинуть мероприятие" msgid "Failed to update the group" msgstr "Не удалось обновить группу" -#: lib/graphql/resolvers/admin.ex:357 +#: lib/graphql/resolvers/admin.ex:358 #: lib/graphql/resolvers/user.ex:547 #, elixir-autogen, elixir-format msgid "Failed to update user email" @@ -1118,22 +1118,22 @@ msgstr "Вы должны войти в систему, чтобы удалит msgid "Your email seems to be using an invalid format" msgstr "Ваш адрес электронной почты, , похоже, использует неправильный формат" -#: lib/graphql/resolvers/admin.ex:399 +#: lib/graphql/resolvers/admin.ex:400 #, elixir-autogen, elixir-format msgid "Can't confirm an already confirmed user" msgstr "Невозможно подтвердить уже подтвержденного пользователя" -#: lib/graphql/resolvers/admin.ex:403 +#: lib/graphql/resolvers/admin.ex:404 #, elixir-autogen, elixir-format msgid "Deconfirming users is not supported" msgstr "Отмена подтверждения пользователей не поддерживается" -#: lib/graphql/resolvers/admin.ex:375 +#: lib/graphql/resolvers/admin.ex:376 #, elixir-autogen, elixir-format msgid "The new role must be different" msgstr "Новая роль должна быть другой" -#: lib/graphql/resolvers/admin.ex:314 +#: lib/graphql/resolvers/admin.ex:315 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to edit an user's details" msgstr "" @@ -1145,7 +1145,7 @@ msgstr "" msgid "A profile or group with that name already exists" msgstr "" -#: lib/graphql/resolvers/admin.ex:542 +#: lib/graphql/resolvers/admin.ex:560 #, elixir-autogen, elixir-format msgid "Unable to find an instance to follow at this address" msgstr "" @@ -1407,7 +1407,7 @@ msgstr "" msgid "The same push subscription has already been registered" msgstr "" -#: lib/graphql/resolvers/admin.ex:536 +#: lib/graphql/resolvers/admin.ex:554 #, elixir-autogen, elixir-format msgid "This instance is pending follow approval" msgstr "" @@ -1417,7 +1417,7 @@ msgstr "" msgid "Timezone ID %{timezone} is invalid" msgstr "" -#: lib/graphql/resolvers/admin.ex:539 +#: lib/graphql/resolvers/admin.ex:557 #, elixir-autogen, elixir-format, fuzzy msgid "You are already following this instance" msgstr "Вы уже подписаны на эту группу" @@ -1437,12 +1437,12 @@ msgstr "" msgid "The token you provided is invalid. Make sure that the URL is exactly the one provided inside the email you got." msgstr "" -#: lib/graphql/resolvers/conversation.ex:161 +#: lib/graphql/resolvers/conversation.ex:164 #, elixir-autogen, elixir-format msgid "Conversation needs to mention at least one participant that's not yourself" msgstr "" -#: lib/graphql/resolvers/participant.ex:396 +#: lib/graphql/resolvers/participant.ex:401 #, elixir-autogen, elixir-format msgid "There are no participants matching the audience you've selected." msgstr "" diff --git a/priv/gettext/sv/LC_MESSAGES/activity.po b/priv/gettext/sv/LC_MESSAGES/activity.po index 69c53d136..f2cae0df8 100644 --- a/priv/gettext/sv/LC_MESSAGES/activity.po +++ b/priv/gettext/sv/LC_MESSAGES/activity.po @@ -225,7 +225,7 @@ msgstr "" #: lib/web/templates/email/email_direct_activity.html.heex:230 #: lib/web/templates/email/email_direct_activity.text.eex:23 -#, elixir-format +#, elixir-format, elixir-autogen msgid "View one more activity" msgid_plural "View %{count} more activities" msgstr[0] "Visa en till aktivitet" @@ -235,7 +235,7 @@ msgstr[1] "Visa %{count} fler aktiviteter" #: lib/web/templates/email/email_direct_activity.html.heex:60 #: lib/web/templates/email/email_direct_activity.text.eex:6 #: lib/web/templates/email/email_direct_activity.text.eex:7 -#, elixir-format +#, elixir-format, elixir-autogen msgid "There has been an activity!" msgid_plural "There has been some activity!" msgstr[0] "Det har varit en aktivitet!" diff --git a/priv/gettext/sv/LC_MESSAGES/default.po b/priv/gettext/sv/LC_MESSAGES/default.po index 36241db40..6b7ad0942 100644 --- a/priv/gettext/sv/LC_MESSAGES/default.po +++ b/priv/gettext/sv/LC_MESSAGES/default.po @@ -349,7 +349,7 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon på %{instance}: e-postadressen har ändrats" #: lib/web/email/notification.ex:52 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "Ett evenemang har planerats idag" @@ -357,7 +357,7 @@ msgstr[1] "%{nb_events} evenemang har planerats idag" #: lib/web/templates/email/on_day_notification.html.heex:47 #: lib/web/templates/email/on_day_notification.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "Du har ett evenemang idag:" @@ -407,14 +407,14 @@ msgid "You have been invited by %{inviter} to join group %{group}" msgstr "%{inviter} har bjudit in dig till gruppen %{group}" #: lib/web/email/notification.ex:81 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "Ett evenemang planerat denna vecka" msgstr[1] "%{nb_events} evenemang planerade denna vecka" #: lib/web/email/notification.ex:107 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "En deltagarförfrågan för evenemanget %{title} att behandla" @@ -424,7 +424,7 @@ msgstr[1] "" #: lib/web/templates/email/notification_each_week.html.heex:47 #: lib/web/templates/email/notification_each_week.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "Du har ett evenemang den här veckan:" @@ -804,7 +804,7 @@ msgstr "" #: lib/web/templates/email/notification_each_week.text.eex:11 #: lib/web/templates/email/on_day_notification.html.heex:89 #: lib/web/templates/email/on_day_notification.text.eex:11 -#, elixir-format +#, elixir-format, elixir-autogen msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "" @@ -1107,7 +1107,7 @@ msgstr "" msgid "Your instance's moderation team has decided to suspend %{group_name} (%{group_address}). You are no longer a member of this group." msgstr "" -#: lib/web/email/group.ex:108 +#: lib/web/email/group.ex:106 #, elixir-autogen, elixir-format msgid "The group %{group} has been suspended on %{instance}" msgstr "" @@ -1191,12 +1191,6 @@ msgctxt "terms" msgid "We reserve the right to modify these Terms at any time. For instance, we may need to change these Terms if we come out with a new feature." msgstr "" -#: lib/web/templates/api/terms.html.heex:55 -#, elixir-autogen, elixir-format -msgctxt "terms" -msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by <a href=\"https://framasoft.org\">Framasoft</a>, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." -msgstr "" - #: lib/web/templates/api/terms.html.heex:105 #, elixir-autogen, elixir-format msgctxt "terms" @@ -1684,7 +1678,7 @@ msgstr "" #: lib/web/templates/email/pending_participation_notification.html.heex:47 #: lib/web/templates/email/pending_participation_notification.text.eex:4 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one pending attendance request to process for the following event:" msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" msgstr[0] "" @@ -2078,3 +2072,9 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Well done!" msgstr "" + +#: lib/web/templates/api/terms.html.heex:55 +#, elixir-autogen, elixir-format, fuzzy +msgctxt "terms" +msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." +msgstr "" diff --git a/priv/gettext/sv/LC_MESSAGES/errors.po b/priv/gettext/sv/LC_MESSAGES/errors.po index 062ae6a27..3e82a92f0 100644 --- a/priv/gettext/sv/LC_MESSAGES/errors.po +++ b/priv/gettext/sv/LC_MESSAGES/errors.po @@ -182,13 +182,13 @@ msgstr "" msgid "The current password is invalid" msgstr "" -#: lib/graphql/resolvers/admin.ex:334 +#: lib/graphql/resolvers/admin.ex:335 #: lib/graphql/resolvers/user.ex:527 #, elixir-autogen, elixir-format msgid "The new email doesn't seem to be valid" msgstr "Den nya mejladressen verkar vara felaktig" -#: lib/graphql/resolvers/admin.ex:323 +#: lib/graphql/resolvers/admin.ex:324 #: lib/graphql/resolvers/user.ex:514 #, elixir-autogen, elixir-format msgid "The new email must be different" @@ -627,7 +627,7 @@ msgstr "" msgid "You don't have permission to delete this token" msgstr "" -#: lib/graphql/resolvers/admin.ex:56 +#: lib/graphql/resolvers/admin.ex:57 #, elixir-autogen, elixir-format msgid "You need to be logged-in and a moderator to list action logs" msgstr "" @@ -647,17 +647,17 @@ msgstr "" msgid "You need to be logged-in and a moderator to view a report" msgstr "" -#: lib/graphql/resolvers/admin.ex:258 +#: lib/graphql/resolvers/admin.ex:259 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" -#: lib/graphql/resolvers/admin.ex:242 +#: lib/graphql/resolvers/admin.ex:243 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" -#: lib/graphql/resolvers/admin.ex:283 +#: lib/graphql/resolvers/admin.ex:284 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" @@ -944,7 +944,7 @@ msgstr "" msgid "Failed to update the group" msgstr "" -#: lib/graphql/resolvers/admin.ex:357 +#: lib/graphql/resolvers/admin.ex:358 #: lib/graphql/resolvers/user.ex:547 #, elixir-autogen, elixir-format msgid "Failed to update user email" @@ -1075,22 +1075,22 @@ msgstr "" msgid "Your email seems to be using an invalid format" msgstr "" -#: lib/graphql/resolvers/admin.ex:399 +#: lib/graphql/resolvers/admin.ex:400 #, elixir-autogen, elixir-format msgid "Can't confirm an already confirmed user" msgstr "" -#: lib/graphql/resolvers/admin.ex:403 +#: lib/graphql/resolvers/admin.ex:404 #, elixir-autogen, elixir-format msgid "Deconfirming users is not supported" msgstr "" -#: lib/graphql/resolvers/admin.ex:375 +#: lib/graphql/resolvers/admin.ex:376 #, elixir-autogen, elixir-format, fuzzy msgid "The new role must be different" msgstr "" -#: lib/graphql/resolvers/admin.ex:314 +#: lib/graphql/resolvers/admin.ex:315 #, elixir-autogen, elixir-format, fuzzy msgid "You need to be logged-in and an administrator to edit an user's details" msgstr "" @@ -1100,7 +1100,7 @@ msgstr "" msgid "A profile or group with that name already exists" msgstr "" -#: lib/graphql/resolvers/admin.ex:542 +#: lib/graphql/resolvers/admin.ex:560 #, elixir-autogen, elixir-format msgid "Unable to find an instance to follow at this address" msgstr "" @@ -1362,7 +1362,7 @@ msgstr "" msgid "The same push subscription has already been registered" msgstr "" -#: lib/graphql/resolvers/admin.ex:536 +#: lib/graphql/resolvers/admin.ex:554 #, elixir-autogen, elixir-format msgid "This instance is pending follow approval" msgstr "" @@ -1372,7 +1372,7 @@ msgstr "" msgid "Timezone ID %{timezone} is invalid" msgstr "" -#: lib/graphql/resolvers/admin.ex:539 +#: lib/graphql/resolvers/admin.ex:557 #, elixir-autogen, elixir-format, fuzzy msgid "You are already following this instance" msgstr "" @@ -1393,12 +1393,12 @@ msgstr "" msgid "The token you provided is invalid. Make sure that the URL is exactly the one provided inside the email you got." msgstr "" -#: lib/graphql/resolvers/conversation.ex:161 +#: lib/graphql/resolvers/conversation.ex:164 #, elixir-autogen, elixir-format msgid "Conversation needs to mention at least one participant that's not yourself" msgstr "" -#: lib/graphql/resolvers/participant.ex:396 +#: lib/graphql/resolvers/participant.ex:401 #, elixir-autogen, elixir-format msgid "There are no participants matching the audience you've selected." msgstr "" diff --git a/priv/gettext/zh_Hant/LC_MESSAGES/activity.po b/priv/gettext/zh_Hant/LC_MESSAGES/activity.po index 387930b86..13b47907a 100644 --- a/priv/gettext/zh_Hant/LC_MESSAGES/activity.po +++ b/priv/gettext/zh_Hant/LC_MESSAGES/activity.po @@ -226,7 +226,7 @@ msgstr "" #: lib/web/templates/email/email_direct_activity.html.heex:230 #: lib/web/templates/email/email_direct_activity.text.eex:23 -#, elixir-format +#, elixir-format, elixir-autogen msgid "View one more activity" msgid_plural "View %{count} more activities" msgstr[0] "" @@ -236,7 +236,7 @@ msgstr[1] "" #: lib/web/templates/email/email_direct_activity.html.heex:60 #: lib/web/templates/email/email_direct_activity.text.eex:6 #: lib/web/templates/email/email_direct_activity.text.eex:7 -#, elixir-format +#, elixir-format, elixir-autogen msgid "There has been an activity!" msgid_plural "There has been some activity!" msgstr[0] "" diff --git a/priv/gettext/zh_Hant/LC_MESSAGES/default.po b/priv/gettext/zh_Hant/LC_MESSAGES/default.po index 75a7da65e..dce5f69c3 100644 --- a/priv/gettext/zh_Hant/LC_MESSAGES/default.po +++ b/priv/gettext/zh_Hant/LC_MESSAGES/default.po @@ -313,14 +313,14 @@ msgid "Mobilizon on %{instance}: email changed" msgstr "" #: lib/web/email/notification.ex:52 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "" #: lib/web/templates/email/on_day_notification.html.heex:47 #: lib/web/templates/email/on_day_notification.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "" @@ -369,20 +369,20 @@ msgid "You have been invited by %{inviter} to join group %{group}" msgstr "" #: lib/web/email/notification.ex:81 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "" #: lib/web/email/notification.ex:107 -#, elixir-format +#, elixir-format, elixir-autogen msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "" #: lib/web/templates/email/notification_each_week.html.heex:47 #: lib/web/templates/email/notification_each_week.text.eex:3 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "" @@ -747,7 +747,7 @@ msgstr "" #: lib/web/templates/email/notification_each_week.text.eex:11 #: lib/web/templates/email/on_day_notification.html.heex:89 #: lib/web/templates/email/on_day_notification.text.eex:11 -#, elixir-format +#, elixir-format, elixir-autogen msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "" @@ -1042,7 +1042,7 @@ msgstr "" msgid "Your instance's moderation team has decided to suspend %{group_name} (%{group_address}). You are no longer a member of this group." msgstr "" -#: lib/web/email/group.ex:108 +#: lib/web/email/group.ex:106 #, elixir-autogen, elixir-format msgid "The group %{group} has been suspended on %{instance}" msgstr "" @@ -1126,12 +1126,6 @@ msgctxt "terms" msgid "We reserve the right to modify these Terms at any time. For instance, we may need to change these Terms if we come out with a new feature." msgstr "" -#: lib/web/templates/api/terms.html.heex:55 -#, elixir-autogen, elixir-format -msgctxt "terms" -msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by <a href=\"https://framasoft.org\">Framasoft</a>, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." -msgstr "" - #: lib/web/templates/api/terms.html.heex:105 #, elixir-autogen, elixir-format msgctxt "terms" @@ -1616,7 +1610,7 @@ msgstr "" #: lib/web/templates/email/pending_participation_notification.html.heex:47 #: lib/web/templates/email/pending_participation_notification.text.eex:4 -#, elixir-format +#, elixir-format, elixir-autogen msgid "You have one pending attendance request to process for the following event:" msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" msgstr[0] "" @@ -2009,3 +2003,9 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Well done!" msgstr "" + +#: lib/web/templates/api/terms.html.heex:55 +#, elixir-autogen, elixir-format, fuzzy +msgctxt "terms" +msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the <a href=\"/about/instance\">\"About this instance\"</a> page." +msgstr "" diff --git a/priv/gettext/zh_Hant/LC_MESSAGES/errors.po b/priv/gettext/zh_Hant/LC_MESSAGES/errors.po index f053fd21d..45fb221e3 100644 --- a/priv/gettext/zh_Hant/LC_MESSAGES/errors.po +++ b/priv/gettext/zh_Hant/LC_MESSAGES/errors.po @@ -169,13 +169,13 @@ msgstr "" msgid "The current password is invalid" msgstr "" -#: lib/graphql/resolvers/admin.ex:334 +#: lib/graphql/resolvers/admin.ex:335 #: lib/graphql/resolvers/user.ex:527 #, elixir-autogen, elixir-format msgid "The new email doesn't seem to be valid" msgstr "" -#: lib/graphql/resolvers/admin.ex:323 +#: lib/graphql/resolvers/admin.ex:324 #: lib/graphql/resolvers/user.ex:514 #, elixir-autogen, elixir-format msgid "The new email must be different" @@ -609,7 +609,7 @@ msgstr "" msgid "You don't have permission to delete this token" msgstr "" -#: lib/graphql/resolvers/admin.ex:56 +#: lib/graphql/resolvers/admin.ex:57 #, elixir-autogen, elixir-format msgid "You need to be logged-in and a moderator to list action logs" msgstr "" @@ -629,17 +629,17 @@ msgstr "" msgid "You need to be logged-in and a moderator to view a report" msgstr "" -#: lib/graphql/resolvers/admin.ex:258 +#: lib/graphql/resolvers/admin.ex:259 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" -#: lib/graphql/resolvers/admin.ex:242 +#: lib/graphql/resolvers/admin.ex:243 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" -#: lib/graphql/resolvers/admin.ex:283 +#: lib/graphql/resolvers/admin.ex:284 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" @@ -926,7 +926,7 @@ msgstr "" msgid "Failed to update the group" msgstr "" -#: lib/graphql/resolvers/admin.ex:357 +#: lib/graphql/resolvers/admin.ex:358 #: lib/graphql/resolvers/user.ex:547 #, elixir-autogen, elixir-format msgid "Failed to update user email" @@ -1057,22 +1057,22 @@ msgstr "" msgid "Your email seems to be using an invalid format" msgstr "" -#: lib/graphql/resolvers/admin.ex:399 +#: lib/graphql/resolvers/admin.ex:400 #, elixir-autogen, elixir-format msgid "Can't confirm an already confirmed user" msgstr "" -#: lib/graphql/resolvers/admin.ex:403 +#: lib/graphql/resolvers/admin.ex:404 #, elixir-autogen, elixir-format msgid "Deconfirming users is not supported" msgstr "" -#: lib/graphql/resolvers/admin.ex:375 +#: lib/graphql/resolvers/admin.ex:376 #, elixir-autogen, elixir-format msgid "The new role must be different" msgstr "" -#: lib/graphql/resolvers/admin.ex:314 +#: lib/graphql/resolvers/admin.ex:315 #, elixir-autogen, elixir-format msgid "You need to be logged-in and an administrator to edit an user's details" msgstr "" @@ -1082,7 +1082,7 @@ msgstr "" msgid "A profile or group with that name already exists" msgstr "" -#: lib/graphql/resolvers/admin.ex:542 +#: lib/graphql/resolvers/admin.ex:560 #, elixir-autogen, elixir-format msgid "Unable to find an instance to follow at this address" msgstr "" @@ -1344,7 +1344,7 @@ msgstr "" msgid "The same push subscription has already been registered" msgstr "" -#: lib/graphql/resolvers/admin.ex:536 +#: lib/graphql/resolvers/admin.ex:554 #, elixir-autogen, elixir-format msgid "This instance is pending follow approval" msgstr "" @@ -1354,7 +1354,7 @@ msgstr "" msgid "Timezone ID %{timezone} is invalid" msgstr "" -#: lib/graphql/resolvers/admin.ex:539 +#: lib/graphql/resolvers/admin.ex:557 #, elixir-autogen, elixir-format, fuzzy msgid "You are already following this instance" msgstr "" @@ -1374,12 +1374,12 @@ msgstr "" msgid "The token you provided is invalid. Make sure that the URL is exactly the one provided inside the email you got." msgstr "" -#: lib/graphql/resolvers/conversation.ex:161 +#: lib/graphql/resolvers/conversation.ex:164 #, elixir-autogen, elixir-format msgid "Conversation needs to mention at least one participant that's not yourself" msgstr "" -#: lib/graphql/resolvers/participant.ex:396 +#: lib/graphql/resolvers/participant.ex:401 #, elixir-autogen, elixir-format msgid "There are no participants matching the audience you've selected." msgstr "" diff --git a/priv/repo/migrations/20240222121054_create_admin_settings_medias.exs b/priv/repo/migrations/20240222121054_create_admin_settings_medias.exs new file mode 100644 index 000000000..bcfd69bef --- /dev/null +++ b/priv/repo/migrations/20240222121054_create_admin_settings_medias.exs @@ -0,0 +1,15 @@ +defmodule Mobilizon.Storage.Repo.Migrations.CreateAdminSettingsMedias do + use Ecto.Migration + + def change do + create table(:admin_settings_medias) do + add(:group, :string) + add(:name, :string) + add(:media_id, references(:medias, on_delete: :delete_all)) + + timestamps() + end + + create(unique_index(:admin_settings_medias, [:group, :name])) + end +end diff --git a/public/favicon.ico b/public/img/icons/favicon.ico similarity index 100% rename from public/favicon.ico rename to public/img/icons/favicon.ico diff --git a/public/img/pics/error.webp b/public/img/pics/error.webp deleted file mode 100644 index d807645e5..000000000 Binary files a/public/img/pics/error.webp and /dev/null differ diff --git a/public/img/pics/event_creation-1024w.webp b/public/img/pics/event_creation-1024w.webp deleted file mode 100644 index 96f31769c..000000000 Binary files a/public/img/pics/event_creation-1024w.webp and /dev/null differ diff --git a/public/img/pics/event_creation-480w.webp b/public/img/pics/event_creation-480w.webp deleted file mode 100644 index 15f143247..000000000 Binary files a/public/img/pics/event_creation-480w.webp and /dev/null differ diff --git a/public/img/pics/event_creation.webp b/public/img/pics/event_creation.webp deleted file mode 100644 index 7406af41d..000000000 Binary files a/public/img/pics/event_creation.webp and /dev/null differ diff --git a/public/img/pics/footer_1.webp b/public/img/pics/footer_1.webp deleted file mode 100644 index e6685dec6..000000000 Binary files a/public/img/pics/footer_1.webp and /dev/null differ diff --git a/public/img/pics/footer_2.webp b/public/img/pics/footer_2.webp deleted file mode 100644 index e438b2cb9..000000000 Binary files a/public/img/pics/footer_2.webp and /dev/null differ diff --git a/public/img/pics/footer_3.webp b/public/img/pics/footer_3.webp deleted file mode 100644 index be647fe19..000000000 Binary files a/public/img/pics/footer_3.webp and /dev/null differ diff --git a/public/img/pics/footer_4.webp b/public/img/pics/footer_4.webp deleted file mode 100644 index 1d498275b..000000000 Binary files a/public/img/pics/footer_4.webp and /dev/null differ diff --git a/public/img/pics/footer_5.webp b/public/img/pics/footer_5.webp deleted file mode 100644 index 3fd2a6b90..000000000 Binary files a/public/img/pics/footer_5.webp and /dev/null differ diff --git a/public/img/pics/group-1024w.webp b/public/img/pics/group-1024w.webp deleted file mode 100644 index fea1fde5d..000000000 Binary files a/public/img/pics/group-1024w.webp and /dev/null differ diff --git a/public/img/pics/group-480w.webp b/public/img/pics/group-480w.webp deleted file mode 100644 index 319d1257f..000000000 Binary files a/public/img/pics/group-480w.webp and /dev/null differ diff --git a/public/img/pics/group.webp b/public/img/pics/group.webp deleted file mode 100644 index 26ef07440..000000000 Binary files a/public/img/pics/group.webp and /dev/null differ diff --git a/public/img/pics/homepage.webp b/public/img/pics/homepage.webp deleted file mode 100644 index 0d0791a50..000000000 Binary files a/public/img/pics/homepage.webp and /dev/null differ diff --git a/public/img/pics/realisation.webp b/public/img/pics/realisation.webp deleted file mode 100644 index 739b6df84..000000000 Binary files a/public/img/pics/realisation.webp and /dev/null differ diff --git a/public/img/pics/rose.webp b/public/img/pics/rose.webp deleted file mode 100644 index 9d8328860..000000000 Binary files a/public/img/pics/rose.webp and /dev/null differ diff --git a/schema.graphql b/schema.graphql index 5b25fe54e..372868580 100644 --- a/schema.graphql +++ b/schema.graphql @@ -169,6 +169,18 @@ type Config { "The instance's slogan" slogan: String + "The instance's logo" + instanceLogo: Media + + "The default picture" + defaultPicture: Media + + "The instance's primary color" + primaryColor: String + + "The instance's secondary color" + secondaryColor: String + "The instance's contact details" contact: String @@ -187,6 +199,9 @@ type Config { "Whether the demo mode is enabled" demoMode: Boolean + "Whether the long events mode is enabled" + longEvents: Boolean + "The country code from the IP" countryCode: String @@ -1878,6 +1893,15 @@ type RootMutationType { "The instance's contact details" contact: String + "The instance's logo" + instanceLogo: MediaInput + + "The instance's favicon" + instanceFavicon: MediaInput + + "The default picture" + defaultPicture: MediaInput + "The instance's terms body text" instanceTerms: String @@ -2242,6 +2266,9 @@ type RootQueryType { "Filter events by their end date" endsOn: DateTime + + "Filter for long events in function of configuration parameter 'duration_of_long_event'" + longevents: Boolean ): Events "Interact with an URI" @@ -3698,6 +3725,15 @@ type AdminSettings { "The instance's contact details" contact: String + "The instance's logo" + instanceLogo: Media + + "The instance's favicon" + instanceFavicon: Media + + "The default picture" + defaultPicture: Media + "The instance's terms body text" instanceTerms: String diff --git a/src/assets/oruga-tailwindcss.css b/src/assets/oruga-tailwindcss.css index 70248bae0..afc56d64a 100644 --- a/src/assets/oruga-tailwindcss.css +++ b/src/assets/oruga-tailwindcss.css @@ -110,7 +110,13 @@ body { @apply border-red-500; } .input-icon-right { - right: 0.5rem; + @apply right-2; +} +.input-iconspace-left { + @apply pl-8; +} +.input-iconspace-right { + @apply pr-8; } .input[type="text"]:disabled, .input[type="email"]:disabled { diff --git a/src/components/Discussion/DiscussionComment.vue b/src/components/Discussion/DiscussionComment.vue index 419b41586..0813a9198 100644 --- a/src/components/Discussion/DiscussionComment.vue +++ b/src/components/Discussion/DiscussionComment.vue @@ -168,7 +168,7 @@ const props = withDefaults( defineProps<{ modelValue: IComment; currentActor: IPerson; - canReport: boolean; + canReport?: boolean; }>(), { canReport: false } ); diff --git a/src/components/ErrorComponent.vue b/src/components/ErrorComponent.vue index 7c093bfe3..3770b5df5 100644 --- a/src/components/ErrorComponent.vue +++ b/src/components/ErrorComponent.vue @@ -2,21 +2,6 @@ <div class="container mx-auto" id="error-wrapper"> <div class=""> <section> - <div class="text-center"> - <picture> - <source - :srcset="`/img/pics/error-480w.webp 1x, /img/pics/error-1024w.webp 2x`" - type="image/webp" - /> - <img - :src="`/img/pics/error-480w.webp`" - alt="" - width="480" - height="312" - loading="lazy" - /> - </picture> - </div> <o-notification variant="danger" class=""> <h1> {{ @@ -108,7 +93,7 @@ import { IAnalyticsConfig, IConfig } from "@/types/config.model"; import { computed, defineAsyncComponent, ref } from "vue"; import { useQuery, useQueryLoading } from "@vue/apollo-composable"; import { useI18n } from "vue-i18n"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { useAnalytics } from "@/composition/apollo/config"; import { INSTANCE_NAME } from "@/graphql/config"; const SentryFeedback = defineAsyncComponent( diff --git a/src/components/Event/DateCalendarIcon.vue b/src/components/Event/DateCalendarIcon.vue index 65d4c543d..6f684c40b 100644 --- a/src/components/Event/DateCalendarIcon.vue +++ b/src/components/Event/DateCalendarIcon.vue @@ -59,8 +59,7 @@ div.datetime-container { height: calc(10px * var(--small)); background: #f3425f; } - .datetime-container-header .weekday - { + .datetime-container-header .weekday { font-size: calc(9px * var(--small)); font-weight: bold; vertical-align: top; diff --git a/src/components/Event/EventActionSection.vue b/src/components/Event/EventActionSection.vue index 5d4cf9cfa..eb8e3d41b 100644 --- a/src/components/Event/EventActionSection.vue +++ b/src/components/Event/EventActionSection.vue @@ -23,7 +23,10 @@ <div class="flex flex-col gap-1 mt-1"> <p class="inline-flex gap-2 ml-auto" - v-if="event.joinOptions !== EventJoinOptions.EXTERNAL" + v-if=" + event.joinOptions !== EventJoinOptions.EXTERNAL && + !event.options.hideNumberOfParticipants + " > <TicketConfirmationOutline /> <router-link diff --git a/src/components/Event/EventCard.vue b/src/components/Event/EventCard.vue index 28fb9980f..8c6fd8861 100644 --- a/src/components/Event/EventCard.vue +++ b/src/components/Event/EventCard.vue @@ -12,6 +12,31 @@ class="rounded-lg" :class="{ 'sm:w-full sm:max-w-[20rem]': mode === 'row' }" > + <div + class="-mt-3 h-0 mb-3 ltr:ml-0 rtl:mr-0 block relative z-10" + :class="{ + 'sm:hidden': mode === 'row', + 'calendar-simple': !isDifferentBeginsEndsDate, + 'calendar-double': isDifferentBeginsEndsDate, + }" + > + <date-calendar-icon + :small="true" + v-if="!mergedOptions.hideDate" + :date="event.beginsOn.toString()" + /> + <MenuDown + :small="true" + class="left-3 relative" + v-if="!mergedOptions.hideDate && isDifferentBeginsEndsDate" + /> + <date-calendar-icon + :small="true" + v-if="!mergedOptions.hideDate && isDifferentBeginsEndsDate" + :date="event.endsOn?.toString()" + /> + </div> + <figure class="block relative pt-40"> <lazy-image-wrapper :picture="event.picture" @@ -49,12 +74,12 @@ <div class="p-2 flex-auto" :class="{ 'sm:flex-1': mode === 'row' }"> <div class="relative flex flex-col h-full"> <div - class="-mt-3 h-0 flex mb-3 ltr:ml-0 rtl:mr-0 items-end self-start" + class="-mt-3 h-0 flex mb-3 ltr:ml-0 rtl:mr-0 items-end self-end" :class="{ 'sm:hidden': mode === 'row' }" > - <date-calendar-icon + <start-time-icon :small="true" - v-if="!mergedOptions.hideDate" + v-if="!mergedOptions.hideDate && event.options.showStartTime" :date="event.beginsOn.toString()" /> </div> @@ -71,8 +96,17 @@ <span class="text-gray-700 dark:text-white font-semibold hidden" :class="{ 'sm:block': mode === 'row' }" + v-if="!isDifferentBeginsEndsDate" >{{ formatDateTimeWithCurrentLocale }}</span > + <span + class="text-gray-700 dark:text-white font-semibold hidden" + :class="{ 'sm:block': mode === 'row' }" + v-if="isDifferentBeginsEndsDate" + >{{ formatBeginsOnDateWithCurrentLocale }} + <ArrowRightThin :small="true" style="display: ruby" /> + {{ formatEndsOnDateWithCurrentLocale }}</span + > <div class="w-full flex flex-col justify-between h-full"> <h2 class="mt-0 mb-2 text-2xl line-clamp-3 font-bold text-violet-3 dark:text-white" @@ -162,6 +196,16 @@ </div> </LinkOrRouterLink> </template> +<style scoped> +.calendar-simple { + bottom: -117px; + left: 5px; +} +.calendar-double { + bottom: -45px; + left: 5px; +} +</style> <script lang="ts" setup> import { @@ -172,6 +216,8 @@ import { } from "@/types/event.model"; import DateCalendarIcon from "@/components/Event/DateCalendarIcon.vue"; import StartTimeIcon from "@/components/Event/StartTimeIcon.vue"; +import ArrowRightThin from "vue-material-design-icons/ArrowRightThin.vue"; +import MenuDown from "vue-material-design-icons/MenuDown.vue"; import LazyImageWrapper from "@/components/Image/LazyImageWrapper.vue"; import { EventStatus } from "@/types/enums"; import RouteName from "../../router/name"; @@ -181,7 +227,7 @@ import { computed, inject } from "vue"; import MobilizonTag from "@/components/TagElement.vue"; import AccountCircle from "vue-material-design-icons/AccountCircle.vue"; import Video from "vue-material-design-icons/Video.vue"; -import { formatDateTimeForEvent } from "@/utils/datetime"; +import { formatDateForEvent, formatDateTimeForEvent } from "@/utils/datetime"; import type { Locale } from "date-fns"; import LinkOrRouterLink from "../core/LinkOrRouterLink.vue"; import { useI18n } from "vue-i18n"; @@ -223,6 +269,28 @@ const actorAvatarURL = computed<string | null>(() => const dateFnsLocale = inject<Locale>("dateFnsLocale"); +const isDifferentBeginsEndsDate = computed(() => { + if (!dateFnsLocale) return; + const beginsOnStr = formatDateForEvent( + new Date(props.event.beginsOn), + dateFnsLocale + ); + const endsOnStr = props.event.endsOn + ? formatDateForEvent(new Date(props.event.endsOn), dateFnsLocale) + : null; + return endsOnStr && endsOnStr != beginsOnStr; +}); + +const formatBeginsOnDateWithCurrentLocale = computed(() => { + if (!dateFnsLocale) return; + return formatDateForEvent(new Date(props.event.beginsOn), dateFnsLocale); +}); + +const formatEndsOnDateWithCurrentLocale = computed(() => { + if (!dateFnsLocale) return; + return formatDateForEvent(new Date(props.event.endsOn), dateFnsLocale); +}); + const formatDateTimeWithCurrentLocale = computed(() => { if (!dateFnsLocale) return; return formatDateTimeForEvent(new Date(props.event.beginsOn), dateFnsLocale); diff --git a/src/components/Event/StartTimeIcon.vue b/src/components/Event/StartTimeIcon.vue index 77fd04869..b0f463d76 100644 --- a/src/components/Event/StartTimeIcon.vue +++ b/src/components/Event/StartTimeIcon.vue @@ -5,14 +5,13 @@ :style="`--small: ${smallStyle}`" > <div class="starttime-container-content font-semibold"> - <Clock class="clock-icon"/><time :datetime="dateObj.toISOString()">{{ - time + <Clock class="clock-icon" /><time :datetime="dateObj.toISOString()">{{ + time }}</time> </div> </div> </template> <script lang="ts" setup> -import { localeShortWeekDayNames } from "@/utils/datetime"; import { computed } from "vue"; import Clock from "vue-material-design-icons/ClockTimeTenOutline.vue"; @@ -27,7 +26,10 @@ const props = withDefaults( const dateObj = computed<Date>(() => new Date(props.date)); const time = computed<string>(() => - dateObj.value.toLocaleTimeString(undefined, { hour: "2-digit", minute: "2-digit" }) + dateObj.value.toLocaleTimeString(undefined, { + hour: "2-digit", + minute: "2-digit", + }) ); const smallStyle = computed<string>(() => (props.small ? "0.9" : "2")); @@ -39,11 +41,11 @@ div.starttime-container { box-shadow: 0 0 12px rgba(0, 0, 0, 0.2); padding: 0.25rem 0.25rem; font-size: calc(1rem * var(--small)); - } +} - .clock-icon { - vertical-align: middle; - padding-right: 0.2rem; - display: inline-block; - } +.clock-icon { + vertical-align: middle; + padding-right: 0.2rem; + display: inline-block; +} </style> diff --git a/src/components/Event/TagInput.vue b/src/components/Event/TagInput.vue index 6a4c06f68..dad5c7b9c 100644 --- a/src/components/Event/TagInput.vue +++ b/src/components/Event/TagInput.vue @@ -14,7 +14,8 @@ </p> </template> <o-taginput - v-model="tagsStrings" + :modelValue="tagsStrings" + @update:modelValue="updateTags" :data="filteredTags" :allow-autocomplete="true" :allow-new="true" @@ -34,7 +35,7 @@ <script lang="ts" setup> import differenceBy from "lodash/differenceBy"; import { ITag } from "../../types/tag.model"; -import { computed, onBeforeMount, ref } from "vue"; +import { computed, onBeforeMount, ref, watch } from "vue"; import HelpCircleOutline from "vue-material-design-icons/HelpCircleOutline.vue"; import { useFetchTags } from "@/composition/apollo/tags"; import { FILTER_TAGS } from "@/graphql/tags"; @@ -44,6 +45,10 @@ const props = defineProps<{ modelValue: ITag[]; }>(); +const propsValue = computed(() => props.modelValue); + +const tagsStrings = ref<string[]>([]); + const emit = defineEmits(["update:modelValue"]); const text = ref(""); @@ -77,7 +82,7 @@ const getFilteredTags = async (newText: string): Promise<void> => { }; const filteredTags = computed((): ITag[] => { - return differenceBy(tags.value, props.modelValue, "id").filter( + return differenceBy(tags.value, propsValue.value, "id").filter( (option) => option.title.toString().toLowerCase().indexOf(text.value.toLowerCase()) >= 0 || @@ -86,19 +91,19 @@ const filteredTags = computed((): ITag[] => { ); }); -const tagsStrings = computed({ - get(): string[] { - return props.modelValue.map((tag: ITag) => tag.title); - }, - set(newTagsStrings: string[]) { - console.debug("tagsStrings", newTagsStrings); - const tagEntities = newTagsStrings.map((tag: string | ITag) => { - if (typeof tag !== "string") { - return tag; - } - return { title: tag, slug: tag } as ITag; - }); - emit("update:modelValue", tagEntities); - }, +watch(props.modelValue, (newValue, oldValue) => { + if (newValue != oldValue) { + tagsStrings.value = propsValue.value.map((tag: ITag) => tag.title); + } }); + +const updateTags = (newTagsStrings: string[]) => { + const tagEntities = newTagsStrings.map((tag: string | ITag) => { + if (typeof tag !== "string") { + return tag; + } + return { title: tag, slug: tag } as ITag; + }); + emit("update:modelValue", tagEntities); +}; </script> diff --git a/src/components/Group/JoinGroupWithAccount.vue b/src/components/Group/JoinGroupWithAccount.vue index 9c337f398..6a35a00cc 100644 --- a/src/components/Group/JoinGroupWithAccount.vue +++ b/src/components/Group/JoinGroupWithAccount.vue @@ -16,7 +16,7 @@ import { useGroup } from "@/composition/apollo/group"; import { displayName } from "@/types/actor"; import { computed } from "vue"; import { useI18n } from "vue-i18n"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; const props = defineProps<{ preferredUsername: string; diff --git a/src/components/Home/UnloggedIntroduction.vue b/src/components/Home/UnloggedIntroduction.vue index c22f37e6d..e4d3bd6c4 100644 --- a/src/components/Home/UnloggedIntroduction.vue +++ b/src/components/Home/UnloggedIntroduction.vue @@ -1,26 +1,14 @@ <template> <section class="container mx-auto px-2 my-3"> - <p class="dark:text-white mb-2">{{ config.slogan }}</p> - <!-- We don't invite to find other instances yet --> - <!-- <p v-if="!config.registrationsOpen"> - {{ t("This instance isn't opened to registrations, but you can register on other instances.") }} - </p>--> - <div class="flex flex-wrap gap-2 items-center"> - <o-button - variant="primary" - tag="router-link" - :to="{ name: RouteName.REGISTER }" - v-if="config.registrationsOpen" - >{{ t("Create an account") }}</o-button - > - <!-- We don't invite to find other instances yet --> - <!-- <o-button v-else variant="link" tag="a" href="https://joinmastodon.org">{{ t('Find an instance') }}</o-button> --> - </div> + <h1 class="dark:text-white font-bold"> + {{ config.slogan ?? t("Gather ⋅ Organize ⋅ Mobilize") }} + </h1> + + <p class="dark:text-white mb-2">{{ config.description }}</p> </section> </template> <script lang="ts" setup> import { IConfig } from "@/types/config.model"; -import RouteName from "@/router/name"; import { useI18n } from "vue-i18n"; defineProps<{ diff --git a/src/components/Image/LazyImageWrapper.vue b/src/components/Image/LazyImageWrapper.vue index b30a027ae..b6dd6c4cf 100644 --- a/src/components/Image/LazyImageWrapper.vue +++ b/src/components/Image/LazyImageWrapper.vue @@ -11,8 +11,11 @@ <script lang="ts" setup> import { computed } from "vue"; import { IMedia } from "@/types/media.model"; +import { useDefaultPicture } from "@/composition/apollo/config"; import LazyImage from "../Image/LazyImage.vue"; +const { defaultPicture } = useDefaultPicture(); + const DEFAULT_CARD_URL = "/img/mobilizon_default_card.png"; const DEFAULT_BLURHASH = "MCHKI4El-P-U}+={R-WWoes,Iu-P=?R,xD"; const DEFAULT_WIDTH = 630; @@ -38,6 +41,9 @@ const props = withDefaults( const pictureOrDefault = computed(() => { if (props.picture === null) { + if (defaultPicture?.value?.url) { + return defaultPicture.value; + } return DEFAULT_PICTURE; } return { diff --git a/src/components/Local/LastEvents.vue b/src/components/Local/LastEvents.vue index c2b936231..cb068a82f 100644 --- a/src/components/Local/LastEvents.vue +++ b/src/components/Local/LastEvents.vue @@ -6,18 +6,7 @@ v-on="attrs" > <template #title> - {{ t("Last published events") }} - </template> - <template #subtitle> - <i18n-t - class="text-slate-700 dark:text-slate-300" - tag="p" - keypath="On {instance} and other federated instances" - > - <template #instance> - <b>{{ instanceName }}</b> - </template> - </i18n-t> + {{ t("Agenda") }} </template> <template #content> <skeleton-event-result @@ -69,8 +58,8 @@ const attrs = useAttrs(); const { result: resultEvents, loading: loadingEvents } = useQuery<{ events: Paginate<IEvent>; }>(FETCH_EVENTS, { - orderBy: EventSortField.INSERTED_AT, - direction: SortDirection.DESC, + orderBy: EventSortField.BEGINS_ON, + direction: SortDirection.ASC, }); const events = computed( () => resultEvents.value?.events ?? { total: 0, elements: [] } diff --git a/src/components/MobilizonLogo.vue b/src/components/MobilizonLogo.vue index a16e8f9eb..110180a90 100644 --- a/src/components/MobilizonLogo.vue +++ b/src/components/MobilizonLogo.vue @@ -1,4 +1,5 @@ <template> +<<<<<<< HEAD <figure> <svgLogo/> </figure> diff --git a/src/components/NavBar.vue b/src/components/NavBar.vue index b0793f542..8b90b7e57 100644 --- a/src/components/NavBar.vue +++ b/src/components/NavBar.vue @@ -3,9 +3,7 @@ class="bg-white border-gray-200 px-2 sm:px-4 py-2.5 dark:bg-zinc-900" id="navbar" > - <div - class="container mx-auto flex flex-wrap items-center mx-auto gap-2 sm:gap-4" - > + <div class="container mx-auto flex flex-wrap items-center gap-2 sm:gap-4"> <router-link :to="{ name: RouteName.HOME }" class="flex items-center" @@ -172,11 +170,48 @@ v-model:location="location" /> + <li class="m-auto" v-if="islongEvents"> + <router-link + :to="{ + name: RouteName.SEARCH, + query: { contentType: 'SHORTEVENTS' }, + }" + class="block py-2 pr-4 pl-3 text-zinc-700 border-b border-gray-100 hover:bg-zinc-50 md:hover:bg-transparent md:border-0 md:hover:text-mbz-purple-700 md:p-0 dark:text-zinc-400 md:dark:hover:text-white dark:hover:bg-zinc-700 dark:hover:text-white md:dark:hover:bg-transparent dark:border-gray-700" + >{{ t("Events") }}</router-link + > + </li> + <li class="m-auto" v-else> + <router-link + :to="{ name: RouteName.SEARCH, query: { contentType: 'EVENTS' } }" + class="block py-2 pr-4 pl-3 text-zinc-700 border-b border-gray-100 hover:bg-zinc-50 md:hover:bg-transparent md:border-0 md:hover:text-mbz-purple-700 md:p-0 dark:text-zinc-400 md:dark:hover:text-white dark:hover:bg-zinc-700 dark:hover:text-white md:dark:hover:bg-transparent dark:border-gray-700" + >{{ t("Events") }}</router-link + > + </li> + <li class="m-auto" v-if="islongEvents"> + <router-link + :to="{ + name: RouteName.SEARCH, + query: { contentType: 'LONGEVENTS' }, + }" + class="block py-2 pr-4 pl-3 text-zinc-700 border-b border-gray-100 hover:bg-zinc-50 md:hover:bg-transparent md:border-0 md:hover:text-mbz-purple-700 md:p-0 dark:text-zinc-400 md:dark:hover:text-white dark:hover:bg-zinc-700 dark:hover:text-white md:dark:hover:bg-transparent dark:border-gray-700" + >{{ t("Activities") }}</router-link + > + </li> + <li class="m-auto"> + <router-link + :to="{ name: RouteName.SEARCH, query: { contentType: 'GROUPS' } }" + class="block py-2 pr-4 pl-3 text-zinc-700 border-b border-gray-100 hover:bg-zinc-50 md:hover:bg-transparent md:border-0 md:hover:text-mbz-purple-700 md:p-0 dark:text-zinc-400 md:dark:hover:text-white dark:hover:bg-zinc-700 dark:hover:text-white md:dark:hover:bg-transparent dark:border-gray-700" + >{{ t("Groups") }}</router-link + > + </li> <li class="m-auto"> <router-link :to="{ name: RouteName.EVENT_CALENDAR }" - class="block py-2 pr-4 pl-3 text-zinc-700 border-b border-gray-100 hover:bg-zinc-50 md:hover:bg-transparent md:border-0 md:hover:text-mbz-purple-700 md:p-0 dark:text-zinc-400 md:dark:hover:text-white dark:hover:bg-zinc-700 dark:hover:text-white md:dark:hover:bg-transparent dark:border-gray-700" - >{{ t("Calendar") }}</router-link + class="block relative py-2 pr-4 pl-3 text-zinc-700 border-b border-gray-100 hover:bg-zinc-50 md:hover:bg-transparent md:border-0 md:hover:text-mbz-purple-700 md:p-0 dark:text-zinc-400 md:dark:hover:text-white dark:hover:bg-zinc-700 dark:hover:text-white md:dark:hover:bg-transparent dark:border-gray-700" + >{{ t("Calendar") + }}<span class="absolute right-0 text-sm" + ><br />(beta)</span + ></router-link > </li> <li class="m-auto" v-if="currentActor?.id"> @@ -238,10 +273,15 @@ import { import { useMutation } from "@vue/apollo-composable"; import { UPDATE_DEFAULT_ACTOR } from "@/graphql/actor"; import { changeIdentity } from "@/utils/identity"; -import { useRegistrationConfig } from "@/composition/apollo/config"; +import { + useRegistrationConfig, + useIsLongEvents, +} from "@/composition/apollo/config"; import { useOruga } from "@oruga-ui/oruga-next"; import SearchFields from "@/components/Home/SearchFields.vue"; +const { islongEvents } = useIsLongEvents(); + const { currentUser } = useCurrentUserClient(); const { currentActor } = useCurrentActorClient(); diff --git a/src/components/OAuth/AuthorizeApplication.vue b/src/components/OAuth/AuthorizeApplication.vue index 1d896f054..84783e041 100644 --- a/src/components/OAuth/AuthorizeApplication.vue +++ b/src/components/OAuth/AuthorizeApplication.vue @@ -90,7 +90,7 @@ </template> <script lang="ts" setup> -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { computed, inject, ref } from "vue"; import { useI18n } from "vue-i18n"; import { useMutation } from "@vue/apollo-composable"; diff --git a/src/components/PageFooter.vue b/src/components/PageFooter.vue index 751292253..b800736f4 100644 --- a/src/components/PageFooter.vue +++ b/src/components/PageFooter.vue @@ -1,6 +1,6 @@ <template> <footer - class="bg-zinc-900 color-secondary flex flex-col items-center py-2 px-3" + class="bg-violet-2 color-secondary flex flex-col items-center py-3 px-3" ref="footer" > <ul @@ -79,15 +79,11 @@ import { saveLocaleData } from "@/utils/auth"; import { loadLanguageAsync } from "@/utils/i18n"; import RouteName from "../router/name"; import langs from "../i18n/langs.json"; -import { computed, watch } from "vue"; +import { watch } from "vue"; import { useI18n } from "vue-i18n"; const { locale, t } = useI18n({ useScope: "global" }); -const random = computed((): number => { - return Math.floor(Math.random() * 4) + 1; -}); - watch(locale, async () => { if (locale) { console.debug("Setting locale from footer"); @@ -100,3 +96,9 @@ const isLangSelected = (lang: string): boolean => { return lang === locale.value; }; </script> + +<style lang="scss"> +footer > ul > li { + margin: auto 0; +} +</style> diff --git a/src/components/Participation/CancelParticipation.vue b/src/components/Participation/CancelParticipation.vue index 514901ca7..8f6b49d26 100644 --- a/src/components/Participation/CancelParticipation.vue +++ b/src/components/Participation/CancelParticipation.vue @@ -45,7 +45,7 @@ import { LEAVE_EVENT } from "../../graphql/event"; import { computed, ref, watchEffect } from "vue"; import { useMutation } from "@vue/apollo-composable"; import { useI18n } from "vue-i18n"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { IActor } from "@/types/actor"; import { IEvent } from "@/types/event.model"; import { useAnonymousActorId } from "@/composition/apollo/config"; diff --git a/src/components/Participation/ConfirmParticipation.vue b/src/components/Participation/ConfirmParticipation.vue index 2d5ebbde3..a8d1d3c5b 100644 --- a/src/components/Participation/ConfirmParticipation.vue +++ b/src/components/Participation/ConfirmParticipation.vue @@ -70,7 +70,7 @@ import { CONFIRM_PARTICIPATION } from "../../graphql/event"; import { computed, ref, watchEffect } from "vue"; import { useMutation } from "@vue/apollo-composable"; import { useI18n } from "vue-i18n"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; const { t } = useI18n({ useScope: "global" }); diff --git a/src/components/Participation/ParticipationWithAccount.vue b/src/components/Participation/ParticipationWithAccount.vue index 84cb71372..3627e5cd7 100644 --- a/src/components/Participation/ParticipationWithAccount.vue +++ b/src/components/Participation/ParticipationWithAccount.vue @@ -9,7 +9,7 @@ <script lang="ts" setup> import RedirectWithAccount from "@/components/Utils/RedirectWithAccount.vue"; import { useFetchEvent } from "@/composition/apollo/event"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { computed } from "vue"; import { useI18n } from "vue-i18n"; diff --git a/src/components/Participation/ParticipationWithoutAccount.vue b/src/components/Participation/ParticipationWithoutAccount.vue index f2a93ea04..98a1ffdfb 100644 --- a/src/components/Participation/ParticipationWithoutAccount.vue +++ b/src/components/Participation/ParticipationWithoutAccount.vue @@ -146,7 +146,7 @@ import { useFetchEventBasic } from "@/composition/apollo/event"; import { useAnonymousActorId } from "@/composition/apollo/config"; import { computed, reactive, ref } from "vue"; import { useI18n } from "vue-i18n"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { useMutation } from "@vue/apollo-composable"; const error = ref<boolean | string>(false); diff --git a/src/components/Participation/UnloggedParticipation.vue b/src/components/Participation/UnloggedParticipation.vue index e4cfb75a0..67309439b 100644 --- a/src/components/Participation/UnloggedParticipation.vue +++ b/src/components/Participation/UnloggedParticipation.vue @@ -99,7 +99,7 @@ import { useFetchEvent } from "@/composition/apollo/event"; import { useAnonymousParticipationConfig } from "@/composition/apollo/config"; import { computed } from "vue"; import { useRouter } from "vue-router"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { useI18n } from "vue-i18n"; const props = defineProps<{ uuid: string }>(); diff --git a/src/components/core/MaterialIcon.vue b/src/components/core/MaterialIcon.vue index ea527c729..7d6d4ed63 100644 --- a/src/components/core/MaterialIcon.vue +++ b/src/components/core/MaterialIcon.vue @@ -173,6 +173,8 @@ const icons: Record<string, () => Promise<any>> = { import( `../../../node_modules/vue-material-design-icons/CalendarRemove.vue` ), + CalendarStar: () => + import(`../../../node_modules/vue-material-design-icons/CalendarStar.vue`), FileDocumentEdit: () => import( `../../../node_modules/vue-material-design-icons/FileDocumentEdit.vue` diff --git a/src/composition/apollo/config.ts b/src/composition/apollo/config.ts index 4a44da2d2..be0361e66 100644 --- a/src/composition/apollo/config.ts +++ b/src/composition/apollo/config.ts @@ -4,11 +4,15 @@ import { ANONYMOUS_ACTOR_ID, ANONYMOUS_PARTICIPATION_CONFIG, ANONYMOUS_REPORTS_CONFIG, + DEFAULT_PICTURE, DEMO_MODE, + LONG_EVENTS, EVENT_CATEGORIES, EVENT_PARTICIPANTS, FEATURES, GEOCODING_AUTOCOMPLETE, + COLORS, + INSTANCE_LOGO, LOCATION, MAPS_TILES, REGISTRATIONS, @@ -76,6 +80,36 @@ export function useInstanceName() { return { instanceName, error, loading }; } +export function useInstanceLogoUrl() { + const { result, error, loading } = useQuery<{ + config: Pick<IConfig, "instanceLogo">; + }>(INSTANCE_LOGO); + + const instanceLogoUrl = computed( + () => result.value?.config?.instanceLogo?.url + ); + return { instanceLogoUrl, error, loading }; +} + +export function useColors() { + const { result, error, loading } = useQuery<{ + config: Pick<IConfig, "primaryColor" | "secondaryColor">; + }>(COLORS); + + const primaryColor = computed(() => result.value?.config?.primaryColor); + const secondaryColor = computed(() => result.value?.config?.secondaryColor); + return { primaryColor, secondaryColor, error, loading }; +} + +export function useDefaultPicture() { + const { result, error, loading } = useQuery<{ + config: Pick<IConfig, "defaultPicture">; + }>(DEFAULT_PICTURE); + + const defaultPicture = computed(() => result.value?.config?.defaultPicture); + return { defaultPicture, error, loading }; +} + export function useAnonymousActorId() { const { result, error, loading } = useQuery<{ config: Pick<IConfig, "anonymous">; @@ -188,6 +222,15 @@ export function useIsDemoMode() { return { isDemoMode, error, loading }; } +export function useIsLongEvents() { + const { result, error, loading } = useQuery<{ + config: Pick<IConfig, "longEvents">; + }>(LONG_EVENTS); + + const islongEvents = computed(() => result.value?.config.longEvents); + return { islongEvents, error, loading }; +} + export function useAnalytics() { const { result, error, loading } = useQuery<{ config: Pick<IConfig, "analytics">; diff --git a/src/composition/config.ts b/src/composition/config.ts index 2c5899a18..9da8867cf 100644 --- a/src/composition/config.ts +++ b/src/composition/config.ts @@ -4,6 +4,12 @@ export const useHost = (): string => { return window.location.hostname; }; +export const useDefaultMaxSize = (): number | undefined => { + const { uploadLimits } = useUploadLimits(); + + return uploadLimits.value?.default; +}; + export const useAvatarMaxSize = (): number | undefined => { const { uploadLimits } = useUploadLimits(); diff --git a/src/graphql/admin.ts b/src/graphql/admin.ts index 8520343ac..8c872539e 100644 --- a/src/graphql/admin.ts +++ b/src/graphql/admin.ts @@ -195,6 +195,23 @@ export const ADMIN_SETTINGS_FRAGMENT = gql` instanceLongDescription instanceSlogan contact + instanceLogo { + id + url + name + } + instanceFavicon { + id + url + name + } + defaultPicture { + id + url + name + } + primaryColor + secondaryColor instanceTerms instanceTermsType instanceTermsUrl @@ -223,6 +240,11 @@ export const SAVE_ADMIN_SETTINGS = gql` $instanceLongDescription: String $instanceSlogan: String $contact: String + $instanceLogo: MediaInput + $instanceFavicon: MediaInput + $defaultPicture: MediaInput + $primaryColor: String + $secondaryColor: String $instanceTerms: String $instanceTermsType: InstanceTermsType $instanceTermsUrl: String @@ -239,6 +261,11 @@ export const SAVE_ADMIN_SETTINGS = gql` instanceLongDescription: $instanceLongDescription instanceSlogan: $instanceSlogan contact: $contact + instanceLogo: $instanceLogo + instanceFavicon: $instanceFavicon + defaultPicture: $defaultPicture + primaryColor: $primaryColor + secondaryColor: $secondaryColor instanceTerms: $instanceTerms instanceTermsType: $instanceTermsType instanceTermsUrl: $instanceTermsUrl diff --git a/src/graphql/config.ts b/src/graphql/config.ts index b7e4c7ba3..27d3150e5 100644 --- a/src/graphql/config.ts +++ b/src/graphql/config.ts @@ -10,8 +10,24 @@ export const CONFIG = gql` registrationsOpen registrationsAllowlist demoMode + longEvents countryCode languages + primaryColor + secondaryColor + instanceLogo { + url + } + defaultPicture { + id + url + name + metadata { + width + height + blurhash + } + } eventCategories { id label @@ -425,6 +441,14 @@ export const DEMO_MODE = gql` } `; +export const LONG_EVENTS = gql` + query LongEvents { + config { + longEvents + } + } +`; + export const ANALYTICS = gql` query Analytics { config { @@ -454,6 +478,42 @@ export const SEARCH_CONFIG = gql` } `; +export const INSTANCE_LOGO = gql` + query InstanceLogo { + config { + instanceLogo { + url + } + } + } +`; + +export const COLORS = gql` + query Colors { + config { + primaryColor + secondaryColor + } + } +`; + +export const DEFAULT_PICTURE = gql` + query DefaultPicture { + config { + defaultPicture { + id + url + name + metadata { + width + height + blurhash + } + } + } + } +`; + export const REGISTRATIONS = gql` query Registrations { config { diff --git a/src/graphql/event.ts b/src/graphql/event.ts index 0d7afa535..862e44e55 100644 --- a/src/graphql/event.ts +++ b/src/graphql/event.ts @@ -59,40 +59,6 @@ const FULL_EVENT_FRAGMENT = gql` tags { ...TagFragment } - relatedEvents { - id - uuid - title - beginsOn - endsOn - status - language - picture { - id - url - name - metadata { - width - height - blurhash - } - } - physicalAddress { - ...AdressFragment - } - organizerActor { - ...ActorFragment - } - attributedTo { - ...ActorFragment - } - options { - ...EventOptions - } - tags { - ...TagFragment - } - } options { ...EventOptions } diff --git a/src/graphql/event_options.ts b/src/graphql/event_options.ts index ca521506b..caf19579f 100644 --- a/src/graphql/event_options.ts +++ b/src/graphql/event_options.ts @@ -6,6 +6,7 @@ export const EVENT_OPTIONS_FRAGMENT = gql` remainingAttendeeCapacity showRemainingAttendeeCapacity anonymousParticipation + hideNumberOfParticipants showStartTime showEndTime timezone diff --git a/src/graphql/search.ts b/src/graphql/search.ts index e80ba04d0..aceff8d85 100644 --- a/src/graphql/search.ts +++ b/src/graphql/search.ts @@ -33,6 +33,7 @@ export const SEARCH_EVENTS_AND_GROUPS = gql` $searchTarget: SearchTarget $beginsOn: DateTime $endsOn: DateTime + $longevents: Boolean $bbox: String $zoom: Int $eventPage: Int @@ -54,6 +55,7 @@ export const SEARCH_EVENTS_AND_GROUPS = gql` searchTarget: $searchTarget beginsOn: $beginsOn endsOn: $endsOn + longevents: $longevents bbox: $bbox zoom: $zoom page: $eventPage @@ -67,6 +69,7 @@ export const SEARCH_EVENTS_AND_GROUPS = gql` title uuid beginsOn + endsOn picture { id url @@ -152,6 +155,7 @@ export const SEARCH_EVENTS = gql` $endsOn: DateTime $eventPage: Int $limit: Int + $longevents: Boolean ) { searchEvents( location: $location @@ -164,6 +168,7 @@ export const SEARCH_EVENTS = gql` endsOn: $endsOn page: $eventPage limit: $limit + longevents: $longevents ) { total elements { diff --git a/src/i18n/en_US.json b/src/i18n/en_US.json index f0d63fcaf..066ac2382 100644 --- a/src/i18n/en_US.json +++ b/src/i18n/en_US.json @@ -205,6 +205,7 @@ "No events found": "No events found", "No group found": "No group found", "No groups found": "No groups found", + "No activities found": "No activities found", "No instance follows your instance yet.": "No instance follows your instance yet.", "No instance to approve|Approve instance|Approve {number} instances": "No instance to approve|Approve instance|Approve {number} instances", "No instance to reject|Reject instance|Reject {number} instances": "No instance to reject|Reject instance|Reject {number} instances", @@ -417,6 +418,14 @@ "No one is participating|One person participating|{going} people participating": "No one is participating|One person participating|{going} people participating", "Date and time": "Date and time", "Location": "Location", + "Logo": "Logo", + "Logo of the instance. Defaults to the upstream Mobilizon logo.": "Logo of the instance. Defaults to the upstream Mobilizon logo.", + "Favicon": "Favicon", + "Browser tab icon and PWA icon of the instance. Defaults to the upstream Mobilizon icon.": "Browser tab icon and PWA icon of the instance. Defaults to the upstream Mobilizon icon.", + "Default Picture": "Default Picture", + "Default picture when an event or group doesn't have one.": "Default picture when an event or group doesn't have one.", + "Primary Color": "Primary Color", + "Secondary Color": "Secondary Color", "No resources selected": "No resources selected|One resources selected|{count} resources selected", "You have been invited by {invitedBy} to the following group:": "You have been invited by {invitedBy} to the following group:", "Accept": "Accept", @@ -1395,6 +1404,7 @@ "Reported content": "Reported content", "No results found": "No results found", "{eventsCount} events found": "No events found|One event found|{eventsCount} events found", + "{eventsCount} activities found": "No activities found|One activity found|{eventsCount} activities found", "{groupsCount} groups found": "No groups found|One group found|{groupsCount} groups found", "{resultsCount} results found": "No results found|On result found|{resultsCount} results found", "Loading map": "Loading map", @@ -1645,5 +1655,6 @@ "Only instances with an application actor can be followed": "Only instances with an application actor can be followed", "Domain or instance name": "Domain or instance name", "You need to enter a text": "You need to enter a text", - "Error while adding tag: {error}": "Error while adding tag: {error}" + "Error while adding tag: {error}": "Error while adding tag: {error}", + "From this instance only": "From this instance only" } diff --git a/src/i18n/fr_FR.json b/src/i18n/fr_FR.json index 671f55c16..bd10d5bc7 100644 --- a/src/i18n/fr_FR.json +++ b/src/i18n/fr_FR.json @@ -627,6 +627,14 @@ "Local times ({timezone})": "Heures locales ({timezone})", "Locality": "Commune", "Location": "Lieu", + "Logo": "Logo", + "Logo of the instance. Defaults to the upstream Mobilizon logo.": "Logo de l'instance.", + "Favicon": "Favicon", + "Browser tab icon and PWA icon of the instance. Defaults to the upstream Mobilizon icon.": "Icône de l'onglet du navigateur et de la progressive web app.", + "Default Picture": "Image par défaut", + "Default picture when an event or group doesn't have one.": "Image par défaut quand un évènement ou groupe n'en a pas.", + "Primary Color": "Couleur primaire", + "Secondary Color": "Couleur secondaire", "Log in": "Se connecter", "Log out": "Se déconnecter", "Login": "Se connecter", @@ -716,6 +724,7 @@ "No end date": "Pas de date de fin", "No event found at this address": "Aucun événement trouvé à cette addresse", "No events found": "Aucun événement trouvé", + "No activities found": "Aucun activité trouvé", "No events found for {search}": "Aucun événement trouvé pour {search}", "No follower matches the filters": "Aucun·e abonné·e ne correspond aux filtres", "No group found": "Aucun groupe trouvé", @@ -1544,6 +1553,7 @@ "{count} participants": "Aucun·e participant·e | Un·e participant·e | {count} participant·e·s", "{count} requests waiting": "Une demande en attente|{count} demandes en attente", "{eventsCount} events found": "Aucun événement trouvé|Un événement trouvé|{eventsCount} événements trouvés", + "{eventsCount} activities found": "Aucune activité trouvé|Une activité trouvé|{eventsCount} activités trouvés", "{folder} - Resources": "{folder} - Ressources", "{groupsCount} groups found": "Aucun groupe trouvé|Un groupe trouvé|{groupsCount} groupes trouvés", "{group} activity timeline": "Timeline de l'activité de {group}", @@ -1638,5 +1648,6 @@ "Only instances with an application actor can be followed": "Seules les instances avec un acteur application peuvent être suivies", "Domain or instance name": "Domaine ou nom de l'instance", "You need to enter a text": "Vous devez entrer un texte", - "Error while adding tag: {error}": "Erreur lors de l'ajout d'un tag : {error}" + "Error while adding tag: {error}": "Erreur lors de l'ajout d'un tag : {error}", + "From this instance only": "Depuis cette instance uniquement" } diff --git a/src/main.ts b/src/main.ts index 0ce5ca9cf..551a7de3a 100644 --- a/src/main.ts +++ b/src/main.ts @@ -57,6 +57,21 @@ apolloClient }) .then(({ data: configData }) => { instanceName.value = configData.config?.name; + + const primaryColor = configData.config?.primaryColor; + if (primaryColor) { + document.documentElement.style.setProperty( + "--custom-primary", + primaryColor + ); + } + const secondaryColor = configData.config?.secondaryColor; + if (secondaryColor) { + document.documentElement.style.setProperty( + "--custom-secondary", + secondaryColor + ); + } }); const head = createHead(); diff --git a/src/oruga-config.ts b/src/oruga-config.ts index 7d97f7722..2131f1e39 100644 --- a/src/oruga-config.ts +++ b/src/oruga-config.ts @@ -34,6 +34,8 @@ export const orugaConfig = { sizeClass: (size: string) => { return `input-size-${size}`; }, + iconLeftSpaceClass: "input-iconspace-left", + iconRightSpaceClass: "input-iconspace-right", }, taginput: { itemClass: "taginput-item", diff --git a/src/types/admin.model.ts b/src/types/admin.model.ts index 5c8d62a6f..e85e3e822 100644 --- a/src/types/admin.model.ts +++ b/src/types/admin.model.ts @@ -1,4 +1,5 @@ import type { IEvent } from "@/types/event.model"; +import type { IMedia } from "@/types/media.model"; import type { IGroup } from "./actor"; import { InstancePrivacyType, InstanceTermsType } from "./enums"; @@ -25,6 +26,10 @@ export interface IAdminSettings { instanceSlogan: string; instanceLongDescription: string; contact: string; + instanceLogo: IMedia | null; + defaultPicture: IMedia | null; + primaryColor: string; + secondaryColor: string; instanceTerms: string; instanceTermsType: InstanceTermsType; instanceTermsUrl: string | null; diff --git a/src/types/config.model.ts b/src/types/config.model.ts index e34c39c0a..a88a37efc 100644 --- a/src/types/config.model.ts +++ b/src/types/config.model.ts @@ -37,10 +37,15 @@ export interface IConfig { longDescription: string; contact: string; slogan: string; + instanceLogo: { url: string }; + defaultPicture: { url: string }; + primaryColor: string; + secondaryColor: string; registrationsOpen: boolean; registrationsAllowlist: boolean; demoMode: boolean; + longEvents: boolean; countryCode: string; eventCategories: { id: string; label: string }[]; languages: string[]; diff --git a/src/types/enums.ts b/src/types/enums.ts index 22f8366d0..1c4cc3eab 100644 --- a/src/types/enums.ts +++ b/src/types/enums.ts @@ -134,6 +134,8 @@ export enum SearchTabs { export enum ContentType { ALL = "ALL", EVENTS = "EVENTS", + SHORTEVENTS = "SHORTEVENTS", + LONGEVENTS = "LONGEVENTS", GROUPS = "GROUPS", } diff --git a/src/types/event-options.model.ts b/src/types/event-options.model.ts index 420e21919..cec98a8ef 100644 --- a/src/types/event-options.model.ts +++ b/src/types/event-options.model.ts @@ -24,6 +24,7 @@ export interface IEventOptions { program: string; commentModeration: CommentModeration; showParticipationPrice: boolean; + hideNumberOfParticipants: boolean; showStartTime: boolean; showEndTime: boolean; timezone: string | null; @@ -53,6 +54,8 @@ export class EventOptions implements IEventOptions { showParticipationPrice = false; + hideNumberOfParticipants = false; + showStartTime = true; showEndTime = true; diff --git a/src/types/media.model.ts b/src/types/media.model.ts index 3a85445b4..c8bc7017f 100644 --- a/src/types/media.model.ts +++ b/src/types/media.model.ts @@ -1,3 +1,5 @@ +import type { Ref } from "vue"; + export interface IMedia { id: string; url: string; @@ -21,3 +23,9 @@ export interface IMediaMetadata { height?: number; blurhash?: string; } + +export interface IModifiableMedia { + file: Ref<File | null>; + firstHash: string | null; + hash: string | null; +} diff --git a/src/utils/datetime.ts b/src/utils/datetime.ts index ae490fb62..d1c143591 100644 --- a/src/utils/datetime.ts +++ b/src/utils/datetime.ts @@ -69,10 +69,15 @@ function formatDateTimeForEvent(dateTime: Date, locale: Locale): string { return format(dateTime, "PPp", { locale }); } +function formatDateForEvent(dateTime: Date, locale: Locale): string { + return format(dateTime, "PP", { locale }); +} + export { localeMonthNames, localeShortWeekDayNames, formatBytes, roundToNearestMinute, formatDateTimeForEvent, + formatDateForEvent, }; diff --git a/src/utils/head.ts b/src/utils/head.ts new file mode 100644 index 000000000..c1c04b227 --- /dev/null +++ b/src/utils/head.ts @@ -0,0 +1,22 @@ +import { computed } from "vue"; +import { provideApolloClient, useQuery } from "@vue/apollo-composable"; +import { useHead as unHead } from "@unhead/vue"; +import { apolloClient } from "@/vue-apollo"; +import { IConfig } from "@/types/config.model"; +import { ABOUT } from "@/graphql/config"; + +const { result } = provideApolloClient(apolloClient)(() => + useQuery<{ config: Pick<IConfig, "name"> }>(ABOUT) +); +const instanceName = computed(() => result.value?.config?.name); + +export function useHead(args: any) { + return unHead({ + ...args, + title: computed(() => + args?.title?.value + ? `${args.title.value} - ${instanceName.value}` + : instanceName.value + ), + }); +} diff --git a/src/utils/image.ts b/src/utils/image.ts index 561f2616d..7df531a28 100644 --- a/src/utils/image.ts +++ b/src/utils/image.ts @@ -1,4 +1,5 @@ -import { IMedia } from "@/types/media.model"; +import { IMedia, IModifiableMedia } from "@/types/media.model"; +import { ref, watch } from "vue"; export async function buildFileFromIMedia( obj: IMedia | null | undefined @@ -29,18 +30,83 @@ export function buildFileVariable( }; } -export function readFileAsync( - file: File -): Promise<string | ArrayBuffer | null> { +export function readFileAsync(file: File): Promise<ArrayBuffer | null> { return new Promise((resolve, reject) => { const reader = new FileReader(); reader.onload = () => { - resolve(reader.result); + resolve(reader.result as ArrayBuffer); }; reader.onerror = reject; - reader.readAsBinaryString(file); + reader.readAsArrayBuffer(file); }); } + +export async function fileHash(file: File): Promise<string | null> { + const data = await readFileAsync(file); + if (data === null) return null; + const hash = await crypto.subtle.digest("SHA-1", data); + const b64Hash = btoa( + Array.from(new Uint8Array(hash)) + .map((b) => String.fromCharCode(b)) + .join("") + ); + return b64Hash; +} + +export function initWrappedMedia(): IModifiableMedia { + return { + file: ref<File | null>(null), + firstHash: null, + hash: null, + }; +} + +export async function loadWrappedMedia( + modifiableMedia: IModifiableMedia, + media: IMedia | null +) { + watch(modifiableMedia.file, async () => { + if (modifiableMedia.file.value) { + modifiableMedia.hash = await fileHash(modifiableMedia.file.value); + } else { + modifiableMedia.hash = null; + } + }); + try { + modifiableMedia.file.value = await buildFileFromIMedia(media); + } catch (e) { + console.error("catched error while building media", e); + } + if (modifiableMedia.file.value) { + modifiableMedia.firstHash = await fileHash(modifiableMedia.file.value); + } +} + +export function asMediaInput( + mmedia: IModifiableMedia, + name: string, + fallbackId: number +): any { + const ret = { + [name]: {}, + }; + if (mmedia.file.value) { + if (mmedia.firstHash != mmedia.hash) { + ret[name] = { + media: { + name: mmedia.file.value?.name, + alt: "", + file: mmedia.file.value, + }, + }; + } else { + ret[name] = { + mediaId: fallbackId, + }; + } + } + return ret; +} diff --git a/src/views/About/AboutInstanceView.vue b/src/views/About/AboutInstanceView.vue index c89277bbf..f57969443 100644 --- a/src/views/About/AboutInstanceView.vue +++ b/src/views/About/AboutInstanceView.vue @@ -123,7 +123,7 @@ import { IStatistics } from "../../types/statistics.model"; import { useQuery } from "@vue/apollo-composable"; import { computed } from "vue"; import { useI18n } from "vue-i18n"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; const { result: configResult } = useQuery<{ config: IConfig }>(ABOUT); diff --git a/src/views/About/GlossaryView.vue b/src/views/About/GlossaryView.vue index 40000e4e3..76d9f199e 100644 --- a/src/views/About/GlossaryView.vue +++ b/src/views/About/GlossaryView.vue @@ -71,7 +71,7 @@ <script lang="ts" setup> import { useQuery } from "@vue/apollo-composable"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { computed } from "vue"; import { useI18n } from "vue-i18n"; import { ABOUT } from "../../graphql/config"; diff --git a/src/views/About/PrivacyView.vue b/src/views/About/PrivacyView.vue index ee458ab78..290ad93a4 100644 --- a/src/views/About/PrivacyView.vue +++ b/src/views/About/PrivacyView.vue @@ -14,7 +14,7 @@ import { PRIVACY } from "@/graphql/config"; import { IConfig } from "@/types/config.model"; import { InstancePrivacyType } from "@/types/enums"; import { useQuery } from "@vue/apollo-composable"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { computed, watch } from "vue"; import { useI18n } from "vue-i18n"; diff --git a/src/views/About/RulesView.vue b/src/views/About/RulesView.vue index 278fe3d94..adcc455eb 100644 --- a/src/views/About/RulesView.vue +++ b/src/views/About/RulesView.vue @@ -14,7 +14,7 @@ import { RULES } from "@/graphql/config"; import { IConfig } from "@/types/config.model"; import { useQuery } from "@vue/apollo-composable"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { computed } from "vue"; import { useI18n } from "vue-i18n"; diff --git a/src/views/About/TermsView.vue b/src/views/About/TermsView.vue index 5f24a36fb..aa9986e85 100644 --- a/src/views/About/TermsView.vue +++ b/src/views/About/TermsView.vue @@ -15,7 +15,7 @@ import { TERMS } from "@/graphql/config"; import { IConfig } from "@/types/config.model"; import { InstanceTermsType } from "@/types/enums"; import { useQuery } from "@vue/apollo-composable"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { computed, watch } from "vue"; import { useI18n } from "vue-i18n"; diff --git a/src/views/AboutView.vue b/src/views/AboutView.vue index 2b48b9bda..8870858ab 100644 --- a/src/views/AboutView.vue +++ b/src/views/AboutView.vue @@ -113,7 +113,7 @@ import { useQuery } from "@vue/apollo-composable"; import { computed } from "vue"; import { useCurrentUserClient } from "@/composition/apollo/user"; import { useI18n } from "vue-i18n"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; const { currentUser } = useCurrentUserClient(); diff --git a/src/views/Account/RegisterView.vue b/src/views/Account/RegisterView.vue index 5741068d0..70a587969 100644 --- a/src/views/Account/RegisterView.vue +++ b/src/views/Account/RegisterView.vue @@ -140,7 +140,7 @@ import { useRouter } from "vue-router"; import { registerAccount } from "@/composition/apollo/user"; import { convertToUsername } from "@/utils/username"; import { useI18n } from "vue-i18n"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { getValueFromMeta } from "@/utils/html"; const props = withDefaults( diff --git a/src/views/Account/children/EditIdentity.vue b/src/views/Account/children/EditIdentity.vue index da5f64042..d14fb7d25 100644 --- a/src/views/Account/children/EditIdentity.vue +++ b/src/views/Account/children/EditIdentity.vue @@ -224,7 +224,7 @@ import { Dialog } from "@/plugins/dialog"; import { Notifier } from "@/plugins/notifier"; import { AbsintheGraphQLErrors } from "@/types/errors.model"; import { ICurrentUser } from "@/types/current-user.model"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; const { t } = useI18n({ useScope: "global" }); const router = useRouter(); diff --git a/src/views/Admin/AdminGroupProfile.vue b/src/views/Admin/AdminGroupProfile.vue index 32795b074..54a95d342 100644 --- a/src/views/Admin/AdminGroupProfile.vue +++ b/src/views/Admin/AdminGroupProfile.vue @@ -336,7 +336,7 @@ import EmptyContent from "../../components/Utils/EmptyContent.vue"; import { ApolloCache, FetchResult } from "@apollo/client/core"; import { useMutation, useQuery } from "@vue/apollo-composable"; import { computed, inject } from "vue"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { integerTransformer, useRouteQuery } from "vue-use-route-query"; import { useI18n } from "vue-i18n"; import { diff --git a/src/views/Admin/AdminProfile.vue b/src/views/Admin/AdminProfile.vue index daceb6aac..953934a80 100644 --- a/src/views/Admin/AdminProfile.vue +++ b/src/views/Admin/AdminProfile.vue @@ -319,7 +319,7 @@ import { MemberRole } from "@/types/enums"; import cloneDeep from "lodash/cloneDeep"; import { useMutation, useQuery } from "@vue/apollo-composable"; import { integerTransformer, useRouteQuery } from "vue-use-route-query"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { computed } from "vue"; import { useI18n } from "vue-i18n"; import { diff --git a/src/views/Admin/AdminUserProfile.vue b/src/views/Admin/AdminUserProfile.vue index d05c90cf8..dfeb7969c 100644 --- a/src/views/Admin/AdminUserProfile.vue +++ b/src/views/Admin/AdminUserProfile.vue @@ -327,7 +327,7 @@ import { ADMIN_UPDATE_USER, LANGUAGES_CODES } from "@/graphql/admin"; import { useMutation, useQuery } from "@vue/apollo-composable"; import { ILanguage } from "@/types/admin.model"; import { computed, inject, reactive, ref, watch } from "vue"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { useI18n } from "vue-i18n"; import { formatDateTimeString } from "@/filters/datetime"; import { useRouter } from "vue-router"; diff --git a/src/views/Admin/DashboardView.vue b/src/views/Admin/DashboardView.vue index a6e0157b4..7d7d2c2cb 100644 --- a/src/views/Admin/DashboardView.vue +++ b/src/views/Admin/DashboardView.vue @@ -90,7 +90,7 @@ import RouteName from "@/router/name"; import { useQuery } from "@vue/apollo-composable"; import { computed } from "vue"; import { useI18n } from "vue-i18n"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import NumberDashboardTile from "@/components/Dashboard/NumberDashboardTile.vue"; import LinkedNumberDashboardTile from "@/components/Dashboard/LinkedNumberDashboardTile.vue"; import { InstanceFilterFollowStatus } from "@/types/enums"; diff --git a/src/views/Admin/GroupProfiles.vue b/src/views/Admin/GroupProfiles.vue index 123fea9f3..74b1500c4 100644 --- a/src/views/Admin/GroupProfiles.vue +++ b/src/views/Admin/GroupProfiles.vue @@ -119,7 +119,7 @@ import { useRouteQuery, } from "vue-use-route-query"; import { useI18n } from "vue-i18n"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { computed } from "vue"; import { Paginate } from "@/types/paginate"; import { IGroup } from "@/types/actor"; diff --git a/src/views/Admin/InstancesView.vue b/src/views/Admin/InstancesView.vue index df2a74b30..f9ae6b625 100644 --- a/src/views/Admin/InstancesView.vue +++ b/src/views/Admin/InstancesView.vue @@ -235,7 +235,7 @@ import { import { useMutation, useQuery } from "@vue/apollo-composable"; import { computed, inject, ref, watch } from "vue"; import { useRouter } from "vue-router"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import CloudQuestion from "../../../node_modules/vue-material-design-icons/CloudQuestion.vue"; import { Notifier } from "@/plugins/notifier"; import MastodonLogo from "@/components/Share/MastodonLogo.vue"; diff --git a/src/views/Admin/ProfilesView.vue b/src/views/Admin/ProfilesView.vue index 09df3e2f5..1445bcf40 100644 --- a/src/views/Admin/ProfilesView.vue +++ b/src/views/Admin/ProfilesView.vue @@ -103,7 +103,7 @@ import EmptyContent from "@/components/Utils/EmptyContent.vue"; import { useQuery } from "@vue/apollo-composable"; import { useI18n } from "vue-i18n"; import { computed } from "vue"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { useRouteQuery, booleanTransformer, diff --git a/src/views/Admin/SettingsView.vue b/src/views/Admin/SettingsView.vue index 1c4a6391b..58030d8b5 100644 --- a/src/views/Admin/SettingsView.vue +++ b/src/views/Admin/SettingsView.vue @@ -59,6 +59,70 @@ </small> <o-input v-model="settingsToWrite.contact" id="instance-contact" /> </div> + <label class="field flex flex-col"> + <p>{{ t("Logo") }}</p> + <small> + {{ + t( + "Logo of the instance. Defaults to the upstream Mobilizon logo." + ) + }} + </small> + <picture-upload + v-model:modelValue="instanceLogoFile" + :defaultImage="settingsToWrite.instanceLogo" + :textFallback="t('Logo')" + :maxSize="maxSize" + /> + </label> + <label class="field flex flex-col"> + <p>{{ t("Favicon") }}</p> + <small> + {{ + t( + "Browser tab icon and PWA icon of the instance. Defaults to the upstream Mobilizon icon." + ) + }} + </small> + <picture-upload + v-model:modelValue="instanceFaviconFile" + :defaultImage="settingsToWrite.instanceFavicon" + :textFallback="t('Favicon')" + :maxSize="maxSize" + /> + </label> + <label class="field flex flex-col"> + <p>{{ t("Default Picture") }}</p> + <small> + {{ t("Default picture when an event or group doesn't have one.") }} + </small> + <picture-upload + v-model:modelValue="defaultPictureFile" + :defaultImage="settingsToWrite.defaultPicture" + :textFallback="t('Default Picture')" + :maxSize="maxSize" + /> + </label> + <!-- piece of code to manage instance colors + <div class="field flex flex-col"> + <label class="" for="primary-color">{{ t("Primary Color") }}</label> + <o-input + type="color" + v-model="settingsToWrite.primaryColor" + id="primary-color" + /> + </div> + <div class="field flex flex-col"> + <label class="" for="secondary-color">{{ + t("Secondary Color") + }}</label> + <o-input + type="color" + v-model="settingsToWrite.secondaryColor" + id="secondary-color" + /> + </div> + --> <o-field :label="t('Allow registrations')"> <o-switch v-model="settingsToWrite.registrationsOpen"> <p @@ -390,15 +454,29 @@ import RouteName from "@/router/name"; import { useMutation, useQuery } from "@vue/apollo-composable"; import { ref, computed, watch, inject } from "vue"; import { useI18n } from "vue-i18n"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import type { Notifier } from "@/plugins/notifier"; +// Media upload related +import PictureUpload from "@/components/PictureUpload.vue"; +import { + initWrappedMedia, + loadWrappedMedia, + asMediaInput, +} from "@/utils/image"; +import { useDefaultMaxSize } from "@/composition/config"; + const defaultAdminSettings: IAdminSettings = { instanceName: "", instanceDescription: "", instanceSlogan: "", instanceLongDescription: "", contact: "", + instanceLogo: null, + instanceFavicon: null, + defaultPicture: null, + primaryColor: "", + secondaryColor: "", instanceTerms: "", instanceTermsType: InstanceTermsType.DEFAULT, instanceTermsUrl: null, @@ -410,12 +488,30 @@ const defaultAdminSettings: IAdminSettings = { instanceLanguages: [], }; -const { result: adminSettingsResult } = useQuery<{ +const { onResult: onAdminSettingsResult } = useQuery<{ adminSettings: IAdminSettings; }>(ADMIN_SETTINGS); -const adminSettings = computed( - () => adminSettingsResult.value?.adminSettings ?? defaultAdminSettings -); + +const adminSettings = ref<IAdminSettings>(); + +onAdminSettingsResult(async ({ data }) => { + if (!data) return; + adminSettings.value = + { + ...data.adminSettings, + } ?? defaultAdminSettings; + + loadWrappedMedia(instanceLogo, adminSettings.value.instanceLogo); + loadWrappedMedia(instanceFavicon, adminSettings.value.instanceFavicon); + loadWrappedMedia(defaultPicture, adminSettings.value.defaultPicture); +}); + +const instanceLogo = initWrappedMedia(); +const { file: instanceLogoFile } = instanceLogo; +const instanceFavicon = initWrappedMedia(); +const { file: instanceFaviconFile } = instanceFavicon; +const defaultPicture = initWrappedMedia(); +const { file: defaultPictureFile } = defaultPicture; const { result: languageResult } = useQuery<{ languages: ILanguage[] }>( LANGUAGES @@ -464,6 +560,9 @@ const { } = useMutation(SAVE_ADMIN_SETTINGS); saveAdminSettingsDone(() => { + instanceLogo.firstHash = instanceLogo.hash; + instanceFavicon.firstHash = instanceFavicon.hash; + defaultPicture.firstHash = defaultPicture.hash; notifier?.success(t("Admin settings successfully saved.") as string); }); @@ -473,11 +572,29 @@ saveAdminSettingsError((e) => { }); const updateSettings = async (): Promise<void> => { - const variables = { ...settingsToWrite.value }; - console.debug("updating settings with variables", variables); + const variables = { + ...settingsToWrite.value, + ...asMediaInput( + instanceLogo, + "instanceLogo", + adminSettings.value?.instanceLogo?.id + ), + ...asMediaInput( + instanceFavicon, + "instanceFavicon", + adminSettings.value?.instanceFavicon?.id + ), + ...asMediaInput( + defaultPicture, + "defaultPicture", + adminSettings.value?.defaultPicture?.id + ), + }; saveAdminSettings(variables); }; +const maxSize = useDefaultMaxSize(); + const getFilteredLanguages = (text: string): void => { filteredLanguages.value = languages.value ? languages.value diff --git a/src/views/Admin/UsersView.vue b/src/views/Admin/UsersView.vue index d6adece15..bfd72b7c0 100644 --- a/src/views/Admin/UsersView.vue +++ b/src/views/Admin/UsersView.vue @@ -110,7 +110,7 @@ import { useQuery } from "@vue/apollo-composable"; import { ILanguage } from "@/types/admin.model"; import { computed, ref } from "vue"; import { useI18n } from "vue-i18n"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { integerTransformer, useRouteQuery } from "vue-use-route-query"; import { formatDateTimeString } from "@/filters/datetime"; diff --git a/src/views/CategoriesView.vue b/src/views/CategoriesView.vue index 3cfaae82f..41395de00 100644 --- a/src/views/CategoriesView.vue +++ b/src/views/CategoriesView.vue @@ -103,7 +103,7 @@ import { import { useI18n } from "vue-i18n"; import { useEventCategories } from "@/composition/apollo/config"; import EmptyContent from "@/components/Utils/EmptyContent.vue"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; const { t } = useI18n({ useScope: "global" }); diff --git a/src/views/Conversations/ConversationListView.vue b/src/views/Conversations/ConversationListView.vue index 0aee3d89a..6a591e90c 100644 --- a/src/views/Conversations/ConversationListView.vue +++ b/src/views/Conversations/ConversationListView.vue @@ -54,7 +54,7 @@ import { import { PROFILE_CONVERSATIONS } from "@/graphql/event"; import ConversationListItem from "../../components/Conversations/ConversationListItem.vue"; import EmptyContent from "../../components/Utils/EmptyContent.vue"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { IPerson } from "@/types/actor"; import { useOruga } from "@oruga-ui/oruga-next"; import { arrayTransformer } from "@/utils/route"; diff --git a/src/views/Conversations/ConversationView.vue b/src/views/Conversations/ConversationView.vue index 79402efa2..505ca3e7f 100644 --- a/src/views/Conversations/ConversationView.vue +++ b/src/views/Conversations/ConversationView.vue @@ -189,7 +189,7 @@ import { onMounted, onUnmounted, } from "vue"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { useRouter } from "vue-router"; import { useCurrentActorClient } from "../../composition/apollo/actor"; import { AbsintheGraphQLError } from "../../types/errors.model"; diff --git a/src/views/Discussions/CreateView.vue b/src/views/Discussions/CreateView.vue index 916291617..e0e201f73 100644 --- a/src/views/Discussions/CreateView.vue +++ b/src/views/Discussions/CreateView.vue @@ -70,7 +70,7 @@ import { useI18n } from "vue-i18n"; import { useMutation } from "@vue/apollo-composable"; import { IDiscussion } from "@/types/discussions"; import { useRouter } from "vue-router"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { Notifier } from "@/plugins/notifier"; import { AbsintheGraphQLError } from "@/types/errors.model"; diff --git a/src/views/Discussions/DiscussionView.vue b/src/views/Discussions/DiscussionView.vue index 6d7e09c0f..ad72b7be3 100644 --- a/src/views/Discussions/DiscussionView.vue +++ b/src/views/Discussions/DiscussionView.vue @@ -98,7 +98,6 @@ </form> </div> <discussion-comment - class="border rounded-md p-2 mt-4" v-for="comment in discussion.comments.elements" :key="comment.id" :model-value="comment" @@ -172,7 +171,7 @@ import { computed, inject, } from "vue"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { useRouter } from "vue-router"; import { useCurrentActorClient } from "@/composition/apollo/actor"; import { AbsintheGraphQLError } from "@/types/errors.model"; @@ -180,6 +179,7 @@ import { MemberRole } from "@/types/enums"; import { PERSON_MEMBERSHIPS } from "@/graphql/actor"; import { Dialog } from "@/plugins/dialog"; import { useI18n } from "vue-i18n"; +import { watch } from "vue"; const props = defineProps<{ slug: string }>(); @@ -188,6 +188,8 @@ const COMMENTS_PER_PAGE = 10; const { currentActor } = useCurrentActorClient(); +const slug = computed(() => props.slug); + const { result: discussionResult, onError: onDiscussionError, @@ -197,52 +199,55 @@ const { } = useQuery<{ discussion: IDiscussion }>( GET_DISCUSSION, () => ({ - slug: props.slug, + slug: slug.value, page: page.value, limit: COMMENTS_PER_PAGE, }), () => ({ - enabled: props.slug !== undefined, + enabled: slug.value !== undefined, }) ); -subscribeToMore({ - document: DISCUSSION_COMMENT_CHANGED, - variables: () => ({ - slug: props.slug, - page: page.value, - limit: COMMENTS_PER_PAGE, - }), - updateQuery( - previousResult: any, - { subscriptionData }: { subscriptionData: any } - ) { - const previousDiscussion = previousResult.discussion; - const lastComment = - subscriptionData.data.discussionCommentChanged.lastComment; - hasMoreComments.value = !previousDiscussion.comments.elements.some( - (comment: IComment) => comment.id === lastComment.id - ); - if (hasMoreComments.value) { - return { - discussion: { - ...previousDiscussion, - lastComment: lastComment, - comments: { - elements: [ - ...previousDiscussion.comments.elements.filter( - ({ id }: { id: string }) => id !== lastComment.id - ), - lastComment, - ], - total: previousDiscussion.comments.total + 1, +watch(slug, (newSlug: string | undefined | null) => { + if (!newSlug) return; + subscribeToMore({ + document: DISCUSSION_COMMENT_CHANGED, + variables: () => ({ + slug: slug.value, + page: page.value, + limit: COMMENTS_PER_PAGE, + }), + updateQuery( + previousResult: any, + { subscriptionData }: { subscriptionData: any } + ) { + const previousDiscussion = previousResult.discussion; + const lastComment = + subscriptionData.data.discussionCommentChanged.lastComment; + hasMoreComments.value = !previousDiscussion.comments.elements.some( + (comment: IComment) => comment.id === lastComment.id + ); + if (hasMoreComments.value) { + return { + discussion: { + ...previousDiscussion, + lastComment: lastComment, + comments: { + elements: [ + ...previousDiscussion.comments.elements.filter( + ({ id }: { id: string }) => id !== lastComment.id + ), + lastComment, + ], + total: previousDiscussion.comments.total + 1, + }, }, - }, - }; - } + }; + } - return previousDiscussion; - }, + return previousDiscussion; + }, + }); }); const discussion = computed(() => discussionResult.value?.discussion); @@ -272,7 +277,7 @@ const { mutate: replyToDiscussionMutation } = useMutation<{ }>({ query: GET_DISCUSSION, variables: { - slug: props.slug, + slug: slug.value, page: page.value, }, }); @@ -281,7 +286,7 @@ const { mutate: replyToDiscussionMutation } = useMutation<{ store.writeQuery({ query: GET_DISCUSSION, - variables: { slug: props.slug, page: page.value }, + variables: { slug: slug.value, page: page.value }, data: { discussion: { ...discussionCached, @@ -324,7 +329,7 @@ const { mutate: updateComment } = useMutation< }>({ query: GET_DISCUSSION, variables: { - slug: props.slug, + slug: slug.value, page: page.value, }, }); @@ -339,7 +344,7 @@ const { mutate: updateComment } = useMutation< } store.writeQuery({ query: GET_DISCUSSION, - variables: { slug: props.slug, page: page.value }, + variables: { slug: slug.value, page: page.value }, data: { discussion: discussionCached }, }); }, @@ -379,7 +384,7 @@ const loadMoreComments = async (): Promise<void> => { await fetchMore({ // New variables variables: { - slug: props.slug, + slug: slug.value, page: page.value, limit: COMMENTS_PER_PAGE, }, diff --git a/src/views/Discussions/DiscussionsListView.vue b/src/views/Discussions/DiscussionsListView.vue index c04d526dc..a3ac17be0 100644 --- a/src/views/Discussions/DiscussionsListView.vue +++ b/src/views/Discussions/DiscussionsListView.vue @@ -83,7 +83,7 @@ import EmptyContent from "@/components/Utils/EmptyContent.vue"; import { usePersonStatusGroup } from "@/composition/apollo/actor"; import { useI18n } from "vue-i18n"; import { useRouteQuery, integerTransformer } from "vue-use-route-query"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { computed } from "vue"; const page = useRouteQuery("page", 1, integerTransformer); diff --git a/src/views/ErrorView.vue b/src/views/ErrorView.vue index 6138389a7..8fa96d858 100644 --- a/src/views/ErrorView.vue +++ b/src/views/ErrorView.vue @@ -12,7 +12,7 @@ <script lang="ts" setup> import { ErrorCode } from "@/types/enums"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { useI18n } from "vue-i18n"; import { useRouteQuery } from "vue-use-route-query"; import { computed } from "vue"; diff --git a/src/views/Event/AnnouncementView.vue b/src/views/Event/AnnouncementView.vue index cdd5a4dcd..674d72153 100644 --- a/src/views/Event/AnnouncementView.vue +++ b/src/views/Event/AnnouncementView.vue @@ -24,7 +24,7 @@ import RouteName from "@/router/name"; import { computed } from "vue"; import { useI18n } from "vue-i18n"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import EventConversations from "../../components/Conversations/EventConversations.vue"; import NewPrivateMessage from "../../components/Participation/NewPrivateMessage.vue"; import { useFetchEvent } from "@/composition/apollo/event"; diff --git a/src/views/Event/EditView.vue b/src/views/Event/EditView.vue index 0f1d15eb2..804e9b057 100644 --- a/src/views/Event/EditView.vue +++ b/src/views/Event/EditView.vue @@ -241,19 +241,36 @@ {{ t('Page limited to my group (asks for auth)') }} </o-radio> </div>--> + </section> + <section class="my-4"> + <h2> + {{ t("How to register") }} + </h2> + + <div class="field"> + <o-radio + v-model="registerOption" + name="registerOption" + :native-value="RegisterOption.MOBILIZON" + >{{ t("I want to manage the registration on Mobilizon") }}</o-radio + > + </div> + + <div class="field"> + <o-radio + v-model="registerOption" + name="registerOption" + :native-value="RegisterOption.EXTERNAL" + >{{ + t("I want to manage the registration with an external provider") + }}</o-radio + > + </div> <o-field - :label="t('External registration')" - v-if="features?.eventExternal" + v-if="registerOption === RegisterOption.EXTERNAL" + :label="t('URL')" > - <o-switch v-model="externalParticipation"> - {{ - t("I want to manage the registration with an external provider") - }} - </o-switch> - </o-field> - - <o-field v-if="externalParticipation" :label="t('URL')"> <o-input icon="link" type="url" @@ -264,7 +281,10 @@ </o-field> <o-field - v-if="anonymousParticipationConfig?.allowed && !externalParticipation" + v-if=" + anonymousParticipationConfig?.allowed && + registerOption === RegisterOption.MOBILIZON + " :label="t('Anonymous participations')" > <o-switch v-model="eventOptions.anonymousParticipation"> @@ -287,20 +307,35 @@ <o-field :label="t('Participation approval')" - v-show="!externalParticipation" + v-show="registerOption === RegisterOption.MOBILIZON" > <o-switch v-model="needsApproval">{{ t("I want to approve every participation request") }}</o-switch> </o-field> - <o-field :label="t('Number of places')" v-show="!externalParticipation"> + <o-field + :label="t('Showing participants')" + v-show="registerOption === RegisterOption.MOBILIZON" + > + <o-switch v-model="hideParticipants">{{ + t("Hide the number of participants") + }}</o-switch> + </o-field> + + <o-field + :label="t('Number of places')" + v-show="registerOption === RegisterOption.MOBILIZON" + > <o-switch v-model="limitedPlaces">{{ t("Limited number of places") }}</o-switch> </o-field> - <div class="" v-if="limitedPlaces && !externalParticipation"> + <div + class="" + v-if="limitedPlaces && registerOption === RegisterOption.MOBILIZON" + > <o-field :label="t('Number of places')" label-for="number-of-places"> <o-input type="number" @@ -635,7 +670,7 @@ import { import { useMutation } from "@vue/apollo-composable"; import { Dialog } from "@/plugins/dialog"; import { Notifier } from "@/plugins/notifier"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { useOruga } from "@oruga-ui/oruga-next"; import type { Locale } from "date-fns"; import sortBy from "lodash/sortBy"; @@ -1091,6 +1126,15 @@ const needsApproval = computed({ }, }); +const hideParticipants = computed({ + get(): boolean { + return event.value?.options.hideNumberOfParticipants; + }, + set(value: boolean) { + event.value.options.hideNumberOfParticipants = value; + }, +}); + const checkTitleLength = computed((): Array<string | undefined> => { return event.value.title.length > 80 ? ["info", t("The event title will be ellipsed.")] @@ -1359,12 +1403,19 @@ const orderedCategories = computed(() => { return sortBy(eventCategories.value, ["label"]); }); -const externalParticipation = computed({ +const RegisterOption = { + MOBILIZON: "mobilizon", + EXTERNAL: "external", +}; + +const registerOption = computed({ get() { - return event.value?.joinOptions === EventJoinOptions.EXTERNAL; + return event.value?.joinOptions === EventJoinOptions.EXTERNAL + ? RegisterOption.EXTERNAL + : RegisterOption.MOBILIZON; }, set(newValue) { - if (newValue === true) { + if (newValue === RegisterOption.EXTERNAL) { event.value.joinOptions = EventJoinOptions.EXTERNAL; } else { event.value.joinOptions = EventJoinOptions.FREE; diff --git a/src/views/Event/EventView.vue b/src/views/Event/EventView.vue index a02c717f2..f300dd89c 100755 --- a/src/views/Event/EventView.vue +++ b/src/views/Event/EventView.vue @@ -18,7 +18,10 @@ /> </div> - <div class="start-time-icon-wrapper relative" v-if="event?.beginsOn"> + <div + class="start-time-icon-wrapper relative" + v-if="event?.beginsOn && event?.options.showStartTime" + > <start-time-icon :date="event.beginsOn.toString()" class="absolute right-3 -top-16" @@ -334,7 +337,7 @@ import { import { useI18n } from "vue-i18n"; import { Notifier } from "@/plugins/notifier"; import { AbsintheGraphQLErrors } from "@/types/errors.model"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; const IntegrationTwitch = defineAsyncComponent( () => import("@/components/Event/Integrations/TwitchIntegration.vue") diff --git a/src/views/Event/GroupEvents.vue b/src/views/Event/GroupEvents.vue index d0717804e..6f3fee269 100644 --- a/src/views/Event/GroupEvents.vue +++ b/src/views/Event/GroupEvents.vue @@ -116,7 +116,7 @@ import { useRouteQuery, } from "vue-use-route-query"; import { MemberRole } from "@/types/enums"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { useI18n } from "vue-i18n"; const EVENTS_PAGE_LIMIT = 10; diff --git a/src/views/Event/MyEventsView.vue b/src/views/Event/MyEventsView.vue index c38d743ca..7cf8bcf43 100644 --- a/src/views/Event/MyEventsView.vue +++ b/src/views/Event/MyEventsView.vue @@ -151,7 +151,6 @@ true // !$apollo.loading " > - <div class="img-container h-64 prose" /> <div class="text-center prose dark:prose-invert max-w-full"> <p> {{ @@ -237,7 +236,7 @@ import { import { Locale } from "date-fns"; import { useI18n } from "vue-i18n"; import { useRestrictions } from "@/composition/apollo/config"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; const EventParticipationCard = defineAsyncComponent( () => import("@/components/Event/EventParticipationCard.vue") @@ -500,24 +499,3 @@ useHead({ title: computed(() => t("My events")), }); </script> - -<style lang="scss"> -.not-found { - .img-container { - background-image: url("../../../img/pics/event_creation-480w.webp"); - - @media (min-resolution: 2dppx) { - & { - background-image: url("../../../img/pics/event_creation-1024w.webp"); - } - } - - max-width: 450px; - height: 300px; - box-shadow: 0 0 8px 8px white inset; - background-size: cover; - border-radius: 10px; - margin: auto auto 1rem; - } -} -</style> diff --git a/src/views/Event/ParticipantsView.vue b/src/views/Event/ParticipantsView.vue index e5f33aee0..fe6dbba99 100644 --- a/src/views/Event/ParticipantsView.vue +++ b/src/views/Event/ParticipantsView.vue @@ -284,7 +284,7 @@ import Incognito from "vue-material-design-icons/Incognito.vue"; import EmptyContent from "@/components/Utils/EmptyContent.vue"; import { Notifier } from "@/plugins/notifier"; import Tag from "@/components/TagElement.vue"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; const PARTICIPANTS_PER_PAGE = 10; const MESSAGE_ELLIPSIS_LENGTH = 130; diff --git a/src/views/Group/CreateView.vue b/src/views/Group/CreateView.vue index 361932805..97972cbb7 100644 --- a/src/views/Group/CreateView.vue +++ b/src/views/Group/CreateView.vue @@ -232,7 +232,7 @@ import { useHost, } from "@/composition/config"; import { Notifier } from "@/plugins/notifier"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { Openness, GroupVisibility } from "@/types/enums"; import FullAddressAutoComplete from "@/components/Event/FullAddressAutoComplete.vue"; diff --git a/src/views/Group/GroupFollowers.vue b/src/views/Group/GroupFollowers.vue index 7f3d1e3b6..12571836f 100644 --- a/src/views/Group/GroupFollowers.vue +++ b/src/views/Group/GroupFollowers.vue @@ -126,7 +126,7 @@ import { useRouteQuery, } from "vue-use-route-query"; import { computed, inject } from "vue"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { useI18n } from "vue-i18n"; import { usePersonStatusGroup } from "@/composition/apollo/actor"; import { MemberRole } from "@/types/enums"; diff --git a/src/views/Group/GroupMembers.vue b/src/views/Group/GroupMembers.vue index e873e155d..57dc45621 100644 --- a/src/views/Group/GroupMembers.vue +++ b/src/views/Group/GroupMembers.vue @@ -250,7 +250,7 @@ import { } from "@/graphql/member"; import { usernameWithDomain, displayName, IGroup } from "@/types/actor"; import EmptyContent from "@/components/Utils/EmptyContent.vue"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { useI18n } from "vue-i18n"; import { useMutation, useQuery } from "@vue/apollo-composable"; import { computed, inject, ref } from "vue"; diff --git a/src/views/Group/GroupSettings.vue b/src/views/Group/GroupSettings.vue index ef187c31a..498b3aa4e 100644 --- a/src/views/Group/GroupSettings.vue +++ b/src/views/Group/GroupSettings.vue @@ -209,7 +209,7 @@ import { DELETE_GROUP } from "@/graphql/group"; import { useMutation } from "@vue/apollo-composable"; import { useRouter } from "vue-router"; import { Dialog } from "@/plugins/dialog"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { Notifier } from "@/plugins/notifier"; const Editor = defineAsyncComponent( diff --git a/src/views/Group/GroupView.vue b/src/views/Group/GroupView.vue index b1cff7294..8ad28bdda 100644 --- a/src/views/Group/GroupView.vue +++ b/src/views/Group/GroupView.vue @@ -707,7 +707,7 @@ import AccountMultiplePlus from "vue-material-design-icons/AccountMultiplePlus.v import Earth from "vue-material-design-icons/Earth.vue"; import { useI18n } from "vue-i18n"; import { useCreateReport } from "@/composition/apollo/report"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import Discussions from "@/components/Group/Sections/DiscussionsSection.vue"; import Resources from "@/components/Group/Sections/ResourcesSection.vue"; import Posts from "@/components/Group/Sections/PostsSection.vue"; diff --git a/src/views/Group/MyGroups.vue b/src/views/Group/MyGroups.vue index 01f92a929..bffdb927f 100644 --- a/src/views/Group/MyGroups.vue +++ b/src/views/Group/MyGroups.vue @@ -48,7 +48,6 @@ > <div class=""> <div class=""> - <div class="img-container" /> <div class="text-center prose dark:prose-invert max-w-full"> <p> {{ t("You are not part of any group.") }} @@ -92,7 +91,7 @@ import { useMutation, useQuery } from "@vue/apollo-composable"; import { IUser } from "@/types/current-user.model"; import { integerTransformer, useRouteQuery } from "vue-use-route-query"; import { computed, inject } from "vue"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { useI18n } from "vue-i18n"; import { useRouter } from "vue-router"; import { Notifier } from "@/plugins/notifier"; @@ -201,23 +200,4 @@ section { .group-member-card { margin-bottom: 1rem; } - -.not-found { - .img-container { - background-image: url("../../../img/pics/group-480w.webp"); - - @media (min-resolution: 2dppx) { - & { - background-image: url("../../../img/pics/group-1024w.webp"); - } - } - - max-width: 450px; - height: 300px; - box-shadow: 0 0 8px 8px white inset; - background-size: cover; - border-radius: 10px; - margin: auto auto 1rem; - } -} </style> diff --git a/src/views/Group/SettingsView.vue b/src/views/Group/SettingsView.vue index 468c27d02..1df8dd575 100644 --- a/src/views/Group/SettingsView.vue +++ b/src/views/Group/SettingsView.vue @@ -32,7 +32,7 @@ <script lang="ts" setup> import { computed } from "vue"; import { useI18n } from "vue-i18n"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import RouteName from "@/router/name"; import SettingMenuSection from "@/components/Settings/SettingMenuSection.vue"; import SettingMenuItem from "@/components/Settings/SettingMenuItem.vue"; diff --git a/src/views/Group/TimelineView.vue b/src/views/Group/TimelineView.vue index 99d7a8566..402d435d4 100644 --- a/src/views/Group/TimelineView.vue +++ b/src/views/Group/TimelineView.vue @@ -166,7 +166,7 @@ import SkeletonActivityItem from "../../components/Activity/SkeletonActivityItem import RouteName from "../../router/name"; import TimelineText from "vue-material-design-icons/TimelineText.vue"; import { useQuery } from "@vue/apollo-composable"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { enumTransformer, useRouteQuery } from "vue-use-route-query"; import { computed, defineAsyncComponent, ref } from "vue"; import { useI18n } from "vue-i18n"; diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue index 918a95ff7..ddd3b0e54 100644 --- a/src/views/HomeView.vue +++ b/src/views/HomeView.vue @@ -110,51 +110,15 @@ > </span> </section> - <!-- Recent events + <!-- Recent events --> <CloseEvents @doGeoLoc="performGeoLocation()" :userLocation="userLocation" :doingGeoloc="doingGeoloc" /> - <CloseGroups :userLocation="userLocation" @doGeoLoc="performGeoLocation()" /> --> - <!--OnlineEvents /--> - <UpcomingEvents v-if="instanceName" :instanceName="instanceName" /> - <!-- <LastEvents v-if="instanceName" :instanceName="instanceName" /> --> - <!-- Unlogged content section --> - <!-- <picture v-if="!currentUser?.isLoggedIn"> - <source - media="(max-width: 799px)" - :srcset="`/img/pics/homepage-480w.webp`" - type="image/webp" - /> - - <source - media="(max-width: 1024px)" - :srcset="`/img/pics/homepage-1024w.webp`" - type="image/webp" - /> - - <source - media="(max-width: 1920px)" - :srcset="`/img/pics/homepage-1920w.webp`" - type="image/webp" - /> - - <source - media="(min-width: 1921px)" - :srcset="`/img/pics/homepage.webp`" - type="image/webp" - /> - - <img - :src="`/img/pics/homepage-1024w.webp`" - width="3840" - height="2719" - alt="" - loading="lazy" - /> - </picture> --> - <presentation v-if="!currentUser?.isLoggedIn" /> + <CloseGroups :userLocation="userLocation" @doGeoLoc="performGeoLocation()" /> + <OnlineEvents /> + <LastEvents v-if="instanceName" :instanceName="instanceName" /> </template> <script lang="ts" setup> diff --git a/src/views/InteractView.vue b/src/views/InteractView.vue index 4ed03ee14..de1a8e3bd 100644 --- a/src/views/InteractView.vue +++ b/src/views/InteractView.vue @@ -38,7 +38,7 @@ import { computed, reactive } from "vue"; import { useRouter } from "vue-router"; import { useI18n } from "vue-i18n"; import { useRouteQuery } from "vue-use-route-query"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; const router = useRouter(); const { t } = useI18n({ useScope: "global" }); diff --git a/src/views/Moderation/LogsView.vue b/src/views/Moderation/LogsView.vue index e98326544..7e8812ec8 100644 --- a/src/views/Moderation/LogsView.vue +++ b/src/views/Moderation/LogsView.vue @@ -442,7 +442,7 @@ import { displayNameAndUsername, displayName } from "../../types/actor"; import { Paginate } from "@/types/paginate"; import { useQuery } from "@vue/apollo-composable"; import { integerTransformer, useRouteQuery } from "vue-use-route-query"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { computed } from "vue"; import { useI18n } from "vue-i18n"; import { formatDateTimeString } from "@/filters/datetime"; diff --git a/src/views/Moderation/ReportListView.vue b/src/views/Moderation/ReportListView.vue index c771699e3..a6747e2a3 100644 --- a/src/views/Moderation/ReportListView.vue +++ b/src/views/Moderation/ReportListView.vue @@ -95,7 +95,7 @@ import { Paginate } from "@/types/paginate"; import debounce from "lodash/debounce"; import { useQuery } from "@vue/apollo-composable"; import { useI18n } from "vue-i18n"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { computed } from "vue"; import { enumTransformer, diff --git a/src/views/Moderation/ReportView.vue b/src/views/Moderation/ReportView.vue index f77578e2d..325b1bca7 100644 --- a/src/views/Moderation/ReportView.vue +++ b/src/views/Moderation/ReportView.vue @@ -414,7 +414,7 @@ import { GraphQLError } from "graphql"; import { ApolloCache, FetchResult } from "@apollo/client/core"; import { useLazyQuery, useMutation, useQuery } from "@vue/apollo-composable"; import { useCurrentActorClient } from "@/composition/apollo/actor"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { useI18n } from "vue-i18n"; import { useRouter } from "vue-router"; import { ref, computed, inject } from "vue"; diff --git a/src/views/OAuth/AuthorizeView.vue b/src/views/OAuth/AuthorizeView.vue index 7bffe204d..c90c9abbe 100644 --- a/src/views/OAuth/AuthorizeView.vue +++ b/src/views/OAuth/AuthorizeView.vue @@ -77,7 +77,7 @@ <script lang="ts" setup> import { useRouteQuery } from "vue-use-route-query"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { computed, ref } from "vue"; import { useI18n } from "vue-i18n"; import { useQuery } from "@vue/apollo-composable"; diff --git a/src/views/OAuth/DeviceActivationView.vue b/src/views/OAuth/DeviceActivationView.vue index 95fe78d9f..50a7d7cf4 100644 --- a/src/views/OAuth/DeviceActivationView.vue +++ b/src/views/OAuth/DeviceActivationView.vue @@ -71,7 +71,7 @@ <script lang="ts" setup> import { DEVICE_ACTIVATION } from "@/graphql/application"; import { useMutation } from "@vue/apollo-composable"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { computed, reactive, ref, watch } from "vue"; import { useI18n } from "vue-i18n"; import AuthorizeApplication from "@/components/OAuth/AuthorizeApplication.vue"; diff --git a/src/views/PageNotFound.vue b/src/views/PageNotFound.vue index a584def27..9396c7cd3 100644 --- a/src/views/PageNotFound.vue +++ b/src/views/PageNotFound.vue @@ -41,7 +41,7 @@ </section> </template> <script lang="ts" setup> -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { computed, ref } from "vue"; import { useI18n } from "vue-i18n"; import { useRouter } from "vue-router"; diff --git a/src/views/Posts/EditView.vue b/src/views/Posts/EditView.vue index 71ef3bebc..db018434c 100644 --- a/src/views/Posts/EditView.vue +++ b/src/views/Posts/EditView.vue @@ -154,7 +154,7 @@ import { useCurrentActorClient, usePersonStatusGroup, } from "@/composition/apollo/actor"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { useI18n } from "vue-i18n"; import { computed, inject, onMounted, ref, watch } from "vue"; import { useRouter } from "vue-router"; diff --git a/src/views/Posts/ListView.vue b/src/views/Posts/ListView.vue index fe92949eb..88502d7e1 100644 --- a/src/views/Posts/ListView.vue +++ b/src/views/Posts/ListView.vue @@ -83,7 +83,7 @@ import MultiPostListItem from "../../components/Post/MultiPostListItem.vue"; import { useCurrentActorClient } from "@/composition/apollo/actor"; import { useQuery } from "@vue/apollo-composable"; import { computed } from "vue"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { integerTransformer, useRouteQuery } from "vue-use-route-query"; import { useI18n } from "vue-i18n"; import { MemberRole } from "@/types/enums"; diff --git a/src/views/Posts/PostView.vue b/src/views/Posts/PostView.vue index 1853a04e1..e7a121249 100644 --- a/src/views/Posts/PostView.vue +++ b/src/views/Posts/PostView.vue @@ -268,7 +268,7 @@ import { useMutation, useQuery } from "@vue/apollo-composable"; import { computed, inject, ref } from "vue"; import { IPost } from "@/types/post.model"; import { DELETE_POST, FETCH_POST } from "@/graphql/post"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { formatDateTimeString } from "@/filters/datetime"; import { useRouter } from "vue-router"; import { useCreateReport } from "@/composition/apollo/report"; diff --git a/src/views/Resources/ResourceFolder.vue b/src/views/Resources/ResourceFolder.vue index 76f48c09d..5bec9c8c7 100644 --- a/src/views/Resources/ResourceFolder.vue +++ b/src/views/Resources/ResourceFolder.vue @@ -245,7 +245,7 @@ import { computed, nextTick, reactive, ref, watch } from "vue"; import { useI18n } from "vue-i18n"; import { integerTransformer, useRouteQuery } from "vue-use-route-query"; import { useRouter } from "vue-router"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { useResourceProviders } from "@/composition/apollo/config"; import Folder from "vue-material-design-icons/Folder.vue"; import Link from "vue-material-design-icons/Link.vue"; diff --git a/src/views/SearchView.vue b/src/views/SearchView.vue index bdf95345a..1e29269bd 100644 --- a/src/views/SearchView.vue +++ b/src/views/SearchView.vue @@ -45,6 +45,16 @@ :size="24" /> + <Calendar + v-if="content.contentType === ContentType.SHORTEVENTS" + :size="24" + /> + + <CalendarStar + v-if="content.contentType === ContentType.LONGEVENTS" + :size="24" + /> + <AccountMultiple v-if="content.contentType === ContentType.GROUPS" :size="24" @@ -443,8 +453,15 @@ class="hidden sm:flex items-center justify-between dark:text-slate-100 mb-2" > <p v-if="totalCount === 0"> - <span v-if="contentType === ContentType.EVENTS">{{ - t("No events found") + <span + v-if=" + contentType === ContentType.EVENTS || + contentType === ContentType.SHORTEVENTS + " + >{{ t("No events found") }}</span + > + <span v-else-if="contentType === ContentType.LONGEVENTS">{{ + t("No activities found") }}</span> <span v-else-if="contentType === ContentType.GROUPS">{{ t("No groups found") @@ -452,7 +469,12 @@ <span v-else>{{ t("No results found") }}</span> </p> <p v-else> - <span v-if="contentType === 'EVENTS'"> + <span + v-if=" + contentType === ContentType.EVENTS || + contentType === ContentType.SHORTEVENTS + " + > {{ t( "{eventsCount} events found", @@ -461,7 +483,16 @@ ) }} </span> - <span v-else-if="contentType === 'GROUPS'"> + <span v-else-if="contentType === ContentType.LONGEVENTS"> + {{ + t( + "{eventsCount} activities found", + { eventsCount: searchEvents?.total }, + searchEvents?.total ?? 0 + ) + }} + </span> + <span v-else-if="contentType === ContentType.GROUPS"> {{ t( "{groupsCount} groups found", @@ -597,7 +628,13 @@ :aria-current-label="t('Current page')" /> </template> - <template v-else-if="contentType === ContentType.EVENTS"> + <template + v-else-if=" + contentType === ContentType.EVENTS || + contentType === ContentType.SHORTEVENTS || + contentType === ContentType.LONGEVENTS + " + > <template v-if="searchLoading"> <SkeletonEventResultList v-for="i in 8" :key="i" /> </template> @@ -625,13 +662,23 @@ > </o-pagination> </template> - <EmptyContent v-else-if="searchLoading === false" icon="calendar"> + <EmptyContent + v-else-if="searchLoading === false" + :icon=" + contentType === ContentType.LONGEVENTS + ? 'calendar-star' + : 'calendar' + " + > <span v-if="searchIsUrl"> {{ t("No event found at this address") }} </span> - <span v-else-if="!search"> + <span v-else-if="!search && contentType !== ContentType.LONGEVENTS"> {{ t("No events found") }} </span> + <span v-else-if="!search && contentType === ContentType.LONGEVENTS"> + {{ t("No activities found") }} + </span> <i18n-t keypath="No events found for {search}" tag="span" v-else> <template #search> <b>{{ search }}</b> @@ -694,7 +741,7 @@ icon="account-multiple" > <span v-if="!search"> - {{ t("No events found") }} + {{ t("No groups found") }} </span> <i18n-t keypath="No groups found for {search}" tag="span" v-else> <template #search> @@ -767,10 +814,11 @@ import { booleanTransformer, } from "vue-use-route-query"; import Calendar from "vue-material-design-icons/Calendar.vue"; +import CalendarStar from "vue-material-design-icons/CalendarStar.vue"; import AccountMultiple from "vue-material-design-icons/AccountMultiple.vue"; import Magnify from "vue-material-design-icons/Magnify.vue"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import type { Locale } from "date-fns"; import FilterSection from "@/components/Search/filters/FilterSection.vue"; import { listShortDisjunctionFormatter } from "@/utils/listFormat"; @@ -778,6 +826,7 @@ import langs from "@/i18n/langs.json"; import { useEventCategories, useFeatures, + useIsLongEvents, useSearchConfig, } from "@/composition/apollo/config"; import { coordsToGeoHash } from "@/utils/location"; @@ -892,7 +941,7 @@ const searchTarget = useRouteQuery( const mode = useRouteQuery("mode", ViewMode.LIST, enumTransformer(ViewMode)); const sortBy = useRouteQuery( "sortBy", - SortValues.MATCH_DESC, + SortValues.START_TIME_ASC, enumTransformer(SortValues) ); const bbox = useRouteQuery("bbox", undefined); @@ -904,6 +953,7 @@ const GROUP_PAGE_LIMIT = 16; const { features } = useFeatures(); const { eventCategories } = useEventCategories(); +const { islongEvents } = useIsLongEvents(); const orderedCategories = computed(() => { if (!eventCategories.value) return []; @@ -1017,20 +1067,41 @@ const searchIsUrl = computed((): boolean => { }); const contentTypeMapping = computed(() => { - return [ - { - contentType: "ALL", - label: t("Everything"), - }, - { - contentType: "EVENTS", - label: t("Events"), - }, - { - contentType: "GROUPS", - label: t("Groups"), - }, - ]; + if (islongEvents.value) { + return [ + { + contentType: "ALL", + label: t("Everything"), + }, + { + contentType: "SHORTEVENTS", + label: t("Events"), + }, + { + contentType: "LONGEVENTS", + label: t("Activities"), + }, + { + contentType: "GROUPS", + label: t("Groups"), + }, + ]; + } else { + return [ + { + contentType: "ALL", + label: t("Everything"), + }, + { + contentType: "EVENTS", + label: t("Events"), + }, + { + contentType: "GROUPS", + label: t("Groups"), + }, + ]; + } }); const eventDistance = computed(() => { @@ -1138,6 +1209,16 @@ const geoHashLocation = computed(() => const radius = computed(() => Number.parseInt(distance.value.slice(0, -3))); +const longEvents = computed(() => { + if (contentType.value === ContentType.SHORTEVENTS) { + return false; + } else if (contentType.value === ContentType.LONGEVENTS) { + return true; + } else { + return null; + } +}); + const totalCount = computed(() => { return (searchEvents.value?.total ?? 0) + (searchGroups.value?.total ?? 0); }); @@ -1150,7 +1231,11 @@ const sortOptions = computed(() => { }, ]; - if (contentType.value == ContentType.EVENTS) { + if ( + contentType.value === ContentType.EVENTS || + contentType.value === ContentType.SHORTEVENTS || + contentType.value === ContentType.LONGEVENTS + ) { options.push( { key: SortValues.START_TIME_ASC, @@ -1171,7 +1256,7 @@ const sortOptions = computed(() => { ); } - if (contentType.value == ContentType.GROUPS) { + if (contentType.value === ContentType.GROUPS) { options.push({ key: SortValues.MEMBER_COUNT_DESC, label: t("Number of members"), @@ -1282,6 +1367,12 @@ watch( case ContentType.EVENTS: eventPage.value = 1; break; + case ContentType.SHORTEVENTS: + eventPage.value = 1; + break; + case ContentType.LONGEVENTS: + eventPage.value = 1; + break; case ContentType.GROUPS: groupPage.value = 1; break; @@ -1298,6 +1389,7 @@ const { result: searchElementsResult, loading: searchLoading } = useQuery<{ location: geoHashLocation.value, beginsOn: start.value, endsOn: end.value, + longevents: longEvents.value, radius: geoHashLocation.value ? radius.value : undefined, eventPage: contentType.value === ContentType.ALL ? page.value : eventPage.value, diff --git a/src/views/Settings/AccountSettings.vue b/src/views/Settings/AccountSettings.vue index ada893dd9..6cfebd07f 100644 --- a/src/views/Settings/AccountSettings.vue +++ b/src/views/Settings/AccountSettings.vue @@ -235,7 +235,7 @@ import { useLoggedUser } from "@/composition/apollo/user"; import { Notifier } from "@/plugins/notifier"; import { IAuthProvider } from "@/types/enums"; import { useMutation } from "@vue/apollo-composable"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { GraphQLError } from "graphql/error/GraphQLError"; import { computed, inject, ref } from "vue"; import { useI18n } from "vue-i18n"; diff --git a/src/views/Settings/AppsView.vue b/src/views/Settings/AppsView.vue index fd267285e..ce6c4f451 100644 --- a/src/views/Settings/AppsView.vue +++ b/src/views/Settings/AppsView.vue @@ -82,7 +82,7 @@ import { REVOKED_AUTHORIZED_APPLICATION, } from "@/graphql/application"; import { useMutation, useQuery } from "@vue/apollo-composable"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { computed, inject } from "vue"; import { useI18n } from "vue-i18n"; import RouteName from "../../router/name"; diff --git a/src/views/Settings/NotificationsView.vue b/src/views/Settings/NotificationsView.vue index 9835748a6..189b753ae 100644 --- a/src/views/Settings/NotificationsView.vue +++ b/src/views/Settings/NotificationsView.vue @@ -339,7 +339,7 @@ import { } from "vue"; import { IConfig } from "@/types/config.model"; import { useI18n } from "vue-i18n"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { Dialog } from "@/plugins/dialog"; type NotificationSubType = { label: string; id: string }; diff --git a/src/views/Settings/PreferencesView.vue b/src/views/Settings/PreferencesView.vue index 3ef0a7beb..cd3917866 100644 --- a/src/views/Settings/PreferencesView.vue +++ b/src/views/Settings/PreferencesView.vue @@ -148,7 +148,7 @@ import { AddressSearchType } from "@/types/enums"; import { Address, IAddress } from "@/types/address.model"; import { useTimezones } from "@/composition/apollo/config"; import { useUserSettings, updateLocale } from "@/composition/apollo/user"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { computed, defineAsyncComponent, ref, watch } from "vue"; import { useI18n } from "vue-i18n"; import { useMutation } from "@vue/apollo-composable"; diff --git a/src/views/SettingsView.vue b/src/views/SettingsView.vue index 5442ca434..b67717252 100644 --- a/src/views/SettingsView.vue +++ b/src/views/SettingsView.vue @@ -13,7 +13,7 @@ import SettingsMenu from "../components/Settings/SettingsMenu.vue"; import { computed } from "vue"; import { useI18n } from "vue-i18n"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; const { t } = useI18n({ useScope: "global" }); diff --git a/src/views/Todos/TodoList.vue b/src/views/Todos/TodoList.vue index 407ea154d..d7ac7b1ad 100644 --- a/src/views/Todos/TodoList.vue +++ b/src/views/Todos/TodoList.vue @@ -51,7 +51,7 @@ import RouteName from "../../router/name"; import { ApolloCache, FetchResult, InMemoryCache } from "@apollo/client/core"; import { useMutation, useQuery } from "@vue/apollo-composable"; import { useCurrentActorClient } from "@/composition/apollo/actor"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { computed, ref } from "vue"; const props = defineProps<{ id: string }>(); diff --git a/src/views/Todos/TodoLists.vue b/src/views/Todos/TodoLists.vue index 68738620f..24f70a8c5 100644 --- a/src/views/Todos/TodoLists.vue +++ b/src/views/Todos/TodoLists.vue @@ -70,7 +70,7 @@ import { ITodoList } from "@/types/todolist"; import RouteName from "../../router/name"; import { useGroup } from "@/composition/apollo/group"; import { computed, reactive } from "vue"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { useI18n } from "vue-i18n"; import { useMutation } from "@vue/apollo-composable"; diff --git a/src/views/Todos/TodoView.vue b/src/views/Todos/TodoView.vue index ee8b7e7a8..b1b874f3b 100644 --- a/src/views/Todos/TodoView.vue +++ b/src/views/Todos/TodoView.vue @@ -34,7 +34,7 @@ import FullTodo from "@/components/Todo/FullTodo.vue"; import RouteName from "../../router/name"; import { displayName, usernameWithDomain } from "@/types/actor"; import { useQuery } from "@vue/apollo-composable"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { computed } from "vue"; const props = defineProps<{ todoId: string }>(); diff --git a/src/views/User/LoginView.vue b/src/views/User/LoginView.vue index e41641dca..c832844af 100644 --- a/src/views/User/LoginView.vue +++ b/src/views/User/LoginView.vue @@ -143,7 +143,7 @@ import AuthProviders from "@/components/User/AuthProviders.vue"; import RouteName from "@/router/name"; import { LoginError, LoginErrorCode } from "@/types/enums"; import { useCurrentUserClient } from "@/composition/apollo/user"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { enumTransformer, useRouteQuery } from "vue-use-route-query"; import { useLazyCurrentUserIdentities } from "@/composition/apollo/actor"; @@ -245,8 +245,17 @@ const { onDone: onCurrentUserMutationDone, mutate: updateCurrentUserMutation } = onCurrentUserMutationDone(async () => { console.debug("Current user mutation done, now setuping actors…"); + // since we fail to refresh the navbar properly, we force a page reload. + // see the explanation of the bug bellow + window.location = redirect.value || "/"; try { + /* FIXME this promise never resolved the first time + no idea why ! + this appends even with the last version of apollo-composable (4.0.2) + may be related to that : https://github.com/vuejs/apollo/issues/1543 + */ const result = await loadIdentities(); + console.debug("login, loadIdentities resolved"); if (!result) return; await initializeCurrentActor(result.loggedUser.actors); } catch (err: any) { diff --git a/src/views/User/PasswordReset.vue b/src/views/User/PasswordReset.vue index 775a4a462..6d77de77b 100644 --- a/src/views/User/PasswordReset.vue +++ b/src/views/User/PasswordReset.vue @@ -48,7 +48,7 @@ import RouteName from "@/router/name"; import { reactive, ref, computed } from "vue"; import { useMutation } from "@vue/apollo-composable"; import { useRouter } from "vue-router"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { useI18n } from "vue-i18n"; const props = defineProps<{ token: string }>(); diff --git a/src/views/User/ProviderValidation.vue b/src/views/User/ProviderValidation.vue index c18e2bbc4..af21112bc 100644 --- a/src/views/User/ProviderValidation.vue +++ b/src/views/User/ProviderValidation.vue @@ -12,7 +12,7 @@ import { ICurrentUser, IUser } from "../../types/current-user.model"; import { useRouter } from "vue-router"; import { useLazyQuery, useMutation } from "@vue/apollo-composable"; import { useI18n } from "vue-i18n"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { computed, onMounted } from "vue"; import { getValueFromMeta } from "@/utils/html"; diff --git a/src/views/User/RegisterView.vue b/src/views/User/RegisterView.vue index 11465eafc..935e9ba2a 100644 --- a/src/views/User/RegisterView.vue +++ b/src/views/User/RegisterView.vue @@ -213,7 +213,7 @@ import { computed, reactive, ref, watch } from "vue"; import { useMutation, useQuery } from "@vue/apollo-composable"; import { useI18n } from "vue-i18n"; import { useRoute, useRouter } from "vue-router"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { AbsintheGraphQLErrors } from "@/types/errors.model"; type errorType = "danger" | "warning"; diff --git a/src/views/User/ResendConfirmation.vue b/src/views/User/ResendConfirmation.vue index a0d4439ae..7a85344b0 100644 --- a/src/views/User/ResendConfirmation.vue +++ b/src/views/User/ResendConfirmation.vue @@ -54,7 +54,7 @@ import RouteName from "@/router/name"; import { ref, computed } from "vue"; import { useMutation } from "@vue/apollo-composable"; import { useI18n } from "vue-i18n"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; const { t } = useI18n({ useScope: "global" }); useHead({ diff --git a/src/views/User/SendPasswordReset.vue b/src/views/User/SendPasswordReset.vue index cb8a0d1bf..ce4dc4fe6 100644 --- a/src/views/User/SendPasswordReset.vue +++ b/src/views/User/SendPasswordReset.vue @@ -63,7 +63,7 @@ import { SEND_RESET_PASSWORD } from "../../graphql/auth"; import RouteName from "../../router/name"; import { computed, ref } from "vue"; import { useMutation } from "@vue/apollo-composable"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { useI18n } from "vue-i18n"; const { t } = useI18n({ useScope: "global" }); diff --git a/src/views/User/SettingsOnboard.vue b/src/views/User/SettingsOnboard.vue index b8e8b442e..01757cc0e 100644 --- a/src/views/User/SettingsOnboard.vue +++ b/src/views/User/SettingsOnboard.vue @@ -56,7 +56,7 @@ import { USER_SETTINGS } from "@/graphql/user"; import { IUser } from "@/types/current-user.model"; import { useQuery } from "@vue/apollo-composable"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { computed, defineAsyncComponent, watch } from "vue"; import { useI18n } from "vue-i18n"; import RouteName from "@/router/name"; diff --git a/src/views/User/ValidateUser.vue b/src/views/User/ValidateUser.vue index cc55a6af5..1ef969023 100644 --- a/src/views/User/ValidateUser.vue +++ b/src/views/User/ValidateUser.vue @@ -31,7 +31,7 @@ import { ref, onBeforeMount, computed } from "vue"; import { useRouter } from "vue-router"; import { useMutation } from "@vue/apollo-composable"; import { IUser } from "@/types/current-user.model"; -import { useHead } from "@unhead/vue"; +import { useHead } from "@/utils/head"; import { useI18n } from "vue-i18n"; const { t } = useI18n({ useScope: "global" }); diff --git a/tailwind.config.cjs b/tailwind.config.cjs index 443e028c5..8415cd83c 100644 --- a/tailwind.config.cjs +++ b/tailwind.config.cjs @@ -4,37 +4,37 @@ module.exports = { theme: { extend: { colors: { - primary: "#1e7d97", - secondary: "#ffd599", + primary: "var(--custom-primary, #1e7d97)", + secondary: "var(--custom-secondary, #ffd599)", "violet-title": "#3c376e", tag: "rgb(var(--color-tag) / <alpha-value>)", "frama-violet": "#725794", "frama-orange": "#cc4e13", "mbz-yellow": { - DEFAULT: "#FFD599", - 50: "#FFFFFF", - 100: "#FFFFFF", - 200: "#FFFFFF", - 300: "#FFF7EB", - 400: "#FFE6C2", - 500: "#FFD599", - 600: "#FFBE61", - 700: "#FFA729", - 800: "#F08D00", - 900: "#B86C00", + DEFAULT: "#f2f2f2", + 50: "#d9d9d9", + 100: "#e5e5e5", + 200: "#f2f2f2", + 300: "#ffffff", + 400: "#cccccc", + 500: "#bfbfbf", + 600: "#b3b3b3", + 700: "#a6a6a6", + 800: "#999999", + 900: "#8c8c8c", }, "mbz-yellow-alt": { - DEFAULT: "#FAB12D", - 50: "#FEF4E0", - 100: "#FEECCC", - 200: "#FDDDA5", - 300: "#FCCF7D", - 400: "#FBC055", - 500: "#FAB12D", - 600: "#E99806", - 700: "#B37404", - 800: "#7C5103", - 900: "#452D02", + DEFAULT: "#f2f2f2", + 50: "#d9d9d9", + 100: "#e5e5e5", + 200: "#f2f2f2", + 300: "#ffffff", + 400: "#cccccc", + 500: "#bfbfbf", + 600: "#b3b3b3", + 700: "#a6a6a6", + 800: "#999999", + 900: "#8c8c8c", }, "mbz-purple": { DEFAULT: "#424056", diff --git a/test/fixtures/nodeinfo/data.json b/test/fixtures/nodeinfo/data.json index f2d25c552..34cad60db 100644 --- a/test/fixtures/nodeinfo/data.json +++ b/test/fixtures/nodeinfo/data.json @@ -22,8 +22,8 @@ }, "software": { "name": "Mobilizon", - "version": "4.0.2", + "version": "5.0.0-beta.1", "repository": "https://framagit.org/framasoft/mobilizon" }, "openRegistrations": true -} \ No newline at end of file +} diff --git a/test/graphql/resolvers/config_test.exs b/test/graphql/resolvers/config_test.exs index 677528ceb..71ecb4cf2 100644 --- a/test/graphql/resolvers/config_test.exs +++ b/test/graphql/resolvers/config_test.exs @@ -2,13 +2,24 @@ defmodule Mobilizon.GraphQL.Resolvers.ConfigTest do use Mobilizon.Web.ConnCase alias Mobilizon.Actors alias Mobilizon.Actors.Actor - + alias Mobilizon.Config alias Mobilizon.GraphQL.AbsintheHelpers describe "Resolver: Get config" do test "get_config/3 returns the instance config", context do Cachex.clear("full_config") Mobilizon.Config.clear_config_cache() + Config.put([:instance, :name], "Test instance") + Config.put([:instance, :registrations_open], true) + Config.put([:instance, :demo], false) + Config.put([:instance, :duration_of_long_event], 0) + + Config.put( + [:instance, :description], + "Change this to a proper description of your instance" + ) + + Config.put([:instance, :federating], true) query = """ { @@ -48,5 +59,99 @@ defmodule Mobilizon.GraphQL.Resolvers.ConfigTest do {:ok, %Actor{id: actor_id}} = Actors.get_or_create_internal_actor("anonymous") assert res["data"]["config"]["anonymous"]["actor_id"] == to_string(actor_id) end + + test "get_config/3 returns the instance config default", context do + Cachex.clear("full_config") + Mobilizon.Config.clear_config_cache() + Config.put([:instance, :name], "Test instance") + Config.put([:instance, :registrations_open], true) + Config.put([:instance, :demo], false) + Config.put([:instance, :duration_of_long_event], 0) + + Config.put( + [:instance, :description], + "Change this to a proper description of your instance" + ) + + Config.put([:instance, :federating], true) + + query = """ + { + config { + name, + registrationsOpen, + registrations_allowlist, + contact, + demo_mode, + long_events, + description, + long_description, + slogan, + languages, + timezones, + rules, + version, + federating + } + } + """ + + res = + context.conn + |> AbsintheHelpers.graphql_query(query: query) + + assert res["data"]["config"]["name"] == "Test instance" + assert res["data"]["config"]["registrationsOpen"] == true + assert res["data"]["config"]["registrations_allowlist"] == false + assert res["data"]["config"]["contact"] == nil + assert res["data"]["config"]["demo_mode"] == false + assert res["data"]["config"]["long_events"] == false + + assert res["data"]["config"]["description"] == + "Change this to a proper description of your instance" + + assert res["data"]["config"]["long_description"] == nil + assert res["data"]["config"]["slogan"] == nil + assert res["data"]["config"]["languages"] == [] + assert length(res["data"]["config"]["timezones"]) == 596 + assert res["data"]["config"]["rules"] == nil + assert String.slice(res["data"]["config"]["version"], 0, 5) == "5.0.0" + assert res["data"]["config"]["federating"] == true + end + + test "get_config/3 returns the instance config changed", context do + Cachex.clear("full_config") + Mobilizon.Config.clear_config_cache() + Config.put([:instance, :name], "My instance") + Config.put([:instance, :registrations_open], false) + Config.put([:instance, :demo], true) + Config.put([:instance, :duration_of_long_event], 30) + Config.put([:instance, :description], "My description") + Config.put([:instance, :federating], false) + + query = """ + { + config { + name, + registrationsOpen, + demo_mode, + long_events, + description, + federating + } + } + """ + + res = + context.conn + |> AbsintheHelpers.graphql_query(query: query) + + assert res["data"]["config"]["name"] == "My instance" + assert res["data"]["config"]["registrationsOpen"] == false + assert res["data"]["config"]["demo_mode"] == true + assert res["data"]["config"]["long_events"] == true + assert res["data"]["config"]["description"] == "My description" + assert res["data"]["config"]["federating"] == false + end end end diff --git a/test/graphql/resolvers/search_test.exs b/test/graphql/resolvers/search_test.exs index 4a41e6832..8af96b043 100644 --- a/test/graphql/resolvers/search_test.exs +++ b/test/graphql/resolvers/search_test.exs @@ -4,11 +4,11 @@ defmodule Mobilizon.GraphQL.Resolvers.SearchTest do import Mobilizon.Factory alias Mobilizon.Actors.Actor + alias Mobilizon.Config alias Mobilizon.Events.Event alias Mobilizon.Federation.ActivityPub.Relay - alias Mobilizon.Service.Workers - alias Mobilizon.GraphQL.AbsintheHelpers + alias Mobilizon.Service.Workers setup %{conn: conn} do user = insert(:user) @@ -18,8 +18,8 @@ defmodule Mobilizon.GraphQL.Resolvers.SearchTest do describe "search events/3" do @search_events_query """ - query SearchEvents($location: String, $radius: Float, $tags: String, $term: String, $beginsOn: DateTime, $endsOn: DateTime, $searchTarget: SearchTarget) { - searchEvents(location: $location, radius: $radius, tags: $tags, term: $term, beginsOn: $beginsOn, endsOn: $endsOn, searchTarget: $searchTarget) { + query SearchEvents($location: String, $radius: Float, $tags: String, $term: String, $beginsOn: DateTime, $endsOn: DateTime, $longevents:Boolean, $searchTarget: SearchTarget) { + searchEvents(location: $location, radius: $radius, tags: $tags, term: $term, beginsOn: $beginsOn, endsOn: $endsOn, longevents: $longevents, searchTarget: $searchTarget) { total, elements { id @@ -149,6 +149,7 @@ defmodule Mobilizon.GraphQL.Resolvers.SearchTest do end test "finds events by begins_on and ends_on", %{conn: conn} do + Config.put([:instance, :duration_of_long_event], 0) now = DateTime.utc_now() # TODO @@ -183,6 +184,214 @@ defmodule Mobilizon.GraphQL.Resolvers.SearchTest do event.uuid end + test "finds 4 events : long event disabled", %{conn: conn} do + Config.put([:instance, :duration_of_long_event], 0) + now = DateTime.utc_now() + + event1 = + insert(:event, + title: "Cours 10j", + begins_on: DateTime.add(now, 3600 * 24 * 5), + ends_on: DateTime.add(now, 3600 * 24 * 14) + ) + + event2 = + insert(:event, + title: "Long 29j", + begins_on: DateTime.add(now, 3600 * 24 * 5), + ends_on: DateTime.add(now, 3600 * 24 * 33) + ) + + event3 = + insert(:event, + title: "Long 31j", + begins_on: DateTime.add(now, 3600 * 24 * 5), + ends_on: DateTime.add(now, 3600 * 24 * 35) + ) + + event4 = + insert(:event, + title: "Long 40j", + begins_on: DateTime.add(now, 3600 * 24 * 5), + ends_on: DateTime.add(now, 3600 * 24 * 44) + ) + + Workers.BuildSearch.insert_search_event(event1) + Workers.BuildSearch.insert_search_event(event2) + Workers.BuildSearch.insert_search_event(event3) + Workers.BuildSearch.insert_search_event(event4) + + res = + AbsintheHelpers.graphql_query(conn, + query: @search_events_query, + variables: %{longevents: false} + ) + + assert res["errors"] == nil + assert res["data"]["searchEvents"]["total"] == 4 + + assert res["data"]["searchEvents"]["elements"] + |> Enum.map(& &1["uuid"]) == [ + event1.uuid, + event2.uuid, + event3.uuid, + event4.uuid + ] + + res = + AbsintheHelpers.graphql_query(conn, + query: @search_events_query, + variables: %{longevents: true} + ) + + assert res["errors"] == nil + assert res["data"]["searchEvents"]["total"] == 4 + + assert res["data"]["searchEvents"]["elements"] + |> Enum.map(& &1["uuid"]) == [ + event1.uuid, + event2.uuid, + event3.uuid, + event4.uuid + ] + end + + test "finds 4 events : long event enabled 30 days", %{conn: conn} do + Config.put([:instance, :duration_of_long_event], 30) + now = DateTime.utc_now() + + event1 = + insert(:event, + title: "Cours 10j", + begins_on: DateTime.add(now, 3600 * 24 * 5), + ends_on: DateTime.add(now, 3600 * 24 * 15) + ) + + event2 = + insert(:event, + title: "Long 30j", + begins_on: DateTime.add(now, 3600 * 24 * 5), + ends_on: DateTime.add(now, 3600 * 24 * 35) + ) + + event3 = + insert(:event, + title: "Long 31j", + begins_on: DateTime.add(now, 3600 * 24 * 5), + ends_on: DateTime.add(now, 3600 * 24 * 36) + ) + + event4 = + insert(:event, + title: "Long 40j", + begins_on: DateTime.add(now, 3600 * 24 * 5), + ends_on: DateTime.add(now, 3600 * 24 * 45) + ) + + Workers.BuildSearch.insert_search_event(event1) + Workers.BuildSearch.insert_search_event(event2) + Workers.BuildSearch.insert_search_event(event3) + Workers.BuildSearch.insert_search_event(event4) + + res = + AbsintheHelpers.graphql_query(conn, + query: @search_events_query, + variables: %{longevents: false} + ) + + assert res["errors"] == nil + assert res["data"]["searchEvents"]["total"] == 2 + + assert res["data"]["searchEvents"]["elements"] + |> Enum.map(& &1["uuid"]) == [ + event1.uuid, + event2.uuid + ] + + res = + AbsintheHelpers.graphql_query(conn, + query: @search_events_query, + variables: %{longevents: true} + ) + + assert res["errors"] == nil + assert res["data"]["searchEvents"]["total"] == 2 + + assert res["data"]["searchEvents"]["elements"] + |> Enum.map(& &1["uuid"]) == [ + event3.uuid, + event4.uuid + ] + end + + test "finds 4 events : long event enabled 15 days", %{conn: conn} do + Config.put([:instance, :duration_of_long_event], 15) + now = DateTime.utc_now() + + event1 = + insert(:event, + title: "Cours 10j", + begins_on: DateTime.add(now, 3600 * 24 * 5), + ends_on: DateTime.add(now, 3600 * 24 * 15) + ) + + event2 = + insert(:event, + title: "Long 30j", + begins_on: DateTime.add(now, 3600 * 24 * 5), + ends_on: DateTime.add(now, 3600 * 24 * 35) + ) + + event3 = + insert(:event, + title: "Long 31j", + begins_on: DateTime.add(now, 3600 * 24 * 5), + ends_on: DateTime.add(now, 3600 * 24 * 36) + ) + + event4 = + insert(:event, + title: "Long 40j", + begins_on: DateTime.add(now, 3600 * 24 * 5), + ends_on: DateTime.add(now, 3600 * 24 * 45) + ) + + Workers.BuildSearch.insert_search_event(event1) + Workers.BuildSearch.insert_search_event(event2) + Workers.BuildSearch.insert_search_event(event3) + Workers.BuildSearch.insert_search_event(event4) + + res = + AbsintheHelpers.graphql_query(conn, + query: @search_events_query, + variables: %{longevents: false} + ) + + assert res["errors"] == nil + assert res["data"]["searchEvents"]["total"] == 1 + + assert res["data"]["searchEvents"]["elements"] + |> Enum.map(& &1["uuid"]) == [ + event1.uuid + ] + + res = + AbsintheHelpers.graphql_query(conn, + query: @search_events_query, + variables: %{longevents: true} + ) + + assert res["errors"] == nil + assert res["data"]["searchEvents"]["total"] == 3 + + assert res["data"]["searchEvents"]["elements"] + |> Enum.map(& &1["uuid"]) == [ + event2.uuid, + event3.uuid, + event4.uuid + ] + end + test "finds events with multiple criteria", %{conn: conn} do {lon, lat} = {45.75, 4.85} point = %Geo.Point{coordinates: {lon, lat}, srid: 4326} diff --git a/tests/unit/specs/mocks/config.ts b/tests/unit/specs/mocks/config.ts index eb2924beb..6bee83006 100644 --- a/tests/unit/specs/mocks/config.ts +++ b/tests/unit/specs/mocks/config.ts @@ -49,6 +49,7 @@ export const configMock = { }, countryCode: "fr", demoMode: false, + longEvents: false, description: "Mobilizon.fr est l'instance Mobilizon de Framasoft.", features: { __typename: "Features",