diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 000000000..531d3cc04 --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,66 @@ +# Update the VARIANT arg in docker-compose.yml to pick an Elixir version: 1.9, 1.10, 1.10.4 +ARG VARIANT="1.12.3" +FROM elixir:${VARIANT} + +# This Dockerfile adds a non-root user with sudo access. Update the “remoteUser” property in +# devcontainer.json to use it. More info: https://aka.ms/vscode-remote/containers/non-root-user. +ARG USERNAME=vscode +ARG USER_UID=1000 +ARG USER_GID=$USER_UID + +# Options for common package install script +ARG INSTALL_ZSH="true" +ARG UPGRADE_PACKAGES="true" +ARG COMMON_SCRIPT_SOURCE="https://raw.githubusercontent.com/microsoft/vscode-dev-containers/v0.209.6/script-library/common-debian.sh" +ARG COMMON_SCRIPT_SHA="d35dd1711454156c9a59cc41ebe04fbff681ca0bd304f10fd5b13285d0de13b2" + +# Optional Settings for Phoenix +ARG PHOENIX_VERSION="1.6.2" + +# [Optional] Setup nodejs +ARG NODE_SCRIPT_SOURCE="https://raw.githubusercontent.com/microsoft/vscode-dev-containers/main/script-library/node-debian.sh" +ARG NODE_SCRIPT_SHA="dev-mode" +ARG NODE_VERSION="none" +ENV NVM_DIR=/usr/local/share/nvm +ENV NVM_SYMLINK_CURRENT=true +ENV PATH=${NVM_DIR}/current/bin:${PATH} + +# [Optional, Choice] Node.js version: none, lts/*, 16, 14, 12, 10 +ARG NODE_VERSION="none" + +# Install needed packages and setup non-root user. Use a separate RUN statement to add your own dependencies. +RUN apt-get update \ + && export DEBIAN_FRONTEND=noninteractive \ + && apt-get -y install --no-install-recommends curl ca-certificates 2>&1 \ + && curl -sSL ${COMMON_SCRIPT_SOURCE} -o /tmp/common-setup.sh \ + && ([ "${COMMON_SCRIPT_SHA}" = "dev-mode" ] || (echo "${COMMON_SCRIPT_SHA} */tmp/common-setup.sh" | sha256sum -c -)) \ + && /bin/bash /tmp/common-setup.sh "${INSTALL_ZSH}" "${USERNAME}" "${USER_UID}" "${USER_GID}" "${UPGRADE_PACKAGES}" \ + # + # [Optional] Install Node.js for use with web applications + && if [ "$NODE_VERSION" != "none" ]; then \ + curl -sSL ${NODE_SCRIPT_SOURCE} -o /tmp/node-setup.sh \ + && ([ "${NODE_SCRIPT_SHA}" = "dev-mode" ] || (echo "${NODE_SCRIPT_SHA} */tmp/node-setup.sh" | sha256sum -c -)) \ + && /bin/bash /tmp/node-setup.sh "${NVM_DIR}" "${NODE_VERSION}" "${USERNAME}"; \ + fi \ + # + # Install dependencies + && apt-get install -y build-essential \ + # + # Clean up + && apt-get autoremove -y \ + && apt-get clean -y \ + && rm -rf /var/lib/apt/lists/* /tmp/common-setup.sh /tmp/node-setup.sh + +RUN su ${USERNAME} -c "mix local.hex --force \ + && mix local.rebar --force \ + && mix archive.install --force hex phx_new ${PHOENIX_VERSION}" + +RUN apt-get update \ + && export DEBIAN_FRONTEND=noninteractive \ + && apt-get -y install --no-install-recommends cmake webp bash libncurses6 git python3 inotify-tools \ + && apt-get autoremove -y \ + && apt-get clean -y \ + && rm -rf /var/lib/apt/lists/* + +# [Optional] Uncomment this line to install additional package. +# RUN mix ... diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 000000000..7ed7bedd6 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,44 @@ +// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at: +// https://github.com/microsoft/vscode-dev-containers/tree/v0.209.6/containers/elixir-phoenix-postgres +{ + "name": "Elixir, Phoenix, Node.js & PostgresSQL (Community)", + "dockerComposeFile": "docker-compose.yml", + "service": "elixir", + "workspaceFolder": "/workspace", + + // Set *default* container specific settings.json values on container create. + "settings": { + "sqltools.connections": [{ + "name": "Container database", + "driver": "PostgreSQL", + "previewLimit": 50, + "server": "localhost", + "port": 5432, + "database": "postgres", + "username": "postgres", + "password": "postgres" + }] + }, + + // Add the IDs of extensions you want installed when the container is created. + "extensions": [ + "jakebecker.elixir-ls", + "mtxr.sqltools", + "mtxr.sqltools-driver-pg" + ], + + // Use 'forwardPorts' to make a list of ports inside the container available locally. + "forwardPorts": [4000, 4001, 5432], + + // Use 'postCreateCommand' to run commands after the container is created. + // "postCreateCommand": "mix deps.get", + // "runArgs": ["--userns=keep-id", "--privileged"], + // "containerUser": "vscode", + // "containerEnv": { + // "HOME": "/home/vscode", + // }, + // "workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind,Z", + + // Uncomment to connect as a non-root user. See https://aka.ms/vscode-remote/containers/non-root. + "remoteUser": "vscode" +} diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml new file mode 100644 index 000000000..bf922850a --- /dev/null +++ b/.devcontainer/docker-compose.yml @@ -0,0 +1,46 @@ +version: "3.8" + +services: + elixir: + build: + context: . + dockerfile: Dockerfile + args: + # Elixir Version: 1.9, 1.10, 1.10.4, ... + VARIANT: "1.13.1" + # Phoenix Version: 1.4.17, 1.5.4, ... + PHOENIX_VERSION: "1.6.6" + # Node Version: 10, 11, ... + NODE_VERSION: "16" + + volumes: + - ..:/workspace:z + # Runs app on the same network as the database container, allows "forwardPorts" in devcontainer.json function. + network_mode: service:db + + # Overrides default command so things don't shut down after the process ends. + command: sleep infinity + environment: + MOBILIZON_INSTANCE_NAME: My Mobilizon Instance + MOBILIZON_INSTANCE_HOST: localhost + MOBILIZON_INSTANCE_HOST_PORT: 4000 + MOBILIZON_INSTANCE_PORT: 4000 + MOBILIZON_INSTANCE_EMAIL: noreply@mobilizon.me + MOBILIZON_INSTANCE_REGISTRATIONS_OPEN: "true" + MOBILIZON_DATABASE_PASSWORD: postgres + MOBILIZON_DATABASE_USERNAME: postgres + MOBILIZON_DATABASE_DBNAME: mobilizon + MOBILIZON_DATABASE_HOST: db + + db: + image: postgis/postgis:latest + restart: unless-stopped + volumes: + - postgres-data:/var/lib/postgresql/data + environment: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + POSTGRES_DB: app + +volumes: + postgres-data: null diff --git a/.tool-versions b/.tool-versions new file mode 100644 index 000000000..5b280f647 --- /dev/null +++ b/.tool-versions @@ -0,0 +1,2 @@ +elixir 1.13 +erlang 24.2 diff --git a/config/config.exs b/config/config.exs index 73c3ae5d6..10a20f43f 100644 --- a/config/config.exs +++ b/config/config.exs @@ -290,6 +290,7 @@ config :mobilizon, Oban, crontab: [ {"@hourly", Mobilizon.Service.Workers.BuildSiteMap, queue: :background}, {"17 4 * * *", Mobilizon.Service.Workers.RefreshGroups, queue: :background}, + {"36 * * * *", Mobilizon.Service.Workers.RefreshInstances, queue: :background}, {"@hourly", Mobilizon.Service.Workers.CleanOrphanMediaWorker, queue: :background}, {"@hourly", Mobilizon.Service.Workers.CleanUnconfirmedUsersWorker, queue: :background}, {"@hourly", Mobilizon.Service.Workers.ExportCleanerWorker, queue: :background}, diff --git a/js/package.json b/js/package.json index b73cf3fc9..14dafc1f7 100644 --- a/js/package.json +++ b/js/package.json @@ -16,6 +16,7 @@ "@absinthe/socket-apollo-link": "^0.2.1", "@apollo/client": "^3.3.16", "@mdi/font": "^6.1.95", + "@tailwindcss/line-clamp": "^0.3.0", "@tiptap/core": "^2.0.0-beta.41", "@tiptap/extension-blockquote": "^2.0.0-beta.25", "@tiptap/extension-bold": "^2.0.0-beta.24", @@ -41,6 +42,7 @@ "@vue-a11y/skip-to": "^2.1.2", "@vue/apollo-option": "4.0.0-alpha.11", "apollo-absinthe-upload-link": "^1.5.0", + "autoprefixer": "^10", "blurhash": "^1.1.3", "buefy": "^0.9.0", "bulma-divider": "^0.2.0", @@ -57,8 +59,10 @@ "ngeohash": "^0.6.3", "p-debounce": "^4.0.0", "phoenix": "^1.6", + "postcss": "^8", "register-service-worker": "^1.7.2", "sanitize-html": "^2.5.3", + "tailwindcss": "^3", "tippy.js": "^6.2.3", "unfetch": "^4.2.0", "v-tooltip": "^2.1.3", @@ -112,6 +116,7 @@ "sass-loader": "^12.0.0", "ts-jest": "27", "typescript": "~4.4.3", + "vue-cli-plugin-tailwind": "^3.0.0-beta.0", "vue-i18n-extract": "^2.0.4", "vue-template-compiler": "^2.6.11", "webpack-cli": "^4.7.0" diff --git a/js/postcss.config.js b/js/postcss.config.js new file mode 100644 index 000000000..12a703d90 --- /dev/null +++ b/js/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +}; diff --git a/js/src/App.vue b/js/src/App.vue index 521346415..d8a7cd4df 100644 --- a/js/src/App.vue +++ b/js/src/App.vue @@ -216,7 +216,11 @@ export default class App extends Vue { // Set the focus to the router view // https://marcus.io/blog/accessible-routing-vuejs setTimeout(() => { - const focusTarget = this.routerView?.$el as HTMLElement; + const focusTarget = ( + this.routerView?.$refs?.componentFocusTarget !== undefined + ? this.routerView?.$refs?.componentFocusTarget + : this.routerView?.$el + ) as HTMLElement; if (focusTarget) { // Make focustarget programmatically focussable focusTarget.setAttribute("tabindex", "-1"); diff --git a/js/src/apollo/utils.ts b/js/src/apollo/utils.ts index 84ba969e9..07caeb405 100644 --- a/js/src/apollo/utils.ts +++ b/js/src/apollo/utils.ts @@ -70,6 +70,9 @@ export const typePolicies: TypePolicies = { participantStats: { merge: replaceMergePolicy }, }, }, + Instance: { + keyFields: ["domain"], + }, RootQueryType: { fields: { relayFollowers: paginatedLimitPagination<IFollower>(), diff --git a/js/src/assets/logo.svg b/js/src/assets/logo.svg new file mode 100644 index 000000000..32bac7d36 --- /dev/null +++ b/js/src/assets/logo.svg @@ -0,0 +1,9 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="60" height="60"> + <path style="opacity:0;fill:#fea72b;fill-opacity:1;stroke:none;stroke-opacity:0" d="M-5.801-6.164h72.69v72.871h-72.69z" /> + <g data-name="Calque 2"> + <g data-name="header"> + <path d="M26.58 27.06q0 8-4.26 12.3a12.21 12.21 0 0 1-9 3.42 12.21 12.21 0 0 1-9-3.42Q0 35.1 0 27.06q0-8.04 4.26-12.3a12.21 12.21 0 0 1 9-3.42 12.21 12.21 0 0 1 9 3.42q4.32 4.24 4.32 12.3zM13.29 17q-5.67 0-5.67 10.06t5.67 10.08q5.71 0 5.71-10.08T13.29 17z" style="fill:#3a384c;fill-opacity:1" transform="translate(14.627 5.256) scale(1.15671)" /> + <path d="M9 6.78a7.37 7.37 0 0 1-.6-3 7.37 7.37 0 0 1 .6-3A8.09 8.09 0 0 1 12.83 0a7.05 7.05 0 0 1 3.69.84 7.37 7.37 0 0 1 .6 3 7.37 7.37 0 0 1-.6 3 7.46 7.46 0 0 1-3.87.84A6.49 6.49 0 0 1 9 6.78z" style="fill:#fff" transform="translate(14.627 5.256) scale(1.15671)" /> + </g> + </g> +</svg> \ No newline at end of file diff --git a/js/src/assets/tailwind.css b/js/src/assets/tailwind.css new file mode 100644 index 000000000..7f393742a --- /dev/null +++ b/js/src/assets/tailwind.css @@ -0,0 +1,5 @@ +@tailwind base; + +@tailwind components; + +@tailwind utilities; diff --git a/js/src/common.scss b/js/src/common.scss index 65301b01b..2d882fb28 100644 --- a/js/src/common.scss +++ b/js/src/common.scss @@ -7,10 +7,6 @@ @import "styles/vue-announcer.scss"; @import "styles/vue-skip-to.scss"; -// a { -// color: $violet-2; -// } - a.out, .content a, .ProseMirror a { @@ -19,18 +15,10 @@ a.out, text-decoration-thickness: 2px; } -// input.input { -// border-color: $input-border-color !important; -// } - .section { padding: 1rem 1% 4rem; } -figure img.is-rounded { - border: 1px solid #cdcaea; -} - $color-black: #000; .mention { diff --git a/js/src/components/Account/ActorCard.vue b/js/src/components/Account/ActorCard.vue index d319bd898..7d48b4fc6 100644 --- a/js/src/components/Account/ActorCard.vue +++ b/js/src/components/Account/ActorCard.vue @@ -1,31 +1,75 @@ <template> - <div class="media" style="align-items: top" dir="auto"> - <div class="media-left"> - <figure class="image is-32x32" v-if="actor.avatar"> - <img class="is-rounded" :src="actor.avatar.url" alt="" /> + <div + class="w-80 bg-white rounded-lg shadow-md p-4 sm:p-8 flex items-center space-x-4 flex-col items-center pb-10" + > + <figure class="w-12 h-12" v-if="actor.avatar"> + <img + class="rounded-lg" + :src="actor.avatar.url" + alt="" + width="48" + height="48" + /> + </figure> + <b-icon + v-else + size="is-large" + icon="account-circle" + class="ltr:-mr-0.5 rtl:-ml-0.5" + /> + <h5 class="text-xl font-medium violet-title tracking-tight text-gray-900"> + {{ displayName(actor) }} + </h5> + <p class="text-gray-500 truncate" v-if="actor.name"> + <span dir="ltr">@{{ usernameWithDomain(actor) }}</span> + </p> + <div + v-if="full" + :class="{ 'line-clamp-3': limit }" + v-html="actor.summary" + /> + </div> + <!-- <div + class="p-4 bg-white rounded-lg shadow-md sm:p-8 flex items-center space-x-4" + dir="auto" + > + <div class="flex-shrink-0"> + <figure class="w-12 h-12" v-if="actor.avatar"> + <img + class="rounded-lg" + :src="actor.avatar.url" + alt="" + width="48" + height="48" + /> </figure> - <b-icon v-else size="is-medium" icon="account-circle" /> + <b-icon + v-else + size="is-large" + icon="account-circle" + class="ltr:-mr-0.5 rtl:-ml-0.5" + /> </div> - <div class="media-content"> - <p> - {{ actor.name || `@${usernameWithDomain(actor)}` }} - </p> - <p class="has-text-grey-dark" v-if="actor.name"> + <div class="flex-1 min-w-0"> + <h5 class="text-xl font-medium violet-title tracking-tight text-gray-900"> + {{ displayName(actor) }} + </h5> + <p class="text-gray-500 truncate" v-if="actor.name"> <span dir="ltr">@{{ usernameWithDomain(actor) }}</span> </p> <div v-if="full" - class="summary" + class="line-clamp-3" :class="{ limit: limit }" v-html="actor.summary" /> </div> - </div> + </div> --> </template> <script lang="ts"> import { Component, Vue, Prop } from "vue-property-decorator"; -import { IActor, usernameWithDomain } from "../../types/actor"; +import { displayName, IActor, usernameWithDomain } from "../../types/actor"; @Component export default class ActorCard extends Vue { @@ -38,135 +82,7 @@ export default class ActorCard extends Vue { @Prop({ required: false, type: Boolean, default: true }) limit!: boolean; usernameWithDomain = usernameWithDomain; + + displayName = displayName; } </script> -<style lang="scss" scoped> -.summary.limit { - max-width: 25rem; - display: -webkit-box; - -webkit-box-orient: vertical; - -webkit-line-clamp: 3; - overflow: hidden; -} -</style> - -<style lang="scss"> -@use "@/styles/_mixins" as *; - -.media { - .media-left { - margin-right: initial; - @include margin-right(1rem); - } -} - -.tooltip { - display: block !important; - z-index: 10000; - - .tooltip-inner { - background: black; - color: white; - border-radius: 16px; - padding: 5px 10px 4px; - } - - .tooltip-arrow { - width: 0; - height: 0; - border-style: solid; - position: absolute; - margin: 5px; - border-color: black; - z-index: 1; - } - - &[x-placement^="top"] { - margin-bottom: 5px; - - .tooltip-arrow { - border-width: 5px 5px 0 5px; - border-left-color: transparent !important; - border-right-color: transparent !important; - border-bottom-color: transparent !important; - bottom: -5px; - left: calc(50% - 5px); - margin-top: 0; - margin-bottom: 0; - } - } - - &[x-placement^="bottom"] { - margin-top: 5px; - - .tooltip-arrow { - border-width: 0 5px 5px 5px; - border-left-color: transparent !important; - border-right-color: transparent !important; - border-top-color: transparent !important; - top: -5px; - left: calc(50% - 5px); - margin-top: 0; - margin-bottom: 0; - } - } - - &[x-placement^="right"] { - @include margin-left(5px); - - .tooltip-arrow { - border-width: 5px 5px 5px 0; - border-left-color: transparent !important; - border-top-color: transparent !important; - border-bottom-color: transparent !important; - left: -5px; - top: calc(50% - 5px); - @include margin-left(0); - @include margin-right(0); - } - } - - &[x-placement^="left"] { - @include margin-right(5px); - - .tooltip-arrow { - border-width: 5px 0 5px 5px; - border-top-color: transparent !important; - border-right-color: transparent !important; - border-bottom-color: transparent !important; - right: -5px; - top: calc(50% - 5px); - @include margin-left(0); - @include margin-right(0); - } - } - - &.popover { - $color: #f9f9f9; - - .popover-inner { - background: lighten($background-color, 65%); - color: black; - padding: 24px; - border-radius: 5px; - box-shadow: 0 5px 30px rgba(black, 0.1); - } - - .popover-arrow { - border-color: $color; - } - } - - &[aria-hidden="true"] { - visibility: hidden; - opacity: 0; - transition: opacity 0.15s, visibility 0.15s; - } - - &[aria-hidden="false"] { - visibility: visible; - opacity: 1; - transition: opacity 0.15s; - } -} -</style> diff --git a/js/src/components/Admin/Followers.vue b/js/src/components/Admin/Followers.vue deleted file mode 100644 index d05b6d606..000000000 --- a/js/src/components/Admin/Followers.vue +++ /dev/null @@ -1,262 +0,0 @@ -<template> - <div> - <b-table - v-show="relayFollowers.elements.length > 0" - :data="relayFollowers.elements" - :loading="$apollo.queries.relayFollowers.loading" - ref="table" - :checked-rows.sync="checkedRows" - detailed - :show-detail-icon="false" - paginated - backend-pagination - :current-page.sync="page" - :aria-next-label="$t('Next page')" - :aria-previous-label="$t('Previous page')" - :aria-page-label="$t('Page')" - :aria-current-label="$t('Current page')" - :total="relayFollowers.total" - :per-page="FOLLOWERS_PER_PAGE" - @page-change="onFollowersPageChange" - checkable - checkbox-position="left" - > - <b-table-column - field="actor.id" - label="ID" - width="40" - numeric - v-slot="props" - >{{ props.row.actor.id }}</b-table-column - > - - <b-table-column - field="actor.type" - :label="$t('Type')" - width="80" - v-slot="props" - > - <b-icon icon="lan" v-if="RelayMixin.isInstance(props.row.actor)" /> - <b-icon icon="account-circle" v-else /> - </b-table-column> - - <b-table-column - field="approved" - :label="$t('Status')" - width="100" - sortable - centered - v-slot="props" - > - <span - :class="`tag ${props.row.approved ? 'is-success' : 'is-danger'}`" - >{{ props.row.approved ? $t("Accepted") : $t("Pending") }}</span - > - </b-table-column> - - <b-table-column field="actor.domain" :label="$t('Domain')" sortable> - <template v-slot:default="props"> - <a - @click="toggle(props.row)" - v-if="RelayMixin.isInstance(props.row.actor)" - >{{ props.row.actor.domain }}</a - > - <a @click="toggle(props.row)" v-else>{{ - `${props.row.actor.preferredUsername}@${props.row.actor.domain}` - }}</a> - </template> - </b-table-column> - - <b-table-column - field="targetActor.updatedAt" - :label="$t('Date')" - sortable - v-slot="props" - > - <span - :title="$options.filters.formatDateTimeString(props.row.updatedAt)" - >{{ - formatDistanceToNow(new Date(props.row.updatedAt), { - locale: $dateFnsLocale, - }) - }}</span - ></b-table-column - > - - <template #detail="props"> - <article> - <div class="content"> - <strong>{{ props.row.actor.name }}</strong> - <small v-if="props.row.actor.preferredUsername !== 'relay'" - >@{{ props.row.actor.preferredUsername }}</small - > - <p v-html="props.row.actor.summary" /> - </div> - </article> - </template> - - <template slot="bottom-left" v-if="checkedRows.length > 0"> - <div class="buttons"> - <b-button - @click="acceptRelays" - type="is-success" - v-if="checkedRowsHaveAtLeastOneToApprove" - > - {{ - $tc( - "No instance to approve|Approve instance|Approve {number} instances", - checkedRows.length, - { number: checkedRows.length } - ) - }} - </b-button> - <b-button @click="rejectRelays" type="is-danger"> - {{ - $tc( - "No instance to reject|Reject instance|Reject {number} instances", - checkedRows.length, - { number: checkedRows.length } - ) - }} - </b-button> - </div> - </template> - </b-table> - <b-message type="is-danger" v-if="relayFollowers.elements.length === 0">{{ - $t("No instance follows your instance yet.") - }}</b-message> - </div> -</template> -<script lang="ts"> -import { Component, Mixins } from "vue-property-decorator"; -import { SnackbarProgrammatic as Snackbar } from "buefy"; -import { formatDistanceToNow } from "date-fns"; -import { - ACCEPT_RELAY, - REJECT_RELAY, - RELAY_FOLLOWERS, -} from "../../graphql/admin"; -import { IFollower } from "../../types/actor/follower.model"; -import RelayMixin from "../../mixins/relay"; -import RouteName from "@/router/name"; -import { Paginate } from "@/types/paginate"; - -const FOLLOWERS_PER_PAGE = 10; - -@Component({ - apollo: { - relayFollowers: { - query: RELAY_FOLLOWERS, - variables() { - return { - page: this.page, - limit: FOLLOWERS_PER_PAGE, - }; - }, - }, - }, - metaInfo() { - return { - title: this.$t("Followers") as string, - titleTemplate: "%s | Mobilizon", - }; - }, -}) -export default class Followers extends Mixins(RelayMixin) { - RelayMixin = RelayMixin; - - formatDistanceToNow = formatDistanceToNow; - - relayFollowers: Paginate<IFollower> = { elements: [], total: 0 }; - - checkedRows: IFollower[] = []; - - FOLLOWERS_PER_PAGE = FOLLOWERS_PER_PAGE; - - toggle(row: Record<string, unknown>): void { - this.table.toggleDetails(row); - } - - get page(): number { - return parseInt((this.$route.query.page as string) || "1", 10); - } - - set page(page: number) { - this.pushRouter(RouteName.RELAY_FOLLOWERS, { - page: page.toString(), - }); - } - - acceptRelays(): void { - this.checkedRows.forEach((row: IFollower) => { - this.acceptRelay(`${row.actor.preferredUsername}@${row.actor.domain}`); - }); - } - - rejectRelays(): void { - this.checkedRows.forEach((row: IFollower) => { - this.rejectRelay(`${row.actor.preferredUsername}@${row.actor.domain}`); - }); - } - - async acceptRelay(address: string): Promise<void> { - try { - await this.$apollo.mutate({ - mutation: ACCEPT_RELAY, - variables: { - address, - }, - }); - await this.$apollo.queries.relayFollowers.refetch(); - this.checkedRows = []; - } catch (e: any) { - if (e.message) { - Snackbar.open({ - message: e.message, - type: "is-danger", - position: "is-bottom", - }); - } - } - } - - async rejectRelay(address: string): Promise<void> { - try { - await this.$apollo.mutate({ - mutation: REJECT_RELAY, - variables: { - address, - }, - }); - await this.$apollo.queries.relayFollowers.refetch(); - this.checkedRows = []; - } catch (e: any) { - if (e.message) { - Snackbar.open({ - message: e.message, - type: "is-danger", - position: "is-bottom", - }); - } - } - } - - get checkedRowsHaveAtLeastOneToApprove(): boolean { - return this.checkedRows.some((checkedRow) => !checkedRow.approved); - } - - async onFollowersPageChange(page: number): Promise<void> { - this.page = page; - try { - await this.$apollo.queries.relayFollowers.fetchMore({ - variables: { - page: this.page, - limit: FOLLOWERS_PER_PAGE, - }, - }); - } catch (err: any) { - console.error(err); - } - } -} -</script> diff --git a/js/src/components/Admin/Followings.vue b/js/src/components/Admin/Followings.vue deleted file mode 100644 index 6739aba01..000000000 --- a/js/src/components/Admin/Followings.vue +++ /dev/null @@ -1,311 +0,0 @@ -<template> - <div> - <form @submit="followRelay"> - <b-field - :label="$t('Add an instance')" - custom-class="add-relay" - horizontal - > - <b-field grouped expanded size="is-large"> - <p class="control"> - <b-input - v-model="newRelayAddress" - :placeholder="$t('Ex: mobilizon.fr')" - /> - </p> - <p class="control"> - <b-button type="is-primary" native-type="submit">{{ - $t("Add an instance") - }}</b-button> - </p> - </b-field> - </b-field> - </form> - <b-table - v-show="relayFollowings.elements.length > 0" - :data="relayFollowings.elements" - :loading="$apollo.queries.relayFollowings.loading" - ref="table" - :checked-rows.sync="checkedRows" - :is-row-checkable="(row) => row.id !== 3" - detailed - :show-detail-icon="false" - paginated - backend-pagination - :current-page.sync="page" - :aria-next-label="$t('Next page')" - :aria-previous-label="$t('Previous page')" - :aria-page-label="$t('Page')" - :aria-current-label="$t('Current page')" - :total="relayFollowings.total" - :per-page="FOLLOWINGS_PER_PAGE" - @page-change="onFollowingsPageChange" - checkable - checkbox-position="left" - > - <b-table-column - field="targetActor.id" - label="ID" - width="40" - numeric - v-slot="props" - >{{ props.row.targetActor.id }}</b-table-column - > - - <b-table-column - field="targetActor.type" - :label="$t('Type')" - width="80" - v-slot="props" - > - <b-icon - icon="lan" - v-if="RelayMixin.isInstance(props.row.targetActor)" - /> - <b-icon icon="account-circle" v-else /> - </b-table-column> - - <b-table-column - field="approved" - :label="$t('Status')" - width="100" - sortable - centered - v-slot="props" - > - <span - :class="`tag ${props.row.approved ? 'is-success' : 'is-danger'}`" - >{{ props.row.approved ? $t("Accepted") : $t("Pending") }}</span - > - </b-table-column> - - <b-table-column field="targetActor.domain" :label="$t('Domain')" sortable> - <template v-slot:default="props"> - <a - @click="toggle(props.row)" - v-if="RelayMixin.isInstance(props.row.targetActor)" - >{{ props.row.targetActor.domain }}</a - > - <a @click="toggle(props.row)" v-else>{{ - `${props.row.targetActor.preferredUsername}@${props.row.targetActor.domain}` - }}</a> - </template> - </b-table-column> - - <b-table-column - field="targetActor.updatedAt" - :label="$t('Date')" - sortable - v-slot="props" - > - <span - :title="$options.filters.formatDateTimeString(props.row.updatedAt)" - >{{ - formatDistanceToNow(new Date(props.row.updatedAt), { - locale: $dateFnsLocale, - }) - }}</span - ></b-table-column - > - - <template #detail="props"> - <article> - <div class="content"> - <strong>{{ props.row.targetActor.name }}</strong> - <small v-if="props.row.actor.preferredUsername !== 'relay'" - >@{{ props.row.targetActor.preferredUsername }}</small - > - <p v-html="props.row.targetActor.summary" /> - </div> - </article> - </template> - - <template slot="bottom-left" v-if="checkedRows.length > 0"> - <b-button @click="removeRelays" type="is-danger"> - {{ - $tc( - "No instance to remove|Remove instance|Remove {number} instances", - checkedRows.length, - { number: checkedRows.length } - ) - }} - </b-button> - </template> - </b-table> - <b-message type="is-danger" v-if="relayFollowings.total === 0">{{ - $t("You don't follow any instances yet.") - }}</b-message> - </div> -</template> -<script lang="ts"> -import { Component, Mixins } from "vue-property-decorator"; -import { SnackbarProgrammatic as Snackbar } from "buefy"; -import { formatDistanceToNow } from "date-fns"; -import { ADD_RELAY, REMOVE_RELAY } from "../../graphql/admin"; -import { IFollower } from "../../types/actor/follower.model"; -import RelayMixin from "../../mixins/relay"; -import { RELAY_FOLLOWINGS } from "@/graphql/admin"; -import { Paginate } from "@/types/paginate"; -import RouteName from "@/router/name"; -import { ApolloCache, FetchResult, Reference } from "@apollo/client/core"; -import gql from "graphql-tag"; - -const FOLLOWINGS_PER_PAGE = 10; - -@Component({ - apollo: { - relayFollowings: { - query: RELAY_FOLLOWINGS, - variables() { - return { - page: this.page, - limit: FOLLOWINGS_PER_PAGE, - }; - }, - }, - }, - metaInfo() { - return { - title: this.$t("Followings") as string, - titleTemplate: "%s | Mobilizon", - }; - }, -}) -export default class Followings extends Mixins(RelayMixin) { - newRelayAddress = ""; - - RelayMixin = RelayMixin; - - formatDistanceToNow = formatDistanceToNow; - - relayFollowings: Paginate<IFollower> = { elements: [], total: 0 }; - - FOLLOWINGS_PER_PAGE = FOLLOWINGS_PER_PAGE; - - checkedRows: IFollower[] = []; - - get page(): number { - return parseInt((this.$route.query.page as string) || "1", 10); - } - - set page(page: number) { - this.pushRouter(RouteName.RELAY_FOLLOWINGS, { - page: page.toString(), - }); - } - - async onFollowingsPageChange(page: number): Promise<void> { - this.page = page; - try { - await this.$apollo.queries.relayFollowings.fetchMore({ - variables: { - page: this.page, - limit: FOLLOWINGS_PER_PAGE, - }, - }); - } catch (err: any) { - console.error(err); - } - } - - async followRelay(e: Event): Promise<void> { - e.preventDefault(); - try { - await this.$apollo.mutate<{ relayFollowings: Paginate<IFollower> }>({ - mutation: ADD_RELAY, - variables: { - address: this.newRelayAddress.trim(), // trim to fix copy and paste domain name spaces and tabs - }, - update( - cache: ApolloCache<{ relayFollowings: Paginate<IFollower> }>, - { data }: FetchResult - ) { - cache.modify({ - fields: { - relayFollowings( - existingFollowings = { elements: [], total: 0 }, - { readField } - ) { - const newFollowingRef = cache.writeFragment({ - id: `${data?.addRelay.__typename}:${data?.addRelay.id}`, - data: data?.addRelay, - fragment: gql` - fragment NewFollowing on Follower { - id - } - `, - }); - if ( - existingFollowings.elements.some( - (ref: Reference) => - readField("id", ref) === data?.addRelay.id - ) - ) { - return existingFollowings; - } - return { - total: existingFollowings.total + 1, - elements: [newFollowingRef, ...existingFollowings.elements], - }; - }, - }, - broadcast: false, - }); - }, - }); - this.newRelayAddress = ""; - } catch (err: any) { - if (err.message) { - Snackbar.open({ - message: err.message, - type: "is-danger", - position: "is-bottom", - }); - } - } - } - - removeRelays(): void { - this.checkedRows.forEach((row: IFollower) => { - this.removeRelay(row); - }); - } - - async removeRelay(follower: IFollower): Promise<void> { - const address = `${follower.targetActor.preferredUsername}@${follower.targetActor.domain}`; - try { - await this.$apollo.mutate<{ removeRelay: IFollower }>({ - mutation: REMOVE_RELAY, - variables: { - address, - }, - update(cache: ApolloCache<{ removeRelay: IFollower }>) { - cache.modify({ - fields: { - relayFollowings(existingFollowingRefs, { readField }) { - return { - total: existingFollowingRefs.total - 1, - elements: existingFollowingRefs.elements.filter( - (followingRef: Reference) => - follower.id !== readField("id", followingRef) - ), - }; - }, - }, - }); - }, - }); - await this.$apollo.queries.relayFollowings.refetch(); - this.checkedRows = []; - } catch (e: any) { - if (e.message) { - Snackbar.open({ - message: e.message, - type: "is-danger", - position: "is-bottom", - }); - } - } - } -} -</script> diff --git a/js/src/components/Event/EventMetadataSidebar.vue b/js/src/components/Event/EventMetadataSidebar.vue index 19be9ab3a..7964d99d0 100644 --- a/js/src/components/Event/EventMetadataSidebar.vue +++ b/js/src/components/Event/EventMetadataSidebar.vue @@ -34,12 +34,6 @@ class="metadata-organized-by" :title="$t('Organized by')" > - <popover-actor-card - :actor="event.organizerActor" - v-if="!event.attributedTo" - > - <actor-card :actor="event.organizerActor" /> - </popover-actor-card> <router-link v-if="event.attributedTo" :to="{ @@ -49,23 +43,19 @@ }, }" > - <popover-actor-card - :actor="event.attributedTo" + <actor-card v-if=" !event.attributedTo || !event.options.hideOrganizerWhenGroupEvent " - > - <actor-card :actor="event.attributedTo" /> - </popover-actor-card> + :actor="event.attributedTo" + /> + <actor-card v-else :actor="event.organizerActor" /> </router-link> - - <popover-actor-card + <actor-card :actor="contact" v-for="contact in event.contacts" :key="contact.id" - > - <actor-card :actor="contact" /> - </popover-actor-card> + /> </event-metadata-block> <event-metadata-block v-if="event.onlineAddress && urlToHostname(event.onlineAddress)" diff --git a/js/src/components/Settings/SettingsMenu.vue b/js/src/components/Settings/SettingsMenu.vue index bbf96cdcb..3be7a96ad 100644 --- a/js/src/components/Settings/SettingsMenu.vue +++ b/js/src/components/Settings/SettingsMenu.vue @@ -78,7 +78,7 @@ /> <SettingMenuItem :title="$t('Federation')" - :to="{ name: RouteName.RELAYS }" + :to="{ name: RouteName.INSTANCES }" /> </SettingMenuSection> </ul> diff --git a/js/src/components/Utils/Breadcrumbs.vue b/js/src/components/Utils/Breadcrumbs.vue new file mode 100644 index 000000000..8122314a3 --- /dev/null +++ b/js/src/components/Utils/Breadcrumbs.vue @@ -0,0 +1,69 @@ +<template> + <nav class="flex mb-3" :aria-label="$t('Breadcrumbs')"> + <ol class="inline-flex items-center space-x-1 md:space-x-3 flex-wrap"> + <li + class="inline-flex items-center" + v-for="(element, index) in links" + :key="index" + :aria-current="index > 0 ? 'page' : undefined" + > + <router-link + v-if="index === 0" + :to="element" + class="inline-flex items-center text-gray-800 hover:text-gray-900" + > + {{ element.text }} + </router-link> + <div class="flex items-center" v-else-if="index === links.length - 1"> + <svg + class="w-6 h-6 text-gray-400 rtl:rotate-180" + fill="currentColor" + viewBox="0 0 20 20" + xmlns="http://www.w3.org/2000/svg" + > + <path + fill-rule="evenodd" + d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" + clip-rule="evenodd" + ></path> + </svg> + <span + class="ltr:ml-1 rtl:mr-1 font-medium text-gray-600 md:ltr:ml-2 md:rtl:mr-2" + >{{ element.text }}</span + > + </div> + <div class="flex items-center" v-else> + <svg + class="w-6 h-6 text-gray-400 rtl:rotate-180" + fill="currentColor" + viewBox="0 0 20 20" + xmlns="http://www.w3.org/2000/svg" + > + <path + fill-rule="evenodd" + d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" + clip-rule="evenodd" + ></path> + </svg> + <router-link + :to="element" + class="ltr:ml-1 rtl:mr-1 font-medium text-gray-800 hover:text-gray-900 md:ltr:ml-2 md:rtl:mr-2" + >{{ element.text }}</router-link + > + </div> + </li> + <slot></slot> + </ol> + </nav> +</template> +<script lang="ts"> +import { Component, Prop, Vue } from "vue-property-decorator"; +import { Location } from "vue-router"; + +type LinkElement = Location & { text: string }; + +@Component +export default class Breadcrumbs extends Vue { + @Prop({ type: Array, required: true }) links!: LinkElement[]; +} +</script> diff --git a/js/src/graphql/admin.ts b/js/src/graphql/admin.ts index acb3f73b1..db6c473e9 100644 --- a/js/src/graphql/admin.ts +++ b/js/src/graphql/admin.ts @@ -70,6 +70,67 @@ export const RELAY_FOLLOWINGS = gql` ${RELAY_FRAGMENT} `; +export const INSTANCE_FRAGMENT = gql` + fragment InstanceFragment on Instance { + domain + hasRelay + followerStatus + followedStatus + eventCount + personCount + groupCount + followersCount + followingsCount + reportsCount + mediaSize + } +`; + +export const INSTANCE = gql` + query instance($domain: ID!) { + instance(domain: $domain) { + ...InstanceFragment + } + } + ${INSTANCE_FRAGMENT} +`; + +export const INSTANCES = gql` + query Instances( + $page: Int + $limit: Int + $orderBy: InstancesSortFields + $direction: String + $filterDomain: String + $filterFollowStatus: InstanceFilterFollowStatus + $filterSuspendStatus: InstanceFilterSuspendStatus + ) { + instances( + page: $page + limit: $limit + orderBy: $orderBy + direction: $direction + filterDomain: $filterDomain + filterFollowStatus: $filterFollowStatus + filterSuspendStatus: $filterSuspendStatus + ) { + total + elements { + ...InstanceFragment + } + } + } + ${INSTANCE_FRAGMENT} +`; +export const ADD_INSTANCE = gql` + mutation addInstance($domain: String!) { + addInstance(domain: $domain) { + ...InstanceFragment + } + } + ${INSTANCE_FRAGMENT} +`; + export const ADD_RELAY = gql` mutation addRelay($address: String!) { addRelay(address: $address) { @@ -190,3 +251,26 @@ export const SAVE_ADMIN_SETTINGS = gql` } ${ADMIN_SETTINGS_FRAGMENT} `; + +export const ADMIN_UPDATE_USER = gql` + mutation AdminUpdateUser( + $id: ID! + $email: String + $role: UserRole + $confirmed: Boolean + $notify: Boolean + ) { + adminUpdateUser( + id: $id + email: $email + role: $role + confirmed: $confirmed + notify: $notify + ) { + id + email + role + confirmedAt + } + } +`; diff --git a/js/src/graphql/report.ts b/js/src/graphql/report.ts index 3fcffe8e8..d25436182 100644 --- a/js/src/graphql/report.ts +++ b/js/src/graphql/report.ts @@ -2,8 +2,13 @@ import gql from "graphql-tag"; import { ACTOR_FRAGMENT } from "./actor"; export const REPORTS = gql` - query Reports($status: ReportStatus, $page: Int, $limit: Int) { - reports(status: $status, page: $page, limit: $limit) { + query Reports( + $status: ReportStatus + $domain: String + $page: Int + $limit: Int + ) { + reports(status: $status, domain: $domain, page: $page, limit: $limit) { total elements { id diff --git a/js/src/graphql/user.ts b/js/src/graphql/user.ts index 8d0a8bce9..6c9c1bb9b 100644 --- a/js/src/graphql/user.ts +++ b/js/src/graphql/user.ts @@ -209,14 +209,30 @@ export const UPDATE_ACTIVITY_SETTING = gql` `; export const LIST_USERS = gql` - query ListUsers($email: String, $page: Int, $limit: Int) { - users(email: $email, page: $page, limit: $limit) { + query ListUsers( + $email: String + $currentSignInIp: String + $page: Int + $limit: Int + $sort: SortableUserField + $direction: SortDirection + ) { + users( + email: $email + currentSignInIp: $currentSignInIp + page: $page + limit: $limit + sort: $sort + direction: $direction + ) { total elements { id email locale confirmedAt + currentSignInIp + currentSignInAt disabled actors { ...ActorFragment diff --git a/js/src/i18n/en_US.json b/js/src/i18n/en_US.json index d6ead134b..d2ba98d19 100644 --- a/js/src/i18n/en_US.json +++ b/js/src/i18n/en_US.json @@ -1260,5 +1260,52 @@ "This profile was not found": "This profile was not found", "Back to profile list": "Back to profile list", "This user was not found": "This user was not found", - "Back to user list": "Back to user list" + "Back to user list": "Back to user list", + "Stop following instance": "Stop following instance", + "Follow instance": "Follow instance", + "Accept follow": "Accept follow", + "Reject follow": "Reject follow", + "This instance doesn't follow yours.": "This instance doesn't follow yours.", + "Only Mobilizon instances can be followed": "", + "Follow a new instance": "Follow a new instance", + "Follow status": "Follow status", + "All": "All", + "Following": "Following", + "Followed": "Followed", + "Followed, pending response": "Followed, pending response", + "Follows us": "Follows us", + "Follows us, pending approval": "Follows us, pending approval", + "No instance found.": "No instance found.", + "No instances match this filter. Try resetting filter fields?": "No instances match this filter. Try resetting filter fields?", + "You haven't interacted with other instances yet.": "You haven't interacted with other instances yet.", + "mobilizon-instance.tld": "mobilizon-instance.tld", + "Report status": "Report status", + "access the corresponding account": "access the corresponding account", + "Organized events": "Organized events", + "Memberships": "Memberships", + "This profile is located on this instance, so you need to {access_the_corresponding_account} to suspend it.": "This profile is located on this instance, so you need to {access_the_corresponding_account} to suspend it.", + "Total number of participations": "Total number of participations", + "Uploaded media total size": "Uploaded media total size", + "0 Bytes": "0 Bytes", + "Change email": "Change email", + "Confirm user": "Confirm user", + "Change role": "Change role", + "The user has been disabled": "The user has been disabled", + "This user doesn't have any profiles": "This user doesn't have any profiles", + "Edit user email": "Edit user email", + "Change user email": "Change user email", + "Previous email": "Previous email", + "Notify the user of the change": "Notify the user of the change", + "Change user role": "Change user role", + "Suspend the account?": "Suspend the account?", + "Do you really want to suspend this account? All of the user's profiles will be deleted.": "Do you really want to suspend this account? All of the user's profiles will be deleted.", + "Suspend the account": "Suspend the account", + "No user matches the filter": "No user matches the filter", + "new@email.com": "new@email.com", + "Other users with the same email domain": "Other users with the same email domain", + "Other users with the same IP address": "Other users with the same IP address", + "IP Address": "IP Address", + "Last seen on": "Last seen on", + "No user matches the filters": "No user matches the filters", + "Reset filters": "Reset filters" } diff --git a/js/src/i18n/fr_FR.json b/js/src/i18n/fr_FR.json index ff8bb1128..5e7b2ecb7 100644 --- a/js/src/i18n/fr_FR.json +++ b/js/src/i18n/fr_FR.json @@ -288,7 +288,7 @@ "Either the participation request has already been validated, either the validation token is incorrect.": "Soit la demande de participation a déjà été validée, soit le jeton de validation est incorrect.", "Element title": "Titre de l'élement", "Element value": "Valeur de l'élement", - "Email": "Email", + "Email": "Courriel", "Email address": "Adresse email", "Email validate": "Validation de l'email", "Emails usually don't contain capitals, make sure you haven't made a typo.": "Les emails ne contiennent d'ordinaire pas de capitales, assurez-vous de n'avoir pas fait de faute de frappe.", @@ -1260,5 +1260,52 @@ "{timezoneLongName} ({timezoneShortName})": "{timezoneLongName} ({timezoneShortName})", "{title} ({count} todos)": "{title} ({count} todos)", "{username} was invited to {group}": "{username} a été invité à {group}", - "© The OpenStreetMap Contributors": "© Les Contributeur⋅ices OpenStreetMap" + "© The OpenStreetMap Contributors": "© Les Contributeur⋅ices OpenStreetMap", + "Stop following instance": "Arrêter de suivre l'instance", + "Follow instance": "Suivre l'instance", + "Accept follow": "Accepter le suivi", + "Reject follow": "Rejetter le suivi", + "This instance doesn't follow yours.": "Cette instance ne suit pas la vôtre.", + "Only Mobilizon instances can be followed": "Seules les instances Mobilizon peuvent être suivies", + "Follow a new instance": "Suivre une nouvelle instance", + "Follow status": "Statut du suivi", + "All": "Toutes", + "Following": "Suivantes", + "Followed": "Suivies", + "Followed, pending response": "Suivie, en attente de la réponse", + "Follows us": "Nous suit", + "Follows us, pending approval": "Nous suit, en attente de validation", + "No instance found": "Aucune instance trouvée", + "No instances match this filter. Try resetting filter fields?": "Aucune instance ne correspond à ce filtre. Essayer de remettre à zéro les champs des filtres ?", + "You haven't interacted with other instances yet.": "Vous n'avez interagi avec encore aucune autre instance.", + "mobilizon-instance.tld": "instance-mobilizon.tld", + "Report status": "Statut du signalement", + "access the corresponding account": "accéder au compte correspondant", + "Organized events": "Événements organisés", + "Memberships": "Adhésions", + "This profile is located on this instance, so you need to {access_the_corresponding_account} to suspend it.": "Ce profil se situe sur cette instance, vous devez donc {access_the_corresponding_account} afin de le suspendre.", + "Total number of participations": "Nombre total de participations", + "Uploaded media total size": "Taille totale des médias téléversés", + "0 Bytes": "0 octets", + "Change email": "Changer l'email", + "Confirm user": "Confirmer l'utilisateur⋅ice", + "Change role": "Changer le role", + "The user has been disabled": "L'utilisateur⋅ice a été désactivé", + "This user doesn't have any profiles": "Cet utilisateur⋅ice n'a aucun profil", + "Edit user email": "Éditer l'email de l'utilisateur⋅ice", + "Change user email": "Modifier l'email de l'utilisateur⋅ice", + "Previous email": "Email précédent", + "Notify the user of the change": "Notifier l'utilisateur du changement", + "Change user role": "Changer le role de l'utilisateur", + "Suspend the account?": "Suspendre le compte ?", + "Do you really want to suspend this account? All of the user's profiles will be deleted.": "Voulez-vous vraiment suspendre ce compte ? Tous les profils de cet⋅te utilisateur⋅ice seront supprimés.", + "Suspend the account": "Suspendre le compte", + "No user matches the filter": "Aucun⋅e utilisateur⋅ice ne correspond au filtre", + "new@email.com": "nouvel@email.com", + "Other users with the same email domain": "Autres utilisateur⋅ices avec le même domaine de courriel", + "Other users with the same IP address": "Autres utilisateur⋅ices avec la même adresse IP", + "IP Address": "Adresse IP", + "Last seen on": "Vu pour la dernière fois", + "No user matches the filters": "Aucun⋅e utilisateur⋅ice ne correspond aux filtres", + "Reset filters": "Réinitialiser les filtres" } diff --git a/js/src/main.ts b/js/src/main.ts index c3e513bd6..0e6695195 100644 --- a/js/src/main.ts +++ b/js/src/main.ts @@ -12,7 +12,9 @@ import { NotifierPlugin } from "./plugins/notifier"; import filters from "./filters"; import { i18n } from "./utils/i18n"; import apolloProvider from "./vue-apollo"; +import Breadcrumbs from "@/components/Utils/Breadcrumbs.vue"; import "./registerServiceWorker"; +import "./assets/tailwind.css"; Vue.config.productionTip = false; @@ -24,6 +26,7 @@ Vue.use(VueScrollTo); Vue.use(VTooltip); Vue.use(VueAnnouncer); Vue.use(VueSkipTo); +Vue.component("breadcrumbs-nav", Breadcrumbs); // Register the router hooks with their names Component.registerHooks([ diff --git a/js/src/mixins/relay.ts b/js/src/mixins/relay.ts deleted file mode 100644 index 0289c1392..000000000 --- a/js/src/mixins/relay.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { IActor } from "@/types/actor"; -import { ActorType } from "@/types/enums"; -import { Component, Vue, Ref } from "vue-property-decorator"; -import VueRouter from "vue-router"; -const { isNavigationFailure, NavigationFailureType } = VueRouter; - -@Component -export default class RelayMixin extends Vue { - @Ref("table") readonly table!: any; - - toggle(row: Record<string, unknown>): void { - this.table.toggleDetails(row); - } - - protected async pushRouter( - routeName: string, - args: Record<string, string> - ): Promise<void> { - try { - await this.$router.push({ - name: routeName, - query: { ...this.$route.query, ...args }, - }); - } catch (e) { - if (isNavigationFailure(e, NavigationFailureType.redirected)) { - throw Error(e.toString()); - } - } - } - - static isInstance(actor: IActor): boolean { - return ( - actor.type === ActorType.APPLICATION && - (actor.preferredUsername === "relay" || - actor.preferredUsername === actor.domain) - ); - } -} diff --git a/js/src/router/settings.ts b/js/src/router/settings.ts index 29b3de00c..c71730ba0 100644 --- a/js/src/router/settings.ts +++ b/js/src/router/settings.ts @@ -11,9 +11,8 @@ export enum SettingsRouteName { ADMIN = "ADMIN", ADMIN_DASHBOARD = "ADMIN_DASHBOARD", ADMIN_SETTINGS = "ADMIN_SETTINGS", - RELAYS = "Relays", - RELAY_FOLLOWINGS = "Followings", - RELAY_FOLLOWERS = "Followers", + INSTANCES = "INSTANCES", + INSTANCE = "INSTANCE", USERS = "USERS", PROFILES = "PROFILES", ADMIN_PROFILE = "ADMIN_PROFILE", @@ -21,7 +20,7 @@ export enum SettingsRouteName { ADMIN_GROUPS = "ADMIN_GROUPS", ADMIN_GROUP_PROFILE = "ADMIN_GROUP_PROFILE", MODERATION = "MODERATION", - REPORTS = "Reports", + REPORTS = "REPORTS", REPORT = "Report", REPORT_LOGS = "Logs", CREATE_IDENTITY = "CreateIdentity", @@ -199,44 +198,35 @@ export const settingsRoutes: RouteConfig[] = [ meta: { requiredAuth: true, announcer: { skip: true } }, }, { - path: "admin/relays", - name: SettingsRouteName.RELAYS, - redirect: { name: SettingsRouteName.RELAY_FOLLOWINGS }, + path: "admin/instances", + name: SettingsRouteName.INSTANCES, component: (): Promise<ImportedComponent> => - import(/* webpackChunkName: "Follows" */ "@/views/Admin/Follows.vue"), - meta: { requiredAuth: true, announcer: { skip: true } }, - children: [ - { - path: "followings", - name: SettingsRouteName.RELAY_FOLLOWINGS, - component: (): Promise<ImportedComponent> => - import( - /* webpackChunkName: "Followings" */ "@/components/Admin/Followings.vue" - ), - meta: { - requiredAuth: true, - announcer: { - message: (): string => i18n.t("Followings") as string, - }, - }, + import( + /* webpackChunkName: "Instances" */ "@/views/Admin/Instances.vue" + ), + meta: { + requiredAuth: true, + announcer: { + message: (): string => i18n.t("Instances") as string, }, - { - path: "followers", - name: SettingsRouteName.RELAY_FOLLOWERS, - component: (): Promise<ImportedComponent> => - import( - /* webpackChunkName: "Followers" */ "@/components/Admin/Followers.vue" - ), - meta: { - requiredAuth: true, - announcer: { - message: (): string => i18n.t("Followers") as string, - }, - }, - }, - ], + }, props: true, }, + { + path: "admin/instances/:domain", + name: SettingsRouteName.INSTANCE, + component: (): Promise<ImportedComponent> => + import( + /* webpackChunkName: "Instance" */ "@/views/Admin/Instance.vue" + ), + props: true, + meta: { + requiredAuth: true, + announcer: { + message: (): string => i18n.t("Instance") as string, + }, + }, + }, { path: "/moderation", name: SettingsRouteName.MODERATION, @@ -244,7 +234,7 @@ export const settingsRoutes: RouteConfig[] = [ meta: { requiredAuth: true, announcer: { skip: true } }, }, { - path: "/moderation/reports/:filter?", + path: "/moderation/reports", name: SettingsRouteName.REPORTS, component: (): Promise<ImportedComponent> => import( diff --git a/js/src/types/enums.ts b/js/src/types/enums.ts index 34049388b..2f05bd0d0 100644 --- a/js/src/types/enums.ts +++ b/js/src/types/enums.ts @@ -276,3 +276,15 @@ export enum EventMetadataCategories { BOOKING = "BOOKING", VIDEO_CONFERENCE = "VIDEO_CONFERENCE", } + +export enum InstanceFilterFollowStatus { + ALL = "ALL", + FOLLOWING = "FOLLOWING", + FOLLOWED = "FOLLOWED", +} + +export enum InstanceFollowStatus { + APPROVED = "APPROVED", + PENDING = "PENDING", + NONE = "NONE", +} diff --git a/js/src/types/instance.model.ts b/js/src/types/instance.model.ts new file mode 100644 index 000000000..5936f6ba6 --- /dev/null +++ b/js/src/types/instance.model.ts @@ -0,0 +1,14 @@ +import { InstanceFollowStatus } from "./enums"; + +export interface IInstance { + domain: string; + hasRelay: boolean; + followerStatus: InstanceFollowStatus; + followedStatus: InstanceFollowStatus; + personCount: number; + groupCount: number; + followersCount: number; + followingsCount: number; + reportsCount: number; + mediaSize: number; +} diff --git a/js/src/utils/datetime.ts b/js/src/utils/datetime.ts index e0b3210a3..4eef7cc7f 100644 --- a/js/src/utils/datetime.ts +++ b/js/src/utils/datetime.ts @@ -19,8 +19,8 @@ function localeShortWeekDayNames(): string[] { } // https://stackoverflow.com/a/18650828/10204399 -function formatBytes(bytes: number, decimals = 2): string { - if (bytes === 0) return "0 Bytes"; +function formatBytes(bytes: number, decimals = 2, zero = "0 Bytes"): string { + if (bytes === 0) return zero; const k = 1024; const dm = decimals < 0 ? 0 : decimals; diff --git a/js/src/variables.scss b/js/src/variables.scss index 46c03bcbb..07fb0e60e 100644 --- a/js/src/variables.scss +++ b/js/src/variables.scss @@ -139,3 +139,17 @@ $subtitle-sup-size: 15px; $breadcrumb-item-color: $primary; $checkbox-background-color: #fff; $title-color: $violet-3; + +:root { + --color-primary: 30 125 151; + --color-secondary: 255 213 153; + --color-violet-title: 66 64 86; +} + +@media (prefers-color-scheme: dark) { + :root { + --color-primary: 30 125 151; + --color-secondary: 255 213 153; + --color-violet-title: 66 64 86; + } +} diff --git a/js/src/views/Account/children/EditIdentity.vue b/js/src/views/Account/children/EditIdentity.vue index 0bba7acde..d0e56dd43 100644 --- a/js/src/views/Account/children/EditIdentity.vue +++ b/js/src/views/Account/children/EditIdentity.vue @@ -1,28 +1,6 @@ <template> <div> - <nav class="breadcrumb" aria-label="breadcrumbs"> - <ul> - <li> - <router-link :to="{ name: RouteName.IDENTITIES }">{{ - $t("Profiles") - }}</router-link> - </li> - <li class="is-active" v-if="isUpdate && identity"> - <router-link - :to="{ - name: RouteName.UPDATE_IDENTITY, - params: { identityName: identity.preferredUsername }, - }" - >{{ identity.name }}</router-link - > - </li> - <li class="is-active" v-else> - <router-link :to="{ name: RouteName.CREATE_IDENTITY }">{{ - $t("New profile") - }}</router-link> - </li> - </ul> - </nav> + <breadcrumbs-nav :links="breadcrumbsLinks" /> <div class="root" v-if="identity"> <h1 class="title"> <span v-if="isUpdate">{{ identity.displayName() }}</span> @@ -253,6 +231,7 @@ import { ServerParseError } from "@apollo/client/link/http"; import { ApolloCache, FetchResult, InMemoryCache } from "@apollo/client/core"; import pick from "lodash/pick"; import { ActorType } from "@/types/enums"; +import { Location } from "vue-router"; @Component({ components: { @@ -670,5 +649,29 @@ export default class EditIdentity extends mixins(identityEditionMixin) { this.oldDisplayName = null; this.avatarFile = null; } + + get breadcrumbsLinks(): (Location & { text: string })[] { + const links = [ + { + name: RouteName.IDENTITIES, + params: {}, + text: this.$t("Profiles") as string, + }, + ]; + if (this.isUpdate && this.identity) { + links.push({ + name: RouteName.UPDATE_IDENTITY, + params: { identityName: this.identity.preferredUsername }, + text: this.identity.name, + }); + } else { + links.push({ + name: RouteName.CREATE_IDENTITY, + params: {}, + text: this.$t("New profile") as string, + }); + } + return links; + } } </script> diff --git a/js/src/views/Admin/AdminGroupProfile.vue b/js/src/views/Admin/AdminGroupProfile.vue index 43e85e879..a330a69f8 100644 --- a/js/src/views/Admin/AdminGroupProfile.vue +++ b/js/src/views/Admin/AdminGroupProfile.vue @@ -1,31 +1,19 @@ <template> <div v-if="group" class="section"> - <nav class="breadcrumb" aria-label="breadcrumbs"> - <ul> - <li> - <router-link :to="{ name: RouteName.ADMIN }">{{ - $t("Admin") - }}</router-link> - </li> - <li> - <router-link - :to="{ - name: RouteName.ADMIN_GROUPS, - }" - >{{ $t("Groups") }}</router-link - > - </li> - <li class="is-active"> - <router-link - :to="{ - name: RouteName.PROFILES, - params: { id: group.id }, - }" - >{{ group.name || usernameWithDomain(group) }}</router-link - > - </li> - </ul> - </nav> + <breadcrumbs-nav + :links="[ + { name: RouteName.ADMIN, text: $t('Admin') }, + { + name: RouteName.ADMIN_GROUPS, + text: $t('Groups'), + }, + { + name: RouteName.PROFILES, + params: { id: group.id }, + text: displayName(group), + }, + ]" + /> <div class="actor-card"> <p v-if="group.suspended"> <actor-card @@ -305,7 +293,11 @@ import { formatBytes } from "@/utils/datetime"; import { MemberRole } from "@/types/enums"; import { SUSPEND_PROFILE, UNSUSPEND_PROFILE } from "../../graphql/actor"; import { IGroup } from "../../types/actor"; -import { usernameWithDomain, IActor } from "../../types/actor/actor.model"; +import { + usernameWithDomain, + displayName, + IActor, +} from "../../types/actor/actor.model"; import RouteName from "../../router/name"; import ActorCard from "../../components/Account/ActorCard.vue"; import EmptyContent from "../../components/Utils/EmptyContent.vue"; @@ -359,6 +351,8 @@ export default class AdminGroupProfile extends Vue { usernameWithDomain = usernameWithDomain; + displayName = displayName; + RouteName = RouteName; EVENTS_PER_PAGE = EVENTS_PER_PAGE; diff --git a/js/src/views/Admin/AdminProfile.vue b/js/src/views/Admin/AdminProfile.vue index 77040c163..227cc0a88 100644 --- a/js/src/views/Admin/AdminProfile.vue +++ b/js/src/views/Admin/AdminProfile.vue @@ -1,32 +1,21 @@ <template> <div v-if="person" class="section"> - <nav class="breadcrumb" aria-label="breadcrumbs"> - <ul> - <li> - <router-link :to="{ name: RouteName.ADMIN }">{{ - $t("Admin") - }}</router-link> - </li> - <li> - <router-link - :to="{ - name: RouteName.PROFILES, - }" - >{{ $t("Profiles") }}</router-link - > - </li> - <li class="is-active"> - <router-link - :to="{ - name: RouteName.PROFILES, - params: { id: person.id }, - }" - >{{ person.name || person.preferredUsername }}</router-link - > - </li> - </ul> - </nav> - <div class="actor-card"> + <breadcrumbs-nav + :links="[ + { name: RouteName.ADMIN, text: $t('Admin') }, + { + name: RouteName.PROFILES, + text: $t('Profiles'), + }, + { + name: RouteName.PROFILES, + params: { id: person.id }, + text: displayName(person), + }, + ]" + /> + + <div class="flex justify-center"> <actor-card :actor="person" :full="true" @@ -34,41 +23,84 @@ :limit="false" /> </div> - <table v-if="metadata.length > 0" class="table is-fullwidth"> - <tbody> - <tr v-for="{ key, value, link } in metadata" :key="key"> - <td>{{ key }}</td> - <td v-if="link"> - <router-link :to="link"> - {{ value }} - </router-link> - </td> - <td v-else>{{ value }}</td> - </tr> - </tbody> - </table> - <div class="buttons"> - <b-button - @click="suspendProfile" - v-if="person.domain && !person.suspended" - type="is-primary" - >{{ $t("Suspend") }}</b-button + <section class="mt-4 mb-3"> + <h2 class="text-lg font-bold">{{ $t("Details") }}</h2> + <div class="flex flex-col"> + <div class="overflow-x-auto sm:-mx-6 lg:-mx-8"> + <div class="inline-block py-2 min-w-full sm:px-2 lg:px-8"> + <div class="overflow-hidden shadow-md sm:rounded-lg"> + <table v-if="metadata.length > 0" class="min-w-full"> + <tbody> + <tr + v-for="{ key, value, link } in metadata" + :key="key" + class="odd:bg-white even:bg-gray-50 border-b" + > + <td class="py-4 px-2 whitespace-nowrap"> + {{ key }} + </td> + <td + v-if="link" + class="py-4 px-2 text-sm text-gray-500 whitespace-nowrap" + > + <router-link :to="link"> + {{ value }} + </router-link> + </td> + <td + v-else + class="py-4 px-2 text-sm text-gray-500 whitespace-nowrap" + > + {{ value }} + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + </div> + </section> + <section class="mt-4 mb-3"> + <h2 class="text-lg font-bold">{{ $t("Actions") }}</h2> + <div class="buttons" v-if="person.domain"> + <b-button + @click="suspendProfile" + v-if="person.domain && !person.suspended" + type="is-primary" + >{{ $t("Suspend") }}</b-button + > + <b-button + @click="unsuspendProfile" + v-if="person.domain && person.suspended" + type="is-primary" + >{{ $t("Unsuspend") }}</b-button + > + </div> + <p v-else></p> + <div + v-if="person.user" + class="p-4 mb-4 text-sm text-blue-700 bg-blue-100 rounded-lg" + role="alert" > - <b-button - @click="unsuspendProfile" - v-if="person.domain && person.suspended" - type="is-primary" - >{{ $t("Unsuspend") }}</b-button - > - </div> - <section> - <h2 class="subtitle"> - {{ - $tc("{number} organized events", person.organizedEvents.total, { - number: person.organizedEvents.total, - }) - }} - </h2> + <i18n + path="This profile is located on this instance, so you need to {access_the_corresponding_account} to suspend it." + > + <template #access_the_corresponding_account> + <router-link + class="underline" + :to="{ + name: RouteName.ADMIN_USER_PROFILE, + params: { id: person.user.id }, + }" + >{{ $t("access the corresponding account") }}</router-link + > + </template> + </i18n> + </div> + </section> + <section class="mt-4 mb-3"> + <h2 class="text-lg font-bold">{{ $t("Organized events") }}</h2> <b-table :data="person.organizedEvents.elements" :loading="$apollo.queries.person.loading" @@ -104,14 +136,8 @@ </template> </b-table> </section> - <section> - <h2 class="subtitle"> - {{ - $tc("{number} participations", person.participations.total, { - number: person.participations.total, - }) - }} - </h2> + <section class="mt-4 mb-3"> + <h2 class="text-lg font-bold">{{ $t("Participations") }}</h2> <b-table :data=" person.participations.elements.map( @@ -151,14 +177,8 @@ </template> </b-table> </section> - <section> - <h2 class="subtitle"> - {{ - $tc("{number} memberships", person.memberships.total, { - number: person.memberships.total, - }) - }} - </h2> + <section class="mt-4 mb-3"> + <h2 class="text-lg font-bold">{{ $t("Memberships") }}</h2> <b-table :data="person.memberships.elements" :loading="$apollo.loading" @@ -279,7 +299,7 @@ import { UNSUSPEND_PROFILE, } from "../../graphql/actor"; import { IPerson } from "../../types/actor"; -import { usernameWithDomain } from "../../types/actor/actor.model"; +import { displayName, usernameWithDomain } from "../../types/actor/actor.model"; import RouteName from "../../router/name"; import ActorCard from "../../components/Account/ActorCard.vue"; import EmptyContent from "../../components/Utils/EmptyContent.vue"; @@ -334,6 +354,8 @@ export default class AdminProfile extends Vue { usernameWithDomain = usernameWithDomain; + displayName = displayName; + RouteName = RouteName; EVENTS_PER_PAGE = EVENTS_PER_PAGE; @@ -384,6 +406,12 @@ export default class AdminProfile extends Vue { { key: this.$t("Domain") as string, value: this.person.domain ? this.person.domain : this.$t("Local"), + link: this.person.domain + ? { + name: RouteName.INSTANCE, + params: { domain: this.person.domain }, + } + : undefined, }, { key: this.$i18n.t("Uploaded media size"), @@ -515,16 +543,3 @@ export default class AdminProfile extends Vue { } } </script> - -<style lang="scss" scoped> -table, -section { - margin: 2rem 0; -} - -.actor-card { - background: #fff; - padding: 1.5rem; - border-radius: 10px; -} -</style> diff --git a/js/src/views/Admin/AdminUserProfile.vue b/js/src/views/Admin/AdminUserProfile.vue index c4fcf3e9f..a2bd191ef 100644 --- a/js/src/views/Admin/AdminUserProfile.vue +++ b/js/src/views/Admin/AdminUserProfile.vue @@ -1,73 +1,335 @@ <template> <div v-if="user" class="section"> - <nav class="breadcrumb" aria-label="breadcrumbs"> - <ul> - <li> - <router-link :to="{ name: RouteName.ADMIN }">{{ - $t("Admin") - }}</router-link> - </li> - <li> - <router-link - :to="{ - name: RouteName.USERS, - }" - >{{ $t("Users") }}</router-link - > - </li> - <li class="is-active"> - <router-link - :to="{ - name: RouteName.ADMIN_USER_PROFILE, - params: { id: user.id }, - }" - >{{ user.email }}</router-link - > - </li> - </ul> - </nav> - <table v-if="metadata.length > 0" class="table is-fullwidth"> - <tbody> - <tr v-for="{ key, value, link, elements, type } in metadata" :key="key"> - <td>{{ key }}</td> - <td v-if="elements && elements.length > 0"> - <ul - v-for="{ value, link: elementLink, active } in elements" - :key="value" - > - <li> - <router-link :to="elementLink"> - <span v-if="active">{{ - $t("{profile} (by default)", { profile: value }) - }}</span> - <span v-else>{{ value }}</span> - </router-link> - </li> - </ul> - </td> - <td v-else-if="elements"> - {{ $t("None") }} - </td> - <td v-else-if="link"> - <router-link :to="link"> - {{ value }} - </router-link> - </td> - <td v-else-if="type == 'code'"> - <code>{{ value }}</code> - </td> - <td v-else>{{ value }}</td> - </tr> - </tbody> - </table> - <div class="buttons"> - <b-button - @click="deleteAccount" - v-if="!user.disabled" - type="is-primary" - >{{ $t("Suspend") }}</b-button + <breadcrumbs-nav + :links="[ + { name: RouteName.ADMIN, text: $t('Admin') }, + { + name: RouteName.USERS, + text: $t('Users'), + }, + { + name: RouteName.ADMIN_USER_PROFILE, + params: { id: user.id }, + text: user.email, + }, + ]" + /> + + <section> + <h2 class="text-lg font-bold mb-3">{{ $t("Details") }}</h2> + <div class="flex flex-col"> + <div class="overflow-x-auto sm:-mx-6"> + <div class="inline-block py-2 min-w-full sm:px-2"> + <div class="overflow-hidden shadow-md sm:rounded-lg"> + <table v-if="metadata.length > 0" class="min-w-full"> + <tbody> + <tr + class="odd:bg-white even:bg-gray-50 border-b" + v-for="{ key, value, link, type } in metadata" + :key="key" + > + <td class="py-4 px-2 whitespace-nowrap align-middle"> + {{ key }} + </td> + <td v-if="link" class="py-4 px-2 whitespace-nowrap"> + <router-link :to="link"> + {{ value }} + </router-link> + </td> + <td + v-else-if="type === 'ip'" + class="py-4 px-2 whitespace-nowrap" + > + <code>{{ value }}</code> + </td> + <td + v-else-if="type === 'role'" + class="py-4 px-2 whitespace-nowrap" + > + <span + :class="{ + 'bg-red-100 text-red-800': + user.role == ICurrentUserRole.ADMINISTRATOR, + 'bg-yellow-100 text-yellow-800': + user.role == ICurrentUserRole.MODERATOR, + 'bg-blue-100 text-blue-800': + user.role == ICurrentUserRole.USER, + }" + class="text-sm font-medium mr-2 px-2.5 py-0.5 rounded" + > + {{ value }} + </span> + </td> + <td v-else class="py-4 px-2 align-middle"> + {{ value }} + </td> + <td + v-if="type === 'email'" + class="py-4 px-2 whitespace-nowrap flex flex flex-col items-start" + > + <b-button + size="is-small" + v-if="!user.disabled" + @click="isEmailChangeModalActive = true" + type="is-text" + icon-left="pencil" + >{{ $t("Change email") }}</b-button + > + <b-button + tag="router-link" + :to="{ + name: RouteName.USERS, + query: { emailFilter: `@${userEmailDomain}` }, + }" + size="is-small" + type="is-text" + icon-left="magnify" + >{{ + $t("Other users with the same email domain") + }}</b-button + > + </td> + <td + v-else-if="type === 'confirmed'" + class="py-4 px-2 whitespace-nowrap flex items-center" + > + <b-button + size="is-small" + v-if="!user.confirmedAt || !user.disabled" + @click="isConfirmationModalActive = true" + type="is-text" + icon-left="check" + >{{ $t("Confirm user") }}</b-button + > + </td> + <td + v-else-if="type === 'role'" + class="py-4 px-2 whitespace-nowrap flex items-center" + > + <b-button + size="is-small" + v-if="!user.disabled" + @click="isRoleChangeModalActive = true" + type="is-text" + icon-left="chevron-double-up" + >{{ $t("Change role") }}</b-button + > + </td> + <td + v-else-if="type === 'ip' && user.currentSignInIp" + class="py-4 px-2 whitespace-nowrap flex items-center" + > + <b-button + tag="router-link" + :to="{ + name: RouteName.USERS, + query: { ipFilter: user.currentSignInIp }, + }" + size="is-small" + type="is-text" + icon-left="web" + >{{ + $t("Other users with the same IP address") + }}</b-button + > + </td> + <td v-else></td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + </div> + </section> + <section class="my-4"> + <h2 class="text-lg font-bold mb-3">{{ $t("Profiles") }}</h2> + <div + class="flex flex-wrap justify-center sm:justify-start gap-4" + v-if="profiles.length > 0" > - </div> + <router-link + v-for="profile in profiles" + :key="profile.id" + :to="{ name: RouteName.ADMIN_PROFILE, params: { id: profile.id } }" + > + <actor-card + :actor="profile" + :full="true" + :popover="false" + :limit="true" + /> + </router-link> + </div> + <empty-content v-else-if="!$apollo.loading" :inline="true" icon="account"> + {{ $t("This user doesn't have any profiles") }} + </empty-content> + </section> + <section class="my-4"> + <h2 class="text-lg font-bold mb-3">{{ $t("Actions") }}</h2> + <div class="buttons" v-if="!user.disabled"> + <b-button @click="suspendAccount" type="is-danger">{{ + $t("Suspend") + }}</b-button> + </div> + <div + v-else + class="p-4 mb-4 text-sm text-red-700 bg-red-100 rounded-lg" + role="alert" + > + {{ $t("The user has been disabled") }} + </div> + </section> + <b-modal + :active="isEmailChangeModalActive" + has-modal-card + trap-focus + :destroy-on-hide="false" + aria-role="dialog" + :aria-label="$t('Edit user email')" + :close-button-aria-label="$t('Close')" + aria-modal + > + <template> + <form @submit.prevent="updateUserEmail"> + <div class="modal-card" style="width: auto"> + <header class="modal-card-head"> + <p class="modal-card-title">{{ $t("Change user email") }}</p> + <button + type="button" + class="delete" + @click="isEmailChangeModalActive = false" + /> + </header> + <section class="modal-card-body"> + <b-field :label="$t('Previous email')"> + <b-input type="email" :value="user.email" disabled> </b-input> + </b-field> + <b-field :label="$t('New email')"> + <b-input + type="email" + v-model="newUser.email" + :placeholder="$t('new@email.com')" + required + > + </b-input> + </b-field> + <b-checkbox v-model="newUser.notify">{{ + $t("Notify the user of the change") + }}</b-checkbox> + </section> + <footer class="modal-card-foot"> + <b-button @click="isEmailChangeModalActive = false">{{ + $t("Close") + }}</b-button> + <b-button native-type="submit" type="is-primary">{{ + $t("Change email") + }}</b-button> + </footer> + </div> + </form> + </template> + </b-modal> + <b-modal + :active="isRoleChangeModalActive" + has-modal-card + trap-focus + :destroy-on-hide="false" + aria-role="dialog" + :aria-label="$t('Edit user email')" + :close-button-aria-label="$t('Close')" + aria-modal + > + <template> + <form @submit.prevent="updateUserRole"> + <div class="modal-card" style="width: auto"> + <header class="modal-card-head"> + <p class="modal-card-title">{{ $t("Change user role") }}</p> + <button + type="button" + class="delete" + @click="isRoleChangeModalActive = false" + /> + </header> + <section class="modal-card-body"> + <b-field> + <b-radio + v-model="newUser.role" + :native-value="ICurrentUserRole.ADMINISTRATOR" + > + {{ $t("Administrator") }} + </b-radio> + </b-field> + <b-field> + <b-radio + v-model="newUser.role" + :native-value="ICurrentUserRole.MODERATOR" + > + {{ $t("Moderator") }} + </b-radio> + </b-field> + <b-field> + <b-radio + v-model="newUser.role" + :native-value="ICurrentUserRole.USER" + > + {{ $t("User") }} + </b-radio> + </b-field> + <b-checkbox v-model="newUser.notify">{{ + $t("Notify the user of the change") + }}</b-checkbox> + </section> + <footer class="modal-card-foot"> + <b-button @click="isRoleChangeModalActive = false">{{ + $t("Close") + }}</b-button> + <b-button native-type="submit" type="is-primary">{{ + $t("Change role") + }}</b-button> + </footer> + </div> + </form> + </template> + </b-modal> + <b-modal + :active="isConfirmationModalActive" + has-modal-card + trap-focus + :destroy-on-hide="false" + aria-role="dialog" + :aria-label="$t('Edit user email')" + :close-button-aria-label="$t('Close')" + aria-modal + > + <template> + <form @submit.prevent="confirmUser"> + <div class="modal-card" style="width: auto"> + <header class="modal-card-head"> + <p class="modal-card-title">{{ $t("Confirm user") }}</p> + <button + type="button" + class="delete" + @click="isConfirmationModalActive = false" + /> + </header> + <section class="modal-card-body"> + <b-checkbox v-model="newUser.notify">{{ + $t("Notify the user of the change") + }}</b-checkbox> + </section> + <footer class="modal-card-foot"> + <b-button @click="isConfirmationModalActive = false">{{ + $t("Close") + }}</b-button> + <b-button native-type="submit" type="is-primary">{{ + $t("Confirm user") + }}</b-button> + </footer> + </div> + </form> + </template> + </b-modal> </div> <empty-content v-else-if="!$apollo.loading" icon="account"> {{ $t("This user was not found") }} @@ -82,16 +344,16 @@ </empty-content> </template> <script lang="ts"> -import { Component, Vue, Prop } from "vue-property-decorator"; -import { Route } from "vue-router"; +import { Component, Vue, Prop, Watch } from "vue-property-decorator"; import { formatBytes } from "@/utils/datetime"; import { ICurrentUserRole } from "@/types/enums"; import { GET_USER, SUSPEND_USER } from "../../graphql/user"; -import { usernameWithDomain } from "../../types/actor/actor.model"; +import { IActor, usernameWithDomain } from "../../types/actor/actor.model"; import RouteName from "../../router/name"; import { IUser } from "../../types/current-user.model"; -import { IPerson } from "../../types/actor"; import EmptyContent from "../../components/Utils/EmptyContent.vue"; +import ActorCard from "../../components/Account/ActorCard.vue"; +import { ADMIN_UPDATE_USER, LANGUAGES_CODES } from "@/graphql/admin"; @Component({ apollo: { @@ -107,6 +369,17 @@ import EmptyContent from "../../components/Utils/EmptyContent.vue"; return !this.id; }, }, + languages: { + query: LANGUAGES_CODES, + variables() { + return { + codes: [this.languageCode], + }; + }, + skip() { + return !this.languageCode; + }, + }, }, metaInfo() { // eslint-disable-next-line @typescript-eslint/ban-ts-comment @@ -118,6 +391,7 @@ import EmptyContent from "../../components/Utils/EmptyContent.vue"; }, components: { EmptyContent, + ActorCard, }, }) export default class AdminUserProfile extends Vue { @@ -125,24 +399,45 @@ export default class AdminUserProfile extends Vue { user!: IUser; + languages!: Array<{ code: string; name: string }>; + usernameWithDomain = usernameWithDomain; RouteName = RouteName; + ICurrentUserRole = ICurrentUserRole; + + isEmailChangeModalActive = false; + + isRoleChangeModalActive = false; + + isConfirmationModalActive = false; + + newUser = { + email: "", + role: this?.user?.role, + confirm: false, + notify: true, + }; + get metadata(): Array<Record<string, unknown>> { if (!this.user) return []; return [ { key: this.$i18n.t("Email"), value: this.user.email, + type: "email", }, { key: this.$i18n.t("Language"), - value: this.user.locale, + value: this.languages + ? this.languages[0].name + : this.$i18n.t("Unknown"), }, { key: this.$i18n.t("Role"), value: this.roleName(this.user.role), + type: "role", }, { key: this.$i18n.t("Login status"), @@ -150,26 +445,13 @@ export default class AdminUserProfile extends Vue { ? this.$i18n.t("Disabled") : this.$t("Activated"), }, - { - key: this.$i18n.t("Profiles"), - elements: this.user.actors.map((actor: IPerson) => { - return { - link: { name: RouteName.ADMIN_PROFILE, params: { id: actor.id } }, - value: actor.name - ? `${actor.name} (${actor.preferredUsername})` - : actor.preferredUsername, - active: this.user.defaultActor - ? actor.id === this.user.defaultActor.id - : false, - }; - }), - }, { key: this.$i18n.t("Confirmed"), value: this.$options.filters && this.user.confirmedAt ? this.$options.filters.formatDateTimeString(this.user.confirmedAt) : this.$i18n.t("Not confirmed"), + type: "confirmed", }, { key: this.$i18n.t("Last sign-in"), @@ -183,15 +465,19 @@ export default class AdminUserProfile extends Vue { { key: this.$i18n.t("Last IP adress"), value: this.user.currentSignInIp || this.$t("Unknown"), - type: "code", + type: this.user.currentSignInIp ? "ip" : undefined, }, { - key: this.$i18n.t("Participations"), + key: this.$i18n.t("Total number of participations"), value: this.user.participations.total, }, { - key: this.$i18n.t("Uploaded media size"), - value: formatBytes(this.user.mediaSize), + key: this.$i18n.t("Uploaded media total size"), + value: formatBytes( + this.user.mediaSize, + 2, + this.$i18n.t("0 Bytes") as string + ), }, ]; } @@ -208,20 +494,89 @@ export default class AdminUserProfile extends Vue { } } - async deleteAccount(): Promise<Route> { - await this.$apollo.mutate<{ suspendProfile: { id: string } }>({ - mutation: SUSPEND_USER, - variables: { - userId: this.id, + async suspendAccount(): Promise<void> { + this.$buefy.dialog.confirm({ + title: this.$t("Suspend the account?") as string, + message: this.$t( + "Do you really want to suspend this account? All of the user's profiles will be deleted." + ) as string, + confirmText: this.$t("Suspend the account") as string, + cancelText: this.$t("Cancel") as string, + type: "is-danger", + onConfirm: async () => { + await this.$apollo.mutate<{ suspendProfile: { id: string } }>({ + mutation: SUSPEND_USER, + variables: { + userId: this.id, + }, + }); + return this.$router.push({ name: RouteName.USERS }); }, }); - return this.$router.push({ name: RouteName.USERS }); + } + + get profiles(): IActor[] { + return this.user.actors; + } + + get languageCode(): string | undefined { + return this.user?.locale; + } + + async confirmUser() { + this.isConfirmationModalActive = false; + await this.updateUser({ + confirmed: true, + notify: this.newUser.notify, + }); + } + + async updateUserRole() { + this.isRoleChangeModalActive = false; + await this.updateUser({ + role: this.newUser.role, + notify: this.newUser.notify, + }); + } + + async updateUserEmail() { + this.isEmailChangeModalActive = false; + await this.updateUser({ + email: this.newUser.email, + notify: this.newUser.notify, + }); + } + + async updateUser(properties: { + email?: string; + notify: boolean; + confirmed?: boolean; + role?: ICurrentUserRole; + }) { + await this.$apollo.mutate<{ adminUpdateUser: IUser }>({ + mutation: ADMIN_UPDATE_USER, + variables: { + id: this.id, + ...properties, + }, + }); + } + + @Watch("user") + resetCurrentUserRole( + updatedUser: IUser | undefined, + oldUser: IUser | undefined + ) { + if (updatedUser?.role !== oldUser?.role) { + this.newUser.role = updatedUser?.role; + } + } + + get userEmailDomain(): string | undefined { + if (this?.user?.email) { + return this?.user?.email.split("@")[1]; + } + return undefined; } } </script> - -<style lang="scss" scoped> -table { - margin: 2rem 0; -} -</style> diff --git a/js/src/views/Admin/Dashboard.vue b/js/src/views/Admin/Dashboard.vue index d2894f0c1..75adc8e9f 100644 --- a/js/src/views/Admin/Dashboard.vue +++ b/js/src/views/Admin/Dashboard.vue @@ -1,19 +1,11 @@ <template> <div> - <nav class="breadcrumb" aria-label="breadcrumbs"> - <ul> - <li> - <router-link :to="{ name: RouteName.ADMIN }">{{ - $t("Admin") - }}</router-link> - </li> - <li class="is-active"> - <router-link :to="{ name: RouteName.ADMIN_DASHBOARD }">{{ - $t("Dashboard") - }}</router-link> - </li> - </ul> - </nav> + <breadcrumbs-nav + :links="[ + { name: RouteName.ADMIN, text: $t('Admin') }, + { text: $t('Dashboard') }, + ]" + /> <section> <h1 class="title">{{ $t("Administration") }}</h1> <div class="tile is-ancestor" v-if="dashboard"> diff --git a/js/src/views/Admin/Follows.vue b/js/src/views/Admin/Follows.vue deleted file mode 100644 index aae1acecd..000000000 --- a/js/src/views/Admin/Follows.vue +++ /dev/null @@ -1,116 +0,0 @@ -<template> - <div> - <nav class="breadcrumb" aria-label="breadcrumbs"> - <ul> - <li> - <router-link :to="{ name: RouteName.ADMIN }">{{ - $t("Admin") - }}</router-link> - </li> - <li> - <router-link :to="{ name: RouteName.RELAYS }">{{ - $t("Federation") - }}</router-link> - </li> - <li class="is-active" v-if="$route.name == RouteName.RELAY_FOLLOWINGS"> - <router-link :to="{ name: RouteName.RELAY_FOLLOWINGS }">{{ - $t("Followings") - }}</router-link> - </li> - <li class="is-active" v-if="$route.name == RouteName.RELAY_FOLLOWERS"> - <router-link :to="{ name: RouteName.RELAY_FOLLOWERS }">{{ - $t("Followers") - }}</router-link> - </li> - </ul> - </nav> - <section> - <h1 class="title">{{ $t("Instances") }}</h1> - <div class="tabs is-boxed"> - <ul> - <router-link - tag="li" - active-class="is-active" - :to="{ name: RouteName.RELAY_FOLLOWINGS }" - > - <a> - <b-icon icon="inbox-arrow-down"></b-icon> - <span> - {{ $t("Followings") }} - <b-tag rounded>{{ relayFollowings.total }}</b-tag> - </span> - </a> - </router-link> - <router-link - tag="li" - active-class="is-active" - :to="{ name: RouteName.RELAY_FOLLOWERS }" - > - <a> - <b-icon icon="inbox-arrow-up"></b-icon> - <span> - {{ $t("Followers") }} - <b-tag rounded>{{ relayFollowers.total }}</b-tag> - </span> - </a> - </router-link> - </ul> - </div> - <router-view></router-view> - </section> - </div> -</template> - -<script lang="ts"> -import { Component, Vue } from "vue-property-decorator"; -import { RELAY_FOLLOWERS, RELAY_FOLLOWINGS } from "@/graphql/admin"; -import { Paginate } from "@/types/paginate"; -import { IFollower } from "@/types/actor/follower.model"; -import RouteName from "../../router/name"; - -@Component({ - apollo: { - relayFollowings: { - query: RELAY_FOLLOWINGS, - fetchPolicy: "cache-and-network", - variables: { - page: 1, - limit: 10, - }, - }, - relayFollowers: { - query: RELAY_FOLLOWERS, - fetchPolicy: "cache-and-network", - variables: { - page: 1, - limit: 10, - }, - }, - }, - metaInfo() { - return { - title: this.$t("Federation") as string, - }; - }, -}) -export default class Follows extends Vue { - RouteName = RouteName; - - activeTab = 0; - - relayFollowings: Paginate<IFollower> = { elements: [], total: 0 }; - - relayFollowers: Paginate<IFollower> = { elements: [], total: 0 }; -} -</script> -<style lang="scss" scoped> -.tab-item { - form { - margin-bottom: 1.5rem; - } -} - -a { - text-decoration: none !important; -} -</style> diff --git a/js/src/views/Admin/GroupProfiles.vue b/js/src/views/Admin/GroupProfiles.vue index f6a8011c2..6b4c95173 100644 --- a/js/src/views/Admin/GroupProfiles.vue +++ b/js/src/views/Admin/GroupProfiles.vue @@ -1,19 +1,14 @@ <template> <div> - <nav class="breadcrumb" aria-label="breadcrumbs"> - <ul> - <li> - <router-link :to="{ name: RouteName.MODERATION }">{{ - $t("Moderation") - }}</router-link> - </li> - <li class="is-active"> - <router-link :to="{ name: RouteName.PROFILES }">{{ - $t("Groups") - }}</router-link> - </li> - </ul> - </nav> + <breadcrumbs-nav + :links="[ + { name: RouteName.MODERATION, text: $t('Moderation') }, + { + name: RouteName.ADMIN_GROUPS, + text: $t('Groups'), + }, + ]" + /> <div class="buttons" v-if="showCreateGroupsButton"> <router-link class="button is-primary" diff --git a/js/src/views/Admin/Instance.vue b/js/src/views/Admin/Instance.vue new file mode 100644 index 000000000..fc4801fa7 --- /dev/null +++ b/js/src/views/Admin/Instance.vue @@ -0,0 +1,246 @@ +<template> + <div v-if="instance"> + <breadcrumbs-nav + :links="[ + { name: RouteName.ADMIN, text: $t('Admin') }, + { name: RouteName.INSTANCES, text: $t('Instances') }, + { text: instance.domain }, + ]" + /> + <h1 class="text-2xl">{{ instance.domain }}</h1> + <div class="grid md:grid-cols-4 gap-2 content-center text-center mt-2"> + <div class="bg-gray-50 rounded-xl p-8"> + <router-link + :to="{ + name: RouteName.PROFILES, + query: { domain: instance.domain }, + }" + > + <span class="mb-4 text-xl font-semibold block">{{ + instance.personCount + }}</span> + <span class="text-sm block">{{ $t("Profiles") }}</span> + </router-link> + </div> + <div class="bg-gray-50 rounded-xl p-8"> + <router-link + :to="{ + name: RouteName.ADMIN_GROUPS, + query: { domain: instance.domain }, + }" + > + <span class="mb-4 text-xl font-semibold block">{{ + instance.groupCount + }}</span> + <span class="text-sm block">{{ $t("Groups") }}</span> + </router-link> + </div> + <div class="bg-gray-50 rounded-xl p-8"> + <span class="mb-4 text-xl font-semibold block">{{ + instance.followingsCount + }}</span> + <span class="text-sm block">{{ $t("Followings") }}</span> + </div> + <div class="bg-gray-50 rounded-xl p-8"> + <span class="mb-4 text-xl font-semibold block">{{ + instance.followersCount + }}</span> + <span class="text-sm block">{{ $t("Followers") }}</span> + </div> + <div class="bg-gray-50 rounded-xl p-8"> + <router-link + :to="{ name: RouteName.REPORTS, query: { domain: instance.domain } }" + > + <span class="mb-4 text-xl font-semibold block">{{ + instance.reportsCount + }}</span> + <span class="text-sm block">{{ $t("Reports") }}</span> + </router-link> + </div> + <div class="bg-gray-50 rounded-xl p-8"> + <span class="mb-4 font-semibold block">{{ + formatBytes(instance.mediaSize) + }}</span> + <span class="text-sm block">{{ $t("Uploaded media size") }}</span> + </div> + </div> + <div class="mt-3 grid md:grid-cols-2 gap-4" v-if="instance.hasRelay"> + <div class="border bg-white p-6 shadow-md rounded-md"> + <button + @click="removeInstanceFollow" + v-if="instance.followedStatus == InstanceFollowStatus.APPROVED" + class="bg-primary hover:bg-primary-700 focus:outline-none focus:ring-2 focus:ring-gray-400 focus:ring-offset-2 focus:ring-offset-gray-50 text-white hover:text-white font-semibold h-12 px-6 rounded-lg w-full flex items-center justify-center sm:w-auto" + > + {{ $t("Stop following instance") }} + </button> + <button + @click="removeInstanceFollow" + v-else-if="instance.followedStatus == InstanceFollowStatus.PENDING" + class="bg-primary hover:bg-primary-700 focus:outline-none focus:ring-2 focus:ring-gray-400 focus:ring-offset-2 focus:ring-offset-gray-50 text-white hover:text-white font-semibold h-12 px-6 rounded-lg w-full flex items-center justify-center sm:w-auto" + > + {{ $t("Cancel follow request") }} + </button> + <button + @click="followInstance" + v-else + class="bg-primary hover:bg-primary-700 focus:outline-none focus:ring-2 focus:ring-gray-400 focus:ring-offset-2 focus:ring-offset-gray-50 text-white hover:text-white font-semibold h-12 px-6 rounded-lg w-full flex items-center justify-center sm:w-auto" + > + {{ $t("Follow instance") }} + </button> + </div> + <div class="border bg-white p-6 shadow-md rounded-md"> + <button + @click="acceptInstance" + v-if="instance.followerStatus == InstanceFollowStatus.PENDING" + class="bg-green-700 hover:bg-primary-700 focus:outline-none focus:ring-2 focus:ring-gray-400 focus:ring-offset-2 focus:ring-offset-gray-50 text-white hover:text-white font-semibold h-12 px-6 rounded-lg w-full flex items-center justify-center sm:w-auto" + > + {{ $t("Accept follow") }} + </button> + <button + @click="rejectInstance" + v-else-if="instance.followerStatus != InstanceFollowStatus.NONE" + class="bg-red-700 hover:bg-primary-700 focus:outline-none focus:ring-2 focus:ring-gray-400 focus:ring-offset-2 focus:ring-offset-gray-50 text-white hover:text-white font-semibold h-12 px-6 rounded-lg w-full flex items-center justify-center sm:w-auto" + > + {{ $t("Reject follow") }} + </button> + <p v-else> + {{ $t("This instance doesn't follow yours.") }} + </p> + </div> + </div> + <div v-else class="md:h-48 py-16 text-center opacity-50"> + {{ $t("Only Mobilizon instances can be followed") }} + </div> + </div> +</template> +<script lang="ts"> +import { + ACCEPT_RELAY, + ADD_INSTANCE, + INSTANCE, + REJECT_RELAY, + REMOVE_RELAY, +} from "@/graphql/admin"; +import { Component, Prop, Vue } from "vue-property-decorator"; +import { formatBytes } from "@/utils/datetime"; +import RouteName from "@/router/name"; +import { SnackbarProgrammatic as Snackbar } from "buefy"; +import { IInstance } from "@/types/instance.model"; +import { ApolloCache, gql, Reference } from "@apollo/client/core"; +import { InstanceFollowStatus } from "@/types/enums"; + +@Component({ + apollo: { + instance: { + query: INSTANCE, + variables() { + return { + domain: this.domain, + }; + }, + }, + }, +}) +export default class Instance extends Vue { + @Prop({ type: String, required: true }) domain!: string; + + instance!: IInstance; + + InstanceFollowStatus = InstanceFollowStatus; + + formatBytes = formatBytes; + + RouteName = RouteName; + + async acceptInstance(): Promise<void> { + try { + await this.$apollo.mutate({ + mutation: ACCEPT_RELAY, + variables: { + address: `relay@${this.domain}`, + }, + }); + } catch (e: any) { + if (e.message) { + Snackbar.open({ + message: e.message, + type: "is-danger", + position: "is-bottom", + }); + } + } + } + + async rejectInstance(): Promise<void> { + try { + await this.$apollo.mutate({ + mutation: REJECT_RELAY, + variables: { + address: `relay@${this.domain}`, + }, + }); + } catch (e: any) { + if (e.message) { + Snackbar.open({ + message: e.message, + type: "is-danger", + position: "is-bottom", + }); + } + } + } + + async followInstance(e: Event): Promise<void> { + e.preventDefault(); + try { + await this.$apollo.mutate<{ addInstance: Instance }>({ + mutation: ADD_INSTANCE, + variables: { + domain: this.domain, + }, + }); + } catch (err: any) { + if (err.message) { + Snackbar.open({ + message: err.message, + type: "is-danger", + position: "is-bottom", + }); + } + } + } + + async removeInstanceFollow(): Promise<void> { + const { instance } = this; + try { + await this.$apollo.mutate({ + mutation: REMOVE_RELAY, + variables: { + address: `relay@${this.domain}`, + }, + update(cache: ApolloCache<any>) { + cache.writeFragment({ + id: cache.identify(instance as unknown as Reference), + fragment: gql` + fragment InstanceFollowedStatus on Instance { + followedStatus + } + `, + data: { + followedStatus: InstanceFollowStatus.NONE, + }, + }); + }, + }); + } catch (e: any) { + if (e.message) { + Snackbar.open({ + message: e.message, + type: "is-danger", + position: "is-bottom", + }); + } + } + } +} +</script> diff --git a/js/src/views/Admin/Instances.vue b/js/src/views/Admin/Instances.vue new file mode 100644 index 000000000..5856f5ef3 --- /dev/null +++ b/js/src/views/Admin/Instances.vue @@ -0,0 +1,293 @@ +<template> + <div> + <breadcrumbs-nav + :links="[ + { name: RouteName.ADMIN, text: $t('Admin') }, + { text: $t('Instances') }, + ]" + /> + <section> + <h1 class="title">{{ $t("Instances") }}</h1> + <form @submit="followInstance" class="my-4"> + <b-field :label="$t('Follow a new instance')" horizontal> + <b-field grouped group-multiline expanded size="is-large"> + <p class="control"> + <b-input + v-model="newRelayAddress" + :placeholder="$t('Ex: mobilizon.fr')" + /> + </p> + <p class="control"> + <b-button type="is-primary" native-type="submit">{{ + $t("Add an instance") + }}</b-button> + </p> + </b-field> + </b-field> + </form> + <div class="flex flex-wrap gap-2"> + <b-field :label="$t('Follow status')"> + <b-radio-button + v-model="followStatus" + :native-value="InstanceFilterFollowStatus.ALL" + >{{ $t("All") }}</b-radio-button + > + <b-radio-button + v-model="followStatus" + :native-value="InstanceFilterFollowStatus.FOLLOWING" + >{{ $t("Following") }}</b-radio-button + > + <b-radio-button + v-model="followStatus" + :native-value="InstanceFilterFollowStatus.FOLLOWED" + >{{ $t("Followed") }}</b-radio-button + > + </b-field> + <b-field + :label="$t('Domain')" + label-for="domain-filter" + class="flex-auto" + > + <b-input + id="domain-filter" + :placeholder="$t('mobilizon-instance.tld')" + :value="filterDomain" + @input="debouncedUpdateDomainFilter" + /> + </b-field> + </div> + <div v-if="instances && instances.elements.length > 0" class="mt-3"> + <router-link + :to="{ + name: RouteName.INSTANCE, + params: { domain: instance.domain }, + }" + class="flex items-center mb-2 rounded bg-secondary p-4 flex-wrap justify-center gap-x-2 gap-y-3" + v-for="instance in instances.elements" + :key="instance.domain" + > + <div class="grow overflow-hidden flex items-center gap-1"> + <img + class="w-12" + v-if="instance.hasRelay" + src="../../assets/logo.svg" + alt="" + /> + <b-icon + class="is-large" + v-else + custom-size="mdi-36px" + icon="cloud-question" + /> + <div class=""> + <h4 class="text-lg truncate">{{ instance.domain }}</h4> + <span + class="text-sm" + v-if="instance.followedStatus === InstanceFollowStatus.APPROVED" + > + <b-icon icon="inbox-arrow-down" /> + {{ $t("Followed") }}</span + > + <span + class="text-sm" + v-else-if=" + instance.followedStatus === InstanceFollowStatus.PENDING + " + > + <b-icon icon="inbox-arrow-down" /> + {{ $t("Followed, pending response") }}</span + > + <span + class="text-sm" + v-if="instance.followerStatus == InstanceFollowStatus.APPROVED" + > + <b-icon icon="inbox-arrow-up" /> + {{ $t("Follows us") }}</span + > + <span + class="text-sm" + v-if="instance.followerStatus == InstanceFollowStatus.PENDING" + > + <b-icon icon="inbox-arrow-up" /> + {{ $t("Follows us, pending approval") }}</span + > + </div> + </div> + <div class="flex-none flex gap-3 ltr:ml-3 rtl:mr-3"> + <p class="flex flex-col text-center"> + <span class="text-xl">{{ instance.eventCount }}</span + ><span class="text-sm">{{ $t("Events") }}</span> + </p> + <p class="flex flex-col text-center"> + <span class="text-xl">{{ instance.personCount }}</span + ><span class="text-sm">{{ $t("Profiles") }}</span> + </p> + </div> + </router-link> + </div> + <div v-else-if="instances && instances.elements.length == 0"> + <empty-content icon="lan-disconnect" :inline="true"> + {{ $t("No instance found.") }} + <template #desc> + <span v-if="hasFilter"> + {{ + $t( + "No instances match this filter. Try resetting filter fields?" + ) + }} + </span> + <span v-else> + {{ $t("You haven't interacted with other instances yet.") }} + </span> + </template> + </empty-content> + </div> + </section> + </div> +</template> + +<script lang="ts"> +import { Component, Vue } from "vue-property-decorator"; +import { ADD_INSTANCE, INSTANCES } from "@/graphql/admin"; +import { Paginate } from "@/types/paginate"; +import { IFollower } from "@/types/actor/follower.model"; +import RouteName from "../../router/name"; +import { IInstance } from "@/types/instance.model"; +import EmptyContent from "@/components/Utils/EmptyContent.vue"; +import VueRouter from "vue-router"; +import { debounce } from "lodash"; +import { + InstanceFilterFollowStatus, + InstanceFollowStatus, +} from "@/types/enums"; +import { SnackbarProgrammatic as Snackbar } from "buefy"; +const { isNavigationFailure, NavigationFailureType } = VueRouter; + +@Component({ + apollo: { + instances: { + query: INSTANCES, + fetchPolicy: "cache-and-network", + variables() { + return { + page: this.instancePage, + limit: 10, + filterDomain: this.filterDomain, + filterFollowStatus: this.followStatus, + }; + }, + }, + }, + metaInfo() { + return { + title: this.$t("Federation") as string, + }; + }, + components: { + EmptyContent, + }, +}) +export default class Follows extends Vue { + RouteName = RouteName; + + newRelayAddress = ""; + + instances!: Paginate<IInstance>; + + instancePage = 1; + + relayFollowings: Paginate<IFollower> = { elements: [], total: 0 }; + + relayFollowers: Paginate<IFollower> = { elements: [], total: 0 }; + + InstanceFilterFollowStatus = InstanceFilterFollowStatus; + + InstanceFollowStatus = InstanceFollowStatus; + + data(): Record<string, unknown> { + return { + debouncedUpdateDomainFilter: debounce(this.updateDomainFilter, 500), + }; + } + + updateDomainFilter(domain: string) { + this.filterDomain = domain; + } + + get filterDomain(): string { + return (this.$route.query.domain as string) || ""; + } + + set filterDomain(domain: string) { + this.pushRouter({ domain }); + } + + get followStatus(): InstanceFilterFollowStatus { + return ( + (this.$route.query.followStatus as InstanceFilterFollowStatus) || + InstanceFilterFollowStatus.ALL + ); + } + + set followStatus(followStatus: InstanceFilterFollowStatus) { + this.pushRouter({ followStatus }); + } + + get hasFilter(): boolean { + return ( + this.followStatus !== InstanceFilterFollowStatus.ALL || + this.filterDomain !== "" + ); + } + + async followInstance(e: Event): Promise<void> { + e.preventDefault(); + const domain = this.newRelayAddress.trim(); // trim to fix copy and paste domain name spaces and tabs + try { + await this.$apollo.mutate<{ relayFollowings: Paginate<IFollower> }>({ + mutation: ADD_INSTANCE, + variables: { + domain, + }, + }); + this.newRelayAddress = ""; + 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", + }); + } + } + } + + private async pushRouter(args: Record<string, string>): Promise<void> { + try { + await this.$router.push({ + name: RouteName.INSTANCES, + query: { ...this.$route.query, ...args }, + }); + } catch (e) { + if (isNavigationFailure(e, NavigationFailureType.redirected)) { + throw Error(e.toString()); + } + } + } +} +</script> +<style lang="scss" scoped> +.tab-item { + form { + margin-bottom: 1.5rem; + } +} + +a { + text-decoration: none !important; +} +</style> diff --git a/js/src/views/Admin/Profiles.vue b/js/src/views/Admin/Profiles.vue index 1a61483fb..cfd4f8d49 100644 --- a/js/src/views/Admin/Profiles.vue +++ b/js/src/views/Admin/Profiles.vue @@ -1,19 +1,14 @@ <template> <div> - <nav class="breadcrumb" aria-label="breadcrumbs"> - <ul> - <li> - <router-link :to="{ name: RouteName.MODERATION }">{{ - $t("Moderation") - }}</router-link> - </li> - <li class="is-active"> - <router-link :to="{ name: RouteName.PROFILES }">{{ - $t("Profiles") - }}</router-link> - </li> - </ul> - </nav> + <breadcrumbs-nav + :links="[ + { name: RouteName.MODERATION, text: $t('Moderation') }, + { + name: RouteName.PROFILES, + text: $t('Profiles'), + }, + ]" + /> <div v-if="persons"> <b-switch v-model="local">{{ $t("Local") }}</b-switch> <b-switch v-model="suspended">{{ $t("Suspended") }}</b-switch> diff --git a/js/src/views/Admin/Settings.vue b/js/src/views/Admin/Settings.vue index 9a8e8c90c..137e7907a 100644 --- a/js/src/views/Admin/Settings.vue +++ b/js/src/views/Admin/Settings.vue @@ -1,19 +1,12 @@ <template> <div> - <nav class="breadcrumb" aria-label="breadcrumbs"> - <ul> - <li> - <router-link :to="{ name: RouteName.ADMIN }">{{ - $t("Admin") - }}</router-link> - </li> - <li class="is-active"> - <router-link :to="{ name: RouteName.ADMIN_SETTINGS }">{{ - $t("Instance settings") - }}</router-link> - </li> - </ul> - </nav> + <breadcrumbs-nav + :links="[ + { name: RouteName.ADMIN, text: $t('Admin') }, + { text: $t('Instance settings') }, + ]" + /> + <section v-if="settingsToWrite"> <form @submit.prevent="updateSettings"> <b-field :label="$t('Instance Name')" label-for="instance-name"> diff --git a/js/src/views/Admin/Users.vue b/js/src/views/Admin/Users.vue index 4f7a7ca3b..70bb912ac 100644 --- a/js/src/views/Admin/Users.vue +++ b/js/src/views/Admin/Users.vue @@ -1,27 +1,36 @@ <template> <div> - <nav class="breadcrumb" aria-label="breadcrumbs"> - <ul> - <li> - <router-link :to="{ name: RouteName.MODERATION }">{{ - $t("Moderation") - }}</router-link> - </li> - <li class="is-active"> - <router-link :to="{ name: RouteName.USERS }">{{ - $t("Users") - }}</router-link> - </li> - </ul> - </nav> + <breadcrumbs-nav + :links="[ + { name: RouteName.MODERATION, text: $t('Moderation') }, + { + name: RouteName.USERS, + text: $t('Users'), + }, + ]" + /> <div v-if="users"> + <form @submit.prevent="activateFilters"> + <b-field class="mb-5" grouped group-multiline> + <b-field :label="$t('Email')" expanded> + <b-input trap-focus icon="email" v-model="emailFilterFieldValue" /> + </b-field> + <b-field :label="$t('IP Address')" expanded> + <b-input icon="web" v-model="ipFilterFieldValue" /> + </b-field> + <p class="control self-end mb-0"> + <b-button type="is-primary" native-type="submit">{{ + $t("Filter") + }}</b-button> + </p> + </b-field> + </form> <b-table :data="users.elements" :loading="$apollo.queries.users.loading" paginated backend-pagination - backend-filtering - detailed + :debounce-search="500" :current-page.sync="page" :aria-next-label="$t('Next page')" :aria-previous-label="$t('Previous page')" @@ -30,25 +39,14 @@ :show-detail-icon="true" :total="users.total" :per-page="USERS_PER_PAGE" - :has-detailed-visible="(row) => row.actors.length > 0" @page-change="onPageChange" - @filters-change="onFiltersChange" > <b-table-column field="id" width="40" numeric v-slot="props"> {{ props.row.id }} </b-table-column> - <b-table-column field="email" :label="$t('Email')" searchable> - <template #searchable="props"> - <b-input - v-model="props.filters.email" - :aria-label="$t('Filter')" - :placeholder="$t('Filter')" - icon="magnify" - /> - </template> + <b-table-column field="email" :label="$t('Email')"> <template v-slot:default="props"> <router-link - class="user-profile" :to="{ name: RouteName.ADMIN_USER_PROFILE, params: { id: props.row.id }, @@ -61,13 +59,16 @@ </b-table-column> <b-table-column field="confirmedAt" - :label="$t('Confirmed at')" + :label="$t('Last seen on')" :centered="true" v-slot="props" > - <template v-if="props.row.confirmedAt"> - {{ props.row.confirmedAt | formatDateTimeString }} + <template v-if="props.row.currentSignInAt"> + <time :datetime="props.row.currentSignInAt"> + {{ props.row.currentSignInAt | formatDateTimeString }} + </time> </template> + <template v-else-if="props.row.confirmedAt"> - </template> <template v-else> {{ $t("Not confirmed") }} </template> @@ -80,30 +81,19 @@ > {{ getLanguageNameForCode(props.row.locale) }} </b-table-column> - - <template #detail="props"> - <router-link - class="profile" - v-for="actor in props.row.actors" - :key="actor.id" - :to="{ name: RouteName.ADMIN_PROFILE, params: { id: actor.id } }" + <template #empty> + <empty-content + v-if="!$apollo.loading && emailFilter" + :inline="true" + icon="account" > - <article class="media"> - <figure class="media-left"> - <p class="image is-32x32" v-if="actor.avatar"> - <img :src="actor.avatar.url" /> - </p> - <b-icon v-else size="is-medium" icon="account-circle" /> - </figure> - <div class="media-content"> - <div class="content"> - <strong v-if="actor.name">{{ actor.name }}</strong> - <small>@{{ actor.preferredUsername }}</small> - <p>{{ actor.summary }}</p> - </div> - </div> - </article> - </router-link> + {{ $t("No user matches the filters") }} + <template #desc> + <b-button type="is-primary" @click="resetFilters"> + {{ $t("Reset filters") }} + </b-button> + </template> + </empty-content> </template> </b-table> </div> @@ -117,6 +107,7 @@ import VueRouter from "vue-router"; import { LANGUAGES_CODES } from "@/graphql/admin"; import { IUser } from "@/types/current-user.model"; import { Paginate } from "@/types/paginate"; +import EmptyContent from "../../components/Utils/EmptyContent.vue"; const { isNavigationFailure, NavigationFailureType } = VueRouter; const USERS_PER_PAGE = 10; @@ -128,7 +119,8 @@ const USERS_PER_PAGE = 10; fetchPolicy: "cache-and-network", variables() { return { - email: this.email, + email: this.emailFilter, + currentSignInIp: this.ipFilter, page: this.page, limit: USERS_PER_PAGE, }; @@ -151,6 +143,9 @@ const USERS_PER_PAGE = 10; title: this.$t("Users") as string, }; }, + components: { + EmptyContent, + }, }) export default class Users extends Vue { USERS_PER_PAGE = USERS_PER_PAGE; @@ -160,6 +155,9 @@ export default class Users extends Vue { users!: Paginate<IUser>; languages!: Array<{ code: string; name: string }>; + emailFilterFieldValue = this.emailFilter; + ipFilterFieldValue = this.ipFilter; + get page(): number { return parseInt((this.$route.query.page as string) || "1", 10); } @@ -168,12 +166,20 @@ export default class Users extends Vue { this.pushRouter({ page: page.toString() }); } - get email(): string { - return (this.$route.query.email as string) || ""; + get emailFilter(): string { + return (this.$route.query.emailFilter as string) || ""; } - set email(email: string) { - this.pushRouter({ email }); + set emailFilter(emailFilter: string) { + this.pushRouter({ emailFilter }); + } + + get ipFilter(): string { + return (this.$route.query.ipFilter as string) || ""; + } + + set ipFilter(ipFilter: string) { + this.pushRouter({ ipFilter }); } get languagesCodes(): string[] { @@ -192,15 +198,23 @@ export default class Users extends Vue { this.page = page; await this.$apollo.queries.users.fetchMore({ variables: { - email: this.email, + email: this.emailFilter, + currentSignInIp: this.ipFilter, page: this.page, limit: USERS_PER_PAGE, }, }); } - onFiltersChange({ email }: { email: string }): void { - this.email = email; + activateFilters(): void { + this.emailFilter = this.emailFilterFieldValue; + this.ipFilter = this.ipFilterFieldValue; + } + + resetFilters(): void { + this.emailFilterFieldValue = ""; + this.ipFilterFieldValue = ""; + this.activateFilters(); } private async pushRouter(args: Record<string, string>): Promise<void> { diff --git a/js/src/views/Discussions/Create.vue b/js/src/views/Discussions/Create.vue index bbcbf560a..2659ba27d 100644 --- a/js/src/views/Discussions/Create.vue +++ b/js/src/views/Discussions/Create.vue @@ -1,42 +1,29 @@ <template> <section class="section container"> - <nav class="breadcrumb" aria-label="breadcrumbs"> - <ul v-if="group"> - <li> - <router-link :to="{ name: RouteName.MY_GROUPS }">{{ - $t("My groups") - }}</router-link> - </li> - <li> - <router-link - :to="{ - name: RouteName.GROUP, - params: { preferredUsername: usernameWithDomain(group) }, - }" - >{{ group.name }}</router-link - > - </li> - <li> - <router-link - :to="{ - name: RouteName.DISCUSSION_LIST, - params: { preferredUsername: usernameWithDomain(group) }, - }" - >{{ $t("Discussions") }}</router-link - > - </li> - <li class="is-active"> - <router-link - :to="{ - name: RouteName.CREATE_DISCUSSION, - params: { preferredUsername: usernameWithDomain(group) }, - }" - >{{ $t("Create") }}</router-link - > - </li> - </ul> - <b-skeleton v-else-if="$apollo.loading" :animated="animated"></b-skeleton> - </nav> + <breadcrumbs-nav + v-if="group" + :links="[ + { + name: RouteName.MY_GROUPS, + text: $t('My groups'), + }, + { + name: RouteName.GROUP, + params: { preferredUsername: usernameWithDomain(group) }, + text: displayName(group), + }, + { + name: RouteName.DISCUSSION_LIST, + params: { preferredUsername: usernameWithDomain(group) }, + text: $t('Discussions'), + }, + { + name: RouteName.CREATE_DISCUSSION, + params: { preferredUsername: usernameWithDomain(group) }, + text: $t('Create'), + }, + ]" + /> <h1 class="title">{{ $t("Create a discussion") }}</h1> <form @submit.prevent="createDiscussion"> @@ -67,7 +54,12 @@ <script lang="ts"> import { Component, Prop, Vue } from "vue-property-decorator"; -import { IGroup, IPerson, usernameWithDomain } from "@/types/actor"; +import { + displayName, + IGroup, + IPerson, + usernameWithDomain, +} from "@/types/actor"; import { CURRENT_ACTOR_CLIENT } from "@/graphql/actor"; import { FETCH_GROUP } from "@/graphql/group"; import { CREATE_DISCUSSION } from "@/graphql/discussion"; @@ -113,6 +105,8 @@ export default class CreateDiscussion extends Vue { usernameWithDomain = usernameWithDomain; + displayName = displayName; + async createDiscussion(): Promise<void> { this.errors = { title: "" }; try { diff --git a/js/src/views/Discussions/Discussion.vue b/js/src/views/Discussions/Discussion.vue index b61457dc7..b693b903c 100644 --- a/js/src/views/Discussions/Discussion.vue +++ b/js/src/views/Discussions/Discussion.vue @@ -1,46 +1,29 @@ <template> <div class="container section" v-if="discussion"> - <nav class="breadcrumb" aria-label="breadcrumbs"> - <ul> - <li> - <router-link :to="{ name: RouteName.MY_GROUPS }">{{ - $t("My groups") - }}</router-link> - </li> - <li> - <router-link - v-if="discussion.actor" - :to="{ - name: RouteName.GROUP, - params: { - preferredUsername: usernameWithDomain(discussion.actor), - }, - }" - >{{ discussion.actor.name }}</router-link - > - <b-skeleton v-else-if="$apollo.loading" animated /> - </li> - <li> - <router-link - v-if="discussion.actor" - :to="{ - name: RouteName.DISCUSSION_LIST, - params: { - preferredUsername: usernameWithDomain(discussion.actor), - }, - }" - >{{ $t("Discussions") }}</router-link - > - <b-skeleton animated v-else-if="$apollo.loading" /> - </li> - <li class="is-active"> - <router-link - :to="{ name: RouteName.DISCUSSION, params: { id: discussion.id } }" - >{{ discussion.title }}</router-link - > - </li> - </ul> - </nav> + <breadcrumbs-nav + v-if="group" + :links="[ + { + name: RouteName.MY_GROUPS, + text: $t('My groups'), + }, + { + name: RouteName.GROUP, + params: { preferredUsername: usernameWithDomain(group) }, + text: displayName(group), + }, + { + name: RouteName.DISCUSSION_LIST, + params: { preferredUsername: usernameWithDomain(group) }, + text: $t('Discussions'), + }, + { + name: RouteName.DISCUSSION, + params: { id: discussion.id }, + text: discussion.title, + }, + ]" + /> <b-message v-if="error" type="is-danger"> {{ error }} </b-message> @@ -148,7 +131,7 @@ import { } from "@/graphql/discussion"; import { IDiscussion } from "@/types/discussions"; import { Discussion as DiscussionModel } from "@/types/discussions"; -import { usernameWithDomain } from "@/types/actor"; +import { displayName, usernameWithDomain } from "@/types/actor"; import DiscussionComment from "@/components/Discussion/DiscussionComment.vue"; import { GraphQLError } from "graphql"; import { DELETE_COMMENT, UPDATE_COMMENT } from "@/graphql/comment"; @@ -250,6 +233,7 @@ export default class Discussion extends mixins(GroupMixin) { RouteName = RouteName; usernameWithDomain = usernameWithDomain; + displayName = displayName; error: string | null = null; async reply(): Promise<void> { diff --git a/js/src/views/Discussions/DiscussionsList.vue b/js/src/views/Discussions/DiscussionsList.vue index 63e016138..c9e63677d 100644 --- a/js/src/views/Discussions/DiscussionsList.vue +++ b/js/src/views/Discussions/DiscussionsList.vue @@ -1,32 +1,23 @@ <template> <div class="container section" v-if="group"> - <nav class="breadcrumb" aria-label="breadcrumbs"> - <ul> - <li> - <router-link :to="{ name: RouteName.MY_GROUPS }">{{ - $t("My groups") - }}</router-link> - </li> - <li> - <router-link - :to="{ - name: RouteName.GROUP, - params: { preferredUsername: usernameWithDomain(group) }, - }" - >{{ group.name }}</router-link - > - </li> - <li class="is-active"> - <router-link - :to="{ - name: RouteName.DISCUSSION_LIST, - params: { preferredUsername: usernameWithDomain(group) }, - }" - >{{ $t("Discussions") }}</router-link - > - </li> - </ul> - </nav> + <breadcrumbs-nav + :links="[ + { + name: RouteName.MY_GROUPS, + text: $t('My groups'), + }, + { + name: RouteName.GROUP, + params: { preferredUsername: usernameWithDomain(group) }, + text: displayName(group), + }, + { + name: RouteName.DISCUSSION_LIST, + params: { preferredUsername: usernameWithDomain(group) }, + text: $t('Discussions'), + }, + ]" + /> <section v-if="isCurrentActorAGroupMember"> <p> {{ @@ -82,7 +73,13 @@ <script lang="ts"> import { Component, Prop, Vue } from "vue-property-decorator"; import { FETCH_GROUP } from "@/graphql/group"; -import { IActor, IGroup, IPerson, usernameWithDomain } from "@/types/actor"; +import { + displayName, + IActor, + IGroup, + IPerson, + usernameWithDomain, +} from "@/types/actor"; import DiscussionListItem from "@/components/Discussion/DiscussionListItem.vue"; import RouteName from "../../router/name"; import { MemberRole } from "@/types/enums"; @@ -166,6 +163,7 @@ export default class DiscussionsList extends Vue { RouteName = RouteName; usernameWithDomain = usernameWithDomain; + displayName = displayName; DISCUSSIONS_PER_PAGE = DISCUSSIONS_PER_PAGE; diff --git a/js/src/views/Event/GroupEvents.vue b/js/src/views/Event/GroupEvents.vue index 5c3567bed..642892a9b 100644 --- a/js/src/views/Event/GroupEvents.vue +++ b/js/src/views/Event/GroupEvents.vue @@ -1,27 +1,19 @@ <template> <div class="container section" v-if="group"> - <nav class="breadcrumb" aria-label="breadcrumbs"> - <ul> - <li> - <router-link - :to="{ - name: RouteName.GROUP, - params: { preferredUsername: usernameWithDomain(group) }, - }" - >{{ group.name }}</router-link - > - </li> - <li class="is-active"> - <router-link - :to="{ - name: RouteName.TODO_LISTS, - params: { preferredUsername: usernameWithDomain(group) }, - }" - >{{ $t("Events") }}</router-link - > - </li> - </ul> - </nav> + <breadcrumbs-nav + :links="[ + { + name: RouteName.GROUP, + params: { preferredUsername: usernameWithDomain(group) }, + text: displayName(group), + }, + { + name: RouteName.EVENTS, + params: { preferredUsername: usernameWithDomain(group) }, + text: $t('Events'), + }, + ]" + /> <section> <h1 class="title" v-if="group"> {{ @@ -89,7 +81,7 @@ import { PERSON_MEMBERSHIPS } from "@/graphql/actor"; import GroupMixin from "@/mixins/group"; import { IMember } from "@/types/actor/member.model"; import { FETCH_GROUP_EVENTS } from "@/graphql/event"; -import { usernameWithDomain } from "../../types/actor"; +import { displayName, usernameWithDomain } from "../../types/actor"; const EVENTS_PAGE_LIMIT = 10; @@ -143,6 +135,8 @@ export default class GroupEvents extends mixins(GroupMixin) { usernameWithDomain = usernameWithDomain; + displayName = displayName; + RouteName = RouteName; EVENTS_PAGE_LIMIT = EVENTS_PAGE_LIMIT; diff --git a/js/src/views/Event/Participants.vue b/js/src/views/Event/Participants.vue index 247f7fa71..b4ab755f6 100644 --- a/js/src/views/Event/Participants.vue +++ b/js/src/views/Event/Participants.vue @@ -1,32 +1,20 @@ <template> <section class="section container" v-if="event"> - <nav class="breadcrumb" aria-label="breadcrumbs"> - <ul> - <li> - <router-link :to="{ name: RouteName.MY_EVENTS }">{{ - $t("My events") - }}</router-link> - </li> - <li> - <router-link - :to="{ - name: RouteName.EVENT, - params: { uuid: event.uuid }, - }" - >{{ event.title }}</router-link - > - </li> - <li class="is-active"> - <router-link - :to="{ - name: RouteName.PARTICIPANTS, - params: { uuid: event.uuid }, - }" - >{{ $t("Participants") }}</router-link - > - </li> - </ul> - </nav> + <breadcrumbs-nav + :links="[ + { name: RouteName.MY_EVENTS, text: $t('My events') }, + { + name: RouteName.EVENT, + params: { uuid: event.uuid }, + text: event.title, + }, + { + name: RouteName.PARTICIPANTS, + params: { uuid: event.uuid }, + text: $t('Participants'), + }, + ]" + /> <h1 class="title">{{ $t("Participants") }}</h1> <div class="level"> <div class="level-left"> diff --git a/js/src/views/Group/Group.vue b/js/src/views/Group/Group.vue index ec29e8af1..2ed8013ac 100644 --- a/js/src/views/Group/Group.vue +++ b/js/src/views/Group/Group.vue @@ -1,27 +1,17 @@ <template> <div class="container is-widescreen"> <div class="header"> - <nav class="breadcrumb" :aria-label="$t('Breadcrumbs')"> - <ul> - <li> - <router-link :to="{ name: RouteName.MY_GROUPS }">{{ - $t("My groups") - }}</router-link> - </li> - <li class="is-active"> - <router-link - aria-current-value="location" - v-if="group && group.preferredUsername" - :to="{ - name: RouteName.GROUP, - params: { preferredUsername: usernameWithDomain(group) }, - }" - >{{ group.name }}</router-link - > - <b-skeleton v-else :animated="true"></b-skeleton> - </li> - </ul> - </nav> + <breadcrumbs-nav + v-if="group" + :links="[ + { name: RouteName.MY_GROUPS, text: $t('My groups') }, + { + name: RouteName.GROUP, + params: { preferredUsername: usernameWithDomain(group) }, + text: displayName(group), + }, + ]" + /> <b-loading :active.sync="$apollo.loading"></b-loading> <header class="block-container presentation" v-if="group"> <div class="banner-container"> @@ -776,6 +766,8 @@ export default class Group extends mixins(GroupMixin) { usernameWithDomain = usernameWithDomain; + displayName = displayName; + PostVisibility = PostVisibility; Openness = Openness; diff --git a/js/src/views/Group/GroupFollowers.vue b/js/src/views/Group/GroupFollowers.vue index 8887b8a29..18c004cd3 100644 --- a/js/src/views/Group/GroupFollowers.vue +++ b/js/src/views/Group/GroupFollowers.vue @@ -1,36 +1,25 @@ <template> <div> - <nav class="breadcrumb" aria-label="breadcrumbs"> - <ul v-if="group"> - <li> - <router-link - :to="{ - name: RouteName.GROUP, - params: { preferredUsername: usernameWithDomain(group) }, - }" - >{{ group.name }}</router-link - > - </li> - <li> - <router-link - :to="{ - name: RouteName.GROUP_SETTINGS, - params: { preferredUsername: usernameWithDomain(group) }, - }" - >{{ $t("Settings") }}</router-link - > - </li> - <li class="is-active"> - <router-link - :to="{ - name: RouteName.GROUP_FOLLOWERS_SETTINGS, - params: { preferredUsername: usernameWithDomain(group) }, - }" - >{{ $t("Followers") }}</router-link - > - </li> - </ul> - </nav> + <breadcrumbs-nav + v-if="group" + :links="[ + { + name: RouteName.GROUP, + params: { preferredUsername: usernameWithDomain(group) }, + text: displayName(group), + }, + { + name: RouteName.GROUP_SETTINGS, + params: { preferredUsername: usernameWithDomain(group) }, + text: $t('Settings'), + }, + { + name: RouteName.GROUP_FOLLOWERS_SETTINGS, + params: { preferredUsername: usernameWithDomain(group) }, + text: $t('Followers'), + }, + ]" + /> <b-loading :active="$apollo.loading" /> <section class="container section" @@ -138,7 +127,7 @@ import GroupMixin from "@/mixins/group"; import { mixins } from "vue-class-component"; import { GROUP_FOLLOWERS, UPDATE_FOLLOWER } from "@/graphql/followers"; import RouteName from "../../router/name"; -import { usernameWithDomain } from "../../types/actor"; +import { displayName, usernameWithDomain } from "../../types/actor"; import EmptyContent from "@/components/Utils/EmptyContent.vue"; import { IFollower } from "@/types/actor/follower.model"; import { Paginate } from "@/types/paginate"; @@ -181,6 +170,8 @@ export default class GroupFollowers extends mixins(GroupMixin) { usernameWithDomain = usernameWithDomain; + displayName = displayName; + followers!: Paginate<IFollower>; mounted(): void { diff --git a/js/src/views/Group/GroupMembers.vue b/js/src/views/Group/GroupMembers.vue index 3904299bf..a72185f26 100644 --- a/js/src/views/Group/GroupMembers.vue +++ b/js/src/views/Group/GroupMembers.vue @@ -1,36 +1,25 @@ <template> <div> - <nav class="breadcrumb" aria-label="breadcrumbs"> - <ul v-if="group"> - <li> - <router-link - :to="{ - name: RouteName.GROUP, - params: { preferredUsername: usernameWithDomain(group) }, - }" - >{{ group.name }}</router-link - > - </li> - <li> - <router-link - :to="{ - name: RouteName.GROUP_SETTINGS, - params: { preferredUsername: usernameWithDomain(group) }, - }" - >{{ $t("Settings") }}</router-link - > - </li> - <li class="is-active"> - <router-link - :to="{ - name: RouteName.GROUP_MEMBERS_SETTINGS, - params: { preferredUsername: usernameWithDomain(group) }, - }" - >{{ $t("Members") }}</router-link - > - </li> - </ul> - </nav> + <breadcrumbs-nav + v-if="group" + :links="[ + { + name: RouteName.GROUP, + params: { preferredUsername: usernameWithDomain(group) }, + text: displayName(group), + }, + { + name: RouteName.GROUP_SETTINGS, + params: { preferredUsername: usernameWithDomain(group) }, + text: $t('Settings'), + }, + { + name: RouteName.GROUP_MEMBERS_SETTINGS, + params: { preferredUsername: usernameWithDomain(group) }, + text: $t('Members'), + }, + ]" + /> <b-loading :active="$apollo.loading" /> <section class="container section" @@ -312,6 +301,8 @@ export default class GroupMembers extends mixins(GroupMixin) { usernameWithDomain = usernameWithDomain; + displayName = displayName; + mounted(): void { const roleQuery = this.$route.query.role as string; if (Object.values(MemberRole).includes(roleQuery as MemberRole)) { diff --git a/js/src/views/Group/GroupSettings.vue b/js/src/views/Group/GroupSettings.vue index 894c38402..da70ab3ef 100644 --- a/js/src/views/Group/GroupSettings.vue +++ b/js/src/views/Group/GroupSettings.vue @@ -1,37 +1,25 @@ <template> <div> - <nav class="breadcrumb" aria-label="breadcrumbs"> - <ul> - <li> - <router-link - v-if="group" - :to="{ - name: RouteName.GROUP, - params: { preferredUsername: usernameWithDomain(group) }, - }" - >{{ group.name || usernameWithDomain(group) }}</router-link - > - </li> - <li> - <router-link - :to="{ - name: RouteName.GROUP_SETTINGS, - params: { preferredUsername: usernameWithDomain(group) }, - }" - >{{ $t("Settings") }}</router-link - > - </li> - <li class="is-active"> - <router-link - :to="{ - name: RouteName.GROUP_PUBLIC_SETTINGS, - params: { preferredUsername: usernameWithDomain(group) }, - }" - >{{ $t("Group settings") }}</router-link - > - </li> - </ul> - </nav> + <breadcrumbs-nav + v-if="group" + :links="[ + { + name: RouteName.GROUP, + params: { preferredUsername: usernameWithDomain(group) }, + text: displayName(group), + }, + { + name: RouteName.GROUP_SETTINGS, + params: { preferredUsername: usernameWithDomain(group) }, + text: $t('Settings'), + }, + { + name: RouteName.GROUP_PUBLIC_SETTINGS, + params: { preferredUsername: usernameWithDomain(group) }, + text: $t('Group settings'), + }, + ]" + /> <b-loading :active="$apollo.loading" /> <section class="container section" @@ -197,7 +185,12 @@ import { mixins } from "vue-class-component"; import GroupMixin from "@/mixins/group"; import { GroupVisibility, Openness } from "@/types/enums"; import { UPDATE_GROUP } from "../../graphql/group"; -import { Group, IGroup, usernameWithDomain } from "../../types/actor"; +import { + Group, + IGroup, + usernameWithDomain, + displayName, +} from "../../types/actor"; import { Address, IAddress } from "../../types/address.model"; import { CONFIG } from "@/graphql/config"; import { IConfig } from "@/types/config.model"; @@ -234,6 +227,8 @@ export default class GroupSettings extends mixins(GroupMixin) { usernameWithDomain = usernameWithDomain; + displayName = displayName; + GroupVisibility = GroupVisibility; Openness = Openness; diff --git a/js/src/views/Group/Timeline.vue b/js/src/views/Group/Timeline.vue index b66b3d111..e4b9944fb 100644 --- a/js/src/views/Group/Timeline.vue +++ b/js/src/views/Group/Timeline.vue @@ -1,27 +1,21 @@ <template> <div class="container section"> - <nav class="breadcrumb" aria-label="breadcrumbs"> - <ul v-if="group"> - <li> - <router-link - :to="{ - name: RouteName.GROUP, - params: { preferredUsername: usernameWithDomain(group) }, - }" - >{{ group.name }}</router-link - > - </li> - <li> - <router-link - :to="{ - name: RouteName.TIMELINE, - params: { preferredUsername: usernameWithDomain(group) }, - }" - >{{ $t("Activity") }}</router-link - > - </li> - </ul> - </nav> + <breadcrumbs-nav + v-if="group" + :links="[ + { + name: RouteName.GROUP, + params: { preferredUsername: usernameWithDomain(group) }, + text: displayName(group), + }, + { + name: RouteName.TIMELINE, + params: { preferredUsername: usernameWithDomain(group) }, + text: $t('Activity'), + }, + ]" + /> + <section class="timeline"> <b-field> <b-radio-button v-model="activityType" :native-value="undefined"> @@ -160,7 +154,7 @@ </template> <script lang="ts"> import { GROUP_TIMELINE } from "@/graphql/group"; -import { IGroup, usernameWithDomain } from "@/types/actor"; +import { IGroup, usernameWithDomain, displayName } from "@/types/actor"; import { ActivityType } from "@/types/enums"; import { Paginate } from "@/types/paginate"; import { Component, Prop, Vue } from "vue-property-decorator"; @@ -234,6 +228,8 @@ export default class Timeline extends Vue { usernameWithDomain = usernameWithDomain; + displayName = displayName; + ActivityType = ActivityType; ActivityAuthorFilter = ActivityAuthorFilter; diff --git a/js/src/views/Moderation/Logs.vue b/js/src/views/Moderation/Logs.vue index 4e6be0c7a..728781ce8 100644 --- a/js/src/views/Moderation/Logs.vue +++ b/js/src/views/Moderation/Logs.vue @@ -1,19 +1,17 @@ <template> <div> - <nav class="breadcrumb" aria-label="breadcrumbs"> - <ul> - <li> - <router-link :to="{ name: RouteName.MODERATION }">{{ - $t("Moderation") - }}</router-link> - </li> - <li class="is-active"> - <router-link :to="{ name: RouteName.REPORT_LOGS }">{{ - $t("Moderation log") - }}</router-link> - </li> - </ul> - </nav> + <breadcrumbs-nav + :links="[ + { + name: RouteName.MODERATION, + text: $t('Moderation'), + }, + { + name: RouteName.REPORT_LOGS, + text: $t('Moderation log'), + }, + ]" + /> <section v-if="actionLogs.total > 0 && actionLogs.elements.length > 0"> <ul> <li v-for="log in actionLogs.elements" :key="log.id"> diff --git a/js/src/views/Moderation/Report.vue b/js/src/views/Moderation/Report.vue index 59a94bf8b..71094d796 100644 --- a/js/src/views/Moderation/Report.vue +++ b/js/src/views/Moderation/Report.vue @@ -1,27 +1,23 @@ <template> <div> - <nav class="breadcrumb" aria-label="breadcrumbs" v-if="report"> - <ul> - <li> - <router-link :to="{ name: RouteName.MODERATION }">{{ - $t("Moderation") - }}</router-link> - </li> - <li> - <router-link :to="{ name: RouteName.REPORTS }">{{ - $t("Reports") - }}</router-link> - </li> - <li class="is-active"> - <router-link - :to="{ name: RouteName.REPORT, params: { id: report.id } }" - >{{ - $t("Report #{reportNumber}", { reportNumber: report.id }) - }}</router-link - > - </li> - </ul> - </nav> + <breadcrumbs-nav + v-if="report" + :links="[ + { + name: RouteName.MODERATION, + text: $t('Moderation'), + }, + { + name: RouteName.REPORTS, + text: $t('Reports'), + }, + { + name: RouteName.REPORT, + params: { id: report.id }, + text: $t('Report #{reportNumber}', { reportNumber: report.id }), + }, + ]" + /> <section> <b-message title="Error" diff --git a/js/src/views/Moderation/ReportList.vue b/js/src/views/Moderation/ReportList.vue index bce76169d..577842fdb 100644 --- a/js/src/views/Moderation/ReportList.vue +++ b/js/src/views/Moderation/ReportList.vue @@ -1,37 +1,49 @@ <template> <div> - <nav class="breadcrumb" aria-label="breadcrumbs"> - <ul> - <li> - <router-link :to="{ name: RouteName.MODERATION }">{{ - $t("Moderation") - }}</router-link> - </li> - <li class="is-active"> - <router-link :to="{ name: RouteName.REPORTS }">{{ - $t("Reports") - }}</router-link> - </li> - </ul> - </nav> + <breadcrumbs-nav + :links="[ + { + name: RouteName.MODERATION, + text: $t('Moderation'), + }, + { + name: RouteName.REPORTS, + text: $t('Reports'), + }, + ]" + /> <section> - <b-field> - <b-radio-button - v-model="status" - :native-value="ReportStatusEnum.OPEN" - >{{ $t("Open") }}</b-radio-button + <div class="flex flex-wrap gap-2"> + <b-field :label="$t('Report status')"> + <b-radio-button + v-model="status" + :native-value="ReportStatusEnum.OPEN" + >{{ $t("Open") }}</b-radio-button + > + <b-radio-button + v-model="status" + :native-value="ReportStatusEnum.RESOLVED" + >{{ $t("Resolved") }}</b-radio-button + > + <b-radio-button + v-model="status" + :native-value="ReportStatusEnum.CLOSED" + >{{ $t("Closed") }}</b-radio-button + > + </b-field> + <b-field + :label="$t('Domain')" + label-for="domain-filter" + class="flex-auto" > - <b-radio-button - v-model="status" - :native-value="ReportStatusEnum.RESOLVED" - >{{ $t("Resolved") }}</b-radio-button - > - <b-radio-button - v-model="status" - :native-value="ReportStatusEnum.CLOSED" - >{{ $t("Closed") }}</b-radio-button - > - </b-field> + <b-input + id="domain-filter" + :placeholder="$t('mobilizon-instance.tld')" + :value="filterDomain" + @input="debouncedUpdateDomainFilter" + /> + </b-field> + </div> <ul v-if="reports.elements.length > 0"> <li v-for="report in reports.elements" :key="report.id"> <router-link @@ -88,6 +100,7 @@ import { ReportStatusEnum } from "@/types/enums"; import RouteName from "../../router/name"; import VueRouter from "vue-router"; import { Paginate } from "@/types/paginate"; +import debounce from "lodash/debounce"; const { isNavigationFailure, NavigationFailureType } = VueRouter; const REPORT_PAGE_LIMIT = 10; @@ -106,6 +119,7 @@ const REPORT_PAGE_LIMIT = 10; page: this.page, status: this.status, limit: REPORT_PAGE_LIMIT, + domain: this.filterDomain, }; }, pollInterval: 120000, // 2 minutes @@ -128,18 +142,28 @@ export default class ReportList extends Vue { REPORT_PAGE_LIMIT = REPORT_PAGE_LIMIT; + data(): Record<string, unknown> { + return { + debouncedUpdateDomainFilter: debounce(this.updateDomainFilter, 500), + }; + } + + async updateDomainFilter(domain: string) { + this.filterDomain = domain; + } + get page(): number { return parseInt((this.$route.query.page as string) || "1", 10); } set page(page: number) { - this.pushRouter(RouteName.REPORTS, { + this.pushRouter({ page: page.toString(), }); } get status(): ReportStatusEnum { - const filter = this.$route.params.filter?.toUpperCase(); + const filter = (this.$route.query.status || "") as string; if (filter in ReportStatusEnum) { return filter as ReportStatusEnum; } @@ -147,19 +171,21 @@ export default class ReportList extends Vue { } set status(status: ReportStatusEnum) { - this.$router.push({ - name: RouteName.REPORTS, - params: { filter: status.toLowerCase() }, - }); + this.pushRouter({ status }); } - protected async pushRouter( - routeName: string, - args: Record<string, string> - ): Promise<void> { + get filterDomain(): string { + return (this.$route.query.domain as string) || ""; + } + + set filterDomain(domain: string) { + this.pushRouter({ domain }); + } + + protected async pushRouter(args: Record<string, string>): Promise<void> { try { await this.$router.push({ - name: routeName, + name: RouteName.REPORTS, params: this.$route.params, query: { ...this.$route.query, ...args }, }); diff --git a/js/src/views/Posts/Edit.vue b/js/src/views/Posts/Edit.vue index 8dcb2aadd..7719011fc 100644 --- a/js/src/views/Posts/Edit.vue +++ b/js/src/views/Posts/Edit.vue @@ -2,43 +2,7 @@ <div> <form @submit.prevent="publish(false)" v-if="isCurrentActorAGroupModerator"> <div class="container section"> - <nav class="breadcrumb" aria-label="breadcrumbs" v-if="actualGroup"> - <ul> - <li> - <router-link - v-if="actualGroup" - :to="{ - name: RouteName.GROUP, - params: { - preferredUsername: usernameWithDomain(actualGroup), - }, - }" - >{{ - actualGroup.name || actualGroup.preferredUsername - }}</router-link - > - <b-skeleton v-else :animated="true"></b-skeleton> - </li> - <li> - <router-link - v-if="actualGroup" - :to="{ - name: RouteName.POSTS, - params: { - preferredUsername: usernameWithDomain(actualGroup), - }, - }" - >{{ $t("Posts") }}</router-link - > - <b-skeleton v-else :animated="true"></b-skeleton> - </li> - <li class="is-active"> - <span v-if="preferredUsername">{{ $t("New post") }}</span> - <span v-else-if="slug">{{ $t("Edit post") }}</span> - <b-skeleton v-else :animated="true"></b-skeleton> - </li> - </ul> - </nav> + <breadcrumbs-nav v-if="actualGroup" :links="breadcrumbLinks" /> <h1 class="title" v-if="isUpdate === true"> {{ $t("Edit post") }} </h1> @@ -174,7 +138,7 @@ import { CREATE_POST, UPDATE_POST } from "../../graphql/post"; import { IPost } from "../../types/post.model"; import Editor from "../../components/Editor.vue"; -import { IActor, usernameWithDomain } from "../../types/actor"; +import { displayName, IActor, usernameWithDomain } from "../../types/actor"; import TagInput from "../../components/Event/TagInput.vue"; import RouteName from "../../router/name"; import Subtitle from "../../components/Utils/Subtitle.vue"; @@ -366,6 +330,39 @@ export default class EditPost extends mixins(GroupMixin, PostMixin) { } return this.group; } + + get breadcrumbLinks() { + const links = [ + { + name: RouteName.GROUP, + params: { + preferredUsername: usernameWithDomain(this.actualGroup), + }, + text: displayName(this.actualGroup), + }, + { + name: RouteName.POSTS, + params: { + preferredUsername: usernameWithDomain(this.actualGroup), + }, + text: this.$t("Posts"), + }, + ]; + if (this.preferredUsername) { + links.push({ + text: this.$t("New post") as string, + name: RouteName.POST_EDIT, + params: { preferredUsername: usernameWithDomain(this.actualGroup) }, + }); + } else { + links.push({ + text: this.$t("Edit post") as string, + name: RouteName.POST_EDIT, + params: { preferredUsername: usernameWithDomain(this.actualGroup) }, + }); + } + return links; + } } </script> <style lang="scss" scoped> diff --git a/js/src/views/Posts/List.vue b/js/src/views/Posts/List.vue index 502bf3a71..50bd858f7 100644 --- a/js/src/views/Posts/List.vue +++ b/js/src/views/Posts/List.vue @@ -1,31 +1,19 @@ <template> <div class="container section" v-if="group"> - <nav class="breadcrumb" aria-label="breadcrumbs" v-if="group"> - <ul> - <li> - <router-link - v-if="group" - :to="{ - name: RouteName.GROUP, - params: { preferredUsername: usernameWithDomain(group) }, - }" - >{{ group.name || group.preferredUsername }}</router-link - > - <b-skeleton v-else :animated="true"></b-skeleton> - </li> - <li class="is-active"> - <router-link - v-if="group" - :to="{ - name: RouteName.POSTS, - params: { preferredUsername: usernameWithDomain(group) }, - }" - >{{ $t("Posts") }}</router-link - > - <b-skeleton v-else :animated="true"></b-skeleton> - </li> - </ul> - </nav> + <breadcrumbs-nav + :links="[ + { + name: RouteName.GROUP, + params: { preferredUsername: usernameWithDomain(group) }, + text: displayName(group), + }, + { + name: RouteName.POSTS, + params: { preferredUsername: usernameWithDomain(group) }, + text: $t('Posts'), + }, + ]" + /> <section> <div class="intro"> <p v-if="isCurrentActorMember"> @@ -84,7 +72,7 @@ import { IMember } from "@/types/actor/member.model"; import { FETCH_GROUP_POSTS } from "../../graphql/post"; import { Paginate } from "../../types/paginate"; import { IPost } from "../../types/post.model"; -import { usernameWithDomain } from "../../types/actor"; +import { usernameWithDomain, displayName } from "../../types/actor"; import RouteName from "../../router/name"; import MultiPostListItem from "../../components/Post/MultiPostListItem.vue"; @@ -148,6 +136,8 @@ export default class PostList extends mixins(GroupMixin) { usernameWithDomain = usernameWithDomain; + displayName = displayName; + POSTS_PAGE_LIMIT = POSTS_PAGE_LIMIT; get isCurrentActorMember(): boolean { diff --git a/js/src/views/Resources/ResourceFolder.vue b/js/src/views/Resources/ResourceFolder.vue index 539eaf0f0..6772ce9a8 100644 --- a/js/src/views/Resources/ResourceFolder.vue +++ b/js/src/views/Resources/ResourceFolder.vue @@ -1,80 +1,38 @@ <template> <div class="container section" v-if="resource"> - <nav class="breadcrumb" aria-label="breadcrumbs"> - <ul> - <li> - <router-link - :to="{ - name: RouteName.GROUP, - params: { preferredUsername: usernameWithDomain(resource.actor) }, - }" - >{{ resource.actor.name }}</router-link - > - </li> - <li> - <router-link - :to="{ - name: RouteName.RESOURCE_FOLDER_ROOT, - params: { preferredUsername: usernameWithDomain(resource.actor) }, - }" - >{{ $t("Resources") }}</router-link - > - </li> - <li - :class="{ - 'is-active': - index + 1 === ResourceMixin.resourcePathArray(resource).length, - }" - v-for="(pathFragment, index) in filteredPath" - :key="pathFragment" - > - <router-link - :to="{ - name: RouteName.RESOURCE_FOLDER, - params: { - path: ResourceMixin.resourcePathArray(resource).slice( - 0, - index + 1 - ), - preferredUsername: usernameWithDomain(resource.actor), - }, - }" - >{{ pathFragment }}</router-link - > - </li> - <li> - <b-dropdown aria-role="list"> - <b-button class="button is-primary" slot="trigger">+</b-button> + <breadcrumbs-nav :links="breadcrumbLinks"> + <li> + <b-dropdown aria-role="list"> + <b-button class="button is-primary" slot="trigger">+</b-button> - <b-dropdown-item aria-role="listitem" @click="createFolderModal"> - <b-icon icon="folder" /> - {{ $t("New folder") }} - </b-dropdown-item> - <b-dropdown-item - aria-role="listitem" - @click="createLinkResourceModal = true" - > - <b-icon icon="link" /> - {{ $t("New link") }} - </b-dropdown-item> - <hr - role="presentation" - class="dropdown-divider" - v-if="resourceProviders.length" - /> - <b-dropdown-item - aria-role="listitem" - v-for="resourceProvider in resourceProviders" - :key="resourceProvider.software" - @click="createResourceFromProvider(resourceProvider)" - > - <b-icon :icon="mapServiceTypeToIcon[resourceProvider.software]" /> - {{ createSentenceForType(resourceProvider.software) }} - </b-dropdown-item> - </b-dropdown> - </li> - </ul> - </nav> + <b-dropdown-item aria-role="listitem" @click="createFolderModal"> + <b-icon icon="folder" /> + {{ $t("New folder") }} + </b-dropdown-item> + <b-dropdown-item + aria-role="listitem" + @click="createLinkResourceModal = true" + > + <b-icon icon="link" /> + {{ $t("New link") }} + </b-dropdown-item> + <hr + role="presentation" + class="dropdown-divider" + v-if="resourceProviders.length" + /> + <b-dropdown-item + aria-role="listitem" + v-for="resourceProvider in resourceProviders" + :key="resourceProvider.software" + @click="createResourceFromProvider(resourceProvider)" + > + <b-icon :icon="mapServiceTypeToIcon[resourceProvider.software]" /> + {{ createSentenceForType(resourceProvider.software) }} + </b-dropdown-item> + </b-dropdown> + </li> + </breadcrumbs-nav> <section> <p v-if="resource.path === '/'" class="module-description"> {{ @@ -276,7 +234,7 @@ import ResourceItem from "@/components/Resource/ResourceItem.vue"; import FolderItem from "@/components/Resource/FolderItem.vue"; import Draggable from "vuedraggable"; import { CURRENT_ACTOR_CLIENT } from "../../graphql/actor"; -import { IActor, usernameWithDomain } from "../../types/actor"; +import { displayName, IActor, usernameWithDomain } from "../../types/actor"; import RouteName from "../../router/name"; import { IResource, @@ -764,6 +722,40 @@ export default class Resources extends Mixins(ResourceMixin) { } } } + + get breadcrumbLinks() { + if (!this.resource?.actor) return []; + const resourceActor = this.resource.actor; + const links = [ + { + name: RouteName.GROUP, + params: { preferredUsername: usernameWithDomain(this.resource.actor) }, + text: displayName(this.resource.actor), + }, + { + name: RouteName.RESOURCE_FOLDER_ROOT, + params: { preferredUsername: usernameWithDomain(this.resource.actor) }, + text: this.$t("Resources") as string, + }, + ]; + + links.push( + ...this.filteredPath.map((pathFragment, index) => { + return { + name: RouteName.RESOURCE_FOLDER, + params: { + path: ResourceMixin.resourcePathArray(this.resource).slice( + 0, + index + 1 + ) as unknown as string, + preferredUsername: usernameWithDomain(resourceActor), + }, + text: pathFragment, + }; + }) + ); + return links; + } } </script> <style lang="scss" scoped> diff --git a/js/src/views/Settings/AccountSettings.vue b/js/src/views/Settings/AccountSettings.vue index 4cdb3a9ec..dbef8d39e 100644 --- a/js/src/views/Settings/AccountSettings.vue +++ b/js/src/views/Settings/AccountSettings.vue @@ -1,19 +1,17 @@ <template> <div v-if="loggedUser"> - <nav class="breadcrumb" aria-label="breadcrumbs"> - <ul> - <li> - <router-link :to="{ name: RouteName.ACCOUNT_SETTINGS }">{{ - $t("Account") - }}</router-link> - </li> - <li class="is-active"> - <router-link :to="{ name: RouteName.ACCOUNT_SETTINGS_GENERAL }">{{ - $t("General") - }}</router-link> - </li> - </ul> - </nav> + <breadcrumbs-nav + :links="[ + { + name: RouteName.ACCOUNT_SETTINGS, + text: $t('Account'), + }, + { + name: RouteName.ACCOUNT_SETTINGS_GENERAL, + text: $t('General'), + }, + ]" + /> <section> <div class="setting-title"> <h2>{{ $t("Email") }}</h2> diff --git a/js/src/views/Settings/Notifications.vue b/js/src/views/Settings/Notifications.vue index efd052f90..2c463c97d 100644 --- a/js/src/views/Settings/Notifications.vue +++ b/js/src/views/Settings/Notifications.vue @@ -1,19 +1,17 @@ <template> <div v-if="loggedUser"> - <nav class="breadcrumb" aria-label="breadcrumbs"> - <ul> - <li> - <router-link :to="{ name: RouteName.ACCOUNT_SETTINGS }">{{ - $t("Account") - }}</router-link> - </li> - <li class="is-active"> - <router-link :to="{ name: RouteName.NOTIFICATIONS }">{{ - $t("Notifications") - }}</router-link> - </li> - </ul> - </nav> + <breadcrumbs-nav + :links="[ + { + name: RouteName.ACCOUNT_SETTINGS, + text: $t('Account'), + }, + { + name: RouteName.NOTIFICATIONS, + text: $t('Notifications'), + }, + ]" + /> <section> <div class="setting-title"> <h2>{{ $t("Browser notifications") }}</h2> diff --git a/js/src/views/Settings/Preferences.vue b/js/src/views/Settings/Preferences.vue index 95543b864..d2980a9d5 100644 --- a/js/src/views/Settings/Preferences.vue +++ b/js/src/views/Settings/Preferences.vue @@ -1,19 +1,17 @@ <template> <div> - <nav class="breadcrumb" aria-label="breadcrumbs"> - <ul> - <li> - <router-link :to="{ name: RouteName.ACCOUNT_SETTINGS }">{{ - $t("Account") - }}</router-link> - </li> - <li class="is-active"> - <router-link :to="{ name: RouteName.PREFERENCES }">{{ - $t("Preferences") - }}</router-link> - </li> - </ul> - </nav> + <breadcrumbs-nav + :links="[ + { + name: RouteName.ACCOUNT_SETTINGS, + text: $t('Account'), + }, + { + name: RouteName.PREFERENCES, + text: $t('Preferences'), + }, + ]" + /> <div> <b-field :label="$t('Language')" label-for="setting-language"> <b-select diff --git a/js/src/views/Todos/Todo.vue b/js/src/views/Todos/Todo.vue index b8970e8a9..cdfe834f0 100644 --- a/js/src/views/Todos/Todo.vue +++ b/js/src/views/Todos/Todo.vue @@ -1,35 +1,29 @@ <template> <section class="section container" v-if="todo"> - <nav class="breadcrumb" aria-label="breadcrumbs"> - <ul> - <li> - <router-link - :to="{ - name: RouteName.GROUP, - params: { - preferredUsername: todo.todoList.actor.preferredUsername, - }, - }" - >{{ todo.todoList.actor.name }}</router-link - > - </li> - <li> - <router-link - :to="{ - name: RouteName.TODO_LIST, - params: { id: todo.todoList.id }, - }" - > - {{ todo.todoList.title }} - </router-link> - </li> - <li class="is-active"> - <router-link :to="{ name: RouteName.TODO }" aria-current="page"> - {{ todo.title }} - </router-link> - </li> - </ul> - </nav> + <breadcrumbs-nav + :links="[ + { + name: RouteName.GROUP, + params: { + preferredUsername: usernameWithDomain(todo.todoList.actor), + }, + text: displayName(todo.todoList.actor), + }, + { + name: RouteName.TODO_LISTS, + params: { + preferredUsername: usernameWithDomain(todo.todoList.actor), + }, + text: $t('Task lists'), + }, + { + name: RouteName.TODO_LIST, + params: { id: todo.todoList.id }, + text: todo.todoList.title, + }, + { name: RouteName.TODO, text: todo.title }, + ]" + /> <full-todo :todo="todo" /> </section> </template> @@ -39,6 +33,7 @@ import { GET_TODO } from "@/graphql/todos"; import { ITodo } from "@/types/todos"; import FullTodo from "@/components/Todo/FullTodo.vue"; import RouteName from "../../router/name"; +import { displayName, usernameWithDomain } from "@/types/actor"; @Component({ components: { @@ -70,5 +65,9 @@ export default class Todo extends Vue { todo!: ITodo; RouteName = RouteName; + + usernameWithDomain = usernameWithDomain; + + displayName = displayName; } </script> diff --git a/js/src/views/Todos/TodoList.vue b/js/src/views/Todos/TodoList.vue index 1aaa103ce..a48aab3c7 100644 --- a/js/src/views/Todos/TodoList.vue +++ b/js/src/views/Todos/TodoList.vue @@ -1,34 +1,24 @@ <template> <section class="container section" v-if="todoList"> - <nav class="breadcrumb" aria-label="breadcrumbs"> - <ul> - <li> - <router-link - :to="{ - name: RouteName.GROUP, - params: { preferredUsername: todoList.actor.preferredUsername }, - }" - >{{ todoList.actor.name }}</router-link - > - </li> - <li> - <router-link - :to="{ - name: RouteName.TODO_LISTS, - params: { preferredUsername: todoList.actor.preferredUsername }, - }" - >{{ $t("Task lists") }}</router-link - > - </li> - <li class="is-active"> - <router-link - :to="{ name: RouteName.TODO_LIST, params: { id: todoList.id } }" - > - {{ todoList.title }} - </router-link> - </li> - </ul> - </nav> + <breadcrumbs-nav + :links="[ + { + name: RouteName.GROUP, + params: { preferredUsername: usernameWithDomain(todoList.actor) }, + text: displayName(group), + }, + { + name: RouteName.TODO_LISTS, + params: { preferredUsername: usernameWithDomain(todoList.actor) }, + text: $t('Task lists'), + }, + { + name: RouteName.TODO_LIST, + params: { id: todoList.id }, + text: todoList.title, + }, + ]" + /> <h2 class="title">{{ todoList.title }}</h2> <div v-for="todo in todoList.todos.elements" :key="todo.id"> <compact-todo :todo="todo" /> @@ -48,7 +38,7 @@ import { ITodo } from "@/types/todos"; import { CREATE_TODO, FETCH_TODO_LIST } from "@/graphql/todos"; import CompactTodo from "@/components/Todo/CompactTodo.vue"; import { CURRENT_ACTOR_CLIENT } from "@/graphql/actor"; -import { IActor } from "@/types/actor"; +import { displayName, IActor, usernameWithDomain } from "@/types/actor"; import { ITodoList } from "@/types/todolist"; import RouteName from "../../router/name"; import { ApolloCache, FetchResult, InMemoryCache } from "@apollo/client/core"; @@ -89,6 +79,10 @@ export default class TodoList extends Vue { RouteName = RouteName; + displayName = displayName; + + usernameWithDomain = usernameWithDomain; + async createNewTodo(): Promise<void> { await this.$apollo.mutate({ mutation: CREATE_TODO, diff --git a/js/src/views/Todos/TodoLists.vue b/js/src/views/Todos/TodoLists.vue index c58d7372f..14b26b926 100644 --- a/js/src/views/Todos/TodoLists.vue +++ b/js/src/views/Todos/TodoLists.vue @@ -1,27 +1,19 @@ <template> <div class="container section" v-if="group"> - <nav class="breadcrumb" aria-label="breadcrumbs"> - <ul> - <li> - <router-link - :to="{ - name: RouteName.GROUP, - params: { preferredUsername: usernameWithDomain(group) }, - }" - >{{ group.name }}</router-link - > - </li> - <li class="is-active"> - <router-link - :to="{ - name: RouteName.TODO_LISTS, - params: { preferredUsername: usernameWithDomain(group) }, - }" - >{{ $t("Task lists") }}</router-link - > - </li> - </ul> - </nav> + <breadcrumbs-nav + :links="[ + { + name: RouteName.GROUP, + params: { preferredUsername: usernameWithDomain(group) }, + text: displayName(group), + }, + { + name: RouteName.TODO_LISTS, + params: { preferredUsername: usernameWithDomain(group) }, + text: $t('Task lists'), + }, + ]" + /> <section> <p> {{ @@ -61,7 +53,7 @@ <script lang="ts"> import { Component, Prop, Vue } from "vue-property-decorator"; import { FETCH_GROUP } from "@/graphql/group"; -import { IGroup, usernameWithDomain } from "@/types/actor"; +import { IGroup, usernameWithDomain, displayName } from "@/types/actor"; import { CREATE_TODO_LIST } from "@/graphql/todos"; import CompactTodo from "@/components/Todo/CompactTodo.vue"; import { ITodoList } from "@/types/todolist"; @@ -108,6 +100,8 @@ export default class TodoLists extends Vue { usernameWithDomain = usernameWithDomain; + displayName = displayName; + get todoLists(): ITodoList[] { return this.group.todoLists.elements; } diff --git a/js/tailwind.config.js b/js/tailwind.config.js new file mode 100644 index 000000000..789383b10 --- /dev/null +++ b/js/tailwind.config.js @@ -0,0 +1,22 @@ +function withOpacityValue(variable) { + return ({ opacityValue }) => { + if (opacityValue === undefined) { + return `rgb(var(${variable}))`; + } + return `rgb(var(${variable}) / ${opacityValue})`; + }; +} + +module.exports = { + content: ["./public/**/*.html", "./src/**/*.{vue,js,ts,jsx,tsx}"], + theme: { + extend: { + colors: { + primary: withOpacityValue("--color-primary"), + secondary: withOpacityValue("--color-secondary"), + "violet-title": withOpacityValue("--color-violet-title"), + }, + }, + }, + plugins: [require("@tailwindcss/line-clamp")], +}; diff --git a/js/yarn.lock b/js/yarn.lock index 86a53cf6b..4c6182d80 100644 --- a/js/yarn.lock +++ b/js/yarn.lock @@ -28,18 +28,18 @@ zen-observable "0.8.11" "@apideck/better-ajv-errors@^0.3.1": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.1.tgz#a8d4ef3ce67c418b8b24f2b76b6bc84eb547baf7" - integrity sha512-6RMV31esAxqlDIvVCG/CJxY/s8dFNVOI5w8RWIfDMhjg/iwqnawko9tJXau/leqC4+T1Bu8et99QVWCwU5wk+g== + version "0.3.2" + resolved "https://registry.yarnpkg.com/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.2.tgz#cd6d3814eda8aee38ee2e3fa6457be43af4f8361" + integrity sha512-JdEazx7qiVqTBzzBl5rolRwl5cmhihjfIcpqRzIZjtT6b18liVmDn/VlWpqW4C/qP2hrFFMLRV1wlex8ZVBPTg== dependencies: json-schema "^0.4.0" jsonpointer "^5.0.0" leven "^3.1.0" "@apollo/client@^3.0.0", "@apollo/client@^3.3.16": - version "3.5.6" - resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.5.6.tgz#911929df073280689efd98e5603047b79e0c39a2" - integrity sha512-XHoouuEJ4L37mtfftcHHO1caCRrKKAofAwqRoq28UQIPMJk+e7n3X9OtRRNXKk/9tmhNkwelSary+EilfPwI7A== + version "3.5.7" + resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.5.7.tgz#38051c0a414ebf784319fa5131faa19df24fa9ec" + integrity sha512-HSLqTGp3sp/PVIWYLLr5v3fjQSr6Fxg6Z5RQj5Q9ALyseIVudD8GZk1jHplaUblTFMBueXGw3Z6DXObuVAr3tw== dependencies: "@graphql-typed-document-node/core" "^3.0.0" "@wry/context" "^0.6.0" @@ -61,32 +61,32 @@ dependencies: "@babel/highlight" "^7.10.4" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.8.3": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.0.tgz#0dfc80309beec8411e65e706461c408b0bb9b431" - integrity sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" + integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== dependencies: - "@babel/highlight" "^7.16.0" + "@babel/highlight" "^7.16.7" -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.0", "@babel/compat-data@^7.16.4": +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.4": version "7.16.4" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.16.4.tgz#081d6bbc336ec5c2435c6346b2ae1fb98b5ac68e" integrity sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q== -"@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.12.16", "@babel/core@^7.12.3", "@babel/core@^7.7.2", "@babel/core@^7.7.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.5.tgz#924aa9e1ae56e1e55f7184c8bf073a50d8677f5c" - integrity sha512-wUcenlLzuWMZ9Zt8S0KmFwGlH6QKRh3vsm/dhDA3CHkiTA45YuG1XkHRcNRl73EFPXDp/d5kVOU0/y7x2w6OaQ== +"@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.12.16", "@babel/core@^7.12.3", "@babel/core@^7.7.2", "@babel/core@^7.8.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.7.tgz#db990f931f6d40cb9b87a0dc7d2adc749f1dcbcf" + integrity sha512-aeLaqcqThRNZYmbMqtulsetOQZ/5gbR/dWruUCJcpas4Qoyy+QeagfDsPdMrqwsPRDNxJvBlRiZxxX7THO7qtA== dependencies: - "@babel/code-frame" "^7.16.0" - "@babel/generator" "^7.16.5" - "@babel/helper-compilation-targets" "^7.16.3" - "@babel/helper-module-transforms" "^7.16.5" - "@babel/helpers" "^7.16.5" - "@babel/parser" "^7.16.5" - "@babel/template" "^7.16.0" - "@babel/traverse" "^7.16.5" - "@babel/types" "^7.16.0" + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.16.7" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helpers" "^7.16.7" + "@babel/parser" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.16.7" + "@babel/types" "^7.16.7" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -94,59 +94,59 @@ semver "^6.3.0" source-map "^0.5.0" -"@babel/generator@^7.16.5", "@babel/generator@^7.7.2": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.5.tgz#26e1192eb8f78e0a3acaf3eede3c6fc96d22bedf" - integrity sha512-kIvCdjZqcdKqoDbVVdt5R99icaRtrtYhYK/xux5qiWCBmfdvEYMFZ68QCrpE5cbFM1JsuArUNs1ZkuKtTtUcZA== +"@babel/generator@^7.16.7", "@babel/generator@^7.7.2": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.7.tgz#b42bf46a3079fa65e1544135f32e7958f048adbb" + integrity sha512-/ST3Sg8MLGY5HVYmrjOgL60ENux/HfO/CsUh7y4MalThufhE/Ff/6EibFDHi4jiDCaWfJKoqbE6oTh21c5hrRg== dependencies: - "@babel/types" "^7.16.0" + "@babel/types" "^7.16.7" jsesc "^2.5.1" source-map "^0.5.0" -"@babel/helper-annotate-as-pure@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz#9a1f0ebcda53d9a2d00108c4ceace6a5d5f1f08d" - integrity sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg== +"@babel/helper-annotate-as-pure@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" + integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw== dependencies: - "@babel/types" "^7.16.0" + "@babel/types" "^7.16.7" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.5.tgz#a8429d064dce8207194b8bf05a70a9ea828746af" - integrity sha512-3JEA9G5dmmnIWdzaT9d0NmFRgYnWUThLsDaL7982H0XqqWr56lRrsmwheXFMjR+TMl7QMBb6mzy9kvgr1lRLUA== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz#38d138561ea207f0f69eb1626a418e4f7e6a580b" + integrity sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA== dependencies: - "@babel/helper-explode-assignable-expression" "^7.16.0" - "@babel/types" "^7.16.0" + "@babel/helper-explode-assignable-expression" "^7.16.7" + "@babel/types" "^7.16.7" -"@babel/helper-compilation-targets@^7.12.16", "@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.3": - version "7.16.3" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz#5b480cd13f68363df6ec4dc8ac8e2da11363cbf0" - integrity sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA== +"@babel/helper-compilation-targets@^7.12.16", "@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz#06e66c5f299601e6c7da350049315e83209d551b" + integrity sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA== dependencies: - "@babel/compat-data" "^7.16.0" - "@babel/helper-validator-option" "^7.14.5" + "@babel/compat-data" "^7.16.4" + "@babel/helper-validator-option" "^7.16.7" browserslist "^4.17.5" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.5.tgz#5d1bcd096792c1ebec6249eebc6358eec55d0cad" - integrity sha512-NEohnYA7mkB8L5JhU7BLwcBdU3j83IziR9aseMueWGeAjblbul3zzb8UvJ3a1zuBiqCMObzCJHFqKIQE6hTVmg== +"@babel/helper-create-class-features-plugin@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.7.tgz#9c5b34b53a01f2097daf10678d65135c1b9f84ba" + integrity sha512-kIFozAvVfK05DM4EVQYKK+zteWvY85BFdGBRQBytRyY3y+6PX0DkDOn/CZ3lEuczCfrCxEzwt0YtP/87YPTWSw== dependencies: - "@babel/helper-annotate-as-pure" "^7.16.0" - "@babel/helper-environment-visitor" "^7.16.5" - "@babel/helper-function-name" "^7.16.0" - "@babel/helper-member-expression-to-functions" "^7.16.5" - "@babel/helper-optimise-call-expression" "^7.16.0" - "@babel/helper-replace-supers" "^7.16.5" - "@babel/helper-split-export-declaration" "^7.16.0" + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-member-expression-to-functions" "^7.16.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" -"@babel/helper-create-regexp-features-plugin@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz#06b2348ce37fccc4f5e18dcd8d75053f2a7c44ff" - integrity sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA== +"@babel/helper-create-regexp-features-plugin@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.7.tgz#0cb82b9bac358eb73bfbd73985a776bfa6b14d48" + integrity sha512-fk5A6ymfp+O5+p2yCkXAu5Kyj6v0xh0RBeNcAkYUMDvvAAoxvSKXn+Jb37t/yWFiQVDFK1ELpUTD8/aLhCPu+g== dependencies: - "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-annotate-as-pure" "^7.16.7" regexpu-core "^4.7.1" "@babel/helper-define-polyfill-provider@^0.3.0": @@ -163,109 +163,109 @@ resolve "^1.14.2" semver "^6.1.2" -"@babel/helper-environment-visitor@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.5.tgz#f6a7f38b3c6d8b07c88faea083c46c09ef5451b8" - integrity sha512-ODQyc5AnxmZWm/R2W7fzhamOk1ey8gSguo5SGvF0zcB3uUzRpTRmM/jmLSm9bDMyPlvbyJ+PwPEK0BWIoZ9wjg== +"@babel/helper-environment-visitor@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7" + integrity sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag== dependencies: - "@babel/types" "^7.16.0" + "@babel/types" "^7.16.7" -"@babel/helper-explode-assignable-expression@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz#753017337a15f46f9c09f674cff10cee9b9d7778" - integrity sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ== +"@babel/helper-explode-assignable-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz#12a6d8522fdd834f194e868af6354e8650242b7a" + integrity sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ== dependencies: - "@babel/types" "^7.16.0" + "@babel/types" "^7.16.7" -"@babel/helper-function-name@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz#b7dd0797d00bbfee4f07e9c4ea5b0e30c8bb1481" - integrity sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog== +"@babel/helper-function-name@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f" + integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA== dependencies: - "@babel/helper-get-function-arity" "^7.16.0" - "@babel/template" "^7.16.0" - "@babel/types" "^7.16.0" + "@babel/helper-get-function-arity" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/types" "^7.16.7" -"@babel/helper-get-function-arity@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz#0088c7486b29a9cb5d948b1a1de46db66e089cfa" - integrity sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ== +"@babel/helper-get-function-arity@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" + integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw== dependencies: - "@babel/types" "^7.16.0" + "@babel/types" "^7.16.7" -"@babel/helper-hoist-variables@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz#4c9023c2f1def7e28ff46fc1dbcd36a39beaa81a" - integrity sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg== +"@babel/helper-hoist-variables@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" + integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== dependencies: - "@babel/types" "^7.16.0" + "@babel/types" "^7.16.7" -"@babel/helper-member-expression-to-functions@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.5.tgz#1bc9f7e87354e86f8879c67b316cb03d3dc2caab" - integrity sha512-7fecSXq7ZrLE+TWshbGT+HyCLkxloWNhTbU2QM1NTI/tDqyf0oZiMcEfYtDuUDCo528EOlt39G1rftea4bRZIw== +"@babel/helper-member-expression-to-functions@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz#42b9ca4b2b200123c3b7e726b0ae5153924905b0" + integrity sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q== dependencies: - "@babel/types" "^7.16.0" + "@babel/types" "^7.16.7" -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz#90538e60b672ecf1b448f5f4f5433d37e79a3ec3" - integrity sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg== +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" + integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== dependencies: - "@babel/types" "^7.16.0" + "@babel/types" "^7.16.7" -"@babel/helper-module-transforms@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.5.tgz#530ebf6ea87b500f60840578515adda2af470a29" - integrity sha512-CkvMxgV4ZyyioElFwcuWnDCcNIeyqTkCm9BxXZi73RR1ozqlpboqsbGUNvRTflgZtFbbJ1v5Emvm+lkjMYY/LQ== +"@babel/helper-module-transforms@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz#7665faeb721a01ca5327ddc6bba15a5cb34b6a41" + integrity sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng== dependencies: - "@babel/helper-environment-visitor" "^7.16.5" - "@babel/helper-module-imports" "^7.16.0" - "@babel/helper-simple-access" "^7.16.0" - "@babel/helper-split-export-declaration" "^7.16.0" - "@babel/helper-validator-identifier" "^7.15.7" - "@babel/template" "^7.16.0" - "@babel/traverse" "^7.16.5" - "@babel/types" "^7.16.0" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-simple-access" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.16.7" + "@babel/types" "^7.16.7" -"@babel/helper-optimise-call-expression@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz#cecdb145d70c54096b1564f8e9f10cd7d193b338" - integrity sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw== +"@babel/helper-optimise-call-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2" + integrity sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w== dependencies: - "@babel/types" "^7.16.0" + "@babel/types" "^7.16.7" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.5.tgz#afe37a45f39fce44a3d50a7958129ea5b1a5c074" - integrity sha512-59KHWHXxVA9K4HNF4sbHCf+eJeFe0Te/ZFGqBT4OjXhrwvA04sGfaEGsVTdsjoszq0YTP49RC9UKe5g8uN2RwQ== +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" + integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA== -"@babel/helper-remap-async-to-generator@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.5.tgz#e706646dc4018942acb4b29f7e185bc246d65ac3" - integrity sha512-X+aAJldyxrOmN9v3FKp+Hu1NO69VWgYgDGq6YDykwRPzxs5f2N+X988CBXS7EQahDU+Vpet5QYMqLk+nsp+Qxw== +"@babel/helper-remap-async-to-generator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.7.tgz#5ce2416990d55eb6e099128338848ae8ffa58a9a" + integrity sha512-C3o117GnP/j/N2OWo+oepeWbFEKRfNaay+F1Eo5Mj3A1SRjyx+qaFhm23nlipub7Cjv2azdUUiDH+VlpdwUFRg== dependencies: - "@babel/helper-annotate-as-pure" "^7.16.0" - "@babel/helper-wrap-function" "^7.16.5" - "@babel/types" "^7.16.0" + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-wrap-function" "^7.16.7" + "@babel/types" "^7.16.7" -"@babel/helper-replace-supers@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.5.tgz#96d3988bd0ab0a2d22c88c6198c3d3234ca25326" - integrity sha512-ao3seGVa/FZCMCCNDuBcqnBFSbdr8N2EW35mzojx3TwfIbdPmNK+JV6+2d5bR0Z71W5ocLnQp9en/cTF7pBJiQ== +"@babel/helper-replace-supers@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz#e9f5f5f32ac90429c1a4bdec0f231ef0c2838ab1" + integrity sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw== dependencies: - "@babel/helper-environment-visitor" "^7.16.5" - "@babel/helper-member-expression-to-functions" "^7.16.5" - "@babel/helper-optimise-call-expression" "^7.16.0" - "@babel/traverse" "^7.16.5" - "@babel/types" "^7.16.0" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-member-expression-to-functions" "^7.16.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/traverse" "^7.16.7" + "@babel/types" "^7.16.7" -"@babel/helper-simple-access@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz#21d6a27620e383e37534cf6c10bba019a6f90517" - integrity sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw== +"@babel/helper-simple-access@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz#d656654b9ea08dbb9659b69d61063ccd343ff0f7" + integrity sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g== dependencies: - "@babel/types" "^7.16.0" + "@babel/types" "^7.16.7" "@babel/helper-skip-transparent-expression-wrappers@^7.16.0": version "7.16.0" @@ -274,208 +274,208 @@ dependencies: "@babel/types" "^7.16.0" -"@babel/helper-split-export-declaration@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz#29672f43663e936df370aaeb22beddb3baec7438" - integrity sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw== +"@babel/helper-split-export-declaration@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" + integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== dependencies: - "@babel/types" "^7.16.0" + "@babel/types" "^7.16.7" -"@babel/helper-validator-identifier@^7.15.7": - version "7.15.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" - integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== +"@babel/helper-validator-identifier@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" + integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== -"@babel/helper-validator-option@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" - integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== +"@babel/helper-validator-option@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" + integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== -"@babel/helper-wrap-function@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.5.tgz#0158fca6f6d0889c3fee8a6ed6e5e07b9b54e41f" - integrity sha512-2J2pmLBqUqVdJw78U0KPNdeE2qeuIyKoG4mKV7wAq3mc4jJG282UgjZw4ZYDnqiWQuS3Y3IYdF/AQ6CpyBV3VA== +"@babel/helper-wrap-function@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.7.tgz#8ddf9eaa770ed43de4bc3687f3f3b0d6d5ecf014" + integrity sha512-7a9sABeVwcunnztZZ7WTgSw6jVYLzM1wua0Z4HIXm9S3/HC96WKQTkFgGEaj5W06SHHihPJ6Le6HzS5cGOQMNw== dependencies: - "@babel/helper-function-name" "^7.16.0" - "@babel/template" "^7.16.0" - "@babel/traverse" "^7.16.5" - "@babel/types" "^7.16.0" + "@babel/helper-function-name" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.16.7" + "@babel/types" "^7.16.7" -"@babel/helpers@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.16.5.tgz#29a052d4b827846dd76ece16f565b9634c554ebd" - integrity sha512-TLgi6Lh71vvMZGEkFuIxzaPsyeYCHQ5jJOOX1f0xXn0uciFuE8cEk0wyBquMcCxBXZ5BJhE2aUB7pnWTD150Tw== +"@babel/helpers@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.16.7.tgz#7e3504d708d50344112767c3542fc5e357fffefc" + integrity sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw== dependencies: - "@babel/template" "^7.16.0" - "@babel/traverse" "^7.16.5" - "@babel/types" "^7.16.0" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.16.7" + "@babel/types" "^7.16.7" -"@babel/highlight@^7.10.4", "@babel/highlight@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.0.tgz#6ceb32b2ca4b8f5f361fb7fd821e3fddf4a1725a" - integrity sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g== +"@babel/highlight@^7.10.4", "@babel/highlight@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.7.tgz#81a01d7d675046f0d96f82450d9d9578bdfd6b0b" + integrity sha512-aKpPMfLvGO3Q97V0qhw/V2SWNWlwfJknuwAunU7wZLSfrM4xTBvg7E5opUVi1kJTBKihE38CPg4nBiqX83PWYw== dependencies: - "@babel/helper-validator-identifier" "^7.15.7" + "@babel/helper-validator-identifier" "^7.16.7" chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.0", "@babel/parser@^7.16.5", "@babel/parser@^7.7.2": - version "7.16.6" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.6.tgz#8f194828193e8fa79166f34a4b4e52f3e769a314" - integrity sha512-Gr86ujcNuPDnNOY8mi383Hvi8IYrJVJYuf3XcuBM/Dgd+bINn/7tHqsj+tKkoreMbmGsFLsltI/JJd8fOFWGDQ== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.7.tgz#d372dda9c89fcec340a82630a9f533f2fe15877e" + integrity sha512-sR4eaSrnM7BV7QPzGfEX5paG/6wrZM3I0HDzfIAK06ESvo9oy3xBuVBxE3MbQaKNhvg8g/ixjMWo2CGpzpHsDA== -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.2": - version "7.16.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz#2977fca9b212db153c195674e57cfab807733183" - integrity sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz#4eda6d6c2a0aa79c70fa7b6da67763dfe2141050" + integrity sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz#358972eaab006f5eb0826183b0c93cbcaf13e1e2" - integrity sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz#cc001234dfc139ac45f6bcf801866198c8c72ff9" + integrity sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" - "@babel/plugin-proposal-optional-chaining" "^7.16.0" + "@babel/plugin-proposal-optional-chaining" "^7.16.7" -"@babel/plugin-proposal-async-generator-functions@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.5.tgz#fd3bd7e0d98404a3d4cbca15a72d533f8c9a2f67" - integrity sha512-C/FX+3HNLV6sz7AqbTQqEo1L9/kfrKjxcVtgyBCmvIgOjvuBVUWooDoi7trsLxOzCEo5FccjRvKHkfDsJFZlfA== +"@babel/plugin-proposal-async-generator-functions@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.7.tgz#739adc1212a9e4892de440cd7dfffb06172df78d" + integrity sha512-TTXBT3A5c11eqRzaC6beO6rlFT3Mo9C2e8eB44tTr52ESXSK2CIc2fOp1ynpAwQA8HhBMho+WXhMHWlAe3xkpw== dependencies: - "@babel/helper-plugin-utils" "^7.16.5" - "@babel/helper-remap-async-to-generator" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-remap-async-to-generator" "^7.16.7" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-proposal-class-properties@^7.12.13", "@babel/plugin-proposal-class-properties@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.5.tgz#3269f44b89122110f6339806e05d43d84106468a" - integrity sha512-pJD3HjgRv83s5dv1sTnDbZOaTjghKEz8KUn1Kbh2eAIRhGuyQ1XSeI4xVXU3UlIEVA3DAyIdxqT1eRn7Wcn55A== +"@babel/plugin-proposal-class-properties@^7.12.13", "@babel/plugin-proposal-class-properties@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz#925cad7b3b1a2fcea7e59ecc8eb5954f961f91b0" + integrity sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww== dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.5" - "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-proposal-class-static-block@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.5.tgz#df58ab015a7d3b0963aafc8f20792dcd834952a9" - integrity sha512-EEFzuLZcm/rNJ8Q5krK+FRKdVkd6FjfzT9tuSZql9sQn64K0hHA2KLJ0DqVot9/iV6+SsuadC5yI39zWnm+nmQ== +"@babel/plugin-proposal-class-static-block@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.7.tgz#712357570b612106ef5426d13dc433ce0f200c2a" + integrity sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.5" - "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-proposal-decorators@^7.12.13": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.16.5.tgz#4617420d3685078dfab8f68f859dca1448bbb3c7" - integrity sha512-XAiZll5oCdp2Dd2RbXA3LVPlFyIRhhcQy+G34p9ePpl6mjFkbqHAYHovyw2j5mqUrlBf0/+MtOIJ3JGYtz8qaw== + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.16.7.tgz#922907d2e3e327f5b07d2246bcfc0bd438f360d2" + integrity sha512-DoEpnuXK14XV9btI1k8tzNGCutMclpj4yru8aXKoHlVmbO1s+2A+g2+h4JhcjrxkFJqzbymnLG6j/niOf3iFXQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.5" - "@babel/helper-plugin-utils" "^7.16.5" - "@babel/plugin-syntax-decorators" "^7.16.5" + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-decorators" "^7.16.7" -"@babel/plugin-proposal-dynamic-import@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.5.tgz#2e0d19d5702db4dcb9bc846200ca02f2e9d60e9e" - integrity sha512-P05/SJZTTvHz79LNYTF8ff5xXge0kk5sIIWAypcWgX4BTRUgyHc8wRxJ/Hk+mU0KXldgOOslKaeqnhthcDJCJQ== +"@babel/plugin-proposal-dynamic-import@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz#c19c897eaa46b27634a00fee9fb7d829158704b2" + integrity sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg== dependencies: - "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-proposal-export-namespace-from@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.5.tgz#3b4dd28378d1da2fea33e97b9f25d1c2f5bf1ac9" - integrity sha512-i+sltzEShH1vsVydvNaTRsgvq2vZsfyrd7K7vPLUU/KgS0D5yZMe6uipM0+izminnkKrEfdUnz7CxMRb6oHZWw== +"@babel/plugin-proposal-export-namespace-from@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz#09de09df18445a5786a305681423ae63507a6163" + integrity sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA== dependencies: - "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-proposal-json-strings@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.5.tgz#1e726930fca139caab6b084d232a9270d9d16f9c" - integrity sha512-QQJueTFa0y9E4qHANqIvMsuxM/qcLQmKttBACtPCQzGUEizsXDACGonlPiSwynHfOa3vNw0FPMVvQzbuXwh4SQ== +"@babel/plugin-proposal-json-strings@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz#9732cb1d17d9a2626a08c5be25186c195b6fa6e8" + integrity sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-proposal-logical-assignment-operators@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.5.tgz#df1f2e4b5a0ec07abf061d2c18e53abc237d3ef5" - integrity sha512-xqibl7ISO2vjuQM+MzR3rkd0zfNWltk7n9QhaD8ghMmMceVguYrNDt7MikRyj4J4v3QehpnrU8RYLnC7z/gZLA== +"@babel/plugin-proposal-logical-assignment-operators@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz#be23c0ba74deec1922e639832904be0bea73cdea" + integrity sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg== dependencies: - "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.5.tgz#652555bfeeeee2d2104058c6225dc6f75e2d0f07" - integrity sha512-YwMsTp/oOviSBhrjwi0vzCUycseCYwoXnLiXIL3YNjHSMBHicGTz7GjVU/IGgz4DtOEXBdCNG72pvCX22ehfqg== +"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz#141fc20b6857e59459d430c850a0011e36561d99" + integrity sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-proposal-numeric-separator@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.5.tgz#edcb6379b6cf4570be64c45965d8da7a2debf039" - integrity sha512-DvB9l/TcsCRvsIV9v4jxR/jVP45cslTVC0PMVHvaJhhNuhn2Y1SOhCSFlPK777qLB5wb8rVDaNoqMTyOqtY5Iw== +"@babel/plugin-proposal-numeric-separator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz#d6b69f4af63fb38b6ca2558442a7fb191236eba9" + integrity sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw== dependencies: - "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.5.tgz#f30f80dacf7bc1404bf67f99c8d9c01665e830ad" - integrity sha512-UEd6KpChoyPhCoE840KRHOlGhEZFutdPDMGj+0I56yuTTOaT51GzmnEl/0uT41fB/vD2nT+Pci2KjezyE3HmUw== +"@babel/plugin-proposal-object-rest-spread@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.7.tgz#94593ef1ddf37021a25bdcb5754c4a8d534b01d8" + integrity sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA== dependencies: "@babel/compat-data" "^7.16.4" - "@babel/helper-compilation-targets" "^7.16.3" - "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.16.5" + "@babel/plugin-transform-parameters" "^7.16.7" -"@babel/plugin-proposal-optional-catch-binding@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.5.tgz#1a5405765cf589a11a33a1fd75b2baef7d48b74e" - integrity sha512-ihCMxY1Iljmx4bWy/PIMJGXN4NS4oUj1MKynwO07kiKms23pNvIn1DMB92DNB2R0EA882sw0VXIelYGdtF7xEQ== +"@babel/plugin-proposal-optional-catch-binding@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz#c623a430674ffc4ab732fd0a0ae7722b67cb74cf" + integrity sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA== dependencies: - "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.16.0", "@babel/plugin-proposal-optional-chaining@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.5.tgz#a5fa61056194d5059366c0009cb9a9e66ed75c1f" - integrity sha512-kzdHgnaXRonttiTfKYnSVafbWngPPr2qKw9BWYBESl91W54e+9R5pP70LtWxV56g0f05f/SQrwHYkfvbwcdQ/A== +"@babel/plugin-proposal-optional-chaining@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz#7cd629564724816c0e8a969535551f943c64c39a" + integrity sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA== dependencies: - "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-proposal-private-methods@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.5.tgz#2086f7d78c1b0c712d49b5c3fbc2d1ca21a7ee12" - integrity sha512-+yFMO4BGT3sgzXo+lrq7orX5mAZt57DwUK6seqII6AcJnJOIhBJ8pzKH47/ql/d426uQ7YhN8DpUFirQzqYSUA== +"@babel/plugin-proposal-private-methods@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.7.tgz#e418e3aa6f86edd6d327ce84eff188e479f571e0" + integrity sha512-7twV3pzhrRxSwHeIvFE6coPgvo+exNDOiGUMg39o2LiLo1Y+4aKpfkcLGcg1UHonzorCt7SNXnoMyCnnIOA8Sw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.5" - "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-proposal-private-property-in-object@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.5.tgz#a42d4b56005db3d405b12841309dbca647e7a21b" - integrity sha512-+YGh5Wbw0NH3y/E5YMu6ci5qTDmAEVNoZ3I54aB6nVEOZ5BQ7QJlwKq5pYVucQilMByGn/bvX0af+uNaPRCabA== +"@babel/plugin-proposal-private-property-in-object@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz#b0b8cef543c2c3d57e59e2c611994861d46a3fce" + integrity sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ== dependencies: - "@babel/helper-annotate-as-pure" "^7.16.0" - "@babel/helper-create-class-features-plugin" "^7.16.5" - "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-proposal-unicode-property-regex@^7.16.5", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.5.tgz#35fe753afa7c572f322bd068ff3377bde0f37080" - integrity sha512-s5sKtlKQyFSatt781HQwv1hoM5BQ9qRH30r+dK56OLDsHmV74mzwJNX7R1yMuE7VZKG5O6q/gmOGSAO6ikTudg== +"@babel/plugin-proposal-unicode-property-regex@^7.16.7", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz#635d18eb10c6214210ffc5ff4932552de08188a2" + integrity sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.0" - "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -505,12 +505,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-decorators@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.16.5.tgz#8d397dee482716a79f1a22314f0b4770a5b67427" - integrity sha512-3CbYTXfflvyy8O819uhZcZSMedZG4J8yS/NLTc/8T24M9ke1GssTGvg8VZu3Yn2LU5IyQSv1CmPq0a9JWHXJwg== +"@babel/plugin-syntax-decorators@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.16.7.tgz#f66a0199f16de7c1ef5192160ccf5d069739e3d3" + integrity sha512-vQ+PxL+srA7g6Rx6I1e15m55gftknl2X8GCUW1JTlkTaXZLJOS0UcaY0eK9jYT7IYf4awn6qwyghVHLDz1WyMw== dependencies: - "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" @@ -541,11 +541,11 @@ "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.12.13", "@babel/plugin-syntax-jsx@^7.2.0": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.5.tgz#bf255d252f78bc8b77a17cadc37d1aa5b8ed4394" - integrity sha512-42OGssv9NPk4QHKVgIHlzeLgPOW5rGgfV5jzG90AhcXXIv6hu/eqj63w4VgvRxdvZY3AlYeDgPiSJ3BqAd1Y6Q== + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz#50b6571d13f764266a113d77c82b4a6508bbe665" + integrity sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q== dependencies: - "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" @@ -604,299 +604,300 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-typescript@^7.7.2": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.5.tgz#f47a33e4eee38554f00fb6b2f894fa1f5649b0b3" - integrity sha512-/d4//lZ1Vqb4mZ5xTep3dDK888j7BGM/iKqBmndBaoYAFPlPKrGU608VVBz5JeyAb6YQDjRu1UKqj86UhwWVgw== + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz#39c9b55ee153151990fb038651d58d3fd03f98f8" + integrity sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A== dependencies: - "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-arrow-functions@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.5.tgz#04c18944dd55397b521d9d7511e791acea7acf2d" - integrity sha512-8bTHiiZyMOyfZFULjsCnYOWG059FVMes0iljEHSfARhNgFfpsqE92OrCffv3veSw9rwMkYcFe9bj0ZoXU2IGtQ== +"@babel/plugin-transform-arrow-functions@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz#44125e653d94b98db76369de9c396dc14bef4154" + integrity sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-async-to-generator@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.5.tgz#89c9b501e65bb14c4579a6ce9563f859de9b34e4" - integrity sha512-TMXgfioJnkXU+XRoj7P2ED7rUm5jbnDWwlCuFVTpQboMfbSya5WrmubNBAMlk7KXvywpo8rd8WuYZkis1o2H8w== +"@babel/plugin-transform-async-to-generator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.7.tgz#646e1262ac341b587ff5449844d4492dbb10ac4b" + integrity sha512-pFEfjnK4DfXCfAlA5I98BYdDJD8NltMzx19gt6DAmfE+2lXRfPUoa0/5SUjT4+TDE1W/rcxU/1lgN55vpAjjdg== dependencies: - "@babel/helper-module-imports" "^7.16.0" - "@babel/helper-plugin-utils" "^7.16.5" - "@babel/helper-remap-async-to-generator" "^7.16.5" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-remap-async-to-generator" "^7.16.7" -"@babel/plugin-transform-block-scoped-functions@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.5.tgz#af087494e1c387574260b7ee9b58cdb5a4e9b0b0" - integrity sha512-BxmIyKLjUGksJ99+hJyL/HIxLIGnLKtw772zYDER7UuycDZ+Xvzs98ZQw6NGgM2ss4/hlFAaGiZmMNKvValEjw== +"@babel/plugin-transform-block-scoped-functions@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz#4d0d57d9632ef6062cdf354bb717102ee042a620" + integrity sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg== dependencies: - "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-block-scoping@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.5.tgz#b91f254fe53e210eabe4dd0c40f71c0ed253c5e7" - integrity sha512-JxjSPNZSiOtmxjX7PBRBeRJTUKTyJ607YUYeT0QJCNdsedOe+/rXITjP08eG8xUpsLfPirgzdCFN+h0w6RI+pQ== +"@babel/plugin-transform-block-scoping@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz#f50664ab99ddeaee5bc681b8f3a6ea9d72ab4f87" + integrity sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-classes@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.5.tgz#6acf2ec7adb50fb2f3194dcd2909dbd056dcf216" - integrity sha512-DzJ1vYf/7TaCYy57J3SJ9rV+JEuvmlnvvyvYKFbk5u46oQbBvuB9/0w+YsVsxkOv8zVWKpDmUoj4T5ILHoXevA== +"@babel/plugin-transform-classes@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz#8f4b9562850cd973de3b498f1218796eb181ce00" + integrity sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ== dependencies: - "@babel/helper-annotate-as-pure" "^7.16.0" - "@babel/helper-environment-visitor" "^7.16.5" - "@babel/helper-function-name" "^7.16.0" - "@babel/helper-optimise-call-expression" "^7.16.0" - "@babel/helper-plugin-utils" "^7.16.5" - "@babel/helper-replace-supers" "^7.16.5" - "@babel/helper-split-export-declaration" "^7.16.0" + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.5.tgz#2af91ebf0cceccfcc701281ada7cfba40a9b322a" - integrity sha512-n1+O7xtU5lSLraRzX88CNcpl7vtGdPakKzww74bVwpAIRgz9JVLJJpOLb0uYqcOaXVM0TL6X0RVeIJGD2CnCkg== +"@babel/plugin-transform-computed-properties@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz#66dee12e46f61d2aae7a73710f591eb3df616470" + integrity sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw== dependencies: - "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-destructuring@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.5.tgz#89ebc87499ac4a81b897af53bb5d3eed261bd568" - integrity sha512-GuRVAsjq+c9YPK6NeTkRLWyQskDC099XkBSVO+6QzbnOnH2d/4mBVXYStaPrZD3dFRfg00I6BFJ9Atsjfs8mlg== +"@babel/plugin-transform-destructuring@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz#ca9588ae2d63978a4c29d3f33282d8603f618e23" + integrity sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A== dependencies: - "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-dotall-regex@^7.16.5", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.5.tgz#b40739c00b6686820653536d6d143e311de67936" - integrity sha512-iQiEMt8Q4/5aRGHpGVK2Zc7a6mx7qEAO7qehgSug3SDImnuMzgmm/wtJALXaz25zUj1PmnNHtShjFgk4PDx4nw== +"@babel/plugin-transform-dotall-regex@^7.16.7", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz#6b2d67686fab15fb6a7fd4bd895d5982cfc81241" + integrity sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.0" - "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-duplicate-keys@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.5.tgz#2450f2742325412b746d7d005227f5e8973b512a" - integrity sha512-81tijpDg2a6I1Yhj4aWY1l3O1J4Cg/Pd7LfvuaH2VVInAkXtzibz9+zSPdUM1WvuUi128ksstAP0hM5w48vQgg== +"@babel/plugin-transform-duplicate-keys@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz#2207e9ca8f82a0d36a5a67b6536e7ef8b08823c9" + integrity sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw== dependencies: - "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-exponentiation-operator@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.5.tgz#36e261fa1ab643cfaf30eeab38e00ed1a76081e2" - integrity sha512-12rba2HwemQPa7BLIKCzm1pT2/RuQHtSFHdNl41cFiC6oi4tcrp7gjB07pxQvFpcADojQywSjblQth6gJyE6CA== +"@babel/plugin-transform-exponentiation-operator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz#efa9862ef97e9e9e5f653f6ddc7b665e8536fe9b" + integrity sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.5" - "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-for-of@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.5.tgz#9b544059c6ca11d565457c0ff1f08e13ce225261" - integrity sha512-+DpCAJFPAvViR17PIMi9x2AE34dll5wNlXO43wagAX2YcRGgEVHCNFC4azG85b4YyyFarvkc/iD5NPrz4Oneqw== +"@babel/plugin-transform-for-of@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz#649d639d4617dff502a9a158c479b3b556728d8c" + integrity sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg== dependencies: - "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-function-name@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.5.tgz#6896ebb6a5538a75d6a4086a277752f655a7bd15" - integrity sha512-Fuec/KPSpVLbGo6z1RPw4EE1X+z9gZk1uQmnYy7v4xr4TO9p41v1AoUuXEtyqAI7H+xNJYSICzRqZBhDEkd3kQ== +"@babel/plugin-transform-function-name@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz#5ab34375c64d61d083d7d2f05c38d90b97ec65cf" + integrity sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA== dependencies: - "@babel/helper-function-name" "^7.16.0" - "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-literals@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.5.tgz#af392b90e3edb2bd6dc316844cbfd6b9e009d320" - integrity sha512-B1j9C/IfvshnPcklsc93AVLTrNVa69iSqztylZH6qnmiAsDDOmmjEYqOm3Ts2lGSgTSywnBNiqC949VdD0/gfw== +"@babel/plugin-transform-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz#254c9618c5ff749e87cb0c0cef1a0a050c0bdab1" + integrity sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-member-expression-literals@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.5.tgz#4bd6ecdc11932361631097b779ca5c7570146dd5" - integrity sha512-d57i3vPHWgIde/9Y8W/xSFUndhvhZN5Wu2TjRrN1MVz5KzdUihKnfDVlfP1U7mS5DNj/WHHhaE4/tTi4hIyHwQ== +"@babel/plugin-transform-member-expression-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz#6e5dcf906ef8a098e630149d14c867dd28f92384" + integrity sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw== dependencies: - "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-modules-amd@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.5.tgz#92c0a3e83f642cb7e75fada9ab497c12c2616527" - integrity sha512-oHI15S/hdJuSCfnwIz+4lm6wu/wBn7oJ8+QrkzPPwSFGXk8kgdI/AIKcbR/XnD1nQVMg/i6eNaXpszbGuwYDRQ== +"@babel/plugin-transform-modules-amd@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz#b28d323016a7daaae8609781d1f8c9da42b13186" + integrity sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g== dependencies: - "@babel/helper-module-transforms" "^7.16.5" - "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.15.0", "@babel/plugin-transform-modules-commonjs@^7.16.5", "@babel/plugin-transform-modules-commonjs@^7.2.0": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.5.tgz#4ee03b089536f076b2773196529d27c32b9d7bde" - integrity sha512-ABhUkxvoQyqhCWyb8xXtfwqNMJD7tx+irIRnUh6lmyFud7Jln1WzONXKlax1fg/ey178EXbs4bSGNd6PngO+SQ== +"@babel/plugin-transform-modules-commonjs@^7.15.0", "@babel/plugin-transform-modules-commonjs@^7.16.7", "@babel/plugin-transform-modules-commonjs@^7.2.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.7.tgz#fd119e6a433c527d368425b45df361e1e95d3c1a" + integrity sha512-h2RP2kE7He1ZWKyAlanMZrAbdv+Acw1pA8dQZhE025WJZE2z0xzFADAinXA9fxd5bn7JnM+SdOGcndGx1ARs9w== dependencies: - "@babel/helper-module-transforms" "^7.16.5" - "@babel/helper-plugin-utils" "^7.16.5" - "@babel/helper-simple-access" "^7.16.0" + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-simple-access" "^7.16.7" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.5.tgz#07078ba2e3cc94fbdd06836e355c246e98ad006b" - integrity sha512-53gmLdScNN28XpjEVIm7LbWnD/b/TpbwKbLk6KV4KqC9WyU6rq1jnNmVG6UgAdQZVVGZVoik3DqHNxk4/EvrjA== +"@babel/plugin-transform-modules-systemjs@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz#887cefaef88e684d29558c2b13ee0563e287c2d7" + integrity sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw== dependencies: - "@babel/helper-hoist-variables" "^7.16.0" - "@babel/helper-module-transforms" "^7.16.5" - "@babel/helper-plugin-utils" "^7.16.5" - "@babel/helper-validator-identifier" "^7.15.7" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-umd@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.5.tgz#caa9c53d636fb4e3c99fd35a4c9ba5e5cd7e002e" - integrity sha512-qTFnpxHMoenNHkS3VoWRdwrcJ3FhX567GvDA3hRZKF0Dj8Fmg0UzySZp3AP2mShl/bzcywb/UWAMQIjA1bhXvw== +"@babel/plugin-transform-modules-umd@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz#23dad479fa585283dbd22215bff12719171e7618" + integrity sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ== dependencies: - "@babel/helper-module-transforms" "^7.16.5" - "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-named-capturing-groups-regex@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.5.tgz#4afd8cdee377ce3568f4e8a9ee67539b69886a3c" - integrity sha512-/wqGDgvFUeKELW6ex6QB7dLVRkd5ehjw34tpXu1nhKC0sFfmaLabIswnpf8JgDyV2NeDmZiwoOb0rAmxciNfjA== +"@babel/plugin-transform-named-capturing-groups-regex@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.7.tgz#749d90d94e73cf62c60a0cc8d6b94d29305a81f2" + integrity sha512-kFy35VwmwIQwCjwrAQhl3+c/kr292i4KdLPKp5lPH03Ltc51qnFlIADoyPxc/6Naz3ok3WdYKg+KK6AH+D4utg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.0" + "@babel/helper-create-regexp-features-plugin" "^7.16.7" -"@babel/plugin-transform-new-target@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.5.tgz#759ea9d6fbbc20796056a5d89d13977626384416" - integrity sha512-ZaIrnXF08ZC8jnKR4/5g7YakGVL6go6V9ql6Jl3ecO8PQaQqFE74CuM384kezju7Z9nGCCA20BqZaR1tJ/WvHg== +"@babel/plugin-transform-new-target@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz#9967d89a5c243818e0800fdad89db22c5f514244" + integrity sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg== dependencies: - "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-object-super@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.5.tgz#8ccd9a1bcd3e7732ff8aa1702d067d8cd70ce380" - integrity sha512-tded+yZEXuxt9Jdtkc1RraW1zMF/GalVxaVVxh41IYwirdRgyAxxxCKZ9XB7LxZqmsjfjALxupNE1MIz9KH+Zg== +"@babel/plugin-transform-object-super@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz#ac359cf8d32cf4354d27a46867999490b6c32a94" + integrity sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw== dependencies: - "@babel/helper-plugin-utils" "^7.16.5" - "@babel/helper-replace-supers" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" -"@babel/plugin-transform-parameters@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.5.tgz#4fc74b18a89638bd90aeec44a11793ecbe031dde" - integrity sha512-B3O6AL5oPop1jAVg8CV+haeUte9oFuY85zu0jwnRNZZi3tVAbJriu5tag/oaO2kGaQM/7q7aGPBlTI5/sr9enA== +"@babel/plugin-transform-parameters@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz#a1721f55b99b736511cb7e0152f61f17688f331f" + integrity sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw== dependencies: - "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-property-literals@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.5.tgz#58f1465a7202a2bb2e6b003905212dd7a79abe3f" - integrity sha512-+IRcVW71VdF9pEH/2R/Apab4a19LVvdVsr/gEeotH00vSDVlKD+XgfSIw+cgGWsjDB/ziqGv/pGoQZBIiQVXHg== +"@babel/plugin-transform-property-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz#2dadac85155436f22c696c4827730e0fe1057a55" + integrity sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw== dependencies: - "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-regenerator@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.5.tgz#704cc6d8dd3dd4758267621ab7b36375238cef13" - integrity sha512-2z+it2eVWU8TtQQRauvGUqZwLy4+7rTfo6wO4npr+fvvN1SW30ZF3O/ZRCNmTuu4F5MIP8OJhXAhRV5QMJOuYg== +"@babel/plugin-transform-regenerator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz#9e7576dc476cb89ccc5096fff7af659243b4adeb" + integrity sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q== dependencies: regenerator-transform "^0.14.2" -"@babel/plugin-transform-reserved-words@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.5.tgz#db95e98799675e193dc2b47d3e72a7c0651d0c30" - integrity sha512-aIB16u8lNcf7drkhXJRoggOxSTUAuihTSTfAcpynowGJOZiGf+Yvi7RuTwFzVYSYPmWyARsPqUGoZWWWxLiknw== +"@babel/plugin-transform-reserved-words@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz#1d798e078f7c5958eec952059c460b220a63f586" + integrity sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg== dependencies: - "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-transform-runtime@^7.12.15": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.16.5.tgz#0cc3f01d69f299d5a42cd9ec43b92ea7a777b8db" - integrity sha512-gxpfS8XQWDbQ8oP5NcmpXxtEgCJkbO+W9VhZlOhr0xPyVaRjAQPOv7ZDj9fg0d5s9+NiVvMCE6gbkEkcsxwGRw== + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.16.7.tgz#1da184cb83a2287a01956c10c60e66dd503c18aa" + integrity sha512-2FoHiSAWkdq4L06uaDN3rS43i6x28desUVxq+zAFuE6kbWYQeiLPJI5IC7Sg9xKYVcrBKSQkVUfH6aeQYbl9QA== dependencies: - "@babel/helper-module-imports" "^7.16.0" - "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" babel-plugin-polyfill-corejs2 "^0.3.0" babel-plugin-polyfill-corejs3 "^0.4.0" babel-plugin-polyfill-regenerator "^0.3.0" semver "^6.3.0" -"@babel/plugin-transform-shorthand-properties@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.5.tgz#ccb60b1a23b799f5b9a14d97c5bc81025ffd96d7" - integrity sha512-ZbuWVcY+MAXJuuW7qDoCwoxDUNClfZxoo7/4swVbOW1s/qYLOMHlm9YRWMsxMFuLs44eXsv4op1vAaBaBaDMVg== +"@babel/plugin-transform-shorthand-properties@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz#e8549ae4afcf8382f711794c0c7b6b934c5fbd2a" + integrity sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg== dependencies: - "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-spread@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.5.tgz#912b06cff482c233025d3e69cf56d3e8fa166c29" - integrity sha512-5d6l/cnG7Lw4tGHEoga4xSkYp1euP7LAtrah1h1PgJ3JY7yNsjybsxQAnVK4JbtReZ/8z6ASVmd3QhYYKLaKZw== +"@babel/plugin-transform-spread@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz#a303e2122f9f12e0105daeedd0f30fb197d8ff44" + integrity sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg== dependencies: - "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" -"@babel/plugin-transform-sticky-regex@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.5.tgz#593579bb2b5a8adfbe02cb43823275d9098f75f9" - integrity sha512-usYsuO1ID2LXxzuUxifgWtJemP7wL2uZtyrTVM4PKqsmJycdS4U4mGovL5xXkfUheds10Dd2PjoQLXw6zCsCbg== +"@babel/plugin-transform-sticky-regex@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz#c84741d4f4a38072b9a1e2e3fd56d359552e8660" + integrity sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw== dependencies: - "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-template-literals@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.5.tgz#343651385fd9923f5aa2275ca352c5d9183e1773" - integrity sha512-gnyKy9RyFhkovex4BjKWL3BVYzUDG6zC0gba7VMLbQoDuqMfJ1SDXs8k/XK41Mmt1Hyp4qNAvGFb9hKzdCqBRQ== +"@babel/plugin-transform-template-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz#f3d1c45d28967c8e80f53666fc9c3e50618217ab" + integrity sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA== dependencies: - "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-typeof-symbol@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.5.tgz#a1d1bf2c71573fe30965d0e4cd6a3291202e20ed" - integrity sha512-ldxCkW180qbrvyCVDzAUZqB0TAeF8W/vGJoRcaf75awm6By+PxfJKvuqVAnq8N9wz5Xa6mSpM19OfVKKVmGHSQ== +"@babel/plugin-transform-typeof-symbol@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz#9cdbe622582c21368bd482b660ba87d5545d4f7e" + integrity sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-unicode-escapes@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.5.tgz#80507c225af49b4f4ee647e2a0ce53d2eeff9e85" - integrity sha512-shiCBHTIIChGLdyojsKQjoAyB8MBwat25lKM7MJjbe1hE0bgIppD+LX9afr41lLHOhqceqeWl4FkLp+Bgn9o1Q== +"@babel/plugin-transform-unicode-escapes@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz#da8717de7b3287a2c6d659750c964f302b31ece3" + integrity sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q== dependencies: - "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-unicode-regex@^7.16.5": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.5.tgz#ac84d6a1def947d71ffb832426aa53b83d7ed49e" - integrity sha512-GTJ4IW012tiPEMMubd7sD07iU9O/LOo8Q/oU4xNhcaq0Xn8+6TcUQaHtC8YxySo1T+ErQ8RaWogIEeFhKGNPzw== +"@babel/plugin-transform-unicode-regex@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz#0f7aa4a501198976e25e82702574c34cfebe9ef2" + integrity sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.0" - "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/preset-env@^7.11.0", "@babel/preset-env@^7.12.16": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.5.tgz#2e94d922f4a890979af04ffeb6a6b4e44ba90847" - integrity sha512-MiJJW5pwsktG61NDxpZ4oJ1CKxM1ncam9bzRtx9g40/WkLRkxFP6mhpkYV0/DxcciqoiHicx291+eUQrXb/SfQ== + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.7.tgz#c491088856d0b3177822a2bf06cb74d76327aa56" + integrity sha512-urX3Cee4aOZbRWOSa3mKPk0aqDikfILuo+C7qq7HY0InylGNZ1fekq9jmlr3pLWwZHF4yD7heQooc2Pow2KMyQ== dependencies: "@babel/compat-data" "^7.16.4" - "@babel/helper-compilation-targets" "^7.16.3" - "@babel/helper-plugin-utils" "^7.16.5" - "@babel/helper-validator-option" "^7.14.5" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.2" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.0" - "@babel/plugin-proposal-async-generator-functions" "^7.16.5" - "@babel/plugin-proposal-class-properties" "^7.16.5" - "@babel/plugin-proposal-class-static-block" "^7.16.5" - "@babel/plugin-proposal-dynamic-import" "^7.16.5" - "@babel/plugin-proposal-export-namespace-from" "^7.16.5" - "@babel/plugin-proposal-json-strings" "^7.16.5" - "@babel/plugin-proposal-logical-assignment-operators" "^7.16.5" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.5" - "@babel/plugin-proposal-numeric-separator" "^7.16.5" - "@babel/plugin-proposal-object-rest-spread" "^7.16.5" - "@babel/plugin-proposal-optional-catch-binding" "^7.16.5" - "@babel/plugin-proposal-optional-chaining" "^7.16.5" - "@babel/plugin-proposal-private-methods" "^7.16.5" - "@babel/plugin-proposal-private-property-in-object" "^7.16.5" - "@babel/plugin-proposal-unicode-property-regex" "^7.16.5" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-option" "^7.16.7" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.7" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.7" + "@babel/plugin-proposal-async-generator-functions" "^7.16.7" + "@babel/plugin-proposal-class-properties" "^7.16.7" + "@babel/plugin-proposal-class-static-block" "^7.16.7" + "@babel/plugin-proposal-dynamic-import" "^7.16.7" + "@babel/plugin-proposal-export-namespace-from" "^7.16.7" + "@babel/plugin-proposal-json-strings" "^7.16.7" + "@babel/plugin-proposal-logical-assignment-operators" "^7.16.7" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.7" + "@babel/plugin-proposal-numeric-separator" "^7.16.7" + "@babel/plugin-proposal-object-rest-spread" "^7.16.7" + "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" + "@babel/plugin-proposal-optional-chaining" "^7.16.7" + "@babel/plugin-proposal-private-methods" "^7.16.7" + "@babel/plugin-proposal-private-property-in-object" "^7.16.7" + "@babel/plugin-proposal-unicode-property-regex" "^7.16.7" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-class-properties" "^7.12.13" "@babel/plugin-syntax-class-static-block" "^7.14.5" @@ -911,40 +912,40 @@ "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-transform-arrow-functions" "^7.16.5" - "@babel/plugin-transform-async-to-generator" "^7.16.5" - "@babel/plugin-transform-block-scoped-functions" "^7.16.5" - "@babel/plugin-transform-block-scoping" "^7.16.5" - "@babel/plugin-transform-classes" "^7.16.5" - "@babel/plugin-transform-computed-properties" "^7.16.5" - "@babel/plugin-transform-destructuring" "^7.16.5" - "@babel/plugin-transform-dotall-regex" "^7.16.5" - "@babel/plugin-transform-duplicate-keys" "^7.16.5" - "@babel/plugin-transform-exponentiation-operator" "^7.16.5" - "@babel/plugin-transform-for-of" "^7.16.5" - "@babel/plugin-transform-function-name" "^7.16.5" - "@babel/plugin-transform-literals" "^7.16.5" - "@babel/plugin-transform-member-expression-literals" "^7.16.5" - "@babel/plugin-transform-modules-amd" "^7.16.5" - "@babel/plugin-transform-modules-commonjs" "^7.16.5" - "@babel/plugin-transform-modules-systemjs" "^7.16.5" - "@babel/plugin-transform-modules-umd" "^7.16.5" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.5" - "@babel/plugin-transform-new-target" "^7.16.5" - "@babel/plugin-transform-object-super" "^7.16.5" - "@babel/plugin-transform-parameters" "^7.16.5" - "@babel/plugin-transform-property-literals" "^7.16.5" - "@babel/plugin-transform-regenerator" "^7.16.5" - "@babel/plugin-transform-reserved-words" "^7.16.5" - "@babel/plugin-transform-shorthand-properties" "^7.16.5" - "@babel/plugin-transform-spread" "^7.16.5" - "@babel/plugin-transform-sticky-regex" "^7.16.5" - "@babel/plugin-transform-template-literals" "^7.16.5" - "@babel/plugin-transform-typeof-symbol" "^7.16.5" - "@babel/plugin-transform-unicode-escapes" "^7.16.5" - "@babel/plugin-transform-unicode-regex" "^7.16.5" + "@babel/plugin-transform-arrow-functions" "^7.16.7" + "@babel/plugin-transform-async-to-generator" "^7.16.7" + "@babel/plugin-transform-block-scoped-functions" "^7.16.7" + "@babel/plugin-transform-block-scoping" "^7.16.7" + "@babel/plugin-transform-classes" "^7.16.7" + "@babel/plugin-transform-computed-properties" "^7.16.7" + "@babel/plugin-transform-destructuring" "^7.16.7" + "@babel/plugin-transform-dotall-regex" "^7.16.7" + "@babel/plugin-transform-duplicate-keys" "^7.16.7" + "@babel/plugin-transform-exponentiation-operator" "^7.16.7" + "@babel/plugin-transform-for-of" "^7.16.7" + "@babel/plugin-transform-function-name" "^7.16.7" + "@babel/plugin-transform-literals" "^7.16.7" + "@babel/plugin-transform-member-expression-literals" "^7.16.7" + "@babel/plugin-transform-modules-amd" "^7.16.7" + "@babel/plugin-transform-modules-commonjs" "^7.16.7" + "@babel/plugin-transform-modules-systemjs" "^7.16.7" + "@babel/plugin-transform-modules-umd" "^7.16.7" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.7" + "@babel/plugin-transform-new-target" "^7.16.7" + "@babel/plugin-transform-object-super" "^7.16.7" + "@babel/plugin-transform-parameters" "^7.16.7" + "@babel/plugin-transform-property-literals" "^7.16.7" + "@babel/plugin-transform-regenerator" "^7.16.7" + "@babel/plugin-transform-reserved-words" "^7.16.7" + "@babel/plugin-transform-shorthand-properties" "^7.16.7" + "@babel/plugin-transform-spread" "^7.16.7" + "@babel/plugin-transform-sticky-regex" "^7.16.7" + "@babel/plugin-transform-template-literals" "^7.16.7" + "@babel/plugin-transform-typeof-symbol" "^7.16.7" + "@babel/plugin-transform-unicode-escapes" "^7.16.7" + "@babel/plugin-transform-unicode-regex" "^7.16.7" "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.16.0" + "@babel/types" "^7.16.7" babel-plugin-polyfill-corejs2 "^0.3.0" babel-plugin-polyfill-corejs3 "^0.4.0" babel-plugin-polyfill-regenerator "^0.3.0" @@ -970,43 +971,43 @@ regenerator-runtime "^0.12.0" "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.13", "@babel/runtime@^7.13.10", "@babel/runtime@^7.8.4": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.5.tgz#7f3e34bf8bdbbadf03fbb7b1ea0d929569c9487a" - integrity sha512-TXWihFIS3Pyv5hzR7j6ihmeLkZfrXGxAr5UfSl8CHf+6q/wpiYDkUau0czckpYG8QmnCIuPpdLtuA9VmuGGyMA== + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.7.tgz#03ff99f64106588c9c403c6ecb8c3bafbbdff1fa" + integrity sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ== dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.0.0", "@babel/template@^7.16.0", "@babel/template@^7.3.3": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.0.tgz#d16a35ebf4cd74e202083356fab21dd89363ddd6" - integrity sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A== +"@babel/template@^7.0.0", "@babel/template@^7.16.7", "@babel/template@^7.3.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" + integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== dependencies: - "@babel/code-frame" "^7.16.0" - "@babel/parser" "^7.16.0" - "@babel/types" "^7.16.0" + "@babel/code-frame" "^7.16.7" + "@babel/parser" "^7.16.7" + "@babel/types" "^7.16.7" -"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.5", "@babel/traverse@^7.7.2": - version "7.16.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.5.tgz#d7d400a8229c714a59b87624fc67b0f1fbd4b2b3" - integrity sha512-FOCODAzqUMROikDYLYxl4nmwiLlu85rNqBML/A5hKRVXG2LV8d0iMqgPzdYTcIpjZEBB7D6UDU9vxRZiriASdQ== +"@babel/traverse@^7.0.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.7.2": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.7.tgz#dac01236a72c2560073658dd1a285fe4e0865d76" + integrity sha512-8KWJPIb8c2VvY8AJrydh6+fVRo2ODx1wYBU2398xJVq0JomuLBZmVQzLPBblJgHIGYG4znCpUZUZ0Pt2vdmVYQ== dependencies: - "@babel/code-frame" "^7.16.0" - "@babel/generator" "^7.16.5" - "@babel/helper-environment-visitor" "^7.16.5" - "@babel/helper-function-name" "^7.16.0" - "@babel/helper-hoist-variables" "^7.16.0" - "@babel/helper-split-export-declaration" "^7.16.0" - "@babel/parser" "^7.16.5" - "@babel/types" "^7.16.0" + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.16.7" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/parser" "^7.16.7" + "@babel/types" "^7.16.7" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.16.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.0.tgz#db3b313804f96aadd0b776c4823e127ad67289ba" - integrity sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg== +"@babel/types@^7.0.0", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.7.tgz#4ed19d51f840ed4bd5645be6ce40775fecf03159" + integrity sha512-E8HuV7FO9qLpx6OtoGfUQ2cjIYnbFwvZWYBS+87EwtdMvmUPJSwykpovFB+8insbpF0uJcpr8KMUi64XZntZcg== dependencies: - "@babel/helper-validator-identifier" "^7.15.7" + "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" "@bcoe/v8-coverage@^0.2.3": @@ -1105,27 +1106,27 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== -"@jest/console@^27.4.2": - version "27.4.2" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.4.2.tgz#7a95612d38c007ddb528ee446fe5e5e785e685ce" - integrity sha512-xknHThRsPB/To1FUbi6pCe43y58qFC03zfb6R7fDb/FfC7k2R3i1l+izRBJf8DI46KhYGRaF14Eo9A3qbBoixg== +"@jest/console@^27.4.6": + version "27.4.6" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.4.6.tgz#0742e6787f682b22bdad56f9db2a8a77f6a86107" + integrity sha512-jauXyacQD33n47A44KrlOVeiXHEXDqapSdfb9kTekOchH/Pd18kBIO1+xxJQRLuG+LUuljFCwTG92ra4NW7SpA== dependencies: "@jest/types" "^27.4.2" "@types/node" "*" chalk "^4.0.0" - jest-message-util "^27.4.2" + jest-message-util "^27.4.6" jest-util "^27.4.2" slash "^3.0.0" -"@jest/core@^27.4.5": - version "27.4.5" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.4.5.tgz#cae2dc34259782f4866c6606c3b480cce920ed4c" - integrity sha512-3tm/Pevmi8bDsgvo73nX8p/WPng6KWlCyScW10FPEoN1HU4pwI83tJ3TsFvi1FfzsjwUlMNEPowgb/rPau/LTQ== +"@jest/core@^27.4.7": + version "27.4.7" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.4.7.tgz#84eabdf42a25f1fa138272ed229bcf0a1b5e6913" + integrity sha512-n181PurSJkVMS+kClIFSX/LLvw9ExSb+4IMtD6YnfxZVerw9ANYtW0bPrm0MJu2pfe9SY9FJ9FtQ+MdZkrZwjg== dependencies: - "@jest/console" "^27.4.2" - "@jest/reporters" "^27.4.5" - "@jest/test-result" "^27.4.2" - "@jest/transform" "^27.4.5" + "@jest/console" "^27.4.6" + "@jest/reporters" "^27.4.6" + "@jest/test-result" "^27.4.6" + "@jest/transform" "^27.4.6" "@jest/types" "^27.4.2" "@types/node" "*" ansi-escapes "^4.2.1" @@ -1134,63 +1135,63 @@ exit "^0.1.2" graceful-fs "^4.2.4" jest-changed-files "^27.4.2" - jest-config "^27.4.5" - jest-haste-map "^27.4.5" - jest-message-util "^27.4.2" + jest-config "^27.4.7" + jest-haste-map "^27.4.6" + jest-message-util "^27.4.6" jest-regex-util "^27.4.0" - jest-resolve "^27.4.5" - jest-resolve-dependencies "^27.4.5" - jest-runner "^27.4.5" - jest-runtime "^27.4.5" - jest-snapshot "^27.4.5" + jest-resolve "^27.4.6" + jest-resolve-dependencies "^27.4.6" + jest-runner "^27.4.6" + jest-runtime "^27.4.6" + jest-snapshot "^27.4.6" jest-util "^27.4.2" - jest-validate "^27.4.2" - jest-watcher "^27.4.2" + jest-validate "^27.4.6" + jest-watcher "^27.4.6" micromatch "^4.0.4" rimraf "^3.0.0" slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^27.4.4": - version "27.4.4" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.4.4.tgz#66ebebc79673d84aad29d2bb70a8c51e6c29bb4d" - integrity sha512-q+niMx7cJgt/t/b6dzLOh4W8Ef/8VyKG7hxASK39jakijJzbFBGpptx3RXz13FFV7OishQ9lTbv+dQ5K3EhfDQ== +"@jest/environment@^27.4.6": + version "27.4.6" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.4.6.tgz#1e92885d64f48c8454df35ed9779fbcf31c56d8b" + integrity sha512-E6t+RXPfATEEGVidr84WngLNWZ8ffCPky8RqqRK6u1Bn0LK92INe0MDttyPl/JOzaq92BmDzOeuqk09TvM22Sg== dependencies: - "@jest/fake-timers" "^27.4.2" + "@jest/fake-timers" "^27.4.6" "@jest/types" "^27.4.2" "@types/node" "*" - jest-mock "^27.4.2" + jest-mock "^27.4.6" -"@jest/fake-timers@^27.4.2": - version "27.4.2" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.4.2.tgz#d217f86c3ba2027bf29e0b731fd0cb761a72d093" - integrity sha512-f/Xpzn5YQk5adtqBgvw1V6bF8Nx3hY0OIRRpCvWcfPl0EAjdqWPdhH3t/3XpiWZqtjIEHDyMKP9ajpva1l4Zmg== +"@jest/fake-timers@^27.4.6": + version "27.4.6" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.4.6.tgz#e026ae1671316dbd04a56945be2fa251204324e8" + integrity sha512-mfaethuYF8scV8ntPpiVGIHQgS0XIALbpY2jt2l7wb/bvq4Q5pDLk4EP4D7SAvYT1QrPOPVZAtbdGAOOyIgs7A== dependencies: "@jest/types" "^27.4.2" "@sinonjs/fake-timers" "^8.0.1" "@types/node" "*" - jest-message-util "^27.4.2" - jest-mock "^27.4.2" + jest-message-util "^27.4.6" + jest-mock "^27.4.6" jest-util "^27.4.2" -"@jest/globals@^27.4.4": - version "27.4.4" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.4.4.tgz#fe501a80c23ea2dab585c42be2a519bb5e38530d" - integrity sha512-bqpqQhW30BOreXM8bA8t8JbOQzsq/WnPTnBl+It3UxAD9J8yxEAaBEylHx1dtBapAr/UBk8GidXbzmqnee8tYQ== +"@jest/globals@^27.4.6": + version "27.4.6" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.4.6.tgz#3f09bed64b0fd7f5f996920258bd4be8f52f060a" + integrity sha512-kAiwMGZ7UxrgPzu8Yv9uvWmXXxsy0GciNejlHvfPIfWkSxChzv6bgTS3YqBkGuHcis+ouMFI2696n2t+XYIeFw== dependencies: - "@jest/environment" "^27.4.4" + "@jest/environment" "^27.4.6" "@jest/types" "^27.4.2" - expect "^27.4.2" + expect "^27.4.6" -"@jest/reporters@^27.4.5": - version "27.4.5" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.4.5.tgz#e229acca48d18ea39e805540c1c322b075ae63ad" - integrity sha512-3orsG4vi8zXuBqEoy2LbnC1kuvkg1KQUgqNxmxpQgIOQEPeV0onvZu+qDQnEoX8qTQErtqn/xzcnbpeTuOLSiA== +"@jest/reporters@^27.4.6": + version "27.4.6" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.4.6.tgz#b53dec3a93baf9b00826abf95b932de919d6d8dd" + integrity sha512-+Zo9gV81R14+PSq4wzee4GC2mhAN9i9a7qgJWL90Gpx7fHYkWpTBvwWNZUXvJByYR9tAVBdc8VxDWqfJyIUrIQ== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^27.4.2" - "@jest/test-result" "^27.4.2" - "@jest/transform" "^27.4.5" + "@jest/console" "^27.4.6" + "@jest/test-result" "^27.4.6" + "@jest/transform" "^27.4.6" "@jest/types" "^27.4.2" "@types/node" "*" chalk "^4.0.0" @@ -1199,14 +1200,14 @@ glob "^7.1.2" graceful-fs "^4.2.4" istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^4.0.3" + istanbul-lib-instrument "^5.1.0" istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.0.2" - jest-haste-map "^27.4.5" - jest-resolve "^27.4.5" + istanbul-reports "^3.1.3" + jest-haste-map "^27.4.6" + jest-resolve "^27.4.6" jest-util "^27.4.2" - jest-worker "^27.4.5" + jest-worker "^27.4.6" slash "^3.0.0" source-map "^0.6.0" string-length "^4.0.1" @@ -1222,43 +1223,43 @@ graceful-fs "^4.2.4" source-map "^0.6.0" -"@jest/test-result@^27.4.2": - version "27.4.2" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.4.2.tgz#05fd4a5466ec502f3eae0b39dff2b93ea4d5d9ec" - integrity sha512-kr+bCrra9jfTgxHXHa2UwoQjxvQk3Am6QbpAiJ5x/50LW8llOYrxILkqY0lZRW/hu8FXesnudbql263+EW9iNA== +"@jest/test-result@^27.4.6": + version "27.4.6" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.4.6.tgz#b3df94c3d899c040f602cea296979844f61bdf69" + integrity sha512-fi9IGj3fkOrlMmhQqa/t9xum8jaJOOAi/lZlm6JXSc55rJMXKHxNDN1oCP39B0/DhNOa2OMupF9BcKZnNtXMOQ== dependencies: - "@jest/console" "^27.4.2" + "@jest/console" "^27.4.6" "@jest/types" "^27.4.2" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^27.4.5": - version "27.4.5" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.4.5.tgz#1d7e026844d343b60d2ca7fd82c579a17b445d7d" - integrity sha512-n5woIn/1v+FT+9hniymHPARA9upYUmfi5Pw9ewVwXCDlK4F5/Gkees9v8vdjGdAIJ2MPHLHodiajLpZZanWzEQ== +"@jest/test-sequencer@^27.4.6": + version "27.4.6" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.4.6.tgz#447339b8a3d7b5436f50934df30854e442a9d904" + integrity sha512-3GL+nsf6E1PsyNsJuvPyIz+DwFuCtBdtvPpm/LMXVkBJbdFvQYCDpccYT56qq5BGniXWlE81n2qk1sdXfZebnw== dependencies: - "@jest/test-result" "^27.4.2" + "@jest/test-result" "^27.4.6" graceful-fs "^4.2.4" - jest-haste-map "^27.4.5" - jest-runtime "^27.4.5" + jest-haste-map "^27.4.6" + jest-runtime "^27.4.6" -"@jest/transform@^27.4.5": - version "27.4.5" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.4.5.tgz#3dfe2e3680cd4aa27356172bf25617ab5b94f195" - integrity sha512-PuMet2UlZtlGzwc6L+aZmR3I7CEBpqadO03pU40l2RNY2fFJ191b9/ITB44LNOhVtsyykx0OZvj0PCyuLm7Eew== +"@jest/transform@^27.4.6": + version "27.4.6" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.4.6.tgz#153621940b1ed500305eacdb31105d415dc30231" + integrity sha512-9MsufmJC8t5JTpWEQJ0OcOOAXaH5ioaIX6uHVBLBMoCZPfKKQF+EqP8kACAvCZ0Y1h2Zr3uOccg8re+Dr5jxyw== dependencies: "@babel/core" "^7.1.0" "@jest/types" "^27.4.2" - babel-plugin-istanbul "^6.0.0" + babel-plugin-istanbul "^6.1.1" chalk "^4.0.0" convert-source-map "^1.4.0" fast-json-stable-stringify "^2.0.0" graceful-fs "^4.2.4" - jest-haste-map "^27.4.5" + jest-haste-map "^27.4.6" jest-regex-util "^27.4.0" jest-util "^27.4.2" micromatch "^4.0.4" - pirates "^4.0.1" + pirates "^4.0.4" slash "^3.0.0" source-map "^0.6.1" write-file-atomic "^3.0.0" @@ -1335,9 +1336,9 @@ integrity sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g== "@popperjs/core@^2.9.0": - version "2.11.0" - resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.0.tgz#6734f8ebc106a0860dff7f92bf90df193f0935d7" - integrity sha512-zrsUxjLOKAzdewIDRWy9nsV1GQsKBCWaGwsZQlCgr6/q+vjyZhFgqedLfFBuI9anTPEUT4APq9Mu0SZBTzIcGQ== + version "2.11.2" + resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.2.tgz#830beaec4b4091a9e9398ac50f865ddea52186b9" + integrity sha512-92FRmppjjqz29VMJ2dn+xdyXZBrMlE42AV6Kq6BwjWV7CNUW1hs2FtxSNLQE+gJhaZ6AAmYuO9y8dshhcBl7vA== "@rollup/plugin-babel@^5.2.0": version "5.3.0" @@ -1432,25 +1433,30 @@ magic-string "^0.25.0" string.prototype.matchall "^4.0.6" +"@tailwindcss/line-clamp@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@tailwindcss/line-clamp/-/line-clamp-0.3.0.tgz#bb342d7bdc11a6568dc6d2aacacd531b25eae7cf" + integrity sha512-ffDDclrqr3sy8cpChCozedDUAN8enxqAiWeH8d4dGQ2hcXlxf51+7KleveFi/n/TxEuRVApoL7hICeDOdYPKpg== + "@tiptap/core@^2.0.0-beta.41": - version "2.0.0-beta.158" - resolved "https://registry.yarnpkg.com/@tiptap/core/-/core-2.0.0-beta.158.tgz#9e2e66248f76a6ee8ba95cb4424befc15f7b91e0" - integrity sha512-hNyvL3Lnu0WqUxdTu29P5YxV48uXZXUCkVxQ2zT/ZRNx0PvX2ucs4F0I9QJsZK+PsPUkfKGNvj4NPCKooUv2gg== + version "2.0.0-beta.161" + resolved "https://registry.yarnpkg.com/@tiptap/core/-/core-2.0.0-beta.161.tgz#d91f4639c6ea5ad02fe1194cd7466daf9f12a2eb" + integrity sha512-SRp4dia0O3xxRYfoghYId0LWLkLeMrnYm1CyboJHsFMH28qL4ckzTTaWQ0UwO8FdvziSNCNUIUFWL1bXOiqwXw== dependencies: "@types/prosemirror-commands" "^1.0.4" "@types/prosemirror-keymap" "^1.0.4" - "@types/prosemirror-model" "^1.13.2" + "@types/prosemirror-model" "^1.16.0" "@types/prosemirror-schema-list" "^1.0.3" "@types/prosemirror-state" "^1.2.8" "@types/prosemirror-transform" "^1.1.5" "@types/prosemirror-view" "^1.19.2" prosemirror-commands "^1.1.12" prosemirror-keymap "^1.1.5" - prosemirror-model "^1.15.0" + prosemirror-model "^1.16.1" prosemirror-schema-list "^1.1.6" prosemirror-state "^1.3.4" prosemirror-transform "^1.3.3" - prosemirror-view "^1.23.3" + prosemirror-view "^1.23.5" "@tiptap/extension-blockquote@^2.0.0-beta.25": version "2.0.0-beta.26" @@ -1462,19 +1468,19 @@ resolved "https://registry.yarnpkg.com/@tiptap/extension-bold/-/extension-bold-2.0.0-beta.25.tgz#ec19e7c862d25bae49609c5d6a873f372c506dee" integrity sha512-ZNdgFYDxKo8lAp0Pqzu45I0JH3ah8/X5TCYg9zNg3QwLUFT16g2LlWDMUDGT5pH9aXxgtFaEdoVacu0EyhlPnQ== -"@tiptap/extension-bubble-menu@^2.0.0-beta.52", "@tiptap/extension-bubble-menu@^2.0.0-beta.9": - version "2.0.0-beta.52" - resolved "https://registry.yarnpkg.com/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.0.0-beta.52.tgz#19f9a253330c2346edf4273f399c58ece4f95450" - integrity sha512-fOFFEcrfClX0d0/sNvlaOcEempHXARXrmZnGEV8GwlVuC8BY9Di+kkpG+dMl903FZte5WZa1W1XI3DCuSTU0kQ== +"@tiptap/extension-bubble-menu@^2.0.0-beta.54", "@tiptap/extension-bubble-menu@^2.0.0-beta.9": + version "2.0.0-beta.54" + resolved "https://registry.yarnpkg.com/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.0.0-beta.54.tgz#90ac838cb7899317207037abb74ed2f68528bd22" + integrity sha512-jSvNy+ZVHIzEvf8BY/pLpir7CB4lWL4RNUWLT6YMmGCzdzYJK3RZ6Qp0Yoo7UMTjA5JDGn3Ax1lDj4qcsoXwzA== dependencies: prosemirror-state "^1.3.4" - prosemirror-view "^1.23.3" + prosemirror-view "^1.23.5" tippy.js "^6.3.7" "@tiptap/extension-bullet-list@^2.0.0-beta.23": - version "2.0.0-beta.25" - resolved "https://registry.yarnpkg.com/@tiptap/extension-bullet-list/-/extension-bullet-list-2.0.0-beta.25.tgz#d7307e65b706a9c4926c5e8dfb55efd141a8cfa1" - integrity sha512-0bXbiNzxkOUVY5kjsLJa0VsqP2GexMOAr/khTNk2okN0Xoy5qAWwN+t4bzGs2d0YdFS1xVb/AQm5MBrl1CMfHw== + version "2.0.0-beta.26" + resolved "https://registry.yarnpkg.com/@tiptap/extension-bullet-list/-/extension-bullet-list-2.0.0-beta.26.tgz#b42126d2d984c04041b14037e8d3ec1bcf16e7ec" + integrity sha512-1n5HV8gY1tLjPk4x48nva6SZlFHoPlRfF6pqSu9JcJxPO7FUSPxUokuz4swYNe0LRrtykfyNz44dUcxKVhoFow== "@tiptap/extension-document@^2.0.0-beta.15": version "2.0.0-beta.15" @@ -1489,27 +1495,27 @@ "@types/prosemirror-dropcursor" "^1.0.3" prosemirror-dropcursor "^1.4.0" -"@tiptap/extension-floating-menu@^2.0.0-beta.47": - version "2.0.0-beta.47" - resolved "https://registry.yarnpkg.com/@tiptap/extension-floating-menu/-/extension-floating-menu-2.0.0-beta.47.tgz#601bf848a5cd79888e48d74e434dcd3f4569b793" - integrity sha512-V98UzavO8RhX/ZE9FKGWwUhk/NDU52a9z0VN6kkwqNN0c8V/voVoDgVK9iWgzG0ji7OhuYR0YDSVhSkgpg0Sww== +"@tiptap/extension-floating-menu@^2.0.0-beta.49": + version "2.0.0-beta.49" + resolved "https://registry.yarnpkg.com/@tiptap/extension-floating-menu/-/extension-floating-menu-2.0.0-beta.49.tgz#36682849f50e217137775d7f738af952a0434113" + integrity sha512-VY0d+fJmz8FP1CxqB9u09xCZe/9Wtwff+SxY+LGpflVf0JjS+CWcaVIDNF8zHG13SMobQ5xH6RRnSuTzlS2bRA== dependencies: prosemirror-state "^1.3.4" - prosemirror-view "^1.23.3" + prosemirror-view "^1.23.5" tippy.js "^6.3.7" "@tiptap/extension-gapcursor@^2.0.0-beta.33": - version "2.0.0-beta.33" - resolved "https://registry.yarnpkg.com/@tiptap/extension-gapcursor/-/extension-gapcursor-2.0.0-beta.33.tgz#99414204e61655d4df61efc27823732176719532" - integrity sha512-Yu6BJ1bseyXIgLlcw/2R/2wWe1mIQilMwW7hhfDJPLbFwLJrMINtA9hxd2qY7mtW19/CveT5HOihQS6QEk59iw== + version "2.0.0-beta.34" + resolved "https://registry.yarnpkg.com/@tiptap/extension-gapcursor/-/extension-gapcursor-2.0.0-beta.34.tgz#0e4971affb1621934422dd5fc4bf2dd7a84f70f7" + integrity sha512-Vm8vMWWQ2kJcUOLfB5CEo5pYgyudI7JeeiZvX9ScPmUmgKVYhEpt3EAICY9pUYJ41aAVH35gZLXkUtsz2f9GHw== dependencies: "@types/prosemirror-gapcursor" "^1.0.4" - prosemirror-gapcursor "^1.2.0" + prosemirror-gapcursor "^1.2.1" "@tiptap/extension-heading@^2.0.0-beta.23": - version "2.0.0-beta.24" - resolved "https://registry.yarnpkg.com/@tiptap/extension-heading/-/extension-heading-2.0.0-beta.24.tgz#52ba163c8d16985739387682d5e5b28ddf242661" - integrity sha512-5a3vgdO7Cf2+z7sulCGs/1j23gBcKiZe3pA1FrC5h6blwLu86hA1xnMAVBVNilP9b6c9f3lN9yxMzEWsp6ZEkA== + version "2.0.0-beta.25" + resolved "https://registry.yarnpkg.com/@tiptap/extension-heading/-/extension-heading-2.0.0-beta.25.tgz#80d88cd0269e824b6b2e3e4dcd60280aff83c906" + integrity sha512-7cK2gB3eqb7U0KmpWIPT7tsHGuVeFk4q1q/V6q91NTtZ4HdOMAyFuYTZu1iXufKyoEXTftByE85EYsfJGeGiRQ== "@tiptap/extension-history@^2.0.0-beta.21": version "2.0.0-beta.21" @@ -1530,12 +1536,12 @@ integrity sha512-7PvhioTX9baVp5+AmmZU0qna+dFPZCRlSEN/GciH57N77d2uhJ/ZW5iQWTbvy5HBNddQB4Jts1UDIaC7WASrGA== "@tiptap/extension-link@^2.0.0-beta.8": - version "2.0.0-beta.33" - resolved "https://registry.yarnpkg.com/@tiptap/extension-link/-/extension-link-2.0.0-beta.33.tgz#b4293f44c1e304b3e72e16eb53d14908f177830e" - integrity sha512-w0ywONZ9bZddelcNWmrsc3rvzWDVq20pdwHffdJqGFrQSFusSeF3OY0hjHWaske9DLow1vUZvP13IrIhpqsMXg== + version "2.0.0-beta.35" + resolved "https://registry.yarnpkg.com/@tiptap/extension-link/-/extension-link-2.0.0-beta.35.tgz#78fff63542a9032499bfeed7b695dab1c8f9d43e" + integrity sha512-FQRjboP69QvUxPI97BRlLzfm7LHDYuAdM/mgEBwDE/i0w7I9lVlfpdGGd4hiPNfD2gMEqHfYJzb1K1qMZw+yRw== dependencies: - linkifyjs "^3.0.4" - prosemirror-model "^1.15.0" + linkifyjs "^3.0.5" + prosemirror-model "^1.16.1" prosemirror-state "^1.3.4" "@tiptap/extension-list-item@^2.0.0-beta.19": @@ -1544,18 +1550,18 @@ integrity sha512-5IPEspJt38t9ROj4xLUesOVEYlTT/R9Skd9meHRxJQZX1qrzBICs5PC/WRIsnexrvTBhdxpYgCYjpvpsJBlKuQ== "@tiptap/extension-mention@^2.0.0-beta.42": - version "2.0.0-beta.90" - resolved "https://registry.yarnpkg.com/@tiptap/extension-mention/-/extension-mention-2.0.0-beta.90.tgz#49d6d1687306df4d075a1de165ece0f1d07f7594" - integrity sha512-YQRKz93Y6+6noVwOXc6F4wKl47uBHNGpqlkpjP5h87F1gubLtYwyIJ8HsUwGM5qTvIln5nz7CiVN2I2H8kgJpA== + version "2.0.0-beta.91" + resolved "https://registry.yarnpkg.com/@tiptap/extension-mention/-/extension-mention-2.0.0-beta.91.tgz#6c5e25f1bec3b0661b3fc1bc162fe7be26565ae9" + integrity sha512-BXpMkTO7y1kjoGvRdTKyp4DQCI8rDj61lqAXHWoHlGX/mRDDr3gqdOyIxic1i2aXpid8VF2uDx6Zi1Yt1IRd7g== dependencies: - "@tiptap/suggestion" "^2.0.0-beta.85" - prosemirror-model "^1.15.0" + "@tiptap/suggestion" "^2.0.0-beta.86" + prosemirror-model "^1.16.1" prosemirror-state "^1.3.4" "@tiptap/extension-ordered-list@^2.0.0-beta.24": - version "2.0.0-beta.26" - resolved "https://registry.yarnpkg.com/@tiptap/extension-ordered-list/-/extension-ordered-list-2.0.0-beta.26.tgz#a1a045553192e64623266d55d9bbb20e5df16956" - integrity sha512-S2ybqnqGf1fynT21A8e99TsJ0TvU1xmVumDUfUi6/tLp5XLASbjK7ZlWdRje+FHxz4JXaP/34+NdFymGcVb5mQ== + version "2.0.0-beta.27" + resolved "https://registry.yarnpkg.com/@tiptap/extension-ordered-list/-/extension-ordered-list-2.0.0-beta.27.tgz#ed48a53a9b012d578613b68375db31e8664bfdc9" + integrity sha512-apFDeignxdZb3cA3p1HJu0zw1JgJdBYUBz1r7f99qdNybYuk3I/1MPUvlOuOgvIrBB/wydoyVDP+v9F7QN3tfQ== "@tiptap/extension-paragraph@^2.0.0-beta.22": version "2.0.0-beta.23" @@ -1577,23 +1583,23 @@ resolved "https://registry.yarnpkg.com/@tiptap/extension-underline/-/extension-underline-2.0.0-beta.22.tgz#e6b83be0c0944183b47aa30d53f2ab5cd7defe23" integrity sha512-c+tOv4CRBG2pgtAACEsDwvbmM8C89M/CeelTcLLu8zrk+PRy7yj8DKLUtcb9Ybsa7f1Suk6iqyj3dkfxuuvDLw== -"@tiptap/suggestion@^2.0.0-beta.85": - version "2.0.0-beta.85" - resolved "https://registry.yarnpkg.com/@tiptap/suggestion/-/suggestion-2.0.0-beta.85.tgz#9b63e6f7d60982f77e93f673e48b20e2aa1c724a" - integrity sha512-YpVKtP9wLVLvPKpZHVr+8cy+AbaTn1wF1PLGhNoazGCSi+v6PHD3DG2iRfC1PKzMa5PEiHI1UIdJq9xrtu9zXg== +"@tiptap/suggestion@^2.0.0-beta.86": + version "2.0.0-beta.86" + resolved "https://registry.yarnpkg.com/@tiptap/suggestion/-/suggestion-2.0.0-beta.86.tgz#ce0e33001a5f8c8d1f89188743bc7e6bd41e2338" + integrity sha512-T39GOxn+9u0Hp8pL44zJMB7bFEmUhC4HfLobtA1I0kUtVQL8ieVrPfdzbkQ5Z0fQFyukhqH5RxU18HDqhIBDyA== dependencies: - prosemirror-model "^1.15.0" + prosemirror-model "^1.16.1" prosemirror-state "^1.3.4" - prosemirror-view "^1.23.3" + prosemirror-view "^1.23.5" "@tiptap/vue-2@^2.0.0-beta.21": - version "2.0.0-beta.72" - resolved "https://registry.yarnpkg.com/@tiptap/vue-2/-/vue-2-2.0.0-beta.72.tgz#c5d391f0f8180ef0db45fcefda548d548967b075" - integrity sha512-qC+QPK8YJNenGTd1crzIkDczPwjzByplgqcyhJWkxcRCwxAlYj0wMReZGRu8Sf0EVjggitQCBdToflYlmgL2Bw== + version "2.0.0-beta.74" + resolved "https://registry.yarnpkg.com/@tiptap/vue-2/-/vue-2-2.0.0-beta.74.tgz#da9e56113018525d0cb55812a2452d57b9710d26" + integrity sha512-OY6RhR2DSvP4iIxtoWeg2qmQ1uYP4kJkdMT5ePQBFqVzs6l5+FpSjETskS8EwZVgM/IrLTMp5lHfKboP/YacOA== dependencies: - "@tiptap/extension-bubble-menu" "^2.0.0-beta.52" - "@tiptap/extension-floating-menu" "^2.0.0-beta.47" - prosemirror-view "^1.23.3" + "@tiptap/extension-bubble-menu" "^2.0.0-beta.54" + "@tiptap/extension-floating-menu" "^2.0.0-beta.49" + prosemirror-view "^1.23.5" "@tootallnate/once@1": version "1.1.2" @@ -1606,9 +1612,9 @@ integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": - version "7.1.17" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.17.tgz#f50ac9d20d64153b510578d84f9643f9a3afbe64" - integrity sha512-6zzkezS9QEIL8yCBvXWxPTJPNuMeECJVxSOhxNY/jfq9LxOTHivaYTqr37n9LknWWRTIkzqH2UilS5QFvfa90A== + version "7.1.18" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.18.tgz#1a29abcc411a9c05e2094c98f9a1b7da6cdf49f8" + integrity sha512-S7unDjm/C7z2A2R9NzfKCK1I+BAALDtxEmsJBwlB3EzNfb929ykjL++1CK9LO++EIp2fQrC8O+BwjKvz6UeDyQ== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" @@ -1617,9 +1623,9 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.3" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.3.tgz#f456b4b2ce79137f768aa130d2423d2f0ccfaba5" - integrity sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA== + version "7.6.4" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" + integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== dependencies: "@babel/types" "^7.0.0" @@ -1646,14 +1652,14 @@ "@types/connect" "*" "@types/node" "*" -"@types/bonjour@*", "@types/bonjour@^3.5.9": - version "3.5.9" - resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.9.tgz#3cc4e5135dbb5940fc6051604809234612f89cb4" - integrity sha512-VkZUiYevvtPyFu5XtpYw9a8moCSzxgjs5PAFF4yXjA7eYHvzBlXe+eJdqBBNWWVzI1r7Ki0KxMYvaQuhm+6f5A== +"@types/bonjour@^3.5.9": + version "3.5.10" + resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.10.tgz#0f6aadfe00ea414edc86f5d106357cda9701e275" + integrity sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw== dependencies: "@types/node" "*" -"@types/connect-history-api-fallback@*", "@types/connect-history-api-fallback@^1.3.5": +"@types/connect-history-api-fallback@^1.3.5": version "1.3.5" resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz#d1f7a8a09d0ed5a57aee5ae9c18ab9b803205dae" integrity sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw== @@ -1682,9 +1688,9 @@ integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== "@types/eslint@*": - version "8.2.1" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.2.1.tgz#13f3d69bac93c2ae008019c28783868d0a1d6605" - integrity sha512-UP9rzNn/XyGwb5RQ2fok+DzcIRIYwc16qTXse5+Smsy8MOIccCChT15KAwnsgQx4PzJkaMq4myFyZ4CL5TjhIQ== + version "8.2.2" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.2.2.tgz#b64dbdb64b1957cfc8a698c68297fcf8983e94c7" + integrity sha512-nQxgB8/Sg+QKhnV8e0WzPpxjIGT3tuJDDzybkDi8ItE/IgTlHo07U0shaIjzhcvQxlq9SDRE42lsJ23uvEgJ2A== dependencies: "@types/estree" "*" "@types/json-schema" "*" @@ -1708,9 +1714,9 @@ integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== "@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18": - version "4.17.26" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.26.tgz#5d9a8eeecb9d5f9d7fc1d85f541512a84638ae88" - integrity sha512-zeu3tpouA043RHxW0gzRxwCHchMgftE8GArRsvYT0ByDMbn19olQHx5jLue0LxWY6iYtXb7rXmuVtSkhy9YZvQ== + version "4.17.27" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.27.tgz#7a776191e47295d2a05962ecbb3a4ce97e38b401" + integrity sha512-e/sVallzUTPdyOTiqi8O8pMdBBphscvI6E4JYaKlja4Lm+zh7UFSSdW5VMkRbhDtmrONqOUHOXRguPsDckzxNA== dependencies: "@types/node" "*" "@types/qs" "*" @@ -1751,9 +1757,9 @@ "@types/node" "*" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" - integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" + integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== "@types/istanbul-lib-report@*": version "3.0.0" @@ -1770,9 +1776,9 @@ "@types/istanbul-lib-report" "*" "@types/jest@^27.0.1", "@types/jest@^27.0.2": - version "27.0.3" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.0.3.tgz#0cf9dfe9009e467f70a342f0f94ead19842a783a" - integrity sha512-cmmwv9t7gBYt7hNKH5Spu7Kuu/DotGa+Ff+JGRKZ4db5eh8PnKS4LuebJ3YLUoyOyIHraTGyULn23YtEAm0VSg== + version "27.4.0" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.4.0.tgz#037ab8b872067cae842a320841693080f9cb84ed" + integrity sha512-gHl8XuC1RZ8H2j5sHv/JqsaxXkDDM9iDOgu0Wp8sjs4u/snb2PVehyWXJPr+ORA0RPpgw231mnutWI1+0hgjIQ== dependencies: jest-diff "^27.0.0" pretty-format "^27.0.0" @@ -1795,9 +1801,9 @@ "@types/leaflet" "*" "@types/leaflet@*", "@types/leaflet@^1.5.2": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@types/leaflet/-/leaflet-1.7.6.tgz#6580f4babb648972c5af3abc3d66866753fa9311" - integrity sha512-Emkz3V08QnlelSbpT46OEAx+TBZYTOX2r1yM7W+hWg5+djHtQ1GbEXBDRLaqQDOYcDI51Ss0ayoqoKD4CtLUDA== + version "1.7.8" + resolved "https://registry.yarnpkg.com/@types/leaflet/-/leaflet-1.7.8.tgz#fbae5a3a3d22780632715287764352f80bbe3d4a" + integrity sha512-prZwhmUznkwTYCTZVGTR4U1GzgPP3PAWYYQ3wDgVkIoiuQTheWoycsXx4Rz9ARYhlDTl0Ycd8lvhH2/rNSkqIg== dependencies: "@types/geojson" "*" @@ -1822,9 +1828,9 @@ integrity sha512-rr20mmx41OkWx4q5du2dv2sESR/6xH2tzScUQXwO8SiaQWa6PYTuan1nqBtA76FR9qkVfZY7nwQwZNC9StX/Ww== "@types/node@*": - version "17.0.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.2.tgz#a4c07d47ff737e8ee7e586fe636ff0e1ddff070a" - integrity sha512-JepeIUPFDARgIs0zD/SKPgFsJEAF0X5/qO80llx59gOxFTboS9Amv3S+QfB7lqBId5sFXJ99BN0J6zFRvL9dDA== + version "17.0.8" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.8.tgz#50d680c8a8a78fe30abe6906453b21ad8ab0ad7b" + integrity sha512-YofkM6fGv4gDJq78g4j0mMuGMkZVxZDgtU0JRdx6FgiJDG+0fY0GKVolOV8WqVmEhLCXkQRjwDdKyPxJp/uucg== "@types/normalize-package-data@^2.4.0": version "2.4.1" @@ -1901,10 +1907,10 @@ "@types/prosemirror-state" "*" "@types/prosemirror-view" "*" -"@types/prosemirror-model@*", "@types/prosemirror-model@^1.13.2", "@types/prosemirror-model@^1.7.2": - version "1.13.2" - resolved "https://registry.yarnpkg.com/@types/prosemirror-model/-/prosemirror-model-1.13.2.tgz#2adad3ec478f83204f155d7fb94c9dfde2fc3296" - integrity sha512-a2rDB0aZ+7aIP7uBqQq1wLb4Hg4qqEvpkCqvhsgT/gG8IWC0peCAZfQ24sgTco0qSJLeDgIbtPeU6mgr869/kg== +"@types/prosemirror-model@*", "@types/prosemirror-model@^1.16.0", "@types/prosemirror-model@^1.7.2": + version "1.16.0" + resolved "https://registry.yarnpkg.com/@types/prosemirror-model/-/prosemirror-model-1.16.0.tgz#8b22c7431a4c93f7f550fc89c4b0e2d44d42c8b6" + integrity sha512-nv93YLyTEcDDl17OB90EldxZjyJQJll2WSMLDvLzTewbpvE/vtMjHT3j4mik3uSzQ6YD486AcloCO3WODY/lDg== dependencies: "@types/orderedmap" "*" @@ -1965,13 +1971,13 @@ integrity sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g== "@types/sanitize-html@^2.5.0": - version "2.6.0" - resolved "https://registry.yarnpkg.com/@types/sanitize-html/-/sanitize-html-2.6.0.tgz#442f845a6cd793d3b1bcb54b4b1905947b409526" - integrity sha512-5F2j1f2NITsZQPrGmrw4AH5Wfud81aqvUTNC7a1SrE8aa6fKyKVVX5FZxoRQYrBdqIDluyQGfkkj97faUqq7sw== + version "2.6.1" + resolved "https://registry.yarnpkg.com/@types/sanitize-html/-/sanitize-html-2.6.1.tgz#970193524df719f716c5bcf8db579859c446cd17" + integrity sha512-+JLlZdJkIHdgvlFnMorJeLv5WIORNcI+jHsAoPBWMnhGx5Rbz/D1QN5D4qvmoA7fooDlEVy6zlioWSgqbU0KeQ== dependencies: htmlparser2 "^6.0.0" -"@types/serve-index@*", "@types/serve-index@^1.9.1": +"@types/serve-index@^1.9.1": version "1.9.1" resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.1.tgz#1b5e85370a192c01ec6cec4735cf2917337a6278" integrity sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg== @@ -2013,29 +2019,12 @@ resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.2.tgz#fc25ad9943bcac11cceb8168db4f275e0e72e756" integrity sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg== -"@types/webpack-dev-middleware@*": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@types/webpack-dev-middleware/-/webpack-dev-middleware-5.0.2.tgz#0f66566c2ca7d484891b4552c8a7b64a3044e3e2" - integrity sha512-S3WUtef//Vx6WETyWZkM45WqgRxWSaqbpWtPcKySNRhiQNyhCqM9EueggaMX3L9N2IbG4dJIK5PgYcAWUifUbA== - dependencies: - "@types/connect" "*" - tapable "^2.1.1" - webpack "^5.38.1" - "@types/webpack-dev-server@^4.1.0": - version "4.5.0" - resolved "https://registry.yarnpkg.com/@types/webpack-dev-server/-/webpack-dev-server-4.5.0.tgz#52a983de97db81a38b7309a8cf8a730c3e02f28e" - integrity sha512-HMb6pZPANObue3LwbdpQLWzQyF9O0wntiPyXj4vGutlAbNKTXH4hDCHaZyfvfZDmFn+5HprrWHm1TGt3awNr/A== + version "4.7.2" + resolved "https://registry.yarnpkg.com/@types/webpack-dev-server/-/webpack-dev-server-4.7.2.tgz#a12d9881aa23cdd4cecbb2d31fa784a45c4967e0" + integrity sha512-Y3p0Fmfvp0MHBDoCzo+xFJaWTw0/z37mWIo6P15j+OtmUDLvznJWdZNeD7Q004R+MpQlys12oXbXsrXRmxwg4Q== dependencies: - "@types/bonjour" "*" - "@types/connect-history-api-fallback" "*" - "@types/express" "*" - "@types/serve-index" "*" - "@types/serve-static" "*" - "@types/webpack-dev-middleware" "*" - chokidar "^3.5.1" - http-proxy-middleware "^2.0.0" - webpack "*" + webpack-dev-server "*" "@types/webpack-env@^1.15.2": version "1.16.3" @@ -2062,12 +2051,13 @@ "@types/yargs-parser" "*" "@typescript-eslint/eslint-plugin@^5.3.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.8.0.tgz#52cd9305ceef98a5333f9492d519e6c6c7fe7d43" - integrity sha512-spu1UW7QuBn0nJ6+psnfCc3iVoQAifjKORgBngKOmC8U/1tbe2YJMzYQqDGYB4JCss7L8+RM2kKLb1B1Aw9BNA== + version "5.9.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.9.1.tgz#e5a86d7e1f9dc0b3df1e6d94feaf20dd838d066c" + integrity sha512-Xv9tkFlyD4MQGpJgTo6wqDqGvHIRmRgah/2Sjz1PUnJTawjHWIwBivUE9x0QtU2WVii9baYgavo/bHjrZJkqTw== dependencies: - "@typescript-eslint/experimental-utils" "5.8.0" - "@typescript-eslint/scope-manager" "5.8.0" + "@typescript-eslint/experimental-utils" "5.9.1" + "@typescript-eslint/scope-manager" "5.9.1" + "@typescript-eslint/type-utils" "5.9.1" debug "^4.3.2" functional-red-black-tree "^1.0.1" ignore "^5.1.8" @@ -2086,15 +2076,15 @@ eslint-scope "^5.0.0" eslint-utils "^2.0.0" -"@typescript-eslint/experimental-utils@5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.8.0.tgz#0916ffe98d34b3c95e3652efa0cace61a7b25728" - integrity sha512-KN5FvNH71bhZ8fKtL+lhW7bjm7cxs1nt+hrDZWIqb6ViCffQcWyLunGrgvISgkRojIDcXIsH+xlFfI4RCDA0xA== +"@typescript-eslint/experimental-utils@5.9.1": + version "5.9.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.9.1.tgz#8c407c4dd5ffe522329df6e4c9c2b52206d5f7f1" + integrity sha512-cb1Njyss0mLL9kLXgS/eEY53SZQ9sT519wpX3i+U457l2UXRDuo87hgKfgRazmu9/tQb0x2sr3Y0yrU+Zz0y+w== dependencies: "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.8.0" - "@typescript-eslint/types" "5.8.0" - "@typescript-eslint/typescript-estree" "5.8.0" + "@typescript-eslint/scope-manager" "5.9.1" + "@typescript-eslint/types" "5.9.1" + "@typescript-eslint/typescript-estree" "5.9.1" eslint-scope "^5.1.1" eslint-utils "^3.0.0" @@ -2110,32 +2100,41 @@ eslint-visitor-keys "^1.1.0" "@typescript-eslint/parser@^5.3.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.8.0.tgz#b39970b21c1d7bc4a6018507fb29b380328d2587" - integrity sha512-Gleacp/ZhRtJRYs5/T8KQR3pAQjQI89Dn/k+OzyCKOsLiZH2/Vh60cFBTnFsHNI6WAD+lNUo/xGZ4NeA5u0Ipw== + version "5.9.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.9.1.tgz#b114011010a87e17b3265ca715e16c76a9834cef" + integrity sha512-PLYO0AmwD6s6n0ZQB5kqPgfvh73p0+VqopQQLuNfi7Lm0EpfKyDalchpVwkE+81k5HeiRrTV/9w1aNHzjD7C4g== dependencies: - "@typescript-eslint/scope-manager" "5.8.0" - "@typescript-eslint/types" "5.8.0" - "@typescript-eslint/typescript-estree" "5.8.0" + "@typescript-eslint/scope-manager" "5.9.1" + "@typescript-eslint/types" "5.9.1" + "@typescript-eslint/typescript-estree" "5.9.1" debug "^4.3.2" -"@typescript-eslint/scope-manager@5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.8.0.tgz#2371095b4fa4c7be6a80b380f4e1b49c715e16f4" - integrity sha512-x82CYJsLOjPCDuFFEbS6e7K1QEWj7u5Wk1alw8A+gnJiYwNnDJk0ib6PCegbaPMjrfBvFKa7SxE3EOnnIQz2Gg== +"@typescript-eslint/scope-manager@5.9.1": + version "5.9.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.9.1.tgz#6c27be89f1a9409f284d95dfa08ee3400166fe69" + integrity sha512-8BwvWkho3B/UOtzRyW07ffJXPaLSUKFBjpq8aqsRvu6HdEuzCY57+ffT7QoV4QXJXWSU1+7g3wE4AlgImmQ9pQ== dependencies: - "@typescript-eslint/types" "5.8.0" - "@typescript-eslint/visitor-keys" "5.8.0" + "@typescript-eslint/types" "5.9.1" + "@typescript-eslint/visitor-keys" "5.9.1" + +"@typescript-eslint/type-utils@5.9.1": + version "5.9.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.9.1.tgz#c6832ffe655b9b1fec642d36db1a262d721193de" + integrity sha512-tRSpdBnPRssjlUh35rE9ug5HrUvaB9ntREy7gPXXKwmIx61TNN7+l5YKgi1hMKxo5NvqZCfYhA5FvyuJG6X6vg== + dependencies: + "@typescript-eslint/experimental-utils" "5.9.1" + debug "^4.3.2" + tsutils "^3.21.0" "@typescript-eslint/types@3.10.1": version "3.10.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.10.1.tgz#1d7463fa7c32d8a23ab508a803ca2fe26e758727" integrity sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ== -"@typescript-eslint/types@5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.8.0.tgz#e7fa74ec35d9dbe3560d039d3d8734986c3971e0" - integrity sha512-LdCYOqeqZWqCMOmwFnum6YfW9F3nKuxJiR84CdIRN5nfHJ7gyvGpXWqL/AaW0k3Po0+wm93ARAsOdzlZDPCcXg== +"@typescript-eslint/types@5.9.1": + version "5.9.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.9.1.tgz#1bef8f238a2fb32ebc6ff6d75020d9f47a1593c6" + integrity sha512-SsWegWudWpkZCwwYcKoDwuAjoZXnM1y2EbEerTHho19Hmm+bQ56QG4L4jrtCu0bI5STaRTvRTZmjprWlTw/5NQ== "@typescript-eslint/typescript-estree@3.10.1": version "3.10.1" @@ -2151,13 +2150,13 @@ semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/typescript-estree@5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.8.0.tgz#900469ba9d5a37f4482b014ecce4a5dbb86cb4dd" - integrity sha512-srfeZ3URdEcUsSLbkOFqS7WoxOqn8JNil2NSLO9O+I2/Uyc85+UlfpEvQHIpj5dVts7KKOZnftoJD/Fdv0L7nQ== +"@typescript-eslint/typescript-estree@5.9.1": + version "5.9.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.9.1.tgz#d5b996f49476495070d2b8dd354861cf33c005d6" + integrity sha512-gL1sP6A/KG0HwrahVXI9fZyeVTxEYV//6PmcOn1tD0rw8VhUWYeZeuWHwwhnewnvEMcHjhnJLOBhA9rK4vmb8A== dependencies: - "@typescript-eslint/types" "5.8.0" - "@typescript-eslint/visitor-keys" "5.8.0" + "@typescript-eslint/types" "5.9.1" + "@typescript-eslint/visitor-keys" "5.9.1" debug "^4.3.2" globby "^11.0.4" is-glob "^4.0.3" @@ -2171,12 +2170,12 @@ dependencies: eslint-visitor-keys "^1.1.0" -"@typescript-eslint/visitor-keys@5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.8.0.tgz#22d4ed96fe2451135299239feedb9fe1dcec780c" - integrity sha512-+HDIGOEMnqbxdAHegxvnOqESUH6RWFRR2b8qxP1W9CZnnYh4Usz6MBL+2KMAgPk/P0o9c1HqnYtwzVH6GTIqug== +"@typescript-eslint/visitor-keys@5.9.1": + version "5.9.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.9.1.tgz#f52206f38128dd4f675cf28070a41596eee985b7" + integrity sha512-Xh37pNz9e9ryW4TVdwiFzmr4hloty8cFj8GTWMXh3Z8swGwyQWeCcNgF0hm6t09iZd6eiZmIf4zHedQVP6TVtg== dependencies: - "@typescript-eslint/types" "5.8.0" + "@typescript-eslint/types" "5.9.1" eslint-visitor-keys "^3.0.0" "@vue-a11y/announcer@^2.1.0": @@ -2765,7 +2764,16 @@ acorn-jsx@^5.2.0, acorn-jsx@^5.3.1: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn-walk@^7.1.1: +acorn-node@^1.6.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8" + integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A== + dependencies: + acorn "^7.0.0" + acorn-walk "^7.0.0" + xtend "^4.0.2" + +acorn-walk@^7.0.0, acorn-walk@^7.1.1: version "7.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== @@ -2775,15 +2783,15 @@ acorn-walk@^8.0.0, acorn-walk@^8.0.2: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== -acorn@^7.1.1, acorn@^7.4.0: +acorn@^7.0.0, acorn@^7.1.1, acorn@^7.4.0: version "7.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.0.4, acorn@^8.0.5, acorn@^8.2.4, acorn@^8.4.1, acorn@^8.6.0: - version "8.6.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.6.0.tgz#e3692ba0eb1a0c83eaa4f37f5fa7368dd7142895" - integrity sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw== +acorn@^8.0.4, acorn@^8.0.5, acorn@^8.2.4, acorn@^8.4.1, acorn@^8.7.0: + version "8.7.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" + integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== address@^1.1.2: version "1.1.2" @@ -2960,6 +2968,11 @@ arch@^2.1.1: resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== +arg@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.1.tgz#eb0c9a8f77786cad2af8ff2b862899842d7b6adb" + integrity sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA== + argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -3039,27 +3052,27 @@ atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -autoprefixer@^10.2.4: - version "10.4.0" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.0.tgz#c3577eb32a1079a440ec253e404eaf1eb21388c8" - integrity sha512-7FdJ1ONtwzV1G43GDD0kpVMn/qbiNqyOPMFTX5nRffI+7vgWoFEc6DcXOxHJxrWNDXrZh18eDsZjvZGUljSRGA== +autoprefixer@^10, autoprefixer@^10.2.4: + version "10.4.2" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.2.tgz#25e1df09a31a9fba5c40b578936b90d35c9d4d3b" + integrity sha512-9fOPpHKuDW1w/0EKfRmVnxTDt8166MAnLI3mgZ1JCnhNtYWxcJ6Ud5CO/AVOZi/AvFa8DY9RTy3h3+tFBlrrdQ== dependencies: - browserslist "^4.17.5" - caniuse-lite "^1.0.30001272" - fraction.js "^4.1.1" + browserslist "^4.19.1" + caniuse-lite "^1.0.30001297" + fraction.js "^4.1.2" normalize-range "^0.1.2" picocolors "^1.0.0" - postcss-value-parser "^4.1.0" + postcss-value-parser "^4.2.0" -babel-jest@^27.1.0, babel-jest@^27.4.5: - version "27.4.5" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.4.5.tgz#d38bd0be8ea71d8b97853a5fc9f76deeb095c709" - integrity sha512-3uuUTjXbgtODmSv/DXO9nZfD52IyC2OYTFaXGRzL0kpykzroaquCrD5+lZNafTvZlnNqZHt5pb0M08qVBZnsnA== +babel-jest@^27.1.0, babel-jest@^27.4.6: + version "27.4.6" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.4.6.tgz#4d024e69e241cdf4f396e453a07100f44f7ce314" + integrity sha512-qZL0JT0HS1L+lOuH+xC2DVASR3nunZi/ozGhpgauJHgmI7f8rudxf6hUjEHympdQ/J64CdKmPkgfJ+A3U6QCrg== dependencies: - "@jest/transform" "^27.4.5" + "@jest/transform" "^27.4.6" "@jest/types" "^27.4.2" "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.0.0" + babel-plugin-istanbul "^6.1.1" babel-preset-jest "^27.4.0" chalk "^4.0.0" graceful-fs "^4.2.4" @@ -3082,7 +3095,7 @@ babel-plugin-dynamic-import-node@^2.3.3: dependencies: object.assign "^4.1.0" -babel-plugin-istanbul@^6.0.0: +babel-plugin-istanbul@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== @@ -3298,9 +3311,9 @@ bser@2.1.1: node-int64 "^0.4.0" buefy@^0.9.0: - version "0.9.13" - resolved "https://registry.yarnpkg.com/buefy/-/buefy-0.9.13.tgz#fa530257fc47a8cb00d1e36faa93bbeba4aefce0" - integrity sha512-W8QhvAz+YlKhxDQe/oag4Fl/zYTvXOPoNVr4pseYDR7r52Ta6s51iedBdvw4It68Sq+g7mcxIzwK7mv3PR6O4g== + version "0.9.14" + resolved "https://registry.yarnpkg.com/buefy/-/buefy-0.9.14.tgz#f0441ece5255fa757bf9956761415341d18fe68b" + integrity sha512-4+8xLQBHm7H+XmCNXvEmFY01gYHvGIkMGBLxcCpbumrt5Eyj21JP7I6G313tLaT2XDk06IiNSnqgPxzFExHPjQ== dependencies: bulma "0.9.3" @@ -3390,15 +3403,20 @@ camel-case@^4.1.2: pascal-case "^3.1.2" tslib "^2.0.3" +camelcase-css@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" + integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== + camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== camelcase@^6.0.0, camelcase@^6.2.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.1.tgz#250fd350cfd555d0d2160b1d51510eaf8326e86e" - integrity sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA== + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-api@^3.0.0: version "3.0.0" @@ -3410,10 +3428,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001272, caniuse-lite@^1.0.30001286: - version "1.0.30001291" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001291.tgz#08a8d2cfea0b2cf2e1d94dd795942d0daef6108c" - integrity sha512-roMV5V0HNGgJ88s42eE70sstqGW/gwFndosYrikHthw98N5tLnOTxFqMLQjZVRxTWFlJ4rn+MsgXrR7MDPY4jA== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001286, caniuse-lite@^1.0.30001297: + version "1.0.30001298" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001298.tgz#0e690039f62e91c3ea581673d716890512e7ec52" + integrity sha512-AcKqikjMLlvghZL/vfTHorlQsLDhGRalYf1+GmWCf5SCMziSGjRYQW/JEksj14NaYHIR6KIhrFAy0HV5C25UzQ== case-sensitive-paths-webpack-plugin@^2.3.0: version "2.4.0" @@ -3466,7 +3484,7 @@ char-regex@^2.0.0: resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-2.0.0.tgz#16f98f3f874edceddd300fda5d58df380a7641a6" integrity sha512-oGu2QekBMXgyQNWPDRQ001bjvDnZe4/zBTz37TMbiKz1NbNiyiH5hRkobe7npRN6GfbGbxMYFck/vQ1r9c1VMA== -"chokidar@>=3.0.0 <4.0.0", chokidar@^3.4.2, chokidar@^3.5.1, chokidar@^3.5.2: +"chokidar@>=3.0.0 <4.0.0", chokidar@^3.4.2, chokidar@^3.5.2: version "3.5.2" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== @@ -3605,7 +3623,7 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -color-name@~1.1.4: +color-name@^1.1.4, color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== @@ -3753,9 +3771,9 @@ copy-webpack-plugin@^9.0.1: serialize-javascript "^6.0.0" core-js-compat@^3.18.0, core-js-compat@^3.19.1, core-js-compat@^3.8.3: - version "3.20.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.20.0.tgz#fd704640c5a213816b6d10ec0192756111e2c9d1" - integrity sha512-relrah5h+sslXssTTOkvqcC/6RURifB0W5yhYBdBkaPYa5/2KBMiog3XiD+s3TwEHWxInWVv4Jx2/Lw0vng+IQ== + version "3.20.2" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.20.2.tgz#d1ff6936c7330959b46b2e08b122a8b14e26140b" + integrity sha512-qZEzVQ+5Qh6cROaTPFLNS4lkvQ6mBzE3R6A6EEpssj7Zr2egMHgsy4XapdifqJDGC9CBiNv7s+ejI96rLNQFdg== dependencies: browserslist "^4.19.1" semver "7.0.0" @@ -3771,9 +3789,9 @@ core-js@^2.4.0, core-js@^2.5.0: integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== core-js@^3.6.4, core-js@^3.8.3: - version "3.20.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.20.0.tgz#1c5ac07986b8d15473ab192e45a2e115a4a95b79" - integrity sha512-KjbKU7UEfg4YPpskMtMXPhUKn7m/1OdTHTVjy09ScR2LVaoUXe8Jh0UdvN2EKUR6iKTJph52SJP95mAB0MnVLQ== + version "3.20.2" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.20.2.tgz#46468d8601eafc8b266bd2dd6bf9dee622779581" + integrity sha512-nuqhq11DcOAbFBV4zCbKeGbKQsUDRqTX0oqx7AttUBuqe3h20ixsE039QHelbL6P4h+9kytVqyEtyZ6gsiwEYw== core-util-is@~1.0.0: version "1.0.3" @@ -3791,7 +3809,7 @@ cosmiconfig@^6.0.0: path-type "^4.0.0" yaml "^1.7.2" -cosmiconfig@^7.0.0: +cosmiconfig@^7.0.0, cosmiconfig@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== @@ -3837,9 +3855,9 @@ crypto-random-string@^2.0.0: integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== css-declaration-sorter@^6.0.3: - version "6.1.3" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.1.3.tgz#e9852e4cf940ba79f509d9425b137d1f94438dc2" - integrity sha512-SvjQjNRZgh4ULK1LDJ2AduPKUKxIqmtU7ZAyi47BTV+M90Qvxr9AB6lKlLbDUfXqI9IQeYA8LbAsCZPpJEV3aA== + version "6.1.4" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.1.4.tgz#b9bfb4ed9a41f8dcca9bf7184d849ea94a8294b4" + integrity sha512-lpfkqS0fctcmZotJGhnxkIyJWvBXgpyi2wsFd4J8VB7wzyrT6Ch/3Q+FMNJpjK4gu1+GN5khOnpU2ZVKrLbhCw== dependencies: timsort "^0.3.0" @@ -3870,9 +3888,9 @@ css-minimizer-webpack-plugin@^3.0.2: source-map "^0.6.1" css-select@^4.1.3: - version "4.2.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.2.0.tgz#ab28276d3afb00cc05e818bd33eb030f14f57895" - integrity sha512-6YVG6hsH9yIb/si3Th/is8Pex7qnVHO6t7q7U6TIUnkQASGbS8tnUDBftnPynLNnuUl/r2+PTd0ekiiq7R0zJw== + version "4.2.1" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.2.1.tgz#9e665d6ae4c7f9d65dbe69d0316e3221fb274cdd" + integrity sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ== dependencies: boolbase "^1.0.0" css-what "^5.1.0" @@ -3908,52 +3926,52 @@ cssesc@^3.0.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssnano-preset-default@^5.1.9: - version "5.1.9" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.1.9.tgz#79628ac48eccbdad570f70b4018cc38d43d1b7df" - integrity sha512-RhkEucqlQ+OxEi14K1p8gdXcMQy1mSpo7P1oC44oRls7BYIj8p+cht4IFBFV3W4iOjTP8EUB33XV1fX9KhDzyA== +cssnano-preset-default@^5.1.10: + version "5.1.10" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.1.10.tgz#9350765fdf3c49bf78fac7673354fa58fa95daa4" + integrity sha512-BcpSzUVygHMOnp9uG5rfPzTOCb0GAHQkqtUQx8j1oMNF9A1Q8hziOOhiM4bdICpmrBIU85BE64RD5XGYsVQZNA== dependencies: css-declaration-sorter "^6.0.3" - cssnano-utils "^2.0.1" - postcss-calc "^8.0.0" - postcss-colormin "^5.2.2" + cssnano-utils "^3.0.0" + postcss-calc "^8.2.0" + postcss-colormin "^5.2.3" postcss-convert-values "^5.0.2" postcss-discard-comments "^5.0.1" postcss-discard-duplicates "^5.0.1" postcss-discard-empty "^5.0.1" - postcss-discard-overridden "^5.0.1" + postcss-discard-overridden "^5.0.2" postcss-merge-longhand "^5.0.4" - postcss-merge-rules "^5.0.3" - postcss-minify-font-values "^5.0.1" - postcss-minify-gradients "^5.0.3" - postcss-minify-params "^5.0.2" - postcss-minify-selectors "^5.1.0" + postcss-merge-rules "^5.0.4" + postcss-minify-font-values "^5.0.2" + postcss-minify-gradients "^5.0.4" + postcss-minify-params "^5.0.3" + postcss-minify-selectors "^5.1.1" postcss-normalize-charset "^5.0.1" - postcss-normalize-display-values "^5.0.1" - postcss-normalize-positions "^5.0.1" - postcss-normalize-repeat-style "^5.0.1" - postcss-normalize-string "^5.0.1" - postcss-normalize-timing-functions "^5.0.1" - postcss-normalize-unicode "^5.0.1" + postcss-normalize-display-values "^5.0.2" + postcss-normalize-positions "^5.0.2" + postcss-normalize-repeat-style "^5.0.2" + postcss-normalize-string "^5.0.2" + postcss-normalize-timing-functions "^5.0.2" + postcss-normalize-unicode "^5.0.2" postcss-normalize-url "^5.0.4" - postcss-normalize-whitespace "^5.0.1" - postcss-ordered-values "^5.0.2" + postcss-normalize-whitespace "^5.0.2" + postcss-ordered-values "^5.0.3" postcss-reduce-initial "^5.0.2" - postcss-reduce-transforms "^5.0.1" + postcss-reduce-transforms "^5.0.2" postcss-svgo "^5.0.3" postcss-unique-selectors "^5.0.2" -cssnano-utils@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-2.0.1.tgz#8660aa2b37ed869d2e2f22918196a9a8b6498ce2" - integrity sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ== +cssnano-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.0.0.tgz#c0b9fcd6e4f05c5155b07e9ab11bf94b97163057" + integrity sha512-Pzs7/BZ6OgT+tXXuF12DKR8SmSbzUeVYCtMBbS8lI0uAm3mrYmkyqCXXPsQESI6kmLfEVBppbdVY/el3hg3nAA== cssnano@^5.0.0, cssnano@^5.0.6: - version "5.0.14" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.0.14.tgz#99bc550f663b48c38e9b8e0ae795697c9de84b47" - integrity sha512-qzhRkFvBhv08tbyKCIfWbxBXmkIpLl1uNblt8SpTHkgLfON5OCPX/CCnkdNmEosvo8bANQYmTTMEgcVBlisHaw== + version "5.0.15" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.0.15.tgz#8779eaf60e3665e6a12687c814d375cc9f78db76" + integrity sha512-ppZsS7oPpi2sfiyV5+i+NbB/3GtQ+ab2Vs1azrZaXWujUSN4o+WdTxlCZIMcT9yLW3VO/5yX3vpyDaQ1nIn8CQ== dependencies: - cssnano-preset-default "^5.1.9" + cssnano-preset-default "^5.1.10" lilconfig "^2.0.3" yaml "^1.10.2" @@ -3996,9 +4014,9 @@ date-fns-tz@^1.1.6: integrity sha512-vWtn44eEqnLbkACb7T5G5gPgKR4nY8NkNMOCyoY49NsRGHrcDmY2aysCyzDeA+u+vcDBn/w6nQqEDyouRs4m8w== date-fns@^2.16.0: - version "2.27.0" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.27.0.tgz#e1ff3c3ddbbab8a2eaadbb6106be2929a5a2d92b" - integrity sha512-sj+J0Mo2p2X1e306MHq282WS4/A8Pz/95GIFcsPNMPMZVI3EUrAdSv90al1k+p74WGLCruMXk23bfEDZa71X9Q== + version "2.28.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.28.0.tgz#9570d656f5fc13143e50c975a3b6bbeb46cd08b2" + integrity sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw== de-indent@^1.0.2: version "1.0.2" @@ -4094,6 +4112,11 @@ define-properties@^1.1.3: dependencies: object-keys "^1.0.12" +defined@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" + integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= + del@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/del/-/del-6.0.0.tgz#0b40d0332cea743f1614f818be4feb717714c952" @@ -4133,6 +4156,20 @@ detect-node@^2.0.4: resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== +detective@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.0.tgz#feb2a77e85b904ecdea459ad897cc90a99bd2a7b" + integrity sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg== + dependencies: + acorn-node "^1.6.1" + defined "^1.0.0" + minimist "^1.1.1" + +didyoumean@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" + integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== + diff-sequences@^27.4.0: version "27.4.0" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.4.0.tgz#d783920ad8d06ec718a060d00196dfef25b132a5" @@ -4145,7 +4182,7 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" -dlv@^1.1.0: +dlv@^1.1.0, dlv@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== @@ -4292,9 +4329,9 @@ ejs@^3.1.6: jake "^10.6.1" electron-to-chromium@^1.4.17: - version "1.4.25" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.25.tgz#ce95e6678f8c6893ae892c7e95a5000e83f1957f" - integrity sha512-bTwub9Y/76EiNmfaiJih+hAy6xn7Ns95S4KvI2NuKNOz8TEEKKQUu44xuy0PYMudjM9zdjKRS1bitsUvHTfuUg== + version "1.4.38" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.38.tgz#10ea58d73d36b13e78d5024f3b74a352d3958d01" + integrity sha512-WhHt3sZazKj0KK/UpgsbGQnUUoFeAHVishzHFExMxagpZgjiGYSC9S0ZlbhCfSH2L2i+2A1yyqOIliTctMx7KQ== emittery@^0.8.1: version "0.8.1" @@ -4452,33 +4489,32 @@ eslint-import-resolver-node@^0.3.6: debug "^3.2.7" resolve "^1.20.0" -eslint-module-utils@^2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.1.tgz#b435001c9f8dd4ab7f6d0efcae4b9696d4c24b7c" - integrity sha512-fjoetBXQZq2tSTWZ9yWVl2KuFrTZZH3V+9iD1V1RfpDgxzJR+mPd/KZmMiA8gbPqdBzpNiEHOuT7IYEWxrH0zQ== +eslint-module-utils@^2.7.2: + version "2.7.2" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.2.tgz#1d0aa455dcf41052339b63cada8ab5fd57577129" + integrity sha512-zquepFnWCY2ISMFwD/DqzaM++H+7PDzOpUvotJWm/y1BAFt5R4oeULgdrTejKqLkz7MA/tgstsUMNYc7wNdTrg== dependencies: debug "^3.2.7" find-up "^2.1.0" - pkg-dir "^2.0.0" eslint-plugin-import@^2.20.2: - version "2.25.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.25.3.tgz#a554b5f66e08fb4f6dc99221866e57cfff824766" - integrity sha512-RzAVbby+72IB3iOEL8clzPLzL3wpDrlwjsTBAQXgyp5SeTqqY+0bFubwuo+y/HLhNZcXV4XqTBO4LGsfyHIDXg== + version "2.25.4" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz#322f3f916a4e9e991ac7af32032c25ce313209f1" + integrity sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA== dependencies: array-includes "^3.1.4" array.prototype.flat "^1.2.5" debug "^2.6.9" doctrine "^2.1.0" eslint-import-resolver-node "^0.3.6" - eslint-module-utils "^2.7.1" + eslint-module-utils "^2.7.2" has "^1.0.3" is-core-module "^2.8.0" is-glob "^4.0.3" minimatch "^3.0.4" object.values "^1.1.5" resolve "^1.20.0" - tsconfig-paths "^3.11.0" + tsconfig-paths "^3.12.0" eslint-plugin-prettier@^4.0.0: version "4.0.0" @@ -4608,9 +4644,9 @@ eslint@^7.9.0: v8-compile-cache "^2.0.3" eslint@^8.2.0: - version "8.5.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.5.0.tgz#ddd2c1afd8f412036f87ae2a063d2aa296d3175f" - integrity sha512-tVGSkgNbOfiHyVte8bCM8OmX+xG9PzVG/B4UCF60zx7j61WIVY/AqJECDgpLD4DbbESD0e174gOg3ZlrX15GDg== + version "8.6.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.6.0.tgz#4318c6a31c5584838c1a2e940c478190f58d558e" + integrity sha512-UvxdOJ7mXFlw7iuHZA4jmzPaUqIw54mZrv+XPYKNbKdLR0et4rf60lIZUU9kiNtnzzMzGWxMV+tQ7uG7JG8DPw== dependencies: "@eslint/eslintrc" "^1.0.5" "@humanwhocodes/config-array" "^0.9.2" @@ -4624,7 +4660,7 @@ eslint@^8.2.0: eslint-scope "^7.1.0" eslint-utils "^3.0.0" eslint-visitor-keys "^3.1.0" - espree "^9.2.0" + espree "^9.3.0" esquery "^1.4.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" @@ -4669,12 +4705,12 @@ espree@^7.3.0, espree@^7.3.1: acorn-jsx "^5.3.1" eslint-visitor-keys "^1.3.0" -espree@^9.0.0, espree@^9.2.0: - version "9.2.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.2.0.tgz#c50814e01611c2d0f8bd4daa83c369eabba80dbc" - integrity sha512-oP3utRkynpZWF/F2x/HZJ+AGtnIclaR7z1pYPxy7NYM2fSO6LgK/Rkny8anRSPK/VwEA1eqm2squui0T7ZMOBg== +espree@^9.0.0, espree@^9.2.0, espree@^9.3.0: + version "9.3.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.0.tgz#c1240d79183b72aaee6ccfa5a90bc9111df085a8" + integrity sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ== dependencies: - acorn "^8.6.0" + acorn "^8.7.0" acorn-jsx "^5.3.1" eslint-visitor-keys "^3.1.0" @@ -4783,17 +4819,15 @@ exit@^0.1.2: resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= -expect@^27.4.2: - version "27.4.2" - resolved "https://registry.yarnpkg.com/expect/-/expect-27.4.2.tgz#4429b0f7e307771d176de9bdf23229b101db6ef6" - integrity sha512-BjAXIDC6ZOW+WBFNg96J22D27Nq5ohn+oGcuP2rtOtcjuxNoV9McpQ60PcQWhdFOSBIQdR72e+4HdnbZTFSTyg== +expect@^27.4.6: + version "27.4.6" + resolved "https://registry.yarnpkg.com/expect/-/expect-27.4.6.tgz#f335e128b0335b6ceb4fcab67ece7cbd14c942e6" + integrity sha512-1M/0kAALIaj5LaG66sFJTbRsWTADnylly82cu4bspI0nl+pgP4E6Bh/aqdHlTUjul06K7xQnnrAoqfxVU0+/ag== dependencies: "@jest/types" "^27.4.2" - ansi-styles "^5.0.0" jest-get-type "^27.4.0" - jest-matcher-utils "^27.4.2" - jest-message-util "^27.4.2" - jest-regex-util "^27.4.0" + jest-matcher-utils "^27.4.6" + jest-message-util "^27.4.6" express@^4.17.1: version "4.17.2" @@ -4860,10 +4894,10 @@ fast-diff@^1.1.2: resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== -fast-glob@^3.1.1, fast-glob@^3.2.7: - version "3.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" - integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== +fast-glob@^3.2.7, fast-glob@^3.2.9: + version "3.2.10" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.10.tgz#2734f83baa7f43b7fd41e13bc34438f4ffe284ee" + integrity sha512-s9nFhFnvR63wls6/kM88kQqDhMu0AfdjqouE2l5GVQPbqLgyFjjU5ry/r2yKsJxpb9Py1EYNqieFrmMaX4v++A== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -5001,9 +5035,9 @@ flush-promises@^1.0.2: integrity sha512-G0sYfLQERwKz4+4iOZYQEZVpOt9zQrlItIxQAAYAWpfby3gbHrx0osCHz5RLl/XoXevXk0xoN4hDFky/VV9TrA== follow-redirects@^1.0.0: - version "1.14.6" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.6.tgz#8cfb281bbc035b3c067d6cd975b0f6ade6e855cd" - integrity sha512-fhUl5EwSJbbl8AR+uYL2KQDxLkdSjZGR36xy46AO7cOMTrCMON6Sa28FmAnC2tRTDbd/Uuzz3aJBv7EBN7JH8A== + version "1.14.7" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.7.tgz#2004c02eb9436eee9a21446a6477debf17e81685" + integrity sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ== fork-ts-checker-webpack-plugin@^6.4.0: version "6.5.0" @@ -5038,7 +5072,7 @@ forwarded@0.2.0: resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== -fraction.js@^4.1.1: +fraction.js@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.1.2.tgz#13e420a92422b6cf244dff8690ed89401029fbe8" integrity sha512-o2RiJQ6DZaR/5+Si0qJUIy637QMRudSi9kU/FFzx9EZazrIdnBgpU+3sEWCxAVhH2RtxW2Oz+T4p2o8uOPVcgA== @@ -5144,7 +5178,7 @@ glob-parent@^5.1.2, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" -glob-parent@^6.0.1: +glob-parent@^6.0.1, glob-parent@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== @@ -5181,21 +5215,21 @@ globals@^13.6.0, globals@^13.9.0: type-fest "^0.20.2" globby@^11.0.1, globby@^11.0.2, globby@^11.0.3, globby@^11.0.4: - version "11.0.4" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" - integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== dependencies: array-union "^2.1.0" dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" slash "^3.0.0" graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6: - version "4.2.8" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" - integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== + version "4.2.9" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" + integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== graphql-tag@^2.10.3, graphql-tag@^2.12.3: version "2.12.6" @@ -5477,7 +5511,7 @@ ignore@^4.0.6: resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -ignore@^5.1.4, ignore@^5.1.8: +ignore@^5.1.8, ignore@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== @@ -5496,9 +5530,9 @@ import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: resolve-from "^4.0.0" import-local@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.3.tgz#4d51c2c495ca9393da259ec66b62e022920211e0" - integrity sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA== + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== dependencies: pkg-dir "^4.2.0" resolve-cwd "^3.0.0" @@ -5622,10 +5656,10 @@ is-ci@^1.0.10: dependencies: ci-info "^1.5.0" -is-core-module@^2.2.0, is-core-module@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" - integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== +is-core-module@^2.8.0: + version "2.8.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" + integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== dependencies: has "^1.0.3" @@ -5840,17 +5874,7 @@ istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== -istanbul-lib-instrument@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" - integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== - dependencies: - "@babel/core" "^7.7.5" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.0.0" - semver "^6.3.0" - -istanbul-lib-instrument@^5.0.4: +istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz#7b49198b657b27a730b8e9cb601f1e1bff24c59a" integrity sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q== @@ -5879,10 +5903,10 @@ istanbul-lib-source-maps@^4.0.0: istanbul-lib-coverage "^3.0.0" source-map "^0.6.1" -istanbul-reports@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.1.tgz#7085857f17d2441053c6ce5c3b8fdf6882289397" - integrity sha512-q1kvhAXWSsXfMjCdNHNPKZZv94OlspKnoGv+R9RGbnqOOQ0VbNfLFgQDVgi7hHenKsndGq3/o0OBdzDXthWcNw== +istanbul-reports@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.3.tgz#4bcae3103b94518117930d51283690960b50d3c2" + integrity sha512-x9LtDVtfm/t1GFiLl3NffC7hz+I1ragvgX1P/Lg1NlIagifZDKUkuuaAxH/qpwj2IuEfD8G2Bs/UKp+sZ/pKkg== dependencies: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" @@ -5916,86 +5940,86 @@ jest-changed-files@^27.4.2: execa "^5.0.0" throat "^6.0.1" -jest-circus@^27.4.5: - version "27.4.5" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.4.5.tgz#70bfb78e0200cab9b84747bf274debacaa538467" - integrity sha512-eTNWa9wsvBwPykhMMShheafbwyakcdHZaEYh5iRrQ0PFJxkDP/e3U/FvzGuKWu2WpwUA3C3hPlfpuzvOdTVqnw== +jest-circus@^27.4.6: + version "27.4.6" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.4.6.tgz#d3af34c0eb742a967b1919fbb351430727bcea6c" + integrity sha512-UA7AI5HZrW4wRM72Ro80uRR2Fg+7nR0GESbSI/2M+ambbzVuA63mn5T1p3Z/wlhntzGpIG1xx78GP2YIkf6PhQ== dependencies: - "@jest/environment" "^27.4.4" - "@jest/test-result" "^27.4.2" + "@jest/environment" "^27.4.6" + "@jest/test-result" "^27.4.6" "@jest/types" "^27.4.2" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" dedent "^0.7.0" - expect "^27.4.2" + expect "^27.4.6" is-generator-fn "^2.0.0" - jest-each "^27.4.2" - jest-matcher-utils "^27.4.2" - jest-message-util "^27.4.2" - jest-runtime "^27.4.5" - jest-snapshot "^27.4.5" + jest-each "^27.4.6" + jest-matcher-utils "^27.4.6" + jest-message-util "^27.4.6" + jest-runtime "^27.4.6" + jest-snapshot "^27.4.6" jest-util "^27.4.2" - pretty-format "^27.4.2" + pretty-format "^27.4.6" slash "^3.0.0" stack-utils "^2.0.3" throat "^6.0.1" -jest-cli@^27.4.5: - version "27.4.5" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.4.5.tgz#8708f54c28d13681f3255ec9026a2b15b03d41e8" - integrity sha512-hrky3DSgE0u7sQxaCL7bdebEPHx5QzYmrGuUjaPLmPE8jx5adtvGuOlRspvMoVLTTDOHRnZDoRLYJuA+VCI7Hg== +jest-cli@^27.4.7: + version "27.4.7" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.4.7.tgz#d00e759e55d77b3bcfea0715f527c394ca314e5a" + integrity sha512-zREYhvjjqe1KsGV15mdnxjThKNDgza1fhDT+iUsXWLCq3sxe9w5xnvyctcYVT5PcdLSjv7Y5dCwTS3FCF1tiuw== dependencies: - "@jest/core" "^27.4.5" - "@jest/test-result" "^27.4.2" + "@jest/core" "^27.4.7" + "@jest/test-result" "^27.4.6" "@jest/types" "^27.4.2" chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.4" import-local "^3.0.2" - jest-config "^27.4.5" + jest-config "^27.4.7" jest-util "^27.4.2" - jest-validate "^27.4.2" + jest-validate "^27.4.6" prompts "^2.0.1" yargs "^16.2.0" -jest-config@^27.4.5: - version "27.4.5" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.4.5.tgz#77ed7f2ba7bcfd7d740ade711d0d13512e08a59e" - integrity sha512-t+STVJtPt+fpqQ8GBw850NtSQbnDOw/UzdPfzDaHQ48/AylQlW7LHj3dH+ndxhC1UxJ0Q3qkq7IH+nM1skwTwA== +jest-config@^27.4.7: + version "27.4.7" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.4.7.tgz#4f084b2acbd172c8b43aa4cdffe75d89378d3972" + integrity sha512-xz/o/KJJEedHMrIY9v2ParIoYSrSVY6IVeE4z5Z3i101GoA5XgfbJz+1C8EYPsv7u7f39dS8F9v46BHDhn0vlw== dependencies: - "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^27.4.5" + "@babel/core" "^7.8.0" + "@jest/test-sequencer" "^27.4.6" "@jest/types" "^27.4.2" - babel-jest "^27.4.5" + babel-jest "^27.4.6" chalk "^4.0.0" ci-info "^3.2.0" deepmerge "^4.2.2" glob "^7.1.1" graceful-fs "^4.2.4" - jest-circus "^27.4.5" - jest-environment-jsdom "^27.4.4" - jest-environment-node "^27.4.4" + jest-circus "^27.4.6" + jest-environment-jsdom "^27.4.6" + jest-environment-node "^27.4.6" jest-get-type "^27.4.0" - jest-jasmine2 "^27.4.5" + jest-jasmine2 "^27.4.6" jest-regex-util "^27.4.0" - jest-resolve "^27.4.5" - jest-runner "^27.4.5" + jest-resolve "^27.4.6" + jest-runner "^27.4.6" jest-util "^27.4.2" - jest-validate "^27.4.2" + jest-validate "^27.4.6" micromatch "^4.0.4" - pretty-format "^27.4.2" + pretty-format "^27.4.6" slash "^3.0.0" -jest-diff@^27.0.0, jest-diff@^27.4.2: - version "27.4.2" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.4.2.tgz#786b2a5211d854f848e2dcc1e324448e9481f36f" - integrity sha512-ujc9ToyUZDh9KcqvQDkk/gkbf6zSaeEg9AiBxtttXW59H/AcqEYp1ciXAtJp+jXWva5nAf/ePtSsgWwE5mqp4Q== +jest-diff@^27.0.0, jest-diff@^27.4.6: + version "27.4.6" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.4.6.tgz#93815774d2012a2cbb6cf23f84d48c7a2618f98d" + integrity sha512-zjaB0sh0Lb13VyPsd92V7HkqF6yKRH9vm33rwBt7rPYrpQvS1nCvlIy2pICbKta+ZjWngYLNn4cCK4nyZkjS/w== dependencies: chalk "^4.0.0" diff-sequences "^27.4.0" jest-get-type "^27.4.0" - pretty-format "^27.4.2" + pretty-format "^27.4.6" jest-docblock@^27.4.0: version "27.4.0" @@ -6004,40 +6028,40 @@ jest-docblock@^27.4.0: dependencies: detect-newline "^3.0.0" -jest-each@^27.4.2: - version "27.4.2" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.4.2.tgz#19364c82a692d0d26557642098d1f4619c9ee7d3" - integrity sha512-53V2MNyW28CTruB3lXaHNk6PkiIFuzdOC9gR3C6j8YE/ACfrPnz+slB0s17AgU1TtxNzLuHyvNlLJ+8QYw9nBg== +jest-each@^27.4.6: + version "27.4.6" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.4.6.tgz#e7e8561be61d8cc6dbf04296688747ab186c40ff" + integrity sha512-n6QDq8y2Hsmn22tRkgAk+z6MCX7MeVlAzxmZDshfS2jLcaBlyhpF3tZSJLR+kXmh23GEvS0ojMR8i6ZeRvpQcA== dependencies: "@jest/types" "^27.4.2" chalk "^4.0.0" jest-get-type "^27.4.0" jest-util "^27.4.2" - pretty-format "^27.4.2" + pretty-format "^27.4.6" -jest-environment-jsdom@^27.4.4: - version "27.4.4" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.4.4.tgz#94f738e99514d7a880e8ed8e03e3a321d43b49db" - integrity sha512-cYR3ndNfHBqQgFvS1RL7dNqSvD//K56j/q1s2ygNHcfTCAp12zfIromO1w3COmXrxS8hWAh7+CmZmGCIoqGcGA== +jest-environment-jsdom@^27.4.6: + version "27.4.6" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.4.6.tgz#c23a394eb445b33621dfae9c09e4c8021dea7b36" + integrity sha512-o3dx5p/kHPbUlRvSNjypEcEtgs6LmvESMzgRFQE6c+Prwl2JLA4RZ7qAnxc5VM8kutsGRTB15jXeeSbJsKN9iA== dependencies: - "@jest/environment" "^27.4.4" - "@jest/fake-timers" "^27.4.2" + "@jest/environment" "^27.4.6" + "@jest/fake-timers" "^27.4.6" "@jest/types" "^27.4.2" "@types/node" "*" - jest-mock "^27.4.2" + jest-mock "^27.4.6" jest-util "^27.4.2" jsdom "^16.6.0" -jest-environment-node@^27.4.4: - version "27.4.4" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.4.4.tgz#42fe5e3b224cb69b99811ebf6f5eaa5a59618514" - integrity sha512-D+v3lbJ2GjQTQR23TK0kY3vFVmSeea05giInI41HHOaJnAwOnmUHTZgUaZL+VxUB43pIzoa7PMwWtCVlIUoVoA== +jest-environment-node@^27.4.6: + version "27.4.6" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.4.6.tgz#ee8cd4ef458a0ef09d087c8cd52ca5856df90242" + integrity sha512-yfHlZ9m+kzTKZV0hVfhVu6GuDxKAYeFHrfulmy7Jxwsq4V7+ZK7f+c0XP/tbVDMQW7E4neG2u147hFkuVz0MlQ== dependencies: - "@jest/environment" "^27.4.4" - "@jest/fake-timers" "^27.4.2" + "@jest/environment" "^27.4.6" + "@jest/fake-timers" "^27.4.6" "@jest/types" "^27.4.2" "@types/node" "*" - jest-mock "^27.4.2" + jest-mock "^27.4.6" jest-util "^27.4.2" jest-get-type@^27.4.0: @@ -6045,10 +6069,10 @@ jest-get-type@^27.4.0: resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.4.0.tgz#7503d2663fffa431638337b3998d39c5e928e9b5" integrity sha512-tk9o+ld5TWq41DkK14L4wox4s2D9MtTpKaAVzXfr5CUKm5ZK2ExcaFE0qls2W71zE/6R2TxxrK9w2r6svAFDBQ== -jest-haste-map@^27.4.5: - version "27.4.5" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.4.5.tgz#c2921224a59223f91e03ec15703905978ef0cc1a" - integrity sha512-oJm1b5qhhPs78K24EDGifWS0dELYxnoBiDhatT/FThgB9yxqUm5F6li3Pv+Q+apMBmmPNzOBnZ7ZxWMB1Leq1Q== +jest-haste-map@^27.4.6: + version "27.4.6" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.4.6.tgz#c60b5233a34ca0520f325b7e2cc0a0140ad0862a" + integrity sha512-0tNpgxg7BKurZeFkIOvGCkbmOHbLFf4LUQOxrQSMjvrQaQe3l6E8x6jYC1NuWkGo5WDdbr8FEzUxV2+LWNawKQ== dependencies: "@jest/types" "^27.4.2" "@types/graceful-fs" "^4.1.2" @@ -6059,34 +6083,33 @@ jest-haste-map@^27.4.5: jest-regex-util "^27.4.0" jest-serializer "^27.4.0" jest-util "^27.4.2" - jest-worker "^27.4.5" + jest-worker "^27.4.6" micromatch "^4.0.4" walker "^1.0.7" optionalDependencies: fsevents "^2.3.2" -jest-jasmine2@^27.4.5: - version "27.4.5" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.4.5.tgz#ff79d11561679ff6c89715b0cd6b1e8c0dfbc6dc" - integrity sha512-oUnvwhJDj2LhOiUB1kdnJjkx8C5PwgUZQb9urF77mELH9DGR4e2GqpWQKBOYXWs5+uTN9BGDqRz3Aeg5Wts7aw== +jest-jasmine2@^27.4.6: + version "27.4.6" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.4.6.tgz#109e8bc036cb455950ae28a018f983f2abe50127" + integrity sha512-uAGNXF644I/whzhsf7/qf74gqy9OuhvJ0XYp8SDecX2ooGeaPnmJMjXjKt0mqh1Rl5dtRGxJgNrHlBQIBfS5Nw== dependencies: - "@babel/traverse" "^7.1.0" - "@jest/environment" "^27.4.4" + "@jest/environment" "^27.4.6" "@jest/source-map" "^27.4.0" - "@jest/test-result" "^27.4.2" + "@jest/test-result" "^27.4.6" "@jest/types" "^27.4.2" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" - expect "^27.4.2" + expect "^27.4.6" is-generator-fn "^2.0.0" - jest-each "^27.4.2" - jest-matcher-utils "^27.4.2" - jest-message-util "^27.4.2" - jest-runtime "^27.4.5" - jest-snapshot "^27.4.5" + jest-each "^27.4.6" + jest-matcher-utils "^27.4.6" + jest-message-util "^27.4.6" + jest-runtime "^27.4.6" + jest-snapshot "^27.4.6" jest-util "^27.4.2" - pretty-format "^27.4.2" + pretty-format "^27.4.6" throat "^6.0.1" jest-junit@^13.0.0: @@ -6099,28 +6122,28 @@ jest-junit@^13.0.0: uuid "^8.3.2" xml "^1.0.1" -jest-leak-detector@^27.4.2: - version "27.4.2" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.4.2.tgz#7fc3120893a7a911c553f3f2bdff9faa4454abbb" - integrity sha512-ml0KvFYZllzPBJWDei3mDzUhyp/M4ubKebX++fPaudpe8OsxUE+m+P6ciVLboQsrzOCWDjE20/eXew9QMx/VGw== +jest-leak-detector@^27.4.6: + version "27.4.6" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.4.6.tgz#ed9bc3ce514b4c582637088d9faf58a33bd59bf4" + integrity sha512-kkaGixDf9R7CjHm2pOzfTxZTQQQ2gHTIWKY/JZSiYTc90bZp8kSZnUMS3uLAfwTZwc0tcMRoEX74e14LG1WapA== dependencies: jest-get-type "^27.4.0" - pretty-format "^27.4.2" + pretty-format "^27.4.6" -jest-matcher-utils@^27.4.2: - version "27.4.2" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.4.2.tgz#d17c5038607978a255e0a9a5c32c24e984b6c60b" - integrity sha512-jyP28er3RRtMv+fmYC/PKG8wvAmfGcSNproVTW2Y0P/OY7/hWUOmsPfxN1jOhM+0u2xU984u2yEagGivz9OBGQ== +jest-matcher-utils@^27.4.6: + version "27.4.6" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.4.6.tgz#53ca7f7b58170638590e946f5363b988775509b8" + integrity sha512-XD4PKT3Wn1LQnRAq7ZsTI0VRuEc9OrCPFiO1XL7bftTGmfNF0DcEwMHRgqiu7NGf8ZoZDREpGrCniDkjt79WbA== dependencies: chalk "^4.0.0" - jest-diff "^27.4.2" + jest-diff "^27.4.6" jest-get-type "^27.4.0" - pretty-format "^27.4.2" + pretty-format "^27.4.6" -jest-message-util@^27.4.2: - version "27.4.2" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.4.2.tgz#07f3f1bf207d69cf798ce830cc57f1a849f99388" - integrity sha512-OMRqRNd9E0DkBLZpFtZkAGYOXl6ZpoMtQJWTAREJKDOFa0M6ptB7L67tp+cszMBkvSgKOhNtQp2Vbcz3ZZKo/w== +jest-message-util@^27.4.6: + version "27.4.6" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.4.6.tgz#9fdde41a33820ded3127465e1a5896061524da31" + integrity sha512-0p5szriFU0U74czRSFjH6RyS7UYIAkn/ntwMuOwTGWrQIOh5NzXXrq72LOqIkJKKvFbPq+byZKuBz78fjBERBA== dependencies: "@babel/code-frame" "^7.12.13" "@jest/types" "^27.4.2" @@ -6128,14 +6151,14 @@ jest-message-util@^27.4.2: chalk "^4.0.0" graceful-fs "^4.2.4" micromatch "^4.0.4" - pretty-format "^27.4.2" + pretty-format "^27.4.6" slash "^3.0.0" stack-utils "^2.0.3" -jest-mock@^27.4.2: - version "27.4.2" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.4.2.tgz#184ff197a25491bfe4570c286daa5d62eb760b88" - integrity sha512-PDDPuyhoukk20JrQKeofK12hqtSka7mWH0QQuxSNgrdiPsrnYYLS6wbzu/HDlxZRzji5ylLRULeuI/vmZZDrYA== +jest-mock@^27.4.6: + version "27.4.6" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.4.6.tgz#77d1ba87fbd33ccb8ef1f061697e7341b7635195" + integrity sha512-kvojdYRkst8iVSZ1EJ+vc1RRD9llueBjKzXzeCytH3dMM7zvPV/ULcfI2nr0v0VUgm3Bjt3hBCQvOeaBz+ZTHw== dependencies: "@jest/types" "^27.4.2" "@types/node" "*" @@ -6150,40 +6173,40 @@ jest-regex-util@^27.0.0, jest-regex-util@^27.4.0: resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.4.0.tgz#e4c45b52653128843d07ad94aec34393ea14fbca" integrity sha512-WeCpMpNnqJYMQoOjm1nTtsgbR4XHAk1u00qDoNBQoykM280+/TmgA5Qh5giC1ecy6a5d4hbSsHzpBtu5yvlbEg== -jest-resolve-dependencies@^27.4.5: - version "27.4.5" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.4.5.tgz#9398af854bdb12d6a9e5a8a536ee401f889a3ecf" - integrity sha512-elEVvkvRK51y037NshtEkEnukMBWvlPzZHiL847OrIljJ8yIsujD2GXRPqDXC4rEVKbcdsy7W0FxoZb4WmEs7w== +jest-resolve-dependencies@^27.4.6: + version "27.4.6" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.4.6.tgz#fc50ee56a67d2c2183063f6a500cc4042b5e2327" + integrity sha512-W85uJZcFXEVZ7+MZqIPCscdjuctruNGXUZ3OHSXOfXR9ITgbUKeHj+uGcies+0SsvI5GtUfTw4dY7u9qjTvQOw== dependencies: "@jest/types" "^27.4.2" jest-regex-util "^27.4.0" - jest-snapshot "^27.4.5" + jest-snapshot "^27.4.6" -jest-resolve@^27.4.5: - version "27.4.5" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.4.5.tgz#8dc44f5065fb8d58944c20f932cb7b9fe9760cca" - integrity sha512-xU3z1BuOz/hUhVUL+918KqUgK+skqOuUsAi7A+iwoUldK6/+PW+utK8l8cxIWT9AW7IAhGNXjSAh1UYmjULZZw== +jest-resolve@^27.4.6: + version "27.4.6" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.4.6.tgz#2ec3110655e86d5bfcfa992e404e22f96b0b5977" + integrity sha512-SFfITVApqtirbITKFAO7jOVN45UgFzcRdQanOFzjnbd+CACDoyeX7206JyU92l4cRr73+Qy/TlW51+4vHGt+zw== dependencies: "@jest/types" "^27.4.2" chalk "^4.0.0" graceful-fs "^4.2.4" - jest-haste-map "^27.4.5" + jest-haste-map "^27.4.6" jest-pnp-resolver "^1.2.2" jest-util "^27.4.2" - jest-validate "^27.4.2" + jest-validate "^27.4.6" resolve "^1.20.0" resolve.exports "^1.1.0" slash "^3.0.0" -jest-runner@^27.4.5: - version "27.4.5" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.4.5.tgz#daba2ba71c8f34137dc7ac45616add35370a681e" - integrity sha512-/irauncTfmY1WkTaRQGRWcyQLzK1g98GYG/8QvIPviHgO1Fqz1JYeEIsSfF+9mc/UTA6S+IIHFgKyvUrtiBIZg== +jest-runner@^27.4.6: + version "27.4.6" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.4.6.tgz#1d390d276ec417e9b4d0d081783584cbc3e24773" + integrity sha512-IDeFt2SG4DzqalYBZRgbbPmpwV3X0DcntjezPBERvnhwKGWTW7C5pbbA5lVkmvgteeNfdd/23gwqv3aiilpYPg== dependencies: - "@jest/console" "^27.4.2" - "@jest/environment" "^27.4.4" - "@jest/test-result" "^27.4.2" - "@jest/transform" "^27.4.5" + "@jest/console" "^27.4.6" + "@jest/environment" "^27.4.6" + "@jest/test-result" "^27.4.6" + "@jest/transform" "^27.4.6" "@jest/types" "^27.4.2" "@types/node" "*" chalk "^4.0.0" @@ -6191,49 +6214,45 @@ jest-runner@^27.4.5: exit "^0.1.2" graceful-fs "^4.2.4" jest-docblock "^27.4.0" - jest-environment-jsdom "^27.4.4" - jest-environment-node "^27.4.4" - jest-haste-map "^27.4.5" - jest-leak-detector "^27.4.2" - jest-message-util "^27.4.2" - jest-resolve "^27.4.5" - jest-runtime "^27.4.5" + jest-environment-jsdom "^27.4.6" + jest-environment-node "^27.4.6" + jest-haste-map "^27.4.6" + jest-leak-detector "^27.4.6" + jest-message-util "^27.4.6" + jest-resolve "^27.4.6" + jest-runtime "^27.4.6" jest-util "^27.4.2" - jest-worker "^27.4.5" + jest-worker "^27.4.6" source-map-support "^0.5.6" throat "^6.0.1" -jest-runtime@^27.4.5: - version "27.4.5" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.4.5.tgz#97703ad2a1799d4f50ab59049bd21a9ceaed2813" - integrity sha512-CIYqwuJQXHQtPd/idgrx4zgJ6iCb6uBjQq1RSAGQrw2S8XifDmoM1Ot8NRd80ooAm+ZNdHVwsktIMGlA1F1FAQ== +jest-runtime@^27.4.6: + version "27.4.6" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.4.6.tgz#83ae923818e3ea04463b22f3597f017bb5a1cffa" + integrity sha512-eXYeoR/MbIpVDrjqy5d6cGCFOYBFFDeKaNWqTp0h6E74dK0zLHzASQXJpl5a2/40euBmKnprNLJ0Kh0LCndnWQ== dependencies: - "@jest/console" "^27.4.2" - "@jest/environment" "^27.4.4" - "@jest/globals" "^27.4.4" + "@jest/environment" "^27.4.6" + "@jest/fake-timers" "^27.4.6" + "@jest/globals" "^27.4.6" "@jest/source-map" "^27.4.0" - "@jest/test-result" "^27.4.2" - "@jest/transform" "^27.4.5" + "@jest/test-result" "^27.4.6" + "@jest/transform" "^27.4.6" "@jest/types" "^27.4.2" - "@types/yargs" "^16.0.0" chalk "^4.0.0" cjs-module-lexer "^1.0.0" collect-v8-coverage "^1.0.0" execa "^5.0.0" - exit "^0.1.2" glob "^7.1.3" graceful-fs "^4.2.4" - jest-haste-map "^27.4.5" - jest-message-util "^27.4.2" - jest-mock "^27.4.2" + jest-haste-map "^27.4.6" + jest-message-util "^27.4.6" + jest-mock "^27.4.6" jest-regex-util "^27.4.0" - jest-resolve "^27.4.5" - jest-snapshot "^27.4.5" + jest-resolve "^27.4.6" + jest-snapshot "^27.4.6" jest-util "^27.4.2" - jest-validate "^27.4.2" slash "^3.0.0" strip-bom "^4.0.0" - yargs "^16.2.0" jest-serializer-vue@^2.0.2: version "2.0.2" @@ -6250,34 +6269,32 @@ jest-serializer@^27.4.0: "@types/node" "*" graceful-fs "^4.2.4" -jest-snapshot@^27.4.5: - version "27.4.5" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.4.5.tgz#2ea909b20aac0fe62504bc161331f730b8a7ecc7" - integrity sha512-eCi/iM1YJFrJWiT9de4+RpWWWBqsHiYxFG9V9o/n0WXs6GpW4lUt4FAHAgFPTLPqCUVzrMQmSmTZSgQzwqR7IQ== +jest-snapshot@^27.4.6: + version "27.4.6" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.4.6.tgz#e2a3b4fff8bdce3033f2373b2e525d8b6871f616" + integrity sha512-fafUCDLQfzuNP9IRcEqaFAMzEe7u5BF7mude51wyWv7VRex60WznZIC7DfKTgSIlJa8aFzYmXclmN328aqSDmQ== dependencies: "@babel/core" "^7.7.2" "@babel/generator" "^7.7.2" - "@babel/parser" "^7.7.2" "@babel/plugin-syntax-typescript" "^7.7.2" "@babel/traverse" "^7.7.2" "@babel/types" "^7.0.0" - "@jest/transform" "^27.4.5" + "@jest/transform" "^27.4.6" "@jest/types" "^27.4.2" "@types/babel__traverse" "^7.0.4" "@types/prettier" "^2.1.5" babel-preset-current-node-syntax "^1.0.0" chalk "^4.0.0" - expect "^27.4.2" + expect "^27.4.6" graceful-fs "^4.2.4" - jest-diff "^27.4.2" + jest-diff "^27.4.6" jest-get-type "^27.4.0" - jest-haste-map "^27.4.5" - jest-matcher-utils "^27.4.2" - jest-message-util "^27.4.2" - jest-resolve "^27.4.5" + jest-haste-map "^27.4.6" + jest-matcher-utils "^27.4.6" + jest-message-util "^27.4.6" jest-util "^27.4.2" natural-compare "^1.4.0" - pretty-format "^27.4.2" + pretty-format "^27.4.6" semver "^7.3.2" jest-transform-stub@^2.0.0: @@ -6297,17 +6314,17 @@ jest-util@^27.0.0, jest-util@^27.4.2: graceful-fs "^4.2.4" picomatch "^2.2.3" -jest-validate@^27.4.2: - version "27.4.2" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.4.2.tgz#eecfcc1b1c9429aa007da08a2bae4e32a81bbbc3" - integrity sha512-hWYsSUej+Fs8ZhOm5vhWzwSLmVaPAxRy+Mr+z5MzeaHm9AxUpXdoVMEW4R86y5gOobVfBsMFLk4Rb+QkiEpx1A== +jest-validate@^27.4.6: + version "27.4.6" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.4.6.tgz#efc000acc4697b6cf4fa68c7f3f324c92d0c4f1f" + integrity sha512-872mEmCPVlBqbA5dToC57vA3yJaMRfIdpCoD3cyHWJOMx+SJwLNw0I71EkWs41oza/Er9Zno9XuTkRYCPDUJXQ== dependencies: "@jest/types" "^27.4.2" camelcase "^6.2.0" chalk "^4.0.0" jest-get-type "^27.4.0" leven "^3.1.0" - pretty-format "^27.4.2" + pretty-format "^27.4.6" jest-watch-typeahead@^1.0.0: version "1.0.0" @@ -6322,12 +6339,12 @@ jest-watch-typeahead@^1.0.0: string-length "^5.0.1" strip-ansi "^7.0.1" -jest-watcher@^27.0.0, jest-watcher@^27.4.2: - version "27.4.2" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.4.2.tgz#c9037edfd80354c9fe90de4b6f8b6e2b8e736744" - integrity sha512-NJvMVyyBeXfDezhWzUOCOYZrUmkSCiatpjpm+nFUid74OZEHk6aMLrZAukIiFDwdbqp6mTM6Ui1w4oc+8EobQg== +jest-watcher@^27.0.0, jest-watcher@^27.4.6: + version "27.4.6" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.4.6.tgz#673679ebeffdd3f94338c24f399b85efc932272d" + integrity sha512-yKQ20OMBiCDigbD0quhQKLkBO+ObGN79MO4nT7YaCuQ5SM+dkBNWE8cZX0FjU6czwMvWw6StWbe+Wv4jJPJ+fw== dependencies: - "@jest/test-result" "^27.4.2" + "@jest/test-result" "^27.4.6" "@jest/types" "^27.4.2" "@types/node" "*" ansi-escapes "^4.2.1" @@ -6344,23 +6361,23 @@ jest-worker@^26.2.1: merge-stream "^2.0.0" supports-color "^7.0.0" -jest-worker@^27.0.2, jest-worker@^27.3.1, jest-worker@^27.4.1, jest-worker@^27.4.5: - version "27.4.5" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.4.5.tgz#d696e3e46ae0f24cff3fa7195ffba22889262242" - integrity sha512-f2s8kEdy15cv9r7q4KkzGXvlY0JTcmCbMHZBfSQDwW77REr45IDWwd0lksDFeVHH2jJ5pqb90T77XscrjeGzzg== +jest-worker@^27.0.2, jest-worker@^27.3.1, jest-worker@^27.4.1, jest-worker@^27.4.6: + version "27.4.6" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.4.6.tgz#5d2d93db419566cb680752ca0792780e71b3273e" + integrity sha512-gHWJF/6Xi5CTG5QCvROr6GcmpIqNYpDJyc8A1h/DyXqH1tD6SnRCM0d3U5msV31D2LB/U+E0M+W4oyvKV44oNw== dependencies: "@types/node" "*" merge-stream "^2.0.0" supports-color "^8.0.0" jest@^27.1.0: - version "27.4.5" - resolved "https://registry.yarnpkg.com/jest/-/jest-27.4.5.tgz#66e45acba44137fac26be9d3cc5bb031e136dc0f" - integrity sha512-uT5MiVN3Jppt314kidCk47MYIRilJjA/l2mxwiuzzxGUeJIvA8/pDaJOAX5KWvjAo7SCydcW0/4WEtgbLMiJkg== + version "27.4.7" + resolved "https://registry.yarnpkg.com/jest/-/jest-27.4.7.tgz#87f74b9026a1592f2da05b4d258e57505f28eca4" + integrity sha512-8heYvsx7nV/m8m24Vk26Y87g73Ba6ueUd0MWed/NXMhSZIm62U/llVbS0PJe1SHunbyXjJ/BqG1z9bFjGUIvTg== dependencies: - "@jest/core" "^27.4.5" + "@jest/core" "^27.4.7" import-local "^3.0.2" - jest-cli "^27.4.5" + jest-cli "^27.4.7" joi@^17.4.0: version "17.5.0" @@ -6589,7 +6606,7 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -lilconfig@^2.0.3: +lilconfig@^2.0.3, lilconfig@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.4.tgz#f4507d043d7058b380b6a8f5cb7bcd4b34cee082" integrity sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA== @@ -6599,10 +6616,10 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -linkifyjs@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/linkifyjs/-/linkifyjs-3.0.4.tgz#469a1b44903d179e3b23317fd3c4e995453765b9" - integrity sha512-JWw1HHMx54g8mEsG7JwI8I/xh7qeJbF6L9u1dQOYW91RdRqDYpnTn1UaNXYkmLD967Vk0xGuyHzuRnkSApby3w== +linkifyjs@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/linkifyjs/-/linkifyjs-3.0.5.tgz#99e51a3a0c0e232fcb63ebb89eea3ff923378f34" + integrity sha512-1Y9XQH65eQKA9p2xtk+zxvnTeQBG7rdAXSkUG97DmuI/Xhji9uaUzaWxRj6rf9YC0v8KKHkxav7tnLX82Sz5Fg== loader-runner@^4.1.0, loader-runner@^4.2.0: version "4.2.0" @@ -6788,9 +6805,9 @@ media-typer@0.3.0: integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= memfs@^3.1.2, memfs@^3.2.2: - version "3.4.0" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.4.0.tgz#8bc12062b973be6b295d4340595736a656f0a257" - integrity sha512-o/RfP0J1d03YwsAxyHxAYs2kyJp55AFkMazlFAZFR2I2IXkxiUTXRabJ6RmNNCQ83LAD2jy52Khj0m3OffpNdA== + version "3.4.1" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.4.1.tgz#b78092f466a0dce054d63d39275b24c71d3f1305" + integrity sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw== dependencies: fs-monkey "1.0.3" @@ -6811,7 +6828,7 @@ merge-stream@^2.0.0: resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -merge2@^1.3.0: +merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== @@ -6857,9 +6874,9 @@ mimic-fn@^2.1.0: integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== mini-css-extract-plugin@^2.4.3: - version "2.4.5" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.4.5.tgz#191d6c170226037212c483af1180b4010b7b9eef" - integrity sha512-oEIhRucyn1JbT/1tU2BhnwO6ft1jjH1iCX9Gc59WFMg0n5773rQU0oyQ0zzeYFFuBfONaRbQJyGoPtuNseMxjA== + version "2.4.6" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.4.6.tgz#0f925aaa02dd26513bac40802062a87ebe32e7cc" + integrity sha512-khHpc29bdsE9EQiGSLqQieLyMbGca+bkC42/BBL1gXC8yAS0nHpOTUCBYUK6En1FuRdfE9wKXhGtsab8vmsugg== dependencies: schema-utils "^4.0.0" @@ -6875,7 +6892,7 @@ minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" -minimist@^1.2.0, minimist@^1.2.5: +minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== @@ -6996,10 +7013,10 @@ node-fetch@^2.6.1: dependencies: whatwg-url "^5.0.0" -node-forge@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" - integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== +node-forge@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.2.0.tgz#850cec9230f62f9a7cd8ddd08dc74b4be52573ad" + integrity sha512-M4AsdaP0bGNaSPtatd/+f76asocI0cFaURRdeQVZvrJBrYp2Qohv5hDbGHykuNqCb1BYjWHjdS6HlN50qbztwA== node-int64@^0.4.0: version "0.4.0" @@ -7088,6 +7105,11 @@ object-assign@^4.0.1, object-assign@^4.1.1: resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= +object-hash@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.2.0.tgz#5ad518581eefc443bd763472b8ff2e9c2c0d54a5" + integrity sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw== + object-inspect@^1.11.0, object-inspect@^1.9.0: version "1.12.0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" @@ -7377,7 +7399,7 @@ path-key@^3.0.0, path-key@^3.1.0: resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -path-parse@^1.0.6: +path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== @@ -7393,9 +7415,9 @@ path-type@^4.0.0: integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== phoenix@^1.6: - version "1.6.5" - resolved "https://registry.yarnpkg.com/phoenix/-/phoenix-1.6.5.tgz#89f44eef4349d3b87e0ba7b65ed36cba8c9e277a" - integrity sha512-Krhx9IwB1Lzj+MqK5bz8CI2ULxjdO63CAjdAZni2lSa1LW3zNflMnsVeQLOu6jz8TDl9wtUKfx3vNSZDAB8jQw== + version "1.6.6" + resolved "https://registry.yarnpkg.com/phoenix/-/phoenix-1.6.6.tgz#16b578e36361d238707a66bf235e3f59ff3fb298" + integrity sha512-KLNHVlrZH8UAoEzeCS1XBI9z5juWz0gZ/+No7j5p/byVINnd+del9H5vtBMzQgZa3ZcUjVVZcQR8bKdnH/FmMg== picocolors@^0.2.1: version "0.2.1" @@ -7408,22 +7430,15 @@ picocolors@^1.0.0: integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" - integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -pirates@^4.0.1: +pirates@^4.0.4: version "4.0.4" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.4.tgz#07df81e61028e402735cdd49db701e4885b4e6e6" integrity sha512-ZIrVPH+A52Dw84R0L3/VS9Op04PuQ2SEoJL6bkshmiTic/HldyW9Tf7oH5mhJZBK7NmDx27vSMrYEXPXclpDKw== -pkg-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" - integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= - dependencies: - find-up "^2.1.0" - pkg-dir@^4.1.0, pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" @@ -7445,18 +7460,18 @@ portfinder@^1.0.26, portfinder@^1.0.28: debug "^3.1.1" mkdirp "^0.5.5" -postcss-calc@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.0.0.tgz#a05b87aacd132740a5db09462a3612453e5df90a" - integrity sha512-5NglwDrcbiy8XXfPM11F3HeC6hoT9W7GUH/Zi5U/p7u3Irv4rHhdDcIZwG0llHXV4ftsBjpfWMXAnXNl4lnt8g== +postcss-calc@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.0.tgz#e67ef8c8456d091c0802968faecf79d0e6e00d24" + integrity sha512-PueXCv288diX7OXyJicGNA6Q3+L4xYb2cALTAeFj9X6PXnj+s4pUf1vkZnwn+rldfu2taCA9ondjF93lhRTPFA== dependencies: postcss-selector-parser "^6.0.2" postcss-value-parser "^4.0.2" -postcss-colormin@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.2.2.tgz#019cd6912bef9e7e0924462c5e4ffae241e2f437" - integrity sha512-tSEe3NpqWARUTidDlF0LntPkdlhXqfDFuA1yslqpvvGAfpZ7oBaw+/QXd935NKm2U9p4PED0HDZlzmMk7fVC6g== +postcss-colormin@^5.2.3: + version "5.2.3" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.2.3.tgz#da7fb80e81ad80d2867ea9e38672a892add5df15" + integrity sha512-dra4xoAjub2wha6RUXAgadHEn2lGxbj8drhFcIGLOMn914Eu7DkPUurugDXgstwttCYkJtZ/+PkWRWdp3UHRIA== dependencies: browserslist "^4.16.6" caniuse-api "^3.0.0" @@ -7485,10 +7500,25 @@ postcss-discard-empty@^5.0.1: resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz#ee136c39e27d5d2ed4da0ee5ed02bc8a9f8bf6d8" integrity sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw== -postcss-discard-overridden@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz#454b41f707300b98109a75005ca4ab0ff2743ac6" - integrity sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q== +postcss-discard-overridden@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.0.2.tgz#e6f51d83e66feffcf05ed94c4ad20b814d0aab5f" + integrity sha512-+56BLP6NSSUuWUXjRgAQuho1p5xs/hU5Sw7+xt9S3JSg+7R6+WMGnJW7Hre/6tTuZ2xiXMB42ObkiZJ2hy/Pew== + +postcss-js@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.0.tgz#31db79889531b80dc7bc9b0ad283e418dce0ac00" + integrity sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ== + dependencies: + camelcase-css "^2.0.1" + +postcss-load-config@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.1.1.tgz#2f53a17f2f543d9e63864460af42efdac0d41f87" + integrity sha512-c/9XYboIbSEUZpiD1UQD0IKiUe8n9WHYV7YFe7X7J+ZwCsEKkUJSFWjS9hBU1RR9THR7jMXst8sxiqP0jjo2mg== + dependencies: + lilconfig "^2.0.4" + yaml "^1.10.2" postcss-loader@^6.1.1: version "6.2.1" @@ -7507,46 +7537,46 @@ postcss-merge-longhand@^5.0.4: postcss-value-parser "^4.1.0" stylehacks "^5.0.1" -postcss-merge-rules@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.0.3.tgz#b5cae31f53129812a77e3eb1eeee448f8cf1a1db" - integrity sha512-cEKTMEbWazVa5NXd8deLdCnXl+6cYG7m2am+1HzqH0EnTdy8fRysatkaXb2dEnR+fdaDxTvuZ5zoBdv6efF6hg== +postcss-merge-rules@^5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.0.4.tgz#a50640fd832380f322bd2861a9b33fbde4219f9b" + integrity sha512-yOj7bW3NxlQxaERBB0lEY1sH5y+RzevjbdH4DBJurjKERNpknRByFNdNe+V72i5pIZL12woM9uGdS5xbSB+kDQ== dependencies: browserslist "^4.16.6" caniuse-api "^3.0.0" - cssnano-utils "^2.0.1" + cssnano-utils "^3.0.0" postcss-selector-parser "^6.0.5" -postcss-minify-font-values@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz#a90cefbfdaa075bd3dbaa1b33588bb4dc268addf" - integrity sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA== +postcss-minify-font-values@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.0.2.tgz#4603e956d85cd0719156e2b3eb68e3cd2f917092" + integrity sha512-R6MJZryq28Cw0AmnyhXrM7naqJZZLoa1paBltIzh2wM7yb4D45TLur+eubTQ4jCmZU9SGeZdWsc5KcSoqTMeTg== dependencies: - postcss-value-parser "^4.1.0" + postcss-value-parser "^4.2.0" -postcss-minify-gradients@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.0.3.tgz#f970a11cc71e08e9095e78ec3a6b34b91c19550e" - integrity sha512-Z91Ol22nB6XJW+5oe31+YxRsYooxOdFKcbOqY/V8Fxse1Y3vqlNRpi1cxCqoACZTQEhl+xvt4hsbWiV5R+XI9Q== +postcss-minify-gradients@^5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.0.4.tgz#f13146950513f5a201015306914e3c76d10b591d" + integrity sha512-RVwZA7NC4R4J76u8X0Q0j+J7ItKUWAeBUJ8oEEZWmtv3Xoh19uNJaJwzNpsydQjk6PkuhRrK+YwwMf+c+68EYg== dependencies: colord "^2.9.1" - cssnano-utils "^2.0.1" - postcss-value-parser "^4.1.0" + cssnano-utils "^3.0.0" + postcss-value-parser "^4.2.0" -postcss-minify-params@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.0.2.tgz#1b644da903473fbbb18fbe07b8e239883684b85c" - integrity sha512-qJAPuBzxO1yhLad7h2Dzk/F7n1vPyfHfCCh5grjGfjhi1ttCnq4ZXGIW77GSrEbh9Hus9Lc/e/+tB4vh3/GpDg== +postcss-minify-params@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.0.3.tgz#9f933d37098ef1dcf007e159a47bb2c1cf06989d" + integrity sha512-NY92FUikE+wralaiVexFd5gwb7oJTIDhgTNeIw89i1Ymsgt4RWiPXfz3bg7hDy4NL6gepcThJwOYNtZO/eNi7Q== dependencies: alphanum-sort "^1.0.2" browserslist "^4.16.6" - cssnano-utils "^2.0.1" - postcss-value-parser "^4.1.0" + cssnano-utils "^3.0.0" + postcss-value-parser "^4.2.0" -postcss-minify-selectors@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz#4385c845d3979ff160291774523ffa54eafd5a54" - integrity sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og== +postcss-minify-selectors@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.1.1.tgz#20ae03b411f7fb397451e3d7d85b989f944b871c" + integrity sha512-TOzqOPXt91O2luJInaVPiivh90a2SIK5Nf1Ea7yEIM/5w+XA5BGrZGUSW8aEx9pJ/oNj7ZJBhjvigSiBV+bC1Q== dependencies: alphanum-sort "^1.0.2" postcss-selector-parser "^6.0.5" @@ -7579,56 +7609,60 @@ postcss-modules-values@^4.0.0: dependencies: icss-utils "^5.0.0" +postcss-nested@5.0.6: + version "5.0.6" + resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-5.0.6.tgz#466343f7fc8d3d46af3e7dba3fcd47d052a945bc" + integrity sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA== + dependencies: + postcss-selector-parser "^6.0.6" + postcss-normalize-charset@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz#121559d1bebc55ac8d24af37f67bd4da9efd91d0" integrity sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg== -postcss-normalize-display-values@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz#62650b965981a955dffee83363453db82f6ad1fd" - integrity sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ== +postcss-normalize-display-values@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.2.tgz#8b5273c6c7d0a445e6ef226b8a5bb3204a55fb99" + integrity sha512-RxXoJPUR0shSjkMMzgEZDjGPrgXUVYyWA/YwQRicb48H15OClPuaDR7tYokLAlGZ2tCSENEN5WxjgxSD5m4cUw== dependencies: - cssnano-utils "^2.0.1" - postcss-value-parser "^4.1.0" + postcss-value-parser "^4.2.0" -postcss-normalize-positions@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz#868f6af1795fdfa86fbbe960dceb47e5f9492fe5" - integrity sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg== +postcss-normalize-positions@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.0.2.tgz#799fa494b352a5da183be8f050024af6d92fa29c" + integrity sha512-tqghWFVDp2btqFg1gYob1etPNxXLNh3uVeWgZE2AQGh6b2F8AK2Gj36v5Vhyh+APwIzNjmt6jwZ9pTBP+/OM8g== dependencies: - postcss-value-parser "^4.1.0" + postcss-value-parser "^4.2.0" -postcss-normalize-repeat-style@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz#cbc0de1383b57f5bb61ddd6a84653b5e8665b2b5" - integrity sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w== +postcss-normalize-repeat-style@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.2.tgz#fd9bddba3e6fd5f5d95c18dfb42a09ecd563adea" + integrity sha512-/rIZn8X9bBzC7KvY4iKUhXUGW3MmbXwfPF23jC9wT9xTi7kAvgj8sEgwxjixBmoL6MVa4WOgxNz2hAR6wTK8tw== dependencies: - cssnano-utils "^2.0.1" - postcss-value-parser "^4.1.0" + postcss-value-parser "^4.2.0" -postcss-normalize-string@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz#d9eafaa4df78c7a3b973ae346ef0e47c554985b0" - integrity sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA== +postcss-normalize-string@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.0.2.tgz#1b2bbf91526f61266f28abf7f773e4136b2c4bd2" + integrity sha512-zaI1yzwL+a/FkIzUWMQoH25YwCYxi917J4pYm1nRXtdgiCdnlTkx5eRzqWEC64HtRa06WCJ9TIutpb6GmW4gFw== dependencies: - postcss-value-parser "^4.1.0" + postcss-value-parser "^4.2.0" -postcss-normalize-timing-functions@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz#8ee41103b9130429c6cbba736932b75c5e2cb08c" - integrity sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q== +postcss-normalize-timing-functions@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.2.tgz#db4f4f49721f47667afd1fdc5edb032f8d9cdb2e" + integrity sha512-Ao0PP6MoYsRU1LxeVUW740ioknvdIUmfr6uAA3xWlQJ9s69/Tupy8qwhuKG3xWfl+KvLMAP9p2WXF9cwuk/7Bg== dependencies: - cssnano-utils "^2.0.1" - postcss-value-parser "^4.1.0" + postcss-value-parser "^4.2.0" -postcss-normalize-unicode@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz#82d672d648a411814aa5bf3ae565379ccd9f5e37" - integrity sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA== +postcss-normalize-unicode@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.2.tgz#c4db89a0116066716b9e9fcb6444ce63178f5ced" + integrity sha512-3y/V+vjZ19HNcTizeqwrbZSUsE69ZMRHfiiyLAJb7C7hJtYmM4Gsbajy7gKagu97E8q5rlS9k8FhojA8cpGhWw== dependencies: - browserslist "^4.16.0" - postcss-value-parser "^4.1.0" + browserslist "^4.16.6" + postcss-value-parser "^4.2.0" postcss-normalize-url@^5.0.4: version "5.0.4" @@ -7638,20 +7672,20 @@ postcss-normalize-url@^5.0.4: normalize-url "^6.0.1" postcss-value-parser "^4.2.0" -postcss-normalize-whitespace@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz#b0b40b5bcac83585ff07ead2daf2dcfbeeef8e9a" - integrity sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA== - dependencies: - postcss-value-parser "^4.1.0" - -postcss-ordered-values@^5.0.2: +postcss-normalize-whitespace@^5.0.2: version "5.0.2" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.0.2.tgz#1f351426977be00e0f765b3164ad753dac8ed044" - integrity sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ== + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.2.tgz#92c5eaffe5255b5c43fca0baf19227e607c534db" + integrity sha512-CXBx+9fVlzSgbk0IXA/dcZn9lXixnQRndnsPC5ht3HxlQ1bVh77KQDL1GffJx1LTzzfae8ftMulsjYmO2yegxA== dependencies: - cssnano-utils "^2.0.1" - postcss-value-parser "^4.1.0" + postcss-value-parser "^4.2.0" + +postcss-ordered-values@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.0.3.tgz#d80a8565f2e21efe8a06abacd60629a783bbcf54" + integrity sha512-T9pDS+P9bWeFvqivXd5ACzQmrCmHjv3ZP+djn8E1UZY7iK79pFSm7i3WbKw2VSmFmdbMm8sQ12OPcNpzBo3Z2w== + dependencies: + cssnano-utils "^3.0.0" + postcss-value-parser "^4.2.0" postcss-reduce-initial@^5.0.2: version "5.0.2" @@ -7661,18 +7695,17 @@ postcss-reduce-initial@^5.0.2: browserslist "^4.16.6" caniuse-api "^3.0.0" -postcss-reduce-transforms@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz#93c12f6a159474aa711d5269923e2383cedcf640" - integrity sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA== +postcss-reduce-transforms@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.2.tgz#9242758629f9ad4d90312eadbc921259d15bee4d" + integrity sha512-25HeDeFsgiPSUx69jJXZn8I06tMxLQJJNF5h7i9gsUg8iP4KOOJ8EX8fj3seeoLt3SLU2YDD6UPnDYVGUO7DEA== dependencies: - cssnano-utils "^2.0.1" - postcss-value-parser "^4.1.0" + postcss-value-parser "^4.2.0" -postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5: - version "6.0.7" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.7.tgz#48404830a635113a71fd79397de8209ed05a66fc" - integrity sha512-U+b/Deoi4I/UmE6KOVPpnhS7I7AYdKbhGcat+qTQ27gycvaACvNEw11ba6RrkwVmDVRW7sigWgLj4/KbbJjeDA== +postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.6, postcss-selector-parser@^6.0.8: + version "6.0.8" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.8.tgz#f023ed7a9ea736cd7ef70342996e8e78645a7914" + integrity sha512-D5PG53d209Z1Uhcc0qAZ5U3t5HagH3cxu+WLZ22jt3gLUpXM4eXXfiO14jiDWST3NNooX/E8wISfOhZ9eIjGTQ== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" @@ -7706,7 +7739,7 @@ postcss@^7.0.36: picocolors "^0.2.1" source-map "^0.6.1" -postcss@^8.2.15, postcss@^8.2.6, postcss@^8.3.11, postcss@^8.3.5: +postcss@^8, postcss@^8.2.15, postcss@^8.2.6, postcss@^8.3.11, postcss@^8.3.5: version "8.4.5" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.5.tgz#bae665764dfd4c6fcc24dc0fdf7e7aa00cc77f95" integrity sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg== @@ -7776,12 +7809,11 @@ pretty-format@^23.0.1: ansi-regex "^3.0.0" ansi-styles "^3.2.0" -pretty-format@^27.0.0, pretty-format@^27.4.2: - version "27.4.2" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.4.2.tgz#e4ce92ad66c3888423d332b40477c87d1dac1fb8" - integrity sha512-p0wNtJ9oLuvgOQDEIZ9zQjZffK7KtyR6Si0jnXULIDwrlNF8Cuir3AZP0hHv0jmKuNN/edOnbMjnzd4uTcmWiw== +pretty-format@^27.0.0, pretty-format@^27.4.6: + version "27.4.6" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.4.6.tgz#1b784d2f53c68db31797b2348fa39b49e31846b7" + integrity sha512-NblstegA1y/RJW2VyML+3LlpFjzx62cUrtBIKIWDXEDkjNeleA7Od7nrzcs/VLQvAeV4CgSYhrN39DRN88Qi/g== dependencies: - "@jest/types" "^27.4.2" ansi-regex "^5.0.1" ansi-styles "^5.0.0" react-is "^17.0.1" @@ -7823,13 +7855,13 @@ prompts@^2.0.1: sisteransi "^1.0.5" prop-types@^15.7.2: - version "15.7.2" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" - integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== dependencies: loose-envify "^1.4.0" object-assign "^4.1.1" - react-is "^16.8.1" + react-is "^16.13.1" prosemirror-commands@^1.1.12: version "1.1.12" @@ -7849,7 +7881,7 @@ prosemirror-dropcursor@^1.4.0: prosemirror-transform "^1.1.0" prosemirror-view "^1.1.0" -prosemirror-gapcursor@^1.2.0: +prosemirror-gapcursor@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prosemirror-gapcursor/-/prosemirror-gapcursor-1.2.1.tgz#02365e1bcc1ad25d390b0fb7f0e94a7fc173ad75" integrity sha512-PHa9lj27iM/g4C46gxVzsefuXVfy/LrGQH4QjMRht7VDBgw77iWYWn8ZHMWSFkwtr9jQEuxI5gccHHHwWG80nw== @@ -7876,10 +7908,10 @@ prosemirror-keymap@^1.0.0, prosemirror-keymap@^1.1.5: prosemirror-state "^1.0.0" w3c-keyname "^2.2.0" -prosemirror-model@^1.0.0, prosemirror-model@^1.14.3, prosemirror-model@^1.15.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.15.0.tgz#23bc09098daa7c309dba90a76a1b989ce6f61405" - integrity sha512-hQJv7SnIhlAy9ga3lhPPgaufhvCbQB9tHwscJ9E1H1pPHmN8w5V/lURueoYv9Kc3/bpNWoyHa8r3g//m7N0ChQ== +prosemirror-model@^1.0.0, prosemirror-model@^1.16.0, prosemirror-model@^1.16.1: + version "1.16.1" + resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.16.1.tgz#fb388270bc9609b66298d6a7e15d0cc1d6c61253" + integrity sha512-r1/w0HDU40TtkXp0DyKBnFPYwd8FSlUSJmGCGFv4DeynfeSlyQF2FD0RQbVEMOe6P3PpUSXM6LZBV7W/YNZ4mA== dependencies: orderedmap "^1.1.0" @@ -7906,12 +7938,12 @@ prosemirror-transform@^1.0.0, prosemirror-transform@^1.1.0, prosemirror-transfor dependencies: prosemirror-model "^1.0.0" -prosemirror-view@^1.0.0, prosemirror-view@^1.1.0, prosemirror-view@^1.23.3: - version "1.23.3" - resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.23.3.tgz#9ba85fefaf45e813c46562b694fc5f6f9a5cba9c" - integrity sha512-89icyMdXXwxmTxYj0TIuG5M/d0iKeu79tr+PVtC/4qtCOoHrPSPrblJcFOuOWcxGlA/Ei8PqJB4g5HkKR8jWvQ== +prosemirror-view@^1.0.0, prosemirror-view@^1.1.0, prosemirror-view@^1.23.5: + version "1.23.5" + resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.23.5.tgz#0f4af48fa9d30aa0b945816e2b8e6cb1c82ac674" + integrity sha512-GlcCtoFdW17KNOKjOl7OZTU3btENgVfzN/i0RBvy1SEKAZfo88PdvcFrWTraNZHH+y/uhYR3PAdMiDK9DlN5UA== dependencies: - prosemirror-model "^1.14.3" + prosemirror-model "^1.16.0" prosemirror-state "^1.0.0" prosemirror-transform "^1.1.0" @@ -7946,11 +7978,6 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" @@ -7961,16 +7988,16 @@ qs@6.9.6: resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.6.tgz#26ed3c8243a431b2924aca84cc90471f35d5a0ee" integrity sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ== -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= - queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -7993,7 +8020,7 @@ raw-body@2.4.2: iconv-lite "0.4.24" unpipe "1.0.0" -react-is@^16.7.0, react-is@^16.8.1: +react-is@^16.13.1, react-is@^16.7.0: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -8203,12 +8230,13 @@ resolve.exports@^1.1.0: integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.9.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== + version "1.21.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.21.0.tgz#b51adc97f3472e6a5cf4444d34bc9d6b9037591f" + integrity sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA== dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" + is-core-module "^2.8.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" restore-cursor@^2.0.0: version "2.0.0" @@ -8254,9 +8282,9 @@ rollup-plugin-terser@^7.0.0: terser "^5.0.0" rollup@^2.43.1: - version "2.61.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.61.1.tgz#1a5491f84543cf9e4caf6c61222d9a3f8f2ba454" - integrity sha512-BbTXlEvB8d+XFbK/7E5doIcRtxWPRiqr0eb5vQ0+2paMM04Ye4PZY5nHOQef2ix24l/L0SpLd5hwcH15QHPdvA== + version "2.63.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.63.0.tgz#fe2f7fec2133f3fab9e022b9ac245628d817c6bb" + integrity sha512-nps0idjmD+NXl6OREfyYXMn/dar3WGcyKn+KBzPdaLecub3x/LrId0wUcthcr8oZUAcZAR8NKcfGGFlNgGL1kQ== optionalDependencies: fsevents "~2.3.2" @@ -8315,9 +8343,9 @@ sass-loader@^12.0.0: neo-async "^2.6.2" sass@^1.34.1: - version "1.45.1" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.45.1.tgz#fa03951f924d1ba5762949567eaf660e608a1ab0" - integrity sha512-pwPRiq29UR0o4X3fiQyCtrESldXvUQAAE0QmcJTpsI4kuHHcLzZ54M1oNBVIXybQv8QF2zfkpFcTxp8ta97dUA== + version "1.47.0" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.47.0.tgz#c22dd0eed2e4a991430dae0b03c8e694bc41c2b4" + integrity sha512-GtXwvwgD7/6MLUZPnlA5/8cdRgC9SzT5kAnnJMRmEZQFRE3J56Foswig4NyyyQGsnmNvg6EUM/FP0Pe9Y2zywQ== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" @@ -8373,11 +8401,11 @@ select-hose@^2.0.0: integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= selfsigned@^1.10.11: - version "1.10.11" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.11.tgz#24929cd906fe0f44b6d01fb23999a739537acbe9" - integrity sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA== + version "1.10.13" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.13.tgz#763e091c684cbcbe98aa40b15b01da3716d68a12" + integrity sha512-UmLwTKZwNmXYDAlRFhaEdgEg0dp9k5gfJXuO7uKvSqioN1M0+Mgf4V39IlVZMSuqGoCi6h5legkhNXvWy0rFSg== dependencies: - node-forge "^0.10.0" + node-forge "^1.2.0" "semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.6.0: version "5.7.1" @@ -8914,6 +8942,11 @@ supports-hyperlinks@^2.0.0: has-flag "^4.0.0" supports-color "^7.0.0" +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + svg-tags@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" @@ -8943,9 +8976,9 @@ symbol-tree@^3.2.4: integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== table@^6.0.9: - version "6.7.5" - resolved "https://registry.yarnpkg.com/table/-/table-6.7.5.tgz#f04478c351ef3d8c7904f0e8be90a1b62417d238" - integrity sha512-LFNeryOqiQHqCVKzhkymKwt6ozeRhlm8IL1mE8rNUurkir4heF6PzMyRgaTa4tlyPTGGgXuvVOF/OLWiH09Lqw== + version "6.8.0" + resolved "https://registry.yarnpkg.com/table/-/table-6.8.0.tgz#87e28f14fa4321c3377ba286f07b79b281a3b3ca" + integrity sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA== dependencies: ajv "^8.0.1" lodash.truncate "^4.4.2" @@ -8953,6 +8986,32 @@ table@^6.0.9: string-width "^4.2.3" strip-ansi "^6.0.1" +tailwindcss@^3: + version "3.0.12" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.0.12.tgz#b43bf952dbfd62cec087319748eb69f8e1c7855d" + integrity sha512-VqhF86z2c34sJyS5ZS8Q2nYuN0KzqZw1GGsuQQO9kJ3mY1oG7Fsag0vICkxUVXk6P+1sUkTkjMjKWCjEF0hNHw== + dependencies: + arg "^5.0.1" + chalk "^4.1.2" + chokidar "^3.5.2" + color-name "^1.1.4" + cosmiconfig "^7.0.1" + detective "^5.2.0" + didyoumean "^1.2.2" + dlv "^1.1.3" + fast-glob "^3.2.7" + glob-parent "^6.0.2" + is-glob "^4.0.3" + normalize-path "^3.0.0" + object-hash "^2.2.0" + postcss-js "^4.0.0" + postcss-load-config "^3.1.0" + postcss-nested "5.0.6" + postcss-selector-parser "^6.0.8" + postcss-value-parser "^4.2.0" + quick-lru "^5.1.1" + resolve "^1.20.0" + tapable@^1.0.0: version "1.1.3" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" @@ -9165,7 +9224,7 @@ ts-loader@^9.2.5: micromatch "^4.0.0" semver "^7.3.4" -tsconfig-paths@^3.11.0: +tsconfig-paths@^3.12.0: version "3.12.0" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz#19769aca6ee8f6a1a341e38c8fa45dd9fb18899b" integrity sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg== @@ -9348,14 +9407,6 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= - dependencies: - punycode "1.3.2" - querystring "0.2.0" - util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -9392,9 +9443,9 @@ v8-compile-cache@^2.0.3: integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== v8-to-istanbul@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.1.0.tgz#0aeb763894f1a0a1676adf8a8b7612a38902446c" - integrity sha512-/PRhfd8aTNp9Ggr62HPzXg2XasNFGy5PBt0Rp04du7/8GNNSgxFL6WBTkgMKSL9bFjH+8kKEG3f37FmxiTqUUA== + version "8.1.1" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz#77b752fd3975e31bbcef938f85e9bd1c7a8d60ed" + integrity sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w== dependencies: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" @@ -9418,6 +9469,11 @@ vue-class-component@^7.2.3: resolved "https://registry.yarnpkg.com/vue-class-component/-/vue-class-component-7.2.6.tgz#8471e037b8e4762f5a464686e19e5afc708502e4" integrity sha512-+eaQXVrAm/LldalI272PpDe3+i4mPis0ORiMYxF6Ae4hyuCh15W8Idet7wPUEs4N4YptgFHGys4UrgNQOMyO6w== +vue-cli-plugin-tailwind@^3.0.0-beta.0: + version "3.0.0-beta.0" + resolved "https://registry.yarnpkg.com/vue-cli-plugin-tailwind/-/vue-cli-plugin-tailwind-3.0.0-beta.0.tgz#274cd6e8638897a7661aa8e34db75ae66040fe92" + integrity sha512-JxuhnSgMcZgNZMkeb+hL30rxEphcGZqO+R0cqHjFMlSaD1fFIn/C9V4Ry3MBk3Y/mq7zZvYEyzXOYPc/jOd+uQ== + vue-eslint-parser@^8.0.0, vue-eslint-parser@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-8.0.1.tgz#25e08b20a414551531f3e19f999902e1ecf45f13" @@ -9460,9 +9516,9 @@ vue-i18n-extract@^2.0.4: js-yaml "^4.1.0" vue-i18n@^8.14.0: - version "8.26.7" - resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-8.26.7.tgz#adfd48373449fe31438c48e3b3bd43044dc3a681" - integrity sha512-7apa5PvRg1YCLoraE3lOgpCG8hJGupLCtywQWedWsgBbvF0TOgFvhitqK9xRH0PBGG1G8aiJz9oklyNDFfDxLg== + version "8.26.8" + resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-8.26.8.tgz#afe936adbf96ff0e9808e04845b8f41cc21c666f" + integrity sha512-BN2OXolO15AKS95yNF8oOtARibaO6RxyKkAYNV4XpOmL7S4eVZYMIDtyvDv+XGZaiUmBJSH9mdNqzexvGMnK2A== vue-loader@^16.8.2: version "16.8.3" @@ -9662,10 +9718,10 @@ webpack-dev-middleware@^5.3.0: range-parser "^1.2.1" schema-utils "^4.0.0" -webpack-dev-server@^4.1.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.7.0.tgz#658aae4902dc920e90dbb8ad8b4eaf6491ac33af" - integrity sha512-ldR+a54iygMxUawTzMlWD/JblePhNRVGHxTHQz9EAvsbH7HZbX53OxV6Y092x+tgN5umv885i2X4wfdo/ynEQA== +webpack-dev-server@*, webpack-dev-server@^4.1.0: + version "4.7.2" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.7.2.tgz#324b79046491f2cf0b9d9e275381198c8246b380" + integrity sha512-s6yEOSfPpB6g1T2+C5ZOUt5cQOMhjI98IVmmvMNb5cdiqHoxSUfACISHqU/wZy+q4ar/A9jW0pbNj7sa50XRVA== dependencies: "@types/bonjour" "^3.5.9" "@types/connect-history-api-fallback" "^1.3.5" @@ -9694,7 +9750,6 @@ webpack-dev-server@^4.1.0: sockjs "^0.3.21" spdy "^4.0.2" strip-ansi "^7.0.0" - url "^0.11.0" webpack-dev-middleware "^5.3.0" ws "^8.1.0" @@ -9724,7 +9779,7 @@ webpack-virtual-modules@^0.4.2: resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.4.3.tgz#cd597c6d51d5a5ecb473eea1983a58fa8a17ded9" integrity sha512-5NUqC2JquIL2pBAAo/VfBP6KuGkHIZQXW/lNKupLPfhViwh8wNsu0BObtl09yuKZszeEUfbXz8xhrHvSG16Nqw== -webpack@*, webpack@^5.38.1, webpack@^5.54.0: +webpack@^5.54.0: version "5.65.0" resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.65.0.tgz#ed2891d9145ba1f0d318e4ea4f89c3fa18e6f9be" integrity sha512-Q5or2o6EKs7+oKmJo7LaqZaMOlDWQse9Tm5l1WAfU/ujLGN5Pb0SqGeVkN/4bpPmEqEP5RnVhiqsOtWtUVwGRw== @@ -10074,6 +10129,11 @@ xmlchars@^2.2.0: resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== +xtend@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + y18n@^5.0.5: version "5.0.8" resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" diff --git a/lib/federation/activity_pub/actor.ex b/lib/federation/activity_pub/actor.ex index 30f141a9a..8f4f07b49 100644 --- a/lib/federation/activity_pub/actor.ex +++ b/lib/federation/activity_pub/actor.ex @@ -33,7 +33,10 @@ defmodule Mobilizon.Federation.ActivityPub.Actor do case Actors.get_actor_by_url(url, preload) do {:ok, %Actor{} = cached_actor} -> if Actors.needs_update?(cached_actor) do - __MODULE__.make_actor_from_url(url, options) + case __MODULE__.make_actor_from_url(url, options) do + {:ok, %Actor{} = actor} -> {:ok, actor} + {:error, _} -> {:ok, cached_actor} + end else {:ok, cached_actor} end @@ -83,11 +86,14 @@ defmodule Mobilizon.Federation.ActivityPub.Actor do Logger.debug("Finding or making actor from nickname #{nickname}") case Actors.get_actor_by_name_with_preload(nickname, type) do - %Actor{url: actor_url} = actor -> - if Actors.needs_update?(actor) do - make_actor_from_url(actor_url, preload: true) + %Actor{url: actor_url} = cached_actor -> + if Actors.needs_update?(cached_actor) do + case __MODULE__.make_actor_from_url(actor_url, preload: true) do + {:ok, %Actor{} = actor} -> {:ok, actor} + {:error, _} -> {:ok, cached_actor} + end else - {:ok, actor} + {:ok, cached_actor} end nil -> @@ -102,15 +108,15 @@ defmodule Mobilizon.Federation.ActivityPub.Actor do @doc """ Create an actor inside our database from username, using WebFinger to find out its AP ID and then fetch it """ - @spec make_actor_from_nickname(nickname :: String.t(), preload :: boolean) :: + @spec make_actor_from_nickname(nickname :: String.t(), options :: Keyword.t()) :: {:ok, Actor.t()} | {:error, make_actor_errors | WebFinger.finger_errors()} - def make_actor_from_nickname(nickname, preload \\ false) do + def make_actor_from_nickname(nickname, options \\ []) do Logger.debug("Fingering actor from nickname #{nickname}") case WebFinger.finger(nickname) do {:ok, url} when is_binary(url) -> Logger.debug("Matched #{nickname} to URL #{url}, now making actor") - make_actor_from_url(url, preload: preload) + make_actor_from_url(url, options) {:error, e} -> {:error, e} diff --git a/lib/federation/activity_pub/audience.ex b/lib/federation/activity_pub/audience.ex index 540ba76e9..19502dfaa 100644 --- a/lib/federation/activity_pub/audience.ex +++ b/lib/federation/activity_pub/audience.ex @@ -20,7 +20,7 @@ defmodule Mobilizon.Federation.ActivityPub.Audience do @doc """ Get audience for an entity """ - @spec get_audience(Entity.t()) :: audience() + @spec get_audience(Entity.t() | Participant.t()) :: audience() def get_audience(%Event{} = event) do extract_actors_from_event(event) end diff --git a/lib/federation/activity_pub/refresher.ex b/lib/federation/activity_pub/refresher.ex index bfa4f6c16..4a8fc8c66 100644 --- a/lib/federation/activity_pub/refresher.ex +++ b/lib/federation/activity_pub/refresher.ex @@ -190,7 +190,7 @@ defmodule Mobilizon.Federation.ActivityPub.Refresher do # If we're handling an activity @spec handling_element(map()) :: {:ok, any, struct} | :error - @spec handling_element(String.t()) :: {:ok, struct} | {:error, any()} + @spec handling_element(String.t()) :: {:ok, struct} | {:ok, atom, struct} | {:error, any()} defp handling_element(%{"type" => activity_type} = data) when activity_type in ["Create", "Update", "Delete"] do object = get_in(data, ["object"]) diff --git a/lib/federation/web_finger/web_finger.ex b/lib/federation/web_finger/web_finger.ex index 9f1ae34ec..7568a9b7a 100644 --- a/lib/federation/web_finger/web_finger.ex +++ b/lib/federation/web_finger/web_finger.ex @@ -125,7 +125,11 @@ defmodule Mobilizon.Federation.WebFinger do defp maybe_add_profile_page(data, _actor), do: data @type finger_errors :: - :host_not_found | :address_invalid | :http_error | :webfinger_information_not_json + :host_not_found + | :address_invalid + | :http_error + | :webfinger_information_not_json + | :no_url_in_webfinger_data @doc """ Finger an actor to retreive it's ActivityPub ID/URL @@ -144,6 +148,10 @@ defmodule Mobilizon.Federation.WebFinger do {:ok, %{"url" => url}} -> {:ok, url} + {:ok, _} -> + Logger.debug("No URL found for actor from webfinger data") + {:error, :no_url_in_webfinger_data} + {:error, err} -> Logger.debug("Couldn't process webfinger data for #{actor}") {:error, err} @@ -158,11 +166,14 @@ defmodule Mobilizon.Federation.WebFinger do @spec fetch_webfinger_data(String.t()) :: {:ok, map()} | {:error, :webfinger_information_not_json | :http_error} defp fetch_webfinger_data(address) do + Logger.debug("Calling WebfingerClient with #{inspect(address)}") + case WebfingerClient.get(address) do {:ok, %{body: body, status: code}} when code in 200..299 -> webfinger_from_json(body) - _ -> + err -> + Logger.debug("Failed to fetch webfinger data #{inspect(err)}") {:error, :http_error} end end @@ -173,12 +184,14 @@ defmodule Mobilizon.Federation.WebFinger do case apply_webfinger_endpoint(actor) do address when is_binary(address) -> if address_invalid(address) do + Logger.info("Webfinger endpoint seems to be an invalid URL #{inspect(address)}") {:error, :address_invalid} else {:ok, address} end _ -> + Logger.info("Host not found in actor address #{inspect(actor)}") {:error, :host_not_found} end end @@ -188,12 +201,15 @@ defmodule Mobilizon.Federation.WebFinger do @spec find_webfinger_endpoint(String.t()) :: {:ok, String.t()} | {:error, :link_not_found} | {:error, any()} defp find_webfinger_endpoint(domain) when is_binary(domain) do + Logger.debug("Calling HostMetaClient for #{domain}") + with {:ok, %Tesla.Env{status: 200, body: body}} <- - HostMetaClient.get("http://#{domain}/.well-known/host-meta"), + HostMetaClient.get("https://#{domain}/.well-known/host-meta"), link_template when is_binary(link_template) <- find_link_from_template(body) do {:ok, link_template} else {:ok, %Tesla.Env{status: 404}} -> {:error, :entity_not_found} + {:ok, %Tesla.Env{}} -> {:error, :http_error} {:error, :link_not_found} -> {:error, :link_not_found} {:error, error} -> {:error, error} end @@ -204,10 +220,12 @@ defmodule Mobilizon.Federation.WebFinger do with {:ok, domain} <- domain_from_federated_actor(actor) do case find_webfinger_endpoint(domain) do {:ok, link_template} -> + Logger.debug("Using webfinger location provided by host-meta endpoint") String.replace(link_template, "{uri}", "acct:#{actor}") _ -> - "http://#{domain}/.well-known/webfinger?resource=acct:#{actor}" + Logger.debug("Using default webfinger location") + "https://#{domain}/.well-known/webfinger?resource=acct:#{actor}" end end end @@ -233,6 +251,10 @@ defmodule Mobilizon.Federation.WebFinger do {"application/activity+json", "self"} -> Map.put(data, "url", link["href"]) + {nil, _rel} -> + Logger.debug("No type declared for the following link #{inspect(link)}") + data + _ -> Logger.debug(fn -> "Unhandled type to finger: #{inspect(link["type"])}" diff --git a/lib/graphql/api/follows.ex b/lib/graphql/api/follows.ex index f30219fe6..d981c89b8 100644 --- a/lib/graphql/api/follows.ex +++ b/lib/graphql/api/follows.ex @@ -41,7 +41,7 @@ defmodule Mobilizon.GraphQL.API.Follows do "We're trying to accept a follow: #{followed_url} is accepting #{follower_url} follow request." ) - case Actors.is_following(follower, followed) do + case Actors.check_follow(follower, followed) do %Follower{approved: false} = follow -> Actions.Accept.accept( :follow, @@ -68,8 +68,9 @@ defmodule Mobilizon.GraphQL.API.Follows do "We're trying to reject a follow: #{followed_url} is rejecting #{follower_url} follow request." ) - case Actors.is_following(follower, followed) do - %Follower{approved: false} -> + case Actors.check_follow(follower, followed) do + %Follower{approved: false} = follow -> + Actors.delete_follower(follow) {:error, "Follow already rejected"} %Follower{} = follow -> diff --git a/lib/graphql/resolvers/admin.ex b/lib/graphql/resolvers/admin.ex index 36857e7dd..12488d653 100644 --- a/lib/graphql/resolvers/admin.ex +++ b/lib/graphql/resolvers/admin.ex @@ -5,7 +5,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Admin do import Mobilizon.Users.Guards - alias Mobilizon.{Actors, Admin, Config, Events} + alias Mobilizon.{Actors, Admin, Config, Events, Instances, Users} alias Mobilizon.Actors.{Actor, Follower} alias Mobilizon.Admin.{ActionLog, Setting} alias Mobilizon.Cldr.Language @@ -14,9 +14,11 @@ defmodule Mobilizon.GraphQL.Resolvers.Admin do alias Mobilizon.Events.Event alias Mobilizon.Federation.ActivityPub.{Actions, Relay} alias Mobilizon.Reports.{Note, Report} + alias Mobilizon.Service.Auth.Authenticator alias Mobilizon.Service.Statistics alias Mobilizon.Storage.Page alias Mobilizon.Users.User + alias Mobilizon.Web.Email import Mobilizon.Web.Gettext require Logger @@ -281,6 +283,114 @@ defmodule Mobilizon.GraphQL.Resolvers.Admin do dgettext("errors", "You need to be logged-in and an administrator to save admin settings")} end + @spec update_user(any, map(), Absinthe.Resolution.t()) :: + {:error, :invalid_argument | :user_not_found | binary | Ecto.Changeset.t()} + | {:ok, Mobilizon.Users.User.t()} + def update_user(_parent, %{id: id, notify: notify} = args, %{ + context: %{current_user: %User{role: role}} + }) + when is_admin(role) do + case Users.get_user(id) do + nil -> + {:error, :user_not_found} + + %User{} = user -> + case args |> Map.drop([:notify, :id]) |> Map.keys() do + [] -> + {:error, :invalid_argument} + + [change | _] -> + case change do + :email -> change_email(user, Map.get(args, :email), notify) + :role -> change_role(user, Map.get(args, :role), notify) + :confirmed -> confirm_user(user, Map.get(args, :confirmed), notify) + end + end + end + end + + def update_user(_parent, _args, _resolution) do + {:error, + dgettext("errors", "You need to be logged-in and an administrator to edit an user's details")} + end + + @spec change_email(User.t(), String.t(), boolean()) :: {:ok, User.t()} | {:error, String.t()} + defp change_email(%User{email: old_email} = user, new_email, notify) do + if Authenticator.can_change_email?(user) do + if new_email != old_email do + if Email.Checker.valid?(new_email) do + case Users.update_user(user, %{email: new_email}) do + {:ok, %User{} = updated_user} -> + if notify do + updated_user + |> Email.Admin.user_email_change_old(old_email) + |> Email.Mailer.send_email_later() + + updated_user + |> Email.Admin.user_email_change_new(old_email) + |> Email.Mailer.send_email_later() + end + + {:ok, updated_user} + + {:error, %Ecto.Changeset{} = err} -> + Logger.debug(inspect(err)) + {:error, dgettext("errors", "Failed to update user email")} + end + else + {:error, dgettext("errors", "The new email doesn't seem to be valid")} + end + else + {:error, dgettext("errors", "The new email must be different")} + end + end + end + + @spec change_role(User.t(), Mobilizon.Users.UserRole.t(), boolean()) :: + {:ok, User.t()} | {:error, String.t() | Ecto.Changeset.t()} + defp change_role(%User{role: old_role} = user, new_role, notify) do + if old_role != new_role do + with {:ok, %User{} = user} <- Users.update_user(user, %{role: new_role}) do + if notify do + user + |> Email.Admin.user_role_change(old_role) + |> Email.Mailer.send_email_later() + end + + {:ok, user} + end + else + {:error, dgettext("errors", "The new role must be different")} + end + end + + @spec confirm_user(User.t(), boolean(), boolean()) :: + {:ok, User.t()} | {:error, String.t() | Ecto.Changeset.t()} + defp confirm_user(%User{confirmed_at: nil} = user, true, notify) do + with {:ok, %User{} = user} <- + Users.update_user(user, %{ + confirmed_at: DateTime.utc_now(), + confirmation_sent_at: nil, + confirmation_token: nil + }) do + if notify do + user + |> Email.Admin.user_confirmation() + |> Email.Mailer.send_email_later() + end + + {:ok, user} + end + end + + defp confirm_user(%User{confirmed_at: %DateTime{}} = _user, true, _notify) do + {:error, dgettext("errors", "Can't confirm an already confirmed user")} + end + + defp confirm_user(_user, _confirm, _notify) do + {:error, dgettext("errors", "Deconfirming users is not supported")} + end + @spec list_relay_followers(any(), map(), Absinthe.Resolution.t()) :: {:ok, Page.t(Follower.t())} | {:error, :unauthorized | :unauthenticated} def list_relay_followers( @@ -329,16 +439,81 @@ defmodule Mobilizon.GraphQL.Resolvers.Admin do {:error, :unauthenticated} end + def get_instances( + _parent, + args, + %{ + context: %{current_user: %User{role: role}} + } + ) + when is_admin(role) do + {:ok, + Instances.instances( + args + |> Keyword.new() + |> Keyword.take([ + :page, + :limit, + :order_by, + :direction, + :filter_domain, + :filter_follow_status, + :filter_suspend_status + ]) + )} + end + + def get_instances(_parent, _args, %{context: %{current_user: %User{}}}) do + {:error, :unauthorized} + end + + def get_instances(_parent, _args, _resolution) do + {:error, :unauthenticated} + end + + def get_instance(_parent, %{domain: domain}, %{ + context: %{current_user: %User{role: role}} + }) + when is_admin(role) do + has_relay = Actors.has_relay?(domain) + remote_relay = Actors.get_actor_by_name("relay@#{domain}") + local_relay = Relay.get_actor() + + result = %{ + has_relay: has_relay, + follower_status: follow_status(remote_relay, local_relay), + followed_status: follow_status(local_relay, remote_relay) + } + + {:ok, Map.merge(Instances.instance(domain), result)} + end + + def get_instance(_parent, _args, %{context: %{current_user: %User{}}}) do + {:error, :unauthorized} + end + + def get_instance(_parent, _args, _resolution) do + {:error, :unauthenticated} + end + + 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 + @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 - case Relay.follow(address) do - {:ok, _activity, follow} -> - {:ok, follow} - - {:error, err} -> - {:error, err} + with {:ok, _activity, follow} <- Relay.follow(address) do + {:ok, follow} end end @@ -346,12 +521,8 @@ defmodule Mobilizon.GraphQL.Resolvers.Admin do {:ok, Follower.t()} | {:error, any()} def remove_relay(_parent, %{address: address}, %{context: %{current_user: %User{role: role}}}) when is_admin(role) do - case Relay.unfollow(address) do - {:ok, _activity, follow} -> - {:ok, follow} - - {:error, err} -> - {:error, err} + with {:ok, _activity, follow} <- Relay.unfollow(address) do + {:ok, follow} end end @@ -363,12 +534,8 @@ defmodule Mobilizon.GraphQL.Resolvers.Admin do %{context: %{current_user: %User{role: role}}} ) when is_admin(role) do - case Relay.accept(address) do - {:ok, _activity, follow} -> - {:ok, follow} - - {:error, err} -> - {:error, err} + with {:ok, _activity, follow} <- Relay.accept(address) do + {:ok, follow} end end @@ -380,12 +547,8 @@ defmodule Mobilizon.GraphQL.Resolvers.Admin do %{context: %{current_user: %User{role: role}}} ) when is_admin(role) do - case Relay.reject(address) do - {:ok, _activity, follow} -> - {:ok, follow} - - {:error, err} -> - {:error, err} + with {:ok, _activity, follow} <- Relay.reject(address) do + {:ok, follow} end end @@ -425,4 +588,15 @@ defmodule Mobilizon.GraphQL.Resolvers.Admin do :ok end end + + @spec follow_status(Actor.t() | nil, Actor.t() | nil) :: :approved | :pending | :none + defp follow_status(follower, followed) when follower != nil and followed != nil do + case Actors.check_follow(follower, followed) do + %Follower{approved: true} -> :approved + %Follower{approved: false} -> :pending + _ -> :none + end + end + + defp follow_status(_, _), do: :none end diff --git a/lib/graphql/resolvers/report.ex b/lib/graphql/resolvers/report.ex index f5a0b8f12..215627123 100644 --- a/lib/graphql/resolvers/report.ex +++ b/lib/graphql/resolvers/report.ex @@ -17,11 +17,19 @@ defmodule Mobilizon.GraphQL.Resolvers.Report do {:ok, Page.t(Report.t())} | {:error, String.t()} def list_reports( _parent, - %{page: page, limit: limit, status: status}, + %{page: page, limit: limit} = args, %{context: %{current_user: %User{role: role}}} ) when is_moderator(role) do - {:ok, Mobilizon.Reports.list_reports(page, limit, :updated_at, :desc, status)} + {:ok, + Mobilizon.Reports.list_reports( + page: page, + limit: limit, + sort: :updated_at, + direction: :desc, + status: Map.get(args, :status), + domain: Map.get(args, :domain) + )} end def list_reports(_parent, _args, _resolution) do diff --git a/lib/graphql/resolvers/user.ex b/lib/graphql/resolvers/user.ex index b9bda039c..007721547 100644 --- a/lib/graphql/resolvers/user.ex +++ b/lib/graphql/resolvers/user.ex @@ -48,11 +48,11 @@ defmodule Mobilizon.GraphQL.Resolvers.User do {:ok, Page.t(User.t())} | {:error, :unauthorized} def list_users( _parent, - %{email: email, page: page, limit: limit, sort: sort, direction: direction}, + args, %{context: %{current_user: %User{role: role}}} ) when is_moderator(role) do - {:ok, Users.list_users(email, page, limit, sort, direction)} + {:ok, Users.list_users(Keyword.new(args))} end def list_users(_parent, _args, _resolution) do diff --git a/lib/graphql/schema/admin.ex b/lib/graphql/schema/admin.ex index dfe02c093..f9a7889f8 100644 --- a/lib/graphql/schema/admin.ex +++ b/lib/graphql/schema/admin.ex @@ -153,6 +153,80 @@ defmodule Mobilizon.GraphQL.Schema.AdminType do value(:custom, as: "CUSTOM", description: "Custom privacy policy text") end + enum :instance_follow_status do + value(:approved, description: "The instance follow was approved") + value(:pending, description: "The instance follow is still pending") + value(:none, description: "There's no instance follow etablished") + end + + enum :instances_sort_fields do + value(:event_count) + value(:person_count) + value(:group_count) + value(:followers_count) + value(:followings_count) + value(:reports_count) + value(:media_size) + end + + enum :instance_filter_follow_status do + value(:all) + value(:following) + value(:followed) + end + + enum :instance_filter_suspend_status do + value(:all) + value(:suspended) + end + + @desc """ + An instance representation + """ + object :instance do + field(:domain, :id, description: "The domain name of the instance") + field(:has_relay, :boolean, description: "Whether this instance has a Mobilizon relay actor") + field(:follower_status, :instance_follow_status, description: "Do we follow this instance") + field(:followed_status, :instance_follow_status, description: "Does this instance follow us?") + + field(:event_count, :integer, description: "The number of events on this instance we know of") + + field(:person_count, :integer, + description: "The number of profiles on this instance we know of" + ) + + field(:group_count, :integer, description: "The number of grouo on this instance we know of") + + field(:followers_count, :integer, + description: "The number of their profiles who follow our groups" + ) + + field(:followings_count, :integer, + description: "The number of our profiles who follow their groups" + ) + + field(:reports_count, :integer, + description: "The number of reports made against profiles from this instance" + ) + + field(:media_size, :integer, + description: "The size of all the media files sent by actors from this instance" + ) + + field(:has_relay, :boolean, + description: + "Whether this instance has a relay, meaning that it's a Mobilizon instance that we can follow" + ) + end + + @desc """ + A paginated list of instances + """ + object :paginated_instance_list do + field(:elements, list_of(:instance), description: "A list of instances") + field(:total, :integer, description: "The total number of instances in the list") + end + object :admin_queries do @desc "Get the list of action logs" field :action_logs, type: :paginated_action_log_list do @@ -226,9 +300,59 @@ defmodule Mobilizon.GraphQL.Schema.AdminType do arg(:direction, :string, default_value: :desc, description: "The sorting direction") resolve(&Admin.list_relay_followings/3) end + + @desc """ + List instances + """ + field :instances, :paginated_instance_list do + arg(:page, :integer, + default_value: 1, + description: "The page in the paginated relay followings list" + ) + + arg(:limit, :integer, + default_value: 10, + description: "The limit of relay followings per page" + ) + + arg(:order_by, :instances_sort_fields, + default_value: :event_count, + description: "The field to order by the list" + ) + + arg(:filter_domain, :string, default_value: nil, description: "Filter by domain") + + arg(:filter_follow_status, :instance_filter_follow_status, + default_value: :all, + description: "Whether or not to filter instances by the follow status" + ) + + arg(:filter_suspend_status, :instance_filter_suspend_status, + default_value: :all, + description: "Whether or not to filter instances by the suspended status" + ) + + arg(:direction, :string, default_value: :desc, description: "The sorting direction") + resolve(&Admin.get_instances/3) + end + + @desc """ + Get an instance's details + """ + field :instance, :instance do + arg(:domain, non_null(:id), description: "The instance domain") + resolve(&Admin.get_instance/3) + end end object :admin_mutations do + @desc "Add an instance subscription" + field :add_instance, type: :instance do + arg(:domain, non_null(:string), description: "The instance domain to add") + + 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") @@ -285,5 +409,22 @@ defmodule Mobilizon.GraphQL.Schema.AdminType do resolve(&Admin.save_settings/3) end + + @desc """ + For an admin to update an user + """ + field :admin_update_user, type: :user do + arg(:id, non_null(:id), description: "The user's ID") + arg(:email, :string, description: "The user's new email") + arg(:confirmed, :boolean, description: "Manually confirm the user's account") + arg(:role, :user_role, description: "Set user's new role") + + arg(:notify, :boolean, + default_value: false, + description: "Whether or not to notify the user of the change" + ) + + resolve(&Admin.update_user/3) + end end end diff --git a/lib/graphql/schema/report.ex b/lib/graphql/schema/report.ex index a0202148e..c52f143d8 100644 --- a/lib/graphql/schema/report.ex +++ b/lib/graphql/schema/report.ex @@ -67,6 +67,7 @@ defmodule Mobilizon.GraphQL.Schema.ReportType do arg(:limit, :integer, default_value: 10, description: "The limit of reports per page") arg(:status, :report_status, default_value: :open, description: "Filter reports by status") + arg(:domain, :string, default_value: nil, description: "Filter reports by domain name") resolve(&Report.list_reports/3) end diff --git a/lib/graphql/schema/user.ex b/lib/graphql/schema/user.ex index ff27f9a81..5a3aff7bd 100644 --- a/lib/graphql/schema/user.ex +++ b/lib/graphql/schema/user.ex @@ -280,6 +280,11 @@ defmodule Mobilizon.GraphQL.Schema.UserType do @desc "List instance users" field :users, :users do arg(:email, :string, default_value: "", description: "Filter users by email") + + arg(:current_sign_in_ip, :string, + description: "Filter users by current signed-in IP address" + ) + arg(:page, :integer, default_value: 1, description: "The page in the paginated users list") arg(:limit, :integer, default_value: 10, description: "The limit of users per page") diff --git a/lib/mix/tasks/mobilizon/instance.ex b/lib/mix/tasks/mobilizon/instance.ex index 3d3dccc66..180bb17bf 100644 --- a/lib/mix/tasks/mobilizon/instance.ex +++ b/lib/mix/tasks/mobilizon/instance.ex @@ -130,7 +130,7 @@ defmodule Mix.Tasks.Mobilizon.Instance do options, :listen_port, "What port will the app listen to (leave it if you are using the default setup with nginx)?", - 4000 + "4000" ) instance_secret = :crypto.strong_rand_bytes(64) |> Base.encode64() |> binary_part(0, 64) diff --git a/lib/mix/tasks/mobilizon/users/new.ex b/lib/mix/tasks/mobilizon/users/new.ex index db013f7c1..df39c596b 100644 --- a/lib/mix/tasks/mobilizon/users/new.ex +++ b/lib/mix/tasks/mobilizon/users/new.ex @@ -67,10 +67,6 @@ defmodule Mix.Tasks.Mobilizon.Users.New do {:error, %Ecto.Changeset{errors: errors}} -> shell_error(inspect(errors)) shell_error("User has not been created because of the above reason.") - - err -> - shell_error(inspect(err)) - shell_error("User has not been created because of an unknown reason.") end end diff --git a/lib/mobilizon/actors/actors.ex b/lib/mobilizon/actors/actors.ex index 527aa5eef..1df299fb6 100644 --- a/lib/mobilizon/actors/actors.ex +++ b/lib/mobilizon/actors/actors.ex @@ -1176,7 +1176,7 @@ defmodule Mobilizon.Actors do if followed.suspended do {:error, :followed_suspended} else - case is_following(follower, followed) do + case check_follow(follower, followed) do %Follower{} -> {:error, :already_following} @@ -1202,7 +1202,7 @@ defmodule Mobilizon.Actors do @spec unfollow(Actor.t(), Actor.t()) :: {:ok, Follower.t()} | {:error, Ecto.Changeset.t() | String.t()} def unfollow(%Actor{} = followed, %Actor{} = follower) do - case {:already_following, is_following(follower, followed)} do + case {:already_following, check_follow(follower, followed)} do {:already_following, %Follower{} = follow} -> delete_follower(follow) @@ -1214,8 +1214,8 @@ defmodule Mobilizon.Actors do @doc """ Checks whether an actor is following another actor. """ - @spec is_following(Actor.t(), Actor.t()) :: Follower.t() | nil - def is_following(%Actor{} = follower_actor, %Actor{} = followed_actor) do + @spec check_follow(Actor.t(), Actor.t()) :: Follower.t() | nil + def check_follow(%Actor{} = follower_actor, %Actor{} = followed_actor) do get_follower_by_followed_and_following(followed_actor, follower_actor) end @@ -1256,6 +1256,16 @@ defmodule Mobilizon.Actors do :ok end + @spec has_relay?(String.t()) :: boolean() + def has_relay?(domain) do + Actor + |> where( + [a], + a.preferred_username == "relay" and a.domain == ^domain and a.type == :Application + ) + |> Repo.exists?() + end + @spec delete_files_if_media_changed(Ecto.Changeset.t()) :: Ecto.Changeset.t() defp delete_files_if_media_changed(%Ecto.Changeset{changes: changes, data: data} = changeset) do Enum.each([:avatar, :banner], fn key -> @@ -1465,7 +1475,7 @@ defmodule Mobilizon.Actors do |> where([_q, ..., a], like(a.name, ^"%#{name}%") or like(a.preferred_username, ^"%#{name}%")) end - @spec join_members_actor(Ecto.Query.t()) :: Ecto.Query.t() + @spec join_members_actor(Ecto.Queryable.t()) :: Ecto.Query.t() defp join_members_actor(query) do join(query, :inner, [q], a in Actor, on: q.actor_id == a.id) end diff --git a/lib/mobilizon/instances/instance.ex b/lib/mobilizon/instances/instance.ex new file mode 100644 index 000000000..a3aceddef --- /dev/null +++ b/lib/mobilizon/instances/instance.ex @@ -0,0 +1,19 @@ +defmodule Mobilizon.Instances.Instance do + @moduledoc """ + An instance representation + + Using a MATERIALIZED VIEW underneath + """ + use Ecto.Schema + + @primary_key {:domain, :string, []} + schema "instances" do + field(:event_count, :integer) + field(:person_count, :integer) + field(:group_count, :integer) + field(:followers_count, :integer) + field(:followings_count, :integer) + field(:reports_count, :integer) + field(:media_size, :integer) + end +end diff --git a/lib/mobilizon/instances/instances.ex b/lib/mobilizon/instances/instances.ex new file mode 100644 index 000000000..470e06c1b --- /dev/null +++ b/lib/mobilizon/instances/instances.ex @@ -0,0 +1,115 @@ +defmodule Mobilizon.Instances do + @moduledoc """ + The instances context + """ + alias Ecto.Adapters.SQL + alias Mobilizon.Actors.{Actor, Follower} + alias Mobilizon.Instances.Instance + alias Mobilizon.Storage.{Page, Repo} + import Ecto.Query + + @is_null_fragment "CASE WHEN ? IS NULL THEN FALSE ELSE TRUE END" + + @spec instances(Keyword.t()) :: Page.t(Instance.t()) + def instances(options) do + page = Keyword.get(options, :page) + limit = Keyword.get(options, :limit) + order_by = Keyword.get(options, :order_by) + direction = Keyword.get(options, :direction) + filter_domain = Keyword.get(options, :filter_domain) + # suspend_status = Keyword.get(options, :filter_suspend_status) + follow_status = Keyword.get(options, :filter_follow_status) + + order_by_options = Keyword.new([{direction, order_by}]) + + subquery = + Actor + |> where( + [a], + a.preferred_username == "relay" and a.type == :Application and not is_nil(a.domain) + ) + |> join(:left, [a], f1 in Follower, on: f1.target_actor_id == a.id) + |> join(:left, [a], f2 in Follower, on: f2.actor_id == a.id) + |> select([a, f1, f2], %{ + domain: a.domain, + has_relay: fragment(@is_null_fragment, a.id), + following: fragment(@is_null_fragment, f2.id), + following_approved: f2.approved, + follower: fragment(@is_null_fragment, f1.id), + follower_approved: f1.approved + }) + + query = + Instance + |> join(:left, [i], s in subquery(subquery), on: i.domain == s.domain) + |> select([i, s], {i, s}) + |> order_by(^order_by_options) + + query = + if is_nil(filter_domain) or filter_domain == "" do + query + else + where(query, [i], like(i.domain, ^"%#{filter_domain}%")) + end + + query = + case follow_status do + :following -> where(query, [i, s], s.following == true) + :followed -> where(query, [i, s], s.follower == true) + :all -> query + end + + %Page{elements: elements} = paged_instances = Page.build_page(query, page, limit, :domain) + + %Page{ + paged_instances + | elements: Enum.map(elements, &convert_instance_meta/1) + } + end + + @spec instance(String.t()) :: Instance.t() + def instance(domain) do + Instance + |> where(domain: ^domain) + |> Repo.one() + end + + @spec all_domains :: list(Instance.t()) + def all_domains do + Instance + |> distinct(true) + |> select([:domain]) + |> Repo.all() + end + + @spec refresh :: %{ + :rows => nil | [[term()] | binary()], + :num_rows => non_neg_integer(), + optional(atom()) => any() + } + def refresh do + SQL.query!(Repo, "REFRESH MATERIALIZED VIEW instances") + end + + defp convert_instance_meta( + {instance, + %{ + domain: _domain, + follower: follower, + follower_approved: follower_approved, + following: following, + following_approved: following_approved, + has_relay: has_relay + }} + ) do + instance + |> Map.put(:follower_status, follow_status(following, following_approved)) + |> Map.put(:followed_status, follow_status(follower, follower_approved)) + |> Map.put(:has_relay, has_relay) + end + + defp follow_status(true, true), do: :approved + defp follow_status(true, false), do: :pending + defp follow_status(false, _), do: :none + defp follow_status(nil, _), do: :none +end diff --git a/lib/mobilizon/reports/reports.ex b/lib/mobilizon/reports/reports.ex index c9b59f9cc..9e53a0614 100644 --- a/lib/mobilizon/reports/reports.ex +++ b/lib/mobilizon/reports/reports.ex @@ -8,6 +8,7 @@ defmodule Mobilizon.Reports do import Mobilizon.Storage.Ecto + alias Mobilizon.Actors.Actor alias Mobilizon.Reports.{Note, Report} alias Mobilizon.Storage.{Page, Repo} @@ -49,17 +50,18 @@ defmodule Mobilizon.Reports do @doc """ Returns the list of reports. """ - @spec list_reports(integer | nil, integer | nil, atom, atom, ReportStatus.t()) :: - Page.t(Report.t()) - def list_reports( - page \\ nil, - limit \\ nil, - sort \\ :updated_at, - direction \\ :asc, - status \\ :open - ) do + @spec list_reports(Keyword.t()) :: Page.t(Report.t()) + def list_reports(options) do + page = Keyword.get(options, :page) + limit = Keyword.get(options, :limit) + sort = Keyword.get(options, :sort, :updated_at) + direction = Keyword.get(options, :direction, :asc) + status = Keyword.get(options, :status, :open) + domain = Keyword.get(options, :domain) + status |> list_reports_query() + |> filter_domain_name(domain) |> sort(sort, direction) |> Page.build_page(page, limit) end @@ -99,11 +101,19 @@ defmodule Mobilizon.Reports do @spec list_reports_query(ReportStatus.t()) :: Ecto.Query.t() defp list_reports_query(status) do - from( - r in Report, - preload: [:reported, :reporter, :manager, :event, :comments, :notes], - where: r.status == ^status - ) + Report + |> preload([:reported, :reporter, :manager, :event, :comments, :notes]) + |> where([r], r.status == ^status) + end + + @spec filter_domain_name(Ecto.Queryable.t(), String.t() | nil) :: Ecto.Queryable.t() + defp filter_domain_name(query, nil), do: query + defp filter_domain_name(query, ""), do: query + + defp filter_domain_name(query, domain) do + query + |> join(:inner, [r], a in Actor, on: a.id == r.reported_id) + |> where([_r, a], like(a.domain, ^"%#{domain}%")) end @spec count_reports_query :: Ecto.Query.t() diff --git a/lib/mobilizon/users/users.ex b/lib/mobilizon/users/users.ex index 8462fd414..2417f842e 100644 --- a/lib/mobilizon/users/users.ex +++ b/lib/mobilizon/users/users.ex @@ -272,23 +272,14 @@ defmodule Mobilizon.Users do @doc """ Returns the list of users. """ - @spec list_users(String.t(), integer | nil, integer | nil, atom, atom) :: - Page.t(User.t()) - def list_users(email, page, limit \\ nil, sort, direction) - - def list_users("", page, limit, sort, direction) do + @spec list_users(Keyword.t()) :: Page.t(User.t()) + def list_users(options) do User - |> sort(sort, direction) + |> filter_by_email(Keyword.get(options, :email)) + |> filter_by_ip(Keyword.get(options, :current_sign_in_ip)) + |> sort(Keyword.get(options, :sort), Keyword.get(options, :direction)) |> preload([u], [:actors, :feed_tokens, :settings, :default_actor]) - |> Page.build_page(page, limit) - end - - def list_users(email, page, limit, sort, direction) do - User - |> where([u], ilike(u.email, ^"%#{email}%")) - |> sort(sort, direction) - |> preload([u], [:actors, :feed_tokens, :settings, :default_actor]) - |> Page.build_page(page, limit) + |> Page.build_page(Keyword.get(options, :page), Keyword.get(options, :limit)) end @doc """ @@ -527,4 +518,16 @@ defmodule Mobilizon.Users do defp update_user_default_actor_query(user_id) do where(User, [u], u.id == ^user_id) end + + @spec filter_by_email(Ecto.Queryable.t(), String.t() | nil) :: Ecto.Query.t() + defp filter_by_email(query, nil), do: query + defp filter_by_email(query, ""), do: query + defp filter_by_email(query, email), do: where(query, [q], ilike(q.email, ^"%#{email}%")) + + @spec filter_by_ip(Ecto.Queryable.t(), String.t() | nil) :: Ecto.Query.t() + defp filter_by_ip(query, nil), do: query + defp filter_by_ip(query, ""), do: query + + defp filter_by_ip(query, current_sign_in_ip), + do: where(query, [q], q.current_sign_in_ip == ^current_sign_in_ip) end diff --git a/lib/service/export/icalendar.ex b/lib/service/export/icalendar.ex index a514648d9..7ba32cc48 100644 --- a/lib/service/export/icalendar.ex +++ b/lib/service/export/icalendar.ex @@ -163,6 +163,7 @@ defmodule Mobilizon.Service.Export.ICalendar do end defp shift_tz(%DateTime{} = date, _), do: date + defp shift_tz(nil, _), do: nil defp organizer(%Event{attributed_to: %Actor{} = group}) do Actor.display_name(group) diff --git a/lib/service/workers/clean_unconfirmed_users_worker.ex b/lib/service/workers/clean_unconfirmed_users_worker.ex index 73646beb3..2df01b271 100644 --- a/lib/service/workers/clean_unconfirmed_users_worker.ex +++ b/lib/service/workers/clean_unconfirmed_users_worker.ex @@ -8,7 +8,12 @@ defmodule Mobilizon.Service.Workers.CleanUnconfirmedUsersWorker do @impl Oban.Worker def perform(%Job{}) do - if Mobilizon.Config.get!([:instance, :remove_unconfirmed_users]) and should_perform?() do + remove_unconfirmed_users = + :mobilizon + |> Application.get_env(:instance) + |> Keyword.get(:remove_unconfirmed_users, false) + + if remove_unconfirmed_users and should_perform?() do CleanUnconfirmedUsers.clean() end end diff --git a/lib/service/workers/helper.ex b/lib/service/workers/helper.ex index 28bb0d7b8..8cb14f399 100644 --- a/lib/service/workers/helper.ex +++ b/lib/service/workers/helper.ex @@ -41,7 +41,7 @@ defmodule Mobilizon.Service.Workers.Helper do alias Oban.Job - @spec enqueue(String.t(), map(), Keyword.t()) :: + @spec enqueue(String.t() | :atom, map(), Keyword.t()) :: {:ok, Job.t()} | {:error, Ecto.Changeset.t()} def enqueue(operation, params, worker_args \\ []) do params = Map.merge(%{"op" => operation}, params) diff --git a/lib/service/workers/refresh_instances.ex b/lib/service/workers/refresh_instances.ex new file mode 100644 index 000000000..23515b3fa --- /dev/null +++ b/lib/service/workers/refresh_instances.ex @@ -0,0 +1,31 @@ +defmodule Mobilizon.Service.Workers.RefreshInstances do + @moduledoc """ + Worker to refresh the instances materialized view and the relay actors + """ + + use Oban.Worker, unique: [period: :infinity, keys: [:event_uuid, :action]] + + alias Mobilizon.Federation.ActivityPub.Actor, as: ActivityPubActor + alias Mobilizon.Instances + alias Mobilizon.Instances.Instance + alias Oban.Job + + @impl Oban.Worker + @spec perform(Oban.Job.t()) :: :ok + def perform(%Job{}) do + Instances.refresh() + + Instances.all_domains() + |> Enum.each(&refresh_instance_actor/1) + end + + @spec refresh_instance_actor(Instance.t()) :: + {:ok, Mobilizon.Actors.Actor.t()} + | {:error, + Mobilizon.Federation.ActivityPub.Actor.make_actor_errors() + | Mobilizon.Federation.WebFinger.finger_errors()} + + defp refresh_instance_actor(%Instance{domain: domain}) do + ActivityPubActor.find_or_make_actor_from_nickname("relay@#{domain}") + end +end diff --git a/lib/web/email/admin.ex b/lib/web/email/admin.ex index d9e2cce3d..114b7c942 100644 --- a/lib/web/email/admin.ex +++ b/lib/web/email/admin.ex @@ -32,4 +32,100 @@ defmodule Mobilizon.Web.Email.Admin do |> assign(:report, report) |> render(:report) end + + @spec user_email_change_old(User.t(), String.t()) :: Bamboo.Email.t() + def user_email_change_old( + %User{ + locale: user_locale, + email: new_email + }, + old_email + ) do + Gettext.put_locale(user_locale) + + subject = + gettext( + "An administrator manually changed the email attached to your account on %{instance}", + instance: Config.instance_name() + ) + + Email.base_email(to: old_email, subject: subject) + |> assign(:locale, user_locale) + |> assign(:subject, subject) + |> assign(:new_email, new_email) + |> assign(:old_email, old_email) + |> assign(:offer_unsupscription, false) + |> render(:admin_user_email_changed_old) + end + + @spec user_email_change_new(User.t(), String.t()) :: Bamboo.Email.t() + def user_email_change_new( + %User{ + locale: user_locale, + email: new_email + }, + old_email + ) do + Gettext.put_locale(user_locale) + + subject = + gettext( + "An administrator manually changed the email attached to your account on %{instance}", + instance: Config.instance_name() + ) + + Email.base_email(to: new_email, subject: subject) + |> assign(:locale, user_locale) + |> assign(:subject, subject) + |> assign(:old_email, old_email) + |> assign(:new_email, new_email) + |> assign(:offer_unsupscription, false) + |> render(:admin_user_email_changed_new) + end + + @spec user_role_change(User.t(), atom()) :: Bamboo.Email.t() + def user_role_change( + %User{ + locale: user_locale, + email: email, + role: new_role + }, + old_role + ) do + Gettext.put_locale(user_locale) + + subject = + gettext( + "An administrator updated your role on %{instance}", + instance: Config.instance_name() + ) + + Email.base_email(to: email, subject: subject) + |> assign(:locale, user_locale) + |> assign(:subject, subject) + |> assign(:old_role, old_role) + |> assign(:new_role, new_role) + |> assign(:offer_unsupscription, false) + |> render(:admin_user_role_changed) + end + + @spec user_confirmation(User.t()) :: Bamboo.Email.t() + def user_confirmation(%User{ + locale: user_locale, + email: email + }) do + Gettext.put_locale(user_locale) + + subject = + gettext( + "An administrator confirmed your account on %{instance}", + instance: Config.instance_name() + ) + + Email.base_email(to: email, subject: subject) + |> assign(:locale, user_locale) + |> assign(:subject, subject) + |> assign(:offer_unsupscription, false) + |> render(:admin_user_confirmation) + end end diff --git a/lib/web/templates/email/admin/_role.html.heex b/lib/web/templates/email/admin/_role.html.heex new file mode 100644 index 000000000..67d1a8f95 --- /dev/null +++ b/lib/web/templates/email/admin/_role.html.heex @@ -0,0 +1,8 @@ +<%= case @role do %> + <% :administrator -> %> + <b><%= gettext "Administrator" %></b> + <% :moderator -> %> + <b><%= gettext "Moderator" %></b> + <% :user -> %> + <b><%= gettext "User" %></b> +<% end %> \ No newline at end of file diff --git a/lib/web/templates/email/admin/_role.text.eex b/lib/web/templates/email/admin/_role.text.eex new file mode 100644 index 000000000..8667b6063 --- /dev/null +++ b/lib/web/templates/email/admin/_role.text.eex @@ -0,0 +1 @@ +<%= case @role do %><% :administrator -> %><%= gettext "Administrator" %><% :moderator -> %><%= gettext "Moderator" %><% :user -> %><%= gettext "User" %><% end %> \ No newline at end of file diff --git a/lib/web/templates/email/admin_user_confirmation.html.heex b/lib/web/templates/email/admin_user_confirmation.html.heex new file mode 100644 index 000000000..6f94a5129 --- /dev/null +++ b/lib/web/templates/email/admin_user_confirmation.html.heex @@ -0,0 +1,82 @@ +<!-- HERO --> +<tr> + <td bgcolor="#474467" align="center" style="padding: 0px 10px 0px 10px;"> + <!--[if (gte mso 9)|(IE)]> + <table align="center" border="0" cellspacing="0" cellpadding="0" width="600"> + <tr> + <td align="center" valign="top" width="600"> + <![endif]--> + <table border="0" cellpadding="0" cellspacing="0" width="100%" style="max-width: 600px;" > + <tr> + <td bgcolor="#ffffff" align="center" valign="top" style="padding: 40px 20px 20px 20px; border-radius: 4px 4px 0px 0px; color: #3A384C; font-family: 'Roboto', Helvetica, Arial, sans-serif; font-size: 48px; font-weight: 400; line-height: 48px;"> + <h1 style="font-size: 48px; font-weight: 400; margin: 0;"> + <%= gettext "An administrator manually confirmed your account" %> + </h1> + </td> + </tr> + </table> + <!--[if (gte mso 9)|(IE)]> + </td> + </tr> +</table> + <![endif]--> + </td> +</tr> +<!-- COPY BLOCK --> +<tr> + <td bgcolor="#E6E4F4" align="center" style="padding: 0px 10px 0px 10px;"> + <!--[if (gte mso 9)|(IE)]> + <table align="center" border="0" cellspacing="0" cellpadding="0" width="600"> + <tr> + <td align="center" valign="top" width="600"> + <![endif]--> + <table border="0" cellpadding="0" cellspacing="0" width="100%" style="max-width: 600px;" > + <!-- COPY --> + <tr> + <td bgcolor="#ffffff" align="left" style="padding: 20px 30px 0px 30px; color: #474467; font-family: 'Roboto', Helvetica, Arial, sans-serif; font-size: 18px; font-weight: 400; line-height: 25px;" > + <p style="margin: 0;"> + <%= gettext("Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually confirmed your account.", %{instance: @instance_name}) |> raw %> + </p> + </td> + </tr> + <tr> + <td bgcolor="#ffffff" align="left" style="padding: 20px 30px 0px 30px; color: #474467; font-family: 'Roboto', Helvetica, Arial, sans-serif; font-size: 18px; font-weight: 400; line-height: 25px;" > + <p style="margin: 0;"> + <%= gettext("You may now login using your credentials on the service.") %> + </p> + </td> + </tr> + <tr> + <td bgcolor="#ffffff" align="left"> + <table width="100%" border="0" cellspacing="0" cellpadding="0"> + <tr> + <td bgcolor="#ffffff" align="center" style="padding: 20px 30px 60px 30px;"> + <table border="0" cellspacing="0" cellpadding="0"> + <tr> + <td align="center" style="border-radius: 3px;" bgcolor="#3C376E"> + <a href={"#{ "#{Mobilizon.Web.Endpoint.url()}/login" }"} target="_blank" style="font-size: 20px; font-family: Helvetica, Arial, sans-serif; color: #ffffff; text-decoration: none; padding: 15px 25px; border-radius: 2px; border: 1px solid #3C376E; display: inline-block;"> + <%= gettext "Login on %{instance}", %{instance: @instance_name} %> + </a> + </td> + </tr> + </table> + </td> + </tr> + </table> + </td> + </tr> + <tr> + <td bgcolor="#ffffff" align="left" style="padding: 20px 30px 40px 30px; color: #474467; font-family: 'Roboto', Helvetica, Arial, sans-serif; font-size: 14px; font-weight: 400; line-height: 20px;" > + <p style="margin: 0"> + <%= gettext("If something doesn't feel right to you, please contact the instance administrator through the contact methods %{start_link}on the instance's about page%{end_link}.", %{start_link: "<a href=\"#{Mobilizon.Web.Endpoint.url()}/about/instance\">", end_link: "</a>"}) |> raw %> + </p> + </td> + </tr> + </table> + <!--[if (gte mso 9)|(IE)]> + </td> + </tr> +</table> + <![endif]--> + </td> +</tr> diff --git a/lib/web/templates/email/admin_user_confirmation.text.eex b/lib/web/templates/email/admin_user_confirmation.text.eex new file mode 100644 index 000000000..fdd43035c --- /dev/null +++ b/lib/web/templates/email/admin_user_confirmation.text.eex @@ -0,0 +1,7 @@ +<%= gettext "An administrator manually confirmed your account" %> +== +<%= gettext "Hi there! We just wanted to inform you that an administrator from %{instance} just manually confirmed your account.", %{instance: @instance_name} %> + +<%= gettext "You may now login using your credentials on the service:" %> <%= "#{Mobilizon.Web.Endpoint.url()}/login" %> + +<%= gettext "If something doesn't feel right to you, please contact the instance administrator through the contact methods on the instance's about page: %{about_page}.", %{about_page: "#{Mobilizon.Web.Endpoint.url()}/about/instance"} %> diff --git a/lib/web/templates/email/admin_user_email_changed_new.html.heex b/lib/web/templates/email/admin_user_email_changed_new.html.heex new file mode 100644 index 000000000..674e13976 --- /dev/null +++ b/lib/web/templates/email/admin_user_email_changed_new.html.heex @@ -0,0 +1,56 @@ +<!-- HERO --> +<tr> + <td bgcolor="#474467" align="center" style="padding: 0px 10px 0px 10px;"> + <!--[if (gte mso 9)|(IE)]> + <table align="center" border="0" cellspacing="0" cellpadding="0" width="600"> + <tr> + <td align="center" valign="top" width="600"> + <![endif]--> + <table border="0" cellpadding="0" cellspacing="0" width="100%" style="max-width: 600px;" > + <tr> + <td bgcolor="#ffffff" align="center" valign="top" style="padding: 40px 20px 20px 20px; border-radius: 4px 4px 0px 0px; color: #3A384C; font-family: 'Roboto', Helvetica, Arial, sans-serif; font-size: 48px; font-weight: 400; line-height: 48px;"> + <h1 style="font-size: 48px; font-weight: 400; margin: 0;"> + <%= gettext "An administrator manually changed the email attached to your account" %> + </h1> + </td> + </tr> + </table> + <!--[if (gte mso 9)|(IE)]> + </td> + </tr> +</table> + <![endif]--> + </td> +</tr> +<!-- COPY BLOCK --> +<tr> + <td bgcolor="#E6E4F4" align="center" style="padding: 0px 10px 0px 10px;"> + <!--[if (gte mso 9)|(IE)]> + <table align="center" border="0" cellspacing="0" cellpadding="0" width="600"> + <tr> + <td align="center" valign="top" width="600"> + <![endif]--> + <table border="0" cellpadding="0" cellspacing="0" width="100%" style="max-width: 600px;" > + <!-- COPY --> + <tr> + <td bgcolor="#ffffff" align="left" style="padding: 20px 30px 0px 30px; color: #474467; font-family: 'Roboto', Helvetica, Arial, sans-serif; font-size: 18px; font-weight: 400; line-height: 25px;" > + <p style="margin: 0;"> + <%= gettext("Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> to <b>%{new_email}</b> (this one).", %{instance: @instance_name, old_email: @old_email, new_email: @new_email}) |> raw %> + </p> + </td> + </tr> + <tr> + <td bgcolor="#ffffff" align="left" style="padding: 20px 30px 40px 30px; color: #474467; font-family: 'Roboto', Helvetica, Arial, sans-serif; font-size: 14px; font-weight: 400; line-height: 20px;" > + <p style="margin: 0"> + <%= gettext("If something doesn't feel right to you, please contact the instance administrator through the contact methods %{start_link}on the instance's about page%{end_link}.", %{start_link: "<a href=\"#{Mobilizon.Web.Endpoint.url()}/about/instance\">", end_link: "</a>"}) |> raw %> + </p> + </td> + </tr> + </table> + <!--[if (gte mso 9)|(IE)]> + </td> + </tr> +</table> + <![endif]--> + </td> +</tr> diff --git a/lib/web/templates/email/admin_user_email_changed_new.text.eex b/lib/web/templates/email/admin_user_email_changed_new.text.eex new file mode 100644 index 000000000..76e97a2e9 --- /dev/null +++ b/lib/web/templates/email/admin_user_email_changed_new.text.eex @@ -0,0 +1,4 @@ +<%= gettext "An administrator manually changed the email attached to your account" %> +== +<%= gettext "Hi there! We just wanted to inform you that an administrator from %{instance} just manually changed your account email from %{old_email} (this one) to %{new_email}.", %{instance: @instance_name, old_email: @old_email, new_email: @new_email} %> +<%= gettext "If something doesn't feel right to you, please contact the instance administrator through the contact methods on the instance's about page: %{about_page}.", %{about_page: "#{Mobilizon.Web.Endpoint.url()}/about/instance"} %> diff --git a/lib/web/templates/email/admin_user_email_changed_old.html.heex b/lib/web/templates/email/admin_user_email_changed_old.html.heex new file mode 100644 index 000000000..9eaf23f83 --- /dev/null +++ b/lib/web/templates/email/admin_user_email_changed_old.html.heex @@ -0,0 +1,56 @@ +<!-- HERO --> +<tr> + <td bgcolor="#474467" align="center" style="padding: 0px 10px 0px 10px;"> + <!--[if (gte mso 9)|(IE)]> + <table align="center" border="0" cellspacing="0" cellpadding="0" width="600"> + <tr> + <td align="center" valign="top" width="600"> + <![endif]--> + <table border="0" cellpadding="0" cellspacing="0" width="100%" style="max-width: 600px;" > + <tr> + <td bgcolor="#ffffff" align="center" valign="top" style="padding: 40px 20px 20px 20px; border-radius: 4px 4px 0px 0px; color: #3A384C; font-family: 'Roboto', Helvetica, Arial, sans-serif; font-size: 48px; font-weight: 400; line-height: 48px;"> + <h1 style="font-size: 48px; font-weight: 400; margin: 0;"> + <%= gettext "An administrator manually changed the email attached to your account" %> + </h1> + </td> + </tr> + </table> + <!--[if (gte mso 9)|(IE)]> + </td> + </tr> +</table> + <![endif]--> + </td> +</tr> +<!-- COPY BLOCK --> +<tr> + <td bgcolor="#E6E4F4" align="center" style="padding: 0px 10px 0px 10px;"> + <!--[if (gte mso 9)|(IE)]> + <table align="center" border="0" cellspacing="0" cellpadding="0" width="600"> + <tr> + <td align="center" valign="top" width="600"> + <![endif]--> + <table border="0" cellpadding="0" cellspacing="0" width="100%" style="max-width: 600px;" > + <!-- COPY --> + <tr> + <td bgcolor="#ffffff" align="left" style="padding: 20px 30px 0px 30px; color: #474467; font-family: 'Roboto', Helvetica, Arial, sans-serif; font-size: 18px; font-weight: 400; line-height: 25px;" > + <p style="margin: 0;"> + <%= gettext("Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> (this one) to <b>%{new_email}</b>.", %{instance: @instance_name, old_email: @old_email, new_email: @new_email}) |> raw %> + </p> + </td> + </tr> + <tr> + <td bgcolor="#ffffff" align="left" style="padding: 20px 30px 40px 30px; color: #474467; font-family: 'Roboto', Helvetica, Arial, sans-serif; font-size: 14px; font-weight: 400; line-height: 20px;" > + <p style="margin: 0"> + <%= gettext("If something doesn't feel right to you, please contact the instance administrator through the contact methods %{start_link}on the instance's about page%{end_link}.", %{start_link: "<a href=\"#{Mobilizon.Web.Endpoint.url()}/about/instance\">", end_link: "</a>"}) |> raw %> + </p> + </td> + </tr> + </table> + <!--[if (gte mso 9)|(IE)]> + </td> + </tr> +</table> + <![endif]--> + </td> +</tr> diff --git a/lib/web/templates/email/admin_user_email_changed_old.text.eex b/lib/web/templates/email/admin_user_email_changed_old.text.eex new file mode 100644 index 000000000..76e97a2e9 --- /dev/null +++ b/lib/web/templates/email/admin_user_email_changed_old.text.eex @@ -0,0 +1,4 @@ +<%= gettext "An administrator manually changed the email attached to your account" %> +== +<%= gettext "Hi there! We just wanted to inform you that an administrator from %{instance} just manually changed your account email from %{old_email} (this one) to %{new_email}.", %{instance: @instance_name, old_email: @old_email, new_email: @new_email} %> +<%= gettext "If something doesn't feel right to you, please contact the instance administrator through the contact methods on the instance's about page: %{about_page}.", %{about_page: "#{Mobilizon.Web.Endpoint.url()}/about/instance"} %> diff --git a/lib/web/templates/email/admin_user_role_changed.html.heex b/lib/web/templates/email/admin_user_role_changed.html.heex new file mode 100644 index 000000000..f273be2c6 --- /dev/null +++ b/lib/web/templates/email/admin_user_role_changed.html.heex @@ -0,0 +1,78 @@ +<!-- HERO --> +<tr> + <td bgcolor="#474467" align="center" style="padding: 0px 10px 0px 10px;"> + <!--[if (gte mso 9)|(IE)]> + <table align="center" border="0" cellspacing="0" cellpadding="0" width="600"> + <tr> + <td align="center" valign="top" width="600"> + <![endif]--> + <table border="0" cellpadding="0" cellspacing="0" width="100%" style="max-width: 600px;" > + <tr> + <td bgcolor="#ffffff" align="center" valign="top" style="padding: 40px 20px 20px 20px; border-radius: 4px 4px 0px 0px; color: #3A384C; font-family: 'Roboto', Helvetica, Arial, sans-serif; font-size: 48px; font-weight: 400; line-height: 48px;"> + <h1 style="font-size: 48px; font-weight: 400; margin: 0;"> + <%= gettext "An administrator changed your role" %> + </h1> + </td> + </tr> + </table> + <!--[if (gte mso 9)|(IE)]> + </td> + </tr> +</table> + <![endif]--> + </td> +</tr> +<!-- COPY BLOCK --> +<tr> + <td bgcolor="#E6E4F4" align="center" style="padding: 0px 10px 0px 10px;"> + <!--[if (gte mso 9)|(IE)]> + <table align="center" border="0" cellspacing="0" cellpadding="0" width="600"> + <tr> + <td align="center" valign="top" width="600"> + <![endif]--> + <table border="0" cellpadding="0" cellspacing="0" width="100%" style="max-width: 600px;" > + <!-- COPY --> + <tr> + <td bgcolor="#ffffff" align="left" style="padding: 20px 30px 0px 30px; color: #474467; font-family: 'Roboto', Helvetica, Arial, sans-serif; font-size: 18px; font-weight: 400; line-height: 25px;" > + <p style="margin: 0;"> + <%= gettext("Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just changed your account role.", %{instance: @instance_name}) |> raw %> + </p> + </td> + </tr> + <tr> + <td bgcolor="#ffffff" align="left" style="padding: 20px 30px 40px 30px; color: #474467; font-family: 'Roboto', Helvetica, Arial, sans-serif; font-size: 18px; font-weight: 400; line-height: 25px;" > + <table width="100%"> + <tr> + <td bgcolor="#ffffff" align="left"> + <%= gettext "Old role" %> + </td> + <td bgcolor="#ffffff" align="left"> + <%= render("admin/_role.html", role: @old_role) %> + </td> + </tr> + <tr> + <td bgcolor="#ffffff" align="left"> + <%= gettext "New role" %> + </td> + <td bgcolor="#ffffff" align="left"> + <%= render("admin/_role.html", role: @new_role) %> + </td> + </tr> + </table> + </td> + </tr> + <tr> + <td bgcolor="#ffffff" align="left" style="padding: 20px 30px 40px 30px; color: #474467; font-family: 'Roboto', Helvetica, Arial, sans-serif; font-size: 14px; font-weight: 400; line-height: 20px;" > + <p style="margin: 0"> + <%= gettext("If something doesn't feel right to you, please contact the instance administrator through the contact methods %{start_link}on the instance's about page%{end_link}.", %{start_link: "<a href=\"#{Mobilizon.Web.Endpoint.url()}/about/instance\">", end_link: "</a>"}) |> raw %> + </p> + </td> + </tr> + </table> + <!--[if (gte mso 9)|(IE)]> + </td> + </tr> +</table> + <![endif]--> + </td> +</tr> diff --git a/lib/web/templates/email/admin_user_role_changed.text.eex b/lib/web/templates/email/admin_user_role_changed.text.eex new file mode 100644 index 000000000..2763519a9 --- /dev/null +++ b/lib/web/templates/email/admin_user_role_changed.text.eex @@ -0,0 +1,8 @@ +<%= gettext "An administrator changed your role" %> +== +<%= gettext "Hi there! We just wanted to inform you that an administrator from %{instance} just changed your account role.", %{instance: @instance_name} %> + +<%= gettext "Old role:" %> <%= render("admin/_role.text", role: @old_role) %> +<%= gettext "New role:" %> <%= render("admin/_role.text", role: @new_role) %> + +<%= gettext "If something doesn't feel right to you, please contact the instance administrator through the contact methods on the instance's about page: %{about_page}.", %{about_page: "#{Mobilizon.Web.Endpoint.url()}/about/instance"} %> diff --git a/lib/web/templates/email/email_changed_new.text.eex b/lib/web/templates/email/email_changed_new.text.eex index 5ae1b016e..5b9d7ed9f 100644 --- a/lib/web/templates/email/email_changed_new.text.eex +++ b/lib/web/templates/email/email_changed_new.text.eex @@ -1,5 +1,5 @@ <%= gettext "Confirm new email" %> == -<%= gettext "Hi there! It seems like you wanted to change the email address linked to your account on <b>%{instance}</b>. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address.", %{instance: @instance_name} %> +<%= gettext "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address.", %{instance: @instance_name} %> <%= Routes.page_url(Mobilizon.Web.Endpoint, :user_email_validation, @token) %> <%= gettext "If you didn't trigger the change yourself, please ignore this message." %> diff --git a/mix.lock b/mix.lock index 5447f2af7..034518ba6 100644 --- a/mix.lock +++ b/mix.lock @@ -19,12 +19,12 @@ "cowboy_telemetry": {:hex, :cowboy_telemetry, "0.4.0", "f239f68b588efa7707abce16a84d0d2acf3a0f50571f8bb7f56a15865aae820c", [:rebar3], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7d98bac1ee4565d31b62d59f8823dfd8356a169e7fcbb83831b8a5397404c9de"}, "cowlib": {:hex, :cowlib, "2.11.0", "0b9ff9c346629256c42ebe1eeb769a83c6cb771a6ee5960bd110ab0b9b872063", [:make, :rebar3], [], "hexpm", "2b3e9da0b21c4565751a6d4901c20d1b4cc25cbb7fd50d91d2ab6dd287bc86a9"}, "credo": {:hex, :credo, "1.6.1", "7dc76dcdb764a4316c1596804c48eada9fff44bd4b733a91ccbf0c0f368be61e", [:mix], [{:bunt, "~> 0.2.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2.8", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "698607fb5993720c7e93d2d8e76f2175bba024de964e160e2f7151ef3ab82ac5"}, - "dataloader": {:hex, :dataloader, "1.0.7", "58351b335673cf40601429bfed6c11fece6ce7ad169b2ac0f0fe83e716587391", [:mix], [{:ecto, ">= 0.0.0", [hex: :ecto, repo: "hexpm", optional: true]}], "hexpm", "12bf66478e4a5085d09dc96932d058c206ee8c219cc7691d12a40dc35c8cefaa"}, + "dataloader": {:hex, :dataloader, "1.0.10", "a42f07641b1a0572e0b21a2a5ae1be11da486a6790f3d0d14512d96ff3e3bbe9", [:mix], [{:ecto, ">= 3.4.3 and < 4.0.0", [hex: :ecto, repo: "hexpm", optional: true]}, {:telemetry, "~> 1.0 or ~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "54cd70cec09addf4b2ace14cc186a283a149fd4d3ec5475b155951bf33cd963f"}, "db_connection": {:hex, :db_connection, "2.4.1", "6411f6e23f1a8b68a82fa3a36366d4881f21f47fc79a9efb8c615e62050219da", [:mix], [{:connection, "~> 1.0", [hex: :connection, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "ea36d226ec5999781a9a8ad64e5d8c4454ecedc7a4d643e4832bf08efca01f00"}, "decimal": {:hex, :decimal, "2.0.0", "a78296e617b0f5dd4c6caf57c714431347912ffb1d0842e998e9792b5642d697", [:mix], [], "hexpm", "34666e9c55dea81013e77d9d87370fe6cb6291d1ef32f46a1600230b1d44f577"}, "dialyxir": {:hex, :dialyxir, "1.1.0", "c5aab0d6e71e5522e77beff7ba9e08f8e02bad90dfbeffae60eaf0cb47e29488", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "07ea8e49c45f15264ebe6d5b93799d4dd56a44036cf42d0ad9c960bc266c0b9a"}, "doctor": {:hex, :doctor, "0.18.0", "114934c1740239953208a39db617699b7e2660770e81129d7f95cdf7837ab766", [:mix], [{:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}], "hexpm", "829c88c365f72c0666e443ea670ffb6f180de7b90c23d536edabdd8c722b88f4"}, - "earmark_parser": {:hex, :earmark_parser, "1.4.18", "e1b2be73eb08a49fb032a0208bf647380682374a725dfb5b9e510def8397f6f2", [:mix], [], "hexpm", "114a0e85ec3cf9e04b811009e73c206394ffecfcc313e0b346de0d557774ee97"}, + "earmark_parser": {:hex, :earmark_parser, "1.4.19", "de0d033d5ff9fc396a24eadc2fcf2afa3d120841eb3f1004d138cbf9273210e8", [:mix], [], "hexpm", "527ab6630b5c75c3a3960b75844c314ec305c76d9899bb30f71cb85952a9dc45"}, "eblurhash": {:hex, :eblurhash, "1.2.2", "7da4255aaea984b31bb71155f673257353b0e0554d0d30dcf859547e74602582", [:rebar3], [], "hexpm", "8c20ca00904de023a835a9dcb7b7762fed32264c85a80c3cafa85288e405044c"}, "ecto": {:hex, :ecto, "3.7.1", "a20598862351b29f80f285b21ec5297da1181c0442687f9b8329f0445d228892", [:mix], [{:decimal, "~> 1.6 or ~> 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", "d36e5b39fc479e654cffd4dbe1865d9716e4a9b6311faff799b6f90ab81b8638"}, "ecto_autoslug_field": {:hex, :ecto_autoslug_field, "3.0.0", "37fbc2f07e6691136afff246f2cf5b159ad395b665a55d06db918975fd2397db", [:mix], [{:ecto, ">= 3.7.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:slugger, ">= 0.3.0", [hex: :slugger, repo: "hexpm", optional: false]}], "hexpm", "8ec252c7cf85f13132062f56a484d6a0ef1f981f7be9ce4ad7e9546dd8c0cc0f"}, @@ -36,12 +36,12 @@ "erlex": {:hex, :erlex, "0.2.6", "c7987d15e899c7a2f34f5420d2a2ea0d659682c06ac607572df55a43753aa12e", [:mix], [], "hexpm", "2ed2e25711feb44d52b17d2780eabf998452f6efda104877a3881c2f8c0c0c75"}, "erlport": {:hex, :erlport, "0.10.1", "c96ffa51bbcab0298232fcdfe8c3e110f1598011de71ae6b9082b80c9e2e476a", [:rebar3], [], "hexpm", "34931e8cb62a131d1bc8a2bd04d4007c73c03e4f10e22ee4a218e7172227a918"}, "eternal": {:hex, :eternal, "1.2.2", "d1641c86368de99375b98d183042dd6c2b234262b8d08dfd72b9eeaafc2a1abd", [:mix], [], "hexpm", "2c9fe32b9c3726703ba5e1d43a1d255a4f3f2d8f8f9bc19f094c7cb1a7a9e782"}, - "ex_cldr": {:hex, :ex_cldr, "2.24.2", "9ff995503074883993c373882a8b663e2680acd4aedb1b92838b36cb2a470bae", [:mix], [{:castore, "~> 0.1", [hex: :castore, repo: "hexpm", optional: true]}, {:certifi, "~> 2.5", [hex: :certifi, repo: "hexpm", optional: true]}, {:cldr_utils, "~> 2.17", [hex: :cldr_utils, repo: "hexpm", optional: false]}, {:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:gettext, "~> 0.13", [hex: :gettext, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:nimble_parsec, "~> 0.5 or ~> 1.0", [hex: :nimble_parsec, repo: "hexpm", optional: true]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "72e33b7bac19a24bf1918d519d0cb5ad33a56cd53faa89c65f5bf79b873d93bb"}, - "ex_cldr_calendars": {:hex, :ex_cldr_calendars, "1.17.1", "1371b2769ea892aa1c85f60c1358bf3558c021d4e3e824e27efc89c5d5f121cd", [:mix], [{:calendar_interval, "~> 0.2", [hex: :calendar_interval, repo: "hexpm", optional: true]}, {:ex_cldr, "~> 2.24", [hex: :ex_cldr, repo: "hexpm", optional: false]}, {:ex_cldr_lists, "~> 2.9", [hex: :ex_cldr_lists, repo: "hexpm", optional: true]}, {:ex_cldr_units, "~> 3.8", [hex: :ex_cldr_units, repo: "hexpm", optional: true]}, {:ex_doc, "~> 0.21", [hex: :ex_doc, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "0d57e476e8042f240ed4b8baeef0f12b7b8a4e22e4da97a33e2a85b11adc7bb4"}, + "ex_cldr": {:hex, :ex_cldr, "2.25.0", "19665a26428a47ce2a927dba6f7d073e116549f6184565d3ce5a2f15a216679a", [:mix], [{:castore, "~> 0.1", [hex: :castore, repo: "hexpm", optional: true]}, {:certifi, "~> 2.5", [hex: :certifi, repo: "hexpm", optional: true]}, {:cldr_utils, "~> 2.17", [hex: :cldr_utils, repo: "hexpm", optional: false]}, {:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:gettext, "~> 0.13", [hex: :gettext, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:nimble_parsec, "~> 0.5 or ~> 1.0", [hex: :nimble_parsec, repo: "hexpm", optional: true]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "d40137b90f214248e8df4c378533486a9da224f0b6c0aefd949e65db48e8f9d6"}, + "ex_cldr_calendars": {:hex, :ex_cldr_calendars, "1.17.2", "6bbcf3ed187d25d86d36a6427229d6add4baf3ef5996fbd81410ba35378244e0", [:mix], [{:calendar_interval, "~> 0.2", [hex: :calendar_interval, repo: "hexpm", optional: true]}, {:ex_cldr, "~> 2.24", [hex: :ex_cldr, repo: "hexpm", optional: false]}, {:ex_cldr_lists, "~> 2.9", [hex: :ex_cldr_lists, repo: "hexpm", optional: true]}, {:ex_cldr_units, "~> 3.8", [hex: :ex_cldr_units, repo: "hexpm", optional: true]}, {:ex_doc, "~> 0.21", [hex: :ex_doc, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "39aa50a8763f7ba83b43e7587b37f0a9f71abede78c80cecadb593d498609914"}, "ex_cldr_currencies": {:hex, :ex_cldr_currencies, "2.12.0", "933b188d3a529e4a1140aac44d1d563b5ed0028d76c66983d85134b5e8f15393", [:mix], [{:ex_cldr, "~> 2.24", [hex: :ex_cldr, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "245ee8fb459cdfaffbfbfe31f8924e8cc31f92a962640f14fc4c3ddaf1ab8f12"}, "ex_cldr_dates_times": {:hex, :ex_cldr_dates_times, "2.10.1", "a9670d9d9079bfa096e4b18fb3c10a2e2df3bc63d71a9cee19723d4c6b263fb5", [:mix], [{:calendar_interval, "~> 0.2", [hex: :calendar_interval, repo: "hexpm", optional: true]}, {:ex_cldr_calendars, "~> 1.17", [hex: :ex_cldr_calendars, repo: "hexpm", optional: false]}, {:ex_cldr_numbers, "~> 2.23", [hex: :ex_cldr_numbers, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "099084f7f5acc0c14435add29a0b57434537cc5727d9ceb28f299c459882cef2"}, - "ex_cldr_languages": {:hex, :ex_cldr_languages, "0.3.0", "91df38c2f5e89177e22dc70110ab3b131af381ad1063d3e6835ed30fddd42ed2", [:mix], [{:ex_cldr, "~> 2.24.0", [hex: :ex_cldr, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "6b473e4d91b37c6b7d09f8ea8127c3431f855b20c546c733a1c43a4ec914197e"}, - "ex_cldr_numbers": {:hex, :ex_cldr_numbers, "2.23.3", "d10f26b47b8f0a02ee28f5c8b8323a7acbe781e7b7f42d6e7ed916a5d9a45177", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:ex_cldr, "~> 2.24", [hex: :ex_cldr, repo: "hexpm", optional: false]}, {:ex_cldr_currencies, "~> 2.12", [hex: :ex_cldr_currencies, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "2c55e4391c70d50900b22fcbbc4e85359be66b98d3a82b8c9ec66ab3f5efa4a6"}, + "ex_cldr_languages": {:hex, :ex_cldr_languages, "0.3.1", "1b38bd158769885b8fe4bed91f20cab02857a8547a8e9993d07c053a8af3fbf7", [:mix], [{:ex_cldr, "~> 2.24", [hex: :ex_cldr, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "9d9341bdc06ecea57a129c83ab86fcc5105cbddd8ae795af57a09d8ae1dc4f1a"}, + "ex_cldr_numbers": {:hex, :ex_cldr_numbers, "2.24.0", "8d6cc9047a22ebf25a0b187c53832c4b4547bae0b77d940c87e8fd6b23c935f6", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:ex_cldr, "~> 2.24", [hex: :ex_cldr, repo: "hexpm", optional: false]}, {:ex_cldr_currencies, "~> 2.12", [hex: :ex_cldr_currencies, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "9a1b8525b1e4461e33a85b4f72d2e0e41e03f9b116b47dacf3a1da586a825e18"}, "ex_doc": {:hex, :ex_doc, "0.26.0", "1922164bac0b18b02f84d6f69cab1b93bc3e870e2ad18d5dacb50a9e06b542a3", [:mix], [{:earmark_parser, "~> 1.4.0", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "2775d66e494a9a48355db7867478ffd997864c61c65a47d31c4949459281c78d"}, "ex_ical": {:hex, :ex_ical, "0.2.0", "4b928b554614704016cc0c9ee226eb854da9327a1cc460457621ceacb1ac29a6", [:mix], [{:timex, "~> 3.1", [hex: :timex, repo: "hexpm", optional: false]}], "hexpm", "db76473b2ae0259e6633c6c479a5a4d8603f09497f55c88f9ef4d53d2b75befb"}, "ex_machina": {:hex, :ex_machina, "2.7.0", "b792cc3127fd0680fecdb6299235b4727a4944a09ff0fa904cc639272cd92dc7", [:mix], [{:ecto, "~> 2.2 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_sql, "~> 3.0", [hex: :ecto_sql, repo: "hexpm", optional: true]}], "hexpm", "419aa7a39bde11894c87a615c4ecaa52d8f107bbdd81d810465186f783245bf8"}, @@ -100,13 +100,13 @@ "oban": {:hex, :oban, "2.10.1", "202a90f2aed0130b7d750bdbfea8090c8321bce255bade10fd3699733565add0", [:mix], [{:ecto_sql, "~> 3.6", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.14", [hex: :postgrex, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "161cdd01194147cd6a3efdb1d6c3d9689309991412f799c1e242c18912e307c3"}, "paasaa": {:hex, :paasaa, "0.5.1", "58d8bf61902adfd1d04815a115f0eb3b996845c0360f1831854e21073411e822", [:mix], [], "hexpm", "571f1a33b8e184396a93fc18ee5331f2655c96ba9a6fc383dc675e4bc8fc7596"}, "parse_trans": {:hex, :parse_trans, "3.3.1", "16328ab840cc09919bd10dab29e431da3af9e9e7e7e6f0089dd5a2d2820011d8", [:rebar3], [], "hexpm", "07cd9577885f56362d414e8c4c4e6bdf10d43a8767abb92d24cbe8b24c54888b"}, - "phoenix": {:hex, :phoenix, "1.6.5", "07af307b28a5820b4394f27ac7003df052e065ff651520a58abb16be1eecd519", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.0", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 1.0", [hex: :phoenix_view, repo: "hexpm", optional: false]}, {:plug, "~> 1.10", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.2", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "97dc3052ca648499280e0636471f1d0439fc623ccdce27d2d8135651421ee80c"}, + "phoenix": {:hex, :phoenix, "1.6.6", "281c8ce8dccc9f60607346b72cdfc597c3dde134dd9df28dff08282f0b751754", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.0", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 1.0", [hex: :phoenix_view, repo: "hexpm", optional: false]}, {:plug, "~> 1.10", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.2", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "807bd646e64cd9dc83db016199715faba72758e6db1de0707eef0a2da4924364"}, "phoenix_ecto": {:hex, :phoenix_ecto, "4.4.0", "0672ed4e4808b3fbed494dded89958e22fb882de47a97634c0b13e7b0b5f7720", [:mix], [{:ecto, "~> 3.3", [hex: :ecto, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "09864e558ed31ee00bd48fcc1d4fc58ae9678c9e81649075431e69dbabb43cc1"}, "phoenix_html": {:hex, :phoenix_html, "3.2.0", "1c1219d4b6cb22ac72f12f73dc5fad6c7563104d083f711c3fcd8551a1f4ae11", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "36ec97ba56d25c0136ef1992c37957e4246b649d620958a1f9fa86165f8bc54f"}, "phoenix_live_reload": {:hex, :phoenix_live_reload, "1.3.3", "3a53772a6118d5679bf50fc1670505a290e32a1d195df9e069d8c53ab040c054", [: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", "766796676e5f558dbae5d1bdb066849673e956005e3730dfd5affd7a6da4abac"}, "phoenix_live_view": {:hex, :phoenix_live_view, "0.17.5", "63f52a6f9f6983f04e424586ff897c016ecc5e4f8d1e2c22c2887af1c57215d8", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.5.9 or ~> 1.6.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.1", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "c5586e6a3d4df71b8214c769d4f5eb8ece2b4001711a7ca0f97323c36958b0e3"}, "phoenix_pubsub": {:hex, :phoenix_pubsub, "2.0.0", "a1ae76717bb168cdeb10ec9d92d1480fec99e3080f011402c0a2d68d47395ffb", [:mix], [], "hexpm", "c52d948c4f261577b9c6fa804be91884b381a7f8f18450c5045975435350f771"}, - "phoenix_view": {:hex, :phoenix_view, "1.0.0", "fea71ecaaed71178b26dd65c401607de5ec22e2e9ef141389c721b3f3d4d8011", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}], "hexpm", "82be3e2516f5633220246e2e58181282c71640dab7afc04f70ad94253025db0c"}, + "phoenix_view": {:hex, :phoenix_view, "1.1.0", "149f053830ec3c19a2a8a67c208885a26e4c2b92cc4a9d54e03b633d68ef9add", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}], "hexpm", "dd219f768b3d97a224ed11e8a83f4fd0f3bd490434d3950d7c51a2e597a762f1"}, "plug": {:hex, :plug, "1.12.1", "645678c800601d8d9f27ad1aebba1fdb9ce5b2623ddb961a074da0b96c35187d", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "d57e799a777bc20494b784966dc5fbda91eb4a09f571f76545b72a634ce0d30b"}, "plug_cowboy": {:hex, :plug_cowboy, "2.5.2", "62894ccd601cf9597e2c23911ff12798a8a18d237e9739f58a6b04e4988899fe", [:mix], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:cowboy_telemetry, "~> 0.3", [hex: :cowboy_telemetry, repo: "hexpm", optional: false]}, {:plug, "~> 1.7", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "ea6e87f774c8608d60c8d34022a7d073bd7680a0a013f049fc62bf35efea1044"}, "plug_crypto": {:hex, :plug_crypto, "1.2.2", "05654514ac717ff3a1843204b424477d9e60c143406aa94daf2274fdd280794d", [:mix], [], "hexpm", "87631c7ad914a5a445f0a3809f99b079113ae4ed4b867348dd9eec288cecb6db"}, diff --git a/priv/gettext/activity.pot b/priv/gettext/activity.pot index 57dbd4a39..a4cf0089f 100644 --- a/priv/gettext/activity.pot +++ b/priv/gettext/activity.pot @@ -150,19 +150,22 @@ msgstr "" #, 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.text.eex:1 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:1 msgid "The event %{event} was created by %{profile}." msgstr "" #, 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.text.eex:13 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:34 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:13 msgid "The event %{event} was deleted by %{profile}." msgstr "" #, 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.text.eex:7 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:19 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:7 msgid "The event %{event} was updated by %{profile}." msgstr "" @@ -192,13 +195,15 @@ msgstr "" #, 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.text.eex:25 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:58 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:25 msgid "%{profile} posted a comment on the event %{event}." msgstr "" #, 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.text.eex:19 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:43 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:19 msgid "%{profile} replied to a comment on the event %{event}." msgstr "" @@ -217,7 +222,8 @@ 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.text.eex:6 +#: lib/web/templates/email/email_direct_activity.html.heex:46 +#: 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!" msgid_plural "There has been some activity!" @@ -231,14 +237,17 @@ msgstr "" #, 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.text.eex:7 -#: lib/web/templates/email/email_anonymous_activity.html.heex:41 lib/web/templates/email/email_anonymous_activity.text.eex:5 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:19 +#: 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.text.eex:5 msgid "%{profile} has posted an announcement under event %{event}." msgstr "" #, 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.text.eex:1 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 msgid "%{profile} mentionned you in a comment under event %{event}." msgstr "" @@ -254,7 +263,8 @@ msgid "Here's your weekly activity recap" msgstr "" #, elixir-format -#: lib/web/email/activity.ex:119 lib/web/email/activity.ex:140 +#: lib/web/email/activity.ex:119 +#: lib/web/email/activity.ex:140 msgid "Activity notification for %{instance}" msgstr "" @@ -276,13 +286,15 @@ msgstr "" #, 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.text.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:51 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:19 msgid "%{profile} has posted a new comment under your event %{event}." msgstr "" #, 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.text.eex:13 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:36 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:13 msgid "%{profile} has posted a new reply under your event %{event}." msgstr "" diff --git a/priv/gettext/ar/LC_MESSAGES/activity.po b/priv/gettext/ar/LC_MESSAGES/activity.po index 241256e67..464526cf0 100644 --- a/priv/gettext/ar/LC_MESSAGES/activity.po +++ b/priv/gettext/ar/LC_MESSAGES/activity.po @@ -151,19 +151,22 @@ msgstr "" #, 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.text.eex:1 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:1 msgid "The event %{event} was created by %{profile}." msgstr "" #, 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.text.eex:13 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:34 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:13 msgid "The event %{event} was deleted by %{profile}." msgstr "" #, 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.text.eex:7 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:19 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:7 msgid "The event %{event} was updated by %{profile}." msgstr "" @@ -193,13 +196,15 @@ msgstr "" #, 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.text.eex:25 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:58 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:25 msgid "%{profile} posted a comment on the event %{event}." msgstr "" #, 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.text.eex:19 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:43 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:19 msgid "%{profile} replied to a comment on the event %{event}." msgstr "" @@ -222,7 +227,8 @@ 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.text.eex:6 +#: lib/web/templates/email/email_direct_activity.html.heex:46 +#: 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!" msgid_plural "There has been some activity!" @@ -240,14 +246,17 @@ msgstr "" #, 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.text.eex:7 -#: lib/web/templates/email/email_anonymous_activity.html.heex:41 lib/web/templates/email/email_anonymous_activity.text.eex:5 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:19 +#: 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.text.eex:5 msgid "%{profile} has posted an announcement under event %{event}." msgstr "" #, 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.text.eex:1 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 msgid "%{profile} mentionned you in a comment under event %{event}." msgstr "" @@ -263,7 +272,8 @@ msgid "Here's your weekly activity recap" msgstr "" #, elixir-format -#: lib/web/email/activity.ex:119 lib/web/email/activity.ex:140 +#: lib/web/email/activity.ex:119 +#: lib/web/email/activity.ex:140 msgid "Activity notification for %{instance}" msgstr "" @@ -285,13 +295,15 @@ msgstr "" #, 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.text.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:51 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:19 msgid "%{profile} has posted a new comment under your event %{event}." msgstr "" #, 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.text.eex:13 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:36 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:13 msgid "%{profile} has posted a new reply under your event %{event}." msgstr "" diff --git a/priv/gettext/ar/LC_MESSAGES/default.po b/priv/gettext/ar/LC_MESSAGES/default.po index 7aed8e4b5..18e02e65a 100644 --- a/priv/gettext/ar/LC_MESSAGES/default.po +++ b/priv/gettext/ar/LC_MESSAGES/default.po @@ -776,9 +776,12 @@ msgstr "" #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:63 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:133 -#: lib/web/templates/email/event_updated.text.eex:14 lib/web/templates/email/notification_each_week.html.heex:60 -#: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:60 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 +#: lib/web/templates/email/event_updated.html.heex:133 +#: lib/web/templates/email/event_updated.text.eex:14 +#: lib/web/templates/email/notification_each_week.html.heex:60 +#: lib/web/templates/email/notification_each_week.text.eex:11 +#: lib/web/templates/email/on_day_notification.html.heex:60 #: lib/web/templates/email/on_day_notification.text.eex:11 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." @@ -841,7 +844,6 @@ msgstr "" #, elixir-format #: lib/web/templates/email/email_changed_new.html.heex:38 -#: lib/web/templates/email/email_changed_new.text.eex:3 msgid "Hi there! It seems like you wanted to change the email address linked to your account on <b>%{instance}</b>. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." msgstr "" @@ -863,7 +865,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:70 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.heex:45 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 +#: lib/web/templates/email/registration_confirmation.html.heex:45 msgid "If you didn't trigger this email, you may safely ignore it." msgstr "" @@ -975,7 +978,8 @@ msgstr "إعرض التقرير" #, elixir-format #: lib/web/templates/email/email_anonymous_activity.html.heex:67 -#: lib/web/templates/email/event_participation_approved.html.heex:58 lib/web/templates/email/event_participation_confirmed.html.heex:58 +#: lib/web/templates/email/event_participation_approved.html.heex:58 +#: lib/web/templates/email/event_participation_confirmed.html.heex:58 msgid "Visit event page" msgstr "" @@ -997,7 +1001,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:70 -#: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.heex:70 +#: lib/web/templates/email/event_participation_approved.text.eex:11 +#: lib/web/templates/email/event_participation_confirmed.html.heex:70 #: lib/web/templates/email/event_participation_confirmed.text.eex:6 msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." msgstr "" @@ -1021,7 +1026,8 @@ msgstr "لقد قمتَ بتقديم طلب للمشاركة في فعالية % #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:13 -#: lib/web/templates/email/event_participation_confirmed.html.heex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 +#: lib/web/templates/email/event_participation_confirmed.html.heex:13 +#: lib/web/templates/email/event_participation_confirmed.text.eex:1 msgid "You're going!" msgstr "" @@ -1346,8 +1352,10 @@ msgid "This is a demonstration site to test Mobilizon." msgstr "" #, elixir-format -#: lib/service/metadata/actor.ex:91 lib/service/metadata/actor.ex:99 -#: lib/service/metadata/instance.ex:56 lib/service/metadata/instance.ex:62 +#: lib/service/metadata/actor.ex:91 +#: lib/service/metadata/actor.ex:99 +#: lib/service/metadata/instance.ex:56 +#: lib/service/metadata/instance.ex:62 msgid "%{name}'s feed" msgstr "" @@ -1428,7 +1436,8 @@ msgstr "" #. File name template for exported list of participants. Should NOT contain spaces. Make sure the output is going to be something standardized that is acceptable as a file name on most systems. #, elixir-format #: lib/service/export/participants/csv.ex:81 -#: lib/service/export/participants/ods.ex:86 lib/service/export/participants/pdf.ex:96 +#: lib/service/export/participants/ods.ex:86 +#: lib/service/export/participants/pdf.ex:96 msgid "%{event}_participants" msgstr "" @@ -1449,6 +1458,8 @@ msgstr "" #, elixir-format #: lib/service/export/participants/common.ex:52 +#: lib/web/templates/email/admin/_role.html.heex:3 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Administrator" msgstr "" @@ -1459,6 +1470,8 @@ msgstr "" #, elixir-format #: lib/service/export/participants/common.ex:49 +#: lib/web/templates/email/admin/_role.html.heex:5 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Moderator" msgstr "" @@ -1509,8 +1522,10 @@ msgstr "" #, elixir-format #: lib/web/templates/email/date/event_tz_date.html.heex:6 -#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 lib/web/templates/email/date/event_tz_date_range.html.heex:12 -#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:12 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 msgid "🌐 %{timezone} %{offset}" msgstr "" @@ -1702,3 +1717,137 @@ msgstr[2] "" msgstr[3] "" msgstr[4] "" msgstr[5] "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:13 +#: lib/web/templates/email/admin_user_role_changed.text.eex:1 +msgid "An administrator changed your role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:120 +msgid "An administrator confirmed your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:1 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:1 +msgid "An administrator manually changed the email attached to your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:47 +#: lib/web/email/admin.ex:72 +msgid "An administrator manually changed the email attached to your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:13 +#: lib/web/templates/email/admin_user_confirmation.text.eex:1 +msgid "An administrator manually confirmed your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:98 +msgid "An administrator updated your role on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/email_changed_new.text.eex:3 +msgid "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:3 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually changed your account email from %{old_email} (this one) to %{new_email}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> (this one) to <b>%{new_email}</b>." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> to <b>%{new_email}</b> (this one)." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:71 +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:45 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:45 +#: lib/web/templates/email/admin_user_role_changed.html.heex:67 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods %{start_link}on the instance's about page%{end_link}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:7 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:4 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:4 +#: lib/web/templates/email/admin_user_role_changed.text.eex:8 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods on the instance's about page: %{about_page}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:58 +msgid "Login on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:55 +msgid "New role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:6 +msgid "New role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:47 +msgid "Old role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:5 +msgid "Old role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin/_role.html.heex:7 +#: lib/web/templates/email/admin/_role.text.eex:1 +msgid "User" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:45 +msgid "You may now login using your credentials on the service." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:5 +msgid "You may now login using your credentials on the service:" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just changed your account role." +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just changed your account role." +msgstr "" diff --git a/priv/gettext/ar/LC_MESSAGES/errors.po b/priv/gettext/ar/LC_MESSAGES/errors.po index ec35d5436..59bd70c0d 100644 --- a/priv/gettext/ar/LC_MESSAGES/errors.po +++ b/priv/gettext/ar/LC_MESSAGES/errors.po @@ -140,14 +140,19 @@ msgid "Error while saving user settings" msgstr "" #, elixir-format -#: lib/graphql/error.ex:99 lib/graphql/resolvers/group.ex:249 -#: lib/graphql/resolvers/group.ex:281 lib/graphql/resolvers/group.ex:318 lib/graphql/resolvers/group.ex:349 -#: lib/graphql/resolvers/group.ex:398 lib/graphql/resolvers/member.ex:81 +#: lib/graphql/error.ex:99 +#: lib/graphql/resolvers/group.ex:249 +#: lib/graphql/resolvers/group.ex:281 +#: lib/graphql/resolvers/group.ex:318 +#: lib/graphql/resolvers/group.ex:349 +#: lib/graphql/resolvers/group.ex:398 +#: lib/graphql/resolvers/member.ex:81 msgid "Group not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:78 lib/graphql/resolvers/group.ex:82 +#: lib/graphql/resolvers/group.ex:78 +#: lib/graphql/resolvers/group.ex:82 msgid "Group with ID %{id} not found" msgstr "" @@ -172,15 +177,21 @@ msgid "No user to validate with this email was found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:314 lib/graphql/resolvers/user.ex:298 +#: lib/graphql/resolvers/person.ex:314 +#: lib/graphql/resolvers/user.ex:298 msgid "No user with this email was found" msgstr "" #, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:32 lib/graphql/resolvers/participant.ex:210 lib/graphql/resolvers/person.ex:236 -#: lib/graphql/resolvers/person.ex:353 lib/graphql/resolvers/person.ex:380 lib/graphql/resolvers/person.ex:397 -#: lib/graphql/resolvers/person.ex:425 lib/graphql/resolvers/person.ex:440 +#: lib/graphql/resolvers/participant.ex:32 +#: lib/graphql/resolvers/participant.ex:210 +#: lib/graphql/resolvers/person.ex:236 +#: lib/graphql/resolvers/person.ex:353 +#: lib/graphql/resolvers/person.ex:380 +#: lib/graphql/resolvers/person.ex:397 +#: lib/graphql/resolvers/person.ex:425 +#: lib/graphql/resolvers/person.ex:440 msgid "Profile is not owned by authenticated user" msgstr "" @@ -195,11 +206,13 @@ msgid "The current password is invalid" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:341 #: lib/graphql/resolvers/user.ex:472 msgid "The new email doesn't seem to be valid" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:344 #: lib/graphql/resolvers/user.ex:475 msgid "The new email must be different" msgstr "" @@ -210,7 +223,8 @@ msgid "The new password must be different" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:479 lib/graphql/resolvers/user.ex:541 +#: lib/graphql/resolvers/user.ex:479 +#: lib/graphql/resolvers/user.ex:541 #: lib/graphql/resolvers/user.ex:544 msgid "The password provided is invalid" msgstr "" @@ -231,7 +245,8 @@ msgid "This user has been disabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:252 lib/graphql/resolvers/user.ex:257 +#: lib/graphql/resolvers/user.ex:252 +#: lib/graphql/resolvers/user.ex:257 msgid "Unable to validate user" msgstr "" @@ -306,7 +321,8 @@ msgid "You need to have an existing token to get a refresh token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:276 lib/graphql/resolvers/user.ex:301 +#: lib/graphql/resolvers/user.ex:276 +#: lib/graphql/resolvers/user.ex:301 msgid "You requested again a confirmation email too soon" msgstr "" @@ -326,7 +342,8 @@ msgid "No profile found with this ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:97 +#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:97 msgid "No remote profile found with this ID" msgstr "" @@ -377,17 +394,19 @@ msgid "Comment is already deleted" msgstr "" #, elixir-format -#: lib/graphql/error.ex:101 lib/graphql/resolvers/discussion.ex:69 +#: lib/graphql/error.ex:101 +#: lib/graphql/resolvers/discussion.ex:69 msgid "Discussion not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:63 lib/graphql/resolvers/report.ex:82 +#: lib/graphql/resolvers/report.ex:71 +#: lib/graphql/resolvers/report.ex:90 msgid "Error while saving report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:102 +#: lib/graphql/resolvers/report.ex:110 msgid "Error while updating report" msgstr "" @@ -397,14 +416,16 @@ msgid "Event id not found" msgstr "" #, elixir-format -#: lib/graphql/error.ex:98 lib/graphql/resolvers/event.ex:360 +#: lib/graphql/error.ex:98 +#: lib/graphql/resolvers/event.ex:360 #: lib/graphql/resolvers/event.ex:412 msgid "Event not found" msgstr "" #, elixir-format #: lib/graphql/resolvers/participant.ex:87 -#: lib/graphql/resolvers/participant.ex:128 lib/graphql/resolvers/participant.ex:155 +#: lib/graphql/resolvers/participant.ex:128 +#: lib/graphql/resolvers/participant.ex:155 #: lib/graphql/resolvers/participant.ex:336 msgid "Event with this ID %{id} doesn't exist" msgstr "" @@ -420,8 +441,11 @@ msgid "No discussion with ID %{id}" msgstr "" #, elixir-format -#: lib/graphql/resolvers/todos.ex:80 lib/graphql/resolvers/todos.ex:107 -#: lib/graphql/resolvers/todos.ex:179 lib/graphql/resolvers/todos.ex:208 lib/graphql/resolvers/todos.ex:237 +#: lib/graphql/resolvers/todos.ex:80 +#: lib/graphql/resolvers/todos.ex:107 +#: lib/graphql/resolvers/todos.ex:179 +#: lib/graphql/resolvers/todos.ex:208 +#: lib/graphql/resolvers/todos.ex:237 msgid "No profile found for user" msgstr "" @@ -437,7 +461,8 @@ msgstr "" #, elixir-format #: lib/graphql/resolvers/participant.ex:187 -#: lib/graphql/resolvers/participant.ex:220 lib/graphql/resolvers/participant.ex:263 +#: lib/graphql/resolvers/participant.ex:220 +#: lib/graphql/resolvers/participant.ex:263 msgid "Participant not found" msgstr "" @@ -452,12 +477,14 @@ msgid "Person with username %{username} not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:169 lib/graphql/resolvers/post.ex:203 +#: lib/graphql/resolvers/post.ex:169 +#: lib/graphql/resolvers/post.ex:203 msgid "Post ID is not a valid ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:172 lib/graphql/resolvers/post.ex:206 +#: lib/graphql/resolvers/post.ex:172 +#: lib/graphql/resolvers/post.ex:206 msgid "Post doesn't exist" msgstr "" @@ -467,31 +494,42 @@ msgid "Profile invited doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/member.ex:93 lib/graphql/resolvers/member.ex:97 +#: lib/graphql/resolvers/member.ex:93 +#: lib/graphql/resolvers/member.ex:97 msgid "Profile is already a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:133 lib/graphql/resolvers/post.ex:175 -#: lib/graphql/resolvers/post.ex:209 lib/graphql/resolvers/resource.ex:90 lib/graphql/resolvers/resource.ex:132 -#: lib/graphql/resolvers/resource.ex:165 lib/graphql/resolvers/resource.ex:199 lib/graphql/resolvers/todos.ex:58 -#: lib/graphql/resolvers/todos.ex:83 lib/graphql/resolvers/todos.ex:110 lib/graphql/resolvers/todos.ex:182 -#: lib/graphql/resolvers/todos.ex:214 lib/graphql/resolvers/todos.ex:246 +#: lib/graphql/resolvers/post.ex:133 +#: lib/graphql/resolvers/post.ex:175 +#: lib/graphql/resolvers/post.ex:209 +#: lib/graphql/resolvers/resource.ex:90 +#: lib/graphql/resolvers/resource.ex:132 +#: lib/graphql/resolvers/resource.ex:165 +#: lib/graphql/resolvers/resource.ex:199 +#: lib/graphql/resolvers/todos.ex:58 +#: lib/graphql/resolvers/todos.ex:83 +#: lib/graphql/resolvers/todos.ex:110 +#: lib/graphql/resolvers/todos.ex:182 +#: lib/graphql/resolvers/todos.ex:214 +#: lib/graphql/resolvers/todos.ex:246 msgid "Profile is not member of group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/person.ex:233 +#: lib/graphql/resolvers/actor.ex:67 +#: lib/graphql/resolvers/person.ex:233 msgid "Profile not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:40 +#: lib/graphql/resolvers/report.ex:48 msgid "Report not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/resource.ex:169 lib/graphql/resolvers/resource.ex:196 +#: lib/graphql/resolvers/resource.ex:169 +#: lib/graphql/resolvers/resource.ex:196 msgid "Resource doesn't exist" msgstr "" @@ -506,12 +544,14 @@ msgid "This token is invalid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/todos.ex:176 lib/graphql/resolvers/todos.ex:243 +#: lib/graphql/resolvers/todos.ex:176 +#: lib/graphql/resolvers/todos.ex:243 msgid "Todo doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/todos.ex:77 lib/graphql/resolvers/todos.ex:211 +#: lib/graphql/resolvers/todos.ex:77 +#: lib/graphql/resolvers/todos.ex:211 #: lib/graphql/resolvers/todos.ex:240 msgid "Todo list doesn't exist" msgstr "" @@ -522,12 +562,13 @@ msgid "Token does not exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70 +#: lib/graphql/resolvers/feed_token.ex:67 +#: lib/graphql/resolvers/feed_token.ex:70 msgid "Token is not a valid UUID" msgstr "" #, elixir-format -#: lib/graphql/error.ex:96 lib/graphql/resolvers/person.ex:458 +#: lib/graphql/error.ex:96 msgid "User not found" msgstr "" @@ -547,7 +588,8 @@ msgid "You are not a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/member.ex:157 lib/graphql/resolvers/member.ex:173 +#: lib/graphql/resolvers/member.ex:157 +#: lib/graphql/resolvers/member.ex:173 #: lib/graphql/resolvers/member.ex:188 msgid "You are not a moderator or admin for this group" msgstr "" @@ -609,37 +651,37 @@ msgid "You don't have permission to delete this token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:54 +#: lib/graphql/resolvers/admin.ex:56 msgid "You need to be logged-in and a moderator to list action logs" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:28 +#: lib/graphql/resolvers/report.ex:36 msgid "You need to be logged-in and a moderator to list reports" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:107 +#: lib/graphql/resolvers/report.ex:115 msgid "You need to be logged-in and a moderator to update a report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:45 +#: lib/graphql/resolvers/report.ex:53 msgid "You need to be logged-in and a moderator to view a report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:255 +#: lib/graphql/resolvers/admin.ex:257 msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:239 +#: lib/graphql/resolvers/admin.ex:241 msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:281 +#: lib/graphql/resolvers/admin.ex:283 msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" @@ -664,7 +706,7 @@ msgid "You need to be logged-in to create posts" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:79 +#: lib/graphql/resolvers/report.ex:87 msgid "You need to be logged-in to create reports" msgstr "" @@ -759,7 +801,8 @@ msgid "Reset your password to login" msgstr "" #, elixir-format -#: lib/graphql/error.ex:95 lib/graphql/error.ex:100 +#: lib/graphql/error.ex:95 +#: lib/graphql/error.ex:100 msgid "Resource not found" msgstr "" @@ -849,8 +892,11 @@ msgid "Profile ID provided is not the anonymous profile one" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:161 lib/graphql/resolvers/group.ex:203 -#: lib/graphql/resolvers/person.ex:148 lib/graphql/resolvers/person.ex:182 lib/graphql/resolvers/person.ex:304 +#: lib/graphql/resolvers/group.ex:161 +#: lib/graphql/resolvers/group.ex:203 +#: lib/graphql/resolvers/person.ex:148 +#: lib/graphql/resolvers/person.ex:182 +#: lib/graphql/resolvers/person.ex:304 msgid "The provided picture is too heavy" msgstr "" @@ -875,7 +921,8 @@ msgid "Unable to fetch resource details from this URL." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:164 lib/graphql/resolvers/participant.ex:253 +#: lib/graphql/resolvers/event.ex:164 +#: lib/graphql/resolvers/participant.ex:253 #: lib/graphql/resolvers/participant.ex:328 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "" @@ -926,6 +973,7 @@ msgid "Failed to update the group" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:338 #: lib/graphql/resolvers/user.ex:469 msgid "Failed to update user email" msgstr "" @@ -1054,3 +1102,23 @@ msgstr "" #: lib/graphql/resolvers/user.ex:157 msgid "Your email seems to be using an invalid format" msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:387 +msgid "Can't confirm an already confirmed user" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:391 +msgid "Deconfirming users is not supported" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:363 +msgid "The new role must be different" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:314 +msgid "You need to be logged-in and an administrator to edit an user's details" +msgstr "" diff --git a/priv/gettext/be/LC_MESSAGES/activity.po b/priv/gettext/be/LC_MESSAGES/activity.po index 6549fd10a..f4bf785f8 100644 --- a/priv/gettext/be/LC_MESSAGES/activity.po +++ b/priv/gettext/be/LC_MESSAGES/activity.po @@ -151,19 +151,22 @@ msgstr "" #, 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.text.eex:1 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:1 msgid "The event %{event} was created by %{profile}." msgstr "" #, 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.text.eex:13 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:34 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:13 msgid "The event %{event} was deleted by %{profile}." msgstr "" #, 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.text.eex:7 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:19 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:7 msgid "The event %{event} was updated by %{profile}." msgstr "" @@ -193,13 +196,15 @@ msgstr "" #, 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.text.eex:25 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:58 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:25 msgid "%{profile} posted a comment on the event %{event}." msgstr "" #, 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.text.eex:19 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:43 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:19 msgid "%{profile} replied to a comment on the event %{event}." msgstr "" @@ -219,7 +224,8 @@ 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.text.eex:6 +#: lib/web/templates/email/email_direct_activity.html.heex:46 +#: 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!" msgid_plural "There has been some activity!" @@ -234,14 +240,17 @@ msgstr "" #, 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.text.eex:7 -#: lib/web/templates/email/email_anonymous_activity.html.heex:41 lib/web/templates/email/email_anonymous_activity.text.eex:5 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:19 +#: 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.text.eex:5 msgid "%{profile} has posted an announcement under event %{event}." msgstr "" #, 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.text.eex:1 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 msgid "%{profile} mentionned you in a comment under event %{event}." msgstr "" @@ -257,7 +266,8 @@ msgid "Here's your weekly activity recap" msgstr "" #, elixir-format -#: lib/web/email/activity.ex:119 lib/web/email/activity.ex:140 +#: lib/web/email/activity.ex:119 +#: lib/web/email/activity.ex:140 msgid "Activity notification for %{instance}" msgstr "" @@ -279,13 +289,15 @@ msgstr "" #, 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.text.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:51 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:19 msgid "%{profile} has posted a new comment under your event %{event}." msgstr "" #, 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.text.eex:13 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:36 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:13 msgid "%{profile} has posted a new reply under your event %{event}." msgstr "" diff --git a/priv/gettext/be/LC_MESSAGES/default.po b/priv/gettext/be/LC_MESSAGES/default.po index a15812e31..a7c714b99 100644 --- a/priv/gettext/be/LC_MESSAGES/default.po +++ b/priv/gettext/be/LC_MESSAGES/default.po @@ -758,9 +758,12 @@ msgstr "" #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:63 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:133 -#: lib/web/templates/email/event_updated.text.eex:14 lib/web/templates/email/notification_each_week.html.heex:60 -#: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:60 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 +#: lib/web/templates/email/event_updated.html.heex:133 +#: lib/web/templates/email/event_updated.text.eex:14 +#: lib/web/templates/email/notification_each_week.html.heex:60 +#: lib/web/templates/email/notification_each_week.text.eex:11 +#: lib/web/templates/email/on_day_notification.html.heex:60 #: lib/web/templates/email/on_day_notification.text.eex:11 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." @@ -820,7 +823,6 @@ msgstr "" #, elixir-format #: lib/web/templates/email/email_changed_new.html.heex:38 -#: lib/web/templates/email/email_changed_new.text.eex:3 msgid "Hi there! It seems like you wanted to change the email address linked to your account on <b>%{instance}</b>. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." msgstr "" @@ -842,7 +844,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:70 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.heex:45 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 +#: lib/web/templates/email/registration_confirmation.html.heex:45 msgid "If you didn't trigger this email, you may safely ignore it." msgstr "" @@ -954,7 +957,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/email_anonymous_activity.html.heex:67 -#: lib/web/templates/email/event_participation_approved.html.heex:58 lib/web/templates/email/event_participation_confirmed.html.heex:58 +#: lib/web/templates/email/event_participation_approved.html.heex:58 +#: lib/web/templates/email/event_participation_confirmed.html.heex:58 msgid "Visit event page" msgstr "" @@ -976,7 +980,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:70 -#: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.heex:70 +#: lib/web/templates/email/event_participation_approved.text.eex:11 +#: lib/web/templates/email/event_participation_confirmed.html.heex:70 #: lib/web/templates/email/event_participation_confirmed.text.eex:6 msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." msgstr "" @@ -1000,7 +1005,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:13 -#: lib/web/templates/email/event_participation_confirmed.html.heex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 +#: lib/web/templates/email/event_participation_confirmed.html.heex:13 +#: lib/web/templates/email/event_participation_confirmed.text.eex:1 msgid "You're going!" msgstr "" @@ -1325,8 +1331,10 @@ msgid "This is a demonstration site to test Mobilizon." msgstr "" #, elixir-format -#: lib/service/metadata/actor.ex:91 lib/service/metadata/actor.ex:99 -#: lib/service/metadata/instance.ex:56 lib/service/metadata/instance.ex:62 +#: lib/service/metadata/actor.ex:91 +#: lib/service/metadata/actor.ex:99 +#: lib/service/metadata/instance.ex:56 +#: lib/service/metadata/instance.ex:62 msgid "%{name}'s feed" msgstr "" @@ -1407,7 +1415,8 @@ msgstr "" #. File name template for exported list of participants. Should NOT contain spaces. Make sure the output is going to be something standardized that is acceptable as a file name on most systems. #, elixir-format #: lib/service/export/participants/csv.ex:81 -#: lib/service/export/participants/ods.ex:86 lib/service/export/participants/pdf.ex:96 +#: lib/service/export/participants/ods.ex:86 +#: lib/service/export/participants/pdf.ex:96 msgid "%{event}_participants" msgstr "" @@ -1428,6 +1437,8 @@ msgstr "" #, elixir-format #: lib/service/export/participants/common.ex:52 +#: lib/web/templates/email/admin/_role.html.heex:3 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Administrator" msgstr "" @@ -1438,6 +1449,8 @@ msgstr "" #, elixir-format #: lib/service/export/participants/common.ex:49 +#: lib/web/templates/email/admin/_role.html.heex:5 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Moderator" msgstr "" @@ -1488,8 +1501,10 @@ msgstr "" #, elixir-format #: lib/web/templates/email/date/event_tz_date.html.heex:6 -#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 lib/web/templates/email/date/event_tz_date_range.html.heex:12 -#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:12 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 msgid "🌐 %{timezone} %{offset}" msgstr "" @@ -1678,3 +1693,137 @@ msgid_plural "You have %{number_participation_requests} attendance requests to p msgstr[0] "" msgstr[1] "" msgstr[2] "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:13 +#: lib/web/templates/email/admin_user_role_changed.text.eex:1 +msgid "An administrator changed your role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:120 +msgid "An administrator confirmed your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:1 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:1 +msgid "An administrator manually changed the email attached to your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:47 +#: lib/web/email/admin.ex:72 +msgid "An administrator manually changed the email attached to your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:13 +#: lib/web/templates/email/admin_user_confirmation.text.eex:1 +msgid "An administrator manually confirmed your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:98 +msgid "An administrator updated your role on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/email_changed_new.text.eex:3 +msgid "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:3 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually changed your account email from %{old_email} (this one) to %{new_email}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> (this one) to <b>%{new_email}</b>." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> to <b>%{new_email}</b> (this one)." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:71 +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:45 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:45 +#: lib/web/templates/email/admin_user_role_changed.html.heex:67 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods %{start_link}on the instance's about page%{end_link}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:7 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:4 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:4 +#: lib/web/templates/email/admin_user_role_changed.text.eex:8 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods on the instance's about page: %{about_page}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:58 +msgid "Login on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:55 +msgid "New role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:6 +msgid "New role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:47 +msgid "Old role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:5 +msgid "Old role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin/_role.html.heex:7 +#: lib/web/templates/email/admin/_role.text.eex:1 +msgid "User" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:45 +msgid "You may now login using your credentials on the service." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:5 +msgid "You may now login using your credentials on the service:" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just changed your account role." +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just changed your account role." +msgstr "" diff --git a/priv/gettext/be/LC_MESSAGES/errors.po b/priv/gettext/be/LC_MESSAGES/errors.po index 6d68aff8b..88b6d3e2b 100644 --- a/priv/gettext/be/LC_MESSAGES/errors.po +++ b/priv/gettext/be/LC_MESSAGES/errors.po @@ -114,14 +114,19 @@ msgid "Error while saving user settings" msgstr "" #, elixir-format -#: lib/graphql/error.ex:99 lib/graphql/resolvers/group.ex:249 -#: lib/graphql/resolvers/group.ex:281 lib/graphql/resolvers/group.ex:318 lib/graphql/resolvers/group.ex:349 -#: lib/graphql/resolvers/group.ex:398 lib/graphql/resolvers/member.ex:81 +#: lib/graphql/error.ex:99 +#: lib/graphql/resolvers/group.ex:249 +#: lib/graphql/resolvers/group.ex:281 +#: lib/graphql/resolvers/group.ex:318 +#: lib/graphql/resolvers/group.ex:349 +#: lib/graphql/resolvers/group.ex:398 +#: lib/graphql/resolvers/member.ex:81 msgid "Group not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:78 lib/graphql/resolvers/group.ex:82 +#: lib/graphql/resolvers/group.ex:78 +#: lib/graphql/resolvers/group.ex:82 msgid "Group with ID %{id} not found" msgstr "" @@ -146,15 +151,21 @@ msgid "No user to validate with this email was found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:314 lib/graphql/resolvers/user.ex:298 +#: lib/graphql/resolvers/person.ex:314 +#: lib/graphql/resolvers/user.ex:298 msgid "No user with this email was found" msgstr "" #, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:32 lib/graphql/resolvers/participant.ex:210 lib/graphql/resolvers/person.ex:236 -#: lib/graphql/resolvers/person.ex:353 lib/graphql/resolvers/person.ex:380 lib/graphql/resolvers/person.ex:397 -#: lib/graphql/resolvers/person.ex:425 lib/graphql/resolvers/person.ex:440 +#: lib/graphql/resolvers/participant.ex:32 +#: lib/graphql/resolvers/participant.ex:210 +#: lib/graphql/resolvers/person.ex:236 +#: lib/graphql/resolvers/person.ex:353 +#: lib/graphql/resolvers/person.ex:380 +#: lib/graphql/resolvers/person.ex:397 +#: lib/graphql/resolvers/person.ex:425 +#: lib/graphql/resolvers/person.ex:440 msgid "Profile is not owned by authenticated user" msgstr "" @@ -169,11 +180,13 @@ msgid "The current password is invalid" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:341 #: lib/graphql/resolvers/user.ex:472 msgid "The new email doesn't seem to be valid" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:344 #: lib/graphql/resolvers/user.ex:475 msgid "The new email must be different" msgstr "" @@ -184,7 +197,8 @@ msgid "The new password must be different" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:479 lib/graphql/resolvers/user.ex:541 +#: lib/graphql/resolvers/user.ex:479 +#: lib/graphql/resolvers/user.ex:541 #: lib/graphql/resolvers/user.ex:544 msgid "The password provided is invalid" msgstr "" @@ -205,7 +219,8 @@ msgid "This user has been disabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:252 lib/graphql/resolvers/user.ex:257 +#: lib/graphql/resolvers/user.ex:252 +#: lib/graphql/resolvers/user.ex:257 msgid "Unable to validate user" msgstr "" @@ -280,7 +295,8 @@ msgid "You need to have an existing token to get a refresh token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:276 lib/graphql/resolvers/user.ex:301 +#: lib/graphql/resolvers/user.ex:276 +#: lib/graphql/resolvers/user.ex:301 msgid "You requested again a confirmation email too soon" msgstr "" @@ -300,7 +316,8 @@ msgid "No profile found with this ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:97 +#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:97 msgid "No remote profile found with this ID" msgstr "" @@ -351,17 +368,19 @@ msgid "Comment is already deleted" msgstr "" #, elixir-format -#: lib/graphql/error.ex:101 lib/graphql/resolvers/discussion.ex:69 +#: lib/graphql/error.ex:101 +#: lib/graphql/resolvers/discussion.ex:69 msgid "Discussion not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:63 lib/graphql/resolvers/report.ex:82 +#: lib/graphql/resolvers/report.ex:71 +#: lib/graphql/resolvers/report.ex:90 msgid "Error while saving report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:102 +#: lib/graphql/resolvers/report.ex:110 msgid "Error while updating report" msgstr "" @@ -371,14 +390,16 @@ msgid "Event id not found" msgstr "" #, elixir-format -#: lib/graphql/error.ex:98 lib/graphql/resolvers/event.ex:360 +#: lib/graphql/error.ex:98 +#: lib/graphql/resolvers/event.ex:360 #: lib/graphql/resolvers/event.ex:412 msgid "Event not found" msgstr "" #, elixir-format #: lib/graphql/resolvers/participant.ex:87 -#: lib/graphql/resolvers/participant.ex:128 lib/graphql/resolvers/participant.ex:155 +#: lib/graphql/resolvers/participant.ex:128 +#: lib/graphql/resolvers/participant.ex:155 #: lib/graphql/resolvers/participant.ex:336 msgid "Event with this ID %{id} doesn't exist" msgstr "" @@ -394,8 +415,11 @@ msgid "No discussion with ID %{id}" msgstr "" #, elixir-format -#: lib/graphql/resolvers/todos.ex:80 lib/graphql/resolvers/todos.ex:107 -#: lib/graphql/resolvers/todos.ex:179 lib/graphql/resolvers/todos.ex:208 lib/graphql/resolvers/todos.ex:237 +#: lib/graphql/resolvers/todos.ex:80 +#: lib/graphql/resolvers/todos.ex:107 +#: lib/graphql/resolvers/todos.ex:179 +#: lib/graphql/resolvers/todos.ex:208 +#: lib/graphql/resolvers/todos.ex:237 msgid "No profile found for user" msgstr "" @@ -411,7 +435,8 @@ msgstr "" #, elixir-format #: lib/graphql/resolvers/participant.ex:187 -#: lib/graphql/resolvers/participant.ex:220 lib/graphql/resolvers/participant.ex:263 +#: lib/graphql/resolvers/participant.ex:220 +#: lib/graphql/resolvers/participant.ex:263 msgid "Participant not found" msgstr "" @@ -426,12 +451,14 @@ msgid "Person with username %{username} not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:169 lib/graphql/resolvers/post.ex:203 +#: lib/graphql/resolvers/post.ex:169 +#: lib/graphql/resolvers/post.ex:203 msgid "Post ID is not a valid ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:172 lib/graphql/resolvers/post.ex:206 +#: lib/graphql/resolvers/post.ex:172 +#: lib/graphql/resolvers/post.ex:206 msgid "Post doesn't exist" msgstr "" @@ -441,31 +468,42 @@ msgid "Profile invited doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/member.ex:93 lib/graphql/resolvers/member.ex:97 +#: lib/graphql/resolvers/member.ex:93 +#: lib/graphql/resolvers/member.ex:97 msgid "Profile is already a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:133 lib/graphql/resolvers/post.ex:175 -#: lib/graphql/resolvers/post.ex:209 lib/graphql/resolvers/resource.ex:90 lib/graphql/resolvers/resource.ex:132 -#: lib/graphql/resolvers/resource.ex:165 lib/graphql/resolvers/resource.ex:199 lib/graphql/resolvers/todos.ex:58 -#: lib/graphql/resolvers/todos.ex:83 lib/graphql/resolvers/todos.ex:110 lib/graphql/resolvers/todos.ex:182 -#: lib/graphql/resolvers/todos.ex:214 lib/graphql/resolvers/todos.ex:246 +#: lib/graphql/resolvers/post.ex:133 +#: lib/graphql/resolvers/post.ex:175 +#: lib/graphql/resolvers/post.ex:209 +#: lib/graphql/resolvers/resource.ex:90 +#: lib/graphql/resolvers/resource.ex:132 +#: lib/graphql/resolvers/resource.ex:165 +#: lib/graphql/resolvers/resource.ex:199 +#: lib/graphql/resolvers/todos.ex:58 +#: lib/graphql/resolvers/todos.ex:83 +#: lib/graphql/resolvers/todos.ex:110 +#: lib/graphql/resolvers/todos.ex:182 +#: lib/graphql/resolvers/todos.ex:214 +#: lib/graphql/resolvers/todos.ex:246 msgid "Profile is not member of group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/person.ex:233 +#: lib/graphql/resolvers/actor.ex:67 +#: lib/graphql/resolvers/person.ex:233 msgid "Profile not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:40 +#: lib/graphql/resolvers/report.ex:48 msgid "Report not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/resource.ex:169 lib/graphql/resolvers/resource.ex:196 +#: lib/graphql/resolvers/resource.ex:169 +#: lib/graphql/resolvers/resource.ex:196 msgid "Resource doesn't exist" msgstr "" @@ -480,12 +518,14 @@ msgid "This token is invalid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/todos.ex:176 lib/graphql/resolvers/todos.ex:243 +#: lib/graphql/resolvers/todos.ex:176 +#: lib/graphql/resolvers/todos.ex:243 msgid "Todo doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/todos.ex:77 lib/graphql/resolvers/todos.ex:211 +#: lib/graphql/resolvers/todos.ex:77 +#: lib/graphql/resolvers/todos.ex:211 #: lib/graphql/resolvers/todos.ex:240 msgid "Todo list doesn't exist" msgstr "" @@ -496,12 +536,13 @@ msgid "Token does not exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70 +#: lib/graphql/resolvers/feed_token.ex:67 +#: lib/graphql/resolvers/feed_token.ex:70 msgid "Token is not a valid UUID" msgstr "" #, elixir-format -#: lib/graphql/error.ex:96 lib/graphql/resolvers/person.ex:458 +#: lib/graphql/error.ex:96 msgid "User not found" msgstr "" @@ -521,7 +562,8 @@ msgid "You are not a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/member.ex:157 lib/graphql/resolvers/member.ex:173 +#: lib/graphql/resolvers/member.ex:157 +#: lib/graphql/resolvers/member.ex:173 #: lib/graphql/resolvers/member.ex:188 msgid "You are not a moderator or admin for this group" msgstr "" @@ -583,37 +625,37 @@ msgid "You don't have permission to delete this token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:54 +#: lib/graphql/resolvers/admin.ex:56 msgid "You need to be logged-in and a moderator to list action logs" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:28 +#: lib/graphql/resolvers/report.ex:36 msgid "You need to be logged-in and a moderator to list reports" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:107 +#: lib/graphql/resolvers/report.ex:115 msgid "You need to be logged-in and a moderator to update a report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:45 +#: lib/graphql/resolvers/report.ex:53 msgid "You need to be logged-in and a moderator to view a report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:255 +#: lib/graphql/resolvers/admin.ex:257 msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:239 +#: lib/graphql/resolvers/admin.ex:241 msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:281 +#: lib/graphql/resolvers/admin.ex:283 msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" @@ -638,7 +680,7 @@ msgid "You need to be logged-in to create posts" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:79 +#: lib/graphql/resolvers/report.ex:87 msgid "You need to be logged-in to create reports" msgstr "" @@ -733,7 +775,8 @@ msgid "Reset your password to login" msgstr "" #, elixir-format -#: lib/graphql/error.ex:95 lib/graphql/error.ex:100 +#: lib/graphql/error.ex:95 +#: lib/graphql/error.ex:100 msgid "Resource not found" msgstr "" @@ -823,8 +866,11 @@ msgid "Profile ID provided is not the anonymous profile one" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:161 lib/graphql/resolvers/group.ex:203 -#: lib/graphql/resolvers/person.ex:148 lib/graphql/resolvers/person.ex:182 lib/graphql/resolvers/person.ex:304 +#: lib/graphql/resolvers/group.ex:161 +#: lib/graphql/resolvers/group.ex:203 +#: lib/graphql/resolvers/person.ex:148 +#: lib/graphql/resolvers/person.ex:182 +#: lib/graphql/resolvers/person.ex:304 msgid "The provided picture is too heavy" msgstr "" @@ -849,7 +895,8 @@ msgid "Unable to fetch resource details from this URL." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:164 lib/graphql/resolvers/participant.ex:253 +#: lib/graphql/resolvers/event.ex:164 +#: lib/graphql/resolvers/participant.ex:253 #: lib/graphql/resolvers/participant.ex:328 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "" @@ -900,6 +947,7 @@ msgid "Failed to update the group" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:338 #: lib/graphql/resolvers/user.ex:469 msgid "Failed to update user email" msgstr "" @@ -1028,3 +1076,23 @@ msgstr "" #: lib/graphql/resolvers/user.ex:157 msgid "Your email seems to be using an invalid format" msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:387 +msgid "Can't confirm an already confirmed user" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:391 +msgid "Deconfirming users is not supported" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:363 +msgid "The new role must be different" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:314 +msgid "You need to be logged-in and an administrator to edit an user's details" +msgstr "" diff --git a/priv/gettext/ca/LC_MESSAGES/activity.po b/priv/gettext/ca/LC_MESSAGES/activity.po index 82dc223d9..6d6ee5015 100644 --- a/priv/gettext/ca/LC_MESSAGES/activity.po +++ b/priv/gettext/ca/LC_MESSAGES/activity.po @@ -151,19 +151,22 @@ msgstr "" #, 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.text.eex:1 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:1 msgid "The event %{event} was created by %{profile}." msgstr "" #, 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.text.eex:13 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:34 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:13 msgid "The event %{event} was deleted by %{profile}." msgstr "" #, 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.text.eex:7 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:19 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:7 msgid "The event %{event} was updated by %{profile}." msgstr "" @@ -193,13 +196,15 @@ msgstr "" #, 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.text.eex:25 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:58 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:25 msgid "%{profile} posted a comment on the event %{event}." msgstr "" #, 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.text.eex:19 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:43 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:19 msgid "%{profile} replied to a comment on the event %{event}." msgstr "" @@ -218,7 +223,8 @@ 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.text.eex:6 +#: lib/web/templates/email/email_direct_activity.html.heex:46 +#: 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!" msgid_plural "There has been some activity!" @@ -232,14 +238,17 @@ msgstr "" #, 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.text.eex:7 -#: lib/web/templates/email/email_anonymous_activity.html.heex:41 lib/web/templates/email/email_anonymous_activity.text.eex:5 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:19 +#: 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.text.eex:5 msgid "%{profile} has posted an announcement under event %{event}." msgstr "" #, 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.text.eex:1 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 msgid "%{profile} mentionned you in a comment under event %{event}." msgstr "" @@ -255,7 +264,8 @@ msgid "Here's your weekly activity recap" msgstr "" #, elixir-format -#: lib/web/email/activity.ex:119 lib/web/email/activity.ex:140 +#: lib/web/email/activity.ex:119 +#: lib/web/email/activity.ex:140 msgid "Activity notification for %{instance}" msgstr "" @@ -277,13 +287,15 @@ msgstr "" #, 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.text.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:51 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:19 msgid "%{profile} has posted a new comment under your event %{event}." msgstr "" #, 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.text.eex:13 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:36 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:13 msgid "%{profile} has posted a new reply under your event %{event}." msgstr "" diff --git a/priv/gettext/ca/LC_MESSAGES/default.po b/priv/gettext/ca/LC_MESSAGES/default.po index 87aef5dbd..a4ff34f6e 100644 --- a/priv/gettext/ca/LC_MESSAGES/default.po +++ b/priv/gettext/ca/LC_MESSAGES/default.po @@ -925,9 +925,12 @@ msgstr "No ho facis servir més que proves, sisplau" #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:63 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:133 -#: lib/web/templates/email/event_updated.text.eex:14 lib/web/templates/email/notification_each_week.html.heex:60 -#: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:60 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 +#: lib/web/templates/email/event_updated.html.heex:133 +#: lib/web/templates/email/event_updated.text.eex:14 +#: lib/web/templates/email/notification_each_week.html.heex:60 +#: lib/web/templates/email/notification_each_week.text.eex:11 +#: lib/web/templates/email/on_day_notification.html.heex:60 #: lib/web/templates/email/on_day_notification.text.eex:11 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." @@ -993,7 +996,6 @@ msgstr "" #, elixir-format #: lib/web/templates/email/email_changed_new.html.heex:38 -#: lib/web/templates/email/email_changed_new.text.eex:3 msgid "Hi there! It seems like you wanted to change the email address linked to your account on <b>%{instance}</b>. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." msgstr "" "Ei hola! Sembla que vols canviar l'adreça de correu vinculada al teu compte " @@ -1027,7 +1029,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:70 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.heex:45 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 +#: lib/web/templates/email/registration_confirmation.html.heex:45 msgid "If you didn't trigger this email, you may safely ignore it." msgstr "Si no has demanat això, sisplau ignora aquest correu." @@ -1143,7 +1146,8 @@ msgstr "Mostra la denúncia" #, elixir-format #: lib/web/templates/email/email_anonymous_activity.html.heex:67 -#: lib/web/templates/email/event_participation_approved.html.heex:58 lib/web/templates/email/event_participation_confirmed.html.heex:58 +#: lib/web/templates/email/event_participation_approved.html.heex:58 +#: lib/web/templates/email/event_participation_confirmed.html.heex:58 msgid "Visit event page" msgstr "Vés a la pàgina d'activitat" @@ -1165,7 +1169,8 @@ msgstr "Què fan avui?" #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:70 -#: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.heex:70 +#: lib/web/templates/email/event_participation_approved.text.eex:11 +#: lib/web/templates/email/event_participation_confirmed.html.heex:70 #: lib/web/templates/email/event_participation_confirmed.text.eex:6 msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." msgstr "" @@ -1195,7 +1200,8 @@ msgstr "Has soŀlicitat participar a l'activitat %{title}." #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:13 -#: lib/web/templates/email/event_participation_confirmed.html.heex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 +#: lib/web/templates/email/event_participation_confirmed.html.heex:13 +#: lib/web/templates/email/event_participation_confirmed.text.eex:1 msgid "You're going!" msgstr "T'han acceptat!" @@ -1576,8 +1582,10 @@ msgid "This is a demonstration site to test Mobilizon." msgstr "Aquesta és una web de proves per provar la beta de Mobilizon." #, elixir-format -#: lib/service/metadata/actor.ex:91 lib/service/metadata/actor.ex:99 -#: lib/service/metadata/instance.ex:56 lib/service/metadata/instance.ex:62 +#: lib/service/metadata/actor.ex:91 +#: lib/service/metadata/actor.ex:99 +#: lib/service/metadata/instance.ex:56 +#: lib/service/metadata/instance.ex:62 msgid "%{name}'s feed" msgstr "El flux de %{name}" @@ -1662,7 +1670,8 @@ msgstr "T'han aprovat la participació a %{title}" #. File name template for exported list of participants. Should NOT contain spaces. Make sure the output is going to be something standardized that is acceptable as a file name on most systems. #, elixir-format #: lib/service/export/participants/csv.ex:81 -#: lib/service/export/participants/ods.ex:86 lib/service/export/participants/pdf.ex:96 +#: lib/service/export/participants/ods.ex:86 +#: lib/service/export/participants/pdf.ex:96 msgid "%{event}_participants" msgstr "" @@ -1683,6 +1692,8 @@ msgstr "" #, elixir-format #: lib/service/export/participants/common.ex:52 +#: lib/web/templates/email/admin/_role.html.heex:3 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Administrator" msgstr "" @@ -1693,6 +1704,8 @@ msgstr "" #, elixir-format #: lib/service/export/participants/common.ex:49 +#: lib/web/templates/email/admin/_role.html.heex:5 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Moderator" msgstr "" @@ -1743,8 +1756,10 @@ msgstr "" #, elixir-format #: lib/web/templates/email/date/event_tz_date.html.heex:6 -#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 lib/web/templates/email/date/event_tz_date_range.html.heex:12 -#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:12 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 msgid "🌐 %{timezone} %{offset}" msgstr "" @@ -1934,3 +1949,141 @@ msgstr[0] "Tens una soŀlicitud de participació pendent de resoldre:" msgstr[1] "" "Tens %{number_participation_requests} soŀlicituds de participació pendents " "de resoldre:" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:13 +#: lib/web/templates/email/admin_user_role_changed.text.eex:1 +msgid "An administrator changed your role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:120 +msgid "An administrator confirmed your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:1 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:1 +msgid "An administrator manually changed the email attached to your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:47 +#: lib/web/email/admin.ex:72 +msgid "An administrator manually changed the email attached to your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:13 +#: lib/web/templates/email/admin_user_confirmation.text.eex:1 +msgid "An administrator manually confirmed your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:98 +msgid "An administrator updated your role on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/email_changed_new.text.eex:3 +msgid "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." +msgstr "" +"Ei hola! Sembla que vols canviar l'adreça de correu vinculada al teu compte " +"de <b>%{instance}</b>. Si és així, fes clic al botó de sota per confirmar " +"el canvi. Un cop fet, podràs iniciar sessió a %{instance} amb aquesta nova " +"adreça." + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:3 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually changed your account email from %{old_email} (this one) to %{new_email}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> (this one) to <b>%{new_email}</b>." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> to <b>%{new_email}</b> (this one)." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:71 +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:45 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:45 +#: lib/web/templates/email/admin_user_role_changed.html.heex:67 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods %{start_link}on the instance's about page%{end_link}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:7 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:4 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:4 +#: lib/web/templates/email/admin_user_role_changed.text.eex:8 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods on the instance's about page: %{about_page}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:58 +msgid "Login on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:55 +msgid "New role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:6 +msgid "New role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:47 +msgid "Old role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:5 +msgid "Old role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin/_role.html.heex:7 +#: lib/web/templates/email/admin/_role.text.eex:1 +msgid "User" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:45 +msgid "You may now login using your credentials on the service." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:5 +msgid "You may now login using your credentials on the service:" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just changed your account role." +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just changed your account role." +msgstr "" diff --git a/priv/gettext/ca/LC_MESSAGES/errors.po b/priv/gettext/ca/LC_MESSAGES/errors.po index aac4cb6a6..76142c580 100644 --- a/priv/gettext/ca/LC_MESSAGES/errors.po +++ b/priv/gettext/ca/LC_MESSAGES/errors.po @@ -115,14 +115,19 @@ msgid "Error while saving user settings" msgstr "No s'han pogut desar les preferències" #, elixir-format -#: lib/graphql/error.ex:99 lib/graphql/resolvers/group.ex:249 -#: lib/graphql/resolvers/group.ex:281 lib/graphql/resolvers/group.ex:318 lib/graphql/resolvers/group.ex:349 -#: lib/graphql/resolvers/group.ex:398 lib/graphql/resolvers/member.ex:81 +#: lib/graphql/error.ex:99 +#: lib/graphql/resolvers/group.ex:249 +#: lib/graphql/resolvers/group.ex:281 +#: lib/graphql/resolvers/group.ex:318 +#: lib/graphql/resolvers/group.ex:349 +#: lib/graphql/resolvers/group.ex:398 +#: lib/graphql/resolvers/member.ex:81 msgid "Group not found" msgstr "No s'ha trobat el grup" #, elixir-format -#: lib/graphql/resolvers/group.ex:78 lib/graphql/resolvers/group.ex:82 +#: lib/graphql/resolvers/group.ex:78 +#: lib/graphql/resolvers/group.ex:82 msgid "Group with ID %{id} not found" msgstr "No s'ha trobat el grup amb identificador %{id}" @@ -147,15 +152,21 @@ msgid "No user to validate with this email was found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:314 lib/graphql/resolvers/user.ex:298 +#: lib/graphql/resolvers/person.ex:314 +#: lib/graphql/resolvers/user.ex:298 msgid "No user with this email was found" msgstr "" #, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:32 lib/graphql/resolvers/participant.ex:210 lib/graphql/resolvers/person.ex:236 -#: lib/graphql/resolvers/person.ex:353 lib/graphql/resolvers/person.ex:380 lib/graphql/resolvers/person.ex:397 -#: lib/graphql/resolvers/person.ex:425 lib/graphql/resolvers/person.ex:440 +#: lib/graphql/resolvers/participant.ex:32 +#: lib/graphql/resolvers/participant.ex:210 +#: lib/graphql/resolvers/person.ex:236 +#: lib/graphql/resolvers/person.ex:353 +#: lib/graphql/resolvers/person.ex:380 +#: lib/graphql/resolvers/person.ex:397 +#: lib/graphql/resolvers/person.ex:425 +#: lib/graphql/resolvers/person.ex:440 msgid "Profile is not owned by authenticated user" msgstr "" @@ -170,11 +181,13 @@ msgid "The current password is invalid" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:341 #: lib/graphql/resolvers/user.ex:472 msgid "The new email doesn't seem to be valid" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:344 #: lib/graphql/resolvers/user.ex:475 msgid "The new email must be different" msgstr "" @@ -185,7 +198,8 @@ msgid "The new password must be different" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:479 lib/graphql/resolvers/user.ex:541 +#: lib/graphql/resolvers/user.ex:479 +#: lib/graphql/resolvers/user.ex:541 #: lib/graphql/resolvers/user.ex:544 msgid "The password provided is invalid" msgstr "" @@ -206,7 +220,8 @@ msgid "This user has been disabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:252 lib/graphql/resolvers/user.ex:257 +#: lib/graphql/resolvers/user.ex:252 +#: lib/graphql/resolvers/user.ex:257 msgid "Unable to validate user" msgstr "" @@ -281,7 +296,8 @@ msgid "You need to have an existing token to get a refresh token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:276 lib/graphql/resolvers/user.ex:301 +#: lib/graphql/resolvers/user.ex:276 +#: lib/graphql/resolvers/user.ex:301 msgid "You requested again a confirmation email too soon" msgstr "" @@ -301,7 +317,8 @@ msgid "No profile found with this ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:97 +#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:97 msgid "No remote profile found with this ID" msgstr "" @@ -352,17 +369,19 @@ msgid "Comment is already deleted" msgstr "" #, elixir-format -#: lib/graphql/error.ex:101 lib/graphql/resolvers/discussion.ex:69 +#: lib/graphql/error.ex:101 +#: lib/graphql/resolvers/discussion.ex:69 msgid "Discussion not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:63 lib/graphql/resolvers/report.ex:82 +#: lib/graphql/resolvers/report.ex:71 +#: lib/graphql/resolvers/report.ex:90 msgid "Error while saving report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:102 +#: lib/graphql/resolvers/report.ex:110 msgid "Error while updating report" msgstr "" @@ -372,14 +391,16 @@ msgid "Event id not found" msgstr "" #, elixir-format -#: lib/graphql/error.ex:98 lib/graphql/resolvers/event.ex:360 +#: lib/graphql/error.ex:98 +#: lib/graphql/resolvers/event.ex:360 #: lib/graphql/resolvers/event.ex:412 msgid "Event not found" msgstr "" #, elixir-format #: lib/graphql/resolvers/participant.ex:87 -#: lib/graphql/resolvers/participant.ex:128 lib/graphql/resolvers/participant.ex:155 +#: lib/graphql/resolvers/participant.ex:128 +#: lib/graphql/resolvers/participant.ex:155 #: lib/graphql/resolvers/participant.ex:336 msgid "Event with this ID %{id} doesn't exist" msgstr "" @@ -395,8 +416,11 @@ msgid "No discussion with ID %{id}" msgstr "" #, elixir-format -#: lib/graphql/resolvers/todos.ex:80 lib/graphql/resolvers/todos.ex:107 -#: lib/graphql/resolvers/todos.ex:179 lib/graphql/resolvers/todos.ex:208 lib/graphql/resolvers/todos.ex:237 +#: lib/graphql/resolvers/todos.ex:80 +#: lib/graphql/resolvers/todos.ex:107 +#: lib/graphql/resolvers/todos.ex:179 +#: lib/graphql/resolvers/todos.ex:208 +#: lib/graphql/resolvers/todos.ex:237 msgid "No profile found for user" msgstr "" @@ -412,7 +436,8 @@ msgstr "" #, elixir-format #: lib/graphql/resolvers/participant.ex:187 -#: lib/graphql/resolvers/participant.ex:220 lib/graphql/resolvers/participant.ex:263 +#: lib/graphql/resolvers/participant.ex:220 +#: lib/graphql/resolvers/participant.ex:263 msgid "Participant not found" msgstr "" @@ -427,12 +452,14 @@ msgid "Person with username %{username} not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:169 lib/graphql/resolvers/post.ex:203 +#: lib/graphql/resolvers/post.ex:169 +#: lib/graphql/resolvers/post.ex:203 msgid "Post ID is not a valid ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:172 lib/graphql/resolvers/post.ex:206 +#: lib/graphql/resolvers/post.ex:172 +#: lib/graphql/resolvers/post.ex:206 msgid "Post doesn't exist" msgstr "" @@ -442,31 +469,42 @@ msgid "Profile invited doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/member.ex:93 lib/graphql/resolvers/member.ex:97 +#: lib/graphql/resolvers/member.ex:93 +#: lib/graphql/resolvers/member.ex:97 msgid "Profile is already a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:133 lib/graphql/resolvers/post.ex:175 -#: lib/graphql/resolvers/post.ex:209 lib/graphql/resolvers/resource.ex:90 lib/graphql/resolvers/resource.ex:132 -#: lib/graphql/resolvers/resource.ex:165 lib/graphql/resolvers/resource.ex:199 lib/graphql/resolvers/todos.ex:58 -#: lib/graphql/resolvers/todos.ex:83 lib/graphql/resolvers/todos.ex:110 lib/graphql/resolvers/todos.ex:182 -#: lib/graphql/resolvers/todos.ex:214 lib/graphql/resolvers/todos.ex:246 +#: lib/graphql/resolvers/post.ex:133 +#: lib/graphql/resolvers/post.ex:175 +#: lib/graphql/resolvers/post.ex:209 +#: lib/graphql/resolvers/resource.ex:90 +#: lib/graphql/resolvers/resource.ex:132 +#: lib/graphql/resolvers/resource.ex:165 +#: lib/graphql/resolvers/resource.ex:199 +#: lib/graphql/resolvers/todos.ex:58 +#: lib/graphql/resolvers/todos.ex:83 +#: lib/graphql/resolvers/todos.ex:110 +#: lib/graphql/resolvers/todos.ex:182 +#: lib/graphql/resolvers/todos.ex:214 +#: lib/graphql/resolvers/todos.ex:246 msgid "Profile is not member of group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/person.ex:233 +#: lib/graphql/resolvers/actor.ex:67 +#: lib/graphql/resolvers/person.ex:233 msgid "Profile not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:40 +#: lib/graphql/resolvers/report.ex:48 msgid "Report not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/resource.ex:169 lib/graphql/resolvers/resource.ex:196 +#: lib/graphql/resolvers/resource.ex:169 +#: lib/graphql/resolvers/resource.ex:196 msgid "Resource doesn't exist" msgstr "" @@ -481,12 +519,14 @@ msgid "This token is invalid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/todos.ex:176 lib/graphql/resolvers/todos.ex:243 +#: lib/graphql/resolvers/todos.ex:176 +#: lib/graphql/resolvers/todos.ex:243 msgid "Todo doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/todos.ex:77 lib/graphql/resolvers/todos.ex:211 +#: lib/graphql/resolvers/todos.ex:77 +#: lib/graphql/resolvers/todos.ex:211 #: lib/graphql/resolvers/todos.ex:240 msgid "Todo list doesn't exist" msgstr "" @@ -497,12 +537,13 @@ msgid "Token does not exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70 +#: lib/graphql/resolvers/feed_token.ex:67 +#: lib/graphql/resolvers/feed_token.ex:70 msgid "Token is not a valid UUID" msgstr "" #, elixir-format -#: lib/graphql/error.ex:96 lib/graphql/resolvers/person.ex:458 +#: lib/graphql/error.ex:96 msgid "User not found" msgstr "" @@ -522,7 +563,8 @@ msgid "You are not a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/member.ex:157 lib/graphql/resolvers/member.ex:173 +#: lib/graphql/resolvers/member.ex:157 +#: lib/graphql/resolvers/member.ex:173 #: lib/graphql/resolvers/member.ex:188 msgid "You are not a moderator or admin for this group" msgstr "" @@ -584,37 +626,37 @@ msgid "You don't have permission to delete this token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:54 +#: lib/graphql/resolvers/admin.ex:56 msgid "You need to be logged-in and a moderator to list action logs" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:28 +#: lib/graphql/resolvers/report.ex:36 msgid "You need to be logged-in and a moderator to list reports" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:107 +#: lib/graphql/resolvers/report.ex:115 msgid "You need to be logged-in and a moderator to update a report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:45 +#: lib/graphql/resolvers/report.ex:53 msgid "You need to be logged-in and a moderator to view a report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:255 +#: lib/graphql/resolvers/admin.ex:257 msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:239 +#: lib/graphql/resolvers/admin.ex:241 msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:281 +#: lib/graphql/resolvers/admin.ex:283 msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" @@ -639,7 +681,7 @@ msgid "You need to be logged-in to create posts" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:79 +#: lib/graphql/resolvers/report.ex:87 msgid "You need to be logged-in to create reports" msgstr "" @@ -734,7 +776,8 @@ msgid "Reset your password to login" msgstr "" #, elixir-format -#: lib/graphql/error.ex:95 lib/graphql/error.ex:100 +#: lib/graphql/error.ex:95 +#: lib/graphql/error.ex:100 msgid "Resource not found" msgstr "" @@ -824,8 +867,11 @@ msgid "Profile ID provided is not the anonymous profile one" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:161 lib/graphql/resolvers/group.ex:203 -#: lib/graphql/resolvers/person.ex:148 lib/graphql/resolvers/person.ex:182 lib/graphql/resolvers/person.ex:304 +#: lib/graphql/resolvers/group.ex:161 +#: lib/graphql/resolvers/group.ex:203 +#: lib/graphql/resolvers/person.ex:148 +#: lib/graphql/resolvers/person.ex:182 +#: lib/graphql/resolvers/person.ex:304 msgid "The provided picture is too heavy" msgstr "" @@ -850,7 +896,8 @@ msgid "Unable to fetch resource details from this URL." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:164 lib/graphql/resolvers/participant.ex:253 +#: lib/graphql/resolvers/event.ex:164 +#: lib/graphql/resolvers/participant.ex:253 #: lib/graphql/resolvers/participant.ex:328 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "" @@ -901,6 +948,7 @@ msgid "Failed to update the group" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:338 #: lib/graphql/resolvers/user.ex:469 msgid "Failed to update user email" msgstr "" @@ -1029,3 +1077,23 @@ msgstr "" #: lib/graphql/resolvers/user.ex:157 msgid "Your email seems to be using an invalid format" msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:387 +msgid "Can't confirm an already confirmed user" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:391 +msgid "Deconfirming users is not supported" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:363 +msgid "The new role must be different" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:314 +msgid "You need to be logged-in and an administrator to edit an user's details" +msgstr "" diff --git a/priv/gettext/cs/LC_MESSAGES/activity.po b/priv/gettext/cs/LC_MESSAGES/activity.po index b9339301a..5e509b7af 100644 --- a/priv/gettext/cs/LC_MESSAGES/activity.po +++ b/priv/gettext/cs/LC_MESSAGES/activity.po @@ -158,19 +158,22 @@ msgstr "%{profile} aktualizoval člena %{member}." #, 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.text.eex:1 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:1 msgid "The event %{event} was created by %{profile}." msgstr "Událost %{event} byla vytvořena pomocí %{profile}." #, 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.text.eex:13 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:34 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:13 msgid "The event %{event} was deleted by %{profile}." msgstr "Událost %{event} byla odstraněna pomocí %{profile}." #, 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.text.eex:7 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:19 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:7 msgid "The event %{event} was updated by %{profile}." msgstr "Událost %{event} byla aktualizována pomocí %{profile}." @@ -200,13 +203,15 @@ msgstr "%{member} se připojil ke skupině." #, 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.text.eex:25 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:58 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:25 msgid "%{profile} posted a comment on the event %{event}." msgstr "%{profile} vložil komentář k události %{event}." #, 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.text.eex:19 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:43 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:19 msgid "%{profile} replied to a comment on the event %{event}." msgstr "%{profile} odpověděl na komentář k události %{event}." @@ -228,7 +233,8 @@ msgstr[2] "Zobrazit %{count} dalších aktivit" #, 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.text.eex:6 +#: lib/web/templates/email/email_direct_activity.html.heex:46 +#: 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!" msgid_plural "There has been some activity!" @@ -243,14 +249,17 @@ msgstr "Aktivita na %{instance}" #, 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.text.eex:7 -#: lib/web/templates/email/email_anonymous_activity.html.heex:41 lib/web/templates/email/email_anonymous_activity.text.eex:5 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:19 +#: 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.text.eex:5 msgid "%{profile} has posted an announcement under event %{event}." msgstr "%{profile} zveřejnil oznámení v rámci události %{event}." #, 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.text.eex:1 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 msgid "%{profile} mentionned you in a comment under event %{event}." msgstr "%{profile} vás zmínil v komentáři pod událostí %{event}." @@ -268,7 +277,8 @@ msgid "Here's your weekly activity recap" msgstr "Zde je váš týdenní přehled aktivit" #, elixir-format -#: lib/web/email/activity.ex:119 lib/web/email/activity.ex:140 +#: lib/web/email/activity.ex:119 +#: lib/web/email/activity.ex:140 msgid "Activity notification for %{instance}" msgstr "Oznámení o činnosti pro %{instance}" @@ -290,13 +300,15 @@ msgstr "Týdenní shrnutí činnosti pro %{instance}" #, 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.text.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:51 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:19 msgid "%{profile} has posted a new comment under your event %{event}." msgstr "%{profile} vložil nový komentář pod vaši událost %{event}." #, 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.text.eex:13 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:36 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:13 msgid "%{profile} has posted a new reply under your event %{event}." msgstr "%{profile} vložil novou odpověď pod vaši událost %{event}." diff --git a/priv/gettext/cs/LC_MESSAGES/default.po b/priv/gettext/cs/LC_MESSAGES/default.po index b73b67dc9..fb5a53176 100644 --- a/priv/gettext/cs/LC_MESSAGES/default.po +++ b/priv/gettext/cs/LC_MESSAGES/default.po @@ -932,9 +932,12 @@ msgstr "Nepoužívejte ji pro skutečné účely." #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:63 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:133 -#: lib/web/templates/email/event_updated.text.eex:14 lib/web/templates/email/notification_each_week.html.heex:60 -#: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:60 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 +#: lib/web/templates/email/event_updated.html.heex:133 +#: lib/web/templates/email/event_updated.text.eex:14 +#: lib/web/templates/email/notification_each_week.html.heex:60 +#: lib/web/templates/email/notification_each_week.text.eex:11 +#: lib/web/templates/email/on_day_notification.html.heex:60 #: lib/web/templates/email/on_day_notification.text.eex:11 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." @@ -1004,7 +1007,6 @@ msgstr "" #, elixir-format #: lib/web/templates/email/email_changed_new.html.heex:38 -#: lib/web/templates/email/email_changed_new.text.eex:3 msgid "Hi there! It seems like you wanted to change the email address linked to your account on <b>%{instance}</b>. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." msgstr "" "Ahoj! Zdá se, že jste chtěli změnit e-mailovou adresu spojenou s vaším účtem " @@ -1037,7 +1039,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:70 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.heex:45 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 +#: lib/web/templates/email/registration_confirmation.html.heex:45 msgid "If you didn't trigger this email, you may safely ignore it." msgstr "Pokud jste tento e-mail nespustili, můžete jej bez obav ignorovat." @@ -1158,7 +1161,8 @@ msgstr "Zobrazit hlášení:" #, elixir-format #: lib/web/templates/email/email_anonymous_activity.html.heex:67 -#: lib/web/templates/email/event_participation_approved.html.heex:58 lib/web/templates/email/event_participation_confirmed.html.heex:58 +#: lib/web/templates/email/event_participation_approved.html.heex:58 +#: lib/web/templates/email/event_participation_confirmed.html.heex:58 msgid "Visit event page" msgstr "Navštivte stránku události" @@ -1180,7 +1184,8 @@ msgstr "Co se dnes děje?" #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:70 -#: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.heex:70 +#: lib/web/templates/email/event_participation_approved.text.eex:11 +#: lib/web/templates/email/event_participation_confirmed.html.heex:70 #: lib/web/templates/email/event_participation_confirmed.text.eex:6 msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." msgstr "" @@ -1211,7 +1216,8 @@ msgstr "Nedávno jste požádali o účast na %{title}." #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:13 -#: lib/web/templates/email/event_participation_confirmed.html.heex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 +#: lib/web/templates/email/event_participation_confirmed.html.heex:13 +#: lib/web/templates/email/event_participation_confirmed.text.eex:1 msgid "You're going!" msgstr "Chystáte se!" @@ -1638,8 +1644,10 @@ msgid "This is a demonstration site to test Mobilizon." msgstr "Jde o demonstrační web pro testování Mobilizon." #, elixir-format -#: lib/service/metadata/actor.ex:91 lib/service/metadata/actor.ex:99 -#: lib/service/metadata/instance.ex:56 lib/service/metadata/instance.ex:62 +#: lib/service/metadata/actor.ex:91 +#: lib/service/metadata/actor.ex:99 +#: lib/service/metadata/instance.ex:56 +#: lib/service/metadata/instance.ex:62 msgid "%{name}'s feed" msgstr "Kanál %{name}" @@ -1730,7 +1738,8 @@ msgstr "Vaše účast na %{event} na %{instance} byla zrušena!" #. File name template for exported list of participants. Should NOT contain spaces. Make sure the output is going to be something standardized that is acceptable as a file name on most systems. #, elixir-format #: lib/service/export/participants/csv.ex:81 -#: lib/service/export/participants/ods.ex:86 lib/service/export/participants/pdf.ex:96 +#: lib/service/export/participants/ods.ex:86 +#: lib/service/export/participants/pdf.ex:96 msgid "%{event}_participants" msgstr "%{event}_participants" @@ -1751,6 +1760,8 @@ msgstr "Status účastníka" #, elixir-format #: lib/service/export/participants/common.ex:52 +#: lib/web/templates/email/admin/_role.html.heex:3 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Administrator" msgstr "Administrátor" @@ -1761,6 +1772,8 @@ msgstr "Tvůrce" #, elixir-format #: lib/service/export/participants/common.ex:49 +#: lib/web/templates/email/admin/_role.html.heex:5 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Moderator" msgstr "Moderátor" @@ -1811,8 +1824,10 @@ msgstr "Anonymní účastník" #, elixir-format #: lib/web/templates/email/date/event_tz_date.html.heex:6 -#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 lib/web/templates/email/date/event_tz_date_range.html.heex:12 -#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:12 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 msgid "🌐 %{timezone} %{offset}" msgstr "🌐 %{timezone} %{offset}" @@ -2011,3 +2026,141 @@ msgstr[1] "" msgstr[2] "" "Máte %{number_participation_requests} žádostí o účast ke zpracování pro " "následující událost:" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:13 +#: lib/web/templates/email/admin_user_role_changed.text.eex:1 +msgid "An administrator changed your role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:120 +msgid "An administrator confirmed your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:1 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:1 +msgid "An administrator manually changed the email attached to your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:47 +#: lib/web/email/admin.ex:72 +msgid "An administrator manually changed the email attached to your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:13 +#: lib/web/templates/email/admin_user_confirmation.text.eex:1 +msgid "An administrator manually confirmed your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:98 +msgid "An administrator updated your role on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/email_changed_new.text.eex:3 +msgid "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." +msgstr "" +"Ahoj! Zdá se, že jste chtěli změnit e-mailovou adresu spojenou s vaším účtem " +"na <b>%{instance}</b>. Pokud si to přesto přejete, klikněte na tlačítko níže " +"a změnu potvrďte. Poté se budete moci přihlásit do %{instance} s touto novou " +"e-mailovou adresou." + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:3 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually changed your account email from %{old_email} (this one) to %{new_email}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> (this one) to <b>%{new_email}</b>." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> to <b>%{new_email}</b> (this one)." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:71 +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:45 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:45 +#: lib/web/templates/email/admin_user_role_changed.html.heex:67 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods %{start_link}on the instance's about page%{end_link}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:7 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:4 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:4 +#: lib/web/templates/email/admin_user_role_changed.text.eex:8 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods on the instance's about page: %{about_page}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:58 +msgid "Login on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:55 +msgid "New role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:6 +msgid "New role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:47 +msgid "Old role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:5 +msgid "Old role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin/_role.html.heex:7 +#: lib/web/templates/email/admin/_role.text.eex:1 +msgid "User" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:45 +msgid "You may now login using your credentials on the service." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:5 +msgid "You may now login using your credentials on the service:" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just changed your account role." +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just changed your account role." +msgstr "" diff --git a/priv/gettext/cs/LC_MESSAGES/errors.po b/priv/gettext/cs/LC_MESSAGES/errors.po index 057b11443..299f56366 100644 --- a/priv/gettext/cs/LC_MESSAGES/errors.po +++ b/priv/gettext/cs/LC_MESSAGES/errors.po @@ -121,14 +121,19 @@ msgid "Error while saving user settings" msgstr "Chyba při ukládání uživatelských nastavení" #, elixir-format -#: lib/graphql/error.ex:99 lib/graphql/resolvers/group.ex:249 -#: lib/graphql/resolvers/group.ex:281 lib/graphql/resolvers/group.ex:318 lib/graphql/resolvers/group.ex:349 -#: lib/graphql/resolvers/group.ex:398 lib/graphql/resolvers/member.ex:81 +#: lib/graphql/error.ex:99 +#: lib/graphql/resolvers/group.ex:249 +#: lib/graphql/resolvers/group.ex:281 +#: lib/graphql/resolvers/group.ex:318 +#: lib/graphql/resolvers/group.ex:349 +#: lib/graphql/resolvers/group.ex:398 +#: lib/graphql/resolvers/member.ex:81 msgid "Group not found" msgstr "Skupina nebyla nalezena" #, elixir-format -#: lib/graphql/resolvers/group.ex:78 lib/graphql/resolvers/group.ex:82 +#: lib/graphql/resolvers/group.ex:78 +#: lib/graphql/resolvers/group.ex:82 msgid "Group with ID %{id} not found" msgstr "Skupina s ID %{id} nebyla nalezena" @@ -155,15 +160,21 @@ msgstr "" "e-mailu" #, elixir-format -#: lib/graphql/resolvers/person.ex:314 lib/graphql/resolvers/user.ex:298 +#: lib/graphql/resolvers/person.ex:314 +#: lib/graphql/resolvers/user.ex:298 msgid "No user with this email was found" msgstr "Nebyl nalezen žádný uživatel s tímto e-mailem" #, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:32 lib/graphql/resolvers/participant.ex:210 lib/graphql/resolvers/person.ex:236 -#: lib/graphql/resolvers/person.ex:353 lib/graphql/resolvers/person.ex:380 lib/graphql/resolvers/person.ex:397 -#: lib/graphql/resolvers/person.ex:425 lib/graphql/resolvers/person.ex:440 +#: lib/graphql/resolvers/participant.ex:32 +#: lib/graphql/resolvers/participant.ex:210 +#: lib/graphql/resolvers/person.ex:236 +#: lib/graphql/resolvers/person.ex:353 +#: lib/graphql/resolvers/person.ex:380 +#: lib/graphql/resolvers/person.ex:397 +#: lib/graphql/resolvers/person.ex:425 +#: lib/graphql/resolvers/person.ex:440 msgid "Profile is not owned by authenticated user" msgstr "Profil není vlastněn ověřeným uživatelem" @@ -178,11 +189,13 @@ msgid "The current password is invalid" msgstr "Aktuální heslo je neplatné" #, elixir-format +#: lib/graphql/resolvers/admin.ex:341 #: lib/graphql/resolvers/user.ex:472 msgid "The new email doesn't seem to be valid" msgstr "Nový e-mail se nezdá být platný" #, elixir-format +#: lib/graphql/resolvers/admin.ex:344 #: lib/graphql/resolvers/user.ex:475 msgid "The new email must be different" msgstr "Nový e-mail musí být jiný" @@ -193,7 +206,8 @@ msgid "The new password must be different" msgstr "Nové heslo se musí lišit" #, elixir-format -#: lib/graphql/resolvers/user.ex:479 lib/graphql/resolvers/user.ex:541 +#: lib/graphql/resolvers/user.ex:479 +#: lib/graphql/resolvers/user.ex:541 #: lib/graphql/resolvers/user.ex:544 msgid "The password provided is invalid" msgstr "Zadané heslo je neplatné" @@ -216,7 +230,8 @@ msgid "This user has been disabled" msgstr "Tento uživatel byl deaktivován" #, elixir-format -#: lib/graphql/resolvers/user.ex:252 lib/graphql/resolvers/user.ex:257 +#: lib/graphql/resolvers/user.ex:252 +#: lib/graphql/resolvers/user.ex:257 msgid "Unable to validate user" msgstr "Nelze ověřit uživatele" @@ -291,7 +306,8 @@ msgid "You need to have an existing token to get a refresh token" msgstr "Chcete-li získat token pro obnovení, musíte mít existující token" #, elixir-format -#: lib/graphql/resolvers/user.ex:276 lib/graphql/resolvers/user.ex:301 +#: lib/graphql/resolvers/user.ex:276 +#: lib/graphql/resolvers/user.ex:301 msgid "You requested again a confirmation email too soon" msgstr "Znovu jste si vyžádali potvrzovací e-mail příliš brzy" @@ -311,7 +327,8 @@ msgid "No profile found with this ID" msgstr "Nebyl nalezen žádný profil s tímto ID" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:97 +#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:97 msgid "No remote profile found with this ID" msgstr "Nebyl nalezen žádný vzdálený profil s tímto ID" @@ -362,17 +379,19 @@ msgid "Comment is already deleted" msgstr "Komentář je již smazán" #, elixir-format -#: lib/graphql/error.ex:101 lib/graphql/resolvers/discussion.ex:69 +#: lib/graphql/error.ex:101 +#: lib/graphql/resolvers/discussion.ex:69 msgid "Discussion not found" msgstr "Diskuse nebyla nalezena" #, elixir-format -#: lib/graphql/resolvers/report.ex:63 lib/graphql/resolvers/report.ex:82 +#: lib/graphql/resolvers/report.ex:71 +#: lib/graphql/resolvers/report.ex:90 msgid "Error while saving report" msgstr "Chyba při ukládání zprávy" #, elixir-format -#: lib/graphql/resolvers/report.ex:102 +#: lib/graphql/resolvers/report.ex:110 msgid "Error while updating report" msgstr "Chyba při aktualizaci hlášení" @@ -382,14 +401,16 @@ msgid "Event id not found" msgstr "Id události nebylo nalezeno" #, elixir-format -#: lib/graphql/error.ex:98 lib/graphql/resolvers/event.ex:360 +#: lib/graphql/error.ex:98 +#: lib/graphql/resolvers/event.ex:360 #: lib/graphql/resolvers/event.ex:412 msgid "Event not found" msgstr "Událost nebyla nalezena" #, elixir-format #: lib/graphql/resolvers/participant.ex:87 -#: lib/graphql/resolvers/participant.ex:128 lib/graphql/resolvers/participant.ex:155 +#: lib/graphql/resolvers/participant.ex:128 +#: lib/graphql/resolvers/participant.ex:155 #: lib/graphql/resolvers/participant.ex:336 msgid "Event with this ID %{id} doesn't exist" msgstr "Událost s tímto ID %{id} neexistuje" @@ -405,8 +426,11 @@ msgid "No discussion with ID %{id}" msgstr "Žádná diskuse s ID %{id}" #, elixir-format -#: lib/graphql/resolvers/todos.ex:80 lib/graphql/resolvers/todos.ex:107 -#: lib/graphql/resolvers/todos.ex:179 lib/graphql/resolvers/todos.ex:208 lib/graphql/resolvers/todos.ex:237 +#: lib/graphql/resolvers/todos.ex:80 +#: lib/graphql/resolvers/todos.ex:107 +#: lib/graphql/resolvers/todos.ex:179 +#: lib/graphql/resolvers/todos.ex:208 +#: lib/graphql/resolvers/todos.ex:237 msgid "No profile found for user" msgstr "Pro uživatele nebyl nalezen žádný profil" @@ -422,7 +446,8 @@ msgstr "Účastník již má roli %{role}" #, elixir-format #: lib/graphql/resolvers/participant.ex:187 -#: lib/graphql/resolvers/participant.ex:220 lib/graphql/resolvers/participant.ex:263 +#: lib/graphql/resolvers/participant.ex:220 +#: lib/graphql/resolvers/participant.ex:263 msgid "Participant not found" msgstr "Účastník nebyl nalezen" @@ -437,12 +462,14 @@ msgid "Person with username %{username} not found" msgstr "Osoba s uživatelským jménem %{username} nenalezena" #, elixir-format -#: lib/graphql/resolvers/post.ex:169 lib/graphql/resolvers/post.ex:203 +#: lib/graphql/resolvers/post.ex:169 +#: lib/graphql/resolvers/post.ex:203 msgid "Post ID is not a valid ID" msgstr "ID příspěvku není platné ID" #, elixir-format -#: lib/graphql/resolvers/post.ex:172 lib/graphql/resolvers/post.ex:206 +#: lib/graphql/resolvers/post.ex:172 +#: lib/graphql/resolvers/post.ex:206 msgid "Post doesn't exist" msgstr "Příspěvek neexistuje" @@ -452,31 +479,42 @@ msgid "Profile invited doesn't exist" msgstr "Pozvaný profil neexistuje" #, elixir-format -#: lib/graphql/resolvers/member.ex:93 lib/graphql/resolvers/member.ex:97 +#: lib/graphql/resolvers/member.ex:93 +#: lib/graphql/resolvers/member.ex:97 msgid "Profile is already a member of this group" msgstr "Profil je již členem této skupiny" #, elixir-format -#: lib/graphql/resolvers/post.ex:133 lib/graphql/resolvers/post.ex:175 -#: lib/graphql/resolvers/post.ex:209 lib/graphql/resolvers/resource.ex:90 lib/graphql/resolvers/resource.ex:132 -#: lib/graphql/resolvers/resource.ex:165 lib/graphql/resolvers/resource.ex:199 lib/graphql/resolvers/todos.ex:58 -#: lib/graphql/resolvers/todos.ex:83 lib/graphql/resolvers/todos.ex:110 lib/graphql/resolvers/todos.ex:182 -#: lib/graphql/resolvers/todos.ex:214 lib/graphql/resolvers/todos.ex:246 +#: lib/graphql/resolvers/post.ex:133 +#: lib/graphql/resolvers/post.ex:175 +#: lib/graphql/resolvers/post.ex:209 +#: lib/graphql/resolvers/resource.ex:90 +#: lib/graphql/resolvers/resource.ex:132 +#: lib/graphql/resolvers/resource.ex:165 +#: lib/graphql/resolvers/resource.ex:199 +#: lib/graphql/resolvers/todos.ex:58 +#: lib/graphql/resolvers/todos.ex:83 +#: lib/graphql/resolvers/todos.ex:110 +#: lib/graphql/resolvers/todos.ex:182 +#: lib/graphql/resolvers/todos.ex:214 +#: lib/graphql/resolvers/todos.ex:246 msgid "Profile is not member of group" msgstr "Profil není členem skupiny" #, elixir-format -#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/person.ex:233 +#: lib/graphql/resolvers/actor.ex:67 +#: lib/graphql/resolvers/person.ex:233 msgid "Profile not found" msgstr "Profil nebyl nalezen" #, elixir-format -#: lib/graphql/resolvers/report.ex:40 +#: lib/graphql/resolvers/report.ex:48 msgid "Report not found" msgstr "Zpráva nebyla nalezena" #, elixir-format -#: lib/graphql/resolvers/resource.ex:169 lib/graphql/resolvers/resource.ex:196 +#: lib/graphql/resolvers/resource.ex:169 +#: lib/graphql/resolvers/resource.ex:196 msgid "Resource doesn't exist" msgstr "Zdroj neexistuje" @@ -491,12 +529,14 @@ msgid "This token is invalid" msgstr "Tento token je neplatný" #, elixir-format -#: lib/graphql/resolvers/todos.ex:176 lib/graphql/resolvers/todos.ex:243 +#: lib/graphql/resolvers/todos.ex:176 +#: lib/graphql/resolvers/todos.ex:243 msgid "Todo doesn't exist" msgstr "Seznam úkolů neexistuje" #, elixir-format -#: lib/graphql/resolvers/todos.ex:77 lib/graphql/resolvers/todos.ex:211 +#: lib/graphql/resolvers/todos.ex:77 +#: lib/graphql/resolvers/todos.ex:211 #: lib/graphql/resolvers/todos.ex:240 msgid "Todo list doesn't exist" msgstr "Seznam úkolů neexistuje" @@ -507,12 +547,13 @@ msgid "Token does not exist" msgstr "Token neexistuje" #, elixir-format -#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70 +#: lib/graphql/resolvers/feed_token.ex:67 +#: lib/graphql/resolvers/feed_token.ex:70 msgid "Token is not a valid UUID" msgstr "Token není platný UUID" #, elixir-format -#: lib/graphql/error.ex:96 lib/graphql/resolvers/person.ex:458 +#: lib/graphql/error.ex:96 msgid "User not found" msgstr "Uživatel nebyl nalezen" @@ -532,7 +573,8 @@ msgid "You are not a member of this group" msgstr "Nejste členem této skupiny" #, elixir-format -#: lib/graphql/resolvers/member.ex:157 lib/graphql/resolvers/member.ex:173 +#: lib/graphql/resolvers/member.ex:157 +#: lib/graphql/resolvers/member.ex:173 #: lib/graphql/resolvers/member.ex:188 msgid "You are not a moderator or admin for this group" msgstr "Nejste moderátorem ani správcem této skupiny" @@ -597,40 +639,40 @@ msgid "You don't have permission to delete this token" msgstr "Nemáte oprávnění tento token odstranit" #, elixir-format -#: lib/graphql/resolvers/admin.ex:54 +#: lib/graphql/resolvers/admin.ex:56 msgid "You need to be logged-in and a moderator to list action logs" msgstr "" "Abyste mohli vypsat protokoly akcí, musíte být přihlášeni a být moderátorem" #, elixir-format -#: lib/graphql/resolvers/report.ex:28 +#: lib/graphql/resolvers/report.ex:36 msgid "You need to be logged-in and a moderator to list reports" msgstr "Abyste mohli vypisovat hlášení, musíte být přihlášeni a být moderátorem" #, elixir-format -#: lib/graphql/resolvers/report.ex:107 +#: lib/graphql/resolvers/report.ex:115 msgid "You need to be logged-in and a moderator to update a report" msgstr "Chcete-li aktualizovat zprávu, musíte být přihlášeni a být moderátorem" #, elixir-format -#: lib/graphql/resolvers/report.ex:45 +#: lib/graphql/resolvers/report.ex:53 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" #, elixir-format -#: lib/graphql/resolvers/admin.ex:255 +#: lib/graphql/resolvers/admin.ex:257 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" #, elixir-format -#: lib/graphql/resolvers/admin.ex:239 +#: lib/graphql/resolvers/admin.ex:241 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" #, elixir-format -#: lib/graphql/resolvers/admin.ex:281 +#: lib/graphql/resolvers/admin.ex:283 msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" "Chcete-li uložit nastavení správce, musíte být přihlášeni a být správcem" @@ -656,7 +698,7 @@ msgid "You need to be logged-in to create posts" msgstr "Pro vytváření příspěvků musíte být přihlášeni" #, elixir-format -#: lib/graphql/resolvers/report.ex:79 +#: lib/graphql/resolvers/report.ex:87 msgid "You need to be logged-in to create reports" msgstr "Chcete-li vytvářet hlášení, musíte být přihlášeni" @@ -751,7 +793,8 @@ msgid "Reset your password to login" msgstr "Obnovení hesla pro přihlášení" #, elixir-format -#: lib/graphql/error.ex:95 lib/graphql/error.ex:100 +#: lib/graphql/error.ex:95 +#: lib/graphql/error.ex:100 msgid "Resource not found" msgstr "Zdroj nebyl nalezen" @@ -841,8 +884,11 @@ msgid "Profile ID provided is not the anonymous profile one" msgstr "Poskytnuté ID profilu není anonymní ID profilu" #, elixir-format -#: lib/graphql/resolvers/group.ex:161 lib/graphql/resolvers/group.ex:203 -#: lib/graphql/resolvers/person.ex:148 lib/graphql/resolvers/person.ex:182 lib/graphql/resolvers/person.ex:304 +#: lib/graphql/resolvers/group.ex:161 +#: lib/graphql/resolvers/group.ex:203 +#: lib/graphql/resolvers/person.ex:148 +#: lib/graphql/resolvers/person.ex:182 +#: lib/graphql/resolvers/person.ex:304 msgid "The provided picture is too heavy" msgstr "Poskytnutý obrázek je příliš velký" @@ -867,7 +913,8 @@ msgid "Unable to fetch resource details from this URL." msgstr "Z této adresy URL nelze načíst podrobnosti o prostředku." #, elixir-format -#: lib/graphql/resolvers/event.ex:164 lib/graphql/resolvers/participant.ex:253 +#: lib/graphql/resolvers/event.ex:164 +#: lib/graphql/resolvers/participant.ex:253 #: lib/graphql/resolvers/participant.ex:328 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "Za předpokladu, že profil nemá oprávnění moderátora této události" @@ -921,6 +968,7 @@ msgid "Failed to update the group" msgstr "Nepodařilo se aktualizovat skupinu" #, elixir-format +#: lib/graphql/resolvers/admin.ex:338 #: lib/graphql/resolvers/user.ex:469 msgid "Failed to update user email" msgstr "Nepodařilo se aktualizovat e-mail uživatele" @@ -1049,3 +1097,24 @@ msgstr "Chcete-li odebrat člena, musíte být přihlášeni" #: lib/graphql/resolvers/user.ex:157 msgid "Your email seems to be using an invalid format" msgstr "Váš e-mail zřejmě používá nesprávný formát" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:387 +msgid "Can't confirm an already confirmed user" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:391 +msgid "Deconfirming users is not supported" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:363 +msgid "The new role must be different" +msgstr "Nový e-mail musí být jiný" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:314 +msgid "You need to be logged-in and an administrator to edit an user's details" +msgstr "" +"Chcete-li uložit nastavení správce, musíte být přihlášeni a být správcem" diff --git a/priv/gettext/de/LC_MESSAGES/activity.po b/priv/gettext/de/LC_MESSAGES/activity.po index 310b1f27e..db240a06d 100644 --- a/priv/gettext/de/LC_MESSAGES/activity.po +++ b/priv/gettext/de/LC_MESSAGES/activity.po @@ -160,19 +160,22 @@ msgstr "%{profile} hat das Mitglied %{member} aktualisiert." #, 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.text.eex:1 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:1 msgid "The event %{event} was created by %{profile}." msgstr "Die Veranstaltung %{event} wurde von %{profile} erstellt." #, 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.text.eex:13 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:34 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:13 msgid "The event %{event} was deleted by %{profile}." msgstr "Die Veranstaltung %{event} wurde von %{profile} gelöscht." #, 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.text.eex:7 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:19 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:7 msgid "The event %{event} was updated by %{profile}." msgstr "Die Veranstaltung %{event} wurde von %{profile} aktualisiert." @@ -202,13 +205,15 @@ msgstr "%{member} ist der Gruppe beigetreten." #, 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.text.eex:25 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:58 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:25 msgid "%{profile} posted a comment on the event %{event}." msgstr "%{profile} hat die Veranstaltung %{event} kommentiert." #, 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.text.eex:19 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:43 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:19 msgid "%{profile} replied to a comment on the event %{event}." msgstr "" "%{profile} hat auf ein Kommentar in der Veranstaltung %{event} geantwortet." @@ -228,7 +233,8 @@ 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.text.eex:6 +#: lib/web/templates/email/email_direct_activity.html.heex:46 +#: 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!" msgid_plural "There has been some activity!" @@ -242,14 +248,17 @@ msgstr "" #, 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.text.eex:7 -#: lib/web/templates/email/email_anonymous_activity.html.heex:41 lib/web/templates/email/email_anonymous_activity.text.eex:5 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:19 +#: 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.text.eex:5 msgid "%{profile} has posted an announcement under event %{event}." msgstr "" #, 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.text.eex:1 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 msgid "%{profile} mentionned you in a comment under event %{event}." msgstr "" @@ -265,7 +274,8 @@ msgid "Here's your weekly activity recap" msgstr "" #, elixir-format -#: lib/web/email/activity.ex:119 lib/web/email/activity.ex:140 +#: lib/web/email/activity.ex:119 +#: lib/web/email/activity.ex:140 msgid "Activity notification for %{instance}" msgstr "" @@ -287,13 +297,15 @@ msgstr "" #, 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.text.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:51 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:19 msgid "%{profile} has posted a new comment under your event %{event}." msgstr "" #, 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.text.eex:13 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:36 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:13 msgid "%{profile} has posted a new reply under your event %{event}." msgstr "" diff --git a/priv/gettext/de/LC_MESSAGES/default.po b/priv/gettext/de/LC_MESSAGES/default.po index a3b660810..f9ad72faa 100644 --- a/priv/gettext/de/LC_MESSAGES/default.po +++ b/priv/gettext/de/LC_MESSAGES/default.po @@ -958,9 +958,12 @@ msgstr "Bitte verwenden Sie es nicht für reale Zwecke." #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:63 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:133 -#: lib/web/templates/email/event_updated.text.eex:14 lib/web/templates/email/notification_each_week.html.heex:60 -#: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:60 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 +#: lib/web/templates/email/event_updated.html.heex:133 +#: lib/web/templates/email/event_updated.text.eex:14 +#: lib/web/templates/email/notification_each_week.html.heex:60 +#: lib/web/templates/email/notification_each_week.text.eex:11 +#: lib/web/templates/email/on_day_notification.html.heex:60 #: lib/web/templates/email/on_day_notification.text.eex:11 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." @@ -1026,7 +1029,6 @@ msgstr "" #, elixir-format #: lib/web/templates/email/email_changed_new.html.heex:38 -#: lib/web/templates/email/email_changed_new.text.eex:3 msgid "Hi there! It seems like you wanted to change the email address linked to your account on <b>%{instance}</b>. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." msgstr "" "Hallo zusammen! Es scheint, dass Sie die mit Ihrem Konto verknüpfte E-Mail-" @@ -1062,7 +1064,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:70 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.heex:45 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 +#: lib/web/templates/email/registration_confirmation.html.heex:45 msgid "If you didn't trigger this email, you may safely ignore it." msgstr "Wenn Du dies nicht angefragt hast, ignoriere diese E-Mail." @@ -1183,7 +1186,8 @@ msgstr "Meldung ansehen:" #, elixir-format #: lib/web/templates/email/email_anonymous_activity.html.heex:67 -#: lib/web/templates/email/event_participation_approved.html.heex:58 lib/web/templates/email/event_participation_confirmed.html.heex:58 +#: lib/web/templates/email/event_participation_approved.html.heex:58 +#: lib/web/templates/email/event_participation_confirmed.html.heex:58 msgid "Visit event page" msgstr "Besuche die Event Seite" @@ -1205,7 +1209,8 @@ msgstr "Was gibt's heute?" #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:70 -#: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.heex:70 +#: lib/web/templates/email/event_participation_approved.text.eex:11 +#: lib/web/templates/email/event_participation_confirmed.html.heex:70 #: lib/web/templates/email/event_participation_confirmed.text.eex:6 msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." msgstr "" @@ -1237,7 +1242,8 @@ msgstr "Du hast angefragt, an der Veranstaltung %{title} teilzunehmen." #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:13 -#: lib/web/templates/email/event_participation_confirmed.html.heex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 +#: lib/web/templates/email/event_participation_confirmed.html.heex:13 +#: lib/web/templates/email/event_participation_confirmed.text.eex:1 msgid "You're going!" msgstr "Sie sind dabei!" @@ -1682,8 +1688,10 @@ msgid "This is a demonstration site to test Mobilizon." msgstr "Dies ist eine Demo-Seite, um die Beta-Version von Mobilizon zu testen." #, elixir-format -#: lib/service/metadata/actor.ex:91 lib/service/metadata/actor.ex:99 -#: lib/service/metadata/instance.ex:56 lib/service/metadata/instance.ex:62 +#: lib/service/metadata/actor.ex:91 +#: lib/service/metadata/actor.ex:99 +#: lib/service/metadata/instance.ex:56 +#: lib/service/metadata/instance.ex:62 msgid "%{name}'s feed" msgstr "Feed von %{name}" @@ -1776,7 +1784,8 @@ msgstr "Deine Teilnahme an der Veranstaltung %{title}wurde akzeptiert" #. File name template for exported list of participants. Should NOT contain spaces. Make sure the output is going to be something standardized that is acceptable as a file name on most systems. #, elixir-format #: lib/service/export/participants/csv.ex:81 -#: lib/service/export/participants/ods.ex:86 lib/service/export/participants/pdf.ex:96 +#: lib/service/export/participants/ods.ex:86 +#: lib/service/export/participants/pdf.ex:96 msgid "%{event}_participants" msgstr "" @@ -1797,6 +1806,8 @@ msgstr "" #, elixir-format #: lib/service/export/participants/common.ex:52 +#: lib/web/templates/email/admin/_role.html.heex:3 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Administrator" msgstr "" @@ -1807,6 +1818,8 @@ msgstr "" #, elixir-format #: lib/service/export/participants/common.ex:49 +#: lib/web/templates/email/admin/_role.html.heex:5 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Moderator" msgstr "" @@ -1857,8 +1870,10 @@ msgstr "" #, elixir-format #: lib/web/templates/email/date/event_tz_date.html.heex:6 -#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 lib/web/templates/email/date/event_tz_date_range.html.heex:12 -#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:12 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 msgid "🌐 %{timezone} %{offset}" msgstr "" @@ -2046,3 +2061,142 @@ msgid "You have one pending attendance request to process for the following even msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" msgstr[0] "Sie haben eine ausstehende Anwesenheitsanforderung zu bearbeiten:" msgstr[1] "Sie haben %{Anzahl_Teilnahmeanträge} Teilnahmeanträge zu bearbeiten:" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:13 +#: lib/web/templates/email/admin_user_role_changed.text.eex:1 +msgid "An administrator changed your role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:120 +msgid "An administrator confirmed your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:1 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:1 +msgid "An administrator manually changed the email attached to your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:47 +#: lib/web/email/admin.ex:72 +msgid "An administrator manually changed the email attached to your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:13 +#: lib/web/templates/email/admin_user_confirmation.text.eex:1 +msgid "An administrator manually confirmed your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:98 +msgid "An administrator updated your role on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/email_changed_new.text.eex:3 +msgid "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." +msgstr "" +"Hallo zusammen! Es scheint, dass Sie die mit Ihrem Konto verknüpfte E-Mail-" +"Adresse auf <b>%{instance}</b> ändern wollten. Wenn Sie dies immer noch tun " +"möchten, klicken Sie bitte auf die Schaltfläche unten, um die Änderung zu " +"bestätigen. Sie können sich dann mit dieser neuen E-Mail-Adresse bei " +"%{instance} anmelden." + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:3 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually changed your account email from %{old_email} (this one) to %{new_email}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> (this one) to <b>%{new_email}</b>." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> to <b>%{new_email}</b> (this one)." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:71 +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:45 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:45 +#: lib/web/templates/email/admin_user_role_changed.html.heex:67 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods %{start_link}on the instance's about page%{end_link}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:7 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:4 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:4 +#: lib/web/templates/email/admin_user_role_changed.text.eex:8 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods on the instance's about page: %{about_page}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:58 +msgid "Login on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:55 +msgid "New role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:6 +msgid "New role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:47 +msgid "Old role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:5 +msgid "Old role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin/_role.html.heex:7 +#: lib/web/templates/email/admin/_role.text.eex:1 +msgid "User" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:45 +msgid "You may now login using your credentials on the service." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:5 +msgid "You may now login using your credentials on the service:" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just changed your account role." +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just changed your account role." +msgstr "" diff --git a/priv/gettext/de/LC_MESSAGES/errors.po b/priv/gettext/de/LC_MESSAGES/errors.po index 24888f702..e5f6787f7 100644 --- a/priv/gettext/de/LC_MESSAGES/errors.po +++ b/priv/gettext/de/LC_MESSAGES/errors.po @@ -115,14 +115,19 @@ msgid "Error while saving user settings" msgstr "Fehler beim Speichern von Benutzereinstellungen" #, elixir-format -#: lib/graphql/error.ex:99 lib/graphql/resolvers/group.ex:249 -#: lib/graphql/resolvers/group.ex:281 lib/graphql/resolvers/group.ex:318 lib/graphql/resolvers/group.ex:349 -#: lib/graphql/resolvers/group.ex:398 lib/graphql/resolvers/member.ex:81 +#: lib/graphql/error.ex:99 +#: lib/graphql/resolvers/group.ex:249 +#: lib/graphql/resolvers/group.ex:281 +#: lib/graphql/resolvers/group.ex:318 +#: lib/graphql/resolvers/group.ex:349 +#: lib/graphql/resolvers/group.ex:398 +#: lib/graphql/resolvers/member.ex:81 msgid "Group not found" msgstr "Gruppe nicht gefunden" #, elixir-format -#: lib/graphql/resolvers/group.ex:78 lib/graphql/resolvers/group.ex:82 +#: lib/graphql/resolvers/group.ex:78 +#: lib/graphql/resolvers/group.ex:82 msgid "Group with ID %{id} not found" msgstr "Gruppe mit der ID %{id} nicht gefunden" @@ -150,15 +155,21 @@ msgstr "" "Es wurde kein Benutzer gefunden, der mit dieser E-Mail validiert werden kann" #, elixir-format -#: lib/graphql/resolvers/person.ex:314 lib/graphql/resolvers/user.ex:298 +#: lib/graphql/resolvers/person.ex:314 +#: lib/graphql/resolvers/user.ex:298 msgid "No user with this email was found" msgstr "Es wurde kein Benutzer mit dieser E-Mail gefunden" #, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:32 lib/graphql/resolvers/participant.ex:210 lib/graphql/resolvers/person.ex:236 -#: lib/graphql/resolvers/person.ex:353 lib/graphql/resolvers/person.ex:380 lib/graphql/resolvers/person.ex:397 -#: lib/graphql/resolvers/person.ex:425 lib/graphql/resolvers/person.ex:440 +#: lib/graphql/resolvers/participant.ex:32 +#: lib/graphql/resolvers/participant.ex:210 +#: lib/graphql/resolvers/person.ex:236 +#: lib/graphql/resolvers/person.ex:353 +#: lib/graphql/resolvers/person.ex:380 +#: lib/graphql/resolvers/person.ex:397 +#: lib/graphql/resolvers/person.ex:425 +#: lib/graphql/resolvers/person.ex:440 msgid "Profile is not owned by authenticated user" msgstr "Profil ist nicht im Besitz des authentifizierten Benutzers" @@ -173,11 +184,13 @@ msgid "The current password is invalid" msgstr "Das aktuelle Passwort ist ungültig" #, elixir-format +#: lib/graphql/resolvers/admin.ex:341 #: lib/graphql/resolvers/user.ex:472 msgid "The new email doesn't seem to be valid" msgstr "Die neue E-Mail scheint nicht gültig zu sein" #, elixir-format +#: lib/graphql/resolvers/admin.ex:344 #: lib/graphql/resolvers/user.ex:475 msgid "The new email must be different" msgstr "Die neue E-Mail muss anders lauten" @@ -188,7 +201,8 @@ msgid "The new password must be different" msgstr "Das neue Passwort muss anders lauten" #, elixir-format -#: lib/graphql/resolvers/user.ex:479 lib/graphql/resolvers/user.ex:541 +#: lib/graphql/resolvers/user.ex:479 +#: lib/graphql/resolvers/user.ex:541 #: lib/graphql/resolvers/user.ex:544 msgid "The password provided is invalid" msgstr "Das angegebene Passwort ist ungültig" @@ -211,7 +225,8 @@ msgid "This user has been disabled" msgstr "Dieser Benutzer wurde deaktiviert" #, elixir-format -#: lib/graphql/resolvers/user.ex:252 lib/graphql/resolvers/user.ex:257 +#: lib/graphql/resolvers/user.ex:252 +#: lib/graphql/resolvers/user.ex:257 msgid "Unable to validate user" msgstr "Benutzer kann nicht validiert werden" @@ -289,7 +304,8 @@ msgstr "" "Sie müssen ein bestehendes Token haben, um ein Refresh-Token zu erhalten" #, elixir-format -#: lib/graphql/resolvers/user.ex:276 lib/graphql/resolvers/user.ex:301 +#: lib/graphql/resolvers/user.ex:276 +#: lib/graphql/resolvers/user.ex:301 msgid "You requested again a confirmation email too soon" msgstr "Sie haben erneut eine Bestätigungs-E-Mail zu früh angefordert" @@ -309,7 +325,8 @@ msgid "No profile found with this ID" msgstr "Kein Profil mit dieser ID gefunden" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:97 +#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:97 msgid "No remote profile found with this ID" msgstr "Kein entferntes Profil mit dieser ID gefunden" @@ -360,17 +377,19 @@ msgid "Comment is already deleted" msgstr "Kommentar ist bereits gelöscht" #, elixir-format -#: lib/graphql/error.ex:101 lib/graphql/resolvers/discussion.ex:69 +#: lib/graphql/error.ex:101 +#: lib/graphql/resolvers/discussion.ex:69 msgid "Discussion not found" msgstr "Diskussion nicht gefunden" #, elixir-format -#: lib/graphql/resolvers/report.ex:63 lib/graphql/resolvers/report.ex:82 +#: lib/graphql/resolvers/report.ex:71 +#: lib/graphql/resolvers/report.ex:90 msgid "Error while saving report" msgstr "Fehler beim Speichern des Reports" #, elixir-format -#: lib/graphql/resolvers/report.ex:102 +#: lib/graphql/resolvers/report.ex:110 msgid "Error while updating report" msgstr "Fehler beim Aktualisieren des Reports" @@ -380,14 +399,16 @@ msgid "Event id not found" msgstr "Veranstaltungs-ID nicht gefunden" #, elixir-format -#: lib/graphql/error.ex:98 lib/graphql/resolvers/event.ex:360 +#: lib/graphql/error.ex:98 +#: lib/graphql/resolvers/event.ex:360 #: lib/graphql/resolvers/event.ex:412 msgid "Event not found" msgstr "Veranstaltung nicht gefunden" #, elixir-format #: lib/graphql/resolvers/participant.ex:87 -#: lib/graphql/resolvers/participant.ex:128 lib/graphql/resolvers/participant.ex:155 +#: lib/graphql/resolvers/participant.ex:128 +#: lib/graphql/resolvers/participant.ex:155 #: lib/graphql/resolvers/participant.ex:336 msgid "Event with this ID %{id} doesn't exist" msgstr "Veranstaltung mit dieser ID %{id} existiert nicht" @@ -403,8 +424,11 @@ msgid "No discussion with ID %{id}" msgstr "Keine Diskussion mit ID %{id}" #, elixir-format -#: lib/graphql/resolvers/todos.ex:80 lib/graphql/resolvers/todos.ex:107 -#: lib/graphql/resolvers/todos.ex:179 lib/graphql/resolvers/todos.ex:208 lib/graphql/resolvers/todos.ex:237 +#: lib/graphql/resolvers/todos.ex:80 +#: lib/graphql/resolvers/todos.ex:107 +#: lib/graphql/resolvers/todos.ex:179 +#: lib/graphql/resolvers/todos.ex:208 +#: lib/graphql/resolvers/todos.ex:237 msgid "No profile found for user" msgstr "Kein Profil für Benutzer gefunden" @@ -420,7 +444,8 @@ msgstr "Teilnehmer hat bereits Rolle %{role}" #, elixir-format #: lib/graphql/resolvers/participant.ex:187 -#: lib/graphql/resolvers/participant.ex:220 lib/graphql/resolvers/participant.ex:263 +#: lib/graphql/resolvers/participant.ex:220 +#: lib/graphql/resolvers/participant.ex:263 msgid "Participant not found" msgstr "Teilnehmer nicht gefunden" @@ -435,12 +460,14 @@ msgid "Person with username %{username} not found" msgstr "Person mit Benutzernamen %{username} nicht gefunden" #, elixir-format -#: lib/graphql/resolvers/post.ex:169 lib/graphql/resolvers/post.ex:203 +#: lib/graphql/resolvers/post.ex:169 +#: lib/graphql/resolvers/post.ex:203 msgid "Post ID is not a valid ID" msgstr "Post-ID ist keine gültige ID" #, elixir-format -#: lib/graphql/resolvers/post.ex:172 lib/graphql/resolvers/post.ex:206 +#: lib/graphql/resolvers/post.ex:172 +#: lib/graphql/resolvers/post.ex:206 msgid "Post doesn't exist" msgstr "Beitrag existiert nicht" @@ -450,33 +477,44 @@ msgid "Profile invited doesn't exist" msgstr "Eingeladenes Profil existiert nicht Eingeladenes Profil existiert nicht" #, elixir-format -#: lib/graphql/resolvers/member.ex:93 lib/graphql/resolvers/member.ex:97 +#: lib/graphql/resolvers/member.ex:93 +#: lib/graphql/resolvers/member.ex:97 msgid "Profile is already a member of this group" msgstr "" "Profil ist bereits Mitglied in dieser Gruppe Profil ist bereits Mitglied in " "dieser Gruppe" #, elixir-format -#: lib/graphql/resolvers/post.ex:133 lib/graphql/resolvers/post.ex:175 -#: lib/graphql/resolvers/post.ex:209 lib/graphql/resolvers/resource.ex:90 lib/graphql/resolvers/resource.ex:132 -#: lib/graphql/resolvers/resource.ex:165 lib/graphql/resolvers/resource.ex:199 lib/graphql/resolvers/todos.ex:58 -#: lib/graphql/resolvers/todos.ex:83 lib/graphql/resolvers/todos.ex:110 lib/graphql/resolvers/todos.ex:182 -#: lib/graphql/resolvers/todos.ex:214 lib/graphql/resolvers/todos.ex:246 +#: lib/graphql/resolvers/post.ex:133 +#: lib/graphql/resolvers/post.ex:175 +#: lib/graphql/resolvers/post.ex:209 +#: lib/graphql/resolvers/resource.ex:90 +#: lib/graphql/resolvers/resource.ex:132 +#: lib/graphql/resolvers/resource.ex:165 +#: lib/graphql/resolvers/resource.ex:199 +#: lib/graphql/resolvers/todos.ex:58 +#: lib/graphql/resolvers/todos.ex:83 +#: lib/graphql/resolvers/todos.ex:110 +#: lib/graphql/resolvers/todos.ex:182 +#: lib/graphql/resolvers/todos.ex:214 +#: lib/graphql/resolvers/todos.ex:246 msgid "Profile is not member of group" msgstr "Profil ist nicht Mitglied der Gruppe" #, elixir-format -#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/person.ex:233 +#: lib/graphql/resolvers/actor.ex:67 +#: lib/graphql/resolvers/person.ex:233 msgid "Profile not found" msgstr "Profil nicht gefunden" #, elixir-format -#: lib/graphql/resolvers/report.ex:40 +#: lib/graphql/resolvers/report.ex:48 msgid "Report not found" msgstr "Meldung nicht gefunden" #, elixir-format -#: lib/graphql/resolvers/resource.ex:169 lib/graphql/resolvers/resource.ex:196 +#: lib/graphql/resolvers/resource.ex:169 +#: lib/graphql/resolvers/resource.ex:196 msgid "Resource doesn't exist" msgstr "Ressource ist nicht vorhanden" @@ -491,12 +529,14 @@ msgid "This token is invalid" msgstr "Dieses Token ist ungültig" #, elixir-format -#: lib/graphql/resolvers/todos.ex:176 lib/graphql/resolvers/todos.ex:243 +#: lib/graphql/resolvers/todos.ex:176 +#: lib/graphql/resolvers/todos.ex:243 msgid "Todo doesn't exist" msgstr "Todo existiert nicht" #, elixir-format -#: lib/graphql/resolvers/todos.ex:77 lib/graphql/resolvers/todos.ex:211 +#: lib/graphql/resolvers/todos.ex:77 +#: lib/graphql/resolvers/todos.ex:211 #: lib/graphql/resolvers/todos.ex:240 msgid "Todo list doesn't exist" msgstr "ToDo-Liste existiert nicht" @@ -507,12 +547,13 @@ msgid "Token does not exist" msgstr "Token existiert nicht" #, elixir-format -#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70 +#: lib/graphql/resolvers/feed_token.ex:67 +#: lib/graphql/resolvers/feed_token.ex:70 msgid "Token is not a valid UUID" msgstr "Token ist keine gültige UUID" #, elixir-format -#: lib/graphql/error.ex:96 lib/graphql/resolvers/person.ex:458 +#: lib/graphql/error.ex:96 msgid "User not found" msgstr "User nicht gefunden" @@ -532,7 +573,8 @@ msgid "You are not a member of this group" msgstr "Sie sind nicht Mitglied in dieser Gruppe" #, elixir-format -#: lib/graphql/resolvers/member.ex:157 lib/graphql/resolvers/member.ex:173 +#: lib/graphql/resolvers/member.ex:157 +#: lib/graphql/resolvers/member.ex:173 #: lib/graphql/resolvers/member.ex:188 msgid "You are not a moderator or admin for this group" msgstr "Sie sind kein Moderator oder Admin für diese Gruppe" @@ -599,45 +641,45 @@ msgid "You don't have permission to delete this token" msgstr "Sie haben nicht die Berechtigung diesen Token zu löschen" #, elixir-format -#: lib/graphql/resolvers/admin.ex:54 +#: lib/graphql/resolvers/admin.ex:56 msgid "You need to be logged-in and a moderator to list action logs" msgstr "" "Sie müssen eingeloggt und ein Moderator sein, um Aktionsprotokolle " "aufzulisten" #, elixir-format -#: lib/graphql/resolvers/report.ex:28 +#: lib/graphql/resolvers/report.ex:36 msgid "You need to be logged-in and a moderator to list reports" msgstr "Sie müssen eingeloggt und ein Moderator sein, um Berichte aufzulisten" #, elixir-format -#: lib/graphql/resolvers/report.ex:107 +#: lib/graphql/resolvers/report.ex:115 msgid "You need to be logged-in and a moderator to update a report" msgstr "" "Sie müssen eingeloggt und ein Moderator sein, um einen Bericht zu " "aktualisieren" #, elixir-format -#: lib/graphql/resolvers/report.ex:45 +#: lib/graphql/resolvers/report.ex:53 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" #, elixir-format -#: lib/graphql/resolvers/admin.ex:255 +#: lib/graphql/resolvers/admin.ex:257 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" #, elixir-format -#: lib/graphql/resolvers/admin.ex:239 +#: lib/graphql/resolvers/admin.ex:241 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" #, elixir-format -#: lib/graphql/resolvers/admin.ex:281 +#: lib/graphql/resolvers/admin.ex:283 msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" "Sie müssen eingeloggt und ein Administrator sein, um Admin-Einstellungen zu " @@ -664,7 +706,7 @@ msgid "You need to be logged-in to create posts" msgstr "Sie müssen eingeloggt sein, um Beiträge zu erstellen" #, elixir-format -#: lib/graphql/resolvers/report.ex:79 +#: lib/graphql/resolvers/report.ex:87 msgid "You need to be logged-in to create reports" msgstr "Sie müssen eingeloggt sein, um Berichte zu erstellen" @@ -761,7 +803,8 @@ msgid "Reset your password to login" msgstr "Passwort zurücksetzen" #, elixir-format -#: lib/graphql/error.ex:95 lib/graphql/error.ex:100 +#: lib/graphql/error.ex:95 +#: lib/graphql/error.ex:100 msgid "Resource not found" msgstr "Ressource nicht gefunden" @@ -853,8 +896,11 @@ msgid "Profile ID provided is not the anonymous profile one" msgstr "Die angegebene Profil-ID ist nicht die des anonymen Profils" #, elixir-format -#: lib/graphql/resolvers/group.ex:161 lib/graphql/resolvers/group.ex:203 -#: lib/graphql/resolvers/person.ex:148 lib/graphql/resolvers/person.ex:182 lib/graphql/resolvers/person.ex:304 +#: lib/graphql/resolvers/group.ex:161 +#: lib/graphql/resolvers/group.ex:203 +#: lib/graphql/resolvers/person.ex:148 +#: lib/graphql/resolvers/person.ex:182 +#: lib/graphql/resolvers/person.ex:304 msgid "The provided picture is too heavy" msgstr "Das Bild ist zu groß" @@ -879,7 +925,8 @@ msgid "Unable to fetch resource details from this URL." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:164 lib/graphql/resolvers/participant.ex:253 +#: lib/graphql/resolvers/event.ex:164 +#: lib/graphql/resolvers/participant.ex:253 #: lib/graphql/resolvers/participant.ex:328 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "Dieses Moderatorenprofil hat keine Berechtigung für diese Veranstaltung" @@ -930,6 +977,7 @@ msgid "Failed to update the group" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:338 #: lib/graphql/resolvers/user.ex:469 msgid "Failed to update user email" msgstr "" @@ -1058,3 +1106,25 @@ msgstr "" #: lib/graphql/resolvers/user.ex:157 msgid "Your email seems to be using an invalid format" msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:387 +msgid "Can't confirm an already confirmed user" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:391 +msgid "Deconfirming users is not supported" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:363 +msgid "The new role must be different" +msgstr "Die neue E-Mail muss anders lauten" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:314 +msgid "You need to be logged-in and an administrator to edit an user's details" +msgstr "" +"Sie müssen eingeloggt und ein Administrator sein, um Admin-Einstellungen zu " +"speichern" diff --git a/priv/gettext/default.pot b/priv/gettext/default.pot index c1ecf3c74..0c3be5b1e 100644 --- a/priv/gettext/default.pot +++ b/priv/gettext/default.pot @@ -739,9 +739,12 @@ msgstr "" #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:63 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:133 -#: lib/web/templates/email/event_updated.text.eex:14 lib/web/templates/email/notification_each_week.html.heex:60 -#: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:60 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 +#: lib/web/templates/email/event_updated.html.heex:133 +#: lib/web/templates/email/event_updated.text.eex:14 +#: lib/web/templates/email/notification_each_week.html.heex:60 +#: lib/web/templates/email/notification_each_week.text.eex:11 +#: lib/web/templates/email/on_day_notification.html.heex:60 #: lib/web/templates/email/on_day_notification.text.eex:11 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." @@ -800,7 +803,6 @@ msgstr "" #, elixir-format #: lib/web/templates/email/email_changed_new.html.heex:38 -#: lib/web/templates/email/email_changed_new.text.eex:3 msgid "Hi there! It seems like you wanted to change the email address linked to your account on <b>%{instance}</b>. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." msgstr "" @@ -822,7 +824,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:70 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.heex:45 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 +#: lib/web/templates/email/registration_confirmation.html.heex:45 msgid "If you didn't trigger this email, you may safely ignore it." msgstr "" @@ -934,7 +937,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/email_anonymous_activity.html.heex:67 -#: lib/web/templates/email/event_participation_approved.html.heex:58 lib/web/templates/email/event_participation_confirmed.html.heex:58 +#: lib/web/templates/email/event_participation_approved.html.heex:58 +#: lib/web/templates/email/event_participation_confirmed.html.heex:58 msgid "Visit event page" msgstr "" @@ -956,7 +960,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:70 -#: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.heex:70 +#: lib/web/templates/email/event_participation_approved.text.eex:11 +#: lib/web/templates/email/event_participation_confirmed.html.heex:70 #: lib/web/templates/email/event_participation_confirmed.text.eex:6 msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." msgstr "" @@ -980,7 +985,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:13 -#: lib/web/templates/email/event_participation_confirmed.html.heex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 +#: lib/web/templates/email/event_participation_confirmed.html.heex:13 +#: lib/web/templates/email/event_participation_confirmed.text.eex:1 msgid "You're going!" msgstr "" @@ -1305,8 +1311,10 @@ msgid "This is a demonstration site to test Mobilizon." msgstr "" #, elixir-format -#: lib/service/metadata/actor.ex:91 lib/service/metadata/actor.ex:99 -#: lib/service/metadata/instance.ex:56 lib/service/metadata/instance.ex:62 +#: lib/service/metadata/actor.ex:91 +#: lib/service/metadata/actor.ex:99 +#: lib/service/metadata/instance.ex:56 +#: lib/service/metadata/instance.ex:62 msgid "%{name}'s feed" msgstr "" @@ -1387,7 +1395,8 @@ msgstr "" #. File name template for exported list of participants. Should NOT contain spaces. Make sure the output is going to be something standardized that is acceptable as a file name on most systems. #, elixir-format #: lib/service/export/participants/csv.ex:81 -#: lib/service/export/participants/ods.ex:86 lib/service/export/participants/pdf.ex:96 +#: lib/service/export/participants/ods.ex:86 +#: lib/service/export/participants/pdf.ex:96 msgid "%{event}_participants" msgstr "" @@ -1408,6 +1417,8 @@ msgstr "" #, elixir-format #: lib/service/export/participants/common.ex:52 +#: lib/web/templates/email/admin/_role.html.heex:3 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Administrator" msgstr "" @@ -1418,6 +1429,8 @@ msgstr "" #, elixir-format #: lib/service/export/participants/common.ex:49 +#: lib/web/templates/email/admin/_role.html.heex:5 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Moderator" msgstr "" @@ -1468,8 +1481,10 @@ msgstr "" #, elixir-format #: lib/web/templates/email/date/event_tz_date.html.heex:6 -#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 lib/web/templates/email/date/event_tz_date_range.html.heex:12 -#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:12 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 msgid "🌐 %{timezone} %{offset}" msgstr "" @@ -1657,3 +1672,137 @@ msgid "You have one pending attendance request to process for the following even msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" msgstr[0] "" msgstr[1] "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:13 +#: lib/web/templates/email/admin_user_role_changed.text.eex:1 +msgid "An administrator changed your role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:120 +msgid "An administrator confirmed your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:1 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:1 +msgid "An administrator manually changed the email attached to your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:47 +#: lib/web/email/admin.ex:72 +msgid "An administrator manually changed the email attached to your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:13 +#: lib/web/templates/email/admin_user_confirmation.text.eex:1 +msgid "An administrator manually confirmed your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:98 +msgid "An administrator updated your role on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/email_changed_new.text.eex:3 +msgid "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:3 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually changed your account email from %{old_email} (this one) to %{new_email}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> (this one) to <b>%{new_email}</b>." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> to <b>%{new_email}</b> (this one)." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:71 +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:45 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:45 +#: lib/web/templates/email/admin_user_role_changed.html.heex:67 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods %{start_link}on the instance's about page%{end_link}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:7 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:4 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:4 +#: lib/web/templates/email/admin_user_role_changed.text.eex:8 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods on the instance's about page: %{about_page}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:58 +msgid "Login on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:55 +msgid "New role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:6 +msgid "New role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:47 +msgid "Old role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:5 +msgid "Old role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin/_role.html.heex:7 +#: lib/web/templates/email/admin/_role.text.eex:1 +msgid "User" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:45 +msgid "You may now login using your credentials on the service." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:5 +msgid "You may now login using your credentials on the service:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just changed your account role." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just changed your account role." +msgstr "" diff --git a/priv/gettext/en/LC_MESSAGES/activity.po b/priv/gettext/en/LC_MESSAGES/activity.po index d52845573..08283db72 100644 --- a/priv/gettext/en/LC_MESSAGES/activity.po +++ b/priv/gettext/en/LC_MESSAGES/activity.po @@ -151,19 +151,22 @@ msgstr "" #, 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.text.eex:1 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:1 msgid "The event %{event} was created by %{profile}." msgstr "" #, 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.text.eex:13 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:34 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:13 msgid "The event %{event} was deleted by %{profile}." msgstr "" #, 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.text.eex:7 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:19 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:7 msgid "The event %{event} was updated by %{profile}." msgstr "" @@ -193,13 +196,15 @@ msgstr "" #, 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.text.eex:25 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:58 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:25 msgid "%{profile} posted a comment on the event %{event}." msgstr "" #, 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.text.eex:19 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:43 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:19 msgid "%{profile} replied to a comment on the event %{event}." msgstr "" @@ -218,7 +223,8 @@ 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.text.eex:6 +#: lib/web/templates/email/email_direct_activity.html.heex:46 +#: 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!" msgid_plural "There has been some activity!" @@ -232,14 +238,17 @@ msgstr "" #, 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.text.eex:7 -#: lib/web/templates/email/email_anonymous_activity.html.heex:41 lib/web/templates/email/email_anonymous_activity.text.eex:5 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:19 +#: 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.text.eex:5 msgid "%{profile} has posted an announcement under event %{event}." msgstr "" #, 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.text.eex:1 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 msgid "%{profile} mentionned you in a comment under event %{event}." msgstr "" @@ -255,7 +264,8 @@ msgid "Here's your weekly activity recap" msgstr "" #, elixir-format -#: lib/web/email/activity.ex:119 lib/web/email/activity.ex:140 +#: lib/web/email/activity.ex:119 +#: lib/web/email/activity.ex:140 msgid "Activity notification for %{instance}" msgstr "" @@ -277,13 +287,15 @@ msgstr "" #, 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.text.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:51 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:19 msgid "%{profile} has posted a new comment under your event %{event}." msgstr "" #, 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.text.eex:13 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:36 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:13 msgid "%{profile} has posted a new reply under your event %{event}." msgstr "" diff --git a/priv/gettext/en/LC_MESSAGES/default.po b/priv/gettext/en/LC_MESSAGES/default.po index 97513cb89..8b19565d5 100644 --- a/priv/gettext/en/LC_MESSAGES/default.po +++ b/priv/gettext/en/LC_MESSAGES/default.po @@ -792,9 +792,12 @@ msgstr "Please do not use it in any real way" #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:63 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:133 -#: lib/web/templates/email/event_updated.text.eex:14 lib/web/templates/email/notification_each_week.html.heex:60 -#: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:60 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 +#: lib/web/templates/email/event_updated.html.heex:133 +#: lib/web/templates/email/event_updated.text.eex:14 +#: lib/web/templates/email/notification_each_week.html.heex:60 +#: lib/web/templates/email/notification_each_week.text.eex:11 +#: lib/web/templates/email/on_day_notification.html.heex:60 #: lib/web/templates/email/on_day_notification.text.eex:11 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." @@ -853,7 +856,6 @@ msgstr "" #, elixir-format #: lib/web/templates/email/email_changed_new.html.heex:38 -#: lib/web/templates/email/email_changed_new.text.eex:3 msgid "Hi there! It seems like you wanted to change the email address linked to your account on <b>%{instance}</b>. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." msgstr "" @@ -875,7 +877,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:70 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.heex:45 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 +#: lib/web/templates/email/registration_confirmation.html.heex:45 msgid "If you didn't trigger this email, you may safely ignore it." msgstr "If you didn't request this, please ignore this email." @@ -987,7 +990,8 @@ msgstr "View the report" #, elixir-format #: lib/web/templates/email/email_anonymous_activity.html.heex:67 -#: lib/web/templates/email/event_participation_approved.html.heex:58 lib/web/templates/email/event_participation_confirmed.html.heex:58 +#: lib/web/templates/email/event_participation_approved.html.heex:58 +#: lib/web/templates/email/event_participation_confirmed.html.heex:58 msgid "Visit event page" msgstr "" @@ -1009,7 +1013,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:70 -#: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.heex:70 +#: lib/web/templates/email/event_participation_approved.text.eex:11 +#: lib/web/templates/email/event_participation_confirmed.html.heex:70 #: lib/web/templates/email/event_participation_confirmed.text.eex:6 msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." msgstr "" @@ -1033,7 +1038,8 @@ msgstr "You requested to participate in event %{title}." #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:13 -#: lib/web/templates/email/event_participation_confirmed.html.heex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 +#: lib/web/templates/email/event_participation_confirmed.html.heex:13 +#: lib/web/templates/email/event_participation_confirmed.text.eex:1 msgid "You're going!" msgstr "" @@ -1358,8 +1364,10 @@ msgid "This is a demonstration site to test Mobilizon." msgstr "This is a demonstration site to test the beta version of Mobilizon." #, elixir-format -#: lib/service/metadata/actor.ex:91 lib/service/metadata/actor.ex:99 -#: lib/service/metadata/instance.ex:56 lib/service/metadata/instance.ex:62 +#: lib/service/metadata/actor.ex:91 +#: lib/service/metadata/actor.ex:99 +#: lib/service/metadata/instance.ex:56 +#: lib/service/metadata/instance.ex:62 msgid "%{name}'s feed" msgstr "" @@ -1440,7 +1448,8 @@ msgstr "Your participation to event %{title} has been approved" #. File name template for exported list of participants. Should NOT contain spaces. Make sure the output is going to be something standardized that is acceptable as a file name on most systems. #, elixir-format #: lib/service/export/participants/csv.ex:81 -#: lib/service/export/participants/ods.ex:86 lib/service/export/participants/pdf.ex:96 +#: lib/service/export/participants/ods.ex:86 +#: lib/service/export/participants/pdf.ex:96 msgid "%{event}_participants" msgstr "" @@ -1461,6 +1470,8 @@ msgstr "" #, elixir-format #: lib/service/export/participants/common.ex:52 +#: lib/web/templates/email/admin/_role.html.heex:3 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Administrator" msgstr "" @@ -1471,6 +1482,8 @@ msgstr "" #, elixir-format #: lib/service/export/participants/common.ex:49 +#: lib/web/templates/email/admin/_role.html.heex:5 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Moderator" msgstr "" @@ -1521,8 +1534,10 @@ msgstr "" #, elixir-format #: lib/web/templates/email/date/event_tz_date.html.heex:6 -#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 lib/web/templates/email/date/event_tz_date_range.html.heex:12 -#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:12 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 msgid "🌐 %{timezone} %{offset}" msgstr "" @@ -1710,3 +1725,137 @@ msgid "You have one pending attendance request to process for the following even msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" msgstr[0] "" msgstr[1] "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:13 +#: lib/web/templates/email/admin_user_role_changed.text.eex:1 +msgid "An administrator changed your role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:120 +msgid "An administrator confirmed your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:1 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:1 +msgid "An administrator manually changed the email attached to your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:47 +#: lib/web/email/admin.ex:72 +msgid "An administrator manually changed the email attached to your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:13 +#: lib/web/templates/email/admin_user_confirmation.text.eex:1 +msgid "An administrator manually confirmed your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:98 +msgid "An administrator updated your role on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/email_changed_new.text.eex:3 +msgid "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:3 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually changed your account email from %{old_email} (this one) to %{new_email}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> (this one) to <b>%{new_email}</b>." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> to <b>%{new_email}</b> (this one)." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:71 +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:45 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:45 +#: lib/web/templates/email/admin_user_role_changed.html.heex:67 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods %{start_link}on the instance's about page%{end_link}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:7 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:4 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:4 +#: lib/web/templates/email/admin_user_role_changed.text.eex:8 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods on the instance's about page: %{about_page}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:58 +msgid "Login on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:55 +msgid "New role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:6 +msgid "New role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:47 +msgid "Old role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:5 +msgid "Old role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin/_role.html.heex:7 +#: lib/web/templates/email/admin/_role.text.eex:1 +msgid "User" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:45 +msgid "You may now login using your credentials on the service." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:5 +msgid "You may now login using your credentials on the service:" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just changed your account role." +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just changed your account role." +msgstr "" diff --git a/priv/gettext/en/LC_MESSAGES/errors.po b/priv/gettext/en/LC_MESSAGES/errors.po index 97fdca6e9..f8426d3b4 100644 --- a/priv/gettext/en/LC_MESSAGES/errors.po +++ b/priv/gettext/en/LC_MESSAGES/errors.po @@ -118,14 +118,19 @@ msgid "Error while saving user settings" msgstr "" #, elixir-format -#: lib/graphql/error.ex:99 lib/graphql/resolvers/group.ex:249 -#: lib/graphql/resolvers/group.ex:281 lib/graphql/resolvers/group.ex:318 lib/graphql/resolvers/group.ex:349 -#: lib/graphql/resolvers/group.ex:398 lib/graphql/resolvers/member.ex:81 +#: lib/graphql/error.ex:99 +#: lib/graphql/resolvers/group.ex:249 +#: lib/graphql/resolvers/group.ex:281 +#: lib/graphql/resolvers/group.ex:318 +#: lib/graphql/resolvers/group.ex:349 +#: lib/graphql/resolvers/group.ex:398 +#: lib/graphql/resolvers/member.ex:81 msgid "Group not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:78 lib/graphql/resolvers/group.ex:82 +#: lib/graphql/resolvers/group.ex:78 +#: lib/graphql/resolvers/group.ex:82 msgid "Group with ID %{id} not found" msgstr "" @@ -150,15 +155,21 @@ msgid "No user to validate with this email was found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:314 lib/graphql/resolvers/user.ex:298 +#: lib/graphql/resolvers/person.ex:314 +#: lib/graphql/resolvers/user.ex:298 msgid "No user with this email was found" msgstr "" #, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:32 lib/graphql/resolvers/participant.ex:210 lib/graphql/resolvers/person.ex:236 -#: lib/graphql/resolvers/person.ex:353 lib/graphql/resolvers/person.ex:380 lib/graphql/resolvers/person.ex:397 -#: lib/graphql/resolvers/person.ex:425 lib/graphql/resolvers/person.ex:440 +#: lib/graphql/resolvers/participant.ex:32 +#: lib/graphql/resolvers/participant.ex:210 +#: lib/graphql/resolvers/person.ex:236 +#: lib/graphql/resolvers/person.ex:353 +#: lib/graphql/resolvers/person.ex:380 +#: lib/graphql/resolvers/person.ex:397 +#: lib/graphql/resolvers/person.ex:425 +#: lib/graphql/resolvers/person.ex:440 msgid "Profile is not owned by authenticated user" msgstr "" @@ -173,11 +184,13 @@ msgid "The current password is invalid" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:341 #: lib/graphql/resolvers/user.ex:472 msgid "The new email doesn't seem to be valid" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:344 #: lib/graphql/resolvers/user.ex:475 msgid "The new email must be different" msgstr "" @@ -188,7 +201,8 @@ msgid "The new password must be different" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:479 lib/graphql/resolvers/user.ex:541 +#: lib/graphql/resolvers/user.ex:479 +#: lib/graphql/resolvers/user.ex:541 #: lib/graphql/resolvers/user.ex:544 msgid "The password provided is invalid" msgstr "" @@ -209,7 +223,8 @@ msgid "This user has been disabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:252 lib/graphql/resolvers/user.ex:257 +#: lib/graphql/resolvers/user.ex:252 +#: lib/graphql/resolvers/user.ex:257 msgid "Unable to validate user" msgstr "" @@ -284,7 +299,8 @@ msgid "You need to have an existing token to get a refresh token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:276 lib/graphql/resolvers/user.ex:301 +#: lib/graphql/resolvers/user.ex:276 +#: lib/graphql/resolvers/user.ex:301 msgid "You requested again a confirmation email too soon" msgstr "" @@ -304,7 +320,8 @@ msgid "No profile found with this ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:97 +#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:97 msgid "No remote profile found with this ID" msgstr "" @@ -355,17 +372,19 @@ msgid "Comment is already deleted" msgstr "" #, elixir-format -#: lib/graphql/error.ex:101 lib/graphql/resolvers/discussion.ex:69 +#: lib/graphql/error.ex:101 +#: lib/graphql/resolvers/discussion.ex:69 msgid "Discussion not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:63 lib/graphql/resolvers/report.ex:82 +#: lib/graphql/resolvers/report.ex:71 +#: lib/graphql/resolvers/report.ex:90 msgid "Error while saving report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:102 +#: lib/graphql/resolvers/report.ex:110 msgid "Error while updating report" msgstr "" @@ -375,14 +394,16 @@ msgid "Event id not found" msgstr "" #, elixir-format -#: lib/graphql/error.ex:98 lib/graphql/resolvers/event.ex:360 +#: lib/graphql/error.ex:98 +#: lib/graphql/resolvers/event.ex:360 #: lib/graphql/resolvers/event.ex:412 msgid "Event not found" msgstr "" #, elixir-format #: lib/graphql/resolvers/participant.ex:87 -#: lib/graphql/resolvers/participant.ex:128 lib/graphql/resolvers/participant.ex:155 +#: lib/graphql/resolvers/participant.ex:128 +#: lib/graphql/resolvers/participant.ex:155 #: lib/graphql/resolvers/participant.ex:336 msgid "Event with this ID %{id} doesn't exist" msgstr "" @@ -398,8 +419,11 @@ msgid "No discussion with ID %{id}" msgstr "" #, elixir-format -#: lib/graphql/resolvers/todos.ex:80 lib/graphql/resolvers/todos.ex:107 -#: lib/graphql/resolvers/todos.ex:179 lib/graphql/resolvers/todos.ex:208 lib/graphql/resolvers/todos.ex:237 +#: lib/graphql/resolvers/todos.ex:80 +#: lib/graphql/resolvers/todos.ex:107 +#: lib/graphql/resolvers/todos.ex:179 +#: lib/graphql/resolvers/todos.ex:208 +#: lib/graphql/resolvers/todos.ex:237 msgid "No profile found for user" msgstr "" @@ -415,7 +439,8 @@ msgstr "" #, elixir-format #: lib/graphql/resolvers/participant.ex:187 -#: lib/graphql/resolvers/participant.ex:220 lib/graphql/resolvers/participant.ex:263 +#: lib/graphql/resolvers/participant.ex:220 +#: lib/graphql/resolvers/participant.ex:263 msgid "Participant not found" msgstr "" @@ -430,12 +455,14 @@ msgid "Person with username %{username} not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:169 lib/graphql/resolvers/post.ex:203 +#: lib/graphql/resolvers/post.ex:169 +#: lib/graphql/resolvers/post.ex:203 msgid "Post ID is not a valid ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:172 lib/graphql/resolvers/post.ex:206 +#: lib/graphql/resolvers/post.ex:172 +#: lib/graphql/resolvers/post.ex:206 msgid "Post doesn't exist" msgstr "" @@ -445,31 +472,42 @@ msgid "Profile invited doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/member.ex:93 lib/graphql/resolvers/member.ex:97 +#: lib/graphql/resolvers/member.ex:93 +#: lib/graphql/resolvers/member.ex:97 msgid "Profile is already a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:133 lib/graphql/resolvers/post.ex:175 -#: lib/graphql/resolvers/post.ex:209 lib/graphql/resolvers/resource.ex:90 lib/graphql/resolvers/resource.ex:132 -#: lib/graphql/resolvers/resource.ex:165 lib/graphql/resolvers/resource.ex:199 lib/graphql/resolvers/todos.ex:58 -#: lib/graphql/resolvers/todos.ex:83 lib/graphql/resolvers/todos.ex:110 lib/graphql/resolvers/todos.ex:182 -#: lib/graphql/resolvers/todos.ex:214 lib/graphql/resolvers/todos.ex:246 +#: lib/graphql/resolvers/post.ex:133 +#: lib/graphql/resolvers/post.ex:175 +#: lib/graphql/resolvers/post.ex:209 +#: lib/graphql/resolvers/resource.ex:90 +#: lib/graphql/resolvers/resource.ex:132 +#: lib/graphql/resolvers/resource.ex:165 +#: lib/graphql/resolvers/resource.ex:199 +#: lib/graphql/resolvers/todos.ex:58 +#: lib/graphql/resolvers/todos.ex:83 +#: lib/graphql/resolvers/todos.ex:110 +#: lib/graphql/resolvers/todos.ex:182 +#: lib/graphql/resolvers/todos.ex:214 +#: lib/graphql/resolvers/todos.ex:246 msgid "Profile is not member of group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/person.ex:233 +#: lib/graphql/resolvers/actor.ex:67 +#: lib/graphql/resolvers/person.ex:233 msgid "Profile not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:40 +#: lib/graphql/resolvers/report.ex:48 msgid "Report not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/resource.ex:169 lib/graphql/resolvers/resource.ex:196 +#: lib/graphql/resolvers/resource.ex:169 +#: lib/graphql/resolvers/resource.ex:196 msgid "Resource doesn't exist" msgstr "" @@ -484,12 +522,14 @@ msgid "This token is invalid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/todos.ex:176 lib/graphql/resolvers/todos.ex:243 +#: lib/graphql/resolvers/todos.ex:176 +#: lib/graphql/resolvers/todos.ex:243 msgid "Todo doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/todos.ex:77 lib/graphql/resolvers/todos.ex:211 +#: lib/graphql/resolvers/todos.ex:77 +#: lib/graphql/resolvers/todos.ex:211 #: lib/graphql/resolvers/todos.ex:240 msgid "Todo list doesn't exist" msgstr "" @@ -500,12 +540,13 @@ msgid "Token does not exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70 +#: lib/graphql/resolvers/feed_token.ex:67 +#: lib/graphql/resolvers/feed_token.ex:70 msgid "Token is not a valid UUID" msgstr "" #, elixir-format -#: lib/graphql/error.ex:96 lib/graphql/resolvers/person.ex:458 +#: lib/graphql/error.ex:96 msgid "User not found" msgstr "" @@ -525,7 +566,8 @@ msgid "You are not a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/member.ex:157 lib/graphql/resolvers/member.ex:173 +#: lib/graphql/resolvers/member.ex:157 +#: lib/graphql/resolvers/member.ex:173 #: lib/graphql/resolvers/member.ex:188 msgid "You are not a moderator or admin for this group" msgstr "" @@ -587,37 +629,37 @@ msgid "You don't have permission to delete this token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:54 +#: lib/graphql/resolvers/admin.ex:56 msgid "You need to be logged-in and a moderator to list action logs" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:28 +#: lib/graphql/resolvers/report.ex:36 msgid "You need to be logged-in and a moderator to list reports" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:107 +#: lib/graphql/resolvers/report.ex:115 msgid "You need to be logged-in and a moderator to update a report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:45 +#: lib/graphql/resolvers/report.ex:53 msgid "You need to be logged-in and a moderator to view a report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:255 +#: lib/graphql/resolvers/admin.ex:257 msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:239 +#: lib/graphql/resolvers/admin.ex:241 msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:281 +#: lib/graphql/resolvers/admin.ex:283 msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" @@ -642,7 +684,7 @@ msgid "You need to be logged-in to create posts" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:79 +#: lib/graphql/resolvers/report.ex:87 msgid "You need to be logged-in to create reports" msgstr "" @@ -737,7 +779,8 @@ msgid "Reset your password to login" msgstr "" #, elixir-format -#: lib/graphql/error.ex:95 lib/graphql/error.ex:100 +#: lib/graphql/error.ex:95 +#: lib/graphql/error.ex:100 msgid "Resource not found" msgstr "" @@ -827,8 +870,11 @@ msgid "Profile ID provided is not the anonymous profile one" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:161 lib/graphql/resolvers/group.ex:203 -#: lib/graphql/resolvers/person.ex:148 lib/graphql/resolvers/person.ex:182 lib/graphql/resolvers/person.ex:304 +#: lib/graphql/resolvers/group.ex:161 +#: lib/graphql/resolvers/group.ex:203 +#: lib/graphql/resolvers/person.ex:148 +#: lib/graphql/resolvers/person.ex:182 +#: lib/graphql/resolvers/person.ex:304 msgid "The provided picture is too heavy" msgstr "" @@ -853,7 +899,8 @@ msgid "Unable to fetch resource details from this URL." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:164 lib/graphql/resolvers/participant.ex:253 +#: lib/graphql/resolvers/event.ex:164 +#: lib/graphql/resolvers/participant.ex:253 #: lib/graphql/resolvers/participant.ex:328 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "" @@ -904,6 +951,7 @@ msgid "Failed to update the group" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:338 #: lib/graphql/resolvers/user.ex:469 msgid "Failed to update user email" msgstr "" @@ -1032,3 +1080,23 @@ msgstr "" #: lib/graphql/resolvers/user.ex:157 msgid "Your email seems to be using an invalid format" msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:387 +msgid "Can't confirm an already confirmed user" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:391 +msgid "Deconfirming users is not supported" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:363 +msgid "The new role must be different" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:314 +msgid "You need to be logged-in and an administrator to edit an user's details" +msgstr "" diff --git a/priv/gettext/errors.pot b/priv/gettext/errors.pot index 0574eeb29..b3a39f642 100644 --- a/priv/gettext/errors.pot +++ b/priv/gettext/errors.pot @@ -115,14 +115,19 @@ msgid "Error while saving user settings" msgstr "" #, elixir-format -#: lib/graphql/error.ex:99 lib/graphql/resolvers/group.ex:249 -#: lib/graphql/resolvers/group.ex:281 lib/graphql/resolvers/group.ex:318 lib/graphql/resolvers/group.ex:349 -#: lib/graphql/resolvers/group.ex:398 lib/graphql/resolvers/member.ex:81 +#: lib/graphql/error.ex:99 +#: lib/graphql/resolvers/group.ex:249 +#: lib/graphql/resolvers/group.ex:281 +#: lib/graphql/resolvers/group.ex:318 +#: lib/graphql/resolvers/group.ex:349 +#: lib/graphql/resolvers/group.ex:398 +#: lib/graphql/resolvers/member.ex:81 msgid "Group not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:78 lib/graphql/resolvers/group.ex:82 +#: lib/graphql/resolvers/group.ex:78 +#: lib/graphql/resolvers/group.ex:82 msgid "Group with ID %{id} not found" msgstr "" @@ -147,15 +152,21 @@ msgid "No user to validate with this email was found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:314 lib/graphql/resolvers/user.ex:298 +#: lib/graphql/resolvers/person.ex:314 +#: lib/graphql/resolvers/user.ex:298 msgid "No user with this email was found" msgstr "" #, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:32 lib/graphql/resolvers/participant.ex:210 lib/graphql/resolvers/person.ex:236 -#: lib/graphql/resolvers/person.ex:353 lib/graphql/resolvers/person.ex:380 lib/graphql/resolvers/person.ex:397 -#: lib/graphql/resolvers/person.ex:425 lib/graphql/resolvers/person.ex:440 +#: lib/graphql/resolvers/participant.ex:32 +#: lib/graphql/resolvers/participant.ex:210 +#: lib/graphql/resolvers/person.ex:236 +#: lib/graphql/resolvers/person.ex:353 +#: lib/graphql/resolvers/person.ex:380 +#: lib/graphql/resolvers/person.ex:397 +#: lib/graphql/resolvers/person.ex:425 +#: lib/graphql/resolvers/person.ex:440 msgid "Profile is not owned by authenticated user" msgstr "" @@ -170,11 +181,13 @@ msgid "The current password is invalid" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:341 #: lib/graphql/resolvers/user.ex:472 msgid "The new email doesn't seem to be valid" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:344 #: lib/graphql/resolvers/user.ex:475 msgid "The new email must be different" msgstr "" @@ -185,7 +198,8 @@ msgid "The new password must be different" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:479 lib/graphql/resolvers/user.ex:541 +#: lib/graphql/resolvers/user.ex:479 +#: lib/graphql/resolvers/user.ex:541 #: lib/graphql/resolvers/user.ex:544 msgid "The password provided is invalid" msgstr "" @@ -206,7 +220,8 @@ msgid "This user has been disabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:252 lib/graphql/resolvers/user.ex:257 +#: lib/graphql/resolvers/user.ex:252 +#: lib/graphql/resolvers/user.ex:257 msgid "Unable to validate user" msgstr "" @@ -281,7 +296,8 @@ msgid "You need to have an existing token to get a refresh token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:276 lib/graphql/resolvers/user.ex:301 +#: lib/graphql/resolvers/user.ex:276 +#: lib/graphql/resolvers/user.ex:301 msgid "You requested again a confirmation email too soon" msgstr "" @@ -301,7 +317,8 @@ msgid "No profile found with this ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:97 +#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:97 msgid "No remote profile found with this ID" msgstr "" @@ -352,17 +369,19 @@ msgid "Comment is already deleted" msgstr "" #, elixir-format -#: lib/graphql/error.ex:101 lib/graphql/resolvers/discussion.ex:69 +#: lib/graphql/error.ex:101 +#: lib/graphql/resolvers/discussion.ex:69 msgid "Discussion not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:63 lib/graphql/resolvers/report.ex:82 +#: lib/graphql/resolvers/report.ex:71 +#: lib/graphql/resolvers/report.ex:90 msgid "Error while saving report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:102 +#: lib/graphql/resolvers/report.ex:110 msgid "Error while updating report" msgstr "" @@ -372,14 +391,16 @@ msgid "Event id not found" msgstr "" #, elixir-format -#: lib/graphql/error.ex:98 lib/graphql/resolvers/event.ex:360 +#: lib/graphql/error.ex:98 +#: lib/graphql/resolvers/event.ex:360 #: lib/graphql/resolvers/event.ex:412 msgid "Event not found" msgstr "" #, elixir-format #: lib/graphql/resolvers/participant.ex:87 -#: lib/graphql/resolvers/participant.ex:128 lib/graphql/resolvers/participant.ex:155 +#: lib/graphql/resolvers/participant.ex:128 +#: lib/graphql/resolvers/participant.ex:155 #: lib/graphql/resolvers/participant.ex:336 msgid "Event with this ID %{id} doesn't exist" msgstr "" @@ -395,8 +416,11 @@ msgid "No discussion with ID %{id}" msgstr "" #, elixir-format -#: lib/graphql/resolvers/todos.ex:80 lib/graphql/resolvers/todos.ex:107 -#: lib/graphql/resolvers/todos.ex:179 lib/graphql/resolvers/todos.ex:208 lib/graphql/resolvers/todos.ex:237 +#: lib/graphql/resolvers/todos.ex:80 +#: lib/graphql/resolvers/todos.ex:107 +#: lib/graphql/resolvers/todos.ex:179 +#: lib/graphql/resolvers/todos.ex:208 +#: lib/graphql/resolvers/todos.ex:237 msgid "No profile found for user" msgstr "" @@ -412,7 +436,8 @@ msgstr "" #, elixir-format #: lib/graphql/resolvers/participant.ex:187 -#: lib/graphql/resolvers/participant.ex:220 lib/graphql/resolvers/participant.ex:263 +#: lib/graphql/resolvers/participant.ex:220 +#: lib/graphql/resolvers/participant.ex:263 msgid "Participant not found" msgstr "" @@ -427,12 +452,14 @@ msgid "Person with username %{username} not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:169 lib/graphql/resolvers/post.ex:203 +#: lib/graphql/resolvers/post.ex:169 +#: lib/graphql/resolvers/post.ex:203 msgid "Post ID is not a valid ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:172 lib/graphql/resolvers/post.ex:206 +#: lib/graphql/resolvers/post.ex:172 +#: lib/graphql/resolvers/post.ex:206 msgid "Post doesn't exist" msgstr "" @@ -442,31 +469,42 @@ msgid "Profile invited doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/member.ex:93 lib/graphql/resolvers/member.ex:97 +#: lib/graphql/resolvers/member.ex:93 +#: lib/graphql/resolvers/member.ex:97 msgid "Profile is already a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:133 lib/graphql/resolvers/post.ex:175 -#: lib/graphql/resolvers/post.ex:209 lib/graphql/resolvers/resource.ex:90 lib/graphql/resolvers/resource.ex:132 -#: lib/graphql/resolvers/resource.ex:165 lib/graphql/resolvers/resource.ex:199 lib/graphql/resolvers/todos.ex:58 -#: lib/graphql/resolvers/todos.ex:83 lib/graphql/resolvers/todos.ex:110 lib/graphql/resolvers/todos.ex:182 -#: lib/graphql/resolvers/todos.ex:214 lib/graphql/resolvers/todos.ex:246 +#: lib/graphql/resolvers/post.ex:133 +#: lib/graphql/resolvers/post.ex:175 +#: lib/graphql/resolvers/post.ex:209 +#: lib/graphql/resolvers/resource.ex:90 +#: lib/graphql/resolvers/resource.ex:132 +#: lib/graphql/resolvers/resource.ex:165 +#: lib/graphql/resolvers/resource.ex:199 +#: lib/graphql/resolvers/todos.ex:58 +#: lib/graphql/resolvers/todos.ex:83 +#: lib/graphql/resolvers/todos.ex:110 +#: lib/graphql/resolvers/todos.ex:182 +#: lib/graphql/resolvers/todos.ex:214 +#: lib/graphql/resolvers/todos.ex:246 msgid "Profile is not member of group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/person.ex:233 +#: lib/graphql/resolvers/actor.ex:67 +#: lib/graphql/resolvers/person.ex:233 msgid "Profile not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:40 +#: lib/graphql/resolvers/report.ex:48 msgid "Report not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/resource.ex:169 lib/graphql/resolvers/resource.ex:196 +#: lib/graphql/resolvers/resource.ex:169 +#: lib/graphql/resolvers/resource.ex:196 msgid "Resource doesn't exist" msgstr "" @@ -481,12 +519,14 @@ msgid "This token is invalid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/todos.ex:176 lib/graphql/resolvers/todos.ex:243 +#: lib/graphql/resolvers/todos.ex:176 +#: lib/graphql/resolvers/todos.ex:243 msgid "Todo doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/todos.ex:77 lib/graphql/resolvers/todos.ex:211 +#: lib/graphql/resolvers/todos.ex:77 +#: lib/graphql/resolvers/todos.ex:211 #: lib/graphql/resolvers/todos.ex:240 msgid "Todo list doesn't exist" msgstr "" @@ -497,12 +537,13 @@ msgid "Token does not exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70 +#: lib/graphql/resolvers/feed_token.ex:67 +#: lib/graphql/resolvers/feed_token.ex:70 msgid "Token is not a valid UUID" msgstr "" #, elixir-format -#: lib/graphql/error.ex:96 lib/graphql/resolvers/person.ex:458 +#: lib/graphql/error.ex:96 msgid "User not found" msgstr "" @@ -522,7 +563,8 @@ msgid "You are not a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/member.ex:157 lib/graphql/resolvers/member.ex:173 +#: lib/graphql/resolvers/member.ex:157 +#: lib/graphql/resolvers/member.ex:173 #: lib/graphql/resolvers/member.ex:188 msgid "You are not a moderator or admin for this group" msgstr "" @@ -584,37 +626,37 @@ msgid "You don't have permission to delete this token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:54 +#: lib/graphql/resolvers/admin.ex:56 msgid "You need to be logged-in and a moderator to list action logs" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:28 +#: lib/graphql/resolvers/report.ex:36 msgid "You need to be logged-in and a moderator to list reports" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:107 +#: lib/graphql/resolvers/report.ex:115 msgid "You need to be logged-in and a moderator to update a report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:45 +#: lib/graphql/resolvers/report.ex:53 msgid "You need to be logged-in and a moderator to view a report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:255 +#: lib/graphql/resolvers/admin.ex:257 msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:239 +#: lib/graphql/resolvers/admin.ex:241 msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:281 +#: lib/graphql/resolvers/admin.ex:283 msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" @@ -639,7 +681,7 @@ msgid "You need to be logged-in to create posts" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:79 +#: lib/graphql/resolvers/report.ex:87 msgid "You need to be logged-in to create reports" msgstr "" @@ -734,7 +776,8 @@ msgid "Reset your password to login" msgstr "" #, elixir-format -#: lib/graphql/error.ex:95 lib/graphql/error.ex:100 +#: lib/graphql/error.ex:95 +#: lib/graphql/error.ex:100 msgid "Resource not found" msgstr "" @@ -824,8 +867,11 @@ msgid "Profile ID provided is not the anonymous profile one" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:161 lib/graphql/resolvers/group.ex:203 -#: lib/graphql/resolvers/person.ex:148 lib/graphql/resolvers/person.ex:182 lib/graphql/resolvers/person.ex:304 +#: lib/graphql/resolvers/group.ex:161 +#: lib/graphql/resolvers/group.ex:203 +#: lib/graphql/resolvers/person.ex:148 +#: lib/graphql/resolvers/person.ex:182 +#: lib/graphql/resolvers/person.ex:304 msgid "The provided picture is too heavy" msgstr "" @@ -850,7 +896,8 @@ msgid "Unable to fetch resource details from this URL." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:164 lib/graphql/resolvers/participant.ex:253 +#: lib/graphql/resolvers/event.ex:164 +#: lib/graphql/resolvers/participant.ex:253 #: lib/graphql/resolvers/participant.ex:328 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "" @@ -901,6 +948,7 @@ msgid "Failed to update the group" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:338 #: lib/graphql/resolvers/user.ex:469 msgid "Failed to update user email" msgstr "" @@ -1029,3 +1077,23 @@ msgstr "" #: lib/graphql/resolvers/user.ex:157 msgid "Your email seems to be using an invalid format" msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:387 +msgid "Can't confirm an already confirmed user" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:391 +msgid "Deconfirming users is not supported" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:363 +msgid "The new role must be different" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:314 +msgid "You need to be logged-in and an administrator to edit an user's details" +msgstr "" diff --git a/priv/gettext/es/LC_MESSAGES/activity.po b/priv/gettext/es/LC_MESSAGES/activity.po index e1399557d..2924be18e 100644 --- a/priv/gettext/es/LC_MESSAGES/activity.po +++ b/priv/gettext/es/LC_MESSAGES/activity.po @@ -160,19 +160,22 @@ msgstr "%{profile} actualizado el miembro %{member}." #, 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.text.eex:1 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:1 msgid "The event %{event} was created by %{profile}." msgstr "El evento %{event} fue creado por %{profile}." #, 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.text.eex:13 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:34 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:13 msgid "The event %{event} was deleted by %{profile}." msgstr "El evento% {event} fue eliminado por % {profile}." #, 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.text.eex:7 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:19 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:7 msgid "The event %{event} was updated by %{profile}." msgstr "El evento %{event} fue actualizado por %{profile}." @@ -202,13 +205,15 @@ msgstr "%{member} se unió al grupo." #, 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.text.eex:25 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:58 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:25 msgid "%{profile} posted a comment on the event %{event}." msgstr "%{profile} publicó un comentario sobre el evento %{event}." #, 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.text.eex:19 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:43 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:19 msgid "%{profile} replied to a comment on the event %{event}." msgstr "%{profile} respondió a un comentario sobre el evento %{event}." @@ -229,7 +234,8 @@ msgstr[1] "Ver %{count} actividades mas" #, 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.text.eex:6 +#: lib/web/templates/email/email_direct_activity.html.heex:46 +#: 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!" msgid_plural "There has been some activity!" @@ -243,14 +249,17 @@ msgstr "Actividad en %{instance}" #, 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.text.eex:7 -#: lib/web/templates/email/email_anonymous_activity.html.heex:41 lib/web/templates/email/email_anonymous_activity.text.eex:5 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:19 +#: 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.text.eex:5 msgid "%{profile} has posted an announcement under event %{event}." msgstr "%{profile} ha publicado un anuncio en el evento %{event}." #, 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.text.eex:1 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 msgid "%{profile} mentionned you in a comment under event %{event}." msgstr "%{profile} te mencionó en un comentario en el evento %{event}." @@ -268,7 +277,8 @@ msgid "Here's your weekly activity recap" msgstr "Aquí está su resumen de actividad semanal" #, elixir-format -#: lib/web/email/activity.ex:119 lib/web/email/activity.ex:140 +#: lib/web/email/activity.ex:119 +#: lib/web/email/activity.ex:140 msgid "Activity notification for %{instance}" msgstr "Actividad en %{instance}" @@ -290,13 +300,15 @@ msgstr "Resumen de actividad semanal para %{instance}" #, 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.text.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:51 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:19 msgid "%{profile} has posted a new comment under your event %{event}." msgstr "%{profile} ha publicado un nuevo comentario en tu evento %{event}." #, 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.text.eex:13 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:36 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:13 msgid "%{profile} has posted a new reply under your event %{event}." msgstr "%{profile} ha publicado una nueva respuesta en tu evento %{event}." diff --git a/priv/gettext/es/LC_MESSAGES/default.po b/priv/gettext/es/LC_MESSAGES/default.po index 9074c6919..f2e4381a8 100644 --- a/priv/gettext/es/LC_MESSAGES/default.po +++ b/priv/gettext/es/LC_MESSAGES/default.po @@ -938,9 +938,12 @@ msgstr "Por favor no lo use de ninguna manera real." #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:63 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:133 -#: lib/web/templates/email/event_updated.text.eex:14 lib/web/templates/email/notification_each_week.html.heex:60 -#: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:60 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 +#: lib/web/templates/email/event_updated.html.heex:133 +#: lib/web/templates/email/event_updated.text.eex:14 +#: lib/web/templates/email/notification_each_week.html.heex:60 +#: lib/web/templates/email/notification_each_week.text.eex:11 +#: lib/web/templates/email/on_day_notification.html.heex:60 #: lib/web/templates/email/on_day_notification.text.eex:11 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." @@ -1005,7 +1008,6 @@ msgstr "" #, elixir-format #: lib/web/templates/email/email_changed_new.html.heex:38 -#: lib/web/templates/email/email_changed_new.text.eex:3 msgid "Hi there! It seems like you wanted to change the email address linked to your account on <b>%{instance}</b>. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." msgstr "" "¡Hola! Parece que desea cambiar la dirección de correo electrónico vinculada " @@ -1039,7 +1041,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:70 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.heex:45 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 +#: lib/web/templates/email/registration_confirmation.html.heex:45 msgid "If you didn't trigger this email, you may safely ignore it." msgstr "Si no activó esta alerta, puede ignorarla con seguridad." @@ -1156,7 +1159,8 @@ msgstr "Ver el informe:" #, elixir-format #: lib/web/templates/email/email_anonymous_activity.html.heex:67 -#: lib/web/templates/email/event_participation_approved.html.heex:58 lib/web/templates/email/event_participation_confirmed.html.heex:58 +#: lib/web/templates/email/event_participation_approved.html.heex:58 +#: lib/web/templates/email/event_participation_confirmed.html.heex:58 msgid "Visit event page" msgstr "Visita la página del evento" @@ -1178,7 +1182,8 @@ msgstr "Qué pasa hoy?" #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:70 -#: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.heex:70 +#: lib/web/templates/email/event_participation_approved.text.eex:11 +#: lib/web/templates/email/event_participation_confirmed.html.heex:70 #: lib/web/templates/email/event_participation_confirmed.text.eex:6 msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." msgstr "" @@ -1208,7 +1213,8 @@ msgstr "Solicitaste participar en el evento %{title}." #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:13 -#: lib/web/templates/email/event_participation_confirmed.html.heex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 +#: lib/web/templates/email/event_participation_confirmed.html.heex:13 +#: lib/web/templates/email/event_participation_confirmed.text.eex:1 msgid "You're going!" msgstr "¡Vas!" @@ -1637,8 +1643,10 @@ msgid "This is a demonstration site to test Mobilizon." msgstr "Este es un sitio de demostración para probar Mobilizon." #, elixir-format -#: lib/service/metadata/actor.ex:91 lib/service/metadata/actor.ex:99 -#: lib/service/metadata/instance.ex:56 lib/service/metadata/instance.ex:62 +#: lib/service/metadata/actor.ex:91 +#: lib/service/metadata/actor.ex:99 +#: lib/service/metadata/instance.ex:56 +#: lib/service/metadata/instance.ex:62 msgid "%{name}'s feed" msgstr "Flujo de %{name}" @@ -1733,7 +1741,8 @@ msgstr "¡Tu participación en %{event} en %{instance} ha sido cancelada!" #. File name template for exported list of participants. Should NOT contain spaces. Make sure the output is going to be something standardized that is acceptable as a file name on most systems. #, elixir-format #: lib/service/export/participants/csv.ex:81 -#: lib/service/export/participants/ods.ex:86 lib/service/export/participants/pdf.ex:96 +#: lib/service/export/participants/ods.ex:86 +#: lib/service/export/participants/pdf.ex:96 msgid "%{event}_participants" msgstr "%{event}_participantes" @@ -1754,6 +1763,8 @@ msgstr "Estado de participante" #, elixir-format #: lib/service/export/participants/common.ex:52 +#: lib/web/templates/email/admin/_role.html.heex:3 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Administrator" msgstr "Administrador" @@ -1764,6 +1775,8 @@ msgstr "Creador" #, elixir-format #: lib/service/export/participants/common.ex:49 +#: lib/web/templates/email/admin/_role.html.heex:5 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Moderator" msgstr "Moderador" @@ -1814,8 +1827,10 @@ msgstr "Participante anónimo" #, elixir-format #: lib/web/templates/email/date/event_tz_date.html.heex:6 -#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 lib/web/templates/email/date/event_tz_date_range.html.heex:12 -#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:12 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 msgid "🌐 %{timezone} %{offset}" msgstr "🌐 %{timezone} %{offset}" @@ -2009,3 +2024,141 @@ msgstr[0] "Tiene una solicitud de participación pendiente de procesar:" msgstr[1] "" "Tienes %{number_participation_requests} solicitudes de participación " "pendientes de procesar:" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:13 +#: lib/web/templates/email/admin_user_role_changed.text.eex:1 +msgid "An administrator changed your role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:120 +msgid "An administrator confirmed your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:1 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:1 +msgid "An administrator manually changed the email attached to your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:47 +#: lib/web/email/admin.ex:72 +msgid "An administrator manually changed the email attached to your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:13 +#: lib/web/templates/email/admin_user_confirmation.text.eex:1 +msgid "An administrator manually confirmed your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:98 +msgid "An administrator updated your role on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/email_changed_new.text.eex:3 +msgid "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." +msgstr "" +"¡Hola! Parece que desea cambiar la dirección de correo electrónico vinculada " +"a su cuenta en <b>%{instance} </b>. Si aún desea hacerlo, haga clic en el " +"botón de abajo para confirmar el cambio. Luego podrá iniciar sesión en% " +"{instance} con esta nueva dirección de correo electrónico." + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:3 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually changed your account email from %{old_email} (this one) to %{new_email}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> (this one) to <b>%{new_email}</b>." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> to <b>%{new_email}</b> (this one)." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:71 +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:45 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:45 +#: lib/web/templates/email/admin_user_role_changed.html.heex:67 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods %{start_link}on the instance's about page%{end_link}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:7 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:4 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:4 +#: lib/web/templates/email/admin_user_role_changed.text.eex:8 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods on the instance's about page: %{about_page}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:58 +msgid "Login on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:55 +msgid "New role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:6 +msgid "New role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:47 +msgid "Old role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:5 +msgid "Old role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin/_role.html.heex:7 +#: lib/web/templates/email/admin/_role.text.eex:1 +msgid "User" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:45 +msgid "You may now login using your credentials on the service." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:5 +msgid "You may now login using your credentials on the service:" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just changed your account role." +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just changed your account role." +msgstr "" diff --git a/priv/gettext/es/LC_MESSAGES/errors.po b/priv/gettext/es/LC_MESSAGES/errors.po index 9d85e61ec..e37de1936 100644 --- a/priv/gettext/es/LC_MESSAGES/errors.po +++ b/priv/gettext/es/LC_MESSAGES/errors.po @@ -115,14 +115,19 @@ msgid "Error while saving user settings" msgstr "Error al guardar los parámetros del usuario" #, elixir-format -#: lib/graphql/error.ex:99 lib/graphql/resolvers/group.ex:249 -#: lib/graphql/resolvers/group.ex:281 lib/graphql/resolvers/group.ex:318 lib/graphql/resolvers/group.ex:349 -#: lib/graphql/resolvers/group.ex:398 lib/graphql/resolvers/member.ex:81 +#: lib/graphql/error.ex:99 +#: lib/graphql/resolvers/group.ex:249 +#: lib/graphql/resolvers/group.ex:281 +#: lib/graphql/resolvers/group.ex:318 +#: lib/graphql/resolvers/group.ex:349 +#: lib/graphql/resolvers/group.ex:398 +#: lib/graphql/resolvers/member.ex:81 msgid "Group not found" msgstr "Grupo no encontrado" #, elixir-format -#: lib/graphql/resolvers/group.ex:78 lib/graphql/resolvers/group.ex:82 +#: lib/graphql/resolvers/group.ex:78 +#: lib/graphql/resolvers/group.ex:82 msgid "Group with ID %{id} not found" msgstr "No se encontró el grupo con ID% {id}" @@ -148,15 +153,21 @@ msgid "No user to validate with this email was found" msgstr "No se encontró ningún usuario para validar con este correo electrónico" #, elixir-format -#: lib/graphql/resolvers/person.ex:314 lib/graphql/resolvers/user.ex:298 +#: lib/graphql/resolvers/person.ex:314 +#: lib/graphql/resolvers/user.ex:298 msgid "No user with this email was found" msgstr "No se encontró ningún usuario con este correo electrónico" #, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:32 lib/graphql/resolvers/participant.ex:210 lib/graphql/resolvers/person.ex:236 -#: lib/graphql/resolvers/person.ex:353 lib/graphql/resolvers/person.ex:380 lib/graphql/resolvers/person.ex:397 -#: lib/graphql/resolvers/person.ex:425 lib/graphql/resolvers/person.ex:440 +#: lib/graphql/resolvers/participant.ex:32 +#: lib/graphql/resolvers/participant.ex:210 +#: lib/graphql/resolvers/person.ex:236 +#: lib/graphql/resolvers/person.ex:353 +#: lib/graphql/resolvers/person.ex:380 +#: lib/graphql/resolvers/person.ex:397 +#: lib/graphql/resolvers/person.ex:425 +#: lib/graphql/resolvers/person.ex:440 msgid "Profile is not owned by authenticated user" msgstr "El perfil no es propiedad del usuario autenticado" @@ -171,11 +182,13 @@ msgid "The current password is invalid" msgstr "La contraseña actual no es válida" #, elixir-format +#: lib/graphql/resolvers/admin.ex:341 #: lib/graphql/resolvers/user.ex:472 msgid "The new email doesn't seem to be valid" msgstr "El nuevo correo electrónico no parece ser válido" #, elixir-format +#: lib/graphql/resolvers/admin.ex:344 #: lib/graphql/resolvers/user.ex:475 msgid "The new email must be different" msgstr "El nuevo correo electrónico debe ser diferente" @@ -186,7 +199,8 @@ msgid "The new password must be different" msgstr "La nueva contraseña debe ser diferente" #, elixir-format -#: lib/graphql/resolvers/user.ex:479 lib/graphql/resolvers/user.ex:541 +#: lib/graphql/resolvers/user.ex:479 +#: lib/graphql/resolvers/user.ex:541 #: lib/graphql/resolvers/user.ex:544 msgid "The password provided is invalid" msgstr "La contraseña proporcionada no es válida" @@ -209,7 +223,8 @@ msgid "This user has been disabled" msgstr "Este usuario ha sido inhabilitado" #, elixir-format -#: lib/graphql/resolvers/user.ex:252 lib/graphql/resolvers/user.ex:257 +#: lib/graphql/resolvers/user.ex:252 +#: lib/graphql/resolvers/user.ex:257 msgid "Unable to validate user" msgstr "No se puede validar al usuario" @@ -284,7 +299,8 @@ msgid "You need to have an existing token to get a refresh token" msgstr "Debes tener un token existente para obtener un token de actualización" #, elixir-format -#: lib/graphql/resolvers/user.ex:276 lib/graphql/resolvers/user.ex:301 +#: lib/graphql/resolvers/user.ex:276 +#: lib/graphql/resolvers/user.ex:301 msgid "You requested again a confirmation email too soon" msgstr "" "Solicitó de nuevo un correo electrónico de confirmación demasiado pronto" @@ -305,7 +321,8 @@ msgid "No profile found with this ID" msgstr "No se encontró ningún perfil con este ID" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:97 +#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:97 msgid "No remote profile found with this ID" msgstr "No se encontró ningún perfil remoto con este ID" @@ -358,17 +375,19 @@ msgid "Comment is already deleted" msgstr "El comentario ya está eliminado" #, elixir-format -#: lib/graphql/error.ex:101 lib/graphql/resolvers/discussion.ex:69 +#: lib/graphql/error.ex:101 +#: lib/graphql/resolvers/discussion.ex:69 msgid "Discussion not found" msgstr "Discusión no encontrada" #, elixir-format -#: lib/graphql/resolvers/report.ex:63 lib/graphql/resolvers/report.ex:82 +#: lib/graphql/resolvers/report.ex:71 +#: lib/graphql/resolvers/report.ex:90 msgid "Error while saving report" msgstr "Error al guardar el informe" #, elixir-format -#: lib/graphql/resolvers/report.ex:102 +#: lib/graphql/resolvers/report.ex:110 msgid "Error while updating report" msgstr "Error al actualizar el informe" @@ -378,14 +397,16 @@ msgid "Event id not found" msgstr "ID de evento no encontrado" #, elixir-format -#: lib/graphql/error.ex:98 lib/graphql/resolvers/event.ex:360 +#: lib/graphql/error.ex:98 +#: lib/graphql/resolvers/event.ex:360 #: lib/graphql/resolvers/event.ex:412 msgid "Event not found" msgstr "Evento no encontrado" #, elixir-format #: lib/graphql/resolvers/participant.ex:87 -#: lib/graphql/resolvers/participant.ex:128 lib/graphql/resolvers/participant.ex:155 +#: lib/graphql/resolvers/participant.ex:128 +#: lib/graphql/resolvers/participant.ex:155 #: lib/graphql/resolvers/participant.ex:336 msgid "Event with this ID %{id} doesn't exist" msgstr "El evento con este ID%{id} no existe" @@ -401,8 +422,11 @@ msgid "No discussion with ID %{id}" msgstr "Sin discusión con ID%{id}" #, elixir-format -#: lib/graphql/resolvers/todos.ex:80 lib/graphql/resolvers/todos.ex:107 -#: lib/graphql/resolvers/todos.ex:179 lib/graphql/resolvers/todos.ex:208 lib/graphql/resolvers/todos.ex:237 +#: lib/graphql/resolvers/todos.ex:80 +#: lib/graphql/resolvers/todos.ex:107 +#: lib/graphql/resolvers/todos.ex:179 +#: lib/graphql/resolvers/todos.ex:208 +#: lib/graphql/resolvers/todos.ex:237 msgid "No profile found for user" msgstr "No se encontró perfil para el usuario" @@ -418,7 +442,8 @@ msgstr "El participante ya tiene el rol%{role}" #, elixir-format #: lib/graphql/resolvers/participant.ex:187 -#: lib/graphql/resolvers/participant.ex:220 lib/graphql/resolvers/participant.ex:263 +#: lib/graphql/resolvers/participant.ex:220 +#: lib/graphql/resolvers/participant.ex:263 msgid "Participant not found" msgstr "Participante no encontrado" @@ -433,12 +458,14 @@ msgid "Person with username %{username} not found" msgstr "Persona con nombre de usuario %{username} no encontrada" #, elixir-format -#: lib/graphql/resolvers/post.ex:169 lib/graphql/resolvers/post.ex:203 +#: lib/graphql/resolvers/post.ex:169 +#: lib/graphql/resolvers/post.ex:203 msgid "Post ID is not a valid ID" msgstr "La ID de publicación no es válida" #, elixir-format -#: lib/graphql/resolvers/post.ex:172 lib/graphql/resolvers/post.ex:206 +#: lib/graphql/resolvers/post.ex:172 +#: lib/graphql/resolvers/post.ex:206 msgid "Post doesn't exist" msgstr "La publicación no existe" @@ -448,31 +475,42 @@ msgid "Profile invited doesn't exist" msgstr "El perfil invitado no existe" #, elixir-format -#: lib/graphql/resolvers/member.ex:93 lib/graphql/resolvers/member.ex:97 +#: lib/graphql/resolvers/member.ex:93 +#: lib/graphql/resolvers/member.ex:97 msgid "Profile is already a member of this group" msgstr "Perfil ya es miembro de este grupo" #, elixir-format -#: lib/graphql/resolvers/post.ex:133 lib/graphql/resolvers/post.ex:175 -#: lib/graphql/resolvers/post.ex:209 lib/graphql/resolvers/resource.ex:90 lib/graphql/resolvers/resource.ex:132 -#: lib/graphql/resolvers/resource.ex:165 lib/graphql/resolvers/resource.ex:199 lib/graphql/resolvers/todos.ex:58 -#: lib/graphql/resolvers/todos.ex:83 lib/graphql/resolvers/todos.ex:110 lib/graphql/resolvers/todos.ex:182 -#: lib/graphql/resolvers/todos.ex:214 lib/graphql/resolvers/todos.ex:246 +#: lib/graphql/resolvers/post.ex:133 +#: lib/graphql/resolvers/post.ex:175 +#: lib/graphql/resolvers/post.ex:209 +#: lib/graphql/resolvers/resource.ex:90 +#: lib/graphql/resolvers/resource.ex:132 +#: lib/graphql/resolvers/resource.ex:165 +#: lib/graphql/resolvers/resource.ex:199 +#: lib/graphql/resolvers/todos.ex:58 +#: lib/graphql/resolvers/todos.ex:83 +#: lib/graphql/resolvers/todos.ex:110 +#: lib/graphql/resolvers/todos.ex:182 +#: lib/graphql/resolvers/todos.ex:214 +#: lib/graphql/resolvers/todos.ex:246 msgid "Profile is not member of group" msgstr "El perfil no es miembro del grupo" #, elixir-format -#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/person.ex:233 +#: lib/graphql/resolvers/actor.ex:67 +#: lib/graphql/resolvers/person.ex:233 msgid "Profile not found" msgstr "Perfil no encontrado" #, elixir-format -#: lib/graphql/resolvers/report.ex:40 +#: lib/graphql/resolvers/report.ex:48 msgid "Report not found" msgstr "Informe no encontrado" #, elixir-format -#: lib/graphql/resolvers/resource.ex:169 lib/graphql/resolvers/resource.ex:196 +#: lib/graphql/resolvers/resource.ex:169 +#: lib/graphql/resolvers/resource.ex:196 msgid "Resource doesn't exist" msgstr "El recurso no existe" @@ -487,12 +525,14 @@ msgid "This token is invalid" msgstr "Este token no es válido" #, elixir-format -#: lib/graphql/resolvers/todos.ex:176 lib/graphql/resolvers/todos.ex:243 +#: lib/graphql/resolvers/todos.ex:176 +#: lib/graphql/resolvers/todos.ex:243 msgid "Todo doesn't exist" msgstr "Todo no existe" #, elixir-format -#: lib/graphql/resolvers/todos.ex:77 lib/graphql/resolvers/todos.ex:211 +#: lib/graphql/resolvers/todos.ex:77 +#: lib/graphql/resolvers/todos.ex:211 #: lib/graphql/resolvers/todos.ex:240 msgid "Todo list doesn't exist" msgstr "La lista de tareas pendientes no existe" @@ -503,12 +543,13 @@ msgid "Token does not exist" msgstr "El token no existe" #, elixir-format -#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70 +#: lib/graphql/resolvers/feed_token.ex:67 +#: lib/graphql/resolvers/feed_token.ex:70 msgid "Token is not a valid UUID" msgstr "El token no es un UUID válido" #, elixir-format -#: lib/graphql/error.ex:96 lib/graphql/resolvers/person.ex:458 +#: lib/graphql/error.ex:96 msgid "User not found" msgstr "Usuario no encontrado" @@ -528,7 +569,8 @@ msgid "You are not a member of this group" msgstr "no eres un miembro de este grupo" #, elixir-format -#: lib/graphql/resolvers/member.ex:157 lib/graphql/resolvers/member.ex:173 +#: lib/graphql/resolvers/member.ex:157 +#: lib/graphql/resolvers/member.ex:173 #: lib/graphql/resolvers/member.ex:188 msgid "You are not a moderator or admin for this group" msgstr "No eres moderador ni administrador de este grupo" @@ -594,42 +636,42 @@ msgid "You don't have permission to delete this token" msgstr "No tienes permiso para eliminar este token" #, elixir-format -#: lib/graphql/resolvers/admin.ex:54 +#: lib/graphql/resolvers/admin.ex:56 msgid "You need to be logged-in and a moderator to list action logs" msgstr "" "Debe iniciar sesión y un moderador para enumerar los registros de acción" #, elixir-format -#: lib/graphql/resolvers/report.ex:28 +#: lib/graphql/resolvers/report.ex:36 msgid "You need to be logged-in and a moderator to list reports" msgstr "Debe iniciar sesión y un moderador para enumerar los informes" #, elixir-format -#: lib/graphql/resolvers/report.ex:107 +#: lib/graphql/resolvers/report.ex:115 msgid "You need to be logged-in and a moderator to update a report" msgstr "Debe iniciar sesión y ser un moderador para actualizar un informe" #, elixir-format -#: lib/graphql/resolvers/report.ex:45 +#: lib/graphql/resolvers/report.ex:53 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" #, elixir-format -#: lib/graphql/resolvers/admin.ex:255 +#: lib/graphql/resolvers/admin.ex:257 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" #, elixir-format -#: lib/graphql/resolvers/admin.ex:239 +#: lib/graphql/resolvers/admin.ex:241 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" #, elixir-format -#: lib/graphql/resolvers/admin.ex:281 +#: lib/graphql/resolvers/admin.ex:283 msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" "Debe iniciar sesión y ser administrador para acceder a las estadísticas del " @@ -656,7 +698,7 @@ msgid "You need to be logged-in to create posts" msgstr "Debes iniciar sesión para crear publicaciones" #, elixir-format -#: lib/graphql/resolvers/report.ex:79 +#: lib/graphql/resolvers/report.ex:87 msgid "You need to be logged-in to create reports" msgstr "Debe iniciar sesión para crear informes" @@ -753,7 +795,8 @@ msgid "Reset your password to login" msgstr "Restablezca su contraseña para iniciar sesión" #, elixir-format -#: lib/graphql/error.ex:95 lib/graphql/error.ex:100 +#: lib/graphql/error.ex:95 +#: lib/graphql/error.ex:100 msgid "Resource not found" msgstr "Recurso no encontrado" @@ -844,8 +887,11 @@ msgid "Profile ID provided is not the anonymous profile one" msgstr "El ID de perfil proporcionado no es el del perfil anónimo" #, elixir-format -#: lib/graphql/resolvers/group.ex:161 lib/graphql/resolvers/group.ex:203 -#: lib/graphql/resolvers/person.ex:148 lib/graphql/resolvers/person.ex:182 lib/graphql/resolvers/person.ex:304 +#: lib/graphql/resolvers/group.ex:161 +#: lib/graphql/resolvers/group.ex:203 +#: lib/graphql/resolvers/person.ex:148 +#: lib/graphql/resolvers/person.ex:182 +#: lib/graphql/resolvers/person.ex:304 msgid "The provided picture is too heavy" msgstr "La imagen proporcionada es demasiado pesada" @@ -870,7 +916,8 @@ msgid "Unable to fetch resource details from this URL." msgstr "No se pueden recuperar los detalles del recurso de esta URL." #, elixir-format -#: lib/graphql/resolvers/event.ex:164 lib/graphql/resolvers/participant.ex:253 +#: lib/graphql/resolvers/event.ex:164 +#: lib/graphql/resolvers/participant.ex:253 #: lib/graphql/resolvers/participant.ex:328 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "El perfil de moderador proporcionado no tiene permiso para este evento" @@ -927,6 +974,7 @@ msgid "Failed to update the group" msgstr "No se pudo actualizar el grupo" #, elixir-format +#: lib/graphql/resolvers/admin.ex:338 #: lib/graphql/resolvers/user.ex:469 msgid "Failed to update user email" msgstr "No se pudo actualizar el correo electrónico del usuario" @@ -1056,3 +1104,25 @@ msgstr "Debes iniciar sesión para eliminar un miembro" #: lib/graphql/resolvers/user.ex:157 msgid "Your email seems to be using an invalid format" msgstr "Su correo electrónico parece estar usando un formato no válido" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:387 +msgid "Can't confirm an already confirmed user" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:391 +msgid "Deconfirming users is not supported" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:363 +msgid "The new role must be different" +msgstr "El nuevo correo electrónico debe ser diferente" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:314 +msgid "You need to be logged-in and an administrator to edit an user's details" +msgstr "" +"Debe iniciar sesión y ser administrador para acceder a las estadísticas del " +"panel" diff --git a/priv/gettext/fi/LC_MESSAGES/activity.po b/priv/gettext/fi/LC_MESSAGES/activity.po index 55b6247d3..f7f3fff26 100644 --- a/priv/gettext/fi/LC_MESSAGES/activity.po +++ b/priv/gettext/fi/LC_MESSAGES/activity.po @@ -158,19 +158,22 @@ msgstr "%{profile} päivitti jäsentä %{member}." #, 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.text.eex:1 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:1 msgid "The event %{event} was created by %{profile}." msgstr "%{profile} loi tapahtuman %{event}." #, 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.text.eex:13 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:34 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:13 msgid "The event %{event} was deleted by %{profile}." msgstr "%{profile} poisti tapahtuman %{event}." #, 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.text.eex:7 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:19 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:7 msgid "The event %{event} was updated by %{profile}." msgstr "%{profile} päivitti tapahtumaa %{event}." @@ -200,13 +203,15 @@ msgstr "%{member} liittyi ryhmään." #, 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.text.eex:25 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:58 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:25 msgid "%{profile} posted a comment on the event %{event}." msgstr "%{profile} kommentoi tapahtumaa %{event}." #, 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.text.eex:19 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:43 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:19 msgid "%{profile} replied to a comment on the event %{event}." msgstr "%{profile} vastasi tapahtuman %{event} kommenttiin." @@ -227,7 +232,8 @@ msgstr[1] "Näytä %{count} seuraavaa toimenpidettä" #, 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.text.eex:6 +#: lib/web/templates/email/email_direct_activity.html.heex:46 +#: 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!" msgid_plural "There has been some activity!" @@ -241,14 +247,17 @@ msgstr "Toimenpide palvelimella %{instance}" #, 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.text.eex:7 -#: lib/web/templates/email/email_anonymous_activity.html.heex:41 lib/web/templates/email/email_anonymous_activity.text.eex:5 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:19 +#: 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.text.eex:5 msgid "%{profile} has posted an announcement under event %{event}." msgstr "%{profile} on julkaissut ilmoituksen tapahtumassa %{event}." #, 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.text.eex:1 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 msgid "%{profile} mentionned you in a comment under event %{event}." msgstr "%{profile} mainitsi sinut tapahtuman %{event} kommentissa." @@ -266,7 +275,8 @@ msgid "Here's your weekly activity recap" msgstr "Tässä on viikoittainen kertaus toiminnastasi" #, elixir-format -#: lib/web/email/activity.ex:119 lib/web/email/activity.ex:140 +#: lib/web/email/activity.ex:119 +#: lib/web/email/activity.ex:140 msgid "Activity notification for %{instance}" msgstr "Toimenpide palvelimella %{instance}" @@ -288,13 +298,15 @@ msgstr "Viikoittainen toiminnan kertaus instanssille %{instance}" #, 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.text.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:51 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:19 msgid "%{profile} has posted a new comment under your event %{event}." msgstr "%{profile} on lähettänyt uuden kommentin tapahtumaasi %{event}." #, 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.text.eex:13 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:36 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:13 msgid "%{profile} has posted a new reply under your event %{event}." msgstr "%{profiili} on lähettänyt uuden vastauksen tapahtumaasi %{event}." diff --git a/priv/gettext/fi/LC_MESSAGES/default.po b/priv/gettext/fi/LC_MESSAGES/default.po index c6086a972..4263ea5d1 100644 --- a/priv/gettext/fi/LC_MESSAGES/default.po +++ b/priv/gettext/fi/LC_MESSAGES/default.po @@ -920,9 +920,12 @@ msgstr "Älä käytä todellisiin tarkoituksiin." #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:63 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:133 -#: lib/web/templates/email/event_updated.text.eex:14 lib/web/templates/email/notification_each_week.html.heex:60 -#: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:60 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 +#: lib/web/templates/email/event_updated.html.heex:133 +#: lib/web/templates/email/event_updated.text.eex:14 +#: lib/web/templates/email/notification_each_week.html.heex:60 +#: lib/web/templates/email/notification_each_week.text.eex:11 +#: lib/web/templates/email/on_day_notification.html.heex:60 #: lib/web/templates/email/on_day_notification.text.eex:11 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." @@ -987,7 +990,6 @@ msgstr "" #, elixir-format #: lib/web/templates/email/email_changed_new.html.heex:38 -#: lib/web/templates/email/email_changed_new.text.eex:3 msgid "Hi there! It seems like you wanted to change the email address linked to your account on <b>%{instance}</b>. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." msgstr "" "Hei! Haluat ilmeisesti vaihtaa palvelimella <b>%{instance}</b> olevaan " @@ -1021,7 +1023,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:70 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.heex:45 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 +#: lib/web/templates/email/registration_confirmation.html.heex:45 msgid "If you didn't trigger this email, you may safely ignore it." msgstr "Jos et lähettänyt pyyntöä, voit jättää tämän viestin huomiotta." @@ -1137,7 +1140,8 @@ msgstr "Näytä raportti:" #, elixir-format #: lib/web/templates/email/email_anonymous_activity.html.heex:67 -#: lib/web/templates/email/event_participation_approved.html.heex:58 lib/web/templates/email/event_participation_confirmed.html.heex:58 +#: lib/web/templates/email/event_participation_approved.html.heex:58 +#: lib/web/templates/email/event_participation_confirmed.html.heex:58 msgid "Visit event page" msgstr "Käy tapahtumasivulla" @@ -1159,7 +1163,8 @@ msgstr "Mitä tänään tapahtuu?" #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:70 -#: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.heex:70 +#: lib/web/templates/email/event_participation_approved.text.eex:11 +#: lib/web/templates/email/event_participation_confirmed.html.heex:70 #: lib/web/templates/email/event_participation_confirmed.text.eex:6 msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." msgstr "" @@ -1189,7 +1194,8 @@ msgstr "Lähetit pyynnön osallistua tapahtumaan %{title}." #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:13 -#: lib/web/templates/email/event_participation_confirmed.html.heex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 +#: lib/web/templates/email/event_participation_confirmed.html.heex:13 +#: lib/web/templates/email/event_participation_confirmed.text.eex:1 msgid "You're going!" msgstr "Olet mukana!" @@ -1613,8 +1619,10 @@ msgid "This is a demonstration site to test Mobilizon." msgstr "Tämä on koekäyttöön tarkoitettu Mobilizonin esittelysivu." #, elixir-format -#: lib/service/metadata/actor.ex:91 lib/service/metadata/actor.ex:99 -#: lib/service/metadata/instance.ex:56 lib/service/metadata/instance.ex:62 +#: lib/service/metadata/actor.ex:91 +#: lib/service/metadata/actor.ex:99 +#: lib/service/metadata/instance.ex:56 +#: lib/service/metadata/instance.ex:62 msgid "%{name}'s feed" msgstr "%{name} – syöte" @@ -1701,7 +1709,8 @@ msgstr "Osallistumisesi tapahtumaan %{title} on hyväksytty" #. File name template for exported list of participants. Should NOT contain spaces. Make sure the output is going to be something standardized that is acceptable as a file name on most systems. #, elixir-format #: lib/service/export/participants/csv.ex:81 -#: lib/service/export/participants/ods.ex:86 lib/service/export/participants/pdf.ex:96 +#: lib/service/export/participants/ods.ex:86 +#: lib/service/export/participants/pdf.ex:96 msgid "%{event}_participants" msgstr "" @@ -1722,6 +1731,8 @@ msgstr "" #, elixir-format #: lib/service/export/participants/common.ex:52 +#: lib/web/templates/email/admin/_role.html.heex:3 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Administrator" msgstr "" @@ -1732,6 +1743,8 @@ msgstr "" #, elixir-format #: lib/service/export/participants/common.ex:49 +#: lib/web/templates/email/admin/_role.html.heex:5 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Moderator" msgstr "" @@ -1782,8 +1795,10 @@ msgstr "" #, elixir-format #: lib/web/templates/email/date/event_tz_date.html.heex:6 -#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 lib/web/templates/email/date/event_tz_date_range.html.heex:12 -#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:12 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 msgid "🌐 %{timezone} %{offset}" msgstr "" @@ -1972,3 +1987,141 @@ msgid_plural "You have %{number_participation_requests} attendance requests to p msgstr[0] "Yksi osallistujapyyntö odottaa käsittelyäsi:" msgstr[1] "" "%{number_participation_requests} osallistujapyyntöä odottaa käsittelyäsi:" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:13 +#: lib/web/templates/email/admin_user_role_changed.text.eex:1 +msgid "An administrator changed your role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:120 +msgid "An administrator confirmed your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:1 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:1 +msgid "An administrator manually changed the email attached to your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:47 +#: lib/web/email/admin.ex:72 +msgid "An administrator manually changed the email attached to your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:13 +#: lib/web/templates/email/admin_user_confirmation.text.eex:1 +msgid "An administrator manually confirmed your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:98 +msgid "An administrator updated your role on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/email_changed_new.text.eex:3 +msgid "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." +msgstr "" +"Hei! Haluat ilmeisesti vaihtaa palvelimella <b>%{instance}</b> olevaan " +"tiliisi liitetyn sähköpostiosoitteen. Jos tämä pitää paikkansa, vahvista " +"vaihto napsauttamalla alla olevaa painiketta. Sen jälkeen voit kirjautua " +"palvelimelle %{instance} uudella sähköpostiosoitteella." + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:3 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually changed your account email from %{old_email} (this one) to %{new_email}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> (this one) to <b>%{new_email}</b>." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> to <b>%{new_email}</b> (this one)." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:71 +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:45 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:45 +#: lib/web/templates/email/admin_user_role_changed.html.heex:67 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods %{start_link}on the instance's about page%{end_link}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:7 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:4 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:4 +#: lib/web/templates/email/admin_user_role_changed.text.eex:8 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods on the instance's about page: %{about_page}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:58 +msgid "Login on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:55 +msgid "New role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:6 +msgid "New role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:47 +msgid "Old role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:5 +msgid "Old role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin/_role.html.heex:7 +#: lib/web/templates/email/admin/_role.text.eex:1 +msgid "User" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:45 +msgid "You may now login using your credentials on the service." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:5 +msgid "You may now login using your credentials on the service:" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just changed your account role." +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just changed your account role." +msgstr "" diff --git a/priv/gettext/fi/LC_MESSAGES/errors.po b/priv/gettext/fi/LC_MESSAGES/errors.po index 45e65e805..70d53dc58 100644 --- a/priv/gettext/fi/LC_MESSAGES/errors.po +++ b/priv/gettext/fi/LC_MESSAGES/errors.po @@ -115,14 +115,19 @@ msgid "Error while saving user settings" msgstr "Käyttäjän asetusten tallennuksessa tapahtui virhe" #, elixir-format -#: lib/graphql/error.ex:99 lib/graphql/resolvers/group.ex:249 -#: lib/graphql/resolvers/group.ex:281 lib/graphql/resolvers/group.ex:318 lib/graphql/resolvers/group.ex:349 -#: lib/graphql/resolvers/group.ex:398 lib/graphql/resolvers/member.ex:81 +#: lib/graphql/error.ex:99 +#: lib/graphql/resolvers/group.ex:249 +#: lib/graphql/resolvers/group.ex:281 +#: lib/graphql/resolvers/group.ex:318 +#: lib/graphql/resolvers/group.ex:349 +#: lib/graphql/resolvers/group.ex:398 +#: lib/graphql/resolvers/member.ex:81 msgid "Group not found" msgstr "Ryhmää ei löydy" #, elixir-format -#: lib/graphql/resolvers/group.ex:78 lib/graphql/resolvers/group.ex:82 +#: lib/graphql/resolvers/group.ex:78 +#: lib/graphql/resolvers/group.ex:82 msgid "Group with ID %{id} not found" msgstr "Tunnuksella %{id} ei löydy ryhmää" @@ -148,15 +153,21 @@ msgid "No user to validate with this email was found" msgstr "Käyttäjää tämän sähköpostin vahvistamiseksi ei löydy" #, elixir-format -#: lib/graphql/resolvers/person.ex:314 lib/graphql/resolvers/user.ex:298 +#: lib/graphql/resolvers/person.ex:314 +#: lib/graphql/resolvers/user.ex:298 msgid "No user with this email was found" msgstr "Käyttäjää, jolla on tämä sähköpostiosoite ei löydy" #, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:32 lib/graphql/resolvers/participant.ex:210 lib/graphql/resolvers/person.ex:236 -#: lib/graphql/resolvers/person.ex:353 lib/graphql/resolvers/person.ex:380 lib/graphql/resolvers/person.ex:397 -#: lib/graphql/resolvers/person.ex:425 lib/graphql/resolvers/person.ex:440 +#: lib/graphql/resolvers/participant.ex:32 +#: lib/graphql/resolvers/participant.ex:210 +#: lib/graphql/resolvers/person.ex:236 +#: lib/graphql/resolvers/person.ex:353 +#: lib/graphql/resolvers/person.ex:380 +#: lib/graphql/resolvers/person.ex:397 +#: lib/graphql/resolvers/person.ex:425 +#: lib/graphql/resolvers/person.ex:440 msgid "Profile is not owned by authenticated user" msgstr "Profiili ei ole tunnistautuneen käyttäjän omistuksessa" @@ -171,11 +182,13 @@ msgid "The current password is invalid" msgstr "Nykyinen salasana ei kelpaa" #, elixir-format +#: lib/graphql/resolvers/admin.ex:341 #: lib/graphql/resolvers/user.ex:472 msgid "The new email doesn't seem to be valid" msgstr "Uusi sähköpostiosoite ei vaikuta kelvolliselta" #, elixir-format +#: lib/graphql/resolvers/admin.ex:344 #: lib/graphql/resolvers/user.ex:475 msgid "The new email must be different" msgstr "Uuden sähköpostiosoitteen on poikettava vanhasta" @@ -186,7 +199,8 @@ msgid "The new password must be different" msgstr "Uuden salasanan on poikettava vanhasta" #, elixir-format -#: lib/graphql/resolvers/user.ex:479 lib/graphql/resolvers/user.ex:541 +#: lib/graphql/resolvers/user.ex:479 +#: lib/graphql/resolvers/user.ex:541 #: lib/graphql/resolvers/user.ex:544 msgid "The password provided is invalid" msgstr "Annettu salasana on epäkelpo" @@ -209,7 +223,8 @@ msgid "This user has been disabled" msgstr "Käyttäjä on poistettu käytöstä" #, elixir-format -#: lib/graphql/resolvers/user.ex:252 lib/graphql/resolvers/user.ex:257 +#: lib/graphql/resolvers/user.ex:252 +#: lib/graphql/resolvers/user.ex:257 msgid "Unable to validate user" msgstr "Käyttäjää ei voi vahvistaa" @@ -284,7 +299,8 @@ msgid "You need to have an existing token to get a refresh token" msgstr "Voit saada uuden merkin vain, jos sinulla on jo merkki" #, elixir-format -#: lib/graphql/resolvers/user.ex:276 lib/graphql/resolvers/user.ex:301 +#: lib/graphql/resolvers/user.ex:276 +#: lib/graphql/resolvers/user.ex:301 msgid "You requested again a confirmation email too soon" msgstr "Pyysit uutta vahvistussähköpostia liian aikaisin" @@ -304,7 +320,8 @@ msgid "No profile found with this ID" msgstr "Tällä tunnisteella ei löytynyt profiilia" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:97 +#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:97 msgid "No remote profile found with this ID" msgstr "Tällä tunnisteella ei löytynyt etäprofiilia" @@ -355,17 +372,19 @@ msgid "Comment is already deleted" msgstr "Kommentti on jo poistettu" #, elixir-format -#: lib/graphql/error.ex:101 lib/graphql/resolvers/discussion.ex:69 +#: lib/graphql/error.ex:101 +#: lib/graphql/resolvers/discussion.ex:69 msgid "Discussion not found" msgstr "Keskustelua ei löydy" #, elixir-format -#: lib/graphql/resolvers/report.ex:63 lib/graphql/resolvers/report.ex:82 +#: lib/graphql/resolvers/report.ex:71 +#: lib/graphql/resolvers/report.ex:90 msgid "Error while saving report" msgstr "Virhe raporttia tallennettaessa" #, elixir-format -#: lib/graphql/resolvers/report.ex:102 +#: lib/graphql/resolvers/report.ex:110 msgid "Error while updating report" msgstr "Virhe raporttia päivitettäessä" @@ -375,14 +394,16 @@ msgid "Event id not found" msgstr "Tapahtumatunnistetta ei löydy" #, elixir-format -#: lib/graphql/error.ex:98 lib/graphql/resolvers/event.ex:360 +#: lib/graphql/error.ex:98 +#: lib/graphql/resolvers/event.ex:360 #: lib/graphql/resolvers/event.ex:412 msgid "Event not found" msgstr "Tapahtumaa ei löydy" #, elixir-format #: lib/graphql/resolvers/participant.ex:87 -#: lib/graphql/resolvers/participant.ex:128 lib/graphql/resolvers/participant.ex:155 +#: lib/graphql/resolvers/participant.ex:128 +#: lib/graphql/resolvers/participant.ex:155 #: lib/graphql/resolvers/participant.ex:336 msgid "Event with this ID %{id} doesn't exist" msgstr "Tunnisteella %{id} ei ole tapahtumaa" @@ -398,8 +419,11 @@ msgid "No discussion with ID %{id}" msgstr "Tunnisteella %{id} ei ole keskustelua" #, elixir-format -#: lib/graphql/resolvers/todos.ex:80 lib/graphql/resolvers/todos.ex:107 -#: lib/graphql/resolvers/todos.ex:179 lib/graphql/resolvers/todos.ex:208 lib/graphql/resolvers/todos.ex:237 +#: lib/graphql/resolvers/todos.ex:80 +#: lib/graphql/resolvers/todos.ex:107 +#: lib/graphql/resolvers/todos.ex:179 +#: lib/graphql/resolvers/todos.ex:208 +#: lib/graphql/resolvers/todos.ex:237 msgid "No profile found for user" msgstr "Käyttäjälle ei löydy profiilia" @@ -415,7 +439,8 @@ msgstr "Osallistujalla on jo rooli %{role}" #, elixir-format #: lib/graphql/resolvers/participant.ex:187 -#: lib/graphql/resolvers/participant.ex:220 lib/graphql/resolvers/participant.ex:263 +#: lib/graphql/resolvers/participant.ex:220 +#: lib/graphql/resolvers/participant.ex:263 msgid "Participant not found" msgstr "Osallistujaa ei löydy" @@ -430,12 +455,14 @@ msgid "Person with username %{username} not found" msgstr "Käyttäjänimellä %{username} ei löydy henkilöä" #, elixir-format -#: lib/graphql/resolvers/post.ex:169 lib/graphql/resolvers/post.ex:203 +#: lib/graphql/resolvers/post.ex:169 +#: lib/graphql/resolvers/post.ex:203 msgid "Post ID is not a valid ID" msgstr "Julkaisun tunnus ei ole kelvollinen" #, elixir-format -#: lib/graphql/resolvers/post.ex:172 lib/graphql/resolvers/post.ex:206 +#: lib/graphql/resolvers/post.ex:172 +#: lib/graphql/resolvers/post.ex:206 msgid "Post doesn't exist" msgstr "Julkaisua ei ole" @@ -445,31 +472,42 @@ msgid "Profile invited doesn't exist" msgstr "Kutsuttua profiilia ei ole" #, elixir-format -#: lib/graphql/resolvers/member.ex:93 lib/graphql/resolvers/member.ex:97 +#: lib/graphql/resolvers/member.ex:93 +#: lib/graphql/resolvers/member.ex:97 msgid "Profile is already a member of this group" msgstr "Profiili on jo ryhmän jäsen" #, elixir-format -#: lib/graphql/resolvers/post.ex:133 lib/graphql/resolvers/post.ex:175 -#: lib/graphql/resolvers/post.ex:209 lib/graphql/resolvers/resource.ex:90 lib/graphql/resolvers/resource.ex:132 -#: lib/graphql/resolvers/resource.ex:165 lib/graphql/resolvers/resource.ex:199 lib/graphql/resolvers/todos.ex:58 -#: lib/graphql/resolvers/todos.ex:83 lib/graphql/resolvers/todos.ex:110 lib/graphql/resolvers/todos.ex:182 -#: lib/graphql/resolvers/todos.ex:214 lib/graphql/resolvers/todos.ex:246 +#: lib/graphql/resolvers/post.ex:133 +#: lib/graphql/resolvers/post.ex:175 +#: lib/graphql/resolvers/post.ex:209 +#: lib/graphql/resolvers/resource.ex:90 +#: lib/graphql/resolvers/resource.ex:132 +#: lib/graphql/resolvers/resource.ex:165 +#: lib/graphql/resolvers/resource.ex:199 +#: lib/graphql/resolvers/todos.ex:58 +#: lib/graphql/resolvers/todos.ex:83 +#: lib/graphql/resolvers/todos.ex:110 +#: lib/graphql/resolvers/todos.ex:182 +#: lib/graphql/resolvers/todos.ex:214 +#: lib/graphql/resolvers/todos.ex:246 msgid "Profile is not member of group" msgstr "Profiili ei ole ryhmän jäsen" #, elixir-format -#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/person.ex:233 +#: lib/graphql/resolvers/actor.ex:67 +#: lib/graphql/resolvers/person.ex:233 msgid "Profile not found" msgstr "Profiilia ei löydy" #, elixir-format -#: lib/graphql/resolvers/report.ex:40 +#: lib/graphql/resolvers/report.ex:48 msgid "Report not found" msgstr "Raporttia ei löydy" #, elixir-format -#: lib/graphql/resolvers/resource.ex:169 lib/graphql/resolvers/resource.ex:196 +#: lib/graphql/resolvers/resource.ex:169 +#: lib/graphql/resolvers/resource.ex:196 msgid "Resource doesn't exist" msgstr "Resurssia ei ole" @@ -484,12 +522,14 @@ msgid "This token is invalid" msgstr "Epäkelpo merkki" #, elixir-format -#: lib/graphql/resolvers/todos.ex:176 lib/graphql/resolvers/todos.ex:243 +#: lib/graphql/resolvers/todos.ex:176 +#: lib/graphql/resolvers/todos.ex:243 msgid "Todo doesn't exist" msgstr "Työkalua ei ole" #, elixir-format -#: lib/graphql/resolvers/todos.ex:77 lib/graphql/resolvers/todos.ex:211 +#: lib/graphql/resolvers/todos.ex:77 +#: lib/graphql/resolvers/todos.ex:211 #: lib/graphql/resolvers/todos.ex:240 msgid "Todo list doesn't exist" msgstr "Tehtäväluetteloa ei ole" @@ -500,12 +540,13 @@ msgid "Token does not exist" msgstr "Merkkiä ei ole" #, elixir-format -#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70 +#: lib/graphql/resolvers/feed_token.ex:67 +#: lib/graphql/resolvers/feed_token.ex:70 msgid "Token is not a valid UUID" msgstr "Merkki ei ole kelvollinen UUID" #, elixir-format -#: lib/graphql/error.ex:96 lib/graphql/resolvers/person.ex:458 +#: lib/graphql/error.ex:96 msgid "User not found" msgstr "Käyttäjää ei löydy" @@ -525,7 +566,8 @@ msgid "You are not a member of this group" msgstr "Et ole ryhmän jäsen" #, elixir-format -#: lib/graphql/resolvers/member.ex:157 lib/graphql/resolvers/member.ex:173 +#: lib/graphql/resolvers/member.ex:157 +#: lib/graphql/resolvers/member.ex:173 #: lib/graphql/resolvers/member.ex:188 msgid "You are not a moderator or admin for this group" msgstr "Et ole ryhmän moderaattori tai ylläpitäjä" @@ -590,37 +632,37 @@ msgid "You don't have permission to delete this token" msgstr "Sinulla ei ole oikeutta poistaa tätä merkkiä" #, elixir-format -#: lib/graphql/resolvers/admin.ex:54 +#: lib/graphql/resolvers/admin.ex:56 msgid "You need to be logged-in and a moderator to list action logs" msgstr "Toimintalokien katselu vain moderaattorille sisäänkirjautuneena" #, elixir-format -#: lib/graphql/resolvers/report.ex:28 +#: lib/graphql/resolvers/report.ex:36 msgid "You need to be logged-in and a moderator to list reports" msgstr "Raporttien katselu vain moderaattorille sisäänkirjautuneena" #, elixir-format -#: lib/graphql/resolvers/report.ex:107 +#: lib/graphql/resolvers/report.ex:115 msgid "You need to be logged-in and a moderator to update a report" msgstr "Raportin päivittäminen vain moderaattorille sisäänkirjautuneena" #, elixir-format -#: lib/graphql/resolvers/report.ex:45 +#: lib/graphql/resolvers/report.ex:53 msgid "You need to be logged-in and a moderator to view a report" msgstr "Raportin katselu vain moderaattorille sisäänkirjautuneena" #, elixir-format -#: lib/graphql/resolvers/admin.ex:255 +#: lib/graphql/resolvers/admin.ex:257 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" #, elixir-format -#: lib/graphql/resolvers/admin.ex:239 +#: lib/graphql/resolvers/admin.ex:241 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" #, elixir-format -#: lib/graphql/resolvers/admin.ex:281 +#: lib/graphql/resolvers/admin.ex:283 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" @@ -645,7 +687,7 @@ msgid "You need to be logged-in to create posts" msgstr "Julkaisujen luonti vain sisäänkirjautuneena" #, elixir-format -#: lib/graphql/resolvers/report.ex:79 +#: lib/graphql/resolvers/report.ex:87 msgid "You need to be logged-in to create reports" msgstr "Raporttien luonti vain sisäänkirjautuneena" @@ -740,7 +782,8 @@ msgid "Reset your password to login" msgstr "Palauta salasana, jotta voit kirjautua sisään" #, elixir-format -#: lib/graphql/error.ex:95 lib/graphql/error.ex:100 +#: lib/graphql/error.ex:95 +#: lib/graphql/error.ex:100 msgid "Resource not found" msgstr "Resurssia ei löydy" @@ -830,8 +873,11 @@ msgid "Profile ID provided is not the anonymous profile one" msgstr "Annettu profiilitunniste ei kuulu anonyymille profiilille" #, elixir-format -#: lib/graphql/resolvers/group.ex:161 lib/graphql/resolvers/group.ex:203 -#: lib/graphql/resolvers/person.ex:148 lib/graphql/resolvers/person.ex:182 lib/graphql/resolvers/person.ex:304 +#: lib/graphql/resolvers/group.ex:161 +#: lib/graphql/resolvers/group.ex:203 +#: lib/graphql/resolvers/person.ex:148 +#: lib/graphql/resolvers/person.ex:182 +#: lib/graphql/resolvers/person.ex:304 msgid "The provided picture is too heavy" msgstr "Toimitettu kuva on liian suuri" @@ -856,7 +902,8 @@ msgid "Unable to fetch resource details from this URL." msgstr "Resurssin tietoja ei voida hakea tästä URL-osoitteesta." #, elixir-format -#: lib/graphql/resolvers/event.ex:164 lib/graphql/resolvers/participant.ex:253 +#: lib/graphql/resolvers/event.ex:164 +#: lib/graphql/resolvers/participant.ex:253 #: lib/graphql/resolvers/participant.ex:328 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "Annetulla moderaattoriprofiililla ei ole oikeuksia tähän tapahtumaan" @@ -907,6 +954,7 @@ msgid "Failed to update the group" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:338 #: lib/graphql/resolvers/user.ex:469 msgid "Failed to update user email" msgstr "" @@ -1035,3 +1083,23 @@ msgstr "" #: lib/graphql/resolvers/user.ex:157 msgid "Your email seems to be using an invalid format" msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:387 +msgid "Can't confirm an already confirmed user" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:391 +msgid "Deconfirming users is not supported" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:363 +msgid "The new role must be different" +msgstr "Uuden sähköpostiosoitteen on poikettava vanhasta" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:314 +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" diff --git a/priv/gettext/fr/LC_MESSAGES/activity.po b/priv/gettext/fr/LC_MESSAGES/activity.po index 2e7857cfe..3de1d1490 100644 --- a/priv/gettext/fr/LC_MESSAGES/activity.po +++ b/priv/gettext/fr/LC_MESSAGES/activity.po @@ -160,19 +160,22 @@ msgstr "%{profile} a mis à jour le membre %{member}." #, 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.text.eex:1 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:1 msgid "The event %{event} was created by %{profile}." msgstr "L'événement %{event} a été créé par %{profile}." #, 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.text.eex:13 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:34 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:13 msgid "The event %{event} was deleted by %{profile}." msgstr "L'événement %{event} a été supprimé par %{profile}." #, 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.text.eex:7 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:19 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:7 msgid "The event %{event} was updated by %{profile}." msgstr "L'événement %{event} a été mis à jour par %{profile}." @@ -202,13 +205,15 @@ msgstr "%{member} a rejoint le groupe." #, 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.text.eex:25 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:58 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:25 msgid "%{profile} posted a comment on the event %{event}." msgstr "%{profile} a posté un commentaire sur l'événement %{event}." #, 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.text.eex:19 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:43 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:19 msgid "%{profile} replied to a comment on the event %{event}." msgstr "%{profile} a répondu à un commentaire sur l'événement %{event}." @@ -227,7 +232,8 @@ msgstr[1] "Voir %{count} activités de plus" #, 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.text.eex:6 +#: lib/web/templates/email/email_direct_activity.html.heex:46 +#: 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!" msgid_plural "There has been some activity!" @@ -241,14 +247,17 @@ msgstr "Activité sur %{instance}" #, 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.text.eex:7 -#: lib/web/templates/email/email_anonymous_activity.html.heex:41 lib/web/templates/email/email_anonymous_activity.text.eex:5 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:19 +#: 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.text.eex:5 msgid "%{profile} has posted an announcement under event %{event}." msgstr "%{profile} a posté une annonce sous l'événement %{event}." #, 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.text.eex:1 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 msgid "%{profile} mentionned you in a comment under event %{event}." msgstr "%{profile} vous a mentionné dans un commentaire sous l'événement %{event}." @@ -266,7 +275,8 @@ msgid "Here's your weekly activity recap" msgstr "Voici votre récapitulatif hebdomadaire d'activité" #, elixir-format -#: lib/web/email/activity.ex:119 lib/web/email/activity.ex:140 +#: lib/web/email/activity.ex:119 +#: lib/web/email/activity.ex:140 msgid "Activity notification for %{instance}" msgstr "Notification d'activité sur %{instance}" @@ -288,13 +298,15 @@ msgstr "Récapitulatif hebdomadaire d'activité sur %{instance}" #, 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.text.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:51 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:19 msgid "%{profile} has posted a new comment under your event %{event}." msgstr "%{profile} a posté un nouveau commentaire sous votre événement %{event}." #, 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.text.eex:13 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:36 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:13 msgid "%{profile} has posted a new reply under your event %{event}." msgstr "%{profile} a posté une nouvelle réponse sous votre événement %{event}." diff --git a/priv/gettext/fr/LC_MESSAGES/default.po b/priv/gettext/fr/LC_MESSAGES/default.po index 034f98634..2af57bfb5 100644 --- a/priv/gettext/fr/LC_MESSAGES/default.po +++ b/priv/gettext/fr/LC_MESSAGES/default.po @@ -10,1150 +10,912 @@ msgid "" msgstr "" "Project-Id-Version: \n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2021-12-17 21:15+0000\n" +"PO-Revision-Date: 2022-01-14 18:10+0100\n" "Last-Translator: Thomas Citharel <thomas.citharel@framasoft.org>\n" -"Language-Team: French <https://weblate.framasoft.org/projects/mobilizon/" -"backend/fr/>\n" +"Language-Team: French <https://weblate.framasoft.org/projects/mobilizon/backend/fr/>\n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.10\n" +"X-Generator: Poedit 3.0.1\n" #: lib/web/templates/email/password_reset.html.heex:48 -#, elixir-format msgid "If you didn't request this, please ignore this email. Your password won't change until you access the link below and create a new one." msgstr "Si vous n'avez pas demandé ceci, vous pouvez ignorer cet email. Votre mot de passe ne changera pas tant que vous n'en créerez pas un nouveau en cliquant sur le lien ci-dessous." #: lib/web/templates/email/report.html.heex:74 -#, elixir-format msgid "%{title} by %{creator}" msgstr "%{title} par %{creator}" #: lib/web/templates/email/registration_confirmation.html.heex:58 -#, elixir-format msgid "Activate my account" msgstr "Activer mon compte" -#: lib/web/templates/email/email.html.heex:120 -#: lib/web/templates/email/email.text.eex:9 -#, elixir-format +#: lib/web/templates/email/email.html.heex:120 lib/web/templates/email/email.text.eex:9 msgid "Ask the community on Framacolibri" msgstr "Demander à la communauté sur Framacolibri" #: lib/web/templates/email/report.text.eex:15 -#, elixir-format msgid "Comments" msgstr "Commentaires" -#: lib/web/templates/email/report.html.heex:72 -#: lib/web/templates/email/report.text.eex:11 -#, elixir-format +#: lib/web/templates/email/report.html.heex:72 lib/web/templates/email/report.text.eex:11 msgid "Event" msgstr "Événement" #: lib/web/email/user.ex:49 -#, elixir-format msgid "Instructions to reset your password on %{instance}" msgstr "Instructions pour réinitialiser votre mot de passe sur %{instance}" #: lib/web/templates/email/report.text.eex:21 -#, elixir-format msgid "Reason" msgstr "Raison" #: lib/web/templates/email/password_reset.html.heex:61 -#, elixir-format msgid "Reset Password" msgstr "Réinitialiser mon mot de passe" #: lib/web/templates/email/password_reset.html.heex:41 -#, elixir-format msgid "Resetting your password is easy. Just press the button below and follow the instructions. We'll have you up and running in no time." msgstr "Réinitialiser votre mot de passe est facile. Cliquez simplement sur le bouton et suivez les inscriptions. Vous serez opérationnel en un rien de temps." #: lib/web/email/user.ex:28 -#, elixir-format msgid "Instructions to confirm your Mobilizon account on %{instance}" msgstr "Instructions pour confirmer votre compte Mobilizon sur %{instance}" #: lib/web/email/admin.ex:24 -#, elixir-format msgid "New report on Mobilizon instance %{instance}" msgstr "Nouveau signalement sur l'instance Mobilizon %{instance}" -#: lib/web/templates/email/before_event_notification.html.heex:51 -#: lib/web/templates/email/before_event_notification.text.eex:4 -#, elixir-format +#: lib/web/templates/email/before_event_notification.html.heex:51 lib/web/templates/email/before_event_notification.text.eex:4 msgid "Go to event page" msgstr "Aller à la page de l'événement" #: lib/web/templates/email/report.text.eex:1 -#, elixir-format msgid "New report from %{reporter} on %{instance}" msgstr "Nouveau signalement sur %{instance}" #: lib/web/templates/email/event_participation_approved.text.eex:1 -#, elixir-format msgid "Participation approved" msgstr "Participation approuvée" -#: lib/web/templates/email/password_reset.html.heex:13 -#: lib/web/templates/email/password_reset.text.eex:1 -#, elixir-format +#: lib/web/templates/email/password_reset.html.heex:13 lib/web/templates/email/password_reset.text.eex:1 msgid "Password reset" msgstr "Réinitialisation du mot de passe" #: lib/web/templates/email/password_reset.text.eex:7 -#, elixir-format msgid "Resetting your password is easy. Just click the link below and follow the instructions. We'll have you up and running in no time." msgstr "Réinitialiser votre mot de passe est facile. Cliquez simplement sur le bouton et suivez les instructions. Vous serez opérationnel en un rien de temps." #: lib/web/templates/email/registration_confirmation.text.eex:5 -#, elixir-format msgid "You created an account on %{host} with this email address. You are one click away from activating it. If this wasn't you, please ignore this email." msgstr "Vous avez créé un compte sur %{host} avec cette adresse email. Vous êtes à un clic de l'activer." #: lib/web/email/participation.ex:111 -#, elixir-format msgid "Your participation to event %{title} has been approved" msgstr "Votre participation à l'événement %{title} a été approuvée" #: lib/web/email/participation.ex:68 -#, elixir-format msgid "Your participation to event %{title} has been rejected" msgstr "Votre participation à l'événement %{title} a été rejetée" #: lib/web/email/event.ex:46 -#, elixir-format msgid "Event %{title} has been updated" msgstr "L'événement %{title} a été mis à jour" #: lib/web/templates/email/event_updated.text.eex:7 -#, elixir-format msgid "New title: %{title}" msgstr "Nouveau titre : %{title}" #: lib/web/templates/email/password_reset.text.eex:5 -#, elixir-format msgid "You requested a new password for your account on %{instance}." msgstr "Vous avez demandé un nouveau mot de passe pour votre compte sur %{instance}." #: lib/web/templates/email/email.html.heex:88 -#, elixir-format msgid "Warning" msgstr "Attention" #: lib/web/email/participation.ex:135 -#, elixir-format msgid "Confirm your participation to event %{title}" msgstr "Confirmer ma participation à l'événement %{title}" #: lib/web/templates/api/privacy.html.heex:75 -#, elixir-format msgctxt "terms" msgid "An internal ID for your current selected identity" msgstr "Une identité interne pour l'identité sélectionnée actuellement" #: lib/web/templates/api/privacy.html.heex:74 -#, elixir-format msgctxt "terms" msgid "An internal user ID" msgstr "Une identité utilisateur·ice interne" #: lib/web/templates/api/privacy.html.heex:37 -#, elixir-format msgctxt "terms" msgid "Any of the information we collect from you may be used in the following ways:" msgstr "Les informations que nous vous nous fournissez pourront être utilisées ainsi :" #: lib/web/templates/api/privacy.html.heex:9 -#, elixir-format msgctxt "terms" msgid "Basic account information" msgstr "Informations basiques du compte" #: lib/web/templates/api/privacy.html.heex:25 -#, elixir-format msgctxt "terms" msgid "Do not share any dangerous information over Mobilizon." msgstr "Ne partagez aucune information sensible à l'aide de Mobilizon." #: lib/web/templates/api/privacy.html.heex:90 -#, elixir-format msgctxt "terms" msgid "Do we disclose any information to outside parties?" msgstr "Partageons-nous des informations à des tiers ?" #: lib/web/templates/api/privacy.html.heex:68 -#, elixir-format msgctxt "terms" msgid "Do we use cookies?" msgstr "Utilisons-nous des cookies ?" #: lib/web/templates/api/privacy.html.heex:51 -#, elixir-format msgctxt "terms" msgid "How do we protect your information?" msgstr "Comment protégeons-nous vos informations ?" #: lib/web/templates/api/privacy.html.heex:29 -#, elixir-format msgctxt "terms" msgid "IPs and other metadata" msgstr "Adresses IP et autres métadonnées" #: lib/web/templates/api/privacy.html.heex:17 -#, elixir-format msgctxt "terms" msgid "Published events and comments" msgstr "Événements publiés et commentaires" #: lib/web/templates/api/privacy.html.heex:64 -#, elixir-format msgctxt "terms" msgid "Retain the IP addresses associated with registered users no more than 12 months." msgstr "Ne pas conserver les adresses IP associées aux utilisateur·ices enregistrés pas plus de 12 mois." #: lib/web/templates/api/privacy.html.heex:76 -#, elixir-format msgctxt "terms" msgid "Tokens to authenticate you" msgstr "Jetons pour vous identifier" #: lib/web/templates/api/privacy.html.heex:31 -#, elixir-format msgctxt "terms" msgid "We also may retain server logs which include the IP address of every request to our server." msgstr "Nous pouvons également conserver les données d'authentification y compris les adresses IP de toutes les requêtes de notre serveur." #: lib/web/templates/api/privacy.html.heex:70 -#, elixir-format msgctxt "terms" msgid "We store the following information on your device when you connect:" msgstr "Nous conservons les informations suivantes sur votre appareil lorsque vous vous connectez :" #: lib/web/templates/api/privacy.html.heex:58 -#, elixir-format msgctxt "terms" msgid "We will make a good faith effort to:" msgstr "Nous mettrons tout en possible pour :" #: lib/web/templates/api/privacy.html.heex:35 -#, elixir-format msgctxt "terms" msgid "What do we use your information for?" msgstr "Comment utilisons-nous vos informations ?" #: lib/web/templates/api/privacy.html.heex:57 -#, elixir-format msgctxt "terms" msgid "What is our data retention policy?" msgstr "Quelle est notre politique de conservation des données ?" #: lib/web/templates/api/privacy.html.heex:67 -#, elixir-format msgctxt "terms" msgid "You may irreversibly delete your account at any time." msgstr "Vous pouvez supprimer votre compte à tout moment de façon irréversible." #: lib/web/templates/api/privacy.html.heex:115 -#, elixir-format msgctxt "terms" msgid "Changes to our Privacy Policy" msgstr "Modifications de notre politique de confidentialité" #: lib/web/templates/api/privacy.html.heex:106 -#, elixir-format msgctxt "terms" msgid "If this server is in the EU or the EEA: Our site, products and services are all directed to people who are at least 16 years old. If you are under the age of 16, per the requirements of the GDPR (<a href=\"https://en.wikipedia.org/wiki/General_Data_Protection_Regulation\">General Data Protection Regulation</a>) do not use this site." msgstr "Si ce serveur est dans l'Union Européenne ou dans l'Espace Economique Européen : nos sites, produits et services sont tous destinés aux personnes âgées de plus de 16 ans. Si vous avez moins de 16 ans, suivant le RGPD (<a href=\"https://fr.wikipedia.org/wiki/R%C3%A8glement_g%C3%A9n%C3%A9ral_sur_la_protection_des_donn%C3%A9es\">Règlement général sur la protection des données</a>), n'utilisez pas ce site." #: lib/web/templates/api/privacy.html.heex:109 -#, 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 "Si le serveur est situé aux Etats-Unis : Notre site, nos produits et services sont tous à destination de personnes agées d'au moins 13 ans. Si vous avez moins de 13 ans, d'après les recommandations de COOPA (<a href=\"https://en.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act\">Children's Online Privacy Protection Act</a>) n'utilisez pas ce site." #: lib/web/templates/api/privacy.html.heex:117 -#, elixir-format msgctxt "terms" msgid "If we decide to change our privacy policy, we will post those changes on this page." msgstr "Si nous décidons de changer notre politique de confidentialité, nous présenterons ces changements sur cette page." #: lib/web/templates/api/privacy.html.heex:112 -#, elixir-format msgctxt "terms" msgid "Law requirements can be different if this server is in another jurisdiction." msgstr "Les conditions juridiques peuvent différer si le serveur est sous une autre juridiction." #: lib/web/templates/api/privacy.html.heex:103 -#, elixir-format msgctxt "terms" msgid "Site usage by children" msgstr "Utilisation du site par des mineurs" #: lib/web/templates/api/privacy.html.heex:47 -#, elixir-format 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." +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 "" "L'adresse électronique que vous nous fournissez peut être utilisée pour vous envoyer des informations, des mises à jour et des notifications concernant d'autres personnes\n" "qui interagissent avec vos contenus ou vous envoient des messages et pour répondre à des demandes,\n" "et/ou à d'autres requêtes ou questions." #: lib/web/templates/api/privacy.html.heex:45 -#, 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." +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 "" "Afin d'aider à la modération de la communauté, par exemple en comparant votre adresse IP avec d'autres adresses connues\n" "dans le but de détecter des tentatives de contournement d'un bannissement ou d'autres violations." #: lib/web/templates/api/privacy.html.heex:43 -#, 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." +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 "" "Fournir la fonctionnalité de base de Mobilizon. Selon la politique de cette instance, vous ne pourrez interagir\n" "avec le contenu d'autres personnes et publier votre propre contenu que si vous êtes connecté." #: lib/web/templates/api/privacy.html.heex:6 -#, elixir-format msgctxt "terms" msgid "What information do we collect?" msgstr "Quelles informations collectons-nous ?" #: lib/web/email/user.ex:178 -#, elixir-format msgid "Mobilizon on %{instance}: confirm your email address" msgstr "Mobilizon sur %{instance} : confirmez votre adresse email" #: lib/web/email/user.ex:157 -#, elixir-format msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon sur %{instance} : adresse email modifiée" #: lib/web/email/notification.ex:51 -#, elixir-format msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "Un événement prévu aujourd'hui" msgstr[1] "%{nb_events} événements prévus aujourd'hui" -#: lib/web/templates/email/on_day_notification.html.heex:38 -#: lib/web/templates/email/on_day_notification.text.eex:3 -#, elixir-format +#: lib/web/templates/email/on_day_notification.html.heex:38 lib/web/templates/email/on_day_notification.text.eex:3 msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "Vous avez un événement aujourd'hui :" msgstr[1] "Vous avez %{total} événements aujourd'hui :" #: lib/web/templates/email/group_invite.text.eex:3 -#, elixir-format msgid "%{inviter} just invited you to join their group %{group}" msgstr "%{inviter} vient de vous inviter à rejoindre son groupe %{group}" -#: lib/web/templates/email/group_invite.html.heex:13 -#: lib/web/templates/email/group_invite.text.eex:1 -#, elixir-format +#: lib/web/templates/email/group_invite.html.heex:13 lib/web/templates/email/group_invite.text.eex:1 msgid "Come along!" msgstr "Rejoignez-nous !" #: lib/web/email/notification.ex:25 -#, elixir-format msgid "Don't forget to go to %{title}" msgstr "N'oubliez pas de vous rendre à %{title}" -#: lib/web/templates/email/before_event_notification.html.heex:38 -#: lib/web/templates/email/before_event_notification.text.eex:3 -#, elixir-format +#: lib/web/templates/email/before_event_notification.html.heex:38 lib/web/templates/email/before_event_notification.text.eex:3 msgid "Get ready for %{title}" msgstr "Préparez vous pour %{title}" #: lib/web/templates/email/group_invite.html.heex:59 -#, elixir-format msgid "See my groups" msgstr "Voir mes groupes" -#: lib/web/templates/email/group_invite.html.heex:45 -#: lib/web/templates/email/group_invite.text.eex:5 -#, elixir-format +#: lib/web/templates/email/group_invite.html.heex:45 lib/web/templates/email/group_invite.text.eex:5 msgid "To accept this invitation, head over to your groups." msgstr "Pour accepter cette invitation, rendez-vous dans vos groupes." #: lib/web/templates/email/before_event_notification.text.eex:5 -#, elixir-format msgid "View the event on: %{link}" msgstr "Voir l'événement mis à jour sur : %{link}" #: lib/web/email/member.ex:31 -#, elixir-format msgid "You have been invited by %{inviter} to join group %{group}" msgstr "Vous avez été invité par %{inviter} à rejoindre le groupe %{group}" #: lib/web/email/notification.ex:78 -#, elixir-format msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "Un événement prévu cette semaine" msgstr[1] "%{nb_events} événements prévus cette semaine" #: lib/web/email/notification.ex:102 -#, elixir-format msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "Une demande de participation à l'événement %{title} à traiter" msgstr[1] "%{number_participation_requests} demandes de participation à l'événement %{title} à traiter" -#: lib/web/templates/email/notification_each_week.html.heex:38 -#: lib/web/templates/email/notification_each_week.text.eex:3 -#, elixir-format +#: lib/web/templates/email/notification_each_week.html.heex:38 lib/web/templates/email/notification_each_week.text.eex:3 msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "Vous avez un événement aujourd'hui :" msgstr[1] "Vous avez %{total} événements aujourd'hui :" #: lib/service/metadata/utils.ex:53 -#, elixir-format msgid "The event organizer didn't add any description." msgstr "L'organisateur·ice de l'événement n'a pas ajouté de description." #: lib/web/templates/api/privacy.html.heex:54 -#, elixir-format msgctxt "terms" msgid "We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information. Among other things, your browser session, as well as the traffic between your applications and the API, are secured with SSL/TLS, and your password is hashed using a strong one-way algorithm." msgstr "Nous utilisons plusieurs mesures de sécurité pour assurer la confidentialité de vos informations personnelles lorsque vous soumettez ou accédez à vos informations. Entre autres, votre session de navigateur et la connexion entre vos applications et l'API sont sécurisés par SSL/TLS, et votre mot de passe est haché avec un algorithme fort à sens unique." #: lib/web/templates/api/privacy.html.heex:94 -#, elixir-format msgctxt "terms" msgid "No. We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our site, conducting our business, or servicing you, so long as those parties agree to keep this information confidential. We may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety." msgstr "Non. Nous ne vendons, n’échangeons ou ne transférons d’une quelque manière que soit des informations permettant de vous identifier personnellement. Cela n’inclut pas les tierces parties de confiance qui nous aident à opérer ce site, à conduire nos activités commerciales ou à vous servir, tant qu’elles acceptent de garder ces informations confidentielles. Nous sommes également susceptibles de partager vos informations quand nous pensons que c’est nécessaire pour nous conformer à la loi, pour appliquer les politiques de notre site ainsi que pour défendre nos droits, notre propriété, notre sécurité et celles et ceux d’autres personnes." #: lib/web/templates/api/terms.html.heex:23 -#, elixir-format msgctxt "terms" msgid "Accepting these Terms" msgstr "Acceptation de ces Conditions" #: lib/web/templates/api/terms.html.heex:27 -#, elixir-format msgctxt "terms" msgid "Changes to these Terms" msgstr "Modifications de ces Conditions d'Utilisation" #: lib/web/templates/api/terms.html.heex:85 -#, elixir-format msgctxt "terms" msgid "A lot of the content on the Service is from you and others, and we don't review, verify or authenticate it, and it may include inaccuracies or false information. We make no representations, warranties, or guarantees relating to the quality, suitability, truth, accuracy or completeness of any content contained in the Service. You acknowledge sole responsibility for and assume all risk arising from your use of or reliance on any content." msgstr "Une grande partie du contenu du Service provient de vous et d'autres personnes, et nous ne l'examinons, ne le vérifions ni ne l'authentifions, et il peut contenir des inexactitudes ou de fausses informations. Nous ne faisons aucune déclaration, garantie ou assurance concernant la qualité, la pertinence, la véracité, l'exactitude ou l'exhaustivité de tout contenu du Service. Vous reconnaissez être seul responsable et assumez tous les risques découlant de votre utilisation ou de votre confiance dans tout contenu." #: lib/web/templates/api/terms.html.heex:60 -#, elixir-format msgctxt "terms" msgid "Also, you agree that you will not do any of the following in connection with the Service or other users:" msgstr "De plus, vous acceptez de ne pas faire ce qui suit en relation avec le Service ou les autres utilisateur·ices :" #: lib/web/templates/api/terms.html.heex:65 -#, elixir-format msgctxt "terms" msgid "Circumvent or attempt to circumvent any filtering, security measures, rate limits or other features designed to protect the Service, users of the Service, or third parties." msgstr "Contourner ou tenter de contourner tout filtrage, mesures de sécurité, limites d'accès ou autres caractéristiques destinées à protéger le Service, les utilisateur·ices du Service ou des tiers." #: lib/web/templates/api/terms.html.heex:64 -#, elixir-format msgctxt "terms" msgid "Collect any personal information about other users, or intimidate, threaten, stalk or otherwise harass other users of the Service;" msgstr "Recueillir des informations personnelles sur les autres utilisateur·ices, ou intimider, menacer, traquer ou harceler de toute autre manière les autres utilisateurs du Service ;" #: lib/web/templates/api/terms.html.heex:55 -#, elixir-format msgctxt "terms" msgid "Content that is illegal or unlawful, that would otherwise create liability;" msgstr "Du contenu qui est illégal ou illicite, qui autrement entraînerait une responsabilité ;" #: lib/web/templates/api/terms.html.heex:56 -#, elixir-format msgctxt "terms" msgid "Content that may infringe or violate any patent, trademark, trade secret, copyright, right of privacy, right of publicity or other intellectual or other right of any party;" msgstr "Du contenu susceptible d'enfreindre ou de violer un brevet, une marque de commerce, un secret commercial, un droit d'auteur, un droit à la vie privée, un droit de publicité ou tout autre droit intellectuel ou autre de toute partie ;" #: lib/web/templates/api/terms.html.heex:42 -#, elixir-format msgctxt "terms" msgid "Creating Accounts" msgstr "Création de compte" #: lib/web/templates/api/terms.html.heex:89 -#, elixir-format msgctxt "terms" msgid "Entire Agreement" msgstr "Accord complet" #: lib/web/templates/api/terms.html.heex:92 -#, elixir-format msgctxt "terms" msgid "Feedback" msgstr "Commentaires" #: lib/web/templates/api/terms.html.heex:83 -#, elixir-format msgctxt "terms" msgid "Hyperlinks and Third Party Content" msgstr "Liens hypertexte et contenu tiers" #: lib/web/templates/api/terms.html.heex:88 -#, elixir-format msgctxt "terms" msgid "If you breach any of these Terms, we have the right to suspend or disable your access to or use of the Service." msgstr "Si vous enfreignez l'une de ces Conditions, nous avons le droit de suspendre ou de désactiver votre accès ou votre utilisation du Service." #: lib/web/templates/api/terms.html.heex:63 -#, elixir-format msgctxt "terms" msgid "Impersonate or post on behalf of any person or entity or otherwise misrepresent your affiliation with a person or entity;" msgstr "Usurper l'identité d'une personne ou d'une entité ou afficher au nom d'une personne ou d'une entité, ou encore présenter de manière inexacte votre affiliation à une personne ou une entité ;" #: lib/web/templates/api/terms.html.heex:48 -#, elixir-format msgctxt "terms" msgid "Our Service allows you and other users to post, link and otherwise make available content. You are responsible for the content that you make available to the Service, including its legality, reliability, and appropriateness." msgstr "Notre Service vous permet, ainsi qu'à d'autres utilisateur·ices, de publier, d'établir des liens et de mettre à disposition du contenu. Vous êtes responsable du contenu que vous mettez à la disposition du service, y compris de sa légalité, de sa fiabilité et de sa pertinence." #: lib/web/templates/api/terms.html.heex:39 -#, elixir-format msgctxt "terms" msgid "Privacy Policy" msgstr "Politique de confidentialité" #: lib/web/templates/api/terms.html.heex:95 -#, elixir-format msgctxt "terms" msgid "Questions & Contact Information" msgstr "Questions et coordonnées" #: lib/web/templates/api/terms.html.heex:87 -#, elixir-format msgctxt "terms" msgid "Termination" msgstr "Résiliation" #: lib/web/templates/api/terms.html.heex:62 -#, elixir-format msgctxt "terms" msgid "Use the Service in any manner that could interfere with, disrupt, negatively affect or inhibit other users from fully enjoying the Service or that could damage, disable, overburden or impair the functioning of the Service;" msgstr "Utiliser le Service de toute manière qui pourrait interférer, perturber, affecter négativement ou empêcher d'autres utilisateur·ices de profiter pleinement du Service ou qui pourrait endommager, désactiver, surcharger ou altérer le fonctionnement du Service ;" #: lib/web/templates/api/terms.html.heex:47 -#, elixir-format msgctxt "terms" msgid "Your Content & Conduct" msgstr "Votre contenu et votre conduite" #: lib/web/templates/api/terms.html.heex:84 -#, elixir-format msgctxt "terms" msgid "<b>%{instance_name}</b> makes no claim or representation regarding, and accepts no responsibility for third party websites accessible by hyperlink from the Service or websites linking to the Service. When you leave the Service, you should be aware that these Terms and our policies no longer govern. The inclusion of any link does not imply endorsement by <b>%{instance_name}</b> of the site. Use of any such linked website is at the user's own risk." msgstr "<b>%{instance_name}</b> ne fait aucune revendication et n'accepte aucune responsabilité concernant les sites web de tiers accessibles par lien hypertexte depuis le Service ou les sites web liés au Service. Lorsque vous quittez le Service, vous devez savoir que les présentes Conditions et nos politiques de confidentialité ne sont plus applicables. L'inclusion d'un lien n'implique pas l'approbation par <b>%{instance_name}</b> du site. L'utilisation de tout site web lié est aux risques et périls de l'utilisateur·ice." #: lib/web/templates/api/terms.html.heex:68 -#, elixir-format msgctxt "terms" msgid "Finally, your use of the Service is also subject to acceptance of <a href=\"/rules\">the instance's own specific rules</a> regarding the code of conduct and moderation rules. Breaking those rules may also result in your account being disabled or suspended." msgstr "Enfin, votre utilisation du Service est également soumise à l'acceptation des <a href=\"/rules\">règles spécifiques de l'instance </a> concernant le code de conduite et les règles de modération. Le non-respect de ces règles peut également entraîner la désactivation ou la suspension de votre compte." #: lib/web/templates/api/terms.html.heex:81 -#, elixir-format msgctxt "terms" msgid "For full details about the Mobilizon software <a href=\"https://joinmobilizon.org\">see here</a>." msgstr "Pour plus de détails sur le logiciel Mobilizon <a href=\"https://joinmobilizon.org\">voir ici</a>." #: lib/web/templates/api/terms.html.heex:18 -#, elixir-format msgctxt "terms" msgid "Here are the important things you need to know about accessing and using the <b>%{instance_name}</b> (<a href=\"https://%{instance_url}\">%{instance_url}</a>) website and service (collectively, \"Service\"). These are our terms of service (\"Terms\"). Please read them carefully." msgstr "Voici les points importants que vous devez savoir sur l'accès et l'utilisation du site web et du Service <b>%{instance_name}</b> (<a href=\"https://%{instance_url}\">%{instance_url}</a>) (conjointement, \"Service\"). Ce sont nos conditions de service (\"Conditions\"). Veuillez les lire attentivement." #: lib/web/templates/api/terms.html.heex:33 -#, elixir-format msgctxt "terms" msgid "If we make major changes, we will notify our users in a clear and prominent manner. Minor changes may only be highlighted in the footer of our website. It is your responsibility to check the website regularly for changes to these Terms." msgstr "Si nous apportons des changements majeurs, nous en informerons nos utilisateur·ices de manière claire et visible. Il est possible que les changements mineurs ne soient mis en évidence que dans le pied de page de cette page. Il est de votre responsabilité de vérifier régulièrement sur le site web si des modifications ont été apportées aux présentes Conditions." #: lib/web/templates/api/terms.html.heex:53 -#, elixir-format msgctxt "terms" msgid "In order to make <b>%{instance_name}</b> a great place for all of us, please do not post, link and otherwise make available on or through the Service any of the following:" msgstr "Afin de faire de <b>%{instance_name}</b> un endroit idéal pour nous toutes et tous, nous vous prions de ne pas publier, relier ou rendre disponible sur ou par le biais du Service l'un des éléments suivants :" #: lib/web/templates/api/terms.html.heex:57 -#, elixir-format msgctxt "terms" msgid "Private information of any third party (e.g., addresses, phone numbers, email addresses, Social Security numbers and credit card numbers); and" msgstr "Les informations privées de toute personne tierce (par exemple, les adresses, les numéros de téléphone, les adresses électroniques, les numéros de sécurité sociale et les numéros de carte de crédit) ; et" #: lib/web/templates/api/terms.html.heex:52 -#, elixir-format msgctxt "terms" msgid "Since Mobilizon is a distributed network, it is possible, depending on the visibility rules set to your content, that your content has been distributed to other Mobilizon instances. When you delete your content, we will request those other instances to also delete the content. Our responsibility on the content being deleted from those other instances ends here. If for some reason, some other instance does not delete the content, we cannot be held responsible." msgstr "Mobilizon étant un réseau distribué, il est possible, en fonction des règles de visibilité définies pour votre contenu, que celui-ci ait été distribué à d'autres instances de Mobilizon. Lorsque vous supprimez votre contenu, nous demandons à ces autres instances de supprimer également le contenu. Notre responsabilité quant au contenu supprimé de ces autres instances s'arrête ici. Si, pour une raison quelconque, une autre instance ne supprime pas le contenu, nous ne pouvons être tenus responsables." #: lib/web/templates/api/terms.html.heex:90 -#, elixir-format msgctxt "terms" msgid "These Terms constitute the entire agreement between you and <b>%{instance_name}</b> regarding the use of the Service, superseding any prior agreements between you and <b>%{instance_name}</b> relating to your use of the Service." msgstr "Les présentes Conditions constituent l'intégralité de l'accord entre vous et <b>%{instance_name}</b> concernant l'utilisation du Service, remplaçant tout accord préalable entre vous et <b>%{instance_name}</b> relatif à votre utilisation du Service." #: lib/web/templates/api/terms.html.heex:80 -#, elixir-format msgctxt "terms" msgid "This Service runs on a Mobilizon instance. This source code is licensed under an <a href=\"https://tldrlegal.com/license/gnu-affero-general-public-license-v3-(agpl-3.0)\">AGPLv3 license</a> which means you are allowed to and even encouraged to take the source code, modify it and use it." msgstr "Ce Service fonctionne sur une instance de Mobilizon. Ce code source est sous <a href=\"https://tldrlegal.com/license/gnu-affero-general-public-license-v3-(agpl-3.0)\">licence AGPLv3</a> ce qui signifie que vous êtes autorisé et même encouragé à prendre le code source, le modifier et l'utiliser." #: lib/web/templates/api/terms.html.heex:58 -#, elixir-format msgctxt "terms" msgid "Viruses, corrupted data or other harmful, disruptive or destructive files or code." msgstr "Virus, données corrompues ou autres fichiers ou codes nuisibles, perturbateurs ou destructeurs." #: lib/web/templates/api/terms.html.heex:51 -#, elixir-format msgctxt "terms" msgid "You can remove the content that you posted by deleting it. Once you delete your content, it will not appear on the Service, but copies of your deleted content may remain in our system or backups for some period of time. Web server access logs might also be stored for some time in the system." msgstr "Vous pouvez supprimer le contenu que vous avez publié en le supprimant. Une fois que vous avez supprimé votre contenu, il n'apparaîtra plus sur le Service, mais des copies de votre contenu supprimé peuvent rester dans notre système ou des sauvegardes pendant un certain temps. Les journaux d'accès au serveur web peuvent également être stockés pendant un certain temps dans le système." #: lib/web/templates/api/terms.html.heex:96 -#, elixir-format msgctxt "terms" msgid "Questions or comments about the Service may be directed to us at %{contact}" msgstr "Les questions ou commentaires concernant le Service peuvent nous être adressés à %{contact}" #: lib/web/templates/api/terms.html.heex:79 -#, elixir-format msgctxt "terms" msgid "Source code" msgstr "Code source" #: lib/web/templates/api/terms.html.heex:93 -#, elixir-format msgctxt "terms" msgid "We love feedback. Please let us know what you think of the Service, these Terms and, in general, <b>%{instance_name}</b>." msgstr "Nous aimons les retours d'information. N'hésitez pas à nous faire savoir ce que vous pensez du Service, des présentes Conditions et, en général, de <b>%{instance_name}</b>." #: lib/web/templates/api/terms.html.heex:74 -#, elixir-format msgctxt "terms" msgid "Instance administrators (and community moderators, given the relevant access) are responsible for monitoring and acting on flagged content and other user reports, and have the right and responsibility to remove or edit content that is not aligned to this Instance set of rules, or to suspend, block or ban (temporarily or permanently) any account, community, or instance for breaking these terms, or for other behaviours that they deem inappropriate, threatening, offensive, or harmful." msgstr "Les administrateurs d'instance (et les modérateurs de la communauté, sous réserve d'un accès approprié) sont chargés de surveiller et d'agir sur les contenus signalés et autres rapports d'utilisateur·ices, et ont le droit et la responsabilité de supprimer ou de modifier les contenus qui ne sont pas conformes aux règles de cette d'instance, ou de suspendre, bloquer ou interdire (temporairement ou définitivement) tout compte, communauté ou instance pour violation de ces conditions, ou pour d'autres comportements qu'ils jugent inappropriés, menaçants, offensants ou nuisibles." #: lib/web/templates/api/terms.html.heex:6 -#, elixir-format msgctxt "terms" msgid "<b>%{instance_name}</b> will not use or transmit or resell your personal data" msgstr "<b>%{instance_name}</b> n'utilisera pas ni ne transmettra ou revendra vos données" #: lib/web/templates/api/terms.html.heex:44 -#, elixir-format msgctxt "terms" msgid "If you discover or suspect any Service security breaches, please let us know as soon as possible. For security holes in the Mobilizon software itself, please contact <a href=\"https://framagit.org/framasoft/mobilizon/\">its contributors</a> directly." msgstr "Si vous découvrez ou soupçonnez des failles de sécurité du Service, veuillez nous en informer dès que possible. Pour les failles de sécurité dans le logiciel Mobilizon lui-même, veuillez contacter directement <a href=\"https://framagit.org/framasoft/mobilizon/\">ses contributeur·ices</a>." #: lib/web/templates/api/terms.html.heex:77 -#, elixir-format msgctxt "terms" msgid "Instance administrators should ensure that every community hosted on the instance is properly moderated according to the defined rules." msgstr "Les administrateur·ices d'instance doivent s'assurer que chaque communauté hébergée sur l'instance est correctement modérée conformément aux règles définies." #: lib/web/templates/api/terms.html.heex:98 -#, elixir-format msgctxt "terms" msgid "Originally adapted from the <a href=\"https://joindiaspora.com/terms\">Diaspora*</a> and <a href=\"https://github.com/appdotnet/terms-of-service\">App.net</a> privacy policies, also licensed under <a href=\"https://creativecommons.org/licenses/by-sa/4.0/\">CC BY-SA</a>." msgstr "Adaptée à l'origine des politiques de confidentialité de <a href=\"https://joindiaspora.com/terms\">Diaspora*</a> et <a href=\"https://github.com/appdotnet/terms-of-service\">App.net</a>, aussi sous licence <a href=\"https://creativecommons.org/licenses/by-sa/4.0/\">CC BY-SA</a>." #: lib/web/templates/api/privacy.html.heex:119 -#, elixir-format msgctxt "terms" msgid "Originally adapted from the <a href=\"https://mastodon.social/terms\">Mastodon</a> and <a href=\"https://github.com/discourse/discourse\">Discourse</a> privacy policies, also licensed under <a href=\"https://creativecommons.org/licenses/by-sa/4.0/\">CC BY-SA</a>." msgstr "Adaptée à l'origine des politiques de confidentialité de <a href=\"https://mastodon.social/terms\">Mastodon</a> et <a href=\"https://github.com/discourse/discourse\">Discourse</a>, aussi sous licence <a href=\"https://creativecommons.org/licenses/by-sa/4.0/\">CC BY-SA</a>." #: lib/web/templates/api/terms.html.heex:3 -#, elixir-format msgctxt "terms" msgid "Short version" msgstr "Version courte" #: lib/web/templates/api/terms.html.heex:9 -#, elixir-format msgctxt "terms" msgid "The service is provided without warranties and these terms may change in the future" msgstr "Le service est fourni sans garanties et ces conditions peuvent changer dans le futur" #: lib/web/templates/api/privacy.html.heex:118 -#, elixir-format msgctxt "terms" msgid "This document is licensed under <a href=\"https://creativecommons.org/licenses/by-sa/4.0/\">CC BY-SA</a>. It was last updated June 18, 2020." msgstr "Ce document est sous licence <a href=\"https://creativecommons.org/licenses/by-sa/4.0/\">CC BY-SA</a>. La dernière mise à jour date du 18 juin 2020." #: lib/web/templates/api/terms.html.heex:97 -#, elixir-format msgctxt "terms" msgid "This document is licensed under <a href=\"https://creativecommons.org/licenses/by-sa/4.0/\">CC BY-SA</a>. It was last updated June 22, 2020." msgstr "Ce document est sous licence <a href=\"https://creativecommons.org/licenses/by-sa/4.0/\">CC BY-SA</a>. La dernière mise à jour date du 22 juin 2020." #: lib/web/templates/api/terms.html.heex:8 -#, elixir-format msgctxt "terms" msgid "You must respect other people and <b>%{instance_name}</b>'s rules when using the service" msgstr "Vous devez respecter les autres et les règles de <b>%{instance_name}</b> lorsque vous utilisez le service" #: lib/web/templates/api/terms.html.heex:7 -#, elixir-format msgctxt "terms" msgid "You must respect the law when using <b>%{instance_name}</b>" msgstr "Vous devez respecter la loi lorsque vous utilisez <b>%{instance_name}</b>" #: lib/web/templates/api/terms.html.heex:5 -#, elixir-format msgctxt "terms" msgid "Your content is yours" msgstr "Votre contenu vous appartient" #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:51 -#, elixir-format msgid "Confirm my e-mail address" msgstr "Confirmer mon adresse email" -#: lib/web/templates/email/anonymous_participation_confirmation.html.heex:13 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:1 -#, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.html.heex:13 lib/web/templates/email/anonymous_participation_confirmation.text.eex:1 msgid "Confirm your e-mail" msgstr "Confirmez votre adresse email" #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:3 -#, elixir-format msgid "Hi there! You just registered to join this event: « %{title} ». Please confirm the e-mail address you provided:" msgstr "Salut ! Vous venez de vous enregistrer pour rejoindre cet événement : « %{title} ». Merci de confirmer l'adresse email que vous avez fournie :" -#: lib/web/templates/email/email.html.heex:117 -#: lib/web/templates/email/email.text.eex:8 -#, elixir-format +#: lib/web/templates/email/email.html.heex:117 lib/web/templates/email/email.text.eex:8 msgid "Need help? Is something not working as expected?" msgstr "Besoin d'aide ? Quelque chose ne fonctionne pas correctement ?" #: lib/web/templates/email/registration_confirmation.html.heex:38 -#, elixir-format msgid "You created an account on <b>%{host}</b> with this email address. You are one click away from activating it." msgstr "Vous avez créé un compte sur <b>%{host}</b> avec cette adresse email. Vous êtes à un clic de l'activer." #: lib/web/templates/email/report.html.heex:13 -#, elixir-format msgid "New report on <b>%{instance}</b>" msgstr "Nouveau signalement sur <b>%{instance}</b>" #: lib/web/templates/email/email_changed_old.html.heex:38 -#, elixir-format msgid "The email address for your account on <b>%{host}</b> is being changed to:" msgstr "L'adresse email pour votre compte sur <b>%{host}</b> est en train d'être changée pour :" #: lib/web/templates/email/password_reset.html.heex:38 -#, elixir-format msgid "You requested a new password for your account on <b>%{instance}</b>." msgstr "Vous avez demandé un nouveau mot de passe pour votre compte sur <b>%{instance}</b>." #: lib/web/templates/email/email.text.eex:5 -#, elixir-format msgid "Please do not use it for real purposes." msgstr "Veuillez ne pas l'utiliser pour un cas réel." -#: lib/web/templates/email/anonymous_participation_confirmation.html.heex:63 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:133 -#: lib/web/templates/email/event_updated.text.eex:14 lib/web/templates/email/notification_each_week.html.heex:60 -#: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:60 -#: lib/web/templates/email/on_day_notification.text.eex:11 -#, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.html.heex:63 lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:133 lib/web/templates/email/event_updated.text.eex:14 lib/web/templates/email/notification_each_week.html.heex:60 lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:60 lib/web/templates/email/on_day_notification.text.eex:11 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "Si vous avez besoin d'annuler votre participation, il suffit d'accéder à la page de l'événement à partir du lien ci-dessus et de cliquer sur le bouton « Je participe »." msgstr[1] "Si vous avez besoin d'annuler votre participation à un ou plusieurs événements, il suffit d'accéder aux pages des événement grâce aux liens ci-dessus et de cliquer sur le bouton « Je participe »." #: lib/web/templates/email/email.text.eex:11 -#, elixir-format msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} est une instance Mobilizon." #: lib/web/templates/email/email.html.heex:152 -#, elixir-format msgid "<b>%{instance}</b> is powered by Mobilizon." msgstr "<b>%{instance}</b> est une instance Mobilizon." -#: lib/web/templates/email/pending_participation_notification.html.heex:13 -#: lib/web/templates/email/pending_participation_notification.text.eex:1 -#, elixir-format +#: lib/web/templates/email/pending_participation_notification.html.heex:13 lib/web/templates/email/pending_participation_notification.text.eex:1 msgid "A request is pending!" msgstr "Une demande est en attente !" -#: lib/web/templates/email/before_event_notification.html.heex:13 -#: lib/web/templates/email/before_event_notification.text.eex:1 -#, elixir-format +#: lib/web/templates/email/before_event_notification.html.heex:13 lib/web/templates/email/before_event_notification.text.eex:1 msgid "An event is upcoming!" msgstr "Un événement est à venir !" -#: lib/web/templates/email/email_changed_new.html.heex:13 -#: lib/web/templates/email/email_changed_new.text.eex:1 -#, elixir-format +#: lib/web/templates/email/email_changed_new.html.heex:13 lib/web/templates/email/email_changed_new.text.eex:1 msgid "Confirm new email" msgstr "Confirmez votre adresse email" #: lib/web/templates/email/event_updated.html.heex:84 -#, elixir-format msgid "End" msgstr "Fin" -#: lib/web/templates/email/event_updated.html.heex:13 -#: lib/web/templates/email/event_updated.text.eex:1 -#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:13 lib/web/templates/email/event_updated.text.eex:1 msgid "Event update!" msgstr "Événement mis à jour !" #: lib/web/templates/email/report.html.heex:88 -#, elixir-format msgid "Flagged comments" msgstr "Commentaires signalés" -#: lib/web/templates/email/event_participation_approved.html.heex:45 -#: lib/web/templates/email/event_participation_approved.text.eex:7 -#, elixir-format +#: lib/web/templates/email/event_participation_approved.html.heex:45 lib/web/templates/email/event_participation_approved.text.eex:7 msgid "Good news: one of the event organizers just approved your request. Update your calendar, because you're on the guest list now!" msgstr "Bonne nouvelle : un·e des organisateur·ices de l'événement vient d'approuver votre demande. Mettez à jour votre agenda, car vous êtes maintenant un·e participant·e !" #: lib/web/templates/email/email_changed_new.html.heex:38 -#: lib/web/templates/email/email_changed_new.text.eex:3 -#, elixir-format msgid "Hi there! It seems like you wanted to change the email address linked to your account on <b>%{instance}</b>. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." msgstr "Salut ! Il semblerait que vous avez demandé la modification de l'adresse e-mail liée à votre compte sur <b>%{instance}</b>. Si vous voulez toujours effectuer ce changement, merci de cliquer sur le bouton ci-dessous pour confirmer la modification. Vous pourrez alors vous connecter à %{instance} avec cette nouvelle adresse." #: lib/web/templates/email/email_changed_old.text.eex:3 -#, elixir-format msgid "Hi there! Just a quick note to confirm that the email address linked to your account on %{host} has been changed from this one to:" msgstr "Salut ! Juste un petite note pour confirmer que l'adresse e-mail liée à votre compte sur %{host} a été changée depuis celle-ci à :" -#: lib/web/templates/email/email_changed_old.html.heex:62 -#: lib/web/templates/email/email_changed_old.text.eex:5 -#, elixir-format +#: lib/web/templates/email/email_changed_old.html.heex:62 lib/web/templates/email/email_changed_old.text.eex:5 msgid "If you did not trigger this change yourself, it is likely that someone has gained access to your %{host} account. Please log in and change your password immediately. If you cannot login, contact the admin on %{host}." msgstr "Si vous n'avez pas effectué cette modification vous-même, il est probable que quelqu'un ait eu accès à votre compte %{host}. Veuillez vous connecter et changer immédiatement votre mot de passe. Si vous ne pouvez pas vous connecter, contactez l'administrateur·ice sur %{host}." #: lib/web/templates/email/password_reset.text.eex:12 -#, elixir-format msgid "If you didn't trigger the change yourself, please ignore this message. Your password won't be changed until you click the link above." msgstr "Si vous n'êtes pas à l'origine de cette modification, merci d'ignorer ce message. Votre mot de passe ne sera pas modifié tant que vous ne cliquerez pas le lien ci-dessus." -#: lib/web/templates/email/anonymous_participation_confirmation.html.heex:70 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.heex:45 -#, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.html.heex:70 lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.heex:45 msgid "If you didn't trigger this email, you may safely ignore it." msgstr "Si vous n'avez pas déclenché cette alerte, vous pouvez ignorer cet e-mail sans souci." -#: lib/web/templates/email/before_event_notification.html.heex:63 -#: lib/web/templates/email/before_event_notification.text.eex:6 -#, elixir-format +#: lib/web/templates/email/before_event_notification.html.heex:63 lib/web/templates/email/before_event_notification.text.eex:6 msgid "If you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgstr "Si vous avez besoin d'annuler votre participation, il suffit d'accéder à la page de l'événement à partir du lien ci-dessus et de cliquer sur le bouton « Je participe »." -#: lib/web/templates/email/email.html.heex:153 -#: lib/web/templates/email/email.text.eex:11 -#, elixir-format +#: lib/web/templates/email/email.html.heex:153 lib/web/templates/email/email.text.eex:11 msgid "Learn more about Mobilizon here!" msgstr "En apprendre plus à propos de Mobilizon ici !" -#: lib/web/templates/email/event_updated.html.heex:94 -#: lib/web/templates/export/event_participants.html.heex:129 -#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:94 lib/web/templates/export/event_participants.html.heex:129 msgid "Location" msgstr "Localisation" #: lib/web/templates/email/event_updated.html.heex:104 -#, elixir-format msgid "Location address was removed" msgstr "L'adresse physique a été enlevée" -#: lib/web/templates/email/pending_participation_notification.html.heex:56 -#: lib/web/templates/email/pending_participation_notification.text.eex:8 -#, elixir-format +#: lib/web/templates/email/pending_participation_notification.html.heex:56 lib/web/templates/email/pending_participation_notification.text.eex:8 msgid "Manage pending requests" msgstr "Gérer les demandes de participation en attente" -#: lib/web/templates/email/registration_confirmation.html.heex:13 -#: lib/web/templates/email/registration_confirmation.text.eex:1 -#, elixir-format +#: lib/web/templates/email/registration_confirmation.html.heex:13 lib/web/templates/email/registration_confirmation.text.eex:1 msgid "Nearly there!" msgstr "Vous y êtes presque !" -#: lib/web/templates/email/email_changed_old.html.heex:13 -#: lib/web/templates/email/email_changed_old.text.eex:1 -#, elixir-format +#: lib/web/templates/email/email_changed_old.html.heex:13 lib/web/templates/email/email_changed_old.text.eex:1 msgid "New email confirmation" msgstr "Confirmation de nouvel e-mail" #: lib/web/templates/email/report.html.heex:106 -#, elixir-format msgid "Reasons for report" msgstr "Raisons du signalement" #: lib/web/templates/email/report.html.heex:39 -#, elixir-format msgid "Someone on <b>%{instance}</b> reported the following content for you to analyze:" msgstr "Une personne de <b>%{instance}</b> a signalé le contenu suivant :" -#: lib/web/templates/email/event_participation_rejected.html.heex:13 -#: lib/web/templates/email/event_participation_rejected.text.eex:1 -#, elixir-format +#: lib/web/templates/email/event_participation_rejected.html.heex:13 lib/web/templates/email/event_participation_rejected.text.eex:1 msgid "Sorry! You're not going." msgstr "Désolé ! Vous n'y allez pas." #: lib/web/templates/email/event_updated.html.heex:74 -#, elixir-format msgid "Start" msgstr "Début" #: lib/web/templates/email/event_updated.text.eex:3 -#, elixir-format msgid "There have been changes for %{title} so we'd thought we'd let you know." msgstr "Il y a eu des changements pour %{title} donc nous avons pensé que nous vous le ferions savoir." -#: lib/web/templates/email/event_updated.html.heex:55 -#: lib/web/templates/email/event_updated.text.eex:6 -#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:55 lib/web/templates/email/event_updated.text.eex:6 msgid "This event has been cancelled by its organizers. Sorry!" msgstr "Cet événement a été annulé par ses organisateur·ices. Désolé !" -#: lib/web/templates/email/event_updated.html.heex:51 -#: lib/web/templates/email/event_updated.text.eex:4 -#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:51 lib/web/templates/email/event_updated.text.eex:4 msgid "This event has been confirmed" msgstr "L'événement a été confirmé" -#: lib/web/templates/email/event_updated.html.heex:53 -#: lib/web/templates/email/event_updated.text.eex:5 -#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:53 lib/web/templates/email/event_updated.text.eex:5 msgid "This event has yet to be confirmed: organizers will let you know if they do confirm it." msgstr "Cet événement doit encore être confirmé : les organisateur·ices vous feront savoir si l'événement est confirmé." -#: lib/web/templates/email/event_participation_rejected.html.heex:45 -#: lib/web/templates/email/event_participation_rejected.text.eex:7 -#, elixir-format +#: lib/web/templates/email/event_participation_rejected.html.heex:45 lib/web/templates/email/event_participation_rejected.text.eex:7 msgid "Unfortunately, the organizers rejected your request." msgstr "Malheureusement, les organisateur⋅ices ont rejeté votre demande de participation." #: lib/web/templates/email/email_changed_new.html.heex:51 -#, elixir-format msgid "Verify your email address" msgstr "Vérifier l'adresse email" #: lib/web/templates/email/report.html.heex:126 -#, elixir-format msgid "View report" msgstr "Voir le signalement" #: lib/web/templates/email/report.text.eex:24 -#, elixir-format msgid "View report:" msgstr "Voir le signalement :" -#: lib/web/templates/email/email_anonymous_activity.html.heex:67 -#: lib/web/templates/email/event_participation_approved.html.heex:58 lib/web/templates/email/event_participation_confirmed.html.heex:58 -#, elixir-format +#: lib/web/templates/email/email_anonymous_activity.html.heex:67 lib/web/templates/email/event_participation_approved.html.heex:58 lib/web/templates/email/event_participation_confirmed.html.heex:58 msgid "Visit event page" msgstr "Voir la page de l'événement" #: lib/web/templates/email/event_updated.html.heex:121 -#, elixir-format msgid "Visit the updated event page" msgstr "Voir la page de l'événement mis à jour" #: lib/web/templates/email/event_updated.text.eex:12 -#, elixir-format msgid "Visit the updated event page: %{link}" msgstr "Voir l'événement mis à jour sur : %{link}" -#: lib/web/templates/email/on_day_notification.html.heex:13 -#: lib/web/templates/email/on_day_notification.text.eex:1 -#, elixir-format +#: lib/web/templates/email/on_day_notification.html.heex:13 lib/web/templates/email/on_day_notification.text.eex:1 msgid "What's up today?" msgstr "Quoi de neuf aujourd'hui ?" -#: lib/web/templates/email/event_participation_approved.html.heex:70 -#: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.heex:70 -#: lib/web/templates/email/event_participation_confirmed.text.eex:6 -#, elixir-format +#: lib/web/templates/email/event_participation_approved.html.heex:70 lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.heex:70 lib/web/templates/email/event_participation_confirmed.text.eex:6 msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." msgstr "Si vous souhaitez mettre à jour ou annuler votre participation, il vous suffit d'accéder à la page de l'événement par le lien ci-dessus et de cliquer sur le bouton Participer." -#: lib/web/templates/email/pending_participation_notification.html.heex:69 -#: lib/web/templates/email/pending_participation_notification.text.eex:10 -#, elixir-format +#: lib/web/templates/email/pending_participation_notification.html.heex:69 lib/web/templates/email/pending_participation_notification.text.eex:10 msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." msgstr "Vous recevez ce courriel parce que vous avez choisi de recevoir des notifications pour les demandes de participation en attente à vos événements. Vous pouvez désactiver ou modifier vos paramètres de notification dans les paramètres de votre compte utilisateur dans « Notifications »." #: lib/web/templates/email/event_participation_rejected.text.eex:5 -#, elixir-format msgid "You issued a request to attend %{title}." msgstr "Vous avez effectué une demande de participation à %{title}." -#: lib/web/templates/email/event_participation_approved.text.eex:5 -#: lib/web/templates/email/event_participation_confirmed.text.eex:3 -#, elixir-format +#: lib/web/templates/email/event_participation_approved.text.eex:5 lib/web/templates/email/event_participation_confirmed.text.eex:3 msgid "You recently requested to attend %{title}." msgstr "Vous avez demandé à participer à l'événement %{title}." -#: lib/web/templates/email/event_participation_approved.html.heex:13 -#: lib/web/templates/email/event_participation_confirmed.html.heex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 -#, elixir-format +#: lib/web/templates/email/event_participation_approved.html.heex:13 lib/web/templates/email/event_participation_confirmed.html.heex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 msgid "You're going!" msgstr "Vous y allez !" -#: lib/web/templates/email/email_changed_new.html.heex:64 -#: lib/web/templates/email/email_changed_new.text.eex:5 -#, elixir-format +#: lib/web/templates/email/email_changed_new.html.heex:64 lib/web/templates/email/email_changed_new.text.eex:5 msgid "If you didn't trigger the change yourself, please ignore this message." msgstr "Si vous n'êtes pas à l'origine de cette modification, merci d'ignorer ce message." #: lib/web/templates/email/email.html.heex:92 -#, elixir-format msgid "<b>Please do not use it for real purposes.</b>" msgstr "<b>Veuillez ne pas l'utiliser pour un cas réel.</b>" -#: lib/web/templates/email/group_member_removal.html.heex:45 -#: lib/web/templates/email/group_member_removal.text.eex:5 -#, elixir-format +#: lib/web/templates/email/group_member_removal.html.heex:45 lib/web/templates/email/group_member_removal.text.eex:5 msgid "If you feel this is an error, you may contact the group's administrators so that they can add you back." msgstr "Si vous pensez qu'il s'agit d'une erreur, vous pouvez contacter les administrateurs du groupe afin qu'ils vous réintègrent." -#: lib/web/templates/email/group_member_removal.html.heex:13 -#: lib/web/templates/email/group_member_removal.text.eex:1 -#, elixir-format +#: lib/web/templates/email/group_member_removal.html.heex:13 lib/web/templates/email/group_member_removal.text.eex:1 msgid "So long, and thanks for the fish!" msgstr "Salut, et encore merci pour le poisson !" #: lib/web/email/member.ex:113 -#, elixir-format msgid "You have been removed from group %{group}" msgstr "Vous avez été enlevé du groupe %{group}" #: lib/web/templates/email/group_member_removal.text.eex:3 -#, elixir-format msgid "You have been removed from group %{group}. You will not be able to access this group's private content anymore." msgstr "Vous avez été enlevé du groupe %{group}. Vous ne serez plus en mesure d'accéder au contenu privé du groupe." #: lib/web/templates/email/group_invite.html.heex:38 -#, elixir-format msgid "<b>%{inviter}</b> just invited you to join their group %{link_start}<b>%{group}</b>%{link_end}" msgstr "<b>%{inviter}</b> vient de vous inviter à rejoindre son groupe %{link_start}<b>%{group}</b>%{link_end}" #: lib/web/templates/email/group_member_removal.html.heex:38 -#, elixir-format msgid "You have been removed from group %{link_start}<b>%{group}</b>%{link_end}. You will not be able to access this group's private content anymore." msgstr "Vous avez été enlevé du groupe %{link_start}<b>%{group}</b>%{link_end}. Vous ne serez plus en mesure d'accéder au contenu privé du groupe." -#: lib/web/templates/email/group_suspension.html.heex:54 -#: lib/web/templates/email/group_suspension.text.eex:7 -#, elixir-format +#: lib/web/templates/email/group_suspension.html.heex:54 lib/web/templates/email/group_suspension.text.eex:7 msgid "As this group was located on another instance, it will continue to work for other instances than this one." msgstr "Comme ce groupe était originaire d'une autre instance, il continuera à fonctionner pour d'autres instances que celle-ci." -#: lib/web/templates/email/group_suspension.html.heex:46 -#: lib/web/templates/email/group_suspension.text.eex:5 -#, elixir-format +#: lib/web/templates/email/group_suspension.html.heex:46 lib/web/templates/email/group_suspension.text.eex:5 msgid "As this group was located on this instance, all of it's data has been irretrievably deleted." msgstr "Comme ce groupe était originaire de cette instance, toutes ses données ont été irrémédiablement détruites." -#: lib/web/templates/email/group_suspension.html.heex:13 -#: lib/web/templates/email/group_suspension.text.eex:1 -#, elixir-format +#: lib/web/templates/email/group_suspension.html.heex:13 lib/web/templates/email/group_suspension.text.eex:1 msgid "The group %{group} has been suspended on %{instance}!" msgstr "Le groupe %{group} a été suspendu sur %{instance} !" #: lib/web/templates/email/group_suspension.text.eex:3 -#, elixir-format msgid "Your instance's moderation team has decided to suspend %{group_name} (%{group_address}). You are no longer a member of this group." msgstr "L'équipe de modération de votre instance a décidé de suspendre %{group_name} (%{group_address}). Vous n'êtes désormais plus membre de ce groupe." #: lib/web/email/group.ex:89 -#, elixir-format msgid "The group %{group} has been suspended on %{instance}" msgstr "Le groupe %{group} a été suspendu sur %{instance}" #: lib/web/templates/api/terms.html.heex:24 -#, elixir-format msgctxt "terms" msgid "By accessing or using the Service, this means you agree to be bound by all the terms below. If these terms are in any way unclear, please let us know by contacting %{contact}." msgstr "Si vous accédez au Service ou utilisez le Service, cela signifie que vous acceptez d'être lié·e par toutes les Conditions ci-dessous. Si une condition n'a pas de sens pour vous, veuillez nous le faire savoir en contactant %{contact}." #: lib/web/templates/api/terms.html.heex:40 -#, elixir-format msgctxt "terms" msgid "For information about how we collect and use information about users of the Service, please check our <a href=\"/privacy\">privacy policy</a>." msgstr "Pour savoir comment nous recueillons et utilisons les informations sur les utilisateur·ice·s du Service, veuillez consulter notre <a href=\"/privacy\">politique de confidentialité</a>." #: lib/web/templates/api/terms.html.heex:36 -#, elixir-format msgctxt "terms" msgid "If you continue to use the Service after the revised Terms go into effect, you accept the revised Terms." msgstr "Si vous continuez à utiliser le Service après l'entrée en vigueur des Conditions révisées, vous acceptez les conditions révisées." #: lib/web/templates/api/privacy.html.heex:78 -#, elixir-format msgctxt "terms" msgid "If you delete this information, you need to login again." msgstr "Si vous supprimez ces informations, vous devrez vous connecter de nouveau." #: lib/web/templates/api/privacy.html.heex:80 -#, elixir-format msgctxt "terms" msgid "If you're not connected, we don't store any information on your device, unless you participate in an event anonymously. In this specific case we store the hash of an unique identifier for the event and participation status in your browser so that we may display participation status. Deleting this information will only stop displaying participation status in your browser." msgstr "Si vous n'êtes pas connecté·e, nous ne conserverons aucune information sur votre appareil, sauf si vous participez anonymement à un événement. Dans ce cas spécifique nous conservons le hash d'un identifiant unique pour l'événement et les statuts de participation dans votre navigateur pour pouvoir les afficher. Supprimer ces informations aura pour seule conséquence que votre participation ne sera plus affichée dans votre navigateur." #: lib/web/templates/api/privacy.html.heex:87 -#, elixir-format msgctxt "terms" msgid "Note: This information is stored in your localStorage and not your cookies." msgstr "Attention : Ces informations sont conservées dans votre stockage local et non vos cookies." #: lib/web/templates/api/terms.html.heex:71 -#, elixir-format msgctxt "terms" msgid "Our responsibility" msgstr "Notre responsabilité" #: lib/web/templates/api/privacy.html.heex:61 -#, 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 "Conserver les journaux du serveur contenant l'adresse IP de toutes les demandes adressées à ce serveur, dans la mesure où ces journaux sont conservés, pas plus de 90 jours." -#: lib/web/templates/api/privacy.html.heex:3 -#: lib/web/templates/api/terms.html.heex:15 -#, elixir-format +#: lib/web/templates/api/privacy.html.heex:3 lib/web/templates/api/terms.html.heex:15 msgctxt "terms" msgid "Some terms, technical or otherwise, used in the text below may cover concepts that are difficult to grasp. We have provided <a href=\"/glossary\">a glossary</a> to help you understand them better." msgstr "Certains termes, techniques ou non, utilisés dans le texte ci-dessous peuvent recouvrir des concepts difficiles à appréhender. Nous vous proposons <a href=\"/glossary\">un glossaire</a> qui pourra vous aider à mieux les comprendre." #: lib/web/templates/api/terms.html.heex:45 -#, elixir-format msgctxt "terms" msgid "We are not liable for any loss you may incur as a result of someone else using your email or password, either with or without your knowledge." msgstr "Nous ne sommes pas responsables des pertes que vous pourriez subir si quelqu'un d'autre utilise votre adresse électronique ou votre mot de passe, à votre insu ou non." #: lib/web/templates/api/terms.html.heex:50 -#, elixir-format msgctxt "terms" msgid "We cannot be held responsible should a programming or administrative error make your content visible to a larger audience than intended. Aside from our limited right to your content, you retain all of your rights to the content you post, link and otherwise make available on or through the Service." msgstr "Nous ne pouvons être tenus responsables si une erreur de programmation ou d'administration rend votre contenu visible à un public plus large que celui que vous aviez prévu. Outre notre droit limité sur votre contenu, vous conservez tous vos droits sur le contenu que vous publiez, mettez en lien et rendez disponible sur ou via le Service." #: lib/web/templates/api/privacy.html.heex:10 -#, elixir-format msgctxt "terms" msgid "We collect information from you when you register on this instance and gather data when you participate in the platform by reading, writing, and interacting with content shared here. If you register on this instance, you will be asked to enter <b>an email address, a password</b> (hashed) and at least <b>an username</b>. Your email address will be verified by an email containing a unique link. Once the link is activated, we know you control that email address. You may also enter additional profile information such as <b>a display name and biography, and upload a profile picture and header image</b>. The username, display name, biography, profile picture and header image <b>are always listed publicly</b>. <b>You may however visit this instance without registering</b>." msgstr "" @@ -1161,531 +923,508 @@ msgstr "" "biographie, les images de profil et d'en-tête <b>sont toujours publiques</b>. <b>Vous pouvez toutefois utiliser ce serveur sans vous inscrire</b>." #: lib/web/templates/api/terms.html.heex:30 -#, elixir-format msgctxt "terms" msgid "We reserve the right to modify these Terms at any time. For instance, we may need to change these Terms if we come out with a new feature." msgstr "Nous nous réservons le droit de modifier ces Conditions à tout moment. Par exemple, nous pouvons être amenés à modifier ces Conditions si nous proposons une nouvelle fonctionnalité." #: lib/web/templates/api/terms.html.heex:20 -#, 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 "Lorsque nous disons « nous », « notre » ou « nos » dans ce document, nous faisons référence aux propriétaires, opérateur·ices et administrateur·ices de cette instance de Mobilizon. Le logiciel Mobilizon est fourni par l'équipe des contributeur·ices de Mobilizon, soutenue par <a href=\"https://framasoft.org\">Framasoft</a>, une organisation française d'éducation populaire à but non lucratif qui défend les logiciels libres. Sauf mention explicite, cette instance de Mobilizon est un service indépendant utilisant le code source de Mobilizon. Vous pouvez trouver plus d'informations sur cette instance sur la page <a href=\"/about/instance\">« A propos de cette instance »</a>." #: lib/web/templates/api/terms.html.heex:43 -#, elixir-format msgctxt "terms" msgid "When you create an account you agree to maintain the security and confidentiality of your password and accept all risks of unauthorized access to your account data and any other information you provide to <b>%{instance_name}</b>." msgstr "Lorsque vous créez un compte, vous acceptez également de maintenir la sécurité et la confidentialité de votre mot de passe et vous acceptez tous les risques d'accès non autorisé aux données de votre compte et à toute autre information que vous fournissez à <b>%{instance_name}</b>." #: lib/web/templates/api/terms.html.heex:49 -#, elixir-format msgctxt "terms" msgid "When you post, link or otherwise make available content to the Service, you grant us the right and license to display and distribute your content on or through the Service (including via applications). We may format your content for display throughout the Service, but we will not edit or revise the substance of your content itself. The displaying and distribution of your content happens only according to the visibility rules you have set for the content. We will not modify the visibility of the content you have set." msgstr "Lorsque vous publiez, liez ou mettez à disposition un contenu sur le Service, vous nous accordez le droit et la licence d'afficher et de distribuer votre contenu sur ou via le Service (y compris via des applications). Nous pouvons formater votre contenu pour l'afficher dans le Service, mais nous ne modifierons pas ou ne réviserons pas la substance de votre contenu lui-même. L'affichage et la distribution de votre contenu se fait strictement selon les règles de visibilité que vous avez définies pour le contenu. Nous ne modifierons pas la visibilité du contenu que vous avez défini." #: lib/web/templates/api/privacy.html.heex:19 -#, elixir-format msgctxt "terms" msgid "Your <b>events</b> and <b>comments</b> are delivered to other instances that follow your own, meaning they are delivered to different instances and copies are stored there. When you delete events or comments, this is likewise delivered to these other instances. All interactions related to event features - such as joining an event - or group features - such as managing resources - are federated as well. Please keep in mind that the operators of the instance and any receiving instances may view such messages and information, and that recipients may screenshot, copy or otherwise re-share them." msgstr "Vos <b>événements</b> et <b>commentaires</b> sont transmis aux instances qui suivent la vôtre, ce qui signifie que d'autres instances posséderont des copies de ces contenus. Lorsque vous supprimez un événement ou un commentaire, ceci est transmis de la même façon aux autres instances. Toutes les interactions liées aux fonctionnalités des événements - comme rejoindre un événement - ou bien aux fonctionnalités de groupes - comme gérer ses ressources - sont également fédérées. Veuillez noter que les administrateur·ices de cette instance et de toutes les instances fédérées peuvent voir ces messages, et que les destinataires peuvent les copier, en faire des captures d'écran et les repartager de différentes façons." #: lib/web/templates/api/privacy.html.heex:99 -#, elixir-format msgctxt "terms" msgid "Your content may be downloaded by other instances in the network. Your public events and comments are delivered to the instances following your own instance. Content created through a group is forwarded to all the instances of all the members of the group, insofar as these members reside on a different instance than this one." msgstr "Votre contenu peut être téléchargé par d'autres instances du réseau. Vos événements publics et commentaires sont transmis aux instances abonnées à votre instance. Le contenu créé à travers un groupe est transmis à toutes les instances de tous les membres du groupe, si celleux-ci sont inscrit·e·s sur une autre instance que la vôtre." #: lib/web/templates/email/event_participation_confirmed.text.eex:4 -#, elixir-format msgid "You have confirmed your participation. Update your calendar, because you're on the guest list now!" msgstr "Vous avez confirmé votre participation. Mettez à jour votre agenda, car vous êtes maintenant sur la liste des invités !" -#: lib/web/templates/email/event_participation_approved.html.heex:38 -#: lib/web/templates/email/event_participation_confirmed.html.heex:38 -#, elixir-format +#: lib/web/templates/email/event_participation_approved.html.heex:38 lib/web/templates/email/event_participation_confirmed.html.heex:38 msgid "You recently requested to attend <b>%{title}</b>." msgstr "Vous avez demandé à participer à l'événement <b>%{title}</b>." #: lib/web/email/participation.ex:90 -#, elixir-format msgid "Your participation to event %{title} has been confirmed" msgstr "Votre participation à l'événement %{title} a été approuvée" #: lib/web/templates/email/report.html.heex:41 -#, elixir-format msgid "<b>%{reporter}</b> reported the following content." msgstr "<b>%{reporter}</b> a signalé le contenu suivant." #: lib/web/templates/email/report.text.eex:5 -#, elixir-format msgid "Group %{group} was reported" msgstr "Le groupe %{group} a été signalé" #: lib/web/templates/email/report.html.heex:51 -#, elixir-format msgid "Group reported" msgstr "Groupe signalé" #: lib/web/templates/email/report.text.eex:7 -#, elixir-format msgid "Profile %{profile} was reported" msgstr "Le profil %{profile} a été signalé" #: lib/web/templates/email/report.html.heex:56 -#, elixir-format msgid "Profile reported" msgstr "Profil signalé" #: lib/web/templates/email/event_participation_confirmed.html.heex:45 -#, elixir-format msgid "You have now confirmed your participation. Update your calendar, because you're on the guest list now!" msgstr "Vous avez maintenant confirmé votre participation. Mettez à jour votre agenda, car vous êtes maintenant sur la liste des invités !" #: lib/mobilizon/posts/post.ex:99 -#, elixir-format msgid "A text is required for the post" msgstr "Un texte est requis pour le billet" #: lib/mobilizon/posts/post.ex:98 -#, elixir-format msgid "A title is required for the post" msgstr "Un titre est requis pour le billet" #: lib/web/templates/email/instance_follow.text.eex:3 -#, elixir-format msgid "%{name} (%{domain}) just requested to follow your instance." msgstr "%{name} (%{domain}) vient de demander à suivre votre instance." #: lib/web/email/follow.ex:54 -#, elixir-format msgid "%{name} requests to follow your instance" msgstr "%{name} demande à suivre votre instance" #: lib/web/templates/email/instance_follow.html.heex:38 -#, elixir-format msgid "<b>%{name} (%{domain})</b> just requested to follow your instance. If you accept, this instance will receive all of your instance's public events." msgstr "<b>%{name} (%{domain})</b> vient de demander à suivre votre instance. Si vous acceptez, leur instance recevra tous les événements publics de votre instance." #: lib/web/templates/email/instance_follow.text.eex:4 -#, elixir-format msgid "If you accept, this instance will receive all of your public events." msgstr "Si vous acceptez, leur instance recevra tous les événements publics de votre instance." #: lib/web/email/follow.ex:48 -#, elixir-format msgid "Instance %{name} (%{domain}) requests to follow your instance" msgstr "L'instance %{name} (%{domain}) demande à suivre votre instance" #: lib/web/templates/email/instance_follow.html.heex:66 -#, elixir-format msgid "See the federation settings" msgstr "Voir les paramètres de fédération" -#: lib/web/templates/email/instance_follow.html.heex:52 -#: lib/web/templates/email/instance_follow.text.eex:6 -#, elixir-format +#: lib/web/templates/email/instance_follow.html.heex:52 lib/web/templates/email/instance_follow.text.eex:6 msgid "To accept this invitation, head over to the instance's admin settings." msgstr "Pour accepter cette invitation, rendez-vous dans vos groupes." -#: lib/web/templates/email/instance_follow.html.heex:13 -#: lib/web/templates/email/instance_follow.text.eex:1 -#, elixir-format +#: lib/web/templates/email/instance_follow.html.heex:13 lib/web/templates/email/instance_follow.text.eex:1 msgid "Want to connect?" msgstr "Voulez-vous vous connecter ?" -#: lib/web/templates/email/instance_follow.html.heex:45 -#: lib/web/templates/email/instance_follow.text.eex:5 -#, elixir-format +#: lib/web/templates/email/instance_follow.html.heex:45 lib/web/templates/email/instance_follow.text.eex:5 msgid "Note: %{name} (%{domain}) following you doesn't necessarily imply that you follow this instance, but you can ask to follow them too." msgstr "Note : le fait que %{name} (%{domain}) vous suive n'implique pas nécessairement que vous suivez cette instance, mais vous pouvez demander à les suivre également." #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:38 -#, elixir-format msgid "Hi there! You just registered to join this event: « <b>%{title}</b> ». Please confirm the e-mail address you provided:" msgstr "Salut ! Vous venez de vous enregistrer pour rejoindre cet événement : « <b>%{title}</b> ». Merci de confirmer l'adresse email que vous avez fournie :" #: lib/web/templates/email/event_participation_rejected.html.heex:38 -#, elixir-format msgid "You issued a request to attend <b>%{title}</b>." msgstr "Vous avez effectué une demande de participation à <b>%{title}</b>." #: lib/web/templates/email/event_updated.html.heex:64 -#, elixir-format msgid "Event title" msgstr "Titre de l'événement" #: lib/web/templates/email/event_updated.html.heex:38 -#, elixir-format msgid "There have been changes for <b>%{title}</b> so we'd thought we'd let you know." msgstr "Il y a eu des changements pour <b>%{title}</b> donc nous avons pensé que nous vous le ferions savoir." #: lib/web/templates/error/500_page.html.heex:7 -#, elixir-format msgid "This page is not correct" msgstr "Cette page n’est pas correcte" #: lib/web/templates/error/500_page.html.heex:50 -#, elixir-format msgid "We're sorry, but something went wrong on our end." msgstr "Nous sommes désolé·e·s, mais quelque chose s’est mal passé de notre côté." -#: lib/web/templates/email/email.html.heex:91 -#: lib/web/templates/email/email.text.eex:4 -#, elixir-format +#: lib/web/templates/email/email.html.heex:91 lib/web/templates/email/email.text.eex:4 msgid "This is a demonstration site to test Mobilizon." msgstr "Ceci est un site de démonstration permettant de tester Mobilizon." -#: lib/service/metadata/actor.ex:91 lib/service/metadata/actor.ex:99 -#: lib/service/metadata/instance.ex:56 lib/service/metadata/instance.ex:62 -#, elixir-format +#: lib/service/metadata/actor.ex:91 lib/service/metadata/actor.ex:99 lib/service/metadata/instance.ex:56 lib/service/metadata/instance.ex:62 msgid "%{name}'s feed" msgstr "Flux de %{name}" #: lib/service/export/feed.ex:115 -#, elixir-format msgid "%{actor}'s private events feed on %{instance}" msgstr "Flux privé des événements de %{actor} sur %{instance}" #: lib/service/export/feed.ex:110 -#, elixir-format msgid "%{actor}'s public events feed on %{instance}" msgstr "Flux public des événements de %{actor} sur %{instance}" #: lib/service/export/feed.ex:219 -#, elixir-format msgid "Feed for %{email} on %{instance}" msgstr "Flux pour %{email} sur %{instance}" #: lib/web/templates/error/500_page.html.heex:57 -#, elixir-format msgid "If the issue persists, you may contact the server administrator at %{contact}." msgstr "Si le problème persiste, vous pouvez contacter l'administrateur⋅ice du serveur à %{contact}." #: lib/web/templates/error/500_page.html.heex:55 -#, elixir-format msgid "If the issue persists, you may try to contact the server administrator." msgstr "Si le problème persiste, vous pouvez essayer de contacter l'administrateur⋅ice du serveur." #: lib/web/templates/error/500_page.html.heex:68 -#, elixir-format msgid "Technical details" msgstr "Détails techniques" #: lib/web/templates/error/500_page.html.heex:52 -#, elixir-format msgid "The Mobilizon server %{instance} seems to be temporarily down." msgstr "Le serveur Mobilizon %{instance} semble être temporairement hors-service." #: lib/service/export/feed.ex:67 -#, elixir-format msgid "Public feed for %{instance}" msgstr "Flux public pour %{instance}" #: lib/graphql/resolvers/user.ex:318 -#, elixir-format msgid "The password you have choosen is too short. Please make sure your password contains at least 6 charaters." msgstr "Le mot de passe que vous avez choisi est trop court. Assurez-vous que votre mot de passe contienne au moins 6 caractères." #: lib/graphql/resolvers/user.ex:324 -#, 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 "Le jeton que vous avez fourni est invalide. Assurez-vous que l'URL est exactement la même que celle contenue dans le message que vous avez reçu." #: lib/web/email/actor.ex:44 -#, elixir-format msgid "Your participation to %{event} has been cancelled!" msgstr "Votre participation à l'événement %{title} a été annulée !" -#: lib/web/templates/email/actor_suspension_participants.html.heex:38 -#: lib/web/templates/email/actor_suspension_participants.text.eex:3 -#, elixir-format +#: lib/web/templates/email/actor_suspension_participants.html.heex:38 lib/web/templates/email/actor_suspension_participants.text.eex:3 msgid "Your instance's moderation team has decided to suspend %{actor_name} (%{actor_address}). All of their events have been removed and your participation to event %{event} cancelled." msgstr "L'équipe de modération de votre instance a décidé de suspendre %{actor_name} (%{actor_address}). Tous leurs événements ont été supprimés et votre participation à %{event} annulée." #: lib/web/templates/email/group_suspension.html.heex:38 -#, 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 "L'équipe de modération de votre instance a décidé de suspendre <b>%{group_name}</b> (%{group_address}). Vous n'êtes désormais plus membre de ce groupe." -#: lib/web/templates/email/actor_suspension_participants.html.heex:13 -#: lib/web/templates/email/actor_suspension_participants.text.eex:1 -#, elixir-format +#: lib/web/templates/email/actor_suspension_participants.html.heex:13 lib/web/templates/email/actor_suspension_participants.text.eex:1 msgid "Your participation to %{event} on %{instance} has been cancelled!" msgstr "Votre participation à l'événement %{event} sur %{instance} a été annulée !" #. File name template for exported list of participants. Should NOT contain spaces. Make sure the output is going to be something standardized that is acceptable as a file name on most systems. #. File name template for exported list of participants. Should NOT contain spaces. Make sure the output is going to be something standardized that is acceptable as a file name on most systems. #. File name template for exported list of participants. Should NOT contain spaces. Make sure the output is going to be something standardized that is acceptable as a file name on most systems. -#: lib/service/export/participants/csv.ex:81 -#: lib/service/export/participants/ods.ex:86 lib/service/export/participants/pdf.ex:96 -#, elixir-format +#: lib/service/export/participants/csv.ex:81 lib/service/export/participants/ods.ex:86 lib/service/export/participants/pdf.ex:96 msgid "%{event}_participants" msgstr "%{event}_participants" #: lib/service/export/participants/common.ex:61 -#, elixir-format msgid "Participant message" msgstr "Message du participant" #: lib/service/export/participants/common.ex:61 -#, elixir-format msgid "Participant name" msgstr "Nom du participant" #: lib/service/export/participants/common.ex:61 -#, elixir-format msgid "Participant status" msgstr "Statut du participant" -#: lib/service/export/participants/common.ex:52 -#, elixir-format +#: lib/service/export/participants/common.ex:52 lib/web/templates/email/admin/_role.html.heex:3 lib/web/templates/email/admin/_role.text.eex:1 msgid "Administrator" msgstr "Administrateur⋅ice" #: lib/service/export/participants/common.ex:55 -#, elixir-format msgid "Creator" msgstr "Créateur⋅ice" -#: lib/service/export/participants/common.ex:49 -#, elixir-format +#: lib/service/export/participants/common.ex:49 lib/web/templates/email/admin/_role.html.heex:5 lib/web/templates/email/admin/_role.text.eex:1 msgid "Moderator" msgstr "Modérateur⋅ice" #: lib/service/export/participants/common.ex:37 -#, elixir-format msgid "Not approved" msgstr "Non approuvé⋅e" #: lib/service/export/participants/common.ex:40 -#, elixir-format msgid "Not confirmed" msgstr "Non confirmé⋅e" #: lib/service/export/participants/common.ex:46 -#, elixir-format msgid "Participant" msgstr "Participant⋅e" #: lib/service/export/participants/common.ex:43 -#, elixir-format msgid "Rejected" msgstr "Rejeté⋅e" #: lib/web/templates/export/event_participants.html.heex:122 -#, elixir-format msgid "Begins on" msgstr "Débute le" #: lib/web/templates/export/event_participants.html.heex:125 -#, elixir-format msgid "Ends on" msgstr "Finit le" #: lib/web/templates/export/event_participants.html.heex:132 -#, elixir-format msgid "Number of participants" msgstr "Nombre de participant⋅es" #: lib/web/templates/export/event_participants.html.heex:120 -#, elixir-format msgid "Participants for %{event}" msgstr "Participant⋅es pour %{event}" #: lib/service/export/participants/common.ex:88 -#, elixir-format msgid "Anonymous participant" msgstr "Participant⋅e anonyme" -#: lib/web/templates/email/date/event_tz_date.html.heex:6 -#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 lib/web/templates/email/date/event_tz_date_range.html.heex:12 -#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 lib/web/templates/email/date/event_tz_date_range.text.eex:1 -#, elixir-format +#: lib/web/templates/email/date/event_tz_date.html.heex:6 lib/web/templates/email/date/event_tz_date_range.html.heex:7 lib/web/templates/email/date/event_tz_date_range.html.heex:12 lib/web/templates/email/date/event_tz_date_range.text.eex:1 msgid "🌐 %{timezone} %{offset}" msgstr "🌐 %{timezone} %{offset}" #: lib/web/templates/email/date/event_tz_date.text.eex:1 -#, elixir-format msgid "%{date_time} (%{timezone} %{offset})" msgstr "%{date_time} (%{timezone} %{offset})" #: lib/web/templates/email/date/event_tz_date.text.eex:1 -#, elixir-format msgid "%{date_time} (in your timezone %{timezone} %{offset})" msgstr "%{date_time} (dans votre fuseau horaire %{timezone} %{offset})" -#: lib/web/templates/email/notification_each_week.html.heex:13 -#: lib/web/templates/email/notification_each_week.text.eex:1 -#, elixir-format +#: lib/web/templates/email/notification_each_week.html.heex:13 lib/web/templates/email/notification_each_week.text.eex:1 msgid "On the agenda this week" msgstr "Au programme cette semaine" #: lib/web/templates/email/participation/event_card.html.heex:58 -#, elixir-format msgid "Details" msgstr "Détails" -#: lib/web/templates/email/date/event_tz_date_range.html.heex:10 -#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 -#, elixir-format +#: lib/web/templates/email/date/event_tz_date_range.html.heex:10 lib/web/templates/email/date/event_tz_date_range.text.eex:1 msgid "From the %{start} to the %{end}" msgstr "Du %{start} au %{end}" #: lib/web/templates/email/participation/event_card.html.heex:20 -#, elixir-format msgid "Manage your participation" msgstr "Gérer votre participation" -#: lib/web/templates/email/date/event_tz_date_range.html.heex:5 -#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 -#, elixir-format +#: lib/web/templates/email/date/event_tz_date_range.html.heex:5 lib/web/templates/email/date/event_tz_date_range.text.eex:1 msgid "On %{date} from %{start_time} to %{end_time}" msgstr "Le %{date} de %{start_time} à %{end_time}" #: lib/web/templates/email/participation/event_card.html.heex:66 -#, elixir-format msgid "Read more" msgstr "Lire plus" -#: lib/web/templates/email/participation/card/_metadata.html.heex:50 -#: lib/web/templates/email/participation/card/_metadata.text.eex:2 -#, elixir-format +#: lib/web/templates/email/participation/card/_metadata.html.heex:50 lib/web/templates/email/participation/card/_metadata.text.eex:2 msgid "Online event" msgstr "Événement en ligne" #: lib/web/templates/email/event_group_follower_notification.html.heex:13 -#, elixir-format msgid "%{group} scheduled a new event" msgstr "%{group} a programmé un nouvel événement" #: lib/web/templates/email/event_group_follower_notification.text.eex:1 -#, elixir-format msgid "%{group} scheduled a new event:" msgstr "%{group} a programmé un nouvel événement :" #: lib/web/templates/email/participation/card/_metadata.text.eex:2 -#, elixir-format msgid "Address:" msgstr "Adresse :" #: lib/web/templates/email/participation/card/_metadata.text.eex:1 -#, elixir-format msgid "Date:" msgstr "Date :" #: lib/web/templates/email/participation/event_card.text.eex:7 -#, elixir-format msgid "Details:" msgstr "Détails :" #: lib/web/templates/email/email.html.heex:147 -#, elixir-format msgid "Manage your notification settings" msgstr "Gérer vos paramètres de notification" #: lib/web/templates/email/participation/event_card.text.eex:5 -#, elixir-format msgid "Manage your participation:" msgstr "Gérer votre participation :" #: lib/web/templates/email/participation/card/_title.text.eex:3 -#: lib/web/templates/email/participation/card/_title.text.eex:3 -#, elixir-format msgid "Organizer: %{organizer}" msgstr "Organisateur : %{organizer}" #: lib/web/templates/email/participation/event_card.html.heex:42 -#, elixir-format msgid "Participate" msgstr "Participer" #: lib/web/templates/email/participation/event_card.text.eex:5 -#, elixir-format msgid "Participate:" msgstr "Participer :" #: lib/web/templates/email/participation/event_card.text.eex:9 -#, elixir-format msgid "Read more : %{url}" msgstr "Lire plus : %{url}" #: lib/web/templates/email/participation/card/_title.text.eex:1 -#, elixir-format msgid "Title: %{title}" msgstr "Titre : %{title}" #: lib/web/email/group.ex:44 -#, elixir-format msgid "📅 Just scheduled by %{group}: %{event}" msgstr "📅 Programmé à l'instant par %{group} : %{event}" #: lib/web/templates/email/event_updated.text.eex:9 -#, elixir-format msgid "New end date:" msgstr "Nouvelle date de fin :" #: lib/web/templates/email/event_updated.text.eex:10 -#, elixir-format msgid "New location:" msgstr "Nouvelle localisation :" #: lib/web/templates/email/event_updated.text.eex:8 -#, elixir-format msgid "New start date:" msgstr "Nouvelle date de début :" -#: lib/web/templates/email/group_membership_rejection.html.heex:13 -#: lib/web/templates/email/group_membership_rejection.text.eex:1 -#, elixir-format +#: lib/web/templates/email/group_membership_rejection.html.heex:13 lib/web/templates/email/group_membership_rejection.text.eex:1 msgid "Sorry, not this time!" msgstr "Désolé, pas cette fois !" #: lib/web/templates/email/group_membership_approval.html.heex:52 -#, elixir-format msgid "View the group" msgstr "Voir le groupe" -#: lib/web/templates/email/group_membership_approval.html.heex:13 -#: lib/web/templates/email/group_membership_approval.text.eex:1 -#, elixir-format +#: lib/web/templates/email/group_membership_approval.html.heex:13 lib/web/templates/email/group_membership_approval.text.eex:1 msgid "You're in!" msgstr "Vous en êtes !" #: lib/web/email/member.ex:60 -#, elixir-format msgid "Your membership request for group %{group} has been approved" msgstr "Votre demande d'adhésion pour le groupe %{group} a été acceptée" #: lib/web/email/member.ex:89 -#, elixir-format msgid "Your membership request for group %{group} has been rejected" msgstr "Votre demande d'adhésion pour le groupe %{group} a été rejetée" #: lib/web/templates/email/group_membership_rejection.text.eex:3 -#, elixir-format msgid "Your membership request for group %{group} has been rejected." msgstr "Votre demande d'adhésion pour le groupe %{group} a été rejetée." #: lib/web/templates/email/group_membership_rejection.html.heex:38 -#, elixir-format msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected." msgstr "Votre demande d'adhésion pour le groupe %{link_start}<b>%{group}</b>%{link_end} a été rejetée." #: lib/web/templates/email/group_membership_approval.text.eex:3 -#, elixir-format msgid "Your membership request for group %{group} has been approved." msgstr "Votre demande d'adhésion pour le groupe %{group} a été approuvée." #: lib/web/templates/email/group_membership_approval.html.heex:38 -#, elixir-format msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved." msgstr "Votre demande d'adhésion pour le groupe %{link_start}<b>%{group}</b>%{link_end} a été approuvée." -#: lib/web/templates/email/pending_participation_notification.html.heex:38 -#: lib/web/templates/email/pending_participation_notification.text.eex:4 -#, elixir-format +#: lib/web/templates/email/pending_participation_notification.html.heex:38 lib/web/templates/email/pending_participation_notification.text.eex:4 msgid "You have one pending attendance request to process for the following event:" msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" msgstr[0] "Vous avez une demande de participation en attente à traiter pour l'événement suivant :" msgstr[1] "Vous avez %{number_participation_requests} demandes de participation en attente à traiter pour l'événement suivant :" + +#: lib/web/templates/email/admin_user_role_changed.html.heex:13 lib/web/templates/email/admin_user_role_changed.text.eex:1 +msgid "An administrator changed your role" +msgstr "Un⋅e administrateur⋅ice a changé votre rôle" + +#: lib/web/email/admin.ex:120 +msgid "An administrator confirmed your account on %{instance}" +msgstr "Un⋅e administrateur⋅ice a confirmé votre compte sur %{instance}" + +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:13 lib/web/templates/email/admin_user_email_changed_new.text.eex:1 lib/web/templates/email/admin_user_email_changed_old.html.heex:13 lib/web/templates/email/admin_user_email_changed_old.text.eex:1 +msgid "An administrator manually changed the email attached to your account" +msgstr "Une administrateur⋅ice a manuellement changé le courriel attaché à votre compte" + +#: lib/web/email/admin.ex:47 lib/web/email/admin.ex:72 +msgid "An administrator manually changed the email attached to your account on %{instance}" +msgstr "Une administrateur⋅ice a manuellement changé le courriel attaché à votre compte sur %{instance}" + +#: lib/web/templates/email/admin_user_confirmation.html.heex:13 lib/web/templates/email/admin_user_confirmation.text.eex:1 +msgid "An administrator manually confirmed your account" +msgstr "Un⋅e administrateur⋅ice a manuellement confirmé votre compte" + +#: lib/web/email/admin.ex:98 +msgid "An administrator updated your role on %{instance}" +msgstr "Un⋅e administrateur⋅ice a mis à jour votre rôle sur %{instance}" + +#: lib/web/templates/email/email_changed_new.text.eex:3 +msgid "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." +msgstr "Salut ! Il semblerait que vous avez demandé la modification de l'adresse e-mail liée à votre compte sur %{instance}. Si vous voulez toujours effectuer ce changement, merci de cliquer sur le bouton ci-dessous pour confirmer la modification. Vous pourrez alors vous connecter à %{instance} avec cette nouvelle adresse." + +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:3 lib/web/templates/email/admin_user_email_changed_old.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually changed your account email from %{old_email} (this one) to %{new_email}." +msgstr "Salut ! Nous voulions juste vous informer qu'un⋅e administrateur⋅ice de %{instance} vient de changer manuellement le courriel de votre compte de %{old_email} (celui-ci) à %{new_mail}." + +#: lib/web/templates/email/admin_user_confirmation.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually confirmed your account." +msgstr "Salut ! Nous voulions juste vous informer qu'un⋅e administrateur⋅ice de %{instance} vient de confirmer manuellement votre compte." + +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> (this one) to <b>%{new_email}</b>." +msgstr "Salut ! Nous voulions juste vous informer qu'un⋅e administrateur⋅ice de <b>%{instance}</b> vient de changer manuellement le courriel de votre compte de <b>%{old_email}</b> (celui-ci) à <b>%{new_mail}</b>." + +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> to <b>%{new_email}</b> (this one)." +msgstr "Salut ! Nous voulions juste vous informer qu'un⋅e administrateur⋅ice de <b>%{instance}</b> vient de changer manuellement le courriel de votre compte de <b>%{old_email}</b> à <b>%{new_mail}</b> (celui-ci)." + +#: lib/web/templates/email/admin_user_confirmation.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually confirmed your account." +msgstr "Salut ! Nous voulions juste vous informer qu'un⋅e administrateur⋅ice de <b>%{instance}</b> vient de confirmer manuellement votre compte." + +#: lib/web/templates/email/admin_user_confirmation.html.heex:71 lib/web/templates/email/admin_user_email_changed_new.html.heex:45 lib/web/templates/email/admin_user_email_changed_old.html.heex:45 lib/web/templates/email/admin_user_role_changed.html.heex:67 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods %{start_link}on the instance's about page%{end_link}." +msgstr "Si quelque chose ne vous semble pas correct, merci de contacter l'administrateur⋅ice de l'instance via les moyens de contacts %{start_link}sur la page « À propos » de l'instance%{end_link}." + +#: lib/web/templates/email/admin_user_confirmation.text.eex:7 lib/web/templates/email/admin_user_email_changed_new.text.eex:4 lib/web/templates/email/admin_user_email_changed_old.text.eex:4 lib/web/templates/email/admin_user_role_changed.text.eex:8 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods on the instance's about page: %{about_page}." +msgstr "Si quelque chose ne vous semble pas correct, merci de contacter l'administrateur⋅ice de l'instance via les moyens de contacts sur la page « À propos » de l'instance : %{about_page}." + +#: lib/web/templates/email/admin_user_confirmation.html.heex:58 +msgid "Login on %{instance}" +msgstr "Se connecter sur %{instance}" + +#: lib/web/templates/email/admin_user_role_changed.html.heex:55 +msgid "New role" +msgstr "Nouveau rôle" + +#: lib/web/templates/email/admin_user_role_changed.text.eex:6 +msgid "New role:" +msgstr "Nouveau rôle :" + +#: lib/web/templates/email/admin_user_role_changed.html.heex:47 +msgid "Old role" +msgstr "Ancien rôle" + +#: lib/web/templates/email/admin_user_role_changed.text.eex:5 +msgid "Old role:" +msgstr "Ancien rôle :" + +#: lib/web/templates/email/admin/_role.html.heex:7 lib/web/templates/email/admin/_role.text.eex:1 +msgid "User" +msgstr "Utilisateur⋅ice" + +#: lib/web/templates/email/admin_user_confirmation.html.heex:45 +msgid "You may now login using your credentials on the service." +msgstr "Vous pouvez à présent vous connecter en utilisant vos identifiants sur le service." + +#: lib/web/templates/email/admin_user_confirmation.text.eex:5 +msgid "You may now login using your credentials on the service:" +msgstr "Vous pouvez à présent vous connecter en utilisant vos identifiants sur le service :" + +#: lib/web/templates/email/admin_user_role_changed.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just changed your account role." +msgstr "Salut ! Nous voulions juste vous informer qu'un⋅e administrateur⋅ice de %{instance} vient de changer le rôle de votre compte." + +#: lib/web/templates/email/admin_user_role_changed.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just changed your account role." +msgstr "Salut ! Nous voulions juste vous informer qu'un⋅e administrateur⋅ice de <b>%{instance}</b> vient de changer le rôle de votre compte." diff --git a/priv/gettext/fr/LC_MESSAGES/errors.po b/priv/gettext/fr/LC_MESSAGES/errors.po index 8c293670f..56b0667c5 100644 --- a/priv/gettext/fr/LC_MESSAGES/errors.po +++ b/priv/gettext/fr/LC_MESSAGES/errors.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2021-11-17 16:17+0100\n" +"PO-Revision-Date: 2022-01-14 17:59+0100\n" "Last-Translator: Vincent Finance <linuxmario@linuxmario.net>\n" "Language-Team: French <https://weblate.framasoft.org/projects/mobilizon/backend-errors/fr/>\n" "Language: fr\n" @@ -18,7 +18,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Poedit 3.0\n" +"X-Generator: Poedit 3.0.1\n" #: lib/mobilizon/discussions/discussion.ex:69 msgid "can't be blank" @@ -117,14 +117,19 @@ msgid "Error while saving user settings" msgstr "Erreur lors de la sauvegarde des paramètres utilisateur" #, elixir-format -#: lib/graphql/error.ex:99 lib/graphql/resolvers/group.ex:249 -#: lib/graphql/resolvers/group.ex:281 lib/graphql/resolvers/group.ex:318 lib/graphql/resolvers/group.ex:349 -#: lib/graphql/resolvers/group.ex:398 lib/graphql/resolvers/member.ex:81 +#: lib/graphql/error.ex:99 +#: lib/graphql/resolvers/group.ex:249 +#: lib/graphql/resolvers/group.ex:281 +#: lib/graphql/resolvers/group.ex:318 +#: lib/graphql/resolvers/group.ex:349 +#: lib/graphql/resolvers/group.ex:398 +#: lib/graphql/resolvers/member.ex:81 msgid "Group not found" msgstr "Groupe non trouvé" #, elixir-format -#: lib/graphql/resolvers/group.ex:78 lib/graphql/resolvers/group.ex:82 +#: lib/graphql/resolvers/group.ex:78 +#: lib/graphql/resolvers/group.ex:82 msgid "Group with ID %{id} not found" msgstr "Groupe avec l'ID %{id} non trouvé" @@ -149,15 +154,21 @@ msgid "No user to validate with this email was found" msgstr "Aucun·e utilisateur·ice à valider avec cet email n'a été trouvé·e" #, elixir-format -#: lib/graphql/resolvers/person.ex:314 lib/graphql/resolvers/user.ex:298 +#: lib/graphql/resolvers/person.ex:314 +#: lib/graphql/resolvers/user.ex:298 msgid "No user with this email was found" msgstr "Aucun·e utilisateur·ice avec cette adresse e-mail n'a été trouvé·e" #, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:32 lib/graphql/resolvers/participant.ex:210 lib/graphql/resolvers/person.ex:236 -#: lib/graphql/resolvers/person.ex:353 lib/graphql/resolvers/person.ex:380 lib/graphql/resolvers/person.ex:397 -#: lib/graphql/resolvers/person.ex:425 lib/graphql/resolvers/person.ex:440 +#: lib/graphql/resolvers/participant.ex:32 +#: lib/graphql/resolvers/participant.ex:210 +#: lib/graphql/resolvers/person.ex:236 +#: lib/graphql/resolvers/person.ex:353 +#: lib/graphql/resolvers/person.ex:380 +#: lib/graphql/resolvers/person.ex:397 +#: lib/graphql/resolvers/person.ex:425 +#: lib/graphql/resolvers/person.ex:440 msgid "Profile is not owned by authenticated user" msgstr "Le profil n'est pas possédé par l'utilisateur connecté" @@ -172,11 +183,13 @@ msgid "The current password is invalid" msgstr "Le mot de passe actuel est invalid" #, elixir-format +#: lib/graphql/resolvers/admin.ex:341 #: lib/graphql/resolvers/user.ex:472 msgid "The new email doesn't seem to be valid" msgstr "La nouvelle adresse e-mail ne semble pas être valide" #, elixir-format +#: lib/graphql/resolvers/admin.ex:344 #: lib/graphql/resolvers/user.ex:475 msgid "The new email must be different" msgstr "La nouvelle adresse e-mail doit être différente" @@ -187,7 +200,8 @@ msgid "The new password must be different" msgstr "Le nouveau mot de passe doit être différent" #, elixir-format -#: lib/graphql/resolvers/user.ex:479 lib/graphql/resolvers/user.ex:541 +#: lib/graphql/resolvers/user.ex:479 +#: lib/graphql/resolvers/user.ex:541 #: lib/graphql/resolvers/user.ex:544 msgid "The password provided is invalid" msgstr "Le mot de passe fourni est invalide" @@ -210,7 +224,8 @@ msgid "This user has been disabled" msgstr "Cet·te utilisateur·ice a été désactivé·e" #, elixir-format -#: lib/graphql/resolvers/user.ex:252 lib/graphql/resolvers/user.ex:257 +#: lib/graphql/resolvers/user.ex:252 +#: lib/graphql/resolvers/user.ex:257 msgid "Unable to validate user" msgstr "Impossible de valider l'utilisateur·ice" @@ -285,7 +300,8 @@ msgid "You need to have an existing token to get a refresh token" msgstr "Vous devez avoir un jeton existant pour obtenir un jeton de rafraîchissement" #, elixir-format -#: lib/graphql/resolvers/user.ex:276 lib/graphql/resolvers/user.ex:301 +#: lib/graphql/resolvers/user.ex:276 +#: lib/graphql/resolvers/user.ex:301 msgid "You requested again a confirmation email too soon" msgstr "Vous avez à nouveau demandé un email de confirmation trop vite" @@ -305,7 +321,8 @@ msgid "No profile found with this ID" msgstr "Aucun profil trouvé avec cet ID" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:97 +#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:97 msgid "No remote profile found with this ID" msgstr "Aucun profil distant trouvé avec cet ID" @@ -356,17 +373,19 @@ msgid "Comment is already deleted" msgstr "Le commentaire est déjà supprimé" #, elixir-format -#: lib/graphql/error.ex:101 lib/graphql/resolvers/discussion.ex:69 +#: lib/graphql/error.ex:101 +#: lib/graphql/resolvers/discussion.ex:69 msgid "Discussion not found" msgstr "Discussion non trouvée" #, elixir-format -#: lib/graphql/resolvers/report.ex:63 lib/graphql/resolvers/report.ex:82 +#: lib/graphql/resolvers/report.ex:71 +#: lib/graphql/resolvers/report.ex:90 msgid "Error while saving report" msgstr "Erreur lors de la sauvegarde du signalement" #, elixir-format -#: lib/graphql/resolvers/report.ex:102 +#: lib/graphql/resolvers/report.ex:110 msgid "Error while updating report" msgstr "Erreur lors de la mise à jour du signalement" @@ -376,14 +395,16 @@ msgid "Event id not found" msgstr "ID de l'événement non trouvé" #, elixir-format -#: lib/graphql/error.ex:98 lib/graphql/resolvers/event.ex:360 +#: lib/graphql/error.ex:98 +#: lib/graphql/resolvers/event.ex:360 #: lib/graphql/resolvers/event.ex:412 msgid "Event not found" msgstr "Événement non trouvé" #, elixir-format #: lib/graphql/resolvers/participant.ex:87 -#: lib/graphql/resolvers/participant.ex:128 lib/graphql/resolvers/participant.ex:155 +#: lib/graphql/resolvers/participant.ex:128 +#: lib/graphql/resolvers/participant.ex:155 #: lib/graphql/resolvers/participant.ex:336 msgid "Event with this ID %{id} doesn't exist" msgstr "L'événement avec cet ID %{id} n'existe pas" @@ -399,8 +420,11 @@ msgid "No discussion with ID %{id}" msgstr "Aucune discussion avec l'ID %{id}" #, elixir-format -#: lib/graphql/resolvers/todos.ex:80 lib/graphql/resolvers/todos.ex:107 -#: lib/graphql/resolvers/todos.ex:179 lib/graphql/resolvers/todos.ex:208 lib/graphql/resolvers/todos.ex:237 +#: lib/graphql/resolvers/todos.ex:80 +#: lib/graphql/resolvers/todos.ex:107 +#: lib/graphql/resolvers/todos.ex:179 +#: lib/graphql/resolvers/todos.ex:208 +#: lib/graphql/resolvers/todos.ex:237 msgid "No profile found for user" msgstr "Aucun profil trouvé pour l'utilisateur modérateur" @@ -416,7 +440,8 @@ msgstr "Le ou la participant·e a déjà le rôle %{role}" #, elixir-format #: lib/graphql/resolvers/participant.ex:187 -#: lib/graphql/resolvers/participant.ex:220 lib/graphql/resolvers/participant.ex:263 +#: lib/graphql/resolvers/participant.ex:220 +#: lib/graphql/resolvers/participant.ex:263 msgid "Participant not found" msgstr "Participant·e non trouvé·e" @@ -431,12 +456,14 @@ msgid "Person with username %{username} not found" msgstr "Personne avec le nom %{name} non trouvé" #, elixir-format -#: lib/graphql/resolvers/post.ex:169 lib/graphql/resolvers/post.ex:203 +#: lib/graphql/resolvers/post.ex:169 +#: lib/graphql/resolvers/post.ex:203 msgid "Post ID is not a valid ID" msgstr "L'ID du billet n'est pas un ID valide" #, elixir-format -#: lib/graphql/resolvers/post.ex:172 lib/graphql/resolvers/post.ex:206 +#: lib/graphql/resolvers/post.ex:172 +#: lib/graphql/resolvers/post.ex:206 msgid "Post doesn't exist" msgstr "Le billet n'existe pas" @@ -446,31 +473,42 @@ msgid "Profile invited doesn't exist" msgstr "Le profil invité n'existe pas" #, elixir-format -#: lib/graphql/resolvers/member.ex:93 lib/graphql/resolvers/member.ex:97 +#: lib/graphql/resolvers/member.ex:93 +#: lib/graphql/resolvers/member.ex:97 msgid "Profile is already a member of this group" msgstr "Ce profil est déjà membre de ce groupe" #, elixir-format -#: lib/graphql/resolvers/post.ex:133 lib/graphql/resolvers/post.ex:175 -#: lib/graphql/resolvers/post.ex:209 lib/graphql/resolvers/resource.ex:90 lib/graphql/resolvers/resource.ex:132 -#: lib/graphql/resolvers/resource.ex:165 lib/graphql/resolvers/resource.ex:199 lib/graphql/resolvers/todos.ex:58 -#: lib/graphql/resolvers/todos.ex:83 lib/graphql/resolvers/todos.ex:110 lib/graphql/resolvers/todos.ex:182 -#: lib/graphql/resolvers/todos.ex:214 lib/graphql/resolvers/todos.ex:246 +#: lib/graphql/resolvers/post.ex:133 +#: lib/graphql/resolvers/post.ex:175 +#: lib/graphql/resolvers/post.ex:209 +#: lib/graphql/resolvers/resource.ex:90 +#: lib/graphql/resolvers/resource.ex:132 +#: lib/graphql/resolvers/resource.ex:165 +#: lib/graphql/resolvers/resource.ex:199 +#: lib/graphql/resolvers/todos.ex:58 +#: lib/graphql/resolvers/todos.ex:83 +#: lib/graphql/resolvers/todos.ex:110 +#: lib/graphql/resolvers/todos.ex:182 +#: lib/graphql/resolvers/todos.ex:214 +#: lib/graphql/resolvers/todos.ex:246 msgid "Profile is not member of group" msgstr "Le profil n'est pas un·e membre du groupe" #, elixir-format -#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/person.ex:233 +#: lib/graphql/resolvers/actor.ex:67 +#: lib/graphql/resolvers/person.ex:233 msgid "Profile not found" msgstr "Profile non trouvé" #, elixir-format -#: lib/graphql/resolvers/report.ex:40 +#: lib/graphql/resolvers/report.ex:48 msgid "Report not found" msgstr "Groupe non trouvé" #, elixir-format -#: lib/graphql/resolvers/resource.ex:169 lib/graphql/resolvers/resource.ex:196 +#: lib/graphql/resolvers/resource.ex:169 +#: lib/graphql/resolvers/resource.ex:196 msgid "Resource doesn't exist" msgstr "La ressource n'existe pas" @@ -485,12 +523,14 @@ msgid "This token is invalid" msgstr "Ce jeton est invalide" #, elixir-format -#: lib/graphql/resolvers/todos.ex:176 lib/graphql/resolvers/todos.ex:243 +#: lib/graphql/resolvers/todos.ex:176 +#: lib/graphql/resolvers/todos.ex:243 msgid "Todo doesn't exist" msgstr "Ce todo n'existe pas" #, elixir-format -#: lib/graphql/resolvers/todos.ex:77 lib/graphql/resolvers/todos.ex:211 +#: lib/graphql/resolvers/todos.ex:77 +#: lib/graphql/resolvers/todos.ex:211 #: lib/graphql/resolvers/todos.ex:240 msgid "Todo list doesn't exist" msgstr "Cette todo-liste n'existe pas" @@ -501,12 +541,13 @@ msgid "Token does not exist" msgstr "Ce jeton n'existe pas" #, elixir-format -#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70 +#: lib/graphql/resolvers/feed_token.ex:67 +#: lib/graphql/resolvers/feed_token.ex:70 msgid "Token is not a valid UUID" msgstr "Ce jeton n'est pas un UUID valide" #, elixir-format -#: lib/graphql/error.ex:96 lib/graphql/resolvers/person.ex:458 +#: lib/graphql/error.ex:96 msgid "User not found" msgstr "Utilisateur·ice non trouvé·e" @@ -526,7 +567,8 @@ msgid "You are not a member of this group" msgstr "Vous n'êtes pas membre de ce groupe" #, elixir-format -#: lib/graphql/resolvers/member.ex:157 lib/graphql/resolvers/member.ex:173 +#: lib/graphql/resolvers/member.ex:157 +#: lib/graphql/resolvers/member.ex:173 #: lib/graphql/resolvers/member.ex:188 msgid "You are not a moderator or admin for this group" msgstr "Vous n'êtes pas administrateur·ice ou modérateur·ice de ce groupe" @@ -590,37 +632,37 @@ msgid "You don't have permission to delete this token" msgstr "Vous n'avez pas la permission de supprimer ce jeton" #, elixir-format -#: lib/graphql/resolvers/admin.ex:54 +#: lib/graphql/resolvers/admin.ex:56 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" #, elixir-format -#: lib/graphql/resolvers/report.ex:28 +#: lib/graphql/resolvers/report.ex:36 msgid "You need to be logged-in and a moderator to list reports" msgstr "Vous devez être connecté·e et une modérateur·ice pour lister les signalements" #, elixir-format -#: lib/graphql/resolvers/report.ex:107 +#: lib/graphql/resolvers/report.ex:115 msgid "You need to be logged-in and a moderator to update a report" msgstr "Vous devez être connecté·e et une modérateur·ice pour modifier un signalement" #, elixir-format -#: lib/graphql/resolvers/report.ex:45 +#: lib/graphql/resolvers/report.ex:53 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" #, elixir-format -#: lib/graphql/resolvers/admin.ex:255 +#: lib/graphql/resolvers/admin.ex:257 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" #, elixir-format -#: lib/graphql/resolvers/admin.ex:239 +#: lib/graphql/resolvers/admin.ex:241 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" #, elixir-format -#: lib/graphql/resolvers/admin.ex:281 +#: lib/graphql/resolvers/admin.ex:283 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" @@ -645,7 +687,7 @@ msgid "You need to be logged-in to create posts" msgstr "Vous devez être connecté·e pour quitter un groupe" #, elixir-format -#: lib/graphql/resolvers/report.ex:79 +#: lib/graphql/resolvers/report.ex:87 msgid "You need to be logged-in to create reports" msgstr "Vous devez être connecté·e pour quitter un groupe" @@ -740,7 +782,8 @@ msgid "Reset your password to login" msgstr "Réinitialiser votre mot de passe pour vous connecter" #, elixir-format -#: lib/graphql/error.ex:95 lib/graphql/error.ex:100 +#: lib/graphql/error.ex:95 +#: lib/graphql/error.ex:100 msgid "Resource not found" msgstr "Ressource non trouvée" @@ -830,8 +873,11 @@ msgid "Profile ID provided is not the anonymous profile one" msgstr "L'ID du profil fourni n'est pas celui du profil anonyme" #, elixir-format -#: lib/graphql/resolvers/group.ex:161 lib/graphql/resolvers/group.ex:203 -#: lib/graphql/resolvers/person.ex:148 lib/graphql/resolvers/person.ex:182 lib/graphql/resolvers/person.ex:304 +#: lib/graphql/resolvers/group.ex:161 +#: lib/graphql/resolvers/group.ex:203 +#: lib/graphql/resolvers/person.ex:148 +#: lib/graphql/resolvers/person.ex:182 +#: lib/graphql/resolvers/person.ex:304 msgid "The provided picture is too heavy" msgstr "L'image fournie est trop lourde" @@ -856,7 +902,8 @@ msgid "Unable to fetch resource details from this URL." msgstr "Impossible de récupérer les détails de la ressource depuis cette URL." #, elixir-format -#: lib/graphql/resolvers/event.ex:164 lib/graphql/resolvers/participant.ex:253 +#: lib/graphql/resolvers/event.ex:164 +#: lib/graphql/resolvers/participant.ex:253 #: lib/graphql/resolvers/participant.ex:328 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "Le profil modérateur fourni n'a pas de permissions sur cet événement" @@ -907,6 +954,7 @@ msgid "Failed to update the group" msgstr "Impossible de mettre à jour le groupe" #, elixir-format +#: lib/graphql/resolvers/admin.ex:338 #: lib/graphql/resolvers/user.ex:469 msgid "Failed to update user email" msgstr "Impossible de mettre à jour l'adresse e-mail de utilisateur" @@ -1035,3 +1083,23 @@ msgstr "Vous devez être connecté⋅e pour supprimer un⋅e membre" #: lib/graphql/resolvers/user.ex:157 msgid "Your email seems to be using an invalid format" msgstr "Votre email semble utiliser un format invalide" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:387 +msgid "Can't confirm an already confirmed user" +msgstr "Impossible de confirmer un⋅e utilisateur⋅ice déjà confirmé⋅e" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:391 +msgid "Deconfirming users is not supported" +msgstr "Dé-confirmer des utilisateur⋅ices n'est pas supporté" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:363 +msgid "The new role must be different" +msgstr "Le nouveau rôle doit être différent" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:314 +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" diff --git a/priv/gettext/gd/LC_MESSAGES/activity.po b/priv/gettext/gd/LC_MESSAGES/activity.po index 08de7cb55..ecb9aab9a 100644 --- a/priv/gettext/gd/LC_MESSAGES/activity.po +++ b/priv/gettext/gd/LC_MESSAGES/activity.po @@ -164,19 +164,22 @@ msgstr "Dh’ùraich %{profile} am ball %{member}." #, 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.text.eex:1 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:1 msgid "The event %{event} was created by %{profile}." msgstr "Chaidh an tachartas %{event} a chruthachadh le %{profile}." #, 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.text.eex:13 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:34 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:13 msgid "The event %{event} was deleted by %{profile}." msgstr "Chaidh an tachartas %{event} a sguabadh às le %{profile}." #, 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.text.eex:7 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:19 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:7 msgid "The event %{event} was updated by %{profile}." msgstr "Chaidh an tachartas %{event} ùrachadh le %{profile}." @@ -206,13 +209,15 @@ msgstr "Fhuair %{member} ballrachd sa bhuidheann." #, 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.text.eex:25 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:58 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:25 msgid "%{profile} posted a comment on the event %{event}." msgstr "Thug %{profile} beachd air an tachartas %{event}." #, 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.text.eex:19 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:43 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:19 msgid "%{profile} replied to a comment on the event %{event}." msgstr "Fhreagair %{profile} do bheachd air an tachartas %{event}." @@ -236,7 +241,8 @@ msgstr[3] "Seall %{count} gnìomhachd a bharrachd" #, 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.text.eex:6 +#: lib/web/templates/email/email_direct_activity.html.heex:46 +#: 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!" msgid_plural "There has been some activity!" @@ -252,14 +258,17 @@ msgstr "Gnìomhachd air %{instance}" #, 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.text.eex:7 -#: lib/web/templates/email/email_anonymous_activity.html.heex:41 lib/web/templates/email/email_anonymous_activity.text.eex:5 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:19 +#: 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.text.eex:5 msgid "%{profile} has posted an announcement under event %{event}." msgstr "Chuir %{profile} brath-fios ris an tachartas %{event}." #, 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.text.eex:1 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 msgid "%{profile} mentionned you in a comment under event %{event}." msgstr "Thug %{profile} iomradh ort ann am beachd san tachartas %{event}." @@ -278,7 +287,8 @@ msgid "Here's your weekly activity recap" msgstr "Seo dhut ath-shùil air gnìomhachd na seachdaine" #, elixir-format -#: lib/web/email/activity.ex:119 lib/web/email/activity.ex:140 +#: lib/web/email/activity.ex:119 +#: lib/web/email/activity.ex:140 msgid "Activity notification for %{instance}" msgstr "Brath gnìomhachd airson %{instance}" @@ -300,13 +310,15 @@ msgstr "Ath-shùil air gnìomhachd %{instance} sheachdaineil" #, 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.text.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:51 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:19 msgid "%{profile} has posted a new comment under your event %{event}." msgstr "Thug %{profile} beachd ùr fon tachartas %{event} agad." #, 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.text.eex:13 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:36 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:13 msgid "%{profile} has posted a new reply under your event %{event}." msgstr "Chuir %{profile} freagairt ùr ris fon tachartas %{event} agad." diff --git a/priv/gettext/gd/LC_MESSAGES/default.po b/priv/gettext/gd/LC_MESSAGES/default.po index 62f5bf4ed..3fa271d76 100644 --- a/priv/gettext/gd/LC_MESSAGES/default.po +++ b/priv/gettext/gd/LC_MESSAGES/default.po @@ -762,9 +762,12 @@ msgstr "" #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:63 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:133 -#: lib/web/templates/email/event_updated.text.eex:14 lib/web/templates/email/notification_each_week.html.heex:60 -#: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:60 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 +#: lib/web/templates/email/event_updated.html.heex:133 +#: lib/web/templates/email/event_updated.text.eex:14 +#: lib/web/templates/email/notification_each_week.html.heex:60 +#: lib/web/templates/email/notification_each_week.text.eex:11 +#: lib/web/templates/email/on_day_notification.html.heex:60 #: lib/web/templates/email/on_day_notification.text.eex:11 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." @@ -825,7 +828,6 @@ msgstr "" #, elixir-format #: lib/web/templates/email/email_changed_new.html.heex:38 -#: lib/web/templates/email/email_changed_new.text.eex:3 msgid "Hi there! It seems like you wanted to change the email address linked to your account on <b>%{instance}</b>. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." msgstr "" @@ -847,7 +849,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:70 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.heex:45 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 +#: lib/web/templates/email/registration_confirmation.html.heex:45 msgid "If you didn't trigger this email, you may safely ignore it." msgstr "" @@ -959,7 +962,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/email_anonymous_activity.html.heex:67 -#: lib/web/templates/email/event_participation_approved.html.heex:58 lib/web/templates/email/event_participation_confirmed.html.heex:58 +#: lib/web/templates/email/event_participation_approved.html.heex:58 +#: lib/web/templates/email/event_participation_confirmed.html.heex:58 msgid "Visit event page" msgstr "" @@ -981,7 +985,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:70 -#: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.heex:70 +#: lib/web/templates/email/event_participation_approved.text.eex:11 +#: lib/web/templates/email/event_participation_confirmed.html.heex:70 #: lib/web/templates/email/event_participation_confirmed.text.eex:6 msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." msgstr "" @@ -1005,7 +1010,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:13 -#: lib/web/templates/email/event_participation_confirmed.html.heex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 +#: lib/web/templates/email/event_participation_confirmed.html.heex:13 +#: lib/web/templates/email/event_participation_confirmed.text.eex:1 msgid "You're going!" msgstr "" @@ -1330,8 +1336,10 @@ msgid "This is a demonstration site to test Mobilizon." msgstr "" #, elixir-format -#: lib/service/metadata/actor.ex:91 lib/service/metadata/actor.ex:99 -#: lib/service/metadata/instance.ex:56 lib/service/metadata/instance.ex:62 +#: lib/service/metadata/actor.ex:91 +#: lib/service/metadata/actor.ex:99 +#: lib/service/metadata/instance.ex:56 +#: lib/service/metadata/instance.ex:62 msgid "%{name}'s feed" msgstr "" @@ -1412,7 +1420,8 @@ msgstr "" #. File name template for exported list of participants. Should NOT contain spaces. Make sure the output is going to be something standardized that is acceptable as a file name on most systems. #, elixir-format #: lib/service/export/participants/csv.ex:81 -#: lib/service/export/participants/ods.ex:86 lib/service/export/participants/pdf.ex:96 +#: lib/service/export/participants/ods.ex:86 +#: lib/service/export/participants/pdf.ex:96 msgid "%{event}_participants" msgstr "" @@ -1433,6 +1442,8 @@ msgstr "" #, elixir-format #: lib/service/export/participants/common.ex:52 +#: lib/web/templates/email/admin/_role.html.heex:3 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Administrator" msgstr "" @@ -1443,6 +1454,8 @@ msgstr "" #, elixir-format #: lib/service/export/participants/common.ex:49 +#: lib/web/templates/email/admin/_role.html.heex:5 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Moderator" msgstr "" @@ -1493,8 +1506,10 @@ msgstr "" #, elixir-format #: lib/web/templates/email/date/event_tz_date.html.heex:6 -#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 lib/web/templates/email/date/event_tz_date_range.html.heex:12 -#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:12 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 msgid "🌐 %{timezone} %{offset}" msgstr "" @@ -1684,3 +1699,137 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:13 +#: lib/web/templates/email/admin_user_role_changed.text.eex:1 +msgid "An administrator changed your role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:120 +msgid "An administrator confirmed your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:1 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:1 +msgid "An administrator manually changed the email attached to your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:47 +#: lib/web/email/admin.ex:72 +msgid "An administrator manually changed the email attached to your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:13 +#: lib/web/templates/email/admin_user_confirmation.text.eex:1 +msgid "An administrator manually confirmed your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:98 +msgid "An administrator updated your role on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/email_changed_new.text.eex:3 +msgid "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:3 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually changed your account email from %{old_email} (this one) to %{new_email}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> (this one) to <b>%{new_email}</b>." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> to <b>%{new_email}</b> (this one)." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:71 +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:45 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:45 +#: lib/web/templates/email/admin_user_role_changed.html.heex:67 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods %{start_link}on the instance's about page%{end_link}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:7 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:4 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:4 +#: lib/web/templates/email/admin_user_role_changed.text.eex:8 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods on the instance's about page: %{about_page}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:58 +msgid "Login on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:55 +msgid "New role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:6 +msgid "New role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:47 +msgid "Old role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:5 +msgid "Old role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin/_role.html.heex:7 +#: lib/web/templates/email/admin/_role.text.eex:1 +msgid "User" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:45 +msgid "You may now login using your credentials on the service." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:5 +msgid "You may now login using your credentials on the service:" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just changed your account role." +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just changed your account role." +msgstr "" diff --git a/priv/gettext/gd/LC_MESSAGES/errors.po b/priv/gettext/gd/LC_MESSAGES/errors.po index fd7ec3652..4e2e1a320 100644 --- a/priv/gettext/gd/LC_MESSAGES/errors.po +++ b/priv/gettext/gd/LC_MESSAGES/errors.po @@ -120,14 +120,19 @@ msgid "Error while saving user settings" msgstr "" #, elixir-format -#: lib/graphql/error.ex:99 lib/graphql/resolvers/group.ex:249 -#: lib/graphql/resolvers/group.ex:281 lib/graphql/resolvers/group.ex:318 lib/graphql/resolvers/group.ex:349 -#: lib/graphql/resolvers/group.ex:398 lib/graphql/resolvers/member.ex:81 +#: lib/graphql/error.ex:99 +#: lib/graphql/resolvers/group.ex:249 +#: lib/graphql/resolvers/group.ex:281 +#: lib/graphql/resolvers/group.ex:318 +#: lib/graphql/resolvers/group.ex:349 +#: lib/graphql/resolvers/group.ex:398 +#: lib/graphql/resolvers/member.ex:81 msgid "Group not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:78 lib/graphql/resolvers/group.ex:82 +#: lib/graphql/resolvers/group.ex:78 +#: lib/graphql/resolvers/group.ex:82 msgid "Group with ID %{id} not found" msgstr "" @@ -152,15 +157,21 @@ msgid "No user to validate with this email was found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:314 lib/graphql/resolvers/user.ex:298 +#: lib/graphql/resolvers/person.ex:314 +#: lib/graphql/resolvers/user.ex:298 msgid "No user with this email was found" msgstr "" #, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:32 lib/graphql/resolvers/participant.ex:210 lib/graphql/resolvers/person.ex:236 -#: lib/graphql/resolvers/person.ex:353 lib/graphql/resolvers/person.ex:380 lib/graphql/resolvers/person.ex:397 -#: lib/graphql/resolvers/person.ex:425 lib/graphql/resolvers/person.ex:440 +#: lib/graphql/resolvers/participant.ex:32 +#: lib/graphql/resolvers/participant.ex:210 +#: lib/graphql/resolvers/person.ex:236 +#: lib/graphql/resolvers/person.ex:353 +#: lib/graphql/resolvers/person.ex:380 +#: lib/graphql/resolvers/person.ex:397 +#: lib/graphql/resolvers/person.ex:425 +#: lib/graphql/resolvers/person.ex:440 msgid "Profile is not owned by authenticated user" msgstr "" @@ -175,11 +186,13 @@ msgid "The current password is invalid" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:341 #: lib/graphql/resolvers/user.ex:472 msgid "The new email doesn't seem to be valid" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:344 #: lib/graphql/resolvers/user.ex:475 msgid "The new email must be different" msgstr "" @@ -190,7 +203,8 @@ msgid "The new password must be different" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:479 lib/graphql/resolvers/user.ex:541 +#: lib/graphql/resolvers/user.ex:479 +#: lib/graphql/resolvers/user.ex:541 #: lib/graphql/resolvers/user.ex:544 msgid "The password provided is invalid" msgstr "" @@ -211,7 +225,8 @@ msgid "This user has been disabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:252 lib/graphql/resolvers/user.ex:257 +#: lib/graphql/resolvers/user.ex:252 +#: lib/graphql/resolvers/user.ex:257 msgid "Unable to validate user" msgstr "" @@ -286,7 +301,8 @@ msgid "You need to have an existing token to get a refresh token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:276 lib/graphql/resolvers/user.ex:301 +#: lib/graphql/resolvers/user.ex:276 +#: lib/graphql/resolvers/user.ex:301 msgid "You requested again a confirmation email too soon" msgstr "" @@ -306,7 +322,8 @@ msgid "No profile found with this ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:97 +#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:97 msgid "No remote profile found with this ID" msgstr "" @@ -357,17 +374,19 @@ msgid "Comment is already deleted" msgstr "" #, elixir-format -#: lib/graphql/error.ex:101 lib/graphql/resolvers/discussion.ex:69 +#: lib/graphql/error.ex:101 +#: lib/graphql/resolvers/discussion.ex:69 msgid "Discussion not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:63 lib/graphql/resolvers/report.ex:82 +#: lib/graphql/resolvers/report.ex:71 +#: lib/graphql/resolvers/report.ex:90 msgid "Error while saving report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:102 +#: lib/graphql/resolvers/report.ex:110 msgid "Error while updating report" msgstr "" @@ -377,14 +396,16 @@ msgid "Event id not found" msgstr "" #, elixir-format -#: lib/graphql/error.ex:98 lib/graphql/resolvers/event.ex:360 +#: lib/graphql/error.ex:98 +#: lib/graphql/resolvers/event.ex:360 #: lib/graphql/resolvers/event.ex:412 msgid "Event not found" msgstr "" #, elixir-format #: lib/graphql/resolvers/participant.ex:87 -#: lib/graphql/resolvers/participant.ex:128 lib/graphql/resolvers/participant.ex:155 +#: lib/graphql/resolvers/participant.ex:128 +#: lib/graphql/resolvers/participant.ex:155 #: lib/graphql/resolvers/participant.ex:336 msgid "Event with this ID %{id} doesn't exist" msgstr "" @@ -400,8 +421,11 @@ msgid "No discussion with ID %{id}" msgstr "" #, elixir-format -#: lib/graphql/resolvers/todos.ex:80 lib/graphql/resolvers/todos.ex:107 -#: lib/graphql/resolvers/todos.ex:179 lib/graphql/resolvers/todos.ex:208 lib/graphql/resolvers/todos.ex:237 +#: lib/graphql/resolvers/todos.ex:80 +#: lib/graphql/resolvers/todos.ex:107 +#: lib/graphql/resolvers/todos.ex:179 +#: lib/graphql/resolvers/todos.ex:208 +#: lib/graphql/resolvers/todos.ex:237 msgid "No profile found for user" msgstr "" @@ -417,7 +441,8 @@ msgstr "" #, elixir-format #: lib/graphql/resolvers/participant.ex:187 -#: lib/graphql/resolvers/participant.ex:220 lib/graphql/resolvers/participant.ex:263 +#: lib/graphql/resolvers/participant.ex:220 +#: lib/graphql/resolvers/participant.ex:263 msgid "Participant not found" msgstr "" @@ -432,12 +457,14 @@ msgid "Person with username %{username} not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:169 lib/graphql/resolvers/post.ex:203 +#: lib/graphql/resolvers/post.ex:169 +#: lib/graphql/resolvers/post.ex:203 msgid "Post ID is not a valid ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:172 lib/graphql/resolvers/post.ex:206 +#: lib/graphql/resolvers/post.ex:172 +#: lib/graphql/resolvers/post.ex:206 msgid "Post doesn't exist" msgstr "" @@ -447,31 +474,42 @@ msgid "Profile invited doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/member.ex:93 lib/graphql/resolvers/member.ex:97 +#: lib/graphql/resolvers/member.ex:93 +#: lib/graphql/resolvers/member.ex:97 msgid "Profile is already a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:133 lib/graphql/resolvers/post.ex:175 -#: lib/graphql/resolvers/post.ex:209 lib/graphql/resolvers/resource.ex:90 lib/graphql/resolvers/resource.ex:132 -#: lib/graphql/resolvers/resource.ex:165 lib/graphql/resolvers/resource.ex:199 lib/graphql/resolvers/todos.ex:58 -#: lib/graphql/resolvers/todos.ex:83 lib/graphql/resolvers/todos.ex:110 lib/graphql/resolvers/todos.ex:182 -#: lib/graphql/resolvers/todos.ex:214 lib/graphql/resolvers/todos.ex:246 +#: lib/graphql/resolvers/post.ex:133 +#: lib/graphql/resolvers/post.ex:175 +#: lib/graphql/resolvers/post.ex:209 +#: lib/graphql/resolvers/resource.ex:90 +#: lib/graphql/resolvers/resource.ex:132 +#: lib/graphql/resolvers/resource.ex:165 +#: lib/graphql/resolvers/resource.ex:199 +#: lib/graphql/resolvers/todos.ex:58 +#: lib/graphql/resolvers/todos.ex:83 +#: lib/graphql/resolvers/todos.ex:110 +#: lib/graphql/resolvers/todos.ex:182 +#: lib/graphql/resolvers/todos.ex:214 +#: lib/graphql/resolvers/todos.ex:246 msgid "Profile is not member of group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/person.ex:233 +#: lib/graphql/resolvers/actor.ex:67 +#: lib/graphql/resolvers/person.ex:233 msgid "Profile not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:40 +#: lib/graphql/resolvers/report.ex:48 msgid "Report not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/resource.ex:169 lib/graphql/resolvers/resource.ex:196 +#: lib/graphql/resolvers/resource.ex:169 +#: lib/graphql/resolvers/resource.ex:196 msgid "Resource doesn't exist" msgstr "" @@ -486,12 +524,14 @@ msgid "This token is invalid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/todos.ex:176 lib/graphql/resolvers/todos.ex:243 +#: lib/graphql/resolvers/todos.ex:176 +#: lib/graphql/resolvers/todos.ex:243 msgid "Todo doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/todos.ex:77 lib/graphql/resolvers/todos.ex:211 +#: lib/graphql/resolvers/todos.ex:77 +#: lib/graphql/resolvers/todos.ex:211 #: lib/graphql/resolvers/todos.ex:240 msgid "Todo list doesn't exist" msgstr "" @@ -502,12 +542,13 @@ msgid "Token does not exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70 +#: lib/graphql/resolvers/feed_token.ex:67 +#: lib/graphql/resolvers/feed_token.ex:70 msgid "Token is not a valid UUID" msgstr "" #, elixir-format -#: lib/graphql/error.ex:96 lib/graphql/resolvers/person.ex:458 +#: lib/graphql/error.ex:96 msgid "User not found" msgstr "" @@ -527,7 +568,8 @@ msgid "You are not a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/member.ex:157 lib/graphql/resolvers/member.ex:173 +#: lib/graphql/resolvers/member.ex:157 +#: lib/graphql/resolvers/member.ex:173 #: lib/graphql/resolvers/member.ex:188 msgid "You are not a moderator or admin for this group" msgstr "" @@ -589,37 +631,37 @@ msgid "You don't have permission to delete this token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:54 +#: lib/graphql/resolvers/admin.ex:56 msgid "You need to be logged-in and a moderator to list action logs" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:28 +#: lib/graphql/resolvers/report.ex:36 msgid "You need to be logged-in and a moderator to list reports" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:107 +#: lib/graphql/resolvers/report.ex:115 msgid "You need to be logged-in and a moderator to update a report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:45 +#: lib/graphql/resolvers/report.ex:53 msgid "You need to be logged-in and a moderator to view a report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:255 +#: lib/graphql/resolvers/admin.ex:257 msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:239 +#: lib/graphql/resolvers/admin.ex:241 msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:281 +#: lib/graphql/resolvers/admin.ex:283 msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" @@ -644,7 +686,7 @@ msgid "You need to be logged-in to create posts" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:79 +#: lib/graphql/resolvers/report.ex:87 msgid "You need to be logged-in to create reports" msgstr "" @@ -739,7 +781,8 @@ msgid "Reset your password to login" msgstr "" #, elixir-format -#: lib/graphql/error.ex:95 lib/graphql/error.ex:100 +#: lib/graphql/error.ex:95 +#: lib/graphql/error.ex:100 msgid "Resource not found" msgstr "" @@ -829,8 +872,11 @@ msgid "Profile ID provided is not the anonymous profile one" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:161 lib/graphql/resolvers/group.ex:203 -#: lib/graphql/resolvers/person.ex:148 lib/graphql/resolvers/person.ex:182 lib/graphql/resolvers/person.ex:304 +#: lib/graphql/resolvers/group.ex:161 +#: lib/graphql/resolvers/group.ex:203 +#: lib/graphql/resolvers/person.ex:148 +#: lib/graphql/resolvers/person.ex:182 +#: lib/graphql/resolvers/person.ex:304 msgid "The provided picture is too heavy" msgstr "" @@ -855,7 +901,8 @@ msgid "Unable to fetch resource details from this URL." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:164 lib/graphql/resolvers/participant.ex:253 +#: lib/graphql/resolvers/event.ex:164 +#: lib/graphql/resolvers/participant.ex:253 #: lib/graphql/resolvers/participant.ex:328 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "" @@ -906,6 +953,7 @@ msgid "Failed to update the group" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:338 #: lib/graphql/resolvers/user.ex:469 msgid "Failed to update user email" msgstr "" @@ -1034,3 +1082,23 @@ msgstr "" #: lib/graphql/resolvers/user.ex:157 msgid "Your email seems to be using an invalid format" msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:387 +msgid "Can't confirm an already confirmed user" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:391 +msgid "Deconfirming users is not supported" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:363 +msgid "The new role must be different" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:314 +msgid "You need to be logged-in and an administrator to edit an user's details" +msgstr "" diff --git a/priv/gettext/gl/LC_MESSAGES/activity.po b/priv/gettext/gl/LC_MESSAGES/activity.po index 03b0456fa..c1ccab785 100644 --- a/priv/gettext/gl/LC_MESSAGES/activity.po +++ b/priv/gettext/gl/LC_MESSAGES/activity.po @@ -151,19 +151,22 @@ msgstr "" #, 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.text.eex:1 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:1 msgid "The event %{event} was created by %{profile}." msgstr "" #, 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.text.eex:13 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:34 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:13 msgid "The event %{event} was deleted by %{profile}." msgstr "" #, 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.text.eex:7 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:19 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:7 msgid "The event %{event} was updated by %{profile}." msgstr "" @@ -193,13 +196,15 @@ msgstr "" #, 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.text.eex:25 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:58 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:25 msgid "%{profile} posted a comment on the event %{event}." msgstr "" #, 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.text.eex:19 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:43 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:19 msgid "%{profile} replied to a comment on the event %{event}." msgstr "" @@ -218,7 +223,8 @@ 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.text.eex:6 +#: lib/web/templates/email/email_direct_activity.html.heex:46 +#: 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!" msgid_plural "There has been some activity!" @@ -232,14 +238,17 @@ msgstr "" #, 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.text.eex:7 -#: lib/web/templates/email/email_anonymous_activity.html.heex:41 lib/web/templates/email/email_anonymous_activity.text.eex:5 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:19 +#: 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.text.eex:5 msgid "%{profile} has posted an announcement under event %{event}." msgstr "" #, 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.text.eex:1 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 msgid "%{profile} mentionned you in a comment under event %{event}." msgstr "" @@ -255,7 +264,8 @@ msgid "Here's your weekly activity recap" msgstr "" #, elixir-format -#: lib/web/email/activity.ex:119 lib/web/email/activity.ex:140 +#: lib/web/email/activity.ex:119 +#: lib/web/email/activity.ex:140 msgid "Activity notification for %{instance}" msgstr "" @@ -277,13 +287,15 @@ msgstr "" #, 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.text.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:51 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:19 msgid "%{profile} has posted a new comment under your event %{event}." msgstr "" #, 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.text.eex:13 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:36 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:13 msgid "%{profile} has posted a new reply under your event %{event}." msgstr "" diff --git a/priv/gettext/gl/LC_MESSAGES/default.po b/priv/gettext/gl/LC_MESSAGES/default.po index c597f1d82..51e46b82f 100644 --- a/priv/gettext/gl/LC_MESSAGES/default.po +++ b/priv/gettext/gl/LC_MESSAGES/default.po @@ -916,9 +916,12 @@ msgstr "Por favor, non o utilices nun entorno de produción." #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:63 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:133 -#: lib/web/templates/email/event_updated.text.eex:14 lib/web/templates/email/notification_each_week.html.heex:60 -#: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:60 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 +#: lib/web/templates/email/event_updated.html.heex:133 +#: lib/web/templates/email/event_updated.text.eex:14 +#: lib/web/templates/email/notification_each_week.html.heex:60 +#: lib/web/templates/email/notification_each_week.text.eex:11 +#: lib/web/templates/email/on_day_notification.html.heex:60 #: lib/web/templates/email/on_day_notification.text.eex:11 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." @@ -983,7 +986,6 @@ msgstr "" #, elixir-format #: lib/web/templates/email/email_changed_new.html.heex:38 -#: lib/web/templates/email/email_changed_new.text.eex:3 msgid "Hi there! It seems like you wanted to change the email address linked to your account on <b>%{instance}</b>. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." msgstr "" "Ola! Semella que queres cambiar o enderezo de email asociado á túa conta en " @@ -1017,7 +1019,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:70 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.heex:45 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 +#: lib/web/templates/email/registration_confirmation.html.heex:45 msgid "If you didn't trigger this email, you may safely ignore it." msgstr "Se non solicitaches este email, podes ignoralo con seguridade." @@ -1135,7 +1138,8 @@ msgstr "Ver denuncia:" #, elixir-format #: lib/web/templates/email/email_anonymous_activity.html.heex:67 -#: lib/web/templates/email/event_participation_approved.html.heex:58 lib/web/templates/email/event_participation_confirmed.html.heex:58 +#: lib/web/templates/email/event_participation_approved.html.heex:58 +#: lib/web/templates/email/event_participation_confirmed.html.heex:58 msgid "Visit event page" msgstr "Visitar páxina do evento" @@ -1157,7 +1161,8 @@ msgstr "Que temos para hoxe?" #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:70 -#: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.heex:70 +#: lib/web/templates/email/event_participation_approved.text.eex:11 +#: lib/web/templates/email/event_participation_confirmed.html.heex:70 #: lib/web/templates/email/event_participation_confirmed.text.eex:6 msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." msgstr "" @@ -1186,7 +1191,8 @@ msgstr "Recentemente solicitaches participar en %{title}." #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:13 -#: lib/web/templates/email/event_participation_confirmed.html.heex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 +#: lib/web/templates/email/event_participation_confirmed.html.heex:13 +#: lib/web/templates/email/event_participation_confirmed.text.eex:1 msgid "You're going!" msgstr "Vas ir!" @@ -1607,8 +1613,10 @@ msgid "This is a demonstration site to test Mobilizon." msgstr "Este é un sitio web de exemplo para probar Mobilizon." #, elixir-format -#: lib/service/metadata/actor.ex:91 lib/service/metadata/actor.ex:99 -#: lib/service/metadata/instance.ex:56 lib/service/metadata/instance.ex:62 +#: lib/service/metadata/actor.ex:91 +#: lib/service/metadata/actor.ex:99 +#: lib/service/metadata/instance.ex:56 +#: lib/service/metadata/instance.ex:62 msgid "%{name}'s feed" msgstr "fonte de %{name}" @@ -1700,7 +1708,8 @@ msgstr "Confirmouse a túa participación no evento %{title}" #. File name template for exported list of participants. Should NOT contain spaces. Make sure the output is going to be something standardized that is acceptable as a file name on most systems. #, elixir-format #: lib/service/export/participants/csv.ex:81 -#: lib/service/export/participants/ods.ex:86 lib/service/export/participants/pdf.ex:96 +#: lib/service/export/participants/ods.ex:86 +#: lib/service/export/participants/pdf.ex:96 msgid "%{event}_participants" msgstr "" @@ -1721,6 +1730,8 @@ msgstr "" #, elixir-format #: lib/service/export/participants/common.ex:52 +#: lib/web/templates/email/admin/_role.html.heex:3 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Administrator" msgstr "" @@ -1731,6 +1742,8 @@ msgstr "" #, elixir-format #: lib/service/export/participants/common.ex:49 +#: lib/web/templates/email/admin/_role.html.heex:5 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Moderator" msgstr "" @@ -1781,8 +1794,10 @@ msgstr "" #, elixir-format #: lib/web/templates/email/date/event_tz_date.html.heex:6 -#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 lib/web/templates/email/date/event_tz_date_range.html.heex:12 -#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:12 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 msgid "🌐 %{timezone} %{offset}" msgstr "" @@ -1972,3 +1987,141 @@ msgstr[0] "Tes unha solicitude de participación pendente de atender:" msgstr[1] "" "Tes %{number_participation_requests} solicitudes de participación pendentes " "de atender:" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:13 +#: lib/web/templates/email/admin_user_role_changed.text.eex:1 +msgid "An administrator changed your role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:120 +msgid "An administrator confirmed your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:1 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:1 +msgid "An administrator manually changed the email attached to your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:47 +#: lib/web/email/admin.ex:72 +msgid "An administrator manually changed the email attached to your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:13 +#: lib/web/templates/email/admin_user_confirmation.text.eex:1 +msgid "An administrator manually confirmed your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:98 +msgid "An administrator updated your role on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/email_changed_new.text.eex:3 +msgid "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." +msgstr "" +"Ola! Semella que queres cambiar o enderezo de email asociado á túa conta en " +"<b>%{instance}</b>. Se así o desexas, preme no botón inferior para confirmar " +"o cambio. Despois poderás conectarte a %{instance} utilizando este novo " +"enderezo de email." + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:3 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually changed your account email from %{old_email} (this one) to %{new_email}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> (this one) to <b>%{new_email}</b>." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> to <b>%{new_email}</b> (this one)." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:71 +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:45 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:45 +#: lib/web/templates/email/admin_user_role_changed.html.heex:67 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods %{start_link}on the instance's about page%{end_link}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:7 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:4 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:4 +#: lib/web/templates/email/admin_user_role_changed.text.eex:8 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods on the instance's about page: %{about_page}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:58 +msgid "Login on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:55 +msgid "New role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:6 +msgid "New role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:47 +msgid "Old role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:5 +msgid "Old role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin/_role.html.heex:7 +#: lib/web/templates/email/admin/_role.text.eex:1 +msgid "User" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:45 +msgid "You may now login using your credentials on the service." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:5 +msgid "You may now login using your credentials on the service:" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just changed your account role." +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just changed your account role." +msgstr "" diff --git a/priv/gettext/gl/LC_MESSAGES/errors.po b/priv/gettext/gl/LC_MESSAGES/errors.po index 84a447330..af53e7ffa 100644 --- a/priv/gettext/gl/LC_MESSAGES/errors.po +++ b/priv/gettext/gl/LC_MESSAGES/errors.po @@ -115,14 +115,19 @@ msgid "Error while saving user settings" msgstr "Erro ó gardar os axustes de usuaria" #, elixir-format -#: lib/graphql/error.ex:99 lib/graphql/resolvers/group.ex:249 -#: lib/graphql/resolvers/group.ex:281 lib/graphql/resolvers/group.ex:318 lib/graphql/resolvers/group.ex:349 -#: lib/graphql/resolvers/group.ex:398 lib/graphql/resolvers/member.ex:81 +#: lib/graphql/error.ex:99 +#: lib/graphql/resolvers/group.ex:249 +#: lib/graphql/resolvers/group.ex:281 +#: lib/graphql/resolvers/group.ex:318 +#: lib/graphql/resolvers/group.ex:349 +#: lib/graphql/resolvers/group.ex:398 +#: lib/graphql/resolvers/member.ex:81 msgid "Group not found" msgstr "Grupo non atopado" #, elixir-format -#: lib/graphql/resolvers/group.ex:78 lib/graphql/resolvers/group.ex:82 +#: lib/graphql/resolvers/group.ex:78 +#: lib/graphql/resolvers/group.ex:82 msgid "Group with ID %{id} not found" msgstr "Grupo con ID %{id} non atopado" @@ -148,15 +153,21 @@ msgid "No user to validate with this email was found" msgstr "Non se atopou unha usuaria con este email para validar" #, elixir-format -#: lib/graphql/resolvers/person.ex:314 lib/graphql/resolvers/user.ex:298 +#: lib/graphql/resolvers/person.ex:314 +#: lib/graphql/resolvers/user.ex:298 msgid "No user with this email was found" msgstr "Non se atopa ningunha usuaria con este email" #, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:32 lib/graphql/resolvers/participant.ex:210 lib/graphql/resolvers/person.ex:236 -#: lib/graphql/resolvers/person.ex:353 lib/graphql/resolvers/person.ex:380 lib/graphql/resolvers/person.ex:397 -#: lib/graphql/resolvers/person.ex:425 lib/graphql/resolvers/person.ex:440 +#: lib/graphql/resolvers/participant.ex:32 +#: lib/graphql/resolvers/participant.ex:210 +#: lib/graphql/resolvers/person.ex:236 +#: lib/graphql/resolvers/person.ex:353 +#: lib/graphql/resolvers/person.ex:380 +#: lib/graphql/resolvers/person.ex:397 +#: lib/graphql/resolvers/person.ex:425 +#: lib/graphql/resolvers/person.ex:440 msgid "Profile is not owned by authenticated user" msgstr "O perfil non pertence a unha usuaria autenticada" @@ -171,11 +182,13 @@ msgid "The current password is invalid" msgstr "O contrasinal actual non é válido" #, elixir-format +#: lib/graphql/resolvers/admin.ex:341 #: lib/graphql/resolvers/user.ex:472 msgid "The new email doesn't seem to be valid" msgstr "O novo email non semella ser válido" #, elixir-format +#: lib/graphql/resolvers/admin.ex:344 #: lib/graphql/resolvers/user.ex:475 msgid "The new email must be different" msgstr "O novo email ten que ser diferente" @@ -186,7 +199,8 @@ msgid "The new password must be different" msgstr "O novo contrasinal ten que ser diferente" #, elixir-format -#: lib/graphql/resolvers/user.ex:479 lib/graphql/resolvers/user.ex:541 +#: lib/graphql/resolvers/user.ex:479 +#: lib/graphql/resolvers/user.ex:541 #: lib/graphql/resolvers/user.ex:544 msgid "The password provided is invalid" msgstr "O contrasinal escrito non é válido" @@ -209,7 +223,8 @@ msgid "This user has been disabled" msgstr "Estab usuaria foi desactivada" #, elixir-format -#: lib/graphql/resolvers/user.ex:252 lib/graphql/resolvers/user.ex:257 +#: lib/graphql/resolvers/user.ex:252 +#: lib/graphql/resolvers/user.ex:257 msgid "Unable to validate user" msgstr "Non se puido validar a usuaria" @@ -284,7 +299,8 @@ msgid "You need to have an existing token to get a refresh token" msgstr "Tes que ter un token existente para obter un token actualizado" #, elixir-format -#: lib/graphql/resolvers/user.ex:276 lib/graphql/resolvers/user.ex:301 +#: lib/graphql/resolvers/user.ex:276 +#: lib/graphql/resolvers/user.ex:301 msgid "You requested again a confirmation email too soon" msgstr "Solicitaches demasiado pronto un email de confirmación" @@ -304,7 +320,8 @@ msgid "No profile found with this ID" msgstr "Non se atopa o perfil con este ID" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:97 +#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:97 msgid "No remote profile found with this ID" msgstr "Non se atopa o perfil remoto con este ID" @@ -355,17 +372,19 @@ msgid "Comment is already deleted" msgstr "O comentario xa foi eliminado" #, elixir-format -#: lib/graphql/error.ex:101 lib/graphql/resolvers/discussion.ex:69 +#: lib/graphql/error.ex:101 +#: lib/graphql/resolvers/discussion.ex:69 msgid "Discussion not found" msgstr "Non se atopa a conversa" #, elixir-format -#: lib/graphql/resolvers/report.ex:63 lib/graphql/resolvers/report.ex:82 +#: lib/graphql/resolvers/report.ex:71 +#: lib/graphql/resolvers/report.ex:90 msgid "Error while saving report" msgstr "Erro ó gardar a denuncia" #, elixir-format -#: lib/graphql/resolvers/report.ex:102 +#: lib/graphql/resolvers/report.ex:110 msgid "Error while updating report" msgstr "Erro ó actualizar a denuncia" @@ -375,14 +394,16 @@ msgid "Event id not found" msgstr "Non se atopou o ID do evento" #, elixir-format -#: lib/graphql/error.ex:98 lib/graphql/resolvers/event.ex:360 +#: lib/graphql/error.ex:98 +#: lib/graphql/resolvers/event.ex:360 #: lib/graphql/resolvers/event.ex:412 msgid "Event not found" msgstr "Evento non atopado" #, elixir-format #: lib/graphql/resolvers/participant.ex:87 -#: lib/graphql/resolvers/participant.ex:128 lib/graphql/resolvers/participant.ex:155 +#: lib/graphql/resolvers/participant.ex:128 +#: lib/graphql/resolvers/participant.ex:155 #: lib/graphql/resolvers/participant.ex:336 msgid "Event with this ID %{id} doesn't exist" msgstr "Non existe un evento co ID %{id}" @@ -398,8 +419,11 @@ msgid "No discussion with ID %{id}" msgstr "Non hai conversa con ID %{id}" #, elixir-format -#: lib/graphql/resolvers/todos.ex:80 lib/graphql/resolvers/todos.ex:107 -#: lib/graphql/resolvers/todos.ex:179 lib/graphql/resolvers/todos.ex:208 lib/graphql/resolvers/todos.ex:237 +#: lib/graphql/resolvers/todos.ex:80 +#: lib/graphql/resolvers/todos.ex:107 +#: lib/graphql/resolvers/todos.ex:179 +#: lib/graphql/resolvers/todos.ex:208 +#: lib/graphql/resolvers/todos.ex:237 msgid "No profile found for user" msgstr "Non se atopou o perfil da usuaria" @@ -415,7 +439,8 @@ msgstr "A participante xa ten o rol %{role}" #, elixir-format #: lib/graphql/resolvers/participant.ex:187 -#: lib/graphql/resolvers/participant.ex:220 lib/graphql/resolvers/participant.ex:263 +#: lib/graphql/resolvers/participant.ex:220 +#: lib/graphql/resolvers/participant.ex:263 msgid "Participant not found" msgstr "Non se atopou a participante" @@ -430,12 +455,14 @@ msgid "Person with username %{username} not found" msgstr "Non se atopa a persoa con nome de usuaria %{username}" #, elixir-format -#: lib/graphql/resolvers/post.ex:169 lib/graphql/resolvers/post.ex:203 +#: lib/graphql/resolvers/post.ex:169 +#: lib/graphql/resolvers/post.ex:203 msgid "Post ID is not a valid ID" msgstr "ID da publicación non é un ID válido" #, elixir-format -#: lib/graphql/resolvers/post.ex:172 lib/graphql/resolvers/post.ex:206 +#: lib/graphql/resolvers/post.ex:172 +#: lib/graphql/resolvers/post.ex:206 msgid "Post doesn't exist" msgstr "Non existe a publicación" @@ -445,31 +472,42 @@ msgid "Profile invited doesn't exist" msgstr "O perfil convidado non existe" #, elixir-format -#: lib/graphql/resolvers/member.ex:93 lib/graphql/resolvers/member.ex:97 +#: lib/graphql/resolvers/member.ex:93 +#: lib/graphql/resolvers/member.ex:97 msgid "Profile is already a member of this group" msgstr "O perfil xa é membro deste grupo" #, elixir-format -#: lib/graphql/resolvers/post.ex:133 lib/graphql/resolvers/post.ex:175 -#: lib/graphql/resolvers/post.ex:209 lib/graphql/resolvers/resource.ex:90 lib/graphql/resolvers/resource.ex:132 -#: lib/graphql/resolvers/resource.ex:165 lib/graphql/resolvers/resource.ex:199 lib/graphql/resolvers/todos.ex:58 -#: lib/graphql/resolvers/todos.ex:83 lib/graphql/resolvers/todos.ex:110 lib/graphql/resolvers/todos.ex:182 -#: lib/graphql/resolvers/todos.ex:214 lib/graphql/resolvers/todos.ex:246 +#: lib/graphql/resolvers/post.ex:133 +#: lib/graphql/resolvers/post.ex:175 +#: lib/graphql/resolvers/post.ex:209 +#: lib/graphql/resolvers/resource.ex:90 +#: lib/graphql/resolvers/resource.ex:132 +#: lib/graphql/resolvers/resource.ex:165 +#: lib/graphql/resolvers/resource.ex:199 +#: lib/graphql/resolvers/todos.ex:58 +#: lib/graphql/resolvers/todos.ex:83 +#: lib/graphql/resolvers/todos.ex:110 +#: lib/graphql/resolvers/todos.ex:182 +#: lib/graphql/resolvers/todos.ex:214 +#: lib/graphql/resolvers/todos.ex:246 msgid "Profile is not member of group" msgstr "O perfil non é membro do grupo" #, elixir-format -#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/person.ex:233 +#: lib/graphql/resolvers/actor.ex:67 +#: lib/graphql/resolvers/person.ex:233 msgid "Profile not found" msgstr "Perfil non atopado" #, elixir-format -#: lib/graphql/resolvers/report.ex:40 +#: lib/graphql/resolvers/report.ex:48 msgid "Report not found" msgstr "Denuncia non atopada" #, elixir-format -#: lib/graphql/resolvers/resource.ex:169 lib/graphql/resolvers/resource.ex:196 +#: lib/graphql/resolvers/resource.ex:169 +#: lib/graphql/resolvers/resource.ex:196 msgid "Resource doesn't exist" msgstr "Non existe o recurso" @@ -484,12 +522,14 @@ msgid "This token is invalid" msgstr "Este token non é válido" #, elixir-format -#: lib/graphql/resolvers/todos.ex:176 lib/graphql/resolvers/todos.ex:243 +#: lib/graphql/resolvers/todos.ex:176 +#: lib/graphql/resolvers/todos.ex:243 msgid "Todo doesn't exist" msgstr "Lista de tarefas non existe" #, elixir-format -#: lib/graphql/resolvers/todos.ex:77 lib/graphql/resolvers/todos.ex:211 +#: lib/graphql/resolvers/todos.ex:77 +#: lib/graphql/resolvers/todos.ex:211 #: lib/graphql/resolvers/todos.ex:240 msgid "Todo list doesn't exist" msgstr "A lista de tarefas non existe" @@ -500,12 +540,13 @@ msgid "Token does not exist" msgstr "Non existe o token" #, elixir-format -#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70 +#: lib/graphql/resolvers/feed_token.ex:67 +#: lib/graphql/resolvers/feed_token.ex:70 msgid "Token is not a valid UUID" msgstr "O token non é un UUID válido" #, elixir-format -#: lib/graphql/error.ex:96 lib/graphql/resolvers/person.ex:458 +#: lib/graphql/error.ex:96 msgid "User not found" msgstr "Usuaria non atopada" @@ -525,7 +566,8 @@ msgid "You are not a member of this group" msgstr "Non es membro deste grupo" #, elixir-format -#: lib/graphql/resolvers/member.ex:157 lib/graphql/resolvers/member.ex:173 +#: lib/graphql/resolvers/member.ex:157 +#: lib/graphql/resolvers/member.ex:173 #: lib/graphql/resolvers/member.ex:188 msgid "You are not a moderator or admin for this group" msgstr "Non es moderadora ou administradora deste grupo" @@ -590,43 +632,43 @@ msgid "You don't have permission to delete this token" msgstr "Non tes permiso para eliminar este token" #, elixir-format -#: lib/graphql/resolvers/admin.ex:54 +#: lib/graphql/resolvers/admin.ex:56 msgid "You need to be logged-in and a moderator to list action logs" msgstr "" "Tes que estar conectada e ser moderadora para ver listas de rexistros de " "accións" #, elixir-format -#: lib/graphql/resolvers/report.ex:28 +#: lib/graphql/resolvers/report.ex:36 msgid "You need to be logged-in and a moderator to list reports" msgstr "Tes que estar conectada e ser moderadora para ver listas de denuncias" #, elixir-format -#: lib/graphql/resolvers/report.ex:107 +#: lib/graphql/resolvers/report.ex:115 msgid "You need to be logged-in and a moderator to update a report" msgstr "Tes que estas conectada e ser moderadora para actualizar unha denuncia" #, elixir-format -#: lib/graphql/resolvers/report.ex:45 +#: lib/graphql/resolvers/report.ex:53 msgid "You need to be logged-in and a moderator to view a report" msgstr "Tes que estar conectada e ser moderadora para ver unha denuncia" #, elixir-format -#: lib/graphql/resolvers/admin.ex:255 +#: lib/graphql/resolvers/admin.ex:257 msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" "Tes que estar conectada e ser administradora para acceder ós axustes de " "administración" #, elixir-format -#: lib/graphql/resolvers/admin.ex:239 +#: lib/graphql/resolvers/admin.ex:241 msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" "Tes que estar conectada e ser administradora para acceder ó taboleiro de " "estatísticas" #, elixir-format -#: lib/graphql/resolvers/admin.ex:281 +#: lib/graphql/resolvers/admin.ex:283 msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" "Tes que estar conectada e ser administradora para gardar os axustes de " @@ -653,7 +695,7 @@ msgid "You need to be logged-in to create posts" msgstr "Tes que estar conectada para crear publicacións" #, elixir-format -#: lib/graphql/resolvers/report.ex:79 +#: lib/graphql/resolvers/report.ex:87 msgid "You need to be logged-in to create reports" msgstr "Tes que estar conectada para crear denuncias" @@ -749,7 +791,8 @@ msgid "Reset your password to login" msgstr "Restablece o teu contrasinal para conectar" #, elixir-format -#: lib/graphql/error.ex:95 lib/graphql/error.ex:100 +#: lib/graphql/error.ex:95 +#: lib/graphql/error.ex:100 msgid "Resource not found" msgstr "Recurso non atopado" @@ -839,8 +882,11 @@ msgid "Profile ID provided is not the anonymous profile one" msgstr "O ID do perfil proporcionado non é o perfil anónimo" #, elixir-format -#: lib/graphql/resolvers/group.ex:161 lib/graphql/resolvers/group.ex:203 -#: lib/graphql/resolvers/person.ex:148 lib/graphql/resolvers/person.ex:182 lib/graphql/resolvers/person.ex:304 +#: lib/graphql/resolvers/group.ex:161 +#: lib/graphql/resolvers/group.ex:203 +#: lib/graphql/resolvers/person.ex:148 +#: lib/graphql/resolvers/person.ex:182 +#: lib/graphql/resolvers/person.ex:304 msgid "The provided picture is too heavy" msgstr "A imaxe proporcionada é demasiado grande (mb)" @@ -865,7 +911,8 @@ msgid "Unable to fetch resource details from this URL." msgstr "Non se puideron obter os detalles do recurso desde o URL." #, elixir-format -#: lib/graphql/resolvers/event.ex:164 lib/graphql/resolvers/participant.ex:253 +#: lib/graphql/resolvers/event.ex:164 +#: lib/graphql/resolvers/participant.ex:253 #: lib/graphql/resolvers/participant.ex:328 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "O perfil da moderadora proporcionado non ten permisos neste evento" @@ -921,6 +968,7 @@ msgid "Failed to update the group" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:338 #: lib/graphql/resolvers/user.ex:469 msgid "Failed to update user email" msgstr "" @@ -1049,3 +1097,25 @@ msgstr "" #: lib/graphql/resolvers/user.ex:157 msgid "Your email seems to be using an invalid format" msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:387 +msgid "Can't confirm an already confirmed user" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:391 +msgid "Deconfirming users is not supported" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:363 +msgid "The new role must be different" +msgstr "O novo email ten que ser diferente" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:314 +msgid "You need to be logged-in and an administrator to edit an user's details" +msgstr "" +"Tes que estar conectada e ser administradora para gardar os axustes de " +"administración" diff --git a/priv/gettext/he/LC_MESSAGES/activity.po b/priv/gettext/he/LC_MESSAGES/activity.po index 341537e10..b0cbfd8cd 100644 --- a/priv/gettext/he/LC_MESSAGES/activity.po +++ b/priv/gettext/he/LC_MESSAGES/activity.po @@ -24,208 +24,213 @@ msgstr "" ## 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. +#, elixir-format #: lib/web/templates/email/activity/_member_activity_item.html.heex:19 #: lib/web/templates/email/activity/_member_activity_item.text.eex:12 -#, elixir-format msgid "%{member} accepted the invitation to join the group." msgstr "%{member} קיבל.ה את ההזמנה להצטרף לקבוצה." +#, elixir-format #: lib/web/templates/email/activity/_member_activity_item.html.heex:26 #: lib/web/templates/email/activity/_member_activity_item.text.eex:17 -#, elixir-format msgid "%{member} rejected the invitation to join the group." msgstr "%{member} דח.תה את ההזמנה להצטרף לקבוצה." +#, elixir-format #: lib/web/templates/email/activity/_member_activity_item.html.heex:4 #: lib/web/templates/email/activity/_member_activity_item.text.eex:1 -#, elixir-format msgid "%{member} requested to join the group." msgstr "%{member} ביקש.ה להצטרף לקבוצה." +#, elixir-format #: lib/web/templates/email/activity/_member_activity_item.html.heex:11 #: lib/web/templates/email/activity/_member_activity_item.text.eex:6 -#, elixir-format msgid "%{member} was invited by %{profile}." msgstr "%{member} הוזמנ.ה על־ידי %{profile}." +#, elixir-format #: lib/web/templates/email/activity/_member_activity_item.html.heex:40 #: lib/web/templates/email/activity/_member_activity_item.text.eex:27 -#, elixir-format msgid "%{profile} added the member %{member}." msgstr "%{profile} הוסיפ.ה את החבר.ה %{member}." +#, elixir-format #: lib/web/templates/email/activity/_discussion_activity_item.html.heex:46 #: lib/web/templates/email/activity/_discussion_activity_item.text.eex:19 -#, elixir-format msgid "%{profile} archived the discussion %{discussion}." msgstr "%{profile} העביר.ה לארכיון את הדיון %{discussion}." +#, elixir-format #: lib/web/templates/email/activity/_discussion_activity_item.html.heex:4 #: lib/web/templates/email/activity/_discussion_activity_item.text.eex:1 -#, elixir-format msgid "%{profile} created the discussion %{discussion}." msgstr "%{profile} פתח.ה את הדיון %{discussion}." +#, elixir-format #: lib/web/templates/email/activity/_resource_activity_item.html.heex:5 #: lib/web/templates/email/activity/_resource_activity_item.text.eex:2 -#, elixir-format msgid "%{profile} created the folder %{resource}." msgstr "%{profile} יצר.ה את התיקייה %{resource}." +#, elixir-format #: lib/web/templates/email/activity/_group_activity_item.html.heex:4 #: lib/web/templates/email/activity/_group_activity_item.text.eex:1 -#, elixir-format msgid "%{profile} created the group %{group}." msgstr "%{profile} יצר.ה את הקבוצה %{group}." +#, elixir-format #: lib/web/templates/email/activity/_resource_activity_item.html.heex:20 #: lib/web/templates/email/activity/_resource_activity_item.text.eex:8 -#, elixir-format msgid "%{profile} created the resource %{resource}." msgstr "%{profile} יצר.ה את המשאב %{resource}." +#, elixir-format #: lib/web/templates/email/activity/_discussion_activity_item.html.heex:60 #: lib/web/templates/email/activity/_discussion_activity_item.text.eex:25 -#, elixir-format msgid "%{profile} deleted the discussion %{discussion}." msgstr "%{profile} מחק.ה את הדיון %{discussion}." +#, elixir-format #: lib/web/templates/email/activity/_resource_activity_item.html.heex:103 #: lib/web/templates/email/activity/_resource_activity_item.text.eex:40 -#, elixir-format msgid "%{profile} deleted the folder %{resource}." msgstr "%{profile} מחק.ה את התיקייה %{resource}." +#, elixir-format #: lib/web/templates/email/activity/_resource_activity_item.html.heex:111 #: lib/web/templates/email/activity/_resource_activity_item.text.eex:45 -#, elixir-format msgid "%{profile} deleted the resource %{resource}." msgstr "%{profile} מחק.ה את המשאב %{resource}." +#, elixir-format #: lib/web/templates/email/activity/_member_activity_item.html.heex:56 #: lib/web/templates/email/activity/_member_activity_item.text.eex:39 -#, elixir-format msgid "%{profile} excluded member %{member}." msgstr "%{profile} הוציא.ה את החבר.ה %{member}." +#, elixir-format #: lib/web/templates/email/activity/_resource_activity_item.html.heex:71 #: lib/web/templates/email/activity/_resource_activity_item.text.eex:28 -#, elixir-format msgid "%{profile} moved the folder %{resource}." msgstr "%{profile} הזיז.ה את התיקייה %{resource}." +#, elixir-format #: lib/web/templates/email/activity/_resource_activity_item.html.heex:86 #: lib/web/templates/email/activity/_resource_activity_item.text.eex:34 -#, elixir-format msgid "%{profile} moved the resource %{resource}." msgstr "%{profile} הזיז.ה את המשאב %{resource}." +#, elixir-format #: lib/web/templates/email/activity/_member_activity_item.html.heex:64 #: lib/web/templates/email/activity/_member_activity_item.text.eex:45 -#, elixir-format msgid "%{profile} quit the group." msgstr "%{profile} יצא.ה מהקבוצה." +#, elixir-format #: lib/web/templates/email/activity/_discussion_activity_item.html.heex:32 #: lib/web/templates/email/activity/_discussion_activity_item.text.eex:13 -#, elixir-format msgid "%{profile} renamed the discussion %{discussion}." msgstr "%{profile} שינ.תה את כותרת הדיון %{discussion}." +#, elixir-format #: lib/web/templates/email/activity/_resource_activity_item.html.heex:37 #: lib/web/templates/email/activity/_resource_activity_item.text.eex:14 -#, elixir-format msgid "%{profile} renamed the folder from %{old_resource_title} to %{resource}." msgstr "%{profile} שינ.תה את השם התיקייה מ־%{old_resource_title} ל־%{resource}." +#, elixir-format #: lib/web/templates/email/activity/_resource_activity_item.html.heex:53 #: lib/web/templates/email/activity/_resource_activity_item.text.eex:21 -#, elixir-format msgid "%{profile} renamed the resource from %{old_resource_title} to %{resource}." msgstr "%{profile} שינ.תה את שם המשאב מ־%{old_resource_title} ל־%{resource}." +#, elixir-format #: lib/web/templates/email/activity/_discussion_activity_item.html.heex:18 #: lib/web/templates/email/activity/_discussion_activity_item.text.eex:7 -#, elixir-format msgid "%{profile} replied to the discussion %{discussion}." msgstr "%{profile} הגיב.ה בדיון %{discussion}." +#, elixir-format #: lib/web/templates/email/activity/_group_activity_item.html.heex:19 #: lib/web/templates/email/activity/_group_activity_item.text.eex:7 -#, elixir-format msgid "%{profile} updated the group %{group}." msgstr "%{profile} עידכנ.ה את הקבוצה %{group}." +#, elixir-format #: lib/web/templates/email/activity/_member_activity_item.html.heex:48 #: lib/web/templates/email/activity/_member_activity_item.text.eex:33 -#, elixir-format msgid "%{profile} updated the member %{member}." msgstr "%{profile} עידכנ.ה את החבר.ה %{member}." -#: 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.text.eex:1 #, 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.text.eex:1 msgid "The event %{event} was created by %{profile}." msgstr "האירוע %{event} נוצר על־ידי %{profile}." -#: 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.text.eex:13 #, 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.text.eex:13 msgid "The event %{event} was deleted by %{profile}." msgstr "האירוע %{event} נמחק על־ידי %{profile}." -#: 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.text.eex:7 #, 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.text.eex:7 msgid "The event %{event} was updated by %{profile}." msgstr "האירוע %{event} עודכן על־ידי %{profile}." +#, elixir-format #: lib/web/templates/email/activity/_post_activity_item.html.heex:4 #: lib/web/templates/email/activity/_post_activity_item.text.eex:1 -#, elixir-format msgid "The post %{post} was created by %{profile}." msgstr "הרשומה %{post} נוצרה על־ידי %{profile}." +#, elixir-format #: lib/web/templates/email/activity/_post_activity_item.html.heex:34 #: lib/web/templates/email/activity/_post_activity_item.text.eex:13 -#, elixir-format msgid "The post %{post} was deleted by %{profile}." msgstr "הרשומה %{post} נמחקה על־ידי %{profile}." +#, elixir-format #: lib/web/templates/email/activity/_post_activity_item.html.heex:19 #: lib/web/templates/email/activity/_post_activity_item.text.eex:7 -#, elixir-format msgid "The post %{post} was updated by %{profile}." msgstr "הרשומה %{post} עודכנה על־ידי %{profile}." +#, elixir-format #: lib/web/templates/email/activity/_member_activity_item.html.heex:33 #: lib/web/templates/email/activity/_member_activity_item.text.eex:22 -#, elixir-format msgid "%{member} joined the group." msgstr "%{member} הצטרפ.ה אל הקבוצה." -#: 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.text.eex:25 #, 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.text.eex:25 msgid "%{profile} posted a comment on the event %{event}." msgstr "%{profile} שלח.ה הערה על האירוע %{event}." -#: 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.text.eex:19 #, 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.text.eex:19 msgid "%{profile} replied to a comment on the event %{event}." msgstr "%{profile} הגיב.ה על הערה על האירוע %{event}." -#: lib/web/templates/email/email_direct_activity.text.eex:27 #, elixir-format +#: lib/web/templates/email/email_direct_activity.text.eex:27 msgid "Don't want to receive activity notifications? You may change frequency or disable them in your settings." msgstr "" "לא רוצה לקבל התראות על פעילות? ניתן לשנות את התדירות או לכבות אותן בהגדרות " "שלך." +#, elixir-format #: lib/web/templates/email/email_direct_activity.html.heex:135 #: lib/web/templates/email/email_direct_activity.text.eex:23 -#, elixir-format msgid "View one more activity" msgid_plural "View %{count} more activities" msgstr[0] "להציג עוד פעילות אחת" @@ -233,10 +238,11 @@ msgstr[1] "להציג עוד 2 פעילויות" msgstr[2] "להציג עוד %{count} פעילויות" msgstr[3] "להציג עוד %{count} פעילויות" -#: 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.text.eex:6 -#: lib/web/templates/email/email_direct_activity.text.eex:7 #, 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.text.eex:6 +#: lib/web/templates/email/email_direct_activity.text.eex:7 msgid "There has been an activity!" msgid_plural "There has been some activity!" msgstr[0] "התרחשה פעילות!" @@ -244,220 +250,226 @@ msgstr[1] "התרחשו פעילויות!" msgstr[2] "התרחשו פעילויות!" msgstr[3] "התרחשו פעילויות!" -#: lib/service/activity/renderer/renderer.ex:46 #, elixir-format +#: lib/service/activity/renderer/renderer.ex:46 msgid "Activity on %{instance}" msgstr "פעילות באתר %{instance}" -#: 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.text.eex:7 -#: lib/web/templates/email/email_anonymous_activity.html.heex:41 lib/web/templates/email/email_anonymous_activity.text.eex:5 #, 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.text.eex:7 +#: lib/web/templates/email/email_anonymous_activity.html.heex:41 +#: lib/web/templates/email/email_anonymous_activity.text.eex:5 msgid "%{profile} has posted an announcement under event %{event}." msgstr "%{profile} שלח.ה הודעה באירוע %{event}." -#: 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.text.eex:1 #, 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.text.eex:1 msgid "%{profile} mentionned you in a comment under event %{event}." msgstr "%{profile} הזכיר.ה אותך בהערה תחת האירוע %{event}." -#: lib/web/templates/email/email_direct_activity.html.heex:155 #, elixir-format +#: lib/web/templates/email/email_direct_activity.html.heex:155 msgid "Don't want to receive activity notifications? You may change frequency or disable them in %{tag_start}your settings%{tag_end}." msgstr "" "לא רוצה לקבל התראות על פעילות? ניתן לשנות את התדירות או לכבות אותן " "ב%{tag_start}הגדרות שלך%{tag_end}." +#, elixir-format #: lib/web/templates/email/email_direct_activity.html.heex:42 #: lib/web/templates/email/email_direct_activity.text.eex:5 -#, elixir-format msgid "Here's your weekly activity recap" msgstr "הנה סיכום הפעילות השבועי שלך" -#: lib/web/email/activity.ex:119 lib/web/email/activity.ex:140 #, elixir-format +#: lib/web/email/activity.ex:119 +#: lib/web/email/activity.ex:140 msgid "Activity notification for %{instance}" msgstr "התראת פעילות עבור %{instance}" -#: lib/web/email/activity.ex:126 #, elixir-format +#: lib/web/email/activity.ex:126 msgid "Daily activity recap for %{instance}" msgstr "סיכום פעילות יומי עבור %{instance}" +#, elixir-format #: lib/web/templates/email/email_direct_activity.html.heex:40 #: lib/web/templates/email/email_direct_activity.text.eex:4 -#, elixir-format msgid "Here's your daily activity recap" msgstr "הנה סיכום הפעילות היומי שלך" -#: lib/web/email/activity.ex:133 #, elixir-format +#: lib/web/email/activity.ex:133 msgid "Weekly activity recap for %{instance}" msgstr "סיכום פעילות שבועי עבור %{instance}" -#: 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.text.eex:19 #, 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.text.eex:19 msgid "%{profile} has posted a new comment under your event %{event}." msgstr "%{profile} שלח.ה הערה תחת האירוע שלך %{event}." -#: 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.text.eex:13 #, 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.text.eex:13 msgid "%{profile} has posted a new reply under your event %{event}." msgstr "%{profile} שלח.ה תגובה חדשה תחת האירוע שלך %{event}." -#: lib/web/email/activity.ex:46 #, elixir-format +#: lib/web/email/activity.ex:46 msgid "Announcement for your event %{event}" msgstr "הודעה לגבי האירוע שלך %{event}" -#: lib/service/activity/renderer/group.ex:23 #, elixir-format +#: lib/service/activity/renderer/group.ex:23 msgid "The group %{group} was updated by %{profile}." msgstr "הקבוצה %{group} עודכנה על־ידי %{profile}." -#: lib/service/activity/renderer/post.ex:47 #, elixir-format +#: lib/service/activity/renderer/post.ex:47 msgid "The post %{post} from group %{group} was deleted by %{profile}." msgstr "הרשומה %{post} מהקבוצה %{group} נמחקה על־ידי %{profile}." -#: lib/service/activity/renderer/post.ex:31 #, elixir-format +#: lib/service/activity/renderer/post.ex:31 msgid "The post %{post} from group %{group} was published by %{profile}." msgstr "הרשומה %{post} מהקבוצה %{group} פורסמה על־ידי %{profile}." -#: lib/service/activity/renderer/post.ex:39 #, elixir-format +#: lib/service/activity/renderer/post.ex:39 msgid "The post %{post} from group %{group} was updated by %{profile}." msgstr "הרשומה %{post} מהקבוצה %{group} עודכנה על־ידי %{profile}." -#: lib/service/activity/renderer/member.ex:39 #, elixir-format +#: lib/service/activity/renderer/member.ex:39 msgid "%{member} accepted the invitation to join the group %{group}." msgstr "%{member} קיבל.ה את ההזמנה להצטרף לקבוצה %{group}." -#: lib/service/activity/renderer/member.ex:47 #, elixir-format +#: lib/service/activity/renderer/member.ex:47 msgid "%{member} joined the group %{group}." msgstr "%{member} הצטרפ.ה לקבוצה %{group}." -#: lib/service/activity/renderer/member.ex:43 #, elixir-format +#: lib/service/activity/renderer/member.ex:43 msgid "%{member} rejected the invitation to join the group %{group}." msgstr "%{member} דח.תה את ההזמנה להצטרף לקבוצה %{group}." -#: lib/service/activity/renderer/member.ex:31 #, elixir-format +#: lib/service/activity/renderer/member.ex:31 msgid "%{member} requested to join the group %{group}." msgstr "%{member} ביקש.ה להצטרף לקבוצה %{group}." -#: lib/service/activity/renderer/member.ex:35 #, elixir-format +#: lib/service/activity/renderer/member.ex:35 msgid "%{member} was invited by %{profile} to group %{group}." msgstr "%{member} הוזמנ.ה על־ידי %{profile} לקבוצה %{group}." -#: lib/service/activity/renderer/member.ex:51 #, elixir-format +#: lib/service/activity/renderer/member.ex:51 msgid "%{profile} added the member %{member} to group %{group}." msgstr "%{profile} הוסיפ.ה את החבר.ה %{member} לקבוצה %{group}." -#: lib/service/activity/renderer/member.ex:55 #, elixir-format +#: lib/service/activity/renderer/member.ex:55 msgid "%{profile} approved the membership request from %{member} for group %{group}." msgstr "%{profile} אישר.ה את בקשת ההצטרפות של %{member} לקבוצה %{group}." -#: lib/service/activity/renderer/resource.ex:33 #, elixir-format +#: lib/service/activity/renderer/resource.ex:33 msgid "%{profile} created the folder %{resource} in group %{group}." msgstr "%{profile} יצר.ה את התיקייה %{resource} בקבוצה %{group}." -#: lib/service/activity/renderer/resource.ex:69 #, elixir-format +#: lib/service/activity/renderer/resource.ex:69 msgid "%{profile} deleted the folder %{resource} in group %{group}." msgstr "%{profile} מחק.ה את התיקייה %{resource} בקבוצה %{group}." -#: lib/service/activity/renderer/resource.ex:71 #, elixir-format +#: lib/service/activity/renderer/resource.ex:71 msgid "%{profile} deleted the resource %{resource} in group %{group}." msgstr "%{profile} מחק.ה את המשאב %{resource} בקבוצה %{group}." -#: lib/service/activity/renderer/member.ex:75 #, elixir-format +#: lib/service/activity/renderer/member.ex:75 msgid "%{profile} excluded member %{member} from the group %{group}." msgstr "%{profile} הוציא.ה את החבר.ה %{member} מהקבוצה %{group}." -#: lib/service/activity/renderer/resource.ex:61 #, elixir-format +#: lib/service/activity/renderer/resource.ex:61 msgid "%{profile} moved the folder %{resource} in group %{group}." msgstr "%{profile} הזיז.ה את התיקייה %{resource} בקבוצה %{group}." -#: lib/service/activity/renderer/resource.ex:63 #, elixir-format +#: lib/service/activity/renderer/resource.ex:63 msgid "%{profile} moved the resource %{resource} in group %{group}." msgstr "%{profile} הזיז.ה את המשאב %{resource} בקבוצה %{group}." -#: lib/service/activity/renderer/member.ex:79 #, elixir-format +#: lib/service/activity/renderer/member.ex:79 msgid "%{profile} quit the group %{group}." msgstr "%{profile} יצא.ה מהקבוצה %{group}." -#: lib/service/activity/renderer/member.ex:63 #, elixir-format +#: lib/service/activity/renderer/member.ex:63 msgid "%{profile} rejected the membership request from %{member} for group %{group}." msgstr "%{profile} דח.תה את בקשת ההצטרפות של %{member} לקבוצה %{group}." -#: lib/service/activity/renderer/resource.ex:45 #, elixir-format +#: lib/service/activity/renderer/resource.ex:45 msgid "%{profile} renamed the folder from %{old_resource_title} to %{resource} in group %{group}." msgstr "" "%{profile} שינ.תה את שם התיקייה מ־%{old_resource_title} ל־%{resource} בקבוצה " "%{group}." -#: lib/service/activity/renderer/resource.ex:51 #, elixir-format +#: lib/service/activity/renderer/resource.ex:51 msgid "%{profile} renamed the resource from %{old_resource_title} to %{resource} in group %{group}." msgstr "" "%{profile} שינ.תה את שם המשאב מ־%{old_resource_title} ל־%{resource} בקבוצה " "%{group}." -#: lib/service/activity/renderer/member.ex:71 #, elixir-format +#: lib/service/activity/renderer/member.ex:71 msgid "%{profile} updated the member %{member} in group %{group}." msgstr "%{profile} עידכנ.ה את פרטי החבר.ה %{member} בקבוצה %{group}." -#: lib/service/activity/renderer/resource.ex:35 #, elixir-format +#: lib/service/activity/renderer/resource.ex:35 msgid "%{profile} created the resource %{resource} in group %{group}." msgstr "%{profile} יצר.ה את המשאב %{resource} בקבוצה %{group}." -#: lib/service/activity/renderer/discussion.ex:86 #, elixir-format +#: lib/service/activity/renderer/discussion.ex:86 msgid "%{profile} archived the discussion %{discussion} in group %{group}." msgstr "%{profile} העביר.ה לארכיון את הדיון %{discussion} בקבוצה %{group}." -#: lib/service/activity/renderer/discussion.ex:26 #, elixir-format +#: lib/service/activity/renderer/discussion.ex:26 msgid "%{profile} created the discussion %{discussion} in group %{group}." msgstr "%{profile} פתח.ה את הדיון %{discussion} בקבוצה %{group}." -#: lib/service/activity/renderer/discussion.ex:101 #, elixir-format +#: lib/service/activity/renderer/discussion.ex:101 msgid "%{profile} deleted the discussion %{discussion} in group %{group}." msgstr "%{profile} מחק.ה את הדיון %{discussion} בקבוצה %{group}." -#: lib/service/activity/renderer/discussion.ex:56 #, elixir-format +#: lib/service/activity/renderer/discussion.ex:56 msgid "%{profile} mentionned you in the discussion %{discussion} in group %{group}." msgstr "%{profile} הזכיר.ה אותך בדיון %{discussion} בקבוצה %{group}." -#: lib/service/activity/renderer/discussion.ex:71 #, elixir-format +#: lib/service/activity/renderer/discussion.ex:71 msgid "%{profile} renamed the discussion %{discussion} in group %{group}." msgstr "%{profile} שינ.תה את כותרת הדיון %{discussion} בקבוצה %{group}." -#: lib/service/activity/renderer/discussion.ex:41 #, elixir-format +#: lib/service/activity/renderer/discussion.ex:41 msgid "%{profile} replied to the discussion %{discussion} in group %{group}." msgstr "%{profile} הגיב.ה בדיון %{discussion} בקבוצה %{group}." diff --git a/priv/gettext/he/LC_MESSAGES/default.po b/priv/gettext/he/LC_MESSAGES/default.po new file mode 100644 index 000000000..3e0b4db70 --- /dev/null +++ b/priv/gettext/he/LC_MESSAGES/default.po @@ -0,0 +1,1821 @@ +## "msgid"s in this file come from POT (.pot) files. +## +## Do not add, change, or remove "msgid"s manually here as +## they're tied to the ones in the corresponding POT file +## (with the same domain). +## +## Use "mix gettext.extract --merge" or "mix gettext.merge" +## to merge POT files into PO files. +msgid "" +msgstr "" +"Language: he\n" +"Plural-Forms: nplurals=2\n" + +#, elixir-format +#: lib/web/templates/email/password_reset.html.heex:48 +msgid "If you didn't request this, please ignore this email. Your password won't change until you access the link below and create a new one." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/report.html.heex:74 +msgid "%{title} by %{creator}" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/registration_confirmation.html.heex:58 +msgid "Activate my account" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email.html.heex:120 +#: lib/web/templates/email/email.text.eex:9 +msgid "Ask the community on Framacolibri" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/report.text.eex:15 +msgid "Comments" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/report.html.heex:72 +#: lib/web/templates/email/report.text.eex:11 +msgid "Event" +msgstr "" + +#, elixir-format +#: lib/web/email/user.ex:49 +msgid "Instructions to reset your password on %{instance}" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/report.text.eex:21 +msgid "Reason" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/password_reset.html.heex:61 +msgid "Reset Password" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/password_reset.html.heex:41 +msgid "Resetting your password is easy. Just press the button below and follow the instructions. We'll have you up and running in no time." +msgstr "" + +#, elixir-format +#: lib/web/email/user.ex:28 +msgid "Instructions to confirm your Mobilizon account on %{instance}" +msgstr "" + +#, elixir-format +#: lib/web/email/admin.ex:24 +msgid "New report on Mobilizon instance %{instance}" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/before_event_notification.html.heex:51 +#: lib/web/templates/email/before_event_notification.text.eex:4 +msgid "Go to event page" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/report.text.eex:1 +msgid "New report from %{reporter} on %{instance}" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_participation_approved.text.eex:1 +msgid "Participation approved" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/password_reset.html.heex:13 +#: lib/web/templates/email/password_reset.text.eex:1 +msgid "Password reset" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/password_reset.text.eex:7 +msgid "Resetting your password is easy. Just click the link below and follow the instructions. We'll have you up and running in no time." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/registration_confirmation.text.eex:5 +msgid "You created an account on %{host} with this email address. You are one click away from activating it. If this wasn't you, please ignore this email." +msgstr "" + +#, elixir-format +#: lib/web/email/participation.ex:111 +msgid "Your participation to event %{title} has been approved" +msgstr "" + +#, elixir-format +#: lib/web/email/participation.ex:68 +msgid "Your participation to event %{title} has been rejected" +msgstr "" + +#, elixir-format +#: lib/web/email/event.ex:46 +msgid "Event %{title} has been updated" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.text.eex:7 +msgid "New title: %{title}" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/password_reset.text.eex:5 +msgid "You requested a new password for your account on %{instance}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email.html.heex:88 +msgid "Warning" +msgstr "" + +#, elixir-format +#: lib/web/email/participation.ex:135 +msgid "Confirm your participation to event %{title}" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/privacy.html.heex:75 +msgctxt "terms" +msgid "An internal ID for your current selected identity" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/privacy.html.heex:74 +msgctxt "terms" +msgid "An internal user ID" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/privacy.html.heex:37 +msgctxt "terms" +msgid "Any of the information we collect from you may be used in the following ways:" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/privacy.html.heex:9 +msgctxt "terms" +msgid "Basic account information" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/privacy.html.heex:25 +msgctxt "terms" +msgid "Do not share any dangerous information over Mobilizon." +msgstr "" + +#, elixir-format +#: lib/web/templates/api/privacy.html.heex:90 +msgctxt "terms" +msgid "Do we disclose any information to outside parties?" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/privacy.html.heex:68 +msgctxt "terms" +msgid "Do we use cookies?" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/privacy.html.heex:51 +msgctxt "terms" +msgid "How do we protect your information?" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/privacy.html.heex:29 +msgctxt "terms" +msgid "IPs and other metadata" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/privacy.html.heex:17 +msgctxt "terms" +msgid "Published events and comments" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/privacy.html.heex:64 +msgctxt "terms" +msgid "Retain the IP addresses associated with registered users no more than 12 months." +msgstr "" + +#, elixir-format +#: lib/web/templates/api/privacy.html.heex:76 +msgctxt "terms" +msgid "Tokens to authenticate you" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/privacy.html.heex:31 +msgctxt "terms" +msgid "We also may retain server logs which include the IP address of every request to our server." +msgstr "" + +#, elixir-format +#: lib/web/templates/api/privacy.html.heex:70 +msgctxt "terms" +msgid "We store the following information on your device when you connect:" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/privacy.html.heex:58 +msgctxt "terms" +msgid "We will make a good faith effort to:" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/privacy.html.heex:35 +msgctxt "terms" +msgid "What do we use your information for?" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/privacy.html.heex:57 +msgctxt "terms" +msgid "What is our data retention policy?" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/privacy.html.heex:67 +msgctxt "terms" +msgid "You may irreversibly delete your account at any time." +msgstr "" + +#, elixir-format +#: lib/web/templates/api/privacy.html.heex:115 +msgctxt "terms" +msgid "Changes to our Privacy Policy" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/privacy.html.heex:106 +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 "" + +#, elixir-format +#: lib/web/templates/api/privacy.html.heex:109 +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 "" + +#, elixir-format +#: lib/web/templates/api/privacy.html.heex:117 +msgctxt "terms" +msgid "If we decide to change our privacy policy, we will post those changes on this page." +msgstr "" + +#, elixir-format +#: lib/web/templates/api/privacy.html.heex:112 +msgctxt "terms" +msgid "Law requirements can be different if this server is in another jurisdiction." +msgstr "" + +#, elixir-format +#: lib/web/templates/api/privacy.html.heex:103 +msgctxt "terms" +msgid "Site usage by children" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/privacy.html.heex:47 +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 "" + +#, elixir-format +#: lib/web/templates/api/privacy.html.heex:45 +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 "" + +#, elixir-format +#: lib/web/templates/api/privacy.html.heex:43 +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 "" + +#, elixir-format +#: lib/web/templates/api/privacy.html.heex:6 +msgctxt "terms" +msgid "What information do we collect?" +msgstr "" + +#, elixir-format +#: lib/web/email/user.ex:178 +msgid "Mobilizon on %{instance}: confirm your email address" +msgstr "" + +#, elixir-format +#: lib/web/email/user.ex:157 +msgid "Mobilizon on %{instance}: email changed" +msgstr "" + +#, elixir-format +#: lib/web/email/notification.ex:51 +msgid "One event planned today" +msgid_plural "%{nb_events} events planned today" +msgstr[0] "" +msgstr[1] "" + +#, elixir-format +#: lib/web/templates/email/on_day_notification.html.heex:38 +#: lib/web/templates/email/on_day_notification.text.eex:3 +msgid "You have one event today:" +msgid_plural "You have %{total} events today:" +msgstr[0] "" +msgstr[1] "" + +#, elixir-format +#: lib/web/templates/email/group_invite.text.eex:3 +msgid "%{inviter} just invited you to join their group %{group}" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/group_invite.html.heex:13 +#: lib/web/templates/email/group_invite.text.eex:1 +msgid "Come along!" +msgstr "" + +#, elixir-format +#: lib/web/email/notification.ex:25 +msgid "Don't forget to go to %{title}" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/before_event_notification.html.heex:38 +#: lib/web/templates/email/before_event_notification.text.eex:3 +msgid "Get ready for %{title}" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/group_invite.html.heex:59 +msgid "See my groups" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/group_invite.html.heex:45 +#: lib/web/templates/email/group_invite.text.eex:5 +msgid "To accept this invitation, head over to your groups." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/before_event_notification.text.eex:5 +msgid "View the event on: %{link}" +msgstr "" + +#, elixir-format +#: lib/web/email/member.ex:31 +msgid "You have been invited by %{inviter} to join group %{group}" +msgstr "" + +#, elixir-format +#: lib/web/email/notification.ex:78 +msgid "One event planned this week" +msgid_plural "%{nb_events} events planned this week" +msgstr[0] "" +msgstr[1] "" + +#, elixir-format +#: lib/web/email/notification.ex:102 +msgid "One participation request for event %{title} to process" +msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" +msgstr[0] "" +msgstr[1] "" + +#, elixir-format +#: lib/web/templates/email/notification_each_week.html.heex:38 +#: lib/web/templates/email/notification_each_week.text.eex:3 +msgid "You have one event this week:" +msgid_plural "You have %{total} events this week:" +msgstr[0] "" +msgstr[1] "" + +#, elixir-format +#: lib/service/metadata/utils.ex:53 +msgid "The event organizer didn't add any description." +msgstr "" + +#, elixir-format +#: lib/web/templates/api/privacy.html.heex:54 +msgctxt "terms" +msgid "We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information. Among other things, your browser session, as well as the traffic between your applications and the API, are secured with SSL/TLS, and your password is hashed using a strong one-way algorithm." +msgstr "" + +#, elixir-format +#: lib/web/templates/api/privacy.html.heex:94 +msgctxt "terms" +msgid "No. We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our site, conducting our business, or servicing you, so long as those parties agree to keep this information confidential. We may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety." +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:23 +msgctxt "terms" +msgid "Accepting these Terms" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:27 +msgctxt "terms" +msgid "Changes to these Terms" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:85 +msgctxt "terms" +msgid "A lot of the content on the Service is from you and others, and we don't review, verify or authenticate it, and it may include inaccuracies or false information. We make no representations, warranties, or guarantees relating to the quality, suitability, truth, accuracy or completeness of any content contained in the Service. You acknowledge sole responsibility for and assume all risk arising from your use of or reliance on any content." +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:60 +msgctxt "terms" +msgid "Also, you agree that you will not do any of the following in connection with the Service or other users:" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:65 +msgctxt "terms" +msgid "Circumvent or attempt to circumvent any filtering, security measures, rate limits or other features designed to protect the Service, users of the Service, or third parties." +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:64 +msgctxt "terms" +msgid "Collect any personal information about other users, or intimidate, threaten, stalk or otherwise harass other users of the Service;" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:55 +msgctxt "terms" +msgid "Content that is illegal or unlawful, that would otherwise create liability;" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:56 +msgctxt "terms" +msgid "Content that may infringe or violate any patent, trademark, trade secret, copyright, right of privacy, right of publicity or other intellectual or other right of any party;" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:42 +msgctxt "terms" +msgid "Creating Accounts" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:89 +msgctxt "terms" +msgid "Entire Agreement" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:92 +msgctxt "terms" +msgid "Feedback" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:83 +msgctxt "terms" +msgid "Hyperlinks and Third Party Content" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:88 +msgctxt "terms" +msgid "If you breach any of these Terms, we have the right to suspend or disable your access to or use of the Service." +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:63 +msgctxt "terms" +msgid "Impersonate or post on behalf of any person or entity or otherwise misrepresent your affiliation with a person or entity;" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:48 +msgctxt "terms" +msgid "Our Service allows you and other users to post, link and otherwise make available content. You are responsible for the content that you make available to the Service, including its legality, reliability, and appropriateness." +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:39 +msgctxt "terms" +msgid "Privacy Policy" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:95 +msgctxt "terms" +msgid "Questions & Contact Information" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:87 +msgctxt "terms" +msgid "Termination" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:62 +msgctxt "terms" +msgid "Use the Service in any manner that could interfere with, disrupt, negatively affect or inhibit other users from fully enjoying the Service or that could damage, disable, overburden or impair the functioning of the Service;" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:47 +msgctxt "terms" +msgid "Your Content & Conduct" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:84 +msgctxt "terms" +msgid "<b>%{instance_name}</b> makes no claim or representation regarding, and accepts no responsibility for third party websites accessible by hyperlink from the Service or websites linking to the Service. When you leave the Service, you should be aware that these Terms and our policies no longer govern. The inclusion of any link does not imply endorsement by <b>%{instance_name}</b> of the site. Use of any such linked website is at the user's own risk." +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:68 +msgctxt "terms" +msgid "Finally, your use of the Service is also subject to acceptance of <a href=\"/rules\">the instance's own specific rules</a> regarding the code of conduct and moderation rules. Breaking those rules may also result in your account being disabled or suspended." +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:81 +msgctxt "terms" +msgid "For full details about the Mobilizon software <a href=\"https://joinmobilizon.org\">see here</a>." +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:18 +msgctxt "terms" +msgid "Here are the important things you need to know about accessing and using the <b>%{instance_name}</b> (<a href=\"https://%{instance_url}\">%{instance_url}</a>) website and service (collectively, \"Service\"). These are our terms of service (\"Terms\"). Please read them carefully." +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:33 +msgctxt "terms" +msgid "If we make major changes, we will notify our users in a clear and prominent manner. Minor changes may only be highlighted in the footer of our website. It is your responsibility to check the website regularly for changes to these Terms." +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:53 +msgctxt "terms" +msgid "In order to make <b>%{instance_name}</b> a great place for all of us, please do not post, link and otherwise make available on or through the Service any of the following:" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:57 +msgctxt "terms" +msgid "Private information of any third party (e.g., addresses, phone numbers, email addresses, Social Security numbers and credit card numbers); and" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:52 +msgctxt "terms" +msgid "Since Mobilizon is a distributed network, it is possible, depending on the visibility rules set to your content, that your content has been distributed to other Mobilizon instances. When you delete your content, we will request those other instances to also delete the content. Our responsibility on the content being deleted from those other instances ends here. If for some reason, some other instance does not delete the content, we cannot be held responsible." +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:90 +msgctxt "terms" +msgid "These Terms constitute the entire agreement between you and <b>%{instance_name}</b> regarding the use of the Service, superseding any prior agreements between you and <b>%{instance_name}</b> relating to your use of the Service." +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:80 +msgctxt "terms" +msgid "This Service runs on a Mobilizon instance. This source code is licensed under an <a href=\"https://tldrlegal.com/license/gnu-affero-general-public-license-v3-(agpl-3.0)\">AGPLv3 license</a> which means you are allowed to and even encouraged to take the source code, modify it and use it." +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:58 +msgctxt "terms" +msgid "Viruses, corrupted data or other harmful, disruptive or destructive files or code." +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:51 +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 "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:96 +msgctxt "terms" +msgid "Questions or comments about the Service may be directed to us at %{contact}" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:79 +msgctxt "terms" +msgid "Source code" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:93 +msgctxt "terms" +msgid "We love feedback. Please let us know what you think of the Service, these Terms and, in general, <b>%{instance_name}</b>." +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:74 +msgctxt "terms" +msgid "Instance administrators (and community moderators, given the relevant access) are responsible for monitoring and acting on flagged content and other user reports, and have the right and responsibility to remove or edit content that is not aligned to this Instance set of rules, or to suspend, block or ban (temporarily or permanently) any account, community, or instance for breaking these terms, or for other behaviours that they deem inappropriate, threatening, offensive, or harmful." +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:6 +msgctxt "terms" +msgid "<b>%{instance_name}</b> will not use or transmit or resell your personal data" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:44 +msgctxt "terms" +msgid "If you discover or suspect any Service security breaches, please let us know as soon as possible. For security holes in the Mobilizon software itself, please contact <a href=\"https://framagit.org/framasoft/mobilizon/\">its contributors</a> directly." +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:77 +msgctxt "terms" +msgid "Instance administrators should ensure that every community hosted on the instance is properly moderated according to the defined rules." +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:98 +msgctxt "terms" +msgid "Originally adapted from the <a href=\"https://joindiaspora.com/terms\">Diaspora*</a> and <a href=\"https://github.com/appdotnet/terms-of-service\">App.net</a> privacy policies, also licensed under <a href=\"https://creativecommons.org/licenses/by-sa/4.0/\">CC BY-SA</a>." +msgstr "" + +#, elixir-format +#: lib/web/templates/api/privacy.html.heex:119 +msgctxt "terms" +msgid "Originally adapted from the <a href=\"https://mastodon.social/terms\">Mastodon</a> and <a href=\"https://github.com/discourse/discourse\">Discourse</a> privacy policies, also licensed under <a href=\"https://creativecommons.org/licenses/by-sa/4.0/\">CC BY-SA</a>." +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:3 +msgctxt "terms" +msgid "Short version" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:9 +msgctxt "terms" +msgid "The service is provided without warranties and these terms may change in the future" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/privacy.html.heex:118 +msgctxt "terms" +msgid "This document is licensed under <a href=\"https://creativecommons.org/licenses/by-sa/4.0/\">CC BY-SA</a>. It was last updated June 18, 2020." +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:97 +msgctxt "terms" +msgid "This document is licensed under <a href=\"https://creativecommons.org/licenses/by-sa/4.0/\">CC BY-SA</a>. It was last updated June 22, 2020." +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:8 +msgctxt "terms" +msgid "You must respect other people and <b>%{instance_name}</b>'s rules when using the service" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:7 +msgctxt "terms" +msgid "You must respect the law when using <b>%{instance_name}</b>" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:5 +msgctxt "terms" +msgid "Your content is yours" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.html.heex:51 +msgid "Confirm my e-mail address" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.html.heex:13 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:1 +msgid "Confirm your e-mail" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:3 +msgid "Hi there! You just registered to join this event: « %{title} ». Please confirm the e-mail address you provided:" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email.html.heex:117 +#: lib/web/templates/email/email.text.eex:8 +msgid "Need help? Is something not working as expected?" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/registration_confirmation.html.heex:38 +msgid "You created an account on <b>%{host}</b> with this email address. You are one click away from activating it." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/report.html.heex:13 +msgid "New report on <b>%{instance}</b>" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_changed_old.html.heex:38 +msgid "The email address for your account on <b>%{host}</b> is being changed to:" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/password_reset.html.heex:38 +msgid "You requested a new password for your account on <b>%{instance}</b>." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email.text.eex:5 +msgid "Please do not use it for real purposes." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.html.heex:63 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 +#: lib/web/templates/email/event_updated.html.heex:133 +#: lib/web/templates/email/event_updated.text.eex:14 +#: lib/web/templates/email/notification_each_week.html.heex:60 +#: lib/web/templates/email/notification_each_week.text.eex:11 +#: lib/web/templates/email/on_day_notification.html.heex:60 +#: lib/web/templates/email/on_day_notification.text.eex:11 +msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." +msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." +msgstr[0] "" +msgstr[1] "" + +#, elixir-format +#: lib/web/templates/email/email.text.eex:11 +msgid "%{instance} is powered by Mobilizon." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email.html.heex:152 +msgid "<b>%{instance}</b> is powered by Mobilizon." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/pending_participation_notification.html.heex:13 +#: lib/web/templates/email/pending_participation_notification.text.eex:1 +msgid "A request is pending!" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/before_event_notification.html.heex:13 +#: lib/web/templates/email/before_event_notification.text.eex:1 +msgid "An event is upcoming!" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_changed_new.html.heex:13 +#: lib/web/templates/email/email_changed_new.text.eex:1 +msgid "Confirm new email" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:84 +msgid "End" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:13 +#: lib/web/templates/email/event_updated.text.eex:1 +msgid "Event update!" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/report.html.heex:88 +msgid "Flagged comments" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_participation_approved.html.heex:45 +#: lib/web/templates/email/event_participation_approved.text.eex:7 +msgid "Good news: one of the event organizers just approved your request. Update your calendar, because you're on the guest list now!" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_changed_new.html.heex:38 +msgid "Hi there! It seems like you wanted to change the email address linked to your account on <b>%{instance}</b>. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_changed_old.text.eex:3 +msgid "Hi there! Just a quick note to confirm that the email address linked to your account on %{host} has been changed from this one to:" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_changed_old.html.heex:62 +#: lib/web/templates/email/email_changed_old.text.eex:5 +msgid "If you did not trigger this change yourself, it is likely that someone has gained access to your %{host} account. Please log in and change your password immediately. If you cannot login, contact the admin on %{host}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/password_reset.text.eex:12 +msgid "If you didn't trigger the change yourself, please ignore this message. Your password won't be changed until you click the link above." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.html.heex:70 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 +#: lib/web/templates/email/registration_confirmation.html.heex:45 +msgid "If you didn't trigger this email, you may safely ignore it." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/before_event_notification.html.heex:63 +#: lib/web/templates/email/before_event_notification.text.eex:6 +msgid "If you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email.html.heex:153 +#: lib/web/templates/email/email.text.eex:11 +msgid "Learn more about Mobilizon here!" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:94 +#: lib/web/templates/export/event_participants.html.heex:129 +msgid "Location" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:104 +msgid "Location address was removed" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/pending_participation_notification.html.heex:56 +#: lib/web/templates/email/pending_participation_notification.text.eex:8 +msgid "Manage pending requests" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/registration_confirmation.html.heex:13 +#: lib/web/templates/email/registration_confirmation.text.eex:1 +msgid "Nearly there!" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_changed_old.html.heex:13 +#: lib/web/templates/email/email_changed_old.text.eex:1 +msgid "New email confirmation" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/report.html.heex:106 +msgid "Reasons for report" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/report.html.heex:39 +msgid "Someone on <b>%{instance}</b> reported the following content for you to analyze:" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_participation_rejected.html.heex:13 +#: lib/web/templates/email/event_participation_rejected.text.eex:1 +msgid "Sorry! You're not going." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:74 +msgid "Start" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.text.eex:3 +msgid "There have been changes for %{title} so we'd thought we'd let you know." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:55 +#: lib/web/templates/email/event_updated.text.eex:6 +msgid "This event has been cancelled by its organizers. Sorry!" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:51 +#: lib/web/templates/email/event_updated.text.eex:4 +msgid "This event has been confirmed" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:53 +#: lib/web/templates/email/event_updated.text.eex:5 +msgid "This event has yet to be confirmed: organizers will let you know if they do confirm it." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_participation_rejected.html.heex:45 +#: lib/web/templates/email/event_participation_rejected.text.eex:7 +msgid "Unfortunately, the organizers rejected your request." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_changed_new.html.heex:51 +msgid "Verify your email address" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/report.html.heex:126 +msgid "View report" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/report.text.eex:24 +msgid "View report:" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_anonymous_activity.html.heex:67 +#: lib/web/templates/email/event_participation_approved.html.heex:58 +#: lib/web/templates/email/event_participation_confirmed.html.heex:58 +msgid "Visit event page" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:121 +msgid "Visit the updated event page" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.text.eex:12 +msgid "Visit the updated event page: %{link}" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/on_day_notification.html.heex:13 +#: lib/web/templates/email/on_day_notification.text.eex:1 +msgid "What's up today?" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_participation_approved.html.heex:70 +#: lib/web/templates/email/event_participation_approved.text.eex:11 +#: lib/web/templates/email/event_participation_confirmed.html.heex:70 +#: lib/web/templates/email/event_participation_confirmed.text.eex:6 +msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/pending_participation_notification.html.heex:69 +#: lib/web/templates/email/pending_participation_notification.text.eex:10 +msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_participation_rejected.text.eex:5 +msgid "You issued a request to attend %{title}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_participation_approved.text.eex:5 +#: lib/web/templates/email/event_participation_confirmed.text.eex:3 +msgid "You recently requested to attend %{title}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_participation_approved.html.heex:13 +#: lib/web/templates/email/event_participation_confirmed.html.heex:13 +#: lib/web/templates/email/event_participation_confirmed.text.eex:1 +msgid "You're going!" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_changed_new.html.heex:64 +#: lib/web/templates/email/email_changed_new.text.eex:5 +msgid "If you didn't trigger the change yourself, please ignore this message." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email.html.heex:92 +msgid "<b>Please do not use it for real purposes.</b>" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/group_member_removal.html.heex:45 +#: lib/web/templates/email/group_member_removal.text.eex:5 +msgid "If you feel this is an error, you may contact the group's administrators so that they can add you back." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/group_member_removal.html.heex:13 +#: lib/web/templates/email/group_member_removal.text.eex:1 +msgid "So long, and thanks for the fish!" +msgstr "" + +#, elixir-format +#: lib/web/email/member.ex:113 +msgid "You have been removed from group %{group}" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/group_member_removal.text.eex:3 +msgid "You have been removed from group %{group}. You will not be able to access this group's private content anymore." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/group_invite.html.heex:38 +msgid "<b>%{inviter}</b> just invited you to join their group %{link_start}<b>%{group}</b>%{link_end}" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/group_member_removal.html.heex:38 +msgid "You have been removed from group %{link_start}<b>%{group}</b>%{link_end}. You will not be able to access this group's private content anymore." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/group_suspension.html.heex:54 +#: lib/web/templates/email/group_suspension.text.eex:7 +msgid "As this group was located on another instance, it will continue to work for other instances than this one." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/group_suspension.html.heex:46 +#: lib/web/templates/email/group_suspension.text.eex:5 +msgid "As this group was located on this instance, all of it's data has been irretrievably deleted." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/group_suspension.html.heex:13 +#: lib/web/templates/email/group_suspension.text.eex:1 +msgid "The group %{group} has been suspended on %{instance}!" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/group_suspension.text.eex:3 +msgid "Your instance's moderation team has decided to suspend %{group_name} (%{group_address}). You are no longer a member of this group." +msgstr "" + +#, elixir-format +#: lib/web/email/group.ex:89 +msgid "The group %{group} has been suspended on %{instance}" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:24 +msgctxt "terms" +msgid "By accessing or using the Service, this means you agree to be bound by all the terms below. If these terms are in any way unclear, please let us know by contacting %{contact}." +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:40 +msgctxt "terms" +msgid "For information about how we collect and use information about users of the Service, please check our <a href=\"/privacy\">privacy policy</a>." +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:36 +msgctxt "terms" +msgid "If you continue to use the Service after the revised Terms go into effect, you accept the revised Terms." +msgstr "" + +#, elixir-format +#: lib/web/templates/api/privacy.html.heex:78 +msgctxt "terms" +msgid "If you delete this information, you need to login again." +msgstr "" + +#, elixir-format +#: lib/web/templates/api/privacy.html.heex:80 +msgctxt "terms" +msgid "If you're not connected, we don't store any information on your device, unless you participate in an event anonymously. In this specific case we store the hash of an unique identifier for the event and participation status in your browser so that we may display participation status. Deleting this information will only stop displaying participation status in your browser." +msgstr "" + +#, elixir-format +#: lib/web/templates/api/privacy.html.heex:87 +msgctxt "terms" +msgid "Note: This information is stored in your localStorage and not your cookies." +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:71 +msgctxt "terms" +msgid "Our responsibility" +msgstr "" + +#, elixir-format +#: lib/web/templates/api/privacy.html.heex:61 +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 "" + +#, elixir-format +#: lib/web/templates/api/privacy.html.heex:3 +#: lib/web/templates/api/terms.html.heex:15 +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 "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:45 +msgctxt "terms" +msgid "We are not liable for any loss you may incur as a result of someone else using your email or password, either with or without your knowledge." +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:50 +msgctxt "terms" +msgid "We cannot be held responsible should a programming or administrative error make your content visible to a larger audience than intended. Aside from our limited right to your content, you retain all of your rights to the content you post, link and otherwise make available on or through the Service." +msgstr "" + +#, elixir-format +#: lib/web/templates/api/privacy.html.heex:10 +msgctxt "terms" +msgid "We collect information from you when you register on this instance and gather data when you participate in the platform by reading, writing, and interacting with content shared here. If you register on this instance, you will be asked to enter <b>an email address, a password</b> (hashed) and at least <b>an username</b>. Your email address will be verified by an email containing a unique link. Once the link is activated, we know you control that email address. You may also enter additional profile information such as <b>a display name and biography, and upload a profile picture and header image</b>. The username, display name, biography, profile picture and header image <b>are always listed publicly</b>. <b>You may however visit this instance without registering</b>." +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:30 +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 "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:20 +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 "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:43 +msgctxt "terms" +msgid "When you create an account you agree to maintain the security and confidentiality of your password and accept all risks of unauthorized access to your account data and any other information you provide to <b>%{instance_name}</b>." +msgstr "" + +#, elixir-format +#: lib/web/templates/api/terms.html.heex:49 +msgctxt "terms" +msgid "When you post, link or otherwise make available content to the Service, you grant us the right and license to display and distribute your content on or through the Service (including via applications). We may format your content for display throughout the Service, but we will not edit or revise the substance of your content itself. The displaying and distribution of your content happens only according to the visibility rules you have set for the content. We will not modify the visibility of the content you have set." +msgstr "" + +#, elixir-format +#: lib/web/templates/api/privacy.html.heex:19 +msgctxt "terms" +msgid "Your <b>events</b> and <b>comments</b> are delivered to other instances that follow your own, meaning they are delivered to different instances and copies are stored there. When you delete events or comments, this is likewise delivered to these other instances. All interactions related to event features - such as joining an event - or group features - such as managing resources - are federated as well. Please keep in mind that the operators of the instance and any receiving instances may view such messages and information, and that recipients may screenshot, copy or otherwise re-share them." +msgstr "" + +#, elixir-format +#: lib/web/templates/api/privacy.html.heex:99 +msgctxt "terms" +msgid "Your content may be downloaded by other instances in the network. Your public events and comments are delivered to the instances following your own instance. Content created through a group is forwarded to all the instances of all the members of the group, insofar as these members reside on a different instance than this one." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_participation_confirmed.text.eex:4 +msgid "You have confirmed your participation. Update your calendar, because you're on the guest list now!" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_participation_approved.html.heex:38 +#: lib/web/templates/email/event_participation_confirmed.html.heex:38 +msgid "You recently requested to attend <b>%{title}</b>." +msgstr "" + +#, elixir-format +#: lib/web/email/participation.ex:90 +msgid "Your participation to event %{title} has been confirmed" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/report.html.heex:41 +msgid "<b>%{reporter}</b> reported the following content." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/report.text.eex:5 +msgid "Group %{group} was reported" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/report.html.heex:51 +msgid "Group reported" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/report.text.eex:7 +msgid "Profile %{profile} was reported" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/report.html.heex:56 +msgid "Profile reported" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_participation_confirmed.html.heex:45 +msgid "You have now confirmed your participation. Update your calendar, because you're on the guest list now!" +msgstr "" + +#, elixir-format +#: lib/mobilizon/posts/post.ex:99 +msgid "A text is required for the post" +msgstr "" + +#, elixir-format +#: lib/mobilizon/posts/post.ex:98 +msgid "A title is required for the post" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/instance_follow.text.eex:3 +msgid "%{name} (%{domain}) just requested to follow your instance." +msgstr "" + +#, elixir-format +#: lib/web/email/follow.ex:54 +msgid "%{name} requests to follow your instance" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/instance_follow.html.heex:38 +msgid "<b>%{name} (%{domain})</b> just requested to follow your instance. If you accept, this instance will receive all of your instance's public events." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/instance_follow.text.eex:4 +msgid "If you accept, this instance will receive all of your public events." +msgstr "" + +#, elixir-format +#: lib/web/email/follow.ex:48 +msgid "Instance %{name} (%{domain}) requests to follow your instance" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/instance_follow.html.heex:66 +msgid "See the federation settings" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/instance_follow.html.heex:52 +#: lib/web/templates/email/instance_follow.text.eex:6 +msgid "To accept this invitation, head over to the instance's admin settings." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/instance_follow.html.heex:13 +#: lib/web/templates/email/instance_follow.text.eex:1 +msgid "Want to connect?" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/instance_follow.html.heex:45 +#: lib/web/templates/email/instance_follow.text.eex:5 +msgid "Note: %{name} (%{domain}) following you doesn't necessarily imply that you follow this instance, but you can ask to follow them too." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.html.heex:38 +msgid "Hi there! You just registered to join this event: « <b>%{title}</b> ». Please confirm the e-mail address you provided:" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_participation_rejected.html.heex:38 +msgid "You issued a request to attend <b>%{title}</b>." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:64 +msgid "Event title" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.html.heex:38 +msgid "There have been changes for <b>%{title}</b> so we'd thought we'd let you know." +msgstr "" + +#, elixir-format +#: lib/web/templates/error/500_page.html.heex:7 +msgid "This page is not correct" +msgstr "" + +#, elixir-format +#: lib/web/templates/error/500_page.html.heex:50 +msgid "We're sorry, but something went wrong on our end." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email.html.heex:91 +#: lib/web/templates/email/email.text.eex:4 +msgid "This is a demonstration site to test Mobilizon." +msgstr "" + +#, elixir-format +#: lib/service/metadata/actor.ex:91 +#: lib/service/metadata/actor.ex:99 +#: lib/service/metadata/instance.ex:56 +#: lib/service/metadata/instance.ex:62 +msgid "%{name}'s feed" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:115 +msgid "%{actor}'s private events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:110 +msgid "%{actor}'s public events feed on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:219 +msgid "Feed for %{email} on %{instance}" +msgstr "" + +#, elixir-format +#: lib/web/templates/error/500_page.html.heex:57 +msgid "If the issue persists, you may contact the server administrator at %{contact}." +msgstr "" + +#, elixir-format +#: lib/web/templates/error/500_page.html.heex:55 +msgid "If the issue persists, you may try to contact the server administrator." +msgstr "" + +#, elixir-format +#: lib/web/templates/error/500_page.html.heex:68 +msgid "Technical details" +msgstr "" + +#, elixir-format +#: lib/web/templates/error/500_page.html.heex:52 +msgid "The Mobilizon server %{instance} seems to be temporarily down." +msgstr "" + +#, elixir-format +#: lib/service/export/feed.ex:67 +msgid "Public feed for %{instance}" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/user.ex:318 +msgid "The password you have choosen is too short. Please make sure your password contains at least 6 charaters." +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/user.ex:324 +msgid "The token you provided is invalid. Make sure that the URL is exactly the one provided inside the email you got." +msgstr "" + +#, elixir-format +#: lib/web/email/actor.ex:44 +msgid "Your participation to %{event} has been cancelled!" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/actor_suspension_participants.html.heex:38 +#: lib/web/templates/email/actor_suspension_participants.text.eex:3 +msgid "Your instance's moderation team has decided to suspend %{actor_name} (%{actor_address}). All of their events have been removed and your participation to event %{event} cancelled." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/group_suspension.html.heex:38 +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 "" + +#, elixir-format +#: lib/web/templates/email/actor_suspension_participants.html.heex:13 +#: lib/web/templates/email/actor_suspension_participants.text.eex:1 +msgid "Your participation to %{event} on %{instance} has been cancelled!" +msgstr "" + +#. File name template for exported list of participants. Should NOT contain spaces. Make sure the output is going to be something standardized that is acceptable as a file name on most systems. +#. File name template for exported list of participants. Should NOT contain spaces. Make sure the output is going to be something standardized that is acceptable as a file name on most systems. +#. File name template for exported list of participants. Should NOT contain spaces. Make sure the output is going to be something standardized that is acceptable as a file name on most systems. +#, elixir-format +#: lib/service/export/participants/csv.ex:81 +#: lib/service/export/participants/ods.ex:86 +#: lib/service/export/participants/pdf.ex:96 +msgid "%{event}_participants" +msgstr "" + +#, elixir-format +#: lib/service/export/participants/common.ex:61 +msgid "Participant message" +msgstr "" + +#, elixir-format +#: lib/service/export/participants/common.ex:61 +msgid "Participant name" +msgstr "" + +#, elixir-format +#: lib/service/export/participants/common.ex:61 +msgid "Participant status" +msgstr "" + +#, elixir-format +#: lib/service/export/participants/common.ex:52 +#: lib/web/templates/email/admin/_role.html.heex:3 +#: lib/web/templates/email/admin/_role.text.eex:1 +msgid "Administrator" +msgstr "" + +#, elixir-format +#: lib/service/export/participants/common.ex:55 +msgid "Creator" +msgstr "" + +#, elixir-format +#: lib/service/export/participants/common.ex:49 +#: lib/web/templates/email/admin/_role.html.heex:5 +#: lib/web/templates/email/admin/_role.text.eex:1 +msgid "Moderator" +msgstr "" + +#, elixir-format +#: lib/service/export/participants/common.ex:37 +msgid "Not approved" +msgstr "" + +#, elixir-format +#: lib/service/export/participants/common.ex:40 +msgid "Not confirmed" +msgstr "" + +#, elixir-format +#: lib/service/export/participants/common.ex:46 +msgid "Participant" +msgstr "" + +#, elixir-format +#: lib/service/export/participants/common.ex:43 +msgid "Rejected" +msgstr "" + +#, elixir-format +#: lib/web/templates/export/event_participants.html.heex:122 +msgid "Begins on" +msgstr "" + +#, elixir-format +#: lib/web/templates/export/event_participants.html.heex:125 +msgid "Ends on" +msgstr "" + +#, elixir-format +#: lib/web/templates/export/event_participants.html.heex:132 +msgid "Number of participants" +msgstr "" + +#, elixir-format +#: lib/web/templates/export/event_participants.html.heex:120 +msgid "Participants for %{event}" +msgstr "" + +#, elixir-format +#: lib/service/export/participants/common.ex:88 +msgid "Anonymous participant" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/date/event_tz_date.html.heex:6 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:12 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 +msgid "🌐 %{timezone} %{offset}" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/date/event_tz_date.text.eex:1 +msgid "%{date_time} (%{timezone} %{offset})" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/date/event_tz_date.text.eex:1 +msgid "%{date_time} (in your timezone %{timezone} %{offset})" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/notification_each_week.html.heex:13 +#: lib/web/templates/email/notification_each_week.text.eex:1 +msgid "On the agenda this week" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/participation/event_card.html.heex:58 +msgid "Details" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/date/event_tz_date_range.html.heex:10 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 +msgid "From the %{start} to the %{end}" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/participation/event_card.html.heex:20 +msgid "Manage your participation" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/date/event_tz_date_range.html.heex:5 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 +msgid "On %{date} from %{start_time} to %{end_time}" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/participation/event_card.html.heex:66 +msgid "Read more" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/participation/card/_metadata.html.heex:50 +#: lib/web/templates/email/participation/card/_metadata.text.eex:2 +msgid "Online event" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_group_follower_notification.html.heex:13 +msgid "%{group} scheduled a new event" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_group_follower_notification.text.eex:1 +msgid "%{group} scheduled a new event:" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/participation/card/_metadata.text.eex:2 +msgid "Address:" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/participation/card/_metadata.text.eex:1 +msgid "Date:" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/participation/event_card.text.eex:7 +msgid "Details:" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email.html.heex:147 +msgid "Manage your notification settings" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/participation/event_card.text.eex:5 +msgid "Manage your participation:" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/participation/card/_title.text.eex:3 +#: lib/web/templates/email/participation/card/_title.text.eex:3 +msgid "Organizer: %{organizer}" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/participation/event_card.html.heex:42 +msgid "Participate" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/participation/event_card.text.eex:5 +msgid "Participate:" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/participation/event_card.text.eex:9 +msgid "Read more : %{url}" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/participation/card/_title.text.eex:1 +msgid "Title: %{title}" +msgstr "" + +#, elixir-format +#: lib/web/email/group.ex:44 +msgid "📅 Just scheduled by %{group}: %{event}" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.text.eex:9 +msgid "New end date:" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.text.eex:10 +msgid "New location:" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/event_updated.text.eex:8 +msgid "New start date:" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/group_membership_rejection.html.heex:13 +#: lib/web/templates/email/group_membership_rejection.text.eex:1 +msgid "Sorry, not this time!" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/group_membership_approval.html.heex:52 +msgid "View the group" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/group_membership_approval.html.heex:13 +#: lib/web/templates/email/group_membership_approval.text.eex:1 +msgid "You're in!" +msgstr "" + +#, elixir-format +#: lib/web/email/member.ex:60 +msgid "Your membership request for group %{group} has been approved" +msgstr "" + +#, elixir-format +#: lib/web/email/member.ex:89 +msgid "Your membership request for group %{group} has been rejected" +msgstr "" + +#, elixir-format +#: lib/web/templates/email/group_membership_rejection.text.eex:3 +msgid "Your membership request for group %{group} has been rejected." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/group_membership_rejection.html.heex:38 +msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been rejected." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/group_membership_approval.text.eex:3 +msgid "Your membership request for group %{group} has been approved." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/group_membership_approval.html.heex:38 +msgid "Your membership request for group %{link_start}<b>%{group}</b>%{link_end} has been approved." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/pending_participation_notification.html.heex:38 +#: lib/web/templates/email/pending_participation_notification.text.eex:4 +msgid "You have one pending attendance request to process for the following event:" +msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" +msgstr[0] "" +msgstr[1] "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:13 +#: lib/web/templates/email/admin_user_role_changed.text.eex:1 +msgid "An administrator changed your role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:120 +msgid "An administrator confirmed your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:1 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:1 +msgid "An administrator manually changed the email attached to your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:47 +#: lib/web/email/admin.ex:72 +msgid "An administrator manually changed the email attached to your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:13 +#: lib/web/templates/email/admin_user_confirmation.text.eex:1 +msgid "An administrator manually confirmed your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:98 +msgid "An administrator updated your role on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/email_changed_new.text.eex:3 +msgid "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:3 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually changed your account email from %{old_email} (this one) to %{new_email}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> (this one) to <b>%{new_email}</b>." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> to <b>%{new_email}</b> (this one)." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:71 +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:45 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:45 +#: lib/web/templates/email/admin_user_role_changed.html.heex:67 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods %{start_link}on the instance's about page%{end_link}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:7 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:4 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:4 +#: lib/web/templates/email/admin_user_role_changed.text.eex:8 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods on the instance's about page: %{about_page}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:58 +msgid "Login on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:55 +msgid "New role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:6 +msgid "New role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:47 +msgid "Old role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:5 +msgid "Old role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin/_role.html.heex:7 +#: lib/web/templates/email/admin/_role.text.eex:1 +msgid "User" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:45 +msgid "You may now login using your credentials on the service." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:5 +msgid "You may now login using your credentials on the service:" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just changed your account role." +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just changed your account role." +msgstr "" diff --git a/priv/gettext/he/LC_MESSAGES/errors.po b/priv/gettext/he/LC_MESSAGES/errors.po new file mode 100644 index 000000000..ebec1872d --- /dev/null +++ b/priv/gettext/he/LC_MESSAGES/errors.po @@ -0,0 +1,1092 @@ +## "msgid"s in this file come from POT (.pot) files. +## +## Do not add, change, or remove "msgid"s manually here as +## they're tied to the ones in the corresponding POT file +## (with the same domain). +## +## Use "mix gettext.extract --merge" or "mix gettext.merge" +## to merge POT files into PO files. +msgid "" +msgstr "" +"Language: he\n" +"Plural-Forms: nplurals=2\n" + +#: lib/mobilizon/discussions/discussion.ex:69 +msgid "can't be blank" +msgstr "" + +msgid "has already been taken" +msgstr "" + +msgid "is invalid" +msgstr "" + +msgid "must be accepted" +msgstr "" + +msgid "has invalid format" +msgstr "" + +msgid "has an invalid entry" +msgstr "" + +msgid "is reserved" +msgstr "" + +msgid "does not match confirmation" +msgstr "" + +msgid "is still associated with this entry" +msgstr "" + +msgid "are still associated with this entry" +msgstr "" + +msgid "should be %{count} character(s)" +msgid_plural "should be %{count} character(s)" +msgstr[0] "" +msgstr[1] "" + +msgid "should have %{count} item(s)" +msgid_plural "should have %{count} item(s)" +msgstr[0] "" +msgstr[1] "" + +msgid "should be at least %{count} character(s)" +msgid_plural "should be at least %{count} character(s)" +msgstr[0] "" +msgstr[1] "" + +msgid "should have at least %{count} item(s)" +msgid_plural "should have at least %{count} item(s)" +msgstr[0] "" +msgstr[1] "" + +msgid "should be at most %{count} character(s)" +msgid_plural "should be at most %{count} character(s)" +msgstr[0] "" +msgstr[1] "" + +msgid "should have at most %{count} item(s)" +msgid_plural "should have at most %{count} item(s)" +msgstr[0] "" +msgstr[1] "" + +msgid "must be less than %{number}" +msgstr "" + +msgid "must be greater than %{number}" +msgstr "" + +msgid "must be less than or equal to %{number}" +msgstr "" + +msgid "must be greater than or equal to %{number}" +msgstr "" + +msgid "must be equal to %{number}" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/user.ex:107 +msgid "Cannot refresh the token" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/group.ex:252 +msgid "Current profile is not a member of this group" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/group.ex:256 +msgid "Current profile is not an administrator of the selected group" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/user.ex:612 +msgid "Error while saving user settings" +msgstr "" + +#, elixir-format +#: lib/graphql/error.ex:99 +#: lib/graphql/resolvers/group.ex:249 +#: lib/graphql/resolvers/group.ex:281 +#: lib/graphql/resolvers/group.ex:318 +#: lib/graphql/resolvers/group.ex:349 +#: lib/graphql/resolvers/group.ex:398 +#: lib/graphql/resolvers/member.ex:81 +msgid "Group not found" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/group.ex:78 +#: lib/graphql/resolvers/group.ex:82 +msgid "Group with ID %{id} not found" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/user.ex:85 +msgid "Impossible to authenticate, either your email or password are invalid." +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/group.ex:315 +msgid "Member not found" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/actor.ex:94 +msgid "No profile found for the moderator user" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/user.ex:273 +msgid "No user to validate with this email was found" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/person.ex:314 +#: lib/graphql/resolvers/user.ex:298 +msgid "No user with this email was found" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/feed_token.ex:28 +#: lib/graphql/resolvers/participant.ex:32 +#: lib/graphql/resolvers/participant.ex:210 +#: lib/graphql/resolvers/person.ex:236 +#: lib/graphql/resolvers/person.ex:353 +#: lib/graphql/resolvers/person.ex:380 +#: lib/graphql/resolvers/person.ex:397 +#: lib/graphql/resolvers/person.ex:425 +#: lib/graphql/resolvers/person.ex:440 +msgid "Profile is not owned by authenticated user" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/user.ex:160 +msgid "Registrations are not open" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/user.ex:429 +msgid "The current password is invalid" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/admin.ex:341 +#: lib/graphql/resolvers/user.ex:472 +msgid "The new email doesn't seem to be valid" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/admin.ex:344 +#: lib/graphql/resolvers/user.ex:475 +msgid "The new email must be different" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/user.ex:432 +msgid "The new password must be different" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/user.ex:479 +#: lib/graphql/resolvers/user.ex:541 +#: lib/graphql/resolvers/user.ex:544 +msgid "The password provided is invalid" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/user.ex:436 +msgid "The password you have chosen is too short. Please make sure your password contains at least 6 characters." +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/user.ex:294 +msgid "This user can't reset their password" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/user.ex:81 +msgid "This user has been disabled" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/user.ex:252 +#: lib/graphql/resolvers/user.ex:257 +msgid "Unable to validate user" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/user.ex:522 +msgid "User already disabled" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/user.ex:587 +msgid "User requested is not logged-in" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/group.ex:287 +msgid "You are already a member of this group" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/group.ex:322 +msgid "You can't leave this group because you are the only administrator" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/group.ex:284 +msgid "You cannot join this group" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/group.ex:112 +msgid "You may not list groups unless moderator." +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/user.ex:487 +msgid "You need to be logged-in to change your email" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/user.ex:444 +msgid "You need to be logged-in to change your password" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/group.ex:261 +msgid "You need to be logged-in to delete a group" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/user.ex:549 +msgid "You need to be logged-in to delete your account" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/group.ex:292 +msgid "You need to be logged-in to join a group" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/group.ex:327 +msgid "You need to be logged-in to leave a group" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/group.ex:225 +msgid "You need to be logged-in to update a group" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/user.ex:112 +msgid "You need to have an existing token to get a refresh token" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/user.ex:276 +#: lib/graphql/resolvers/user.ex:301 +msgid "You requested again a confirmation email too soon" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/user.ex:163 +msgid "Your email is not on the allowlist" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/actor.ex:100 +msgid "Error while performing background task" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/actor.ex:32 +msgid "No profile found with this ID" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:97 +msgid "No remote profile found with this ID" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/actor.ex:72 +msgid "Only moderators and administrators can suspend a profile" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/actor.ex:105 +msgid "Only moderators and administrators can unsuspend a profile" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/actor.ex:29 +msgid "Only remote profiles may be refreshed" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/actor.ex:64 +msgid "Profile already suspended" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/participant.ex:96 +msgid "A valid email is required by your instance" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/participant.ex:90 +#: lib/graphql/resolvers/participant.ex:143 +msgid "Anonymous participation is not enabled" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/person.ex:210 +msgid "Cannot remove the last administrator of a group" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/person.ex:207 +msgid "Cannot remove the last identity of a user" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/comment.ex:126 +msgid "Comment is already deleted" +msgstr "" + +#, elixir-format +#: lib/graphql/error.ex:101 +#: lib/graphql/resolvers/discussion.ex:69 +msgid "Discussion not found" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/report.ex:71 +#: lib/graphql/resolvers/report.ex:90 +msgid "Error while saving report" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/report.ex:110 +msgid "Error while updating report" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/participant.ex:131 +msgid "Event id not found" +msgstr "" + +#, elixir-format +#: lib/graphql/error.ex:98 +#: lib/graphql/resolvers/event.ex:360 +#: lib/graphql/resolvers/event.ex:412 +msgid "Event not found" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/participant.ex:87 +#: lib/graphql/resolvers/participant.ex:128 +#: lib/graphql/resolvers/participant.ex:155 +#: lib/graphql/resolvers/participant.ex:336 +msgid "Event with this ID %{id} doesn't exist" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/participant.ex:103 +msgid "Internal Error" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/discussion.ex:219 +msgid "No discussion with ID %{id}" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/todos.ex:80 +#: lib/graphql/resolvers/todos.ex:107 +#: lib/graphql/resolvers/todos.ex:179 +#: lib/graphql/resolvers/todos.ex:208 +#: lib/graphql/resolvers/todos.ex:237 +msgid "No profile found for user" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/feed_token.ex:64 +msgid "No such feed token" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/participant.ex:259 +msgid "Participant already has role %{role}" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/participant.ex:187 +#: lib/graphql/resolvers/participant.ex:220 +#: lib/graphql/resolvers/participant.ex:263 +msgid "Participant not found" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/person.ex:32 +msgid "Person with ID %{id} not found" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/person.ex:56 +msgid "Person with username %{username} not found" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/post.ex:169 +#: lib/graphql/resolvers/post.ex:203 +msgid "Post ID is not a valid ID" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/post.ex:172 +#: lib/graphql/resolvers/post.ex:206 +msgid "Post doesn't exist" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/member.ex:84 +msgid "Profile invited doesn't exist" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/member.ex:93 +#: lib/graphql/resolvers/member.ex:97 +msgid "Profile is already a member of this group" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/post.ex:133 +#: lib/graphql/resolvers/post.ex:175 +#: lib/graphql/resolvers/post.ex:209 +#: lib/graphql/resolvers/resource.ex:90 +#: lib/graphql/resolvers/resource.ex:132 +#: lib/graphql/resolvers/resource.ex:165 +#: lib/graphql/resolvers/resource.ex:199 +#: lib/graphql/resolvers/todos.ex:58 +#: lib/graphql/resolvers/todos.ex:83 +#: lib/graphql/resolvers/todos.ex:110 +#: lib/graphql/resolvers/todos.ex:182 +#: lib/graphql/resolvers/todos.ex:214 +#: lib/graphql/resolvers/todos.ex:246 +msgid "Profile is not member of group" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/actor.ex:67 +#: lib/graphql/resolvers/person.ex:233 +msgid "Profile not found" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/report.ex:48 +msgid "Report not found" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/resource.ex:169 +#: lib/graphql/resolvers/resource.ex:196 +msgid "Resource doesn't exist" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/participant.ex:124 +msgid "The event has already reached its maximum capacity" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/participant.ex:282 +msgid "This token is invalid" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/todos.ex:176 +#: lib/graphql/resolvers/todos.ex:243 +msgid "Todo doesn't exist" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/todos.ex:77 +#: lib/graphql/resolvers/todos.ex:211 +#: lib/graphql/resolvers/todos.ex:240 +msgid "Todo list doesn't exist" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/feed_token.ex:73 +msgid "Token does not exist" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/feed_token.ex:67 +#: lib/graphql/resolvers/feed_token.ex:70 +msgid "Token is not a valid UUID" +msgstr "" + +#, elixir-format +#: lib/graphql/error.ex:96 +msgid "User not found" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/person.ex:310 +msgid "You already have a profile for this user" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/participant.ex:134 +msgid "You are already a participant of this event" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/member.ex:87 +msgid "You are not a member of this group" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/member.ex:157 +#: lib/graphql/resolvers/member.ex:173 +#: lib/graphql/resolvers/member.ex:188 +msgid "You are not a moderator or admin for this group" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/comment.ex:59 +msgid "You are not allowed to create a comment if not connected" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/feed_token.ex:41 +msgid "You are not allowed to create a feed token if not connected" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/comment.ex:134 +msgid "You are not allowed to delete a comment if not connected" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/feed_token.ex:82 +msgid "You are not allowed to delete a feed token if not connected" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/comment.ex:93 +msgid "You are not allowed to update a comment if not connected" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/participant.ex:181 +#: lib/graphql/resolvers/participant.ex:214 +msgid "You can't leave event because you're the only event creator participant" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/member.ex:192 +msgid "You can't set yourself to a lower member role for this group because you are the only administrator" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/comment.ex:122 +msgid "You cannot delete this comment" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/event.ex:408 +msgid "You cannot delete this event" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/member.ex:90 +msgid "You cannot invite to this group" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/feed_token.ex:76 +msgid "You don't have permission to delete this token" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/admin.ex:56 +msgid "You need to be logged-in and a moderator to list action logs" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/report.ex:36 +msgid "You need to be logged-in and a moderator to list reports" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/report.ex:115 +msgid "You need to be logged-in and a moderator to update a report" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/report.ex:53 +msgid "You need to be logged-in and a moderator to view a report" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/admin.ex:257 +msgid "You need to be logged-in and an administrator to access admin settings" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/admin.ex:241 +msgid "You need to be logged-in and an administrator to access dashboard statistics" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/admin.ex:283 +msgid "You need to be logged-in and an administrator to save admin settings" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/discussion.ex:84 +msgid "You need to be logged-in to access discussions" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/resource.ex:96 +msgid "You need to be logged-in to access resources" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/event.ex:318 +msgid "You need to be logged-in to create events" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/post.ex:141 +msgid "You need to be logged-in to create posts" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/report.ex:87 +msgid "You need to be logged-in to create reports" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/resource.ex:137 +msgid "You need to be logged-in to create resources" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/event.ex:417 +msgid "You need to be logged-in to delete an event" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/post.ex:214 +msgid "You need to be logged-in to delete posts" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/resource.ex:204 +msgid "You need to be logged-in to delete resources" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/participant.ex:108 +msgid "You need to be logged-in to join an event" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/participant.ex:225 +msgid "You need to be logged-in to leave an event" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/event.ex:374 +msgid "You need to be logged-in to update an event" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/post.ex:180 +msgid "You need to be logged-in to update posts" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/resource.ex:174 +msgid "You need to be logged-in to update resources" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/resource.ex:233 +msgid "You need to be logged-in to view a resource preview" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/resource.ex:129 +msgid "Parent resource doesn't belong to this group" +msgstr "" + +#, elixir-format +#: lib/mobilizon/users/user.ex:114 +msgid "The chosen password is too short." +msgstr "" + +#, elixir-format +#: lib/mobilizon/users/user.ex:142 +msgid "The registration token is already in use, this looks like an issue on our side." +msgstr "" + +#, elixir-format +#: lib/mobilizon/users/user.ex:108 +msgid "This email is already used." +msgstr "" + +#, elixir-format +#: lib/graphql/error.ex:97 +msgid "Post not found" +msgstr "" + +#, elixir-format +#: lib/graphql/error.ex:84 +msgid "Invalid arguments passed" +msgstr "" + +#, elixir-format +#: lib/graphql/error.ex:90 +msgid "Invalid credentials" +msgstr "" + +#, elixir-format +#: lib/graphql/error.ex:88 +msgid "Reset your password to login" +msgstr "" + +#, elixir-format +#: lib/graphql/error.ex:95 +#: lib/graphql/error.ex:100 +msgid "Resource not found" +msgstr "" + +#, elixir-format +#: lib/graphql/error.ex:102 +msgid "Something went wrong" +msgstr "" + +#, elixir-format +#: lib/graphql/error.ex:83 +msgid "Unknown Resource" +msgstr "" + +#, elixir-format +#: lib/graphql/error.ex:93 +msgid "You don't have permission to do this" +msgstr "" + +#, elixir-format +#: lib/graphql/error.ex:85 +msgid "You need to be logged in" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/member.ex:118 +msgid "You can't accept this invitation with this profile." +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/member.ex:139 +msgid "You can't reject this invitation with this profile." +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/media.ex:71 +msgid "File doesn't have an allowed MIME type." +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/group.ex:220 +msgid "Profile is not administrator for the group" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/event.ex:363 +msgid "You can't edit this event." +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/event.ex:366 +msgid "You can't attribute this event to this profile." +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/member.ex:142 +msgid "This invitation doesn't exist." +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/member.ex:217 +msgid "This member already has been rejected." +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/member.ex:241 +msgid "You don't have the right to remove this member." +msgstr "" + +#, elixir-format +#: lib/mobilizon/actors/actor.ex:351 +msgid "This username is already taken." +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/discussion.ex:81 +msgid "You must provide either an ID or a slug to access a discussion" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/event.ex:313 +msgid "Organizer profile is not owned by the user" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/participant.ex:93 +msgid "Profile ID provided is not the anonymous profile one" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/group.ex:161 +#: lib/graphql/resolvers/group.ex:203 +#: lib/graphql/resolvers/person.ex:148 +#: lib/graphql/resolvers/person.ex:182 +#: lib/graphql/resolvers/person.ex:304 +msgid "The provided picture is too heavy" +msgstr "" + +#, elixir-format +#: lib/web/views/utils.ex:34 +msgid "Index file not found. You need to recompile the front-end." +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/resource.ex:126 +msgid "Error while creating resource" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/user.ex:505 +msgid "Invalid activation token" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/resource.ex:223 +msgid "Unable to fetch resource details from this URL." +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/event.ex:164 +#: lib/graphql/resolvers/participant.ex:253 +#: lib/graphql/resolvers/participant.ex:328 +msgid "Provided profile doesn't have moderator permissions on this event" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/event.ex:299 +msgid "Organizer profile doesn't have permission to create an event on behalf of this group" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/event.ex:354 +msgid "This profile doesn't have permission to update an event on behalf of this group" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/user.ex:167 +msgid "Your e-mail has been denied registration or uses a disallowed e-mail provider" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/comment.ex:129 +msgid "Comment not found" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/discussion.ex:123 +msgid "Error while creating a discussion" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/user.ex:626 +msgid "Error while updating locale" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/person.ex:307 +msgid "Error while uploading pictures" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/participant.ex:190 +msgid "Failed to leave the event" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/group.ex:216 +msgid "Failed to update the group" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/admin.ex:338 +#: lib/graphql/resolvers/user.ex:469 +msgid "Failed to update user email" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/user.ex:501 +msgid "Failed to validate user email" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/participant.ex:146 +msgid "The anonymous actor ID is invalid" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/resource.ex:162 +msgid "Unknown error while updating resource" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/comment.ex:84 +msgid "You are not the comment creator" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/user.ex:426 +msgid "You cannot change your password." +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/participant.ex:321 +msgid "Format not supported" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/participant.ex:305 +msgid "A dependency needed to export to %{format} is not installed" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/participant.ex:313 +msgid "An error occured while saving export" +msgstr "" + +#, elixir-format +#: lib/web/controllers/export_controller.ex:30 +msgid "Export to format %{format} is not enabled on this instance" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/group.ex:167 +msgid "Only admins can create groups" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/event.ex:306 +msgid "Only groups can create events" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/event.ex:292 +msgid "Unknown error while creating event" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/user.ex:482 +msgid "User cannot change email" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/group.ex:371 +msgid "Follow does not match your account" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/group.ex:375 +msgid "Follow not found" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/user.ex:347 +msgid "Profile with username %{username} not found" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/user.ex:342 +msgid "This profile does not belong to you" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/group.ex:345 +msgid "You are already following this group" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/group.ex:354 +msgid "You need to be logged-in to follow a group" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/group.ex:403 +msgid "You need to be logged-in to unfollow a group" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/group.ex:380 +msgid "You need to be logged-in to update a group follow" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/member.ex:210 +msgid "This member does not exist" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/member.ex:234 +msgid "You don't have the role needed to remove this member." +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/member.ex:252 +msgid "You must be logged-in to remove a member" +msgstr "" + +#, elixir-format +#: lib/graphql/resolvers/user.ex:157 +msgid "Your email seems to be using an invalid format" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:387 +msgid "Can't confirm an already confirmed user" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:391 +msgid "Deconfirming users is not supported" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:363 +msgid "The new role must be different" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:314 +msgid "You need to be logged-in and an administrator to edit an user's details" +msgstr "" diff --git a/priv/gettext/hr/LC_MESSAGES/activity.po b/priv/gettext/hr/LC_MESSAGES/activity.po index 1bb278e35..d4d5e6e94 100644 --- a/priv/gettext/hr/LC_MESSAGES/activity.po +++ b/priv/gettext/hr/LC_MESSAGES/activity.po @@ -165,19 +165,22 @@ msgstr "%{profile} su ažurirali člana %{member}." #, 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.text.eex:1 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:1 msgid "The event %{event} was created by %{profile}." msgstr "%{profile} su stvorili događaj %{event}." #, 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.text.eex:13 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:34 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:13 msgid "The event %{event} was deleted by %{profile}." msgstr "%{profile} su izbrisali događaj %{event}." #, 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.text.eex:7 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:19 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:7 msgid "The event %{event} was updated by %{profile}." msgstr "%{profile} su ažurirali događaj %{event}." @@ -207,13 +210,15 @@ msgstr "%{member} su se pridružili grupi." #, 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.text.eex:25 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:58 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:25 msgid "%{profile} posted a comment on the event %{event}." msgstr "%{profile} su objavili komentar na događaj %{event}." #, 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.text.eex:19 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:43 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:19 msgid "%{profile} replied to a comment on the event %{event}." msgstr "%{profile} su odgovorili na komentar događaja %{event}." @@ -235,7 +240,8 @@ msgstr[2] "Prikaži još %{count} aktivnosti" #, 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.text.eex:6 +#: lib/web/templates/email/email_direct_activity.html.heex:46 +#: 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!" msgid_plural "There has been some activity!" @@ -250,14 +256,17 @@ msgstr "Aktivnost u %{instance}" #, 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.text.eex:7 -#: lib/web/templates/email/email_anonymous_activity.html.heex:41 lib/web/templates/email/email_anonymous_activity.text.eex:5 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:19 +#: 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.text.eex:5 msgid "%{profile} has posted an announcement under event %{event}." msgstr "%{profile} su objavili najavu za događaj %{event}." #, 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.text.eex:1 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 msgid "%{profile} mentionned you in a comment under event %{event}." msgstr "%{profile} su vas spomenuli u komentaru događaja %{event}." @@ -275,7 +284,8 @@ msgid "Here's your weekly activity recap" msgstr "Ovaj tjedan, ukratko" #, elixir-format -#: lib/web/email/activity.ex:119 lib/web/email/activity.ex:140 +#: lib/web/email/activity.ex:119 +#: lib/web/email/activity.ex:140 msgid "Activity notification for %{instance}" msgstr "Obavijest o aktivnosti za %{instance}" @@ -297,13 +307,15 @@ msgstr "Kratki sadržaj tjedna za %{instance}" #, 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.text.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:51 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:19 msgid "%{profile} has posted a new comment under your event %{event}." msgstr "%{profile} su objavili novi komentar na vaš događaj %{event}." #, 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.text.eex:13 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:36 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:13 msgid "%{profile} has posted a new reply under your event %{event}." msgstr "%{profile} su objavili novi odgovor na vaš događaj %{event}." diff --git a/priv/gettext/hr/LC_MESSAGES/default.po b/priv/gettext/hr/LC_MESSAGES/default.po index e0b40769e..9e8ef343b 100644 --- a/priv/gettext/hr/LC_MESSAGES/default.po +++ b/priv/gettext/hr/LC_MESSAGES/default.po @@ -758,9 +758,12 @@ msgstr "" #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:63 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:133 -#: lib/web/templates/email/event_updated.text.eex:14 lib/web/templates/email/notification_each_week.html.heex:60 -#: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:60 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 +#: lib/web/templates/email/event_updated.html.heex:133 +#: lib/web/templates/email/event_updated.text.eex:14 +#: lib/web/templates/email/notification_each_week.html.heex:60 +#: lib/web/templates/email/notification_each_week.text.eex:11 +#: lib/web/templates/email/on_day_notification.html.heex:60 #: lib/web/templates/email/on_day_notification.text.eex:11 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." @@ -820,7 +823,6 @@ msgstr "" #, elixir-format #: lib/web/templates/email/email_changed_new.html.heex:38 -#: lib/web/templates/email/email_changed_new.text.eex:3 msgid "Hi there! It seems like you wanted to change the email address linked to your account on <b>%{instance}</b>. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." msgstr "" @@ -842,7 +844,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:70 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.heex:45 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 +#: lib/web/templates/email/registration_confirmation.html.heex:45 msgid "If you didn't trigger this email, you may safely ignore it." msgstr "" @@ -954,7 +957,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/email_anonymous_activity.html.heex:67 -#: lib/web/templates/email/event_participation_approved.html.heex:58 lib/web/templates/email/event_participation_confirmed.html.heex:58 +#: lib/web/templates/email/event_participation_approved.html.heex:58 +#: lib/web/templates/email/event_participation_confirmed.html.heex:58 msgid "Visit event page" msgstr "" @@ -976,7 +980,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:70 -#: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.heex:70 +#: lib/web/templates/email/event_participation_approved.text.eex:11 +#: lib/web/templates/email/event_participation_confirmed.html.heex:70 #: lib/web/templates/email/event_participation_confirmed.text.eex:6 msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." msgstr "" @@ -1000,7 +1005,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:13 -#: lib/web/templates/email/event_participation_confirmed.html.heex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 +#: lib/web/templates/email/event_participation_confirmed.html.heex:13 +#: lib/web/templates/email/event_participation_confirmed.text.eex:1 msgid "You're going!" msgstr "" @@ -1325,8 +1331,10 @@ msgid "This is a demonstration site to test Mobilizon." msgstr "" #, elixir-format -#: lib/service/metadata/actor.ex:91 lib/service/metadata/actor.ex:99 -#: lib/service/metadata/instance.ex:56 lib/service/metadata/instance.ex:62 +#: lib/service/metadata/actor.ex:91 +#: lib/service/metadata/actor.ex:99 +#: lib/service/metadata/instance.ex:56 +#: lib/service/metadata/instance.ex:62 msgid "%{name}'s feed" msgstr "" @@ -1407,7 +1415,8 @@ msgstr "" #. File name template for exported list of participants. Should NOT contain spaces. Make sure the output is going to be something standardized that is acceptable as a file name on most systems. #, elixir-format #: lib/service/export/participants/csv.ex:81 -#: lib/service/export/participants/ods.ex:86 lib/service/export/participants/pdf.ex:96 +#: lib/service/export/participants/ods.ex:86 +#: lib/service/export/participants/pdf.ex:96 msgid "%{event}_participants" msgstr "" @@ -1428,6 +1437,8 @@ msgstr "" #, elixir-format #: lib/service/export/participants/common.ex:52 +#: lib/web/templates/email/admin/_role.html.heex:3 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Administrator" msgstr "" @@ -1438,6 +1449,8 @@ msgstr "" #, elixir-format #: lib/service/export/participants/common.ex:49 +#: lib/web/templates/email/admin/_role.html.heex:5 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Moderator" msgstr "" @@ -1488,8 +1501,10 @@ msgstr "" #, elixir-format #: lib/web/templates/email/date/event_tz_date.html.heex:6 -#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 lib/web/templates/email/date/event_tz_date_range.html.heex:12 -#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:12 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 msgid "🌐 %{timezone} %{offset}" msgstr "" @@ -1678,3 +1693,137 @@ msgid_plural "You have %{number_participation_requests} attendance requests to p msgstr[0] "" msgstr[1] "" msgstr[2] "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:13 +#: lib/web/templates/email/admin_user_role_changed.text.eex:1 +msgid "An administrator changed your role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:120 +msgid "An administrator confirmed your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:1 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:1 +msgid "An administrator manually changed the email attached to your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:47 +#: lib/web/email/admin.ex:72 +msgid "An administrator manually changed the email attached to your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:13 +#: lib/web/templates/email/admin_user_confirmation.text.eex:1 +msgid "An administrator manually confirmed your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:98 +msgid "An administrator updated your role on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/email_changed_new.text.eex:3 +msgid "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:3 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually changed your account email from %{old_email} (this one) to %{new_email}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> (this one) to <b>%{new_email}</b>." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> to <b>%{new_email}</b> (this one)." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:71 +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:45 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:45 +#: lib/web/templates/email/admin_user_role_changed.html.heex:67 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods %{start_link}on the instance's about page%{end_link}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:7 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:4 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:4 +#: lib/web/templates/email/admin_user_role_changed.text.eex:8 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods on the instance's about page: %{about_page}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:58 +msgid "Login on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:55 +msgid "New role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:6 +msgid "New role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:47 +msgid "Old role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:5 +msgid "Old role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin/_role.html.heex:7 +#: lib/web/templates/email/admin/_role.text.eex:1 +msgid "User" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:45 +msgid "You may now login using your credentials on the service." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:5 +msgid "You may now login using your credentials on the service:" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just changed your account role." +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just changed your account role." +msgstr "" diff --git a/priv/gettext/hr/LC_MESSAGES/errors.po b/priv/gettext/hr/LC_MESSAGES/errors.po index 4b7e2a9ca..467541169 100644 --- a/priv/gettext/hr/LC_MESSAGES/errors.po +++ b/priv/gettext/hr/LC_MESSAGES/errors.po @@ -135,14 +135,19 @@ msgid "Error while saving user settings" msgstr "" #, elixir-format -#: lib/graphql/error.ex:99 lib/graphql/resolvers/group.ex:249 -#: lib/graphql/resolvers/group.ex:281 lib/graphql/resolvers/group.ex:318 lib/graphql/resolvers/group.ex:349 -#: lib/graphql/resolvers/group.ex:398 lib/graphql/resolvers/member.ex:81 +#: lib/graphql/error.ex:99 +#: lib/graphql/resolvers/group.ex:249 +#: lib/graphql/resolvers/group.ex:281 +#: lib/graphql/resolvers/group.ex:318 +#: lib/graphql/resolvers/group.ex:349 +#: lib/graphql/resolvers/group.ex:398 +#: lib/graphql/resolvers/member.ex:81 msgid "Group not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:78 lib/graphql/resolvers/group.ex:82 +#: lib/graphql/resolvers/group.ex:78 +#: lib/graphql/resolvers/group.ex:82 msgid "Group with ID %{id} not found" msgstr "" @@ -167,15 +172,21 @@ msgid "No user to validate with this email was found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:314 lib/graphql/resolvers/user.ex:298 +#: lib/graphql/resolvers/person.ex:314 +#: lib/graphql/resolvers/user.ex:298 msgid "No user with this email was found" msgstr "" #, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:32 lib/graphql/resolvers/participant.ex:210 lib/graphql/resolvers/person.ex:236 -#: lib/graphql/resolvers/person.ex:353 lib/graphql/resolvers/person.ex:380 lib/graphql/resolvers/person.ex:397 -#: lib/graphql/resolvers/person.ex:425 lib/graphql/resolvers/person.ex:440 +#: lib/graphql/resolvers/participant.ex:32 +#: lib/graphql/resolvers/participant.ex:210 +#: lib/graphql/resolvers/person.ex:236 +#: lib/graphql/resolvers/person.ex:353 +#: lib/graphql/resolvers/person.ex:380 +#: lib/graphql/resolvers/person.ex:397 +#: lib/graphql/resolvers/person.ex:425 +#: lib/graphql/resolvers/person.ex:440 msgid "Profile is not owned by authenticated user" msgstr "" @@ -190,11 +201,13 @@ msgid "The current password is invalid" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:341 #: lib/graphql/resolvers/user.ex:472 msgid "The new email doesn't seem to be valid" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:344 #: lib/graphql/resolvers/user.ex:475 msgid "The new email must be different" msgstr "" @@ -205,7 +218,8 @@ msgid "The new password must be different" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:479 lib/graphql/resolvers/user.ex:541 +#: lib/graphql/resolvers/user.ex:479 +#: lib/graphql/resolvers/user.ex:541 #: lib/graphql/resolvers/user.ex:544 msgid "The password provided is invalid" msgstr "" @@ -226,7 +240,8 @@ msgid "This user has been disabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:252 lib/graphql/resolvers/user.ex:257 +#: lib/graphql/resolvers/user.ex:252 +#: lib/graphql/resolvers/user.ex:257 msgid "Unable to validate user" msgstr "" @@ -301,7 +316,8 @@ msgid "You need to have an existing token to get a refresh token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:276 lib/graphql/resolvers/user.ex:301 +#: lib/graphql/resolvers/user.ex:276 +#: lib/graphql/resolvers/user.ex:301 msgid "You requested again a confirmation email too soon" msgstr "" @@ -321,7 +337,8 @@ msgid "No profile found with this ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:97 +#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:97 msgid "No remote profile found with this ID" msgstr "" @@ -372,17 +389,19 @@ msgid "Comment is already deleted" msgstr "" #, elixir-format -#: lib/graphql/error.ex:101 lib/graphql/resolvers/discussion.ex:69 +#: lib/graphql/error.ex:101 +#: lib/graphql/resolvers/discussion.ex:69 msgid "Discussion not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:63 lib/graphql/resolvers/report.ex:82 +#: lib/graphql/resolvers/report.ex:71 +#: lib/graphql/resolvers/report.ex:90 msgid "Error while saving report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:102 +#: lib/graphql/resolvers/report.ex:110 msgid "Error while updating report" msgstr "" @@ -392,14 +411,16 @@ msgid "Event id not found" msgstr "" #, elixir-format -#: lib/graphql/error.ex:98 lib/graphql/resolvers/event.ex:360 +#: lib/graphql/error.ex:98 +#: lib/graphql/resolvers/event.ex:360 #: lib/graphql/resolvers/event.ex:412 msgid "Event not found" msgstr "" #, elixir-format #: lib/graphql/resolvers/participant.ex:87 -#: lib/graphql/resolvers/participant.ex:128 lib/graphql/resolvers/participant.ex:155 +#: lib/graphql/resolvers/participant.ex:128 +#: lib/graphql/resolvers/participant.ex:155 #: lib/graphql/resolvers/participant.ex:336 msgid "Event with this ID %{id} doesn't exist" msgstr "" @@ -415,8 +436,11 @@ msgid "No discussion with ID %{id}" msgstr "" #, elixir-format -#: lib/graphql/resolvers/todos.ex:80 lib/graphql/resolvers/todos.ex:107 -#: lib/graphql/resolvers/todos.ex:179 lib/graphql/resolvers/todos.ex:208 lib/graphql/resolvers/todos.ex:237 +#: lib/graphql/resolvers/todos.ex:80 +#: lib/graphql/resolvers/todos.ex:107 +#: lib/graphql/resolvers/todos.ex:179 +#: lib/graphql/resolvers/todos.ex:208 +#: lib/graphql/resolvers/todos.ex:237 msgid "No profile found for user" msgstr "" @@ -432,7 +456,8 @@ msgstr "" #, elixir-format #: lib/graphql/resolvers/participant.ex:187 -#: lib/graphql/resolvers/participant.ex:220 lib/graphql/resolvers/participant.ex:263 +#: lib/graphql/resolvers/participant.ex:220 +#: lib/graphql/resolvers/participant.ex:263 msgid "Participant not found" msgstr "" @@ -447,12 +472,14 @@ msgid "Person with username %{username} not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:169 lib/graphql/resolvers/post.ex:203 +#: lib/graphql/resolvers/post.ex:169 +#: lib/graphql/resolvers/post.ex:203 msgid "Post ID is not a valid ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:172 lib/graphql/resolvers/post.ex:206 +#: lib/graphql/resolvers/post.ex:172 +#: lib/graphql/resolvers/post.ex:206 msgid "Post doesn't exist" msgstr "" @@ -462,31 +489,42 @@ msgid "Profile invited doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/member.ex:93 lib/graphql/resolvers/member.ex:97 +#: lib/graphql/resolvers/member.ex:93 +#: lib/graphql/resolvers/member.ex:97 msgid "Profile is already a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:133 lib/graphql/resolvers/post.ex:175 -#: lib/graphql/resolvers/post.ex:209 lib/graphql/resolvers/resource.ex:90 lib/graphql/resolvers/resource.ex:132 -#: lib/graphql/resolvers/resource.ex:165 lib/graphql/resolvers/resource.ex:199 lib/graphql/resolvers/todos.ex:58 -#: lib/graphql/resolvers/todos.ex:83 lib/graphql/resolvers/todos.ex:110 lib/graphql/resolvers/todos.ex:182 -#: lib/graphql/resolvers/todos.ex:214 lib/graphql/resolvers/todos.ex:246 +#: lib/graphql/resolvers/post.ex:133 +#: lib/graphql/resolvers/post.ex:175 +#: lib/graphql/resolvers/post.ex:209 +#: lib/graphql/resolvers/resource.ex:90 +#: lib/graphql/resolvers/resource.ex:132 +#: lib/graphql/resolvers/resource.ex:165 +#: lib/graphql/resolvers/resource.ex:199 +#: lib/graphql/resolvers/todos.ex:58 +#: lib/graphql/resolvers/todos.ex:83 +#: lib/graphql/resolvers/todos.ex:110 +#: lib/graphql/resolvers/todos.ex:182 +#: lib/graphql/resolvers/todos.ex:214 +#: lib/graphql/resolvers/todos.ex:246 msgid "Profile is not member of group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/person.ex:233 +#: lib/graphql/resolvers/actor.ex:67 +#: lib/graphql/resolvers/person.ex:233 msgid "Profile not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:40 +#: lib/graphql/resolvers/report.ex:48 msgid "Report not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/resource.ex:169 lib/graphql/resolvers/resource.ex:196 +#: lib/graphql/resolvers/resource.ex:169 +#: lib/graphql/resolvers/resource.ex:196 msgid "Resource doesn't exist" msgstr "" @@ -501,12 +539,14 @@ msgid "This token is invalid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/todos.ex:176 lib/graphql/resolvers/todos.ex:243 +#: lib/graphql/resolvers/todos.ex:176 +#: lib/graphql/resolvers/todos.ex:243 msgid "Todo doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/todos.ex:77 lib/graphql/resolvers/todos.ex:211 +#: lib/graphql/resolvers/todos.ex:77 +#: lib/graphql/resolvers/todos.ex:211 #: lib/graphql/resolvers/todos.ex:240 msgid "Todo list doesn't exist" msgstr "" @@ -517,12 +557,13 @@ msgid "Token does not exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70 +#: lib/graphql/resolvers/feed_token.ex:67 +#: lib/graphql/resolvers/feed_token.ex:70 msgid "Token is not a valid UUID" msgstr "" #, elixir-format -#: lib/graphql/error.ex:96 lib/graphql/resolvers/person.ex:458 +#: lib/graphql/error.ex:96 msgid "User not found" msgstr "" @@ -542,7 +583,8 @@ msgid "You are not a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/member.ex:157 lib/graphql/resolvers/member.ex:173 +#: lib/graphql/resolvers/member.ex:157 +#: lib/graphql/resolvers/member.ex:173 #: lib/graphql/resolvers/member.ex:188 msgid "You are not a moderator or admin for this group" msgstr "" @@ -604,37 +646,37 @@ msgid "You don't have permission to delete this token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:54 +#: lib/graphql/resolvers/admin.ex:56 msgid "You need to be logged-in and a moderator to list action logs" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:28 +#: lib/graphql/resolvers/report.ex:36 msgid "You need to be logged-in and a moderator to list reports" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:107 +#: lib/graphql/resolvers/report.ex:115 msgid "You need to be logged-in and a moderator to update a report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:45 +#: lib/graphql/resolvers/report.ex:53 msgid "You need to be logged-in and a moderator to view a report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:255 +#: lib/graphql/resolvers/admin.ex:257 msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:239 +#: lib/graphql/resolvers/admin.ex:241 msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:281 +#: lib/graphql/resolvers/admin.ex:283 msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" @@ -659,7 +701,7 @@ msgid "You need to be logged-in to create posts" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:79 +#: lib/graphql/resolvers/report.ex:87 msgid "You need to be logged-in to create reports" msgstr "" @@ -754,7 +796,8 @@ msgid "Reset your password to login" msgstr "" #, elixir-format -#: lib/graphql/error.ex:95 lib/graphql/error.ex:100 +#: lib/graphql/error.ex:95 +#: lib/graphql/error.ex:100 msgid "Resource not found" msgstr "" @@ -844,8 +887,11 @@ msgid "Profile ID provided is not the anonymous profile one" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:161 lib/graphql/resolvers/group.ex:203 -#: lib/graphql/resolvers/person.ex:148 lib/graphql/resolvers/person.ex:182 lib/graphql/resolvers/person.ex:304 +#: lib/graphql/resolvers/group.ex:161 +#: lib/graphql/resolvers/group.ex:203 +#: lib/graphql/resolvers/person.ex:148 +#: lib/graphql/resolvers/person.ex:182 +#: lib/graphql/resolvers/person.ex:304 msgid "The provided picture is too heavy" msgstr "" @@ -870,7 +916,8 @@ msgid "Unable to fetch resource details from this URL." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:164 lib/graphql/resolvers/participant.ex:253 +#: lib/graphql/resolvers/event.ex:164 +#: lib/graphql/resolvers/participant.ex:253 #: lib/graphql/resolvers/participant.ex:328 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "" @@ -921,6 +968,7 @@ msgid "Failed to update the group" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:338 #: lib/graphql/resolvers/user.ex:469 msgid "Failed to update user email" msgstr "" @@ -1049,3 +1097,23 @@ msgstr "" #: lib/graphql/resolvers/user.ex:157 msgid "Your email seems to be using an invalid format" msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:387 +msgid "Can't confirm an already confirmed user" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:391 +msgid "Deconfirming users is not supported" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:363 +msgid "The new role must be different" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:314 +msgid "You need to be logged-in and an administrator to edit an user's details" +msgstr "" diff --git a/priv/gettext/hu/LC_MESSAGES/activity.po b/priv/gettext/hu/LC_MESSAGES/activity.po index 966fb7ec9..667f99802 100644 --- a/priv/gettext/hu/LC_MESSAGES/activity.po +++ b/priv/gettext/hu/LC_MESSAGES/activity.po @@ -162,19 +162,22 @@ msgstr "%{profile} frissítette %{member} tagot." #, 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.text.eex:1 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:1 msgid "The event %{event} was created by %{profile}." msgstr "A(z) %{event} eseményt %{profile} hozta létre." #, 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.text.eex:13 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:34 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:13 msgid "The event %{event} was deleted by %{profile}." msgstr "A(z) %{event} eseményt %{profile} törölte." #, 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.text.eex:7 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:19 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:7 msgid "The event %{event} was updated by %{profile}." msgstr "A(z) %{event} eseményt %{profile} frissítette." @@ -204,13 +207,15 @@ msgstr "%{member} csatlakozott a csoporthoz." #, 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.text.eex:25 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:58 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:25 msgid "%{profile} posted a comment on the event %{event}." msgstr "%{profile} hozzászólást küldött a(z) %{event} eseményhez." #, 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.text.eex:19 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:43 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:19 msgid "%{profile} replied to a comment on the event %{event}." msgstr "%{profile} válaszolt a(z) %{event} esemény egyik hozzászólására." @@ -231,7 +236,8 @@ msgstr[1] "Még %{count} tevékenység megtekintése" #, 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.text.eex:6 +#: lib/web/templates/email/email_direct_activity.html.heex:46 +#: 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!" msgid_plural "There has been some activity!" @@ -245,14 +251,17 @@ msgstr "Tevékenység a(z) %{instance} példányon" #, 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.text.eex:7 -#: lib/web/templates/email/email_anonymous_activity.html.heex:41 lib/web/templates/email/email_anonymous_activity.text.eex:5 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:19 +#: 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.text.eex:5 msgid "%{profile} has posted an announcement under event %{event}." msgstr "%{profile} közleményt küldött a(z) %{event} esemény alá." #, 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.text.eex:1 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 msgid "%{profile} mentionned you in a comment under event %{event}." msgstr "" "%{profile} megemlítette Önt a(z) %{event} esemény alatti egyik " @@ -272,7 +281,8 @@ msgid "Here's your weekly activity recap" msgstr "Itt az Ön heti tevékenységösszegzése" #, elixir-format -#: lib/web/email/activity.ex:119 lib/web/email/activity.ex:140 +#: lib/web/email/activity.ex:119 +#: lib/web/email/activity.ex:140 msgid "Activity notification for %{instance}" msgstr "Tevékenységértesítés a(z) %{instance} példányhoz" @@ -294,13 +304,15 @@ msgstr "Heti tevékenységösszegzés a(z) %{instance} példányhoz" #, 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.text.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:51 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:19 msgid "%{profile} has posted a new comment under your event %{event}." msgstr "%{profile} új hozzászólást küldött az Ön %{event} eseménye alá." #, 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.text.eex:13 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:36 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:13 msgid "%{profile} has posted a new reply under your event %{event}." msgstr "%{profile} új választ küldött az Ön %{event} eseménye alá." diff --git a/priv/gettext/hu/LC_MESSAGES/default.po b/priv/gettext/hu/LC_MESSAGES/default.po index ee2fb442a..186335e18 100644 --- a/priv/gettext/hu/LC_MESSAGES/default.po +++ b/priv/gettext/hu/LC_MESSAGES/default.po @@ -813,9 +813,12 @@ msgstr "" #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:63 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:133 -#: lib/web/templates/email/event_updated.text.eex:14 lib/web/templates/email/notification_each_week.html.heex:60 -#: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:60 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 +#: lib/web/templates/email/event_updated.html.heex:133 +#: lib/web/templates/email/event_updated.text.eex:14 +#: lib/web/templates/email/notification_each_week.html.heex:60 +#: lib/web/templates/email/notification_each_week.text.eex:11 +#: lib/web/templates/email/on_day_notification.html.heex:60 #: lib/web/templates/email/on_day_notification.text.eex:11 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." @@ -874,7 +877,6 @@ msgstr "" #, elixir-format #: lib/web/templates/email/email_changed_new.html.heex:38 -#: lib/web/templates/email/email_changed_new.text.eex:3 msgid "Hi there! It seems like you wanted to change the email address linked to your account on <b>%{instance}</b>. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." msgstr "" @@ -896,7 +898,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:70 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.heex:45 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 +#: lib/web/templates/email/registration_confirmation.html.heex:45 msgid "If you didn't trigger this email, you may safely ignore it." msgstr "" @@ -1010,7 +1013,8 @@ msgstr "Jelentés megtekintése:" #, elixir-format #: lib/web/templates/email/email_anonymous_activity.html.heex:67 -#: lib/web/templates/email/event_participation_approved.html.heex:58 lib/web/templates/email/event_participation_confirmed.html.heex:58 +#: lib/web/templates/email/event_participation_approved.html.heex:58 +#: lib/web/templates/email/event_participation_confirmed.html.heex:58 msgid "Visit event page" msgstr "Eseményoldal felkeresése" @@ -1032,7 +1036,8 @@ msgstr "Mi lesz ma?" #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:70 -#: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.heex:70 +#: lib/web/templates/email/event_participation_approved.text.eex:11 +#: lib/web/templates/email/event_participation_confirmed.html.heex:70 #: lib/web/templates/email/event_participation_confirmed.text.eex:6 msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." msgstr "" @@ -1056,7 +1061,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:13 -#: lib/web/templates/email/event_participation_confirmed.html.heex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 +#: lib/web/templates/email/event_participation_confirmed.html.heex:13 +#: lib/web/templates/email/event_participation_confirmed.text.eex:1 msgid "You're going!" msgstr "" @@ -1384,8 +1390,10 @@ msgid "This is a demonstration site to test Mobilizon." msgstr "Ez egy bemutató oldal a Mobilizon kipróbálásához." #, elixir-format -#: lib/service/metadata/actor.ex:91 lib/service/metadata/actor.ex:99 -#: lib/service/metadata/instance.ex:56 lib/service/metadata/instance.ex:62 +#: lib/service/metadata/actor.ex:91 +#: lib/service/metadata/actor.ex:99 +#: lib/service/metadata/instance.ex:56 +#: lib/service/metadata/instance.ex:62 msgid "%{name}'s feed" msgstr "" @@ -1466,7 +1474,8 @@ msgstr "" #. File name template for exported list of participants. Should NOT contain spaces. Make sure the output is going to be something standardized that is acceptable as a file name on most systems. #, elixir-format #: lib/service/export/participants/csv.ex:81 -#: lib/service/export/participants/ods.ex:86 lib/service/export/participants/pdf.ex:96 +#: lib/service/export/participants/ods.ex:86 +#: lib/service/export/participants/pdf.ex:96 msgid "%{event}_participants" msgstr "%{event}_resztvevoi" @@ -1487,6 +1496,8 @@ msgstr "Résztvevő állapota" #, elixir-format #: lib/service/export/participants/common.ex:52 +#: lib/web/templates/email/admin/_role.html.heex:3 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Administrator" msgstr "Adminisztrátor" @@ -1497,6 +1508,8 @@ msgstr "Létrehozó" #, elixir-format #: lib/service/export/participants/common.ex:49 +#: lib/web/templates/email/admin/_role.html.heex:5 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Moderator" msgstr "Moderátor" @@ -1547,8 +1560,10 @@ msgstr "Névtelen részvétel" #, elixir-format #: lib/web/templates/email/date/event_tz_date.html.heex:6 -#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 lib/web/templates/email/date/event_tz_date_range.html.heex:12 -#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:12 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 msgid "🌐 %{timezone} %{offset}" msgstr "🌐 %{timezone} %{offset}" @@ -1736,3 +1751,137 @@ msgid "You have one pending attendance request to process for the following even msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" msgstr[0] "" msgstr[1] "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:13 +#: lib/web/templates/email/admin_user_role_changed.text.eex:1 +msgid "An administrator changed your role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:120 +msgid "An administrator confirmed your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:1 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:1 +msgid "An administrator manually changed the email attached to your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:47 +#: lib/web/email/admin.ex:72 +msgid "An administrator manually changed the email attached to your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:13 +#: lib/web/templates/email/admin_user_confirmation.text.eex:1 +msgid "An administrator manually confirmed your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:98 +msgid "An administrator updated your role on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/email_changed_new.text.eex:3 +msgid "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:3 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually changed your account email from %{old_email} (this one) to %{new_email}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> (this one) to <b>%{new_email}</b>." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> to <b>%{new_email}</b> (this one)." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:71 +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:45 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:45 +#: lib/web/templates/email/admin_user_role_changed.html.heex:67 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods %{start_link}on the instance's about page%{end_link}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:7 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:4 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:4 +#: lib/web/templates/email/admin_user_role_changed.text.eex:8 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods on the instance's about page: %{about_page}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:58 +msgid "Login on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:55 +msgid "New role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:6 +msgid "New role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:47 +msgid "Old role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:5 +msgid "Old role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin/_role.html.heex:7 +#: lib/web/templates/email/admin/_role.text.eex:1 +msgid "User" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:45 +msgid "You may now login using your credentials on the service." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:5 +msgid "You may now login using your credentials on the service:" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just changed your account role." +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just changed your account role." +msgstr "" diff --git a/priv/gettext/hu/LC_MESSAGES/errors.po b/priv/gettext/hu/LC_MESSAGES/errors.po index 5306a3c70..ae171cc12 100644 --- a/priv/gettext/hu/LC_MESSAGES/errors.po +++ b/priv/gettext/hu/LC_MESSAGES/errors.po @@ -131,14 +131,19 @@ msgid "Error while saving user settings" msgstr "Hiba a felhasználói beállítások mentésekor" #, elixir-format -#: lib/graphql/error.ex:99 lib/graphql/resolvers/group.ex:249 -#: lib/graphql/resolvers/group.ex:281 lib/graphql/resolvers/group.ex:318 lib/graphql/resolvers/group.ex:349 -#: lib/graphql/resolvers/group.ex:398 lib/graphql/resolvers/member.ex:81 +#: lib/graphql/error.ex:99 +#: lib/graphql/resolvers/group.ex:249 +#: lib/graphql/resolvers/group.ex:281 +#: lib/graphql/resolvers/group.ex:318 +#: lib/graphql/resolvers/group.ex:349 +#: lib/graphql/resolvers/group.ex:398 +#: lib/graphql/resolvers/member.ex:81 msgid "Group not found" msgstr "Nem található a csoport" #, elixir-format -#: lib/graphql/resolvers/group.ex:78 lib/graphql/resolvers/group.ex:82 +#: lib/graphql/resolvers/group.ex:78 +#: lib/graphql/resolvers/group.ex:82 msgid "Group with ID %{id} not found" msgstr "Nem található %{id} azonosítóval rendelkező csoport" @@ -163,15 +168,21 @@ msgid "No user to validate with this email was found" msgstr "Nem található ezzel az e-mail-címmel ellenőrzendő felhasználó" #, elixir-format -#: lib/graphql/resolvers/person.ex:314 lib/graphql/resolvers/user.ex:298 +#: lib/graphql/resolvers/person.ex:314 +#: lib/graphql/resolvers/user.ex:298 msgid "No user with this email was found" msgstr "Nem található ezzel az e-mail-címmel rendelkező felhasználó" #, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:32 lib/graphql/resolvers/participant.ex:210 lib/graphql/resolvers/person.ex:236 -#: lib/graphql/resolvers/person.ex:353 lib/graphql/resolvers/person.ex:380 lib/graphql/resolvers/person.ex:397 -#: lib/graphql/resolvers/person.ex:425 lib/graphql/resolvers/person.ex:440 +#: lib/graphql/resolvers/participant.ex:32 +#: lib/graphql/resolvers/participant.ex:210 +#: lib/graphql/resolvers/person.ex:236 +#: lib/graphql/resolvers/person.ex:353 +#: lib/graphql/resolvers/person.ex:380 +#: lib/graphql/resolvers/person.ex:397 +#: lib/graphql/resolvers/person.ex:425 +#: lib/graphql/resolvers/person.ex:440 msgid "Profile is not owned by authenticated user" msgstr "A profilt nem hitelesített felhasználó birtokolja" @@ -186,11 +197,13 @@ msgid "The current password is invalid" msgstr "A jelenlegi jelszó érvénytelen" #, elixir-format +#: lib/graphql/resolvers/admin.ex:341 #: lib/graphql/resolvers/user.ex:472 msgid "The new email doesn't seem to be valid" msgstr "Az új e-mail-cím nem tűnik érvényesnek" #, elixir-format +#: lib/graphql/resolvers/admin.ex:344 #: lib/graphql/resolvers/user.ex:475 msgid "The new email must be different" msgstr "Az új e-mail-címnek eltérőnek kell lennie" @@ -201,7 +214,8 @@ msgid "The new password must be different" msgstr "Az új jelszónak eltérőnek kell lennie" #, elixir-format -#: lib/graphql/resolvers/user.ex:479 lib/graphql/resolvers/user.ex:541 +#: lib/graphql/resolvers/user.ex:479 +#: lib/graphql/resolvers/user.ex:541 #: lib/graphql/resolvers/user.ex:544 msgid "The password provided is invalid" msgstr "A megadott jelszó érvénytelen" @@ -224,7 +238,8 @@ msgid "This user has been disabled" msgstr "Ez a felhasználó le lett tiltva" #, elixir-format -#: lib/graphql/resolvers/user.ex:252 lib/graphql/resolvers/user.ex:257 +#: lib/graphql/resolvers/user.ex:252 +#: lib/graphql/resolvers/user.ex:257 msgid "Unable to validate user" msgstr "Nem lehet ellenőrizni a felhasználót" @@ -299,7 +314,8 @@ msgid "You need to have an existing token to get a refresh token" msgstr "Szüksége van egy meglévő tokenre egy frissítési token beszerzéséhez" #, elixir-format -#: lib/graphql/resolvers/user.ex:276 lib/graphql/resolvers/user.ex:301 +#: lib/graphql/resolvers/user.ex:276 +#: lib/graphql/resolvers/user.ex:301 msgid "You requested again a confirmation email too soon" msgstr "Túl hamar kért újra egy megerősítő e-mailt" @@ -319,7 +335,8 @@ msgid "No profile found with this ID" msgstr "Nem található profil ezzel az azonosítóval" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:97 +#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:97 msgid "No remote profile found with this ID" msgstr "Nem található távoli profil ezzel az azonosítóval" @@ -372,17 +389,19 @@ msgid "Comment is already deleted" msgstr "A hozzászólást már törölték" #, elixir-format -#: lib/graphql/error.ex:101 lib/graphql/resolvers/discussion.ex:69 +#: lib/graphql/error.ex:101 +#: lib/graphql/resolvers/discussion.ex:69 msgid "Discussion not found" msgstr "Nem található a megbeszélés" #, elixir-format -#: lib/graphql/resolvers/report.ex:63 lib/graphql/resolvers/report.ex:82 +#: lib/graphql/resolvers/report.ex:71 +#: lib/graphql/resolvers/report.ex:90 msgid "Error while saving report" msgstr "Hiba a jelentés mentésekor" #, elixir-format -#: lib/graphql/resolvers/report.ex:102 +#: lib/graphql/resolvers/report.ex:110 msgid "Error while updating report" msgstr "Hiba a jelentés frissítésekor" @@ -392,14 +411,16 @@ msgid "Event id not found" msgstr "Nem található az eseményazonosító" #, elixir-format -#: lib/graphql/error.ex:98 lib/graphql/resolvers/event.ex:360 +#: lib/graphql/error.ex:98 +#: lib/graphql/resolvers/event.ex:360 #: lib/graphql/resolvers/event.ex:412 msgid "Event not found" msgstr "Nem található az esemény" #, elixir-format #: lib/graphql/resolvers/participant.ex:87 -#: lib/graphql/resolvers/participant.ex:128 lib/graphql/resolvers/participant.ex:155 +#: lib/graphql/resolvers/participant.ex:128 +#: lib/graphql/resolvers/participant.ex:155 #: lib/graphql/resolvers/participant.ex:336 msgid "Event with this ID %{id} doesn't exist" msgstr "Ezzel a(z) %{id} azonosítóval rendelkező esemény nem létezik" @@ -415,8 +436,11 @@ msgid "No discussion with ID %{id}" msgstr "Nincs %{id} azonosítóval rendelkező megbeszélés" #, elixir-format -#: lib/graphql/resolvers/todos.ex:80 lib/graphql/resolvers/todos.ex:107 -#: lib/graphql/resolvers/todos.ex:179 lib/graphql/resolvers/todos.ex:208 lib/graphql/resolvers/todos.ex:237 +#: lib/graphql/resolvers/todos.ex:80 +#: lib/graphql/resolvers/todos.ex:107 +#: lib/graphql/resolvers/todos.ex:179 +#: lib/graphql/resolvers/todos.ex:208 +#: lib/graphql/resolvers/todos.ex:237 msgid "No profile found for user" msgstr "Nem található profil a felhasználóhoz" @@ -432,7 +456,8 @@ msgstr "A résztvevő már rendelkezik %{role} szereppel" #, elixir-format #: lib/graphql/resolvers/participant.ex:187 -#: lib/graphql/resolvers/participant.ex:220 lib/graphql/resolvers/participant.ex:263 +#: lib/graphql/resolvers/participant.ex:220 +#: lib/graphql/resolvers/participant.ex:263 msgid "Participant not found" msgstr "Nem található a résztvevő" @@ -447,12 +472,14 @@ msgid "Person with username %{username} not found" msgstr "Nem található %{username} felhasználónévvel rendelkező személy" #, elixir-format -#: lib/graphql/resolvers/post.ex:169 lib/graphql/resolvers/post.ex:203 +#: lib/graphql/resolvers/post.ex:169 +#: lib/graphql/resolvers/post.ex:203 msgid "Post ID is not a valid ID" msgstr "A bejegyzésazonosító nem érvényes azonosító" #, elixir-format -#: lib/graphql/resolvers/post.ex:172 lib/graphql/resolvers/post.ex:206 +#: lib/graphql/resolvers/post.ex:172 +#: lib/graphql/resolvers/post.ex:206 msgid "Post doesn't exist" msgstr "A bejegyzés nem létezik" @@ -462,31 +489,42 @@ msgid "Profile invited doesn't exist" msgstr "A meghívott profil nem létezik" #, elixir-format -#: lib/graphql/resolvers/member.ex:93 lib/graphql/resolvers/member.ex:97 +#: lib/graphql/resolvers/member.ex:93 +#: lib/graphql/resolvers/member.ex:97 msgid "Profile is already a member of this group" msgstr "A profil már tagja ennek a csoportnak" #, elixir-format -#: lib/graphql/resolvers/post.ex:133 lib/graphql/resolvers/post.ex:175 -#: lib/graphql/resolvers/post.ex:209 lib/graphql/resolvers/resource.ex:90 lib/graphql/resolvers/resource.ex:132 -#: lib/graphql/resolvers/resource.ex:165 lib/graphql/resolvers/resource.ex:199 lib/graphql/resolvers/todos.ex:58 -#: lib/graphql/resolvers/todos.ex:83 lib/graphql/resolvers/todos.ex:110 lib/graphql/resolvers/todos.ex:182 -#: lib/graphql/resolvers/todos.ex:214 lib/graphql/resolvers/todos.ex:246 +#: lib/graphql/resolvers/post.ex:133 +#: lib/graphql/resolvers/post.ex:175 +#: lib/graphql/resolvers/post.ex:209 +#: lib/graphql/resolvers/resource.ex:90 +#: lib/graphql/resolvers/resource.ex:132 +#: lib/graphql/resolvers/resource.ex:165 +#: lib/graphql/resolvers/resource.ex:199 +#: lib/graphql/resolvers/todos.ex:58 +#: lib/graphql/resolvers/todos.ex:83 +#: lib/graphql/resolvers/todos.ex:110 +#: lib/graphql/resolvers/todos.ex:182 +#: lib/graphql/resolvers/todos.ex:214 +#: lib/graphql/resolvers/todos.ex:246 msgid "Profile is not member of group" msgstr "A profil nem tagja a csoportnak" #, elixir-format -#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/person.ex:233 +#: lib/graphql/resolvers/actor.ex:67 +#: lib/graphql/resolvers/person.ex:233 msgid "Profile not found" msgstr "Nem található a profil" #, elixir-format -#: lib/graphql/resolvers/report.ex:40 +#: lib/graphql/resolvers/report.ex:48 msgid "Report not found" msgstr "Nem található a jelentés" #, elixir-format -#: lib/graphql/resolvers/resource.ex:169 lib/graphql/resolvers/resource.ex:196 +#: lib/graphql/resolvers/resource.ex:169 +#: lib/graphql/resolvers/resource.ex:196 msgid "Resource doesn't exist" msgstr "Az erőforrás nem létezik" @@ -501,12 +539,14 @@ msgid "This token is invalid" msgstr "Ez a token érvénytelen" #, elixir-format -#: lib/graphql/resolvers/todos.ex:176 lib/graphql/resolvers/todos.ex:243 +#: lib/graphql/resolvers/todos.ex:176 +#: lib/graphql/resolvers/todos.ex:243 msgid "Todo doesn't exist" msgstr "A tennivaló nem létezik" #, elixir-format -#: lib/graphql/resolvers/todos.ex:77 lib/graphql/resolvers/todos.ex:211 +#: lib/graphql/resolvers/todos.ex:77 +#: lib/graphql/resolvers/todos.ex:211 #: lib/graphql/resolvers/todos.ex:240 msgid "Todo list doesn't exist" msgstr "A tennivalólista nem létezik" @@ -517,12 +557,13 @@ msgid "Token does not exist" msgstr "A token nem létezik" #, elixir-format -#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70 +#: lib/graphql/resolvers/feed_token.ex:67 +#: lib/graphql/resolvers/feed_token.ex:70 msgid "Token is not a valid UUID" msgstr "A token nem érvényes UUID" #, elixir-format -#: lib/graphql/error.ex:96 lib/graphql/resolvers/person.ex:458 +#: lib/graphql/error.ex:96 msgid "User not found" msgstr "Nem található a felhasználó" @@ -542,7 +583,8 @@ msgid "You are not a member of this group" msgstr "Nem tagja ennek a csoportnak" #, elixir-format -#: lib/graphql/resolvers/member.ex:157 lib/graphql/resolvers/member.ex:173 +#: lib/graphql/resolvers/member.ex:157 +#: lib/graphql/resolvers/member.ex:173 #: lib/graphql/resolvers/member.ex:188 msgid "You are not a moderator or admin for this group" msgstr "Nem moderátor vagy adminisztrátor ennél a csoportnál" @@ -607,49 +649,49 @@ msgid "You don't have permission to delete this token" msgstr "Nincs jogosultsága a token törléséhez" #, elixir-format -#: lib/graphql/resolvers/admin.ex:54 +#: lib/graphql/resolvers/admin.ex:56 msgid "You need to be logged-in and a moderator to list action logs" msgstr "" "Bejelentkezve kell lennie és moderátornak kell lennie a műveletnaplók " "felsorolásához" #, elixir-format -#: lib/graphql/resolvers/report.ex:28 +#: lib/graphql/resolvers/report.ex:36 msgid "You need to be logged-in and a moderator to list reports" msgstr "" "Bejelentkezve kell lennie és moderátornak kell lennie a jelentések " "felsorolásához" #, elixir-format -#: lib/graphql/resolvers/report.ex:107 +#: lib/graphql/resolvers/report.ex:115 msgid "You need to be logged-in and a moderator to update a report" msgstr "" "Bejelentkezve kell lennie és moderátornak kell lennie egy jelentés " "frissítéséhez" #, elixir-format -#: lib/graphql/resolvers/report.ex:45 +#: lib/graphql/resolvers/report.ex:53 msgid "You need to be logged-in and a moderator to view a report" msgstr "" "Bejelentkezve kell lennie és moderátornak kell lennie egy jelentés " "megtekintéséhez" #, elixir-format -#: lib/graphql/resolvers/admin.ex:255 +#: lib/graphql/resolvers/admin.ex:257 msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" "Bejelentkezve kell lennie és adminisztrátornak kell lennie az " "adminisztrátori beállításokhoz való hozzáféréshez" #, elixir-format -#: lib/graphql/resolvers/admin.ex:239 +#: lib/graphql/resolvers/admin.ex:241 msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" "Bejelentkezve kell lennie és adminisztrátornak kell lennie a vezérlőpulti " "statisztikákhoz való hozzáféréshez" #, elixir-format -#: lib/graphql/resolvers/admin.ex:281 +#: lib/graphql/resolvers/admin.ex:283 msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" "Bejelentkezve kell lennie és adminisztrátornak kell lennie az " @@ -676,7 +718,7 @@ msgid "You need to be logged-in to create posts" msgstr "Bejelentkezve kell lennie a bejegyzések létrehozásához" #, elixir-format -#: lib/graphql/resolvers/report.ex:79 +#: lib/graphql/resolvers/report.ex:87 msgid "You need to be logged-in to create reports" msgstr "Bejelentkezve kell lennie a jelentések létrehozásához" @@ -772,7 +814,8 @@ msgid "Reset your password to login" msgstr "Állítsa vissza a jelszavát a bejelentkezéshez" #, elixir-format -#: lib/graphql/error.ex:95 lib/graphql/error.ex:100 +#: lib/graphql/error.ex:95 +#: lib/graphql/error.ex:100 msgid "Resource not found" msgstr "Nem található az erőforrás" @@ -864,8 +907,11 @@ msgid "Profile ID provided is not the anonymous profile one" msgstr "A megadott profilazonosító nem a névtelen profil" #, elixir-format -#: lib/graphql/resolvers/group.ex:161 lib/graphql/resolvers/group.ex:203 -#: lib/graphql/resolvers/person.ex:148 lib/graphql/resolvers/person.ex:182 lib/graphql/resolvers/person.ex:304 +#: lib/graphql/resolvers/group.ex:161 +#: lib/graphql/resolvers/group.ex:203 +#: lib/graphql/resolvers/person.ex:148 +#: lib/graphql/resolvers/person.ex:182 +#: lib/graphql/resolvers/person.ex:304 msgid "The provided picture is too heavy" msgstr "A megadott fénykép túl nehéz" @@ -890,7 +936,8 @@ msgid "Unable to fetch resource details from this URL." msgstr "Nem lehet lekérni az erőforrás részleteit erről az URL-ről." #, elixir-format -#: lib/graphql/resolvers/event.ex:164 lib/graphql/resolvers/participant.ex:253 +#: lib/graphql/resolvers/event.ex:164 +#: lib/graphql/resolvers/participant.ex:253 #: lib/graphql/resolvers/participant.ex:328 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "" @@ -948,6 +995,7 @@ msgid "Failed to update the group" msgstr "Nem sikerült frissíteni a csoportot" #, elixir-format +#: lib/graphql/resolvers/admin.ex:338 #: lib/graphql/resolvers/user.ex:469 msgid "Failed to update user email" msgstr "Nem sikerült frissíteni a felhasználó e-mail-címét" @@ -1080,3 +1128,25 @@ msgstr "Bejelentkezve kell lennie egy tag eltávolításához" #: lib/graphql/resolvers/user.ex:157 msgid "Your email seems to be using an invalid format" msgstr "Úgy tűnik, hogy az e-mail-címe érvénytelen formátumot használ" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:387 +msgid "Can't confirm an already confirmed user" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:391 +msgid "Deconfirming users is not supported" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:363 +msgid "The new role must be different" +msgstr "Az új e-mail-címnek eltérőnek kell lennie" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:314 +msgid "You need to be logged-in and an administrator to edit an user's details" +msgstr "" +"Bejelentkezve kell lennie és adminisztrátornak kell lennie az " +"adminisztrátori beállítások mentéséhez" diff --git a/priv/gettext/id/LC_MESSAGES/activity.po b/priv/gettext/id/LC_MESSAGES/activity.po index 593f5bb34..0e7e17dae 100644 --- a/priv/gettext/id/LC_MESSAGES/activity.po +++ b/priv/gettext/id/LC_MESSAGES/activity.po @@ -163,19 +163,22 @@ msgstr "" #, 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.text.eex:1 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:1 msgid "The event %{event} was created by %{profile}." msgstr "Acara %{event} dibuat oleh %{profile}." #, 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.text.eex:13 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:34 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:13 msgid "The event %{event} was deleted by %{profile}." msgstr "Acara %{event} dihapus oleh %{profile}." #, 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.text.eex:7 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:19 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:7 msgid "The event %{event} was updated by %{profile}." msgstr "Acara %{event} diperbarui oleh %{profile}." @@ -205,13 +208,15 @@ msgstr "%{member} bergabung ke kelompok." #, 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.text.eex:25 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:58 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:25 msgid "%{profile} posted a comment on the event %{event}." msgstr "%{profile} memposting komentar di acara %{event}." #, 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.text.eex:19 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:43 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:19 msgid "%{profile} replied to a comment on the event %{event}." msgstr "%{profile} membalas sebuah komentar di acara %{event}." @@ -229,7 +234,8 @@ msgstr[0] "Lihat %{count} aktivitas lagi" #, 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.text.eex:6 +#: lib/web/templates/email/email_direct_activity.html.heex:46 +#: 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!" msgid_plural "There has been some activity!" @@ -242,14 +248,17 @@ msgstr "Aktivitas di %{instance}" #, 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.text.eex:7 -#: lib/web/templates/email/email_anonymous_activity.html.heex:41 lib/web/templates/email/email_anonymous_activity.text.eex:5 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:19 +#: 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.text.eex:5 msgid "%{profile} has posted an announcement under event %{event}." msgstr "%{profile} memposting sebuah pengumuman di acara %{event}." #, 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.text.eex:1 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 msgid "%{profile} mentionned you in a comment under event %{event}." msgstr "" @@ -265,7 +274,8 @@ msgid "Here's your weekly activity recap" msgstr "" #, elixir-format -#: lib/web/email/activity.ex:119 lib/web/email/activity.ex:140 +#: lib/web/email/activity.ex:119 +#: lib/web/email/activity.ex:140 msgid "Activity notification for %{instance}" msgstr "" @@ -287,13 +297,15 @@ msgstr "" #, 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.text.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:51 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:19 msgid "%{profile} has posted a new comment under your event %{event}." msgstr "%{profile} memposting komentar baru di acara %{event} Anda." #, 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.text.eex:13 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:36 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:13 msgid "%{profile} has posted a new reply under your event %{event}." msgstr "%{profile} memposting balasan di acara %{event} Anda." diff --git a/priv/gettext/id/LC_MESSAGES/default.po b/priv/gettext/id/LC_MESSAGES/default.po index 43312e8a0..e88289c48 100644 --- a/priv/gettext/id/LC_MESSAGES/default.po +++ b/priv/gettext/id/LC_MESSAGES/default.po @@ -785,9 +785,12 @@ msgstr "" #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:63 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:133 -#: lib/web/templates/email/event_updated.text.eex:14 lib/web/templates/email/notification_each_week.html.heex:60 -#: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:60 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 +#: lib/web/templates/email/event_updated.html.heex:133 +#: lib/web/templates/email/event_updated.text.eex:14 +#: lib/web/templates/email/notification_each_week.html.heex:60 +#: lib/web/templates/email/notification_each_week.text.eex:11 +#: lib/web/templates/email/on_day_notification.html.heex:60 #: lib/web/templates/email/on_day_notification.text.eex:11 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." @@ -845,7 +848,6 @@ msgstr "" #, elixir-format #: lib/web/templates/email/email_changed_new.html.heex:38 -#: lib/web/templates/email/email_changed_new.text.eex:3 msgid "Hi there! It seems like you wanted to change the email address linked to your account on <b>%{instance}</b>. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." msgstr "" @@ -867,7 +869,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:70 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.heex:45 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 +#: lib/web/templates/email/registration_confirmation.html.heex:45 msgid "If you didn't trigger this email, you may safely ignore it." msgstr "" @@ -981,7 +984,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/email_anonymous_activity.html.heex:67 -#: lib/web/templates/email/event_participation_approved.html.heex:58 lib/web/templates/email/event_participation_confirmed.html.heex:58 +#: lib/web/templates/email/event_participation_approved.html.heex:58 +#: lib/web/templates/email/event_participation_confirmed.html.heex:58 msgid "Visit event page" msgstr "Kunjungi halaman acara" @@ -1003,7 +1007,8 @@ msgstr "Ada apa hari ini?" #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:70 -#: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.heex:70 +#: lib/web/templates/email/event_participation_approved.text.eex:11 +#: lib/web/templates/email/event_participation_confirmed.html.heex:70 #: lib/web/templates/email/event_participation_confirmed.text.eex:6 msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." msgstr "" @@ -1027,7 +1032,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:13 -#: lib/web/templates/email/event_participation_confirmed.html.heex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 +#: lib/web/templates/email/event_participation_confirmed.html.heex:13 +#: lib/web/templates/email/event_participation_confirmed.text.eex:1 msgid "You're going!" msgstr "Anda ikut!" @@ -1355,8 +1361,10 @@ msgid "This is a demonstration site to test Mobilizon." msgstr "" #, elixir-format -#: lib/service/metadata/actor.ex:91 lib/service/metadata/actor.ex:99 -#: lib/service/metadata/instance.ex:56 lib/service/metadata/instance.ex:62 +#: lib/service/metadata/actor.ex:91 +#: lib/service/metadata/actor.ex:99 +#: lib/service/metadata/instance.ex:56 +#: lib/service/metadata/instance.ex:62 msgid "%{name}'s feed" msgstr "" @@ -1437,7 +1445,8 @@ msgstr "" #. File name template for exported list of participants. Should NOT contain spaces. Make sure the output is going to be something standardized that is acceptable as a file name on most systems. #, elixir-format #: lib/service/export/participants/csv.ex:81 -#: lib/service/export/participants/ods.ex:86 lib/service/export/participants/pdf.ex:96 +#: lib/service/export/participants/ods.ex:86 +#: lib/service/export/participants/pdf.ex:96 msgid "%{event}_participants" msgstr "" @@ -1458,6 +1467,8 @@ msgstr "" #, elixir-format #: lib/service/export/participants/common.ex:52 +#: lib/web/templates/email/admin/_role.html.heex:3 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Administrator" msgstr "" @@ -1468,6 +1479,8 @@ msgstr "" #, elixir-format #: lib/service/export/participants/common.ex:49 +#: lib/web/templates/email/admin/_role.html.heex:5 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Moderator" msgstr "" @@ -1518,8 +1531,10 @@ msgstr "" #, elixir-format #: lib/web/templates/email/date/event_tz_date.html.heex:6 -#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 lib/web/templates/email/date/event_tz_date_range.html.heex:12 -#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:12 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 msgid "🌐 %{timezone} %{offset}" msgstr "" @@ -1706,3 +1721,137 @@ msgstr "" 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] "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:13 +#: lib/web/templates/email/admin_user_role_changed.text.eex:1 +msgid "An administrator changed your role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:120 +msgid "An administrator confirmed your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:1 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:1 +msgid "An administrator manually changed the email attached to your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:47 +#: lib/web/email/admin.ex:72 +msgid "An administrator manually changed the email attached to your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:13 +#: lib/web/templates/email/admin_user_confirmation.text.eex:1 +msgid "An administrator manually confirmed your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:98 +msgid "An administrator updated your role on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/email_changed_new.text.eex:3 +msgid "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:3 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually changed your account email from %{old_email} (this one) to %{new_email}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> (this one) to <b>%{new_email}</b>." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> to <b>%{new_email}</b> (this one)." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:71 +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:45 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:45 +#: lib/web/templates/email/admin_user_role_changed.html.heex:67 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods %{start_link}on the instance's about page%{end_link}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:7 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:4 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:4 +#: lib/web/templates/email/admin_user_role_changed.text.eex:8 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods on the instance's about page: %{about_page}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:58 +msgid "Login on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:55 +msgid "New role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:6 +msgid "New role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:47 +msgid "Old role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:5 +msgid "Old role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin/_role.html.heex:7 +#: lib/web/templates/email/admin/_role.text.eex:1 +msgid "User" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:45 +msgid "You may now login using your credentials on the service." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:5 +msgid "You may now login using your credentials on the service:" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just changed your account role." +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just changed your account role." +msgstr "" diff --git a/priv/gettext/id/LC_MESSAGES/errors.po b/priv/gettext/id/LC_MESSAGES/errors.po index 59dbadc81..1c7296d53 100644 --- a/priv/gettext/id/LC_MESSAGES/errors.po +++ b/priv/gettext/id/LC_MESSAGES/errors.po @@ -109,14 +109,19 @@ msgid "Error while saving user settings" msgstr "" #, elixir-format -#: lib/graphql/error.ex:99 lib/graphql/resolvers/group.ex:249 -#: lib/graphql/resolvers/group.ex:281 lib/graphql/resolvers/group.ex:318 lib/graphql/resolvers/group.ex:349 -#: lib/graphql/resolvers/group.ex:398 lib/graphql/resolvers/member.ex:81 +#: lib/graphql/error.ex:99 +#: lib/graphql/resolvers/group.ex:249 +#: lib/graphql/resolvers/group.ex:281 +#: lib/graphql/resolvers/group.ex:318 +#: lib/graphql/resolvers/group.ex:349 +#: lib/graphql/resolvers/group.ex:398 +#: lib/graphql/resolvers/member.ex:81 msgid "Group not found" msgstr "Kelompok tidak ditemukan" #, elixir-format -#: lib/graphql/resolvers/group.ex:78 lib/graphql/resolvers/group.ex:82 +#: lib/graphql/resolvers/group.ex:78 +#: lib/graphql/resolvers/group.ex:82 msgid "Group with ID %{id} not found" msgstr "Kelompok dengan ID %{id} tidak ditemukan" @@ -141,15 +146,21 @@ msgid "No user to validate with this email was found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:314 lib/graphql/resolvers/user.ex:298 +#: lib/graphql/resolvers/person.ex:314 +#: lib/graphql/resolvers/user.ex:298 msgid "No user with this email was found" msgstr "" #, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:32 lib/graphql/resolvers/participant.ex:210 lib/graphql/resolvers/person.ex:236 -#: lib/graphql/resolvers/person.ex:353 lib/graphql/resolvers/person.ex:380 lib/graphql/resolvers/person.ex:397 -#: lib/graphql/resolvers/person.ex:425 lib/graphql/resolvers/person.ex:440 +#: lib/graphql/resolvers/participant.ex:32 +#: lib/graphql/resolvers/participant.ex:210 +#: lib/graphql/resolvers/person.ex:236 +#: lib/graphql/resolvers/person.ex:353 +#: lib/graphql/resolvers/person.ex:380 +#: lib/graphql/resolvers/person.ex:397 +#: lib/graphql/resolvers/person.ex:425 +#: lib/graphql/resolvers/person.ex:440 msgid "Profile is not owned by authenticated user" msgstr "" @@ -164,11 +175,13 @@ msgid "The current password is invalid" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:341 #: lib/graphql/resolvers/user.ex:472 msgid "The new email doesn't seem to be valid" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:344 #: lib/graphql/resolvers/user.ex:475 msgid "The new email must be different" msgstr "" @@ -179,7 +192,8 @@ msgid "The new password must be different" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:479 lib/graphql/resolvers/user.ex:541 +#: lib/graphql/resolvers/user.ex:479 +#: lib/graphql/resolvers/user.ex:541 #: lib/graphql/resolvers/user.ex:544 msgid "The password provided is invalid" msgstr "" @@ -200,7 +214,8 @@ msgid "This user has been disabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:252 lib/graphql/resolvers/user.ex:257 +#: lib/graphql/resolvers/user.ex:252 +#: lib/graphql/resolvers/user.ex:257 msgid "Unable to validate user" msgstr "" @@ -275,7 +290,8 @@ msgid "You need to have an existing token to get a refresh token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:276 lib/graphql/resolvers/user.ex:301 +#: lib/graphql/resolvers/user.ex:276 +#: lib/graphql/resolvers/user.ex:301 msgid "You requested again a confirmation email too soon" msgstr "" @@ -295,7 +311,8 @@ msgid "No profile found with this ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:97 +#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:97 msgid "No remote profile found with this ID" msgstr "" @@ -346,17 +363,19 @@ msgid "Comment is already deleted" msgstr "" #, elixir-format -#: lib/graphql/error.ex:101 lib/graphql/resolvers/discussion.ex:69 +#: lib/graphql/error.ex:101 +#: lib/graphql/resolvers/discussion.ex:69 msgid "Discussion not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:63 lib/graphql/resolvers/report.ex:82 +#: lib/graphql/resolvers/report.ex:71 +#: lib/graphql/resolvers/report.ex:90 msgid "Error while saving report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:102 +#: lib/graphql/resolvers/report.ex:110 msgid "Error while updating report" msgstr "" @@ -366,14 +385,16 @@ msgid "Event id not found" msgstr "" #, elixir-format -#: lib/graphql/error.ex:98 lib/graphql/resolvers/event.ex:360 +#: lib/graphql/error.ex:98 +#: lib/graphql/resolvers/event.ex:360 #: lib/graphql/resolvers/event.ex:412 msgid "Event not found" msgstr "" #, elixir-format #: lib/graphql/resolvers/participant.ex:87 -#: lib/graphql/resolvers/participant.ex:128 lib/graphql/resolvers/participant.ex:155 +#: lib/graphql/resolvers/participant.ex:128 +#: lib/graphql/resolvers/participant.ex:155 #: lib/graphql/resolvers/participant.ex:336 msgid "Event with this ID %{id} doesn't exist" msgstr "" @@ -389,8 +410,11 @@ msgid "No discussion with ID %{id}" msgstr "" #, elixir-format -#: lib/graphql/resolvers/todos.ex:80 lib/graphql/resolvers/todos.ex:107 -#: lib/graphql/resolvers/todos.ex:179 lib/graphql/resolvers/todos.ex:208 lib/graphql/resolvers/todos.ex:237 +#: lib/graphql/resolvers/todos.ex:80 +#: lib/graphql/resolvers/todos.ex:107 +#: lib/graphql/resolvers/todos.ex:179 +#: lib/graphql/resolvers/todos.ex:208 +#: lib/graphql/resolvers/todos.ex:237 msgid "No profile found for user" msgstr "" @@ -406,7 +430,8 @@ msgstr "" #, elixir-format #: lib/graphql/resolvers/participant.ex:187 -#: lib/graphql/resolvers/participant.ex:220 lib/graphql/resolvers/participant.ex:263 +#: lib/graphql/resolvers/participant.ex:220 +#: lib/graphql/resolvers/participant.ex:263 msgid "Participant not found" msgstr "" @@ -421,12 +446,14 @@ msgid "Person with username %{username} not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:169 lib/graphql/resolvers/post.ex:203 +#: lib/graphql/resolvers/post.ex:169 +#: lib/graphql/resolvers/post.ex:203 msgid "Post ID is not a valid ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:172 lib/graphql/resolvers/post.ex:206 +#: lib/graphql/resolvers/post.ex:172 +#: lib/graphql/resolvers/post.ex:206 msgid "Post doesn't exist" msgstr "" @@ -436,31 +463,42 @@ msgid "Profile invited doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/member.ex:93 lib/graphql/resolvers/member.ex:97 +#: lib/graphql/resolvers/member.ex:93 +#: lib/graphql/resolvers/member.ex:97 msgid "Profile is already a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:133 lib/graphql/resolvers/post.ex:175 -#: lib/graphql/resolvers/post.ex:209 lib/graphql/resolvers/resource.ex:90 lib/graphql/resolvers/resource.ex:132 -#: lib/graphql/resolvers/resource.ex:165 lib/graphql/resolvers/resource.ex:199 lib/graphql/resolvers/todos.ex:58 -#: lib/graphql/resolvers/todos.ex:83 lib/graphql/resolvers/todos.ex:110 lib/graphql/resolvers/todos.ex:182 -#: lib/graphql/resolvers/todos.ex:214 lib/graphql/resolvers/todos.ex:246 +#: lib/graphql/resolvers/post.ex:133 +#: lib/graphql/resolvers/post.ex:175 +#: lib/graphql/resolvers/post.ex:209 +#: lib/graphql/resolvers/resource.ex:90 +#: lib/graphql/resolvers/resource.ex:132 +#: lib/graphql/resolvers/resource.ex:165 +#: lib/graphql/resolvers/resource.ex:199 +#: lib/graphql/resolvers/todos.ex:58 +#: lib/graphql/resolvers/todos.ex:83 +#: lib/graphql/resolvers/todos.ex:110 +#: lib/graphql/resolvers/todos.ex:182 +#: lib/graphql/resolvers/todos.ex:214 +#: lib/graphql/resolvers/todos.ex:246 msgid "Profile is not member of group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/person.ex:233 +#: lib/graphql/resolvers/actor.ex:67 +#: lib/graphql/resolvers/person.ex:233 msgid "Profile not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:40 +#: lib/graphql/resolvers/report.ex:48 msgid "Report not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/resource.ex:169 lib/graphql/resolvers/resource.ex:196 +#: lib/graphql/resolvers/resource.ex:169 +#: lib/graphql/resolvers/resource.ex:196 msgid "Resource doesn't exist" msgstr "" @@ -475,12 +513,14 @@ msgid "This token is invalid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/todos.ex:176 lib/graphql/resolvers/todos.ex:243 +#: lib/graphql/resolvers/todos.ex:176 +#: lib/graphql/resolvers/todos.ex:243 msgid "Todo doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/todos.ex:77 lib/graphql/resolvers/todos.ex:211 +#: lib/graphql/resolvers/todos.ex:77 +#: lib/graphql/resolvers/todos.ex:211 #: lib/graphql/resolvers/todos.ex:240 msgid "Todo list doesn't exist" msgstr "" @@ -491,12 +531,13 @@ msgid "Token does not exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70 +#: lib/graphql/resolvers/feed_token.ex:67 +#: lib/graphql/resolvers/feed_token.ex:70 msgid "Token is not a valid UUID" msgstr "" #, elixir-format -#: lib/graphql/error.ex:96 lib/graphql/resolvers/person.ex:458 +#: lib/graphql/error.ex:96 msgid "User not found" msgstr "" @@ -516,7 +557,8 @@ msgid "You are not a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/member.ex:157 lib/graphql/resolvers/member.ex:173 +#: lib/graphql/resolvers/member.ex:157 +#: lib/graphql/resolvers/member.ex:173 #: lib/graphql/resolvers/member.ex:188 msgid "You are not a moderator or admin for this group" msgstr "" @@ -578,37 +620,37 @@ msgid "You don't have permission to delete this token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:54 +#: lib/graphql/resolvers/admin.ex:56 msgid "You need to be logged-in and a moderator to list action logs" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:28 +#: lib/graphql/resolvers/report.ex:36 msgid "You need to be logged-in and a moderator to list reports" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:107 +#: lib/graphql/resolvers/report.ex:115 msgid "You need to be logged-in and a moderator to update a report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:45 +#: lib/graphql/resolvers/report.ex:53 msgid "You need to be logged-in and a moderator to view a report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:255 +#: lib/graphql/resolvers/admin.ex:257 msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:239 +#: lib/graphql/resolvers/admin.ex:241 msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:281 +#: lib/graphql/resolvers/admin.ex:283 msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" @@ -633,7 +675,7 @@ msgid "You need to be logged-in to create posts" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:79 +#: lib/graphql/resolvers/report.ex:87 msgid "You need to be logged-in to create reports" msgstr "" @@ -728,7 +770,8 @@ msgid "Reset your password to login" msgstr "" #, elixir-format -#: lib/graphql/error.ex:95 lib/graphql/error.ex:100 +#: lib/graphql/error.ex:95 +#: lib/graphql/error.ex:100 msgid "Resource not found" msgstr "" @@ -818,8 +861,11 @@ msgid "Profile ID provided is not the anonymous profile one" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:161 lib/graphql/resolvers/group.ex:203 -#: lib/graphql/resolvers/person.ex:148 lib/graphql/resolvers/person.ex:182 lib/graphql/resolvers/person.ex:304 +#: lib/graphql/resolvers/group.ex:161 +#: lib/graphql/resolvers/group.ex:203 +#: lib/graphql/resolvers/person.ex:148 +#: lib/graphql/resolvers/person.ex:182 +#: lib/graphql/resolvers/person.ex:304 msgid "The provided picture is too heavy" msgstr "" @@ -844,7 +890,8 @@ msgid "Unable to fetch resource details from this URL." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:164 lib/graphql/resolvers/participant.ex:253 +#: lib/graphql/resolvers/event.ex:164 +#: lib/graphql/resolvers/participant.ex:253 #: lib/graphql/resolvers/participant.ex:328 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "" @@ -895,6 +942,7 @@ msgid "Failed to update the group" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:338 #: lib/graphql/resolvers/user.ex:469 msgid "Failed to update user email" msgstr "" @@ -1023,3 +1071,23 @@ msgstr "" #: lib/graphql/resolvers/user.ex:157 msgid "Your email seems to be using an invalid format" msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:387 +msgid "Can't confirm an already confirmed user" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:391 +msgid "Deconfirming users is not supported" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:363 +msgid "The new role must be different" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:314 +msgid "You need to be logged-in and an administrator to edit an user's details" +msgstr "" diff --git a/priv/gettext/it/LC_MESSAGES/activity.po b/priv/gettext/it/LC_MESSAGES/activity.po index 9b1814bd9..01ae966b5 100644 --- a/priv/gettext/it/LC_MESSAGES/activity.po +++ b/priv/gettext/it/LC_MESSAGES/activity.po @@ -151,19 +151,22 @@ msgstr "" #, 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.text.eex:1 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:1 msgid "The event %{event} was created by %{profile}." msgstr "" #, 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.text.eex:13 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:34 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:13 msgid "The event %{event} was deleted by %{profile}." msgstr "" #, 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.text.eex:7 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:19 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:7 msgid "The event %{event} was updated by %{profile}." msgstr "" @@ -193,13 +196,15 @@ msgstr "" #, 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.text.eex:25 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:58 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:25 msgid "%{profile} posted a comment on the event %{event}." msgstr "" #, 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.text.eex:19 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:43 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:19 msgid "%{profile} replied to a comment on the event %{event}." msgstr "" @@ -218,7 +223,8 @@ 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.text.eex:6 +#: lib/web/templates/email/email_direct_activity.html.heex:46 +#: 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!" msgid_plural "There has been some activity!" @@ -232,14 +238,17 @@ msgstr "" #, 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.text.eex:7 -#: lib/web/templates/email/email_anonymous_activity.html.heex:41 lib/web/templates/email/email_anonymous_activity.text.eex:5 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:19 +#: 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.text.eex:5 msgid "%{profile} has posted an announcement under event %{event}." msgstr "" #, 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.text.eex:1 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 msgid "%{profile} mentionned you in a comment under event %{event}." msgstr "" @@ -255,7 +264,8 @@ msgid "Here's your weekly activity recap" msgstr "" #, elixir-format -#: lib/web/email/activity.ex:119 lib/web/email/activity.ex:140 +#: lib/web/email/activity.ex:119 +#: lib/web/email/activity.ex:140 msgid "Activity notification for %{instance}" msgstr "" @@ -277,13 +287,15 @@ msgstr "" #, 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.text.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:51 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:19 msgid "%{profile} has posted a new comment under your event %{event}." msgstr "" #, 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.text.eex:13 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:36 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:13 msgid "%{profile} has posted a new reply under your event %{event}." msgstr "" diff --git a/priv/gettext/it/LC_MESSAGES/default.po b/priv/gettext/it/LC_MESSAGES/default.po index e19d75574..c4c2df128 100644 --- a/priv/gettext/it/LC_MESSAGES/default.po +++ b/priv/gettext/it/LC_MESSAGES/default.po @@ -940,9 +940,12 @@ msgstr "Si prega di non usarlo per scopi reali." #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:63 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:133 -#: lib/web/templates/email/event_updated.text.eex:14 lib/web/templates/email/notification_each_week.html.heex:60 -#: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:60 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 +#: lib/web/templates/email/event_updated.html.heex:133 +#: lib/web/templates/email/event_updated.text.eex:14 +#: lib/web/templates/email/notification_each_week.html.heex:60 +#: lib/web/templates/email/notification_each_week.text.eex:11 +#: lib/web/templates/email/on_day_notification.html.heex:60 #: lib/web/templates/email/on_day_notification.text.eex:11 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." @@ -1009,7 +1012,6 @@ msgstr "" #, elixir-format #: lib/web/templates/email/email_changed_new.html.heex:38 -#: lib/web/templates/email/email_changed_new.text.eex:3 msgid "Hi there! It seems like you wanted to change the email address linked to your account on <b>%{instance}</b>. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." msgstr "" "Ciao! Sembra che tu volessi modificare l'indirizzo email collegato al tuo " @@ -1043,7 +1045,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:70 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.heex:45 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 +#: lib/web/templates/email/registration_confirmation.html.heex:45 msgid "If you didn't trigger this email, you may safely ignore it." msgstr "Se non hai attivato questa email, puoi tranquillamente ignorarla." @@ -1164,7 +1167,8 @@ msgstr "Visualizza la segnalazione:" #, elixir-format #: lib/web/templates/email/email_anonymous_activity.html.heex:67 -#: lib/web/templates/email/event_participation_approved.html.heex:58 lib/web/templates/email/event_participation_confirmed.html.heex:58 +#: lib/web/templates/email/event_participation_approved.html.heex:58 +#: lib/web/templates/email/event_participation_confirmed.html.heex:58 msgid "Visit event page" msgstr "Visualizza la pagina dell'evento" @@ -1186,7 +1190,8 @@ msgstr "Cosa succede oggi?" #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:70 -#: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.heex:70 +#: lib/web/templates/email/event_participation_approved.text.eex:11 +#: lib/web/templates/email/event_participation_confirmed.html.heex:70 #: lib/web/templates/email/event_participation_confirmed.text.eex:6 msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." msgstr "" @@ -1217,7 +1222,8 @@ msgstr "Di recente hai richiesto di partecipare a %{title}." #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:13 -#: lib/web/templates/email/event_participation_confirmed.html.heex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 +#: lib/web/templates/email/event_participation_confirmed.html.heex:13 +#: lib/web/templates/email/event_participation_confirmed.text.eex:1 msgid "You're going!" msgstr "Ce l'hai fatta!" @@ -1652,8 +1658,10 @@ msgid "This is a demonstration site to test Mobilizon." msgstr "Questo è un sito di prova per testare Mobilizon." #, elixir-format -#: lib/service/metadata/actor.ex:91 lib/service/metadata/actor.ex:99 -#: lib/service/metadata/instance.ex:56 lib/service/metadata/instance.ex:62 +#: lib/service/metadata/actor.ex:91 +#: lib/service/metadata/actor.ex:99 +#: lib/service/metadata/instance.ex:56 +#: lib/service/metadata/instance.ex:62 msgid "%{name}'s feed" msgstr "Flusso di %{name}" @@ -1741,7 +1749,8 @@ msgstr "La tua partecipazione all'evento %{title} è stata confermata" #. File name template for exported list of participants. Should NOT contain spaces. Make sure the output is going to be something standardized that is acceptable as a file name on most systems. #, elixir-format #: lib/service/export/participants/csv.ex:81 -#: lib/service/export/participants/ods.ex:86 lib/service/export/participants/pdf.ex:96 +#: lib/service/export/participants/ods.ex:86 +#: lib/service/export/participants/pdf.ex:96 msgid "%{event}_participants" msgstr "" @@ -1762,6 +1771,8 @@ msgstr "" #, elixir-format #: lib/service/export/participants/common.ex:52 +#: lib/web/templates/email/admin/_role.html.heex:3 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Administrator" msgstr "" @@ -1772,6 +1783,8 @@ msgstr "" #, elixir-format #: lib/service/export/participants/common.ex:49 +#: lib/web/templates/email/admin/_role.html.heex:5 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Moderator" msgstr "" @@ -1822,8 +1835,10 @@ msgstr "" #, elixir-format #: lib/web/templates/email/date/event_tz_date.html.heex:6 -#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 lib/web/templates/email/date/event_tz_date_range.html.heex:12 -#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:12 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 msgid "🌐 %{timezone} %{offset}" msgstr "" @@ -2013,3 +2028,141 @@ msgstr[0] "Hai una richiesta di partecipazione in sospeso da esaminare:" msgstr[1] "" "Hai %{number_participation_requests} richieste di partecipazione in sospeso " "da esaminare:" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:13 +#: lib/web/templates/email/admin_user_role_changed.text.eex:1 +msgid "An administrator changed your role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:120 +msgid "An administrator confirmed your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:1 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:1 +msgid "An administrator manually changed the email attached to your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:47 +#: lib/web/email/admin.ex:72 +msgid "An administrator manually changed the email attached to your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:13 +#: lib/web/templates/email/admin_user_confirmation.text.eex:1 +msgid "An administrator manually confirmed your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:98 +msgid "An administrator updated your role on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/email_changed_new.text.eex:3 +msgid "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." +msgstr "" +"Ciao! Sembra che tu volessi modificare l'indirizzo email collegato al tuo " +"account su <b>% {instance} </b>. Se desideri ancora farlo, fai clic sul " +"pulsante in basso per confermare la modifica. Potrai quindi accedere a% " +"{instance} con questo nuovo indirizzo email." + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:3 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually changed your account email from %{old_email} (this one) to %{new_email}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> (this one) to <b>%{new_email}</b>." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> to <b>%{new_email}</b> (this one)." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:71 +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:45 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:45 +#: lib/web/templates/email/admin_user_role_changed.html.heex:67 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods %{start_link}on the instance's about page%{end_link}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:7 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:4 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:4 +#: lib/web/templates/email/admin_user_role_changed.text.eex:8 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods on the instance's about page: %{about_page}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:58 +msgid "Login on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:55 +msgid "New role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:6 +msgid "New role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:47 +msgid "Old role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:5 +msgid "Old role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin/_role.html.heex:7 +#: lib/web/templates/email/admin/_role.text.eex:1 +msgid "User" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:45 +msgid "You may now login using your credentials on the service." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:5 +msgid "You may now login using your credentials on the service:" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just changed your account role." +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just changed your account role." +msgstr "" diff --git a/priv/gettext/it/LC_MESSAGES/errors.po b/priv/gettext/it/LC_MESSAGES/errors.po index 757279edb..1940b912f 100644 --- a/priv/gettext/it/LC_MESSAGES/errors.po +++ b/priv/gettext/it/LC_MESSAGES/errors.po @@ -115,14 +115,19 @@ msgid "Error while saving user settings" msgstr "Errore nel salvare le preferenze utente" #, elixir-format -#: lib/graphql/error.ex:99 lib/graphql/resolvers/group.ex:249 -#: lib/graphql/resolvers/group.ex:281 lib/graphql/resolvers/group.ex:318 lib/graphql/resolvers/group.ex:349 -#: lib/graphql/resolvers/group.ex:398 lib/graphql/resolvers/member.ex:81 +#: lib/graphql/error.ex:99 +#: lib/graphql/resolvers/group.ex:249 +#: lib/graphql/resolvers/group.ex:281 +#: lib/graphql/resolvers/group.ex:318 +#: lib/graphql/resolvers/group.ex:349 +#: lib/graphql/resolvers/group.ex:398 +#: lib/graphql/resolvers/member.ex:81 msgid "Group not found" msgstr "Gruppo non trovato" #, elixir-format -#: lib/graphql/resolvers/group.ex:78 lib/graphql/resolvers/group.ex:82 +#: lib/graphql/resolvers/group.ex:78 +#: lib/graphql/resolvers/group.ex:82 msgid "Group with ID %{id} not found" msgstr "Gruppo con ID %{id} non trovato" @@ -147,15 +152,21 @@ msgid "No user to validate with this email was found" msgstr "Nessun utente da convalidare trovato con questa email" #, elixir-format -#: lib/graphql/resolvers/person.ex:314 lib/graphql/resolvers/user.ex:298 +#: lib/graphql/resolvers/person.ex:314 +#: lib/graphql/resolvers/user.ex:298 msgid "No user with this email was found" msgstr "Nessun utente con questa email" #, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:32 lib/graphql/resolvers/participant.ex:210 lib/graphql/resolvers/person.ex:236 -#: lib/graphql/resolvers/person.ex:353 lib/graphql/resolvers/person.ex:380 lib/graphql/resolvers/person.ex:397 -#: lib/graphql/resolvers/person.ex:425 lib/graphql/resolvers/person.ex:440 +#: lib/graphql/resolvers/participant.ex:32 +#: lib/graphql/resolvers/participant.ex:210 +#: lib/graphql/resolvers/person.ex:236 +#: lib/graphql/resolvers/person.ex:353 +#: lib/graphql/resolvers/person.ex:380 +#: lib/graphql/resolvers/person.ex:397 +#: lib/graphql/resolvers/person.ex:425 +#: lib/graphql/resolvers/person.ex:440 msgid "Profile is not owned by authenticated user" msgstr "L'utente autenticato non è propietario di questo profilo" @@ -170,11 +181,13 @@ msgid "The current password is invalid" msgstr "la password corrente non è valida" #, elixir-format +#: lib/graphql/resolvers/admin.ex:341 #: lib/graphql/resolvers/user.ex:472 msgid "The new email doesn't seem to be valid" msgstr "La nuova email sembra non valida" #, elixir-format +#: lib/graphql/resolvers/admin.ex:344 #: lib/graphql/resolvers/user.ex:475 msgid "The new email must be different" msgstr "La nuova email dev'essere diversa" @@ -185,7 +198,8 @@ msgid "The new password must be different" msgstr "La nuova password deve essere diversa" #, elixir-format -#: lib/graphql/resolvers/user.ex:479 lib/graphql/resolvers/user.ex:541 +#: lib/graphql/resolvers/user.ex:479 +#: lib/graphql/resolvers/user.ex:541 #: lib/graphql/resolvers/user.ex:544 msgid "The password provided is invalid" msgstr "La password assegnata non è valida" @@ -206,7 +220,8 @@ msgid "This user has been disabled" msgstr "L'utente è stato disabilitato" #, elixir-format -#: lib/graphql/resolvers/user.ex:252 lib/graphql/resolvers/user.ex:257 +#: lib/graphql/resolvers/user.ex:252 +#: lib/graphql/resolvers/user.ex:257 msgid "Unable to validate user" msgstr "Impossibile convalidare l'utente" @@ -283,7 +298,8 @@ msgstr "" "aggiornamento" #, elixir-format -#: lib/graphql/resolvers/user.ex:276 lib/graphql/resolvers/user.ex:301 +#: lib/graphql/resolvers/user.ex:276 +#: lib/graphql/resolvers/user.ex:301 msgid "You requested again a confirmation email too soon" msgstr "Hai richiesto di nuovo un'e-mail di conferma troppo presto" @@ -303,7 +319,8 @@ msgid "No profile found with this ID" msgstr "Nessun profilo trovato con questo ID" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:97 +#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:97 msgid "No remote profile found with this ID" msgstr "Nessun profilo remoto trovato con questo ID" @@ -354,17 +371,19 @@ msgid "Comment is already deleted" msgstr "Commento già cancellato" #, elixir-format -#: lib/graphql/error.ex:101 lib/graphql/resolvers/discussion.ex:69 +#: lib/graphql/error.ex:101 +#: lib/graphql/resolvers/discussion.ex:69 msgid "Discussion not found" msgstr "Discussione non trovata" #, elixir-format -#: lib/graphql/resolvers/report.ex:63 lib/graphql/resolvers/report.ex:82 +#: lib/graphql/resolvers/report.ex:71 +#: lib/graphql/resolvers/report.ex:90 msgid "Error while saving report" msgstr "Errore nel salvare la segnalazione" #, elixir-format -#: lib/graphql/resolvers/report.ex:102 +#: lib/graphql/resolvers/report.ex:110 msgid "Error while updating report" msgstr "Errore durante l'aggiornamento del rapporto" @@ -374,14 +393,16 @@ msgid "Event id not found" msgstr "ID evento non trovato" #, elixir-format -#: lib/graphql/error.ex:98 lib/graphql/resolvers/event.ex:360 +#: lib/graphql/error.ex:98 +#: lib/graphql/resolvers/event.ex:360 #: lib/graphql/resolvers/event.ex:412 msgid "Event not found" msgstr "Evento non trovato" #, elixir-format #: lib/graphql/resolvers/participant.ex:87 -#: lib/graphql/resolvers/participant.ex:128 lib/graphql/resolvers/participant.ex:155 +#: lib/graphql/resolvers/participant.ex:128 +#: lib/graphql/resolvers/participant.ex:155 #: lib/graphql/resolvers/participant.ex:336 msgid "Event with this ID %{id} doesn't exist" msgstr "L'evento con questo ID %{id} non esiste" @@ -397,8 +418,11 @@ msgid "No discussion with ID %{id}" msgstr "Nessuna discussione con l'ID %{id}" #, elixir-format -#: lib/graphql/resolvers/todos.ex:80 lib/graphql/resolvers/todos.ex:107 -#: lib/graphql/resolvers/todos.ex:179 lib/graphql/resolvers/todos.ex:208 lib/graphql/resolvers/todos.ex:237 +#: lib/graphql/resolvers/todos.ex:80 +#: lib/graphql/resolvers/todos.ex:107 +#: lib/graphql/resolvers/todos.ex:179 +#: lib/graphql/resolvers/todos.ex:208 +#: lib/graphql/resolvers/todos.ex:237 msgid "No profile found for user" msgstr "Nessuno profilo trovato per l'utente" @@ -414,7 +438,8 @@ msgstr "Il partecipante ha già il ruolo %{role}" #, elixir-format #: lib/graphql/resolvers/participant.ex:187 -#: lib/graphql/resolvers/participant.ex:220 lib/graphql/resolvers/participant.ex:263 +#: lib/graphql/resolvers/participant.ex:220 +#: lib/graphql/resolvers/participant.ex:263 msgid "Participant not found" msgstr "Partecipante non trovato" @@ -429,12 +454,14 @@ msgid "Person with username %{username} not found" msgstr "La persona con il nome utente %{username} non è stata trovata" #, elixir-format -#: lib/graphql/resolvers/post.ex:169 lib/graphql/resolvers/post.ex:203 +#: lib/graphql/resolvers/post.ex:169 +#: lib/graphql/resolvers/post.ex:203 msgid "Post ID is not a valid ID" msgstr "L'ID del post non è un ID valido" #, elixir-format -#: lib/graphql/resolvers/post.ex:172 lib/graphql/resolvers/post.ex:206 +#: lib/graphql/resolvers/post.ex:172 +#: lib/graphql/resolvers/post.ex:206 msgid "Post doesn't exist" msgstr "Il post non esiste" @@ -444,31 +471,42 @@ msgid "Profile invited doesn't exist" msgstr "Il profilo invitato non esiste" #, elixir-format -#: lib/graphql/resolvers/member.ex:93 lib/graphql/resolvers/member.ex:97 +#: lib/graphql/resolvers/member.ex:93 +#: lib/graphql/resolvers/member.ex:97 msgid "Profile is already a member of this group" msgstr "Il profilo è già un membro diquesto gruppo" #, elixir-format -#: lib/graphql/resolvers/post.ex:133 lib/graphql/resolvers/post.ex:175 -#: lib/graphql/resolvers/post.ex:209 lib/graphql/resolvers/resource.ex:90 lib/graphql/resolvers/resource.ex:132 -#: lib/graphql/resolvers/resource.ex:165 lib/graphql/resolvers/resource.ex:199 lib/graphql/resolvers/todos.ex:58 -#: lib/graphql/resolvers/todos.ex:83 lib/graphql/resolvers/todos.ex:110 lib/graphql/resolvers/todos.ex:182 -#: lib/graphql/resolvers/todos.ex:214 lib/graphql/resolvers/todos.ex:246 +#: lib/graphql/resolvers/post.ex:133 +#: lib/graphql/resolvers/post.ex:175 +#: lib/graphql/resolvers/post.ex:209 +#: lib/graphql/resolvers/resource.ex:90 +#: lib/graphql/resolvers/resource.ex:132 +#: lib/graphql/resolvers/resource.ex:165 +#: lib/graphql/resolvers/resource.ex:199 +#: lib/graphql/resolvers/todos.ex:58 +#: lib/graphql/resolvers/todos.ex:83 +#: lib/graphql/resolvers/todos.ex:110 +#: lib/graphql/resolvers/todos.ex:182 +#: lib/graphql/resolvers/todos.ex:214 +#: lib/graphql/resolvers/todos.ex:246 msgid "Profile is not member of group" msgstr "Il profilo non è membro del gruppo" #, elixir-format -#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/person.ex:233 +#: lib/graphql/resolvers/actor.ex:67 +#: lib/graphql/resolvers/person.ex:233 msgid "Profile not found" msgstr "Profilo non trovato" #, elixir-format -#: lib/graphql/resolvers/report.ex:40 +#: lib/graphql/resolvers/report.ex:48 msgid "Report not found" msgstr "Segnalazione non trovata" #, elixir-format -#: lib/graphql/resolvers/resource.ex:169 lib/graphql/resolvers/resource.ex:196 +#: lib/graphql/resolvers/resource.ex:169 +#: lib/graphql/resolvers/resource.ex:196 msgid "Resource doesn't exist" msgstr "La risorsa non esiste" @@ -483,12 +521,14 @@ msgid "This token is invalid" msgstr "Questo token non è valido" #, elixir-format -#: lib/graphql/resolvers/todos.ex:176 lib/graphql/resolvers/todos.ex:243 +#: lib/graphql/resolvers/todos.ex:176 +#: lib/graphql/resolvers/todos.ex:243 msgid "Todo doesn't exist" msgstr "L'elemento to-do non esiste" #, elixir-format -#: lib/graphql/resolvers/todos.ex:77 lib/graphql/resolvers/todos.ex:211 +#: lib/graphql/resolvers/todos.ex:77 +#: lib/graphql/resolvers/todos.ex:211 #: lib/graphql/resolvers/todos.ex:240 msgid "Todo list doesn't exist" msgstr "la lista non esiste" @@ -499,12 +539,13 @@ msgid "Token does not exist" msgstr "Il token non esiste" #, elixir-format -#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70 +#: lib/graphql/resolvers/feed_token.ex:67 +#: lib/graphql/resolvers/feed_token.ex:70 msgid "Token is not a valid UUID" msgstr "Il token non è un UUID valido" #, elixir-format -#: lib/graphql/error.ex:96 lib/graphql/resolvers/person.ex:458 +#: lib/graphql/error.ex:96 msgid "User not found" msgstr "Utente non trovato" @@ -524,7 +565,8 @@ msgid "You are not a member of this group" msgstr "Non sei un membro di questo gruppo" #, elixir-format -#: lib/graphql/resolvers/member.ex:157 lib/graphql/resolvers/member.ex:173 +#: lib/graphql/resolvers/member.ex:157 +#: lib/graphql/resolvers/member.ex:173 #: lib/graphql/resolvers/member.ex:188 msgid "You are not a moderator or admin for this group" msgstr "Non sei un moderatore o amministratore di questo gruppo" @@ -589,41 +631,41 @@ msgid "You don't have permission to delete this token" msgstr "Non hai il permesso di cancellare questo token" #, elixir-format -#: lib/graphql/resolvers/admin.ex:54 +#: lib/graphql/resolvers/admin.ex:56 msgid "You need to be logged-in and a moderator to list action logs" msgstr "Devi essere connesso e un moderatore per elencare i log delle azioni" #, elixir-format -#: lib/graphql/resolvers/report.ex:28 +#: lib/graphql/resolvers/report.ex:36 msgid "You need to be logged-in and a moderator to list reports" msgstr "Devi essere connesso e un moderatore per elencare i rapporti" #, elixir-format -#: lib/graphql/resolvers/report.ex:107 +#: lib/graphql/resolvers/report.ex:115 msgid "You need to be logged-in and a moderator to update a report" msgstr "Devi essere connesso e un moderatore per aggiornare un rapporto" #, elixir-format -#: lib/graphql/resolvers/report.ex:45 +#: lib/graphql/resolvers/report.ex:53 msgid "You need to be logged-in and a moderator to view a report" msgstr "Devi essere connesso e un moderatore per visualizzare un rapporto" #, elixir-format -#: lib/graphql/resolvers/admin.ex:255 +#: lib/graphql/resolvers/admin.ex:257 msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" "Devi essere connesso e un moderatore per accedere alle opzioni " "dell'amministratore" #, elixir-format -#: lib/graphql/resolvers/admin.ex:239 +#: lib/graphql/resolvers/admin.ex:241 msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" "Devi essere connesso e un moderatore per accedere alle statistiche del " "dashboard" #, elixir-format -#: lib/graphql/resolvers/admin.ex:281 +#: lib/graphql/resolvers/admin.ex:283 msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" "Devi essere connesso e un moderatore per salvare le impostazioni " @@ -650,7 +692,7 @@ msgid "You need to be logged-in to create posts" msgstr "Devi essere connesso per creare dei post" #, elixir-format -#: lib/graphql/resolvers/report.ex:79 +#: lib/graphql/resolvers/report.ex:87 msgid "You need to be logged-in to create reports" msgstr "Devi essere connesso per creare rapporti" @@ -747,7 +789,8 @@ msgid "Reset your password to login" msgstr "Reimposta la tua password per connetterti" #, elixir-format -#: lib/graphql/error.ex:95 lib/graphql/error.ex:100 +#: lib/graphql/error.ex:95 +#: lib/graphql/error.ex:100 msgid "Resource not found" msgstr "Segnalazione non trovata" @@ -839,8 +882,11 @@ msgid "Profile ID provided is not the anonymous profile one" msgstr "L'ID profilo fornito non è quello del profilo anonimo" #, elixir-format -#: lib/graphql/resolvers/group.ex:161 lib/graphql/resolvers/group.ex:203 -#: lib/graphql/resolvers/person.ex:148 lib/graphql/resolvers/person.ex:182 lib/graphql/resolvers/person.ex:304 +#: lib/graphql/resolvers/group.ex:161 +#: lib/graphql/resolvers/group.ex:203 +#: lib/graphql/resolvers/person.ex:148 +#: lib/graphql/resolvers/person.ex:182 +#: lib/graphql/resolvers/person.ex:304 msgid "The provided picture is too heavy" msgstr "L'immagine inserita è troppo pesante" @@ -865,7 +911,8 @@ msgid "Unable to fetch resource details from this URL." msgstr "Impossibile recuperare i dettagli della risorsa da questa URL." #, elixir-format -#: lib/graphql/resolvers/event.ex:164 lib/graphql/resolvers/participant.ex:253 +#: lib/graphql/resolvers/event.ex:164 +#: lib/graphql/resolvers/participant.ex:253 #: lib/graphql/resolvers/participant.ex:328 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "" @@ -918,6 +965,7 @@ msgid "Failed to update the group" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:338 #: lib/graphql/resolvers/user.ex:469 msgid "Failed to update user email" msgstr "" @@ -1046,3 +1094,25 @@ msgstr "" #: lib/graphql/resolvers/user.ex:157 msgid "Your email seems to be using an invalid format" msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:387 +msgid "Can't confirm an already confirmed user" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:391 +msgid "Deconfirming users is not supported" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:363 +msgid "The new role must be different" +msgstr "La nuova email dev'essere diversa" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:314 +msgid "You need to be logged-in and an administrator to edit an user's details" +msgstr "" +"Devi essere connesso e un moderatore per salvare le impostazioni " +"dell'amministratore" diff --git a/priv/gettext/ja/LC_MESSAGES/activity.po b/priv/gettext/ja/LC_MESSAGES/activity.po index effbe8075..a2545dfb6 100644 --- a/priv/gettext/ja/LC_MESSAGES/activity.po +++ b/priv/gettext/ja/LC_MESSAGES/activity.po @@ -151,19 +151,22 @@ msgstr "" #, 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.text.eex:1 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:1 msgid "The event %{event} was created by %{profile}." msgstr "" #, 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.text.eex:13 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:34 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:13 msgid "The event %{event} was deleted by %{profile}." msgstr "" #, 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.text.eex:7 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:19 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:7 msgid "The event %{event} was updated by %{profile}." msgstr "" @@ -193,13 +196,15 @@ msgstr "" #, 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.text.eex:25 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:58 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:25 msgid "%{profile} posted a comment on the event %{event}." msgstr "" #, 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.text.eex:19 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:43 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:19 msgid "%{profile} replied to a comment on the event %{event}." msgstr "" @@ -217,7 +222,8 @@ msgstr[0] "" #, 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.text.eex:6 +#: lib/web/templates/email/email_direct_activity.html.heex:46 +#: 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!" msgid_plural "There has been some activity!" @@ -230,14 +236,17 @@ msgstr "" #, 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.text.eex:7 -#: lib/web/templates/email/email_anonymous_activity.html.heex:41 lib/web/templates/email/email_anonymous_activity.text.eex:5 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:19 +#: 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.text.eex:5 msgid "%{profile} has posted an announcement under event %{event}." msgstr "" #, 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.text.eex:1 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 msgid "%{profile} mentionned you in a comment under event %{event}." msgstr "" @@ -253,7 +262,8 @@ msgid "Here's your weekly activity recap" msgstr "" #, elixir-format -#: lib/web/email/activity.ex:119 lib/web/email/activity.ex:140 +#: lib/web/email/activity.ex:119 +#: lib/web/email/activity.ex:140 msgid "Activity notification for %{instance}" msgstr "" @@ -275,13 +285,15 @@ msgstr "" #, 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.text.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:51 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:19 msgid "%{profile} has posted a new comment under your event %{event}." msgstr "" #, 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.text.eex:13 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:36 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:13 msgid "%{profile} has posted a new reply under your event %{event}." msgstr "" diff --git a/priv/gettext/ja/LC_MESSAGES/default.po b/priv/gettext/ja/LC_MESSAGES/default.po index f80bf5701..79a0699c4 100644 --- a/priv/gettext/ja/LC_MESSAGES/default.po +++ b/priv/gettext/ja/LC_MESSAGES/default.po @@ -750,9 +750,12 @@ msgstr "" #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:63 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:133 -#: lib/web/templates/email/event_updated.text.eex:14 lib/web/templates/email/notification_each_week.html.heex:60 -#: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:60 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 +#: lib/web/templates/email/event_updated.html.heex:133 +#: lib/web/templates/email/event_updated.text.eex:14 +#: lib/web/templates/email/notification_each_week.html.heex:60 +#: lib/web/templates/email/notification_each_week.text.eex:11 +#: lib/web/templates/email/on_day_notification.html.heex:60 #: lib/web/templates/email/on_day_notification.text.eex:11 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." @@ -810,7 +813,6 @@ msgstr "" #, elixir-format #: lib/web/templates/email/email_changed_new.html.heex:38 -#: lib/web/templates/email/email_changed_new.text.eex:3 msgid "Hi there! It seems like you wanted to change the email address linked to your account on <b>%{instance}</b>. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." msgstr "" @@ -832,7 +834,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:70 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.heex:45 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 +#: lib/web/templates/email/registration_confirmation.html.heex:45 msgid "If you didn't trigger this email, you may safely ignore it." msgstr "" @@ -944,7 +947,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/email_anonymous_activity.html.heex:67 -#: lib/web/templates/email/event_participation_approved.html.heex:58 lib/web/templates/email/event_participation_confirmed.html.heex:58 +#: lib/web/templates/email/event_participation_approved.html.heex:58 +#: lib/web/templates/email/event_participation_confirmed.html.heex:58 msgid "Visit event page" msgstr "" @@ -966,7 +970,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:70 -#: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.heex:70 +#: lib/web/templates/email/event_participation_approved.text.eex:11 +#: lib/web/templates/email/event_participation_confirmed.html.heex:70 #: lib/web/templates/email/event_participation_confirmed.text.eex:6 msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." msgstr "" @@ -990,7 +995,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:13 -#: lib/web/templates/email/event_participation_confirmed.html.heex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 +#: lib/web/templates/email/event_participation_confirmed.html.heex:13 +#: lib/web/templates/email/event_participation_confirmed.text.eex:1 msgid "You're going!" msgstr "" @@ -1315,8 +1321,10 @@ msgid "This is a demonstration site to test Mobilizon." msgstr "" #, elixir-format -#: lib/service/metadata/actor.ex:91 lib/service/metadata/actor.ex:99 -#: lib/service/metadata/instance.ex:56 lib/service/metadata/instance.ex:62 +#: lib/service/metadata/actor.ex:91 +#: lib/service/metadata/actor.ex:99 +#: lib/service/metadata/instance.ex:56 +#: lib/service/metadata/instance.ex:62 msgid "%{name}'s feed" msgstr "" @@ -1397,7 +1405,8 @@ msgstr "" #. File name template for exported list of participants. Should NOT contain spaces. Make sure the output is going to be something standardized that is acceptable as a file name on most systems. #, elixir-format #: lib/service/export/participants/csv.ex:81 -#: lib/service/export/participants/ods.ex:86 lib/service/export/participants/pdf.ex:96 +#: lib/service/export/participants/ods.ex:86 +#: lib/service/export/participants/pdf.ex:96 msgid "%{event}_participants" msgstr "" @@ -1418,6 +1427,8 @@ msgstr "" #, elixir-format #: lib/service/export/participants/common.ex:52 +#: lib/web/templates/email/admin/_role.html.heex:3 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Administrator" msgstr "" @@ -1428,6 +1439,8 @@ msgstr "" #, elixir-format #: lib/service/export/participants/common.ex:49 +#: lib/web/templates/email/admin/_role.html.heex:5 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Moderator" msgstr "" @@ -1478,8 +1491,10 @@ msgstr "" #, elixir-format #: lib/web/templates/email/date/event_tz_date.html.heex:6 -#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 lib/web/templates/email/date/event_tz_date_range.html.heex:12 -#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:12 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 msgid "🌐 %{timezone} %{offset}" msgstr "" @@ -1666,3 +1681,137 @@ msgstr "" 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] "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:13 +#: lib/web/templates/email/admin_user_role_changed.text.eex:1 +msgid "An administrator changed your role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:120 +msgid "An administrator confirmed your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:1 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:1 +msgid "An administrator manually changed the email attached to your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:47 +#: lib/web/email/admin.ex:72 +msgid "An administrator manually changed the email attached to your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:13 +#: lib/web/templates/email/admin_user_confirmation.text.eex:1 +msgid "An administrator manually confirmed your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:98 +msgid "An administrator updated your role on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/email_changed_new.text.eex:3 +msgid "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:3 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually changed your account email from %{old_email} (this one) to %{new_email}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> (this one) to <b>%{new_email}</b>." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> to <b>%{new_email}</b> (this one)." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:71 +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:45 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:45 +#: lib/web/templates/email/admin_user_role_changed.html.heex:67 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods %{start_link}on the instance's about page%{end_link}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:7 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:4 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:4 +#: lib/web/templates/email/admin_user_role_changed.text.eex:8 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods on the instance's about page: %{about_page}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:58 +msgid "Login on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:55 +msgid "New role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:6 +msgid "New role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:47 +msgid "Old role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:5 +msgid "Old role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin/_role.html.heex:7 +#: lib/web/templates/email/admin/_role.text.eex:1 +msgid "User" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:45 +msgid "You may now login using your credentials on the service." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:5 +msgid "You may now login using your credentials on the service:" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just changed your account role." +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just changed your account role." +msgstr "" diff --git a/priv/gettext/ja/LC_MESSAGES/errors.po b/priv/gettext/ja/LC_MESSAGES/errors.po index fb1463356..b9773dbe6 100644 --- a/priv/gettext/ja/LC_MESSAGES/errors.po +++ b/priv/gettext/ja/LC_MESSAGES/errors.po @@ -102,14 +102,19 @@ msgid "Error while saving user settings" msgstr "" #, elixir-format -#: lib/graphql/error.ex:99 lib/graphql/resolvers/group.ex:249 -#: lib/graphql/resolvers/group.ex:281 lib/graphql/resolvers/group.ex:318 lib/graphql/resolvers/group.ex:349 -#: lib/graphql/resolvers/group.ex:398 lib/graphql/resolvers/member.ex:81 +#: lib/graphql/error.ex:99 +#: lib/graphql/resolvers/group.ex:249 +#: lib/graphql/resolvers/group.ex:281 +#: lib/graphql/resolvers/group.ex:318 +#: lib/graphql/resolvers/group.ex:349 +#: lib/graphql/resolvers/group.ex:398 +#: lib/graphql/resolvers/member.ex:81 msgid "Group not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:78 lib/graphql/resolvers/group.ex:82 +#: lib/graphql/resolvers/group.ex:78 +#: lib/graphql/resolvers/group.ex:82 msgid "Group with ID %{id} not found" msgstr "" @@ -134,15 +139,21 @@ msgid "No user to validate with this email was found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:314 lib/graphql/resolvers/user.ex:298 +#: lib/graphql/resolvers/person.ex:314 +#: lib/graphql/resolvers/user.ex:298 msgid "No user with this email was found" msgstr "" #, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:32 lib/graphql/resolvers/participant.ex:210 lib/graphql/resolvers/person.ex:236 -#: lib/graphql/resolvers/person.ex:353 lib/graphql/resolvers/person.ex:380 lib/graphql/resolvers/person.ex:397 -#: lib/graphql/resolvers/person.ex:425 lib/graphql/resolvers/person.ex:440 +#: lib/graphql/resolvers/participant.ex:32 +#: lib/graphql/resolvers/participant.ex:210 +#: lib/graphql/resolvers/person.ex:236 +#: lib/graphql/resolvers/person.ex:353 +#: lib/graphql/resolvers/person.ex:380 +#: lib/graphql/resolvers/person.ex:397 +#: lib/graphql/resolvers/person.ex:425 +#: lib/graphql/resolvers/person.ex:440 msgid "Profile is not owned by authenticated user" msgstr "" @@ -157,11 +168,13 @@ msgid "The current password is invalid" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:341 #: lib/graphql/resolvers/user.ex:472 msgid "The new email doesn't seem to be valid" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:344 #: lib/graphql/resolvers/user.ex:475 msgid "The new email must be different" msgstr "" @@ -172,7 +185,8 @@ msgid "The new password must be different" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:479 lib/graphql/resolvers/user.ex:541 +#: lib/graphql/resolvers/user.ex:479 +#: lib/graphql/resolvers/user.ex:541 #: lib/graphql/resolvers/user.ex:544 msgid "The password provided is invalid" msgstr "" @@ -193,7 +207,8 @@ msgid "This user has been disabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:252 lib/graphql/resolvers/user.ex:257 +#: lib/graphql/resolvers/user.ex:252 +#: lib/graphql/resolvers/user.ex:257 msgid "Unable to validate user" msgstr "" @@ -268,7 +283,8 @@ msgid "You need to have an existing token to get a refresh token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:276 lib/graphql/resolvers/user.ex:301 +#: lib/graphql/resolvers/user.ex:276 +#: lib/graphql/resolvers/user.ex:301 msgid "You requested again a confirmation email too soon" msgstr "" @@ -288,7 +304,8 @@ msgid "No profile found with this ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:97 +#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:97 msgid "No remote profile found with this ID" msgstr "" @@ -339,17 +356,19 @@ msgid "Comment is already deleted" msgstr "" #, elixir-format -#: lib/graphql/error.ex:101 lib/graphql/resolvers/discussion.ex:69 +#: lib/graphql/error.ex:101 +#: lib/graphql/resolvers/discussion.ex:69 msgid "Discussion not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:63 lib/graphql/resolvers/report.ex:82 +#: lib/graphql/resolvers/report.ex:71 +#: lib/graphql/resolvers/report.ex:90 msgid "Error while saving report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:102 +#: lib/graphql/resolvers/report.ex:110 msgid "Error while updating report" msgstr "" @@ -359,14 +378,16 @@ msgid "Event id not found" msgstr "" #, elixir-format -#: lib/graphql/error.ex:98 lib/graphql/resolvers/event.ex:360 +#: lib/graphql/error.ex:98 +#: lib/graphql/resolvers/event.ex:360 #: lib/graphql/resolvers/event.ex:412 msgid "Event not found" msgstr "" #, elixir-format #: lib/graphql/resolvers/participant.ex:87 -#: lib/graphql/resolvers/participant.ex:128 lib/graphql/resolvers/participant.ex:155 +#: lib/graphql/resolvers/participant.ex:128 +#: lib/graphql/resolvers/participant.ex:155 #: lib/graphql/resolvers/participant.ex:336 msgid "Event with this ID %{id} doesn't exist" msgstr "" @@ -382,8 +403,11 @@ msgid "No discussion with ID %{id}" msgstr "" #, elixir-format -#: lib/graphql/resolvers/todos.ex:80 lib/graphql/resolvers/todos.ex:107 -#: lib/graphql/resolvers/todos.ex:179 lib/graphql/resolvers/todos.ex:208 lib/graphql/resolvers/todos.ex:237 +#: lib/graphql/resolvers/todos.ex:80 +#: lib/graphql/resolvers/todos.ex:107 +#: lib/graphql/resolvers/todos.ex:179 +#: lib/graphql/resolvers/todos.ex:208 +#: lib/graphql/resolvers/todos.ex:237 msgid "No profile found for user" msgstr "" @@ -399,7 +423,8 @@ msgstr "" #, elixir-format #: lib/graphql/resolvers/participant.ex:187 -#: lib/graphql/resolvers/participant.ex:220 lib/graphql/resolvers/participant.ex:263 +#: lib/graphql/resolvers/participant.ex:220 +#: lib/graphql/resolvers/participant.ex:263 msgid "Participant not found" msgstr "" @@ -414,12 +439,14 @@ msgid "Person with username %{username} not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:169 lib/graphql/resolvers/post.ex:203 +#: lib/graphql/resolvers/post.ex:169 +#: lib/graphql/resolvers/post.ex:203 msgid "Post ID is not a valid ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:172 lib/graphql/resolvers/post.ex:206 +#: lib/graphql/resolvers/post.ex:172 +#: lib/graphql/resolvers/post.ex:206 msgid "Post doesn't exist" msgstr "" @@ -429,31 +456,42 @@ msgid "Profile invited doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/member.ex:93 lib/graphql/resolvers/member.ex:97 +#: lib/graphql/resolvers/member.ex:93 +#: lib/graphql/resolvers/member.ex:97 msgid "Profile is already a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:133 lib/graphql/resolvers/post.ex:175 -#: lib/graphql/resolvers/post.ex:209 lib/graphql/resolvers/resource.ex:90 lib/graphql/resolvers/resource.ex:132 -#: lib/graphql/resolvers/resource.ex:165 lib/graphql/resolvers/resource.ex:199 lib/graphql/resolvers/todos.ex:58 -#: lib/graphql/resolvers/todos.ex:83 lib/graphql/resolvers/todos.ex:110 lib/graphql/resolvers/todos.ex:182 -#: lib/graphql/resolvers/todos.ex:214 lib/graphql/resolvers/todos.ex:246 +#: lib/graphql/resolvers/post.ex:133 +#: lib/graphql/resolvers/post.ex:175 +#: lib/graphql/resolvers/post.ex:209 +#: lib/graphql/resolvers/resource.ex:90 +#: lib/graphql/resolvers/resource.ex:132 +#: lib/graphql/resolvers/resource.ex:165 +#: lib/graphql/resolvers/resource.ex:199 +#: lib/graphql/resolvers/todos.ex:58 +#: lib/graphql/resolvers/todos.ex:83 +#: lib/graphql/resolvers/todos.ex:110 +#: lib/graphql/resolvers/todos.ex:182 +#: lib/graphql/resolvers/todos.ex:214 +#: lib/graphql/resolvers/todos.ex:246 msgid "Profile is not member of group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/person.ex:233 +#: lib/graphql/resolvers/actor.ex:67 +#: lib/graphql/resolvers/person.ex:233 msgid "Profile not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:40 +#: lib/graphql/resolvers/report.ex:48 msgid "Report not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/resource.ex:169 lib/graphql/resolvers/resource.ex:196 +#: lib/graphql/resolvers/resource.ex:169 +#: lib/graphql/resolvers/resource.ex:196 msgid "Resource doesn't exist" msgstr "" @@ -468,12 +506,14 @@ msgid "This token is invalid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/todos.ex:176 lib/graphql/resolvers/todos.ex:243 +#: lib/graphql/resolvers/todos.ex:176 +#: lib/graphql/resolvers/todos.ex:243 msgid "Todo doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/todos.ex:77 lib/graphql/resolvers/todos.ex:211 +#: lib/graphql/resolvers/todos.ex:77 +#: lib/graphql/resolvers/todos.ex:211 #: lib/graphql/resolvers/todos.ex:240 msgid "Todo list doesn't exist" msgstr "" @@ -484,12 +524,13 @@ msgid "Token does not exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70 +#: lib/graphql/resolvers/feed_token.ex:67 +#: lib/graphql/resolvers/feed_token.ex:70 msgid "Token is not a valid UUID" msgstr "" #, elixir-format -#: lib/graphql/error.ex:96 lib/graphql/resolvers/person.ex:458 +#: lib/graphql/error.ex:96 msgid "User not found" msgstr "" @@ -509,7 +550,8 @@ msgid "You are not a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/member.ex:157 lib/graphql/resolvers/member.ex:173 +#: lib/graphql/resolvers/member.ex:157 +#: lib/graphql/resolvers/member.ex:173 #: lib/graphql/resolvers/member.ex:188 msgid "You are not a moderator or admin for this group" msgstr "" @@ -571,37 +613,37 @@ msgid "You don't have permission to delete this token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:54 +#: lib/graphql/resolvers/admin.ex:56 msgid "You need to be logged-in and a moderator to list action logs" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:28 +#: lib/graphql/resolvers/report.ex:36 msgid "You need to be logged-in and a moderator to list reports" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:107 +#: lib/graphql/resolvers/report.ex:115 msgid "You need to be logged-in and a moderator to update a report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:45 +#: lib/graphql/resolvers/report.ex:53 msgid "You need to be logged-in and a moderator to view a report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:255 +#: lib/graphql/resolvers/admin.ex:257 msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:239 +#: lib/graphql/resolvers/admin.ex:241 msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:281 +#: lib/graphql/resolvers/admin.ex:283 msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" @@ -626,7 +668,7 @@ msgid "You need to be logged-in to create posts" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:79 +#: lib/graphql/resolvers/report.ex:87 msgid "You need to be logged-in to create reports" msgstr "" @@ -721,7 +763,8 @@ msgid "Reset your password to login" msgstr "" #, elixir-format -#: lib/graphql/error.ex:95 lib/graphql/error.ex:100 +#: lib/graphql/error.ex:95 +#: lib/graphql/error.ex:100 msgid "Resource not found" msgstr "" @@ -811,8 +854,11 @@ msgid "Profile ID provided is not the anonymous profile one" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:161 lib/graphql/resolvers/group.ex:203 -#: lib/graphql/resolvers/person.ex:148 lib/graphql/resolvers/person.ex:182 lib/graphql/resolvers/person.ex:304 +#: lib/graphql/resolvers/group.ex:161 +#: lib/graphql/resolvers/group.ex:203 +#: lib/graphql/resolvers/person.ex:148 +#: lib/graphql/resolvers/person.ex:182 +#: lib/graphql/resolvers/person.ex:304 msgid "The provided picture is too heavy" msgstr "" @@ -837,7 +883,8 @@ msgid "Unable to fetch resource details from this URL." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:164 lib/graphql/resolvers/participant.ex:253 +#: lib/graphql/resolvers/event.ex:164 +#: lib/graphql/resolvers/participant.ex:253 #: lib/graphql/resolvers/participant.ex:328 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "" @@ -888,6 +935,7 @@ msgid "Failed to update the group" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:338 #: lib/graphql/resolvers/user.ex:469 msgid "Failed to update user email" msgstr "" @@ -1016,3 +1064,23 @@ msgstr "" #: lib/graphql/resolvers/user.ex:157 msgid "Your email seems to be using an invalid format" msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:387 +msgid "Can't confirm an already confirmed user" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:391 +msgid "Deconfirming users is not supported" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:363 +msgid "The new role must be different" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:314 +msgid "You need to be logged-in and an administrator to edit an user's details" +msgstr "" diff --git a/priv/gettext/nl/LC_MESSAGES/activity.po b/priv/gettext/nl/LC_MESSAGES/activity.po index f0da1ed7d..89fcafa76 100644 --- a/priv/gettext/nl/LC_MESSAGES/activity.po +++ b/priv/gettext/nl/LC_MESSAGES/activity.po @@ -151,19 +151,22 @@ msgstr "" #, 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.text.eex:1 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:1 msgid "The event %{event} was created by %{profile}." msgstr "" #, 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.text.eex:13 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:34 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:13 msgid "The event %{event} was deleted by %{profile}." msgstr "" #, 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.text.eex:7 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:19 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:7 msgid "The event %{event} was updated by %{profile}." msgstr "" @@ -193,13 +196,15 @@ msgstr "" #, 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.text.eex:25 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:58 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:25 msgid "%{profile} posted a comment on the event %{event}." msgstr "" #, 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.text.eex:19 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:43 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:19 msgid "%{profile} replied to a comment on the event %{event}." msgstr "" @@ -218,7 +223,8 @@ 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.text.eex:6 +#: lib/web/templates/email/email_direct_activity.html.heex:46 +#: 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!" msgid_plural "There has been some activity!" @@ -232,14 +238,17 @@ msgstr "" #, 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.text.eex:7 -#: lib/web/templates/email/email_anonymous_activity.html.heex:41 lib/web/templates/email/email_anonymous_activity.text.eex:5 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:19 +#: 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.text.eex:5 msgid "%{profile} has posted an announcement under event %{event}." msgstr "" #, 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.text.eex:1 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 msgid "%{profile} mentionned you in a comment under event %{event}." msgstr "" @@ -255,7 +264,8 @@ msgid "Here's your weekly activity recap" msgstr "" #, elixir-format -#: lib/web/email/activity.ex:119 lib/web/email/activity.ex:140 +#: lib/web/email/activity.ex:119 +#: lib/web/email/activity.ex:140 msgid "Activity notification for %{instance}" msgstr "" @@ -277,13 +287,15 @@ msgstr "" #, 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.text.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:51 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:19 msgid "%{profile} has posted a new comment under your event %{event}." msgstr "" #, 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.text.eex:13 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:36 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:13 msgid "%{profile} has posted a new reply under your event %{event}." msgstr "" diff --git a/priv/gettext/nl/LC_MESSAGES/default.po b/priv/gettext/nl/LC_MESSAGES/default.po index 6e19e58e8..258f52c33 100644 --- a/priv/gettext/nl/LC_MESSAGES/default.po +++ b/priv/gettext/nl/LC_MESSAGES/default.po @@ -765,9 +765,12 @@ msgid "Please do not use it for real purposes." msgstr "" #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:63 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:133 -#: lib/web/templates/email/event_updated.text.eex:14 lib/web/templates/email/notification_each_week.html.heex:60 -#: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:60 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 +#: lib/web/templates/email/event_updated.html.heex:133 +#: lib/web/templates/email/event_updated.text.eex:14 +#: lib/web/templates/email/notification_each_week.html.heex:60 +#: lib/web/templates/email/notification_each_week.text.eex:11 +#: lib/web/templates/email/on_day_notification.html.heex:60 #: lib/web/templates/email/on_day_notification.text.eex:11 #, elixir-format msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." @@ -854,6 +857,8 @@ msgstr "" #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:70 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.heex:45 #, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 +#: lib/web/templates/email/registration_confirmation.html.heex:45 msgid "If you didn't trigger this email, you may safely ignore it." msgstr "Gelieve deze email te negeren indien u dit niet gevraagd hebt." @@ -968,6 +973,8 @@ msgstr "Bekijk de melding" #: lib/web/templates/email/email_anonymous_activity.html.heex:67 #: lib/web/templates/email/event_participation_approved.html.heex:58 lib/web/templates/email/event_participation_confirmed.html.heex:58 #, elixir-format +#: lib/web/templates/email/event_participation_approved.html.heex:58 +#: lib/web/templates/email/event_participation_confirmed.html.heex:58 msgid "Visit event page" msgstr "" @@ -988,7 +995,8 @@ msgid "What's up today?" msgstr "" #: lib/web/templates/email/event_participation_approved.html.heex:70 -#: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.heex:70 +#: lib/web/templates/email/event_participation_approved.text.eex:11 +#: lib/web/templates/email/event_participation_confirmed.html.heex:70 #: lib/web/templates/email/event_participation_confirmed.text.eex:6 #, elixir-format msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." @@ -1014,6 +1022,8 @@ msgstr "U hebt gevraagd om deel te nemen aan het evenement %{title}." #: lib/web/templates/email/event_participation_approved.html.heex:13 #: lib/web/templates/email/event_participation_confirmed.html.heex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 #, elixir-format +#: lib/web/templates/email/event_participation_confirmed.html.heex:13 +#: lib/web/templates/email/event_participation_confirmed.text.eex:1 msgid "You're going!" msgstr "" @@ -1341,6 +1351,11 @@ msgstr "Dit is een demosite om de bètaversie van Mobilizon te testen." #: lib/service/metadata/actor.ex:91 lib/service/metadata/actor.ex:99 #: lib/service/metadata/instance.ex:56 lib/service/metadata/instance.ex:62 #, elixir-format +#, elixir-format +#: lib/service/metadata/actor.ex:91 +#: lib/service/metadata/actor.ex:99 +#: lib/service/metadata/instance.ex:56 +#: lib/service/metadata/instance.ex:62 msgid "%{name}'s feed" msgstr "" @@ -1422,6 +1437,8 @@ msgstr "Uw deelname aan het evenement %{title} is goedgekeurd" #: lib/service/export/participants/csv.ex:81 #: lib/service/export/participants/ods.ex:86 lib/service/export/participants/pdf.ex:96 #, elixir-format +#: lib/service/export/participants/ods.ex:86 +#: lib/service/export/participants/pdf.ex:96 msgid "%{event}_participants" msgstr "" @@ -1442,6 +1459,8 @@ msgstr "" #: lib/service/export/participants/common.ex:52 #, elixir-format +#: lib/web/templates/email/admin/_role.html.heex:3 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Administrator" msgstr "" @@ -1452,6 +1471,8 @@ msgstr "" #: lib/service/export/participants/common.ex:49 #, elixir-format +#: lib/web/templates/email/admin/_role.html.heex:5 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Moderator" msgstr "" @@ -1504,6 +1525,10 @@ msgstr "" #: lib/web/templates/email/date/event_tz_date_range.html.heex:7 lib/web/templates/email/date/event_tz_date_range.html.heex:12 #: lib/web/templates/email/date/event_tz_date_range.text.eex:1 lib/web/templates/email/date/event_tz_date_range.text.eex:1 #, elixir-format +#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:12 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 msgid "🌐 %{timezone} %{offset}" msgstr "" @@ -1691,3 +1716,137 @@ msgid "You have one pending attendance request to process for the following even msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" msgstr[0] "" msgstr[1] "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:13 +#: lib/web/templates/email/admin_user_role_changed.text.eex:1 +msgid "An administrator changed your role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:120 +msgid "An administrator confirmed your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:1 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:1 +msgid "An administrator manually changed the email attached to your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:47 +#: lib/web/email/admin.ex:72 +msgid "An administrator manually changed the email attached to your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:13 +#: lib/web/templates/email/admin_user_confirmation.text.eex:1 +msgid "An administrator manually confirmed your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:98 +msgid "An administrator updated your role on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/email_changed_new.text.eex:3 +msgid "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:3 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually changed your account email from %{old_email} (this one) to %{new_email}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> (this one) to <b>%{new_email}</b>." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> to <b>%{new_email}</b> (this one)." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:71 +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:45 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:45 +#: lib/web/templates/email/admin_user_role_changed.html.heex:67 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods %{start_link}on the instance's about page%{end_link}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:7 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:4 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:4 +#: lib/web/templates/email/admin_user_role_changed.text.eex:8 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods on the instance's about page: %{about_page}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:58 +msgid "Login on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:55 +msgid "New role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:6 +msgid "New role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:47 +msgid "Old role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:5 +msgid "Old role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin/_role.html.heex:7 +#: lib/web/templates/email/admin/_role.text.eex:1 +msgid "User" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:45 +msgid "You may now login using your credentials on the service." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:5 +msgid "You may now login using your credentials on the service:" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just changed your account role." +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just changed your account role." +msgstr "" diff --git a/priv/gettext/nl/LC_MESSAGES/errors.po b/priv/gettext/nl/LC_MESSAGES/errors.po index ddebbb13c..ae051dc5c 100644 --- a/priv/gettext/nl/LC_MESSAGES/errors.po +++ b/priv/gettext/nl/LC_MESSAGES/errors.po @@ -108,14 +108,19 @@ msgid "Error while saving user settings" msgstr "" #, elixir-format -#: lib/graphql/error.ex:99 lib/graphql/resolvers/group.ex:249 -#: lib/graphql/resolvers/group.ex:281 lib/graphql/resolvers/group.ex:318 lib/graphql/resolvers/group.ex:349 -#: lib/graphql/resolvers/group.ex:398 lib/graphql/resolvers/member.ex:81 +#: lib/graphql/error.ex:99 +#: lib/graphql/resolvers/group.ex:249 +#: lib/graphql/resolvers/group.ex:281 +#: lib/graphql/resolvers/group.ex:318 +#: lib/graphql/resolvers/group.ex:349 +#: lib/graphql/resolvers/group.ex:398 +#: lib/graphql/resolvers/member.ex:81 msgid "Group not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:78 lib/graphql/resolvers/group.ex:82 +#: lib/graphql/resolvers/group.ex:78 +#: lib/graphql/resolvers/group.ex:82 msgid "Group with ID %{id} not found" msgstr "" @@ -140,15 +145,21 @@ msgid "No user to validate with this email was found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:314 lib/graphql/resolvers/user.ex:298 +#: lib/graphql/resolvers/person.ex:314 +#: lib/graphql/resolvers/user.ex:298 msgid "No user with this email was found" msgstr "" #, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:32 lib/graphql/resolvers/participant.ex:210 lib/graphql/resolvers/person.ex:236 -#: lib/graphql/resolvers/person.ex:353 lib/graphql/resolvers/person.ex:380 lib/graphql/resolvers/person.ex:397 -#: lib/graphql/resolvers/person.ex:425 lib/graphql/resolvers/person.ex:440 +#: lib/graphql/resolvers/participant.ex:32 +#: lib/graphql/resolvers/participant.ex:210 +#: lib/graphql/resolvers/person.ex:236 +#: lib/graphql/resolvers/person.ex:353 +#: lib/graphql/resolvers/person.ex:380 +#: lib/graphql/resolvers/person.ex:397 +#: lib/graphql/resolvers/person.ex:425 +#: lib/graphql/resolvers/person.ex:440 msgid "Profile is not owned by authenticated user" msgstr "" @@ -163,11 +174,13 @@ msgid "The current password is invalid" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:341 #: lib/graphql/resolvers/user.ex:472 msgid "The new email doesn't seem to be valid" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:344 #: lib/graphql/resolvers/user.ex:475 msgid "The new email must be different" msgstr "" @@ -178,7 +191,8 @@ msgid "The new password must be different" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:479 lib/graphql/resolvers/user.ex:541 +#: lib/graphql/resolvers/user.ex:479 +#: lib/graphql/resolvers/user.ex:541 #: lib/graphql/resolvers/user.ex:544 msgid "The password provided is invalid" msgstr "" @@ -199,7 +213,8 @@ msgid "This user has been disabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:252 lib/graphql/resolvers/user.ex:257 +#: lib/graphql/resolvers/user.ex:252 +#: lib/graphql/resolvers/user.ex:257 msgid "Unable to validate user" msgstr "" @@ -274,7 +289,8 @@ msgid "You need to have an existing token to get a refresh token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:276 lib/graphql/resolvers/user.ex:301 +#: lib/graphql/resolvers/user.ex:276 +#: lib/graphql/resolvers/user.ex:301 msgid "You requested again a confirmation email too soon" msgstr "" @@ -294,7 +310,8 @@ msgid "No profile found with this ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:97 +#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:97 msgid "No remote profile found with this ID" msgstr "" @@ -345,17 +362,19 @@ msgid "Comment is already deleted" msgstr "" #, elixir-format -#: lib/graphql/error.ex:101 lib/graphql/resolvers/discussion.ex:69 +#: lib/graphql/error.ex:101 +#: lib/graphql/resolvers/discussion.ex:69 msgid "Discussion not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:63 lib/graphql/resolvers/report.ex:82 +#: lib/graphql/resolvers/report.ex:71 +#: lib/graphql/resolvers/report.ex:90 msgid "Error while saving report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:102 +#: lib/graphql/resolvers/report.ex:110 msgid "Error while updating report" msgstr "" @@ -365,14 +384,16 @@ msgid "Event id not found" msgstr "" #, elixir-format -#: lib/graphql/error.ex:98 lib/graphql/resolvers/event.ex:360 +#: lib/graphql/error.ex:98 +#: lib/graphql/resolvers/event.ex:360 #: lib/graphql/resolvers/event.ex:412 msgid "Event not found" msgstr "" #, elixir-format #: lib/graphql/resolvers/participant.ex:87 -#: lib/graphql/resolvers/participant.ex:128 lib/graphql/resolvers/participant.ex:155 +#: lib/graphql/resolvers/participant.ex:128 +#: lib/graphql/resolvers/participant.ex:155 #: lib/graphql/resolvers/participant.ex:336 msgid "Event with this ID %{id} doesn't exist" msgstr "" @@ -388,8 +409,11 @@ msgid "No discussion with ID %{id}" msgstr "" #, elixir-format -#: lib/graphql/resolvers/todos.ex:80 lib/graphql/resolvers/todos.ex:107 -#: lib/graphql/resolvers/todos.ex:179 lib/graphql/resolvers/todos.ex:208 lib/graphql/resolvers/todos.ex:237 +#: lib/graphql/resolvers/todos.ex:80 +#: lib/graphql/resolvers/todos.ex:107 +#: lib/graphql/resolvers/todos.ex:179 +#: lib/graphql/resolvers/todos.ex:208 +#: lib/graphql/resolvers/todos.ex:237 msgid "No profile found for user" msgstr "" @@ -405,7 +429,8 @@ msgstr "" #, elixir-format #: lib/graphql/resolvers/participant.ex:187 -#: lib/graphql/resolvers/participant.ex:220 lib/graphql/resolvers/participant.ex:263 +#: lib/graphql/resolvers/participant.ex:220 +#: lib/graphql/resolvers/participant.ex:263 msgid "Participant not found" msgstr "" @@ -420,12 +445,14 @@ msgid "Person with username %{username} not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:169 lib/graphql/resolvers/post.ex:203 +#: lib/graphql/resolvers/post.ex:169 +#: lib/graphql/resolvers/post.ex:203 msgid "Post ID is not a valid ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:172 lib/graphql/resolvers/post.ex:206 +#: lib/graphql/resolvers/post.ex:172 +#: lib/graphql/resolvers/post.ex:206 msgid "Post doesn't exist" msgstr "" @@ -435,31 +462,42 @@ msgid "Profile invited doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/member.ex:93 lib/graphql/resolvers/member.ex:97 +#: lib/graphql/resolvers/member.ex:93 +#: lib/graphql/resolvers/member.ex:97 msgid "Profile is already a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:133 lib/graphql/resolvers/post.ex:175 -#: lib/graphql/resolvers/post.ex:209 lib/graphql/resolvers/resource.ex:90 lib/graphql/resolvers/resource.ex:132 -#: lib/graphql/resolvers/resource.ex:165 lib/graphql/resolvers/resource.ex:199 lib/graphql/resolvers/todos.ex:58 -#: lib/graphql/resolvers/todos.ex:83 lib/graphql/resolvers/todos.ex:110 lib/graphql/resolvers/todos.ex:182 -#: lib/graphql/resolvers/todos.ex:214 lib/graphql/resolvers/todos.ex:246 +#: lib/graphql/resolvers/post.ex:133 +#: lib/graphql/resolvers/post.ex:175 +#: lib/graphql/resolvers/post.ex:209 +#: lib/graphql/resolvers/resource.ex:90 +#: lib/graphql/resolvers/resource.ex:132 +#: lib/graphql/resolvers/resource.ex:165 +#: lib/graphql/resolvers/resource.ex:199 +#: lib/graphql/resolvers/todos.ex:58 +#: lib/graphql/resolvers/todos.ex:83 +#: lib/graphql/resolvers/todos.ex:110 +#: lib/graphql/resolvers/todos.ex:182 +#: lib/graphql/resolvers/todos.ex:214 +#: lib/graphql/resolvers/todos.ex:246 msgid "Profile is not member of group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/person.ex:233 +#: lib/graphql/resolvers/actor.ex:67 +#: lib/graphql/resolvers/person.ex:233 msgid "Profile not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:40 +#: lib/graphql/resolvers/report.ex:48 msgid "Report not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/resource.ex:169 lib/graphql/resolvers/resource.ex:196 +#: lib/graphql/resolvers/resource.ex:169 +#: lib/graphql/resolvers/resource.ex:196 msgid "Resource doesn't exist" msgstr "" @@ -474,12 +512,14 @@ msgid "This token is invalid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/todos.ex:176 lib/graphql/resolvers/todos.ex:243 +#: lib/graphql/resolvers/todos.ex:176 +#: lib/graphql/resolvers/todos.ex:243 msgid "Todo doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/todos.ex:77 lib/graphql/resolvers/todos.ex:211 +#: lib/graphql/resolvers/todos.ex:77 +#: lib/graphql/resolvers/todos.ex:211 #: lib/graphql/resolvers/todos.ex:240 msgid "Todo list doesn't exist" msgstr "" @@ -490,12 +530,13 @@ msgid "Token does not exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70 +#: lib/graphql/resolvers/feed_token.ex:67 +#: lib/graphql/resolvers/feed_token.ex:70 msgid "Token is not a valid UUID" msgstr "" #, elixir-format -#: lib/graphql/error.ex:96 lib/graphql/resolvers/person.ex:458 +#: lib/graphql/error.ex:96 msgid "User not found" msgstr "" @@ -515,7 +556,8 @@ msgid "You are not a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/member.ex:157 lib/graphql/resolvers/member.ex:173 +#: lib/graphql/resolvers/member.ex:157 +#: lib/graphql/resolvers/member.ex:173 #: lib/graphql/resolvers/member.ex:188 msgid "You are not a moderator or admin for this group" msgstr "" @@ -577,37 +619,37 @@ msgid "You don't have permission to delete this token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:54 +#: lib/graphql/resolvers/admin.ex:56 msgid "You need to be logged-in and a moderator to list action logs" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:28 +#: lib/graphql/resolvers/report.ex:36 msgid "You need to be logged-in and a moderator to list reports" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:107 +#: lib/graphql/resolvers/report.ex:115 msgid "You need to be logged-in and a moderator to update a report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:45 +#: lib/graphql/resolvers/report.ex:53 msgid "You need to be logged-in and a moderator to view a report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:255 +#: lib/graphql/resolvers/admin.ex:257 msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:239 +#: lib/graphql/resolvers/admin.ex:241 msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:281 +#: lib/graphql/resolvers/admin.ex:283 msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" @@ -632,7 +674,7 @@ msgid "You need to be logged-in to create posts" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:79 +#: lib/graphql/resolvers/report.ex:87 msgid "You need to be logged-in to create reports" msgstr "" @@ -727,7 +769,8 @@ msgid "Reset your password to login" msgstr "" #, elixir-format -#: lib/graphql/error.ex:95 lib/graphql/error.ex:100 +#: lib/graphql/error.ex:95 +#: lib/graphql/error.ex:100 msgid "Resource not found" msgstr "" @@ -817,8 +860,11 @@ msgid "Profile ID provided is not the anonymous profile one" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:161 lib/graphql/resolvers/group.ex:203 -#: lib/graphql/resolvers/person.ex:148 lib/graphql/resolvers/person.ex:182 lib/graphql/resolvers/person.ex:304 +#: lib/graphql/resolvers/group.ex:161 +#: lib/graphql/resolvers/group.ex:203 +#: lib/graphql/resolvers/person.ex:148 +#: lib/graphql/resolvers/person.ex:182 +#: lib/graphql/resolvers/person.ex:304 msgid "The provided picture is too heavy" msgstr "" @@ -843,7 +889,8 @@ msgid "Unable to fetch resource details from this URL." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:164 lib/graphql/resolvers/participant.ex:253 +#: lib/graphql/resolvers/event.ex:164 +#: lib/graphql/resolvers/participant.ex:253 #: lib/graphql/resolvers/participant.ex:328 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "" @@ -894,6 +941,7 @@ msgid "Failed to update the group" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:338 #: lib/graphql/resolvers/user.ex:469 msgid "Failed to update user email" msgstr "" @@ -1022,3 +1070,23 @@ msgstr "" #: lib/graphql/resolvers/user.ex:157 msgid "Your email seems to be using an invalid format" msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:387 +msgid "Can't confirm an already confirmed user" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:391 +msgid "Deconfirming users is not supported" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:363 +msgid "The new role must be different" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:314 +msgid "You need to be logged-in and an administrator to edit an user's details" +msgstr "" diff --git a/priv/gettext/nn/LC_MESSAGES/activity.po b/priv/gettext/nn/LC_MESSAGES/activity.po index 149d6722d..95e71c575 100644 --- a/priv/gettext/nn/LC_MESSAGES/activity.po +++ b/priv/gettext/nn/LC_MESSAGES/activity.po @@ -159,19 +159,22 @@ msgstr "%{profile} oppdaterte medlemen %{member}." #, 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.text.eex:1 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:1 msgid "The event %{event} was created by %{profile}." msgstr "%{profile} laga hendinga %{event}." #, 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.text.eex:13 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:34 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:13 msgid "The event %{event} was deleted by %{profile}." msgstr "%{profile} sletta hendinga %{event}." #, 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.text.eex:7 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:19 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:7 msgid "The event %{event} was updated by %{profile}." msgstr "%{profile} oppdaterte hendinga %{event}." @@ -201,13 +204,15 @@ msgstr "%{member} vart med i gruppa." #, 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.text.eex:25 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:58 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:25 msgid "%{profile} posted a comment on the event %{event}." msgstr "%{profile} kommenterte hendinga %{event}." #, 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.text.eex:19 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:43 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:19 msgid "%{profile} replied to a comment on the event %{event}." msgstr "%{profile} svara på ein kommentar til hendinga %{event}." @@ -228,7 +233,8 @@ msgstr[1] "Sjå %{count} aktivitetar til" #, 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.text.eex:6 +#: lib/web/templates/email/email_direct_activity.html.heex:46 +#: 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!" msgid_plural "There has been some activity!" @@ -242,14 +248,17 @@ msgstr "Aktivitet på %{instance}" #, 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.text.eex:7 -#: lib/web/templates/email/email_anonymous_activity.html.heex:41 lib/web/templates/email/email_anonymous_activity.text.eex:5 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:19 +#: 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.text.eex:5 msgid "%{profile} has posted an announcement under event %{event}." msgstr "%{profile} la ut ei kunngjering til hendinga %{event}." #, 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.text.eex:1 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 msgid "%{profile} mentionned you in a comment under event %{event}." msgstr "%{profile} nemnde deg i ein kommentar til hendinga %{event}." @@ -267,7 +276,8 @@ msgid "Here's your weekly activity recap" msgstr "Her er samandraget for denne veka" #, elixir-format -#: lib/web/email/activity.ex:119 lib/web/email/activity.ex:140 +#: lib/web/email/activity.ex:119 +#: lib/web/email/activity.ex:140 msgid "Activity notification for %{instance}" msgstr "Varsel for %{instance}" @@ -289,13 +299,15 @@ msgstr "Vekesamandrag for %{instance}" #, 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.text.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:51 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:19 msgid "%{profile} has posted a new comment under your event %{event}." msgstr "%{profile} skreiv ein ny kommentar til hendinga di %{event}." #, 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.text.eex:13 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:36 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:13 msgid "%{profile} has posted a new reply under your event %{event}." msgstr "%{profile} skreiv eit nytt svar til hendinga di %{event}." diff --git a/priv/gettext/nn/LC_MESSAGES/default.po b/priv/gettext/nn/LC_MESSAGES/default.po index 26d3b41cf..c91cd8357 100644 --- a/priv/gettext/nn/LC_MESSAGES/default.po +++ b/priv/gettext/nn/LC_MESSAGES/default.po @@ -911,9 +911,12 @@ msgstr "Ikkje bruk han på ordentleg." #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:63 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:133 -#: lib/web/templates/email/event_updated.text.eex:14 lib/web/templates/email/notification_each_week.html.heex:60 -#: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:60 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 +#: lib/web/templates/email/event_updated.html.heex:133 +#: lib/web/templates/email/event_updated.text.eex:14 +#: lib/web/templates/email/notification_each_week.html.heex:60 +#: lib/web/templates/email/notification_each_week.text.eex:11 +#: lib/web/templates/email/on_day_notification.html.heex:60 #: lib/web/templates/email/on_day_notification.text.eex:11 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." @@ -978,7 +981,6 @@ msgstr "" #, elixir-format #: lib/web/templates/email/email_changed_new.html.heex:38 -#: lib/web/templates/email/email_changed_new.text.eex:3 msgid "Hi there! It seems like you wanted to change the email address linked to your account on <b>%{instance}</b>. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." msgstr "" "Hei! Det ser ut til at du vil endra epostadressa du har brukt til " @@ -1012,7 +1014,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:70 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.heex:45 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 +#: lib/web/templates/email/registration_confirmation.html.heex:45 msgid "If you didn't trigger this email, you may safely ignore it." msgstr "Viss du ikkje gjorde dette sjølv, kan du trygt sjå bort frå dette." @@ -1129,7 +1132,8 @@ msgstr "Les rapporten:" #, elixir-format #: lib/web/templates/email/email_anonymous_activity.html.heex:67 -#: lib/web/templates/email/event_participation_approved.html.heex:58 lib/web/templates/email/event_participation_confirmed.html.heex:58 +#: lib/web/templates/email/event_participation_approved.html.heex:58 +#: lib/web/templates/email/event_participation_confirmed.html.heex:58 msgid "Visit event page" msgstr "Sjå på hendingssida" @@ -1151,7 +1155,8 @@ msgstr "Kva skjer i dag?" #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:70 -#: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.heex:70 +#: lib/web/templates/email/event_participation_approved.text.eex:11 +#: lib/web/templates/email/event_participation_confirmed.html.heex:70 #: lib/web/templates/email/event_participation_confirmed.text.eex:6 msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." msgstr "" @@ -1180,7 +1185,8 @@ msgstr "Du ba nyst om å vera med på %{title}." #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:13 -#: lib/web/templates/email/event_participation_confirmed.html.heex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 +#: lib/web/templates/email/event_participation_confirmed.html.heex:13 +#: lib/web/templates/email/event_participation_confirmed.text.eex:1 msgid "You're going!" msgstr "Du skal dit!" @@ -1608,8 +1614,10 @@ msgid "This is a demonstration site to test Mobilizon." msgstr "Dette er ei demoside for å prøva ut Mobilizon." #, elixir-format -#: lib/service/metadata/actor.ex:91 lib/service/metadata/actor.ex:99 -#: lib/service/metadata/instance.ex:56 lib/service/metadata/instance.ex:62 +#: lib/service/metadata/actor.ex:91 +#: lib/service/metadata/actor.ex:99 +#: lib/service/metadata/instance.ex:56 +#: lib/service/metadata/instance.ex:62 msgid "%{name}'s feed" msgstr "Straumen til %{name}" @@ -1699,7 +1707,8 @@ msgstr "Du har meldt deg av %{event} på %{instance}!" #. File name template for exported list of participants. Should NOT contain spaces. Make sure the output is going to be something standardized that is acceptable as a file name on most systems. #, elixir-format #: lib/service/export/participants/csv.ex:81 -#: lib/service/export/participants/ods.ex:86 lib/service/export/participants/pdf.ex:96 +#: lib/service/export/participants/ods.ex:86 +#: lib/service/export/participants/pdf.ex:96 msgid "%{event}_participants" msgstr "%{event}_deltakarar" @@ -1720,6 +1729,8 @@ msgstr "Deltakarstatus" #, elixir-format #: lib/service/export/participants/common.ex:52 +#: lib/web/templates/email/admin/_role.html.heex:3 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Administrator" msgstr "Styrar" @@ -1730,6 +1741,8 @@ msgstr "Opphavsperson" #, elixir-format #: lib/service/export/participants/common.ex:49 +#: lib/web/templates/email/admin/_role.html.heex:5 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Moderator" msgstr "Redaktør" @@ -1780,8 +1793,10 @@ msgstr "Anonym deltakar" #, elixir-format #: lib/web/templates/email/date/event_tz_date.html.heex:6 -#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 lib/web/templates/email/date/event_tz_date_range.html.heex:12 -#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:12 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 msgid "🌐 %{timezone} %{offset}" msgstr "🌐 %{timezone} %{offset}" @@ -1971,3 +1986,141 @@ msgstr[0] "Du har ein førespurnad om deltaking å handtera:" msgstr[1] "" "Du har %{number_participation_requests} førespurnader om deltaking å " "handtera:" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:13 +#: lib/web/templates/email/admin_user_role_changed.text.eex:1 +msgid "An administrator changed your role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:120 +msgid "An administrator confirmed your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:1 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:1 +msgid "An administrator manually changed the email attached to your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:47 +#: lib/web/email/admin.ex:72 +msgid "An administrator manually changed the email attached to your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:13 +#: lib/web/templates/email/admin_user_confirmation.text.eex:1 +msgid "An administrator manually confirmed your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:98 +msgid "An administrator updated your role on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/email_changed_new.text.eex:3 +msgid "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." +msgstr "" +"Hei! Det ser ut til at du vil endra epostadressa du har brukt til " +"brukarkontoen din på <b>%{instance}</b>. Viss du framleis ynskjer det, kan " +"du klikka på knappen under for å stadfesta dndringa. Etterpå kan du logga " +"inn på %{instance} med den nye adressa." + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:3 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually changed your account email from %{old_email} (this one) to %{new_email}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> (this one) to <b>%{new_email}</b>." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> to <b>%{new_email}</b> (this one)." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:71 +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:45 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:45 +#: lib/web/templates/email/admin_user_role_changed.html.heex:67 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods %{start_link}on the instance's about page%{end_link}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:7 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:4 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:4 +#: lib/web/templates/email/admin_user_role_changed.text.eex:8 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods on the instance's about page: %{about_page}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:58 +msgid "Login on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:55 +msgid "New role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:6 +msgid "New role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:47 +msgid "Old role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:5 +msgid "Old role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin/_role.html.heex:7 +#: lib/web/templates/email/admin/_role.text.eex:1 +msgid "User" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:45 +msgid "You may now login using your credentials on the service." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:5 +msgid "You may now login using your credentials on the service:" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just changed your account role." +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just changed your account role." +msgstr "" diff --git a/priv/gettext/nn/LC_MESSAGES/errors.po b/priv/gettext/nn/LC_MESSAGES/errors.po index 7c588c79d..3bf70a06e 100644 --- a/priv/gettext/nn/LC_MESSAGES/errors.po +++ b/priv/gettext/nn/LC_MESSAGES/errors.po @@ -131,14 +131,19 @@ msgid "Error while saving user settings" msgstr "Greidde ikkje lagra brukarinnstillingane" #, elixir-format -#: lib/graphql/error.ex:99 lib/graphql/resolvers/group.ex:249 -#: lib/graphql/resolvers/group.ex:281 lib/graphql/resolvers/group.ex:318 lib/graphql/resolvers/group.ex:349 -#: lib/graphql/resolvers/group.ex:398 lib/graphql/resolvers/member.ex:81 +#: lib/graphql/error.ex:99 +#: lib/graphql/resolvers/group.ex:249 +#: lib/graphql/resolvers/group.ex:281 +#: lib/graphql/resolvers/group.ex:318 +#: lib/graphql/resolvers/group.ex:349 +#: lib/graphql/resolvers/group.ex:398 +#: lib/graphql/resolvers/member.ex:81 msgid "Group not found" msgstr "Fann ikkje gruppa" #, elixir-format -#: lib/graphql/resolvers/group.ex:78 lib/graphql/resolvers/group.ex:82 +#: lib/graphql/resolvers/group.ex:78 +#: lib/graphql/resolvers/group.ex:82 msgid "Group with ID %{id} not found" msgstr "Fann ikkje gruppa med ID %{id}" @@ -163,15 +168,21 @@ msgid "No user to validate with this email was found" msgstr "Fann ingen brukar med denne eposten å godkjenna" #, elixir-format -#: lib/graphql/resolvers/person.ex:314 lib/graphql/resolvers/user.ex:298 +#: lib/graphql/resolvers/person.ex:314 +#: lib/graphql/resolvers/user.ex:298 msgid "No user with this email was found" msgstr "Fann ingen brukar med denne eposten" #, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:32 lib/graphql/resolvers/participant.ex:210 lib/graphql/resolvers/person.ex:236 -#: lib/graphql/resolvers/person.ex:353 lib/graphql/resolvers/person.ex:380 lib/graphql/resolvers/person.ex:397 -#: lib/graphql/resolvers/person.ex:425 lib/graphql/resolvers/person.ex:440 +#: lib/graphql/resolvers/participant.ex:32 +#: lib/graphql/resolvers/participant.ex:210 +#: lib/graphql/resolvers/person.ex:236 +#: lib/graphql/resolvers/person.ex:353 +#: lib/graphql/resolvers/person.ex:380 +#: lib/graphql/resolvers/person.ex:397 +#: lib/graphql/resolvers/person.ex:425 +#: lib/graphql/resolvers/person.ex:440 msgid "Profile is not owned by authenticated user" msgstr "Ingen godkjent brukar eig denne profilen" @@ -186,11 +197,13 @@ msgid "The current password is invalid" msgstr "Dette passordet er ugyldig" #, elixir-format +#: lib/graphql/resolvers/admin.ex:341 #: lib/graphql/resolvers/user.ex:472 msgid "The new email doesn't seem to be valid" msgstr "Den nye epostadressa ser ut til å vera feil" #, elixir-format +#: lib/graphql/resolvers/admin.ex:344 #: lib/graphql/resolvers/user.ex:475 msgid "The new email must be different" msgstr "Den nye epostadressa må vera annleis" @@ -201,7 +214,8 @@ msgid "The new password must be different" msgstr "Det nye passordet må vera annleis" #, elixir-format -#: lib/graphql/resolvers/user.ex:479 lib/graphql/resolvers/user.ex:541 +#: lib/graphql/resolvers/user.ex:479 +#: lib/graphql/resolvers/user.ex:541 #: lib/graphql/resolvers/user.ex:544 msgid "The password provided is invalid" msgstr "Dette passordet er ugyldig" @@ -222,7 +236,8 @@ msgid "This user has been disabled" msgstr "Denne brukaren er avskrudd" #, elixir-format -#: lib/graphql/resolvers/user.ex:252 lib/graphql/resolvers/user.ex:257 +#: lib/graphql/resolvers/user.ex:252 +#: lib/graphql/resolvers/user.ex:257 msgid "Unable to validate user" msgstr "Greier ikkje godkjenna brukaren" @@ -297,7 +312,8 @@ msgid "You need to have an existing token to get a refresh token" msgstr "Du treng eit eksisterande teikn for å få eit fornyingsteikn" #, elixir-format -#: lib/graphql/resolvers/user.ex:276 lib/graphql/resolvers/user.ex:301 +#: lib/graphql/resolvers/user.ex:276 +#: lib/graphql/resolvers/user.ex:301 msgid "You requested again a confirmation email too soon" msgstr "Du ba om ny stadfestingsepost for snøgt" @@ -317,7 +333,8 @@ msgid "No profile found with this ID" msgstr "Fann ingen profil med denne ID-en" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:97 +#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:97 msgid "No remote profile found with this ID" msgstr "Fann ingen fjern profil med denne ID-en" @@ -368,17 +385,19 @@ msgid "Comment is already deleted" msgstr "Kommentaren er allereie sletta" #, elixir-format -#: lib/graphql/error.ex:101 lib/graphql/resolvers/discussion.ex:69 +#: lib/graphql/error.ex:101 +#: lib/graphql/resolvers/discussion.ex:69 msgid "Discussion not found" msgstr "Fann ikkje ordskiftet" #, elixir-format -#: lib/graphql/resolvers/report.ex:63 lib/graphql/resolvers/report.ex:82 +#: lib/graphql/resolvers/report.ex:71 +#: lib/graphql/resolvers/report.ex:90 msgid "Error while saving report" msgstr "Greidde ikkje lagra rapporten" #, elixir-format -#: lib/graphql/resolvers/report.ex:102 +#: lib/graphql/resolvers/report.ex:110 msgid "Error while updating report" msgstr "Greidde ikkje oppdatera rapporten" @@ -388,14 +407,16 @@ msgid "Event id not found" msgstr "Fann ikkje ID-en til hendinga" #, elixir-format -#: lib/graphql/error.ex:98 lib/graphql/resolvers/event.ex:360 +#: lib/graphql/error.ex:98 +#: lib/graphql/resolvers/event.ex:360 #: lib/graphql/resolvers/event.ex:412 msgid "Event not found" msgstr "Fann ikkje hendinga" #, elixir-format #: lib/graphql/resolvers/participant.ex:87 -#: lib/graphql/resolvers/participant.ex:128 lib/graphql/resolvers/participant.ex:155 +#: lib/graphql/resolvers/participant.ex:128 +#: lib/graphql/resolvers/participant.ex:155 #: lib/graphql/resolvers/participant.ex:336 msgid "Event with this ID %{id} doesn't exist" msgstr "Det finst inga hending med ID-en %{id}" @@ -411,8 +432,11 @@ msgid "No discussion with ID %{id}" msgstr "Ikkje noko ordskifte med ID-en %{id}" #, elixir-format -#: lib/graphql/resolvers/todos.ex:80 lib/graphql/resolvers/todos.ex:107 -#: lib/graphql/resolvers/todos.ex:179 lib/graphql/resolvers/todos.ex:208 lib/graphql/resolvers/todos.ex:237 +#: lib/graphql/resolvers/todos.ex:80 +#: lib/graphql/resolvers/todos.ex:107 +#: lib/graphql/resolvers/todos.ex:179 +#: lib/graphql/resolvers/todos.ex:208 +#: lib/graphql/resolvers/todos.ex:237 msgid "No profile found for user" msgstr "Fann ingen profil for brukaren" @@ -428,7 +452,8 @@ msgstr "Deltakaren har rolla %{role} allereie" #, elixir-format #: lib/graphql/resolvers/participant.ex:187 -#: lib/graphql/resolvers/participant.ex:220 lib/graphql/resolvers/participant.ex:263 +#: lib/graphql/resolvers/participant.ex:220 +#: lib/graphql/resolvers/participant.ex:263 msgid "Participant not found" msgstr "Fann ikkje deltakaren" @@ -443,12 +468,14 @@ msgid "Person with username %{username} not found" msgstr "Fann ingen person med brukarnamnet %{username}" #, elixir-format -#: lib/graphql/resolvers/post.ex:169 lib/graphql/resolvers/post.ex:203 +#: lib/graphql/resolvers/post.ex:169 +#: lib/graphql/resolvers/post.ex:203 msgid "Post ID is not a valid ID" msgstr "Innleggs-IDen er ugyldig" #, elixir-format -#: lib/graphql/resolvers/post.ex:172 lib/graphql/resolvers/post.ex:206 +#: lib/graphql/resolvers/post.ex:172 +#: lib/graphql/resolvers/post.ex:206 msgid "Post doesn't exist" msgstr "Innlegget finst ikkje" @@ -458,31 +485,42 @@ msgid "Profile invited doesn't exist" msgstr "Den inviterte profilen finst ikkje" #, elixir-format -#: lib/graphql/resolvers/member.ex:93 lib/graphql/resolvers/member.ex:97 +#: lib/graphql/resolvers/member.ex:93 +#: lib/graphql/resolvers/member.ex:97 msgid "Profile is already a member of this group" msgstr "Profilen er allereie medlem i denne gruppa" #, elixir-format -#: lib/graphql/resolvers/post.ex:133 lib/graphql/resolvers/post.ex:175 -#: lib/graphql/resolvers/post.ex:209 lib/graphql/resolvers/resource.ex:90 lib/graphql/resolvers/resource.ex:132 -#: lib/graphql/resolvers/resource.ex:165 lib/graphql/resolvers/resource.ex:199 lib/graphql/resolvers/todos.ex:58 -#: lib/graphql/resolvers/todos.ex:83 lib/graphql/resolvers/todos.ex:110 lib/graphql/resolvers/todos.ex:182 -#: lib/graphql/resolvers/todos.ex:214 lib/graphql/resolvers/todos.ex:246 +#: lib/graphql/resolvers/post.ex:133 +#: lib/graphql/resolvers/post.ex:175 +#: lib/graphql/resolvers/post.ex:209 +#: lib/graphql/resolvers/resource.ex:90 +#: lib/graphql/resolvers/resource.ex:132 +#: lib/graphql/resolvers/resource.ex:165 +#: lib/graphql/resolvers/resource.ex:199 +#: lib/graphql/resolvers/todos.ex:58 +#: lib/graphql/resolvers/todos.ex:83 +#: lib/graphql/resolvers/todos.ex:110 +#: lib/graphql/resolvers/todos.ex:182 +#: lib/graphql/resolvers/todos.ex:214 +#: lib/graphql/resolvers/todos.ex:246 msgid "Profile is not member of group" msgstr "Profilen er ikkje medlem i gruppa" #, elixir-format -#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/person.ex:233 +#: lib/graphql/resolvers/actor.ex:67 +#: lib/graphql/resolvers/person.ex:233 msgid "Profile not found" msgstr "Fann ikkje profilen" #, elixir-format -#: lib/graphql/resolvers/report.ex:40 +#: lib/graphql/resolvers/report.ex:48 msgid "Report not found" msgstr "Fann ikkje rapporten" #, elixir-format -#: lib/graphql/resolvers/resource.ex:169 lib/graphql/resolvers/resource.ex:196 +#: lib/graphql/resolvers/resource.ex:169 +#: lib/graphql/resolvers/resource.ex:196 msgid "Resource doesn't exist" msgstr "Ressursen finst ikkje" @@ -497,12 +535,14 @@ msgid "This token is invalid" msgstr "Teiknet er ugyldig" #, elixir-format -#: lib/graphql/resolvers/todos.ex:176 lib/graphql/resolvers/todos.ex:243 +#: lib/graphql/resolvers/todos.ex:176 +#: lib/graphql/resolvers/todos.ex:243 msgid "Todo doesn't exist" msgstr "Gjeremålet finst ikkje" #, elixir-format -#: lib/graphql/resolvers/todos.ex:77 lib/graphql/resolvers/todos.ex:211 +#: lib/graphql/resolvers/todos.ex:77 +#: lib/graphql/resolvers/todos.ex:211 #: lib/graphql/resolvers/todos.ex:240 msgid "Todo list doesn't exist" msgstr "Gjeremålslista finst ikkje" @@ -513,12 +553,13 @@ msgid "Token does not exist" msgstr "Teiknet finst ikkje" #, elixir-format -#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70 +#: lib/graphql/resolvers/feed_token.ex:67 +#: lib/graphql/resolvers/feed_token.ex:70 msgid "Token is not a valid UUID" msgstr "Teiknet er ikkje ein gyldig UUID" #, elixir-format -#: lib/graphql/error.ex:96 lib/graphql/resolvers/person.ex:458 +#: lib/graphql/error.ex:96 msgid "User not found" msgstr "Fann ikkje brukaren" @@ -538,7 +579,8 @@ msgid "You are not a member of this group" msgstr "Du er ikkje medlem i denne gruppa" #, elixir-format -#: lib/graphql/resolvers/member.ex:157 lib/graphql/resolvers/member.ex:173 +#: lib/graphql/resolvers/member.ex:157 +#: lib/graphql/resolvers/member.ex:173 #: lib/graphql/resolvers/member.ex:188 msgid "You are not a moderator or admin for this group" msgstr "Du er ikkje styrar eller administrator for denne gruppa" @@ -605,42 +647,42 @@ msgid "You don't have permission to delete this token" msgstr "Du har ikkje løyve til å sletta dette teiknet" #, elixir-format -#: lib/graphql/resolvers/admin.ex:54 +#: lib/graphql/resolvers/admin.ex:56 msgid "You need to be logged-in and a moderator to list action logs" msgstr "" "Du må vera innlogga og ha ei moderatorrolle for å lista opp hendingsloggar" #, elixir-format -#: lib/graphql/resolvers/report.ex:28 +#: lib/graphql/resolvers/report.ex:36 msgid "You need to be logged-in and a moderator to list reports" msgstr "Du må vera innlogga og ha ei moderatorrolle for å lista opp rapportar" #, elixir-format -#: lib/graphql/resolvers/report.ex:107 +#: lib/graphql/resolvers/report.ex:115 msgid "You need to be logged-in and a moderator to update a report" msgstr "Du må vera innlogga og ha ei moderatorrolle for å oppdatera ein rapport" #, elixir-format -#: lib/graphql/resolvers/report.ex:45 +#: lib/graphql/resolvers/report.ex:53 msgid "You need to be logged-in and a moderator to view a report" msgstr "Du må vera innlogga og ha ei moderatorrolle for å lesa rapportar" #, elixir-format -#: lib/graphql/resolvers/admin.ex:255 +#: lib/graphql/resolvers/admin.ex:257 msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" "Du må vera innlogga og ha ei administratorrolle for å sjå admin-" "innstillingane" #, elixir-format -#: lib/graphql/resolvers/admin.ex:239 +#: lib/graphql/resolvers/admin.ex:241 msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" "Du må vera innlogga og ha ei administratorrolle for å sjå statistikk på " "styringspanelet" #, elixir-format -#: lib/graphql/resolvers/admin.ex:281 +#: lib/graphql/resolvers/admin.ex:283 msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" "Du må vera innlogga og ha ei administratorrolle for å lagra admin-" @@ -667,7 +709,7 @@ msgid "You need to be logged-in to create posts" msgstr "Du må vera innlogga for å skriva innlegg" #, elixir-format -#: lib/graphql/resolvers/report.ex:79 +#: lib/graphql/resolvers/report.ex:87 msgid "You need to be logged-in to create reports" msgstr "Du må vera innlogga for å rapportera" @@ -764,7 +806,8 @@ msgid "Reset your password to login" msgstr "Nullstill passordet for å logga inn" #, elixir-format -#: lib/graphql/error.ex:95 lib/graphql/error.ex:100 +#: lib/graphql/error.ex:95 +#: lib/graphql/error.ex:100 msgid "Resource not found" msgstr "Fann ikkje ressursen" @@ -855,8 +898,11 @@ msgid "Profile ID provided is not the anonymous profile one" msgstr "Denne profil-IDen er ikkje den anonyme profilen" #, elixir-format -#: lib/graphql/resolvers/group.ex:161 lib/graphql/resolvers/group.ex:203 -#: lib/graphql/resolvers/person.ex:148 lib/graphql/resolvers/person.ex:182 lib/graphql/resolvers/person.ex:304 +#: lib/graphql/resolvers/group.ex:161 +#: lib/graphql/resolvers/group.ex:203 +#: lib/graphql/resolvers/person.ex:148 +#: lib/graphql/resolvers/person.ex:182 +#: lib/graphql/resolvers/person.ex:304 msgid "The provided picture is too heavy" msgstr "Dette biletet er for stort" @@ -881,7 +927,8 @@ msgid "Unable to fetch resource details from this URL." msgstr "Greidde ikkje henta ressursdetaljane frå denne adressa." #, elixir-format -#: lib/graphql/resolvers/event.ex:164 lib/graphql/resolvers/participant.ex:253 +#: lib/graphql/resolvers/event.ex:164 +#: lib/graphql/resolvers/participant.ex:253 #: lib/graphql/resolvers/participant.ex:328 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "Moderatorprofilen har ikkje tilgang til denne hendinga" @@ -937,6 +984,7 @@ msgid "Failed to update the group" msgstr "Greidde ikkje oppdatera gruppa" #, elixir-format +#: lib/graphql/resolvers/admin.ex:338 #: lib/graphql/resolvers/user.ex:469 msgid "Failed to update user email" msgstr "Greidde ikkje oppdatera epostadressa til brukaren" @@ -1066,3 +1114,25 @@ msgstr "" #: lib/graphql/resolvers/user.ex:157 msgid "Your email seems to be using an invalid format" msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:387 +msgid "Can't confirm an already confirmed user" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:391 +msgid "Deconfirming users is not supported" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:363 +msgid "The new role must be different" +msgstr "Den nye epostadressa må vera annleis" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:314 +msgid "You need to be logged-in and an administrator to edit an user's details" +msgstr "" +"Du må vera innlogga og ha ei administratorrolle for å lagra admin-" +"innstillingar" diff --git a/priv/gettext/oc/LC_MESSAGES/activity.po b/priv/gettext/oc/LC_MESSAGES/activity.po index 454e60e71..929a2cbc0 100644 --- a/priv/gettext/oc/LC_MESSAGES/activity.po +++ b/priv/gettext/oc/LC_MESSAGES/activity.po @@ -151,19 +151,22 @@ msgstr "" #, 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.text.eex:1 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:1 msgid "The event %{event} was created by %{profile}." msgstr "" #, 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.text.eex:13 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:34 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:13 msgid "The event %{event} was deleted by %{profile}." msgstr "" #, 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.text.eex:7 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:19 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:7 msgid "The event %{event} was updated by %{profile}." msgstr "" @@ -193,13 +196,15 @@ msgstr "" #, 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.text.eex:25 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:58 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:25 msgid "%{profile} posted a comment on the event %{event}." msgstr "" #, 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.text.eex:19 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:43 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:19 msgid "%{profile} replied to a comment on the event %{event}." msgstr "" @@ -218,7 +223,8 @@ 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.text.eex:6 +#: lib/web/templates/email/email_direct_activity.html.heex:46 +#: 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!" msgid_plural "There has been some activity!" @@ -232,14 +238,17 @@ msgstr "" #, 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.text.eex:7 -#: lib/web/templates/email/email_anonymous_activity.html.heex:41 lib/web/templates/email/email_anonymous_activity.text.eex:5 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:19 +#: 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.text.eex:5 msgid "%{profile} has posted an announcement under event %{event}." msgstr "" #, 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.text.eex:1 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 msgid "%{profile} mentionned you in a comment under event %{event}." msgstr "" @@ -255,7 +264,8 @@ msgid "Here's your weekly activity recap" msgstr "" #, elixir-format -#: lib/web/email/activity.ex:119 lib/web/email/activity.ex:140 +#: lib/web/email/activity.ex:119 +#: lib/web/email/activity.ex:140 msgid "Activity notification for %{instance}" msgstr "" @@ -277,13 +287,15 @@ msgstr "" #, 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.text.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:51 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:19 msgid "%{profile} has posted a new comment under your event %{event}." msgstr "" #, 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.text.eex:13 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:36 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:13 msgid "%{profile} has posted a new reply under your event %{event}." msgstr "" diff --git a/priv/gettext/oc/LC_MESSAGES/default.po b/priv/gettext/oc/LC_MESSAGES/default.po index 95387c167..4247cc3e8 100644 --- a/priv/gettext/oc/LC_MESSAGES/default.po +++ b/priv/gettext/oc/LC_MESSAGES/default.po @@ -836,9 +836,12 @@ msgstr "Mercés de l’utilizar pas d’un biais real." #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:63 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:133 -#: lib/web/templates/email/event_updated.text.eex:14 lib/web/templates/email/notification_each_week.html.heex:60 -#: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:60 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 +#: lib/web/templates/email/event_updated.html.heex:133 +#: lib/web/templates/email/event_updated.text.eex:14 +#: lib/web/templates/email/notification_each_week.html.heex:60 +#: lib/web/templates/email/notification_each_week.text.eex:11 +#: lib/web/templates/email/on_day_notification.html.heex:60 #: lib/web/templates/email/on_day_notification.text.eex:11 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." @@ -903,7 +906,6 @@ msgstr "" #, elixir-format #: lib/web/templates/email/email_changed_new.html.heex:38 -#: lib/web/templates/email/email_changed_new.text.eex:3 msgid "Hi there! It seems like you wanted to change the email address linked to your account on <b>%{instance}</b>. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." msgstr "" @@ -925,7 +927,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:70 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.heex:45 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 +#: lib/web/templates/email/registration_confirmation.html.heex:45 msgid "If you didn't trigger this email, you may safely ignore it." msgstr "S’avètz pas demandat aquò, mercés d’ignorar aqueste messatge." @@ -1043,7 +1046,8 @@ msgstr "Veire lo senhalament :" #, elixir-format #: lib/web/templates/email/email_anonymous_activity.html.heex:67 -#: lib/web/templates/email/event_participation_approved.html.heex:58 lib/web/templates/email/event_participation_confirmed.html.heex:58 +#: lib/web/templates/email/event_participation_approved.html.heex:58 +#: lib/web/templates/email/event_participation_confirmed.html.heex:58 msgid "Visit event page" msgstr "Veire la pagina de l'eveniment" @@ -1065,7 +1069,8 @@ msgstr "Qué de nòu uèi ?" #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:70 -#: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.heex:70 +#: lib/web/templates/email/event_participation_approved.text.eex:11 +#: lib/web/templates/email/event_participation_confirmed.html.heex:70 #: lib/web/templates/email/event_participation_confirmed.text.eex:6 msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." msgstr "" @@ -1089,7 +1094,8 @@ msgstr "Avètz demandat de participar a l’eveniment %{title}." #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:13 -#: lib/web/templates/email/event_participation_confirmed.html.heex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 +#: lib/web/templates/email/event_participation_confirmed.html.heex:13 +#: lib/web/templates/email/event_participation_confirmed.text.eex:1 msgid "You're going!" msgstr "I anatz !" @@ -1424,8 +1430,10 @@ msgstr "" "Aquò es un site de demostracion per ensajar la version beta de Mobilizon." #, elixir-format -#: lib/service/metadata/actor.ex:91 lib/service/metadata/actor.ex:99 -#: lib/service/metadata/instance.ex:56 lib/service/metadata/instance.ex:62 +#: lib/service/metadata/actor.ex:91 +#: lib/service/metadata/actor.ex:99 +#: lib/service/metadata/instance.ex:56 +#: lib/service/metadata/instance.ex:62 msgid "%{name}'s feed" msgstr "" @@ -1506,7 +1514,8 @@ msgstr "Vòstra participacion a l’eveniment %{title} es estada aprovada" #. File name template for exported list of participants. Should NOT contain spaces. Make sure the output is going to be something standardized that is acceptable as a file name on most systems. #, elixir-format #: lib/service/export/participants/csv.ex:81 -#: lib/service/export/participants/ods.ex:86 lib/service/export/participants/pdf.ex:96 +#: lib/service/export/participants/ods.ex:86 +#: lib/service/export/participants/pdf.ex:96 msgid "%{event}_participants" msgstr "" @@ -1527,6 +1536,8 @@ msgstr "" #, elixir-format #: lib/service/export/participants/common.ex:52 +#: lib/web/templates/email/admin/_role.html.heex:3 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Administrator" msgstr "" @@ -1537,6 +1548,8 @@ msgstr "" #, elixir-format #: lib/service/export/participants/common.ex:49 +#: lib/web/templates/email/admin/_role.html.heex:5 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Moderator" msgstr "" @@ -1587,8 +1600,10 @@ msgstr "" #, elixir-format #: lib/web/templates/email/date/event_tz_date.html.heex:6 -#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 lib/web/templates/email/date/event_tz_date_range.html.heex:12 -#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:12 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 msgid "🌐 %{timezone} %{offset}" msgstr "" @@ -1776,3 +1791,137 @@ msgid "You have one pending attendance request to process for the following even msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" msgstr[0] "" msgstr[1] "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:13 +#: lib/web/templates/email/admin_user_role_changed.text.eex:1 +msgid "An administrator changed your role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:120 +msgid "An administrator confirmed your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:1 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:1 +msgid "An administrator manually changed the email attached to your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:47 +#: lib/web/email/admin.ex:72 +msgid "An administrator manually changed the email attached to your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:13 +#: lib/web/templates/email/admin_user_confirmation.text.eex:1 +msgid "An administrator manually confirmed your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:98 +msgid "An administrator updated your role on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/email_changed_new.text.eex:3 +msgid "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:3 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually changed your account email from %{old_email} (this one) to %{new_email}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> (this one) to <b>%{new_email}</b>." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> to <b>%{new_email}</b> (this one)." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:71 +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:45 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:45 +#: lib/web/templates/email/admin_user_role_changed.html.heex:67 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods %{start_link}on the instance's about page%{end_link}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:7 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:4 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:4 +#: lib/web/templates/email/admin_user_role_changed.text.eex:8 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods on the instance's about page: %{about_page}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:58 +msgid "Login on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:55 +msgid "New role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:6 +msgid "New role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:47 +msgid "Old role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:5 +msgid "Old role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin/_role.html.heex:7 +#: lib/web/templates/email/admin/_role.text.eex:1 +msgid "User" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:45 +msgid "You may now login using your credentials on the service." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:5 +msgid "You may now login using your credentials on the service:" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just changed your account role." +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just changed your account role." +msgstr "" diff --git a/priv/gettext/oc/LC_MESSAGES/errors.po b/priv/gettext/oc/LC_MESSAGES/errors.po index 13dd8ea57..461b250f2 100644 --- a/priv/gettext/oc/LC_MESSAGES/errors.po +++ b/priv/gettext/oc/LC_MESSAGES/errors.po @@ -115,14 +115,19 @@ msgid "Error while saving user settings" msgstr "Error en salvagardant los paramètres utilizaire" #, elixir-format -#: lib/graphql/error.ex:99 lib/graphql/resolvers/group.ex:249 -#: lib/graphql/resolvers/group.ex:281 lib/graphql/resolvers/group.ex:318 lib/graphql/resolvers/group.ex:349 -#: lib/graphql/resolvers/group.ex:398 lib/graphql/resolvers/member.ex:81 +#: lib/graphql/error.ex:99 +#: lib/graphql/resolvers/group.ex:249 +#: lib/graphql/resolvers/group.ex:281 +#: lib/graphql/resolvers/group.ex:318 +#: lib/graphql/resolvers/group.ex:349 +#: lib/graphql/resolvers/group.ex:398 +#: lib/graphql/resolvers/member.ex:81 msgid "Group not found" msgstr "Grop pas trobat" #, elixir-format -#: lib/graphql/resolvers/group.ex:78 lib/graphql/resolvers/group.ex:82 +#: lib/graphql/resolvers/group.ex:78 +#: lib/graphql/resolvers/group.ex:82 msgid "Group with ID %{id} not found" msgstr "Grop amb l’ID %{id} pas trobat" @@ -149,15 +154,21 @@ msgid "No user to validate with this email was found" msgstr "Cap d’utilizaire de validar amb aqueste email pas trobat" #, elixir-format -#: lib/graphql/resolvers/person.ex:314 lib/graphql/resolvers/user.ex:298 +#: lib/graphql/resolvers/person.ex:314 +#: lib/graphql/resolvers/user.ex:298 msgid "No user with this email was found" msgstr "Degun trobat d'amb aquesta email" #, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:32 lib/graphql/resolvers/participant.ex:210 lib/graphql/resolvers/person.ex:236 -#: lib/graphql/resolvers/person.ex:353 lib/graphql/resolvers/person.ex:380 lib/graphql/resolvers/person.ex:397 -#: lib/graphql/resolvers/person.ex:425 lib/graphql/resolvers/person.ex:440 +#: lib/graphql/resolvers/participant.ex:32 +#: lib/graphql/resolvers/participant.ex:210 +#: lib/graphql/resolvers/person.ex:236 +#: lib/graphql/resolvers/person.ex:353 +#: lib/graphql/resolvers/person.ex:380 +#: lib/graphql/resolvers/person.ex:397 +#: lib/graphql/resolvers/person.ex:425 +#: lib/graphql/resolvers/person.ex:440 msgid "Profile is not owned by authenticated user" msgstr "Lo perhiu es pas proprietat del utilizator autenticat" @@ -172,11 +183,13 @@ msgid "The current password is invalid" msgstr "Lo mòt de santa clara actuau es invalid" #, elixir-format +#: lib/graphql/resolvers/admin.ex:341 #: lib/graphql/resolvers/user.ex:472 msgid "The new email doesn't seem to be valid" msgstr "Lo email nau sèm invalid" #, elixir-format +#: lib/graphql/resolvers/admin.ex:344 #: lib/graphql/resolvers/user.ex:475 msgid "The new email must be different" msgstr "Lo email nau deb esser different" @@ -187,7 +200,8 @@ msgid "The new password must be different" msgstr "Lo mòt de santa clara nau deb esser different" #, elixir-format -#: lib/graphql/resolvers/user.ex:479 lib/graphql/resolvers/user.ex:541 +#: lib/graphql/resolvers/user.ex:479 +#: lib/graphql/resolvers/user.ex:541 #: lib/graphql/resolvers/user.ex:544 msgid "The password provided is invalid" msgstr "Lo mòt de santa clara aprovedit es invalid" @@ -210,7 +224,8 @@ msgid "This user has been disabled" msgstr "Aquest utilizator a essat dasactivat" #, elixir-format -#: lib/graphql/resolvers/user.ex:252 lib/graphql/resolvers/user.ex:257 +#: lib/graphql/resolvers/user.ex:252 +#: lib/graphql/resolvers/user.ex:257 msgid "Unable to validate user" msgstr "Es impossible de validar l'utilizator" @@ -285,7 +300,8 @@ msgid "You need to have an existing token to get a refresh token" msgstr "Devetz aver un senhau existant per obtiéner un senhau nau" #, elixir-format -#: lib/graphql/resolvers/user.ex:276 lib/graphql/resolvers/user.ex:301 +#: lib/graphql/resolvers/user.ex:276 +#: lib/graphql/resolvers/user.ex:301 msgid "You requested again a confirmation email too soon" msgstr "Demandatz de nau un email de confirmacion tròp lèu" @@ -305,7 +321,8 @@ msgid "No profile found with this ID" msgstr "Cap de profiu trobat d'amb aquesta ID" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:97 +#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:97 msgid "No remote profile found with this ID" msgstr "Cap de profiu distant trobat d'amb aquesta ID" @@ -357,17 +374,19 @@ msgid "Comment is already deleted" msgstr "Comentari déjà suprimit" #, elixir-format -#: lib/graphql/error.ex:101 lib/graphql/resolvers/discussion.ex:69 +#: lib/graphql/error.ex:101 +#: lib/graphql/resolvers/discussion.ex:69 msgid "Discussion not found" msgstr "Discussion non trobada" #, elixir-format -#: lib/graphql/resolvers/report.ex:63 lib/graphql/resolvers/report.ex:82 +#: lib/graphql/resolvers/report.ex:71 +#: lib/graphql/resolvers/report.ex:90 msgid "Error while saving report" msgstr "Error mentre que sauvant lo rapòrt" #, elixir-format -#: lib/graphql/resolvers/report.ex:102 +#: lib/graphql/resolvers/report.ex:110 msgid "Error while updating report" msgstr "Error mentre la mesa a jorn dèu rapòrt" @@ -377,14 +396,16 @@ msgid "Event id not found" msgstr "ID d'eveniment non trobat" #, elixir-format -#: lib/graphql/error.ex:98 lib/graphql/resolvers/event.ex:360 +#: lib/graphql/error.ex:98 +#: lib/graphql/resolvers/event.ex:360 #: lib/graphql/resolvers/event.ex:412 msgid "Event not found" msgstr "Eveniment non trobat" #, elixir-format #: lib/graphql/resolvers/participant.ex:87 -#: lib/graphql/resolvers/participant.ex:128 lib/graphql/resolvers/participant.ex:155 +#: lib/graphql/resolvers/participant.ex:128 +#: lib/graphql/resolvers/participant.ex:155 #: lib/graphql/resolvers/participant.ex:336 msgid "Event with this ID %{id} doesn't exist" msgstr "Un eveniment d'amb aquesta ID %{id} existís pas" @@ -400,8 +421,11 @@ msgid "No discussion with ID %{id}" msgstr "Cap de discussion d'amb aquesta ID %{id}" #, elixir-format -#: lib/graphql/resolvers/todos.ex:80 lib/graphql/resolvers/todos.ex:107 -#: lib/graphql/resolvers/todos.ex:179 lib/graphql/resolvers/todos.ex:208 lib/graphql/resolvers/todos.ex:237 +#: lib/graphql/resolvers/todos.ex:80 +#: lib/graphql/resolvers/todos.ex:107 +#: lib/graphql/resolvers/todos.ex:179 +#: lib/graphql/resolvers/todos.ex:208 +#: lib/graphql/resolvers/todos.ex:237 msgid "No profile found for user" msgstr "Cap de profiu trobat per l'utilizator" @@ -417,7 +441,8 @@ msgstr "Lo/a participant-a a déjà lo ròtle %{role}" #, elixir-format #: lib/graphql/resolvers/participant.ex:187 -#: lib/graphql/resolvers/participant.ex:220 lib/graphql/resolvers/participant.ex:263 +#: lib/graphql/resolvers/participant.ex:220 +#: lib/graphql/resolvers/participant.ex:263 msgid "Participant not found" msgstr "Participant non trobat" @@ -432,12 +457,14 @@ msgid "Person with username %{username} not found" msgstr "Degun trobat d'amb l'utilizator %{username}" #, elixir-format -#: lib/graphql/resolvers/post.ex:169 lib/graphql/resolvers/post.ex:203 +#: lib/graphql/resolvers/post.ex:169 +#: lib/graphql/resolvers/post.ex:203 msgid "Post ID is not a valid ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:172 lib/graphql/resolvers/post.ex:206 +#: lib/graphql/resolvers/post.ex:172 +#: lib/graphql/resolvers/post.ex:206 msgid "Post doesn't exist" msgstr "" @@ -447,31 +474,42 @@ msgid "Profile invited doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/member.ex:93 lib/graphql/resolvers/member.ex:97 +#: lib/graphql/resolvers/member.ex:93 +#: lib/graphql/resolvers/member.ex:97 msgid "Profile is already a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:133 lib/graphql/resolvers/post.ex:175 -#: lib/graphql/resolvers/post.ex:209 lib/graphql/resolvers/resource.ex:90 lib/graphql/resolvers/resource.ex:132 -#: lib/graphql/resolvers/resource.ex:165 lib/graphql/resolvers/resource.ex:199 lib/graphql/resolvers/todos.ex:58 -#: lib/graphql/resolvers/todos.ex:83 lib/graphql/resolvers/todos.ex:110 lib/graphql/resolvers/todos.ex:182 -#: lib/graphql/resolvers/todos.ex:214 lib/graphql/resolvers/todos.ex:246 +#: lib/graphql/resolvers/post.ex:133 +#: lib/graphql/resolvers/post.ex:175 +#: lib/graphql/resolvers/post.ex:209 +#: lib/graphql/resolvers/resource.ex:90 +#: lib/graphql/resolvers/resource.ex:132 +#: lib/graphql/resolvers/resource.ex:165 +#: lib/graphql/resolvers/resource.ex:199 +#: lib/graphql/resolvers/todos.ex:58 +#: lib/graphql/resolvers/todos.ex:83 +#: lib/graphql/resolvers/todos.ex:110 +#: lib/graphql/resolvers/todos.ex:182 +#: lib/graphql/resolvers/todos.ex:214 +#: lib/graphql/resolvers/todos.ex:246 msgid "Profile is not member of group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/person.ex:233 +#: lib/graphql/resolvers/actor.ex:67 +#: lib/graphql/resolvers/person.ex:233 msgid "Profile not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:40 +#: lib/graphql/resolvers/report.ex:48 msgid "Report not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/resource.ex:169 lib/graphql/resolvers/resource.ex:196 +#: lib/graphql/resolvers/resource.ex:169 +#: lib/graphql/resolvers/resource.ex:196 msgid "Resource doesn't exist" msgstr "" @@ -486,12 +524,14 @@ msgid "This token is invalid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/todos.ex:176 lib/graphql/resolvers/todos.ex:243 +#: lib/graphql/resolvers/todos.ex:176 +#: lib/graphql/resolvers/todos.ex:243 msgid "Todo doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/todos.ex:77 lib/graphql/resolvers/todos.ex:211 +#: lib/graphql/resolvers/todos.ex:77 +#: lib/graphql/resolvers/todos.ex:211 #: lib/graphql/resolvers/todos.ex:240 msgid "Todo list doesn't exist" msgstr "" @@ -502,12 +542,13 @@ msgid "Token does not exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70 +#: lib/graphql/resolvers/feed_token.ex:67 +#: lib/graphql/resolvers/feed_token.ex:70 msgid "Token is not a valid UUID" msgstr "" #, elixir-format -#: lib/graphql/error.ex:96 lib/graphql/resolvers/person.ex:458 +#: lib/graphql/error.ex:96 msgid "User not found" msgstr "" @@ -527,7 +568,8 @@ msgid "You are not a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/member.ex:157 lib/graphql/resolvers/member.ex:173 +#: lib/graphql/resolvers/member.ex:157 +#: lib/graphql/resolvers/member.ex:173 #: lib/graphql/resolvers/member.ex:188 msgid "You are not a moderator or admin for this group" msgstr "" @@ -589,37 +631,37 @@ msgid "You don't have permission to delete this token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:54 +#: lib/graphql/resolvers/admin.ex:56 msgid "You need to be logged-in and a moderator to list action logs" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:28 +#: lib/graphql/resolvers/report.ex:36 msgid "You need to be logged-in and a moderator to list reports" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:107 +#: lib/graphql/resolvers/report.ex:115 msgid "You need to be logged-in and a moderator to update a report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:45 +#: lib/graphql/resolvers/report.ex:53 msgid "You need to be logged-in and a moderator to view a report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:255 +#: lib/graphql/resolvers/admin.ex:257 msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:239 +#: lib/graphql/resolvers/admin.ex:241 msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:281 +#: lib/graphql/resolvers/admin.ex:283 msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" @@ -644,7 +686,7 @@ msgid "You need to be logged-in to create posts" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:79 +#: lib/graphql/resolvers/report.ex:87 msgid "You need to be logged-in to create reports" msgstr "" @@ -739,7 +781,8 @@ msgid "Reset your password to login" msgstr "" #, elixir-format -#: lib/graphql/error.ex:95 lib/graphql/error.ex:100 +#: lib/graphql/error.ex:95 +#: lib/graphql/error.ex:100 msgid "Resource not found" msgstr "" @@ -829,8 +872,11 @@ msgid "Profile ID provided is not the anonymous profile one" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:161 lib/graphql/resolvers/group.ex:203 -#: lib/graphql/resolvers/person.ex:148 lib/graphql/resolvers/person.ex:182 lib/graphql/resolvers/person.ex:304 +#: lib/graphql/resolvers/group.ex:161 +#: lib/graphql/resolvers/group.ex:203 +#: lib/graphql/resolvers/person.ex:148 +#: lib/graphql/resolvers/person.ex:182 +#: lib/graphql/resolvers/person.ex:304 msgid "The provided picture is too heavy" msgstr "" @@ -855,7 +901,8 @@ msgid "Unable to fetch resource details from this URL." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:164 lib/graphql/resolvers/participant.ex:253 +#: lib/graphql/resolvers/event.ex:164 +#: lib/graphql/resolvers/participant.ex:253 #: lib/graphql/resolvers/participant.ex:328 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "" @@ -906,6 +953,7 @@ msgid "Failed to update the group" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:338 #: lib/graphql/resolvers/user.ex:469 msgid "Failed to update user email" msgstr "" @@ -1034,3 +1082,23 @@ msgstr "" #: lib/graphql/resolvers/user.ex:157 msgid "Your email seems to be using an invalid format" msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:387 +msgid "Can't confirm an already confirmed user" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:391 +msgid "Deconfirming users is not supported" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:363 +msgid "The new role must be different" +msgstr "Lo email nau deb esser different" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:314 +msgid "You need to be logged-in and an administrator to edit an user's details" +msgstr "" diff --git a/priv/gettext/pl/LC_MESSAGES/activity.po b/priv/gettext/pl/LC_MESSAGES/activity.po index 9936bef52..811742a8e 100644 --- a/priv/gettext/pl/LC_MESSAGES/activity.po +++ b/priv/gettext/pl/LC_MESSAGES/activity.po @@ -151,19 +151,22 @@ msgstr "" #, 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.text.eex:1 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:1 msgid "The event %{event} was created by %{profile}." msgstr "" #, 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.text.eex:13 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:34 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:13 msgid "The event %{event} was deleted by %{profile}." msgstr "" #, 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.text.eex:7 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:19 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:7 msgid "The event %{event} was updated by %{profile}." msgstr "" @@ -193,13 +196,15 @@ msgstr "" #, 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.text.eex:25 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:58 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:25 msgid "%{profile} posted a comment on the event %{event}." msgstr "" #, 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.text.eex:19 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:43 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:19 msgid "%{profile} replied to a comment on the event %{event}." msgstr "" @@ -219,7 +224,8 @@ 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.text.eex:6 +#: lib/web/templates/email/email_direct_activity.html.heex:46 +#: 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!" msgid_plural "There has been some activity!" @@ -234,14 +240,17 @@ msgstr "" #, 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.text.eex:7 -#: lib/web/templates/email/email_anonymous_activity.html.heex:41 lib/web/templates/email/email_anonymous_activity.text.eex:5 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:19 +#: 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.text.eex:5 msgid "%{profile} has posted an announcement under event %{event}." msgstr "" #, 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.text.eex:1 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 msgid "%{profile} mentionned you in a comment under event %{event}." msgstr "" @@ -257,7 +266,8 @@ msgid "Here's your weekly activity recap" msgstr "" #, elixir-format -#: lib/web/email/activity.ex:119 lib/web/email/activity.ex:140 +#: lib/web/email/activity.ex:119 +#: lib/web/email/activity.ex:140 msgid "Activity notification for %{instance}" msgstr "" @@ -279,13 +289,15 @@ msgstr "" #, 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.text.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:51 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:19 msgid "%{profile} has posted a new comment under your event %{event}." msgstr "" #, 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.text.eex:13 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:36 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:13 msgid "%{profile} has posted a new reply under your event %{event}." msgstr "" diff --git a/priv/gettext/pl/LC_MESSAGES/default.po b/priv/gettext/pl/LC_MESSAGES/default.po index 15ed06cba..bb988565f 100644 --- a/priv/gettext/pl/LC_MESSAGES/default.po +++ b/priv/gettext/pl/LC_MESSAGES/default.po @@ -829,9 +829,12 @@ msgstr "Nie używaj go do żadnych rzeczywistych celów" #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:63 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:133 -#: lib/web/templates/email/event_updated.text.eex:14 lib/web/templates/email/notification_each_week.html.heex:60 -#: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:60 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 +#: lib/web/templates/email/event_updated.html.heex:133 +#: lib/web/templates/email/event_updated.text.eex:14 +#: lib/web/templates/email/notification_each_week.html.heex:60 +#: lib/web/templates/email/notification_each_week.text.eex:11 +#: lib/web/templates/email/on_day_notification.html.heex:60 #: lib/web/templates/email/on_day_notification.text.eex:11 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." @@ -900,7 +903,6 @@ msgstr "" #, elixir-format #: lib/web/templates/email/email_changed_new.html.heex:38 -#: lib/web/templates/email/email_changed_new.text.eex:3 msgid "Hi there! It seems like you wanted to change the email address linked to your account on <b>%{instance}</b>. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." msgstr "" "Cześć! Wydaje się, że próbowałeś(-aś) zmienić adres e-mail połączony z Twoim " @@ -932,7 +934,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:70 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.heex:45 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 +#: lib/web/templates/email/registration_confirmation.html.heex:45 msgid "If you didn't trigger this email, you may safely ignore it." msgstr "Jeżeli o to nie prosiłeś(-aś), zignoruj tę wiadomość." @@ -1048,7 +1051,8 @@ msgstr "Zobacz zgłoszenie" #, elixir-format #: lib/web/templates/email/email_anonymous_activity.html.heex:67 -#: lib/web/templates/email/event_participation_approved.html.heex:58 lib/web/templates/email/event_participation_confirmed.html.heex:58 +#: lib/web/templates/email/event_participation_approved.html.heex:58 +#: lib/web/templates/email/event_participation_confirmed.html.heex:58 msgid "Visit event page" msgstr "Odwiedź stronę wydarzenia" @@ -1070,7 +1074,8 @@ msgstr "Co dziś się wydarzy?" #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:70 -#: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.heex:70 +#: lib/web/templates/email/event_participation_approved.text.eex:11 +#: lib/web/templates/email/event_participation_confirmed.html.heex:70 #: lib/web/templates/email/event_participation_confirmed.text.eex:6 msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." msgstr "" @@ -1094,7 +1099,8 @@ msgstr "Poprosiłeś(-aś) o uczestnictwo w wydarzeniu %{title}." #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:13 -#: lib/web/templates/email/event_participation_confirmed.html.heex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 +#: lib/web/templates/email/event_participation_confirmed.html.heex:13 +#: lib/web/templates/email/event_participation_confirmed.text.eex:1 msgid "You're going!" msgstr "Weźmiesz udział!" @@ -1433,8 +1439,10 @@ msgid "This is a demonstration site to test Mobilizon." msgstr "To jest strona demonstracyjna pozwalająca na przetestowanie Mobilizon." #, elixir-format -#: lib/service/metadata/actor.ex:91 lib/service/metadata/actor.ex:99 -#: lib/service/metadata/instance.ex:56 lib/service/metadata/instance.ex:62 +#: lib/service/metadata/actor.ex:91 +#: lib/service/metadata/actor.ex:99 +#: lib/service/metadata/instance.ex:56 +#: lib/service/metadata/instance.ex:62 msgid "%{name}'s feed" msgstr "" @@ -1515,7 +1523,8 @@ msgstr "Twój udział w wydarzeniu %{title} został zatwierdzony" #. File name template for exported list of participants. Should NOT contain spaces. Make sure the output is going to be something standardized that is acceptable as a file name on most systems. #, elixir-format #: lib/service/export/participants/csv.ex:81 -#: lib/service/export/participants/ods.ex:86 lib/service/export/participants/pdf.ex:96 +#: lib/service/export/participants/ods.ex:86 +#: lib/service/export/participants/pdf.ex:96 msgid "%{event}_participants" msgstr "" @@ -1536,6 +1545,8 @@ msgstr "" #, elixir-format #: lib/service/export/participants/common.ex:52 +#: lib/web/templates/email/admin/_role.html.heex:3 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Administrator" msgstr "" @@ -1546,6 +1557,8 @@ msgstr "" #, elixir-format #: lib/service/export/participants/common.ex:49 +#: lib/web/templates/email/admin/_role.html.heex:5 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Moderator" msgstr "" @@ -1596,8 +1609,10 @@ msgstr "" #, elixir-format #: lib/web/templates/email/date/event_tz_date.html.heex:6 -#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 lib/web/templates/email/date/event_tz_date_range.html.heex:12 -#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:12 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 msgid "🌐 %{timezone} %{offset}" msgstr "" @@ -1790,3 +1805,141 @@ msgstr[1] "" msgstr[2] "" "Masz %{number_participation_requests} próśb o zatwierdzenie uczestnictwa do " "przejrzenia:" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:13 +#: lib/web/templates/email/admin_user_role_changed.text.eex:1 +msgid "An administrator changed your role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:120 +msgid "An administrator confirmed your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:1 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:1 +msgid "An administrator manually changed the email attached to your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:47 +#: lib/web/email/admin.ex:72 +msgid "An administrator manually changed the email attached to your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:13 +#: lib/web/templates/email/admin_user_confirmation.text.eex:1 +msgid "An administrator manually confirmed your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:98 +msgid "An administrator updated your role on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/email_changed_new.text.eex:3 +msgid "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." +msgstr "" +"Cześć! Wydaje się, że próbowałeś(-aś) zmienić adres e-mail połączony z Twoim " +"kontem na <b>%{instance}</b>. Jeżeli nadal chcesz to zrobić, naciśnij na " +"poniższy przycisk aby potwierdzić zmianę. Będziesz mógł/mogła logować się na " +"%{instance} używając tego nowego adresu e-mail." + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:3 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually changed your account email from %{old_email} (this one) to %{new_email}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> (this one) to <b>%{new_email}</b>." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> to <b>%{new_email}</b> (this one)." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:71 +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:45 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:45 +#: lib/web/templates/email/admin_user_role_changed.html.heex:67 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods %{start_link}on the instance's about page%{end_link}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:7 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:4 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:4 +#: lib/web/templates/email/admin_user_role_changed.text.eex:8 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods on the instance's about page: %{about_page}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:58 +msgid "Login on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:55 +msgid "New role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:6 +msgid "New role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:47 +msgid "Old role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:5 +msgid "Old role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin/_role.html.heex:7 +#: lib/web/templates/email/admin/_role.text.eex:1 +msgid "User" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:45 +msgid "You may now login using your credentials on the service." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:5 +msgid "You may now login using your credentials on the service:" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just changed your account role." +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just changed your account role." +msgstr "" diff --git a/priv/gettext/pl/LC_MESSAGES/errors.po b/priv/gettext/pl/LC_MESSAGES/errors.po index 79bb27624..6013b16c5 100644 --- a/priv/gettext/pl/LC_MESSAGES/errors.po +++ b/priv/gettext/pl/LC_MESSAGES/errors.po @@ -122,14 +122,19 @@ msgid "Error while saving user settings" msgstr "Błąd zapisywania ustawień użytkownika" #, elixir-format -#: lib/graphql/error.ex:99 lib/graphql/resolvers/group.ex:249 -#: lib/graphql/resolvers/group.ex:281 lib/graphql/resolvers/group.ex:318 lib/graphql/resolvers/group.ex:349 -#: lib/graphql/resolvers/group.ex:398 lib/graphql/resolvers/member.ex:81 +#: lib/graphql/error.ex:99 +#: lib/graphql/resolvers/group.ex:249 +#: lib/graphql/resolvers/group.ex:281 +#: lib/graphql/resolvers/group.ex:318 +#: lib/graphql/resolvers/group.ex:349 +#: lib/graphql/resolvers/group.ex:398 +#: lib/graphql/resolvers/member.ex:81 msgid "Group not found" msgstr "Nie odnaleziono grupy" #, elixir-format -#: lib/graphql/resolvers/group.ex:78 lib/graphql/resolvers/group.ex:82 +#: lib/graphql/resolvers/group.ex:78 +#: lib/graphql/resolvers/group.ex:82 msgid "Group with ID %{id} not found" msgstr "Nie odnaleziono grupy o ID %{id}" @@ -156,15 +161,21 @@ msgstr "" "Nie znaleziono użytkownika do zatwierdzenia z użyciem tego adresu e-mail" #, elixir-format -#: lib/graphql/resolvers/person.ex:314 lib/graphql/resolvers/user.ex:298 +#: lib/graphql/resolvers/person.ex:314 +#: lib/graphql/resolvers/user.ex:298 msgid "No user with this email was found" msgstr "Nie znaleziono użytkownika o tym adresie e-mail" #, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:32 lib/graphql/resolvers/participant.ex:210 lib/graphql/resolvers/person.ex:236 -#: lib/graphql/resolvers/person.ex:353 lib/graphql/resolvers/person.ex:380 lib/graphql/resolvers/person.ex:397 -#: lib/graphql/resolvers/person.ex:425 lib/graphql/resolvers/person.ex:440 +#: lib/graphql/resolvers/participant.ex:32 +#: lib/graphql/resolvers/participant.ex:210 +#: lib/graphql/resolvers/person.ex:236 +#: lib/graphql/resolvers/person.ex:353 +#: lib/graphql/resolvers/person.ex:380 +#: lib/graphql/resolvers/person.ex:397 +#: lib/graphql/resolvers/person.ex:425 +#: lib/graphql/resolvers/person.ex:440 msgid "Profile is not owned by authenticated user" msgstr "Profil nie należy do uwierzytelnionego użytkownika" @@ -179,11 +190,13 @@ msgid "The current password is invalid" msgstr "Obecne hasło jest nieprawidłowe" #, elixir-format +#: lib/graphql/resolvers/admin.ex:341 #: lib/graphql/resolvers/user.ex:472 msgid "The new email doesn't seem to be valid" msgstr "Nowy adres e-mail nie wydaje się być prawidłowy" #, elixir-format +#: lib/graphql/resolvers/admin.ex:344 #: lib/graphql/resolvers/user.ex:475 msgid "The new email must be different" msgstr "Nowy adres e-mail musi się różnić od obecnego" @@ -194,7 +207,8 @@ msgid "The new password must be different" msgstr "Nowe hasło musi różnić się od obecnego" #, elixir-format -#: lib/graphql/resolvers/user.ex:479 lib/graphql/resolvers/user.ex:541 +#: lib/graphql/resolvers/user.ex:479 +#: lib/graphql/resolvers/user.ex:541 #: lib/graphql/resolvers/user.ex:544 msgid "The password provided is invalid" msgstr "Wprowadzone hasło jest nieprawidłowe" @@ -217,7 +231,8 @@ msgid "This user has been disabled" msgstr "Ten użytkownik jest wyłączony" #, elixir-format -#: lib/graphql/resolvers/user.ex:252 lib/graphql/resolvers/user.ex:257 +#: lib/graphql/resolvers/user.ex:252 +#: lib/graphql/resolvers/user.ex:257 msgid "Unable to validate user" msgstr "Nie udało się zwalidować użytkownika" @@ -293,7 +308,8 @@ msgid "You need to have an existing token to get a refresh token" msgstr "Musisz mieć istniejący token, aby uzyskać token odświeżający" #, elixir-format -#: lib/graphql/resolvers/user.ex:276 lib/graphql/resolvers/user.ex:301 +#: lib/graphql/resolvers/user.ex:276 +#: lib/graphql/resolvers/user.ex:301 msgid "You requested again a confirmation email too soon" msgstr "Zbyt wcześnie poprosiłeś(-aś) o nową wiadomość potwierdzającą" @@ -313,7 +329,8 @@ msgid "No profile found with this ID" msgstr "Nie ma profilu o tym ID" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:97 +#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:97 msgid "No remote profile found with this ID" msgstr "Nie ma zdalnego profilu o tym ID" @@ -364,17 +381,19 @@ msgid "Comment is already deleted" msgstr "Komentarz jest już usunięty" #, elixir-format -#: lib/graphql/error.ex:101 lib/graphql/resolvers/discussion.ex:69 +#: lib/graphql/error.ex:101 +#: lib/graphql/resolvers/discussion.ex:69 msgid "Discussion not found" msgstr "Nie znaleziono dyskusji" #, elixir-format -#: lib/graphql/resolvers/report.ex:63 lib/graphql/resolvers/report.ex:82 +#: lib/graphql/resolvers/report.ex:71 +#: lib/graphql/resolvers/report.ex:90 msgid "Error while saving report" msgstr "Wystąpił błąd podczas zapisywania zgłoszenia" #, elixir-format -#: lib/graphql/resolvers/report.ex:102 +#: lib/graphql/resolvers/report.ex:110 msgid "Error while updating report" msgstr "Wystąpił błąd podczas aktualizacji zgłoszenia" @@ -384,14 +403,16 @@ msgid "Event id not found" msgstr "Nie znaleziono id wydarzenia" #, elixir-format -#: lib/graphql/error.ex:98 lib/graphql/resolvers/event.ex:360 +#: lib/graphql/error.ex:98 +#: lib/graphql/resolvers/event.ex:360 #: lib/graphql/resolvers/event.ex:412 msgid "Event not found" msgstr "Nie znaleziono wydarzenia" #, elixir-format #: lib/graphql/resolvers/participant.ex:87 -#: lib/graphql/resolvers/participant.ex:128 lib/graphql/resolvers/participant.ex:155 +#: lib/graphql/resolvers/participant.ex:128 +#: lib/graphql/resolvers/participant.ex:155 #: lib/graphql/resolvers/participant.ex:336 msgid "Event with this ID %{id} doesn't exist" msgstr "Wydarzenie o ID %{id} nie istnieje" @@ -407,8 +428,11 @@ msgid "No discussion with ID %{id}" msgstr "Nie znaleziono dyskusji o ID ${id}" #, elixir-format -#: lib/graphql/resolvers/todos.ex:80 lib/graphql/resolvers/todos.ex:107 -#: lib/graphql/resolvers/todos.ex:179 lib/graphql/resolvers/todos.ex:208 lib/graphql/resolvers/todos.ex:237 +#: lib/graphql/resolvers/todos.ex:80 +#: lib/graphql/resolvers/todos.ex:107 +#: lib/graphql/resolvers/todos.ex:179 +#: lib/graphql/resolvers/todos.ex:208 +#: lib/graphql/resolvers/todos.ex:237 msgid "No profile found for user" msgstr "Nie znaleziono profilu dla użytkownika" @@ -424,7 +448,8 @@ msgstr "Uczestnik już ma rolę %{role}" #, elixir-format #: lib/graphql/resolvers/participant.ex:187 -#: lib/graphql/resolvers/participant.ex:220 lib/graphql/resolvers/participant.ex:263 +#: lib/graphql/resolvers/participant.ex:220 +#: lib/graphql/resolvers/participant.ex:263 msgid "Participant not found" msgstr "Nie znaleziono uczestnika" @@ -439,12 +464,14 @@ msgid "Person with username %{username} not found" msgstr "Nie znaleziono osoby o nazwie użytkownika %{username}" #, elixir-format -#: lib/graphql/resolvers/post.ex:169 lib/graphql/resolvers/post.ex:203 +#: lib/graphql/resolvers/post.ex:169 +#: lib/graphql/resolvers/post.ex:203 msgid "Post ID is not a valid ID" msgstr "ID wpisu nie jest prawidłowym ID" #, elixir-format -#: lib/graphql/resolvers/post.ex:172 lib/graphql/resolvers/post.ex:206 +#: lib/graphql/resolvers/post.ex:172 +#: lib/graphql/resolvers/post.ex:206 msgid "Post doesn't exist" msgstr "Wpis nie istnieje" @@ -454,31 +481,42 @@ msgid "Profile invited doesn't exist" msgstr "Zaproszony profil nie istnieje" #, elixir-format -#: lib/graphql/resolvers/member.ex:93 lib/graphql/resolvers/member.ex:97 +#: lib/graphql/resolvers/member.ex:93 +#: lib/graphql/resolvers/member.ex:97 msgid "Profile is already a member of this group" msgstr "Profil jest już członkiem tej grupy" #, elixir-format -#: lib/graphql/resolvers/post.ex:133 lib/graphql/resolvers/post.ex:175 -#: lib/graphql/resolvers/post.ex:209 lib/graphql/resolvers/resource.ex:90 lib/graphql/resolvers/resource.ex:132 -#: lib/graphql/resolvers/resource.ex:165 lib/graphql/resolvers/resource.ex:199 lib/graphql/resolvers/todos.ex:58 -#: lib/graphql/resolvers/todos.ex:83 lib/graphql/resolvers/todos.ex:110 lib/graphql/resolvers/todos.ex:182 -#: lib/graphql/resolvers/todos.ex:214 lib/graphql/resolvers/todos.ex:246 +#: lib/graphql/resolvers/post.ex:133 +#: lib/graphql/resolvers/post.ex:175 +#: lib/graphql/resolvers/post.ex:209 +#: lib/graphql/resolvers/resource.ex:90 +#: lib/graphql/resolvers/resource.ex:132 +#: lib/graphql/resolvers/resource.ex:165 +#: lib/graphql/resolvers/resource.ex:199 +#: lib/graphql/resolvers/todos.ex:58 +#: lib/graphql/resolvers/todos.ex:83 +#: lib/graphql/resolvers/todos.ex:110 +#: lib/graphql/resolvers/todos.ex:182 +#: lib/graphql/resolvers/todos.ex:214 +#: lib/graphql/resolvers/todos.ex:246 msgid "Profile is not member of group" msgstr "Profil nie jest członkiem grupy" #, elixir-format -#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/person.ex:233 +#: lib/graphql/resolvers/actor.ex:67 +#: lib/graphql/resolvers/person.ex:233 msgid "Profile not found" msgstr "Nie znaleziono profilu" #, elixir-format -#: lib/graphql/resolvers/report.ex:40 +#: lib/graphql/resolvers/report.ex:48 msgid "Report not found" msgstr "Nie znaleziono zgłoszenia" #, elixir-format -#: lib/graphql/resolvers/resource.ex:169 lib/graphql/resolvers/resource.ex:196 +#: lib/graphql/resolvers/resource.ex:169 +#: lib/graphql/resolvers/resource.ex:196 msgid "Resource doesn't exist" msgstr "Zasób nie istnieje" @@ -493,12 +531,14 @@ msgid "This token is invalid" msgstr "Ten token jest nieprawidłowy" #, elixir-format -#: lib/graphql/resolvers/todos.ex:176 lib/graphql/resolvers/todos.ex:243 +#: lib/graphql/resolvers/todos.ex:176 +#: lib/graphql/resolvers/todos.ex:243 msgid "Todo doesn't exist" msgstr "Element listy do zrobienia nie istnieje" #, elixir-format -#: lib/graphql/resolvers/todos.ex:77 lib/graphql/resolvers/todos.ex:211 +#: lib/graphql/resolvers/todos.ex:77 +#: lib/graphql/resolvers/todos.ex:211 #: lib/graphql/resolvers/todos.ex:240 msgid "Todo list doesn't exist" msgstr "Lista do zrobienia nie istnieje" @@ -509,12 +549,13 @@ msgid "Token does not exist" msgstr "Token nie istnieje" #, elixir-format -#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70 +#: lib/graphql/resolvers/feed_token.ex:67 +#: lib/graphql/resolvers/feed_token.ex:70 msgid "Token is not a valid UUID" msgstr "Token nie jest prawidłowym UUID" #, elixir-format -#: lib/graphql/error.ex:96 lib/graphql/resolvers/person.ex:458 +#: lib/graphql/error.ex:96 msgid "User not found" msgstr "Nie znaleziono użytkownika" @@ -534,7 +575,8 @@ msgid "You are not a member of this group" msgstr "Nie jesteś członkiem tej grupy" #, elixir-format -#: lib/graphql/resolvers/member.ex:157 lib/graphql/resolvers/member.ex:173 +#: lib/graphql/resolvers/member.ex:157 +#: lib/graphql/resolvers/member.ex:173 #: lib/graphql/resolvers/member.ex:188 msgid "You are not a moderator or admin for this group" msgstr "Nie jesteś moderatorem ani administratorem tej grupy" @@ -598,41 +640,41 @@ msgid "You don't have permission to delete this token" msgstr "Nie masz uprawnień do usunięcia tego tokenu" #, elixir-format -#: lib/graphql/resolvers/admin.ex:54 +#: lib/graphql/resolvers/admin.ex:56 msgid "You need to be logged-in and a moderator to list action logs" msgstr "Musisz być zalogowanym moderatorem, aby mieć dostęp do dzennika działań" #, elixir-format -#: lib/graphql/resolvers/report.ex:28 +#: lib/graphql/resolvers/report.ex:36 msgid "You need to be logged-in and a moderator to list reports" msgstr "Musisz być zalogowanym moderatorem, aby mieć dostęp do listy zgłoszeń" #, elixir-format -#: lib/graphql/resolvers/report.ex:107 +#: lib/graphql/resolvers/report.ex:115 msgid "You need to be logged-in and a moderator to update a report" msgstr "Musisz być zalogowanym moderatorem, aby móc zaktualizować zgłoszenie" #, elixir-format -#: lib/graphql/resolvers/report.ex:45 +#: lib/graphql/resolvers/report.ex:53 msgid "You need to be logged-in and a moderator to view a report" msgstr "Musisz być zalogowanym moderatorem, aby wyświetlić zgłoszenie" #, elixir-format -#: lib/graphql/resolvers/admin.ex:255 +#: lib/graphql/resolvers/admin.ex:257 msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" "Musisz być zalogowanym moderatorem, aby uzyskać dostęp do ustawień " "administratora" #, elixir-format -#: lib/graphql/resolvers/admin.ex:239 +#: lib/graphql/resolvers/admin.ex:241 msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" "Musisz być zalogowanym administratorem, aby uzyskać dostęp do statystyk w " "panelu" #, elixir-format -#: lib/graphql/resolvers/admin.ex:281 +#: lib/graphql/resolvers/admin.ex:283 msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" "Musisz być zalogowanym administratorem, aby zapisywać ustawienia " @@ -659,7 +701,7 @@ msgid "You need to be logged-in to create posts" msgstr "Musisz być zalogowany(-a), aby utworzyć wpis" #, elixir-format -#: lib/graphql/resolvers/report.ex:79 +#: lib/graphql/resolvers/report.ex:87 msgid "You need to be logged-in to create reports" msgstr "Musisz być zalogowany(-a), aby utworzyć zgłoszenie" @@ -756,7 +798,8 @@ msgid "Reset your password to login" msgstr "Resetuj swoje hasło, aby zalogować się" #, elixir-format -#: lib/graphql/error.ex:95 lib/graphql/error.ex:100 +#: lib/graphql/error.ex:95 +#: lib/graphql/error.ex:100 msgid "Resource not found" msgstr "Nie znaleziono zasobu" @@ -846,8 +889,11 @@ msgid "Profile ID provided is not the anonymous profile one" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:161 lib/graphql/resolvers/group.ex:203 -#: lib/graphql/resolvers/person.ex:148 lib/graphql/resolvers/person.ex:182 lib/graphql/resolvers/person.ex:304 +#: lib/graphql/resolvers/group.ex:161 +#: lib/graphql/resolvers/group.ex:203 +#: lib/graphql/resolvers/person.ex:148 +#: lib/graphql/resolvers/person.ex:182 +#: lib/graphql/resolvers/person.ex:304 msgid "The provided picture is too heavy" msgstr "" @@ -872,7 +918,8 @@ msgid "Unable to fetch resource details from this URL." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:164 lib/graphql/resolvers/participant.ex:253 +#: lib/graphql/resolvers/event.ex:164 +#: lib/graphql/resolvers/participant.ex:253 #: lib/graphql/resolvers/participant.ex:328 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "Wskazany profil moderatora nie ma uprawnień dla tego wydarzenia" @@ -923,6 +970,7 @@ msgid "Failed to update the group" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:338 #: lib/graphql/resolvers/user.ex:469 msgid "Failed to update user email" msgstr "" @@ -1051,3 +1099,25 @@ msgstr "" #: lib/graphql/resolvers/user.ex:157 msgid "Your email seems to be using an invalid format" msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:387 +msgid "Can't confirm an already confirmed user" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:391 +msgid "Deconfirming users is not supported" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:363 +msgid "The new role must be different" +msgstr "Nowy adres e-mail musi się różnić od obecnego" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:314 +msgid "You need to be logged-in and an administrator to edit an user's details" +msgstr "" +"Musisz być zalogowanym administratorem, aby zapisywać ustawienia " +"administratora" diff --git a/priv/gettext/pt/LC_MESSAGES/activity.po b/priv/gettext/pt/LC_MESSAGES/activity.po index 780b21ee9..c825d4ee4 100644 --- a/priv/gettext/pt/LC_MESSAGES/activity.po +++ b/priv/gettext/pt/LC_MESSAGES/activity.po @@ -151,19 +151,22 @@ msgstr "" #, 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.text.eex:1 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:1 msgid "The event %{event} was created by %{profile}." msgstr "" #, 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.text.eex:13 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:34 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:13 msgid "The event %{event} was deleted by %{profile}." msgstr "" #, 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.text.eex:7 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:19 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:7 msgid "The event %{event} was updated by %{profile}." msgstr "" @@ -193,13 +196,15 @@ msgstr "" #, 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.text.eex:25 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:58 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:25 msgid "%{profile} posted a comment on the event %{event}." msgstr "" #, 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.text.eex:19 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:43 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:19 msgid "%{profile} replied to a comment on the event %{event}." msgstr "" @@ -218,7 +223,8 @@ 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.text.eex:6 +#: lib/web/templates/email/email_direct_activity.html.heex:46 +#: 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!" msgid_plural "There has been some activity!" @@ -232,14 +238,17 @@ msgstr "" #, 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.text.eex:7 -#: lib/web/templates/email/email_anonymous_activity.html.heex:41 lib/web/templates/email/email_anonymous_activity.text.eex:5 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:19 +#: 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.text.eex:5 msgid "%{profile} has posted an announcement under event %{event}." msgstr "" #, 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.text.eex:1 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 msgid "%{profile} mentionned you in a comment under event %{event}." msgstr "" @@ -255,7 +264,8 @@ msgid "Here's your weekly activity recap" msgstr "" #, elixir-format -#: lib/web/email/activity.ex:119 lib/web/email/activity.ex:140 +#: lib/web/email/activity.ex:119 +#: lib/web/email/activity.ex:140 msgid "Activity notification for %{instance}" msgstr "" @@ -277,13 +287,15 @@ msgstr "" #, 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.text.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:51 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:19 msgid "%{profile} has posted a new comment under your event %{event}." msgstr "" #, 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.text.eex:13 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:36 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:13 msgid "%{profile} has posted a new reply under your event %{event}." msgstr "" diff --git a/priv/gettext/pt/LC_MESSAGES/default.po b/priv/gettext/pt/LC_MESSAGES/default.po index b06b85e67..cb3b09df0 100644 --- a/priv/gettext/pt/LC_MESSAGES/default.po +++ b/priv/gettext/pt/LC_MESSAGES/default.po @@ -753,9 +753,12 @@ msgstr "" #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:63 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:133 -#: lib/web/templates/email/event_updated.text.eex:14 lib/web/templates/email/notification_each_week.html.heex:60 -#: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:60 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 +#: lib/web/templates/email/event_updated.html.heex:133 +#: lib/web/templates/email/event_updated.text.eex:14 +#: lib/web/templates/email/notification_each_week.html.heex:60 +#: lib/web/templates/email/notification_each_week.text.eex:11 +#: lib/web/templates/email/on_day_notification.html.heex:60 #: lib/web/templates/email/on_day_notification.text.eex:11 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." @@ -814,7 +817,6 @@ msgstr "" #, elixir-format #: lib/web/templates/email/email_changed_new.html.heex:38 -#: lib/web/templates/email/email_changed_new.text.eex:3 msgid "Hi there! It seems like you wanted to change the email address linked to your account on <b>%{instance}</b>. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." msgstr "" @@ -836,7 +838,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:70 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.heex:45 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 +#: lib/web/templates/email/registration_confirmation.html.heex:45 msgid "If you didn't trigger this email, you may safely ignore it." msgstr "" @@ -948,7 +951,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/email_anonymous_activity.html.heex:67 -#: lib/web/templates/email/event_participation_approved.html.heex:58 lib/web/templates/email/event_participation_confirmed.html.heex:58 +#: lib/web/templates/email/event_participation_approved.html.heex:58 +#: lib/web/templates/email/event_participation_confirmed.html.heex:58 msgid "Visit event page" msgstr "" @@ -970,7 +974,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:70 -#: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.heex:70 +#: lib/web/templates/email/event_participation_approved.text.eex:11 +#: lib/web/templates/email/event_participation_confirmed.html.heex:70 #: lib/web/templates/email/event_participation_confirmed.text.eex:6 msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." msgstr "" @@ -994,7 +999,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:13 -#: lib/web/templates/email/event_participation_confirmed.html.heex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 +#: lib/web/templates/email/event_participation_confirmed.html.heex:13 +#: lib/web/templates/email/event_participation_confirmed.text.eex:1 msgid "You're going!" msgstr "" @@ -1319,8 +1325,10 @@ msgid "This is a demonstration site to test Mobilizon." msgstr "" #, elixir-format -#: lib/service/metadata/actor.ex:91 lib/service/metadata/actor.ex:99 -#: lib/service/metadata/instance.ex:56 lib/service/metadata/instance.ex:62 +#: lib/service/metadata/actor.ex:91 +#: lib/service/metadata/actor.ex:99 +#: lib/service/metadata/instance.ex:56 +#: lib/service/metadata/instance.ex:62 msgid "%{name}'s feed" msgstr "" @@ -1401,7 +1409,8 @@ msgstr "" #. File name template for exported list of participants. Should NOT contain spaces. Make sure the output is going to be something standardized that is acceptable as a file name on most systems. #, elixir-format #: lib/service/export/participants/csv.ex:81 -#: lib/service/export/participants/ods.ex:86 lib/service/export/participants/pdf.ex:96 +#: lib/service/export/participants/ods.ex:86 +#: lib/service/export/participants/pdf.ex:96 msgid "%{event}_participants" msgstr "" @@ -1422,6 +1431,8 @@ msgstr "" #, elixir-format #: lib/service/export/participants/common.ex:52 +#: lib/web/templates/email/admin/_role.html.heex:3 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Administrator" msgstr "" @@ -1432,6 +1443,8 @@ msgstr "" #, elixir-format #: lib/service/export/participants/common.ex:49 +#: lib/web/templates/email/admin/_role.html.heex:5 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Moderator" msgstr "" @@ -1482,8 +1495,10 @@ msgstr "" #, elixir-format #: lib/web/templates/email/date/event_tz_date.html.heex:6 -#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 lib/web/templates/email/date/event_tz_date_range.html.heex:12 -#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:12 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 msgid "🌐 %{timezone} %{offset}" msgstr "" @@ -1671,3 +1686,137 @@ msgid "You have one pending attendance request to process for the following even msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" msgstr[0] "" msgstr[1] "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:13 +#: lib/web/templates/email/admin_user_role_changed.text.eex:1 +msgid "An administrator changed your role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:120 +msgid "An administrator confirmed your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:1 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:1 +msgid "An administrator manually changed the email attached to your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:47 +#: lib/web/email/admin.ex:72 +msgid "An administrator manually changed the email attached to your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:13 +#: lib/web/templates/email/admin_user_confirmation.text.eex:1 +msgid "An administrator manually confirmed your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:98 +msgid "An administrator updated your role on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/email_changed_new.text.eex:3 +msgid "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:3 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually changed your account email from %{old_email} (this one) to %{new_email}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> (this one) to <b>%{new_email}</b>." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> to <b>%{new_email}</b> (this one)." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:71 +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:45 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:45 +#: lib/web/templates/email/admin_user_role_changed.html.heex:67 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods %{start_link}on the instance's about page%{end_link}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:7 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:4 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:4 +#: lib/web/templates/email/admin_user_role_changed.text.eex:8 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods on the instance's about page: %{about_page}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:58 +msgid "Login on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:55 +msgid "New role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:6 +msgid "New role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:47 +msgid "Old role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:5 +msgid "Old role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin/_role.html.heex:7 +#: lib/web/templates/email/admin/_role.text.eex:1 +msgid "User" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:45 +msgid "You may now login using your credentials on the service." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:5 +msgid "You may now login using your credentials on the service:" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just changed your account role." +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just changed your account role." +msgstr "" diff --git a/priv/gettext/pt/LC_MESSAGES/errors.po b/priv/gettext/pt/LC_MESSAGES/errors.po index ace763196..5e7d3ced9 100644 --- a/priv/gettext/pt/LC_MESSAGES/errors.po +++ b/priv/gettext/pt/LC_MESSAGES/errors.po @@ -108,14 +108,19 @@ msgid "Error while saving user settings" msgstr "" #, elixir-format -#: lib/graphql/error.ex:99 lib/graphql/resolvers/group.ex:249 -#: lib/graphql/resolvers/group.ex:281 lib/graphql/resolvers/group.ex:318 lib/graphql/resolvers/group.ex:349 -#: lib/graphql/resolvers/group.ex:398 lib/graphql/resolvers/member.ex:81 +#: lib/graphql/error.ex:99 +#: lib/graphql/resolvers/group.ex:249 +#: lib/graphql/resolvers/group.ex:281 +#: lib/graphql/resolvers/group.ex:318 +#: lib/graphql/resolvers/group.ex:349 +#: lib/graphql/resolvers/group.ex:398 +#: lib/graphql/resolvers/member.ex:81 msgid "Group not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:78 lib/graphql/resolvers/group.ex:82 +#: lib/graphql/resolvers/group.ex:78 +#: lib/graphql/resolvers/group.ex:82 msgid "Group with ID %{id} not found" msgstr "" @@ -140,15 +145,21 @@ msgid "No user to validate with this email was found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:314 lib/graphql/resolvers/user.ex:298 +#: lib/graphql/resolvers/person.ex:314 +#: lib/graphql/resolvers/user.ex:298 msgid "No user with this email was found" msgstr "" #, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:32 lib/graphql/resolvers/participant.ex:210 lib/graphql/resolvers/person.ex:236 -#: lib/graphql/resolvers/person.ex:353 lib/graphql/resolvers/person.ex:380 lib/graphql/resolvers/person.ex:397 -#: lib/graphql/resolvers/person.ex:425 lib/graphql/resolvers/person.ex:440 +#: lib/graphql/resolvers/participant.ex:32 +#: lib/graphql/resolvers/participant.ex:210 +#: lib/graphql/resolvers/person.ex:236 +#: lib/graphql/resolvers/person.ex:353 +#: lib/graphql/resolvers/person.ex:380 +#: lib/graphql/resolvers/person.ex:397 +#: lib/graphql/resolvers/person.ex:425 +#: lib/graphql/resolvers/person.ex:440 msgid "Profile is not owned by authenticated user" msgstr "" @@ -163,11 +174,13 @@ msgid "The current password is invalid" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:341 #: lib/graphql/resolvers/user.ex:472 msgid "The new email doesn't seem to be valid" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:344 #: lib/graphql/resolvers/user.ex:475 msgid "The new email must be different" msgstr "" @@ -178,7 +191,8 @@ msgid "The new password must be different" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:479 lib/graphql/resolvers/user.ex:541 +#: lib/graphql/resolvers/user.ex:479 +#: lib/graphql/resolvers/user.ex:541 #: lib/graphql/resolvers/user.ex:544 msgid "The password provided is invalid" msgstr "" @@ -199,7 +213,8 @@ msgid "This user has been disabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:252 lib/graphql/resolvers/user.ex:257 +#: lib/graphql/resolvers/user.ex:252 +#: lib/graphql/resolvers/user.ex:257 msgid "Unable to validate user" msgstr "" @@ -274,7 +289,8 @@ msgid "You need to have an existing token to get a refresh token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:276 lib/graphql/resolvers/user.ex:301 +#: lib/graphql/resolvers/user.ex:276 +#: lib/graphql/resolvers/user.ex:301 msgid "You requested again a confirmation email too soon" msgstr "" @@ -294,7 +310,8 @@ msgid "No profile found with this ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:97 +#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:97 msgid "No remote profile found with this ID" msgstr "" @@ -345,17 +362,19 @@ msgid "Comment is already deleted" msgstr "" #, elixir-format -#: lib/graphql/error.ex:101 lib/graphql/resolvers/discussion.ex:69 +#: lib/graphql/error.ex:101 +#: lib/graphql/resolvers/discussion.ex:69 msgid "Discussion not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:63 lib/graphql/resolvers/report.ex:82 +#: lib/graphql/resolvers/report.ex:71 +#: lib/graphql/resolvers/report.ex:90 msgid "Error while saving report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:102 +#: lib/graphql/resolvers/report.ex:110 msgid "Error while updating report" msgstr "" @@ -365,14 +384,16 @@ msgid "Event id not found" msgstr "" #, elixir-format -#: lib/graphql/error.ex:98 lib/graphql/resolvers/event.ex:360 +#: lib/graphql/error.ex:98 +#: lib/graphql/resolvers/event.ex:360 #: lib/graphql/resolvers/event.ex:412 msgid "Event not found" msgstr "" #, elixir-format #: lib/graphql/resolvers/participant.ex:87 -#: lib/graphql/resolvers/participant.ex:128 lib/graphql/resolvers/participant.ex:155 +#: lib/graphql/resolvers/participant.ex:128 +#: lib/graphql/resolvers/participant.ex:155 #: lib/graphql/resolvers/participant.ex:336 msgid "Event with this ID %{id} doesn't exist" msgstr "" @@ -388,8 +409,11 @@ msgid "No discussion with ID %{id}" msgstr "" #, elixir-format -#: lib/graphql/resolvers/todos.ex:80 lib/graphql/resolvers/todos.ex:107 -#: lib/graphql/resolvers/todos.ex:179 lib/graphql/resolvers/todos.ex:208 lib/graphql/resolvers/todos.ex:237 +#: lib/graphql/resolvers/todos.ex:80 +#: lib/graphql/resolvers/todos.ex:107 +#: lib/graphql/resolvers/todos.ex:179 +#: lib/graphql/resolvers/todos.ex:208 +#: lib/graphql/resolvers/todos.ex:237 msgid "No profile found for user" msgstr "" @@ -405,7 +429,8 @@ msgstr "" #, elixir-format #: lib/graphql/resolvers/participant.ex:187 -#: lib/graphql/resolvers/participant.ex:220 lib/graphql/resolvers/participant.ex:263 +#: lib/graphql/resolvers/participant.ex:220 +#: lib/graphql/resolvers/participant.ex:263 msgid "Participant not found" msgstr "" @@ -420,12 +445,14 @@ msgid "Person with username %{username} not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:169 lib/graphql/resolvers/post.ex:203 +#: lib/graphql/resolvers/post.ex:169 +#: lib/graphql/resolvers/post.ex:203 msgid "Post ID is not a valid ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:172 lib/graphql/resolvers/post.ex:206 +#: lib/graphql/resolvers/post.ex:172 +#: lib/graphql/resolvers/post.ex:206 msgid "Post doesn't exist" msgstr "" @@ -435,31 +462,42 @@ msgid "Profile invited doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/member.ex:93 lib/graphql/resolvers/member.ex:97 +#: lib/graphql/resolvers/member.ex:93 +#: lib/graphql/resolvers/member.ex:97 msgid "Profile is already a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:133 lib/graphql/resolvers/post.ex:175 -#: lib/graphql/resolvers/post.ex:209 lib/graphql/resolvers/resource.ex:90 lib/graphql/resolvers/resource.ex:132 -#: lib/graphql/resolvers/resource.ex:165 lib/graphql/resolvers/resource.ex:199 lib/graphql/resolvers/todos.ex:58 -#: lib/graphql/resolvers/todos.ex:83 lib/graphql/resolvers/todos.ex:110 lib/graphql/resolvers/todos.ex:182 -#: lib/graphql/resolvers/todos.ex:214 lib/graphql/resolvers/todos.ex:246 +#: lib/graphql/resolvers/post.ex:133 +#: lib/graphql/resolvers/post.ex:175 +#: lib/graphql/resolvers/post.ex:209 +#: lib/graphql/resolvers/resource.ex:90 +#: lib/graphql/resolvers/resource.ex:132 +#: lib/graphql/resolvers/resource.ex:165 +#: lib/graphql/resolvers/resource.ex:199 +#: lib/graphql/resolvers/todos.ex:58 +#: lib/graphql/resolvers/todos.ex:83 +#: lib/graphql/resolvers/todos.ex:110 +#: lib/graphql/resolvers/todos.ex:182 +#: lib/graphql/resolvers/todos.ex:214 +#: lib/graphql/resolvers/todos.ex:246 msgid "Profile is not member of group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/person.ex:233 +#: lib/graphql/resolvers/actor.ex:67 +#: lib/graphql/resolvers/person.ex:233 msgid "Profile not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:40 +#: lib/graphql/resolvers/report.ex:48 msgid "Report not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/resource.ex:169 lib/graphql/resolvers/resource.ex:196 +#: lib/graphql/resolvers/resource.ex:169 +#: lib/graphql/resolvers/resource.ex:196 msgid "Resource doesn't exist" msgstr "" @@ -474,12 +512,14 @@ msgid "This token is invalid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/todos.ex:176 lib/graphql/resolvers/todos.ex:243 +#: lib/graphql/resolvers/todos.ex:176 +#: lib/graphql/resolvers/todos.ex:243 msgid "Todo doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/todos.ex:77 lib/graphql/resolvers/todos.ex:211 +#: lib/graphql/resolvers/todos.ex:77 +#: lib/graphql/resolvers/todos.ex:211 #: lib/graphql/resolvers/todos.ex:240 msgid "Todo list doesn't exist" msgstr "" @@ -490,12 +530,13 @@ msgid "Token does not exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70 +#: lib/graphql/resolvers/feed_token.ex:67 +#: lib/graphql/resolvers/feed_token.ex:70 msgid "Token is not a valid UUID" msgstr "" #, elixir-format -#: lib/graphql/error.ex:96 lib/graphql/resolvers/person.ex:458 +#: lib/graphql/error.ex:96 msgid "User not found" msgstr "" @@ -515,7 +556,8 @@ msgid "You are not a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/member.ex:157 lib/graphql/resolvers/member.ex:173 +#: lib/graphql/resolvers/member.ex:157 +#: lib/graphql/resolvers/member.ex:173 #: lib/graphql/resolvers/member.ex:188 msgid "You are not a moderator or admin for this group" msgstr "" @@ -577,37 +619,37 @@ msgid "You don't have permission to delete this token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:54 +#: lib/graphql/resolvers/admin.ex:56 msgid "You need to be logged-in and a moderator to list action logs" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:28 +#: lib/graphql/resolvers/report.ex:36 msgid "You need to be logged-in and a moderator to list reports" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:107 +#: lib/graphql/resolvers/report.ex:115 msgid "You need to be logged-in and a moderator to update a report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:45 +#: lib/graphql/resolvers/report.ex:53 msgid "You need to be logged-in and a moderator to view a report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:255 +#: lib/graphql/resolvers/admin.ex:257 msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:239 +#: lib/graphql/resolvers/admin.ex:241 msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:281 +#: lib/graphql/resolvers/admin.ex:283 msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" @@ -632,7 +674,7 @@ msgid "You need to be logged-in to create posts" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:79 +#: lib/graphql/resolvers/report.ex:87 msgid "You need to be logged-in to create reports" msgstr "" @@ -727,7 +769,8 @@ msgid "Reset your password to login" msgstr "" #, elixir-format -#: lib/graphql/error.ex:95 lib/graphql/error.ex:100 +#: lib/graphql/error.ex:95 +#: lib/graphql/error.ex:100 msgid "Resource not found" msgstr "" @@ -817,8 +860,11 @@ msgid "Profile ID provided is not the anonymous profile one" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:161 lib/graphql/resolvers/group.ex:203 -#: lib/graphql/resolvers/person.ex:148 lib/graphql/resolvers/person.ex:182 lib/graphql/resolvers/person.ex:304 +#: lib/graphql/resolvers/group.ex:161 +#: lib/graphql/resolvers/group.ex:203 +#: lib/graphql/resolvers/person.ex:148 +#: lib/graphql/resolvers/person.ex:182 +#: lib/graphql/resolvers/person.ex:304 msgid "The provided picture is too heavy" msgstr "" @@ -843,7 +889,8 @@ msgid "Unable to fetch resource details from this URL." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:164 lib/graphql/resolvers/participant.ex:253 +#: lib/graphql/resolvers/event.ex:164 +#: lib/graphql/resolvers/participant.ex:253 #: lib/graphql/resolvers/participant.ex:328 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "" @@ -894,6 +941,7 @@ msgid "Failed to update the group" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:338 #: lib/graphql/resolvers/user.ex:469 msgid "Failed to update user email" msgstr "" @@ -1022,3 +1070,23 @@ msgstr "" #: lib/graphql/resolvers/user.ex:157 msgid "Your email seems to be using an invalid format" msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:387 +msgid "Can't confirm an already confirmed user" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:391 +msgid "Deconfirming users is not supported" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:363 +msgid "The new role must be different" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:314 +msgid "You need to be logged-in and an administrator to edit an user's details" +msgstr "" diff --git a/priv/gettext/pt_BR/LC_MESSAGES/activity.po b/priv/gettext/pt_BR/LC_MESSAGES/activity.po index f1f8b262a..f8eae9190 100644 --- a/priv/gettext/pt_BR/LC_MESSAGES/activity.po +++ b/priv/gettext/pt_BR/LC_MESSAGES/activity.po @@ -151,19 +151,22 @@ msgstr "" #, 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.text.eex:1 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:1 msgid "The event %{event} was created by %{profile}." msgstr "" #, 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.text.eex:13 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:34 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:13 msgid "The event %{event} was deleted by %{profile}." msgstr "" #, 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.text.eex:7 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:19 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:7 msgid "The event %{event} was updated by %{profile}." msgstr "" @@ -193,13 +196,15 @@ msgstr "" #, 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.text.eex:25 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:58 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:25 msgid "%{profile} posted a comment on the event %{event}." msgstr "" #, 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.text.eex:19 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:43 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:19 msgid "%{profile} replied to a comment on the event %{event}." msgstr "" @@ -218,7 +223,8 @@ 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.text.eex:6 +#: lib/web/templates/email/email_direct_activity.html.heex:46 +#: 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!" msgid_plural "There has been some activity!" @@ -232,14 +238,17 @@ msgstr "" #, 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.text.eex:7 -#: lib/web/templates/email/email_anonymous_activity.html.heex:41 lib/web/templates/email/email_anonymous_activity.text.eex:5 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:19 +#: 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.text.eex:5 msgid "%{profile} has posted an announcement under event %{event}." msgstr "" #, 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.text.eex:1 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 msgid "%{profile} mentionned you in a comment under event %{event}." msgstr "" @@ -255,7 +264,8 @@ msgid "Here's your weekly activity recap" msgstr "" #, elixir-format -#: lib/web/email/activity.ex:119 lib/web/email/activity.ex:140 +#: lib/web/email/activity.ex:119 +#: lib/web/email/activity.ex:140 msgid "Activity notification for %{instance}" msgstr "" @@ -277,13 +287,15 @@ msgstr "" #, 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.text.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:51 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:19 msgid "%{profile} has posted a new comment under your event %{event}." msgstr "" #, 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.text.eex:13 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:36 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:13 msgid "%{profile} has posted a new reply under your event %{event}." msgstr "" diff --git a/priv/gettext/pt_BR/LC_MESSAGES/default.po b/priv/gettext/pt_BR/LC_MESSAGES/default.po index 7d997c04c..4655db41b 100644 --- a/priv/gettext/pt_BR/LC_MESSAGES/default.po +++ b/priv/gettext/pt_BR/LC_MESSAGES/default.po @@ -824,9 +824,12 @@ msgstr "Por favor não utilize este serviço em nenhum caso real" #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:63 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:133 -#: lib/web/templates/email/event_updated.text.eex:14 lib/web/templates/email/notification_each_week.html.heex:60 -#: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:60 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 +#: lib/web/templates/email/event_updated.html.heex:133 +#: lib/web/templates/email/event_updated.text.eex:14 +#: lib/web/templates/email/notification_each_week.html.heex:60 +#: lib/web/templates/email/notification_each_week.text.eex:11 +#: lib/web/templates/email/on_day_notification.html.heex:60 #: lib/web/templates/email/on_day_notification.text.eex:11 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." @@ -889,7 +892,6 @@ msgstr "" #, elixir-format #: lib/web/templates/email/email_changed_new.html.heex:38 -#: lib/web/templates/email/email_changed_new.text.eex:3 msgid "Hi there! It seems like you wanted to change the email address linked to your account on <b>%{instance}</b>. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." msgstr "" @@ -911,7 +913,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:70 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.heex:45 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 +#: lib/web/templates/email/registration_confirmation.html.heex:45 msgid "If you didn't trigger this email, you may safely ignore it." msgstr "Se você não não solicitou isso, favor ignorar este email." @@ -1025,7 +1028,8 @@ msgstr "Veja o relato" #, elixir-format #: lib/web/templates/email/email_anonymous_activity.html.heex:67 -#: lib/web/templates/email/event_participation_approved.html.heex:58 lib/web/templates/email/event_participation_confirmed.html.heex:58 +#: lib/web/templates/email/event_participation_approved.html.heex:58 +#: lib/web/templates/email/event_participation_confirmed.html.heex:58 msgid "Visit event page" msgstr "" @@ -1047,7 +1051,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:70 -#: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.heex:70 +#: lib/web/templates/email/event_participation_approved.text.eex:11 +#: lib/web/templates/email/event_participation_confirmed.html.heex:70 #: lib/web/templates/email/event_participation_confirmed.text.eex:6 msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." msgstr "" @@ -1071,7 +1076,8 @@ msgstr "Você solicitou participar no evento %{title}." #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:13 -#: lib/web/templates/email/event_participation_confirmed.html.heex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 +#: lib/web/templates/email/event_participation_confirmed.html.heex:13 +#: lib/web/templates/email/event_participation_confirmed.text.eex:1 msgid "You're going!" msgstr "" @@ -1431,8 +1437,10 @@ msgid "This is a demonstration site to test Mobilizon." msgstr "Este é um site de demonstração para testar a versão beta do Mobilizon." #, elixir-format -#: lib/service/metadata/actor.ex:91 lib/service/metadata/actor.ex:99 -#: lib/service/metadata/instance.ex:56 lib/service/metadata/instance.ex:62 +#: lib/service/metadata/actor.ex:91 +#: lib/service/metadata/actor.ex:99 +#: lib/service/metadata/instance.ex:56 +#: lib/service/metadata/instance.ex:62 msgid "%{name}'s feed" msgstr "" @@ -1513,7 +1521,8 @@ msgstr "A sua participação no evento %{title} foi aprovada" #. File name template for exported list of participants. Should NOT contain spaces. Make sure the output is going to be something standardized that is acceptable as a file name on most systems. #, elixir-format #: lib/service/export/participants/csv.ex:81 -#: lib/service/export/participants/ods.ex:86 lib/service/export/participants/pdf.ex:96 +#: lib/service/export/participants/ods.ex:86 +#: lib/service/export/participants/pdf.ex:96 msgid "%{event}_participants" msgstr "" @@ -1534,6 +1543,8 @@ msgstr "" #, elixir-format #: lib/service/export/participants/common.ex:52 +#: lib/web/templates/email/admin/_role.html.heex:3 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Administrator" msgstr "" @@ -1544,6 +1555,8 @@ msgstr "" #, elixir-format #: lib/service/export/participants/common.ex:49 +#: lib/web/templates/email/admin/_role.html.heex:5 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Moderator" msgstr "" @@ -1594,8 +1607,10 @@ msgstr "" #, elixir-format #: lib/web/templates/email/date/event_tz_date.html.heex:6 -#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 lib/web/templates/email/date/event_tz_date_range.html.heex:12 -#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:12 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 msgid "🌐 %{timezone} %{offset}" msgstr "" @@ -1783,3 +1798,137 @@ msgid "You have one pending attendance request to process for the following even msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" msgstr[0] "" msgstr[1] "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:13 +#: lib/web/templates/email/admin_user_role_changed.text.eex:1 +msgid "An administrator changed your role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:120 +msgid "An administrator confirmed your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:1 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:1 +msgid "An administrator manually changed the email attached to your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:47 +#: lib/web/email/admin.ex:72 +msgid "An administrator manually changed the email attached to your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:13 +#: lib/web/templates/email/admin_user_confirmation.text.eex:1 +msgid "An administrator manually confirmed your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:98 +msgid "An administrator updated your role on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/email_changed_new.text.eex:3 +msgid "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:3 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually changed your account email from %{old_email} (this one) to %{new_email}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> (this one) to <b>%{new_email}</b>." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> to <b>%{new_email}</b> (this one)." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:71 +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:45 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:45 +#: lib/web/templates/email/admin_user_role_changed.html.heex:67 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods %{start_link}on the instance's about page%{end_link}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:7 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:4 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:4 +#: lib/web/templates/email/admin_user_role_changed.text.eex:8 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods on the instance's about page: %{about_page}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:58 +msgid "Login on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:55 +msgid "New role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:6 +msgid "New role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:47 +msgid "Old role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:5 +msgid "Old role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin/_role.html.heex:7 +#: lib/web/templates/email/admin/_role.text.eex:1 +msgid "User" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:45 +msgid "You may now login using your credentials on the service." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:5 +msgid "You may now login using your credentials on the service:" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just changed your account role." +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/admin_user_role_changed.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just changed your account role." +msgstr "" diff --git a/priv/gettext/pt_BR/LC_MESSAGES/errors.po b/priv/gettext/pt_BR/LC_MESSAGES/errors.po index 276929fe7..3cf786e51 100644 --- a/priv/gettext/pt_BR/LC_MESSAGES/errors.po +++ b/priv/gettext/pt_BR/LC_MESSAGES/errors.po @@ -108,14 +108,19 @@ msgid "Error while saving user settings" msgstr "" #, elixir-format -#: lib/graphql/error.ex:99 lib/graphql/resolvers/group.ex:249 -#: lib/graphql/resolvers/group.ex:281 lib/graphql/resolvers/group.ex:318 lib/graphql/resolvers/group.ex:349 -#: lib/graphql/resolvers/group.ex:398 lib/graphql/resolvers/member.ex:81 +#: lib/graphql/error.ex:99 +#: lib/graphql/resolvers/group.ex:249 +#: lib/graphql/resolvers/group.ex:281 +#: lib/graphql/resolvers/group.ex:318 +#: lib/graphql/resolvers/group.ex:349 +#: lib/graphql/resolvers/group.ex:398 +#: lib/graphql/resolvers/member.ex:81 msgid "Group not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:78 lib/graphql/resolvers/group.ex:82 +#: lib/graphql/resolvers/group.ex:78 +#: lib/graphql/resolvers/group.ex:82 msgid "Group with ID %{id} not found" msgstr "" @@ -140,15 +145,21 @@ msgid "No user to validate with this email was found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:314 lib/graphql/resolvers/user.ex:298 +#: lib/graphql/resolvers/person.ex:314 +#: lib/graphql/resolvers/user.ex:298 msgid "No user with this email was found" msgstr "" #, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:32 lib/graphql/resolvers/participant.ex:210 lib/graphql/resolvers/person.ex:236 -#: lib/graphql/resolvers/person.ex:353 lib/graphql/resolvers/person.ex:380 lib/graphql/resolvers/person.ex:397 -#: lib/graphql/resolvers/person.ex:425 lib/graphql/resolvers/person.ex:440 +#: lib/graphql/resolvers/participant.ex:32 +#: lib/graphql/resolvers/participant.ex:210 +#: lib/graphql/resolvers/person.ex:236 +#: lib/graphql/resolvers/person.ex:353 +#: lib/graphql/resolvers/person.ex:380 +#: lib/graphql/resolvers/person.ex:397 +#: lib/graphql/resolvers/person.ex:425 +#: lib/graphql/resolvers/person.ex:440 msgid "Profile is not owned by authenticated user" msgstr "" @@ -163,11 +174,13 @@ msgid "The current password is invalid" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:341 #: lib/graphql/resolvers/user.ex:472 msgid "The new email doesn't seem to be valid" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:344 #: lib/graphql/resolvers/user.ex:475 msgid "The new email must be different" msgstr "" @@ -178,7 +191,8 @@ msgid "The new password must be different" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:479 lib/graphql/resolvers/user.ex:541 +#: lib/graphql/resolvers/user.ex:479 +#: lib/graphql/resolvers/user.ex:541 #: lib/graphql/resolvers/user.ex:544 msgid "The password provided is invalid" msgstr "" @@ -199,7 +213,8 @@ msgid "This user has been disabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:252 lib/graphql/resolvers/user.ex:257 +#: lib/graphql/resolvers/user.ex:252 +#: lib/graphql/resolvers/user.ex:257 msgid "Unable to validate user" msgstr "" @@ -274,7 +289,8 @@ msgid "You need to have an existing token to get a refresh token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:276 lib/graphql/resolvers/user.ex:301 +#: lib/graphql/resolvers/user.ex:276 +#: lib/graphql/resolvers/user.ex:301 msgid "You requested again a confirmation email too soon" msgstr "" @@ -294,7 +310,8 @@ msgid "No profile found with this ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:97 +#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:97 msgid "No remote profile found with this ID" msgstr "" @@ -345,17 +362,19 @@ msgid "Comment is already deleted" msgstr "" #, elixir-format -#: lib/graphql/error.ex:101 lib/graphql/resolvers/discussion.ex:69 +#: lib/graphql/error.ex:101 +#: lib/graphql/resolvers/discussion.ex:69 msgid "Discussion not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:63 lib/graphql/resolvers/report.ex:82 +#: lib/graphql/resolvers/report.ex:71 +#: lib/graphql/resolvers/report.ex:90 msgid "Error while saving report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:102 +#: lib/graphql/resolvers/report.ex:110 msgid "Error while updating report" msgstr "" @@ -365,14 +384,16 @@ msgid "Event id not found" msgstr "" #, elixir-format -#: lib/graphql/error.ex:98 lib/graphql/resolvers/event.ex:360 +#: lib/graphql/error.ex:98 +#: lib/graphql/resolvers/event.ex:360 #: lib/graphql/resolvers/event.ex:412 msgid "Event not found" msgstr "" #, elixir-format #: lib/graphql/resolvers/participant.ex:87 -#: lib/graphql/resolvers/participant.ex:128 lib/graphql/resolvers/participant.ex:155 +#: lib/graphql/resolvers/participant.ex:128 +#: lib/graphql/resolvers/participant.ex:155 #: lib/graphql/resolvers/participant.ex:336 msgid "Event with this ID %{id} doesn't exist" msgstr "" @@ -388,8 +409,11 @@ msgid "No discussion with ID %{id}" msgstr "" #, elixir-format -#: lib/graphql/resolvers/todos.ex:80 lib/graphql/resolvers/todos.ex:107 -#: lib/graphql/resolvers/todos.ex:179 lib/graphql/resolvers/todos.ex:208 lib/graphql/resolvers/todos.ex:237 +#: lib/graphql/resolvers/todos.ex:80 +#: lib/graphql/resolvers/todos.ex:107 +#: lib/graphql/resolvers/todos.ex:179 +#: lib/graphql/resolvers/todos.ex:208 +#: lib/graphql/resolvers/todos.ex:237 msgid "No profile found for user" msgstr "" @@ -405,7 +429,8 @@ msgstr "" #, elixir-format #: lib/graphql/resolvers/participant.ex:187 -#: lib/graphql/resolvers/participant.ex:220 lib/graphql/resolvers/participant.ex:263 +#: lib/graphql/resolvers/participant.ex:220 +#: lib/graphql/resolvers/participant.ex:263 msgid "Participant not found" msgstr "" @@ -420,12 +445,14 @@ msgid "Person with username %{username} not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:169 lib/graphql/resolvers/post.ex:203 +#: lib/graphql/resolvers/post.ex:169 +#: lib/graphql/resolvers/post.ex:203 msgid "Post ID is not a valid ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:172 lib/graphql/resolvers/post.ex:206 +#: lib/graphql/resolvers/post.ex:172 +#: lib/graphql/resolvers/post.ex:206 msgid "Post doesn't exist" msgstr "" @@ -435,31 +462,42 @@ msgid "Profile invited doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/member.ex:93 lib/graphql/resolvers/member.ex:97 +#: lib/graphql/resolvers/member.ex:93 +#: lib/graphql/resolvers/member.ex:97 msgid "Profile is already a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:133 lib/graphql/resolvers/post.ex:175 -#: lib/graphql/resolvers/post.ex:209 lib/graphql/resolvers/resource.ex:90 lib/graphql/resolvers/resource.ex:132 -#: lib/graphql/resolvers/resource.ex:165 lib/graphql/resolvers/resource.ex:199 lib/graphql/resolvers/todos.ex:58 -#: lib/graphql/resolvers/todos.ex:83 lib/graphql/resolvers/todos.ex:110 lib/graphql/resolvers/todos.ex:182 -#: lib/graphql/resolvers/todos.ex:214 lib/graphql/resolvers/todos.ex:246 +#: lib/graphql/resolvers/post.ex:133 +#: lib/graphql/resolvers/post.ex:175 +#: lib/graphql/resolvers/post.ex:209 +#: lib/graphql/resolvers/resource.ex:90 +#: lib/graphql/resolvers/resource.ex:132 +#: lib/graphql/resolvers/resource.ex:165 +#: lib/graphql/resolvers/resource.ex:199 +#: lib/graphql/resolvers/todos.ex:58 +#: lib/graphql/resolvers/todos.ex:83 +#: lib/graphql/resolvers/todos.ex:110 +#: lib/graphql/resolvers/todos.ex:182 +#: lib/graphql/resolvers/todos.ex:214 +#: lib/graphql/resolvers/todos.ex:246 msgid "Profile is not member of group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/person.ex:233 +#: lib/graphql/resolvers/actor.ex:67 +#: lib/graphql/resolvers/person.ex:233 msgid "Profile not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:40 +#: lib/graphql/resolvers/report.ex:48 msgid "Report not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/resource.ex:169 lib/graphql/resolvers/resource.ex:196 +#: lib/graphql/resolvers/resource.ex:169 +#: lib/graphql/resolvers/resource.ex:196 msgid "Resource doesn't exist" msgstr "" @@ -474,12 +512,14 @@ msgid "This token is invalid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/todos.ex:176 lib/graphql/resolvers/todos.ex:243 +#: lib/graphql/resolvers/todos.ex:176 +#: lib/graphql/resolvers/todos.ex:243 msgid "Todo doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/todos.ex:77 lib/graphql/resolvers/todos.ex:211 +#: lib/graphql/resolvers/todos.ex:77 +#: lib/graphql/resolvers/todos.ex:211 #: lib/graphql/resolvers/todos.ex:240 msgid "Todo list doesn't exist" msgstr "" @@ -490,12 +530,13 @@ msgid "Token does not exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70 +#: lib/graphql/resolvers/feed_token.ex:67 +#: lib/graphql/resolvers/feed_token.ex:70 msgid "Token is not a valid UUID" msgstr "" #, elixir-format -#: lib/graphql/error.ex:96 lib/graphql/resolvers/person.ex:458 +#: lib/graphql/error.ex:96 msgid "User not found" msgstr "" @@ -515,7 +556,8 @@ msgid "You are not a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/member.ex:157 lib/graphql/resolvers/member.ex:173 +#: lib/graphql/resolvers/member.ex:157 +#: lib/graphql/resolvers/member.ex:173 #: lib/graphql/resolvers/member.ex:188 msgid "You are not a moderator or admin for this group" msgstr "" @@ -577,37 +619,37 @@ msgid "You don't have permission to delete this token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:54 +#: lib/graphql/resolvers/admin.ex:56 msgid "You need to be logged-in and a moderator to list action logs" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:28 +#: lib/graphql/resolvers/report.ex:36 msgid "You need to be logged-in and a moderator to list reports" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:107 +#: lib/graphql/resolvers/report.ex:115 msgid "You need to be logged-in and a moderator to update a report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:45 +#: lib/graphql/resolvers/report.ex:53 msgid "You need to be logged-in and a moderator to view a report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:255 +#: lib/graphql/resolvers/admin.ex:257 msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:239 +#: lib/graphql/resolvers/admin.ex:241 msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:281 +#: lib/graphql/resolvers/admin.ex:283 msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" @@ -632,7 +674,7 @@ msgid "You need to be logged-in to create posts" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:79 +#: lib/graphql/resolvers/report.ex:87 msgid "You need to be logged-in to create reports" msgstr "" @@ -727,7 +769,8 @@ msgid "Reset your password to login" msgstr "" #, elixir-format -#: lib/graphql/error.ex:95 lib/graphql/error.ex:100 +#: lib/graphql/error.ex:95 +#: lib/graphql/error.ex:100 msgid "Resource not found" msgstr "" @@ -817,8 +860,11 @@ msgid "Profile ID provided is not the anonymous profile one" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:161 lib/graphql/resolvers/group.ex:203 -#: lib/graphql/resolvers/person.ex:148 lib/graphql/resolvers/person.ex:182 lib/graphql/resolvers/person.ex:304 +#: lib/graphql/resolvers/group.ex:161 +#: lib/graphql/resolvers/group.ex:203 +#: lib/graphql/resolvers/person.ex:148 +#: lib/graphql/resolvers/person.ex:182 +#: lib/graphql/resolvers/person.ex:304 msgid "The provided picture is too heavy" msgstr "" @@ -843,7 +889,8 @@ msgid "Unable to fetch resource details from this URL." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:164 lib/graphql/resolvers/participant.ex:253 +#: lib/graphql/resolvers/event.ex:164 +#: lib/graphql/resolvers/participant.ex:253 #: lib/graphql/resolvers/participant.ex:328 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "" @@ -894,6 +941,7 @@ msgid "Failed to update the group" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:338 #: lib/graphql/resolvers/user.ex:469 msgid "Failed to update user email" msgstr "" @@ -1022,3 +1070,23 @@ msgstr "" #: lib/graphql/resolvers/user.ex:157 msgid "Your email seems to be using an invalid format" msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:387 +msgid "Can't confirm an already confirmed user" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:391 +msgid "Deconfirming users is not supported" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:363 +msgid "The new role must be different" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:314 +msgid "You need to be logged-in and an administrator to edit an user's details" +msgstr "" diff --git a/priv/gettext/ru/LC_MESSAGES/activity.po b/priv/gettext/ru/LC_MESSAGES/activity.po index 77f7b908b..8cfdf1b40 100644 --- a/priv/gettext/ru/LC_MESSAGES/activity.po +++ b/priv/gettext/ru/LC_MESSAGES/activity.po @@ -159,19 +159,22 @@ msgstr "%{profile} обновил участника %{member}." #, 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.text.eex:1 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:1 msgid "The event %{event} was created by %{profile}." msgstr "Мероприятие %{event} было создано %{profile}." #, 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.text.eex:13 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:34 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:13 msgid "The event %{event} was deleted by %{profile}." msgstr "Мероприятие %{event} было удалено %{profile}." #, 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.text.eex:7 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:19 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:7 msgid "The event %{event} was updated by %{profile}." msgstr "Мероприятие %{event} было обновлено %{profile}." @@ -201,13 +204,15 @@ msgstr "%{member} присоединился к группе." #, 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.text.eex:25 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:58 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:25 msgid "%{profile} posted a comment on the event %{event}." msgstr "%{profile} оставил комментарий к мероприятию %{event}." #, 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.text.eex:19 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:43 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:19 msgid "%{profile} replied to a comment on the event %{event}." msgstr "%{profile} ответил на комментарий к мероприятию %{event}." @@ -229,7 +234,8 @@ msgstr[2] "Посмотреть еще %{count} событий" #, 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.text.eex:6 +#: lib/web/templates/email/email_direct_activity.html.heex:46 +#: 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!" msgid_plural "There has been some activity!" @@ -244,14 +250,17 @@ msgstr "События на %{instance}" #, 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.text.eex:7 -#: lib/web/templates/email/email_anonymous_activity.html.heex:41 lib/web/templates/email/email_anonymous_activity.text.eex:5 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:19 +#: 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.text.eex:5 msgid "%{profile} has posted an announcement under event %{event}." msgstr "%{profile} разместил объявление под мероприятием %{event}." #, 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.text.eex:1 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 msgid "%{profile} mentionned you in a comment under event %{event}." msgstr "%{profile} упомянул вас в комментарии под мероприятием %{event}." @@ -269,7 +278,8 @@ msgid "Here's your weekly activity recap" msgstr "Вот итоги вашей еженедельной активности" #, elixir-format -#: lib/web/email/activity.ex:119 lib/web/email/activity.ex:140 +#: lib/web/email/activity.ex:119 +#: lib/web/email/activity.ex:140 msgid "Activity notification for %{instance}" msgstr "События на %{instance}" @@ -291,13 +301,15 @@ msgstr "Итоги еженедельной активности для %{instan #, 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.text.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:51 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:19 msgid "%{profile} has posted a new comment under your event %{event}." msgstr "%{profile} разместил новый комментарий под вашим мероприятием %{event}." #, 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.text.eex:13 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:36 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:13 msgid "%{profile} has posted a new reply under your event %{event}." msgstr "%{profile} опубликовал новый ответ под вашим мероприятием %{event}." diff --git a/priv/gettext/ru/LC_MESSAGES/default.po b/priv/gettext/ru/LC_MESSAGES/default.po index ddcb4b6e3..1a506d8e2 100644 --- a/priv/gettext/ru/LC_MESSAGES/default.po +++ b/priv/gettext/ru/LC_MESSAGES/default.po @@ -937,9 +937,12 @@ msgstr "Пожалуйста, используйте это только для #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:63 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:133 -#: lib/web/templates/email/event_updated.text.eex:14 lib/web/templates/email/notification_each_week.html.heex:60 -#: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:60 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 +#: lib/web/templates/email/event_updated.html.heex:133 +#: lib/web/templates/email/event_updated.text.eex:14 +#: lib/web/templates/email/notification_each_week.html.heex:60 +#: lib/web/templates/email/notification_each_week.text.eex:11 +#: lib/web/templates/email/on_day_notification.html.heex:60 #: lib/web/templates/email/on_day_notification.text.eex:11 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." @@ -1009,7 +1012,6 @@ msgstr "" #, elixir-format #: lib/web/templates/email/email_changed_new.html.heex:38 -#: lib/web/templates/email/email_changed_new.text.eex:3 msgid "Hi there! It seems like you wanted to change the email address linked to your account on <b>%{instance}</b>. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." msgstr "" "Привет! Похоже, вы хотели изменить адрес электронной почты, связанный с " @@ -1043,7 +1045,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:70 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.heex:45 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 +#: lib/web/templates/email/registration_confirmation.html.heex:45 msgid "If you didn't trigger this email, you may safely ignore it." msgstr "" "Если вы не оставляли этот запрос, пожалуйста, проигнорируйте данное письмо." @@ -1160,7 +1163,8 @@ msgstr "Смотреть отчёт:" #, elixir-format #: lib/web/templates/email/email_anonymous_activity.html.heex:67 -#: lib/web/templates/email/event_participation_approved.html.heex:58 lib/web/templates/email/event_participation_confirmed.html.heex:58 +#: lib/web/templates/email/event_participation_approved.html.heex:58 +#: lib/web/templates/email/event_participation_confirmed.html.heex:58 msgid "Visit event page" msgstr "Посетите страницу мероприятия" @@ -1182,7 +1186,8 @@ msgstr "Что будет сегодня?" #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:70 -#: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.heex:70 +#: lib/web/templates/email/event_participation_approved.text.eex:11 +#: lib/web/templates/email/event_participation_confirmed.html.heex:70 #: lib/web/templates/email/event_participation_confirmed.text.eex:6 msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." msgstr "" @@ -1212,7 +1217,8 @@ msgstr "Вы недавно подали заявку на присоедине #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:13 -#: lib/web/templates/email/event_participation_confirmed.html.heex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 +#: lib/web/templates/email/event_participation_confirmed.html.heex:13 +#: lib/web/templates/email/event_participation_confirmed.text.eex:1 msgid "You're going!" msgstr "Вы примете участие!" @@ -1645,8 +1651,10 @@ msgid "This is a demonstration site to test Mobilizon." msgstr "Это демонстрационная площадка для тестирования Mobilizon." #, elixir-format -#: lib/service/metadata/actor.ex:91 lib/service/metadata/actor.ex:99 -#: lib/service/metadata/instance.ex:56 lib/service/metadata/instance.ex:62 +#: lib/service/metadata/actor.ex:91 +#: lib/service/metadata/actor.ex:99 +#: lib/service/metadata/instance.ex:56 +#: lib/service/metadata/instance.ex:62 msgid "%{name}'s feed" msgstr "Лента %{name}" @@ -1741,7 +1749,8 @@ msgstr "Ваше участие в %{event} на %{instance} было отмен #. File name template for exported list of participants. Should NOT contain spaces. Make sure the output is going to be something standardized that is acceptable as a file name on most systems. #, elixir-format #: lib/service/export/participants/csv.ex:81 -#: lib/service/export/participants/ods.ex:86 lib/service/export/participants/pdf.ex:96 +#: lib/service/export/participants/ods.ex:86 +#: lib/service/export/participants/pdf.ex:96 msgid "%{event}_participants" msgstr "%{event}_участники" @@ -1762,6 +1771,8 @@ msgstr "Статус участника" #, elixir-format #: lib/service/export/participants/common.ex:52 +#: lib/web/templates/email/admin/_role.html.heex:3 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Administrator" msgstr "Администратор" @@ -1772,6 +1783,8 @@ msgstr "Автор" #, elixir-format #: lib/service/export/participants/common.ex:49 +#: lib/web/templates/email/admin/_role.html.heex:5 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Moderator" msgstr "Модератор" @@ -1822,8 +1835,10 @@ msgstr "Анонимный участник" #, elixir-format #: lib/web/templates/email/date/event_tz_date.html.heex:6 -#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 lib/web/templates/email/date/event_tz_date_range.html.heex:12 -#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:12 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 msgid "🌐 %{timezone} %{offset}" msgstr "%{timezone} %{offset}" @@ -2020,3 +2035,141 @@ msgstr[1] "" msgstr[2] "" "У вас есть %{number_participation_requests} ожидающих рассмотрения запросов " "на участие:" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:13 +#: lib/web/templates/email/admin_user_role_changed.text.eex:1 +msgid "An administrator changed your role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:120 +msgid "An administrator confirmed your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:1 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:1 +msgid "An administrator manually changed the email attached to your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:47 +#: lib/web/email/admin.ex:72 +msgid "An administrator manually changed the email attached to your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:13 +#: lib/web/templates/email/admin_user_confirmation.text.eex:1 +msgid "An administrator manually confirmed your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:98 +msgid "An administrator updated your role on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/email_changed_new.text.eex:3 +msgid "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." +msgstr "" +"Привет! Похоже, вы хотели изменить адрес электронной почты, связанный с " +"вашей учетной записью на <b>%{instance}</b>. Если вы все еще хотите сделать " +"это, нажмите кнопку ниже, чтобы подтвердить изменение. После этого вы " +"сможете войти в %{instance} с новым адресом электронной почты." + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:3 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually changed your account email from %{old_email} (this one) to %{new_email}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> (this one) to <b>%{new_email}</b>." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> to <b>%{new_email}</b> (this one)." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:71 +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:45 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:45 +#: lib/web/templates/email/admin_user_role_changed.html.heex:67 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods %{start_link}on the instance's about page%{end_link}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:7 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:4 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:4 +#: lib/web/templates/email/admin_user_role_changed.text.eex:8 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods on the instance's about page: %{about_page}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:58 +msgid "Login on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:55 +msgid "New role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:6 +msgid "New role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:47 +msgid "Old role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:5 +msgid "Old role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin/_role.html.heex:7 +#: lib/web/templates/email/admin/_role.text.eex:1 +msgid "User" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:45 +msgid "You may now login using your credentials on the service." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:5 +msgid "You may now login using your credentials on the service:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just changed your account role." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just changed your account role." +msgstr "" diff --git a/priv/gettext/ru/LC_MESSAGES/errors.po b/priv/gettext/ru/LC_MESSAGES/errors.po index 4a3c8bfdb..1890d2573 100644 --- a/priv/gettext/ru/LC_MESSAGES/errors.po +++ b/priv/gettext/ru/LC_MESSAGES/errors.po @@ -122,14 +122,19 @@ msgid "Error while saving user settings" msgstr "Ошибка при сохранении пользовательских настроек" #, elixir-format -#: lib/graphql/error.ex:99 lib/graphql/resolvers/group.ex:249 -#: lib/graphql/resolvers/group.ex:281 lib/graphql/resolvers/group.ex:318 lib/graphql/resolvers/group.ex:349 -#: lib/graphql/resolvers/group.ex:398 lib/graphql/resolvers/member.ex:81 +#: lib/graphql/error.ex:99 +#: lib/graphql/resolvers/group.ex:249 +#: lib/graphql/resolvers/group.ex:281 +#: lib/graphql/resolvers/group.ex:318 +#: lib/graphql/resolvers/group.ex:349 +#: lib/graphql/resolvers/group.ex:398 +#: lib/graphql/resolvers/member.ex:81 msgid "Group not found" msgstr "Группа не найдена" #, elixir-format -#: lib/graphql/resolvers/group.ex:78 lib/graphql/resolvers/group.ex:82 +#: lib/graphql/resolvers/group.ex:78 +#: lib/graphql/resolvers/group.ex:82 msgid "Group with ID %{id} not found" msgstr "Группа с ID %{id} не найдена" @@ -158,15 +163,21 @@ msgstr "" "электронной почты" #, elixir-format -#: lib/graphql/resolvers/person.ex:314 lib/graphql/resolvers/user.ex:298 +#: lib/graphql/resolvers/person.ex:314 +#: lib/graphql/resolvers/user.ex:298 msgid "No user with this email was found" msgstr "Пользователя с этим адресом электронной почты не найдено" #, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:32 lib/graphql/resolvers/participant.ex:210 lib/graphql/resolvers/person.ex:236 -#: lib/graphql/resolvers/person.ex:353 lib/graphql/resolvers/person.ex:380 lib/graphql/resolvers/person.ex:397 -#: lib/graphql/resolvers/person.ex:425 lib/graphql/resolvers/person.ex:440 +#: lib/graphql/resolvers/participant.ex:32 +#: lib/graphql/resolvers/participant.ex:210 +#: lib/graphql/resolvers/person.ex:236 +#: lib/graphql/resolvers/person.ex:353 +#: lib/graphql/resolvers/person.ex:380 +#: lib/graphql/resolvers/person.ex:397 +#: lib/graphql/resolvers/person.ex:425 +#: lib/graphql/resolvers/person.ex:440 msgid "Profile is not owned by authenticated user" msgstr "Профиль не принадлежит аутентифицированному пользователю" @@ -181,11 +192,13 @@ msgid "The current password is invalid" msgstr "Текущий пароль неверен" #, elixir-format +#: lib/graphql/resolvers/admin.ex:341 #: lib/graphql/resolvers/user.ex:472 msgid "The new email doesn't seem to be valid" msgstr "Новый адрес электронной почты недействителен" #, elixir-format +#: lib/graphql/resolvers/admin.ex:344 #: lib/graphql/resolvers/user.ex:475 msgid "The new email must be different" msgstr "Новый адрес электронной почты должен отличаться от текущего" @@ -196,7 +209,8 @@ msgid "The new password must be different" msgstr "Новый пароль должен отличаться от текущего" #, elixir-format -#: lib/graphql/resolvers/user.ex:479 lib/graphql/resolvers/user.ex:541 +#: lib/graphql/resolvers/user.ex:479 +#: lib/graphql/resolvers/user.ex:541 #: lib/graphql/resolvers/user.ex:544 msgid "The password provided is invalid" msgstr "Введён неверный пароль" @@ -219,7 +233,8 @@ msgid "This user has been disabled" msgstr "Этот пользователь отключен" #, elixir-format -#: lib/graphql/resolvers/user.ex:252 lib/graphql/resolvers/user.ex:257 +#: lib/graphql/resolvers/user.ex:252 +#: lib/graphql/resolvers/user.ex:257 msgid "Unable to validate user" msgstr "Невозможно проверить пользователя" @@ -296,7 +311,8 @@ msgid "You need to have an existing token to get a refresh token" msgstr "У вас должен быть существующий токен, чтобы получить токен обновления" #, elixir-format -#: lib/graphql/resolvers/user.ex:276 lib/graphql/resolvers/user.ex:301 +#: lib/graphql/resolvers/user.ex:276 +#: lib/graphql/resolvers/user.ex:301 msgid "You requested again a confirmation email too soon" msgstr "Вы слишком рано запросили новое письмо с подтверждением" @@ -316,7 +332,8 @@ msgid "No profile found with this ID" msgstr "Профиль с этим ID не найден" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:97 +#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:97 msgid "No remote profile found with this ID" msgstr "Удалённый профиль с этим ID не найден" @@ -367,17 +384,19 @@ msgid "Comment is already deleted" msgstr "Комментарий уже удалён" #, elixir-format -#: lib/graphql/error.ex:101 lib/graphql/resolvers/discussion.ex:69 +#: lib/graphql/error.ex:101 +#: lib/graphql/resolvers/discussion.ex:69 msgid "Discussion not found" msgstr "Обсуждение не найдено" #, elixir-format -#: lib/graphql/resolvers/report.ex:63 lib/graphql/resolvers/report.ex:82 +#: lib/graphql/resolvers/report.ex:71 +#: lib/graphql/resolvers/report.ex:90 msgid "Error while saving report" msgstr "При сохранении отчёта произошла ошибка" #, elixir-format -#: lib/graphql/resolvers/report.ex:102 +#: lib/graphql/resolvers/report.ex:110 msgid "Error while updating report" msgstr "При обновлении отчёта произошла ошибка" @@ -387,14 +406,16 @@ msgid "Event id not found" msgstr "Не найден id мероприятия" #, elixir-format -#: lib/graphql/error.ex:98 lib/graphql/resolvers/event.ex:360 +#: lib/graphql/error.ex:98 +#: lib/graphql/resolvers/event.ex:360 #: lib/graphql/resolvers/event.ex:412 msgid "Event not found" msgstr "Мероприятие не найдено" #, elixir-format #: lib/graphql/resolvers/participant.ex:87 -#: lib/graphql/resolvers/participant.ex:128 lib/graphql/resolvers/participant.ex:155 +#: lib/graphql/resolvers/participant.ex:128 +#: lib/graphql/resolvers/participant.ex:155 #: lib/graphql/resolvers/participant.ex:336 msgid "Event with this ID %{id} doesn't exist" msgstr "Мероприятия с ID %{id} не существует" @@ -410,8 +431,11 @@ msgid "No discussion with ID %{id}" msgstr "Обсуждения с ID %{id} нет" #, elixir-format -#: lib/graphql/resolvers/todos.ex:80 lib/graphql/resolvers/todos.ex:107 -#: lib/graphql/resolvers/todos.ex:179 lib/graphql/resolvers/todos.ex:208 lib/graphql/resolvers/todos.ex:237 +#: lib/graphql/resolvers/todos.ex:80 +#: lib/graphql/resolvers/todos.ex:107 +#: lib/graphql/resolvers/todos.ex:179 +#: lib/graphql/resolvers/todos.ex:208 +#: lib/graphql/resolvers/todos.ex:237 msgid "No profile found for user" msgstr "Профиль пользователя не найден" @@ -427,7 +451,8 @@ msgstr "У участника уже есть роль %{role}" #, elixir-format #: lib/graphql/resolvers/participant.ex:187 -#: lib/graphql/resolvers/participant.ex:220 lib/graphql/resolvers/participant.ex:263 +#: lib/graphql/resolvers/participant.ex:220 +#: lib/graphql/resolvers/participant.ex:263 msgid "Participant not found" msgstr "Участник не найден" @@ -442,12 +467,14 @@ msgid "Person with username %{username} not found" msgstr "Не найдено человека с именем пользователя %{username}" #, elixir-format -#: lib/graphql/resolvers/post.ex:169 lib/graphql/resolvers/post.ex:203 +#: lib/graphql/resolvers/post.ex:169 +#: lib/graphql/resolvers/post.ex:203 msgid "Post ID is not a valid ID" msgstr "ID поста имеет недопустимое значение" #, elixir-format -#: lib/graphql/resolvers/post.ex:172 lib/graphql/resolvers/post.ex:206 +#: lib/graphql/resolvers/post.ex:172 +#: lib/graphql/resolvers/post.ex:206 msgid "Post doesn't exist" msgstr "Пост не существует" @@ -457,31 +484,42 @@ msgid "Profile invited doesn't exist" msgstr "Приглашенный профиль не существует" #, elixir-format -#: lib/graphql/resolvers/member.ex:93 lib/graphql/resolvers/member.ex:97 +#: lib/graphql/resolvers/member.ex:93 +#: lib/graphql/resolvers/member.ex:97 msgid "Profile is already a member of this group" msgstr "Профиль уже является участником этой группы" #, elixir-format -#: lib/graphql/resolvers/post.ex:133 lib/graphql/resolvers/post.ex:175 -#: lib/graphql/resolvers/post.ex:209 lib/graphql/resolvers/resource.ex:90 lib/graphql/resolvers/resource.ex:132 -#: lib/graphql/resolvers/resource.ex:165 lib/graphql/resolvers/resource.ex:199 lib/graphql/resolvers/todos.ex:58 -#: lib/graphql/resolvers/todos.ex:83 lib/graphql/resolvers/todos.ex:110 lib/graphql/resolvers/todos.ex:182 -#: lib/graphql/resolvers/todos.ex:214 lib/graphql/resolvers/todos.ex:246 +#: lib/graphql/resolvers/post.ex:133 +#: lib/graphql/resolvers/post.ex:175 +#: lib/graphql/resolvers/post.ex:209 +#: lib/graphql/resolvers/resource.ex:90 +#: lib/graphql/resolvers/resource.ex:132 +#: lib/graphql/resolvers/resource.ex:165 +#: lib/graphql/resolvers/resource.ex:199 +#: lib/graphql/resolvers/todos.ex:58 +#: lib/graphql/resolvers/todos.ex:83 +#: lib/graphql/resolvers/todos.ex:110 +#: lib/graphql/resolvers/todos.ex:182 +#: lib/graphql/resolvers/todos.ex:214 +#: lib/graphql/resolvers/todos.ex:246 msgid "Profile is not member of group" msgstr "Профиль не является членом группы" #, elixir-format -#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/person.ex:233 +#: lib/graphql/resolvers/actor.ex:67 +#: lib/graphql/resolvers/person.ex:233 msgid "Profile not found" msgstr "Профиль не найден" #, elixir-format -#: lib/graphql/resolvers/report.ex:40 +#: lib/graphql/resolvers/report.ex:48 msgid "Report not found" msgstr "Отчёт не найден" #, elixir-format -#: lib/graphql/resolvers/resource.ex:169 lib/graphql/resolvers/resource.ex:196 +#: lib/graphql/resolvers/resource.ex:169 +#: lib/graphql/resolvers/resource.ex:196 msgid "Resource doesn't exist" msgstr "Ресурс не существует" @@ -498,12 +536,14 @@ msgid "This token is invalid" msgstr "Этот токен недействителен" #, elixir-format -#: lib/graphql/resolvers/todos.ex:176 lib/graphql/resolvers/todos.ex:243 +#: lib/graphql/resolvers/todos.ex:176 +#: lib/graphql/resolvers/todos.ex:243 msgid "Todo doesn't exist" msgstr "Такого пункта в списке дел не существует" #, elixir-format -#: lib/graphql/resolvers/todos.ex:77 lib/graphql/resolvers/todos.ex:211 +#: lib/graphql/resolvers/todos.ex:77 +#: lib/graphql/resolvers/todos.ex:211 #: lib/graphql/resolvers/todos.ex:240 msgid "Todo list doesn't exist" msgstr "Списка дел не существует" @@ -514,12 +554,13 @@ msgid "Token does not exist" msgstr "Токен не существует" #, elixir-format -#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70 +#: lib/graphql/resolvers/feed_token.ex:67 +#: lib/graphql/resolvers/feed_token.ex:70 msgid "Token is not a valid UUID" msgstr "Токен не является допустимым UUID" #, elixir-format -#: lib/graphql/error.ex:96 lib/graphql/resolvers/person.ex:458 +#: lib/graphql/error.ex:96 msgid "User not found" msgstr "Пользователь не найден" @@ -539,7 +580,8 @@ msgid "You are not a member of this group" msgstr "Вы не состоите в этой группе" #, elixir-format -#: lib/graphql/resolvers/member.ex:157 lib/graphql/resolvers/member.ex:173 +#: lib/graphql/resolvers/member.ex:157 +#: lib/graphql/resolvers/member.ex:173 #: lib/graphql/resolvers/member.ex:188 msgid "You are not a moderator or admin for this group" msgstr "Вы не модератор и не администратор этой группы" @@ -605,45 +647,45 @@ msgid "You don't have permission to delete this token" msgstr "У вас нет прав на удаление этого токена" #, elixir-format -#: lib/graphql/resolvers/admin.ex:54 +#: lib/graphql/resolvers/admin.ex:56 msgid "You need to be logged-in and a moderator to list action logs" msgstr "" "Для доступа к журналу активности вы должны войти в систему и иметь права " "модератора" #, elixir-format -#: lib/graphql/resolvers/report.ex:28 +#: lib/graphql/resolvers/report.ex:36 msgid "You need to be logged-in and a moderator to list reports" msgstr "" "Для доступа к списку отчётов вы должны войти в систему и иметь права " "модератора" #, elixir-format -#: lib/graphql/resolvers/report.ex:107 +#: lib/graphql/resolvers/report.ex:115 msgid "You need to be logged-in and a moderator to update a report" msgstr "" "Для обновления отчёта вы должны войти в систему и иметь права модератора" #, elixir-format -#: lib/graphql/resolvers/report.ex:45 +#: lib/graphql/resolvers/report.ex:53 msgid "You need to be logged-in and a moderator to view a report" msgstr "Для просмотра отчёта вы должны войти в систему и иметь права модератора" #, elixir-format -#: lib/graphql/resolvers/admin.ex:255 +#: lib/graphql/resolvers/admin.ex:257 msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" "Для доступа в админку вы должны войти в систему и иметь права администратора" #, elixir-format -#: lib/graphql/resolvers/admin.ex:239 +#: lib/graphql/resolvers/admin.ex:241 msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" "Для доступа к панели со статистикой вы должны войти в систему и иметь права " "администратора" #, elixir-format -#: lib/graphql/resolvers/admin.ex:281 +#: lib/graphql/resolvers/admin.ex:283 msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" "Для сохранения настроек в админке вы должны войти в систему и иметь права " @@ -672,7 +714,7 @@ msgstr "" "Вам необходимо войти в систему, чтобы иметь возможность создавать публикации" #, elixir-format -#: lib/graphql/resolvers/report.ex:79 +#: lib/graphql/resolvers/report.ex:87 msgid "You need to be logged-in to create reports" msgstr "" "Вам необходимо войти в систему, чтобы иметь возможность создавать отчёты" @@ -776,7 +818,8 @@ msgid "Reset your password to login" msgstr "Сбросьте пароль для входа в систему" #, elixir-format -#: lib/graphql/error.ex:95 lib/graphql/error.ex:100 +#: lib/graphql/error.ex:95 +#: lib/graphql/error.ex:100 msgid "Resource not found" msgstr "Ресурс не найден" @@ -867,8 +910,11 @@ msgid "Profile ID provided is not the anonymous profile one" msgstr "Указанный ID профиля не является анонимным" #, elixir-format -#: lib/graphql/resolvers/group.ex:161 lib/graphql/resolvers/group.ex:203 -#: lib/graphql/resolvers/person.ex:148 lib/graphql/resolvers/person.ex:182 lib/graphql/resolvers/person.ex:304 +#: lib/graphql/resolvers/group.ex:161 +#: lib/graphql/resolvers/group.ex:203 +#: lib/graphql/resolvers/person.ex:148 +#: lib/graphql/resolvers/person.ex:182 +#: lib/graphql/resolvers/person.ex:304 msgid "The provided picture is too heavy" msgstr "Предоставленное изображение слишком большое" @@ -893,7 +939,8 @@ msgid "Unable to fetch resource details from this URL." msgstr "Невозможно получить сведения о ресурсе по этому URL-адресу." #, elixir-format -#: lib/graphql/resolvers/event.ex:164 lib/graphql/resolvers/participant.ex:253 +#: lib/graphql/resolvers/event.ex:164 +#: lib/graphql/resolvers/participant.ex:253 #: lib/graphql/resolvers/participant.ex:328 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "Указанный профиль модератора не имеет доступа к этому событию" @@ -949,6 +996,7 @@ msgid "Failed to update the group" msgstr "Не удалось обновить группу" #, elixir-format +#: lib/graphql/resolvers/admin.ex:338 #: lib/graphql/resolvers/user.ex:469 msgid "Failed to update user email" msgstr "Не удалось обновить электронную почту пользователя" @@ -1077,3 +1125,25 @@ msgstr "" #: lib/graphql/resolvers/user.ex:157 msgid "Your email seems to be using an invalid format" msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:387 +msgid "Can't confirm an already confirmed user" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:391 +msgid "Deconfirming users is not supported" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:363 +msgid "The new role must be different" +msgstr "Новый адрес электронной почты должен отличаться от текущего" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:314 +msgid "You need to be logged-in and an administrator to edit an user's details" +msgstr "" +"Для сохранения настроек в админке вы должны войти в систему и иметь права " +"администратора" diff --git a/priv/gettext/sv/LC_MESSAGES/activity.po b/priv/gettext/sv/LC_MESSAGES/activity.po index 65f2a02a5..b3846fc5d 100644 --- a/priv/gettext/sv/LC_MESSAGES/activity.po +++ b/priv/gettext/sv/LC_MESSAGES/activity.po @@ -159,18 +159,29 @@ msgstr "%{profile} uppdaterade medlemmen %{member}." #: 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.text.eex:1 -#, elixir-format +#: lib/web/templates/email/activity/_event_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:1 msgid "The event %{event} was created by %{profile}." msgstr "Händelsen %{event} skapades av %{profile}." #: 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.text.eex:13 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:34 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:13 +msgid "The event %{event} was deleted by %{profile}." +msgstr "" + #, elixir-format msgid "The event %{event} was deleted by %{profile}." msgstr "Händelsen %{event} togs bort av %{profile}." #: 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.text.eex:7 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:19 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:7 +msgid "The event %{event} was updated by %{profile}." +msgstr "" + #, elixir-format msgid "The event %{event} was updated by %{profile}." msgstr "Händelsen %{event} uppdaterades av %{profile}." @@ -201,12 +212,22 @@ msgstr "%{member} gick med i gruppen." #: 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.text.eex:25 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:58 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:25 +msgid "%{profile} posted a comment on the event %{event}." +msgstr "" + #, elixir-format msgid "%{profile} posted a comment on the event %{event}." msgstr "%{profile} la en kommentar till händelsen %{event}." #: 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.text.eex:19 +#: lib/web/templates/email/activity/_event_activity_item.html.heex:43 +#: lib/web/templates/email/activity/_event_activity_item.text.eex:19 +msgid "%{profile} replied to a comment on the event %{event}." +msgstr "" + #, elixir-format msgid "%{profile} replied to a comment on the event %{event}." msgstr "%{profile} svarade på en kommentar i evenemanget %{event}." @@ -227,7 +248,8 @@ msgstr[0] "Visa en till aktivitet" msgstr[1] "Visa %{count} fler aktiviteter" #: 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.text.eex:6 +#: lib/web/templates/email/email_direct_activity.html.heex:46 +#: lib/web/templates/email/email_direct_activity.text.eex:6 #: lib/web/templates/email/email_direct_activity.text.eex:7 #, elixir-format msgid "There has been an activity!" @@ -243,12 +265,24 @@ msgstr "Aktivitet på %{instance}" #: 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.text.eex:7 #: lib/web/templates/email/email_anonymous_activity.html.heex:41 lib/web/templates/email/email_anonymous_activity.text.eex:5 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:19 +#: 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.text.eex:5 +msgid "%{profile} has posted an announcement under event %{event}." +msgstr "" + #, elixir-format msgid "%{profile} has posted an announcement under event %{event}." msgstr "%{profile} skickade ut en kungörelse under händelsen %{event}." #: 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.text.eex:1 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 +msgid "%{profile} mentionned you in a comment under event %{event}." +msgstr "" + #, elixir-format msgid "%{profile} mentionned you in a comment under event %{event}." msgstr "%{profile} nämnde dig i en kommentar under händelsen %{event}." @@ -268,6 +302,9 @@ msgstr "Här är din veckas aktivitetssammanfattning" #: lib/web/email/activity.ex:119 lib/web/email/activity.ex:140 #, elixir-format +#, elixir-format +#: lib/web/email/activity.ex:119 +#: lib/web/email/activity.ex:140 msgid "Activity notification for %{instance}" msgstr "Aktivitetsavisering för %{instance}" @@ -289,6 +326,11 @@ msgstr "Veckoaktivitetssammanfattning för %{instance}" #: 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.text.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:51 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:19 +msgid "%{profile} has posted a new comment under your event %{event}." +msgstr "" + #, elixir-format msgid "%{profile} has posted a new comment under your event %{event}." msgstr "%{profile} har lagt en ny kommentar under ditt evenemang %{event}." @@ -296,6 +338,8 @@ msgstr "%{profile} har lagt en ny kommentar under ditt evenemang %{event}." #: 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.text.eex:13 #, elixir-format +#: lib/web/templates/email/activity/_comment_activity_item.html.heex:36 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:13 msgid "%{profile} has posted a new reply under your event %{event}." msgstr "%{profile} har lagt ett nytt svar under ditt evenemang %{event}." diff --git a/priv/gettext/sv/LC_MESSAGES/default.po b/priv/gettext/sv/LC_MESSAGES/default.po index 4a884c4d6..4e5eade6d 100644 --- a/priv/gettext/sv/LC_MESSAGES/default.po +++ b/priv/gettext/sv/LC_MESSAGES/default.po @@ -771,9 +771,12 @@ msgstr "" #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:63 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.heex:133 -#: lib/web/templates/email/event_updated.text.eex:14 lib/web/templates/email/notification_each_week.html.heex:60 -#: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.heex:60 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 +#: lib/web/templates/email/event_updated.html.heex:133 +#: lib/web/templates/email/event_updated.text.eex:14 +#: lib/web/templates/email/notification_each_week.html.heex:60 +#: lib/web/templates/email/notification_each_week.text.eex:11 +#: lib/web/templates/email/on_day_notification.html.heex:60 #: lib/web/templates/email/on_day_notification.text.eex:11 msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." @@ -836,7 +839,6 @@ msgstr "" #, elixir-format #: lib/web/templates/email/email_changed_new.html.heex:38 -#: lib/web/templates/email/email_changed_new.text.eex:3 msgid "Hi there! It seems like you wanted to change the email address linked to your account on <b>%{instance}</b>. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." msgstr "" @@ -858,7 +860,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.heex:70 -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.heex:45 +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 +#: lib/web/templates/email/registration_confirmation.html.heex:45 msgid "If you didn't trigger this email, you may safely ignore it." msgstr "" "Du kan strunta i det här meddelandet om det inte var du frågade efter det." @@ -973,7 +976,8 @@ msgstr "Visa anmälan:" #, elixir-format #: lib/web/templates/email/email_anonymous_activity.html.heex:67 -#: lib/web/templates/email/event_participation_approved.html.heex:58 lib/web/templates/email/event_participation_confirmed.html.heex:58 +#: lib/web/templates/email/event_participation_approved.html.heex:58 +#: lib/web/templates/email/event_participation_confirmed.html.heex:58 msgid "Visit event page" msgstr "" @@ -995,7 +999,8 @@ msgstr "" #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:70 -#: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.heex:70 +#: lib/web/templates/email/event_participation_approved.text.eex:11 +#: lib/web/templates/email/event_participation_confirmed.html.heex:70 #: lib/web/templates/email/event_participation_confirmed.text.eex:6 msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." msgstr "" @@ -1019,7 +1024,8 @@ msgstr "Du har bett om att få delta i evenemanget %{title}." #, elixir-format #: lib/web/templates/email/event_participation_approved.html.heex:13 -#: lib/web/templates/email/event_participation_confirmed.html.heex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 +#: lib/web/templates/email/event_participation_confirmed.html.heex:13 +#: lib/web/templates/email/event_participation_confirmed.text.eex:1 msgid "You're going!" msgstr "" @@ -1347,8 +1353,10 @@ msgstr "" "Detta är en webbplats för att visa upp och testa beta-versionen av Mobilizon." #, elixir-format -#: lib/service/metadata/actor.ex:91 lib/service/metadata/actor.ex:99 -#: lib/service/metadata/instance.ex:56 lib/service/metadata/instance.ex:62 +#: lib/service/metadata/actor.ex:91 +#: lib/service/metadata/actor.ex:99 +#: lib/service/metadata/instance.ex:56 +#: lib/service/metadata/instance.ex:62 msgid "%{name}'s feed" msgstr "" @@ -1429,7 +1437,8 @@ msgstr "Din förfrågan om att få delta i evenemanget %{title} har godkännts" #. File name template for exported list of participants. Should NOT contain spaces. Make sure the output is going to be something standardized that is acceptable as a file name on most systems. #, elixir-format #: lib/service/export/participants/csv.ex:81 -#: lib/service/export/participants/ods.ex:86 lib/service/export/participants/pdf.ex:96 +#: lib/service/export/participants/ods.ex:86 +#: lib/service/export/participants/pdf.ex:96 msgid "%{event}_participants" msgstr "" @@ -1450,6 +1459,8 @@ msgstr "" #, elixir-format #: lib/service/export/participants/common.ex:52 +#: lib/web/templates/email/admin/_role.html.heex:3 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Administrator" msgstr "" @@ -1460,6 +1471,8 @@ msgstr "" #, elixir-format #: lib/service/export/participants/common.ex:49 +#: lib/web/templates/email/admin/_role.html.heex:5 +#: lib/web/templates/email/admin/_role.text.eex:1 msgid "Moderator" msgstr "" @@ -1510,8 +1523,10 @@ msgstr "" #, elixir-format #: lib/web/templates/email/date/event_tz_date.html.heex:6 -#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 lib/web/templates/email/date/event_tz_date_range.html.heex:12 -#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:7 +#: lib/web/templates/email/date/event_tz_date_range.html.heex:12 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 +#: lib/web/templates/email/date/event_tz_date_range.text.eex:1 msgid "🌐 %{timezone} %{offset}" msgstr "" @@ -1699,3 +1714,137 @@ msgid "You have one pending attendance request to process for the following even msgid_plural "You have %{number_participation_requests} attendance requests to process for the following event:" msgstr[0] "" msgstr[1] "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:13 +#: lib/web/templates/email/admin_user_role_changed.text.eex:1 +msgid "An administrator changed your role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:120 +msgid "An administrator confirmed your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:1 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:13 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:1 +msgid "An administrator manually changed the email attached to your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:47 +#: lib/web/email/admin.ex:72 +msgid "An administrator manually changed the email attached to your account on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:13 +#: lib/web/templates/email/admin_user_confirmation.text.eex:1 +msgid "An administrator manually confirmed your account" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/email/admin.ex:98 +msgid "An administrator updated your role on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/web/templates/email/email_changed_new.text.eex:3 +msgid "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:3 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually changed your account email from %{old_email} (this one) to %{new_email}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> (this one) to <b>%{new_email}</b>." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually changed your account email from <b>%{old_email}</b> to <b>%{new_email}</b> (this one)." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just manually confirmed your account." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:71 +#: lib/web/templates/email/admin_user_email_changed_new.html.heex:45 +#: lib/web/templates/email/admin_user_email_changed_old.html.heex:45 +#: lib/web/templates/email/admin_user_role_changed.html.heex:67 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods %{start_link}on the instance's about page%{end_link}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:7 +#: lib/web/templates/email/admin_user_email_changed_new.text.eex:4 +#: lib/web/templates/email/admin_user_email_changed_old.text.eex:4 +#: lib/web/templates/email/admin_user_role_changed.text.eex:8 +msgid "If something doesn't feel right to you, please contact the instance administrator through the contact methods on the instance's about page: %{about_page}." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:58 +msgid "Login on %{instance}" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:55 +msgid "New role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:6 +msgid "New role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:47 +msgid "Old role" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:5 +msgid "Old role:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin/_role.html.heex:7 +#: lib/web/templates/email/admin/_role.text.eex:1 +msgid "User" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.html.heex:45 +msgid "You may now login using your credentials on the service." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_confirmation.text.eex:5 +msgid "You may now login using your credentials on the service:" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.text.eex:3 +msgid "Hi there! We just wanted to inform you that an administrator from %{instance} just changed your account role." +msgstr "" + +#, elixir-format, ex-autogen +#: lib/web/templates/email/admin_user_role_changed.html.heex:38 +msgid "Hi there! We just wanted to inform you that an administrator from <b>%{instance}</b> just changed your account role." +msgstr "" diff --git a/priv/gettext/sv/LC_MESSAGES/errors.po b/priv/gettext/sv/LC_MESSAGES/errors.po index aafbfe5fa..b4e187e1e 100644 --- a/priv/gettext/sv/LC_MESSAGES/errors.po +++ b/priv/gettext/sv/LC_MESSAGES/errors.po @@ -115,14 +115,19 @@ msgid "Error while saving user settings" msgstr "Ett fel uppstod när användarinställningarna skulle sparas" #, elixir-format -#: lib/graphql/error.ex:99 lib/graphql/resolvers/group.ex:249 -#: lib/graphql/resolvers/group.ex:281 lib/graphql/resolvers/group.ex:318 lib/graphql/resolvers/group.ex:349 -#: lib/graphql/resolvers/group.ex:398 lib/graphql/resolvers/member.ex:81 +#: lib/graphql/error.ex:99 +#: lib/graphql/resolvers/group.ex:249 +#: lib/graphql/resolvers/group.ex:281 +#: lib/graphql/resolvers/group.ex:318 +#: lib/graphql/resolvers/group.ex:349 +#: lib/graphql/resolvers/group.ex:398 +#: lib/graphql/resolvers/member.ex:81 msgid "Group not found" msgstr "Gruppen kunde inte hittas" #, elixir-format -#: lib/graphql/resolvers/group.ex:78 lib/graphql/resolvers/group.ex:82 +#: lib/graphql/resolvers/group.ex:78 +#: lib/graphql/resolvers/group.ex:82 msgid "Group with ID %{id} not found" msgstr "Gruppen med %{id} kunde inte hittas" @@ -147,15 +152,21 @@ msgid "No user to validate with this email was found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:314 lib/graphql/resolvers/user.ex:298 +#: lib/graphql/resolvers/person.ex:314 +#: lib/graphql/resolvers/user.ex:298 msgid "No user with this email was found" msgstr "" #, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 -#: lib/graphql/resolvers/participant.ex:32 lib/graphql/resolvers/participant.ex:210 lib/graphql/resolvers/person.ex:236 -#: lib/graphql/resolvers/person.ex:353 lib/graphql/resolvers/person.ex:380 lib/graphql/resolvers/person.ex:397 -#: lib/graphql/resolvers/person.ex:425 lib/graphql/resolvers/person.ex:440 +#: lib/graphql/resolvers/participant.ex:32 +#: lib/graphql/resolvers/participant.ex:210 +#: lib/graphql/resolvers/person.ex:236 +#: lib/graphql/resolvers/person.ex:353 +#: lib/graphql/resolvers/person.ex:380 +#: lib/graphql/resolvers/person.ex:397 +#: lib/graphql/resolvers/person.ex:425 +#: lib/graphql/resolvers/person.ex:440 msgid "Profile is not owned by authenticated user" msgstr "" @@ -170,11 +181,13 @@ msgid "The current password is invalid" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:341 #: lib/graphql/resolvers/user.ex:472 msgid "The new email doesn't seem to be valid" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:344 #: lib/graphql/resolvers/user.ex:475 msgid "The new email must be different" msgstr "" @@ -185,7 +198,8 @@ msgid "The new password must be different" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:479 lib/graphql/resolvers/user.ex:541 +#: lib/graphql/resolvers/user.ex:479 +#: lib/graphql/resolvers/user.ex:541 #: lib/graphql/resolvers/user.ex:544 msgid "The password provided is invalid" msgstr "" @@ -206,7 +220,8 @@ msgid "This user has been disabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:252 lib/graphql/resolvers/user.ex:257 +#: lib/graphql/resolvers/user.ex:252 +#: lib/graphql/resolvers/user.ex:257 msgid "Unable to validate user" msgstr "" @@ -281,7 +296,8 @@ msgid "You need to have an existing token to get a refresh token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:276 lib/graphql/resolvers/user.ex:301 +#: lib/graphql/resolvers/user.ex:276 +#: lib/graphql/resolvers/user.ex:301 msgid "You requested again a confirmation email too soon" msgstr "" @@ -301,7 +317,8 @@ msgid "No profile found with this ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:97 +#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:97 msgid "No remote profile found with this ID" msgstr "" @@ -352,17 +369,19 @@ msgid "Comment is already deleted" msgstr "" #, elixir-format -#: lib/graphql/error.ex:101 lib/graphql/resolvers/discussion.ex:69 +#: lib/graphql/error.ex:101 +#: lib/graphql/resolvers/discussion.ex:69 msgid "Discussion not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:63 lib/graphql/resolvers/report.ex:82 +#: lib/graphql/resolvers/report.ex:71 +#: lib/graphql/resolvers/report.ex:90 msgid "Error while saving report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:102 +#: lib/graphql/resolvers/report.ex:110 msgid "Error while updating report" msgstr "" @@ -372,14 +391,16 @@ msgid "Event id not found" msgstr "" #, elixir-format -#: lib/graphql/error.ex:98 lib/graphql/resolvers/event.ex:360 +#: lib/graphql/error.ex:98 +#: lib/graphql/resolvers/event.ex:360 #: lib/graphql/resolvers/event.ex:412 msgid "Event not found" msgstr "" #, elixir-format #: lib/graphql/resolvers/participant.ex:87 -#: lib/graphql/resolvers/participant.ex:128 lib/graphql/resolvers/participant.ex:155 +#: lib/graphql/resolvers/participant.ex:128 +#: lib/graphql/resolvers/participant.ex:155 #: lib/graphql/resolvers/participant.ex:336 msgid "Event with this ID %{id} doesn't exist" msgstr "" @@ -395,8 +416,11 @@ msgid "No discussion with ID %{id}" msgstr "" #, elixir-format -#: lib/graphql/resolvers/todos.ex:80 lib/graphql/resolvers/todos.ex:107 -#: lib/graphql/resolvers/todos.ex:179 lib/graphql/resolvers/todos.ex:208 lib/graphql/resolvers/todos.ex:237 +#: lib/graphql/resolvers/todos.ex:80 +#: lib/graphql/resolvers/todos.ex:107 +#: lib/graphql/resolvers/todos.ex:179 +#: lib/graphql/resolvers/todos.ex:208 +#: lib/graphql/resolvers/todos.ex:237 msgid "No profile found for user" msgstr "" @@ -412,7 +436,8 @@ msgstr "" #, elixir-format #: lib/graphql/resolvers/participant.ex:187 -#: lib/graphql/resolvers/participant.ex:220 lib/graphql/resolvers/participant.ex:263 +#: lib/graphql/resolvers/participant.ex:220 +#: lib/graphql/resolvers/participant.ex:263 msgid "Participant not found" msgstr "" @@ -427,12 +452,14 @@ msgid "Person with username %{username} not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:169 lib/graphql/resolvers/post.ex:203 +#: lib/graphql/resolvers/post.ex:169 +#: lib/graphql/resolvers/post.ex:203 msgid "Post ID is not a valid ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:172 lib/graphql/resolvers/post.ex:206 +#: lib/graphql/resolvers/post.ex:172 +#: lib/graphql/resolvers/post.ex:206 msgid "Post doesn't exist" msgstr "" @@ -442,31 +469,42 @@ msgid "Profile invited doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/member.ex:93 lib/graphql/resolvers/member.ex:97 +#: lib/graphql/resolvers/member.ex:93 +#: lib/graphql/resolvers/member.ex:97 msgid "Profile is already a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/post.ex:133 lib/graphql/resolvers/post.ex:175 -#: lib/graphql/resolvers/post.ex:209 lib/graphql/resolvers/resource.ex:90 lib/graphql/resolvers/resource.ex:132 -#: lib/graphql/resolvers/resource.ex:165 lib/graphql/resolvers/resource.ex:199 lib/graphql/resolvers/todos.ex:58 -#: lib/graphql/resolvers/todos.ex:83 lib/graphql/resolvers/todos.ex:110 lib/graphql/resolvers/todos.ex:182 -#: lib/graphql/resolvers/todos.ex:214 lib/graphql/resolvers/todos.ex:246 +#: lib/graphql/resolvers/post.ex:133 +#: lib/graphql/resolvers/post.ex:175 +#: lib/graphql/resolvers/post.ex:209 +#: lib/graphql/resolvers/resource.ex:90 +#: lib/graphql/resolvers/resource.ex:132 +#: lib/graphql/resolvers/resource.ex:165 +#: lib/graphql/resolvers/resource.ex:199 +#: lib/graphql/resolvers/todos.ex:58 +#: lib/graphql/resolvers/todos.ex:83 +#: lib/graphql/resolvers/todos.ex:110 +#: lib/graphql/resolvers/todos.ex:182 +#: lib/graphql/resolvers/todos.ex:214 +#: lib/graphql/resolvers/todos.ex:246 msgid "Profile is not member of group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/person.ex:233 +#: lib/graphql/resolvers/actor.ex:67 +#: lib/graphql/resolvers/person.ex:233 msgid "Profile not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:40 +#: lib/graphql/resolvers/report.ex:48 msgid "Report not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/resource.ex:169 lib/graphql/resolvers/resource.ex:196 +#: lib/graphql/resolvers/resource.ex:169 +#: lib/graphql/resolvers/resource.ex:196 msgid "Resource doesn't exist" msgstr "" @@ -481,12 +519,14 @@ msgid "This token is invalid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/todos.ex:176 lib/graphql/resolvers/todos.ex:243 +#: lib/graphql/resolvers/todos.ex:176 +#: lib/graphql/resolvers/todos.ex:243 msgid "Todo doesn't exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/todos.ex:77 lib/graphql/resolvers/todos.ex:211 +#: lib/graphql/resolvers/todos.ex:77 +#: lib/graphql/resolvers/todos.ex:211 #: lib/graphql/resolvers/todos.ex:240 msgid "Todo list doesn't exist" msgstr "" @@ -497,12 +537,13 @@ msgid "Token does not exist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70 +#: lib/graphql/resolvers/feed_token.ex:67 +#: lib/graphql/resolvers/feed_token.ex:70 msgid "Token is not a valid UUID" msgstr "" #, elixir-format -#: lib/graphql/error.ex:96 lib/graphql/resolvers/person.ex:458 +#: lib/graphql/error.ex:96 msgid "User not found" msgstr "" @@ -522,7 +563,8 @@ msgid "You are not a member of this group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/member.ex:157 lib/graphql/resolvers/member.ex:173 +#: lib/graphql/resolvers/member.ex:157 +#: lib/graphql/resolvers/member.ex:173 #: lib/graphql/resolvers/member.ex:188 msgid "You are not a moderator or admin for this group" msgstr "" @@ -584,37 +626,37 @@ msgid "You don't have permission to delete this token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:54 +#: lib/graphql/resolvers/admin.ex:56 msgid "You need to be logged-in and a moderator to list action logs" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:28 +#: lib/graphql/resolvers/report.ex:36 msgid "You need to be logged-in and a moderator to list reports" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:107 +#: lib/graphql/resolvers/report.ex:115 msgid "You need to be logged-in and a moderator to update a report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:45 +#: lib/graphql/resolvers/report.ex:53 msgid "You need to be logged-in and a moderator to view a report" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:255 +#: lib/graphql/resolvers/admin.ex:257 msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:239 +#: lib/graphql/resolvers/admin.ex:241 msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" #, elixir-format -#: lib/graphql/resolvers/admin.ex:281 +#: lib/graphql/resolvers/admin.ex:283 msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" @@ -639,7 +681,7 @@ msgid "You need to be logged-in to create posts" msgstr "" #, elixir-format -#: lib/graphql/resolvers/report.ex:79 +#: lib/graphql/resolvers/report.ex:87 msgid "You need to be logged-in to create reports" msgstr "" @@ -734,7 +776,8 @@ msgid "Reset your password to login" msgstr "" #, elixir-format -#: lib/graphql/error.ex:95 lib/graphql/error.ex:100 +#: lib/graphql/error.ex:95 +#: lib/graphql/error.ex:100 msgid "Resource not found" msgstr "Resursen kunde inte hittas" @@ -824,8 +867,11 @@ msgid "Profile ID provided is not the anonymous profile one" msgstr "" #, elixir-format -#: lib/graphql/resolvers/group.ex:161 lib/graphql/resolvers/group.ex:203 -#: lib/graphql/resolvers/person.ex:148 lib/graphql/resolvers/person.ex:182 lib/graphql/resolvers/person.ex:304 +#: lib/graphql/resolvers/group.ex:161 +#: lib/graphql/resolvers/group.ex:203 +#: lib/graphql/resolvers/person.ex:148 +#: lib/graphql/resolvers/person.ex:182 +#: lib/graphql/resolvers/person.ex:304 msgid "The provided picture is too heavy" msgstr "" @@ -850,7 +896,8 @@ msgid "Unable to fetch resource details from this URL." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:164 lib/graphql/resolvers/participant.ex:253 +#: lib/graphql/resolvers/event.ex:164 +#: lib/graphql/resolvers/participant.ex:253 #: lib/graphql/resolvers/participant.ex:328 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "" @@ -901,6 +948,7 @@ msgid "Failed to update the group" msgstr "" #, elixir-format +#: lib/graphql/resolvers/admin.ex:338 #: lib/graphql/resolvers/user.ex:469 msgid "Failed to update user email" msgstr "" @@ -1029,3 +1077,23 @@ msgstr "" #: lib/graphql/resolvers/user.ex:157 msgid "Your email seems to be using an invalid format" msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:387 +msgid "Can't confirm an already confirmed user" +msgstr "" + +#, elixir-format, ex-autogen +#: lib/graphql/resolvers/admin.ex:391 +msgid "Deconfirming users is not supported" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:363 +msgid "The new role must be different" +msgstr "" + +#, elixir-format, ex-autogen, fuzzy +#: lib/graphql/resolvers/admin.ex:314 +msgid "You need to be logged-in and an administrator to edit an user's details" +msgstr "" diff --git a/priv/repo/migrations/20211223141104_add_instance_materialized_view.exs b/priv/repo/migrations/20211223141104_add_instance_materialized_view.exs new file mode 100644 index 000000000..a997321c9 --- /dev/null +++ b/priv/repo/migrations/20211223141104_add_instance_materialized_view.exs @@ -0,0 +1,64 @@ +defmodule Mobilizon.Storage.Repo.Migrations.AddInstanceMaterializedView do + use Ecto.Migration + + def up do + execute(""" + CREATE MATERIALIZED VIEW instances AS + SELECT + a.domain, + COUNT(DISTINCT(p.id)) AS person_count, + COUNT(DISTINCT(g.id)) AS group_count, + COUNT(DISTINCT(e.id)) AS event_count, + COUNT(f1.id) AS followers_count, + COUNT(f2.id) AS followings_count, + COUNT(r.id) AS reports_count, + SUM(COALESCE((m.file->>'size')::int, 0)) AS media_size + FROM actors a + LEFT JOIN actors p ON a.id = p.id AND p.type = 'Person' + LEFT JOIN actors g ON a.id = g.id AND g.type = 'Group' + LEFT JOIN events e ON a.id = e.organizer_actor_id + LEFT JOIN followers f1 ON a.id = f1.actor_id + LEFT JOIN followers f2 ON a.id = f2.target_actor_id + LEFT JOIN reports r ON r.reported_id = a.id + LEFT JOIN medias m ON m.actor_id = a.id + WHERE a.domain IS NOT NULL + GROUP BY a.domain; + """) + + execute(""" + CREATE OR REPLACE FUNCTION refresh_instances() + RETURNS trigger AS $$ + BEGIN + REFRESH MATERIALIZED VIEW instances; + RETURN NULL; + END; + $$ LANGUAGE plpgsql; + """) + + execute(""" + DROP TRIGGER IF EXISTS refresh_instances_trigger ON actors; + """) + + execute(""" + CREATE TRIGGER refresh_instances_trigger + AFTER INSERT OR UPDATE OR DELETE + ON actors + FOR EACH STATEMENT + EXECUTE PROCEDURE refresh_instances(); + """) + + create_if_not_exists(unique_index("instances", [:domain])) + end + + def down do + drop_if_exists(unique_index("instances", [:domain])) + + execute(""" + DROP FUNCTION IF EXISTS refresh_instances() CASCADE; + """) + + execute(""" + DROP MATERIALIZED VIEW IF EXISTS instances; + """) + end +end diff --git a/schema.graphql b/schema.graphql index fdb2a86aa..70c117702 100644 --- a/schema.graphql +++ b/schema.graphql @@ -211,6 +211,9 @@ type Config { "The instance's features" features: Features + "The instance's restrictions" + restrictions: Restrictions + "The instance's version" version: String @@ -240,6 +243,9 @@ type Config { "Web Push settings for the instance" webPush: WebPush + + "The instance list of export formats" + exportFormats: ExportFormats } "A tag" @@ -306,7 +312,13 @@ type TodoList { actor: Actor "The todo-list's todos" - todos: PaginatedTodoList + todos( + "The page in the paginated todos list" + page: Int + + "The limit of todos per page" + limit: Int + ): PaginatedTodoList } "Represents a participant to an event" @@ -455,7 +467,7 @@ type Comment implements ActivityObject & ActionLogObject { isAnnouncement: Boolean! "The comment language" - language: String! + language: String } "An attached media or a link to a media" @@ -690,6 +702,9 @@ enum ExportFormatEnum { "PDF format" PDF + + "ODS format" + ODS } "The list of visibility options for a comment" @@ -770,6 +785,14 @@ interface Interactable { url: String } +enum EventType { + "The event will happen in person. It can also be livestreamed, but has a physical address" + IN_PERSON + + "The event will only happen online. It has no physical address" + ONLINE +} + enum EventMetadataType { "A string" STRING @@ -794,6 +817,14 @@ type DeletedObject { id: ID } +"A follow group event" +type FollowedGroupEvent { + user: User + profile: Person + group: Group + event: Event +} + "A paginated list of comments" type PaginatedCommentList { "A list of comments" @@ -851,7 +882,7 @@ type Post implements ActivityObject { updatedAt: DateTime "The post language" - language: String! + language: String "The post's tags" tags: [Tag] @@ -941,6 +972,12 @@ type Statistics { numberOfInstanceFollowings: Int } +"Export formats configuration" +type ExportFormats { + "The list of formats the event participants can be exported to" + eventParticipants: [String] +} + "Search persons result" type Persons { "Total elements" @@ -1128,6 +1165,18 @@ type Person implements ActionLogObject & Actor { "The limit of memberships per page" limit: Int ): PaginatedMemberList + + "The list of groups this person follows" + follows( + "Filter by group federated username" + group: String + + "The page in the follows list" + page: Int + + "The limit of follows per page" + limit: Int + ): PaginatedFollowerList } "Root Mutation" @@ -1396,6 +1445,30 @@ type RootMutationType { groupId: ID! ): DeletedObject + "Follow a group" + followGroup( + "The group ID" + groupId: ID! + + "Whether to notify profile from group activity" + notify: Boolean + ): Follower + + "Update a group follow" + updateGroupFollow( + "The follow ID" + followId: ID! + + "Whether to notify profile from group activity" + notify: Boolean + ): Follower + + "Unfollow a group" + unfollowGroup( + "The group ID" + groupId: ID! + ): Follower + "Create an event" createEvent( "The event's title" @@ -1589,6 +1662,9 @@ type RootMutationType { "The anonymous participant's locale" locale: String + + "The anonymous participant's timezone" + timezone: String ): Participant "Leave an event" @@ -1663,6 +1739,18 @@ type RootMutationType { id: ID! ): Member + "Approve a membership request" + approveMember( + "The member ID" + memberId: ID! + ): Member + + "Reject a membership request" + rejectMember( + "The member ID" + memberId: ID! + ): Member + "Update a member's role" updateMember( "The member ID" @@ -1674,11 +1762,11 @@ type RootMutationType { "Remove a member from a group" removeMember( - "The group ID" - groupId: ID! - "The member ID" memberId: ID! + + "Whether the member should be excluded from the group" + exclude: Boolean ): Member "Create a Feed Token" @@ -2108,6 +2196,12 @@ type RootQueryType { "A geohash for coordinates" location: String + "Whether to include the groups the current actor is member or follower" + excludeMyGroups: Boolean + + "The minimum visibility the group must have" + minimumVisibility: GroupVisibility + "Radius around the location to search in" radius: Float @@ -2128,6 +2222,9 @@ type RootQueryType { "A geohash for coordinates" location: String + "Whether the event is online or in person" + type: EventType + "Radius around the location to search in" radius: Float @@ -2389,6 +2486,12 @@ type RootQueryType { direction: String ): PaginatedFollowerList + "Get an instance's details" + instance( + "The instance domain" + domain: ID! + ): Instance + "Get a todo list" todoList( "The todo-list ID" @@ -2461,6 +2564,39 @@ string. """ scalar NaiveDateTime +"An instance representation" +type Instance { + "The domain name of the instance" + domain: ID + + "Whether this instance has a Mobilizon relay actor" + hasRelay: Boolean + + "Do we follow this instance" + followerStatus: InstanceFollowStatus + + "Does this instance follow us?" + followedStatus: InstanceFollowStatus + + "The number of profiles on this instance we know of" + personCount: Int + + "The number of grouo on this instance we know of" + groupCount: Int + + "The number of their profiles who follow our groups" + followersCount: Int + + "The number of our profiles who follow their groups" + followingsCount: Int + + "The number of reports made against profiles from this instance" + reportsCount: Int + + "The size of all the media files sent by actors from this instance" + mediaSize: Int +} + """ The `DateTime` scalar type represents a date and time in the UTC timezone. The DateTime appears in a JSON response as an ISO8601 formatted @@ -2573,8 +2709,14 @@ input EventOptionsInput { "Show event end time" showEndTime: Boolean + "The event's timezone" + timezone: String + "Whether to show or hide the person organizer when event is organized by a group" hideOrganizerWhenGroupEvent: Boolean + + "Whether the event is fully online" + isOnline: Boolean } "A report object" @@ -2765,7 +2907,7 @@ type Event implements ActivityObject & Interactable & ActionLogObject { metadata: [EventMetadata] "The event language" - language: String! + language: String } "An event offer" @@ -2835,6 +2977,18 @@ input AddressInput { "The address's original ID from the provider" originId: String + + "The (estimated) timezone of the location" + timezone: String +} + +"The instance's restrictions" +type Restrictions { + "Whether groups creation is allowed only for admin, not for all users" + onlyAdminCanCreateGroups: Boolean + + "Whether events creation is allowed only for groups, not for persons" + onlyGroupsCanCreateEvents: Boolean } "Instance anonymous configuration" @@ -2916,8 +3070,14 @@ type EventOptions { "Show event end time" showEndTime: Boolean + "The event's timezone" + timezone: String + "Whether to show or hide the person organizer when event is organized by a group" hideOrganizerWhenGroupEvent: Boolean + + "Whether the event is fully online" + isOnline: Boolean } "A resource provider details" @@ -2958,6 +3118,9 @@ type Follower { "Whether the follow has been approved by the target actor" approved: Boolean + "Whether the follower will be notified by the target actor's activity or not (applicable for profile\/group follows)" + notify: Boolean + "When the follow was created" insertedAt: DateTime @@ -3322,6 +3485,15 @@ type PaginatedGroupList { total: Int } +"A paginated list of follow group events" +type PaginatedFollowedGroupEvents { + "A list of follow group events" + elements: [FollowedGroupEvent] + + "The total number of follow group events in the list" + total: Int +} + "Instance map tiles configuration" type Tiles { "The instance's tiles endpoint" @@ -3377,6 +3549,20 @@ type Address { "The address's original ID from the provider" originId: String + + "The (estimated) timezone of the location" + timezone: String +} + +enum InstanceFollowStatus { + "The instance follow was approved" + APPROVED + + "The instance follow is still pending" + PENDING + + "There's no instance follow etablished" + NONE } "The instance's terms configuration" @@ -3599,6 +3785,9 @@ type User implements ActionLogObject { "The list of memberships for this user" memberships( + "A name to filter members by" + name: String + "The page in the paginated memberships list" page: Int @@ -3615,6 +3804,18 @@ type User implements ActionLogObject { limit: Int ): [Event] + "The suggested events from the groups this user follows" + followedGroupEvents( + "The page in the follow group events list" + page: Int + + "The limit of follow group events per page" + limit: Int + + "Filter follow group events by event start datetime" + afterDatetime: DateTime + ): PaginatedFollowedGroupEvents + "The list of settings for this user" settings: UserSettings @@ -3731,6 +3932,9 @@ type Group implements ActionLogObject & ActivityObject & Interactable & Actor { "A paginated list of group members" members( + "A name to filter members by" + name: String + "The page in the paginated member list" page: Int @@ -3760,7 +3964,13 @@ type Group implements ActionLogObject & ActivityObject & Interactable & Actor { ): PaginatedPostList "A paginated list of the todo lists this group has" - todoLists: PaginatedTodoListList + todoLists( + "The page in the paginated todo-lists list" + page: Int + + "The limit of todo-lists per page" + limit: Int + ): PaginatedTodoListList "A paginated list of the followers this group has" followers( diff --git a/test/federation/activity_pub/actor_test.exs b/test/federation/activity_pub/actor_test.exs index 5298f0e84..d402822bd 100644 --- a/test/federation/activity_pub/actor_test.exs +++ b/test/federation/activity_pub/actor_test.exs @@ -30,7 +30,7 @@ defmodule Mobilizon.Federation.ActivityPub.ActorTest do HostMetaClientMock |> expect(:call, fn - %{method: :get, url: "http://framapiaf.org/.well-known/host-meta"}, _opts -> + %{method: :get, url: "https://framapiaf.org/.well-known/host-meta"}, _opts -> {:ok, %Tesla.Env{status: 404, body: ""}} end) @@ -43,7 +43,7 @@ defmodule Mobilizon.Federation.ActivityPub.ActorTest do |> expect(:call, fn %{ method: :get, - url: "http://framapiaf.org/.well-known/webfinger?resource=acct:tcit@framapiaf.org" + url: "https://framapiaf.org/.well-known/webfinger?resource=acct:tcit@framapiaf.org" }, _opts -> {:ok, %Tesla.Env{status: 200, body: webfinger_data}} @@ -69,7 +69,7 @@ defmodule Mobilizon.Federation.ActivityPub.ActorTest do HostMetaClientMock |> expect(:call, fn - %{method: :get, url: "http://framapiaf.org/.well-known/host-meta"}, _opts -> + %{method: :get, url: "https://framapiaf.org/.well-known/host-meta"}, _opts -> {:ok, %Tesla.Env{status: 404, body: ""}} end) @@ -82,7 +82,7 @@ defmodule Mobilizon.Federation.ActivityPub.ActorTest do |> expect(:call, fn %{ method: :get, - url: "http://framapiaf.org/.well-known/webfinger?resource=acct:tcit@framapiaf.org" + url: "https://framapiaf.org/.well-known/webfinger?resource=acct:tcit@framapiaf.org" }, _opts -> {:ok, %Tesla.Env{status: 200, body: webfinger_data}} diff --git a/test/federation/activity_pub/transmogrifier/follow_test.exs b/test/federation/activity_pub/transmogrifier/follow_test.exs index 285fea0cb..925bdd82c 100644 --- a/test/federation/activity_pub/transmogrifier/follow_test.exs +++ b/test/federation/activity_pub/transmogrifier/follow_test.exs @@ -36,7 +36,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier.FollowTest do end) =~ "Only group and instances can be followed" actor = Actors.get_actor_with_preload(actor.id) - refute Actors.is_following(Actors.get_actor_by_url!(data["actor"], true), actor) + refute Actors.check_follow(Actors.get_actor_by_url!(data["actor"], true), actor) end test "it works for incoming follow requests" do @@ -68,7 +68,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier.FollowTest do assert data["id"] == "https://social.tcit.fr/users/tcit#follows/2" actor = Actors.get_actor_with_preload(actor.id) - assert Actors.is_following(Actors.get_actor_by_url!(data["actor"], true), actor) + assert Actors.check_follow(Actors.get_actor_by_url!(data["actor"], true), actor) end test "it rejects activities without a valid ID" do @@ -97,7 +97,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier.FollowTest do # assert data["actor"] == "https://hubzilla.example.org/channel/kaniini" # assert data["type"] == "Follow" # assert data["id"] == "https://hubzilla.example.org/channel/kaniini#follows/2" - # assert User.is_following(User.get_by_ap_id(data["actor"]), user) + # assert User.check_follow(User.get_by_ap_id(data["actor"]), user) # end end @@ -106,10 +106,10 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier.FollowTest do follower = insert(:actor) followed = insert(:group, manually_approves_followers: false) - refute Actors.is_following(follower, followed) + refute Actors.check_follow(follower, followed) {:ok, follow_activity, _} = Actions.Follow.follow(follower, followed) - assert Actors.is_following(follower, followed) + assert Actors.check_follow(follower, followed) follow_object_id = follow_activity.data["id"] @@ -131,17 +131,17 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier.FollowTest do {:ok, follower} = Actors.get_actor_by_url(follower.url) - assert Actors.is_following(follower, followed) + assert Actors.check_follow(follower, followed) end test "it works for incoming accepts which were pre-accepted" do follower = insert(:actor) followed = insert(:group, manually_approves_followers: true) - refute Actors.is_following(follower, followed) + refute Actors.check_follow(follower, followed) {:ok, follow_activity, _} = Actions.Follow.follow(follower, followed) - assert Actors.is_following(follower, followed) + assert Actors.check_follow(follower, followed) follow_object_id = follow_activity.data["id"] @@ -166,7 +166,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier.FollowTest do {:ok, follower} = Actors.get_actor_by_url(follower.url) - assert Actors.is_following(follower, followed) + assert Actors.check_follow(follower, followed) end test "it works for incoming accepts which are referenced by IRI only" do @@ -188,7 +188,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier.FollowTest do {:ok, follower} = Actors.get_actor_by_url(follower.url) - assert Actors.is_following(follower, followed) + assert Actors.check_follow(follower, followed) end test "it fails for incoming accepts which cannot be correlated" do @@ -207,7 +207,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier.FollowTest do {:ok, follower} = Actors.get_actor_by_url(follower.url) - refute Actors.is_following(follower, followed) + refute Actors.check_follow(follower, followed) end end @@ -228,7 +228,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier.FollowTest do {:ok, follower} = Actors.get_actor_by_url(follower.url) - refute Actors.is_following(follower, followed) + refute Actors.check_follow(follower, followed) end test "it works for incoming rejects which are referenced by IRI only" do @@ -237,7 +237,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier.FollowTest do {:ok, follow_activity, _} = Actions.Follow.follow(follower, followed) - assert Actors.is_following(follower, followed) + assert Actors.check_follow(follower, followed) reject_data = File.read!("test/fixtures/mastodon-reject-activity.json") @@ -247,7 +247,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier.FollowTest do {:ok, %Activity{data: _}, _} = Transmogrifier.handle_incoming(reject_data) - refute Actors.is_following(follower, followed) + refute Actors.check_follow(follower, followed) end end end diff --git a/test/federation/activity_pub/transmogrifier/undo_test.exs b/test/federation/activity_pub/transmogrifier/undo_test.exs index 74d9b30f6..35632690c 100644 --- a/test/federation/activity_pub/transmogrifier/undo_test.exs +++ b/test/federation/activity_pub/transmogrifier/undo_test.exs @@ -82,7 +82,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier.UndoTest do assert data["actor"] == "https://social.tcit.fr/users/tcit" {:ok, followed} = Actors.get_actor_by_url(data["actor"]) - refute Actors.is_following(followed, actor) + refute Actors.check_follow(followed, actor) end end end diff --git a/test/federation/web_finger/web_finger_test.exs b/test/federation/web_finger/web_finger_test.exs index c3cb48afb..5cd5f2f29 100644 --- a/test/federation/web_finger/web_finger_test.exs +++ b/test/federation/web_finger/web_finger_test.exs @@ -72,7 +72,7 @@ defmodule Mobilizon.Federation.WebFingerTest do HostMetaClientMock |> expect(:call, fn - %{method: :get, url: "http://social.tcit.fr/.well-known/host-meta"}, _opts -> + %{method: :get, url: "https://social.tcit.fr/.well-known/host-meta"}, _opts -> {:ok, %Tesla.Env{status: 200, body: host_meta_xml}} end) @@ -100,7 +100,7 @@ defmodule Mobilizon.Federation.WebFingerTest do HostMetaClientMock |> expect(:call, fn - %{method: :get, url: "http://pleroma.soykaf.com/.well-known/host-meta"}, _opts -> + %{method: :get, url: "https://pleroma.soykaf.com/.well-known/host-meta"}, _opts -> {:ok, %Tesla.Env{status: 200, body: host_meta_xml}} end) @@ -127,7 +127,7 @@ defmodule Mobilizon.Federation.WebFingerTest do HostMetaClientMock |> expect(:call, fn - %{method: :get, url: "http://framatube.org/.well-known/host-meta"}, _opts -> + %{method: :get, url: "https://framatube.org/.well-known/host-meta"}, _opts -> {:ok, %Tesla.Env{status: 200, body: host_meta_xml}} end) @@ -154,7 +154,7 @@ defmodule Mobilizon.Federation.WebFingerTest do HostMetaClientMock |> expect(:call, fn - %{method: :get, url: "http://squeet.me/.well-known/host-meta"}, _opts -> + %{method: :get, url: "https://squeet.me/.well-known/host-meta"}, _opts -> {:ok, %Tesla.Env{status: 200, body: host_meta_xml}} end) @@ -182,7 +182,7 @@ defmodule Mobilizon.Federation.WebFingerTest do HostMetaClientMock |> expect(:call, fn - %{method: :get, url: "http://demo.gancio.org/.well-known/host-meta"}, _opts -> + %{method: :get, url: "https://demo.gancio.org/.well-known/host-meta"}, _opts -> {:ok, %Tesla.Env{status: 200, body: host_meta_xml}} end) diff --git a/test/graphql/resolvers/admin_test.exs b/test/graphql/resolvers/admin_test.exs index 0812caef7..718030bc3 100644 --- a/test/graphql/resolvers/admin_test.exs +++ b/test/graphql/resolvers/admin_test.exs @@ -1,14 +1,14 @@ defmodule Mobilizon.GraphQL.Resolvers.AdminTest do use Mobilizon.Web.ConnCase - + use Bamboo.Test import Mobilizon.Factory alias Mobilizon.Actors.Actor alias Mobilizon.Events.Event + alias Mobilizon.Federation.ActivityPub.Relay alias Mobilizon.Reports.{Note, Report} alias Mobilizon.Users.User - - alias Mobilizon.Federation.ActivityPub.Relay + alias Mobilizon.Web.Email alias Mobilizon.GraphQL.{AbsintheHelpers, API} @@ -480,11 +480,11 @@ defmodule Mobilizon.GraphQL.Resolvers.AdminTest do end test "unless user isn't admin", %{conn: conn} do - admin = insert(:user) + user = insert(:user) res = conn - |> auth_conn(admin) + |> auth_conn(user) |> AbsintheHelpers.graphql_query( query: @update_instance_admin_settings_mutation, variables: %{"instanceName" => @new_instance_name, "registrationsOpen" => false} @@ -494,4 +494,244 @@ defmodule Mobilizon.GraphQL.Resolvers.AdminTest do "You need to be logged-in and an administrator to save admin settings" end end + + @admin_update_user """ + mutation AdminUpdateUser($id: ID!, $email: String, $role: UserRole, $confirmed: Boolean, $notify: Boolean) { + adminUpdateUser(id: $id, email: $email, role: $role, confirmed: $confirmed, notify: $notify) { + id + email + role + confirmedAt + } + } + """ + + describe "Resolver: Update an user email" do + setup do + admin = insert(:user, role: :administrator) + user = insert(:user) + {:ok, admin: admin, user: user} + end + + test "when not an admin", %{conn: conn, user: user} do + admin = insert(:user) + + res = + conn + |> auth_conn(admin) + |> AbsintheHelpers.graphql_query( + query: @admin_update_user, + variables: %{"id" => user.id, "email" => "new@email.com"} + ) + + assert hd(res["errors"])["message"] == + "You need to be logged-in and an administrator to edit an user's details" + end + + test "when putting same email", %{conn: conn, user: user, admin: admin} do + res = + conn + |> auth_conn(admin) + |> AbsintheHelpers.graphql_query( + query: @admin_update_user, + variables: %{"id" => user.id, "email" => user.email} + ) + + assert hd(res["errors"])["message"] == + "The new email must be different" + end + + test "with an invalid email", %{conn: conn, user: user, admin: admin} do + res = + conn + |> auth_conn(admin) + |> AbsintheHelpers.graphql_query( + query: @admin_update_user, + variables: %{"id" => user.id, "email" => "not an email"} + ) + + assert hd(res["errors"])["message"] == + "The new email doesn't seem to be valid" + end + + test "with a valid email, and no notification", %{conn: conn, user: user, admin: admin} do + res = + conn + |> auth_conn(admin) + |> AbsintheHelpers.graphql_query( + query: @admin_update_user, + variables: %{"id" => user.id, "email" => "new@email.com", "notify" => false} + ) + + refute_delivered_email( + Email.Admin.user_email_change_old(%User{user | email: "new@email.com"}, user.email) + ) + + refute_delivered_email( + Email.Admin.user_email_change_new(%User{user | email: "new@email.com"}, user.email) + ) + + assert res["errors"] == nil + assert res["data"]["adminUpdateUser"]["email"] == "new@email.com" + end + + test "with a valid email, and notification", %{conn: conn, user: user, admin: admin} do + res = + conn + |> auth_conn(admin) + |> AbsintheHelpers.graphql_query( + query: @admin_update_user, + variables: %{"id" => user.id, "email" => "new@email.com", "notify" => true} + ) + + assert_delivered_email( + Email.Admin.user_email_change_old(%User{user | email: "new@email.com"}, user.email) + ) + + assert_delivered_email( + Email.Admin.user_email_change_new(%User{user | email: "new@email.com"}, user.email) + ) + + assert res["errors"] == nil + assert res["data"]["adminUpdateUser"]["email"] == "new@email.com" + end + end + + describe "Resolver: Update an user role" do + setup do + admin = insert(:user, role: :administrator) + user = insert(:user) + {:ok, admin: admin, user: user} + end + + test "when putting same role", %{conn: conn, user: user, admin: admin} do + res = + conn + |> auth_conn(admin) + |> AbsintheHelpers.graphql_query( + query: @admin_update_user, + variables: %{"id" => user.id, "role" => String.upcase(to_string(user.role))} + ) + + assert hd(res["errors"])["message"] == + "The new role must be different" + end + + test "with an invalid role", %{conn: conn, user: user, admin: admin} do + res = + conn + |> auth_conn(admin) + |> AbsintheHelpers.graphql_query( + query: @admin_update_user, + variables: %{"id" => user.id, "role" => "not a valid role"} + ) + + assert hd(res["errors"])["message"] == + "Argument \"role\" has invalid value $role." + end + + test "with a valid role, and no notification", %{conn: conn, user: user, admin: admin} do + res = + conn + |> auth_conn(admin) + |> AbsintheHelpers.graphql_query( + query: @admin_update_user, + variables: %{"id" => user.id, "role" => "MODERATOR", "notify" => false} + ) + + refute_delivered_email( + Email.Admin.user_role_change(%User{user | role: :moderator}, user.role) + ) + + assert res["errors"] == nil + assert res["data"]["adminUpdateUser"]["role"] == "MODERATOR" + end + + test "with a valid role, and notification", %{conn: conn, user: user, admin: admin} do + res = + conn + |> auth_conn(admin) + |> AbsintheHelpers.graphql_query( + query: @admin_update_user, + variables: %{"id" => user.id, "role" => "MODERATOR", "notify" => true} + ) + + assert_delivered_email( + Email.Admin.user_role_change(%User{user | role: :moderator}, user.role) + ) + + assert res["errors"] == nil + assert res["data"]["adminUpdateUser"]["role"] == "MODERATOR" + end + end + + describe "Resolver: Confirm an user" do + setup do + admin = insert(:user, role: :administrator) + user = insert(:user) + {:ok, admin: admin, user: user} + end + + test "already confirmed", %{conn: conn, user: user, admin: admin} do + res = + conn + |> auth_conn(admin) + |> AbsintheHelpers.graphql_query( + query: @admin_update_user, + variables: %{"id" => user.id, "confirmed" => true, "notify" => false} + ) + + refute_delivered_email(Email.Admin.user_confirmation(user)) + + assert hd(res["errors"])["message"] == "Can't confirm an already confirmed user" + end + + test "while unconfirming", %{conn: conn, user: user, admin: admin} do + res = + conn + |> auth_conn(admin) + |> AbsintheHelpers.graphql_query( + query: @admin_update_user, + variables: %{"id" => user.id, "confirmed" => false, "notify" => false} + ) + + refute_delivered_email(Email.Admin.user_confirmation(user)) + + assert hd(res["errors"])["message"] == "Deconfirming users is not supported" + end + + test "while confirming, and no notification", %{conn: conn, admin: admin} do + user = insert(:user, confirmed_at: nil) + + res = + conn + |> auth_conn(admin) + |> AbsintheHelpers.graphql_query( + query: @admin_update_user, + variables: %{"id" => user.id, "confirmed" => true, "notify" => false} + ) + + refute_delivered_email(Email.Admin.user_confirmation(user)) + + assert res["errors"] == nil + refute res["data"]["adminUpdateUser"]["confirmedAt"] == nil + end + + test "while confirming, and notification", %{conn: conn, admin: admin} do + user = insert(:user, confirmed_at: nil) + + res = + conn + |> auth_conn(admin) + |> AbsintheHelpers.graphql_query( + query: @admin_update_user, + variables: %{"id" => user.id, "confirmed" => true, "notify" => true} + ) + + assert_delivered_email(Email.Admin.user_confirmation(user)) + + assert res["errors"] == nil + refute res["data"]["adminUpdateUser"]["confirmedAt"] == nil + end + end end diff --git a/test/graphql/resolvers/member_test.exs b/test/graphql/resolvers/member_test.exs index 30e4a0cc7..e2ed49903 100644 --- a/test/graphql/resolvers/member_test.exs +++ b/test/graphql/resolvers/member_test.exs @@ -301,7 +301,7 @@ defmodule Mobilizon.GraphQL.Resolvers.MemberTest do HostMetaClientMock |> expect(:call, fn - %{method: :get, url: "http://nowhere.absolute/.well-known/host-meta"}, _opts -> + %{method: :get, url: "https://nowhere.absolute/.well-known/host-meta"}, _opts -> {:ok, %Tesla.Env{status: 404, body: ""}} end) @@ -310,7 +310,7 @@ defmodule Mobilizon.GraphQL.Resolvers.MemberTest do %{ method: :get, url: - "http://nowhere.absolute/.well-known/webfinger?resource=acct:not_existing@nowhere.absolute" + "https://nowhere.absolute/.well-known/webfinger?resource=acct:not_existing@nowhere.absolute" }, _opts -> {:ok, %Tesla.Env{status: 404, body: ""}} diff --git a/test/graphql/resolvers/user_test.exs b/test/graphql/resolvers/user_test.exs index 0f77eae21..f9cf72dce 100644 --- a/test/graphql/resolvers/user_test.exs +++ b/test/graphql/resolvers/user_test.exs @@ -35,8 +35,22 @@ defmodule Mobilizon.GraphQL.Resolvers.UserTest do """ @list_users_query """ - query ListUsers($page: Int, $limit: Int, $sort: SortableUserField, $direction: SortDirection) { - users(page: $page, limit: $limit, sort: $sort, direction: $direction) { + query ListUsers( + $email: String + $currentSignInIp: String + $page: Int + $limit: Int + $sort: SortableUserField + $direction: SortDirection + ) { + users( + email: $email + currentSignInIp: $currentSignInIp + page: $page + limit: $limit + sort: $sort + direction: $direction + ) { total, elements { email @@ -262,6 +276,62 @@ defmodule Mobilizon.GraphQL.Resolvers.UserTest do "riri@example.com" ] end + + test "list_users/3 allows filtering the list of users by email", %{conn: conn} do + user = insert(:user, email: "donald@somewhere.fr", role: :moderator) + insert(:user, email: "riri@only.fr") + insert(:user, email: "fifi@we.fr") + insert(:user, email: "loulou@know.com") + + res = + conn + |> auth_conn(user) + |> AbsintheHelpers.graphql_query( + query: @list_users_query, + variables: %{email: "e.fr"} + ) + + assert res["errors"] == nil + assert res["data"]["users"]["total"] == 2 + assert res["data"]["users"]["elements"] |> length == 2 + + assert res["data"]["users"]["elements"] + |> Enum.map(& &1["email"]) == [ + "fifi@we.fr", + "donald@somewhere.fr" + ] + end + + test "list_users/3 allows filtering the list of users by currentSignInIp", %{conn: conn} do + user = + insert(:user, + email: "donald@somewhere.fr", + current_sign_in_ip: "144.76.131.212", + role: :moderator + ) + + insert(:user, email: "riri@only.fr", current_sign_in_ip: "94.130.212.178") + insert(:user, email: "fifi@we.fr", current_sign_in_ip: "2a01:4f8:221:131d::178") + insert(:user, email: "loulou@know.com", current_sign_in_ip: "144.76.131.212") + + res = + conn + |> auth_conn(user) + |> AbsintheHelpers.graphql_query( + query: @list_users_query, + variables: %{currentSignInIp: "144.76.131.212"} + ) + + assert res["errors"] == nil + assert res["data"]["users"]["total"] == 2 + assert res["data"]["users"]["elements"] |> length == 2 + + assert res["data"]["users"]["elements"] + |> Enum.map(& &1["email"]) == [ + "loulou@know.com", + "donald@somewhere.fr" + ] + end end describe "Resolver: Create an user & actor" do diff --git a/test/mobilizon/users/users_test.exs b/test/mobilizon/users/users_test.exs index 0416c4c7d..28f6a87f8 100644 --- a/test/mobilizon/users/users_test.exs +++ b/test/mobilizon/users/users_test.exs @@ -13,7 +13,10 @@ defmodule Mobilizon.UsersTest do test "list_users/0 returns all users" do user = insert(:user) - %Page{elements: users, total: 1} = Users.list_users("", nil, nil, :id, :desc) + + %Page{elements: users, total: 1} = + Users.list_users(email: "", page: nil, limit: nil, sort: :id, direction: :desc) + assert [user.id] == users |> Enum.map(& &1.id) end