Merge branch 'fixes' into 'main'

CI changes

See merge request framasoft/mobilizon!1232
This commit is contained in:
Thomas Citharel 2022-05-06 12:52:36 +00:00
commit c9ebd76cc9
89 changed files with 8889 additions and 8294 deletions

View File

@ -238,13 +238,13 @@ build-docker-tag:
# Packaging app for amd64
package-app:
image: mobilizon/buildpack:1.13.4-erlang-24.3.3-${OS}
image: mobilizon/buildpack:1.13.4-erlang-24.3.3-debian-buster
stage: package
variables: &release-variables
MIX_ENV: "prod"
DEBIAN_FRONTEND: noninteractive
TZ: Etc/UTC
APP_ASSET: "${CI_PROJECT_NAME}_${CI_COMMIT_REF_NAME}_${ARCH}_${OS}.tar.gz"
APP_ASSET: "${CI_PROJECT_NAME}_${CI_COMMIT_REF_NAME}_${ARCH}.tar.gz"
script: &release-script
- mix local.hex --force
- mix local.rebar --force
@ -263,9 +263,6 @@ package-app:
expire_in: 2 days
paths:
- ${APP_ASSET}
parallel:
matrix:
- OS: ["debian-bullseye", "debian-buster", "ubuntu-focal", "ubuntu-bionic", "fedora-35", "fedora-36", "alpine-3.14.5", "alpine-3.15.3"]
package-app-dev:
stage: package
@ -288,9 +285,8 @@ multi-arch-release:
DOCKER_TLS_VERIFY: 1
DOCKER_CERT_PATH: "$DOCKER_TLS_CERTDIR/client"
DOCKER_DRIVER: overlay2
APP_ASSET: "${CI_PROJECT_NAME}_${CI_COMMIT_REF_NAME}_${ARCH}_${OS}.tar.gz"
# For now, arm and arm64 are only build for debian bullseye version
OS: debian-bullseye
APP_ASSET: "${CI_PROJECT_NAME}_${CI_COMMIT_REF_NAME}_${ARCH}.tar.gz"
OS: debian-buster
services:
- docker:20.10.12-dind
cache: {}

View File

