Compare commits

..

280 commits

Author SHA1 Message Date
778a69cd 7d007bac87 nix fmt 2025-01-13 20:45:33 +01:00
778a69cd 13e25d8164 force building with erlang 26, elixir 1.15 2025-01-13 20:45:19 +01:00
778a69cd b9cca7f6f0 actually bump version to 5.1.1 2025-01-13 20:44:13 +01:00
778a69cd ca4557705a fix typo in elixir imports
I have no idea where this snuck in??
2025-01-13 20:43:36 +01:00
778a69cd ebf4decb99 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/d70bd19e0a38ad4790d3913bf08fcbfc9eeca507?narHash=sha256-4EVBRhOjMDuGtMaofAIqzJbg4Ql7Ai0PSeuVZTHjyKQ%3D' (2024-12-19)
  → 'github:NixOS/nixpkgs/ed4a395ea001367c1f13d34b1e01aa10290f67d6?narHash=sha256-jG/%2BMvjVY7SlTakzZ2fJ5dC3V1PrKKrUEOEE30jrOKA%3D' (2025-01-12)
2025-01-13 20:08:33 +01:00
778a69cd 5d9522ef9a Merge remote-tracking branch 'origin/main' 2025-01-13 20:02:18 +01:00
setop d4de94bd44 fix(front): use the right term, closes #1624 2025-01-12 19:58:28 +01:00
setop 7b08c960ec Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Framasoft Weblate

