From 3163c22c4fdb3ebc0ce6ebe8ea5129c95771344a Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Wed, 28 Apr 2021 16:58:45 +0200 Subject: [PATCH 01/24] Add missing languages to 1.1.2 release changelog entry Signed-off-by: Thomas Citharel --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 033624f26..ec41e2de0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,7 +24,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Translations +- Italian - German +- Slovenian - Russian ## 1.1.1 - 22-04-2021 From 4fd6ecf53d0410d0922e6872a64406cb17e2cfbb Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Wed, 28 Apr 2021 18:06:17 +0200 Subject: [PATCH 02/24] Improve AP error handling Signed-off-by: Thomas Citharel --- lib/federation/activity_pub/activity_pub.ex | 4 ++++ lib/federation/activity_pub/actor.ex | 6 +++++- lib/federation/activity_pub/refresher.ex | 8 ++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/federation/activity_pub/activity_pub.ex b/lib/federation/activity_pub/activity_pub.ex index a46a02cbb..66ffe52f7 100644 --- a/lib/federation/activity_pub/activity_pub.ex +++ b/lib/federation/activity_pub/activity_pub.ex @@ -101,6 +101,10 @@ defmodule Mobilizon.Federation.ActivityPub do {:existing, entity} -> handle_existing_entity(url, entity, options) + {:error, e} -> + Logger.warn("Something failed while fetching url #{inspect(e)}") + {:error, e} + e -> Logger.warn("Something failed while fetching url #{inspect(e)}") {:error, e} diff --git a/lib/federation/activity_pub/actor.ex b/lib/federation/activity_pub/actor.ex index aad2f2f6a..0cc3b589f 100644 --- a/lib/federation/activity_pub/actor.ex +++ b/lib/federation/activity_pub/actor.ex @@ -48,7 +48,8 @@ defmodule Mobilizon.Federation.ActivityPub.Actor do @doc """ Create an actor locally by its URL (AP ID) """ - @spec make_actor_from_url(String.t(), boolean()) :: {:ok, %Actor{}} | {:error, any()} + @spec make_actor_from_url(String.t(), boolean()) :: + {:ok, %Actor{}} | {:error, :actor_deleted} | {:error, :http_error} | {:error, any()} def make_actor_from_url(url, preload \\ false) do if are_same_origin?(url, Endpoint.url()) do {:error, "Can't make a local actor from URL"} @@ -62,6 +63,9 @@ defmodule Mobilizon.Federation.ActivityPub.Actor do Logger.info("Actor was deleted") {:error, :actor_deleted} + {:error, :http_error} -> + {:error, :http_error} + {:error, e} -> Logger.warn("Failed to make actor from url") {:error, e} diff --git a/lib/federation/activity_pub/refresher.ex b/lib/federation/activity_pub/refresher.ex index dec998427..8c466838c 100644 --- a/lib/federation/activity_pub/refresher.ex +++ b/lib/federation/activity_pub/refresher.ex @@ -60,6 +60,12 @@ defmodule Mobilizon.Federation.ActivityPub.Refresher do :ok <- fetch_collection(events_url, on_behalf_of) do :ok else + {:error, :actor_deleted} -> + {:error, :actor_deleted} + + {:error, :http_error} -> + {:error, :http_error} + {:error, err} -> Logger.error("Error while refreshing a group") @@ -68,6 +74,7 @@ defmodule Mobilizon.Federation.ActivityPub.Refresher do ) Logger.debug(inspect(err)) + {:error, err} err -> Logger.error("Error while refreshing a group") @@ -77,6 +84,7 @@ defmodule Mobilizon.Federation.ActivityPub.Refresher do ) Logger.debug(inspect(err)) + err end end From a2822750267d127a14e42a0bea7ca390eccfff72 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Wed, 28 Apr 2021 18:06:27 +0200 Subject: [PATCH 03/24] Refresh group actors once per day Signed-off-by: Thomas Citharel --- config/config.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/config.exs b/config/config.exs index e99cea93a..40685256f 100644 --- a/config/config.exs +++ b/config/config.exs @@ -270,7 +270,7 @@ config :mobilizon, Oban, {Oban.Plugins.Cron, crontab: [ {"@hourly", Mobilizon.Service.Workers.BuildSiteMap, queue: :background}, - {"17 * * * *", Mobilizon.Service.Workers.RefreshGroups, queue: :background}, + {"17 4 * * *", Mobilizon.Service.Workers.RefreshGroups, queue: :background}, # To be activated in Mobilizon 1.2 # {"@hourly", Mobilizon.Service.Workers.CleanOrphanMediaWorker, queue: :background}, {"@hourly", Mobilizon.Service.Workers.CleanUnconfirmedUsersWorker, queue: :background}, From b13d4d253e6478ae71b4edafd35cca0e08a70227 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Wed, 28 Apr 2021 18:18:42 +0200 Subject: [PATCH 04/24] Increase tag allowed size Signed-off-by: Thomas Citharel --- lib/mobilizon/events/tag.ex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/mobilizon/events/tag.ex b/lib/mobilizon/events/tag.ex index 3a2488e1e..b4fc428eb 100644 --- a/lib/mobilizon/events/tag.ex +++ b/lib/mobilizon/events/tag.ex @@ -36,7 +36,7 @@ defmodule Mobilizon.Events.Tag do |> TitleSlug.maybe_generate_slug() |> validate_required(@required_attrs) |> TitleSlug.unique_constraint() - |> validate_length(:title, min: 2, max: 20) - |> validate_length(:slug, min: 2, max: 20) + |> validate_length(:title, min: 2, max: 40) + |> validate_length(:slug, min: 2, max: 40) end end From 614ead1777bfb9309d2fc2528c67154484b10321 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Wed, 28 Apr 2021 18:19:09 +0200 Subject: [PATCH 05/24] Transmogrifier event create Handle any type of error Signed-off-by: Thomas Citharel --- lib/federation/activity_pub/transmogrifier.ex | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/federation/activity_pub/transmogrifier.ex b/lib/federation/activity_pub/transmogrifier.ex index bf79f5ac2..e527ac915 100644 --- a/lib/federation/activity_pub/transmogrifier.ex +++ b/lib/federation/activity_pub/transmogrifier.ex @@ -111,8 +111,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do {:ok, activity, event} else {:existing_event, %Event{} = event} -> {:ok, nil, event} - {:error, _, _} -> :error - {:error, _} -> :error + _ -> :error end end From 4a1e9ce713f3fa7a0b4d4db2f09827b1596a2894 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Wed, 28 Apr 2021 18:25:21 +0200 Subject: [PATCH 06/24] Add constraint on the comment url Signed-off-by: Thomas Citharel --- lib/mobilizon/discussions/comment.ex | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/mobilizon/discussions/comment.ex b/lib/mobilizon/discussions/comment.ex index bfa0cf6a1..8ec1bd75a 100644 --- a/lib/mobilizon/discussions/comment.ex +++ b/lib/mobilizon/discussions/comment.ex @@ -126,6 +126,7 @@ defmodule Mobilizon.Discussions.Comment do |> put_assoc(:media, Map.get(attrs, :media, [])) |> put_tags(attrs) |> put_mentions(attrs) + |> unique_constraint(:url, name: :comments_url_index) end @spec maybe_generate_uuid(Ecto.Changeset.t()) :: Ecto.Changeset.t() From 2692d32c5e59ff5a5d43b599d29a0fa691e29d62 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Thu, 29 Apr 2021 08:54:43 +0200 Subject: [PATCH 07/24] Add url to error log Signed-off-by: Thomas Citharel --- lib/federation/activity_pub/activity_pub.ex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/federation/activity_pub/activity_pub.ex b/lib/federation/activity_pub/activity_pub.ex index 66ffe52f7..0e11c056a 100644 --- a/lib/federation/activity_pub/activity_pub.ex +++ b/lib/federation/activity_pub/activity_pub.ex @@ -102,11 +102,11 @@ defmodule Mobilizon.Federation.ActivityPub do handle_existing_entity(url, entity, options) {:error, e} -> - Logger.warn("Something failed while fetching url #{inspect(e)}") + Logger.warn("Something failed while fetching url #{url} #{inspect(e)}") {:error, e} e -> - Logger.warn("Something failed while fetching url #{inspect(e)}") + Logger.warn("Something failed while fetching url #{url} #{inspect(e)}") {:error, e} end end From 557d599adf0bf21cecc50e424ee78007d9394977 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Fri, 30 Apr 2021 08:39:12 +0200 Subject: [PATCH 08/24] Do not emit events when setting editor content Fixes spaces being eater Signed-off-by: Thomas Citharel --- js/src/components/Editor.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/src/components/Editor.vue b/js/src/components/Editor.vue index 200b51769..98d037077 100644 --- a/js/src/components/Editor.vue +++ b/js/src/components/Editor.vue @@ -419,7 +419,7 @@ export default class EditorComponent extends Vue { onValueChanged(val: string): void { if (!this.editor) return; if (val !== this.editor.getHTML()) { - this.editor.setContent(val); + this.editor.setContent(val, false); } } From cd70fd692ab08c7a4ad8f37b1de6e2bb81647e47 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Fri, 30 Apr 2021 09:25:13 +0200 Subject: [PATCH 09/24] Bump CI to node14 Signed-off-by: Thomas Citharel --- docker/tests/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/tests/Dockerfile b/docker/tests/Dockerfile index 3054bc371..ce413ee74 100644 --- a/docker/tests/Dockerfile +++ b/docker/tests/Dockerfile @@ -1,9 +1,9 @@ FROM elixir:latest LABEL maintainer="Thomas Citharel " -ENV REFRESHED_AT=2021-02-08 +ENV REFRESHED_AT=2021-04-30 RUN apt-get update -yq && apt-get install -yq build-essential inotify-tools postgresql-client git curl gnupg xvfb libgtk-3-dev libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2 cmake exiftool -RUN curl -sL https://deb.nodesource.com/setup_12.x | bash && apt-get install nodejs -yq +RUN curl -sL https://deb.nodesource.com/setup_14.x | bash && apt-get install nodejs -yq RUN npm install -g yarn wait-on RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* RUN mix local.hex --force && mix local.rebar --force From fa9ddf8ce01b8b23992ee3f54201d47a30173cea Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Fri, 30 Apr 2021 12:20:31 +0200 Subject: [PATCH 10/24] Upgrade tiptap to version 2 Signed-off-by: Thomas Citharel --- js/package.json | 14 +- js/src/components/Editor.vue | 297 ++++++---------- js/src/components/Editor/Image.ts | 80 ++--- js/src/components/Editor/MaxSize.ts | 39 --- js/src/components/Editor/Mention.ts | 66 ++++ js/src/components/Editor/MentionList.vue | 97 ++++++ js/src/typings/tiptap-commands.d.ts | 42 --- js/src/typings/tiptap-extensions.d.ts | 62 ---- js/src/typings/tiptap.d.ts | 331 ------------------ js/yarn.lock | 410 ++++++++++++++++------- 10 files changed, 595 insertions(+), 843 deletions(-) delete mode 100644 js/src/components/Editor/MaxSize.ts create mode 100644 js/src/components/Editor/Mention.ts create mode 100644 js/src/components/Editor/MentionList.vue delete mode 100644 js/src/typings/tiptap-commands.d.ts delete mode 100644 js/src/typings/tiptap-extensions.d.ts delete mode 100644 js/src/typings/tiptap.d.ts diff --git a/js/package.json b/js/package.json index 90d5e4663..4209fec2b 100644 --- a/js/package.json +++ b/js/package.json @@ -15,6 +15,18 @@ "@absinthe/socket": "^0.2.1", "@absinthe/socket-apollo-link": "^0.2.1", "@mdi/font": "^5.0.45", + "@tiptap/extension-blockquote": "^2.0.0-beta.6", + "@tiptap/extension-bubble-menu": "^2.0.0-beta.9", + "@tiptap/extension-character-count": "^2.0.0-beta.5", + "@tiptap/extension-history": "^2.0.0-beta.5", + "@tiptap/extension-image": "^2.0.0-beta.6", + "@tiptap/extension-link": "^2.0.0-beta.8", + "@tiptap/extension-list-item": "^2.0.0-beta.6", + "@tiptap/extension-mention": "^2.0.0-beta.42", + "@tiptap/extension-ordered-list": "^2.0.0-beta.6", + "@tiptap/extension-underline": "^2.0.0-beta.7", + "@tiptap/starter-kit": "^2.0.0-beta.37", + "@tiptap/vue-2": "^2.0.0-beta.21", "apollo-absinthe-upload-link": "^1.5.0", "apollo-cache": "^1.3.5", "apollo-cache-inmemory": "^1.6.6", @@ -38,8 +50,6 @@ "phoenix": "^1.4.11", "register-service-worker": "^1.7.1", "tippy.js": "^6.2.3", - "tiptap": "^1.32.0", - "tiptap-extensions": "^1.34.0", "unfetch": "^4.2.0", "v-tooltip": "^2.1.3", "vue": "^2.6.11", diff --git a/js/src/components/Editor.vue b/js/src/components/Editor.vue index 98d037077..a338f9a18 100644 --- a/js/src/components/Editor.vue +++ b/js/src/components/Editor.vue @@ -6,16 +6,12 @@ id="tiptab-editor" :data-actor-id="currentActor && currentActor.id" > - - @@ -200,37 +211,29 @@ + + diff --git a/js/src/typings/tiptap-commands.d.ts b/js/src/typings/tiptap-commands.d.ts deleted file mode 100644 index 9cdd88394..000000000 --- a/js/src/typings/tiptap-commands.d.ts +++ /dev/null @@ -1,42 +0,0 @@ -declare module "tiptap-commands" { - import { EditorView } from "prosemirror-view"; - import { Transaction, EditorState, Plugin } from "prosemirror-state"; - import { InputRule } from "prosemirror-inputrules"; - import { NodeType, MarkType } from "prosemirror-model"; - - export interface DispatchFn { - (tr: Transaction): boolean; - } - - export interface Command { - (...params: any[]): CommandFunction; - } - - export interface CommandFunction { - ( - state: EditorState, - dispatch: DispatchFn | undefined, - view: EditorView - ): boolean; - } - - export function toggleWrap(type: NodeType): Command; - - export function wrappingInputRule( - regexp: RegExp, - nodeType: NodeType, - getAttrs?: (arg: {} | string[]) => object | undefined, - joinPredicate?: (strs: string[], node: Node) => boolean - ): InputRule; - - export function toggleMark( - type: MarkType, - attrs?: { [key: string]: any } - ): Command; - - export function pasteRule( - regexp: RegExp, - type: string, - getAttrs: (() => { [key: string]: any }) | { [key: string]: any } - ): Plugin; -} diff --git a/js/src/typings/tiptap-extensions.d.ts b/js/src/typings/tiptap-extensions.d.ts deleted file mode 100644 index 5be90064a..000000000 --- a/js/src/typings/tiptap-extensions.d.ts +++ /dev/null @@ -1,62 +0,0 @@ -declare module "tiptap-extensions" { - import { Extension, Node, Mark } from "tiptap"; - - export interface PlaceholderOptions { - emptyNodeClass?: string; - emptyNodeText?: string; - showOnlyWhenEditable?: boolean; - showOnlyCurrent?: boolean; - emptyEditorClass: string; - } - export class Placeholder extends Extension { - constructor(options?: PlaceholderOptions); - } - - export interface TrailingNodeOptions { - /** - * Node to be at the end of the document - * - * defaults to 'paragraph' - */ - node: string; - /** - * The trailing node will not be displayed after these specified nodes. - */ - notAfter: string[]; - } - export class TrailingNode extends Extension { - constructor(options?: TrailingNodeOptions); - } - - export interface HeadingOptions { - levels?: number[]; - } - - export class History extends Extension {} - export class Underline extends Mark {} - export class Strike extends Mark {} - export class Italic extends Mark {} - export class Bold extends Mark {} - export class BulletList extends Node {} - export class ListItem extends Node {} - export class OrderedList extends Node {} - export class HardBreak extends Node {} - export class Blockquote extends Node {} - export class CodeBlock extends Node {} - export class TodoItem extends Node {} - export class Code extends Node {} - export class HorizontalRule extends Node {} - export class Link extends Node {} - export class TodoList extends Node {} - - export class Heading extends Node { - constructor(options?: HeadingOptions); - } - - export class Table extends Node {} - export class TableCell extends Node {} - export class TableRow extends Node {} - export class TableHeader extends Node {} - - export class Mention extends Node {} -} diff --git a/js/src/typings/tiptap.d.ts b/js/src/typings/tiptap.d.ts deleted file mode 100644 index 0202ba75a..000000000 --- a/js/src/typings/tiptap.d.ts +++ /dev/null @@ -1,331 +0,0 @@ -declare module "tiptap" { - import { - MarkSpec, - MarkType, - Node as ProsemirrorNode, - NodeSpec, - NodeType, - ParseOptions, - Schema, - } from "prosemirror-model"; - import { EditorState, Plugin, Transaction } from "prosemirror-state"; - import { Command, CommandFunction } from "tiptap-commands"; - import { EditorProps, EditorView } from "prosemirror-view"; - import { VueConstructor } from "vue"; - - export const EditorContent: VueConstructor; - export const EditorMenuBubble: VueConstructor; - export const EditorMenuBar: VueConstructor; - export type ExtensionOption = Extension | Node | Mark; - - // there are some props available - // `node` is a Prosemirror Node Object - // `updateAttrs` is a function to update attributes defined in `schema` - // `view` is the ProseMirror view instance - // `options` is an array of your extension options - // `selected` - export interface NodeView { - /** A Prosemirror Node Object */ - node?: ProsemirrorNode; - /** A function to update attributes defined in `schema` */ - updateAttrs?: (attrs: { [key: string]: any }) => any; - /** The ProseMirror view instance */ - view?: EditorView; - /** An array of your extension options */ - options?: { [key: string]: any }; - /** Whether the node view is selected */ - selected?: boolean; - } - - export type CommandGetter = - | { [key: string]: (() => Command) | Command } - | (() => Command) - | Command - | (() => Command)[]; - - export interface EditorUpdateEvent { - state: EditorState; - getHTML: () => string; - getJSON: () => object; - transaction: Transaction; - } - - export interface EditorOptions { - editorProps?: EditorProps; - /** defaults to true */ - editable?: boolean; - /** defaults to false */ - autoFocus?: boolean; - extensions?: ExtensionOption[]; - content?: Object | string; - emptyDocument?: { - type: "doc"; - content: [ - { - type: "paragraph"; - } - ]; - }; - /** defaults to false */ - useBuiltInExtensions?: boolean; - /** defaults to false */ - disableInputRules?: boolean; - /** defaults to false */ - disablePasteRules?: boolean; - dropCursor?: {}; - parseOptions?: ParseOptions; - /** defaults to true */ - injectCSS?: boolean; - onInit?: ({ - view, - state, - }: { - view: EditorView; - state: EditorState; - }) => void; - onTransaction?: (event: EditorUpdateEvent) => void; - onUpdate?: (event: EditorUpdateEvent) => void; - onFocus?: ({ - event, - state, - view, - }: { - event: FocusEvent; - state: EditorState; - view: EditorView; - }) => void; - onBlur?: ({ - event, - state, - view, - }: { - event: FocusEvent; - state: EditorState; - view: EditorView; - }) => void; - onPaste?: (...args: any) => void; - onDrop?: (...args: any) => void; - } - - export class Editor { - commands: { [key: string]: Command }; - defaultOptions: { [key: string]: any }; - element: Element; - extensions: Extension[]; - inputRules: any[]; - keymaps: any[]; - marks: Mark[]; - nodes: Node[]; - pasteRules: any[]; - plugins: Plugin[]; - schema: Schema; - state: EditorState; - view: EditorView; - activeMarks: { [markName: string]: () => boolean }; - activeNodes: { [nodeName: string]: () => boolean }; - activeMarkAttrs: { [markName: string]: { [attr: string]: any } }; - - /** - * Creates an [Editor] - * @param options - An object of Editor options. - */ - constructor(options?: EditorOptions); - - /** - * Replace the current content. You can pass an HTML string or a JSON document that matches the editor's schema. - * @param content Defaults to {}. - * @param emitUpdate Defaults to false. - */ - setContent(content?: string | object, emitUpdate?: boolean): void; - - /** - * Clears the current editor content. - * - * @param emitUpdate Whether or not the change should trigger the onUpdate callback. - */ - clearContent(emitUpdate?: boolean): void; - - /** - * Overwrites the current editor options. - * @param options Options an object of Editor options - */ - setOptions(options: EditorOptions): void; - - /** - * Register a ProseMirror plugin. - * @param plugin - */ - registerPlugin(plugin: Plugin): void; - - /** Get the current content as JSON. */ - getJSON(): {}; - - /** Get the current content as HTML. */ - getHTML(): string; - - /** Focus the editor */ - focus(): void; - - /** Removes the focus from the editor. */ - blur(): void; - - /** Destroy the editor and free all Prosemirror-related objects from memory. - * You should always call this method on beforeDestroy() lifecycle hook of the Vue component wrapping the editor. - */ - destroy(): void; - - on(event: string, callbackFn: (params: any) => void): void; - - off(event: string, callbackFn: (params: any) => void): void; - - getMarkAttrs(markName: string): { [attributeName: string]: any }; - } - - export class Extension { - /** Define a name for your extension */ - name?: string | null; - /** Define some default options.The options are available as this.$options. */ - defaultOptions?: Options; - /** Define a list of Prosemirror plugins. */ - plugins?: Plugin[]; - /** Called when options of extension are changed via editor.extensions.options */ - update?: (view: EditorView) => any; - /** Options for that are either passed in from the extension constructor or set by defaultOptions() */ - options?: Options; - - constructor(options?: Options); - - /** Define some keybindings. */ - keys?({ - schema, - }: { - schema: Schema | NodeSpec | MarkSpec; - }): { [keyCombo: string]: CommandFunction }; - - /** Define commands. */ - commands?({ - schema, - attrs, - }: { - schema: Schema | NodeSpec | MarkSpec; - attrs: { [key: string]: string }; - }): CommandGetter; - - inputRules?({ schema }: { schema: Schema }): any[]; - - pasteRules?({ schema }: { schema: Schema }): Plugin[]; - } - - export class Node extends Extension { - schema?: NodeSpec; - /** Reference to a view component constructor - * See https://stackoverflow.com/questions/38311672/generic-and-typeof-t-in-the-parameters - */ - view?: { new (): V }; - - commands?({ - type, - schema, - attrs, - }: { - type: NodeType; - schema: NodeSpec; - attrs: { [key: string]: string }; - }): CommandGetter; - - keys?({ - type, - schema, - }: { - type: NodeType; - schema: NodeSpec; - }): { [keyCombo: string]: CommandFunction }; - - inputRules?({ type, schema }: { type: NodeType; schema: Schema }): any[]; - - pasteRules?({ type, schema }: { type: NodeType; schema: Schema }): Plugin[]; - } - - export class Mark extends Extension { - schema?: MarkSpec; - /** Reference to a view component constructor - * See https://stackoverflow.com/questions/38311672/generic-and-typeof-t-in-the-parameters - */ - view?: { new (): V }; - - commands?({ - type, - schema, - attrs, - }: { - type: MarkType; - schema: MarkSpec; - attrs: { [key: string]: string }; - }): CommandGetter; - - keys?({ - type, - schema, - }: { - type: MarkType; - schema: MarkSpec; - }): { [keyCombo: string]: CommandFunction }; - - inputRules?({ type, schema }: { type: MarkType; schema: Schema }): any[]; - - pasteRules?({ type, schema }: { type: MarkType; schema: Schema }): Plugin[]; - } - - export class Text extends Node {} - - export class Paragraph extends Node {} - - export class Doc extends Node {} - - /** A set of commands registered to the editor. */ - export interface EditorCommandSet { - [key: string]: Command; - } - - /** - * The properties passed into component - */ - export interface MenuData { - /** Whether the editor has focus. */ - focused: boolean; - /** Function to focus the editor. */ - focus: () => void; - /** A set of commands registered. */ - commands: EditorCommandSet; - /** Check whether a node or mark is currently active. */ - isActive: IsActiveChecker; - /** A function to get all mark attributes of the current selection. */ - getMarkAttrs: (markName: string) => { [attributeName: string]: any }; - } - - export interface FloatingMenuData extends MenuData { - /** An object for positioning the menu. */ - menu: MenuDisplayData; - } - - /** - * A data object passed to a menu bubble to help it determine its position - * and visibility. - */ - export interface MenuDisplayData { - /** Left position of the cursor. */ - left: number; - /** Bottom position of the cursor. */ - bottom: number; - /** Whether or not there is an active selection. */ - isActive: boolean; - } - - /** - * A map containing functions to check if a node/mark is currently selected. - * The name of the node/mark is used as the key. - */ - export interface IsActiveChecker { - [name: string]: () => boolean; - } -} diff --git a/js/yarn.lock b/js/yarn.lock index 7218e500f..6bf4aae24 100644 --- a/js/yarn.lock +++ b/js/yarn.lock @@ -1294,6 +1294,230 @@ ejs "^2.6.1" magic-string "^0.25.0" +"@tiptap/core@^2.0.0-beta.41": + version "2.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@tiptap/core/-/core-2.0.0-beta.41.tgz#007199818fb158bbc40ef353b59f6740500e1b72" + integrity sha512-TkopvbzEfYMztcAiWpPMvYM9X8jFrzOA29wqCk894bSsiaQQHfs3EESCMEFjxYfXF6wyAZLz0Br4p6SuWKIHrQ== + dependencies: + "@types/prosemirror-commands" "^1.0.4" + "@types/prosemirror-inputrules" "^1.0.4" + "@types/prosemirror-keymap" "^1.0.4" + "@types/prosemirror-model" "^1.13.0" + "@types/prosemirror-schema-list" "^1.0.3" + "@types/prosemirror-state" "^1.2.6" + "@types/prosemirror-transform" "^1.1.2" + "@types/prosemirror-view" "^1.17.1" + prosemirror-commands "^1.1.7" + prosemirror-inputrules "^1.1.3" + prosemirror-keymap "^1.1.3" + prosemirror-model "^1.14.1" + prosemirror-schema-list "^1.1.4" + prosemirror-state "^1.3.4" + prosemirror-transform "^1.3.2" + prosemirror-view "^1.18.2" + +"@tiptap/extension-blockquote@^2.0.0-beta.6": + version "2.0.0-beta.6" + resolved "https://registry.yarnpkg.com/@tiptap/extension-blockquote/-/extension-blockquote-2.0.0-beta.6.tgz#7670998307e88a0d0edf59558355a9328a6acec7" + integrity sha512-DOtr1Iy+wdyX2lrSX9KF6BaHvi0Sxg5tWfrAVHxPU7tCfxt33Xp6Ym97fyuZLlwUIbrzsy/DqBkdTYQ5v+CPMA== + dependencies: + prosemirror-inputrules "^1.1.3" + +"@tiptap/extension-bold@^2.0.0-beta.6": + version "2.0.0-beta.6" + resolved "https://registry.yarnpkg.com/@tiptap/extension-bold/-/extension-bold-2.0.0-beta.6.tgz#347ddb7ad726d369337299b3800367815106de7f" + integrity sha512-hFxVQZcXWBCaCTCG3PJONhvTwoVGq/fJAQuPrYlI18z124Rhx6DeBkPG0FSwQgBeuJyezi4Jz61onkc48jwmSA== + +"@tiptap/extension-bubble-menu@^2.0.0-beta.9": + version "2.0.0-beta.9" + resolved "https://registry.yarnpkg.com/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.0.0-beta.9.tgz#bbf6b819c7edd78f1dbc347f3d102f316928c385" + integrity sha512-GGxHwurQ6PediGy2b6q5at73CRznD6M6f1OSSuFVoIm2Q+FQMOECXKqLHpIOuHke6zYJpaAp1SfdX87/Zs5qaQ== + dependencies: + prosemirror-state "^1.3.4" + prosemirror-view "^1.18.2" + tippy.js "^6.3.1" + +"@tiptap/extension-bullet-list@^2.0.0-beta.6": + version "2.0.0-beta.6" + resolved "https://registry.yarnpkg.com/@tiptap/extension-bullet-list/-/extension-bullet-list-2.0.0-beta.6.tgz#3830f4a6355f84061929085603f5423ae448d346" + integrity sha512-uO2t1CUc2Puq23c06xJvK9Imh895j1fsTJKJfEiSPDVMGrS3+tGOnQ2f9Fc5IOJITZZzFOpKnxRHC9AS5DySmg== + dependencies: + prosemirror-inputrules "^1.1.3" + +"@tiptap/extension-character-count@^2.0.0-beta.5": + version "2.0.0-beta.5" + resolved "https://registry.yarnpkg.com/@tiptap/extension-character-count/-/extension-character-count-2.0.0-beta.5.tgz#a1ad655af90fc0f9770d7bdcf72be57a04dac205" + integrity sha512-zD+K0YrmQL34nIDklMfTDG/cR2sHcj6Pog4EYRPfudBCJTC/lXEEZO6IMoKvbzdh86+UDo1qdwaH1pfoJ91LCw== + +"@tiptap/extension-code-block@^2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@tiptap/extension-code-block/-/extension-code-block-2.0.0-beta.8.tgz#f26d8992be6ea78f34a7db52b0a706293d19922d" + integrity sha512-lSeC98qJ8szMUgp/hFZFMqDfV/boGpMN3kek98BR6dCI8QSHvZWpHrQ8n9dyc8NEGAuvBhP/lu0PSD1TzYwkig== + dependencies: + prosemirror-inputrules "^1.1.3" + +"@tiptap/extension-code@^2.0.0-beta.6": + version "2.0.0-beta.6" + resolved "https://registry.yarnpkg.com/@tiptap/extension-code/-/extension-code-2.0.0-beta.6.tgz#c35f0a8b1f3fe05b5ec9ced5aea6c9b093073d09" + integrity sha512-i0s3yTSdONUOp0fM/VrdSQfdj0SsqTPyP2ev2Ji1KgzGQ49Rw8gewT6RorHMwvMdv+F5+wE47wI2rcdUjpNwMQ== + +"@tiptap/extension-document@^2.0.0-beta.5": + version "2.0.0-beta.5" + resolved "https://registry.yarnpkg.com/@tiptap/extension-document/-/extension-document-2.0.0-beta.5.tgz#595c25879eb39f26cdb58e9b01ff5e48d65b2e4b" + integrity sha512-6GAZ7gA3vzStkASe+Qsd/OqqQ9QnDTjBKpXVxMZZnqutUmWjPau9e0kLEFYoU57f5bJa2w/TCWICSp+o4ka3jg== + +"@tiptap/extension-dropcursor@^2.0.0-beta.6": + version "2.0.0-beta.6" + resolved "https://registry.yarnpkg.com/@tiptap/extension-dropcursor/-/extension-dropcursor-2.0.0-beta.6.tgz#9a7569c970010c47424e93f67f907ce7f0c3c429" + integrity sha512-EUmagYkamxuxZprKCXcSrwqUZkOW6edxIb7iyL0RQLYAcJ2jwCe9hJU0G6a8ILDr027W7fXd6LDbrzPMcVK/ug== + dependencies: + "@types/prosemirror-dropcursor" "^1.0.1" + prosemirror-dropcursor "^1.3.4" + +"@tiptap/extension-floating-menu@^2.0.0-beta.6": + version "2.0.0-beta.6" + resolved "https://registry.yarnpkg.com/@tiptap/extension-floating-menu/-/extension-floating-menu-2.0.0-beta.6.tgz#617290bd0533412e40c09dde7ecadc4a8c3cf960" + integrity sha512-2j73cDaN+flG8mF/PHd8OrZjaG62r3Kbskzpdsa2Oa6fV3laNg0jMhFzcuBJwFKFa0l8RHB/zMXNpacxCHa9vw== + dependencies: + prosemirror-state "^1.3.4" + prosemirror-view "^1.18.2" + tippy.js "^6.3.1" + +"@tiptap/extension-gapcursor@^2.0.0-beta.10": + version "2.0.0-beta.10" + resolved "https://registry.yarnpkg.com/@tiptap/extension-gapcursor/-/extension-gapcursor-2.0.0-beta.10.tgz#f045d90def63559797576a299f904f539c304fe9" + integrity sha512-q5S3AjDTBi5WHwl1V7iYSk32t3mk/Z/ZYAViLDsqffzurx6KIxq9Yw6Ad1L+h04wXq/rJiFeaMeCnGs4DmWa3w== + dependencies: + "@types/prosemirror-gapcursor" "^1.0.3" + prosemirror-gapcursor "^1.1.5" + +"@tiptap/extension-hard-break@^2.0.0-beta.6": + version "2.0.0-beta.6" + resolved "https://registry.yarnpkg.com/@tiptap/extension-hard-break/-/extension-hard-break-2.0.0-beta.6.tgz#37bee563b06a528d6b72ea875de7645f97a43656" + integrity sha512-FZ/wpC9YQY50rt85DuPl+Dxe157LtHAhKW08BRAds/o6zrwcBpbg7zzVPxnu1wH1L0ObhyxCjNFXUyKalLnk8g== + +"@tiptap/extension-heading@^2.0.0-beta.6": + version "2.0.0-beta.6" + resolved "https://registry.yarnpkg.com/@tiptap/extension-heading/-/extension-heading-2.0.0-beta.6.tgz#077919803ed4d8c729a72cc122cfca851bfaeff3" + integrity sha512-zM5zaWGbJDYDmuHZ+YHTZK2nncDs+tlhfYKTKPK+0iIFCO4iTkvs7ERUO9qdbuQKjHGp28Q3RhS7YORss2bOhA== + dependencies: + prosemirror-inputrules "^1.1.3" + +"@tiptap/extension-history@^2.0.0-beta.5": + version "2.0.0-beta.5" + resolved "https://registry.yarnpkg.com/@tiptap/extension-history/-/extension-history-2.0.0-beta.5.tgz#bb9b257c110b0ad324407443972a623efa71816d" + integrity sha512-ej0QtStZVm8QInWHEtyduK9WQcYpfPN2EtIkwtPL9HFm9u7xgouBVdj1TqIABV3vJVGL28KKpGVVg8ZuBF4h7g== + dependencies: + "@types/prosemirror-history" "^1.0.2" + prosemirror-history "^1.1.3" + +"@tiptap/extension-horizontal-rule@^2.0.0-beta.7": + version "2.0.0-beta.7" + resolved "https://registry.yarnpkg.com/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.0.0-beta.7.tgz#6e75336a0316bef1a359de7d1888c8fb97d5e659" + integrity sha512-TOxoVyKL3qF0e+VCQ5B7BpdtspvvY0TdU6/AJVIatPK9rXXXcJTM68k0O4koXgeuu33CSPXWVNwgm3QcxMi3Dg== + dependencies: + prosemirror-state "^1.3.4" + +"@tiptap/extension-image@^2.0.0-beta.6": + version "2.0.0-beta.6" + resolved "https://registry.yarnpkg.com/@tiptap/extension-image/-/extension-image-2.0.0-beta.6.tgz#fa1201b1fcf2c4a1f8a035b7cc511da6f88fb8f0" + integrity sha512-p1AYHPmcSV0WhKNk7Dqj17qYcuVxDsXz1ivPo2xD7R5vFnPphQZ9Bu1Y8BA2BJmn0eheQi11sz/ZUflnNfX7ew== + +"@tiptap/extension-italic@^2.0.0-beta.6": + version "2.0.0-beta.6" + resolved "https://registry.yarnpkg.com/@tiptap/extension-italic/-/extension-italic-2.0.0-beta.6.tgz#497cc5aac4077b27d6c548896601dd240771401a" + integrity sha512-HjB6YCm4oQ04peQ9M2zi4101JSgNfOLTkyfbDhpQv+B61sZtuweJx27SxYDOB34dA+i513orCVZdI6AgSSCEHA== + +"@tiptap/extension-link@^2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@tiptap/extension-link/-/extension-link-2.0.0-beta.8.tgz#7d0aba9c12335f43ba94b18034d458c4656c4dcd" + integrity sha512-rBLISgGiQg/mZ0rvFS1/8ylXqqO0kuam20KBc3tnmu6clakwk93MpZ63owNmlJPGQsJVfmPQFRkJypsdRIML3w== + dependencies: + prosemirror-state "^1.3.4" + +"@tiptap/extension-list-item@^2.0.0-beta.6": + version "2.0.0-beta.6" + resolved "https://registry.yarnpkg.com/@tiptap/extension-list-item/-/extension-list-item-2.0.0-beta.6.tgz#69850d2d9242e213a24a7e10baecb0f0933f3cbe" + integrity sha512-zhssny5W2Q7CvB9qZT1Wc7k0V+R7IqCbNBmoijwF9a+uehBpJcxdN1DFB1v0qdmIEdDLU9dnBUfIpWPnLwiAXw== + +"@tiptap/extension-mention@^2.0.0-beta.42": + version "2.0.0-beta.42" + resolved "https://registry.yarnpkg.com/@tiptap/extension-mention/-/extension-mention-2.0.0-beta.42.tgz#3cca0edd04d5416d02dc744e7d23669676c16e90" + integrity sha512-NMg7mT6aWcTasvUDErWqLVoDpWLpe7+R7+MoD9B1TYBCcQhnhOOteKMJ4tz43dTbwEUUSAif/BIZdRfMBUJdnA== + dependencies: + "@tiptap/suggestion" "^2.0.0-beta.42" + +"@tiptap/extension-ordered-list@^2.0.0-beta.6": + version "2.0.0-beta.6" + resolved "https://registry.yarnpkg.com/@tiptap/extension-ordered-list/-/extension-ordered-list-2.0.0-beta.6.tgz#ce214854946284c7ff2d458c7f4b3ac6ae33a9b8" + integrity sha512-dUiTO9bV3cuxWedp164KVufW3BzIwY/beQ64aQjnRyA3TPyiPrhp4qvHrxQujm31XPJy4zUY0PO/VafJ+69cGw== + dependencies: + prosemirror-inputrules "^1.1.3" + +"@tiptap/extension-paragraph@^2.0.0-beta.7": + version "2.0.0-beta.7" + resolved "https://registry.yarnpkg.com/@tiptap/extension-paragraph/-/extension-paragraph-2.0.0-beta.7.tgz#5dca1524247a57e98a60eb394ae66cd30072b9f4" + integrity sha512-bk9/KNbJ4wAvaAwrPLwp89QtEyef9VxbbaPd2+Q21EArTP2SGPNTWrjARq1Flc41fERo+2A23K5AcbNDBID9DA== + +"@tiptap/extension-strike@^2.0.0-beta.7": + version "2.0.0-beta.7" + resolved "https://registry.yarnpkg.com/@tiptap/extension-strike/-/extension-strike-2.0.0-beta.7.tgz#cee0f3c087d2914f8435dc2cc4580c9aec0a42bb" + integrity sha512-GBctBeHSkDW4ivXAUaEBtOgQXJgT2q2iqWuI8kTHCO1z7c/mns4J19U24dx8bPFhJBw++sDDd8yBkLQH2lP/Pw== + +"@tiptap/extension-text@^2.0.0-beta.5": + version "2.0.0-beta.5" + resolved "https://registry.yarnpkg.com/@tiptap/extension-text/-/extension-text-2.0.0-beta.5.tgz#cce1f9b22a5e0ad35b081774059b8c2ec6c92ae3" + integrity sha512-WCavPVqi+tndW8tAQ4KBq98ZnkLgKW9nc/T8wE3oKQ+df9YBauIl3OxxMA6At/oK+vlcFfubBpzFRAg9iygRAA== + +"@tiptap/extension-underline@^2.0.0-beta.7": + version "2.0.0-beta.7" + resolved "https://registry.yarnpkg.com/@tiptap/extension-underline/-/extension-underline-2.0.0-beta.7.tgz#789a109fedea41d5dc136fdcde32395c0646fd65" + integrity sha512-p5y7WFKohnRy/+te7M+EBB9hLOBfbxtWsqPXwFEm3Puq8bj2RNdGVfOruPqlmHpBoCFJgG73RKi0lmqplo1XZg== + +"@tiptap/starter-kit@^2.0.0-beta.37": + version "2.0.0-beta.37" + resolved "https://registry.yarnpkg.com/@tiptap/starter-kit/-/starter-kit-2.0.0-beta.37.tgz#7653c412c32895c84a26bc017ba23d2955e3ba5d" + integrity sha512-RFT6xLIph1xAbqnQJRG7q9fVTrIhaiqUFocPsuW/HHes2wvreR6ODgKzLRCcTM19YMpsmP8wC6f++itd9JwJFg== + dependencies: + "@tiptap/core" "^2.0.0-beta.41" + "@tiptap/extension-blockquote" "^2.0.0-beta.6" + "@tiptap/extension-bold" "^2.0.0-beta.6" + "@tiptap/extension-bullet-list" "^2.0.0-beta.6" + "@tiptap/extension-code" "^2.0.0-beta.6" + "@tiptap/extension-code-block" "^2.0.0-beta.8" + "@tiptap/extension-document" "^2.0.0-beta.5" + "@tiptap/extension-dropcursor" "^2.0.0-beta.6" + "@tiptap/extension-gapcursor" "^2.0.0-beta.10" + "@tiptap/extension-hard-break" "^2.0.0-beta.6" + "@tiptap/extension-heading" "^2.0.0-beta.6" + "@tiptap/extension-history" "^2.0.0-beta.5" + "@tiptap/extension-horizontal-rule" "^2.0.0-beta.7" + "@tiptap/extension-italic" "^2.0.0-beta.6" + "@tiptap/extension-list-item" "^2.0.0-beta.6" + "@tiptap/extension-ordered-list" "^2.0.0-beta.6" + "@tiptap/extension-paragraph" "^2.0.0-beta.7" + "@tiptap/extension-strike" "^2.0.0-beta.7" + "@tiptap/extension-text" "^2.0.0-beta.5" + +"@tiptap/suggestion@^2.0.0-beta.42": + version "2.0.0-beta.42" + resolved "https://registry.yarnpkg.com/@tiptap/suggestion/-/suggestion-2.0.0-beta.42.tgz#a2ddf87cf046ac0acd83bffbd26b3d989995fa92" + integrity sha512-+XgZL7HrBT50q792Mc3omA+yDaBjEwRFQE/T2BDKzlAZVqMzFg8Co+LNaNfR94kcDDvfvTLdsSyOg7e+m6FqPA== + dependencies: + "@tiptap/core" "^2.0.0-beta.41" + prosemirror-model "^1.14.1" + prosemirror-state "^1.3.4" + prosemirror-view "^1.18.2" + +"@tiptap/vue-2@^2.0.0-beta.21": + version "2.0.0-beta.21" + resolved "https://registry.yarnpkg.com/@tiptap/vue-2/-/vue-2-2.0.0-beta.21.tgz#838257ef91bbd54995aa7d34e4682fc9c69cec6a" + integrity sha512-WTL6iw6cgMkQQ2b++kClQOxsByAUKYLcjO1UsjmrrWnaSDmfMO1ZpkmKKSp1SsuQAk7W0t9aybeyWrDzjxfU3g== + dependencies: + "@tiptap/extension-bubble-menu" "^2.0.0-beta.9" + "@tiptap/extension-floating-menu" "^2.0.0-beta.6" + prosemirror-view "^1.18.2" + "@types/anymatch@*": version "1.3.1" resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a" @@ -1525,7 +1749,39 @@ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== -"@types/prosemirror-inputrules@^1.0.2": +"@types/prosemirror-commands@*", "@types/prosemirror-commands@^1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@types/prosemirror-commands/-/prosemirror-commands-1.0.4.tgz#d08551415127d93ae62e7239d30db0b5e7208e22" + integrity sha512-utDNYB3EXLjAfYIcRWJe6pn3kcQ5kG4RijbT/0Y/TFOm6yhvYS/D9eJVnijdg9LDjykapcezchxGRqFD5LcyaQ== + dependencies: + "@types/prosemirror-model" "*" + "@types/prosemirror-state" "*" + "@types/prosemirror-view" "*" + +"@types/prosemirror-dropcursor@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/prosemirror-dropcursor/-/prosemirror-dropcursor-1.0.1.tgz#3ba98dd861ff2a62559e70f453f996a1ef5ec55d" + integrity sha512-nHokhFypOZjknolZBm2XShlR7fx1IUcCiA3S2fBwmAraWu6zv3gboDSwwFpoS9UB2xKc4ismAmBxh2bpL3YNkg== + dependencies: + "@types/prosemirror-state" "*" + +"@types/prosemirror-gapcursor@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@types/prosemirror-gapcursor/-/prosemirror-gapcursor-1.0.3.tgz#989e98c734e01e2ed4cab39992e60a1b0646cab6" + integrity sha512-kBVjjbMmUk7ZsgpI1NOyY15makulu1skEGr+V9GgY7GQnT9vqjo8/XiNSgSj9s9vRTsTb/KAaTI9KJwWlhbhxQ== + dependencies: + "@types/prosemirror-model" "*" + "@types/prosemirror-state" "*" + +"@types/prosemirror-history@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@types/prosemirror-history/-/prosemirror-history-1.0.2.tgz#f90a009a0dcd71393faa69ce705593dec76347a1" + integrity sha512-AcfpWo+HkIuvq/H2zYjIMi2jxa2GWfYaTNiFTB2sigjkpWNM93CIlb7Cimy/4vNH8lVPp0GwLBjYIMRX6zOUyA== + dependencies: + "@types/prosemirror-model" "*" + "@types/prosemirror-state" "*" + +"@types/prosemirror-inputrules@^1.0.2", "@types/prosemirror-inputrules@^1.0.4": version "1.0.4" resolved "https://registry.yarnpkg.com/@types/prosemirror-inputrules/-/prosemirror-inputrules-1.0.4.tgz#4cb75054d954aa0f6f42099be05eb6c0e6958bae" integrity sha512-lJIMpOjO47SYozQybUkpV6QmfuQt7GZKHtVrvS+mR5UekA8NMC5HRIVMyaIauJLWhKU6oaNjpVaXdw41kh165g== @@ -1533,14 +1789,33 @@ "@types/prosemirror-model" "*" "@types/prosemirror-state" "*" -"@types/prosemirror-model@*", "@types/prosemirror-model@^1.7.2": +"@types/prosemirror-keymap@^1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@types/prosemirror-keymap/-/prosemirror-keymap-1.0.4.tgz#f73c79810e8d0e0a20d153d84f998f02e5afbc0c" + integrity sha512-ycevwkqUh+jEQtPwqO7sWGcm+Sybmhu8MpBsM8DlO3+YTKnXbKA6SDz/+q14q1wK3UA8lHJyfR+v+GPxfUSemg== + dependencies: + "@types/prosemirror-commands" "*" + "@types/prosemirror-model" "*" + "@types/prosemirror-state" "*" + "@types/prosemirror-view" "*" + +"@types/prosemirror-model@*", "@types/prosemirror-model@^1.13.0", "@types/prosemirror-model@^1.7.2": version "1.13.0" resolved "https://registry.yarnpkg.com/@types/prosemirror-model/-/prosemirror-model-1.13.0.tgz#d05937e918c3cac2cf49630ccab04a65fc5fffd6" integrity sha512-EIUr2R38Zh9n1eA8BQ1C3NX/XLV9U44DhNVk8x3Sth2RW+wa7jNA82XHMPOoapsOTfmpnh32xaHBOzREiBqdPQ== dependencies: "@types/orderedmap" "*" -"@types/prosemirror-state@*", "@types/prosemirror-state@^1.2.4": +"@types/prosemirror-schema-list@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@types/prosemirror-schema-list/-/prosemirror-schema-list-1.0.3.tgz#bdf1893a7915fbdc5c49b3cac9368e96213d70de" + integrity sha512-uWybOf+M2Ea7rlbs0yLsS4YJYNGXYtn4N+w8HCw3Vvfl6wBAROzlMt0gV/D/VW/7J/LlAjwMezuGe8xi24HzXA== + dependencies: + "@types/orderedmap" "*" + "@types/prosemirror-model" "*" + "@types/prosemirror-state" "*" + +"@types/prosemirror-state@*", "@types/prosemirror-state@^1.2.4", "@types/prosemirror-state@^1.2.6": version "1.2.6" resolved "https://registry.yarnpkg.com/@types/prosemirror-state/-/prosemirror-state-1.2.6.tgz#bb0169084239a8393b354c6fda5420fc347d6bab" integrity sha512-tJo0wC+/cQvbrPDVx01Fnng9Fs41bAMVxgJY1KLOyIsUPN0otUN1KdoQurLMmHNHTvIna9ZXxjZD//xJKLYfJw== @@ -1549,14 +1824,14 @@ "@types/prosemirror-transform" "*" "@types/prosemirror-view" "*" -"@types/prosemirror-transform@*": +"@types/prosemirror-transform@*", "@types/prosemirror-transform@^1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@types/prosemirror-transform/-/prosemirror-transform-1.1.2.tgz#fe883c19a5a9f1882346a294efd09d55c6764c7a" integrity sha512-Ozyvs5Dquc49gaFysmC4gNhv6E65r569HSzw4RXdZgIljZ5Y9K4kHFlDvsWBBDH19+1178X9LMmM9J620O6Bug== dependencies: "@types/prosemirror-model" "*" -"@types/prosemirror-view@*", "@types/prosemirror-view@^1.11.4": +"@types/prosemirror-view@*", "@types/prosemirror-view@^1.11.4", "@types/prosemirror-view@^1.17.1": version "1.17.1" resolved "https://registry.yarnpkg.com/@types/prosemirror-view/-/prosemirror-view-1.17.1.tgz#0895df5a57ae6e68d4f3f8020d9be4ef52192980" integrity sha512-PNiGGc6BffxHQzMR09UUilsBR8xFPDsKiPIXb4K/g56voPIvqq1pqySnWFfSR50Vo4ZL0tss3VBLWiiiKzVahQ== @@ -5608,13 +5883,6 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" -fault@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/fault/-/fault-1.0.4.tgz#eafcfc0a6d214fc94601e170df29954a4f842f13" - integrity sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA== - dependencies: - format "^0.2.0" - faye-websocket@^0.11.3: version "0.11.3" resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" @@ -5912,11 +6180,6 @@ form-data@~2.3.2: combined-stream "^1.0.6" mime-types "^2.1.12" -format@^0.2.0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b" - integrity sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs= - forwarded@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" @@ -6411,7 +6674,7 @@ hex-color-regex@^1.1.0: resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== -highlight.js@^10.7.1, highlight.js@~10.7.0: +highlight.js@^10.7.1: version "10.7.2" resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.2.tgz#89319b861edc66c48854ed1e6da21ea89f847360" integrity sha512-oFLl873u4usRM9K63j4ME9u3etNF0PLiJhSQ8rdfuL51Wn3zkD6drf9ZW0dOzjnZI22YYG24z30JcmfCZjMgYg== @@ -8294,14 +8557,6 @@ lower-case@^1.1.1: resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= -lowlight@^1.17.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/lowlight/-/lowlight-1.20.0.tgz#ddb197d33462ad0d93bf19d17b6c301aa3941888" - integrity sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw== - dependencies: - fault "^1.0.0" - highlight.js "~10.7.0" - lru-cache@^4.0.1, lru-cache@^4.1.2, lru-cache@^4.1.5: version "4.1.5" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" @@ -10114,14 +10369,7 @@ prop-types@^15.7.2: object-assign "^4.1.1" react-is "^16.8.1" -prosemirror-collab@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/prosemirror-collab/-/prosemirror-collab-1.2.2.tgz#8d2c0e82779cfef5d051154bd0836428bd6d9c4a" - integrity sha512-tBnHKMLgy5Qmx9MYVcLfs3pAyjtcqYYDd9kp3y+LSiQzkhMQDfZSV3NXWe4Gsly32adSef173BvObwfoSQL5MA== - dependencies: - prosemirror-state "^1.0.0" - -prosemirror-commands@^1.1.4: +prosemirror-commands@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/prosemirror-commands/-/prosemirror-commands-1.1.7.tgz#5b31ae0fe82835d36d22c780641c0b651f27dd03" integrity sha512-tuQr8q5euDjE+WAHWmu1JMLYWsPfUDH80QLLpnQrPYOPysO26FZyyHwEvA0+hUzvF8fOt1oMj0+/YM9UsPkZiA== @@ -10130,7 +10378,7 @@ prosemirror-commands@^1.1.4: prosemirror-state "^1.0.0" prosemirror-transform "^1.0.0" -prosemirror-dropcursor@^1.3.2: +prosemirror-dropcursor@^1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/prosemirror-dropcursor/-/prosemirror-dropcursor-1.3.4.tgz#a7f799ff9ecb520d3e1dbb3cb39d27ce41066618" integrity sha512-eVmpMG5+fmvANT3xDzRirmG240rB/piI31ExIfW0Mkvo5/cYC/lm1fFMAOzjO22uc5OQXiodRqOnyE05+g3UqA== @@ -10158,7 +10406,7 @@ prosemirror-history@^1.1.3: prosemirror-transform "^1.0.0" rope-sequence "^1.3.0" -prosemirror-inputrules@^1.1.2, prosemirror-inputrules@^1.1.3: +prosemirror-inputrules@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/prosemirror-inputrules/-/prosemirror-inputrules-1.1.3.tgz#93f9199ca02473259c30d7e352e4c14022d54638" integrity sha512-ZaHCLyBtvbyIHv0f5p6boQTIJjlD6o2NPZiEaZWT2DA+j591zS29QQEMT4lBqwcLW3qRSf7ZvoKNbf05YrsStw== @@ -10166,7 +10414,7 @@ prosemirror-inputrules@^1.1.2, prosemirror-inputrules@^1.1.3: prosemirror-state "^1.0.0" prosemirror-transform "^1.0.0" -prosemirror-keymap@^1.0.0, prosemirror-keymap@^1.1.2, prosemirror-keymap@^1.1.4: +prosemirror-keymap@^1.0.0, prosemirror-keymap@^1.1.3: version "1.1.4" resolved "https://registry.yarnpkg.com/prosemirror-keymap/-/prosemirror-keymap-1.1.4.tgz#8b481bf8389a5ac40d38dbd67ec3da2c7eac6a6d" integrity sha512-Al8cVUOnDFL4gcI5IDlG6xbZ0aOD/i3B17VT+1JbHWDguCgt/lBHVTHUBcKvvbSg6+q/W4Nj1Fu6bwZSca3xjg== @@ -10174,10 +10422,10 @@ prosemirror-keymap@^1.0.0, prosemirror-keymap@^1.1.2, prosemirror-keymap@^1.1.4: prosemirror-state "^1.0.0" w3c-keyname "^2.2.0" -prosemirror-model@^1.0.0, prosemirror-model@^1.1.0, prosemirror-model@^1.13.1, prosemirror-model@^1.8.1: - version "1.14.0" - resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.14.0.tgz#44042a16942dfc5dcd79daf6ec37b0efcfef53c8" - integrity sha512-+9J7YE2qD2lsRgaI5aF7u6LynBoHxb/8sW1gaMKRAhK+yeQ+motBIaxb2GxRWSadDWMOq5haAImSTBo6jDkv2A== +prosemirror-model@^1.0.0, prosemirror-model@^1.1.0, prosemirror-model@^1.14.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.14.1.tgz#d784c67f95a5d66b853e82ff9a87a50353ef9cd5" + integrity sha512-vZcbI+24VloFefKZkDnMaEpipL/vSKKPdFiik4KOnTzq3e6AO7+CAOixZ2G/SsfRaYC965XvnOIEbhIQdgki7w== dependencies: orderedmap "^1.1.0" @@ -10189,7 +10437,7 @@ prosemirror-schema-list@^1.1.4: prosemirror-model "^1.0.0" prosemirror-transform "^1.0.0" -prosemirror-state@^1.0.0, prosemirror-state@^1.2.2, prosemirror-state@^1.3.1, prosemirror-state@^1.3.3: +prosemirror-state@^1.0.0, prosemirror-state@^1.2.2, prosemirror-state@^1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/prosemirror-state/-/prosemirror-state-1.3.4.tgz#4c6b52628216e753fc901c6d2bfd84ce109e8952" integrity sha512-Xkkrpd1y/TQ6HKzN3agsQIGRcLckUMA9u3j207L04mt8ToRgpGeyhbVv0HI7omDORIBHjR29b7AwlATFFf2GLA== @@ -10197,28 +10445,17 @@ prosemirror-state@^1.0.0, prosemirror-state@^1.2.2, prosemirror-state@^1.3.1, pr prosemirror-model "^1.0.0" prosemirror-transform "^1.0.0" -prosemirror-tables@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/prosemirror-tables/-/prosemirror-tables-1.1.1.tgz#ad66300cc49500455cf1243bb129c9e7d883321e" - integrity sha512-LmCz4jrlqQZRsYRDzCRYf/pQ5CUcSOyqZlAj5kv67ZWBH1SVLP2U9WJEvQfimWgeRlIz0y0PQVqO1arRm1+woA== - dependencies: - prosemirror-keymap "^1.1.2" - prosemirror-model "^1.8.1" - prosemirror-state "^1.3.1" - prosemirror-transform "^1.2.1" - prosemirror-view "^1.13.3" - -prosemirror-transform@^1.0.0, prosemirror-transform@^1.1.0, prosemirror-transform@^1.2.1, prosemirror-transform@^1.2.8: +prosemirror-transform@^1.0.0, prosemirror-transform@^1.1.0, prosemirror-transform@^1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/prosemirror-transform/-/prosemirror-transform-1.3.2.tgz#5620ebe7379e6fae4f34ecc881886cb22ce96579" integrity sha512-/G6d/u9Mf6Bv3H1XR8VxhpjmUO75LYmnvj+s3ZfZpakU1hnQbsvCEybml1B3f2IWUAAQRFkbO1PnsbFhLZsYsw== dependencies: prosemirror-model "^1.0.0" -prosemirror-view@^1.0.0, prosemirror-view@^1.1.0, prosemirror-view@^1.13.3, prosemirror-view@^1.16.5: - version "1.18.3" - resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.18.3.tgz#cfc70169cb300e9503d97362463ea870efffd3ef" - integrity sha512-B0zlzjBI0cHadpghyvAA+JgqLGbkNU9Vxywqkfaa+AdmOZUZImBKH6ufhpK+AEZn97WWgSIkr/MT9RmGpaboAA== +prosemirror-view@^1.0.0, prosemirror-view@^1.1.0, prosemirror-view@^1.18.2: + version "1.18.4" + resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.18.4.tgz#179141df117cf414434ade08115f2e233d135f6d" + integrity sha512-6oi62XRK5WxhMX1Amjk5uMsWILUEcFbFF75i09BzpAdI+5glhs7heCaRvKOj4v3YRJ7LJVkOXS9xvjetlE3+pA== dependencies: prosemirror-model "^1.1.0" prosemirror-state "^1.0.0" @@ -11973,68 +12210,13 @@ timsort@^0.3.0: resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= -tippy.js@^6.2.3: +tippy.js@^6.2.3, tippy.js@^6.3.1: version "6.3.1" resolved "https://registry.yarnpkg.com/tippy.js/-/tippy.js-6.3.1.tgz#3788a007be7015eee0fd589a66b98fb3f8f10181" integrity sha512-JnFncCq+rF1dTURupoJ4yPie5Cof978inW6/4S6kmWV7LL9YOSEVMifED3KdrVPEG+Z/TFH2CDNJcQEfaeuQww== dependencies: "@popperjs/core" "^2.8.3" -tiptap-commands@^1.17.1: - version "1.17.1" - resolved "https://registry.yarnpkg.com/tiptap-commands/-/tiptap-commands-1.17.1.tgz#a8974a26d87db57b2fd4fc56a552520c69e43a4a" - integrity sha512-CyGvMD/c6fNer5LThWGtrVMXHAqHn93ivGQpqJ58x3HNZFuoIiF9QTWXAiWbY/4QrG0ANYHKCSe9n5afickTqw== - dependencies: - prosemirror-commands "^1.1.4" - prosemirror-inputrules "^1.1.2" - prosemirror-model "^1.13.1" - prosemirror-schema-list "^1.1.4" - prosemirror-state "^1.3.3" - prosemirror-tables "^1.1.1" - tiptap-utils "^1.13.1" - -tiptap-extensions@^1.34.0: - version "1.35.2" - resolved "https://registry.yarnpkg.com/tiptap-extensions/-/tiptap-extensions-1.35.2.tgz#83dd6ee703ae8c83b58c7608f97253fcc4f1a94c" - integrity sha512-TIMbHVJe0/3aVeTeCmqGbatDkfxduPYFOffNCmuKR+h6oQNzTu6rLVhRzoNqktfxIoi/b44SiDPorTjSN72dCw== - dependencies: - lowlight "^1.17.0" - prosemirror-collab "^1.2.2" - prosemirror-history "^1.1.3" - prosemirror-model "^1.13.1" - prosemirror-state "^1.3.3" - prosemirror-tables "^1.1.1" - prosemirror-transform "^1.2.8" - prosemirror-view "^1.16.5" - tiptap "^1.32.2" - tiptap-commands "^1.17.1" - tiptap-utils "^1.13.1" - -tiptap-utils@^1.13.1: - version "1.13.1" - resolved "https://registry.yarnpkg.com/tiptap-utils/-/tiptap-utils-1.13.1.tgz#f2150ded432465d66aa03a5ab333803415cddd20" - integrity sha512-RoCvMfkdu7fp9u7nsRr1OgsYU8RFjoHKHEKpx075rJ9X0t+j5Vxah9n6QzTTr4yjvcavq22WO2flFacm36zYtA== - dependencies: - prosemirror-model "^1.13.1" - prosemirror-state "^1.3.3" - prosemirror-tables "^1.1.1" - -tiptap@^1.32.0, tiptap@^1.32.2: - version "1.32.2" - resolved "https://registry.yarnpkg.com/tiptap/-/tiptap-1.32.2.tgz#cd6259e853652bfc6860758ff44ebb695d5edd1c" - integrity sha512-5IwVj8nGo8y5V3jbdtoEd7xNUsi8Q0N6WV2Nfs70olqz3fldXkiImBrDhZJ4Anx8vhyP6PIBttrg0prFVmwIvw== - dependencies: - prosemirror-commands "^1.1.4" - prosemirror-dropcursor "^1.3.2" - prosemirror-gapcursor "^1.1.5" - prosemirror-inputrules "^1.1.3" - prosemirror-keymap "^1.1.4" - prosemirror-model "^1.13.1" - prosemirror-state "^1.3.3" - prosemirror-view "^1.16.5" - tiptap-commands "^1.17.1" - tiptap-utils "^1.13.1" - tmp@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.1.0.tgz#ee434a4e22543082e294ba6201dcc6eafefa2877" From 7d653751178a5b97b5ee76c8842b95ea387c5d19 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Fri, 30 Apr 2021 13:48:06 +0200 Subject: [PATCH 11/24] fixup! Upgrade tiptap to version 2 Signed-off-by: Thomas Citharel --- js/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/js/package.json b/js/package.json index 4209fec2b..58f6790dd 100644 --- a/js/package.json +++ b/js/package.json @@ -15,6 +15,7 @@ "@absinthe/socket": "^0.2.1", "@absinthe/socket-apollo-link": "^0.2.1", "@mdi/font": "^5.0.45", + "@tiptap/core": "^2.0.0-beta.41", "@tiptap/extension-blockquote": "^2.0.0-beta.6", "@tiptap/extension-bubble-menu": "^2.0.0-beta.9", "@tiptap/extension-character-count": "^2.0.0-beta.5", From e3753c041e0c808a5b572373ed815a2c5ef3e20d Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Fri, 30 Apr 2021 13:48:10 +0200 Subject: [PATCH 12/24] Fix event address display Signed-off-by: Thomas Citharel --- js/src/components/Event/EventMetadataBlock.vue | 1 - 1 file changed, 1 deletion(-) diff --git a/js/src/components/Event/EventMetadataBlock.vue b/js/src/components/Event/EventMetadataBlock.vue index 5b20bbc01..6128c9e27 100644 --- a/js/src/components/Event/EventMetadataBlock.vue +++ b/js/src/components/Event/EventMetadataBlock.vue @@ -32,7 +32,6 @@ div.eventMetadataBlock { margin-bottom: 1.75rem; p { - flex: 1; overflow: hidden; &.padding-left { From 3afc7c7febb071697e1b773a30716730701fd33c Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Sun, 2 May 2021 19:27:23 +0200 Subject: [PATCH 13/24] Fix mentions Signed-off-by: Thomas Citharel --- js/package.json | 1 + js/src/components/Editor.vue | 532 ++++++++--------------- js/src/components/Editor/Mention.ts | 36 +- js/src/components/Editor/MentionList.vue | 23 +- js/src/components/Editor/style.scss | 58 +++ js/src/types/actor/actor.model.ts | 10 +- js/yarn.lock | 5 + 7 files changed, 291 insertions(+), 374 deletions(-) create mode 100644 js/src/components/Editor/style.scss diff --git a/js/package.json b/js/package.json index 58f6790dd..ceb5ab3c4 100644 --- a/js/package.json +++ b/js/package.json @@ -48,6 +48,7 @@ "leaflet.locatecontrol": "^0.73.0", "lodash": "^4.17.11", "ngeohash": "^0.6.3", + "p-debounce": "^4.0.0", "phoenix": "^1.4.11", "register-service-worker": "^1.7.1", "tippy.js": "^6.2.3", diff --git a/js/src/components/Editor.vue b/js/src/components/Editor.vue index a338f9a18..1ede50769 100644 --- a/js/src/components/Editor.vue +++ b/js/src/components/Editor.vue @@ -6,206 +6,173 @@ id="tiptab-editor" :data-actor-id="currentActor && currentActor.id" > -
- - +
-
- -
- {{ $t("No profiles found") }} -
-
@@ -216,8 +183,6 @@ import { defaultExtensions } from "@tiptap/starter-kit"; import Document from "@tiptap/extension-document"; import Paragraph from "@tiptap/extension-paragraph"; import Text from "@tiptap/extension-text"; -import tippy, { Instance, sticky } from "tippy.js"; -// import { SEARCH_PERSONS } from "../graphql/search"; import { Actor, IActor, IPerson } from "../types/actor"; import CustomImage from "./Editor/Image"; import { UPLOAD_MEDIA } from "../graphql/upload"; @@ -251,19 +216,6 @@ export default class EditorComponent extends Vue { editor: Editor | null = null; - /** - * Editor Suggestions - */ - query!: string | null; - - filteredActors: IActor[] = []; - - suggestionRange!: Record | null; - - navigatedActorIndex = 0; - - popup!: Instance[] | null; - get isDescriptionMode(): boolean { return this.mode === "description" || this.isBasicMode; } @@ -276,14 +228,6 @@ export default class EditorComponent extends Vue { return this.isBasicMode; } - get hasResults(): boolean { - return this.filteredActors.length > 0; - } - - get showSuggestions(): boolean { - return (this.query || this.hasResults) as boolean; - } - get isBasicMode(): boolean { return this.mode === "basic"; } @@ -312,11 +256,11 @@ export default class EditorComponent extends Vue { }), ...defaultExtensions(), ], - onUpdate: ({ editor }) => { - this.$emit("input", editor.getHTML()); + content: this.value, + onUpdate: () => { + this.$emit("input", this.editor?.getHTML()); }, }); - this.editor.commands.setContent(this.value); } @Watch("value") @@ -327,8 +271,10 @@ export default class EditorComponent extends Vue { } } - // eslint-disable-next-line @typescript-eslint/ban-types - showLinkMenu(): Function | undefined { + /** + * Show a popup to get the link from the URL + */ + showLinkMenu(): void { this.$buefy.dialog.prompt({ message: this.$t("Enter the link URL") as string, inputAttrs: { @@ -340,106 +286,11 @@ export default class EditorComponent extends Vue { this.editor.chain().focus().setLink({ href: value }).run(); }, }); - return undefined; - } - - upHandler(): void { - this.navigatedActorIndex = - (this.navigatedActorIndex + this.filteredActors.length - 1) % - this.filteredActors.length; - } - - /** - * navigate to the next item - * if it's the last item, navigate to the first one - */ - downHandler(): void { - this.navigatedActorIndex = - (this.navigatedActorIndex + 1) % this.filteredActors.length; - } - - enterHandler(): void { - const actor = this.filteredActors[this.navigatedActorIndex]; - if (actor) { - this.selectActor(actor); - } - } - - /** - * we have to replace our suggestion text with a mention - * so it's important to pass also the position of your suggestion text - * @param actor IActor - */ - selectActor(actor: IActor): void { - const actorModel = new Actor(actor); - this.insertMention({ - range: this.suggestionRange, - attrs: { - id: actorModel.id, - // usernameWithDomain returns with a @ prefix and tiptap adds one itself - label: actorModel.usernameWithDomain().substring(1), - }, - }); - if (!this.editor) return; - this.editor.commands.focus(); - } - - /** We use this to programatically insert an actor mention when creating a reply to comment */ - replyToComment(comment: IComment): void { - if (!comment.actor) return; - // const actorModel = new Actor(comment.actor); - if (!this.editor) return; - // this.editor.commands.mention({ - // id: actorModel.id, - // label: actorModel.usernameWithDomain().substring(1), - // }); - this.editor.commands.focus(); - } - - /** - * renders a popup with suggestions - * tiptap provides a virtualNode object for using popper.js (or tippy.js) for popups - * @param node - */ - renderPopup(node: Element): void { - if (this.popup) { - return; - } - this.popup = tippy("#mobilizon", { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - getReferenceClientRect: node.getBoundingClientRect, - appendTo: () => document.body, - content: this.$refs.suggestions as HTMLElement, - trigger: "mouseenter", - interactive: true, - sticky: true, // make sure position of tippy is updated when content changes - plugins: [sticky], - showOnCreate: true, - theme: "dark", - placement: "top-start", - inertia: true, - duration: [400, 200], - }) as Instance[]; - } - - destroyPopup(): void { - if (this.popup) { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - this.popup[0].destroy(); - this.popup = null; - } - if (this.observer) { - this.observer.disconnect(); - } } /** * Show a file prompt, upload picture and insert it into editor - * @param command */ - // eslint-disable-next-line @typescript-eslint/ban-types async showImagePrompt(): Promise { const image = await listenFileUpload(); try { @@ -470,14 +321,28 @@ export default class EditorComponent extends Vue { } } - beforeDestroy(): void { + /** + * We use this to programatically insert an actor mention when creating a reply to comment + */ + replyToComment(comment: IComment): void { + if (!comment.actor) return; + // const actorModel = new Actor(comment.actor); if (!this.editor) return; - this.destroyPopup(); - this.editor.destroy(); + // this.editor.commands.mention({ + // id: actorModel.id, + // label: actorModel.usernameWithDomain().substring(1), + // }); + this.editor.commands.focus(); + } + + beforeDestroy(): void { + this.editor?.destroy(); } } diff --git a/js/src/components/Editor/style.scss b/js/src/components/Editor/style.scss new file mode 100644 index 000000000..cced5a400 --- /dev/null +++ b/js/src/components/Editor/style.scss @@ -0,0 +1,58 @@ +/** + * From https://www.tiptap.dev/api/editor/#inject-css + * https://github.com/ueberdosis/tiptap/blob/main/packages/core/src/style.ts + */ + +.ProseMirror { + position: relative; + word-wrap: break-word; + white-space: pre-wrap; + -webkit-font-variant-ligatures: none; + font-variant-ligatures: none; + + & [contenteditable="false"] { + white-space: normal; + } + & [contenteditable="false"] [contenteditable="true"] { + white-space: pre-wrap; + } + pre { + white-space: pre-wrap; + } +} +.ProseMirror-gapcursor { + display: none; + pointer-events: none; + position: absolute; + + &:after { + content: ""; + display: block; + position: absolute; + top: -2px; + width: 20px; + border-top: 1px solid black; + animation: ProseMirror-cursor-blink 1.1s steps(2, start) infinite; + } +} +@keyframes ProseMirror-cursor-blink { + to { + visibility: hidden; + } +} +.ProseMirror-hideselection * { + &::selection { + background: transparent; + } + &::-moz-selection { + background: transparent; + } + caret-color: transparent; +} + +.ProseMirror-focused .ProseMirror-gapcursor { + display: block; +} +.tippy-box[data-animation="fade"][data-state="hidden"] { + opacity: 0; +} diff --git a/js/src/types/actor/actor.model.ts b/js/src/types/actor/actor.model.ts index 42b2680af..df1ed3cae 100644 --- a/js/src/types/actor/actor.model.ts +++ b/js/src/types/actor/actor.model.ts @@ -52,9 +52,7 @@ export class Actor implements IActor { } public displayName(): string { - return this.name != null && this.name !== "" - ? this.name - : this.usernameWithDomain(); + return displayName(this); } } @@ -68,6 +66,12 @@ export function usernameWithDomain(actor: IActor, force = false): string { return actor.preferredUsername; } +export function displayName(actor: IActor): string { + return actor.name != null && actor.name !== "" + ? actor.name + : usernameWithDomain(actor); +} + export function displayNameAndUsername(actor: IActor): string { if (actor.name) { return `${actor.name} (@${usernameWithDomain(actor)})`; diff --git a/js/yarn.lock b/js/yarn.lock index 6bf4aae24..8b3ebc4ad 100644 --- a/js/yarn.lock +++ b/js/yarn.lock @@ -9445,6 +9445,11 @@ os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= +p-debounce@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-debounce/-/p-debounce-4.0.0.tgz#348e3f44489baa9435cc7d807f17b3bb2fb16b24" + integrity sha512-4Ispi9I9qYGO4lueiLDhe4q4iK5ERK8reLsuzH6BPaXn53EGaua8H66PXIFGrW897hwjXp+pVLrm/DLxN0RF0A== + p-each-series@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" From 5afdd80c712462925a87c2d75ed08c6cb1063bd1 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Sun, 2 May 2021 19:27:34 +0200 Subject: [PATCH 14/24] Fix searching for persons Signed-off-by: Thomas Citharel --- lib/graphql/api/search.ex | 2 +- lib/graphql/resolvers/search.ex | 2 +- lib/mobilizon/actors/actors.ex | 7 +++++++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/graphql/api/search.ex b/lib/graphql/api/search.ex index d652dcb68..090eccf1d 100644 --- a/lib/graphql/api/search.ex +++ b/lib/graphql/api/search.ex @@ -46,7 +46,7 @@ defmodule Mobilizon.GraphQL.API.Search do actor_type: [result_type], radius: Map.get(args, :radius), location: Map.get(args, :location), - minimum_visibility: :public + minimum_visibility: Map.get(args, :minimum_visibility, :public) ], page, limit diff --git a/lib/graphql/resolvers/search.ex b/lib/graphql/resolvers/search.ex index b9a5b0b80..9d3a68ffb 100644 --- a/lib/graphql/resolvers/search.ex +++ b/lib/graphql/resolvers/search.ex @@ -9,7 +9,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Search do Search persons """ def search_persons(_parent, %{page: page, limit: limit} = args, _resolution) do - Search.search_actors(args, page, limit, :Person) + Search.search_actors(Map.put(args, :minimum_visibility, :private), page, limit, :Person) end @doc """ diff --git a/lib/mobilizon/actors/actors.ex b/lib/mobilizon/actors/actors.ex index 82e8dbf24..41543270f 100644 --- a/lib/mobilizon/actors/actors.ex +++ b/lib/mobilizon/actors/actors.ex @@ -500,6 +500,10 @@ defmodule Mobilizon.Actors do defp filter_suspended(query, true), do: where(query, [a], a.suspended) defp filter_suspended(query, false), do: where(query, [a], not a.suspended) + @spec filter_out_anonymous_actor_id(Ecto.Query.t(), integer() | String.t()) :: Ecto.Query.t() + defp filter_out_anonymous_actor_id(query, anonymous_actor_id), + do: where(query, [a], a.id != ^anonymous_actor_id) + @doc """ Returns the list of local actors by their username. """ @@ -527,12 +531,15 @@ defmodule Mobilizon.Actors do page \\ nil, limit \\ nil ) do + anonymous_actor_id = Mobilizon.Config.anonymous_actor_id() + Actor |> actor_by_username_or_name_query(term) |> actors_for_location(Keyword.get(options, :location), Keyword.get(options, :radius)) |> filter_by_types(Keyword.get(options, :actor_type, :Group)) |> filter_by_minimum_visibility(Keyword.get(options, :minimum_visibility, :public)) |> filter_suspended(false) + |> filter_out_anonymous_actor_id(anonymous_actor_id) |> Page.build_page(page, limit) end From 73ed0f5e34449ee469e36c8e9f12a6a58735a7f0 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Sun, 2 May 2021 20:41:23 +0200 Subject: [PATCH 15/24] Fixed programatically inserting comments Signed-off-by: Thomas Citharel --- js/src/components/Comment/Comment.vue | 6 ++++++ js/src/components/Editor.vue | 27 +++++++++++++++++---------- js/src/components/Editor/Mention.ts | 5 +++-- 3 files changed, 26 insertions(+), 12 deletions(-) diff --git a/js/src/components/Comment/Comment.vue b/js/src/components/Comment/Comment.vue index 289552a95..8d5810b8f 100644 --- a/js/src/components/Comment/Comment.vue +++ b/js/src/components/Comment/Comment.vue @@ -212,6 +212,7 @@ export default class Comment extends Vue { // See https://github.com/kaorun343/vue-property-decorator/issues/257 @Ref() readonly commentEditor!: EditorComponent & { replyToComment: (comment: IComment) => void; + focus: () => void; }; currentActor!: IPerson; @@ -242,6 +243,11 @@ export default class Comment extends Vue { return; } this.replyTo = true; + if (this.comment.actor) { + this.commentEditor.replyToComment(this.comment.actor); + await this.$nextTick; // wait for the mention to be injected + this.commentEditor.focus(); + } } replyToComment(): void { diff --git a/js/src/components/Editor.vue b/js/src/components/Editor.vue index 1ede50769..e14a7d0d1 100644 --- a/js/src/components/Editor.vue +++ b/js/src/components/Editor.vue @@ -183,12 +183,11 @@ import { defaultExtensions } from "@tiptap/starter-kit"; import Document from "@tiptap/extension-document"; import Paragraph from "@tiptap/extension-paragraph"; import Text from "@tiptap/extension-text"; -import { Actor, IActor, IPerson } from "../types/actor"; +import { IActor, IPerson, usernameWithDomain } from "../types/actor"; import CustomImage from "./Editor/Image"; import { UPLOAD_MEDIA } from "../graphql/upload"; import { listenFileUpload } from "../utils/upload"; import { CURRENT_ACTOR_CLIENT } from "../graphql/actor"; -import { IComment } from "../types/comment.model"; import Mention from "@tiptap/extension-mention"; import MentionOptions from "./Editor/Mention"; import OrderedList from "@tiptap/extension-ordered-list"; @@ -324,15 +323,23 @@ export default class EditorComponent extends Vue { /** * We use this to programatically insert an actor mention when creating a reply to comment */ - replyToComment(comment: IComment): void { - if (!comment.actor) return; - // const actorModel = new Actor(comment.actor); + replyToComment(actor: IActor): void { if (!this.editor) return; - // this.editor.commands.mention({ - // id: actorModel.id, - // label: actorModel.usernameWithDomain().substring(1), - // }); - this.editor.commands.focus(); + this.editor + .chain() + .focus() + .insertContent({ + type: "mention", + attrs: { + id: usernameWithDomain(actor), + }, + }) + .insertContent(" ") + .run(); + } + + focus(): void { + this.editor?.chain().focus("end"); } beforeDestroy(): void { diff --git a/js/src/components/Editor/Mention.ts b/js/src/components/Editor/Mention.ts index 7e237afd5..b025e49ed 100644 --- a/js/src/components/Editor/Mention.ts +++ b/js/src/components/Editor/Mention.ts @@ -63,8 +63,9 @@ const mentionOptions: Partial = { }); }, onKeyDown(props: any) { - const ref = component.ref as typeof MentionList; - return ref?.onKeyDown(props); + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + return component.ref?.onKeyDown(props); }, onExit() { popup[0].destroy(); From a841469ce806ae525d746d6cc622ef0ed75afeff Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Mon, 3 May 2021 09:32:25 +0200 Subject: [PATCH 16/24] Upgrade deps Signed-off-by: Thomas Citharel --- js/yarn.lock | 45 +++++++++++++++++++++++++++++---------------- mix.lock | 2 +- 2 files changed, 30 insertions(+), 17 deletions(-) diff --git a/js/yarn.lock b/js/yarn.lock index 8b3ebc4ad..3edda81ed 100644 --- a/js/yarn.lock +++ b/js/yarn.lock @@ -2431,9 +2431,9 @@ integrity sha512-LIZMuJk38pk9U9Ur4YzHjlIyMuxPlACdBIHH9/nGYVTsaGKOSnSuELiE8vS9wa+dJpIYspYUOqk+L1Q4pgHQHQ== "@vue/test-utils@^1.1.0": - version "1.1.4" - resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-1.1.4.tgz#a9acb32ea1fa4535b2e1ce5ca100bceb4fade2db" - integrity sha512-9BeL8IqGvJKy553lq/07rhYURQkpS/k+j19rJ/4eDpGJk7z872M0YrBWFhjS14yMKlvYVYOCfWnVIXyrAx0xNw== + version "1.2.0" + resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-1.2.0.tgz#3bc8c17ed549157275f0aec6b95da40887f7297f" + integrity sha512-poBTLqeJYNq1TXVhtVfnY8vELUVOFdJY8KZZoUuaAkIqPTWsxonU1M8nMWpZT+xEMrM+49+YcuEqtMHVD9Q9gw== dependencies: dom-event-types "^1.0.0" lodash "^4.17.15" @@ -4376,9 +4376,9 @@ core-js@^2.4.0, core-js@^2.5.0: integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== core-js@^3.6.4: - version "3.11.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.11.0.tgz#05dac6aa70c0a4ad842261f8957b961d36eb8926" - integrity sha512-bd79DPpx+1Ilh9+30aT5O1sgpQd4Ttg8oqkqi51ZzhedMM1omD2e6IOF48Z/DzDCZ2svp49tN/3vneTK6ZBkXw== + version "3.11.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.11.1.tgz#f920392bf8ed63a0ec8e4e729857bfa3d121c525" + integrity sha512-k93Isqg7e4txZWMGNYwevZL9MiogLk8pd1PtwrmFmi8IBq4GXqUaVW/a33Llt6amSI36uSjd0GWwc9pTT9ALlQ== core-js@^3.6.5: version "3.10.1" @@ -6513,9 +6513,11 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6 integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== graphql-tag@^2.10.3: - version "2.11.0" - resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.11.0.tgz#1deb53a01c46a7eb401d6cb59dec86fa1cccbffd" - integrity sha512-VmsD5pJqWJnQZMUeRwrDhfgoyqcfwEkvtpANqcoUG8/tOLkwNgU9mzub/Mc78OJMhHjx7gfAMTxzdG43VGg3bA== + version "2.12.4" + resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.12.4.tgz#d34066688a4f09e72d6f4663c74211e9b4b7c4bf" + integrity sha512-VV1U4O+9x99EkNpNmCUV5RZwq6MnK4+pGbRYWG+lA/m3uo7TSqJF81OkcOP148gFP6fzdl7JWYBrwWVTS9jXww== + dependencies: + tslib "^2.1.0" graphql-tag@^2.12.0: version "2.12.3" @@ -7980,7 +7982,18 @@ js-base64@^2.1.9: resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.6.4.tgz#f4e686c5de1ea1f867dbcad3d46d969428df98c4" integrity sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ== -js-beautify@^1.6.12, js-beautify@^1.6.14: +js-beautify@^1.6.12: + version "1.13.13" + resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.13.13.tgz#756907d1728f329f2b84c42efd56ad17514620bf" + integrity sha512-oH+nc0U5mOAqX8M5JO1J0Pw/7Q35sAdOsM5W3i87pir9Ntx6P/5Gx1xLNoK+MGyvHk4rqqRCE4Oq58H6xl2W7A== + dependencies: + config-chain "^1.1.12" + editorconfig "^0.15.3" + glob "^7.1.3" + mkdirp "^1.0.4" + nopt "^5.0.0" + +js-beautify@^1.6.14: version "1.13.11" resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.13.11.tgz#3fc59d74d4fcb03268a559220da26f5d8a2d5246" integrity sha512-+3CW1fQqkV7aXIvprevNYfSrKrASQf02IstAZCVSNh+/IS5ciaOtE7erfjyowdMYZZmP2A7SMFkcJ28qCl84+A== @@ -11210,9 +11223,9 @@ sass-loader@^8.0.2: semver "^6.3.0" sass@^1.29.0: - version "1.32.11" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.32.11.tgz#b236b3ea55c76602c2ef2bd0445f0db581baa218" - integrity sha512-O9tRcob/fegUVSIV1ihLLZcftIOh0AF1VpKgusUfLqnb2jQ0GLDwI5ivv1FYWivGv8eZ/AwntTyTzjcHu0c/qw== + version "1.32.12" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.32.12.tgz#a2a47ad0f1c168222db5206444a30c12457abb9f" + integrity sha512-zmXn03k3hN0KaiVTjohgkg98C3UowhL1/VSGdj4/VAAiMKGQOE80PFPxFP2Kyq0OUskPKcY5lImkhBKEHlypJA== dependencies: chokidar ">=3.0.0 <4.0.0" @@ -12888,9 +12901,9 @@ vue-i18n-extract@^1.0.2: js-yaml "^3.14.0" vue-i18n@^8.14.0: - version "8.24.3" - resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-8.24.3.tgz#2233ae11ec59e8204df58a28fc41afe9754e3b41" - integrity sha512-uKAYzGbwGIJndY7JwhQwIGi1uyvErWkBfFwooOtjcNnIfMbAR49ad5dT/MiykrJ9pCcgvnocFjFsNLtTzyW+rg== + version "8.24.4" + resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-8.24.4.tgz#b158614c1df7db183d9cadddbb73e1d540269492" + integrity sha512-RZE94WUAGxEiBAANxQ0pptbRwDkNKNSXl3fnJslpFOxVMF6UkUtMDSuYGuW2blDrVgweIXVpethOVkYoNNT9xw== vue-jest@^3.0.5: version "3.0.7" diff --git a/mix.lock b/mix.lock index fe5899cbc..23c72fb10 100644 --- a/mix.lock +++ b/mix.lock @@ -51,7 +51,7 @@ "excoveralls": {:hex, :excoveralls, "0.14.0", "4b562d2acd87def01a3d1621e40037fdbf99f495ed3a8570dfcf1ab24e15f76d", [:mix], [{:hackney, "~> 1.16", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "94f17478b0cca020bcd85ce7eafea82d2856f7ed022be777734a2f864d36091a"}, "exgravatar": {:hex, :exgravatar, "2.0.2", "638412896170409da114f98947d3f8d4f38e851b0e329c1cc4cd324d5e2ea081", [:mix], [], "hexpm", "f3deb5baa6fcf354a965d794ee73a956d95f1f79f41bddf69800c713cfb014a1"}, "exjsx": {:hex, :exjsx, "4.0.0", "60548841e0212df401e38e63c0078ec57b33e7ea49b032c796ccad8cde794b5c", [:mix], [{:jsx, "~> 2.8.0", [hex: :jsx, repo: "hexpm", optional: false]}], "hexpm", "32e95820a97cffea67830e91514a2ad53b888850442d6d395f53a1ac60c82e07"}, - "exvcr": {:hex, :exvcr, "0.12.2", "e8fc0beeb62924d3b755b2718a161b13cb4ed53311378e5e587606c15190c8ed", [:mix], [{:exactor, "~> 2.2", [hex: :exactor, repo: "hexpm", optional: false]}, {:exjsx, "~> 4.0", [hex: :exjsx, repo: "hexpm", optional: false]}, {:httpoison, "~> 1.0", [hex: :httpoison, repo: "hexpm", optional: true]}, {:httpotion, "~> 3.1", [hex: :httpotion, repo: "hexpm", optional: true]}, {:ibrowse, "4.4.0", [hex: :ibrowse, repo: "hexpm", optional: true]}, {:meck, "~> 0.8", [hex: :meck, repo: "hexpm", optional: false]}], "hexpm", "63776555a1bd003ff60635aead47461ced1ff985c66427421ad344e317ba983c"}, + "exvcr": {:hex, :exvcr, "0.12.3", "eca9e0dc8727eed65621c334d34a9640760b40f748a871728cbdbe534d336c11", [:mix], [{:exactor, "~> 2.2", [hex: :exactor, repo: "hexpm", optional: false]}, {:exjsx, "~> 4.0", [hex: :exjsx, repo: "hexpm", optional: false]}, {:httpoison, "~> 1.0", [hex: :httpoison, repo: "hexpm", optional: true]}, {:httpotion, "~> 3.1", [hex: :httpotion, repo: "hexpm", optional: true]}, {:ibrowse, "4.4.0", [hex: :ibrowse, repo: "hexpm", optional: true]}, {:meck, "~> 0.8", [hex: :meck, repo: "hexpm", optional: false]}], "hexpm", "668bd08fad65bb21d4c9bb46f1747e5e01b5734d6387fa792ce0f2eb81b17b2b"}, "fast_html": {:hex, :fast_html, "2.0.4", "4910ee49f2f6b19692e3bf30bf97f1b6b7dac489cd6b0f34cd0fe3042c56ba30", [:make, :mix], [{:elixir_make, "~> 0.4", [hex: :elixir_make, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 0.1.0", [hex: :nimble_pool, repo: "hexpm", optional: false]}], "hexpm", "3bb49d541dfc02ad5e425904f53376d758c09f89e521afc7d2b174b3227761ea"}, "fast_sanitize": {:hex, :fast_sanitize, "0.2.2", "3cbbaebaea6043865dfb5b4ecb0f1af066ad410a51470e353714b10c42007b81", [:mix], [{:fast_html, "~> 2.0", [hex: :fast_html, repo: "hexpm", optional: false]}, {:plug, "~> 1.8", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "69f204db9250afa94a0d559d9110139850f57de2b081719fbafa1e9a89e94466"}, "file_info": {:hex, :file_info, "0.0.4", "2e0e77f211e833f38ead22cb29ce53761d457d80b3ffe0ffe0eb93880b0963b2", [:mix], [{:mimetype_parser, "~> 0.1.2", [hex: :mimetype_parser, repo: "hexpm", optional: false]}], "hexpm", "50e7ad01c2c8b9339010675fe4dc4a113b8d6ca7eddce24d1d74fd0e762781a5"}, From 8df4e6ed52b06e94dd2f9e43e46d80028baf345a Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Fri, 30 Apr 2021 11:57:32 +0000 Subject: [PATCH 17/24] Translated using Weblate (French) Currently translated at 100.0% (245 of 245 strings) Translation: Mobilizon/Backend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/fr/ --- priv/gettext/fr/LC_MESSAGES/default.po | 523 +++++++++++++------------ 1 file changed, 269 insertions(+), 254 deletions(-) diff --git a/priv/gettext/fr/LC_MESSAGES/default.po b/priv/gettext/fr/LC_MESSAGES/default.po index bc8f2a79b..513b808b0 100644 --- a/priv/gettext/fr/LC_MESSAGES/default.po +++ b/priv/gettext/fr/LC_MESSAGES/default.po @@ -10,1407 +10,1422 @@ msgid "" msgstr "" "Project-Id-Version: \n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2021-03-09 19:33+0100\n" -"Last-Translator: Alexandra \n" -"Language-Team: French \n" +"PO-Revision-Date: 2021-05-01 10:59+0000\n" +"Last-Translator: Thomas Citharel \n" +"Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Poedit 2.4.2\n" +"X-Generator: Weblate 4.6\n" -#, elixir-format #: lib/web/templates/email/password_reset.html.eex: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." -#, elixir-format #: lib/web/templates/email/report.html.eex:74 +#, elixir-format msgid "%{title} by %{creator}" msgstr "%{title} par %{creator}" -#, elixir-format #: lib/web/templates/email/registration_confirmation.html.eex:58 +#, elixir-format msgid "Activate my account" msgstr "Activer mon compte" -#, elixir-format #: lib/web/templates/email/email.html.eex:117 #: lib/web/templates/email/email.text.eex:9 +#, elixir-format msgid "Ask the community on Framacolibri" msgstr "Demander à la communauté sur Framacolibri" -#, elixir-format #: lib/web/templates/email/report.text.eex:15 +#, elixir-format msgid "Comments" msgstr "Commentaires" -#, elixir-format #: lib/web/templates/email/report.html.eex:72 #: lib/web/templates/email/report.text.eex:11 +#, elixir-format msgid "Event" msgstr "Événement" -#, elixir-format #: lib/web/email/user.ex:48 +#, elixir-format msgid "Instructions to reset your password on %{instance}" msgstr "Instructions pour réinitialiser votre mot de passe sur %{instance}" -#, elixir-format #: lib/web/templates/email/report.text.eex:21 +#, elixir-format msgid "Reason" msgstr "Raison" -#, elixir-format #: lib/web/templates/email/password_reset.html.eex:61 +#, elixir-format msgid "Reset Password" msgstr "Réinitialiser mon mot de passe" -#, elixir-format #: lib/web/templates/email/password_reset.html.eex: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." -#, elixir-format #: 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}" -#, elixir-format #: lib/web/email/admin.ex:24 +#, elixir-format msgid "New report on Mobilizon instance %{instance}" msgstr "Nouveau signalement sur l'instance Mobilizon %{instance}" -#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:51 #: lib/web/templates/email/before_event_notification.text.eex:4 +#, elixir-format msgid "Go to event page" msgstr "Aller à la page de l'événement" -#, elixir-format #: lib/web/templates/email/report.text.eex:1 +#, elixir-format msgid "New report from %{reporter} on %{instance}" msgstr "Nouveau signalement sur %{instance}" -#, elixir-format #: lib/web/templates/email/event_participation_approved.text.eex:1 +#, elixir-format msgid "Participation approved" msgstr "Participation approuvée" -#, elixir-format #: lib/web/templates/email/password_reset.html.eex:13 #: lib/web/templates/email/password_reset.text.eex:1 +#, elixir-format msgid "Password reset" msgstr "Réinitialisation du mot de passe" -#, elixir-format #: 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." -#, elixir-format #: 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." -#, elixir-format #: lib/web/email/participation.ex:112 +#, elixir-format msgid "Your participation to event %{title} has been approved" msgstr "Votre participation à l'événement %{title} a été approuvée" -#, elixir-format #: lib/web/email/participation.ex:70 +#, elixir-format msgid "Your participation to event %{title} has been rejected" msgstr "Votre participation à l'événement %{title} a été rejetée" -#, elixir-format #: lib/web/email/event.ex:37 +#, elixir-format msgid "Event %{title} has been updated" msgstr "L'événement %{title} a été mis à jour" -#, elixir-format #: lib/web/templates/email/event_updated.text.eex:15 +#, elixir-format msgid "New title: %{title}" msgstr "Nouveau titre : %{title}" -#, elixir-format #: 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}." -#, elixir-format #: lib/web/templates/email/email.html.eex:85 +#, elixir-format msgid "Warning" msgstr "Attention" -#, elixir-format #: lib/web/email/participation.ex:135 +#, elixir-format msgid "Confirm your participation to event %{title}" msgstr "Confirmer ma participation à l'événement %{title}" -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:74 +#, elixir-format msgctxt "terms" msgid "An internal user ID" msgstr "Une identité utilisateur·ice interne" -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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 :" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:9 +#, elixir-format msgctxt "terms" msgid "Basic account information" msgstr "Informations basiques du compte" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:25 +#, elixir-format msgctxt "terms" msgid "Do not share any dangerous information over Mobilizon." msgstr "Ne partagez aucune information sensible à l'aide de Mobilizon." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:90 +#, elixir-format msgctxt "terms" msgid "Do we disclose any information to outside parties?" msgstr "Partageons-nous des informations à des tiers ?" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:68 +#, elixir-format msgctxt "terms" msgid "Do we use cookies?" msgstr "Utilisons-nous des cookies ?" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:51 +#, elixir-format msgctxt "terms" msgid "How do we protect your information?" msgstr "Comment protégeons-nous vos informations ?" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:29 +#, elixir-format msgctxt "terms" msgid "IPs and other metadata" msgstr "Adresses IP et autres métadonnées" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:17 +#, elixir-format msgctxt "terms" msgid "Published events and comments" msgstr "Événements publiés et commentaires" -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:76 +#, elixir-format msgctxt "terms" msgid "Tokens to authenticate you" msgstr "Jetons pour vous identifier" -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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." -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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 :" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:58 +#, elixir-format msgctxt "terms" msgid "We will make a good faith effort to:" msgstr "Nous mettrons tout en possible pour :" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:35 +#, elixir-format msgctxt "terms" msgid "What do we use your information for?" msgstr "Comment utilisons-nous vos informations ?" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:57 +#, elixir-format msgctxt "terms" msgid "What is our data retention policy?" msgstr "Quelle est notre politique de conservation des données ?" -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:115 +#, elixir-format msgctxt "terms" msgid "Changes to our Privacy Policy" msgstr "Modifications de notre politique de confidentialité" -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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 (General Data Protection Regulation) 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 (Règlement général sur la protection des données), n'utilisez pas ce site." -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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 (Children's Online Privacy Protection Act) 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 (Children's Online Privacy Protection Act) n'utilisez pas ce site." -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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." -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:103 +#, elixir-format msgctxt "terms" msgid "Site usage by children" -msgstr "Utilisation du site par les enfants" +msgstr "Utilisation du site par des mineurs" -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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." -msgstr "L'adresse électronique que vous fournissez peut être utilisée pour vous envoyer des informations, des mises à jour et des notifications concernant d'autres personnes qui interagissent avec votre contenu ou vous envoient des messages et pour répondre à des demandes, et/ou à d'autres requêtes ou 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." -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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." -msgstr "Pour aider à la modération de la communauté, par exemple en comparant votre adresse IP avec d'autres adresses connues afin de déterminer s'il y a contournement d'un bannissement ou d'autres 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." -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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." -msgstr "Fournir la fonctionnalité de base de Mobilizon. Selon la politique de cette instance, vous ne pourrez interagir avec le contenu d'autres personnes et publier votre propre contenu que si vous êtes connecté." +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é." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:6 +#, elixir-format msgctxt "terms" msgid "What information do we collect?" msgstr "Quelles informations collectons-nous ?" -#, elixir-format #: lib/web/email/user.ex:176 +#, elixir-format msgid "Mobilizon on %{instance}: confirm your email address" msgstr "Mobilizon sur %{instance} : confirmez votre adresse email" -#, elixir-format #: lib/web/email/user.ex:152 +#, elixir-format msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon sur %{instance} : adresse email modifiée" -#, elixir-format #: lib/web/email/notification.ex:47 +#, 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" -#, elixir-format #: lib/web/templates/email/on_day_notification.html.eex:38 #: lib/web/templates/email/on_day_notification.text.eex:4 +#, elixir-format 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 :" -#, elixir-format #: 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}" -#, elixir-format #: lib/web/templates/email/group_invite.html.eex:13 #: lib/web/templates/email/group_invite.text.eex:1 +#, elixir-format msgid "Come along!" msgstr "Rejoignez-nous !" -#, elixir-format #: lib/web/email/notification.ex:24 +#, elixir-format msgid "Don't forget to go to %{title}" msgstr "N'oubliez pas de vous rendre à %{title}" -#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:38 #: lib/web/templates/email/before_event_notification.text.eex:3 +#, elixir-format msgid "Get ready for %{title}" msgstr "Préparez vous pour %{title}" -#, elixir-format #: lib/web/templates/email/group_invite.html.eex:59 +#, elixir-format msgid "See my groups" msgstr "Voir mes groupes" -#, elixir-format #: lib/web/templates/email/group_invite.html.eex:45 #: lib/web/templates/email/group_invite.text.eex:5 +#, elixir-format msgid "To accept this invitation, head over to your groups." msgstr "Pour accepter cette invitation, rendez-vous dans vos groupes." -#, elixir-format #: 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}" -#, elixir-format #: lib/web/email/group.ex:33 +#, elixir-format msgid "You have been invited by %{inviter} to join group %{group}" msgstr "Vous avez été invité par %{inviter} à rejoindre le groupe %{group}" -#, elixir-format #: lib/web/email/notification.ex:71 +#, 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" -#, elixir-format #: lib/web/email/notification.ex:93 +#, 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" -#, elixir-format #: lib/web/templates/email/notification_each_week.html.eex:38 #: lib/web/templates/email/notification_each_week.text.eex:3 +#, elixir-format 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 :" -#, elixir-format #: lib/service/metadata/utils.ex:52 +#, 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." -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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." -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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." -#, elixir-format #: lib/web/templates/api/terms.html.eex:23 +#, elixir-format msgctxt "terms" msgid "Accepting these Terms" msgstr "Acceptation de ces Conditions" -#, elixir-format #: lib/web/templates/api/terms.html.eex:27 +#, elixir-format msgctxt "terms" msgid "Changes to these Terms" msgstr "Modifications de ces Conditions d'Utilisation" -#, elixir-format #: lib/web/templates/api/terms.html.eex: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." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 :" -#, elixir-format #: lib/web/templates/api/terms.html.eex: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." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 ;" -#, elixir-format #: lib/web/templates/api/terms.html.eex: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é ;" -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 ;" -#, elixir-format #: lib/web/templates/api/terms.html.eex:42 +#, elixir-format msgctxt "terms" msgid "Creating Accounts" msgstr "Création de compte" -#, elixir-format #: lib/web/templates/api/terms.html.eex:89 +#, elixir-format msgctxt "terms" msgid "Entire Agreement" msgstr "Accord complet" -#, elixir-format #: lib/web/templates/api/terms.html.eex:92 +#, elixir-format msgctxt "terms" msgid "Feedback" msgstr "Commentaires" -#, elixir-format #: lib/web/templates/api/terms.html.eex:83 +#, elixir-format msgctxt "terms" msgid "Hyperlinks and Third Party Content" msgstr "Liens hypertexte et contenu tiers" -#, elixir-format #: lib/web/templates/api/terms.html.eex: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." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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é ;" -#, elixir-format #: lib/web/templates/api/terms.html.eex: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." -#, elixir-format #: lib/web/templates/api/terms.html.eex:39 +#, elixir-format msgctxt "terms" msgid "Privacy Policy" msgstr "Politique de confidentialité" -#, elixir-format #: lib/web/templates/api/terms.html.eex:95 +#, elixir-format msgctxt "terms" msgid "Questions & Contact Information" msgstr "Questions et coordonnées" -#, elixir-format #: lib/web/templates/api/terms.html.eex:87 +#, elixir-format msgctxt "terms" msgid "Termination" msgstr "Résiliation" -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 ;" -#, elixir-format #: lib/web/templates/api/terms.html.eex:47 +#, elixir-format msgctxt "terms" msgid "Your Content & Conduct" msgstr "Votre contenu et votre conduite" -#, elixir-format #: lib/web/templates/api/terms.html.eex:84 +#, elixir-format msgctxt "terms" msgid "%{instance_name} 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 %{instance_name} of the site. Use of any such linked website is at the user's own risk." msgstr "%{instance_name} 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 %{instance_name} du site. L'utilisation de tout site web lié est aux risques et périls de l'utilisateur·ice." -#, elixir-format #: lib/web/templates/api/terms.html.eex:68 +#, elixir-format msgctxt "terms" msgid "Finally, your use of the Service is also subject to acceptance of the instance's own specific rules 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 règles spécifiques de l'instance 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." -#, elixir-format #: lib/web/templates/api/terms.html.eex:81 +#, elixir-format msgctxt "terms" msgid "For full details about the Mobilizon software see here." msgstr "Pour plus de détails sur le logiciel Mobilizon voir ici." -#, elixir-format #: lib/web/templates/api/terms.html.eex:18 +#, elixir-format msgctxt "terms" msgid "Here are the important things you need to know about accessing and using the %{instance_name} (%{instance_url}) 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 %{instance_name} (%{instance_url}) (conjointement, \"Service\"). Ce sont nos conditions de service (\"Conditions\"). Veuillez les lire attentivement." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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." -#, elixir-format #: lib/web/templates/api/terms.html.eex:53 +#, elixir-format msgctxt "terms" msgid "In order to make %{instance_name} 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 %{instance_name} 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 :" -#, elixir-format #: lib/web/templates/api/terms.html.eex: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" -#, elixir-format #: lib/web/templates/api/terms.html.eex: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." -#, elixir-format #: lib/web/templates/api/terms.html.eex:90 +#, elixir-format msgctxt "terms" msgid "These Terms constitute the entire agreement between you and %{instance_name} regarding the use of the Service, superseding any prior agreements between you and %{instance_name} relating to your use of the Service." msgstr "Les présentes Conditions constituent l'intégralité de l'accord entre vous et %{instance_name} concernant l'utilisation du Service, remplaçant tout accord préalable entre vous et %{instance_name} relatif à votre utilisation du Service." -#, elixir-format #: lib/web/templates/api/terms.html.eex:80 +#, elixir-format msgctxt "terms" msgid "This Service runs on a Mobilizon instance. This source code is licensed under an AGPLv3 license 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 licence AGPLv3 ce qui signifie que vous êtes autorisé et même encouragé à prendre le code source, le modifier et l'utiliser." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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}" -#, elixir-format #: lib/web/templates/api/terms.html.eex:79 +#, elixir-format msgctxt "terms" msgid "Source code" msgstr "Code source" -#, elixir-format #: lib/web/templates/api/terms.html.eex:93 +#, elixir-format msgctxt "terms" msgid "We love feedback. Please let us know what you think of the Service, these Terms and, in general, %{instance_name}." 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 %{instance_name}." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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." -#, elixir-format #: lib/web/templates/api/terms.html.eex:6 +#, elixir-format msgctxt "terms" msgid "%{instance_name} will not use or transmit or resell your personal data" msgstr "%{instance_name} n'utilisera pas ni ne transmettra ou revendra vos données" -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 its contributors 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 ses contributeur·ices." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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." -#, elixir-format #: lib/web/templates/api/terms.html.eex:98 +#, elixir-format msgctxt "terms" msgid "Originally adapted from the Diaspora* and App.net privacy policies, also licensed under CC BY-SA." msgstr "Adaptée à l'origine des politiques de confidentialité de Diaspora* et App.net, aussi sous licence CC BY-SA." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:119 +#, elixir-format msgctxt "terms" msgid "Originally adapted from the Mastodon and Discourse privacy policies, also licensed under CC BY-SA." msgstr "Adaptée à l'origine des politiques de confidentialité de Mastodon et Discourse, aussi sous licence CC BY-SA." -#, elixir-format #: lib/web/templates/api/terms.html.eex:3 +#, elixir-format msgctxt "terms" msgid "Short version" msgstr "Version courte" -#, elixir-format #: lib/web/templates/api/terms.html.eex: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" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:118 +#, elixir-format msgctxt "terms" msgid "This document is licensed under CC BY-SA. It was last updated June 18, 2020." msgstr "Ce document est sous licence CC BY-SA. La dernière mise à jour date du 18 juin 2020." -#, elixir-format #: lib/web/templates/api/terms.html.eex:97 +#, elixir-format msgctxt "terms" msgid "This document is licensed under CC BY-SA. It was last updated June 22, 2020." msgstr "Ce document est sous licence CC BY-SA. La dernière mise à jour date du 22 juin 2020." -#, elixir-format #: lib/web/templates/api/terms.html.eex:8 +#, elixir-format msgctxt "terms" msgid "You must respect other people and %{instance_name}'s rules when using the service" msgstr "Vous devez respecter les autres et les règles de %{instance_name} lorsque vous utilisez le service" -#, elixir-format #: lib/web/templates/api/terms.html.eex:7 +#, elixir-format msgctxt "terms" msgid "You must respect the law when using %{instance_name}" msgstr "Vous devez respecter la loi lorsque vous utilisez %{instance_name}" -#, elixir-format #: lib/web/templates/api/terms.html.eex:5 +#, elixir-format msgctxt "terms" msgid "Your content is yours" msgstr "Votre contenu vous appartient" -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:51 +#, elixir-format msgid "Confirm my e-mail address" msgstr "Confirmer mon adresse email" -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:13 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:1 +#, elixir-format msgid "Confirm your e-mail" msgstr "Confirmez votre adresse email" -#, elixir-format #: 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 :" -#, elixir-format #: lib/web/templates/email/email.html.eex:114 #: lib/web/templates/email/email.text.eex:8 +#, elixir-format msgid "Need help? Is something not working as expected?" msgstr "Besoin d'aide ? Quelque chose ne fonctionne pas correctement ?" -#, elixir-format #: lib/web/templates/email/registration_confirmation.html.eex:38 +#, elixir-format msgid "You created an account on %{host} with this email address. You are one click away from activating it." msgstr "Vous avez créé un compte sur %{host} avec cette adresse email. Vous êtes à un clic de l'activer." -#, elixir-format #: lib/web/templates/email/report.html.eex:13 +#, elixir-format msgid "New report on %{instance}" msgstr "Nouveau signalement sur %{instance}" -#, elixir-format #: lib/web/templates/email/email_changed_old.html.eex:38 +#, elixir-format msgid "The email address for your account on %{host} is being changed to:" msgstr "L'adresse email pour votre compte sur %{host} est en train d'être changée pour :" -#, elixir-format #: lib/web/templates/email/password_reset.html.eex:38 +#, 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}." -#, elixir-format #: 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." -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:63 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.eex:133 #: lib/web/templates/email/event_updated.text.eex:24 lib/web/templates/email/notification_each_week.html.eex:70 #: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.eex:70 #: lib/web/templates/email/on_day_notification.text.eex:14 +#, elixir-format 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 »." -#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:38 #: lib/web/templates/email/pending_participation_notification.text.eex:4 +#, elixir-format msgid "You have one pending attendance request to process:" msgid_plural "You have %{number_participation_requests} attendance requests to process:" msgstr[0] "Vous avez une demande de participation en attente à traiter :" msgstr[1] "Vous avez %{number_participation_requests} demandes de participation en attente à traiter :" -#, elixir-format #: lib/web/templates/email/email.text.eex:11 +#, elixir-format msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} est une instance Mobilizon." -#, elixir-format #: lib/web/templates/email/email.html.eex:142 +#, elixir-format msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} est une instance Mobilizon." -#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:13 #: lib/web/templates/email/pending_participation_notification.text.eex:1 +#, elixir-format msgid "A request is pending!" msgstr "Une requête est en attente !" -#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:13 #: lib/web/templates/email/before_event_notification.text.eex:1 +#, elixir-format msgid "An event is upcoming!" msgstr "Un événement est à venir !" -#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:13 #: lib/web/templates/email/email_changed_new.text.eex:1 +#, elixir-format msgid "Confirm new email" msgstr "Confirmez votre adresse email" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:84 +#, elixir-format msgid "End" msgstr "Fin" -#, elixir-format #: lib/web/templates/email/event_updated.text.eex:21 +#, elixir-format msgid "End %{ends_on}" msgstr "Fin %{ends_on}" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:13 #: lib/web/templates/email/event_updated.text.eex:1 +#, elixir-format msgid "Event update!" msgstr "Événement mis à jour !" -#, elixir-format #: lib/web/templates/email/report.html.eex:88 +#, elixir-format msgid "Flagged comments" msgstr "Commentaires signalés" -#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:45 #: lib/web/templates/email/event_participation_approved.text.eex:7 +#, elixir-format 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 !" -#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex: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 %{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." -#, elixir-format #: 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 à :" -#, elixir-format #: lib/web/templates/email/email_changed_old.html.eex:62 #: lib/web/templates/email/email_changed_old.text.eex:5 +#, elixir-format msgid "If you did not trigger this change yourself, it is likely that someone has gained access to your %{host} account. Please log in and change your password immediately. If you cannot login, contact the admin on %{host}." msgstr "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}." -#, elixir-format #: 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." -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:70 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.eex:45 +#, elixir-format 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." -#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:63 #: lib/web/templates/email/before_event_notification.text.eex:6 +#, elixir-format 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 »." -#, elixir-format #: lib/web/templates/email/email.html.eex:143 #: lib/web/templates/email/email.text.eex:11 +#, elixir-format msgid "Learn more about Mobilizon here!" msgstr "En apprendre plus à propos de Mobilizon ici !" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:94 +#, elixir-format msgid "Location" msgstr "Localisation" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:104 +#, elixir-format msgid "Location address was removed" msgstr "L'adresse physique a été enlevée" -#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:51 #: lib/web/templates/email/pending_participation_notification.text.eex:6 +#, elixir-format msgid "Manage pending requests" msgstr "Gérer les demandes de participation en attente" -#, elixir-format #: lib/web/templates/email/registration_confirmation.html.eex:13 #: lib/web/templates/email/registration_confirmation.text.eex:1 +#, elixir-format msgid "Nearly there!" msgstr "Vous y êtes presque !" -#, elixir-format #: lib/web/templates/email/email_changed_old.html.eex:13 #: lib/web/templates/email/email_changed_old.text.eex:1 +#, elixir-format msgid "New email confirmation" msgstr "Confirmation de nouvel e-mail" -#, elixir-format #: lib/web/templates/email/report.html.eex:106 +#, elixir-format msgid "Reasons for report" msgstr "Raisons du signalement" -#, elixir-format #: lib/web/templates/email/report.html.eex:39 +#, elixir-format msgid "Someone on %{instance} reported the following content for you to analyze:" msgstr "Une personne de %{instance} a signalé le contenu suivant :" -#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.eex:13 #: lib/web/templates/email/event_participation_rejected.text.eex:1 +#, elixir-format msgid "Sorry! You're not going." msgstr "Désolé ! Vous n'y allez pas." -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:74 +#, elixir-format msgid "Start" msgstr "Début" -#, elixir-format #: lib/web/templates/email/event_updated.text.eex:18 +#, elixir-format msgid "Start %{begins_on}" msgstr "Début %{begins_on}" -#, elixir-format #: 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." -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:55 #: lib/web/templates/email/event_updated.text.eex:11 +#, elixir-format msgid "This event has been cancelled by its organizers. Sorry!" msgstr "Cet événement a été annulé par ses organisateur·ices. Désolé !" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:51 #: lib/web/templates/email/event_updated.text.eex:7 +#, elixir-format msgid "This event has been confirmed" msgstr "L'événement a été confirmé" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:53 #: lib/web/templates/email/event_updated.text.eex:9 +#, elixir-format 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é." -#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.eex:45 #: lib/web/templates/email/event_participation_rejected.text.eex:7 +#, elixir-format msgid "Unfortunately, the organizers rejected your request." msgstr "Malheureusement, les organisateur⋅ices ont rejeté votre demande de participation." -#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:51 +#, elixir-format msgid "Verify your email address" msgstr "Vérifier l'adresse email" -#, elixir-format #: lib/web/templates/email/report.html.eex:126 +#, elixir-format msgid "View report" msgstr "Voir le signalement" -#, elixir-format #: lib/web/templates/email/report.text.eex:24 +#, elixir-format msgid "View report:" msgstr "Voir le signalement :" -#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:58 #: lib/web/templates/email/event_participation_confirmed.html.eex:58 +#, elixir-format msgid "Visit event page" msgstr "Voir la page de l'événement" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:121 +#, elixir-format msgid "Visit the updated event page" msgstr "Voir la page de l'événement mis à jour" -#, elixir-format #: lib/web/templates/email/event_updated.text.eex:23 +#, elixir-format msgid "Visit the updated event page: %{link}" msgstr "Voir l'événement mis à jour sur : %{link}" -#, elixir-format #: lib/web/templates/email/notification_each_week.html.eex:13 #: lib/web/templates/email/notification_each_week.text.eex:1 +#, elixir-format msgid "What's up this week?" msgstr "Quoi de neuf cette semaine ?" -#, elixir-format #: lib/web/templates/email/on_day_notification.html.eex:13 #: lib/web/templates/email/on_day_notification.text.eex:1 +#, elixir-format msgid "What's up today?" msgstr "Quoi de neuf aujourd'hui ?" -#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:70 #: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.eex: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." 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." -#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:64 #: lib/web/templates/email/pending_participation_notification.text.eex:8 +#, elixir-format 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 »." -#, elixir-format #: 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}." -#, elixir-format #: lib/web/templates/email/event_participation_approved.text.eex:5 #: lib/web/templates/email/event_participation_confirmed.text.eex:3 +#, elixir-format msgid "You recently requested to attend %{title}." msgstr "Vous avez demandé à participer à l'événement %{title}." -#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:13 #: lib/web/templates/email/event_participation_confirmed.html.eex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 +#, elixir-format msgid "You're going!" msgstr "Vous y allez !" -#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:64 #: lib/web/templates/email/email_changed_new.text.eex:5 +#, elixir-format 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." -#, elixir-format #: lib/web/templates/email/email.html.eex:89 +#, elixir-format msgid "Please do not use it for real purposes." msgstr "Veuillez ne pas l'utiliser pour un cas réel." -#, elixir-format #: lib/web/templates/email/group_member_removal.html.eex:45 #: lib/web/templates/email/group_member_removal.text.eex:5 +#, elixir-format 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." -#, elixir-format #: lib/web/templates/email/group_member_removal.html.eex:13 #: lib/web/templates/email/group_member_removal.text.eex:1 +#, elixir-format msgid "So long, and thanks for the fish!" msgstr "Salut, et encore merci pour le poisson !" -#, elixir-format #: lib/web/email/group.ex:63 +#, elixir-format msgid "You have been removed from group %{group}" msgstr "Vous avez été enlevé du groupe %{group}" -#, elixir-format #: 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." -#, elixir-format #: lib/web/templates/email/group_invite.html.eex:38 +#, elixir-format msgid "%{inviter} just invited you to join their group %{link_start}%{group}%{link_end}" msgstr "%{inviter} vient de vous inviter à rejoindre son groupe %{link_start}%{group}%{link_end}" -#, elixir-format #: lib/web/templates/email/group_member_removal.html.eex:38 +#, elixir-format msgid "You have been removed from group %{link_start}%{group}%{link_end}. You will not be able to access this group's private content anymore." msgstr "Vous avez été enlevé du groupe %{link_start}%{group}%{link_end}. Vous ne serez plus en mesure d'accéder au contenu privé du groupe." -#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:54 #: lib/web/templates/email/group_suspension.text.eex:7 +#, elixir-format 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." -#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:46 #: lib/web/templates/email/group_suspension.text.eex:5 +#, elixir-format 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." -#, elixir-format #: lib/web/templates/email/group_deletion.html.eex:38 #: lib/web/templates/email/group_deletion.text.eex:3 +#, elixir-format msgid "The administrator %{author} deleted group %{group}. All of the group's events, discussions, posts and todos have been deleted." msgstr "L'administrateur·ice %{author} a supprimé le groupe %{group}. Tous les événements, discussions, billets et todos du groupe ont été supprimés." -#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:13 #: lib/web/templates/email/group_suspension.text.eex:1 +#, elixir-format msgid "The group %{group} has been suspended on %{instance}!" msgstr "Le groupe %{group} a été suspendu sur %{instance} !" -#, elixir-format #: lib/web/templates/email/group_deletion.html.eex:13 #: lib/web/templates/email/group_deletion.text.eex:1 +#, elixir-format msgid "The group %{group} was deleted on %{instance}!" msgstr "Le groupe %{group} a été supprimé sur %{instance} !" -#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:38 #: 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." -#, elixir-format #: lib/web/email/group.ex:136 +#, elixir-format msgid "The group %{group} has been deleted on %{instance}" msgstr "Le groupe %{group} a été supprimé sur %{instance}" -#, elixir-format #: lib/web/email/group.ex:97 +#, elixir-format msgid "The group %{group} has been suspended on %{instance}" msgstr "Le groupe %{group} a été suspendu sur %{instance}" -#, elixir-format #: lib/web/templates/api/terms.html.eex: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}." -#, elixir-format #: lib/web/templates/api/terms.html.eex:40 +#, elixir-format msgctxt "terms" msgid "For information about how we collect and use information about users of the Service, please check our privacy policy." msgstr "Pour savoir comment nous recueillons et utilisons les informations sur les utilisateur·ice·s du Service, veuillez consulter notre politique de confidentialité." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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." -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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." -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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." -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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." -#, elixir-format #: lib/web/templates/api/terms.html.eex:71 +#, elixir-format msgctxt "terms" msgid "Our responsibility" msgstr "Notre responsabilité" -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:3 #: lib/web/templates/api/terms.html.eex:15 +#, elixir-format 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 glossary 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 un glossaire qui pourra vous aider à mieux les comprendre." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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." -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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 an email address, a password (hashed) and at least an username. 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 a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly. You may however visit this instance without registering." msgstr "" "Nous collectons des informations sur vous lorsque vous vous inscrivez sur cette instance et récupérons des données lorsque vous utilisez la plateforme en lisant, écrivant, et en interagissant avec les contenus partagés. Si vous vous inscrivez sur cette instance, nous vous demanderons une adresse courriel, un mot de passe (haché) et au moins un nom d'utilisateur.ice. Votre adresse courriel sera vérifiée par l'envoi d'un courriel de confirmation contenant un lien unique. Si ce lien est activé, nous saurons que vous contrôlez cette adresse courriel. Vous pouvez également entrer des informations supplémentaires au profil, comme un pseudonyme, une biographie, une image de profil et une image d'en-tête. Le nom d'utilisateur, le pseudonyme affiché, la " "biographie, les images de profil et d'en-tête sont toujours publiques. Vous pouvez toutefois utiliser ce serveur sans vous inscrire." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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é." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 Framasoft, 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 \"About this instance\" 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 Framasoft, 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 propos de cette instance »." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 %{instance_name}." 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 à %{instance_name}." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:19 +#, elixir-format msgctxt "terms" msgid "Your events and comments 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 événements et commentaires 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." -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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." -#, elixir-format #: 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 !" -#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:38 #: lib/web/templates/email/event_participation_confirmed.html.eex:38 +#, elixir-format msgid "You recently requested to attend %{title}." msgstr "Vous avez demandé à participer à l'événement %{title}." -#, elixir-format #: lib/web/email/participation.ex:91 +#, elixir-format msgid "Your participation to event %{title} has been confirmed" msgstr "Votre participation à l'événement %{title} a été approuvée" -#, elixir-format #: lib/web/templates/email/report.html.eex:41 +#, elixir-format msgid "%{reporter} reported the following content." msgstr "%{reporter} a signalé le contenu suivant." -#, elixir-format #: lib/web/templates/email/report.text.eex:5 +#, elixir-format msgid "Group %{group} was reported" msgstr "Le groupe %{group} a été signalé" -#, elixir-format #: lib/web/templates/email/report.html.eex:51 +#, elixir-format msgid "Group reported" msgstr "Groupe signalé" -#, elixir-format #: lib/web/templates/email/report.text.eex:7 +#, elixir-format msgid "Profile %{profile} was reported" msgstr "Le profil %{profile} a été signalé" -#, elixir-format #: lib/web/templates/email/report.html.eex:56 +#, elixir-format msgid "Profile reported" msgstr "Profil signalé" -#, elixir-format #: lib/web/templates/email/event_participation_confirmed.html.eex: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 !" -#, elixir-format #: lib/mobilizon/posts/post.ex:94 +#, elixir-format msgid "A text is required for the post" msgstr "Un texte est requis pour le billet" -#, elixir-format #: lib/mobilizon/posts/post.ex:93 +#, elixir-format msgid "A title is required for the post" msgstr "Un titre est requis pour le billet" -#, elixir-format #: 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." -#, elixir-format #: lib/web/email/follow.ex:54 +#, elixir-format msgid "%{name} requests to follow your instance" msgstr "%{name} demande à suivre votre instance" -#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:38 +#, elixir-format msgid "%{name} (%{domain}) just requested to follow your instance. If you accept, this instance will receive all of your instance's public events." msgstr "%{name} (%{domain}) vient de demander à suivre votre instance. Si vous acceptez, leur instance recevra tous les événements publics de votre instance." -#, elixir-format #: 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." -#, elixir-format #: 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" -#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:66 +#, elixir-format msgid "See the federation settings" msgstr "Voir les paramètres de fédération" -#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:52 #: lib/web/templates/email/instance_follow.text.eex:6 +#, elixir-format msgid "To accept this invitation, head over to the instance's admin settings." msgstr "Pour accepter cette invitation, rendez-vous dans vos groupes." -#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:13 #: lib/web/templates/email/instance_follow.text.eex:1 +#, elixir-format msgid "Want to connect?" msgstr "Voulez-vous vous connecter ?" -#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:45 #: lib/web/templates/email/instance_follow.text.eex:5 +#, elixir-format 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." -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:38 +#, 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 :" -#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.eex:38 +#, elixir-format msgid "You issued a request to attend %{title}." msgstr "Vous avez effectué une demande de participation à %{title}." -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:64 +#, elixir-format msgid "Event title" msgstr "Titre de l'événement" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:38 +#, 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." -#, elixir-format #: lib/web/templates/error/500_page.html.eex:7 +#, elixir-format msgid "This page is not correct" msgstr "Cette page n’est pas correcte" -#, elixir-format #: lib/web/templates/error/500_page.html.eex: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é." -#, elixir-format #: lib/web/templates/email/email.html.eex:88 #: lib/web/templates/email/email.text.eex:4 +#, elixir-format msgid "This is a demonstration site to test Mobilizon." msgstr "Ceci est un site de démonstration permettant de tester Mobilizon." -#, elixir-format #: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60 #: lib/service/metadata/instance.ex:54 lib/service/metadata/instance.ex:60 +#, elixir-format msgid "%{name}'s feed" msgstr "Flux de %{name}" -#, elixir-format #: lib/service/export/feed.ex:120 +#, elixir-format msgid "%{actor}'s private events feed on %{instance}" msgstr "Flux privé des événements de %{actor} sur %{instance}" -#, elixir-format #: lib/service/export/feed.ex:115 +#, elixir-format msgid "%{actor}'s public events feed on %{instance}" msgstr "Flux public des événements de %{actor} sur %{instance}" -#, elixir-format #: lib/service/export/feed.ex:220 +#, elixir-format msgid "Feed for %{email} on %{instance}" msgstr "Flux pour %{email} sur %{instance}" -#, elixir-format #: lib/web/templates/error/500_page.html.eex: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}." -#, elixir-format #: lib/web/templates/error/500_page.html.eex: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." -#, elixir-format #: lib/web/templates/error/500_page.html.eex:68 +#, elixir-format msgid "Technical details" msgstr "Détails techniques" -#, elixir-format #: lib/web/templates/error/500_page.html.eex:52 +#, elixir-format msgid "The Mobilizon server %{instance} seems to be temporarily down." msgstr "Le serveur Mobilizon %{instance} semble être temporairement hors-service." -#, elixir-format #: lib/service/export/feed.ex:73 +#, elixir-format msgid "Public feed for %{instance}" -msgstr "" +msgstr "Flux public pour %{instance}" From 76ca854dd337f588ede5f02a393c22b66c99ac72 Mon Sep 17 00:00:00 2001 From: Berto Te Date: Thu, 29 Apr 2021 03:07:02 +0000 Subject: [PATCH 18/24] Translated using Weblate (Spanish) Currently translated at 100.0% (992 of 992 strings) Translation: Mobilizon/Frontend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/es/ --- js/src/i18n/es.json | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/js/src/i18n/es.json b/js/src/i18n/es.json index 51e484ece..eb11ad948 100644 --- a/js/src/i18n/es.json +++ b/js/src/i18n/es.json @@ -138,7 +138,6 @@ "Click to upload": "Haz clic para subir (upload)", "Close": "Cerrar", "Close comments for all (except for admins)": "Cerrar comentarios para todos (excepto para administradores)", - "Events nearby": "Eventos cercanos", "Closed": "Cerrado", "Collections": "Colecciones", "Comment deleted": "Comentario borrado", @@ -294,6 +293,7 @@ "Event {eventTitle} deleted": "Evento {eventTitle} eliminado", "Event {eventTitle} reported": "Evento {eventTitle} declarado", "Events": "Eventos", + "Events nearby": "Eventos cercanos", "Events tagged with {tag}": "Eventos etiquetados con {tag}", "Everything": "Todo", "Ex: mobilizon.fr": "Ej: mobilizon.fr", @@ -521,6 +521,7 @@ "No moderation logs yet": "Aún no hay registros de moderación", "No more activity to display.": "No hay más actividad para mostrar.", "No notification settings yet": "Aún no hay configuración de notificaciones", + "No one is participating|One person participating|{going} people participating": "Nadie está participando|Una persona participando|{van} personas participando", "No ongoing todos": "No hay tareas pendientes (\"to-do\") en marcha", "No open reports yet": "Aún no hay informes abiertos", "No participant matches the filters": "Ningún participante coincide con los filtros", @@ -601,7 +602,7 @@ "Participations": "Participaciones", "Password": "Contraseña", "Password (confirmation)": "Contraseña (confirmación)", - "Password reset": "Restablecimiento de contraseña", + "Password reset": "Restabler la contraseña", "Past events": "Eventos pasados", "Pending": "Pendiente", "Personal feeds": "Flujos personales", @@ -1100,10 +1101,15 @@ "{moderator} added a note on {report}": "{moderator} agregó una nota en{report}", "{moderator} closed {report}": "{moderator} cerrado {report}", "{moderator} deleted an event named \"{title}\"": "{moderator} eliminó un evento llamado \"{title}\"", + "{moderator} has deleted a comment from {author}": "{moderator} ha eliminado un comentario de {author}", + "{moderator} has deleted a comment from {author} under the event {event}": "{moderator} ha eliminado un comentario de {author} según el evento {event}", "{moderator} has deleted user {user}": "{moderator} ha eliminado el usuario {user}", + "{moderator} has done an unknown action": "{moderator} ha realizado una acción desconocida", + "{moderator} has unsuspended group {profile}": "{moderator} ha canceladola suspension del grupo {profile}", "{moderator} has unsuspended profile {profile}": "{moderator} ha rehabilitado el perfil {profile}", "{moderator} marked {report} as resolved": "{moderator} marcado {report} como resuelto", "{moderator} reopened {report}": "{moderator} reabierto {report}", + "{moderator} suspended group {profile}": "{moderator} ha suspendido el grupo {perfil}", "{moderator} suspended profile {profile}": "{moderator} perfil suspendido {profile}", "{nb} km": "{nb} km", "{number} members": "{number} miembros", From 6f7840adff2a05a236e645cc4eb1ff561993512d Mon Sep 17 00:00:00 2001 From: deadmorose Date: Thu, 29 Apr 2021 20:57:49 +0000 Subject: [PATCH 19/24] Translated using Weblate (Russian) Currently translated at 100.0% (992 of 992 strings) Translation: Mobilizon/Frontend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/ru/ --- js/src/i18n/ru.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/js/src/i18n/ru.json b/js/src/i18n/ru.json index 4e5339deb..c078f609e 100644 --- a/js/src/i18n/ru.json +++ b/js/src/i18n/ru.json @@ -452,6 +452,7 @@ "No message": "Нет сообщений", "No moderation logs yet": "Журналов модерования пока нет", "No more activity to display.": "Больше нет действия для отображения.", + "No one is participating|One person participating|{going} people participating": "Никто не участвует|Один человек участвует|{going} человек участвуют", "No open reports yet": "Пока нет открытых отчётов", "No participant matches the filters": "Ни один участник не соответствует критериям", "No participant to approve|Approve participant|Approve {number} participants": "Нет участников для одобрения | Принять участника | Принять {number} участников", @@ -941,10 +942,15 @@ "{moderator} added a note on {report}": "{moderator} добавил примечание к {report}", "{moderator} closed {report}": "{moderator} закрыл {report}", "{moderator} deleted an event named \"{title}\"": "{moderator} удалил мероприятие с названием \"{title}\"", + "{moderator} has deleted a comment from {author}": "{moderator} удалил комментарий от {author}", + "{moderator} has deleted a comment from {author} under the event {event}": "{moderator} удалил комментарий от {author} под мероприятием {event}", "{moderator} has deleted user {user}": "{moderator} удалил пользователя {user}", + "{moderator} has done an unknown action": "{moderator} совершил неизвестное действие", + "{moderator} has unsuspended group {profile}": "{moderator} разблокировал группу {profile}", "{moderator} has unsuspended profile {profile}": "{modeator} снял блокировку профиля {profile}", "{moderator} marked {report} as resolved": "{moderator} пометил {report} как решённый", "{moderator} reopened {report}": "{moderator} повторно открыл {report}", + "{moderator} suspended group {profile}": "{moderator} заблокировал группу {profile}", "{moderator} suspended profile {profile}": "{moderator} заблокировал профиль {profile}", "{nb} km": "{nb} км", "{number} members": "{number} участников", From 354c361a387348a09c1de3fb7e3f6c70880e9ef0 Mon Sep 17 00:00:00 2001 From: Berto Te Date: Thu, 29 Apr 2021 03:34:16 +0000 Subject: [PATCH 20/24] Translated using Weblate (Spanish) Currently translated at 100.0% (245 of 245 strings) Translation: Mobilizon/Backend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/es/ --- priv/gettext/es/LC_MESSAGES/default.po | 590 ++++++++++++------------- 1 file changed, 294 insertions(+), 296 deletions(-) diff --git a/priv/gettext/es/LC_MESSAGES/default.po b/priv/gettext/es/LC_MESSAGES/default.po index 7a5fc7332..58210c716 100644 --- a/priv/gettext/es/LC_MESSAGES/default.po +++ b/priv/gettext/es/LC_MESSAGES/default.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-09-24 14:39+0000\n" -"PO-Revision-Date: 2021-03-11 02:14+0000\n" +"PO-Revision-Date: 2021-05-01 10:59+0000\n" "Last-Translator: Berto Te \n" "Language-Team: Spanish \n" @@ -12,269 +12,269 @@ msgstr "" "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.5.1\n" +"X-Generator: Weblate 4.6\n" -#, elixir-format #: lib/web/templates/email/password_reset.html.eex: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 no solicitaste este correo, simplemente ignóralo. Su contraseña no " "cambiará al menos que use el siguiente enlace para crear una nueva." -#, elixir-format #: lib/web/templates/email/report.html.eex:74 +#, elixir-format msgid "%{title} by %{creator}" msgstr "%{title} por %{creator}" -#, elixir-format #: lib/web/templates/email/registration_confirmation.html.eex:58 +#, elixir-format msgid "Activate my account" msgstr "Activar mi cuenta" -#, elixir-format #: lib/web/templates/email/email.html.eex:117 #: lib/web/templates/email/email.text.eex:9 +#, elixir-format msgid "Ask the community on Framacolibri" msgstr "Preguntar a la comunidad en framacolibri" -#, elixir-format #: lib/web/templates/email/report.text.eex:15 +#, elixir-format msgid "Comments" msgstr "Comentarios" -#, elixir-format #: lib/web/templates/email/report.html.eex:72 #: lib/web/templates/email/report.text.eex:11 +#, elixir-format msgid "Event" msgstr "Evento" -#, elixir-format #: lib/web/email/user.ex:48 +#, elixir-format msgid "Instructions to reset your password on %{instance}" msgstr "Instrucciones para restablecer su contraseña en %{instance}" -#, elixir-format #: lib/web/templates/email/report.text.eex:21 +#, elixir-format msgid "Reason" msgstr "Razón" -#, elixir-format #: lib/web/templates/email/password_reset.html.eex:61 -msgid "Reset Password" -msgstr "Reinicializar la contraseña" - #, elixir-format +msgid "Reset Password" +msgstr "Restablecer la contraseña" + #: lib/web/templates/email/password_reset.html.eex: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 "" "Restablecer tu contraseña es fácil. Simplemente presione el botón y siga las " "instrucciones. Te tendremos en funcionamiento en poco tiempo." -#, elixir-format #: lib/web/email/user.ex:28 +#, elixir-format msgid "Instructions to confirm your Mobilizon account on %{instance}" msgstr "Instrucciones para confirmar su cuenta Mobilizon en %{instance}" -#, elixir-format #: lib/web/email/admin.ex:24 +#, elixir-format msgid "New report on Mobilizon instance %{instance}" msgstr "Nuevo informe sobre la instancia Mobilizon %{instance}" -#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:51 #: lib/web/templates/email/before_event_notification.text.eex:4 +#, elixir-format msgid "Go to event page" msgstr "Ir a la página del evento" -#, elixir-format #: lib/web/templates/email/report.text.eex:1 +#, elixir-format msgid "New report from %{reporter} on %{instance}" msgstr "Nuevo informe de %{reporter} en %{instance}" -#, elixir-format #: lib/web/templates/email/event_participation_approved.text.eex:1 +#, elixir-format msgid "Participation approved" msgstr "Participación aprobada" -#, elixir-format #: lib/web/templates/email/password_reset.html.eex:13 #: lib/web/templates/email/password_reset.text.eex:1 -msgid "Password reset" -msgstr "Restablecer contraseña" - #, elixir-format +msgid "Password reset" +msgstr "Restablecer la contraseña" + #: 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 "" "Restablecer tu contraseña es fácil. Simplemente haga clic en el enlace a " "continuación y siga las instrucciones. Estarás operacional en muy poco " "tiempo." -#, elixir-format #: 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 "" "Has creado una cuenta en %{host} con esta dirección de correo electrónico. " "Estás a un clic de activarlo. Si no eras tú, ignora este correo electrónico." -#, elixir-format #: lib/web/email/participation.ex:112 +#, elixir-format msgid "Your participation to event %{title} has been approved" msgstr "Su participación en el evento %{title} ha sido aprobada" -#, elixir-format #: lib/web/email/participation.ex:70 +#, elixir-format msgid "Your participation to event %{title} has been rejected" msgstr "Su participación en el evento %{title} ha sido rechazada" -#, elixir-format #: lib/web/email/event.ex:37 +#, elixir-format msgid "Event %{title} has been updated" msgstr "El evento %{title} ha sido actualizado" -#, elixir-format #: lib/web/templates/email/event_updated.text.eex:15 +#, elixir-format msgid "New title: %{title}" msgstr "Nuevo título: %{title}" -#, elixir-format #: lib/web/templates/email/password_reset.text.eex:5 +#, elixir-format msgid "You requested a new password for your account on %{instance}." msgstr "Solicitó una nueva contraseña para su cuenta en %{instancia}." -#, elixir-format #: lib/web/templates/email/email.html.eex:85 +#, elixir-format msgid "Warning" msgstr "Advertencia" -#, elixir-format #: lib/web/email/participation.ex:135 +#, elixir-format msgid "Confirm your participation to event %{title}" msgstr "Confirme su participación en el evento %{title}" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:75 +#, elixir-format msgctxt "terms" msgid "An internal ID for your current selected identity" msgstr "Un ID interno para su identidad seleccionada actualmente" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:74 +#, elixir-format msgctxt "terms" msgid "An internal user ID" msgstr "Un ID de usuario interna" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:37 +#, elixir-format msgctxt "terms" msgid "Any of the information we collect from you may be used in the following ways:" msgstr "" "Cualquier información que recopilemos sobre usted puede usarse de las " "siguientes maneras:" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:9 +#, elixir-format msgctxt "terms" msgid "Basic account information" msgstr "Información básica de la cuenta" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:25 +#, elixir-format msgctxt "terms" msgid "Do not share any dangerous information over Mobilizon." msgstr "No comparta ninguna información peligrosa a través de Mobilizon." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:90 +#, elixir-format msgctxt "terms" msgid "Do we disclose any information to outside parties?" msgstr "¿Divulgamos alguna información a terceros?" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:68 +#, elixir-format msgctxt "terms" msgid "Do we use cookies?" msgstr "¿Usamos cookies?" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:51 +#, elixir-format msgctxt "terms" msgid "How do we protect your information?" msgstr "¿Cómo protegemos tu información?" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:29 +#, elixir-format msgctxt "terms" msgid "IPs and other metadata" msgstr "dirección IP y otros metadatos" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:17 +#, elixir-format msgctxt "terms" msgid "Published events and comments" msgstr "Eventos publicados y comentarios" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:64 +#, elixir-format msgctxt "terms" msgid "Retain the IP addresses associated with registered users no more than 12 months." msgstr "" "Conserva las direcciones IP asociadas con usuarios registrados no más de 12 " "meses." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:76 +#, elixir-format msgctxt "terms" msgid "Tokens to authenticate you" msgstr "Fichas para \"autenticarte\"" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:31 +#, elixir-format msgctxt "terms" msgid "We also may retain server logs which include the IP address of every request to our server." msgstr "" "También podemos conservar los registros del servidor que incluyen la " "dirección IP de cada solicitud a nuestro servidor." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:70 +#, elixir-format msgctxt "terms" msgid "We store the following information on your device when you connect:" msgstr "" "Almacenamos la siguiente información en tu dispositivo cuando te conectas:" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:58 +#, elixir-format msgctxt "terms" msgid "We will make a good faith effort to:" msgstr "Haremos un esfuerzo de buena fe para:" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:35 +#, elixir-format msgctxt "terms" msgid "What do we use your information for?" msgstr "¿Para qué utilizamos tu información?" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:57 +#, elixir-format msgctxt "terms" msgid "What is our data retention policy?" msgstr "¿Cuál es nuestra política de retención de datos?" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:67 +#, elixir-format msgctxt "terms" msgid "You may irreversibly delete your account at any time." msgstr "Puede eliminar irreversiblemente su cuenta en cualquier momento." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:115 +#, elixir-format msgctxt "terms" msgid "Changes to our Privacy Policy" msgstr "Cambios a nuestra política de privacidad" -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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 (General Data Protection Regulation) do not use this site." msgstr "" @@ -284,8 +284,8 @@ msgstr "" "https://en.wikipedia.org/wiki/General_Data_Protection_Regulation\"> " "Reglamento general de protección de datos ) no utilice este sitio ." -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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 (Children's Online Privacy Protection Act) do not use this site." msgstr "" @@ -296,30 +296,30 @@ msgstr "" "Ley de protección de la privacidad en línea para niños ) no utilice este " "sitio." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:117 +#, elixir-format msgctxt "terms" msgid "If we decide to change our privacy policy, we will post those changes on this page." msgstr "" "Si decidimos cambiar nuestra política de privacidad, publicaremos esos " "cambios en esta página." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:112 +#, elixir-format msgctxt "terms" msgid "Law requirements can be different if this server is in another jurisdiction." msgstr "" "Los requisitos legales pueden ser diferentes si este servidor se encuentra " "en otra jurisdicción." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:103 +#, elixir-format msgctxt "terms" msgid "Site usage by children" msgstr "Uso del sitio por niños" -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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." msgstr "" @@ -330,8 +330,8 @@ msgstr "" "consultas y / u otras solicitudes o\n" " preguntas." -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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." msgstr "" @@ -339,8 +339,8 @@ msgstr "" "dirección IP con otras conocidas para determinar la prohibición,\n" " evasión u otras violaciones." -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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." msgstr "" @@ -349,89 +349,89 @@ msgstr "" " interactuar con el contenido de otras personas y publicar tu propio " "contenido si ha iniciado sesión." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:6 +#, elixir-format msgctxt "terms" msgid "What information do we collect?" msgstr "¿Qué información recopilamos?" -#, elixir-format #: lib/web/email/user.ex:176 +#, elixir-format msgid "Mobilizon on %{instance}: confirm your email address" msgstr "Mobilizon en %{instance}: confirma tu dirección de correo electrónico" -#, elixir-format #: lib/web/email/user.ex:152 +#, elixir-format msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon en %{instance}: correo electrónico modificado" -#, elixir-format #: lib/web/email/notification.ex:47 +#, elixir-format msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "Un evento programado para hoy" msgstr[1] "%{nb_events} eventos planeados hoy" -#, elixir-format #: lib/web/templates/email/on_day_notification.html.eex:38 #: lib/web/templates/email/on_day_notification.text.eex:4 +#, elixir-format msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "Tienes un evento hoy:" msgstr[1] "Tienes %{total} eventos hoy:" -#, elixir-format #: lib/web/templates/email/group_invite.text.eex:3 +#, elixir-format msgid "%{inviter} just invited you to join their group %{group}" msgstr "%{inviter} te acaba de invitar a unirte a su grupo %{group}" -#, elixir-format #: lib/web/templates/email/group_invite.html.eex:13 #: lib/web/templates/email/group_invite.text.eex:1 +#, elixir-format msgid "Come along!" msgstr "¡ Únete a nosotros !" -#, elixir-format #: lib/web/email/notification.ex:24 +#, elixir-format msgid "Don't forget to go to %{title}" msgstr "No olvides ir a %{title}" -#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:38 #: lib/web/templates/email/before_event_notification.text.eex:3 +#, elixir-format msgid "Get ready for %{title}" msgstr "Prepárate para %{title}" -#, elixir-format #: lib/web/templates/email/group_invite.html.eex:59 +#, elixir-format msgid "See my groups" msgstr "Ver mis grupos" -#, elixir-format #: lib/web/templates/email/group_invite.html.eex:45 #: lib/web/templates/email/group_invite.text.eex:5 +#, elixir-format msgid "To accept this invitation, head over to your groups." msgstr "Para aceptar esta invitación, dirígete a tus grupos." -#, elixir-format #: lib/web/templates/email/before_event_notification.text.eex:5 +#, elixir-format msgid "View the event on: %{link}" msgstr "Ver el evento actualizado en: %{link}" -#, elixir-format #: lib/web/email/group.ex:33 +#, elixir-format msgid "You have been invited by %{inviter} to join group %{group}" msgstr "%{Inviter} te ha invitado a unirte al grupo %{group}" -#, elixir-format #: lib/web/email/notification.ex:71 +#, elixir-format msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "Un evento programado para hoy" msgstr[1] "%{nb_events} eventos planeados hoy" -#, elixir-format #: lib/web/email/notification.ex:93 +#, 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] "Una solicitud para participar en el evento %{title} a procesar" @@ -439,21 +439,21 @@ msgstr[1] "" "%{number_participation_requests} solicitudes para participar en el evento " "%{title} a procesar" -#, elixir-format #: lib/web/templates/email/notification_each_week.html.eex:38 #: lib/web/templates/email/notification_each_week.text.eex:3 +#, elixir-format msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "Tienes un evento hoy:" msgstr[1] "Tienes %{total} eventos hoy:" -#, elixir-format #: lib/service/metadata/utils.ex:52 +#, elixir-format msgid "The event organizer didn't add any description." msgstr "El organizador del evento no agregó ninguna descripción." -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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 "" @@ -463,8 +463,8 @@ msgstr "" "el tráfico entre tus aplicaciones y la API, están protegidas con SSL /TLS, y " "su contraseña se codifica con un fuerte algoritmo unidireccional." -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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 "" @@ -477,20 +477,20 @@ msgstr "" "de nuestro sitio o proteger los derechos, nuestros o de otros, propiedades o " "seguridad." -#, elixir-format #: lib/web/templates/api/terms.html.eex:23 +#, elixir-format msgctxt "terms" msgid "Accepting these Terms" msgstr "Aceptar estos Términos" -#, elixir-format #: lib/web/templates/api/terms.html.eex:27 +#, elixir-format msgctxt "terms" msgid "Changes to these Terms" msgstr "Cambios a estos Términos de uso" -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" @@ -502,16 +502,16 @@ msgstr "" "responsable y asume todos los riesgos derivados de su uso o su confianza en " "cualquier contenido." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" "Además, acepta que no hará nada de lo siguiente en relación con el Servicio " "u otros usuarios:" -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" @@ -519,23 +519,23 @@ msgstr "" "velocidad u otras características diseñadas para proteger el Servicio, los " "usuarios del Servicio o terceros." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" "Recopilar información personal sobre otros usuarios, o intimidar, amenazar, " "acosar o acosar a otros usuarios del Servicio;" -#, elixir-format #: lib/web/templates/api/terms.html.eex:55 +#, elixir-format msgctxt "terms" msgid "Content that is illegal or unlawful, that would otherwise create liability;" msgstr "" "Contenido que es ilegal o ilegal, que de otro modo crearía responsabilidad;" -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" @@ -543,48 +543,48 @@ msgstr "" "secreto comercial, derecho de autor, derecho de privacidad, derecho de " "publicidad u otro derecho intelectual u otro derecho de cualquier parte;" -#, elixir-format #: lib/web/templates/api/terms.html.eex:42 +#, elixir-format msgctxt "terms" msgid "Creating Accounts" msgstr "Crear cuentas" -#, elixir-format #: lib/web/templates/api/terms.html.eex:89 +#, elixir-format msgctxt "terms" msgid "Entire Agreement" msgstr "Acuerdo completo" -#, elixir-format #: lib/web/templates/api/terms.html.eex:92 +#, elixir-format msgctxt "terms" msgid "Feedback" msgstr "Comentarios" -#, elixir-format #: lib/web/templates/api/terms.html.eex:83 +#, elixir-format msgctxt "terms" msgid "Hyperlinks and Third Party Content" msgstr "Hipervínculos y contenido de terceros" -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 incumple alguno de estos Términos, tenemos el derecho de suspender o " "deshabilitar su acceso o uso del Servicio." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" "Suplantar o publicar en nombre de cualquier persona o entidad o tergiversar " "su afiliación con una persona o entidad;" -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" @@ -592,26 +592,26 @@ msgstr "" "poner a disposición contenido. Usted es responsable del contenido que pone a " "disposición del Servicio, incluida su legalidad, confiabilidad y adecuación." -#, elixir-format #: lib/web/templates/api/terms.html.eex:39 +#, elixir-format msgctxt "terms" msgid "Privacy Policy" msgstr "Política de privacidad" -#, elixir-format #: lib/web/templates/api/terms.html.eex:95 +#, elixir-format msgctxt "terms" msgid "Questions & Contact Information" msgstr "Preguntas e información de contacto" -#, elixir-format #: lib/web/templates/api/terms.html.eex:87 +#, elixir-format msgctxt "terms" msgid "Termination" msgstr "Terminación" -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" @@ -620,14 +620,14 @@ msgstr "" "Servicio o que pueda dañar, deshabilitar, sobrecargar o perjudicar el " "funcionamiento del Servicio;" -#, elixir-format #: lib/web/templates/api/terms.html.eex:47 +#, elixir-format msgctxt "terms" msgid "Your Content & Conduct" msgstr "Su contenido y conducta" -#, elixir-format #: lib/web/templates/api/terms.html.eex:84 +#, elixir-format msgctxt "terms" msgid "%{instance_name} 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 %{instance_name} of the site. Use of any such linked website is at the user's own risk." msgstr "" @@ -639,8 +639,8 @@ msgstr "" "no implica la aprobación por % {instance_name} del sitio. El uso de " "cualquier sitio web vinculado es bajo el propio riesgo del usuario." -#, elixir-format #: lib/web/templates/api/terms.html.eex:68 +#, elixir-format msgctxt "terms" msgid "Finally, your use of the Service is also subject to acceptance of the instance's own specific rules regarding the code of conduct and moderation rules. Breaking those rules may also result in your account being disabled or suspended." msgstr "" @@ -649,27 +649,27 @@ msgstr "" "código de conducta y las reglas de moderación. Romper esas reglas también " "puede resultar en que su cuenta sea deshabilitada o suspendida." -#, elixir-format #: lib/web/templates/api/terms.html.eex:81 +#, elixir-format msgctxt "terms" msgid "For full details about the Mobilizon software see here." msgstr "" "Para obtener detalles completos sobre el software Mobilizon ver aquí ." -#, elixir-format #: lib/web/templates/api/terms.html.eex:18 +#, elixir-format msgctxt "terms" msgid "Here are the important things you need to know about accessing and using the %{instance_name} (%{instance_url}) website and service (collectively, \"Service\"). These are our terms of service (\"Terms\"). Please read them carefully." msgstr "" "Estas son las cosas importantes que necesita saber sobre el acceso y uso de " -"% {instance_name} (% " -"{instance_url} ) sitio web y servicio (colectivamente, \"Servicio\"). " +" %{instance_name} ( " +"%{instance_url} ) sitio web y servicio (colectivamente, \"Servicio\"). " "Estos son nuestros términos de servicio (\"Términos\"). Por favor, léalos " "atentamente." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" @@ -678,8 +678,8 @@ msgstr "" "página de nuestro sitio web. Es su responsabilidad revisar el sitio web " "regularmente para ver los cambios a estos Términos." -#, elixir-format #: lib/web/templates/api/terms.html.eex:53 +#, elixir-format msgctxt "terms" msgid "In order to make %{instance_name} 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 "" @@ -687,8 +687,8 @@ msgstr "" "publique, enlace ni ponga a disposición en el Servicio ni a través de él " "ninguno de los siguientes:" -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" @@ -696,8 +696,8 @@ msgstr "" "de teléfono, direcciones de correo electrónico, números de Seguro Social y " "números de tarjetas de crédito); y" -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" @@ -709,18 +709,18 @@ msgstr "" "instancias termina aquí. Si por alguna razón, alguna otra instancia no " "elimina el contenido, no podemos ser responsables." -#, elixir-format #: lib/web/templates/api/terms.html.eex:90 +#, elixir-format msgctxt "terms" msgid "These Terms constitute the entire agreement between you and %{instance_name} regarding the use of the Service, superseding any prior agreements between you and %{instance_name} relating to your use of the Service." msgstr "" -"Estos Términos constituyen el acuerdo completo entre usted y % " -"{instance_name} con respecto al uso del Servicio, reemplazando " -"cualquier acuerdo previo entre usted y % {instance_name} relacionado " +"Estos Términos constituyen el acuerdo completo entre usted y " +"%{instance_name} con respecto al uso del Servicio, reemplazando " +"cualquier acuerdo previo entre usted y %{instance_name} relacionado " "con su uso de el servicio." -#, elixir-format #: lib/web/templates/api/terms.html.eex:80 +#, elixir-format msgctxt "terms" msgid "This Service runs on a Mobilizon instance. This source code is licensed under an AGPLv3 license which means you are allowed to and even encouraged to take the source code, modify it and use it." msgstr "" @@ -730,16 +730,16 @@ msgstr "" "significa que están autorizados e incluso alentados a tomar el código " "fuente, modificarlo y usarlo." -#, elixir-format #: lib/web/templates/api/terms.html.eex:58 +#, elixir-format msgctxt "terms" msgid "Viruses, corrupted data or other harmful, disruptive or destructive files or code." msgstr "" "Virus, datos corruptos u otros archivos o códigos dañinos, perjudiciales o " "destructivos." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" @@ -749,29 +749,29 @@ msgstr "" "un período de tiempo. Los registros de acceso al servidor web también pueden " "almacenarse durante algún tiempo en el sistema." -#, elixir-format #: lib/web/templates/api/terms.html.eex:96 +#, elixir-format msgctxt "terms" msgid "Questions or comments about the Service may be directed to us at %{contact}" msgstr "" "Las preguntas o comentarios sobre el Servicio pueden dirigirse a% {contact}" -#, elixir-format #: lib/web/templates/api/terms.html.eex:79 +#, elixir-format msgctxt "terms" msgid "Source code" msgstr "Código fuente" -#, elixir-format #: lib/web/templates/api/terms.html.eex:93 +#, elixir-format msgctxt "terms" msgid "We love feedback. Please let us know what you think of the Service, these Terms and, in general, %{instance_name}." msgstr "" "Nos encantan los comentarios. Háganos saber lo que piensa del Servicio, " -"estos Términos y, en general, % {instance_name} ." +"estos Términos y, en general, %{instance_name} ." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" @@ -784,16 +784,16 @@ msgstr "" "incumplir estos términos o por otros comportamientos que consideren " "inapropiados, amenazantes, ofensivos o dañinos." -#, elixir-format #: lib/web/templates/api/terms.html.eex:6 +#, elixir-format msgctxt "terms" msgid "%{instance_name} will not use or transmit or resell your personal data" msgstr "" -"% {instance_name} no usará ni transmitirá ni revenderá sus datos " +" %{instance_name} no usará ni transmitirá ni revenderá sus datos " "personales" -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 its contributors directly." msgstr "" @@ -802,8 +802,8 @@ msgstr "" "de Mobilizon, comuníquese directamente con sus colaboradores ." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" @@ -811,8 +811,8 @@ msgstr "" "alojada en la instancia esté moderada adecuadamente de acuerdo con las " "reglas definidas." -#, elixir-format #: lib/web/templates/api/terms.html.eex:98 +#, elixir-format msgctxt "terms" msgid "Originally adapted from the Diaspora* and App.net privacy policies, also licensed under CC BY-SA." msgstr "" @@ -821,8 +821,8 @@ msgstr "" ">App.net privacy policies, also licensed under CC BY-SA." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:119 +#, elixir-format msgctxt "terms" msgid "Originally adapted from the Mastodon and Discourse privacy policies, also licensed under CC BY-SA." msgstr "" @@ -831,22 +831,22 @@ msgstr "" "políticas de privacidad, también bajo licencia CC BY-SA." -#, elixir-format #: lib/web/templates/api/terms.html.eex:3 +#, elixir-format msgctxt "terms" msgid "Short version" msgstr "Version corta" -#, elixir-format #: lib/web/templates/api/terms.html.eex:9 +#, elixir-format msgctxt "terms" msgid "The service is provided without warranties and these terms may change in the future" msgstr "" "El servicio se brinda sin garantías y estos términos pueden cambiar en el " "futuro" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:118 +#, elixir-format msgctxt "terms" msgid "This document is licensed under CC BY-SA. It was last updated June 18, 2020." msgstr "" @@ -854,8 +854,8 @@ msgstr "" "licenses/by-sa/4.0/\"> CC BY-SA . Se actualizó por última vez el 18 de " "junio de 2020." -#, elixir-format #: lib/web/templates/api/terms.html.eex:97 +#, elixir-format msgctxt "terms" msgid "This document is licensed under CC BY-SA. It was last updated June 22, 2020." msgstr "" @@ -863,85 +863,85 @@ msgstr "" "licenses/by-sa/4.0/\"> CC BY-SA . Se actualizó por última vez el 22 de " "junio de 2020." -#, elixir-format #: lib/web/templates/api/terms.html.eex:8 +#, elixir-format msgctxt "terms" msgid "You must respect other people and %{instance_name}'s rules when using the service" msgstr "" -"Debe respetar las reglas de otras personas y % {instance_name} al " +"Debe respetar las reglas de otras personas y %{instance_name} al " "usar el servicio" -#, elixir-format #: lib/web/templates/api/terms.html.eex:7 +#, elixir-format msgctxt "terms" msgid "You must respect the law when using %{instance_name}" -msgstr "Debe respetar la ley cuando use % {instance_name} " +msgstr "Debe respetar la ley cuando use %{instance_name} " -#, elixir-format #: lib/web/templates/api/terms.html.eex:5 +#, elixir-format msgctxt "terms" msgid "Your content is yours" msgstr "Tu contenido es tuyo" -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:51 +#, elixir-format msgid "Confirm my e-mail address" msgstr "Confirmar mi dirección de correo electrónico" -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:13 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:1 +#, elixir-format msgid "Confirm your e-mail" msgstr "Confirme su email" -#, elixir-format #: 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 "" -"¡Hola! Te acabas de registrar para unirte a este evento: «% {title}». " +"¡Hola! Te acabas de registrar para unirte a este evento: «%{title}». " "Confirme la dirección de correo electrónico que proporcionó:" -#, elixir-format #: lib/web/templates/email/email.html.eex:114 #: lib/web/templates/email/email.text.eex:8 +#, elixir-format msgid "Need help? Is something not working as expected?" msgstr "¿Necesita ayuda? ¿Algo no está funcionando correctamente?" -#, elixir-format #: lib/web/templates/email/registration_confirmation.html.eex:38 +#, elixir-format msgid "You created an account on %{host} with this email address. You are one click away from activating it." msgstr "" -"Creó una cuenta en % {host} con esta dirección de correo " -"electrónico. Estás a un clic de activarlo." +"Creó una cuenta en %{host} con esta dirección de correo electrónico. " +"Estás a un clic de activarlo." -#, elixir-format #: lib/web/templates/email/report.html.eex:13 -msgid "New report on %{instance}" -msgstr "Nuevo informe sobre % {instancia} " - #, elixir-format +msgid "New report on %{instance}" +msgstr "Nuevo informe sobre %{instance} " + #: lib/web/templates/email/email_changed_old.html.eex:38 +#, elixir-format msgid "The email address for your account on %{host} is being changed to:" msgstr "" -"La dirección de correo electrónico de su cuenta en % {host} se " +"La dirección de correo electrónico de su cuenta en %{host} se " "cambiará a:" -#, elixir-format #: lib/web/templates/email/password_reset.html.eex:38 -msgid "You requested a new password for your account on %{instance}." -msgstr "Solicitó una nueva contraseña para su cuenta en % {instancia} ." - #, elixir-format +msgid "You requested a new password for your account on %{instance}." +msgstr "Solicitó una nueva contraseña para su cuenta en %{instance} ." + #: lib/web/templates/email/email.text.eex:5 +#, elixir-format msgid "Please do not use it for real purposes." msgstr "Por favor no lo use de ninguna manera real." -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:63 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.eex:133 #: lib/web/templates/email/event_updated.text.eex:24 lib/web/templates/email/notification_each_week.html.eex:70 #: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.eex:70 #: lib/web/templates/email/on_day_notification.text.eex:14 +#, elixir-format 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] "" @@ -951,9 +951,9 @@ msgstr[1] "" "Si desea cancelar su participación en uno o varios eventos, visite las " "páginas de los eventos a través de los enlaces de arriba y presiona el botón." -#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:38 #: lib/web/templates/email/pending_participation_notification.text.eex:4 +#, elixir-format msgid "You have one pending attendance request to process:" msgid_plural "You have %{number_participation_requests} attendance requests to process:" msgstr[0] "Tiene una solicitud de participación pendiente de procesar:" @@ -961,258 +961,258 @@ msgstr[1] "" "Tienes %{number_participation_requests} solicitudes de participación " "pendientes de procesar:" -#, elixir-format #: lib/web/templates/email/email.text.eex:11 +#, elixir-format msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} es un servidor de Mobilizon." -#, elixir-format #: lib/web/templates/email/email.html.eex:142 -msgid "%{instance} is powered by Mobilizon." -msgstr "%{instancia} es una instancia de Mobilizon." - #, elixir-format +msgid "%{instance} is powered by Mobilizon." +msgstr "%{instance} es una instancia de Mobilizon." + #: lib/web/templates/email/pending_participation_notification.html.eex:13 #: lib/web/templates/email/pending_participation_notification.text.eex:1 +#, elixir-format msgid "A request is pending!" msgstr "¡Hay una solicitud pendiente!" -#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:13 #: lib/web/templates/email/before_event_notification.text.eex:1 +#, elixir-format msgid "An event is upcoming!" msgstr "¡Se acerca un evento!" -#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:13 #: lib/web/templates/email/email_changed_new.text.eex:1 +#, elixir-format msgid "Confirm new email" msgstr "Confirme su email" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:84 +#, elixir-format msgid "End" msgstr "Final" -#, elixir-format #: lib/web/templates/email/event_updated.text.eex:21 -msgid "End %{ends_on}" -msgstr "Final% {ends_on}" - #, elixir-format +msgid "End %{ends_on}" +msgstr "Final %{ends_on}" + #: lib/web/templates/email/event_updated.html.eex:13 #: lib/web/templates/email/event_updated.text.eex:1 +#, elixir-format msgid "Event update!" msgstr "¡Evento actualizado!" -#, elixir-format #: lib/web/templates/email/report.html.eex:88 +#, elixir-format msgid "Flagged comments" msgstr "Comentarios marcados" -#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:45 #: lib/web/templates/email/event_participation_approved.text.eex:7 +#, elixir-format msgid "Good news: one of the event organizers just approved your request. Update your calendar, because you're on the guest list now!" msgstr "" "Buenas noticias: uno de los organizadores del evento acaba de aprobar su " "solicitud. Actualice su calendario, ¡porque ya está en la lista de invitados!" -#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex: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 %{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 % {instance} . Si aún desea hacerlo, haga clic en el " +"a su cuenta en %{instance} . 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 #: 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 "" "¡Hola! Solo una nota rápida para confirmar que la dirección de correo " -"electrónico vinculada a su cuenta en% {host} se ha cambiado de esta a:" +"electrónico vinculada a su cuenta en %{host} se ha cambiado de esta a:" -#, elixir-format #: lib/web/templates/email/email_changed_old.html.eex:62 #: lib/web/templates/email/email_changed_old.text.eex:5 +#, elixir-format msgid "If you did not trigger this change yourself, it is likely that someone has gained access to your %{host} account. Please log in and change your password immediately. If you cannot login, contact the admin on %{host}." msgstr "" "Si no activó este cambio usted mismo, es probable que alguien haya obtenido " -"acceso a su cuenta% {host}. Inicie sesión y cambie su contraseña " +"acceso a su cuenta %{host}. Inicie sesión y cambie su contraseña " "inmediatamente. Si no puede iniciar sesión, comuníquese con el administrador " -"en% {host}." +"en %{host}." -#, elixir-format #: 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 no activó el cambio usted mismo, ignore este mensaje. Su contraseña no se " "cambiará hasta que haga clic en el enlace de arriba." -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:70 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.eex:45 +#, elixir-format msgid "If you didn't trigger this email, you may safely ignore it." msgstr "Si no activó esta alerta, puede ignorarla con seguridad." -#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:63 #: lib/web/templates/email/before_event_notification.text.eex:6 +#, elixir-format msgid "If you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgstr "" "Si necesitas cancelar su participación, sólo accede a la página del evento " "mediante el enlace debajo y presiona el botón." -#, elixir-format #: lib/web/templates/email/email.html.eex:143 #: lib/web/templates/email/email.text.eex:11 +#, elixir-format msgid "Learn more about Mobilizon here!" msgstr "¡Aprenda más sobre Mobilizon aquí!" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:94 +#, elixir-format msgid "Location" msgstr "Ubicación" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:104 +#, elixir-format msgid "Location address was removed" msgstr "Dirección física fue eliminada" -#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:51 #: lib/web/templates/email/pending_participation_notification.text.eex:6 +#, elixir-format msgid "Manage pending requests" msgstr "Gestionar solicitudes de participación pendientes" -#, elixir-format #: lib/web/templates/email/registration_confirmation.html.eex:13 #: lib/web/templates/email/registration_confirmation.text.eex:1 +#, elixir-format msgid "Nearly there!" msgstr "¡Ya casi estas!" -#, elixir-format #: lib/web/templates/email/email_changed_old.html.eex:13 #: lib/web/templates/email/email_changed_old.text.eex:1 +#, elixir-format msgid "New email confirmation" msgstr "Nueva confirmación de correo electrónico" -#, elixir-format #: lib/web/templates/email/report.html.eex:106 +#, elixir-format msgid "Reasons for report" msgstr "Razones para informar" -#, elixir-format #: lib/web/templates/email/report.html.eex:39 -msgid "Someone on %{instance} reported the following content for you to analyze:" -msgstr "Alguien en % {instancia} informó el siguiente contenido:" - #, elixir-format +msgid "Someone on %{instance} reported the following content for you to analyze:" +msgstr "Alguien en %{instance} informó el siguiente contenido:" + #: lib/web/templates/email/event_participation_rejected.html.eex:13 #: lib/web/templates/email/event_participation_rejected.text.eex:1 +#, elixir-format msgid "Sorry! You're not going." msgstr "¡Lo siento! No vas." -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:74 +#, elixir-format msgid "Start" msgstr "Inicio" -#, elixir-format #: lib/web/templates/email/event_updated.text.eex:18 +#, elixir-format msgid "Start %{begins_on}" -msgstr "Inicio% {starts_on}" +msgstr "Inicio %{begins_on}" -#, 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 "Ha habido cambios para% {title}, así que pensamos en avisarle." - #, elixir-format +msgid "There have been changes for %{title} so we'd thought we'd let you know." +msgstr "Ha habido cambios para %{title}, así que pensamos en avisarle." + #: lib/web/templates/email/event_updated.html.eex:55 #: lib/web/templates/email/event_updated.text.eex:11 +#, elixir-format msgid "This event has been cancelled by its organizers. Sorry!" msgstr "Este evento ha sido cancelado por sus organizadores. ¡Lo siento!" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:51 #: lib/web/templates/email/event_updated.text.eex:7 +#, elixir-format msgid "This event has been confirmed" msgstr "El evento ha sido confirmado" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:53 #: lib/web/templates/email/event_updated.text.eex:9 +#, elixir-format msgid "This event has yet to be confirmed: organizers will let you know if they do confirm it." msgstr "" "Este evento aún no se ha confirmado: los organizadores te avisarán si lo " "confirman." -#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.eex:45 #: lib/web/templates/email/event_participation_rejected.text.eex:7 +#, elixir-format msgid "Unfortunately, the organizers rejected your request." msgstr "" "Lamentablemente, los organizadores rechazaron tu solicitud de participación." -#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:51 +#, elixir-format msgid "Verify your email address" msgstr "Verifica tu dirección de correo electrónico" -#, elixir-format #: lib/web/templates/email/report.html.eex:126 +#, elixir-format msgid "View report" msgstr "Ver el informe" -#, elixir-format #: lib/web/templates/email/report.text.eex:24 +#, elixir-format msgid "View report:" msgstr "Ver el informe:" -#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:58 #: lib/web/templates/email/event_participation_confirmed.html.eex:58 +#, elixir-format msgid "Visit event page" msgstr "Visita la página del evento" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:121 +#, elixir-format msgid "Visit the updated event page" msgstr "Visita la página del evento actualizada" -#, elixir-format #: lib/web/templates/email/event_updated.text.eex:23 +#, elixir-format msgid "Visit the updated event page: %{link}" msgstr "Ver el evento actualizado en: %{link}" -#, elixir-format #: lib/web/templates/email/notification_each_week.html.eex:13 #: lib/web/templates/email/notification_each_week.text.eex:1 +#, elixir-format msgid "What's up this week?" msgstr "¿Qué pasa esta semana?" -#, elixir-format #: lib/web/templates/email/on_day_notification.html.eex:13 #: lib/web/templates/email/on_day_notification.text.eex:1 +#, elixir-format msgid "What's up today?" msgstr "Qué pasa hoy?" -#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:70 #: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.eex: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." msgstr "" "Si desea actualizar o cancelar su asistencia, simplemente acceda a la página " "del evento a través del enlace de arriba y haga clic en el botón Asistir." -#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:64 #: lib/web/templates/email/pending_participation_notification.text.eex:8 +#, elixir-format 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 "" "Recibió este correo electrónico porque eligió recibir notificaciones de " @@ -1220,130 +1220,130 @@ msgstr "" "cambiar la configuración de notificaciones en la configuración de su cuenta " "de usuario en «Notificaciones»." -#, elixir-format #: lib/web/templates/email/event_participation_rejected.text.eex:5 +#, elixir-format msgid "You issued a request to attend %{title}." msgstr "Envió una solicitud para asistir a %{title}." -#, elixir-format #: lib/web/templates/email/event_participation_approved.text.eex:5 #: lib/web/templates/email/event_participation_confirmed.text.eex:3 +#, elixir-format msgid "You recently requested to attend %{title}." msgstr "Solicitaste participar en el evento %{title}." -#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:13 #: lib/web/templates/email/event_participation_confirmed.html.eex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 +#, elixir-format msgid "You're going!" msgstr "¡Vas!" -#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:64 #: lib/web/templates/email/email_changed_new.text.eex:5 +#, elixir-format msgid "If you didn't trigger the change yourself, please ignore this message." msgstr "Si no activó el cambio usted mismo, ignore este mensaje." -#, elixir-format #: lib/web/templates/email/email.html.eex:89 +#, elixir-format msgid "Please do not use it for real purposes." msgstr "Por favor no lo use de ninguna manera real." -#, elixir-format #: lib/web/templates/email/group_member_removal.html.eex:45 #: lib/web/templates/email/group_member_removal.text.eex:5 +#, elixir-format msgid "If you feel this is an error, you may contact the group's administrators so that they can add you back." msgstr "" "Si cree que esto es un error, puede comunicarse con los administradores del " "grupo para que lo puedan integrar de nuevo." -#, elixir-format #: lib/web/templates/email/group_member_removal.html.eex:13 #: lib/web/templates/email/group_member_removal.text.eex:1 +#, elixir-format msgid "So long, and thanks for the fish!" msgstr "¡Hasta luego y gracias por el pescado!" -#, elixir-format #: lib/web/email/group.ex:63 +#, elixir-format msgid "You have been removed from group %{group}" msgstr "Ha sido eliminado del grupo %{group}" -#, elixir-format #: 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 "" "Se le ha eliminado del grupo %{group}. Ya no podrá acceder al contenido " "privado de este grupo." -#, elixir-format #: lib/web/templates/email/group_invite.html.eex:38 +#, elixir-format msgid "%{inviter} just invited you to join their group %{link_start}%{group}%{link_end}" msgstr "" "%{inviter} le acaba de invitar a unirse a su grupo% {link_start} " -"% {group} % {link_end}" +"%{group %{link_end}" -#, elixir-format #: lib/web/templates/email/group_member_removal.html.eex:38 +#, elixir-format msgid "You have been removed from group %{link_start}%{group}%{link_end}. You will not be able to access this group's private content anymore." msgstr "" -"Ha sido eliminado del grupo% {link_start} % {group} % {link_end}. Ya " +"Ha sido eliminado del grupo% {link_start} %{group} % {link_end}. Ya " "no podrá acceder al contenido privado de este grupo." -#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:54 #: lib/web/templates/email/group_suspension.text.eex:7 +#, elixir-format msgid "As this group was located on another instance, it will continue to work for other instances than this one." msgstr "" "Como este grupo estaba ubicado en otra instancia, seguirá funcionando para " "otras instancias además de esta." -#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:46 #: lib/web/templates/email/group_suspension.text.eex:5 +#, elixir-format msgid "As this group was located on this instance, all of it's data has been irretrievably deleted." msgstr "" "Como este grupo estaba ubicado en esta instancia, todos sus datos se han " "eliminado de forma irremediable." -#, elixir-format #: lib/web/templates/email/group_deletion.html.eex:38 #: lib/web/templates/email/group_deletion.text.eex:3 +#, elixir-format msgid "The administrator %{author} deleted group %{group}. All of the group's events, discussions, posts and todos have been deleted." msgstr "" "El administrador %{author} ha eliminado el grupo %{group}. Todos los " "eventos, discusiones, publicaciones y tareas del grupo se han eliminado ." -#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:13 #: lib/web/templates/email/group_suspension.text.eex:1 +#, elixir-format msgid "The group %{group} has been suspended on %{instance}!" msgstr "¡El grupo %{group} ha sido suspendido en %{instance}!" -#, elixir-format #: lib/web/templates/email/group_deletion.html.eex:13 #: lib/web/templates/email/group_deletion.text.eex:1 +#, elixir-format msgid "The group %{group} was deleted on %{instance}!" msgstr "¡El grupo %{group} fue eliminado en %{instance}!" -#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:38 #: 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 "" "El equipo de moderación de su instancia ha decidido suspender a %{group_name}" " (%{group_address}). Ya no eres miembro de este grupo." -#, elixir-format #: lib/web/email/group.ex:136 +#, elixir-format msgid "The group %{group} has been deleted on %{instance}" msgstr "El grupo %{group} se eliminó en %{instance}" -#, elixir-format #: lib/web/email/group.ex:97 +#, elixir-format msgid "The group %{group} has been suspended on %{instance}" msgstr "El grupo %{group} ha sido suspendido en %{instance}" -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" @@ -1351,8 +1351,8 @@ msgstr "" "todos los términos a continuación. Si estos términos no son claros de alguna " "manera, háganoslo saber poniéndose en contacto con %{contact}." -#, elixir-format #: lib/web/templates/api/terms.html.eex:40 +#, elixir-format msgctxt "terms" msgid "For information about how we collect and use information about users of the Service, please check our privacy policy." msgstr "" @@ -1360,22 +1360,22 @@ msgstr "" "sobre los usuarios del Servicio, consulte nuestra " "política de privacidad ." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 continúa utilizando el Servicio después de que los Términos revisados " "entren en vigencia, entonces ha aceptado los Términos revisados." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:78 +#, elixir-format msgctxt "terms" msgid "If you delete this information, you need to login again." msgstr "Si eliminas esta información, deberás iniciar sesión nuevamente." -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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 "" @@ -1386,22 +1386,22 @@ msgstr "" "información solo dejará de mostrar el estado de participación en tu " "navegador." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:87 +#, elixir-format msgctxt "terms" msgid "Note: This information is stored in your localStorage and not your cookies." msgstr "" "Nota: Estas informaciones se almacenan en tu almacenamiento local y no en " "tus cookies." -#, elixir-format #: lib/web/templates/api/terms.html.eex:71 +#, elixir-format msgctxt "terms" msgid "Our responsibility" msgstr "Nuestra responsabilidad" -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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 "" @@ -1409,9 +1409,9 @@ msgstr "" "las solicitudes a este servidor, en la medida en que dichos registros se " "mantengan, no más de 90 días." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:3 #: lib/web/templates/api/terms.html.eex:15 +#, elixir-format 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 glossary to help you understand them better." msgstr "" @@ -1420,8 +1420,8 @@ msgstr "" "Proporcionamos un glosario para ayudarlo a " "comprenderlos mejor." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" @@ -1429,8 +1429,8 @@ msgstr "" "resultado de que otra persona use su correo electrónico o contraseña, ya sea " "con o sin su conocimiento." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" @@ -1440,8 +1440,8 @@ msgstr "" "todos sus derechos sobre el contenido que publica, vincula y de lo contrario " "pone a disposición en oa través del Servicio." -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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 an email address, a password (hashed) and at least an username. 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 a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly. You may however visit this instance without registering." msgstr "" @@ -1459,8 +1459,8 @@ msgstr "" "imagen del encabezado siempre se listan públicamente. Sin " "embargo, también puedes visitar este servidor sin registrarse." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" @@ -1468,8 +1468,8 @@ msgstr "" "Por ejemplo, es posible que necesitemos cambiar estos Términos si " "presentamos una nueva función o por alguna otra razón." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 Framasoft, 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 \"About this instance\" page." msgstr "" @@ -1484,18 +1484,18 @@ msgstr "" "información sobre esta instancia en la página " "\"Acerca de esta instancia\" ." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 %{instance_name}." msgstr "" "Cuando crea una cuenta, también acepta mantener la seguridad y " "confidencialidad de su contraseña y acepta todos los riesgos de acceso no " "autorizado a los datos de su cuenta y cualquier otra información que " -"proporcione a % {instance_name} ." +"proporcione a %{instance_name}." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" @@ -1508,8 +1508,8 @@ msgstr "" "visibilidad que ha establecido para el contenido. No modificaremos la " "visibilidad del contenido que ha establecido." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:19 +#, elixir-format msgctxt "terms" msgid "Your events and comments 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 "" @@ -1521,8 +1521,8 @@ msgstr "" "servidor y cualquier servidor receptor puede ver dichos mensajes, y los " "destinatarios pueden capturar, copiar o de incluso volver a compartirlos." -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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 "" @@ -1531,205 +1531,203 @@ msgstr "" "mensajes directos se entregan a los servidores de los destinatarios, en la " "medida en que estos destinatarios residen en un servidor diferente a este." -#, elixir-format #: 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 "" "Ha confirmado su participación. Actualice su calendario, ¡porque ya está en " "la lista de invitados!" -#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:38 #: lib/web/templates/email/event_participation_confirmed.html.eex:38 -msgid "You recently requested to attend %{title}." -msgstr "Solicitaste participar en el evento %{title}." - #, elixir-format +msgid "You recently requested to attend %{title}." +msgstr "Solicitaste participar en el evento%{title}." + #: lib/web/email/participation.ex:91 +#, elixir-format msgid "Your participation to event %{title} has been confirmed" msgstr "Su participación en el evento %{title} ha sido aprobada" -#, elixir-format #: lib/web/templates/email/report.html.eex:41 -msgid "%{reporter} reported the following content." -msgstr "" -"% {reporter_name} (% {reporter_username}) informó el siguiente " -"contenido." - #, elixir-format +msgid "%{reporter} reported the following content." +msgstr "%{reporter} informó el siguiente contenido." + #: lib/web/templates/email/report.text.eex:5 +#, elixir-format msgid "Group %{group} was reported" msgstr "Se informó el grupo %{group}" -#, elixir-format #: lib/web/templates/email/report.html.eex:51 +#, elixir-format msgid "Group reported" msgstr "Grupo informado" -#, elixir-format #: lib/web/templates/email/report.text.eex:7 +#, elixir-format msgid "Profile %{profile} was reported" msgstr "Se informó el perfil %{profile}" -#, elixir-format #: lib/web/templates/email/report.html.eex:56 +#, elixir-format msgid "Profile reported" msgstr "Perfil informado" -#, elixir-format #: lib/web/templates/email/event_participation_confirmed.html.eex:45 +#, elixir-format msgid "You have now confirmed your participation. Update your calendar, because you're on the guest list now!" msgstr "" "Ahora ha confirmado su participación. Actualice su calendario, ¡porque ya " "está en la lista de invitados!" -#, elixir-format #: lib/mobilizon/posts/post.ex:94 +#, elixir-format msgid "A text is required for the post" msgstr "Se requiere un texto para la publicación" -#, elixir-format #: lib/mobilizon/posts/post.ex:93 +#, elixir-format msgid "A title is required for the post" msgstr "Se requiere un título para la publicación" -#, elixir-format #: lib/web/templates/email/instance_follow.text.eex:3 +#, elixir-format msgid "%{name} (%{domain}) just requested to follow your instance." msgstr "%{name} (%{domain}) sólo solicitó seguir su instancia." -#, elixir-format #: lib/web/email/follow.ex:54 -msgid "%{name} requests to follow your instance" -msgstr "%{name}solicita seguir tu instancia" - #, elixir-format +msgid "%{name} requests to follow your instance" +msgstr "%{name} solicita seguir tu instancia" + #: lib/web/templates/email/instance_follow.html.eex:38 +#, elixir-format msgid "%{name} (%{domain}) just requested to follow your instance. If you accept, this instance will receive all of your instance's public events." msgstr "" "%{name} (%{domain}) solo pedí seguir tu instancia. Si acepta, su " "instancia recibirá todos los eventos públicos para su instancia." -#, elixir-format #: 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 acepta, esta instancia recibirá todos sus eventos públicos." -#, elixir-format #: lib/web/email/follow.ex:48 +#, elixir-format msgid "Instance %{name} (%{domain}) requests to follow your instance" msgstr "La instancia %{name} (%{domain}) solicita seguir tu instancia" -#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:66 +#, elixir-format msgid "See the federation settings" msgstr "Ver la configuración de la federación" -#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:52 #: lib/web/templates/email/instance_follow.text.eex:6 +#, elixir-format msgid "To accept this invitation, head over to the instance's admin settings." msgstr "Para aceptar esta invitación, dirígete a tus grupos." -#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:13 #: lib/web/templates/email/instance_follow.text.eex:1 +#, elixir-format msgid "Want to connect?" msgstr "¿Quieres conectarte?" -#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:45 #: lib/web/templates/email/instance_follow.text.eex:5 +#, elixir-format msgid "Note: %{name} (%{domain}) following you doesn't necessarily imply that you follow this instance, but you can ask to follow them too." msgstr "" "Nota: el hecho que %{name} (%{domain} te siga, no implica necesariamente que " "sigas esta instancia, pero puedes solicitar seguirla también." -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:38 +#, elixir-format msgid "Hi there! You just registered to join this event: « %{title} ». Please confirm the e-mail address you provided:" msgstr "" -"¡Hola! Te acabas de registrar para unirte a este evento: «% {title}». " +"¡Hola! Te acabas de registrar para unirte a este evento: «%{title}». " "Confirme la dirección de correo electrónico que proporcionó:" -#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.eex:38 +#, elixir-format msgid "You issued a request to attend %{title}." msgstr "Envió una solicitud para asistir a %{title}." -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:64 +#, elixir-format msgid "Event title" msgstr "Título del evento" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:38 -msgid "There have been changes for %{title} so we'd thought we'd let you know." -msgstr "Ha habido cambios para% {title}, así que pensamos en avisarle." - #, elixir-format +msgid "There have been changes for %{title} so we'd thought we'd let you know." +msgstr "Ha habido cambios para%{title}, así que pensamos en avisarle." + #: lib/web/templates/error/500_page.html.eex:7 +#, elixir-format msgid "This page is not correct" msgstr "Esta página no es correcta" -#, elixir-format #: lib/web/templates/error/500_page.html.eex:50 +#, elixir-format msgid "We're sorry, but something went wrong on our end." msgstr "Lo sentimos, pero algo salió mal por nuestra parte." -#, elixir-format #: lib/web/templates/email/email.html.eex:88 #: lib/web/templates/email/email.text.eex:4 +#, elixir-format 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:53 lib/service/metadata/actor.ex:60 #: lib/service/metadata/instance.ex:54 lib/service/metadata/instance.ex:60 +#, elixir-format msgid "%{name}'s feed" msgstr "Flujo de %{name}" -#, elixir-format #: lib/service/export/feed.ex:120 +#, elixir-format msgid "%{actor}'s private events feed on %{instance}" msgstr "Flujo de eventos privados de %{actor} a %{instance}" -#, elixir-format #: lib/service/export/feed.ex:115 +#, elixir-format msgid "%{actor}'s public events feed on %{instance}" msgstr "Flujo público de eventos de %{actor} a %{instance}" -#, elixir-format #: lib/service/export/feed.ex:220 +#, elixir-format msgid "Feed for %{email} on %{instance}" msgstr "Flujo para %{email} en %{instance}" -#, elixir-format #: lib/web/templates/error/500_page.html.eex:57 +#, elixir-format msgid "If the issue persists, you may contact the server administrator at %{contact}." msgstr "" "Si el problema persiste, puede comunicarse con el administrador del servidor " "en %{contact}." -#, elixir-format #: lib/web/templates/error/500_page.html.eex:55 +#, elixir-format msgid "If the issue persists, you may try to contact the server administrator." msgstr "" "Si el problema persiste, puede intentar comunicarse con el administrador del " "servidor." -#, elixir-format #: lib/web/templates/error/500_page.html.eex:68 +#, elixir-format msgid "Technical details" msgstr "Detalles técnicos" -#, elixir-format #: lib/web/templates/error/500_page.html.eex:52 +#, elixir-format msgid "The Mobilizon server %{instance} seems to be temporarily down." msgstr "" "El servidor de Mobilizon %{instance} parece estar temporalmente inactivo." -#, elixir-format #: lib/service/export/feed.ex:73 +#, elixir-format msgid "Public feed for %{instance}" -msgstr "" +msgstr "Flujo público para %{instance}" From 9b0fadc37c1f1e30a6ba3bfa2064bc0d9494610d Mon Sep 17 00:00:00 2001 From: deadmorose Date: Thu, 29 Apr 2021 20:52:53 +0000 Subject: [PATCH 21/24] Translated using Weblate (Russian) Currently translated at 100.0% (245 of 245 strings) Translation: Mobilizon/Backend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/ru/ --- priv/gettext/ru/LC_MESSAGES/default.po | 496 ++++++++++++------------- 1 file changed, 248 insertions(+), 248 deletions(-) diff --git a/priv/gettext/ru/LC_MESSAGES/default.po b/priv/gettext/ru/LC_MESSAGES/default.po index 0907e9102..c256130af 100644 --- a/priv/gettext/ru/LC_MESSAGES/default.po +++ b/priv/gettext/ru/LC_MESSAGES/default.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-09-24 14:40+0000\n" -"PO-Revision-Date: 2021-03-29 18:51+0000\n" +"PO-Revision-Date: 2021-05-01 10:59+0000\n" "Last-Translator: deadmorose \n" "Language-Team: Russian \n" @@ -13,269 +13,269 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 4.5.1\n" +"X-Generator: Weblate 4.6\n" -#, elixir-format #: lib/web/templates/email/password_reset.html.eex: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 "" "Если вы не оставляли такой запрос, проигнорируйте данное письмо. Пароль не " "изменится, если не перейти по приведённой ссылке и не указать новый." -#, elixir-format #: lib/web/templates/email/report.html.eex:74 +#, elixir-format msgid "%{title} by %{creator}" msgstr "%{title} от %{creator}" -#, elixir-format #: lib/web/templates/email/registration_confirmation.html.eex:58 +#, elixir-format msgid "Activate my account" msgstr "Активировать мою учётную запись" -#, elixir-format #: lib/web/templates/email/email.html.eex:117 #: lib/web/templates/email/email.text.eex:9 +#, elixir-format msgid "Ask the community on Framacolibri" msgstr "Обратиться к сообществу на Framacolibri" -#, elixir-format #: lib/web/templates/email/report.text.eex:15 +#, elixir-format msgid "Comments" msgstr "Комментарии" -#, elixir-format #: lib/web/templates/email/report.html.eex:72 #: lib/web/templates/email/report.text.eex:11 +#, elixir-format msgid "Event" msgstr "Мероприятие" -#, elixir-format #: lib/web/email/user.ex:48 +#, elixir-format msgid "Instructions to reset your password on %{instance}" msgstr "Инструкции по сбросу пароля на %{instance}" -#, elixir-format #: lib/web/templates/email/report.text.eex:21 +#, elixir-format msgid "Reason" msgstr "Причина" -#, elixir-format #: lib/web/templates/email/password_reset.html.eex:61 +#, elixir-format msgid "Reset Password" msgstr "Сбросить пароль" -#, elixir-format #: lib/web/templates/email/password_reset.html.eex: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 "" "Сбросить пароль легко. Просто нажмите на кнопку ниже и следуйте инструкциям. " "Это быстро." -#, elixir-format #: lib/web/email/user.ex:28 +#, elixir-format msgid "Instructions to confirm your Mobilizon account on %{instance}" msgstr "Инструкции по подтверждению учётной записи Mobilizon на %{instance}" -#, elixir-format #: lib/web/email/admin.ex:24 +#, elixir-format msgid "New report on Mobilizon instance %{instance}" msgstr "Новый отчёт на Mobilizon узле %{instance}" -#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:51 #: lib/web/templates/email/before_event_notification.text.eex:4 +#, elixir-format msgid "Go to event page" msgstr "Перейти на страницу мероприятия" -#, elixir-format #: lib/web/templates/email/report.text.eex:1 +#, elixir-format msgid "New report from %{reporter} on %{instance}" msgstr "Новый отчёт от %{reporter} на %{instance}" -#, elixir-format #: lib/web/templates/email/event_participation_approved.text.eex:1 +#, elixir-format msgid "Participation approved" msgstr "Участие одобрено" -#, elixir-format #: lib/web/templates/email/password_reset.html.eex:13 #: lib/web/templates/email/password_reset.text.eex:1 +#, elixir-format msgid "Password reset" msgstr "Сброс пароля" -#, elixir-format #: 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 "" "Сбросить пароль легко. Просто нажмите на ссылку ниже и следуйте инструкциям. " "Это быстро." -#, elixir-format #: 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 "" "Вы создали аккаунт на% {host}, используя этот адрес электронной почты. Вы в " "одном клике от его активации. Если это сделали не вы, просто проигнорируйте " "это письмо." -#, elixir-format #: lib/web/email/participation.ex:112 +#, elixir-format msgid "Your participation to event %{title} has been approved" msgstr "Ваше участие в мероприятии %{title} было одобрено" -#, elixir-format #: lib/web/email/participation.ex:70 +#, elixir-format msgid "Your participation to event %{title} has been rejected" msgstr "Ваш запрос на участие в %{title} был отклонен" -#, elixir-format #: lib/web/email/event.ex:37 +#, elixir-format msgid "Event %{title} has been updated" msgstr "Мероприятие %{title} было обновлено" -#, elixir-format #: lib/web/templates/email/event_updated.text.eex:15 +#, elixir-format msgid "New title: %{title}" msgstr "Новый заголовок: %{title}" -#, elixir-format #: lib/web/templates/email/password_reset.text.eex:5 +#, elixir-format msgid "You requested a new password for your account on %{instance}." msgstr "Вы запросили новый пароль для своей учетной записи на %{instance}." -#, elixir-format #: lib/web/templates/email/email.html.eex:85 +#, elixir-format msgid "Warning" msgstr "Внимание" -#, elixir-format #: lib/web/email/participation.ex:135 +#, elixir-format msgid "Confirm your participation to event %{title}" msgstr "Подтвердите свое участие в мероприятии %{title}" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:75 +#, elixir-format msgctxt "terms" msgid "An internal ID for your current selected identity" msgstr "Внутренний ID для выбранного идентификатора" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:74 +#, elixir-format msgctxt "terms" msgid "An internal user ID" msgstr "Внутренний пользовательский ID" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:37 +#, elixir-format 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.eex:9 +#, elixir-format msgctxt "terms" msgid "Basic account information" msgstr "Основная информация об аккаунте" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:25 +#, elixir-format msgctxt "terms" msgid "Do not share any dangerous information over Mobilizon." msgstr "Не передавайте через Mobilizon какую-либо небезопасную информацию." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:90 +#, elixir-format msgctxt "terms" msgid "Do we disclose any information to outside parties?" msgstr "Передаем ли мы какую-либо информацию третьим лицам?" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:68 +#, elixir-format msgctxt "terms" msgid "Do we use cookies?" msgstr "Мы используем файлы cookie?" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:51 +#, elixir-format msgctxt "terms" msgid "How do we protect your information?" msgstr "Как мы защищаем вашу информацию?" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:29 +#, elixir-format msgctxt "terms" msgid "IPs and other metadata" msgstr "IP-адреса и другие метаданные" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:17 +#, elixir-format msgctxt "terms" msgid "Published events and comments" msgstr "Опубликованные мероприятия и комментарии" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:64 +#, elixir-format msgctxt "terms" msgid "Retain the IP addresses associated with registered users no more than 12 months." msgstr "" "Не храните IP-адреса, присвоенные зарегистрированным пользователям более 12 " "месяцев." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:76 +#, elixir-format msgctxt "terms" msgid "Tokens to authenticate you" msgstr "Токены для аутентификации вас" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:31 +#, elixir-format msgctxt "terms" msgid "We also may retain server logs which include the IP address of every request to our server." msgstr "" "Мы также можем хранить логи сервера, которые включают IP-адрес каждого " "запроса к нашему серверу." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:70 +#, elixir-format msgctxt "terms" msgid "We store the following information on your device when you connect:" msgstr "" "Мы храним следующую информацию об устройстве, с которого вы подключаетесь:" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:58 +#, elixir-format msgctxt "terms" msgid "We will make a good faith effort to:" msgstr "Мы приложим все усилия, чтобы:" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:35 +#, elixir-format msgctxt "terms" msgid "What do we use your information for?" msgstr "Для чего мы используем ваши данные?" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:57 +#, elixir-format msgctxt "terms" msgid "What is our data retention policy?" msgstr "Какова наша политика хранения данных?" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:67 +#, elixir-format msgctxt "terms" msgid "You may irreversibly delete your account at any time." msgstr "Вы можете в любой момент безвозвратно удалить свою учетную запись." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:115 +#, elixir-format msgctxt "terms" msgid "Changes to our Privacy Policy" msgstr "Изменения в нашей Политике конфиденциальности" -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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 (General Data Protection Regulation) do not use this site." msgstr "" @@ -285,8 +285,8 @@ msgstr "" "Общий_регламент_по_защите_данных\">Общие правила защиты данных) не " "используйте этот сайт." -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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 (Children's Online Privacy Protection Act) do not use this site." msgstr "" @@ -296,30 +296,30 @@ msgstr "" "99s_Online_Privacy_Protection_Act\">Закон о защите конфиденциальности детей " "в Интернете) не используйте этот сайт." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:117 +#, elixir-format 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.eex:112 +#, elixir-format msgctxt "terms" msgid "Law requirements can be different if this server is in another jurisdiction." msgstr "" "Требования закона могут отличаться, если этот сервер находится в другой " "юрисдикции." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:103 +#, elixir-format msgctxt "terms" msgid "Site usage by children" msgstr "Использование сайта детьми" -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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." msgstr "" @@ -329,8 +329,8 @@ msgstr "" "также для ответа на запросы, просьбы или\n" " вопросы." -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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." msgstr "" @@ -338,8 +338,8 @@ msgstr "" "адреса с другими известными, чтобы обнаружить обход бана\n" " или другие нарушения." -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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." msgstr "" @@ -348,92 +348,92 @@ msgstr "" " взаимодействовать с контентом других людей и размещать собственный " "контент, если вы вошли в систему." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:6 +#, elixir-format msgctxt "terms" msgid "What information do we collect?" msgstr "Какую информацию мы собираем?" -#, elixir-format #: lib/web/email/user.ex:176 +#, elixir-format msgid "Mobilizon on %{instance}: confirm your email address" msgstr "Mobilizon на %{instance}: подтвердите свой адрес электронной почты" -#, elixir-format #: lib/web/email/user.ex:152 +#, elixir-format msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon на %{instance}: адрес электронной почты изменен" -#, elixir-format #: lib/web/email/notification.ex:47 +#, elixir-format msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "Сегодня запланировано одно мероприятие" msgstr[1] "Сегодня запланировано %{nb_events} мероприятия" msgstr[2] "Сегодня запланировано %{nb_events} мероприятий" -#, elixir-format #: lib/web/templates/email/on_day_notification.html.eex:38 #: lib/web/templates/email/on_day_notification.text.eex:4 +#, elixir-format msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "У вас сегодня одно мероприятие:" msgstr[1] "У вас сегодня %{total} мероприятия:" msgstr[2] "У вас сегодня %{total} мероприятий:" -#, elixir-format #: lib/web/templates/email/group_invite.text.eex:3 +#, elixir-format msgid "%{inviter} just invited you to join their group %{group}" msgstr "%{inviter} только что пригласил вас присоединиться к их группе %{group}" -#, elixir-format #: lib/web/templates/email/group_invite.html.eex:13 #: lib/web/templates/email/group_invite.text.eex:1 +#, elixir-format msgid "Come along!" msgstr "Присоединяйтесь к нам!" -#, elixir-format #: lib/web/email/notification.ex:24 +#, elixir-format msgid "Don't forget to go to %{title}" msgstr "Не забудь об участии в %{title}" -#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:38 #: lib/web/templates/email/before_event_notification.text.eex:3 +#, elixir-format msgid "Get ready for %{title}" msgstr "Будь готов к %{title}" -#, elixir-format #: lib/web/templates/email/group_invite.html.eex:59 +#, elixir-format msgid "See my groups" msgstr "Посмотреть мои группы" -#, elixir-format #: lib/web/templates/email/group_invite.html.eex:45 #: lib/web/templates/email/group_invite.text.eex:5 +#, elixir-format msgid "To accept this invitation, head over to your groups." msgstr "Чтобы принять это приглашение, зайдите в свои группы." -#, elixir-format #: lib/web/templates/email/before_event_notification.text.eex:5 +#, elixir-format msgid "View the event on: %{link}" msgstr "Посмотреть мероприятие на: %{link}" -#, elixir-format #: lib/web/email/group.ex:33 +#, elixir-format msgid "You have been invited by %{inviter} to join group %{group}" msgstr "%{Inviter} пригласил вас присоединиться к группе %{group}" -#, elixir-format #: lib/web/email/notification.ex:71 +#, elixir-format msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "На этой неделе запланировано одно мероприятие" msgstr[1] "На этой неделе запланировано %{nb_events} мероприятия" msgstr[2] "На этой неделе запланировано %{nb_events} мероприятий" -#, elixir-format #: lib/web/email/notification.ex:93 +#, 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] "Одна заявка на участие в мероприятии %{title} ожидает одобрения" @@ -444,22 +444,22 @@ msgstr[2] "" "%{number_participation_requests} заявок на участие в мероприятии %{title} " "ожидают одобрения" -#, elixir-format #: lib/web/templates/email/notification_each_week.html.eex:38 #: lib/web/templates/email/notification_each_week.text.eex:3 +#, elixir-format msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "У вас одно мероприятие на этой неделе:" msgstr[1] "На этой неделе у вас запланировано %{total} мероприятия:" msgstr[2] "На этой неделе у вас запланировано %{total} мероприятий:" -#, elixir-format #: lib/service/metadata/utils.ex:52 +#, elixir-format msgid "The event organizer didn't add any description." msgstr "Организатор мероприятия не добавил описания." -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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 "" @@ -469,8 +469,8 @@ msgstr "" "между вашими приложениями и API защищены с помощью SSL/TLS, а ваш пароль " "хешируется с использованием надежного одностороннего алгоритма." -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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 "" @@ -482,20 +482,20 @@ msgstr "" "необходимо для соблюдения закона, обеспечения соблюдения политики нашего " "сайта или защиты наших или других прав, собственности или безопасности." -#, elixir-format #: lib/web/templates/api/terms.html.eex:23 +#, elixir-format msgctxt "terms" msgid "Accepting these Terms" msgstr "Принятие настоящих Условий" -#, elixir-format #: lib/web/templates/api/terms.html.eex:27 +#, elixir-format msgctxt "terms" msgid "Changes to these Terms" msgstr "Изменения в настоящих Условиях" -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" @@ -508,16 +508,16 @@ msgstr "" "возникающие в связи с использованием вами любого контента или вашего доверия " "к нему." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" "Кроме того, вы соглашаетесь с тем, что не будете делать ничего из следующего " "в отношении Сервиса или других пользователей:" -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" @@ -525,8 +525,8 @@ msgstr "" "ограничения скорости или другие функции, предназначенные для защиты Сервиса, " "пользователей Сервиса или третьих лиц." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" @@ -534,16 +534,16 @@ msgstr "" "угрожать, преследовать или иным образом беспокоить других пользователей " "Сервиса;" -#, elixir-format #: lib/web/templates/api/terms.html.eex:55 +#, elixir-format msgctxt "terms" msgid "Content that is illegal or unlawful, that would otherwise create liability;" msgstr "" "Контент, который является незаконным или повлечет за собой уголовную " "ответственность;" -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" @@ -551,40 +551,40 @@ msgstr "" "коммерческую тайну, авторское право, конфиденциальность, право на гласность " "или другие интеллектуальные и прочие права любой стороны;" -#, elixir-format #: lib/web/templates/api/terms.html.eex:42 +#, elixir-format msgctxt "terms" msgid "Creating Accounts" msgstr "Создание учётных записей" -#, elixir-format #: lib/web/templates/api/terms.html.eex:89 +#, elixir-format msgctxt "terms" msgid "Entire Agreement" msgstr "Полное согласие" -#, elixir-format #: lib/web/templates/api/terms.html.eex:92 +#, elixir-format msgctxt "terms" msgid "Feedback" msgstr "Обратная связь" -#, elixir-format #: lib/web/templates/api/terms.html.eex:83 +#, elixir-format msgctxt "terms" msgid "Hyperlinks and Third Party Content" msgstr "Гиперссылки и сторонний контент" -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" "Если вы нарушите какое-либо из этих Условий, мы имеем право временно " "приостановить или полностью заблокировать вам доступ к Сервису." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" @@ -592,8 +592,8 @@ msgstr "" "физического или юридического лица или иным образом искажать свою " "принадлежность к физическому или юридическому лицу;" -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" @@ -602,26 +602,26 @@ msgstr "" "контент, который вы предоставляете Сервису, включая его законность, " "правдивость и адекватность." -#, elixir-format #: lib/web/templates/api/terms.html.eex:39 +#, elixir-format msgctxt "terms" msgid "Privacy Policy" msgstr "Политика конфиденциальности" -#, elixir-format #: lib/web/templates/api/terms.html.eex:95 +#, elixir-format msgctxt "terms" msgid "Questions & Contact Information" msgstr "Вопросы и контактная информация" -#, elixir-format #: lib/web/templates/api/terms.html.eex:87 +#, elixir-format msgctxt "terms" msgid "Termination" msgstr "Завершение" -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" @@ -630,14 +630,14 @@ msgstr "" "Сервисом или который может повредить, вывести из строя, перегрузить или " "нарушить работу Сервиса;" -#, elixir-format #: lib/web/templates/api/terms.html.eex:47 +#, elixir-format msgctxt "terms" msgid "Your Content & Conduct" msgstr "Ваш контент и ваши действия" -#, elixir-format #: lib/web/templates/api/terms.html.eex:84 +#, elixir-format msgctxt "terms" msgid "%{instance_name} 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 %{instance_name} of the site. Use of any such linked website is at the user's own risk." msgstr "" @@ -649,8 +649,8 @@ msgstr "" "сайта. Ответственность за использование таких ссылок лежит на каждом " "пользователе." -#, elixir-format #: lib/web/templates/api/terms.html.eex:68 +#, elixir-format msgctxt "terms" msgid "Finally, your use of the Service is also subject to acceptance of the instance's own specific rules regarding the code of conduct and moderation rules. Breaking those rules may also result in your account being disabled or suspended." msgstr "" @@ -659,16 +659,16 @@ msgstr "" "модерации. Нарушение этих правил также может привести к приостановке или " "блокировки вашей учетной записи." -#, elixir-format #: lib/web/templates/api/terms.html.eex:81 +#, elixir-format msgctxt "terms" msgid "For full details about the Mobilizon software see here." msgstr "" "Для получения полной информации о Mobilizon смотреть тут." -#, elixir-format #: lib/web/templates/api/terms.html.eex:18 +#, elixir-format msgctxt "terms" msgid "Here are the important things you need to know about accessing and using the %{instance_name} (%{instance_url}) website and service (collectively, \"Service\"). These are our terms of service (\"Terms\"). Please read them carefully." msgstr "" @@ -677,8 +677,8 @@ msgstr "" ">%{instance_url}) веб-сайта и сервиса (вместе именуемые \"Сервис\"). Это " "наши условия обслуживания (\"Условия\"). Пожалуйста, прочтите их внимательно." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" @@ -687,8 +687,8 @@ msgstr "" "подвале нашего веб-сайта. Вы обязаны регулярно проверять веб-сайт на предмет " "изменений в настоящих Условиях." -#, elixir-format #: lib/web/templates/api/terms.html.eex:53 +#, elixir-format msgctxt "terms" msgid "In order to make %{instance_name} 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 "" @@ -696,16 +696,16 @@ msgstr "" "не публикуйте, не размещайте ссылки и не делайте доступными иным образом в " "нашем Сервисе любое из следующего:" -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" "Личная информация третьих лиц (например, адреса, номера телефонов, адреса " "электронной почты, номера социального страхования и номера кредитных карт); и" -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" @@ -716,8 +716,8 @@ msgstr "" "контента на других узлах на этом заканчивается. Если по какой-то причине " "какой-либо другой узел не удаляет его, то мы не несем ответственности за это." -#, elixir-format #: lib/web/templates/api/terms.html.eex:90 +#, elixir-format msgctxt "terms" msgid "These Terms constitute the entire agreement between you and %{instance_name} regarding the use of the Service, superseding any prior agreements between you and %{instance_name} relating to your use of the Service." msgstr "" @@ -726,8 +726,8 @@ msgstr "" "предыдущие соглашения между вами и %{instance_name}, касающиеся " "использования Сервиса." -#, elixir-format #: lib/web/templates/api/terms.html.eex:80 +#, elixir-format msgctxt "terms" msgid "This Service runs on a Mobilizon instance. This source code is licensed under an AGPLv3 license which means you are allowed to and even encouraged to take the source code, modify it and use it." msgstr "" @@ -736,14 +736,14 @@ msgstr "" "license-v3-(agpl-3.0)\">AGPLv3, следовательно, вам разрешено и даже " "рекомендуется брать, изменять и использовать его." -#, elixir-format #: lib/web/templates/api/terms.html.eex:58 +#, elixir-format msgctxt "terms" msgid "Viruses, corrupted data or other harmful, disruptive or destructive files or code." msgstr "Вирусы, трояны или другие вредоносные файлы или их исходный код." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" @@ -752,29 +752,29 @@ msgstr "" "нашей системе или резервной копии в течение некоторого времени. Логи веб-" "сервера также могут некоторое время храниться в системе." -#, elixir-format #: lib/web/templates/api/terms.html.eex:96 +#, elixir-format msgctxt "terms" msgid "Questions or comments about the Service may be directed to us at %{contact}" msgstr "" "Вопросы и отзывы о нашем Сервисе можно направлять нам по адресу %{contact}" -#, elixir-format #: lib/web/templates/api/terms.html.eex:79 +#, elixir-format msgctxt "terms" msgid "Source code" msgstr "Исходный код" -#, elixir-format #: lib/web/templates/api/terms.html.eex:93 +#, elixir-format msgctxt "terms" msgid "We love feedback. Please let us know what you think of the Service, these Terms and, in general, %{instance_name}." msgstr "" "Нам нравятся отзывы! Не стесняйтесь говорить, что вы думаете о Сервисе, " "настоящих Условиях и в целом о %{instance_name}." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" @@ -786,16 +786,16 @@ msgstr "" "запись, сообщество или узел за нарушение этих условий или другое поведение, " "которое они считают неуместным, угрожающим, оскорбительным или вредным." -#, elixir-format #: lib/web/templates/api/terms.html.eex:6 +#, elixir-format msgctxt "terms" msgid "%{instance_name} will not use or transmit or resell your personal data" msgstr "" "%{instance_name} не будет использовать, передавать или продавать ваши " "личные данные" -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 its contributors directly." msgstr "" @@ -804,16 +804,16 @@ msgstr "" "уязвимостей в самом программном обеспечении Mobilizon обращайтесь напрямую " "к её разработчикам." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" "Администраторы узла должны убедиться, что каждое сообщество, размещенное на " "узле, адекватно модерируется в соответствии с определенными правилами." -#, elixir-format #: lib/web/templates/api/terms.html.eex:98 +#, elixir-format msgctxt "terms" msgid "Originally adapted from the Diaspora* and App.net privacy policies, also licensed under CC BY-SA." msgstr "" @@ -822,8 +822,8 @@ msgstr "" "service\">App.net, которые находятся под лицензией CC BY-SA." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:119 +#, elixir-format msgctxt "terms" msgid "Originally adapted from the Mastodon and Discourse privacy policies, also licensed under CC BY-SA." msgstr "" @@ -832,115 +832,115 @@ msgstr "" "discourse\">Discourse, которые находятся под лицензией CC BY-SA." -#, elixir-format #: lib/web/templates/api/terms.html.eex:3 +#, elixir-format msgctxt "terms" msgid "Short version" msgstr "Сокращённая версия" -#, elixir-format #: lib/web/templates/api/terms.html.eex:9 +#, elixir-format 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.eex:118 +#, elixir-format msgctxt "terms" msgid "This document is licensed under CC BY-SA. It was last updated June 18, 2020." msgstr "" "Этот документ находится под лицензией CC BY-SA. Последний раз обновлялся 18 июня 2020." -#, elixir-format #: lib/web/templates/api/terms.html.eex:97 +#, elixir-format msgctxt "terms" msgid "This document is licensed under CC BY-SA. It was last updated June 22, 2020." msgstr "" "Этот документ находится под лицензиейCC BY-SA. Последний раз обновлялся 22 июня 2020." -#, elixir-format #: lib/web/templates/api/terms.html.eex:8 +#, elixir-format msgctxt "terms" msgid "You must respect other people and %{instance_name}'s rules when using the service" msgstr "" "Вы должны уважать других людей и правила %{instance_name} используя " "этот сервис" -#, elixir-format #: lib/web/templates/api/terms.html.eex:7 +#, elixir-format msgctxt "terms" msgid "You must respect the law when using %{instance_name}" msgstr "Вы должны соблюдать законы при использовании %{instance_name}" -#, elixir-format #: lib/web/templates/api/terms.html.eex:5 +#, elixir-format msgctxt "terms" msgid "Your content is yours" msgstr "Ваши данные принадлежат вам" -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:51 +#, elixir-format msgid "Confirm my e-mail address" msgstr "Подтвердите мой адрес электронной почты" -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:13 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:1 +#, elixir-format msgid "Confirm your e-mail" msgstr "Подтвердите ваш адрес электронной почты" -#, elixir-format #: 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 "" "Привет! Вы только что зарегистрировались, чтобы присоединиться к мероприятию:" " « % {title} ». Пожалуйста, подтвердите адрес электронной почты, который вы " "указали:" -#, elixir-format #: lib/web/templates/email/email.html.eex:114 #: lib/web/templates/email/email.text.eex:8 +#, elixir-format msgid "Need help? Is something not working as expected?" msgstr "Нужна помощь? Что-то не работает?" -#, elixir-format #: lib/web/templates/email/registration_confirmation.html.eex:38 +#, elixir-format msgid "You created an account on %{host} with this email address. You are one click away from activating it." msgstr "" "Вы создали на %{host} учётную запись с данным адресом электронной " "почты. Вы в одном клике от его активации." -#, elixir-format #: lib/web/templates/email/report.html.eex:13 +#, elixir-format msgid "New report on %{instance}" msgstr "Новый отчёт на %{instance}" -#, elixir-format #: lib/web/templates/email/email_changed_old.html.eex:38 +#, elixir-format msgid "The email address for your account on %{host} is being changed to:" msgstr "" "Адрес электронной почты вашего аккаунта на %{host} будет изменен на:" -#, elixir-format #: lib/web/templates/email/password_reset.html.eex:38 +#, elixir-format msgid "You requested a new password for your account on %{instance}." msgstr "" "Вы запросили новый пароль для своей учетной записи на %{instance}." -#, elixir-format #: lib/web/templates/email/email.text.eex:5 +#, elixir-format msgid "Please do not use it for real purposes." msgstr "Пожалуйста, используйте это только для тестовых целей." -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:63 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.eex:133 #: lib/web/templates/email/event_updated.text.eex:24 lib/web/templates/email/notification_each_week.html.eex:70 #: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.eex:70 #: lib/web/templates/email/on_day_notification.text.eex:14 +#, elixir-format 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] "" @@ -955,9 +955,9 @@ msgstr[2] "" "просто перейдите на страницы мероприятий по указанным выше ссылкам и нажмите " "кнопку « Я участвую »." -#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:38 #: lib/web/templates/email/pending_participation_notification.text.eex:4 +#, elixir-format msgid "You have one pending attendance request to process:" msgid_plural "You have %{number_participation_requests} attendance requests to process:" msgstr[0] "У вас есть ожидающий рассмотрения запрос на участие:" @@ -968,66 +968,66 @@ msgstr[2] "" "У вас есть %{number_participation_requests} ожидающих рассмотрения запросов " "на участие:" -#, elixir-format #: lib/web/templates/email/email.text.eex:11 +#, elixir-format msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} работает на платформе Mobilizon." -#, elixir-format #: lib/web/templates/email/email.html.eex:142 +#, elixir-format msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} работает на платформе Mobilizon." -#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:13 #: lib/web/templates/email/pending_participation_notification.text.eex:1 +#, elixir-format msgid "A request is pending!" msgstr "Заявка находится на рассмотрении!" -#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:13 #: lib/web/templates/email/before_event_notification.text.eex:1 +#, elixir-format msgid "An event is upcoming!" msgstr "Скоро начало мероприятия!" -#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:13 #: lib/web/templates/email/email_changed_new.text.eex:1 +#, elixir-format msgid "Confirm new email" msgstr "Подтвердите новый адрес электронной почты" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:84 +#, elixir-format msgid "End" msgstr "Конец" -#, elixir-format #: lib/web/templates/email/event_updated.text.eex:21 +#, elixir-format msgid "End %{ends_on}" msgstr "Конец %{ends_on}" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:13 #: lib/web/templates/email/event_updated.text.eex:1 +#, elixir-format msgid "Event update!" msgstr "Мероприятие обновлено!" -#, elixir-format #: lib/web/templates/email/report.html.eex:88 +#, elixir-format msgid "Flagged comments" msgstr "Помеченные комментарии" -#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:45 #: lib/web/templates/email/event_participation_approved.text.eex:7 +#, elixir-format 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.eex: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 %{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 "" "Привет! Похоже, вы хотели изменить адрес электронной почты, связанный с " @@ -1035,16 +1035,16 @@ msgstr "" "это, нажмите кнопку ниже, чтобы подтвердить изменение. После этого вы " "сможете войти в %{instance} с новым адресом электронной почты." -#, elixir-format #: 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 "" "Привет! Мы просто хотели сообщить вам, что адрес электронной почты, который " "ранее был связан с вашей учетной записью на %{host}, был изменен с этого на:" -#, elixir-format #: lib/web/templates/email/email_changed_old.html.eex:62 #: lib/web/templates/email/email_changed_old.text.eex:5 +#, elixir-format msgid "If you did not trigger this change yourself, it is likely that someone has gained access to your %{host} account. Please log in and change your password immediately. If you cannot login, contact the admin on %{host}." msgstr "" "Если вы не активировали это изменение самостоятельно, вероятно, кто-то " @@ -1052,174 +1052,174 @@ msgstr "" "немедленно измените свой пароль. Если вам не удается войти в систему, " "обратитесь к администратору %{host}." -#, elixir-format #: 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 "" "Если вы не активировали это изменение самостоятельно, проигнорируйте это " "сообщение. Ваш пароль не будет изменен, пока вы не нажмете ссылку выше." -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:70 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.eex:45 +#, elixir-format msgid "If you didn't trigger this email, you may safely ignore it." msgstr "" "Если вы не оставляли этот запрос, пожалуйста, проигнорируйте данное письмо." -#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:63 #: lib/web/templates/email/before_event_notification.text.eex:6 +#, elixir-format 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.eex:143 #: lib/web/templates/email/email.text.eex:11 +#, elixir-format msgid "Learn more about Mobilizon here!" msgstr "Узнайте больше о Mobilizon!" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:94 +#, elixir-format msgid "Location" msgstr "Место расположения" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:104 +#, elixir-format msgid "Location address was removed" msgstr "Адрес местоположения был удален" -#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:51 #: lib/web/templates/email/pending_participation_notification.text.eex:6 +#, elixir-format msgid "Manage pending requests" msgstr "Управление запросами в ожидании" -#, elixir-format #: lib/web/templates/email/registration_confirmation.html.eex:13 #: lib/web/templates/email/registration_confirmation.text.eex:1 +#, elixir-format msgid "Nearly there!" msgstr "Почти готово!" -#, elixir-format #: lib/web/templates/email/email_changed_old.html.eex:13 #: lib/web/templates/email/email_changed_old.text.eex:1 +#, elixir-format msgid "New email confirmation" msgstr "Подтверждение нового адреса электронной почты" -#, elixir-format #: lib/web/templates/email/report.html.eex:106 +#, elixir-format msgid "Reasons for report" msgstr "Причина жалобы" -#, elixir-format #: lib/web/templates/email/report.html.eex:39 +#, elixir-format msgid "Someone on %{instance} reported the following content for you to analyze:" msgstr "Кто-то на %{instance} сообщил вам о следующем содержимом:" -#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.eex:13 #: lib/web/templates/email/event_participation_rejected.text.eex:1 +#, elixir-format msgid "Sorry! You're not going." msgstr "Очень жаль! Вы не будете участвовать." -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:74 +#, elixir-format msgid "Start" msgstr "Начало" -#, elixir-format #: lib/web/templates/email/event_updated.text.eex:18 +#, elixir-format msgid "Start %{begins_on}" msgstr "Начало %{begins_on}" -#, elixir-format #: 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 "В %{title} произошли изменения, поэтому мы решили сообщить вам об этом." -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:55 #: lib/web/templates/email/event_updated.text.eex:11 +#, elixir-format msgid "This event has been cancelled by its organizers. Sorry!" msgstr "Мероприятие отменено организаторами. Очень жаль!" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:51 #: lib/web/templates/email/event_updated.text.eex:7 +#, elixir-format msgid "This event has been confirmed" msgstr "Мероприятие подтверждено" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:53 #: lib/web/templates/email/event_updated.text.eex:9 +#, elixir-format 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.eex:45 #: lib/web/templates/email/event_participation_rejected.text.eex:7 +#, elixir-format msgid "Unfortunately, the organizers rejected your request." msgstr "К сожалению, организаторы отклонили ваше участие." -#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:51 +#, elixir-format msgid "Verify your email address" msgstr "Проверьте свой адрес электронной почты" -#, elixir-format #: lib/web/templates/email/report.html.eex:126 +#, elixir-format msgid "View report" msgstr "Смотреть отчёт" -#, elixir-format #: lib/web/templates/email/report.text.eex:24 +#, elixir-format msgid "View report:" msgstr "Смотреть отчёт:" -#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:58 #: lib/web/templates/email/event_participation_confirmed.html.eex:58 +#, elixir-format msgid "Visit event page" msgstr "Посетите страницу мероприятия" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:121 +#, elixir-format msgid "Visit the updated event page" msgstr "Посетите обновленную страницу мероприятия" -#, elixir-format #: lib/web/templates/email/event_updated.text.eex:23 +#, elixir-format msgid "Visit the updated event page: %{link}" msgstr "Посетите обновленную страницу мероприятия: %{link}" -#, elixir-format #: lib/web/templates/email/notification_each_week.html.eex:13 #: lib/web/templates/email/notification_each_week.text.eex:1 +#, elixir-format msgid "What's up this week?" msgstr "Что будет на этой неделе?" -#, elixir-format #: lib/web/templates/email/on_day_notification.html.eex:13 #: lib/web/templates/email/on_day_notification.text.eex:1 +#, elixir-format msgid "What's up today?" msgstr "Что будет сегодня?" -#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:70 #: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.eex: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." msgstr "" "Если вы хотите обновить или отменить свое участие, просто перейдите на " "страницу мероприятия по ссылке выше и нажмите кнопку « Я участвую »." -#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:64 #: lib/web/templates/email/pending_participation_notification.text.eex:8 +#, elixir-format 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 "" "Вы получили это письмо, потому что выбрали получение уведомлений об " @@ -1227,133 +1227,133 @@ msgstr "" "изменить настройки уведомлений в настройках своей учетной записи в разделе « " "Уведомления »." -#, elixir-format #: lib/web/templates/email/event_participation_rejected.text.eex:5 +#, elixir-format msgid "You issued a request to attend %{title}." msgstr "Вы подали заявку на участие в %{title}." -#, elixir-format #: lib/web/templates/email/event_participation_approved.text.eex:5 #: lib/web/templates/email/event_participation_confirmed.text.eex:3 +#, elixir-format msgid "You recently requested to attend %{title}." msgstr "Вы недавно подали заявку на присоединение к %{title}." -#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:13 #: lib/web/templates/email/event_participation_confirmed.html.eex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 +#, elixir-format msgid "You're going!" msgstr "Вы примете участие!" -#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:64 #: lib/web/templates/email/email_changed_new.text.eex:5 +#, elixir-format msgid "If you didn't trigger the change yourself, please ignore this message." msgstr "" "Если вы не активировали изменение самостоятельно, проигнорируйте это " "сообщение." -#, elixir-format #: lib/web/templates/email/email.html.eex:89 +#, elixir-format msgid "Please do not use it for real purposes." msgstr "Пожалуйста, используйте это только для тестовых целей." -#, elixir-format #: lib/web/templates/email/group_member_removal.html.eex:45 #: lib/web/templates/email/group_member_removal.text.eex:5 +#, elixir-format 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.eex:13 #: lib/web/templates/email/group_member_removal.text.eex:1 +#, elixir-format msgid "So long, and thanks for the fish!" msgstr "Всего хорошего, и спасибо за рыбу!" -#, elixir-format #: lib/web/email/group.ex:63 +#, elixir-format msgid "You have been removed from group %{group}" msgstr "Вас исключили из группы %{group}" -#, elixir-format #: 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 "" "Вас исключили из группы %{group}. Вы больше не сможете получить доступ к " "приватному контенту этой группы." -#, elixir-format #: lib/web/templates/email/group_invite.html.eex:38 +#, elixir-format msgid "%{inviter} just invited you to join their group %{link_start}%{group}%{link_end}" msgstr "" "%{inviter} только что пригласил вас присоединиться к их группе " "%{link_start}%{group}%{link_end}" -#, elixir-format #: lib/web/templates/email/group_member_removal.html.eex:38 +#, elixir-format msgid "You have been removed from group %{link_start}%{group}%{link_end}. You will not be able to access this group's private content anymore." msgstr "" "Вас исключили из группы %{link_start}%{group}%{link_end}. Вы больше " "не сможете получить доступ к приватному контенту этой группы." -#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:54 #: lib/web/templates/email/group_suspension.text.eex:7 +#, elixir-format 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.eex:46 #: lib/web/templates/email/group_suspension.text.eex:5 +#, elixir-format 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_deletion.html.eex:38 #: lib/web/templates/email/group_deletion.text.eex:3 +#, elixir-format msgid "The administrator %{author} deleted group %{group}. All of the group's events, discussions, posts and todos have been deleted." msgstr "" "Администратор %{author} удалил группу %{group}. Все мероприятия, обсуждения, " "сообщения и записи связанные с ней были удалены." -#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:13 #: lib/web/templates/email/group_suspension.text.eex:1 +#, elixir-format msgid "The group %{group} has been suspended on %{instance}!" msgstr "Группа %{group} заблокирована на %{instance}!" -#, elixir-format #: lib/web/templates/email/group_deletion.html.eex:13 #: lib/web/templates/email/group_deletion.text.eex:1 +#, elixir-format msgid "The group %{group} was deleted on %{instance}!" msgstr "Группа %{group} удалена на %{instance}!" -#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:38 #: 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 "" "Команда модераторов вашего узла приняла решение приостановить работу " "%{group_name} (%{group_address}). Вы больше не являетесь участником этой " "группы." -#, elixir-format #: lib/web/email/group.ex:136 +#, elixir-format msgid "The group %{group} has been deleted on %{instance}" msgstr "Группа %{group} удалена на %{instance}" -#, elixir-format #: lib/web/email/group.ex:97 +#, elixir-format msgid "The group %{group} has been suspended on %{instance}" msgstr "Группа %{group} заблокирована на %{instance}" -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" @@ -1361,8 +1361,8 @@ msgstr "" "ниже условиями. Если некоторые из этих условий вам неясны, сообщите нам об " "этом, связавшись с %{contact}." -#, elixir-format #: lib/web/templates/api/terms.html.eex:40 +#, elixir-format msgctxt "terms" msgid "For information about how we collect and use information about users of the Service, please check our privacy policy." msgstr "" @@ -1370,22 +1370,22 @@ msgstr "" "пользователях Сервиса, ознакомьтесь с нашей политикой " "конфиденциальности." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" "Если вы продолжите использовать Сервис после вступления в силу измененных " "Условий, значит вы соглашаетесь с ними." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:78 +#, elixir-format msgctxt "terms" msgid "If you delete this information, you need to login again." msgstr "Если вы удалите эту информацию, вам придётся снова войти в систему." -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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 "" @@ -1395,31 +1395,31 @@ msgstr "" "идентификатора мероприятия и статус участия. Удаление этой информации " "приведет только к прекращению отображения статуса участия в браузере." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:87 +#, elixir-format msgctxt "terms" msgid "Note: This information is stored in your localStorage and not your cookies." msgstr "" "Примечание: Эта информация хранится в вашем локальном хранилище, а не в " "куках." -#, elixir-format #: lib/web/templates/api/terms.html.eex:71 +#, elixir-format msgctxt "terms" msgid "Our responsibility" msgstr "Наша ответственность" -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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 "" "Хранить логи сервера, содержащие IP-адреса всех запросов к этому серверу, " "если таковые имеются, не более 90 дней." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:3 #: lib/web/templates/api/terms.html.eex:15 +#, elixir-format 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 glossary to help you understand them better." msgstr "" @@ -1427,8 +1427,8 @@ msgstr "" "тексте, могут охватывать трудные для понимания концепции. Мы подготовили глоссарий, чтобы помочь вам лучше их освоить." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" @@ -1436,8 +1436,8 @@ msgstr "" "результате использования кем-либо вашего адреса электронной почты или " "пароля, с вашего ведома или без него." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" @@ -1447,8 +1447,8 @@ msgstr "" "права на контент, который вы публикуете, ссылаетесь или иным образом делаете " "доступным на Сервисе или через него." -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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 an email address, a password (hashed) and at least an username. 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 a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly. You may however visit this instance without registering." msgstr "" @@ -1465,16 +1465,16 @@ msgstr "" "отображаемое имя, биография, аватарка и логотип всегда общедоступны. " "Однако вы можете пользоваться этим узел без регистрации." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" "Мы оставляем за собой право изменять эти Условия в любое время. Например, " "нам может потребоваться сделать это при добавлении новой функции." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 Framasoft, 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 \"About this instance\" page." msgstr "" @@ -1487,8 +1487,8 @@ msgstr "" "использующей исходный код Mobilizon. Дополнительную информацию об этом узле " "можно найти на странице «Об этом узле»." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 %{instance_name}." msgstr "" @@ -1497,8 +1497,8 @@ msgstr "" "доступа к данным вашей учетной записи и любой другой информации, которую вы " "предоставляете %{instance_name}." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" @@ -1511,8 +1511,8 @@ msgstr "" "в соответствии с правилами видимости, которые вы установили для него. Мы не " "будем изменять видимость установленного вами контента." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:19 +#, elixir-format msgctxt "terms" msgid "Your events and comments 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 "" @@ -1526,8 +1526,8 @@ msgstr "" "что получатели могут делать снимки экрана, копировать или иным образом " "повторно делиться ими." -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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 "" @@ -1536,208 +1536,208 @@ msgstr "" "Групповой контент, отправляется на узлы всех участников группы, если эти " "участники находятся на отличном от этого узле." -#, elixir-format #: 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 "" "Вы подтвердили свое участие. Обновите свой календарь, потому что теперь вы в " "списке гостей!" -#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:38 #: lib/web/templates/email/event_participation_confirmed.html.eex:38 +#, elixir-format msgid "You recently requested to attend %{title}." msgstr "Вы недавно запросили участие в мероприятии %{title}." -#, elixir-format #: lib/web/email/participation.ex:91 +#, elixir-format msgid "Your participation to event %{title} has been confirmed" msgstr "Ваше участие в мероприятии %{title} одобрено" -#, elixir-format #: lib/web/templates/email/report.html.eex:41 +#, elixir-format msgid "%{reporter} reported the following content." msgstr "%{reporter} сообщил о следующем содержимом." -#, elixir-format #: lib/web/templates/email/report.text.eex:5 +#, elixir-format msgid "Group %{group} was reported" msgstr "Группа %{group} сообщила" -#, elixir-format #: lib/web/templates/email/report.html.eex:51 +#, elixir-format msgid "Group reported" msgstr "Группа сообщила" -#, elixir-format #: lib/web/templates/email/report.text.eex:7 +#, elixir-format msgid "Profile %{profile} was reported" msgstr "Профиль %{profile} сообщил" -#, elixir-format #: lib/web/templates/email/report.html.eex:56 +#, elixir-format msgid "Profile reported" msgstr "Профиль сообщил" -#, elixir-format #: lib/web/templates/email/event_participation_confirmed.html.eex:45 +#, elixir-format 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:94 +#, elixir-format msgid "A text is required for the post" msgstr "Для публикации требуется текст" -#, elixir-format #: lib/mobilizon/posts/post.ex:93 +#, elixir-format msgid "A title is required for the post" msgstr "Для публикации требуется заголовок" -#, elixir-format #: lib/web/templates/email/instance_follow.text.eex:3 +#, elixir-format msgid "%{name} (%{domain}) just requested to follow your instance." msgstr "%{name} (%{domain}) только что попросил подписаться на ваш узел." -#, elixir-format #: lib/web/email/follow.ex:54 +#, elixir-format msgid "%{name} requests to follow your instance" msgstr "%{name} просит подписаться на ваш узел" -#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:38 +#, elixir-format msgid "%{name} (%{domain}) just requested to follow your instance. If you accept, this instance will receive all of your instance's public events." msgstr "" "%{name} (%{domain}) только что просил подписаться на ваш узел. Если " "вы согласитесь, то этот узел будет получать все публичные события вашего " "узла." -#, elixir-format #: 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 "" "Если вы согласитесь, то этот узел будет получать все публичные события " "вашего узла." -#, elixir-format #: lib/web/email/follow.ex:48 +#, elixir-format msgid "Instance %{name} (%{domain}) requests to follow your instance" msgstr "Узел %{name} (%{domain}) просит подписаться на ваш узел" -#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:66 +#, elixir-format msgid "See the federation settings" msgstr "Смотри настройки федерализации" -#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:52 #: lib/web/templates/email/instance_follow.text.eex:6 +#, elixir-format msgid "To accept this invitation, head over to the instance's admin settings." msgstr "Чтобы принять это приглашение, перейдите в админку узла." -#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:13 #: lib/web/templates/email/instance_follow.text.eex:1 +#, elixir-format msgid "Want to connect?" msgstr "Вы хотите подключиться?" -#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:45 #: lib/web/templates/email/instance_follow.text.eex:5 +#, elixir-format msgid "Note: %{name} (%{domain}) following you doesn't necessarily imply that you follow this instance, but you can ask to follow them too." msgstr "" "Примечание: Подписка %{name} (%{domain}) на вас не обязательно означает, что " "вы подписаны на этот узел, но вы также можете запросить подписку на него." -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:38 +#, elixir-format msgid "Hi there! You just registered to join this event: « %{title} ». Please confirm the e-mail address you provided:" msgstr "" "Привет! Вы только что зарегистрировались для участия в этом мероприятии: « " "%{title} ». Пожалуйста, подтвердите адрес электронной почты, который " "вы указали:" -#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.eex:38 +#, elixir-format msgid "You issued a request to attend %{title}." msgstr "Вы отправили запрос на участие в %{title}." -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:64 +#, elixir-format msgid "Event title" msgstr "Название мероприятия" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:38 +#, elixir-format msgid "There have been changes for %{title} so we'd thought we'd let you know." msgstr "" "В %{title} были внесены изменения, поэтому мы решили сообщить вам об " "этом." -#, elixir-format #: lib/web/templates/error/500_page.html.eex:7 +#, elixir-format msgid "This page is not correct" msgstr "Эта страница недействительна" -#, elixir-format #: lib/web/templates/error/500_page.html.eex:50 +#, elixir-format msgid "We're sorry, but something went wrong on our end." msgstr "Сожалеем, но с нашей стороны что-то пошло не так." -#, elixir-format #: lib/web/templates/email/email.html.eex:88 #: lib/web/templates/email/email.text.eex:4 +#, elixir-format msgid "This is a demonstration site to test Mobilizon." msgstr "Это демонстрационный сайт, на котором вы можете опробовать Mobilizon." -#, elixir-format #: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60 #: lib/service/metadata/instance.ex:54 lib/service/metadata/instance.ex:60 +#, elixir-format msgid "%{name}'s feed" msgstr "Лента %{name}" -#, elixir-format #: lib/service/export/feed.ex:120 +#, elixir-format msgid "%{actor}'s private events feed on %{instance}" msgstr "Лента приватных мероприятий от %{actor} на %{instance}" -#, elixir-format #: lib/service/export/feed.ex:115 +#, elixir-format msgid "%{actor}'s public events feed on %{instance}" msgstr "Лента публичных мероприятий от %{actor} на %{instance}" -#, elixir-format #: lib/service/export/feed.ex:220 +#, elixir-format msgid "Feed for %{email} on %{instance}" msgstr "Лента для %{email} на %{instance}" -#, elixir-format #: lib/web/templates/error/500_page.html.eex:57 +#, elixir-format msgid "If the issue persists, you may contact the server administrator at %{contact}." msgstr "" "Если проблема не исчезнет, вы можете связаться с администратором сервера по " "адресу %{contact}." -#, elixir-format #: lib/web/templates/error/500_page.html.eex:55 +#, elixir-format msgid "If the issue persists, you may try to contact the server administrator." msgstr "" "Если проблема не исчезнет, вы можете попытаться связаться с администратором " "сервера." -#, elixir-format #: lib/web/templates/error/500_page.html.eex:68 +#, elixir-format msgid "Technical details" msgstr "Технические детали" -#, elixir-format #: lib/web/templates/error/500_page.html.eex:52 +#, elixir-format msgid "The Mobilizon server %{instance} seems to be temporarily down." msgstr "Сервер Mobilizon %{instance} временно недоступен." -#, elixir-format #: lib/service/export/feed.ex:73 +#, elixir-format msgid "Public feed for %{instance}" -msgstr "" +msgstr "Публичная лента для %{instance}" From e5b76f0566cc0f6ea20a54517f4d0c839e5b6644 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jos=C3=A9=20m?= Date: Fri, 30 Apr 2021 03:43:21 +0000 Subject: [PATCH 22/24] Translated using Weblate (Galician) Currently translated at 99.8% (991 of 992 strings) Translation: Mobilizon/Frontend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/gl/ --- js/src/i18n/gl.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/js/src/i18n/gl.json b/js/src/i18n/gl.json index 089204c5a..c392776b2 100644 --- a/js/src/i18n/gl.json +++ b/js/src/i18n/gl.json @@ -131,7 +131,6 @@ "Click to upload": "Preme para subir", "Close": "Pechar", "Close comments for all (except for admins)": "Pechar comentarios para todos (excepto admins)", - "Events nearby": "Pechar eventos", "Closed": "Pechado", "Comment deleted": "Comentario eliminado", "Comment from @{username} reported": "Comentario de @{username} denunciado", @@ -278,6 +277,7 @@ "Event {eventTitle} deleted": "Eliminado o evento {eventTitle}", "Event {eventTitle} reported": "Denunciado o evento {eventTitle}", "Events": "Eventos", + "Events nearby": "Pechar eventos", "Events tagged with {tag}": "Eventos etiquetados con {tag}", "Everything": "Todo", "Ex: mobilizon.fr": "Ex: mobilizon.fr", @@ -493,6 +493,7 @@ "No message": "Sen mensaxe", "No moderation logs yet": "Sen rexistros da moderación", "No more activity to display.": "Sen máis actividade que amosar.", + "No one is participating|One person participating|{going} people participating": "Ninguén está a participar|Unha persoa participa|{going} persoas participan", "No open reports yet": "Aínda non se presentaron denuncias", "No participant matches the filters": "Ningún participante para estos filtros", "No participant to approve|Approve participant|Approve {number} participants": "Sen participantes que aprobar|Aprobar participante|Aprobar {number} participantes", @@ -1018,10 +1019,15 @@ "{moderator} added a note on {report}": "{moderator} engadeu unha nota a {report}", "{moderator} closed {report}": "{moderator} pechou {report}", "{moderator} deleted an event named \"{title}\"": "{moderator} eliminou o evento de nome \"{title}\"", + "{moderator} has deleted a comment from {author}": "{moderator} eleminou o comentario de {author}", + "{moderator} has deleted a comment from {author} under the event {event}": "{moderator} eliminou o comentario de {author} no evento {event}", "{moderator} has deleted user {user}": "{moderator} eliminou a usuaria {user}", + "{moderator} has done an unknown action": "{moderator} realizou unha acción descoñecida", + "{moderator} has unsuspended group {profile}": "{moderator} retirou a suspensión ao grupo {profile}", "{moderator} has unsuspended profile {profile}": "{moderator} reactivou o perfil {profile}", "{moderator} marked {report} as resolved": "{moderator} marcou {report} como resolta", "{moderator} reopened {report}": "{moderator} reabreu {report}", + "{moderator} suspended group {profile}": "{moderator} suspendeu o grupo {profile}", "{moderator} suspended profile {profile}": "{moderator} suspendeu o perfil {profile}", "{nb} km": "{nb} km", "{number} members": "{number} membros", From 7717f50818987bacbeafee81b9c681287323cf64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jos=C3=A9=20m?= Date: Fri, 30 Apr 2021 03:44:37 +0000 Subject: [PATCH 23/24] Translated using Weblate (Galician) Currently translated at 100.0% (245 of 245 strings) Translation: Mobilizon/Backend Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/gl/ --- priv/gettext/gl/LC_MESSAGES/default.po | 496 ++++++++++++------------- 1 file changed, 248 insertions(+), 248 deletions(-) diff --git a/priv/gettext/gl/LC_MESSAGES/default.po b/priv/gettext/gl/LC_MESSAGES/default.po index 56231825a..951735a16 100644 --- a/priv/gettext/gl/LC_MESSAGES/default.po +++ b/priv/gettext/gl/LC_MESSAGES/default.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-10-18 04:49+0000\n" -"PO-Revision-Date: 2021-03-11 08:51+0000\n" +"PO-Revision-Date: 2021-05-01 10:59+0000\n" "Last-Translator: josé m. \n" "Language-Team: Galician \n" @@ -12,267 +12,267 @@ msgstr "" "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.5.1\n" +"X-Generator: Weblate 4.6\n" -#, elixir-format #: lib/web/templates/email/password_reset.html.eex: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 "" "Se non solicitaches isto, ignora este email. O teu constrasinal non cambiará " "ata que accedas á ligazón inferior e cres un novo." -#, elixir-format #: lib/web/templates/email/report.html.eex:74 +#, elixir-format msgid "%{title} by %{creator}" msgstr "%{title} por %{creator}" -#, elixir-format #: lib/web/templates/email/registration_confirmation.html.eex:58 +#, elixir-format msgid "Activate my account" msgstr "Activar a miña conta" -#, elixir-format #: lib/web/templates/email/email.html.eex:117 #: lib/web/templates/email/email.text.eex:9 +#, elixir-format msgid "Ask the community on Framacolibri" msgstr "Pregunta á comunidade en Framacolibri" -#, elixir-format #: lib/web/templates/email/report.text.eex:15 +#, elixir-format msgid "Comments" msgstr "Comentarios" -#, elixir-format #: lib/web/templates/email/report.html.eex:72 #: lib/web/templates/email/report.text.eex:11 +#, elixir-format msgid "Event" msgstr "Evento" -#, elixir-format #: lib/web/email/user.ex:48 +#, elixir-format msgid "Instructions to reset your password on %{instance}" msgstr "Instruccións para restablecer o contrasinal en %{instance}" -#, elixir-format #: lib/web/templates/email/report.text.eex:21 +#, elixir-format msgid "Reason" msgstr "Razón" -#, elixir-format #: lib/web/templates/email/password_reset.html.eex:61 +#, elixir-format msgid "Reset Password" msgstr "Restablecer Contrasinal" -#, elixir-format #: lib/web/templates/email/password_reset.html.eex: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 "" "Restablecer o contrasinal é doado. Preme no botón inferior e segue as " "instrucción. Volverás a poder conectarte nuns intres." -#, elixir-format #: lib/web/email/user.ex:28 +#, elixir-format msgid "Instructions to confirm your Mobilizon account on %{instance}" msgstr "Instruccións para confirmar a túa conta Mobilizon en %{instance}" -#, elixir-format #: lib/web/email/admin.ex:24 +#, elixir-format msgid "New report on Mobilizon instance %{instance}" msgstr "Nova denuncia sobre a instancia Mobilizon %{instance}" -#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:51 #: lib/web/templates/email/before_event_notification.text.eex:4 +#, elixir-format msgid "Go to event page" msgstr "Ir á páxina do evento" -#, elixir-format #: lib/web/templates/email/report.text.eex:1 +#, elixir-format msgid "New report from %{reporter} on %{instance}" msgstr "Nova denuncia de %{reporter} sobre %{instance}" -#, elixir-format #: lib/web/templates/email/event_participation_approved.text.eex:1 +#, elixir-format msgid "Participation approved" msgstr "Participación aprobada" -#, elixir-format #: lib/web/templates/email/password_reset.html.eex:13 #: lib/web/templates/email/password_reset.text.eex:1 +#, elixir-format msgid "Password reset" msgstr "Restablece o contrasinal" -#, elixir-format #: 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 "" "Restablecer o contrasinal é doado. Preme na ligazón inferior e segue as " "instruccións. Moi pronto poderás volver e conectarte." -#, elixir-format #: 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 "" "Creaches unha conta en %{host} con este enderezo de email. Só precisas " "activalo. Se non foches ti, por favor ignora este email." -#, elixir-format #: lib/web/email/participation.ex:112 +#, elixir-format msgid "Your participation to event %{title} has been approved" msgstr "Foi aprobada a túa participación no evento %{title}" -#, elixir-format #: lib/web/email/participation.ex:70 +#, elixir-format msgid "Your participation to event %{title} has been rejected" msgstr "Foi rexeitada a túa participación no evento %{title}" -#, elixir-format #: lib/web/email/event.ex:37 +#, elixir-format msgid "Event %{title} has been updated" msgstr "Actualizouse o evento %{title}" -#, elixir-format #: lib/web/templates/email/event_updated.text.eex:15 +#, elixir-format msgid "New title: %{title}" msgstr "Novo título: %{title}" -#, elixir-format #: lib/web/templates/email/password_reset.text.eex:5 +#, elixir-format msgid "You requested a new password for your account on %{instance}." msgstr "" "Solicitaches un novo contrasinal para a túa conta na instancia %{instance]." -#, elixir-format #: lib/web/templates/email/email.html.eex:85 +#, elixir-format msgid "Warning" msgstr "Aviso" -#, elixir-format #: lib/web/email/participation.ex:135 +#, elixir-format msgid "Confirm your participation to event %{title}" msgstr "Confirma a túa participación no evento %{title}" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:75 +#, elixir-format msgctxt "terms" msgid "An internal ID for your current selected identity" msgstr "ID interno para a túa identidade seleccionada" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:74 +#, elixir-format msgctxt "terms" msgid "An internal user ID" msgstr "ID de usuaria interno" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:37 +#, elixir-format msgctxt "terms" msgid "Any of the information we collect from you may be used in the following ways:" msgstr "" "Calquera información que obtemos de ti podería usarse dos seguintes xeitos:" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:9 +#, elixir-format msgctxt "terms" msgid "Basic account information" msgstr "Información básica da conta" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:25 +#, elixir-format msgctxt "terms" msgid "Do not share any dangerous information over Mobilizon." msgstr "Non compartas informacións perigosas en Mobilizon." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:90 +#, elixir-format msgctxt "terms" msgid "Do we disclose any information to outside parties?" msgstr "Enviamos información a terceiras partes alleas?" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:68 +#, elixir-format msgctxt "terms" msgid "Do we use cookies?" msgstr "Usamos cookies?" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:51 +#, elixir-format msgctxt "terms" msgid "How do we protect your information?" msgstr "Como protexemos a túa información?" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:29 +#, elixir-format msgctxt "terms" msgid "IPs and other metadata" msgstr "IPs e outros metadatos" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:17 +#, elixir-format msgctxt "terms" msgid "Published events and comments" msgstr "Eventos publicados e comentarios" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:64 +#, elixir-format msgctxt "terms" msgid "Retain the IP addresses associated with registered users no more than 12 months." msgstr "" "Retención de enderezos IP asociados con usuarias rexistradas durante non " "máis de 12 meses." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:76 +#, elixir-format msgctxt "terms" msgid "Tokens to authenticate you" msgstr "Tokens para autenticarte" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:31 +#, elixir-format msgctxt "terms" msgid "We also may retain server logs which include the IP address of every request to our server." msgstr "" "Tamén retemos rexistros do servidor que inclúen enderezos IP de cada " "solicitude ó noso servidor." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:70 +#, elixir-format msgctxt "terms" msgid "We store the following information on your device when you connect:" msgstr "Gardamos información no teu dispositivo cando te conectas:" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:58 +#, elixir-format msgctxt "terms" msgid "We will make a good faith effort to:" msgstr "Esforzarémonos de boa fe para:" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:35 +#, elixir-format msgctxt "terms" msgid "What do we use your information for?" msgstr "Para que usamos a túa información?" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:57 +#, elixir-format msgctxt "terms" msgid "What is our data retention policy?" msgstr "Cal é a nosa política de retención de datos?" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:67 +#, elixir-format msgctxt "terms" msgid "You may irreversibly delete your account at any time." msgstr "Podes eliminar de xeito definitivo a túa conta cando queiras." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:115 +#, elixir-format msgctxt "terms" msgid "Changes to our Privacy Policy" msgstr "Cambios na nosa Política de Privacidade" -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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 (General Data Protection Regulation) do not use this site." msgstr "" @@ -282,8 +282,8 @@ msgstr "" "General_Data_Protection_Regulation\">Regulación Xeral de Protección de " "Datos)) non uses esta web." -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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 (Children's Online Privacy Protection Act) do not use this site." msgstr "" @@ -293,30 +293,30 @@ msgstr "" "27s_Online_Privacy_Protection_Act\">Children's Online Privacy Protection " "Act) non utilices esta web." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:117 +#, elixir-format msgctxt "terms" msgid "If we decide to change our privacy policy, we will post those changes on this page." msgstr "" "Se decidimos cambiar a nosa política de privacidade, publicaremos aquí os " "cambios." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:112 +#, elixir-format msgctxt "terms" msgid "Law requirements can be different if this server is in another jurisdiction." msgstr "" "Os requerimentos legais poderían ser diferentes se o servidor está noutra " "xurisdición." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:103 +#, elixir-format msgctxt "terms" msgid "Site usage by children" msgstr "Utilización da web por menores" -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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." msgstr "" @@ -326,8 +326,8 @@ msgstr "" "así como para responder a preguntas, e/ou outras solicitudes\n" "ou cuestións." -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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." msgstr "" @@ -335,8 +335,8 @@ msgstr "" "con outro coñecidos para evitar o salto\n" "de bloqueos ou outros infrinximentos." -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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." msgstr "" @@ -345,89 +345,89 @@ msgstr "" "estar conectada para así poder interactuar co contido doutras usuarias e " "publicar o teu contido." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:6 +#, elixir-format msgctxt "terms" msgid "What information do we collect?" msgstr "Que información recollemos?" -#, elixir-format #: lib/web/email/user.ex:176 +#, elixir-format msgid "Mobilizon on %{instance}: confirm your email address" msgstr "Mobilizon en %{instance}: confirma o enderezo de email" -#, elixir-format #: lib/web/email/user.ex:152 +#, elixir-format msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon en %{instance}: email cambiado" -#, elixir-format #: lib/web/email/notification.ex:47 +#, elixir-format msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "Un evento previsto para hoxe" msgstr[1] "%{nb_events} eventos previstos hoxe" -#, elixir-format #: lib/web/templates/email/on_day_notification.html.eex:38 #: lib/web/templates/email/on_day_notification.text.eex:4 +#, elixir-format msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "Hoxe tes un evento:" msgstr[1] "Tes %{total} eventos hoxe:" -#, elixir-format #: lib/web/templates/email/group_invite.text.eex:3 +#, elixir-format msgid "%{inviter} just invited you to join their group %{group}" msgstr "%{inviter} convidoute a unirte ó seu grupo %{group}" -#, elixir-format #: lib/web/templates/email/group_invite.html.eex:13 #: lib/web/templates/email/group_invite.text.eex:1 +#, elixir-format msgid "Come along!" msgstr "Imos!" -#, elixir-format #: lib/web/email/notification.ex:24 +#, elixir-format msgid "Don't forget to go to %{title}" msgstr "Non esquezas ir a %{title}" -#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:38 #: lib/web/templates/email/before_event_notification.text.eex:3 +#, elixir-format msgid "Get ready for %{title}" msgstr "Prepárate para %{title}" -#, elixir-format #: lib/web/templates/email/group_invite.html.eex:59 +#, elixir-format msgid "See my groups" msgstr "Ver os meus grupos" -#, elixir-format #: lib/web/templates/email/group_invite.html.eex:45 #: lib/web/templates/email/group_invite.text.eex:5 +#, elixir-format msgid "To accept this invitation, head over to your groups." msgstr "Para aceptar o convite, vaite ós teus grupos." -#, elixir-format #: lib/web/templates/email/before_event_notification.text.eex:5 +#, elixir-format msgid "View the event on: %{link}" msgstr "Ver o evento en: %{link}" -#, elixir-format #: lib/web/email/group.ex:33 +#, elixir-format msgid "You have been invited by %{inviter} to join group %{group}" msgstr "%{inviter} convidoute a unirte ó grupo %{group}" -#, elixir-format #: lib/web/email/notification.ex:71 +#, elixir-format msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "Un evento previsto nesta semana" msgstr[1] "%{nb_events} eventos previstos nesta semana" -#, elixir-format #: lib/web/email/notification.ex:93 +#, 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] "Hai unha solicitude de participación para o evento %{title} que atender" @@ -435,21 +435,21 @@ msgstr[1] "" "Hai %{number_participation_requests} solicitudes de participación no evento " "%{title} que atender" -#, elixir-format #: lib/web/templates/email/notification_each_week.html.eex:38 #: lib/web/templates/email/notification_each_week.text.eex:3 +#, elixir-format msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "Tes un evento esta semana:" msgstr[1] "Tes %{total} eventos esta semana:" -#, elixir-format #: lib/service/metadata/utils.ex:52 +#, elixir-format msgid "The event organizer didn't add any description." msgstr "A organización do evento non proporcionou unha descrición." -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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 "" @@ -459,8 +459,8 @@ msgstr "" "e a API, están protexidas con SSL/TLS, e o contrasinal protexido cun " "algoritmo forte." -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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 "" @@ -472,20 +472,20 @@ msgstr "" "facelo é apropiado para cumprir coa lei, facer cumprir as políticas desta " "web, ou protexer os dereitos ou a seguridade doutras persoas ou os nosos." -#, elixir-format #: lib/web/templates/api/terms.html.eex:23 +#, elixir-format msgctxt "terms" msgid "Accepting these Terms" msgstr "Aceptando estos Termos" -#, elixir-format #: lib/web/templates/api/terms.html.eex:27 +#, elixir-format msgctxt "terms" msgid "Changes to these Terms" msgstr "Cambios nos Termos" -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" @@ -496,16 +496,16 @@ msgstr "" "presente no Servizo. É responsabilidade túa asumir o risco procedente de " "utilizar ou confiar en calquera contido." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" "Tamén, aceptas que non vas facer nada do seguinte en conexión co Servizo ou " "outras usuarias:" -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" @@ -513,22 +513,22 @@ msgstr "" "uso ou outras características deseñadas para protexer o Servizo, usuarias do " "Servizo, ou terceiras partes." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" "Recoller información personal acerca doutras usuarias, ou intimidar, " "ameazar, presionar ou molestar doutros xeitos ás usuarias do Servizo;" -#, elixir-format #: lib/web/templates/api/terms.html.eex:55 +#, elixir-format msgctxt "terms" msgid "Content that is illegal or unlawful, that would otherwise create liability;" msgstr "Contido que é ilegal ou alegal, que podería ser comprometido;" -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" @@ -536,48 +536,48 @@ msgstr "" "comerciais, copyright, dereitos de privacidade, dereitos de publicidade ou " "outros dereitos intelectuais de calquera tipo;" -#, elixir-format #: lib/web/templates/api/terms.html.eex:42 +#, elixir-format msgctxt "terms" msgid "Creating Accounts" msgstr "Creando Contas" -#, elixir-format #: lib/web/templates/api/terms.html.eex:89 +#, elixir-format msgctxt "terms" msgid "Entire Agreement" msgstr "Acordo completo" -#, elixir-format #: lib/web/templates/api/terms.html.eex:92 +#, elixir-format msgctxt "terms" msgid "Feedback" msgstr "Opinión" -#, elixir-format #: lib/web/templates/api/terms.html.eex:83 +#, elixir-format msgctxt "terms" msgid "Hyperlinks and Third Party Content" msgstr "Ligazóns e Contido de Terceiras Partes" -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" "Se vulneras algún destos Termos, temos dereito a suspender ou desactivar o " "acceso á conta ou a usar o Servizo." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" "Suplantar ou publicar en nome doutra persoa ou entidade oy confundir doutro " "xeito sobre a túa relación con esa persoa ou entidade;" -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" @@ -585,26 +585,26 @@ msgstr "" "accesible os contidos. Es responsable do contido que publicas no Servizo, " "tanto da súa legalidade, fiabilidade e corrección." -#, elixir-format #: lib/web/templates/api/terms.html.eex:39 +#, elixir-format msgctxt "terms" msgid "Privacy Policy" msgstr "Política de Privacidade" -#, elixir-format #: lib/web/templates/api/terms.html.eex:95 +#, elixir-format msgctxt "terms" msgid "Questions & Contact Information" msgstr "Preguntas e Información de Contacto" -#, elixir-format #: lib/web/templates/api/terms.html.eex:87 +#, elixir-format msgctxt "terms" msgid "Termination" msgstr "Finalización" -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" @@ -612,14 +612,14 @@ msgstr "" "negativo ou facer que outras non desfruten do Servizo ou puidese danar, " "desactivar, sobrecargar ou impedir o funcionamento do Servizo;" -#, elixir-format #: lib/web/templates/api/terms.html.eex:47 +#, elixir-format msgctxt "terms" msgid "Your Content & Conduct" msgstr "O teu Contido e Conduta" -#, elixir-format #: lib/web/templates/api/terms.html.eex:84 +#, elixir-format msgctxt "terms" msgid "%{instance_name} 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 %{instance_name} of the site. Use of any such linked website is at the user's own risk." msgstr "" @@ -630,8 +630,8 @@ msgstr "" "implica o apoio de %{instance_name} a esa web. O uso de tales sitios " "web farase baixo responsabilidade propia da usuaria." -#, elixir-format #: lib/web/templates/api/terms.html.eex:68 +#, elixir-format msgctxt "terms" msgid "Finally, your use of the Service is also subject to acceptance of the instance's own specific rules regarding the code of conduct and moderation rules. Breaking those rules may also result in your account being disabled or suspended." msgstr "" @@ -640,16 +640,16 @@ msgstr "" "regras de moderación. Romper esas regras podería resultar na cancelación ou " "suspensión da túa conta." -#, elixir-format #: lib/web/templates/api/terms.html.eex:81 +#, elixir-format msgctxt "terms" msgid "For full details about the Mobilizon software see here." msgstr "" "Para coñecer máis sobre o software Mobilizon visita esta web." -#, elixir-format #: lib/web/templates/api/terms.html.eex:18 +#, elixir-format msgctxt "terms" msgid "Here are the important things you need to know about accessing and using the %{instance_name} (%{instance_url}) website and service (collectively, \"Service\"). These are our terms of service (\"Terms\"). Please read them carefully." msgstr "" @@ -658,8 +658,8 @@ msgstr "" ">%{instance_url}) e o servizo (colectivamente, o \"Servizo\"). Estos son " "os nosos termos do servizo (\"Termos\"). Le con atención." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" @@ -667,8 +667,8 @@ msgstr "" "evidente. Os cambios menores poderían aparecer simplemente no pé do sitio " "web. É responsabilidade túa estar atenta a estos cambios nos Termos." -#, elixir-format #: lib/web/templates/api/terms.html.eex:53 +#, elixir-format msgctxt "terms" msgid "In order to make %{instance_name} 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 "" @@ -676,16 +676,16 @@ msgstr "" "publiques, ligues ou poñas a disposición a través do Servizo calquera do " "seguinte:" -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" "Información privada sobre terceiras partes (ex., enderzos, números de " "teléfono, email, número da Seguridade Social, cartón de crédito), e" -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" @@ -696,8 +696,8 @@ msgstr "" "do contido nesas outras instancias remata aquí. Se por algunha razón esas " "outras instancias non eliminan o contido non seremos responsables." -#, elixir-format #: lib/web/templates/api/terms.html.eex:90 +#, elixir-format msgctxt "terms" msgid "These Terms constitute the entire agreement between you and %{instance_name} regarding the use of the Service, superseding any prior agreements between you and %{instance_name} relating to your use of the Service." msgstr "" @@ -705,8 +705,8 @@ msgstr "" "respecto do uso do Servizo, deixando sen efecto calquera acordo anterior " "entre ti e %{instance_name} respecto da utilización do Servizo." -#, elixir-format #: lib/web/templates/api/terms.html.eex:80 +#, elixir-format msgctxt "terms" msgid "This Service runs on a Mobilizon instance. This source code is licensed under an AGPLv3 license which means you are allowed to and even encouraged to take the source code, modify it and use it." msgstr "" @@ -715,14 +715,14 @@ msgstr "" "license-v3-(agpl-3.0)\">AGPLv3 que che permite e anima a coñecer, " "modificar e usar o código." -#, elixir-format #: lib/web/templates/api/terms.html.eex:58 +#, elixir-format msgctxt "terms" msgid "Viruses, corrupted data or other harmful, disruptive or destructive files or code." msgstr "Viruses, datos corruptos e ficheiros ou código malicioso ou destrutivo." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" @@ -732,30 +732,30 @@ msgstr "" "tempo. Os rexistros de acceso ó servidor tamén poderían permanecer algún " "tempo no sistema." -#, elixir-format #: lib/web/templates/api/terms.html.eex:96 +#, elixir-format msgctxt "terms" msgid "Questions or comments about the Service may be directed to us at %{contact}" msgstr "" "Preguntas e comentarios sobre o Servizo poderían sernos enviados hacia " "%{contact}" -#, elixir-format #: lib/web/templates/api/terms.html.eex:79 +#, elixir-format msgctxt "terms" msgid "Source code" msgstr "Código fonte" -#, elixir-format #: lib/web/templates/api/terms.html.eex:93 +#, elixir-format msgctxt "terms" msgid "We love feedback. Please let us know what you think of the Service, these Terms and, in general, %{instance_name}." msgstr "" "Apreciamos a túa opinión. Dinos o que pensas sobre o Servizo, estos Termos " "e, en xeral, sobre %{instance_name}." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" @@ -767,16 +767,16 @@ msgstr "" "comunidade, ou instancia por non acatar os termos ou por outros " "comportamentos que estimen inapropiados, ameazantes, ofensivos ou daninos." -#, elixir-format #: lib/web/templates/api/terms.html.eex:6 +#, elixir-format msgctxt "terms" msgid "%{instance_name} will not use or transmit or resell your personal data" msgstr "" "%{instance_name} non utilizará, transmitirá ou comerciará cos teus " "datos personais" -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 its contributors directly." msgstr "" @@ -785,16 +785,16 @@ msgstr "" "contacta directamente coas súas programadoras." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" "A administración da instancia debe asegurar que toda comunidade hospedada na " "instancia está moderada de xeito correcto acorde coas regras definidas." -#, elixir-format #: lib/web/templates/api/terms.html.eex:98 +#, elixir-format msgctxt "terms" msgid "Originally adapted from the Diaspora* and App.net privacy policies, also licensed under CC BY-SA." msgstr "" @@ -803,8 +803,8 @@ msgstr "" "appdotnet/terms-of-service\">App.net, tamén con licenza CC BY-SA." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:119 +#, elixir-format msgctxt "terms" msgid "Originally adapted from the Mastodon and Discourse privacy policies, also licensed under CC BY-SA." msgstr "" @@ -813,113 +813,113 @@ msgstr "" ">Discourse, tamén con licenza CC BY-SA." -#, elixir-format #: lib/web/templates/api/terms.html.eex:3 +#, elixir-format msgctxt "terms" msgid "Short version" msgstr "Versión curta" -#, elixir-format #: lib/web/templates/api/terms.html.eex:9 +#, elixir-format msgctxt "terms" msgid "The service is provided without warranties and these terms may change in the future" msgstr "" "O servizo proporciónase sen garantía e estos termos poderían mudar no futuro" -#, elixir-format #: lib/web/templates/api/privacy.html.eex:118 +#, elixir-format msgctxt "terms" msgid "This document is licensed under CC BY-SA. It was last updated June 18, 2020." msgstr "" "Este documento publícase baixo licenza CC BY-SA. Actualizado o 18 de Xuño de 2020." -#, elixir-format #: lib/web/templates/api/terms.html.eex:97 +#, elixir-format msgctxt "terms" msgid "This document is licensed under CC BY-SA. It was last updated June 22, 2020." msgstr "" "Este documento publícase baixo licenza CC BY-SA. Actualizado o 22 de Xuño de 2020." -#, elixir-format #: lib/web/templates/api/terms.html.eex:8 +#, elixir-format msgctxt "terms" msgid "You must respect other people and %{instance_name}'s rules when using the service" msgstr "" "Debes respectar a outras persoas e ás regras de %{instance_name} ó " "utilizar o servizo" -#, elixir-format #: lib/web/templates/api/terms.html.eex:7 +#, elixir-format msgctxt "terms" msgid "You must respect the law when using %{instance_name}" msgstr "Debes respectar a lei ó utilizar %{instance_name}" -#, elixir-format #: lib/web/templates/api/terms.html.eex:5 +#, elixir-format msgctxt "terms" msgid "Your content is yours" msgstr "O teu contido é teu" -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:51 +#, elixir-format msgid "Confirm my e-mail address" msgstr "Confirma o enderezo de email" -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:13 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:1 +#, elixir-format msgid "Confirm your e-mail" msgstr "Confirma o teu email" -#, elixir-format #: 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 "" "Vaites! Rexistrácheste para participar neste evento: « %{title} ». Por favor " "confirma o email proporcionado:" -#, elixir-format #: lib/web/templates/email/email.html.eex:114 #: lib/web/templates/email/email.text.eex:8 +#, elixir-format msgid "Need help? Is something not working as expected?" msgstr "Precisas axuda? Algo non funciona como agardabas?" -#, elixir-format #: lib/web/templates/email/registration_confirmation.html.eex:38 +#, elixir-format msgid "You created an account on %{host} with this email address. You are one click away from activating it." msgstr "" "Creaches unha conta en %{host} con este enderezo de email. Estás a un " "click de activalo." -#, elixir-format #: lib/web/templates/email/report.html.eex:13 +#, elixir-format msgid "New report on %{instance}" msgstr "Nova denuncia sobre %{instance}" -#, elixir-format #: lib/web/templates/email/email_changed_old.html.eex:38 +#, elixir-format msgid "The email address for your account on %{host} is being changed to:" msgstr "O enderezo de email da túa conta en %{host} vaise cambiar a:" -#, elixir-format #: lib/web/templates/email/password_reset.html.eex:38 +#, elixir-format msgid "You requested a new password for your account on %{instance}." msgstr "" "Solicitaches un novo contrasinal para a túa conta en %{instance}." -#, elixir-format #: lib/web/templates/email/email.text.eex:5 +#, elixir-format msgid "Please do not use it for real purposes." msgstr "Por favor, non o utilices nun entorno de produción." -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:63 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.eex:133 #: lib/web/templates/email/event_updated.text.eex:24 lib/web/templates/email/notification_each_week.html.eex:70 #: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.eex:70 #: lib/web/templates/email/on_day_notification.text.eex:14 +#, elixir-format 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] "" @@ -929,9 +929,9 @@ msgstr[1] "" "Desexas cancelar a túa participación nun ou en varios eventos, visita as " "páxinas a través das ligazóns superiores e preme no botón « Attending »." -#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:38 #: lib/web/templates/email/pending_participation_notification.text.eex:4 +#, elixir-format msgid "You have one pending attendance request to process:" msgid_plural "You have %{number_participation_requests} attendance requests to process:" msgstr[0] "Tes unha solicitude de participación pendente de atender:" @@ -939,66 +939,66 @@ msgstr[1] "" "Tes %{number_participation_requests} solicitudes de participación pendentes " "de atender:" -#, elixir-format #: lib/web/templates/email/email.text.eex:11 +#, elixir-format msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} funciona grazas a Mobilizon." -#, elixir-format #: lib/web/templates/email/email.html.eex:142 +#, elixir-format msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} funciona grazas a Mobilizon." -#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:13 #: lib/web/templates/email/pending_participation_notification.text.eex:1 +#, elixir-format msgid "A request is pending!" msgstr "Hai unha solicitude pendente!" -#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:13 #: lib/web/templates/email/before_event_notification.text.eex:1 +#, elixir-format msgid "An event is upcoming!" msgstr "Un evento está próximo!" -#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:13 #: lib/web/templates/email/email_changed_new.text.eex:1 +#, elixir-format msgid "Confirm new email" msgstr "Confirma o novo email" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:84 +#, elixir-format msgid "End" msgstr "Fin" -#, elixir-format #: lib/web/templates/email/event_updated.text.eex:21 +#, elixir-format msgid "End %{ends_on}" msgstr "Remata o %{ends_on}" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:13 #: lib/web/templates/email/event_updated.text.eex:1 +#, elixir-format msgid "Event update!" msgstr "Actualización do evento!" -#, elixir-format #: lib/web/templates/email/report.html.eex:88 +#, elixir-format msgid "Flagged comments" msgstr "Comentarios marcados" -#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:45 #: lib/web/templates/email/event_participation_approved.text.eex:7 +#, elixir-format msgid "Good news: one of the event organizers just approved your request. Update your calendar, because you're on the guest list now!" msgstr "" "Boa nova: a organización aprobou a túa solicitude. Actualiza o calendario, " "xa que agora estás na lista de convidadas!" -#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex: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 %{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 " @@ -1006,16 +1006,16 @@ msgstr "" "o cambio. Despois poderás conectarte a %{instance} utilizando este novo " "enderezo de email." -#, elixir-format #: 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 "" "Ola! Aquí un aviso para confirmar que o enderezo de email asociado á túa " "conta en %{host} cambiouse a:" -#, elixir-format #: lib/web/templates/email/email_changed_old.html.eex:62 #: lib/web/templates/email/email_changed_old.text.eex:5 +#, elixir-format msgid "If you did not trigger this change yourself, it is likely that someone has gained access to your %{host} account. Please log in and change your password immediately. If you cannot login, contact the admin on %{host}." msgstr "" "Se non fixeches este cambio ti mesma, é probable que alguén obtivese acceso " @@ -1023,305 +1023,305 @@ msgstr "" "inmediatamente. Se non podes conectar, contacta coa administración de " "%{host}." -#, elixir-format #: 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 "" "Se non solicitaches ti mesma o cambio, ignora esta mensaxe. O contrasinal " "non cambiará ata que premas na ligazón superior." -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:70 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.eex:45 +#, elixir-format msgid "If you didn't trigger this email, you may safely ignore it." msgstr "Se non solicitaches este email, podes ignoralo con seguridade." -#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:63 #: lib/web/templates/email/before_event_notification.text.eex:6 +#, elixir-format msgid "If you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgstr "" "Se queres cancelar a túa participación, visita a páxina do evento a través " "da ligazón superior e preme no botón « Participar »." -#, elixir-format #: lib/web/templates/email/email.html.eex:143 #: lib/web/templates/email/email.text.eex:11 +#, elixir-format msgid "Learn more about Mobilizon here!" msgstr "Coñece máis acerca de Mobilizon!" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:94 +#, elixir-format msgid "Location" msgstr "Localización" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:104 +#, elixir-format msgid "Location address was removed" msgstr "Eliminouse o enderezo da localización" -#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:51 #: lib/web/templates/email/pending_participation_notification.text.eex:6 +#, elixir-format msgid "Manage pending requests" msgstr "Xestionar solicitudes pendentes" -#, elixir-format #: lib/web/templates/email/registration_confirmation.html.eex:13 #: lib/web/templates/email/registration_confirmation.text.eex:1 +#, elixir-format msgid "Nearly there!" msgstr "Case rematamos!" -#, elixir-format #: lib/web/templates/email/email_changed_old.html.eex:13 #: lib/web/templates/email/email_changed_old.text.eex:1 +#, elixir-format msgid "New email confirmation" msgstr "Novo email de confirmación" -#, elixir-format #: lib/web/templates/email/report.html.eex:106 +#, elixir-format msgid "Reasons for report" msgstr "Razóns para denunciar" -#, elixir-format #: lib/web/templates/email/report.html.eex:39 +#, elixir-format msgid "Someone on %{instance} reported the following content for you to analyze:" msgstr "" "Alguén na %{instancia} denunciou o seguinte contido para que o " "analices:" -#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.eex:13 #: lib/web/templates/email/event_participation_rejected.text.eex:1 +#, elixir-format msgid "Sorry! You're not going." msgstr "Lamentámos que non participes." -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:74 +#, elixir-format msgid "Start" msgstr "Inicio" -#, elixir-format #: lib/web/templates/email/event_updated.text.eex:18 +#, elixir-format msgid "Start %{begins_on}" msgstr "Comeza en %{begins_on}" -#, elixir-format #: 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 "Houbo cambios no título para %{title} e cremos que é do teu interese." -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:55 #: lib/web/templates/email/event_updated.text.eex:11 +#, elixir-format msgid "This event has been cancelled by its organizers. Sorry!" msgstr "Evento cancelado pola organización. Lamentámolo!" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:51 #: lib/web/templates/email/event_updated.text.eex:7 +#, elixir-format msgid "This event has been confirmed" msgstr "Este evento foi confirmado" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:53 #: lib/web/templates/email/event_updated.text.eex:9 +#, elixir-format msgid "This event has yet to be confirmed: organizers will let you know if they do confirm it." msgstr "" "Este evento aínda ten que ser confirmado: a organización farache saber se o " "confirman." -#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.eex:45 #: lib/web/templates/email/event_participation_rejected.text.eex:7 +#, elixir-format msgid "Unfortunately, the organizers rejected your request." msgstr "É unha mágoa, pero a organización rexeitou a túa solicitude." -#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:51 +#, elixir-format msgid "Verify your email address" msgstr "Verifica o teu enderezo de email" -#, elixir-format #: lib/web/templates/email/report.html.eex:126 +#, elixir-format msgid "View report" msgstr "Ver denuncia" -#, elixir-format #: lib/web/templates/email/report.text.eex:24 +#, elixir-format msgid "View report:" msgstr "Ver denuncia:" -#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:58 #: lib/web/templates/email/event_participation_confirmed.html.eex:58 +#, elixir-format msgid "Visit event page" msgstr "Visitar páxina do evento" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:121 +#, elixir-format msgid "Visit the updated event page" msgstr "Visita a páxina do evento actualizada" -#, elixir-format #: lib/web/templates/email/event_updated.text.eex:23 +#, elixir-format msgid "Visit the updated event page: %{link}" msgstr "Visita a páxina do evento actualizada: %{link}" -#, elixir-format #: lib/web/templates/email/notification_each_week.html.eex:13 #: lib/web/templates/email/notification_each_week.text.eex:1 +#, elixir-format msgid "What's up this week?" msgstr "Que acontece nesta semana?" -#, elixir-format #: lib/web/templates/email/on_day_notification.html.eex:13 #: lib/web/templates/email/on_day_notification.text.eex:1 +#, elixir-format msgid "What's up today?" msgstr "Que temos para hoxe?" -#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:70 #: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.eex: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." msgstr "" "Desexas actualizar ou cancelar a túa participación, simplemente accede á " "páxina do evento na ligazón superior e preme no botón Participar." -#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:64 #: lib/web/templates/email/pending_participation_notification.text.eex:8 +#, elixir-format 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 "" "Recibes este email porque escolleches ser notificada sobre as solicitudes " "pendentes nos teus eventos. Podes desactivar ou cambiar os axustes das " "notificación nos axustes da conta baixo « Notificacións »." -#, elixir-format #: lib/web/templates/email/event_participation_rejected.text.eex:5 +#, elixir-format msgid "You issued a request to attend %{title}." msgstr "Solicitaches participar en %{title}." -#, elixir-format #: lib/web/templates/email/event_participation_approved.text.eex:5 #: lib/web/templates/email/event_participation_confirmed.text.eex:3 +#, elixir-format msgid "You recently requested to attend %{title}." msgstr "Recentemente solicitaches participar en %{title}." -#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:13 #: lib/web/templates/email/event_participation_confirmed.html.eex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 +#, elixir-format msgid "You're going!" msgstr "Vas ir!" -#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:64 #: lib/web/templates/email/email_changed_new.text.eex:5 +#, elixir-format msgid "If you didn't trigger the change yourself, please ignore this message." msgstr "Se non propiciaches ti o cambio, por favor ignora esta mensaxe." -#, elixir-format #: lib/web/templates/email/email.html.eex:89 +#, elixir-format msgid "Please do not use it for real purposes." msgstr "Por favor, non o uses para eventos reais." -#, elixir-format #: lib/web/templates/email/group_member_removal.html.eex:45 #: lib/web/templates/email/group_member_removal.text.eex:5 +#, elixir-format msgid "If you feel this is an error, you may contact the group's administrators so that they can add you back." msgstr "" "Se cres que é un erro, podes contactar co grupo de administradoras para que " "poidan volver a engadirte." -#, elixir-format #: lib/web/templates/email/group_member_removal.html.eex:13 #: lib/web/templates/email/group_member_removal.text.eex:1 +#, elixir-format msgid "So long, and thanks for the fish!" msgstr "Ata aquí, e grazas pola atención!" -#, elixir-format #: lib/web/email/group.ex:63 +#, elixir-format msgid "You have been removed from group %{group}" msgstr "Foches eliminada do grupo %{group}" -#, elixir-format #: 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 "" "Foches eliminada do grupo %{group}. Agora non poderás acceder ós contidos " "privados do grupo." -#, elixir-format #: lib/web/templates/email/group_invite.html.eex:38 +#, elixir-format msgid "%{inviter} just invited you to join their group %{link_start}%{group}%{link_end}" msgstr "" "%{inviter} convidoute a unirte ó seu grupo " "%{link_start}%{group}%{link_end}" -#, elixir-format #: lib/web/templates/email/group_member_removal.html.eex:38 +#, elixir-format msgid "You have been removed from group %{link_start}%{group}%{link_end}. You will not be able to access this group's private content anymore." msgstr "" "Foches eliminada do grupo %{link_start}%{group}%{link_end}. Agora non " "poderás acceder ós contidos privados deste grupo." -#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:54 #: lib/web/templates/email/group_suspension.text.eex:7 +#, elixir-format msgid "As this group was located on another instance, it will continue to work for other instances than this one." msgstr "" "Este grupo estaba localizado noutra instancia, seguirá funcionando para " "outras instancias pero non nesta." -#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:46 #: lib/web/templates/email/group_suspension.text.eex:5 +#, elixir-format msgid "As this group was located on this instance, all of it's data has been irretrievably deleted." msgstr "" "Como este grupo estaba noutra instancia, todos os seus datos serán " "irreversiblemente eliminados." -#, elixir-format #: lib/web/templates/email/group_deletion.html.eex:38 #: lib/web/templates/email/group_deletion.text.eex:3 +#, elixir-format msgid "The administrator %{author} deleted group %{group}. All of the group's events, discussions, posts and todos have been deleted." msgstr "" "A administradora %{author} eliminou o grupo %{group}. Todos os eventos do " "grupo, debates, publicacións e tarefas foron elminados." -#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:13 #: lib/web/templates/email/group_suspension.text.eex:1 +#, elixir-format msgid "The group %{group} has been suspended on %{instance}!" msgstr "O grupo %{group} foi suspendido en %{instance}!" -#, elixir-format #: lib/web/templates/email/group_deletion.html.eex:13 #: lib/web/templates/email/group_deletion.text.eex:1 +#, elixir-format msgid "The group %{group} was deleted on %{instance}!" msgstr "O grupo %{group} foi eliminado de %{instance}!" -#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:38 #: 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 "" "Os moderadores da túa instancia decidiron suspender %{group_name} " "(%{group_address}). Xa non pertences a este grupo." -#, elixir-format #: lib/web/email/group.ex:136 +#, elixir-format msgid "The group %{group} has been deleted on %{instance}" msgstr "O grupo %{group} foi eliminado de %{instance}" -#, elixir-format #: lib/web/email/group.ex:97 +#, elixir-format msgid "The group %{group} has been suspended on %{instance}" msgstr "O grupo %{group} foi suspendido en %{instance}" -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" @@ -1329,8 +1329,8 @@ msgstr "" "Se estos termos dalgún xeito non están claros, por favor fainolo saber " "contactando con %{contact}." -#, elixir-format #: lib/web/templates/api/terms.html.eex:40 +#, elixir-format msgctxt "terms" msgid "For information about how we collect and use information about users of the Service, please check our privacy policy." msgstr "" @@ -1338,22 +1338,22 @@ msgstr "" "usuarias do Servizo, mira a nosa política de " "privacidade." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" "Se continúas a usar o Servizo tras estar vixentes os Termos revisados, " "aceptas os Termos revisados." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:78 +#, elixir-format msgctxt "terms" msgid "If you delete this information, you need to login again." msgstr "Se eliminas esta información deberás conectarte de volta." -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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 "" @@ -1364,29 +1364,29 @@ msgstr "" "Eliminando esta información só fará que deixes de ver o estado da " "participación no teu navegador." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:87 +#, elixir-format msgctxt "terms" msgid "Note: This information is stored in your localStorage and not your cookies." msgstr "Nota: esta información gárdase no localStorage e non nas cookies." -#, elixir-format #: lib/web/templates/api/terms.html.eex:71 +#, elixir-format msgctxt "terms" msgid "Our responsibility" msgstr "A nosa responsabilidade" -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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 "" "Gardar rexistros do servidor que conteñen enderezos IP de todas as peticións " "ó servidor, de tal xeito que non será durante máis de 90 días." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:3 #: lib/web/templates/api/terms.html.eex:15 +#, elixir-format 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 glossary to help you understand them better." msgstr "" @@ -1394,16 +1394,16 @@ msgstr "" "poderían referir conceptos difíciles de comprender. Aquí tes un glosario para axudarche a comprendelos mellor." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" "Non somos responsables de calquera perda que puideses sufrir se alguén " "utiliza o teu email ou contrasinal, con ou sen o teu consentimento." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" @@ -1413,8 +1413,8 @@ msgstr "" "dereitos do contido que publicas, ligas ou doutro xeito pos a disposición a " "través do Servizo." -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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 an email address, a password (hashed) and at least an username. 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 a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly. You may however visit this instance without registering." msgstr "" @@ -1430,16 +1430,16 @@ msgstr "" "público. Porén, sempre podes visitar a instancia sen precisar " "rexistrarte." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" "Reservamos o dereito a modificar estos Termos en calquera momento. Por " "exemplo, poderiamos cambiar os Termos se introducimos novas funcións." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 Framasoft, 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 \"About this instance\" page." msgstr "" @@ -1453,8 +1453,8 @@ msgstr "" "información sobre esta instancia na páxina Acerca desta instancia." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 %{instance_name}." msgstr "" @@ -1462,8 +1462,8 @@ msgstr "" "contrasinal e aceptas os riscos dun acceso non autorizado á túa conta e a " "calquera outra información que proporciones a %{instance_name}." -#, elixir-format #: lib/web/templates/api/terms.html.eex: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 "" @@ -1475,8 +1475,8 @@ msgstr "" "de acordo ás regras de visibilidade que establezas para o contido. Non " "modificaremos a visibilidade que ti estableceches para o contido." -#, elixir-format #: lib/web/templates/api/privacy.html.eex:19 +#, elixir-format msgctxt "terms" msgid "Your events and comments 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 "" @@ -1489,8 +1489,8 @@ msgstr "" "ver esas mensaxes e información, e as correspondentes poden facer capturas " "de pantalla, copiar e volver a compartir de múltiples xeitos esa información." -#, elixir-format #: lib/web/templates/api/privacy.html.eex: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 "" @@ -1500,202 +1500,202 @@ msgstr "" "membros do grupo, sempre que esos membros do grupo residan en diferentes " "instancias desta." -#, elixir-format #: 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 "" "Confirmaches a participación. Actualiza o calendario, xa que agora estás na " "lista de convidadas!" -#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:38 #: lib/web/templates/email/event_participation_confirmed.html.eex:38 +#, elixir-format msgid "You recently requested to attend %{title}." msgstr "Recentemente solicitaches participar en %{title}." -#, elixir-format #: lib/web/email/participation.ex:91 +#, elixir-format msgid "Your participation to event %{title} has been confirmed" msgstr "Confirmouse a túa participación no evento %{title}" -#, elixir-format #: lib/web/templates/email/report.html.eex:41 +#, elixir-format msgid "%{reporter} reported the following content." msgstr "%{reporter} denunciou o seguinte contido." -#, elixir-format #: lib/web/templates/email/report.text.eex:5 +#, elixir-format msgid "Group %{group} was reported" msgstr "O grupo %{group} foi denunciado" -#, elixir-format #: lib/web/templates/email/report.html.eex:51 +#, elixir-format msgid "Group reported" msgstr "Grupo denunciado" -#, elixir-format #: lib/web/templates/email/report.text.eex:7 +#, elixir-format msgid "Profile %{profile} was reported" msgstr "O perfil %{profile} foi denunciado" -#, elixir-format #: lib/web/templates/email/report.html.eex:56 +#, elixir-format msgid "Profile reported" msgstr "Perfil denunciado" -#, elixir-format #: lib/web/templates/email/event_participation_confirmed.html.eex:45 +#, elixir-format msgid "You have now confirmed your participation. Update your calendar, because you're on the guest list now!" msgstr "" "Confirmaches a túa participación. Actualiza o calendario, agora estás na " "lista de convidadas!" -#, elixir-format #: lib/mobilizon/posts/post.ex:94 +#, elixir-format msgid "A text is required for the post" msgstr "Requírese un texto para a publicación" -#, elixir-format #: lib/mobilizon/posts/post.ex:93 +#, elixir-format msgid "A title is required for the post" msgstr "Requírese un título para a publicación" -#, elixir-format #: lib/web/templates/email/instance_follow.text.eex:3 +#, elixir-format msgid "%{name} (%{domain}) just requested to follow your instance." msgstr "%{name} (%{domain}) solicitou seguir a túa instancia." -#, elixir-format #: lib/web/email/follow.ex:54 +#, elixir-format msgid "%{name} requests to follow your instance" msgstr "%{name} solicita seguir a túa instancia" -#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:38 +#, elixir-format msgid "%{name} (%{domain}) just requested to follow your instance. If you accept, this instance will receive all of your instance's public events." msgstr "" "%{name} (%{domain}) solicitou pedir a túa instancia. Se aceptas, esta " "instancia recibirá todos os eventos públicos da túa instancia." -#, elixir-format #: 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 "Se aceptas, esta instancia recibirá todos os teus eventos públicos." -#, elixir-format #: lib/web/email/follow.ex:48 +#, elixir-format msgid "Instance %{name} (%{domain}) requests to follow your instance" msgstr "A instancia %{name} (%{domain}) solicita seguir a túa instancia" -#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:66 +#, elixir-format msgid "See the federation settings" msgstr "Ver axustes de federación" -#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:52 #: lib/web/templates/email/instance_follow.text.eex:6 +#, elixir-format msgid "To accept this invitation, head over to the instance's admin settings." msgstr "" "Para aceptar o convite, vaite ós axustes de administración da instancia." -#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:13 #: lib/web/templates/email/instance_follow.text.eex:1 +#, elixir-format msgid "Want to connect?" msgstr "Desexas conectarte?" -#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:45 #: lib/web/templates/email/instance_follow.text.eex:5 +#, elixir-format msgid "Note: %{name} (%{domain}) following you doesn't necessarily imply that you follow this instance, but you can ask to follow them too." msgstr "" "Nota: que %{name} (%{domain}) te siga non implica que sigas a esta " "instancia, pero podes tamén solicitar seguilos a eles." -#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:38 +#, elixir-format msgid "Hi there! You just registered to join this event: « %{title} ». Please confirm the e-mail address you provided:" msgstr "" "Ola! Rexistrácheste para unirte a este evento: « %{title} ». Confirma " "o enderezo de email proporcionado:" -#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.eex:38 +#, elixir-format msgid "You issued a request to attend %{title}." msgstr "Fixeches unha solicitude para participar en %{title}." -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:64 +#, elixir-format msgid "Event title" msgstr "Título do evento" -#, elixir-format #: lib/web/templates/email/event_updated.html.eex:38 +#, elixir-format msgid "There have been changes for %{title} so we'd thought we'd let you know." msgstr "Houbo cambios en %{title} e cremos que debes sabelo." -#, elixir-format #: lib/web/templates/error/500_page.html.eex:7 +#, elixir-format msgid "This page is not correct" msgstr "Esta páxina non é correcta" -#, elixir-format #: lib/web/templates/error/500_page.html.eex:50 +#, elixir-format msgid "We're sorry, but something went wrong on our end." msgstr "Lamentámolo, pero algo está a fallar pola nosa parte." -#, elixir-format #: lib/web/templates/email/email.html.eex:88 #: lib/web/templates/email/email.text.eex:4 +#, elixir-format 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:53 lib/service/metadata/actor.ex:60 #: lib/service/metadata/instance.ex:54 lib/service/metadata/instance.ex:60 +#, elixir-format msgid "%{name}'s feed" msgstr "fonte de %{name}" -#, elixir-format #: lib/service/export/feed.ex:120 +#, elixir-format msgid "%{actor}'s private events feed on %{instance}" msgstr "fonte dos eventos privados de %{actor} en %{instance}" -#, elixir-format #: lib/service/export/feed.ex:115 +#, elixir-format msgid "%{actor}'s public events feed on %{instance}" msgstr "fonte dos eventos públicos de %{actor} en %{instance}" -#, elixir-format #: lib/service/export/feed.ex:220 +#, elixir-format msgid "Feed for %{email} on %{instance}" msgstr "Fonte para %{email} en %{instance}" -#, elixir-format #: lib/web/templates/error/500_page.html.eex:57 +#, elixir-format msgid "If the issue persists, you may contact the server administrator at %{contact}." msgstr "" "Se o problema persiste, contacta coa administración do servidor en " "%{contact}." -#, elixir-format #: lib/web/templates/error/500_page.html.eex:55 +#, elixir-format msgid "If the issue persists, you may try to contact the server administrator." msgstr "Se o problema persiste, contacta coa administración do servidor." -#, elixir-format #: lib/web/templates/error/500_page.html.eex:68 +#, elixir-format msgid "Technical details" msgstr "Detalles técnicos" -#, elixir-format #: lib/web/templates/error/500_page.html.eex:52 +#, elixir-format msgid "The Mobilizon server %{instance} seems to be temporarily down." msgstr "" "O servidor Mobilizon %{instance} semella estar temporalmente fóra de servizo." -#, elixir-format #: lib/service/export/feed.ex:73 +#, elixir-format msgid "Public feed for %{instance}" -msgstr "" +msgstr "Fonte pública de %{instance}" From 0abba5ecd4c54cbc00c01dab874bd3202e0693d7 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Mon, 3 May 2021 10:07:59 +0200 Subject: [PATCH 24/24] Version 1.1.3 Signed-off-by: Thomas Citharel --- CHANGELOG.md | 19 +++++++++++++++++++ js/package.json | 2 +- mix.exs | 2 +- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ec41e2de0..a494239e0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,25 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## 1.1.3 - 03-05-2021 + +### Changed + +- Lower the frequency for refreshment of external groups + +### Fixes + +- Fixed spaces being eaten in the rich text editor (event description, comments and public posts) +- Fixed event physical address display +- Fixed tags being limited to 20 characters +- Fixed some ActivityPub errors + +### Translations + +- Galician +- Russian +- Spanish + ## 1.1.2 - 28-04-2021 ### Changed diff --git a/js/package.json b/js/package.json index ceb5ab3c4..967a058da 100644 --- a/js/package.json +++ b/js/package.json @@ -1,6 +1,6 @@ { "name": "mobilizon", - "version": "1.1.2", + "version": "1.1.3", "private": true, "scripts": { "serve": "vue-cli-service serve", diff --git a/mix.exs b/mix.exs index 8b76aae9c..45f23f100 100644 --- a/mix.exs +++ b/mix.exs @@ -1,7 +1,7 @@ defmodule Mobilizon.Mixfile do use Mix.Project - @version "1.1.2" + @version "1.1.3" def project do [