@ -1,26 +1,5 @@
# Upgrading from 2.0 to 2.1
## Distro-specific packages
Elixir releases are precompiled binaries and are therefore dependent on the host they've been compiled to be compatible with your system (architecture, libc version, …) ([read more](https://hexdocs.pm/mix/Mix.Tasks.Release.html#module-requirements)). For instance, the release build on Debian Bullseye (with libc 2.31) cannot be run on Debian Buster (which only provides libc 2.28). Another example is Red Hat-relative distributions (Fedora, CentOS, …) which have an OpenSSL library version that's not compatible with the version compiled (because of [potential patent issues with Elliptic curves](https://github.com/kerl/kerl#compiling-crypto-on-red-hat-systems)).
In order to make sure the releases package we redistribute , we now build distro-version-specific packages.
The list of packages built for version 2.1.0 with the amd64 (x86_64) architecture is the following:
- Debian Buster (10)
- Debian Bullseye (11)
- Ubuntu Bionic (18.04)
- Ubuntu Focal (20.04)
- Fedora 35
- Fedora 36
- Alpine 3.14.5
- Alpine 3.15.3
As building for non-`amd64` architectures is quite difficult (because of the time and extra resources cross-compiling takes), these architectures are only built against Debian Bullseye (11) at the moment.
We want to expand this list in the future to make sure it covers most uses, so feel free to give us feedback from what you need.
Note: Docker images are also built for `amd64`/`arm`/`arm64` architectures, and of course you can always install Mobilizon from source on pretty much any unix-compatible system.
## Mailer library change
### Docker
@ -30,10 +9,11 @@ The change is already applied. You may remove the `MOBILIZON_SMTP_HOSTNAME` envi
### Release and source mode
In your configuration file under `config :mobilizon, Mobilizon.Web.Email.Mailer`,
* Change `Bamboo.SMTPAdapter` to `Swoosh.Adapters.SMTP`,
* rename the `server` key to `relay`
* remove the `hostname` key,
* the default value of the username and password fields is an empty string and no longer `nil`.
- Change `Bamboo.SMTPAdapter` to `Swoosh.Adapters.SMTP`,
- rename the `server` key to `relay`
- remove the `hostname` key,
- the default value of the username and password fields is an empty string and no longer `nil`.
```diff
config :mobilizon, Mobilizon.Web.Email.Mailer,
@ -61,7 +41,9 @@ In your configuration file under `config :mobilizon, Mobilizon.Web.Email.Mailer`
# Upgrading from 1.3 to 2.0
Requirements dependencies depend on the way Mobilizon is installed.
## New Elixir version requirement
### Docker and Release install
You are already using latest Elixir version in the release tarball and Docker images.
@ -77,17 +59,19 @@ Mobilizon 2.0 uses data based on [timezone-boundary-builder](https://github.com/
### Docker install
The geographic timezone data is already bundled into the image, you have nothing to do.
### Release install
In order to keep the release tarballs light, the geographic timezone data is not bundled directly. You need to download the data :
* either raw from Github, but **requires an extra ~1Gio of memory** to process the data
- either raw from Github, but **requires an extra ~1Gio of memory** to process the data
```sh
sudo -u mobilizon mkdir /var/lib/mobilizon/timezones
sudo -u mobilizon ./bin/mobilizon_ctl tz_world.update
```
* either already processed from our own distribution server
- either already processed from our own distribution server
```sh
sudo -u mobilizon mkdir /var/lib/mobilizon/timezones
@ -95,6 +79,7 @@ In order to keep the release tarballs light, the geographic timezone data is not
```
In both cases, ~700Mio of disk will be used. You may use the following configuration to specify where the data is expected if you decide to change it from the default location (`/var/lib/mobilizon/timezones`) :
```elixir
config :tz_world, data_dir: "/some/place"
```
@ -102,14 +87,15 @@ config :tz_world, data_dir: "/some/place"
### Source install
You need to download the data :
* either raw from Github, but **requires an extra ~1Gio of memory** to process the data
- either raw from Github, but **requires an extra ~1Gio of memory** to process the data
```sh
sudo -u mobilizon mkdir /var/lib/mobilizon/timezones
sudo -u mobilizon mix mobilizon.tz_world.update
```
* either already processed from our own distribution server
- either already processed from our own distribution server
```sh
sudo -u mobilizon mkdir /var/lib/mobilizon/timezones
@ -117,6 +103,7 @@ You need to download the data :
```
In both cases, ~700Mio of disk will be used. You may use the following configuration to specify where the data is expected:
```elixir
config :tz_world, data_dir: "/some/place"
```
@ -135,14 +122,18 @@ Files in this folder are temporary and are cleaned once an hour.
## New optional dependencies
These are optional, installing them will allow Mobilizon to export to PDF and ODS as well. Mobilizon 2.0 allows to export the participant list, but more is planned.
### Docker
Everything is included in our Docker image.
### Release and source install
New optional Python dependencies:
* `Python` >= 3.6
* `weasyprint` for PDF export (with [a few extra dependencies](https://doc.courtbouillon.org/weasyprint/stable/first_steps.html))
* `pyexcel-ods3` for ODS export (no extra dependencies)
- `Python` >= 3.6
- `weasyprint` for PDF export (with [a few extra dependencies](https://doc.courtbouillon.org/weasyprint/stable/first_steps.html))
- `pyexcel-ods3` for ODS export (no extra dependencies)
Both can be installed through pip. You need to enable and configure exports for PDF and ODS in the configuration afterwards. Read [the dedicated docs page about this](https://docs.joinmobilizon.org/administration/configure/exports/).
@ -151,35 +142,41 @@ Both can be installed through pip. You need to enable and configure exports for
The 1.1 version of Mobilizon brings Elixir releases support. An Elixir release is a self-contained directory that contains all of Mobilizon's code (front-end and backend), it's dependencies, as well as the Erlang Virtual Machine and runtime (only the parts you need). As long as the release has been assembled on the same OS and architecture, it can be deploy and run straight away. [Read more about releases](https://elixir-lang.org/getting-started/mix-otp/config-and-releases.html#releases).
## Comparison
Migrating to releases means:
* You only get a precompiled binary, so you avoid compilation times when updating
* No need to have Elixir/NodeJS installed on the system
* Code/data/config location is more common (/opt, /var/lib, /etc)
* More efficient, as only what you need from the Elixir/Erlang standard libraries is included and all of the code is directly preloaded
* You can't hardcode modifications in Mobilizon's code
- You only get a precompiled binary, so you avoid compilation times when updating
- No need to have Elixir/NodeJS installed on the system
- Code/data/config location is more common (/opt, /var/lib, /etc)
- More efficient, as only what you need from the Elixir/Erlang standard libraries is included and all of the code is directly preloaded
- You can't hardcode modifications in Mobilizon's code
Staying on source releases means:
* You need to recompile everything with each update
* Compiling frontend and backend has higher system requirements than just running Mobilizon
* You can change things in Mobilizon's code and recompile right away to test changes
- You need to recompile everything with each update
- Compiling frontend and backend has higher system requirements than just running Mobilizon
- You can change things in Mobilizon's code and recompile right away to test changes
## Releases
If you want to migrate to releases, [we provide a full guide](https://docs.joinmobilizon.org/administration/upgrading/source_to_release/). You may do this at any time.
## Source install
To stay on a source release, you just need to check the following things:
* Rename your configuration file `config/prod.secret.exs` to `config/runtime.exs`.
* If your config file includes `server: true` under `Mobilizon.Web.Endpoint`, remove it.
```diff
config :mobilizon, Mobilizon.Web.Endpoint,
- server: true,
```
* The uploads default directory is now `/var/lib/mobilizon/uploads`. To keep it in the previous `uploads/` directory, just add the following line to `config/runtime.exs`:
- Rename your configuration file `config/prod.secret.exs` to `config/runtime.exs`.
- If your config file includes `server: true` under `Mobilizon.Web.Endpoint`, remove it.
```diff
config :mobilizon, Mobilizon.Web.Endpoint,
- server: true,
```
- The uploads default directory is now `/var/lib/mobilizon/uploads`. To keep it in the previous `uploads/` directory, just add the following line to `config/runtime.exs`:
```elixir
config :mobilizon, Mobilizon.Web.Upload.Uploader.Local, uploads: "uploads"
```
Or you may use any other directory where the `mobilizon` user has write permissions.
* The GeoIP database default directory is now `/var/lib/mobilizon/geo/GeoLite2-City.mmdb`. To keep it in the previous `priv/data/GeoLite2-City.mmdb` directory, just add the following line to `config/runtime.exs`:
- The GeoIP database default directory is now `/var/lib/mobilizon/geo/GeoLite2-City.mmdb`. To keep it in the previous `priv/data/GeoLite2-City.mmdb` directory, just add the following line to `config/runtime.exs`:
```elixir
config :geolix, databases: [
%{
@ -189,4 +186,4 @@ To stay on a source release, you just need to check the following things:
}
]
```
Or you may use any other directory where the `mobilizon` user has read permissions.
Or you may use any other directory where the `mobilizon` user has read permissions.

View File

@ -131,15 +131,6 @@ export const ADD_INSTANCE = gql`
${INSTANCE_FRAGMENT}
`;
export const ADD_RELAY = gql`
mutation addRelay($address: String!) {
addRelay(address: $address) {
...relayFragment
}
}
${RELAY_FRAGMENT}
`;
export const REMOVE_RELAY = gql`
mutation removeRelay($address: String!) {
removeRelay(address: $address) {

View File

@ -21,6 +21,11 @@
<b-button type="is-primary" native-type="submit">{{
$t("Add an instance")
}}</b-button>
<b-loading
:is-full-page="true"
v-model="followInstanceLoading"
:can-cancel="false"
/>
</p>
</b-field>
</b-field>
@ -171,7 +176,6 @@ import {
InstanceFilterFollowStatus,
InstanceFollowStatus,
} from "@/types/enums";
import { SnackbarProgrammatic as Snackbar } from "buefy";
const { isNavigationFailure, NavigationFailureType } = VueRouter;
const INSTANCES_PAGE_LIMIT = 10;
@ -203,6 +207,8 @@ const INSTANCES_PAGE_LIMIT = 10;
export default class Follows extends Vue {
RouteName = RouteName;
followInstanceLoading = false;
newRelayAddress = "";
instances!: Paginate<IInstance>;
@ -257,6 +263,7 @@ export default class Follows extends Vue {
async followInstance(e: Event): Promise<void> {
e.preventDefault();
this.followInstanceLoading = true;
const domain = this.newRelayAddress.trim(); // trim to fix copy and paste domain name spaces and tabs
try {
await this.$apollo.mutate<{ relayFollowings: Paginate<IFollower> }>({
@ -266,18 +273,18 @@ export default class Follows extends Vue {
},
});
this.newRelayAddress = "";
this.followInstanceLoading = false;
this.$router.push({
name: RouteName.INSTANCE,
params: { domain },
});
} catch (err: any) {
if (err.message) {
Snackbar.open({
message: err.message,
type: "is-danger",
position: "is-bottom",
});
} catch (error: any) {
if (error.message) {
if (error.graphQLErrors && error.graphQLErrors.length > 0) {
this.$notifier.error(error.graphQLErrors[0].message);
}
}
this.followInstanceLoading = false;
}
}

View File

@ -489,24 +489,25 @@ defmodule Mobilizon.GraphQL.Resolvers.Admin do
{:error, :unauthenticated}
end
@spec create_instance(any, map(), Absinthe.Resolution.t()) ::
{:error, atom() | binary()}
| {:ok, Mobilizon.Instances.Instance.t()}
def create_instance(
parent,
%{domain: domain} = args,
%{context: %{current_user: %User{role: role}}} = resolution
)
when is_admin(role) do
with {:ok, _activity, _follow} <- Relay.follow(domain) do
Instances.refresh()
get_instance(parent, args, resolution)
end
end
case Relay.follow(domain) do
{:ok, _activity, _follow} ->
Instances.refresh()
get_instance(parent, args, resolution)
@spec create_relay(any(), map(), Absinthe.Resolution.t()) ::
{:ok, Follower.t()} | {:error, any()}
def create_relay(_parent, %{address: address}, %{context: %{current_user: %User{role: role}}})
when is_admin(role) do
with {:ok, _activity, follow} <- Relay.follow(address) do
{:ok, follow}
{:error, :http_error} ->
{:error, dgettext("errors", "Unable to find an instance to follow at this address")}
{:error, err} ->
{:error, err}
end
end

View File

@ -352,13 +352,6 @@ defmodule Mobilizon.GraphQL.Schema.AdminType do
resolve(&Admin.create_instance/3)
end
@desc "Add a relay subscription"
field :add_relay, type: :follower do
arg(:address, non_null(:string), description: "The relay hostname to add")
resolve(&Admin.create_relay/3)
end
@desc "Delete a relay subscription"
field :remove_relay, type: :follower do
arg(:address, non_null(:string), description: "The relay hostname to delete")

View File

@ -11,198 +11,198 @@ msgid ""
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.html.heex:19
#: lib/web/templates/email/activity/_member_activity_item.html.heex:14
#: lib/web/templates/email/activity/_member_activity_item.text.eex:12
msgid "%{member} accepted the invitation to join the group."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.html.heex:26
#: lib/web/templates/email/activity/_member_activity_item.html.heex:19
#: lib/web/templates/email/activity/_member_activity_item.text.eex:17
msgid "%{member} rejected the invitation to join the group."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.html.heex:4
#: lib/web/templates/email/activity/_member_activity_item.html.heex:3
#: lib/web/templates/email/activity/_member_activity_item.text.eex:1
msgid "%{member} requested to join the group."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.html.heex:11
#: lib/web/templates/email/activity/_member_activity_item.html.heex:8
#: lib/web/templates/email/activity/_member_activity_item.text.eex:6
msgid "%{member} was invited by %{profile}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.html.heex:40
#: lib/web/templates/email/activity/_member_activity_item.html.heex:30
#: lib/web/templates/email/activity/_member_activity_item.text.eex:27
msgid "%{profile} added the member %{member}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:46
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:27
#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:19
msgid "%{profile} archived the discussion %{discussion}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:4
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:3
#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:1
msgid "%{profile} created the discussion %{discussion}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:5
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:4
#: lib/web/templates/email/activity/_resource_activity_item.text.eex:2
msgid "%{profile} created the folder %{resource}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_group_activity_item.html.heex:4
#: lib/web/templates/email/activity/_group_activity_item.html.heex:3
#: lib/web/templates/email/activity/_group_activity_item.text.eex:1
msgid "%{profile} created the group %{group}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:20
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:14
#: lib/web/templates/email/activity/_resource_activity_item.text.eex:8
msgid "%{profile} created the resource %{resource}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:60
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:35
#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:25
msgid "%{profile} deleted the discussion %{discussion}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:103
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:80
#: lib/web/templates/email/activity/_resource_activity_item.text.eex:40
msgid "%{profile} deleted the folder %{resource}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:111
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:86
#: lib/web/templates/email/activity/_resource_activity_item.text.eex:45
msgid "%{profile} deleted the resource %{resource}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.html.heex:56
#: lib/web/templates/email/activity/_member_activity_item.html.heex:42
#: lib/web/templates/email/activity/_member_activity_item.text.eex:39
msgid "%{profile} excluded member %{member}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:71
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:58
#: lib/web/templates/email/activity/_resource_activity_item.text.eex:28
msgid "%{profile} moved the folder %{resource}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:86
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:68
#: lib/web/templates/email/activity/_resource_activity_item.text.eex:34
msgid "%{profile} moved the resource %{resource}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.html.heex:64
#: lib/web/templates/email/activity/_member_activity_item.html.heex:48
#: lib/web/templates/email/activity/_member_activity_item.text.eex:45
msgid "%{profile} quit the group."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:32
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:19
#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:13
msgid "%{profile} renamed the discussion %{discussion}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:37
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:26
#: lib/web/templates/email/activity/_resource_activity_item.text.eex:14
msgid "%{profile} renamed the folder from %{old_resource_title} to %{resource}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:53
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:41
#: lib/web/templates/email/activity/_resource_activity_item.text.eex:21
msgid "%{profile} renamed the resource from %{old_resource_title} to %{resource}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:18
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:11
#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:7
msgid "%{profile} replied to the discussion %{discussion}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_group_activity_item.html.heex:19
#: lib/web/templates/email/activity/_group_activity_item.html.heex:13
#: lib/web/templates/email/activity/_group_activity_item.text.eex:7
msgid "%{profile} updated the group %{group}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.html.heex:48
#: lib/web/templates/email/activity/_member_activity_item.html.heex:36
#: lib/web/templates/email/activity/_member_activity_item.text.eex:33
msgid "%{profile} updated the member %{member}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/service/activity/renderer/event.ex:23
#: lib/web/templates/email/activity/_event_activity_item.html.heex:4
#: lib/web/templates/email/activity/_event_activity_item.html.heex:3
#: lib/web/templates/email/activity/_event_activity_item.text.eex:1
msgid "The event %{event} was created by %{profile}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/service/activity/renderer/event.ex:43
#: lib/web/templates/email/activity/_event_activity_item.html.heex:34
#: lib/web/templates/email/activity/_event_activity_item.html.heex:23
#: lib/web/templates/email/activity/_event_activity_item.text.eex:13
msgid "The event %{event} was deleted by %{profile}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/service/activity/renderer/event.ex:33
#: lib/web/templates/email/activity/_event_activity_item.html.heex:19
#: lib/web/templates/email/activity/_event_activity_item.html.heex:13
#: lib/web/templates/email/activity/_event_activity_item.text.eex:7
msgid "The event %{event} was updated by %{profile}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_post_activity_item.html.heex:4
#: lib/web/templates/email/activity/_post_activity_item.html.heex:3
#: lib/web/templates/email/activity/_post_activity_item.text.eex:1
msgid "The post %{post} was created by %{profile}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_post_activity_item.html.heex:34
#: lib/web/templates/email/activity/_post_activity_item.html.heex:23
#: lib/web/templates/email/activity/_post_activity_item.text.eex:13
msgid "The post %{post} was deleted by %{profile}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_post_activity_item.html.heex:19
#: lib/web/templates/email/activity/_post_activity_item.html.heex:13
#: lib/web/templates/email/activity/_post_activity_item.text.eex:7
msgid "The post %{post} was updated by %{profile}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.html.heex:33
#: lib/web/templates/email/activity/_member_activity_item.html.heex:24
#: lib/web/templates/email/activity/_member_activity_item.text.eex:22
msgid "%{member} joined the group."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/service/activity/renderer/event.ex:63
#: lib/web/templates/email/activity/_event_activity_item.html.heex:58
#: lib/web/templates/email/activity/_event_activity_item.html.heex:40
#: lib/web/templates/email/activity/_event_activity_item.text.eex:25
msgid "%{profile} posted a comment on the event %{event}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/service/activity/renderer/event.ex:54
#: lib/web/templates/email/activity/_event_activity_item.html.heex:43
#: lib/web/templates/email/activity/_event_activity_item.html.heex:30
#: lib/web/templates/email/activity/_event_activity_item.text.eex:19
msgid "%{profile} replied to a comment on the event %{event}."
msgstr ""
@ -213,7 +213,7 @@ msgid "Don't want to receive activity notifications? You may change frequency or
msgstr ""
#, elixir-format
#: lib/web/templates/email/email_direct_activity.html.heex:135
#: lib/web/templates/email/email_direct_activity.html.heex:219
#: lib/web/templates/email/email_direct_activity.text.eex:23
msgid "View one more activity"
msgid_plural "View %{count} more activities"
@ -221,8 +221,8 @@ msgstr[0] ""
msgstr[1] ""
#, elixir-format
#: lib/web/templates/email/email_direct_activity.html.heex:44
#: lib/web/templates/email/email_direct_activity.html.heex:46
#: lib/web/templates/email/email_direct_activity.html.heex:53
#: 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
msgid "There has been an activity!"
@ -237,27 +237,27 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/service/activity/renderer/comment.ex:38
#: lib/web/templates/email/activity/_comment_activity_item.html.heex:19
#: lib/web/templates/email/activity/_comment_activity_item.html.heex:13
#: lib/web/templates/email/activity/_comment_activity_item.text.eex:7
#: lib/web/templates/email/email_anonymous_activity.html.heex:41
#: lib/web/templates/email/email_anonymous_activity.html.heex:48
#: lib/web/templates/email/email_anonymous_activity.text.eex:5
msgid "%{profile} has posted an announcement under event %{event}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/service/activity/renderer/comment.ex:24
#: lib/web/templates/email/activity/_comment_activity_item.html.heex:4
#: lib/web/templates/email/activity/_comment_activity_item.html.heex:3
#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1
msgid "%{profile} mentionned you in a comment under event %{event}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/email_direct_activity.html.heex:155
#: lib/web/templates/email/email_direct_activity.html.heex:249
msgid "Don't want to receive activity notifications? You may change frequency or disable them in %{tag_start}your settings%{tag_end}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/email_direct_activity.html.heex:42
#: lib/web/templates/email/email_direct_activity.html.heex:51
#: lib/web/templates/email/email_direct_activity.text.eex:5
msgid "Here's your weekly activity recap"
msgstr ""
@ -274,7 +274,7 @@ msgid "Daily activity recap for %{instance}"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/email_direct_activity.html.heex:40
#: lib/web/templates/email/email_direct_activity.html.heex:49
#: lib/web/templates/email/email_direct_activity.text.eex:4
msgid "Here's your daily activity recap"
msgstr ""
@ -286,14 +286,14 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/service/activity/renderer/comment.ex:66
#: lib/web/templates/email/activity/_comment_activity_item.html.heex:51
#: lib/web/templates/email/activity/_comment_activity_item.html.heex:34
#: lib/web/templates/email/activity/_comment_activity_item.text.eex:19
msgid "%{profile} has posted a new comment under your event %{event}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/service/activity/renderer/comment.ex:53
#: lib/web/templates/email/activity/_comment_activity_item.html.heex:36
#: lib/web/templates/email/activity/_comment_activity_item.html.heex:24
#: lib/web/templates/email/activity/_comment_activity_item.text.eex:13
msgid "%{profile} has posted a new reply under your event %{event}."
msgstr ""

View File

@ -12,198 +12,198 @@ msgstr ""
"Plural-Forms: nplurals=6\n"
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.html.heex:19
#: lib/web/templates/email/activity/_member_activity_item.html.heex:14
#: lib/web/templates/email/activity/_member_activity_item.text.eex:12
msgid "%{member} accepted the invitation to join the group."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.html.heex:26
#: lib/web/templates/email/activity/_member_activity_item.html.heex:19
#: lib/web/templates/email/activity/_member_activity_item.text.eex:17
msgid "%{member} rejected the invitation to join the group."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.html.heex:4
#: lib/web/templates/email/activity/_member_activity_item.html.heex:3
#: lib/web/templates/email/activity/_member_activity_item.text.eex:1
msgid "%{member} requested to join the group."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.html.heex:11
#: lib/web/templates/email/activity/_member_activity_item.html.heex:8
#: lib/web/templates/email/activity/_member_activity_item.text.eex:6
msgid "%{member} was invited by %{profile}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.html.heex:40
#: lib/web/templates/email/activity/_member_activity_item.html.heex:30
#: lib/web/templates/email/activity/_member_activity_item.text.eex:27
msgid "%{profile} added the member %{member}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:46
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:27
#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:19
msgid "%{profile} archived the discussion %{discussion}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:4
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:3
#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:1
msgid "%{profile} created the discussion %{discussion}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:5
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:4
#: lib/web/templates/email/activity/_resource_activity_item.text.eex:2
msgid "%{profile} created the folder %{resource}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_group_activity_item.html.heex:4
#: lib/web/templates/email/activity/_group_activity_item.html.heex:3
#: lib/web/templates/email/activity/_group_activity_item.text.eex:1
msgid "%{profile} created the group %{group}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:20
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:14
#: lib/web/templates/email/activity/_resource_activity_item.text.eex:8
msgid "%{profile} created the resource %{resource}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:60
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:35
#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:25
msgid "%{profile} deleted the discussion %{discussion}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:103
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:80
#: lib/web/templates/email/activity/_resource_activity_item.text.eex:40
msgid "%{profile} deleted the folder %{resource}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:111
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:86
#: lib/web/templates/email/activity/_resource_activity_item.text.eex:45
msgid "%{profile} deleted the resource %{resource}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.html.heex:56
#: lib/web/templates/email/activity/_member_activity_item.html.heex:42
#: lib/web/templates/email/activity/_member_activity_item.text.eex:39
msgid "%{profile} excluded member %{member}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:71
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:58
#: lib/web/templates/email/activity/_resource_activity_item.text.eex:28
msgid "%{profile} moved the folder %{resource}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:86
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:68
#: lib/web/templates/email/activity/_resource_activity_item.text.eex:34
msgid "%{profile} moved the resource %{resource}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.html.heex:64
#: lib/web/templates/email/activity/_member_activity_item.html.heex:48
#: lib/web/templates/email/activity/_member_activity_item.text.eex:45
msgid "%{profile} quit the group."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:32
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:19
#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:13
msgid "%{profile} renamed the discussion %{discussion}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:37
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:26
#: lib/web/templates/email/activity/_resource_activity_item.text.eex:14
msgid "%{profile} renamed the folder from %{old_resource_title} to %{resource}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:53
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:41
#: lib/web/templates/email/activity/_resource_activity_item.text.eex:21
msgid "%{profile} renamed the resource from %{old_resource_title} to %{resource}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:18
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:11
#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:7
msgid "%{profile} replied to the discussion %{discussion}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_group_activity_item.html.heex:19
#: lib/web/templates/email/activity/_group_activity_item.html.heex:13
#: lib/web/templates/email/activity/_group_activity_item.text.eex:7
msgid "%{profile} updated the group %{group}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.html.heex:48
#: lib/web/templates/email/activity/_member_activity_item.html.heex:36
#: lib/web/templates/email/activity/_member_activity_item.text.eex:33
msgid "%{profile} updated the member %{member}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/service/activity/renderer/event.ex:23
#: lib/web/templates/email/activity/_event_activity_item.html.heex:4
#: lib/web/templates/email/activity/_event_activity_item.html.heex:3
#: lib/web/templates/email/activity/_event_activity_item.text.eex:1
msgid "The event %{event} was created by %{profile}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/service/activity/renderer/event.ex:43
#: lib/web/templates/email/activity/_event_activity_item.html.heex:34
#: lib/web/templates/email/activity/_event_activity_item.html.heex:23
#: lib/web/templates/email/activity/_event_activity_item.text.eex:13
msgid "The event %{event} was deleted by %{profile}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/service/activity/renderer/event.ex:33
#: lib/web/templates/email/activity/_event_activity_item.html.heex:19
#: lib/web/templates/email/activity/_event_activity_item.html.heex:13
#: lib/web/templates/email/activity/_event_activity_item.text.eex:7
msgid "The event %{event} was updated by %{profile}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_post_activity_item.html.heex:4
#: lib/web/templates/email/activity/_post_activity_item.html.heex:3
#: lib/web/templates/email/activity/_post_activity_item.text.eex:1
msgid "The post %{post} was created by %{profile}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_post_activity_item.html.heex:34
#: lib/web/templates/email/activity/_post_activity_item.html.heex:23
#: lib/web/templates/email/activity/_post_activity_item.text.eex:13
msgid "The post %{post} was deleted by %{profile}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_post_activity_item.html.heex:19
#: lib/web/templates/email/activity/_post_activity_item.html.heex:13
#: lib/web/templates/email/activity/_post_activity_item.text.eex:7
msgid "The post %{post} was updated by %{profile}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.html.heex:33
#: lib/web/templates/email/activity/_member_activity_item.html.heex:24
#: lib/web/templates/email/activity/_member_activity_item.text.eex:22
msgid "%{member} joined the group."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/service/activity/renderer/event.ex:63
#: lib/web/templates/email/activity/_event_activity_item.html.heex:58
#: lib/web/templates/email/activity/_event_activity_item.html.heex:40
#: lib/web/templates/email/activity/_event_activity_item.text.eex:25
msgid "%{profile} posted a comment on the event %{event}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/service/activity/renderer/event.ex:54
#: lib/web/templates/email/activity/_event_activity_item.html.heex:43
#: lib/web/templates/email/activity/_event_activity_item.html.heex:30
#: lib/web/templates/email/activity/_event_activity_item.text.eex:19
msgid "%{profile} replied to a comment on the event %{event}."
msgstr ""
@ -214,7 +214,7 @@ msgid "Don't want to receive activity notifications? You may change frequency or
msgstr ""
#, elixir-format
#: lib/web/templates/email/email_direct_activity.html.heex:135
#: lib/web/templates/email/email_direct_activity.html.heex:219
#: lib/web/templates/email/email_direct_activity.text.eex:23
msgid "View one more activity"
msgid_plural "View %{count} more activities"
@ -226,8 +226,8 @@ msgstr[4] ""
msgstr[5] ""
#, elixir-format
#: lib/web/templates/email/email_direct_activity.html.heex:44
#: lib/web/templates/email/email_direct_activity.html.heex:46
#: lib/web/templates/email/email_direct_activity.html.heex:53
#: 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
msgid "There has been an activity!"
@ -246,27 +246,27 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/service/activity/renderer/comment.ex:38
#: lib/web/templates/email/activity/_comment_activity_item.html.heex:19
#: lib/web/templates/email/activity/_comment_activity_item.html.heex:13
#: lib/web/templates/email/activity/_comment_activity_item.text.eex:7
#: lib/web/templates/email/email_anonymous_activity.html.heex:41
#: lib/web/templates/email/email_anonymous_activity.html.heex:48
#: lib/web/templates/email/email_anonymous_activity.text.eex:5
msgid "%{profile} has posted an announcement under event %{event}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/service/activity/renderer/comment.ex:24
#: lib/web/templates/email/activity/_comment_activity_item.html.heex:4
#: lib/web/templates/email/activity/_comment_activity_item.html.heex:3
#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1
msgid "%{profile} mentionned you in a comment under event %{event}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/email_direct_activity.html.heex:155
#: lib/web/templates/email/email_direct_activity.html.heex:249
msgid "Don't want to receive activity notifications? You may change frequency or disable them in %{tag_start}your settings%{tag_end}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/email_direct_activity.html.heex:42
#: lib/web/templates/email/email_direct_activity.html.heex:51
#: lib/web/templates/email/email_direct_activity.text.eex:5
msgid "Here's your weekly activity recap"
msgstr ""
@ -283,7 +283,7 @@ msgid "Daily activity recap for %{instance}"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/email_direct_activity.html.heex:40
#: lib/web/templates/email/email_direct_activity.html.heex:49
#: lib/web/templates/email/email_direct_activity.text.eex:4
msgid "Here's your daily activity recap"
msgstr ""
@ -295,14 +295,14 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/service/activity/renderer/comment.ex:66
#: lib/web/templates/email/activity/_comment_activity_item.html.heex:51
#: lib/web/templates/email/activity/_comment_activity_item.html.heex:34
#: lib/web/templates/email/activity/_comment_activity_item.text.eex:19
msgid "%{profile} has posted a new comment under your event %{event}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/service/activity/renderer/comment.ex:53
#: lib/web/templates/email/activity/_comment_activity_item.html.heex:36
#: lib/web/templates/email/activity/_comment_activity_item.html.heex:24
#: lib/web/templates/email/activity/_comment_activity_item.text.eex:13
msgid "%{profile} has posted a new reply under your event %{event}."
msgstr ""

File diff suppressed because it is too large Load Diff

View File

@ -189,10 +189,10 @@ msgstr ""
#: lib/graphql/resolvers/participant.ex:210
#: lib/graphql/resolvers/person.ex:236
#: lib/graphql/resolvers/person.ex:353
#: lib/graphql/resolvers/person.ex:388
#: lib/graphql/resolvers/person.ex:395
#: lib/graphql/resolvers/person.ex:423
#: lib/graphql/resolvers/person.ex:438
#: lib/graphql/resolvers/person.ex:389
#: lib/graphql/resolvers/person.ex:396
#: lib/graphql/resolvers/person.ex:425
#: lib/graphql/resolvers/person.ex:440
msgid "Profile is not owned by authenticated user"
msgstr ""
@ -207,13 +207,13 @@ msgid "The current password is invalid"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/graphql/resolvers/admin.ex:340
#: lib/graphql/resolvers/admin.ex:334
#: lib/graphql/resolvers/user.ex:470
msgid "The new email doesn't seem to be valid"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/graphql/resolvers/admin.ex:343
#: lib/graphql/resolvers/admin.ex:337
#: lib/graphql/resolvers/user.ex:473
msgid "The new email must be different"
msgstr ""
@ -672,17 +672,17 @@ msgid "You need to be logged-in and a moderator to view a report"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/graphql/resolvers/admin.ex:256
#: lib/graphql/resolvers/admin.ex:250
msgid "You need to be logged-in and an administrator to access admin settings"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/graphql/resolvers/admin.ex:240
#: lib/graphql/resolvers/admin.ex:234
msgid "You need to be logged-in and an administrator to access dashboard statistics"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/graphql/resolvers/admin.ex:282
#: lib/graphql/resolvers/admin.ex:276
msgid "You need to be logged-in and an administrator to save admin settings"
msgstr ""
@ -974,7 +974,7 @@ msgid "Failed to update the group"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/graphql/resolvers/admin.ex:337
#: lib/graphql/resolvers/admin.ex:331
#: lib/graphql/resolvers/user.ex:467
msgid "Failed to update user email"
msgstr ""
@ -1105,22 +1105,22 @@ msgid "Your email seems to be using an invalid format"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/graphql/resolvers/admin.ex:386
#: lib/graphql/resolvers/admin.ex:380
msgid "Can't confirm an already confirmed user"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/graphql/resolvers/admin.ex:390
#: lib/graphql/resolvers/admin.ex:384
msgid "Deconfirming users is not supported"
msgstr ""
#, elixir-autogen, elixir-format, fuzzy
#: lib/graphql/resolvers/admin.ex:362
#: lib/graphql/resolvers/admin.ex:356
msgid "The new role must be different"
msgstr ""
#, elixir-autogen, elixir-format, fuzzy
#: lib/graphql/resolvers/admin.ex:313
#: lib/graphql/resolvers/admin.ex:307
msgid "You need to be logged-in and an administrator to edit an user's details"
msgstr ""
@ -1128,3 +1128,8 @@ msgstr ""
#: lib/graphql/api/groups.ex:33
msgid "A profile or group with that name already exists"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/graphql/resolvers/admin.ex:506
msgid "Unable to find an instance to follow at this address"
msgstr ""

View File

@ -12,198 +12,198 @@ msgstr ""
"Plural-Forms: nplurals=3\n"
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.html.heex:19
#: lib/web/templates/email/activity/_member_activity_item.html.heex:14
#: lib/web/templates/email/activity/_member_activity_item.text.eex:12
msgid "%{member} accepted the invitation to join the group."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.html.heex:26
#: lib/web/templates/email/activity/_member_activity_item.html.heex:19
#: lib/web/templates/email/activity/_member_activity_item.text.eex:17
msgid "%{member} rejected the invitation to join the group."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.html.heex:4
#: lib/web/templates/email/activity/_member_activity_item.html.heex:3
#: lib/web/templates/email/activity/_member_activity_item.text.eex:1
msgid "%{member} requested to join the group."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.html.heex:11
#: lib/web/templates/email/activity/_member_activity_item.html.heex:8
#: lib/web/templates/email/activity/_member_activity_item.text.eex:6
msgid "%{member} was invited by %{profile}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.html.heex:40
#: lib/web/templates/email/activity/_member_activity_item.html.heex:30
#: lib/web/templates/email/activity/_member_activity_item.text.eex:27
msgid "%{profile} added the member %{member}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:46
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:27
#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:19
msgid "%{profile} archived the discussion %{discussion}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:4
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:3
#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:1
msgid "%{profile} created the discussion %{discussion}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:5
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:4
#: lib/web/templates/email/activity/_resource_activity_item.text.eex:2
msgid "%{profile} created the folder %{resource}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_group_activity_item.html.heex:4
#: lib/web/templates/email/activity/_group_activity_item.html.heex:3
#: lib/web/templates/email/activity/_group_activity_item.text.eex:1
msgid "%{profile} created the group %{group}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:20
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:14
#: lib/web/templates/email/activity/_resource_activity_item.text.eex:8
msgid "%{profile} created the resource %{resource}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:60
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:35
#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:25
msgid "%{profile} deleted the discussion %{discussion}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:103
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:80
#: lib/web/templates/email/activity/_resource_activity_item.text.eex:40
msgid "%{profile} deleted the folder %{resource}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:111
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:86
#: lib/web/templates/email/activity/_resource_activity_item.text.eex:45
msgid "%{profile} deleted the resource %{resource}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.html.heex:56
#: lib/web/templates/email/activity/_member_activity_item.html.heex:42
#: lib/web/templates/email/activity/_member_activity_item.text.eex:39
msgid "%{profile} excluded member %{member}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:71
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:58
#: lib/web/templates/email/activity/_resource_activity_item.text.eex:28
msgid "%{profile} moved the folder %{resource}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:86
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:68
#: lib/web/templates/email/activity/_resource_activity_item.text.eex:34
msgid "%{profile} moved the resource %{resource}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.html.heex:64
#: lib/web/templates/email/activity/_member_activity_item.html.heex:48
#: lib/web/templates/email/activity/_member_activity_item.text.eex:45
msgid "%{profile} quit the group."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:32
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:19
#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:13
msgid "%{profile} renamed the discussion %{discussion}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:37
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:26
#: lib/web/templates/email/activity/_resource_activity_item.text.eex:14
msgid "%{profile} renamed the folder from %{old_resource_title} to %{resource}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:53
#: lib/web/templates/email/activity/_resource_activity_item.html.heex:41
#: lib/web/templates/email/activity/_resource_activity_item.text.eex:21
msgid "%{profile} renamed the resource from %{old_resource_title} to %{resource}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:18
#: lib/web/templates/email/activity/_discussion_activity_item.html.heex:11
#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:7
msgid "%{profile} replied to the discussion %{discussion}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_group_activity_item.html.heex:19
#: lib/web/templates/email/activity/_group_activity_item.html.heex:13
#: lib/web/templates/email/activity/_group_activity_item.text.eex:7
msgid "%{profile} updated the group %{group}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.html.heex:48
#: lib/web/templates/email/activity/_member_activity_item.html.heex:36
#: lib/web/templates/email/activity/_member_activity_item.text.eex:33
msgid "%{profile} updated the member %{member}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/service/activity/renderer/event.ex:23
#: lib/web/templates/email/activity/_event_activity_item.html.heex:4
#: lib/web/templates/email/activity/_event_activity_item.html.heex:3
#: lib/web/templates/email/activity/_event_activity_item.text.eex:1
msgid "The event %{event} was created by %{profile}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/service/activity/renderer/event.ex:43
#: lib/web/templates/email/activity/_event_activity_item.html.heex:34
#: lib/web/templates/email/activity/_event_activity_item.html.heex:23
#: lib/web/templates/email/activity/_event_activity_item.text.eex:13
msgid "The event %{event} was deleted by %{profile}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/service/activity/renderer/event.ex:33
#: lib/web/templates/email/activity/_event_activity_item.html.heex:19
#: lib/web/templates/email/activity/_event_activity_item.html.heex:13
#: lib/web/templates/email/activity/_event_activity_item.text.eex:7
msgid "The event %{event} was updated by %{profile}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_post_activity_item.html.heex:4
#: lib/web/templates/email/activity/_post_activity_item.html.heex:3
#: lib/web/templates/email/activity/_post_activity_item.text.eex:1
msgid "The post %{post} was created by %{profile}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_post_activity_item.html.heex:34
#: lib/web/templates/email/activity/_post_activity_item.html.heex:23
#: lib/web/templates/email/activity/_post_activity_item.text.eex:13
msgid "The post %{post} was deleted by %{profile}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_post_activity_item.html.heex:19
#: lib/web/templates/email/activity/_post_activity_item.html.heex:13
#: lib/web/templates/email/activity/_post_activity_item.text.eex:7
msgid "The post %{post} was updated by %{profile}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/activity/_member_activity_item.html.heex:33
#: lib/web/templates/email/activity/_member_activity_item.html.heex:24
#: lib/web/templates/email/activity/_member_activity_item.text.eex:22
msgid "%{member} joined the group."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/service/activity/renderer/event.ex:63
#: lib/web/templates/email/activity/_event_activity_item.html.heex:58
#: lib/web/templates/email/activity/_event_activity_item.html.heex:40
#: lib/web/templates/email/activity/_event_activity_item.text.eex:25
msgid "%{profile} posted a comment on the event %{event}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/service/activity/renderer/event.ex:54
#: lib/web/templates/email/activity/_event_activity_item.html.heex:43
#: lib/web/templates/email/activity/_event_activity_item.html.heex:30
#: lib/web/templates/email/activity/_event_activity_item.text.eex:19
msgid "%{profile} replied to a comment on the event %{event}."
msgstr ""
@ -214,7 +214,7 @@ msgid "Don't want to receive activity notifications? You may change frequency or
msgstr ""
#, elixir-format
#: lib/web/templates/email/email_direct_activity.html.heex:135
#: lib/web/templates/email/email_direct_activity.html.heex:219
#: lib/web/templates/email/email_direct_activity.text.eex:23
msgid "View one more activity"
msgid_plural "View %{count} more activities"
@ -223,8 +223,8 @@ msgstr[1] ""
msgstr[2] ""
#, elixir-format
#: lib/web/templates/email/email_direct_activity.html.heex:44
#: lib/web/templates/email/email_direct_activity.html.heex:46
#: lib/web/templates/email/email_direct_activity.html.heex:53
#: 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
msgid "There has been an activity!"
@ -240,27 +240,27 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/service/activity/renderer/comment.ex:38
#: lib/web/templates/email/activity/_comment_activity_item.html.heex:19
#: lib/web/templates/email/activity/_comment_activity_item.html.heex:13
#: lib/web/templates/email/activity/_comment_activity_item.text.eex:7
#: lib/web/templates/email/email_anonymous_activity.html.heex:41
#: lib/web/templates/email/email_anonymous_activity.html.heex:48
#: lib/web/templates/email/email_anonymous_activity.text.eex:5
msgid "%{profile} has posted an announcement under event %{event}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/service/activity/renderer/comment.ex:24
#: lib/web/templates/email/activity/_comment_activity_item.html.heex:4
#: lib/web/templates/email/activity/_comment_activity_item.html.heex:3
#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1
msgid "%{profile} mentionned you in a comment under event %{event}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/email_direct_activity.html.heex:155
#: lib/web/templates/email/email_direct_activity.html.heex:249
msgid "Don't want to receive activity notifications? You may change frequency or disable them in %{tag_start}your settings%{tag_end}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/email_direct_activity.html.heex:42
#: lib/web/templates/email/email_direct_activity.html.heex:51
#: lib/web/templates/email/email_direct_activity.text.eex:5
msgid "Here's your weekly activity recap"
msgstr ""
@ -277,7 +277,7 @@ msgid "Daily activity recap for %{instance}"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/web/templates/email/email_direct_activity.html.heex:40
#: lib/web/templates/email/email_direct_activity.html.heex:49
#: lib/web/templates/email/email_direct_activity.text.eex:4
msgid "Here's your daily activity recap"
msgstr ""
@ -289,14 +289,14 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/service/activity/renderer/comment.ex:66
#: lib/web/templates/email/activity/_comment_activity_item.html.heex:51
#: lib/web/templates/email/activity/_comment_activity_item.html.heex:34
#: lib/web/templates/email/activity/_comment_activity_item.text.eex:19
msgid "%{profile} has posted a new comment under your event %{event}."
msgstr ""
#, elixir-autogen, elixir-format
#: lib/service/activity/renderer/comment.ex:53
#: lib/web/templates/email/activity/_comment_activity_item.html.heex:36
#: lib/web/templates/email/activity/_comment_activity_item.html.heex:24
#: lib/web/templates/email/activity/_comment_activity_item.text.eex:13
msgid "%{profile} has posted a new reply under your event %{event}."
msgstr ""

File diff suppressed because it is too large Load Diff

View File

@ -163,10 +163,10 @@ msgstr ""
#: lib/graphql/resolvers/participant.ex:210
#: lib/graphql/resolvers/person.ex:236
#: lib/graphql/resolvers/person.ex:353
#: lib/graphql/resolvers/person.ex:388
#: lib/graphql/resolvers/person.ex:395
#: lib/graphql/resolvers/person.ex:423
#: lib/graphql/resolvers/person.ex:438
#: lib/graphql/resolvers/person.ex:389
#: lib/graphql/resolvers/person.ex:396
#: lib/graphql/resolvers/person.ex:425
#: lib/graphql/resolvers/person.ex:440
msgid "Profile is not owned by authenticated user"
msgstr ""
@ -181,13 +181,13 @@ msgid "The current password is invalid"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/graphql/resolvers/admin.ex:340
#: lib/graphql/resolvers/admin.ex:334
#: lib/graphql/resolvers/user.ex:470
msgid "The new email doesn't seem to be valid"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/graphql/resolvers/admin.ex:343
#: lib/graphql/resolvers/admin.ex:337
#: lib/graphql/resolvers/user.ex:473
msgid "The new email must be different"
msgstr ""
@ -646,17 +646,17 @@ msgid "You need to be logged-in and a moderator to view a report"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/graphql/resolvers/admin.ex:256
#: lib/graphql/resolvers/admin.ex:250
msgid "You need to be logged-in and an administrator to access admin settings"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/graphql/resolvers/admin.ex:240
#: lib/graphql/resolvers/admin.ex:234
msgid "You need to be logged-in and an administrator to access dashboard statistics"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/graphql/resolvers/admin.ex:282
#: lib/graphql/resolvers/admin.ex:276
msgid "You need to be logged-in and an administrator to save admin settings"
msgstr ""
@ -948,7 +948,7 @@ msgid "Failed to update the group"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/graphql/resolvers/admin.ex:337
#: lib/graphql/resolvers/admin.ex:331
#: lib/graphql/resolvers/user.ex:467
msgid "Failed to update user email"
msgstr ""
@ -1079,22 +1079,22 @@ msgid "Your email seems to be using an invalid format"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/graphql/resolvers/admin.ex:386
#: lib/graphql/resolvers/admin.ex:380
msgid "Can't confirm an already confirmed user"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/graphql/resolvers/admin.ex:390
#: lib/graphql/resolvers/admin.ex:384
msgid "Deconfirming users is not supported"
msgstr ""
#, elixir-autogen, elixir-format, fuzzy
#: lib/graphql/resolvers/admin.ex:362