See merge request framasoft/mobilizon!1582
2025-01-12 18:03:38 +00:00
Balázs Meskó e706db1a07
Translated using Weblate (Hungarian)
Currently translated at 100.0% (1659 of 1659 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hu/
2025-01-12 18:34:14 +01:00
Péter Báthory 0001fda247
Translated using Weblate (Hungarian)
Currently translated at 99.7% (1655 of 1659 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hu/
2025-01-12 18:34:14 +01:00
Quentin PAGÈS 10ebd1d652
Translated using Weblate (Occitan)
Currently translated at 35.3% (94 of 266 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/oc/
2025-01-12 18:34:14 +01:00
Quentin PAGÈS 62d643b08e
Translated using Weblate (Catalan)
Currently translated at 62.5% (1038 of 1659 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/ca/
2025-01-12 18:34:14 +01:00
Coen Holten d116e58e40
Translated using Weblate (Dutch)
Currently translated at 92.2% (1531 of 1659 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/nl/
2025-01-12 18:34:14 +01:00
Jiří Podhorecký 081fbbe865
Translated using Weblate (Czech)
Currently translated at 99.8% (1657 of 1659 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/cs/
2025-01-12 18:34:14 +01:00
Weblate c0726f33c5
Update translation files
Updated by "Cleanup translation files" hook in Weblate.

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/
2025-01-12 18:34:14 +01:00
Chimpy e96998409e
Translated using Weblate (Persian)
Currently translated at 15.1% (252 of 1659 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/fa/
2025-01-12 18:34:14 +01:00
رسانه نرم‌افزار آزاد c12bde87ec
Translated using Weblate (Persian)
Currently translated at 15.1% (252 of 1659 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/fa/
2025-01-12 18:34:14 +01:00
رسانه نرم‌افزار آزاد e740dd84ca
Translated using Weblate (Persian)
Currently translated at 13.5% (224 of 1659 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/fa/
2025-01-12 18:34:14 +01:00
Mostafa Ahangarha 9b2293467c
Translated using Weblate (Persian)
Currently translated at 12.3% (205 of 1659 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/fa/
2025-01-12 18:34:13 +01:00
Chimpy b23fa3f3a6
Translated using Weblate (Persian)
Currently translated at 11.7% (195 of 1659 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/fa/
2025-01-12 18:34:13 +01:00
Mostafa Ahangarha 3c514f9647
Translated using Weblate (Persian)
Currently translated at 11.7% (195 of 1659 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/fa/
2025-01-12 18:34:13 +01:00
Mostafa Ahangarha 736483d8c0
Translated using Weblate (Persian)
Currently translated at 11.5% (191 of 1659 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/fa/
2025-01-12 18:34:13 +01:00
Chimpy 7dc35d4078
Translated using Weblate (Persian)
Currently translated at 11.5% (191 of 1659 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/fa/
2025-01-12 18:34:13 +01:00
Mostafa Ahangarha c81d3a7227
Translated using Weblate (Persian)
Currently translated at 11.3% (188 of 1659 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/fa/
2025-01-12 18:34:13 +01:00
Chimpy 5d95ba5c4c
Translated using Weblate (Persian)
Currently translated at 11.3% (188 of 1659 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/fa/
2025-01-12 18:34:13 +01:00
Chimpy d46f91dab9
Translated using Weblate (Persian)
Currently translated at 11.0% (184 of 1659 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/fa/
2025-01-12 18:34:13 +01:00
Mostafa Ahangarha d86c7a2a97
Translated using Weblate (Persian)
Currently translated at 11.0% (184 of 1659 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/fa/
2025-01-12 18:34:13 +01:00
Mostafa Ahangarha 89f7dcd486
Translated using Weblate (Persian)
Currently translated at 10.9% (182 of 1659 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/fa/
2025-01-12 18:34:13 +01:00
Chimpy 63f8318fed
Translated using Weblate (Persian)
Currently translated at 10.9% (182 of 1659 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/fa/
2025-01-12 18:34:13 +01:00
Chimpy 49b8dbbb1f
Translated using Weblate (Persian)
Currently translated at 10.7% (178 of 1659 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/fa/
2025-01-12 18:34:13 +01:00
Mostafa Ahangarha 178d936f53
Translated using Weblate (Persian)
Currently translated at 10.7% (178 of 1659 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/fa/
2025-01-12 18:34:13 +01:00
Chimpy 3685bbce94
Translated using Weblate (Persian)
Currently translated at 10.6% (176 of 1659 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/fa/
2025-01-12 18:34:13 +01:00
Mostafa Ahangarha 317c16b121
Translated using Weblate (Persian)
Currently translated at 10.6% (176 of 1659 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/fa/
2025-01-12 18:34:13 +01:00
Chimpy b5f1a0a994
Translated using Weblate (Persian)
Currently translated at 10.3% (172 of 1659 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/fa/
2025-01-12 18:34:13 +01:00
Mostafa Ahangarha 1bfc9de5c9
Translated using Weblate (Persian)
Currently translated at 10.3% (172 of 1659 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/fa/
2025-01-12 18:34:13 +01:00
Mostafa Ahangarha 2fa48f77fe
Translated using Weblate (Persian)
Currently translated at 10.1% (169 of 1659 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/fa/
2025-01-12 18:34:13 +01:00
Chimpy 86c49ded3f
Translated using Weblate (Persian)
Currently translated at 10.1% (169 of 1659 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/fa/
2025-01-12 18:34:13 +01:00
Chimpy e41a302180
Translated using Weblate (Persian)
Currently translated at 10.0% (167 of 1659 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/fa/
2025-01-12 18:34:13 +01:00
Mostafa Ahangarha 76ba97a920
Translated using Weblate (Persian)
Currently translated at 10.0% (167 of 1659 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/fa/
2025-01-12 18:34:13 +01:00
josé m 5f17a60e58
Translated using Weblate (Galician)
Currently translated at 99.9% (1658 of 1659 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/gl/
2025-01-12 18:34:13 +01:00
josé m 845d9544cb
Translated using Weblate (Galician)
Currently translated at 99.8% (1656 of 1659 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/gl/
2025-01-12 18:34:13 +01:00
Weblate 150aa245c0
Update translation files
Updated by "Cleanup translation files" hook in Weblate.

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/
2025-01-12 18:34:13 +01:00
Balázs Meskó b8cbee96dd
Translated using Weblate (Hungarian)
Currently translated at 99.8% (1656 of 1658 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hu/
2025-01-12 18:34:13 +01:00
Balázs Meskó 8d9fb963e4
Translated using Weblate (Hungarian)
Currently translated at 91.5% (1518 of 1658 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hu/
2025-01-12 18:34:13 +01:00
veroandi 7e55131c74
Translated using Weblate (Portuguese (Brazil))
Currently translated at 54.1% (144 of 266 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/pt_BR/
2025-01-12 18:34:13 +01:00
veroandi c8648c42c6
Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (91 of 91 strings)

Translation: Mobilizon/Activity
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/activity/pt_BR/
2025-01-12 18:34:13 +01:00
veroandi 72f43168b1
Translated using Weblate (Portuguese (Brazil))
Currently translated at 7.1% (19 of 266 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/pt_BR/
2025-01-12 18:34:13 +01:00
Jiří Podhorecký 12bbf00c51
Translated using Weblate (Czech)
Currently translated at 100.0% (1658 of 1658 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/cs/
2025-01-12 18:34:13 +01:00
josé m be48f02159
Translated using Weblate (Galician)
Currently translated at 99.9% (1657 of 1658 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/gl/
2025-01-12 18:34:13 +01:00
josé m 442cc1af03
Translated using Weblate (Galician)
Currently translated at 99.9% (1657 of 1658 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/gl/
2025-01-12 18:34:13 +01:00
Jiri Podhorecky cb236409d5
Translated using Weblate (Czech)
Currently translated at 98.9% (1641 of 1658 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/cs/
2025-01-12 18:34:12 +01:00
Jiri Podhorecky 942c8e78f2
Translated using Weblate (Czech)
Currently translated at 98.7% (1638 of 1658 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/cs/
2025-01-12 18:34:12 +01:00
Oliver Geer 73ed353e39
Translated using Weblate (Galician)
Currently translated at 99.9% (1657 of 1658 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/gl/
2025-01-12 18:34:12 +01:00
josé m 376151bf7e
Translated using Weblate (Galician)
Currently translated at 99.9% (1657 of 1658 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/gl/
2025-01-12 18:34:12 +01:00
Jiri Podhorecky 20ab6ec077
Translated using Weblate (Czech)
Currently translated at 100.0% (266 of 266 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/cs/
2025-01-12 18:34:12 +01:00
Jiri Podhorecky 5b73005ea3
Translated using Weblate (Czech)
Currently translated at 97.7% (1620 of 1658 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/cs/
2025-01-12 18:34:12 +01:00
Jiri Podhorecky 30e10021dc
Translated using Weblate (Czech)
Currently translated at 100.0% (91 of 91 strings)

Translation: Mobilizon/Activity
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/activity/cs/
2025-01-12 18:34:12 +01:00
Jiri Podhorecky fab1ac77c6
Translated using Weblate (Czech)
Currently translated at 98.1% (261 of 266 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/cs/
2025-01-12 18:34:12 +01:00
Oliver Geer bb081b6bdf
Translated using Weblate (Dutch)
Currently translated at 92.4% (1533 of 1658 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/nl/
2025-01-12 18:34:12 +01:00
Jiri Podhorecky 3f1750601a
Translated using Weblate (Czech)
Currently translated at 96.3% (1597 of 1658 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/cs/
2025-01-12 18:34:12 +01:00
Jiri Podhorecky 0959bd43b0
Translated using Weblate (Czech)
Currently translated at 100.0% (358 of 358 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/cs/
2025-01-12 18:34:12 +01:00
Jiri Podhorecky b7cd742b17
Translated using Weblate (Czech)
Currently translated at 96.1% (1594 of 1658 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/cs/
2025-01-12 18:34:12 +01:00
Jiri Podhorecky 34a55cf779
Translated using Weblate (Czech)
Currently translated at 89.0% (81 of 91 strings)

Translation: Mobilizon/Activity
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/activity/cs/
2025-01-12 18:34:12 +01:00
omar lazzari 2df62a5d27
Translated using Weblate (Italian)
Currently translated at 99.8% (1655 of 1658 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/it/
2025-01-12 18:34:12 +01:00
omar lazzari 526399b34b
Translated using Weblate (Italian)
Currently translated at 100.0% (91 of 91 strings)

Translation: Mobilizon/Activity
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/activity/it/
2025-01-12 18:34:12 +01:00
omar lazzari a6b0b6bcf0
Translated using Weblate (Italian)
Currently translated at 93.3% (1548 of 1658 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/it/
2025-01-12 18:34:12 +01:00
omar lazzari 262a5024e8
Translated using Weblate (Italian)
Currently translated at 94.5% (86 of 91 strings)

Translation: Mobilizon/Activity
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/activity/it/
2025-01-12 18:34:12 +01:00
omar lazzari 2d3dd9bfa4
Translated using Weblate (Italian)
Currently translated at 100.0% (358 of 358 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/it/
2025-01-12 18:34:12 +01:00
josé m 638a690c43
Translated using Weblate (Galician)
Currently translated at 99.9% (1657 of 1658 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/gl/
2025-01-12 18:34:12 +01:00
Anonymous a6fbae7c87
Translated using Weblate (Croatian)
Currently translated at 97.2% (1612 of 1658 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hr/
2025-01-12 18:34:12 +01:00
778a69cd a844013e42 flake.lock: Update
Flake lock file updates:

• Updated input 'nix-filter':
    'github:numtide/nix-filter/3342559a24e85fc164b295c3444e8a139924675b?narHash=sha256-1Wvk8UP7PXdf8bCCaEoMnOT1qe5/Duqgj%2BrL8sRQsSM%3D' (2024-03-11)
  → 'github:numtide/nix-filter/f7653272fd234696ae94229839a99b73c9ab7de0?narHash=sha256-oRam5PS1vcrr5UPgALW0eo1m/5/pls27Z/pabHNy2Ms%3D' (2024-11-13)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/99dc8785f6a0adac95f5e2ab05cc2e1bf666d172?narHash=sha256-gI9kkaH0ZjakJOKrdjaI/VbaMEo9qBbSUl93DnU7f4c%3D' (2024-09-16)
  → 'github:NixOS/nixpkgs/d70bd19e0a38ad4790d3913bf08fcbfc9eeca507?narHash=sha256-4EVBRhOjMDuGtMaofAIqzJbg4Ql7Ai0PSeuVZTHjyKQ%3D' (2024-12-19)
2024-12-26 14:26:26 +01:00
778a69cd 20d0b49941 Merge pull request 'merge-upstream-5.0.1' (#66) from merge-upstream-5.0.1 into main
Reviewed-on: #66
2024-12-26 12:55:40 +01:00
778a69cd d01282db28 bump version in nix package to 5.1.0 2024-12-26 12:51:55 +01:00
summersamara 6d8b8640b7 Merge remote-tracking branch 'origin/main' 2024-12-26 12:46:57 +01:00
778a69cd 8562b023e3 use 24.11 options 2024-12-17 00:16:26 +01:00
Massedil 39b4356ea6 fix(home): ensure event hour displays correctly with timezone
Timezone parameter is now mandatory for <start-time-icon>.

Solves #1618
2024-12-15 21:48:13 +01:00
Laurent Gay d485c7e113 #1591: display end date of events in group page 2024-12-15 21:48:13 +01:00
778a69cd 4d83187798 Revert "flake.lock: Update"
This reverts commit 56d67ffc92.
2024-12-06 22:02:00 +01:00
778a69cd 3a2e5aa9a5 Revert "pin elixir version for nix builds again"
This reverts commit 975d43c2ae.
2024-12-06 22:01:52 +01:00
setop 255c8fda67 fix(back): event.ends_on can be nil 2024-12-06 15:57:53 +01:00
Laurent GAY 4489743853 issue #1574 - home page & search page : 3 buttons for search 2024-11-29 23:23:33 +01:00
Laurent GAY 71cc09dd7a #1587 : remove categories card in home page 2024-11-29 19:21:09 +01:00
Massedil 15850cc72c Issue #1066 : The "Update group" button indicates that a background update is in progress 2024-11-29 19:19:19 +01:00
Massedil f67bd900f7 Issue #1567 : use ends_on for comparaisons to get future and ongoing events 2024-11-29 19:19:19 +01:00
Massedil 04fe44f72b Issue #1567 : distinction between activities (long_event) and normal events on group page 2024-11-29 19:19:19 +01:00
Massedil 9bfbc09f3f update French translation 2024-11-29 19:19:18 +01:00
Massedil f6c273f6f3 islongEvents -> isLongEvents 2024-11-29 19:19:07 +01:00
Massedil 71c0ce37a9 case harmonization with other fields
- longevents -> long_events (back-end)
- longevents -> longEvents (front-end)
2024-11-29 19:15:35 +01:00
Massedil 91b0e7d265 remove an obsolete comment 2024-11-29 19:15:35 +01:00
Massedil 752da9e641 Issue #1567 : Add a long_event computed field to an event
The actual long_event implementation is only done for search and long_event is a parameter of the search request.

This change is needed for the the front-end to know if an event is a long_event everywhere an event is received.

The computed field (Ecto virtual field) is set after the Ecto request with the function with_virtual_fields().

with_virtual_fields() handles cases where there is an event, a list of events and a paginated list of events returned.
2024-11-29 19:15:35 +01:00
Laurent Gay 9796304a9a correct if no place find 2024-11-29 19:15:35 +01:00
Laurent Gay 368cdb9592 add debug log for testing 2024-11-29 19:15:35 +01:00
Laurent Gay 844642aff5 #1564 : correct homepage default filtering + add debug log for testing 2024-11-29 19:15:35 +01:00
Massedil 227c9034ae Issue #1066 Add a loading text when "my events" are loading
Instead of showing the no event found text
2024-11-29 19:15:35 +01:00
Massedil fba0eb7cc8 fix small errors 2024-11-29 19:15:35 +01:00
Massedil 27da46829d Issue #1571 Replace <o-datepicker> by <event-date-picker> 2024-11-29 19:15:35 +01:00
Massedil b96c476eaa Issue #1066 Add a loading state on <o-button> in the create group page 2024-11-29 19:15:35 +01:00
Massedil 539c0f2216 Issue #1066 Add a loading state on <o-button> in the create and edit event page 2024-11-29 19:15:35 +01:00
Massedil 2dfb5a5bdf Add the border-primary color to <o-radio> for consistency with the <o-checkbox> design 2024-11-29 19:15:35 +01:00
Massedil 4545a8c8e3 Remove confusing background color for unchecked <o-checkbox> 2024-11-29 19:15:35 +01:00
Laurent GAY eb60da8ec9 #1574 - home page & search page : 3 buttons for search 2024-11-29 19:15:35 +01:00
Laurent GAY 0911902618 #1574 - homepage : remove text search + add buttons for each content type 2024-11-29 19:15:35 +01:00
setop 70ae23b82c chore(build): remove sentry step ; remove e2e tests stop from packages 2024-11-29 18:26:51 +01:00
setop 2a1f620121 fix(test): fix some tests 2024-11-23 21:36:35 +01:00
setop abeeef6aa3 fix(tests): prepare for next version 2024-11-23 15:57:01 +01:00
Mark Andrew Jaroski 1265b3f533 Added an index to make geo-based event search faster 2024-11-22 20:13:11 +01:00
778a69cd 975d43c2ae pin elixir version for nix builds again 2024-11-09 16:06:38 +01:00
778a69cd 56d67ffc92 flake.lock: Update
Flake lock file updates:

• Updated input 'nix-filter':
    'github:numtide/nix-filter/3342559a24e85fc164b295c3444e8a139924675b' (2024-03-11)
  → 'github:numtide/nix-filter/776e68c1d014c3adde193a18db9d738458cd2ba4' (2024-10-29)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/99dc8785f6a0adac95f5e2ab05cc2e1bf666d172' (2024-09-16)
  → 'github:NixOS/nixpkgs/4aa36568d413aca0ea84a1684d2d46f55dbabad7' (2024-11-05)
2024-11-08 23:03:53 +01:00
Massedil e7a42f08a0 Issue #1579 : The event menu is now fully clickable 2024-11-08 18:49:51 +01:00
Massedil 800a4e0d1e Issue #1573 : Update French translation 2024-11-08 16:56:51 +01:00
Massedil dc5c3f6a52 Update French translation to always use "e-mail" 2024-11-08 16:45:52 +01:00
Massedil 68240c7476 Issue #1580 Update French translation 2024-11-08 16:34:42 +01:00
Tim Zöller a23d8eeaf8 Prevent the user menu from extending the screen
The user menu always opened to the right. This made the menu extend over
the boundary of the screen, add a horizontal scrollbar and cut off the
menu. This fix opens the menu to the left, preventing such behavior
2024-11-08 15:55:54 +01:00
Massedil 7c68c9c0c1 Issue #1308: remove MATCH_DESC, MEMBER_COUNT_ASC and CREATED_AT_ASC options for sorting groups
Remove MATCH_DESC for events for consistency.

Options stays available in backend and GraphQL.
2024-11-07 14:47:49 +01:00
Massedil 67393ba2f0 Issue #1569 : New event times and participants are hidden by default 2024-11-07 14:22:48 +01:00
Massedil 63a237b05f Update French translation 2024-11-07 13:29:21 +01:00
Massedil 29c9ded5b7 Issue #1511: Date display problem :
If an event do not have a time zone, use the user's setting time zone for display or the browser time zone otherwise
2024-11-07 13:29:21 +01:00
Massedil 3c0db7877c Issue #1511: Date display problem :
- the time zone is used to calculate the date
- use the offset to know if beginsOn and endsOn are the same day
- refactor the <o-switch>

Solves, for example, this display problem :

The date range "2024-12-31 17:45 to 2025-01-01 01:00" in the Asia/Shanghai time zone (spanning different years and days) is equivalent to "2024-12-31 at 10:45 to 2024-12-31 at 18:00" in the Europe/Paris time zone (same year and same day).
2024-11-07 13:29:21 +01:00
Massedil 0fa7a20414 Issue #1511: Date display problem : handle case where event start time is hidden but event end time is displayed 2024-11-07 13:29:21 +01:00
Massedil 3a3d77b698 Issue #1511: Remove useUserSettings() and always add user settings in useLoggedUser()
The user time zone setting is now available in the event display page
2024-11-07 13:29:10 +01:00
Laurent GAY 0c56267795 test elixir correction 2024-11-06 18:43:24 +01:00
Laurent GAY 3885c8e62f #1492: address distance correction 2024-11-06 17:44:54 +01:00
Laurent GAY ea6d1ba83d #1492: search page correction + refactoring 2024-11-06 17:36:35 +01:00
Laurent GAY f2d7da7af7 #1492: add distance value in selector + add with filter in search page 2024-11-06 12:58:02 +01:00
Massedil 5e201dd28c Issue #1571: Fix dark mode for <event-date-picker> 2024-11-04 23:28:40 +01:00
Massedil 42c98be036 Issue #1571: Fix null check before use 2024-11-04 22:59:09 +01:00
Massedil 3d7ffbf5ca Issue #1571: Design adjustments for mobile 2024-11-04 22:49:54 +01:00
Massedil 19ba095e07 Issue #1571: Fixes the switches for displaying hours not working. 2024-11-04 22:35:01 +01:00
Massedil 7f43169fae Issue #1571 Hide the time when the user chooses to not display it 2024-11-04 22:23:58 +01:00
Massedil 9992286e7e Issue #1571 Handle the case where the date is invalid 2024-11-04 20:47:19 +01:00
Massedil f236ec3a2d Issue #1571 Refactor to a new date component <event-date-picker> 2024-11-04 20:24:58 +01:00
Massedil 841cc4e0b6 Issue #1571 Replace <o-datetimepicker> by <input type="datetime-local">
Solves the "date is not updated issue" on iOS 17
2024-11-04 17:11:04 +01:00
Massedil edac95ef4a Issue #1546 Small CSS tweaks for mobile view 2024-11-02 16:17:44 +01:00
Massedil 02687e68bb Issue #1546 Change block order 2024-11-02 16:06:17 +01:00
Massedil ae02e28129 Issue #1511: Date components no longer change their value when the timezone is updated 2024-11-02 15:32:54 +01:00
Massedil c0e906023c Issue #1511 : Use the user account timezone setting by default for the timezone of the event 2024-11-01 19:17:05 +01:00
Massedil b440e129a9 Issue #1511 : Harmonization to use UTC functions for all dates
"The above approach attempts to manipulate the Date object's time zone by shifting the Unix timestamp by some other time zone offset. However, since the Date object only tracks time in UTC, it actually just makes the Date object represent a different point in time. [...] When doing so, any access to non-UTC properties must be avoided. "

See: https://stackoverflow.com/a/15171030
2024-11-01 19:09:38 +01:00
Massedil 3f65781d27 Issue #1511 tzOffset need to use browserTimeZone and not userActualTimezone
Javascript Date() objects are based on "the host environment (user's device)".

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
2024-11-01 19:04:39 +01:00
Massedil 0073a77167 Update French translation 2024-11-01 14:10:45 +01:00
Massedil 6c189b2d6c Issue #1511 Restore timezone consideration
- tz-offset is not a valid parameter for <o-datetimepicker> so the offset was ignored.
- also remove invalid horizontal-time-picker and first-day-of-week parameters from <o-datetimepicker>
2024-11-01 14:09:02 +01:00
Laurent GAY 8044dbde86 #1492 & #1556 : small corrections about those issues 2024-10-31 10:52:47 +01:00
Massedil 861c445b63 #1546 Harmonization between public and private view + improved CSS 2024-10-30 20:01:13 +01:00
Massedil 906985478d #1546 Remove private section mbz-purple color 2024-10-30 20:01:13 +01:00
Laurent GAY 65ad3d855b #1492 : add frame to select distance from searching events 2024-10-30 17:29:24 +01:00
Massedil 9a04041694 Update French translation 2024-10-28 19:42:41 +01:00
Massedil 042b0f097f Fix #1476 by updating the search interface
- Removed "Everything" choice for search, default to "Events"
- Add radio button for search type selection (events, activities, groups)
- Label now have a cursor pointer
- Remove the confusing concept of EVENTS, SHORTEVENTS and LONGEVENTS. There is only EVENTS and LONGEVENTS.
2024-10-28 19:41:30 +01:00
Massedil ce2d4f44cb #1572 Display when results are loading 2024-10-25 17:23:01 +02:00
Massedil 057f0a3744 #1545 Remove SearchTargets.GLOBAL from the front-end 2024-10-25 16:43:37 +02:00
Massedil 6ff3525764 #1308 Fix group sorting and add new criteria (creation date, last event activity) 2024-10-24 19:09:28 +02:00
Massedil 41aa81097d #1308 update build_page() to permit query with group_by()
Using Repo.aggregate() to count the total of elements is incompatible with group_by().

Changing this to a subquery with a count(*) of results permit to use group_by().
2024-10-24 19:09:28 +02:00
Laurent GAY 9403a9d60a correction about issue #1556 : Fix location on homepage and location clearing 2024-10-23 16:13:17 +02:00
Laurent GAY 3ed4105879 Issue #1560 "Location is lost when navigating" : propagation of query for each route 2024-10-16 18:36:10 +02:00
Massedil 5b5f295dc3 #1459 Update translation to correctly pluralize the available places for an event 2024-10-15 17:35:27 +02:00
Massedil d1ce24cb69 #1511 format <start-time-icon> with the timezone and the formatTimeString() function already used for that in Mobilizon 2024-10-14 16:18:25 +02:00
Massedil c859d32cd1 Changing organizer pop-up is now usable in mobile view 2024-10-11 17:53:24 +02:00
Massedil 37e977404f Shorter fr_FR "Add new..." translation to remove a scroll in edit event in mobile view 2024-10-11 17:53:24 +02:00
Massedil 3401a7dd85 The validation button area no longer causes the event page to scroll in mobile view 2024-10-11 17:53:23 +02:00
Massedil 4d9d6b02b6 The status choice area no longer causes the event page to scroll in mobile view 2024-10-11 17:53:23 +02:00
Massedil 78b7fae91b Move time display settings near the related datetimepicker 2024-10-07 13:06:32 +02:00
778a69cd 473881136a mix deps.update dataloader 2024-09-18 17:54:56 +02:00
778a69cd 317d628792 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/c3aa7b8938b17aebd2deecf7be0636000d62a2b9' (2024-08-14)
  → 'github:NixOS/nixpkgs/99dc8785f6a0adac95f5e2ab05cc2e1bf666d172' (2024-09-16)
2024-09-18 17:22:43 +02:00
778a69cd 6df05308f6 Merge remote-tracking branch 'origin/main' 2024-09-12 23:00:29 +02:00
setop b48ab8201f feat(front): change horizontal scroll to grid view. closes #1456 2024-09-09 23:02:49 +02:00
setop 18c78b81cb feat(front): remove popular groups and online events from homepage. closes #1527 2024-09-09 16:21:17 +02:00
778a69cd 7a67cd5301 Merge remote-tracking branch 'origin/main' 2024-08-26 13:23:34 +02:00
setop 815bd8e2f9 Merge branch 'fixtests' into 'main'
Fix tests

See merge request framasoft/mobilizon!1586
2024-08-21 17:25:43 +00:00
setop 563e7be0ed test(backent): workaround test gat_actor_by_name, assertion about pictures are failing 2024-08-21 09:00:26 +02:00
setop f789fcd2ee test(backent): fix ActivityPub client mock 2024-08-20 21:59:40 +02:00
778a69cd d1a2b4acb3 nix: remove some unneeded dependencies, polishing 2024-08-19 12:29:41 +02:00
778a69cd 435cbd0d6b format all nix code by using nix fmt 2024-08-19 12:19:14 +02:00
778a69cd 656bbd46c0 build nix package by using deps_nix instead of mix2nix 2024-08-19 12:19:14 +02:00
778a69cd 375ff82076 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/e9ee548d90ff586a6471b4ae80ae9cfcbceb3420' (2024-06-13)
  → 'github:NixOS/nixpkgs/c3aa7b8938b17aebd2deecf7be0636000d62a2b9' (2024-08-14)
2024-08-19 12:00:21 +02:00
778a69cd 191d17b42e show the browsers timezone by default, not the alleged creators timezone
Addresses #63

(cherry picked from commit 56fc90e965)
2024-08-18 14:37:35 +02:00
778a69cd da8c7b281e Merge remote-tracking branch 'origin/main' 2024-07-16 13:39:25 +02:00
setop df6ffee7cf fix(front): preserve tags when modifiying post or event
closes #1307
closes #1289
2024-07-13 08:53:24 +02:00
778a69cd 3c3206fd8a Merge remote-tracking branch 'origin/main' 2024-07-09 00:17:59 +02:00
setop 2078dbcf55 Merge branch '1475-1469-homepage-location-enhancement-no-activities' into 'main'
fix #1469 and # 1475

Closes #1469 and #1475

See merge request framasoft/mobilizon!1581
2024-07-08 21:44:23 +00:00
setop 79bd6a5d21 fix #1469 and # 1475 2024-07-08 21:44:22 +00:00
setop 0218dbe06e Merge branch '1289-updating-event-emptying-some-fields' into 'main'
Resolve "Updating an event or a groupe is emptying some fields"

Closes #1289

See merge request framasoft/mobilizon!1577
2024-07-07 15:32:35 +00:00
Massedil 93562c6be9 Resolve "Updating an event or a groupe is emptying some fields" 2024-07-07 15:32:35 +00:00
setop 4821bfc984 Merge branch 'no-single-promoted-category' into 'main'
Remove promoted categories if there is only one category

See merge request framasoft/mobilizon!1568
2024-07-06 22:34:46 +00:00
setop 8f2a8b4349 chore(front): fix linter error 2024-07-06 22:04:25 +02:00
setop 9ff494f1b5 Merge branch 'fix-calendar-beta' into 'main'
Calendar beta indication: reduce font size to make in fit on mobile

Closes #1512

See merge request framasoft/mobilizon!1569
2024-07-06 17:11:16 +00:00
setop 593f636933 Merge branch 'fix-edit-confirmation-jitter' into 'main'
Fix border width of btn-outlined-warning

See merge request framasoft/mobilizon!1580
2024-07-06 17:10:36 +00:00
setop 380031d77a Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Framasoft Weblate

See merge request framasoft/mobilizon!1579
2024-07-06 17:09:07 +00:00
ewm a91307116f
Translated using Weblate (Polish)
Currently translated at 99.2% (1645 of 1658 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/pl/
2024-07-06 19:07:37 +02:00
ewm aedc7a40c4
Translated using Weblate (Polish)
Currently translated at 100.0% (266 of 266 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/pl/
2024-07-06 19:07:37 +02:00
ewm 04f889be4d
Translated using Weblate (Polish)
Currently translated at 99.7% (357 of 358 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/pl/
2024-07-06 19:07:37 +02:00
ewm a3fa87a3ea
Translated using Weblate (Polish)
Currently translated at 98.1% (1627 of 1658 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/pl/
2024-07-06 19:07:37 +02:00
setop 545cb81797 Merge branch '1481-trying-to-contact-the-organizer-contact-crashes-the-app' into 'main'
trying to contact the organizer contact crashes the app

Closes #1481

See merge request framasoft/mobilizon!1565
2024-07-06 17:07:32 +00:00
setop 320c40e511 Merge branch 'main' into '1481-trying-to-contact-the-organizer-contact-crashes-the-app'
# Conflicts:
#   package.json
2024-07-06 16:21:43 +00:00
setop 46bfe5ff54 Merge branch 'translate-event-datetime-icon' into 'main'
Use the correct locale to create the event date and time icons

Closes #1515

See merge request framasoft/mobilizon!1572
2024-07-06 16:13:01 +00:00
778a69cd 8d6ee125ef Merge remote-tracking branch 'origin/main' 2024-07-05 20:51:33 +02:00
Sosthène Guédon be14c18d2e Fix border width of btn-outlined-warning 2024-07-05 15:30:36 +02:00
Sosthène Guédon 462ed5b3c7 Use the correct locale to create the event date and time icons 2024-07-05 15:10:51 +02:00
setop e51dfd392c Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Framasoft Weblate

See merge request framasoft/mobilizon!1566
2024-07-03 15:26:24 +00:00
Coen Holten 91f329f00a
Translated using Weblate (Dutch)
Currently translated at 92.4% (1533 of 1658 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/nl/
2024-07-03 16:36:04 +02:00
Coen Holten 7050f11ed1
Translated using Weblate (Dutch)
Currently translated at 92.4% (1532 of 1658 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/nl/
2024-07-03 16:36:04 +02:00
Coen Holten 77a6773247
Translated using Weblate (Dutch)
Currently translated at 91.3% (1515 of 1658 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/nl/
2024-07-03 16:36:04 +02:00
setop 87dd2c09cd Merge branch '1503-use-global-ssl-options-for-fetching-remote-media' into 'main'
Use RemoteMediaDownloaderClient, not Tesla directly to use global ssl options

See merge request framasoft/mobilizon!1570
2024-07-03 14:35:58 +00:00
Massedil 023f15938b @update:modelValue works again with oruga-ui 0.8.12 2024-07-01 19:55:02 +02:00
778a69cd 2f3ea848c4 Merge remote-tracking branch 'origin/main' 2024-06-30 23:29:18 +02:00
André Menrath 6d7688e4f7 Use RemoteMediaDownloaderClient, not Tesla directly to use global ssl options 2024-06-30 13:18:10 +02:00
Sosthène Guédon c6683595ff Calendar beta indication: reduce font size to make in fit on mobile 2024-06-28 23:00:00 +02:00
Sosthène Guédon c36bd4c048 Remove promoted categories if there is only one category
For instances with specific categories, this makes the category list look weird
2024-06-28 22:03:26 +02:00
setop 30d9778070 Merge branch '1503-fix-ActivityPub-publishing-for-self-signed-CA-certs' into 'main'
1503 fix ActivityPub publishing for self-signed CA certs

See merge request framasoft/mobilizon!1567
2024-06-26 11:28:31 +00:00
setop 20f62729ee Merge branch '1441-change-organizer-trigger-redirection-instanly' into 'main'
fixes #1441

Closes #1441

See merge request framasoft/mobilizon!1564
2024-06-26 10:41:11 +00:00
setop 7a7edb1b6b Merge branch '1478-my-event-show-starting-today' into 'main'
fix(frontend): my events page, handle start date correctly

Closes #1478

See merge request framasoft/mobilizon!1552
2024-06-26 10:32:58 +00:00
setop e41ecd377f fix(frontend): my events page, handle start date correctly 2024-06-26 10:32:57 +00:00
setop cde54249a9 Merge branch '1307-post-content-is-lost-when-editing' into 'main'
post data are correctly restored when editing

See merge request framasoft/mobilizon!1563
2024-06-26 09:57:06 +00:00
setop 3657636e3a tags are correctly restored on the taginput 2024-06-26 09:55:25 +00:00
Massedil d88bae8536 tags are correctly restored on the taginput 2024-06-26 09:55:25 +00:00
setop 005ef28f8c Merge branch '1443-edit-the-time-of-an-event' into 'main'
update oruga-next to 0.8.10 to solve #1443

See merge request framasoft/mobilizon!1560
2024-06-26 09:49:25 +00:00
778a69cd 7c5e8cf31f use elixir with no X dependencies, smaller nix closure 2024-06-24 15:24:09 +02:00
André Menrath b8b2e895b0 1503 fix ActivityPub publishing for self-signed CA certs 2024-06-20 22:02:31 +02:00
Massedil 745b4a82d1 remove unauthorized mediaSize in GQL FETCH_PERSON 2024-06-19 18:47:10 +02:00
Massedil c237b276ca temporarily emulate @update:modelValue 2024-06-19 17:26:27 +02:00
Massedil c0680f4bd6 type='text' is not valid for a <button> and it was triggering a form submit 2024-06-19 15:21:37 +02:00
Massedil 66280a07e6 post data are correctly restored when editing 2024-06-17 18:12:18 +02:00
778a69cd 1852d07ecf flake.lock: Update
Flake lock file updates:

• Updated input 'napalm':
    'github:nix-community/napalm/edcb26c266ca37c9521f6a97f33234633cbec186' (2023-12-20)
  → 'github:nix-community/napalm/e1babff744cd278b56abe8478008b4a9e23036cf' (2024-06-09)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/4cba8b53da471aea2ab2b0c1f30a81e7c451f4b6' (2024-04-08)
  → 'github:NixOS/nixpkgs/e9ee548d90ff586a6471b4ae80ae9cfcbceb3420' (2024-06-13)
2024-06-17 17:50:28 +02:00
778a69cd 3aaed0b2d7 Merge remote-tracking branch 'origin/main' 2024-06-17 17:49:53 +02:00
setop 1217f8a777 Merge branch '1457-map-tiles-dont-load' into 'main'
fix(front): don't load leaflet in the background

Closes #1457

credit to @LHolten who find the solution

See merge request framasoft/mobilizon!1562
2024-06-16 22:50:54 +00:00
setop a70bad568b fix(front): don't load leaflet in the background 2024-06-16 23:37:27 +02:00
setop 6bc2d7c970 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Framasoft Weblate

See merge request framasoft/mobilizon!1555
2024-06-16 21:10:38 +00:00
Massedil 74d56aa522 update oruga-next to 0.8.10 to solve #1443 2024-06-03 18:31:39 +02:00
778a69cd ac52522992 Merge remote-tracking branch 'origin/main' 2024-05-23 17:23:41 +02:00
Coen Holten ed5fc7add6
Translated using Weblate (Dutch)
Currently translated at 91.0% (1509 of 1658 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/nl/
2024-05-15 23:37:14 +02:00
Weblate 7210869d36
Translated using Weblate (Dutch)
Currently translated at 82.4% (1367 of 1658 strings)

Co-authored-by: Coen Holten <coenholten@proton.me>
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/nl/
Translation: Mobilizon/Frontend
2024-05-15 09:52:27 +02:00
setop 5003822b09 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Framasoft Weblate

See merge request framasoft/mobilizon!1554
2024-05-14 22:41:28 +00:00
Coen Holten 15c0f93e37
Translated using Weblate (Dutch)
Currently translated at 4.1% (11 of 266 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/nl/
2024-05-15 00:26:17 +02:00
Coen Holten 28c045a77b
Translated using Weblate (Dutch)
Currently translated at 3.7% (10 of 266 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/nl/
2024-05-15 00:00:43 +02:00
Coen Holten 442e5ae39d
Translated using Weblate (Dutch)
Currently translated at 78.0% (1294 of 1658 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/nl/
2024-05-15 00:00:42 +02:00
Coen Holten 732f4db3b9
Translated using Weblate (Dutch)
Currently translated at 75.5% (1252 of 1658 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/nl/
2024-05-14 19:47:06 +02:00
Thomas 965f72a179 Merge branch 'update-i18n' into 'main'
Translations updates

See merge request framasoft/mobilizon!1553
2024-05-14 15:43:18 +00:00
Milo Ivir 9977f3c555
Translated using Weblate (Croatian)
Currently translated at 64.2% (171 of 266 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/hr/
2024-05-14 17:07:23 +02:00
Milo Ivir 5c202e31c1
Translated using Weblate (Croatian)
Currently translated at 85.4% (306 of 358 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/hr/
2024-05-14 17:07:23 +02:00
Miguel A. Bouzada Fdz ad9bb27343
Translated using Weblate (Galician)
Currently translated at 99.9% (1657 of 1658 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/gl/
2024-05-14 17:07:23 +02:00
GSalinas ba5ac5cc94
Translated using Weblate (Spanish)
Currently translated at 100.0% (358 of 358 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/es/
2024-05-14 17:07:23 +02:00
GSalinas dde1db73c3
Translated using Weblate (Spanish)
Currently translated at 100.0% (358 of 358 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/es/
2024-05-14 17:07:23 +02:00
josé m b74358140c
Translated using Weblate (Galician)
Currently translated at 99.9% (1645 of 1646 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/gl/
2024-05-14 17:07:23 +02:00
josé m 49e6d8afc7
Translated using Weblate (Galician)
Currently translated at 97.4% (1604 of 1646 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/gl/
2024-05-14 17:06:59 +02:00
josé m d3fe6dece2
Translated using Weblate (Galician)
Currently translated at 91.3% (1503 of 1646 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/gl/
2024-05-14 17:06:59 +02:00
josé m 3b0d6b90ad
Translated using Weblate (Galician)
Currently translated at 82.8% (1363 of 1646 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/gl/
2024-05-14 17:06:57 +02:00
Milo Ivir 0cbe7d3d17
Translated using Weblate (Croatian)
Currently translated at 97.9% (1613 of 1646 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hr/
2024-05-14 16:28:00 +02:00
Milo Ivir 29fb9f6934
Translated using Weblate (Croatian)
Currently translated at 93.9% (1547 of 1646 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hr/
2024-05-14 16:27:46 +02:00
Milo Ivir dcd15f46fc
Translated using Weblate (Croatian)
Currently translated at 93.4% (1539 of 1646 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hr/
2024-05-14 16:27:24 +02:00
Milo Ivir 7ee3c21352
Translated using Weblate (Croatian)
Currently translated at 92.4% (1522 of 1646 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hr/
2024-05-14 16:26:44 +02:00
Milo Ivir 703256809f
Translated using Weblate (Croatian)
Currently translated at 92.4% (1522 of 1646 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hr/
2024-05-14 16:26:43 +02:00
Milo Ivir 7491b08df2
Translated using Weblate (Croatian)
Currently translated at 92.3% (1520 of 1646 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hr/
2024-05-14 16:25:36 +02:00
Milo Ivir 70036fefaa
Translated using Weblate (Croatian)
Currently translated at 60.5% (161 of 266 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/hr/
2024-05-14 16:24:47 +02:00
Milo Ivir 014dd0d62c
Translated using Weblate (Croatian)
Currently translated at 60.1% (160 of 266 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/hr/
2024-05-14 16:24:25 +02:00
Milo Ivir d651acce1f
Translated using Weblate (Croatian)
Currently translated at 90.0% (1482 of 1646 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hr/
2024-05-14 16:23:38 +02:00
Milo Ivir f5ad8207c6
Translated using Weblate (Croatian)
Currently translated at 84.0% (301 of 358 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/hr/
2024-05-14 16:22:51 +02:00
Milo Ivir ca95a8cab3
Translated using Weblate (Croatian)
Currently translated at 82.6% (296 of 358 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/hr/
2024-05-14 16:22:11 +02:00
Milo Ivir 54eafe2698
Translated using Weblate (Croatian)
Currently translated at 90.0% (1482 of 1646 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hr/
2024-05-14 16:21:33 +02:00
778a69cd 9cf861850c Merge remote-tracking branch 'origin/main' 2024-05-01 11:24:44 +02:00
setop 04ee634594 Merge branch 'madbob-main-patch-21829' into 'main'
Fix padding for homepage's search form, to align it to other elements in the same page.

See merge request framasoft/mobilizon!1550
2024-04-28 10:23:02 +00:00
setop 0a2cc39c3c Merge branch 'add-hat-geocoder-as-a-config' into 'main'
feat(backend): add hat geocoder as a config

See merge request framasoft/mobilizon!1551
2024-04-28 10:11:25 +00:00
setop a0fc154268 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Framasoft Weblate

See merge request framasoft/mobilizon!1545
2024-04-28 09:53:04 +00:00
Weblate Framasoft ec616ec517 Translations update from Framasoft Weblate 2024-04-28 09:53:04 +00:00
setop d5adda00a9 feat(backend): add hat geocoder as a config 2024-04-24 12:19:44 +02:00
Roberto Guido 5998b49fae Fix padding for homepage's search form, to align it to other elements in the same page. 2024-04-21 15:12:00 +00:00
778a69cd 83dce0c8ee update mix.nix 2024-04-14 14:48:15 +02:00
778a69cd e9d17efa37 fixup bad merge on logo 2024-04-10 16:17:42 +02:00
778a69cd ad05c9ea93 flake.lock: Update
Flake lock file updates:

• Updated input 'nix-filter':
    'github:numtide/nix-filter/3449dc925982ad46246cfc36469baf66e1b64f17' (2024-01-15)
  → 'github:numtide/nix-filter/3342559a24e85fc164b295c3444e8a139924675b' (2024-03-11)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/faf912b086576fd1a15fca610166c98d47bc667e' (2024-02-05)
  → 'github:NixOS/nixpkgs/4cba8b53da471aea2ab2b0c1f30a81e7c451f4b6' (2024-04-08)
2024-04-10 15:43:44 +02:00
778a69cd 579397a9b5 bump version number to 5.0.0-beta.1 2024-04-10 15:40:57 +02:00
778a69cd ca76b7bcf1 Merge remote-tracking branch 'origin/main' 2024-04-10 15:33:09 +02:00
setop 162d4f5fb1 Merge branch 'v5.0-WIP' into 'main'
all developments of milestone 1

Closes #1419 and #1414

See merge request framasoft/mobilizon!1548
2024-04-10 12:36:22 +00:00
setop 7030d56864 all developments of milestone 1 2024-04-10 12:36:21 +00:00
778a69cd 5f92e4bbb9 make setting the instance_name in the Admin UI required 2024-03-08 18:12:55 +01:00
778a69cd 18f791368b neater formatting for flake.nix 2024-03-07 13:31:23 +01:00
778a69cd 6f373f5ea8 copy mobilizonConfig at setup, use writeShellApplication for better runtime checks 2024-03-07 13:31:17 +01:00
778a69cd ec4b6abc4d don't run ecto.create as we can safely assume the db already exists 2024-03-07 12:36:30 +01:00
778a69cd fa813f6216 move nixos-test to integration-test.nix 2024-03-06 00:04:54 +01:00
778a69cd 989158ef4d development environment for flake 2024-03-06 00:04:54 +01:00
778a69cd 561677ce3a mentian that we deploy from v4.x from now on 2024-03-04 12:27:27 +01:00
778a69cd 0cec96ee41 don't use a specific nodejs version but use nixpkgs default 2024-03-01 15:06:46 +01:00
778a69cd 9894330bff add comment about version number 2024-02-29 18:40:38 +01:00
778a69cd a49ba0fdbd don't preload shape-*.svg that are not rendered anymore 2024-02-29 15:09:28 +01:00
778a69cd 941d3cc3e2 fix version number in nix path so img paths work out again 2024-02-29 14:50:14 +01:00
329 changed files with 14158 additions and 8430 deletions

View file

@ -4,7 +4,6 @@ stages:
- install
- check
- build-js
- sentry
- test
- build
- upload
@ -93,21 +92,6 @@ build-frontend:
needs:
- lint-front
sentry-commit:
stage: sentry
image: getsentry/sentry-cli
script:
- echo "Create a new release $CI_COMMIT_TAG"
- sentry-cli releases new $CI_COMMIT_TAG
- sentry-cli releases set-commits $CI_COMMIT_TAG --auto
- sentry-cli releases files $CI_COMMIT_TAG upload-sourcemaps priv/static/assets/
- sentry-cli releases finalize $CI_COMMIT_TAG
- echo "Finalized release for $CI_COMMIT_TAG"
needs:
- build-frontend
only:
- tags@framasoft/mobilizon
deps:
stage: check
before_script:
@ -162,6 +146,8 @@ vitest:
e2e:
stage: test
except:
- tags@framasoft/mobilizon
services:
- name: postgis/postgis:16-3.4
alias: postgres
@ -306,7 +292,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 +326,6 @@ package-app:
"debian-buster",
"ubuntu-jammy",
"ubuntu-focal",
"ubuntu-bionic",
"fedora-38",
"fedora-39",
]

View file

@ -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

View file

@ -1,2 +1,3 @@
erlang 26.2.2
elixir 1.16.1-otp-26
nodejs 18.19.1

View file

@ -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

View file

@ -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

View file

@ -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"

View file

@ -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">
@ -20,7 +20,7 @@ Mobilizon is your federated organization and mobilization platform. Gather peopl
## Notes about this fork
The currently deployed `main` branch can be tested at [https://rotes.potsda.mn/](https://rotes.potsda.mn/).
The currently deployed `v4.x` branch can be tested at [https://rotes.potsda.mn/](https://rotes.potsda.mn/).
### Building with Nix

View file

@ -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.

View file

@ -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,

View file

@ -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,

View file

@ -149,51 +149,38 @@ geospatial_service =
"MapQuest" -> Mobilizon.Service.Geospatial.MapQuest
"Mimirsbrunn" -> Mobilizon.Service.Geospatial.Mimirsbrunn
"Pelias" -> Mobilizon.Service.Geospatial.Pelias
"Hat" -> Mobilizon.Service.Geospatial.Hat
end
config :mobilizon, Mobilizon.Service.Geospatial, service: geospatial_service
if System.get_env("MOBILIZON_GEOSPATIAL_SERVICE", "Nominatim") == "Nominatim" do
config :mobilizon, Mobilizon.Service.Geospatial.Nominatim,
endpoint:
System.get_env(
"MOBILIZON_GEOSPATIAL_NOMINATIM_ENDPOINT",
"https://nominatim.openstreetmap.org"
),
api_key: System.get_env("MOBILIZON_GEOSPATIAL_NOMINATIM_API_KEY", nil)
end
config :mobilizon, Mobilizon.Service.Geospatial.Nominatim,
endpoint:
System.get_env(
"MOBILIZON_GEOSPATIAL_NOMINATIM_ENDPOINT",
"https://nominatim.openstreetmap.org"
),
api_key: System.get_env("MOBILIZON_GEOSPATIAL_NOMINATIM_API_KEY", nil)
if System.get_env("MOBILIZON_GEOSPATIAL_SERVICE", "Nominatim") == "Addok" do
config :mobilizon, Mobilizon.Service.Geospatial.Addok,
endpoint:
System.get_env("MOBILIZON_GEOSPATIAL_ADDOK_ENDPOINT", "https://api-adresse.data.gouv.fr")
end
config :mobilizon, Mobilizon.Service.Geospatial.Addok,
endpoint:
System.get_env("MOBILIZON_GEOSPATIAL_ADDOK_ENDPOINT", "https://api-adresse.data.gouv.fr")
if System.get_env("MOBILIZON_GEOSPATIAL_SERVICE", "Nominatim") == "Photon" do
config :mobilizon, Mobilizon.Service.Geospatial.Photon,
endpoint: System.get_env("MOBILIZON_GEOSPATIAL_PHOTON_ENDPOINT", "https://photon.komoot.de")
end
config :mobilizon, Mobilizon.Service.Geospatial.Photon,
endpoint: System.get_env("MOBILIZON_GEOSPATIAL_PHOTON_ENDPOINT", "https://photon.komoot.de")
if System.get_env("MOBILIZON_GEOSPATIAL_SERVICE", "Nominatim") == "GoogleMaps" do
config :mobilizon, Mobilizon.Service.Geospatial.GoogleMaps,
api_key: System.get_env("MOBILIZON_GEOSPATIAL_GOOGLE_MAPS_API_KEY", nil),
fetch_place_details: true
end
config :mobilizon, Mobilizon.Service.Geospatial.GoogleMaps,
api_key: System.get_env("MOBILIZON_GEOSPATIAL_GOOGLE_MAPS_API_KEY", nil),
fetch_place_details: true
if System.get_env("MOBILIZON_GEOSPATIAL_SERVICE", "Nominatim") == "MapQuest" do
config :mobilizon, Mobilizon.Service.Geospatial.MapQuest,
api_key: System.get_env("MOBILIZON_GEOSPATIAL_MAP_QUEST_API_KEY", nil)
end
config :mobilizon, Mobilizon.Service.Geospatial.MapQuest,
api_key: System.get_env("MOBILIZON_GEOSPATIAL_MAP_QUEST_API_KEY", nil)
if System.get_env("MOBILIZON_GEOSPATIAL_SERVICE", "Nominatim") == "Mimirsbrunn" do
config :mobilizon, Mobilizon.Service.Geospatial.Mimirsbrunn,
endpoint: System.get_env("MOBILIZON_GEOSPATIAL_MIMIRSBRUNN_ENDPOINT", nil)
end
config :mobilizon, Mobilizon.Service.Geospatial.Mimirsbrunn,
endpoint: System.get_env("MOBILIZON_GEOSPATIAL_MIMIRSBRUNN_ENDPOINT", nil)
if System.get_env("MOBILIZON_GEOSPATIAL_SERVICE", "Nominatim") == "Pelias" do
config :mobilizon, Mobilizon.Service.Geospatial.Pelias,
endpoint: System.get_env("MOBILIZON_GEOSPATIAL_PELIAS_ENDPOINT", nil)
end
config :mobilizon, Mobilizon.Service.Geospatial.Pelias,
endpoint: System.get_env("MOBILIZON_GEOSPATIAL_PELIAS_ENDPOINT", nil)
sentry_dsn = System.get_env("MOBILIZON_ERROR_REPORTING_SENTRY_DSN", nil)

View file

@ -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.

View file

@ -1,40 +1,36 @@
{ lib
, beamPackages
, fetchFromGitHub
, git
, cmake
, nixosTests
, src
, src-config
, mobilizon-js
{
lib,
beam_nox,
fetchFromGitHub,
cmake,
nixosTests,
src,
src-config,
mobilizon-js,
}:
let
inherit (beamPackages) mixRelease buildMix;
inherit (beam_nox.packages.erlang_26) mixRelease buildMix elixir_1_15;
elixir = elixir_1_15;
beamPackages = beam_nox.packages.erlang_26.extend (self: super: { elixir = self.elixir_1_15; });
in
mixRelease rec {
pname = "mobilizon";
version = "4.0.2";
# This has to be kept in sync with the version in mix.exs and package.json!
# Otherwise the nginx routing isn't going to work properly.
version = "5.1.1";
inherit src;
# See https://github.com/whitfin/cachex/issues/205
# This circumvents a startup error for now
stripDebug = false;
nativeBuildInputs = [ git cmake ];
mixNixDeps = import ./mix.nix {
inherit beamPackages lib;
overrides = (final: prev:
(lib.mapAttrs
(_: value: value.override {
appConfigPath = src-config;
})
prev) // {
fast_html = prev.fast_html.override {
nativeBuildInputs = [ cmake ];
};
# Update deps.nix by running `mix deps.nix`
mixNixDeps = import ./deps.nix {
inherit lib beamPackages;
overrides = (
final: prev:
(lib.mapAttrs (_: value: value.override { appConfigPath = src-config; }) prev)
// {
fast_html = prev.fast_html.override { nativeBuildInputs = [ cmake ]; };
ex_cldr = prev.ex_cldr.overrideAttrs (old: {
# We have to use the GitHub sources, as it otherwise tries to download
# the locales at build time.
@ -42,77 +38,27 @@ mixRelease rec {
owner = "elixir-cldr";
repo = "cldr";
rev = "v${old.version}";
sha256 = assert old.version == "2.37.5";
sha256 =
assert old.version == "2.37.5";
"sha256-T5Qvuo+xPwpgBsqHNZYnTCA4loToeBn1LKTMsDcCdYs=";
};
postInstall = ''
cp $src/priv/cldr/locales/* $out/lib/erlang/lib/ex_cldr-${old.version}/priv/cldr/locales/
'';
});
# Upstream issue: https://github.com/bryanjos/geo_postgis/pull/87
geo_postgis = prev.geo_postgis.overrideAttrs (old: {
propagatedBuildInputs = old.propagatedBuildInputs ++ [ final.ecto ];
});
# The remainder are Git dependencies (and their deps) that are not supported by mix2nix currently.
web_push_encryption = buildMix rec {
name = "web_push_encryption";
version = "0.3.1";
src = fetchFromGitHub {
owner = "danhper";
repo = "elixir-web-push-encryption";
rev = "6e143dcde0a2854c4f0d72816b7ecab696432779";
sha256 = "sha256-Da+/28SPZuUQBi8fQj31zmMvhMrYUaQIW4U4E+mRtMg=";
};
beamDeps = with final; [ httpoison jose ];
};
icalendar = buildMix rec {
name = "icalendar";
version = "unstable-2022-04-10";
src = fetchFromGitHub {
owner = "tcitworld";
repo = name;
rev = "1033d922c82a7223db0ec138e2316557b70ff49f";
sha256 = "sha256-N3bJZznNazLewHS4c2B7LP1lgxd1wev+EWVlQ7rOwfU=";
};
beamDeps = with final; [ mix_test_watch ex_doc timex ];
};
rajska = buildMix rec {
name = "rajska";
version = "1.3.3";
src = fetchFromGitHub {
owner = "tcitworld";
repo = name;
rev = "0c036448e261e8be6a512581c592fadf48982d84";
sha256 = "sha256-4pfply1vTAIT2Xvm3kONmrCK05xKfXFvcb8EKoSCXBE=";
};
beamDeps = with final; [ ex_doc credo absinthe excoveralls hammer mock ];
};
exkismet = buildMix rec {
name = "exkismet";
version = "0.0.3";
src = fetchFromGitHub {
owner = "tcitworld";
repo = name;
rev = "8b5485fde00fafbde20f315bec387a77f7358334";
sha256 = "sha256-ttgCWoBKU7VTjZJBhZNtqVF4kN7psBr/qOeR65MbTqw=";
};
beamDeps = with final; [ httpoison ex_doc credo doctor dialyxir ];
};
});
}
);
};
preConfigure = ''
export LANG=C.UTF-8 # fix elixir locale warning
'';
# fix elixir locale warning
env.LANG = "C.UTF-8";
# Install the compiled js part
preBuild =
''
cp -a "${mobilizon-js}/_napalm-install/priv/static" ./priv
chmod 770 -R ./priv
'';
preBuild = ''
cp -a "${mobilizon-js}/_napalm-install/priv/static" ./priv
chmod 770 -R ./priv
'';
postBuild = ''
mix phx.digest --no-deps-check
@ -128,12 +74,15 @@ mixRelease rec {
ln -s ${ex_cldr.src}/priv/cldr/locales $out/lib/ex_cldr-${ex_cldr.version}/priv/cldr/locales
'';
passthru.elixirPackage = beamPackages.elixir;
passthru.elixirPackage = elixir;
meta = with lib; {
description = "Mobilizon is an online tool to help manage your events, your profiles and your groups";
homepage = "https://joinmobilizon.org/";
license = licenses.agpl3Plus;
maintainers = with maintainers; [ minijackson erictapen ];
maintainers = with maintainers; [
minijackson
erictapen
];
};
}

2475
deps.nix Normal file

File diff suppressed because it is too large Load diff

View file

@ -1,4 +1,4 @@
ARG IMAGE="elixir:1.15"
ARG IMAGE="elixir:1.16"
FROM ${IMAGE} as build
SHELL ["/bin/bash", "-c"]

View file

@ -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

View file

@ -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/

View file

@ -26,11 +26,11 @@
]
},
"locked": {
"lastModified": 1703102458,
"narHash": "sha256-3pOV731qi34Q2G8e2SqjUXqnftuFrbcq+NdagEZXISo=",
"lastModified": 1717929455,
"narHash": "sha256-BiI5xWygriOJuNISnGAeL0KYxrEMnjgpg+7wDskVBhI=",
"owner": "nix-community",
"repo": "napalm",
"rev": "edcb26c266ca37c9521f6a97f33234633cbec186",
"rev": "e1babff744cd278b56abe8478008b4a9e23036cf",
"type": "github"
},
"original": {
@ -41,11 +41,11 @@
},
"nix-filter": {
"locked": {
"lastModified": 1705332318,
"narHash": "sha256-kcw1yFeJe9N4PjQji9ZeX47jg0p9A0DuU4djKvg1a7I=",
"lastModified": 1731533336,
"narHash": "sha256-oRam5PS1vcrr5UPgALW0eo1m/5/pls27Z/pabHNy2Ms=",
"owner": "numtide",
"repo": "nix-filter",
"rev": "3449dc925982ad46246cfc36469baf66e1b64f17",
"rev": "f7653272fd234696ae94229839a99b73c9ab7de0",
"type": "github"
},
"original": {
@ -56,11 +56,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1707092692,
"narHash": "sha256-ZbHsm+mGk/izkWtT4xwwqz38fdlwu7nUUKXTOmm4SyE=",
"lastModified": 1736701207,
"narHash": "sha256-jG/+MvjVY7SlTakzZ2fJ5dC3V1PrKKrUEOEE30jrOKA=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "faf912b086576fd1a15fca610166c98d47bc667e",
"rev": "ed4a395ea001367c1f13d34b1e01aa10290f67d6",
"type": "github"
},
"original": {

499
flake.nix
View file

@ -8,20 +8,27 @@
napalm.inputs.nixpkgs.follows = "nixpkgs";
};
outputs = { self, nixpkgs, nix-filter, napalm }:
outputs =
{
self,
nixpkgs,
nix-filter,
napalm,
}:
let
forAllSystems = f: nixpkgs.lib.genAttrs
[ "x86_64-linux" "aarch64-linux" ]
(system: f system);
nixpkgsFor = forAllSystems (
system:
import nixpkgs { inherit system; }
);
forAllSystems =
f:
nixpkgs.lib.genAttrs [
"x86_64-linux"
"aarch64-linux"
] (system: f system);
nixpkgsFor = forAllSystems (system: import nixpkgs { inherit system; });
filter = nix-filter.lib;
in
{
packages = forAllSystems (system:
packages = forAllSystems (
system:
let
pkgs = nixpkgsFor.${system};
# Directories that are neither needed for building the frontend nor the backend.
@ -55,9 +62,6 @@
};
mobilizon-frontend =
let
nodejs = pkgs.nodejs-18_x;
in
napalm.legacyPackages."${system}".buildPackage
(filter {
root = ./.;
@ -70,9 +74,12 @@
] ++ unrelatedDirs;
})
{
inherit nodejs;
inherit (pkgs) nodejs;
nativeBuildInputs = [ pkgs.imagemagick ];
npmCommands = [ "npm install" "npm run build" ];
npmCommands = [
"npm install"
"npm run build"
];
# Keep this in sync with the content of ./patches/
customPatchPackages = {
vue-i18n-extract."2.0.7" = pkgs: prev: {
@ -84,37 +91,166 @@
};
default = self.packages."${system}".mobilizon;
}
);
# Update local Mobilizon definition
update =
pkgs.writeShellScriptBin "update" ''
set -eou pipefail
${pkgs.mix2nix}/bin/mix2nix ./mix.lock > mix.nix
'';
});
devShells = forAllSystems (system:
let pkgs = nixpkgsFor.${system};
in {
default =
pkgs.mkShell {
buildInputs = with pkgs; [
elixir
mix2nix
cmake
imagemagick
nodejs-18_x
];
devShells = forAllSystems (
system:
let
pkgs = nixpkgsFor.${system};
settingsFormat = pkgs.formats.elixirConf { };
mobilizonConfig = settingsFormat.generate "runtime.exs" {
":mobilizon" = {
"Mobilizon.Web.Endpoint" = {
server = true;
url.host = "mobilizon.dev";
http = {
ip = settingsFormat.lib.mkTuple [
0
0
0
0
0
0
0
1
];
port = 4000;
};
secret_key_base = "2q/l1WDx3RQQy7gZ1k001//6nc66moWUEJQyGuMK/z3zPLYW6FYtIgCkUzGP0+X/";
};
"Mobilizon.Web.Auth.Guardian" = {
secret_key = "N8x7/tf0kInLFS2poO22g6OGPiMjSrDEhmk29nFqV35q7hQ0DtBt/cRYCsqBNp2L";
};
":instance" = {
name = "Mobilizon";
description = "Change this to a proper description of your instance";
hostname = "mobilizon.dev";
registrations_open = true;
email_from = "noreply@mobilizon.dev";
email_reply_to = "noreply@mobilizon.dev";
};
"Mobilizon.Storage.Repo" = {
adapter = settingsFormat.lib.mkAtom "Ecto.Adapters.Postgres";
pool_size = 10;
username = "mobilizon";
database = "mobilizon";
socket_dir = "/var/run/postgresql";
};
};
});
};
in
{
default = pkgs.mkShell {
MIX_ENV = "dev";
PGUSER = "mobilizon";
PGDATABASE = "mobilizon";
buildInputs = with pkgs; [
elixir
cmake
imagemagick
nodejs
inotify-tools
(pkgs.writeShellApplication {
name = "build";
runtimeInputs = [
elixir
nodejs
];
text = ''
mix deps.get
mix deps.nix
mix deps.compile
mix phx.digest
npm install
npm run build
'';
})
(pkgs.writeShellApplication {
name = "setup";
runtimeInputs = [
elixir
postgresql
];
text = ''
cat ${mobilizonConfig} > config/runtime.exs
# We assume the database already exists
sudo -u postgres psql -d mobilizon << SQL
create extension if not exists postgis;
create extension if not exists unaccent;
create extension if not exists pg_trgm;
SQL
mix ecto.migrate
'';
})
(pkgs.writeShellApplication {
name = "start";
runtimeInputs = [ elixir ];
text = ''
mix phx.server
'';
})
(pkgs.writeShellApplication {
name = "clean";
runtimeInputs = [ postgresql ];
text = ''
rm -rf deps/ _build/ node_modules/
sudo -u postgres psql -c "DROP DATABASE mobilizon;"
sudo systemctl restart postgresql.service
'';
})
];
};
}
);
overlays.default = final: prev: {
inherit (self.packages."${prev.system}") mobilizon;
};
nixosModules.devSetup =
{
config,
lib,
pkgs,
...
}:
let
cfg = config.mobilizonDevEnvironment;
in
{
options.mobilizonDevEnvironment = {
enable = lib.mkEnableOption (lib.mdDoc "development environment for Mobilizon");
user = lib.mkOption {
type = lib.types.str;
description = "Unix user that runs the backend application to connect to the database";
};
};
config = lib.mkIf cfg.enable {
services.postgresql = {
enable = true;
ensureDatabases = [ "mobilizon" ];
ensureUsers = [
{
name = "mobilizon";
ensureDBOwnership = true;
}
];
extensions = with config.services.postgresql.package.pkgs; [ postgis ];
identMap = ''
map-mobilizon ${cfg.user} mobilizon
'';
authentication = ''
local all mobilizon ident map=map-mobilizon
'';
};
};
};
overlays.default = final: prev: { inherit (self.packages."${prev.system}") mobilizon; };
checks = forAllSystems (system: {
inherit (self.packages.${system}) mobilizon update;
inherit (self.packages.${system}) mobilizon;
nixosTest =
let
pkgsMobilizon = import nixpkgs {
@ -122,7 +258,7 @@
overlays = [ self.overlays.default ];
};
certs = import "${nixpkgs}/nixos/tests/common/acme/server/snakeoil-certs.nix";
test = import ./nixos-test.nix { inherit certs; };
test = import ./integration-test.nix { inherit certs; };
in
pkgsMobilizon.nixosTest test;
});
@ -130,120 +266,197 @@
lib = {
# Patch the logos in the source tree of a mobilizon-frontend package before building.
# Can be used to construct the argument for .overrideAttrs on mobilizon-frontend.
mobilizonLogosOverride = icons:
mobilizonLogosOverride =
icons:
let
inherit (icons) logo favicon;
in
old: {
postPatch = ''
cp '${logo}' src/assets/logo.svg
postPatch =
''
cp '${logo}' src/assets/logo.svg
magick convert \
-resize x16 \
-gravity center \
-crop 16x16+0+0 \
-flatten \
-colors 256 \
'${favicon}' \
public/img/icons/favicon-16x16.png
magick convert \
-resize x32 \
-gravity center \
-crop 32x32+0+0 \
-flatten \
-colors 256 \
'${favicon}' \
public/img/icons/favicon-32x32.png
magick convert \
-resize x16 \
-gravity center \
-crop 16x16+0+0 \
-flatten \
-colors 256 \
'${favicon}' \
favicon-16x16.ico
magick convert \
-resize x32 \
-gravity center \
-crop 32x32+0+0 \
-flatten \
-colors 256 \
'${favicon}' \
favicon-32x32.ico
magick convert \
-resize x48 \
-gravity center \
-crop 48x48+0+0 \
-flatten \
-colors 256 \
'${favicon}' \
favicon-48x48.ico
magick convert \
favicon-16x16.ico \
favicon-32x32.ico \
favicon-48x48.ico \
public/favicon.ico
rm favicon-16x16.ico favicon-32x32.ico favicon-48x48.ico
cp '${favicon}' public/img/icons/favicon.svg
cp '${favicon}' public/img/icons/safari-pinned-tab.svg
magick convert \
'${favicon}' \
-gravity center \
-extent 630x350 \
public/img/mobilizon_default_card.png
magick convert \
-background '#e08c96' \
'${logo}' \
-resize 366x108 \
public/img/mobilizon_logo.png
'' + nixpkgs.lib.concatMapStrings
({ resize, filename }: ''
magick convert \
-resize x${resize} \
-resize x16 \
-gravity center \
-crop 16x16+0+0 \
-flatten \
-colors 256 \
'${favicon}' \
public/img/icons/${filename}
public/img/icons/favicon-16x16.png
'')
[
{ resize = "180"; filename = "apple-touch-icon.png"; }
{ resize = "180"; filename = "apple-touch-icon-180x180.png"; }
{ resize = "152"; filename = "apple-touch-icon-152x152.png"; }
{ resize = "120"; filename = "apple-touch-icon-120x120.png"; }
{ resize = "76"; filename = "apple-touch-icon-76x76.png"; }
{ resize = "60"; filename = "apple-touch-icon-60x60.png"; }
{ resize = "192"; filename = "android-chrome-192x192.png"; }
{ resize = "512"; filename = "android-chrome-512x512.png"; }
{ resize = "192"; filename = "android-chrome-maskable-192x192.png"; }
{ resize = "512"; filename = "android-chrome-maskable-512x512.png"; }
{ resize = "128"; filename = "badge-128x128.png"; }
{ resize = "144"; filename = "icon-144x144.png"; }
{ resize = "168"; filename = "icon-168x168.png"; }
{ resize = "256"; filename = "icon-256x256.png"; }
{ resize = "48"; filename = "icon-48x48.png"; }
{ resize = "72"; filename = "icon-72x72.png"; }
{ resize = "96"; filename = "icon-96x96.png"; }
{ resize = "144"; filename = "msapplication-icon-144x144.png"; }
{ resize = "150"; filename = "mstile-150x150.png"; }
{ resize = "192"; filename = "android-chrome-192x192.png"; }
{ resize = "512"; filename = "android-chrome-512x512.png"; }
{ resize = "192"; filename = "android-chrome-maskable-192x192.png"; }
{ resize = "512"; filename = "android-chrome-maskable-512x512.png"; }
];
magick convert \
-resize x32 \
-gravity center \
-crop 32x32+0+0 \
-flatten \
-colors 256 \
'${favicon}' \
public/img/icons/favicon-32x32.png
magick convert \
-resize x16 \
-gravity center \
-crop 16x16+0+0 \
-flatten \
-colors 256 \
'${favicon}' \
favicon-16x16.ico
magick convert \
-resize x32 \
-gravity center \
-crop 32x32+0+0 \
-flatten \
-colors 256 \
'${favicon}' \
favicon-32x32.ico
magick convert \
-resize x48 \
-gravity center \
-crop 48x48+0+0 \
-flatten \
-colors 256 \
'${favicon}' \
favicon-48x48.ico
magick convert \
favicon-16x16.ico \
favicon-32x32.ico \
favicon-48x48.ico \
public/favicon.ico
rm favicon-16x16.ico favicon-32x32.ico favicon-48x48.ico
cp '${favicon}' public/img/icons/favicon.svg
cp '${favicon}' public/img/icons/safari-pinned-tab.svg
magick convert \
'${favicon}' \
-gravity center \
-extent 630x350 \
public/img/mobilizon_default_card.png
magick convert \
-background '#e08c96' \
'${logo}' \
-resize 366x108 \
public/img/mobilizon_logo.png
''
+
nixpkgs.lib.concatMapStrings
(
{ resize, filename }:
''
magick convert \
-resize x${resize} \
'${favicon}' \
public/img/icons/${filename}
''
)
[
{
resize = "180";
filename = "apple-touch-icon.png";
}
{
resize = "180";
filename = "apple-touch-icon-180x180.png";
}
{
resize = "152";
filename = "apple-touch-icon-152x152.png";
}
{
resize = "120";
filename = "apple-touch-icon-120x120.png";
}
{
resize = "76";
filename = "apple-touch-icon-76x76.png";
}
{
resize = "60";
filename = "apple-touch-icon-60x60.png";
}
{
resize = "192";
filename = "android-chrome-192x192.png";
}
{
resize = "512";
filename = "android-chrome-512x512.png";
}
{
resize = "192";
filename = "android-chrome-maskable-192x192.png";
}
{
resize = "512";
filename = "android-chrome-maskable-512x512.png";
}
{
resize = "128";
filename = "badge-128x128.png";
}
{
resize = "144";
filename = "icon-144x144.png";
}
{
resize = "168";
filename = "icon-168x168.png";
}
{
resize = "256";
filename = "icon-256x256.png";
}
{
resize = "48";
filename = "icon-48x48.png";
}
{
resize = "72";
filename = "icon-72x72.png";
}
{
resize = "96";
filename = "icon-96x96.png";
}
{
resize = "144";
filename = "msapplication-icon-144x144.png";
}
{
resize = "150";
filename = "mstile-150x150.png";
}
{
resize = "192";
filename = "android-chrome-192x192.png";
}
{
resize = "512";
filename = "android-chrome-512x512.png";
}
{
resize = "192";
filename = "android-chrome-maskable-192x192.png";
}
{
resize = "512";
filename = "android-chrome-maskable-512x512.png";
}
];
};
};
formatter = forAllSystems (system: nixpkgsFor.${system}.nixfmt-rfc-style);
};
}

View file

@ -7,7 +7,10 @@ in
{
name = "mobilizon";
meta.maintainers = with lib.maintainers; [ minijackson erictapen ];
meta.maintainers = with lib.maintainers; [
minijackson
erictapen
];
nodes.server =
{ pkgs, ... }:
@ -25,6 +28,8 @@ in
};
};
systemd.services.mobilizon-postgresql.serviceConfig.Restart = "on-failure";
services.postgresql.package = pkgs.postgresql_14;
security.pki.certificateFiles = [ certs.ca.cert ];

View file

@ -7,6 +7,7 @@ defmodule Mobilizon.Federation.ActivityPub.Publisher do
alias Mobilizon.Config
alias Mobilizon.Federation.ActivityPub.{Activity, Federator, Relay, Transmogrifier, Visibility}
alias Mobilizon.Federation.HTTPSignatures.Signature
alias Mobilizon.Service.HTTP.ActivityPub, as: ActivityPubClient
require Logger
import Mobilizon.Federation.ActivityPub.Utils,
@ -95,16 +96,16 @@ defmodule Mobilizon.Federation.ActivityPub.Publisher do
date: date
})
Tesla.post(
inbox,
json,
headers: [
{"Content-Type", "application/activity+json"},
{"signature", signature},
{"digest", digest},
{"date", date}
]
)
headers = [
{"Content-Type", "application/activity+json"},
{"signature", signature},
{"digest", digest},
{"date", date}
]
client = ActivityPubClient.client(headers: headers)
ActivityPubClient.post(client, inbox, json)
end
@spec convert_followers_in_recipients(list(String.t())) :: {list(String.t()), list(String.t())}

View file

@ -4,7 +4,7 @@ defmodule Mobilizon.Federation.ActivityPub.Types.Resources do
alias Mobilizon.Actors.Actor
alias Mobilizon.Federation.ActivityPub.Permission
alias Mobilizon.Federation.ActivityPub.Types.Entity
alias alias Mobilizon.Federation.ActivityStream
alias Mobilizon.Federation.ActivityStream
alias Mobilizon.Federation.ActivityStream.Convertible
alias Mobilizon.Resources.Resource
alias Mobilizon.Service.Activity.Resource, as: ResourceActivity

View file

@ -9,13 +9,9 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Media do
alias Mobilizon.Federation.ActivityStream
alias Mobilizon.Medias
alias Mobilizon.Medias.Media, as: MediaModel
alias Mobilizon.Service.HTTP.RemoteMediaDownloaderClient
alias Mobilizon.Web.Upload
@http_options [
ssl: [{:versions, [:"tlsv1.2"]}]
]
@doc """
Convert a media struct to an ActivityStream representation.
"""
@ -65,7 +61,7 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Media do
defp upload_media(media_url, ""), do: upload_media(media_url, "unknown")
defp upload_media(media_url, name) do
case Tesla.get(media_url, opts: @http_options) do
case RemoteMediaDownloaderClient.get(media_url) do
{:ok, %{body: body}} ->
case Upload.store(%{body: body, name: name}) do
{:ok, %{url: _url} = uploaded} ->

View file

@ -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

View file

@ -57,7 +57,8 @@ defmodule Mobilizon.GraphQL.API.Search do
current_actor_id: Map.get(args, :current_actor_id),
exclude_my_groups: Map.get(args, :exclude_my_groups, false),
exclude_stale_actors: true,
local_only: Map.get(args, :search_target, :internal) == :self
local_only: Map.get(args, :search_target, :internal) == :self,
sort_by: Map.get(args, :sort_by)
],
page,
limit

View file

@ -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()}

View file

@ -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?(),

View file

@ -69,13 +69,31 @@ defmodule Mobilizon.GraphQL.Resolvers.Event do
@spec list_events(any(), map(), Absinthe.Resolution.t()) ::
{:ok, Page.t(Event.t())} | {:error, :events_max_limit_reached}
def list_events(
_parent,
%{
page: page,
limit: limit,
order_by: order_by,
direction: direction,
long_events: long_events,
location: location,
radius: radius
},
_resolution
)
when limit < @event_max_limit do
{:ok,
Events.list_events(page, limit, order_by, direction, true, long_events, location, radius)}
end
def list_events(
_parent,
%{page: page, limit: limit, order_by: order_by, direction: direction},
_resolution
)
when limit < @event_max_limit do
{:ok, Events.list_events(page, limit, order_by, direction)}
{:ok, Events.list_events(page, limit, order_by, direction, true)}
end
def list_events(_parent, %{page: _page, limit: _limit}, _resolution) do

View file

@ -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,

View file

@ -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")

View file

@ -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",

View file

@ -32,6 +32,11 @@ defmodule Mobilizon.GraphQL.Schema.EventType do
field(:description, :string, description: "The event's description")
field(:begins_on, :datetime, description: "Datetime for when the event begins")
field(:ends_on, :datetime, description: "Datetime for when the event ends")
field(:long_event, :boolean,
description: "Whether the event is a long event (activity) or not"
)
field(:status, :event_status, description: "Status of the event")
field(:visibility, :event_visibility, description: "The event's visibility")
field(:join_options, :event_join_options, description: "The event's visibility")
@ -263,6 +268,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 +325,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")
@ -367,6 +380,13 @@ defmodule Mobilizon.GraphQL.Schema.EventType do
object :event_queries do
@desc "Get all events"
field :events, :paginated_event_list do
arg(:location, :string, default_value: nil, description: "A geohash for coordinates")
arg(:radius, :float,
default_value: nil,
description: "Radius around the location to search in"
)
arg(:page, :integer, default_value: 1, description: "The page in the paginated event list")
arg(:limit, :integer, default_value: 10, description: "The limit of events per page")
@ -380,6 +400,11 @@ defmodule Mobilizon.GraphQL.Schema.EventType do
description: "Direction for the sort"
)
arg(:long_events, :boolean,
default_value: nil,
description: "if mention filter in or out long events"
)
middleware(Rajska.QueryAuthorization, permit: :all)
resolve(&Event.list_events/3)

View file

@ -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

View file

@ -17,6 +17,11 @@ defmodule Mobilizon.GraphQL.Schema.SearchType do
field(:title, :string, description: "The event's title")
field(:begins_on, :datetime, description: "Datetime for when the event begins")
field(:ends_on, :datetime, description: "Datetime for when the event ends")
field(:long_event, :boolean,
description: "Whether the event is a long event (activity) or not"
)
field(:status, :event_status, description: "Status of the event")
field(:picture, :media, description: "The event's picture")
field(:physical_address, :address, description: "The event's physical address")
@ -52,6 +57,11 @@ defmodule Mobilizon.GraphQL.Schema.SearchType do
field(:title, :string, description: "The event's title")
field(:begins_on, :datetime, description: "Datetime for when the event begins")
field(:ends_on, :datetime, description: "Datetime for when the event ends")
field(:long_event, :boolean,
description: "Whether the event is a long event (activity) or not"
)
field(:status, :event_status, description: "Status of the event")
field(:picture, :media, description: "The event's picture")
field(:physical_address, :address, description: "The event's physical address")
@ -171,7 +181,11 @@ defmodule Mobilizon.GraphQL.Schema.SearchType do
enum :search_group_sort_options do
value(:match_desc, description: "The pertinence of the result")
value(:member_count_desc, description: "The members count of the group")
value(:member_count_asc, description: "The members count of the group ascendant order")
value(:member_count_desc, description: "The members count of the group descendent order")
value(:created_at_asc, description: "When the group was created ascendant order")
value(:created_at_desc, description: "When the group was created descendent order")
value(:last_event_activity, description: "Last event activity of the group")
end
enum :search_event_sort_options do
@ -273,6 +287,8 @@ defmodule Mobilizon.GraphQL.Schema.SearchType do
description: "Radius around the location to search in"
)
arg(:long_events, :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")

View file

@ -13,6 +13,7 @@ defmodule Mobilizon.Actors do
alias Mobilizon.Actors.{Actor, Bot, Follower, Member}
alias Mobilizon.Addresses.Address
alias Mobilizon.Crypto
alias Mobilizon.Events.Event
alias Mobilizon.Events.FeedToken
alias Mobilizon.Medias
alias Mobilizon.Service.Workers
@ -518,7 +519,6 @@ defmodule Mobilizon.Actors do
query = from(a in Actor)
query
|> distinct([q], q.id)
|> actor_by_username_or_name_query(term)
|> maybe_join_address(
Keyword.get(options, :location),
@ -532,8 +532,56 @@ defmodule Mobilizon.Actors do
|> filter_by_minimum_visibility(Keyword.get(options, :minimum_visibility, :public))
|> filter_suspended(false)
|> filter_out_anonymous_actor_id(anonymous_actor_id)
# order_by
|> actor_order(Keyword.get(options, :sort_by, :match_desc))
end
# sort by most recent id if "best match"
defp actor_order(query, :match_desc) do
query
|> order_by([q], desc: q.id)
end
defp actor_order(query, :last_event_activity) do
query
|> join(:left, [q], e in Event, on: e.attributed_to_id == q.id)
|> group_by([q, e], q.id)
|> order_by([q, e], [
# put groups with no events at the end of the list
fragment("MAX(?) IS NULL", e.updated_at),
# last edited event of the group
desc: max(e.updated_at),
# sort group with no event by id
desc: q.id
])
end
defp actor_order(query, :member_count_asc) do
query
|> join(:left, [q], m in Member, on: m.parent_id == q.id)
|> group_by([q, m], q.id)
|> order_by([q, m], asc: count(m.id), asc: q.id)
end
defp actor_order(query, :member_count_desc) do
query
|> join(:left, [q], m in Member, on: m.parent_id == q.id)
|> group_by([q, m], q.id)
|> order_by([q, m], desc: count(m.id), desc: q.id)
end
defp actor_order(query, :created_at_asc) do
query
|> order_by([q], asc: q.inserted_at)
end
defp actor_order(query, :created_at_desc) do
query
|> order_by([q], desc: q.inserted_at)
end
defp actor_order(query, _), do: query
@doc """
Gets a group by its title.
"""
@ -1394,16 +1442,6 @@ defmodule Mobilizon.Actors do
^username
)
)
|> order_by(
[a],
fragment(
"word_similarity(?, ?) + word_similarity(coalesce(?, ''), ?) desc",
a.preferred_username,
^username,
a.name,
^username
)
)
end
@spec maybe_join_address(

View file

@ -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()

View file

@ -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

View file

@ -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(),

View file

@ -66,6 +66,7 @@ defmodule Mobilizon.Events.Event do
participants: [Actor.t()],
contacts: [Actor.t()],
language: String.t(),
long_event: boolean,
metadata: [EventMetadata.t()]
}
@ -89,7 +90,8 @@ defmodule Mobilizon.Events.Event do
:picture_id,
:physical_address_id,
:attributed_to_id,
:language
:language,
:long_event
]
@attrs @required_attrs ++ @optional_attrs
@ -102,6 +104,7 @@ defmodule Mobilizon.Events.Event do
field(:slug, :string)
field(:description, :string)
field(:ends_on, :utc_datetime)
field(:long_event, :boolean, virtual: true, default: nil)
field(:title, :string)
field(:status, EventStatus, default: :confirmed)
field(:draft, :boolean, default: false)

View file

@ -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)

View file

@ -12,10 +12,13 @@ defmodule Mobilizon.Events do
import Mobilizon.Storage.Ecto
import Mobilizon.Events.Utils, only: [calculate_notification_time: 1]
require Logger
alias Ecto.{Changeset, Multi}
alias Mobilizon.Actors.{Actor, Follower}
alias Mobilizon.Addresses.Address
alias Mobilizon.Config
alias Mobilizon.Events.{
Event,
@ -140,6 +143,7 @@ defmodule Mobilizon.Events do
url
|> event_by_url_query()
|> Repo.one()
|> with_virtual_fields()
end
@doc """
@ -152,6 +156,7 @@ defmodule Mobilizon.Events do
|> event_by_url_query()
|> preload_for_event()
|> Repo.one!()
|> with_virtual_fields()
end
@doc """
@ -166,6 +171,7 @@ defmodule Mobilizon.Events do
|> filter_draft()
|> preload_for_event()
|> Repo.one!()
|> with_virtual_fields()
end
@doc """
@ -179,6 +185,7 @@ defmodule Mobilizon.Events do
|> filter_draft()
|> preload_for_event()
|> Repo.one()
|> with_virtual_fields()
end
@spec check_if_event_has_instance_follow(String.t(), integer()) :: boolean()
@ -198,6 +205,7 @@ defmodule Mobilizon.Events do
|> event_by_uuid_query()
|> preload_for_event()
|> Repo.one()
|> with_virtual_fields()
end
@doc """
@ -211,6 +219,7 @@ defmodule Mobilizon.Events do
|> filter_not_event_uuid(not_event_uuid)
|> filter_draft()
|> Repo.one()
|> with_virtual_fields()
end
@doc """
@ -358,24 +367,40 @@ defmodule Mobilizon.Events do
@doc """
Returns the list of events.
"""
@spec list_events(integer | nil, integer | nil, atom, atom, boolean) :: Page.t(Event.t())
@spec list_events(
integer | nil,
integer | nil,
atom,
atom,
boolean,
boolean | nil,
String.t() | nil,
float | nil
) :: Page.t(Event.t())
def list_events(
page \\ nil,
limit \\ nil,
sort \\ :begins_on,
direction \\ :asc,
is_future \\ true
is_future \\ true,
long_events \\ nil,
location \\ nil,
radius \\ nil
) do
Event
|> distinct([e], [{^direction, ^sort}, asc: e.id])
|> preload([:organizer_actor, :participants])
|> sort(sort, direction)
|> maybe_join_address(%{location: location, radius: radius})
|> events_for_location(%{location: location, radius: radius})
|> filter_future_events(is_future)
|> events_for_long_events(long_events)
|> filter_public_visibility()
|> filter_draft()
|> filter_cancelled_events()
|> filter_local_or_from_followed_instances_events()
|> Page.build_page(page, limit)
|> with_virtual_fields()
end
@spec stream_events_for_sitemap :: Enum.t()
@ -397,6 +422,7 @@ defmodule Mobilizon.Events do
|> preload_for_event()
|> event_order_by(sort, direction)
|> Page.build_page(page, limit)
|> with_virtual_fields()
end
@doc """
@ -409,6 +435,7 @@ defmodule Mobilizon.Events do
|> events_by_tags_query(limit)
|> filter_draft()
|> Repo.all()
|> with_virtual_fields()
end
@doc """
@ -424,6 +451,7 @@ defmodule Mobilizon.Events do
actor_id
|> do_list_public_events_for_actor()
|> Page.build_page(page, limit)
|> with_virtual_fields()
end
@doc """
@ -451,6 +479,7 @@ defmodule Mobilizon.Events do
|> do_list_public_events_for_actor()
|> event_filter_begins_on(DateTime.utc_now(), nil)
|> Page.build_page(page, limit)
|> with_virtual_fields()
end
@spec do_list_public_events_for_actor(integer()) :: Ecto.Query.t()
@ -469,6 +498,7 @@ defmodule Mobilizon.Events do
|> event_for_actor_query(desc: :begins_on)
|> preload_for_event()
|> Page.build_page(page, limit)
|> with_virtual_fields()
end
@spec list_simple_organized_events_for_group(Actor.t(), integer | nil, integer | nil) ::
@ -500,10 +530,13 @@ defmodule Mobilizon.Events do
group_id
|> event_for_group_query()
|> event_filter_visibility(visibility)
|> event_filter_begins_on(after_datetime, before_datetime)
# We want future and ongoing events, so we use ends_on
# See issue #1567
|> event_filter_ends_on(after_datetime, before_datetime)
|> event_order_by(order_by, order_direction)
|> preload_for_event()
|> Page.build_page(page, limit)
|> with_virtual_fields()
end
@spec list_drafts_for_user(integer, integer | nil, integer | nil) :: Page.t(Event.t())
@ -513,6 +546,7 @@ defmodule Mobilizon.Events do
|> filter_draft(true)
|> order_by(desc: :updated_at)
|> Page.build_page(page, limit)
|> with_virtual_fields()
end
@spec user_moderator_for_event?(integer | String.t(), integer | String.t()) :: boolean
@ -536,6 +570,7 @@ defmodule Mobilizon.Events do
|> close_events_query(radius)
|> filter_draft()
|> Repo.all()
|> with_virtual_fields()
end
@doc """
@ -571,6 +606,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_long_events(Map.get(args, :long_events))
|> events_for_category(args)
|> events_for_categories(args)
|> events_for_languages(args)
@ -585,7 +621,8 @@ defmodule Mobilizon.Events do
|> filter_local_or_from_followed_instances_events()
|> filter_public_visibility()
|> event_order(Map.get(args, :sort_by, :match_desc), search_string)
|> Page.build_page(page, limit, :begins_on)
|> Page.build_page(page, limit)
|> with_virtual_fields()
end
@doc """
@ -961,6 +998,7 @@ defmodule Mobilizon.Events do
actor_id
|> event_participations_for_actor_query()
|> Page.build_page(page, limit)
|> with_virtual_fields()
end
@doc """
@ -976,6 +1014,7 @@ defmodule Mobilizon.Events do
actor_id
|> event_participations_for_actor_query(DateTime.utc_now())
|> Page.build_page(page, limit)
|> with_virtual_fields()
end
@doc """
@ -1377,6 +1416,36 @@ defmodule Mobilizon.Events do
end
end
@spec events_for_long_events(Ecto.Queryable.t(), Boolean.t() | nil) :: Ecto.Query.t()
defp events_for_long_events(query, long_events) do
duration = Config.get([:instance, :duration_of_long_event], 0)
if duration <= 0 do
query
else
case long_events 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)
@ -1824,6 +1893,7 @@ defmodule Mobilizon.Events do
)
)
|> Repo.all()
|> with_virtual_fields()
end
@spec list_participations_for_user_query(integer()) :: Ecto.Query.t()
@ -1956,6 +2026,35 @@ defmodule Mobilizon.Events do
|> where([e], e.begins_on > ^after_datetime)
end
defp event_filter_ends_on(query, nil, nil), do: query
defp event_filter_ends_on(query, %DateTime{} = after_datetime, nil) do
where(
query,
[e],
(is_nil(e.ends_on) and e.begins_on >= ^after_datetime) or
e.ends_on >= ^after_datetime
)
end
defp event_filter_ends_on(query, nil, %DateTime{} = before_datetime) do
where(
query,
[e],
(is_nil(e.ends_on) and e.begins_on <= ^before_datetime) or e.ends_on <= ^before_datetime
)
end
defp event_filter_ends_on(
query,
%DateTime{} = after_datetime,
%DateTime{} = before_datetime
) do
query
|> event_filter_ends_on(after_datetime, nil)
|> event_filter_ends_on(nil, before_datetime)
end
defp event_order_by(query, order_by, direction)
when order_by in [:begins_on, :inserted_at, :updated_at] and direction in [:asc, :desc] do
order_by_instruction = Keyword.new([{direction, order_by}])
@ -2051,4 +2150,44 @@ defmodule Mobilizon.Events do
|> preload_for_event()
|> Page.chunk(chunk_size)
end
# Handling the case where Repo.XXXX() return nil
def with_virtual_fields(nil), do: nil
# if envent has no end date, it can not be a long events
def with_virtual_fields(%Event{} = event) when is_nil(event.ends_on),
do: %{event | long_event: false}
# Handling the case where there is an event
# Using Repo.one(), for example
def with_virtual_fields(%Event{} = event) do
duration = Config.get([:instance, :duration_of_long_event], 0)
event_duration = DateTime.diff(event.ends_on, event.begins_on, :day)
# duration need to be > 0 for long event to be activated
long_event = duration > 0 && event_duration > duration
%{event | long_event: long_event}
end
# Handling the case where there is a list of events
# Using Repo.all(), for example
def with_virtual_fields(events) when is_list(events) do
Enum.map(events, &with_virtual_fields/1)
end
# Handling the case of a paginated list of events
def with_virtual_fields(%Page{total: _total, elements: elements} = page) do
elements_with_virtual_fields = Enum.map(elements, &with_virtual_fields/1)
%{page | elements: elements_with_virtual_fields}
end
# In case the function is called on an element without virtual_fields
def with_virtual_fields(invalid) do
Logger.warning("with_virtual_fields called on invalid element : #{inspect(invalid)}")
# Return the element without modification
invalid
end
end

View file

@ -73,7 +73,7 @@ defmodule Mobilizon.Instances do
query
end
%Page{elements: elements} = paged_instances = Page.build_page(query, page, limit, :domain)
%Page{elements: elements} = paged_instances = Page.build_page(query, page, limit)
%Page{
paged_instances

View file

@ -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"

View file

@ -19,15 +19,23 @@ defmodule Mobilizon.Storage.Page do
@doc """
Returns a Page struct for a query.
`field` is used to define the field that will be used for the count aggregate, which should be the same as the field used for order_by
See https://stackoverflow.com/q/12693089/10204399
"""
@spec build_page(Ecto.Queryable.t(), integer | nil, integer | nil, atom()) :: t(any)
def build_page(query, page, limit, field \\ :id) do
@spec build_page(Ecto.Queryable.t(), integer | nil, integer) :: t(any)
def build_page(query, page, limit) do
count_query =
query
# Exclude select because we add a new one below
|> exclude(:select)
# Exclude order_by for perf
|> exclude(:order_by)
# Exclude preloads to avoid error "cannot preload associations in subquery"
|> exclude(:preload)
|> subquery()
|> select([r], count(fragment("*")))
[total, elements] =
[
fn -> Repo.aggregate(query, :count, field) end,
fn -> Repo.one(count_query) end,
fn -> Repo.all(paginate(query, page, limit)) end
]
|> Enum.map(&Task.async/1)

View file

@ -0,0 +1,43 @@
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
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

View file

@ -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

View file

@ -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

View file

@ -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)

View file

@ -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>

View file

@ -4,26 +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>
<%= if root?(assigns) do %>
<link rel="preload" href="/img/shape-1.svg" as="image" />
<link rel="preload" href="/img/shape-2.svg" as="image" />
<link rel="preload" href="/img/shape-3.svg" as="image" />
<% end %>
<%= tags(assigns) || assigns.tags %>
<%= Vite.vite_client() %>
<%= Vite.vite_snippet("src/main.ts") %>
</head>
<body>
<noscript>
<strong>

View file

@ -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

View file

@ -1,7 +1,7 @@
defmodule Mobilizon.Mixfile do
use Mix.Project
@version "4.1.0-alpha.1"
@version "5.1.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"},
@ -239,7 +239,9 @@ defmodule Mobilizon.Mixfile do
{:doctor, "~> 0.21", only: :dev},
{:haversine, "~> 0.1.0"},
{:ecto_dev_logger, "~> 0.7"},
{:credo_code_climate, "~> 0.1.0", only: [:dev, :test]}
{:credo_code_climate, "~> 0.1.0", only: [:dev, :test]},
# Generate nix dependencies
{:deps_nix, "~> 0.0", only: :dev}
] ++ oauth_deps()
end

View file

@ -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,17 +14,18 @@
"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"},
"dataloader": {:hex, :dataloader, "2.0.1", "fa06b057b432b993203003fbff5ff040b7f6483a77e732b7dfc18f34ded2634f", [:mix], [{:ecto, ">= 3.4.3 and < 4.0.0", [hex: :ecto, repo: "hexpm", optional: true]}, {:opentelemetry_process_propagator, "~> 0.3 or ~> 0.2.1", [hex: :opentelemetry_process_propagator, repo: "hexpm", optional: true]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "da7ff00890e1b14f7457419b9508605a8e66ae2cc2d08c5db6a9f344550efa11"},
"db_connection": {:hex, :db_connection, "2.6.0", "77d835c472b5b67fc4f29556dee74bf511bbafecdcaf98c27d27fa5918152086", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "c2f992d15725e721ec7fbc1189d4ecdb8afef76648c746a8e1cad35e3b8a35f3"},
"decimal": {:hex, :decimal, "2.1.1", "5611dca5d4b2c3dd497dec8f68751f1f1a54755e8ed2a966c2633cf885973ad6", [:mix], [], "hexpm", "53cfe5f497ed0e7771ae1a475575603d77425099ba5faef9394932b35020ffcc"},
"deps_nix": {:hex, :deps_nix, "0.5.2", "81af6ec4614de6b1012bf335338ededb61b4153b4b0eae62bc12886fc84b6578", [:mix], [], "hexpm", "8b6bbd21dfefa6e2b432d9f3228d66c88189b1b382eb2c0cdb8f14567118b104"},
"dialyxir": {:hex, :dialyxir, "1.4.3", "edd0124f358f0b9e95bfe53a9fcf806d615d8f838e2202a9f430d59566b6b53b", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "bf2cfb75cd5c5006bec30141b131663299c661a864ec7fbbc72dfa557487a986"},
"digital_token": {:hex, :digital_token, "0.6.0", "13e6de581f0b1f6c686f7c7d12ab11a84a7b22fa79adeb4b50eec1a2d278d258", [:mix], [{:cldr_utils, "~> 2.17", [hex: :cldr_utils, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "2455d626e7c61a128b02a4a8caddb092548c3eb613ac6f6a85e4cbb6caddc4d1"},
"doctor": {:hex, :doctor, "0.21.0", "20ef89355c67778e206225fe74913e96141c4d001cb04efdeba1a2a9704f1ab5", [:mix], [{:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}], "hexpm", "a227831daa79784eb24cdeedfa403c46a4cb7d0eab0e31232ec654314447e4e0"},
"earmark_parser": {:hex, :earmark_parser, "1.4.39", "424642f8335b05bb9eb611aa1564c148a8ee35c9c8a8bba6e129d51a3e3c6769", [:mix], [], "hexpm", "06553a88d1f1846da9ef066b87b57c6f605552cfbe40d20bd8d59cc6bde41944"},
"eblurhash": {:hex, :eblurhash, "1.2.2", "7da4255aaea984b31bb71155f673257353b0e0554d0d30dcf859547e74602582", [:rebar3], [], "hexpm", "8c20ca00904de023a835a9dcb7b7762fed32264c85a80c3cafa85288e405044c"},
"ecto": {:hex, :ecto, "3.11.1", "4b4972b717e7ca83d30121b12998f5fcdc62ba0ed4f20fd390f16f3270d85c3e", [:mix], [{:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "ebd3d3772cd0dfcd8d772659e41ed527c28b2a8bde4b00fe03e0463da0f1983b"},
"ecto": {:hex, :ecto, "3.11.2", "e1d26be989db350a633667c5cda9c3d115ae779b66da567c68c80cfb26a8c9ee", [:mix], [{:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "3c38bca2c6f8d8023f2145326cc8a80100c3ffe4dcbd9842ff867f7fc6156c65"},
"ecto_autoslug_field": {:hex, :ecto_autoslug_field, "3.1.0", "ddf26e814baf3c32c6aebfed56a637f10a097db83f65d71e6f2d1e7faf2e9e51", [:mix], [{:ecto, ">= 3.7.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:slugify, "~> 1.3", [hex: :slugify, repo: "hexpm", optional: false]}], "hexpm", "b6ddd614805263e24b5c169532c934440d0289181cce873061fca3a8e92fd9ff"},
"ecto_dev_logger": {:hex, :ecto_dev_logger, "0.10.0", "5b3a3900b845e0d40127bed9bdf9d02bf20aa38198a60fe108cddff63ed0048f", [:mix], [{:ecto, "~> 3.7", [hex: :ecto, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "a55e58bad5d5c9b8ef2a3c3347dbdf7efa880a5371cf1457e44b41f489a43927"},
"ecto_enum": {:hex, :ecto_enum, "1.4.0", "d14b00e04b974afc69c251632d1e49594d899067ee2b376277efd8233027aec8", [:mix], [{:ecto, ">= 3.0.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:ecto_sql, "> 3.0.0", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:mariaex, ">= 0.0.0", [hex: :mariaex, repo: "hexpm", optional: true]}, {:postgrex, ">= 0.0.0", [hex: :postgrex, repo: "hexpm", optional: true]}], "hexpm", "8fb55c087181c2b15eee406519dc22578fa60dd82c088be376d0010172764ee4"},
@ -50,13 +51,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 +69,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"},
@ -78,14 +79,14 @@
"idna": {:hex, :idna, "6.1.1", "8a63070e9f7d0c62eb9d9fcb360a7de382448200fbbd1b106cc96d3d8099df8d", [:rebar3], [{:unicode_util_compat, "~> 0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "92376eb7894412ed19ac475e4a86f7b413c1b9fbb5bd16dccd57934157944cea"},
"inet_cidr": {:hex, :inet_cidr, "1.0.8", "d26bb7bdbdf21ae401ead2092bf2bb4bf57fe44a62f5eaa5025280720ace8a40", [:mix], [], "hexpm", "d5b26da66603bb56c933c65214c72152f0de9a6ea53618b56d63302a68f6a90e"},
"ip_reserved": {:hex, :ip_reserved, "0.1.1", "e5112d71f1abf05207f82fd9597d369a5fde1e0b6d1bbe77c02a99bb26ecdc33", [:mix], [{:inet_cidr, "~> 1.0.0", [hex: :inet_cidr, repo: "hexpm", optional: false]}], "hexpm", "55fcd2b6e211caef09ea3f54ef37d43030bec486325d12fe865ab5ed8140a4fe"},
"jason": {:hex, :jason, "1.4.1", "af1504e35f629ddcdd6addb3513c3853991f694921b1b9368b0bd32beb9f1b63", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "fbb01ecdfd565b56261302f7e1fcc27c4fb8f32d56eab74db621fc154604a7a1"},
"jason": {:hex, :jason, "1.4.4", "b9226785a9aa77b6857ca22832cffa5d5011a667207eb2a0ad56adb5db443b8a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "c5eb0cab91f094599f94d55bc63409236a8ec69a21a67814529e8d5f6cc90b3b"},
"jose": {:hex, :jose, "1.11.6", "613fda82552128aa6fb804682e3a616f4bc15565a048dabd05b1ebd5827ed965", [:mix, :rebar3], [], "hexpm", "6275cb75504f9c1e60eeacb771adfeee4905a9e182103aa59b53fed651ff9738"},
"jumper": {:hex, :jumper, "1.0.2", "68cdcd84472a00ac596b4e6459a41b3062d4427cbd4f1e8c8793c5b54f1406a7", [:mix], [], "hexpm", "9b7782409021e01ab3c08270e26f36eb62976a38c1aa64b2eaf6348422f165e1"},
"junit_formatter": {:hex, :junit_formatter, "3.3.1", "c729befb848f1b9571f317d2fefa648e9d4869befc4b2980daca7c1edc468e40", [:mix], [], "hexpm", "761fc5be4b4c15d8ba91a6dafde0b2c2ae6db9da7b8832a55b5a1deb524da72b"},
"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 +102,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 +133,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"},
"telemetry": {:hex, :telemetry, "1.2.1", "68fdfe8d8f05a8428483a97d7aab2f268aaff24b49e0f599faa091f1d4e7f61c", [:rebar3], [], "hexpm", "dad9ce9d8effc621708f99eac538ef1cbe05d6a874dd741de2e689c47feafed5"},
"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.3.0", "fedebbae410d715cf8e7062c96a1ef32ec22e764197f70cda73d82778d61e7a2", [:rebar3], [], "hexpm", "7015fc8919dbe63764f4b4b87a95b7c0996bd539e0d499be6ec9d7f3875b79e6"},
"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"},

2014
mix.nix

File diff suppressed because it is too large Load diff

1367
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
{
"name": "mobilizon",
"version": "4.1.0-alpha.1",
"version": "5.1.1",
"private": true,
"scripts": {
"dev": "vite",
@ -32,12 +32,12 @@
"@apollo/client": "^3.9.5",
"@framasoft/socket": "^1.0.0",
"@framasoft/socket-apollo-link": "^1.0.0",
"@oruga-ui/oruga-next": "0.8.12",
"@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",
"@oruga-ui/oruga-next": "^0.8.2",
"@oruga-ui/theme-oruga": "^0.2.0",
"@sentry/tracing": "^7.1",
"@sentry/vue": "^7.1",
"@tiptap/core": "^2.0.0-beta.41",
@ -98,7 +98,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 +145,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"

View file

@ -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] ""

View file

@ -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] ""

View file

@ -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 ""

View file

@ -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 ""

View file

@ -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] ""

View file

@ -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 ""

View file

@ -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 ""

View file

@ -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] ""

View file

@ -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 ""

View file

@ -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 ""

View file

@ -8,15 +8,15 @@
## to merge POT files into PO files.
msgid ""
msgstr ""
"PO-Revision-Date: 2022-11-25 00:54+0000\n"
"PO-Revision-Date: 2024-08-23 02:37+0000\n"
"Last-Translator: Jiri Podhorecky <j.podhorecky@gmail.com>\n"
"Language-Team: Czech <https://weblate.framasoft.org/projects/mobilizon/"
"activity/cs/>\n"
"Language: cs\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"X-Generator: Weblate 4.14.1\n"
"Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);\n"
"X-Generator: Weblate 5.7\n"
#: lib/web/templates/email/activity/_member_activity_item.html.heex:14
#: lib/web/templates/email/activity/_member_activity_item.text.eex:12
@ -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ě!"
@ -477,73 +477,78 @@ msgstr "%{profile} schválil člena %{member}."
#: lib/web/templates/email/activity/_event_activity_item.text.eex:31
#, elixir-autogen, elixir-format
msgid "%{profile} joined your event %{event}."
msgstr ""
msgstr "%{profile} se připojil k vaší události %{event}."
#: lib/web/views/email_view.ex:61
#, elixir-autogen, elixir-format
msgid "An anonymous profile"
msgstr ""
msgstr "Anonymní profil"
#: lib/web/templates/email/email_anonymous_activity.html.heex:107
#: lib/web/templates/email/email_anonymous_activity.text.eex:14
#, elixir-autogen, elixir-format, fuzzy
#, elixir-autogen, elixir-format
msgid "%{profile} has posted a private announcement about event %{event}."
msgstr "%{profile} zveřejnil oznámení v rámci události %{event}."
msgstr "%{profile} zveřejnil soukromé oznámení o události %{event}."
#: lib/web/templates/email/email_anonymous_activity.html.heex:50
#: lib/web/templates/email/email_anonymous_activity.text.eex:6
#, elixir-autogen, elixir-format, fuzzy
#, elixir-autogen, elixir-format
msgid "%{profile} has posted a public announcement under event %{event}."
msgstr "%{profile} zveřejnil oznámení v rámci události %{event}."
msgstr "%{profile} zveřejnil veřejné oznámení v rámci události %{event}."
#: lib/web/templates/email/activity/_conversation_activity_item.html.heex:3
#, elixir-autogen, elixir-format, fuzzy
#, elixir-autogen, elixir-format
msgid "%{profile} mentionned you in a %{conversation}."
msgstr "%{profile} vás zmínil v komentáři pod událostí %{event}."
msgstr "%{profile} se o vás zmínil v %{conversation}."
#: lib/web/templates/email/activity/_conversation_activity_item.text.eex:1
#, elixir-autogen, elixir-format, fuzzy
#, elixir-autogen, elixir-format
msgid "%{profile} mentionned you in a conversation."
msgstr "%{profile} vás zmínil v komentáři pod událostí %{event}."
msgstr "%{profile} se o vás zmínil v konverzaci."
#: lib/service/activity/renderer/conversation.ex:36
#, elixir-autogen, elixir-format
msgid "%{profile} replied to your message"
msgstr ""
msgstr "%{profile} odpověděl na vaši zprávu"
#: lib/web/templates/email/activity/_conversation_activity_item.html.heex:10
#, elixir-autogen, elixir-format, fuzzy
#, elixir-autogen, elixir-format
msgid "%{profile} replied you in a %{conversation}."
msgstr "%{profile} odpověděl na příspěvek v diskusi %{discussion}."
msgstr "%{profile} vám odpověděl v %{conversation}."
#: lib/web/templates/email/activity/_conversation_activity_item.text.eex:6
#, elixir-autogen, elixir-format
msgid "%{profile} replied you in a conversation."
msgstr ""
msgstr "%{profile} vám odpověděl v konverzaci."
#: lib/service/activity/renderer/conversation.ex:49
#, elixir-autogen, elixir-format
msgid "%{profile} sent a private message about event %{event}"
msgstr ""
msgstr "%{profile} poslal soukromou zprávu o události %{event}"
#: lib/service/activity/renderer/conversation.ex:23
#, elixir-autogen, elixir-format
msgid "%{profile} sent you a message"
msgstr ""
msgstr "%{profile} vám poslal zprávu"
#: lib/web/email/activity.ex:52
#, elixir-autogen, elixir-format
msgid "Informations about your event %{event}"
msgstr ""
msgstr "Informace o vaší události %{event}"
#: lib/web/templates/email/email_anonymous_activity.html.heex:118
#: lib/web/templates/email/email_anonymous_activity.text.eex:20
#, elixir-autogen, elixir-format
msgid "It might give details on how to join the event, so make sure to read it appropriately."
msgstr ""
"Mohou v něm být uvedeny podrobnosti o tom, jak se k události připojit, proto "
"si jej náležitě přečtěte."
#: lib/web/templates/email/email_anonymous_activity.html.heex:156
#: lib/web/templates/email/email_anonymous_activity.text.eex:28
#, elixir-autogen, elixir-format
msgid "This information is sent privately to you as a person who registered for this event. Share the informations above with other people with caution."
msgstr ""
"Tyto informace jsou zasílány soukromě vám jako osobě, která se na tuto "
"událost zaregistrovala. Výše uvedené informace sdílejte s ostatními osobami "
"s opatrností."

View file

@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-09-24 14:39+0000\n"
"PO-Revision-Date: 2022-11-25 00:54+0000\n"
"PO-Revision-Date: 2024-08-10 20:38+0000\n"
"Last-Translator: Jiri Podhorecky <j.podhorecky@gmail.com>\n"
"Language-Team: Czech <https://weblate.framasoft.org/projects/mobilizon/"
"backend/cs/>\n"
@ -11,8 +11,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"X-Generator: Weblate 4.14.1\n"
"Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);\n"
"X-Generator: Weblate 5.6.2\n"
#: lib/web/templates/email/password_reset.html.heex:66
#, elixir-autogen, elixir-format
@ -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] ""
@ -2327,52 +2313,66 @@ msgstr "Do příště!"
#: lib/web/templates/email/group_suspension.html.heex:67
#: lib/web/templates/email/group_suspension.text.eex:5
#, elixir-autogen, elixir-format, fuzzy
#, elixir-autogen, elixir-format
msgid "As this group was located on this instance, all of its data has been irretrievably deleted."
msgstr ""
"Protože se tato skupina nacházela v této instanci, byla všechna její data "
"nenávratně odstraněna."
#: lib/web/templates/email/report.text.eex:11
#, elixir-autogen, elixir-format, fuzzy
#, elixir-autogen, elixir-format
msgid "Events"
msgstr "Událost"
msgstr "Události"
#: lib/web/templates/email/report.html.heex:115
#, elixir-autogen, elixir-format, fuzzy
#, elixir-autogen, elixir-format
msgid "Flagged events"
msgstr "Označené komentáře"
msgstr "Označené události"
#: lib/service/export/participants/common.ex:65
#, elixir-autogen, elixir-format, fuzzy
#, elixir-autogen, elixir-format
msgid "Participant registration date"
msgstr "Status účastníka"
msgstr "Datum registrace účastníka"
#: lib/web/templates/email/anonymous_participation_confirmation.html.heex:113
#: lib/web/templates/email/event_participation_confirmed.html.heex:122
#, elixir-autogen, elixir-format
msgid "Cancel my attendance"
msgstr ""
msgstr "Zrušit mou účast"
#: lib/web/templates/email/anonymous_participation_confirmation.html.heex:90
#: lib/web/templates/email/event_participation_confirmed.html.heex:99
#, elixir-autogen, elixir-format
msgid "If you wish to cancel your participation, simply click on the link below."
msgstr ""
"Pokud si přejete zrušit svou účast, stačí kliknout na níže uvedený odkaz."
#: lib/web/email/admin.ex:142
#, elixir-autogen, elixir-format
msgid "Email configuration test for %{instance}"
msgstr ""
msgstr "Test konfigurace e-mailu pro %{instance}"
#: lib/web/templates/email/email_configuration_test.html.heex:47
#: lib/web/templates/email/email_configuration_test.text.eex:3
#, elixir-autogen, elixir-format
msgid "If you received this email, the email configuration seems to be correct."
msgstr ""
"Pokud jste tento e-mail obdrželi, zdá se, že konfigurace e-mailu je správná."
#: lib/web/templates/email/email_configuration_test.html.heex:18
#: lib/web/templates/email/email_configuration_test.text.eex:1
#, elixir-autogen, elixir-format
msgid "Well done!"
msgstr "Výborně!"
#: 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 ""
"Když v tomto dokumentu říkáme „my“, „naše“ nebo „nás“, máme na mysli "
"vlastníky, operátory a správce této instance Mobilizon. Software Mobilizon "
"poskytuje tým přispěvatelů Mobilizonu. Pokud není výslovně uvedeno, je tato "
"instance Mobilizon nezávislou službou využívající zdrojový kód společnosti "
"Mobilizon. Další informace o této instanci můžete najít na stránce <a href=\""
"/about/instance\">\"O této instanci\"</a>."

View file

@ -8,15 +8,15 @@
## to merge POT files into PO files.
msgid ""
msgstr ""
"PO-Revision-Date: 2023-04-14 22:35+0000\n"
"PO-Revision-Date: 2024-08-23 23:19+0000\n"
"Last-Translator: Jiri Podhorecky <j.podhorecky@gmail.com>\n"
"Language-Team: Czech <https://weblate.framasoft.org/projects/mobilizon/"
"backend-errors/cs/>\n"
"Language: cs\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"X-Generator: Weblate 4.16.4\n"
"Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);\n"
"X-Generator: Weblate 5.7\n"
#: lib/mobilizon/discussions/discussion.ex:68
#, elixir-autogen
@ -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 ""
@ -1366,65 +1366,71 @@ msgstr ""
#: lib/graphql/resolvers/user.ex:306
#, elixir-autogen, elixir-format
msgid "Couldn't send an email. Internal error."
msgstr ""
msgstr "Nemohl jsem odeslat e-mail. Interní chyba."
#: lib/graphql/resolvers/participant.ex:293
#, elixir-autogen, elixir-format
msgid "Participation is already confirmed"
msgstr ""
msgstr "Účast je již potvrzena"
#: lib/graphql/resolvers/participant.ex:290
#, elixir-autogen, elixir-format
msgid "Participation is confirmed but not approved yet by an organizer"
msgstr ""
msgstr "Účast je potvrzena, ale ještě není schválena organizátorem"
#: lib/graphql/resolvers/event.ex:287
#: lib/graphql/resolvers/event.ex:376
#, elixir-autogen, elixir-format
msgid "Providing external registration is not allowed"
msgstr ""
msgstr "Poskytování externí registrace není povoleno"
#: lib/graphql/resolvers/push_subscription.ex:48
#, elixir-autogen, elixir-format
msgid "The same push subscription has already been registered"
msgstr ""
msgstr "Stejný odběr push byl již zaregistrován"
#: lib/graphql/resolvers/admin.ex:536
#: lib/graphql/resolvers/admin.ex:554
#, elixir-autogen, elixir-format
msgid "This instance is pending follow approval"
msgstr ""
msgstr "Tato instance čeká na následné schválení"
#: lib/graphql/schema/custom/timezone.ex:25
#, elixir-autogen, elixir-format
msgid "Timezone ID %{timezone} is invalid"
msgstr ""
msgstr "ID časového pásma %{timezone} je neplatné"
#: lib/graphql/resolvers/admin.ex:539
#, elixir-autogen, elixir-format, fuzzy
#: lib/graphql/resolvers/admin.ex:557
#, elixir-autogen, elixir-format
msgid "You are already following this instance"
msgstr "Tuto skupinu již sledujete"
msgstr "Tuto instanci již sledujete"
#: lib/graphql/resolvers/user.ex:310
#, elixir-autogen, elixir-format, fuzzy
#, elixir-autogen, elixir-format
msgid "You requested again a confirmation email too soon. Please try again in a few minutes"
msgstr "Znovu jste si vyžádali potvrzovací e-mail příliš brzy"
msgstr ""
"Znovu jste požádali o potvrzovací e-mail příliš brzy. Zkuste to prosím znovu "
"za několik minut"
#: lib/graphql/resolvers/user.ex:341
#, elixir-autogen, elixir-format
msgid "You requested again a password reset email too soon. Please try again in a few minutes"
msgstr ""
"Znovu jste si vyžádali e-mail s žádostí o obnovení hesla příliš brzy. Zkuste "
"to prosím znovu za několik minut"
#: lib/graphql/resolvers/user.ex:368
#, elixir-autogen, elixir-format
msgid "The token you provided is invalid. Make sure that the URL is exactly the one provided inside the email you got."
msgstr ""
"Zadaný token je neplatný. Ujistěte se, že adresa URL je přesně taková, jaká "
"byla uvedena v e-mailu, který jste obdrželi."
#: 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 ""
msgstr "V rozhovoru musí být uveden alespoň jeden účastník, který nejste vy"
#: 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 ""
msgstr "Vámi zvolenému publiku neodpovídají žádní účastníci."

View file

@ -8,15 +8,15 @@
## to merge POT files into PO files.
msgid ""
msgstr ""
"PO-Revision-Date: 2023-10-14 00:00+0000\n"
"Last-Translator: Vri <vrifox@vrifox.cc>\n"
"PO-Revision-Date: 2024-04-12 14:40+0000\n"
"Last-Translator: Samuel Brinkmann <sbrinkmann@54gradsoftware.de>\n"
"Language-Team: German <https://weblate.framasoft.org/projects/mobilizon/"
"activity/de/>\n"
"Language: de\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.0.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Weblate 5.4.3\n"
#: lib/web/templates/email/activity/_member_activity_item.html.heex:14
#: lib/web/templates/email/activity/_member_activity_item.text.eex:12
@ -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!"
@ -502,10 +502,10 @@ msgstr "Ein anonymes Profil"
#: lib/web/templates/email/email_anonymous_activity.html.heex:107
#: lib/web/templates/email/email_anonymous_activity.text.eex:14
#, elixir-autogen, elixir-format, fuzzy
#, elixir-autogen, elixir-format
msgid "%{profile} has posted a private announcement about event %{event}."
msgstr ""
"%{profile} hat eine Ankündigung unter der Veranstaltung %{event} "
"%{profile} hat eine private Ankündigung zur Veranstaltung %{event} "
"veröffentlicht."
#: lib/web/templates/email/email_anonymous_activity.html.heex:50

View file

@ -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>."

View file

@ -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 ""

View file

@ -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 ""

View file

@ -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] ""

View file

@ -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 ""

View file

@ -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 ""

View file

@ -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 ""

View file

@ -8,16 +8,15 @@
## to merge POT files into PO files.
msgid ""
msgstr ""
"PO-Revision-Date: 2023-10-22 18:27+0000\n"
"Last-Translator: Jaime Marquínez Ferrándiz <jaime.marquinez."
"ferrandiz@fastmail.net>\n"
"PO-Revision-Date: 2024-04-16 17:29+0000\n"
"Last-Translator: GSalinas <gsalinastellez@gmail.com>\n"
"Language-Team: Spanish <https://weblate.framasoft.org/projects/mobilizon/"
"activity/es/>\n"
"Language: es\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.0.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Weblate 5.4.3\n"
#: lib/web/templates/email/activity/_member_activity_item.html.heex:14
#: lib/web/templates/email/activity/_member_activity_item.text.eex:12
@ -227,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 una actividad más"
@ -237,7 +236,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!"
@ -483,64 +482,68 @@ msgstr "Un perfil anónimo"
#: lib/web/templates/email/email_anonymous_activity.html.heex:107
#: lib/web/templates/email/email_anonymous_activity.text.eex:14
#, elixir-autogen, elixir-format, fuzzy
#, elixir-autogen, elixir-format
msgid "%{profile} has posted a private announcement about event %{event}."
msgstr "%{profile} publicó un anuncio en el evento %{event}."
msgstr "%{profile} publicó un anuncio privado sobre el evento %{event}."
#: lib/web/templates/email/email_anonymous_activity.html.heex:50
#: lib/web/templates/email/email_anonymous_activity.text.eex:6
#, elixir-autogen, elixir-format, fuzzy
#, elixir-autogen, elixir-format
msgid "%{profile} has posted a public announcement under event %{event}."
msgstr "%{profile} publicó un anuncio en el evento %{event}."
msgstr "%{profile} publicó un anuncio privado en el evento %{event}."
#: lib/web/templates/email/activity/_conversation_activity_item.html.heex:3
#, elixir-autogen, elixir-format, fuzzy
#, elixir-autogen, elixir-format
msgid "%{profile} mentionned you in a %{conversation}."
msgstr "%{profile} te mencionó en un comentario en el evento %{event}."
msgstr "%{profile} te mencionó en una %{conversation}."
#: lib/web/templates/email/activity/_conversation_activity_item.text.eex:1
#, elixir-autogen, elixir-format, fuzzy
#, elixir-autogen, elixir-format
msgid "%{profile} mentionned you in a conversation."
msgstr "%{profile} te mencionó en un comentario en el evento %{event}."
msgstr "%{profile} te mencionó en una conversación."
#: lib/service/activity/renderer/conversation.ex:36
#, elixir-autogen, elixir-format
msgid "%{profile} replied to your message"
msgstr ""
msgstr "%{profile} respondió a tu mensaje"
#: lib/web/templates/email/activity/_conversation_activity_item.html.heex:10
#, elixir-autogen, elixir-format, fuzzy
#, elixir-autogen, elixir-format
msgid "%{profile} replied you in a %{conversation}."
msgstr "%{profile} respondió a la discusión %{discussion}."
msgstr "%{profile} te respondió en una %{conversation}."
#: lib/web/templates/email/activity/_conversation_activity_item.text.eex:6
#, elixir-autogen, elixir-format
msgid "%{profile} replied you in a conversation."
msgstr ""
msgstr "%{profile} te respondió en una conversación."
#: lib/service/activity/renderer/conversation.ex:49
#, elixir-autogen, elixir-format
msgid "%{profile} sent a private message about event %{event}"
msgstr ""
msgstr "%{profile} envió un mensaje privado sobre el evento %{event}"
#: lib/service/activity/renderer/conversation.ex:23
#, elixir-autogen, elixir-format
msgid "%{profile} sent you a message"
msgstr ""
msgstr "%{profile} te envió un mensaje"
#: lib/web/email/activity.ex:52
#, elixir-autogen, elixir-format
msgid "Informations about your event %{event}"
msgstr ""
msgstr "Información sobre el evento %{event}"
#: lib/web/templates/email/email_anonymous_activity.html.heex:118
#: lib/web/templates/email/email_anonymous_activity.text.eex:20
#, elixir-autogen, elixir-format
msgid "It might give details on how to join the event, so make sure to read it appropriately."
msgstr ""
"Puede contener detalles de como llegar al evento, asegurate de leerlo con "
"atención."
#: lib/web/templates/email/email_anonymous_activity.html.heex:156
#: lib/web/templates/email/email_anonymous_activity.text.eex:28
#, elixir-autogen, elixir-format
msgid "This information is sent privately to you as a person who registered for this event. Share the informations above with other people with caution."
msgstr ""
"Esta información le fue enviada de manera privada porque se registró al "
"evento. Comparta la información anterior con otras personas con precaución."

View file

@ -3,17 +3,16 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-09-24 14:39+0000\n"
"PO-Revision-Date: 2023-10-22 18:27+0000\n"
"Last-Translator: Jaime Marquínez Ferrándiz <jaime.marquinez."
"ferrandiz@fastmail.net>\n"
"PO-Revision-Date: 2024-04-18 09:03+0000\n"
"Last-Translator: GSalinas <gsalinastellez@gmail.com>\n"
"Language-Team: Spanish <https://weblate.framasoft.org/projects/mobilizon/"
"backend/es/>\n"
"Language: es\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: Weblate 5.0.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Weblate 5.4.3\n"
#: lib/web/templates/email/password_reset.html.heex:66
#, elixir-autogen, elixir-format
@ -360,7 +359,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 +367,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 +417,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 +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] "Tienes un evento hoy:"
@ -938,7 +937,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 +1274,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 +1405,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 +1932,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:"
@ -2331,7 +2314,7 @@ msgstr "¡Hasta la próxima vez!"
#: lib/web/templates/email/group_suspension.html.heex:67
#: lib/web/templates/email/group_suspension.text.eex:5
#, elixir-autogen, elixir-format, fuzzy
#, elixir-autogen, elixir-format
msgid "As this group was located on this instance, all of its data has been irretrievably deleted."
msgstr ""
"Como este grupo estaba ubicado en esta instancia, todos sus datos se han "
@ -2350,33 +2333,49 @@ msgstr "Eventos marcados"
#: lib/service/export/participants/common.ex:65
#, elixir-autogen, elixir-format
msgid "Participant registration date"
msgstr "Fecha de registro del participante"
msgstr "Fecha de inscripción del participante"
#: lib/web/templates/email/anonymous_participation_confirmation.html.heex:113
#: lib/web/templates/email/event_participation_confirmed.html.heex:122
#, elixir-autogen, elixir-format
msgid "Cancel my attendance"
msgstr ""
msgstr "Cancelar mi participación"
#: lib/web/templates/email/anonymous_participation_confirmation.html.heex:90
#: lib/web/templates/email/event_participation_confirmed.html.heex:99
#, elixir-autogen, elixir-format
msgid "If you wish to cancel your participation, simply click on the link below."
msgstr ""
msgstr "Si desea cancelar su participación, haga click en el enlace abajo."
#: lib/web/email/admin.ex:142
#, elixir-autogen, elixir-format
msgid "Email configuration test for %{instance}"
msgstr ""
msgstr "Test de configuración de correo electrónico para %{instance}"
#: lib/web/templates/email/email_configuration_test.html.heex:47
#: lib/web/templates/email/email_configuration_test.text.eex:3
#, elixir-autogen, elixir-format
msgid "If you received this email, the email configuration seems to be correct."
msgstr ""
"Si recibió este correo electrónico, la configuración del correo electrónico "
"parece correcta."
#: lib/web/templates/email/email_configuration_test.html.heex:18
#: lib/web/templates/email/email_configuration_test.text.eex:1
#, elixir-autogen, elixir-format
msgid "Well done!"
msgstr "Bien hecho!"
#: 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 ""
"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 colaboradores de Mobilizon. 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>."

View file

@ -8,15 +8,15 @@
## to merge POT files into PO files.
msgid ""
msgstr ""
"PO-Revision-Date: 2022-11-01 21:38+0000\n"
"Last-Translator: Berto Te <ateira@3fpj.com>\n"
"PO-Revision-Date: 2024-04-18 09:03+0000\n"
"Last-Translator: GSalinas <gsalinastellez@gmail.com>\n"
"Language-Team: Spanish <https://weblate.framasoft.org/projects/mobilizon/"
"backend-errors/es/>\n"
"Language: es\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.14.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Weblate 5.4.3\n"
#: lib/mobilizon/discussions/discussion.ex:68
#, elixir-autogen
@ -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"
@ -1193,9 +1193,9 @@ msgid "Application token not found"
msgstr "Token de aplicación no encontrado"
#: lib/graphql/resolvers/application.ex:90
#, elixir-autogen, elixir-format, fuzzy
#, elixir-autogen, elixir-format
msgid "Error while revoking token"
msgstr "Error al guardar el informe"
msgstr "Error al revocar el token"
#: lib/web/controllers/application_controller.ex:61
#, elixir-autogen, elixir-format
@ -1263,71 +1263,81 @@ msgstr "El client_id provisto o el device_code asociado es inválido"
#, elixir-autogen, elixir-format
msgid "The device user code was not provided before approving the application"
msgstr ""
"El código de usuario del dispositivo no se proporcionó antes de la "
"aprobación de la aplicación"
#: lib/web/controllers/application_controller.ex:301
#, elixir-autogen, elixir-format
msgid "The given device_code has expired"
msgstr ""
msgstr "El device_code provisto ha caducado"
#: lib/graphql/resolvers/application.ex:45
#, elixir-autogen, elixir-format
msgid "The given redirect_uri is not in the list of allowed redirect URIs"
msgstr ""
"La redirect_uri dada no se encuentra en la lista de URI's de redirección "
"permitidas"
#: lib/web/controllers/application_controller.ex:155
#, elixir-autogen, elixir-format
msgid "The given scope is not in the list of the app declared scopes"
msgstr ""
"El objetivo provisto no se encuentra en la lista de objetivos declarados de "
"la applicación"
#: lib/graphql/resolvers/application.ex:112
#: lib/graphql/resolvers/application.ex:154
#, elixir-autogen, elixir-format
msgid "The given user code has expired"
msgstr ""
msgstr "El codigo de usuario provisto ha caducado"
#: lib/graphql/resolvers/application.ex:118
#: lib/graphql/resolvers/application.ex:146
#, elixir-autogen, elixir-format
msgid "The given user code is invalid"
msgstr ""
msgstr "Elcodigo de usuario provisto es invalido"
#: lib/web/controllers/application_controller.ex:408
#, elixir-autogen, elixir-format
msgid "The provided client_id does not match the provided code"
msgstr ""
msgstr "El client_id provisto no corresponde con el código provisto"
#: lib/web/controllers/application_controller.ex:411
#, elixir-autogen, elixir-format
msgid "The provided client_secret is invalid"
msgstr ""
msgstr "El client_secret provisto es inválido"
#: lib/web/controllers/application_controller.ex:404
#, elixir-autogen, elixir-format
msgid "The provided code is invalid or expired"
msgstr ""
msgstr "El código provisto es inválido o ha caducado"
#: lib/web/controllers/application_controller.ex:415
#, elixir-autogen, elixir-format
msgid "The provided scope is invalid or not included in the app declared scopes"
msgstr ""
"El objetivo provisto es inválido o no se encuentra en la lista de objetivos "
"declarados de la applicación"
#: lib/web/controllers/application_controller.ex:47
#, elixir-autogen, elixir-format
msgid "The scope parameter is not a space separated list of valid scopes"
msgstr ""
"La variable de objetivos no es una lista separada por espacios de objetivos "
"validos"
#: lib/web/controllers/application_controller.ex:289
#, elixir-autogen, elixir-format
msgid "The user rejected the requested authorization"
msgstr ""
msgstr "El usuario rechazó la autorización solicitada"
#: lib/web/controllers/application_controller.ex:401
#, elixir-autogen, elixir-format
msgid "This redirect URI is not allowed"
msgstr ""
msgstr "Esta URI de redirección no está autorizada"
#: lib/web/controllers/application_controller.ex:378
#, elixir-autogen, elixir-format, fuzzy
#, elixir-autogen, elixir-format
msgid "Token not found"
msgstr "Token no encontrado"
@ -1339,91 +1349,103 @@ msgstr "Demasiadas peticiones"
#: lib/web/controllers/application_controller.ex:181
#, elixir-autogen, elixir-format
msgid "Unable to produce device code"
msgstr ""
msgstr "No se puedo generar el código de dispositivo"
#: lib/web/controllers/application_controller.ex:370
#, elixir-autogen, elixir-format
msgid "Unable to revoke token"
msgstr ""
msgstr "No se puede revocar el token"
#: lib/web/controllers/application_controller.ex:195
#, elixir-autogen, elixir-format
msgid "You need to pass both client_id and scope as parameters to obtain a device code"
msgstr ""
"Para obtener un código de dispositivo, es necesario pasar como parámetros el "
"client_id y el objetivo"
#: lib/web/controllers/application_controller.ex:133
#, elixir-autogen, elixir-format
msgid "You need to provide a valid redirect_uri to autorize an application"
msgstr ""
msgstr "Debe proporcionar una redirect_uri válida para autorizar una aplicación"
#: lib/web/controllers/application_controller.ex:123
#, elixir-autogen, elixir-format
msgid "You need to specify client_id, redirect_uri, scope and state to autorize an application"
msgstr ""
"Debe especificar client_id, redirect_uri, scope y state para autorizar una "
"aplicación"
#: lib/graphql/resolvers/user.ex:306
#, elixir-autogen, elixir-format
msgid "Couldn't send an email. Internal error."
msgstr ""
msgstr "No se ha podido enviar un correo electrónico. Error interno."
#: lib/graphql/resolvers/participant.ex:293
#, elixir-autogen, elixir-format
msgid "Participation is already confirmed"
msgstr ""
msgstr "La participación ya está confirmada"
#: lib/graphql/resolvers/participant.ex:290
#, elixir-autogen, elixir-format
msgid "Participation is confirmed but not approved yet by an organizer"
msgstr ""
"La participación esta confirmada pero aún no esta aprobada por un organizador"
#: lib/graphql/resolvers/event.ex:287
#: lib/graphql/resolvers/event.ex:376
#, elixir-autogen, elixir-format
msgid "Providing external registration is not allowed"
msgstr ""
msgstr "No se permite el registro externo"
#: lib/graphql/resolvers/push_subscription.ex:48
#, elixir-autogen, elixir-format
msgid "The same push subscription has already been registered"
msgstr ""
msgstr "Ya se ha registrado el mismo pedidio de suscripción"
#: lib/graphql/resolvers/admin.ex:536
#: lib/graphql/resolvers/admin.ex:554
#, elixir-autogen, elixir-format
msgid "This instance is pending follow approval"
msgstr ""
msgstr "La instancia está pendiente de aprobación"
#: lib/graphql/schema/custom/timezone.ex:25
#, elixir-autogen, elixir-format
msgid "Timezone ID %{timezone} is invalid"
msgstr ""
msgstr "El ID de zona horaria %{timezone} no es válido."
#: lib/graphql/resolvers/admin.ex:539
#, elixir-autogen, elixir-format, fuzzy
#: lib/graphql/resolvers/admin.ex:557
#, elixir-autogen, elixir-format
msgid "You are already following this instance"
msgstr "Ya estas siguiendo este grupo"
#: lib/graphql/resolvers/user.ex:310
#, elixir-autogen, elixir-format, fuzzy
#, elixir-autogen, elixir-format
msgid "You requested again a confirmation email too soon. Please try again in a few minutes"
msgstr ""
"Solicitó de nuevo un correo electrónico de confirmación demasiado pronto"
"Ha solicitado un correo electrónico de confirmación demasiado rápido. Por "
"favor, inténtelo de nuevo en unos minutos"
#: lib/graphql/resolvers/user.ex:341
#, elixir-autogen, elixir-format
msgid "You requested again a password reset email too soon. Please try again in a few minutes"
msgstr ""
"Ha solicitado un correo electrónico de restablecimiento de contraseña "
"demasiado pronto. Por favor, inténtelo de nuevo en unos minutos"
#: lib/graphql/resolvers/user.ex:368
#, elixir-autogen, elixir-format
msgid "The token you provided is invalid. Make sure that the URL is exactly the one provided inside the email you got."
msgstr ""
"El token proporcionado no es válido. Asegúrate de que la URL es exactamente "
"la misma que la proporcionada en el correo electrónico que recibiste."
#: 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 conversación tiene que mencionar al menos un participante que no seas tú "
"mismo"
#: 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 ""
msgstr "No hay participantes que coincidan con el público que has seleccionado."

View file

@ -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!"

View file

@ -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>."

View file

@ -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 ""

View file

@ -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é !"

File diff suppressed because it is too large Load diff

View file

@ -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."

View file

@ -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!"

View file

@ -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 ""

View file

@ -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 ""

View file

@ -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!"

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -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] "התרחשה פעילות!"

View file

@ -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 ""

View file

@ -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 ""

View file

@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-11-25 07:55+0000\n"
"PO-Revision-Date: 2023-12-04 18:10+0000\n"
"PO-Revision-Date: 2024-03-08 15:25+0000\n"
"Last-Translator: Milo Ivir <mail@milotype.de>\n"
"Language-Team: Croatian <https://weblate.framasoft.org/projects/mobilizon/"
"activity/hr/>\n"
@ -13,7 +13,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 5.2.1\n"
"X-Generator: Weblate 5.4.2\n"
## This file is a PO Template file.
##
@ -58,13 +58,13 @@ msgstr "%{profile} su dodali %{member}."
#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:19
#, elixir-autogen, elixir-format
msgid "%{profile} archived the discussion %{discussion}."
msgstr "%{profile} su arhivirali razgovor %{discussion}."
msgstr "%{profile} je arhivirao/la raspravu %{discussion}."
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:3
#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:1
#, elixir-autogen, elixir-format
msgid "%{profile} created the discussion %{discussion}."
msgstr "%{profile} su stvorili razgovor %{discussion}."
msgstr "%{profile} je stvorio/la raspravu %{discussion}."
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:4
#: lib/web/templates/email/activity/_resource_activity_item.text.eex:2
@ -88,7 +88,7 @@ msgstr "%{profile} su stvorili resurs %{resource}."
#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:25
#, elixir-autogen, elixir-format
msgid "%{profile} deleted the discussion %{discussion}."
msgstr "%{profile} su izbrisali razgovor %{discussion}."
msgstr "%{profile} je izbrisao/la raspravu %{discussion}."
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:76
#: lib/web/templates/email/activity/_resource_activity_item.text.eex:40
@ -130,7 +130,7 @@ msgstr "%{profile} su izašli iz grupe."
#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:13
#, elixir-autogen, elixir-format
msgid "%{profile} renamed the discussion %{discussion}."
msgstr "%{profile} su preimenovali razgovor %{discussion}."
msgstr "%{profile} je preimenovao/la raspravu %{discussion}."
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:24
#: lib/web/templates/email/activity/_resource_activity_item.text.eex:14
@ -149,7 +149,7 @@ msgstr ""
#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:7
#, elixir-autogen, elixir-format
msgid "%{profile} replied to the discussion %{discussion}."
msgstr "%{profile} su odgovorili na razgovor %{discussion}."
msgstr "%{profile} je odgovorio/la na raspravu %{discussion}."
#: lib/web/templates/email/activity/_group_activity_item.html.heex:12
#: lib/web/templates/email/activity/_group_activity_item.text.eex:7
@ -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!"
@ -448,32 +448,32 @@ msgstr "%{profile} su stvorili resurs %{resource} u grupi %{group}."
#: lib/service/activity/renderer/discussion.ex:85
#, elixir-autogen, elixir-format
msgid "%{profile} archived the discussion %{discussion} in group %{group}."
msgstr "%{profile} su arhivirali razgovor %{discussion} u grupi %{group}."
msgstr "%{profile} je arhivirao/la raspravu %{discussion} u grupi %{group}."
#: lib/service/activity/renderer/discussion.ex:25
#, elixir-autogen, elixir-format
msgid "%{profile} created the discussion %{discussion} in group %{group}."
msgstr "%{profile} su stvorili razgovor %{discussion} u grupi %{group}."
msgstr "%{profile} je stvorio/la raspravu %{discussion} u grupi %{group}."
#: lib/service/activity/renderer/discussion.ex:100
#, elixir-autogen, elixir-format
msgid "%{profile} deleted the discussion %{discussion} in group %{group}."
msgstr "%{profile} su izbrisali razgovor %{discussion} u grupi %{group}."
msgstr "%{profile} je izbrisao/la raspravu %{discussion} u grupi %{group}."
#: lib/service/activity/renderer/discussion.ex:55
#, elixir-autogen, elixir-format
msgid "%{profile} mentionned you in the discussion %{discussion} in group %{group}."
msgstr "%{profile} su vas spomenuli u razgovoru %{discussion} u grupi %{group}."
msgstr "%{profile} te je spomenuo/la u raspravi %{discussion} u grupi %{group}."
#: lib/service/activity/renderer/discussion.ex:70
#, elixir-autogen, elixir-format
msgid "%{profile} renamed the discussion %{discussion} in group %{group}."
msgstr "%{profile} su preimenovali razgovor %{discussion} u grupi %{group}."
msgstr "%{profile} je preimenovao/la raspravu %{discussion} u grupi %{group}."
#: lib/service/activity/renderer/discussion.ex:40
#, elixir-autogen, elixir-format
msgid "%{profile} replied to the discussion %{discussion} in group %{group}."
msgstr "%{profile} su odgovorili na razgovor %{discussion} u grupi %{group}."
msgstr "%{profile} je odgovorio/la na raspravu %{discussion} u grupi %{group}."
#: lib/web/templates/email/activity/_member_activity_item.html.heex:36
#: lib/web/templates/email/activity/_member_activity_item.text.eex:33

View file

@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-11-25 07:56+0000\n"
"PO-Revision-Date: 2023-12-21 20:11+0000\n"
"PO-Revision-Date: 2024-04-25 13:45+0000\n"
"Last-Translator: Milo Ivir <mail@milotype.de>\n"
"Language-Team: Croatian <https://weblate.framasoft.org/projects/mobilizon/"
"backend/hr/>\n"
@ -11,9 +11,9 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 5.3.1\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Weblate 5.5\n"
#: lib/web/templates/email/password_reset.html.heex:66
#, elixir-autogen, elixir-format
@ -227,8 +227,8 @@ msgstr "Tokeni za tvoju identifikaciju"
msgctxt "terms"
msgid "We also may retain server logs which include the IP address of every request to our server."
msgstr ""
"Također možemo zadržati zapisnike poslužitelja koji uključuju IP adresu "
"svakog poslanog zahtjeva na naš poslužitelj."
"Također možemo zadržati zapisnike servera koji uključuju IP adresu svakog "
"poslanog upita na naš server."
#: lib/web/templates/api/privacy.html.heex:102
#, elixir-autogen, elixir-format
@ -271,12 +271,23 @@ msgstr "Promjene u našim pravilima privatnosti"
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 ""
"Ako se ovaj server nalazi u EU ili u Europskom gospodarskom prostoru (EEA): "
"Naša stranica, proizvodi i usluge su namijenjene za osobe koje su starije od "
"16 godina. Ako si mlađi od 16 godina, na osnovi uredbe GDPR (<a href=\"https"
"://hr.wikipedia.org/wiki/Op%C4%87a_uredba_o_za%C5%A1titi_podataka\">Opća "
"uredba o zaštiti podataka</a>) nemoj koristiti ovu stranicu."
#: lib/web/templates/api/privacy.html.heex:146
#, elixir-autogen, elixir-format
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 ""
"Ako se ovaj server nalazi u SAD-u: Naša stranica, proizvodi i usluge su "
"namijenjene za osobe koje su starije od 13 godina. Ako si mlađi od 13 "
"godina, na osnovi zakona COPPA (<a href=\"https://en.wikipedia.org/wiki/"
"Children%27s_Online_Privacy_Protection_Act\">Children's Online Privacy "
"Protection Act</a>) (Zakon o zaštiti privatnosti djece na internetu) nemoj "
"koristiti ovu stranicu."
#: lib/web/templates/api/privacy.html.heex:160
#, elixir-autogen, elixir-format
@ -291,6 +302,8 @@ msgstr ""
msgctxt "terms"
msgid "Law requirements can be different if this server is in another jurisdiction."
msgstr ""
"Zakonske regulative se mogu razlikovati ako se ovaj server nalazi u jednoj "
"drugoj jurisdikciji."
#: lib/web/templates/api/privacy.html.heex:137
#, elixir-autogen, elixir-format
@ -303,18 +316,30 @@ msgstr "Korištenje stranice od djece"
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 questions."
msgstr ""
"E-mail adresa koju navedeš može se koristiti za slanje informacija, "
"aktualiziranja i obavijesti o drugim osobama\n"
" koji interagiraju s tvojim sadržajem ili ti šalju poruke te za "
"odgovaranje na upite i/ili druge zahtjeve ili\n"
" pitanja."
#: lib/web/templates/api/privacy.html.heex:61
#, elixir-autogen, elixir-format
msgctxt "terms"
msgid "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 ""
"Pomoći pri moderiranju zajednice, na primjer usporedbom tvoje IP adrese s "
"drugim poznatim adresama za utvrđivanja zabrane\n"
" ili drugih povreda."
#: lib/web/templates/api/privacy.html.heex:54
#, elixir-autogen, elixir-format
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."
msgstr ""
"Pružiti temeljnu funkcionalnost Mobilizona. Ovisno o politici ove instance, "
"možda ćete moći samo\n"
" komunicirati sa sadržajem drugih ljudi i objavljivati vlastiti sadržaj "
"ako ste prijavljeni."
#: lib/web/templates/api/privacy.html.heex:10
#, elixir-autogen, elixir-format
@ -333,7 +358,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 +367,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 +418,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 +426,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 +439,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:"
@ -556,7 +581,7 @@ msgstr ""
#, elixir-autogen, elixir-format
msgctxt "terms"
msgid "Your Content & Conduct"
msgstr ""
msgstr "Tvoj sadržaj i ponašanje"
#: lib/web/templates/api/terms.html.heex:263
#, elixir-autogen, elixir-format
@ -575,6 +600,8 @@ msgstr ""
msgctxt "terms"
msgid "For full details about the Mobilizon software <a href=\"https://joinmobilizon.org\">see here</a>."
msgstr ""
"Pogledaj sve detalje o Mobilizon softveru <a href=\"https://joinmobilizon."
"org\">ovdje</a>."
#: lib/web/templates/api/terms.html.heex:47
#, elixir-autogen, elixir-format
@ -633,6 +660,10 @@ msgstr ""
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 ""
"Sadržaj koji si objavio možeš ukloniti brisanjem. Nakon što izbrišeš svoj "
"sadržaj, on se neće pojaviti na usluzi, ali kopije tvog izbrisanog sadržaja "
"mogu ostati u našem sustavu ili sigurnosnim kopijama neko vrijeme. Zapisnici "
"pristupa web serveru se također mogu neko vrijeme zadržati u sustavu."
#: lib/web/templates/api/terms.html.heex:306
#, elixir-autogen, elixir-format
@ -800,7 +831,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] ""
@ -886,6 +917,9 @@ msgstr ""
#, elixir-autogen, elixir-format
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 ""
"Ako ovu promjenu nisi ti pokrenuo/la, vjerojatno je netko dobio pristup tvom "
"%{host} računu. Prijavi se i odmah promijeni lozinku. Ako se ne možeš "
"prijaviti, kontaktiraj administratora na %{host}."
#: lib/web/templates/email/password_reset.text.eex:12
#, elixir-autogen, elixir-format
@ -1133,7 +1167,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}"
@ -1160,7 +1194,7 @@ msgstr ""
#, elixir-autogen, elixir-format
msgctxt "terms"
msgid "If you delete this information, you need to login again."
msgstr ""
msgstr "Ako izbrišeš ove podatke morat ćeš se ponovo prijaviti."
#: lib/web/templates/api/privacy.html.heex:111
#, elixir-autogen, elixir-format
@ -1178,13 +1212,15 @@ msgstr ""
#, elixir-autogen, elixir-format
msgctxt "terms"
msgid "Our responsibility"
msgstr ""
msgstr "Naša odgovornost"
#: lib/web/templates/api/privacy.html.heex:87
#, elixir-autogen, elixir-format
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 ""
"Zapisnici servera koji sadrže IP adrese svih upita prema ovom serveru brišu "
"se nakon 90 dana, pod uvjetom da se takvi zapisnici vode."
#: lib/web/templates/api/privacy.html.heex:3
#: lib/web/templates/api/terms.html.heex:39
@ -1192,7 +1228,7 @@ msgstr ""
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 ""
"Neki tehnički ili drugi izrazi koji se koriste u donjem tekstu mogu "
"Neki tehnički ili drugi izrazi koji se koriste u daljnjem tekstu mogu "
"pokrivati pojmove koji se teško razumiju. Za lakše razumijevanje pojmova "
"postoji <a href=\"/glossary\">glosar</a>."
@ -1222,12 +1258,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"
@ -1411,15 +1441,13 @@ msgstr "Feed za %{email} na %{instance}"
#, elixir-autogen, elixir-format
msgid "If the issue persists, you may contact the server administrator at %{contact}."
msgstr ""
"Ako se problem nastavi pojavljivati, možeš se obratiti administratoru "
"poslužitelja na %{contact}."
"Ako se problem nastavi pojavljivati obratiti se administratoru servera na "
"%{contact}."
#: lib/web/templates/error/500_page.html.heex:59
#, elixir-autogen, elixir-format
msgid "If the issue persists, you may try to contact the server administrator."
msgstr ""
"Ako se problem nastavi pojavljivati, možeš se pokušati obratiti "
"administratoru poslužitelja."
msgstr "Ako se problem nastavi pojavljivati obratiti se administratoru servera."
#: lib/web/templates/error/500_page.html.heex:82
#, elixir-autogen, elixir-format
@ -1429,7 +1457,7 @@ msgstr "Tehnički detalji"
#: lib/web/templates/error/500_page.html.heex:52
#, elixir-autogen, elixir-format
msgid "The Mobilizon server %{instance} seems to be temporarily down."
msgstr "Čini se da Mobilizon poslužitej %{instance} privremeno nije dostupan."
msgstr "Čini se da Mobilizon server %{instance} privremeno nije dostupan."
#: lib/service/export/feed.ex:72
#, elixir-autogen, elixir-format
@ -1454,7 +1482,7 @@ msgstr ""
#, elixir-autogen, elixir-format
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 ""
"Tim za moderiranje tvoje instance je odlučio suspendiratigrupu "
"Tim za moderiranje tvoje instance je odlučio suspendirati grupu "
"<b>%{group_name}</b> (%{group_address}). Više nisi član ove grupe."
#: lib/web/templates/email/actor_suspension_participants.html.heex:18
@ -1738,7 +1766,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 +2190,15 @@ 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 ""
"Kada u ovom dokumentu kažemo „mi”, „naš” ili „nas”, mislimo na vlasnike, "
"operatere i administratore ove Mobilizon instance. Softver Mobilizon "
"osigurava tim dopinositelja Mobilizona. Ukoliko nije izričito navedeno, ova "
"je Mobilizon instanca neovisna usluga koja koristi Mobilizonov izvorni kod. "
"Više informacija o ovoj instanci se mogu pronaći na stranici <a href=\"/"
"about/instance\">„O ovoj instanci”</a>."

View file

@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-11-25 07:56+0000\n"
"PO-Revision-Date: 2023-12-04 18:30+0000\n"
"PO-Revision-Date: 2024-04-25 13:45+0000\n"
"Last-Translator: Milo Ivir <mail@milotype.de>\n"
"Language-Team: Croatian <https://weblate.framasoft.org/projects/mobilizon/"
"backend-errors/hr/>\n"
@ -11,9 +11,9 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 5.2.1\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Weblate 5.5\n"
## This file is a PO Template file.
##
@ -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"
@ -393,7 +393,7 @@ msgstr "Komentar je već izbrisan"
#: lib/graphql/resolvers/discussion.ex:69
#, elixir-autogen, elixir-format
msgid "Discussion not found"
msgstr "Diskusija nije pronađena"
msgstr "Rasprava nije pronađena"
#: lib/graphql/resolvers/report.ex:71
#: lib/graphql/resolvers/report.ex:90
@ -434,7 +434,7 @@ msgstr "Interna greška"
#: lib/graphql/resolvers/discussion.ex:222
#, elixir-autogen, elixir-format
msgid "No discussion with ID %{id}"
msgstr "Ne postoji diskusija s ID oznakom %{id}"
msgstr "Ne postoji rasprava s ID oznakom %{id}"
#: lib/graphql/resolvers/todos.ex:80
#: lib/graphql/resolvers/todos.ex:107
@ -627,7 +627,7 @@ msgstr ""
#, elixir-autogen, elixir-format
msgid "You can't set yourself to a lower member role for this group because you are the only administrator"
msgstr ""
"Ne možeš se postaviti na nižu ulogu člana za ovu grupu jer si jedini "
"Ne možeš se postaviti na nižu ulogu člana za ovu grupu jer si ti jedini "
"administrator"
#: lib/graphql/resolvers/comment.ex:149
@ -650,10 +650,10 @@ 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"
msgstr "Za prikaz zapisnika radnji moraš biti prijavljen/a i biti moderator"
#: lib/graphql/resolvers/report.ex:36
#, elixir-autogen, elixir-format
@ -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 ""
@ -694,7 +694,7 @@ msgstr ""
#: lib/graphql/resolvers/discussion.ex:84
#, elixir-autogen, elixir-format
msgid "You need to be logged-in to access discussions"
msgstr "Za pristup diskusijama moraš biti prijavljen/a"
msgstr "Za pristup raspravama moraš biti prijavljen/a"
#: lib/graphql/resolvers/resource.ex:98
#, elixir-autogen, elixir-format
@ -769,7 +769,7 @@ msgstr "Za prikaz pregleda resursa moraš biti prijavljen/a"
#: lib/graphql/resolvers/resource.ex:134
#, elixir-autogen, elixir-format
msgid "Parent resource doesn't belong to this group"
msgstr ""
msgstr "Nadređeni resurs ne pripada ovoj grupi"
#: lib/mobilizon/users/user.ex:114
#, elixir-autogen, elixir-format
@ -796,93 +796,93 @@ msgstr "Objava nije pronađena"
#: lib/graphql/error.ex:100
#, elixir-autogen, elixir-format
msgid "Invalid arguments passed"
msgstr ""
msgstr "Proslijeđeni su nevažeći argumenti"
#: lib/graphql/error.ex:106
#, elixir-autogen, elixir-format
msgid "Invalid credentials"
msgstr ""
msgstr "Nevažeći podaci za prijavu"
#: lib/graphql/error.ex:104
#, elixir-autogen, elixir-format
msgid "Reset your password to login"
msgstr ""
msgstr "Obnovi svoju lozinku za prijavu"
#: lib/graphql/error.ex:111
#: lib/graphql/error.ex:116
#, elixir-autogen, elixir-format
msgid "Resource not found"
msgstr ""
msgstr "Resurs nije pronađen"
#: lib/graphql/error.ex:123
#, elixir-autogen, elixir-format
msgid "Something went wrong"
msgstr ""
msgstr "Dogodila se greška"
#: lib/graphql/error.ex:99
#, elixir-autogen, elixir-format
msgid "Unknown Resource"
msgstr ""
msgstr "Nepoznat resurs"
#: lib/graphql/error.ex:109
#, elixir-autogen, elixir-format
msgid "You don't have permission to do this"
msgstr ""
msgstr "Za ovo nemaš dozvolu"
#: lib/graphql/error.ex:101
#, elixir-autogen, elixir-format
msgid "You need to be logged in"
msgstr ""
msgstr "Moraš biti prijavljen/a"
#: lib/graphql/resolvers/member.ex:118
#, elixir-autogen, elixir-format
msgid "You can't accept this invitation with this profile."
msgstr ""
msgstr "Ovu pozivnicu ne možeš prihvatiti s ovim profilom."
#: lib/graphql/resolvers/member.ex:139
#, elixir-autogen, elixir-format
msgid "You can't reject this invitation with this profile."
msgstr ""
msgstr "Ovu pozivnicu ne možeš odbiti s ovim profilom."
#: lib/graphql/resolvers/media.ex:71
#, elixir-autogen, elixir-format
msgid "File doesn't have an allowed MIME type."
msgstr ""
msgstr "Datoteka nema dozvoljenu MIME vrstu."
#: lib/graphql/resolvers/group.ex:244
#, elixir-autogen, elixir-format
msgid "Profile is not administrator for the group"
msgstr ""
msgstr "Profil nije administrator za grupu"
#: lib/graphql/resolvers/event.ex:385
#, elixir-autogen, elixir-format
msgid "You can't edit this event."
msgstr ""
msgstr "Ovaj događaj ne možeš urediti."
#: lib/graphql/resolvers/event.ex:388
#, elixir-autogen, elixir-format
msgid "You can't attribute this event to this profile."
msgstr ""
msgstr "Ovaj događaj ne možeš pripisati ovom profilu."
#: lib/graphql/resolvers/member.ex:142
#, elixir-autogen, elixir-format
msgid "This invitation doesn't exist."
msgstr ""
msgstr "Ova pozivnica ne postoji."
#: lib/graphql/resolvers/member.ex:217
#, elixir-autogen, elixir-format
msgid "This member already has been rejected."
msgstr ""
msgstr "Ovaj je član već odbijen."
#: lib/graphql/resolvers/member.ex:241
#, elixir-autogen, elixir-format
msgid "You don't have the right to remove this member."
msgstr ""
msgstr "Nemaš prava za uklanjanje ovog člana."
#: lib/mobilizon/actors/actor.ex:385
#, elixir-autogen, elixir-format
msgid "This username is already taken."
msgstr ""
msgstr "Ovo je korisničko ime već zauzeto."
#: lib/graphql/resolvers/discussion.ex:81
#, elixir-autogen, elixir-format
@ -953,7 +953,7 @@ msgstr ""
#: lib/graphql/resolvers/discussion.ex:123
#, elixir-autogen, elixir-format
msgid "Error while creating a discussion"
msgstr ""
msgstr "Greška tijekom stvaranje rasprave"
#: lib/graphql/resolvers/user.ex:687
#, elixir-autogen, elixir-format
@ -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"
@ -1074,17 +1074,17 @@ msgstr ""
#: lib/graphql/resolvers/group.ex:382
#, elixir-autogen, elixir-format
msgid "You need to be logged-in to follow a group"
msgstr ""
msgstr "Za praćenje grupe moraš biti prijavljen/a"
#: lib/graphql/resolvers/group.ex:431
#, elixir-autogen, elixir-format
msgid "You need to be logged-in to unfollow a group"
msgstr ""
msgstr "Za prekid praćenja grupe moraš biti prijavljen/a"
#: lib/graphql/resolvers/group.ex:408
#, elixir-autogen, elixir-format
msgid "You need to be logged-in to update a group follow"
msgstr ""
msgstr "Za aktualiziranje praćenja grupe moraš biti prijavljen/a"
#: lib/graphql/resolvers/member.ex:210
#, elixir-autogen, elixir-format
@ -1099,40 +1099,40 @@ msgstr ""
#: lib/graphql/resolvers/member.ex:252
#, elixir-autogen, elixir-format
msgid "You must be logged-in to remove a member"
msgstr ""
msgstr "Za uklanjanje člana moraš biti prijavljen/a"
#: lib/graphql/resolvers/user.ex:174
#, elixir-autogen, elixir-format
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 ""
"Za uređivanje podataka korisnika, moraš biti prijavljen(a) i administrator"
"Za uređivanje podataka korisnika moraš biti prijavljen/a i biti administrator"
#: lib/graphql/api/groups.ex:33
#, elixir-autogen, elixir-format
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 ""
@ -1192,22 +1192,22 @@ msgstr ""
#: lib/graphql/error.ex:118
#, elixir-autogen, elixir-format
msgid "Application not found"
msgstr ""
msgstr "Aplikacija nije pronađena"
#: lib/graphql/error.ex:121
#, elixir-autogen, elixir-format
msgid "Application token not found"
msgstr ""
msgstr "Token aplikacije nije pronađen"
#: lib/graphql/resolvers/application.ex:90
#, elixir-autogen, elixir-format, fuzzy
#, elixir-autogen, elixir-format
msgid "Error while revoking token"
msgstr "Greška tijekom spremanja izvještaja"
msgstr "Greška tijekom opoziva tokena"
#: lib/web/controllers/application_controller.ex:61
#, elixir-autogen, elixir-format
msgid "Impossible to create application."
msgstr ""
msgstr "Aplikacija se ne može stvoriti."
#: lib/web/controllers/application_controller.ex:353
#, elixir-autogen, elixir-format
@ -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 ""

View file

@ -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!"

View file

@ -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 ""

Some files were not shown because too many files have changed in this diff Show more