From 01a7a6987ec708b75152fb0d0ca26e24d51528b5 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Wed, 15 Jan 2020 23:22:31 -0700 Subject: [PATCH 001/424] Add a rageshake function to download the logs locally For https://github.com/vector-im/riot-web/issues/3304 This generates something similar to what the rageshake server does, just in an easy package for people to use. tar-js was chosen over zip or anything else because it's small, simple, and stable. Note: this doesn't work in Chrome, but firefox seems to be okay with it. Chrome appears to be blocking the download for some reason - the very first download was fine, but none afterwards --- package.json | 1 + src/i18n/strings/en_EN.json | 1 + src/rageshake/submit-rageshake.js | 108 ++++++++++++++++++++++++------ yarn.lock | 5 ++ 4 files changed, 95 insertions(+), 20 deletions(-) diff --git a/package.json b/package.json index 16e7f943f1..b6ec44ebd0 100644 --- a/package.json +++ b/package.json @@ -97,6 +97,7 @@ "react-gemini-scrollbar": "github:matrix-org/react-gemini-scrollbar#9cf17f63b7c0b0ec5f31df27da0f82f7238dc594", "resize-observer-polyfill": "^1.5.0", "sanitize-html": "^1.18.4", + "tar-js": "^0.3.0", "text-encoding-utf-8": "^1.0.1", "url": "^0.11.0", "velocity-animate": "^1.5.2", diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 42c87172b8..9b08e41a8c 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -418,6 +418,7 @@ "Collecting app version information": "Collecting app version information", "Collecting logs": "Collecting logs", "Uploading report": "Uploading report", + "Downloading report": "Downloading report", "Waiting for response from server": "Waiting for response from server", "Messages containing my display name": "Messages containing my display name", "Messages containing my username": "Messages containing my username", diff --git a/src/rageshake/submit-rageshake.js b/src/rageshake/submit-rageshake.js index ed5a9e5946..1d765dd273 100644 --- a/src/rageshake/submit-rageshake.js +++ b/src/rageshake/submit-rageshake.js @@ -21,6 +21,7 @@ import pako from 'pako'; import {MatrixClientPeg} from '../MatrixClientPeg'; import PlatformPeg from '../PlatformPeg'; import { _t } from '../languageHandler'; +import Tar from "tar-js"; import * as rageshake from './rageshake'; @@ -33,26 +34,7 @@ if (!TextEncoder) { TextEncoder = TextEncodingUtf8.TextEncoder; } -/** - * Send a bug report. - * - * @param {string} bugReportEndpoint HTTP url to send the report to - * - * @param {object} opts optional dictionary of options - * - * @param {string} opts.userText Any additional user input. - * - * @param {boolean} opts.sendLogs True to send logs - * - * @param {function(string)} opts.progressCallback Callback to call with progress updates - * - * @return {Promise} Resolved when the bug report is sent. - */ -export default async function sendBugReport(bugReportEndpoint, opts) { - if (!bugReportEndpoint) { - throw new Error("No bug report endpoint has been set."); - } - +async function collectBugReport(opts) { opts = opts || {}; const progressCallback = opts.progressCallback || (() => {}); @@ -106,10 +88,96 @@ export default async function sendBugReport(bugReportEndpoint, opts) { } } + return body; +} + +/** + * Send a bug report. + * + * @param {string} bugReportEndpoint HTTP url to send the report to + * + * @param {object} opts optional dictionary of options + * + * @param {string} opts.userText Any additional user input. + * + * @param {boolean} opts.sendLogs True to send logs + * + * @param {function(string)} opts.progressCallback Callback to call with progress updates + * + * @return {Promise} Resolved when the bug report is sent. + */ +export default async function sendBugReport(bugReportEndpoint, opts) { + if (!bugReportEndpoint) { + throw new Error("No bug report endpoint has been set."); + } + + opts = opts || {}; + const progressCallback = opts.progressCallback || (() => {}); + const body = await collectBugReport(opts); + progressCallback(_t("Uploading report")); await _submitReport(bugReportEndpoint, body, progressCallback); } +/** + * Downloads the files from a bug report. This is the same as sendBugReport, + * but instead causes the browser to download the files locally. + * + * @param {object} opts optional dictionary of options + * + * @param {string} opts.userText Any additional user input. + * + * @param {boolean} opts.sendLogs True to send logs + * + * @param {function(string)} opts.progressCallback Callback to call with progress updates + * + * @return {Promise} Resolved when the bug report is downloaded (or started). + */ +export async function downloadBugReport(opts) { + opts = opts || {}; + const progressCallback = opts.progressCallback || (() => {}); + const body = await collectBugReport(opts); + + progressCallback(_t("Downloading report")); + let metadata = ""; + const tape = new Tar(); + let i = 0; + for (const e of body.entries()) { + if (e[0] === 'compressed-log') { + await new Promise((resolve => { + const reader = new FileReader(); + reader.addEventListener('loadend', ev => { + tape.append(`log-${i++}.log`, pako.ungzip(ev.target.result)); + resolve(); + }); + reader.readAsArrayBuffer(e[1]); + })) + } else { + metadata += `${e[0]} = ${e[1]}\n`; + } + } + tape.append('issue.txt', metadata); + + // We have to create a new anchor to download if we want a filename. Otherwise we could + // just use window.open. + const dl = document.createElement('a'); + dl.href = `data:application/octet-stream;base64,${btoa(uint8ToString(tape.out))}`; + dl.download = 'rageshake.tar'; + document.body.appendChild(dl); + dl.click(); + document.body.removeChild(dl); +} + +// Source: https://github.com/beatgammit/tar-js/blob/master/examples/main.js +function uint8ToString(buf) { + let i, length, out = ''; + for (i = 0, length = buf.length; i < length; i += 1) { + out += String.fromCharCode(buf[i]); + } + + return out; +} + function _submitReport(endpoint, body, progressCallback) { return new Promise((resolve, reject) => { const req = new XMLHttpRequest(); diff --git a/yarn.lock b/yarn.lock index d2135f7aa6..18bbf44f4d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8251,6 +8251,11 @@ tapable@^1.0.0, tapable@^1.1.3: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== +tar-js@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/tar-js/-/tar-js-0.3.0.tgz#6949aabfb0ba18bb1562ae51a439fd0f30183a17" + integrity sha1-aUmqv7C6GLsVYq5RpDn9DzAYOhc= + tar@^4: version "4.4.13" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" From 63853d9de19fc45f8253fb41c465f8924c19008b Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Mon, 30 Mar 2020 16:12:28 +0100 Subject: [PATCH 002/424] Add download logs button to BugReportDialog Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- .../views/dialogs/BugReportDialog.js | 34 ++++++++++++++++++- src/i18n/strings/en_EN.json | 2 ++ src/rageshake/submit-rageshake.js | 2 +- yarn.lock | 5 +++ 4 files changed, 41 insertions(+), 2 deletions(-) diff --git a/src/components/views/dialogs/BugReportDialog.js b/src/components/views/dialogs/BugReportDialog.js index 6e337d53dc..0916e680e0 100644 --- a/src/components/views/dialogs/BugReportDialog.js +++ b/src/components/views/dialogs/BugReportDialog.js @@ -23,7 +23,8 @@ import * as sdk from '../../../index'; import SdkConfig from '../../../SdkConfig'; import Modal from '../../../Modal'; import { _t } from '../../../languageHandler'; -import sendBugReport from '../../../rageshake/submit-rageshake'; +import sendBugReport, {downloadBugReport} from '../../../rageshake/submit-rageshake'; +import AccessibleButton from "../elements/AccessibleButton"; export default class BugReportDialog extends React.Component { constructor(props) { @@ -95,6 +96,32 @@ export default class BugReportDialog extends React.Component { }); } + _onDownload = async (ev) => { + this.setState({ busy: true, progress: null, err: null }); + this._sendProgressCallback(_t("Preparing to download logs")); + + try { + await downloadBugReport({ + sendLogs: true, + progressCallback: this._sendProgressCallback, + label: this.props.label, + }); + + this.setState({ + busy: false, + progress: null, + }); + } catch (err) { + if (!this._unmounted) { + this.setState({ + busy: false, + progress: null, + err: _t("Failed to send logs: ") + `${err.message}`, + }); + } + } + }; + _onTextChange(ev) { this.setState({ text: ev.target.value }); } @@ -165,6 +192,11 @@ export default class BugReportDialog extends React.Component { }, ) }

+ + + { _t("Click here to download your logs.") } + + create a GitHub issue to describe your problem.": "Before submitting logs, you must create a GitHub issue to describe your problem.", + "Click here to download your logs.": "Click here to download your logs.", "GitHub issue": "GitHub issue", "Notes": "Notes", "If there is additional context that would help in analysing the issue, such as what you were doing at the time, room IDs, user IDs, etc., please include those things here.": "If there is additional context that would help in analysing the issue, such as what you were doing at the time, room IDs, user IDs, etc., please include those things here.", diff --git a/src/rageshake/submit-rageshake.js b/src/rageshake/submit-rageshake.js index 1500130ffd..3e83cafbcd 100644 --- a/src/rageshake/submit-rageshake.js +++ b/src/rageshake/submit-rageshake.js @@ -195,7 +195,7 @@ export async function downloadBugReport(opts) { resolve(); }); reader.readAsArrayBuffer(e[1]); - })) + })); } else { metadata += `${e[0]} = ${e[1]}\n`; } diff --git a/yarn.lock b/yarn.lock index c5fc8268a1..6451879a5b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8189,6 +8189,11 @@ tapable@^1.0.0, tapable@^1.1.3: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== +tar-js@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/tar-js/-/tar-js-0.3.0.tgz#6949aabfb0ba18bb1562ae51a439fd0f30183a17" + integrity sha1-aUmqv7C6GLsVYq5RpDn9DzAYOhc= + terser-webpack-plugin@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c" From 8cacf1ff9743fd807b8169c8aa8c09a3c9da4b2e Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 21 Jul 2020 10:14:12 +0100 Subject: [PATCH 003/424] Convert RoomViewStore and ActiveRoomObserver to typescript Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/@types/global.d.ts | 3 + ...eRoomObserver.js => ActiveRoomObserver.ts} | 52 ++++---- .../{RoomViewStore.js => RoomViewStore.tsx} | 122 ++++++++++-------- 3 files changed, 95 insertions(+), 82 deletions(-) rename src/{ActiveRoomObserver.js => ActiveRoomObserver.ts} (54%) rename src/stores/{RoomViewStore.js => RoomViewStore.tsx} (83%) diff --git a/src/@types/global.d.ts b/src/@types/global.d.ts index f556ff8b5c..4ab9e5c8b3 100644 --- a/src/@types/global.d.ts +++ b/src/@types/global.d.ts @@ -24,6 +24,7 @@ import { RoomListStoreClass } from "../stores/room-list/RoomListStore"; import { PlatformPeg } from "../PlatformPeg"; import RoomListLayoutStore from "../stores/room-list/RoomListLayoutStore"; import {IntegrationManagers} from "../integrations/IntegrationManagers"; +import {ActiveRoomObserver} from "../ActiveRoomObserver"; declare global { interface Window { @@ -39,6 +40,8 @@ declare global { mx_RebrandListener: RebrandListener; mx_RoomListStore: RoomListStoreClass; mx_RoomListLayoutStore: RoomListLayoutStore; + mx_ActiveRoomObserver: ActiveRoomObserver; + mxPlatformPeg: PlatformPeg; mxIntegrationManagers: typeof IntegrationManagers; } diff --git a/src/ActiveRoomObserver.js b/src/ActiveRoomObserver.ts similarity index 54% rename from src/ActiveRoomObserver.js rename to src/ActiveRoomObserver.ts index b7695d401d..4ff4951915 100644 --- a/src/ActiveRoomObserver.js +++ b/src/ActiveRoomObserver.ts @@ -16,6 +16,8 @@ limitations under the License. import RoomViewStore from './stores/RoomViewStore'; +type Listener = (isActive: boolean) => void; + /** * Consumes changes from the RoomViewStore and notifies specific things * about when the active room changes. Unlike listening for RoomViewStore @@ -25,57 +27,57 @@ import RoomViewStore from './stores/RoomViewStore'; * TODO: If we introduce an observer for something else, factor out * the adding / removing of listeners & emitting into a common class. */ -class ActiveRoomObserver { - constructor() { - this._listeners = {}; // key=roomId, value=function(isActive:boolean) +export class ActiveRoomObserver { + private listeners: {[key: string]: Listener[]} = {}; + private _activeRoomId = RoomViewStore.getRoomId(); // TODO + private readonly roomStoreToken: string; - this._activeRoomId = RoomViewStore.getRoomId(); - // TODO: We could self-destruct when the last listener goes away, or at least - // stop listening. - this._roomStoreToken = RoomViewStore.addListener(this._onRoomViewStoreUpdate.bind(this)); + constructor() { + // TODO: We could self-destruct when the last listener goes away, or at least stop listening. + this.roomStoreToken = RoomViewStore.addListener(this.onRoomViewStoreUpdate); } - get activeRoomId(): string { + public get activeRoomId(): string { return this._activeRoomId; } - addListener(roomId, listener) { - if (!this._listeners[roomId]) this._listeners[roomId] = []; - this._listeners[roomId].push(listener); + public addListener(roomId, listener) { + if (!this.listeners[roomId]) this.listeners[roomId] = []; + this.listeners[roomId].push(listener); } - removeListener(roomId, listener) { - if (this._listeners[roomId]) { - const i = this._listeners[roomId].indexOf(listener); + public removeListener(roomId, listener) { + if (this.listeners[roomId]) { + const i = this.listeners[roomId].indexOf(listener); if (i > -1) { - this._listeners[roomId].splice(i, 1); + this.listeners[roomId].splice(i, 1); } } else { console.warn("Unregistering unrecognised listener (roomId=" + roomId + ")"); } } - _emit(roomId, isActive: boolean) { - if (!this._listeners[roomId]) return; + private emit(roomId, isActive: boolean) { + if (!this.listeners[roomId]) return; - for (const l of this._listeners[roomId]) { + for (const l of this.listeners[roomId]) { l.call(null, isActive); } } - _onRoomViewStoreUpdate() { + private onRoomViewStoreUpdate = () => { // emit for the old room ID - if (this._activeRoomId) this._emit(this._activeRoomId, false); + if (this._activeRoomId) this.emit(this._activeRoomId, false); // update our cache this._activeRoomId = RoomViewStore.getRoomId(); // and emit for the new one - if (this._activeRoomId) this._emit(this._activeRoomId, true); - } + if (this._activeRoomId) this.emit(this._activeRoomId, true); + }; } -if (global.mx_ActiveRoomObserver === undefined) { - global.mx_ActiveRoomObserver = new ActiveRoomObserver(); +if (window.mx_ActiveRoomObserver === undefined) { + window.mx_ActiveRoomObserver = new ActiveRoomObserver(); } -export default global.mx_ActiveRoomObserver; +export default window.mx_ActiveRoomObserver; diff --git a/src/stores/RoomViewStore.js b/src/stores/RoomViewStore.tsx similarity index 83% rename from src/stores/RoomViewStore.js rename to src/stores/RoomViewStore.tsx index 6e5007895c..e634433933 100644 --- a/src/stores/RoomViewStore.js +++ b/src/stores/RoomViewStore.tsx @@ -15,13 +15,17 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -import dis from '../dispatcher/dispatcher'; + +import React from "react"; import {Store} from 'flux/utils'; + +import dis from '../dispatcher/dispatcher'; import {MatrixClientPeg} from '../MatrixClientPeg'; import * as sdk from '../index'; import Modal from '../Modal'; import { _t } from '../languageHandler'; import { getCachedRoomIDForAlias, storeRoomAliasInCache } from '../RoomAliasCache'; +import {ActionPayload} from "../dispatcher/payloads"; const INITIAL_STATE = { // Whether we're joining the currently viewed room (see isJoining()) @@ -33,6 +37,7 @@ const INITIAL_STATE = { // The event to scroll to when the room is first viewed initialEventId: null, + initialEventPixelOffset: null, // Whether to highlight the initial event isInitialEventHighlighted: false, @@ -46,6 +51,10 @@ const INITIAL_STATE = { forwardingEvent: null, quotingEvent: null, + + replyingToEvent: null, + + shouldPeek: false, }; /** @@ -53,21 +62,20 @@ const INITIAL_STATE = { * with a subset of the js-sdk. * ``` */ -class RoomViewStore extends Store { +class RoomViewStore extends Store { + private state = INITIAL_STATE; // initialize state + constructor() { super(dis); - - // Initialise state - this._state = INITIAL_STATE; } - _setState(newState) { + setState(newState: Partial) { // If values haven't changed, there's nothing to do. // This only tries a shallow comparison, so unchanged objects will slip // through, but that's probably okay for now. let stateChanged = false; for (const key of Object.keys(newState)) { - if (this._state[key] !== newState[key]) { + if (this.state[key] !== newState[key]) { stateChanged = true; break; } @@ -76,7 +84,7 @@ class RoomViewStore extends Store { return; } - this._state = Object.assign(this._state, newState); + this.state = Object.assign(this.state, newState); this.__emitChange(); } @@ -89,59 +97,59 @@ class RoomViewStore extends Store { // - event_offset: 100 // - highlighted: true case 'view_room': - this._viewRoom(payload); + this.viewRoom(payload); break; case 'view_my_groups': case 'view_group': - this._setState({ + this.setState({ roomId: null, roomAlias: null, }); break; case 'view_room_error': - this._viewRoomError(payload); + this.viewRoomError(payload); break; case 'will_join': - this._setState({ + this.setState({ joining: true, }); break; case 'cancel_join': - this._setState({ + this.setState({ joining: false, }); break; // join_room: // - opts: options for joinRoom case 'join_room': - this._joinRoom(payload); + this.joinRoom(payload); break; case 'join_room_error': - this._joinRoomError(payload); + this.joinRoomError(payload); break; case 'join_room_ready': - this._setState({ shouldPeek: false }); + this.setState({ shouldPeek: false }); break; case 'on_client_not_viable': case 'on_logged_out': this.reset(); break; case 'forward_event': - this._setState({ + this.setState({ forwardingEvent: payload.event, }); break; case 'reply_to_event': // If currently viewed room does not match the room in which we wish to reply then change rooms // this can happen when performing a search across all rooms - if (payload.event && payload.event.getRoomId() !== this._state.roomId) { + if (payload.event && payload.event.getRoomId() !== this.state.roomId) { dis.dispatch({ action: 'view_room', room_id: payload.event.getRoomId(), replyingToEvent: payload.event, }); } else { - this._setState({ + this.setState({ replyingToEvent: payload.event, }); } @@ -149,14 +157,14 @@ class RoomViewStore extends Store { case 'open_room_settings': { const RoomSettingsDialog = sdk.getComponent("dialogs.RoomSettingsDialog"); Modal.createTrackedDialog('Room settings', '', RoomSettingsDialog, { - roomId: payload.room_id || this._state.roomId, + roomId: payload.room_id || this.state.roomId, }, /*className=*/null, /*isPriority=*/false, /*isStatic=*/true); break; } } } - async _viewRoom(payload) { + private async viewRoom(payload) { if (payload.room_id) { const newState = { roomId: payload.room_id, @@ -181,18 +189,18 @@ class RoomViewStore extends Store { newState.replyingToEvent = payload.replyingToEvent; } - if (this._state.forwardingEvent) { + if (this.state.forwardingEvent) { dis.dispatch({ action: 'send_event', room_id: newState.roomId, - event: this._state.forwardingEvent, + event: this.state.forwardingEvent, }); } - this._setState(newState); + this.setState(newState); if (payload.auto_join) { - this._joinRoom(payload); + this.joinRoom(payload); } } else if (payload.room_alias) { // Try the room alias to room ID navigation cache first to avoid @@ -201,7 +209,7 @@ class RoomViewStore extends Store { if (!roomId) { // Room alias cache miss, so let's ask the homeserver. Resolve the alias // and then do a second dispatch with the room ID acquired. - this._setState({ + this.setState({ roomId: null, initialEventId: null, initialEventPixelOffset: null, @@ -238,8 +246,8 @@ class RoomViewStore extends Store { } } - _viewRoomError(payload) { - this._setState({ + private viewRoomError(payload) { + this.setState({ roomId: payload.room_id, roomAlias: payload.room_alias, roomLoading: false, @@ -247,12 +255,12 @@ class RoomViewStore extends Store { }); } - _joinRoom(payload) { - this._setState({ + private joinRoom(payload) { + this.setState({ joining: true, }); MatrixClientPeg.get().joinRoom( - this._state.roomAlias || this._state.roomId, payload.opts, + this.state.roomAlias || this.state.roomId, payload.opts, ).then(() => { // We do *not* clear the 'joining' flag because the Room object and/or our 'joined' member event may not // have come down the sync stream yet, and that's the point at which we'd consider the user joined to the @@ -282,45 +290,45 @@ class RoomViewStore extends Store { }); } - _joinRoomError(payload) { - this._setState({ + private joinRoomError(payload) { + this.setState({ joining: false, joinError: payload.err, }); } - reset() { - this._state = Object.assign({}, INITIAL_STATE); + public reset() { + this.state = Object.assign({}, INITIAL_STATE); } // The room ID of the room currently being viewed - getRoomId() { - return this._state.roomId; + public getRoomId() { + return this.state.roomId; } // The event to scroll to when the room is first viewed - getInitialEventId() { - return this._state.initialEventId; + public getInitialEventId() { + return this.state.initialEventId; } // Whether to highlight the initial event - isInitialEventHighlighted() { - return this._state.isInitialEventHighlighted; + public isInitialEventHighlighted() { + return this.state.isInitialEventHighlighted; } // The room alias of the room (or null if not originally specified in view_room) - getRoomAlias() { - return this._state.roomAlias; + public getRoomAlias() { + return this.state.roomAlias; } // Whether the current room is loading (true whilst resolving an alias) - isRoomLoading() { - return this._state.roomLoading; + public isRoomLoading() { + return this.state.roomLoading; } // Any error that has occurred during loading - getRoomLoadError() { - return this._state.roomLoadError; + public getRoomLoadError() { + return this.state.roomLoadError; } // True if we're expecting the user to be joined to the room currently being @@ -346,27 +354,27 @@ class RoomViewStore extends Store { // // show join prompt // } // } - isJoining() { - return this._state.joining; + public isJoining() { + return this.state.joining; } // Any error that has occurred during joining - getJoinError() { - return this._state.joinError; + public getJoinError() { + return this.state.joinError; } // The mxEvent if one is about to be forwarded - getForwardingEvent() { - return this._state.forwardingEvent; + public getForwardingEvent() { + return this.state.forwardingEvent; } // The mxEvent if one is currently being replied to/quoted - getQuotingEvent() { - return this._state.replyingToEvent; + public getQuotingEvent() { + return this.state.replyingToEvent; } - shouldPeek() { - return this._state.shouldPeek; + public shouldPeek() { + return this.state.shouldPeek; } } From 9aff56afcc958cfc7f14052617fe33ec3cd89845 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 21 Jul 2020 10:15:05 +0100 Subject: [PATCH 004/424] add more types Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/stores/RoomViewStore.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/stores/RoomViewStore.tsx b/src/stores/RoomViewStore.tsx index e634433933..cb4ed39a1d 100644 --- a/src/stores/RoomViewStore.tsx +++ b/src/stores/RoomViewStore.tsx @@ -164,7 +164,7 @@ class RoomViewStore extends Store { } } - private async viewRoom(payload) { + private async viewRoom(payload: ActionPayload) { if (payload.room_id) { const newState = { roomId: payload.room_id, @@ -246,7 +246,7 @@ class RoomViewStore extends Store { } } - private viewRoomError(payload) { + private viewRoomError(payload: ActionPayload) { this.setState({ roomId: payload.room_id, roomAlias: payload.room_alias, @@ -255,7 +255,7 @@ class RoomViewStore extends Store { }); } - private joinRoom(payload) { + private joinRoom(payload: ActionPayload) { this.setState({ joining: true, }); @@ -290,7 +290,7 @@ class RoomViewStore extends Store { }); } - private joinRoomError(payload) { + private joinRoomError(payload: ActionPayload) { this.setState({ joining: false, joinError: payload.err, From 0db66313e2435d5ced590cef2a1f9ee70094861e Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 21 Jul 2020 10:20:30 +0100 Subject: [PATCH 005/424] Add more causes to blank out active room Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/stores/RoomViewStore.tsx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/stores/RoomViewStore.tsx b/src/stores/RoomViewStore.tsx index cb4ed39a1d..ea1f3e04c9 100644 --- a/src/stores/RoomViewStore.tsx +++ b/src/stores/RoomViewStore.tsx @@ -99,6 +99,9 @@ class RoomViewStore extends Store { case 'view_room': this.viewRoom(payload); break; + case 'view_create_group': + case 'view_welcome_page': + case 'view_home_page': case 'view_my_groups': case 'view_group': this.setState({ From a69560d0de78c71ebac66c000c54a5587a13936f Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 21 Jul 2020 10:22:03 +0100 Subject: [PATCH 006/424] add comment Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/stores/RoomViewStore.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/stores/RoomViewStore.tsx b/src/stores/RoomViewStore.tsx index ea1f3e04c9..6a6468d5d0 100644 --- a/src/stores/RoomViewStore.tsx +++ b/src/stores/RoomViewStore.tsx @@ -99,6 +99,7 @@ class RoomViewStore extends Store { case 'view_room': this.viewRoom(payload); break; + // for these events blank out the roomId as we are no longer in the RoomView case 'view_create_group': case 'view_welcome_page': case 'view_home_page': From 6f34c365370b38014bf55f0b9d3ee531f4c1df75 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 21 Jul 2020 17:56:50 +0100 Subject: [PATCH 007/424] tidy up Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/@types/global.d.ts | 2 +- src/ActiveRoomObserver.ts | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/@types/global.d.ts b/src/@types/global.d.ts index e719da92c2..5d72061be5 100644 --- a/src/@types/global.d.ts +++ b/src/@types/global.d.ts @@ -41,7 +41,7 @@ declare global { mxRebrandListener: RebrandListener; mxRoomListStore: RoomListStoreClass; mxRoomListLayoutStore: RoomListLayoutStore; - mx_ActiveRoomObserver: ActiveRoomObserver; + mxActiveRoomObserver: ActiveRoomObserver; mxPlatformPeg: PlatformPeg; mxIntegrationManagers: typeof IntegrationManagers; singletonModalManager: ModalManager; diff --git a/src/ActiveRoomObserver.ts b/src/ActiveRoomObserver.ts index 4ff4951915..cc3f29dc42 100644 --- a/src/ActiveRoomObserver.ts +++ b/src/ActiveRoomObserver.ts @@ -77,7 +77,7 @@ export class ActiveRoomObserver { }; } -if (window.mx_ActiveRoomObserver === undefined) { - window.mx_ActiveRoomObserver = new ActiveRoomObserver(); +if (window.mxActiveRoomObserver === undefined) { + window.mxActiveRoomObserver = new ActiveRoomObserver(); } -export default window.mx_ActiveRoomObserver; +export default window.mxActiveRoomObserver; From 7faf94cd8dd8c12a2d8798e8a9246e10d0e070e3 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 21 Jul 2020 17:57:08 +0100 Subject: [PATCH 008/424] remove stale comment Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/ActiveRoomObserver.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ActiveRoomObserver.ts b/src/ActiveRoomObserver.ts index cc3f29dc42..1126dc9496 100644 --- a/src/ActiveRoomObserver.ts +++ b/src/ActiveRoomObserver.ts @@ -29,7 +29,7 @@ type Listener = (isActive: boolean) => void; */ export class ActiveRoomObserver { private listeners: {[key: string]: Listener[]} = {}; - private _activeRoomId = RoomViewStore.getRoomId(); // TODO + private _activeRoomId = RoomViewStore.getRoomId(); private readonly roomStoreToken: string; constructor() { From c4fc70b9be5c0d0276fa948f560c3d4034bd1f1e Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 21 Jul 2020 22:28:36 +0100 Subject: [PATCH 009/424] Post-merge fix Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- package.json | 1 + src/i18n/strings/en_EN.json | 3 +++ src/rageshake/submit-rageshake.ts | 13 ++++++------- yarn.lock | 5 +++++ 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 4b9d612444..c4b4b3cb07 100644 --- a/package.json +++ b/package.json @@ -126,6 +126,7 @@ "@types/lodash": "^4.14.152", "@types/modernizr": "^3.5.3", "@types/node": "^12.12.41", + "@types/pako": "^1.0.1", "@types/qrcode": "^1.3.4", "@types/react": "^16.9", "@types/react-dom": "^16.9.8", diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 1b508feb19..442de94f77 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -543,6 +543,7 @@ "Collecting app version information": "Collecting app version information", "Collecting logs": "Collecting logs", "Uploading report": "Uploading report", + "Downloading report": "Downloading report", "Waiting for response from server": "Waiting for response from server", "Messages containing my display name": "Messages containing my display name", "Messages containing my username": "Messages containing my username", @@ -1615,9 +1616,11 @@ "Please tell us what went wrong or, better, create a GitHub issue that describes the problem.": "Please tell us what went wrong or, better, create a GitHub issue that describes the problem.", "Preparing to send logs": "Preparing to send logs", "Failed to send logs: ": "Failed to send logs: ", + "Preparing to download logs": "Preparing to download logs", "Reminder: Your browser is unsupported, so your experience may be unpredictable.": "Reminder: Your browser is unsupported, so your experience may be unpredictable.", "Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.", "Before submitting logs, you must create a GitHub issue to describe your problem.": "Before submitting logs, you must create a GitHub issue to describe your problem.", + "Click here to download your logs.": "Click here to download your logs.", "GitHub issue": "GitHub issue", "Notes": "Notes", "If there is additional context that would help in analysing the issue, such as what you were doing at the time, room IDs, user IDs, etc., please include those things here.": "If there is additional context that would help in analysing the issue, such as what you were doing at the time, room IDs, user IDs, etc., please include those things here.", diff --git a/src/rageshake/submit-rageshake.ts b/src/rageshake/submit-rageshake.ts index 697b0dfc45..7d5bd535d2 100644 --- a/src/rageshake/submit-rageshake.ts +++ b/src/rageshake/submit-rageshake.ts @@ -25,7 +25,6 @@ import Tar from "tar-js"; import * as rageshake from './rageshake'; - // polyfill textencoder if necessary import * as TextEncodingUtf8 from 'text-encoding-utf-8'; import SettingsStore from "../settings/SettingsStore"; @@ -41,7 +40,7 @@ interface IOpts { progressCallback?: (string) => void; } -async function collectBugReport(opts) { +async function collectBugReport(opts: IOpts) { opts = opts || {}; const progressCallback = opts.progressCallback || (() => {}); @@ -230,18 +229,18 @@ export async function downloadBugReport(opts) { let metadata = ""; const tape = new Tar(); let i = 0; - for (const e of body.entries()) { - if (e[0] === 'compressed-log') { + for (const [key, value] of body.entries()) { + if (key === 'compressed-log') { await new Promise((resolve => { const reader = new FileReader(); reader.addEventListener('loadend', ev => { tape.append(`log-${i++}.log`, pako.ungzip(ev.target.result)); resolve(); }); - reader.readAsArrayBuffer(e[1]); + reader.readAsArrayBuffer(value as Blob); })); } else { - metadata += `${e[0]} = ${e[1]}\n`; + metadata += `${key} = ${value}\n`; } } tape.append('issue.txt', metadata); @@ -257,7 +256,7 @@ export async function downloadBugReport(opts) { } // Source: https://github.com/beatgammit/tar-js/blob/master/examples/main.js -function uint8ToString(buf) { +function uint8ToString(buf: Buffer) { let i, length, out = ''; for (i = 0, length = buf.length; i < length; i += 1) { out += String.fromCharCode(buf[i]); diff --git a/yarn.lock b/yarn.lock index 9f7188f276..5987cb6dfb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1362,6 +1362,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.44.tgz#0d400a1453adcb359b133acceae4dd8bb0e0a159" integrity sha512-jM6QVv0Sm5d3nW+nUD5jSzPcO6oPqboitSNcwgBay9hifVq/Rauq1PYnROnsmuw45JMBiTnsPAno0bKu2e2xrg== +"@types/pako@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/pako/-/pako-1.0.1.tgz#33b237f3c9aff44d0f82fe63acffa4a365ef4a61" + integrity sha512-GdZbRSJ3Cv5fiwT6I0SQ3ckeN2PWNqxd26W9Z2fCK1tGrrasGy4puvNFtnddqH9UJFMQYXxEuuB7B8UK+LLwSg== + "@types/prop-types@*": version "15.7.3" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" From fd869b20fa6e4674d53361b3eeff9d78970376cc Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 21 Jul 2020 22:33:01 +0100 Subject: [PATCH 010/424] type coerce Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/rageshake/submit-rageshake.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rageshake/submit-rageshake.ts b/src/rageshake/submit-rageshake.ts index 7d5bd535d2..2762c21dff 100644 --- a/src/rageshake/submit-rageshake.ts +++ b/src/rageshake/submit-rageshake.ts @@ -234,7 +234,7 @@ export async function downloadBugReport(opts) { await new Promise((resolve => { const reader = new FileReader(); reader.addEventListener('loadend', ev => { - tape.append(`log-${i++}.log`, pako.ungzip(ev.target.result)); + tape.append(`log-${i++}.log`, pako.ungzip(ev.target.result as string)); resolve(); }); reader.readAsArrayBuffer(value as Blob); From a0e7efd7d5ca20e5ba6b904aa6fa19b3aedc2424 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 21 Jul 2020 22:50:39 +0100 Subject: [PATCH 011/424] delint Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/rageshake/submit-rageshake.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/rageshake/submit-rageshake.ts b/src/rageshake/submit-rageshake.ts index 2762c21dff..6e49149621 100644 --- a/src/rageshake/submit-rageshake.ts +++ b/src/rageshake/submit-rageshake.ts @@ -257,11 +257,10 @@ export async function downloadBugReport(opts) { // Source: https://github.com/beatgammit/tar-js/blob/master/examples/main.js function uint8ToString(buf: Buffer) { - let i, length, out = ''; - for (i = 0, length = buf.length; i < length; i += 1) { + let out = ''; + for (let i = 0; i < buf.length; i += 1) { out += String.fromCharCode(buf[i]); } - return out; } From d55699211e0a3b93ffc1ed898dc10c18c78dcf41 Mon Sep 17 00:00:00 2001 From: Jorik Schellekens Date: Mon, 27 Jul 2020 15:13:02 +0100 Subject: [PATCH 012/424] Update copy icon on pre block and share dialogues --- res/css/views/dialogs/_ShareDialog.scss | 3 ++- res/css/views/rooms/_EventTile.scss | 5 +++-- res/img/feather-customised/clipboard.svg | 4 ++++ res/themes/legacy-light/css/_legacy-light.scss | 3 ++- res/themes/light/css/_light.scss | 2 +- src/components/views/dialogs/ShareDialog.tsx | 1 - src/i18n/strings/en_EN.json | 1 - 7 files changed, 12 insertions(+), 7 deletions(-) create mode 100644 res/img/feather-customised/clipboard.svg diff --git a/res/css/views/dialogs/_ShareDialog.scss b/res/css/views/dialogs/_ShareDialog.scss index d2fe98e8f9..c343b872fd 100644 --- a/res/css/views/dialogs/_ShareDialog.scss +++ b/res/css/views/dialogs/_ShareDialog.scss @@ -51,7 +51,8 @@ limitations under the License. display: inherit; } .mx_ShareDialog_matrixto_copy > div { - background-image: url($copy-button-url); + mask-image: url($copy-button-url); + background-color: $message-action-bar-fg-color; margin-left: 5px; width: 20px; height: 20px; diff --git a/res/css/views/rooms/_EventTile.scss b/res/css/views/rooms/_EventTile.scss index 2a2191b799..eb0e1dd7b0 100644 --- a/res/css/views/rooms/_EventTile.scss +++ b/res/css/views/rooms/_EventTile.scss @@ -536,11 +536,12 @@ $left-gutter: 64px; display: inline-block; visibility: hidden; cursor: pointer; - top: 8px; + top: 6px; right: 6px; width: 19px; height: 19px; - background-image: url($copy-button-url); + mask-image: url($copy-button-url); + background-color: $message-action-bar-fg-color; } .mx_EventTile_body .mx_EventTile_pre_container:focus-within .mx_EventTile_copyButton, diff --git a/res/img/feather-customised/clipboard.svg b/res/img/feather-customised/clipboard.svg new file mode 100644 index 0000000000..b25b97176c --- /dev/null +++ b/res/img/feather-customised/clipboard.svg @@ -0,0 +1,4 @@ + + + + diff --git a/res/themes/legacy-light/css/_legacy-light.scss b/res/themes/legacy-light/css/_legacy-light.scss index 3465aa307e..af5461be83 100644 --- a/res/themes/legacy-light/css/_legacy-light.scss +++ b/res/themes/legacy-light/css/_legacy-light.scss @@ -228,7 +228,8 @@ $event-redacted-border-color: #cccccc; // event timestamp $event-timestamp-color: #acacac; -$copy-button-url: "$(res)/img/icon_copy_message.svg"; +$copy-button-url: "$(res)/img/feather-customised/clipboard.svg"; + // e2e $e2e-verified-color: #76cfa5; // N.B. *NOT* the same as $accent-color diff --git a/res/themes/light/css/_light.scss b/res/themes/light/css/_light.scss index e317683963..315ea1c0a5 100644 --- a/res/themes/light/css/_light.scss +++ b/res/themes/light/css/_light.scss @@ -227,7 +227,7 @@ $event-redacted-border-color: #cccccc; // event timestamp $event-timestamp-color: #acacac; -$copy-button-url: "$(res)/img/icon_copy_message.svg"; +$copy-button-url: "$(res)/img/feather-customised/clipboard.svg"; // e2e $e2e-verified-color: #76cfa5; // N.B. *NOT* the same as $accent-color diff --git a/src/components/views/dialogs/ShareDialog.tsx b/src/components/views/dialogs/ShareDialog.tsx index 2e1529cbf1..0712e6fe3f 100644 --- a/src/components/views/dialogs/ShareDialog.tsx +++ b/src/components/views/dialogs/ShareDialog.tsx @@ -211,7 +211,6 @@ export default class ShareDialog extends React.PureComponent { { matrixToUrl } - { _t('COPY') }
 
diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 18e2da9a31..04ddb71444 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -1778,7 +1778,6 @@ "Share Community": "Share Community", "Share Room Message": "Share Room Message", "Link to selected message": "Link to selected message", - "COPY": "COPY", "Command Help": "Command Help", "To help us prevent this in future, please send us logs.": "To help us prevent this in future, please send us logs.", "Missing session data": "Missing session data", From 1d6c2b786ebece54f7c429464d915b6d6c26cc43 Mon Sep 17 00:00:00 2001 From: Jorik Schellekens Date: Mon, 27 Jul 2020 15:16:28 +0100 Subject: [PATCH 013/424] File panel spacing and corner rounding --- res/css/structures/_FilePanel.scss | 12 +++++++++--- res/css/views/messages/_MImageBody.scss | 2 ++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/res/css/structures/_FilePanel.scss b/res/css/structures/_FilePanel.scss index 859ee28035..2472bcd780 100644 --- a/res/css/structures/_FilePanel.scss +++ b/res/css/structures/_FilePanel.scss @@ -41,13 +41,19 @@ limitations under the License. .mx_FilePanel .mx_EventTile { word-break: break-word; + margin-top: 32px; } .mx_FilePanel .mx_EventTile .mx_MImageBody { margin-right: 0px; } +.mx_FilePanel .mx_EventTile .mx_MFileBody { + line-height: 2.4rem; +} + .mx_FilePanel .mx_EventTile .mx_MFileBody_download { + padding-top: 8px; display: flex; font-size: $font-14px; color: $event-timestamp-color; @@ -60,7 +66,7 @@ limitations under the License. .mx_FilePanel .mx_EventTile .mx_MImageBody_size { flex: 1 0 0; - font-size: $font-11px; + font-size: $font-14px; text-align: right; white-space: nowrap; } @@ -80,7 +86,7 @@ limitations under the License. flex: 1 1 auto; line-height: initial; padding: 0px; - font-size: $font-11px; + font-size: $font-14px; opacity: 1.0; color: $event-timestamp-color; } @@ -90,7 +96,7 @@ limitations under the License. text-align: right; visibility: visible; position: initial; - font-size: $font-11px; + font-size: $font-14px; opacity: 1.0; color: $event-timestamp-color; } diff --git a/res/css/views/messages/_MImageBody.scss b/res/css/views/messages/_MImageBody.scss index 547b16e9ad..2faea41709 100644 --- a/res/css/views/messages/_MImageBody.scss +++ b/res/css/views/messages/_MImageBody.scss @@ -34,6 +34,8 @@ limitations under the License. // Make sure the _thumbnail is positioned relative to the _container position: relative; + + border-radius: 4px; } .mx_MImageBody_thumbnail_spinner { From 84601753894b3538f3eadc566aa3e8a2d0b10bfe Mon Sep 17 00:00:00 2001 From: Jorik Schellekens Date: Mon, 27 Jul 2020 15:17:25 +0100 Subject: [PATCH 014/424] Move actions above tile --- res/css/views/messages/_MessageActionBar.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/css/views/messages/_MessageActionBar.scss b/res/css/views/messages/_MessageActionBar.scss index e3ccd99611..d2ff551668 100644 --- a/res/css/views/messages/_MessageActionBar.scss +++ b/res/css/views/messages/_MessageActionBar.scss @@ -24,7 +24,7 @@ limitations under the License. line-height: $font-24px; border-radius: 4px; background: $message-action-bar-bg-color; - top: -18px; + top: -26px; right: 8px; user-select: none; // Ensure the action bar appears above over things, like the read marker. From 1a9487f1bea05865c23705aa82aaedd43f33bafb Mon Sep 17 00:00:00 2001 From: Jorik Schellekens Date: Mon, 27 Jul 2020 15:20:50 +0100 Subject: [PATCH 015/424] Left align display names irc layout --- res/css/views/rooms/_IRCLayout.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/css/views/rooms/_IRCLayout.scss b/res/css/views/rooms/_IRCLayout.scss index ed60c220e7..958d718b11 100644 --- a/res/css/views/rooms/_IRCLayout.scss +++ b/res/css/views/rooms/_IRCLayout.scss @@ -54,7 +54,7 @@ $irc-line-height: $font-18px; flex-shrink: 0; width: var(--name-width); text-overflow: ellipsis; - text-align: right; + text-align: left; display: flex; align-items: center; overflow: visible; From 447ef63950f4b74de2d5b72df98a0f5c973451e1 Mon Sep 17 00:00:00 2001 From: Jorik Schellekens Date: Mon, 27 Jul 2020 16:36:31 +0100 Subject: [PATCH 016/424] Replace old checkboxes --- .../tabs/room/_SecurityRoomSettingsTab.scss | 4 - .../tabs/room/SecurityRoomSettingsTab.js | 92 ++++++++++--------- 2 files changed, 50 insertions(+), 46 deletions(-) diff --git a/res/css/views/settings/tabs/room/_SecurityRoomSettingsTab.scss b/res/css/views/settings/tabs/room/_SecurityRoomSettingsTab.scss index b5a57dfefb..23dcc532b2 100644 --- a/res/css/views/settings/tabs/room/_SecurityRoomSettingsTab.scss +++ b/res/css/views/settings/tabs/room/_SecurityRoomSettingsTab.scss @@ -14,10 +14,6 @@ See the License for the specific language governing permissions and limitations under the License. */ -.mx_SecurityRoomSettingsTab label { - display: block; -} - .mx_SecurityRoomSettingsTab_warning { display: block; diff --git a/src/components/views/settings/tabs/room/SecurityRoomSettingsTab.js b/src/components/views/settings/tabs/room/SecurityRoomSettingsTab.js index c67596a3a5..8b8b82c568 100644 --- a/src/components/views/settings/tabs/room/SecurityRoomSettingsTab.js +++ b/src/components/views/settings/tabs/room/SecurityRoomSettingsTab.js @@ -23,6 +23,7 @@ import LabelledToggleSwitch from "../../../elements/LabelledToggleSwitch"; import {SettingLevel} from "../../../../../settings/SettingsStore"; import Modal from "../../../../../Modal"; import QuestionDialog from "../../../dialogs/QuestionDialog"; +import StyledRadioButton from '../../../elements/StyledRadioButton'; export default class SecurityRoomSettingsTab extends React.Component { static propTypes = { @@ -257,27 +258,30 @@ export default class SecurityRoomSettingsTab extends React.Component {
{guestWarning} {aliasWarning} - - - +
); } @@ -294,34 +298,38 @@ export default class SecurityRoomSettingsTab extends React.Component { {_t('Changes to who can read history will only apply to future messages in this room. ' + 'The visibility of existing history will be unchanged.')} - - - - + ); } From b71e5f30db53d70daf41327cb287c8187a4fe523 Mon Sep 17 00:00:00 2001 From: Jorik Schellekens Date: Mon, 27 Jul 2020 16:49:05 +0100 Subject: [PATCH 017/424] Update event selected colors --- res/themes/dark/css/_dark.scss | 2 +- res/themes/light/css/_light.scss | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/res/themes/dark/css/_dark.scss b/res/themes/dark/css/_dark.scss index 15155ba854..698cfdcf0a 100644 --- a/res/themes/dark/css/_dark.scss +++ b/res/themes/dark/css/_dark.scss @@ -42,7 +42,7 @@ $inverted-bg-color: $base-color; $selected-color: $room-highlight-color; // selected for hoverover & selected event tiles -$event-selected-color: $header-panel-bg-color; +$event-selected-color: #21262c; // used for the hairline dividers in RoomView $primary-hairline-color: transparent; diff --git a/res/themes/light/css/_light.scss b/res/themes/light/css/_light.scss index 315ea1c0a5..d6e411b68d 100644 --- a/res/themes/light/css/_light.scss +++ b/res/themes/light/css/_light.scss @@ -78,7 +78,7 @@ $droptarget-bg-color: rgba(255,255,255,0.5); $selected-color: $secondary-accent-color; // selected for hoverover & selected event tiles -$event-selected-color: $header-panel-bg-color; +$event-selected-color: #f6f7f8; // used for the hairline dividers in RoomView $primary-hairline-color: transparent; From 9cd232617d5c0de68283b82d87602deee9953038 Mon Sep 17 00:00:00 2001 From: Jorik Schellekens Date: Tue, 28 Jul 2020 13:19:11 +0100 Subject: [PATCH 018/424] Unify composer and room header icons --- res/css/structures/_RightPanel.scss | 4 ++-- res/css/views/rooms/_MessageComposer.scss | 22 ++++++++++++++----- res/css/views/rooms/_RoomHeader.scss | 2 +- res/themes/dark/css/_dark.scss | 3 +-- res/themes/legacy-dark/css/_legacy-dark.scss | 3 +-- .../legacy-light/css/_legacy-light.scss | 3 +-- res/themes/light/css/_light.scss | 3 +-- .../context_menu/ContextMenuTooltipButton.tsx | 1 + .../views/right_panel/HeaderButton.js | 2 ++ src/components/views/rooms/MessageComposer.js | 12 ++++++++-- src/components/views/rooms/Stickerpicker.js | 3 ++- 11 files changed, 39 insertions(+), 19 deletions(-) diff --git a/res/css/structures/_RightPanel.scss b/res/css/structures/_RightPanel.scss index 2fe7aac3b2..0515b03118 100644 --- a/res/css/structures/_RightPanel.scss +++ b/res/css/structures/_RightPanel.scss @@ -65,7 +65,7 @@ limitations under the License. left: 4px; // center with parent of 32px height: 24px; width: 24px; - background-color: $rightpanel-button-color; + background-color: $icon-button-color; mask-repeat: no-repeat; mask-size: contain; } @@ -100,7 +100,7 @@ limitations under the License. background: rgba($accent-color, 0.25); // make the icon the accent color too &::before { - background-color: $accent-color; + background-color: $accent-color !important; } } diff --git a/res/css/views/rooms/_MessageComposer.scss b/res/css/views/rooms/_MessageComposer.scss index ec95403262..3a94ee02b0 100644 --- a/res/css/views/rooms/_MessageComposer.scss +++ b/res/css/views/rooms/_MessageComposer.scss @@ -21,6 +21,7 @@ limitations under the License. border-top: 1px solid $primary-hairline-color; position: relative; padding-left: 82px; + padding-right: 6px; } .mx_MessageComposer_replaced_wrapper { @@ -180,23 +181,34 @@ limitations under the License. .mx_MessageComposer_button { position: relative; - margin-right: 12px; + margin-right: 6px; cursor: pointer; - height: 20px; - width: 20px; + height: 26px; + width: 26px; + border-radius: 100%; &::before { content: ''; position: absolute; + top: 3px; + left: 3px; height: 20px; width: 20px; - background-color: $composer-button-color; + background-color: $icon-button-color; mask-repeat: no-repeat; mask-size: contain; mask-position: center; } + &:hover { + background: rgba($accent-color, 0.1); + + &::before { + background-color: $accent-color; + } + } + &.mx_MessageComposer_hangup::before { background-color: $warning-color; } @@ -288,7 +300,7 @@ limitations under the License. mask-size: contain; mask-position: center; mask-repeat: no-repeat; - background-color: $composer-button-color; + background-color: $icon-button-color; &.mx_MessageComposer_markdownDisabled { opacity: 0.2; diff --git a/res/css/views/rooms/_RoomHeader.scss b/res/css/views/rooms/_RoomHeader.scss index ba46100ea6..a880a7bee2 100644 --- a/res/css/views/rooms/_RoomHeader.scss +++ b/res/css/views/rooms/_RoomHeader.scss @@ -222,7 +222,7 @@ limitations under the License. left: 4px; // center with parent of 32px height: 24px; width: 24px; - background-color: $roomheader-button-color; + background-color: $icon-button-color; mask-repeat: no-repeat; mask-size: contain; } diff --git a/res/themes/dark/css/_dark.scss b/res/themes/dark/css/_dark.scss index 698cfdcf0a..ba3ddc160c 100644 --- a/res/themes/dark/css/_dark.scss +++ b/res/themes/dark/css/_dark.scss @@ -96,10 +96,9 @@ $roomheader-bg-color: $bg-color; $roomheader-addroom-bg-color: rgba(92, 100, 112, 0.3); $roomheader-addroom-fg-color: $text-primary-color; $tagpanel-button-color: $header-panel-text-primary-color; -$roomheader-button-color: $header-panel-text-primary-color; $groupheader-button-color: $header-panel-text-primary-color; $rightpanel-button-color: $header-panel-text-primary-color; -$composer-button-color: $header-panel-text-primary-color; +$icon-button-color: #8E99A4; $roomtopic-color: $text-secondary-color; $eventtile-meta-color: $roomtopic-color; diff --git a/res/themes/legacy-dark/css/_legacy-dark.scss b/res/themes/legacy-dark/css/_legacy-dark.scss index 7ecfcf13d9..4268fad030 100644 --- a/res/themes/legacy-dark/css/_legacy-dark.scss +++ b/res/themes/legacy-dark/css/_legacy-dark.scss @@ -95,10 +95,9 @@ $roomheader-color: $text-primary-color; $roomheader-addroom-bg-color: #3c4556; // $search-placeholder-color at 0.5 opacity $roomheader-addroom-fg-color: $text-primary-color; $tagpanel-button-color: $header-panel-text-primary-color; -$roomheader-button-color: $header-panel-text-primary-color; $groupheader-button-color: $header-panel-text-primary-color; $rightpanel-button-color: $header-panel-text-primary-color; -$composer-button-color: $header-panel-text-primary-color; +$icon-button-color: $header-panel-text-primary-color; $roomtopic-color: $text-secondary-color; $eventtile-meta-color: $roomtopic-color; diff --git a/res/themes/legacy-light/css/_legacy-light.scss b/res/themes/legacy-light/css/_legacy-light.scss index af5461be83..5ebb4ccc02 100644 --- a/res/themes/legacy-light/css/_legacy-light.scss +++ b/res/themes/legacy-light/css/_legacy-light.scss @@ -162,10 +162,9 @@ $roomheader-bg-color: $primary-bg-color; $roomheader-addroom-bg-color: #91a1c0; $roomheader-addroom-fg-color: $accent-fg-color; $tagpanel-button-color: #91a1c0; -$roomheader-button-color: #91a1c0; $groupheader-button-color: #91a1c0; $rightpanel-button-color: #91a1c0; -$composer-button-color: #91a1c0; +$icon-button-color: #91a1c0; $roomtopic-color: #9e9e9e; $eventtile-meta-color: $roomtopic-color; diff --git a/res/themes/light/css/_light.scss b/res/themes/light/css/_light.scss index d6e411b68d..dcc2ff6b7b 100644 --- a/res/themes/light/css/_light.scss +++ b/res/themes/light/css/_light.scss @@ -162,10 +162,9 @@ $roomheader-bg-color: $primary-bg-color; $roomheader-addroom-bg-color: rgba(92, 100, 112, 0.2); $roomheader-addroom-fg-color: #5c6470; $tagpanel-button-color: #91A1C0; -$roomheader-button-color: #91A1C0; $groupheader-button-color: #91A1C0; $rightpanel-button-color: #91A1C0; -$composer-button-color: #91A1C0; +$icon-button-color: #C1C6CD; $roomtopic-color: #9e9e9e; $eventtile-meta-color: $roomtopic-color; diff --git a/src/accessibility/context_menu/ContextMenuTooltipButton.tsx b/src/accessibility/context_menu/ContextMenuTooltipButton.tsx index abc5412100..5dc40714ed 100644 --- a/src/accessibility/context_menu/ContextMenuTooltipButton.tsx +++ b/src/accessibility/context_menu/ContextMenuTooltipButton.tsx @@ -25,6 +25,7 @@ interface IProps extends React.ComponentProps { isExpanded: boolean; } +// TODO: replace this the header buttons and the right panel buttons with a single representation // Semantic component for representing the AccessibleButton which launches a export const ContextMenuTooltipButton: React.FC = ({ isExpanded, diff --git a/src/components/views/right_panel/HeaderButton.js b/src/components/views/right_panel/HeaderButton.js index 2cfc060bba..0091b7a5c0 100644 --- a/src/components/views/right_panel/HeaderButton.js +++ b/src/components/views/right_panel/HeaderButton.js @@ -24,6 +24,8 @@ import classNames from 'classnames'; import Analytics from '../../../Analytics'; import AccessibleTooltipButton from "../elements/AccessibleTooltipButton"; +// TODO: replace this, the composer buttons and the right panel buttons with a unified +// representation export default class HeaderButton extends React.Component { constructor() { super(); diff --git a/src/components/views/rooms/MessageComposer.js b/src/components/views/rooms/MessageComposer.js index bf4700ed97..68198d07cd 100644 --- a/src/components/views/rooms/MessageComposer.js +++ b/src/components/views/rooms/MessageComposer.js @@ -15,6 +15,7 @@ See the License for the specific language governing permissions and limitations under the License. */ import React, {createRef} from 'react'; +import classNames from 'classnames'; import PropTypes from 'prop-types'; import { _t } from '../../../languageHandler'; import CallHandler from '../../../CallHandler'; @@ -29,7 +30,6 @@ import E2EIcon from './E2EIcon'; import SettingsStore from "../../../settings/SettingsStore"; import {aboveLeftOf, ContextMenu, ContextMenuTooltipButton, useContextMenu} from "../../structures/ContextMenu"; import AccessibleTooltipButton from "../elements/AccessibleTooltipButton"; - function ComposerAvatar(props) { const MemberStatusMessageAvatar = sdk.getComponent('avatars.MemberStatusMessageAvatar'); return
@@ -117,9 +117,17 @@ const EmojiButton = ({addEmoji}) => { ; } + const className = classNames( + "mx_MessageComposer_button", + "mx_MessageComposer_emoji", + { + "mx_RightPanel_headerButton_highlight": menuDisplayed, + }, + ); + return ; From 4ab3ea395adf054623315366540e524493dc03d9 Mon Sep 17 00:00:00 2001 From: Jorik Schellekens Date: Tue, 28 Jul 2020 13:56:18 +0100 Subject: [PATCH 019/424] lint --- src/components/views/rooms/Stickerpicker.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/components/views/rooms/Stickerpicker.js b/src/components/views/rooms/Stickerpicker.js index 10b63a1f5a..f6182838a1 100644 --- a/src/components/views/rooms/Stickerpicker.js +++ b/src/components/views/rooms/Stickerpicker.js @@ -14,6 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ import React from 'react'; +import classNames from 'classnames'; import {_t, _td} from '../../../languageHandler'; import AppTile from '../elements/AppTile'; import {MatrixClientPeg} from '../../../MatrixClientPeg'; @@ -379,13 +380,19 @@ export default class Stickerpicker extends React.Component { render() { let stickerPicker; let stickersButton; + const className = classNames( + "mx_MessageComposer_button", + "mx_MessageComposer_stickers", + "mx_Stickers_hideStickers", + "mx_RightPanel_headerButton_highlight", + ); if (this.state.showStickers) { // Show hide-stickers button stickersButton = Date: Tue, 28 Jul 2020 14:59:03 +0100 Subject: [PATCH 020/424] Fix tests --- test/end-to-end-tests/src/usecases/room-settings.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/end-to-end-tests/src/usecases/room-settings.js b/test/end-to-end-tests/src/usecases/room-settings.js index fac3fa0855..11e2f52c6e 100644 --- a/test/end-to-end-tests/src/usecases/room-settings.js +++ b/test/end-to-end-tests/src/usecases/room-settings.js @@ -162,7 +162,7 @@ async function changeRoomSettings(session, settings) { if (settings.visibility) { session.log.step(`sets visibility to ${settings.visibility}`); - const radios = await session.queryAll(".mx_RoomSettingsDialog input[type=radio]"); + const radios = await session.queryAll(".mx_RoomSettingsDialog label"); assert.equal(radios.length, 7); const inviteOnly = radios[0]; const publicNoGuests = radios[1]; From fb953ade8e66ee2e76a4373a2be43be22ae09264 Mon Sep 17 00:00:00 2001 From: Jorik Schellekens Date: Tue, 28 Jul 2020 16:08:25 +0100 Subject: [PATCH 021/424] Accessibility focus checkboxes and radio boxes --- res/css/_common.scss | 12 ++++++++++++ res/css/views/elements/_StyledCheckbox.scss | 6 ++++++ res/css/views/elements/_StyledRadioButton.scss | 7 +++++++ 3 files changed, 25 insertions(+) diff --git a/res/css/_common.scss b/res/css/_common.scss index f2d3a0e54b..629c99ecaf 100644 --- a/res/css/_common.scss +++ b/res/css/_common.scss @@ -692,3 +692,15 @@ input[type=text]:focus, input[type=password]:focus, textarea:focus { border-radius: $radius; } } + +@define-mixin unreal-focus { + outline-width: 2px; + outline-style: solid; + outline-color: Highlight; + + /* WebKit gets its native focus styles. */ + @media (-webkit-min-device-pixel-ratio: 0) { + outline-color: -webkit-focus-ring-color; + outline-style: auto; + } +} diff --git a/res/css/views/elements/_StyledCheckbox.scss b/res/css/views/elements/_StyledCheckbox.scss index 60f1bf0277..e2d61c033b 100644 --- a/res/css/views/elements/_StyledCheckbox.scss +++ b/res/css/views/elements/_StyledCheckbox.scss @@ -80,5 +80,11 @@ limitations under the License. background-color: $accent-color; border-color: $accent-color; } + + &.focus-visible { + & + label .mx_Checkbox_background { + @mixin unreal-focus; + } + } } } diff --git a/res/css/views/elements/_StyledRadioButton.scss b/res/css/views/elements/_StyledRadioButton.scss index ffa1337ebb..f6c01e917b 100644 --- a/res/css/views/elements/_StyledRadioButton.scss +++ b/res/css/views/elements/_StyledRadioButton.scss @@ -63,6 +63,7 @@ limitations under the License. box-sizing: border-box; height: $font-16px; width: $font-16px; + margin-left: 1px; // For the highlight on focus border: $font-1-5px solid $radio-circle-color; border-radius: $font-16px; @@ -77,6 +78,12 @@ limitations under the License. } } + &.focus-visible { + & + div { + @mixin unreal-focus; + } + } + &:checked { & + div { border-color: $active-radio-circle-color; From f64ef65f976829093bbad975dbf4764af728e45d Mon Sep 17 00:00:00 2001 From: Jorik Schellekens Date: Tue, 28 Jul 2020 17:13:58 +0100 Subject: [PATCH 022/424] Use StyledRadioGroup --- res/css/views/rooms/_MessageComposer.scss | 8 ++ res/img/icon_copy_message.svg | 86 ------------- .../context_menu/ContextMenuTooltipButton.tsx | 1 - .../views/elements/StyledRadioGroup.tsx | 3 +- src/components/views/rooms/MessageComposer.js | 4 +- src/components/views/rooms/Stickerpicker.js | 2 +- .../tabs/room/SecurityRoomSettingsTab.js | 115 +++++++++--------- 7 files changed, 72 insertions(+), 147 deletions(-) delete mode 100644 res/img/icon_copy_message.svg diff --git a/res/css/views/rooms/_MessageComposer.scss b/res/css/views/rooms/_MessageComposer.scss index 3a94ee02b0..a403a8dc4c 100644 --- a/res/css/views/rooms/_MessageComposer.scss +++ b/res/css/views/rooms/_MessageComposer.scss @@ -179,6 +179,14 @@ limitations under the License. color: $accent-color; } +.mx_MessageComposer_button_highlight { + background: rgba($accent-color, 0.25); + // make the icon the accent color too + &::before { + background-color: $accent-color !important; + } +} + .mx_MessageComposer_button { position: relative; margin-right: 6px; diff --git a/res/img/icon_copy_message.svg b/res/img/icon_copy_message.svg deleted file mode 100644 index 8d8887bb22..0000000000 --- a/res/img/icon_copy_message.svg +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - image/svg+xml - - ED5D3E59-2561-4AC1-9B43-82FBC51767FC - - - - - - ED5D3E59-2561-4AC1-9B43-82FBC51767FC - Created with sketchtool. - - - - - - - - - diff --git a/src/accessibility/context_menu/ContextMenuTooltipButton.tsx b/src/accessibility/context_menu/ContextMenuTooltipButton.tsx index 5dc40714ed..abc5412100 100644 --- a/src/accessibility/context_menu/ContextMenuTooltipButton.tsx +++ b/src/accessibility/context_menu/ContextMenuTooltipButton.tsx @@ -25,7 +25,6 @@ interface IProps extends React.ComponentProps { isExpanded: boolean; } -// TODO: replace this the header buttons and the right panel buttons with a single representation // Semantic component for representing the AccessibleButton which launches a export const ContextMenuTooltipButton: React.FC = ({ isExpanded, diff --git a/src/components/views/elements/StyledRadioGroup.tsx b/src/components/views/elements/StyledRadioGroup.tsx index ea8f65d12b..4db627e83e 100644 --- a/src/components/views/elements/StyledRadioGroup.tsx +++ b/src/components/views/elements/StyledRadioGroup.tsx @@ -25,6 +25,7 @@ interface IDefinition { disabled?: boolean; label: React.ReactChild; description?: React.ReactChild; + checked?: boolean; // If provided it will override the value comparison done in the group } interface IProps { @@ -46,7 +47,7 @@ function StyledRadioGroup({name, definitions, value, className { "mx_MessageComposer_button", "mx_MessageComposer_emoji", { - "mx_RightPanel_headerButton_highlight": menuDisplayed, + "mx_MessageComposer_button_highlight": menuDisplayed, }, ); + // TODO: replace ContextMenuTooltipButton with a unified representation of + // the header buttons and the right panel buttons return {guestWarning} {aliasWarning} - - {_t('Only people who have been invited')} - - - {_t('Anyone who knows the room\'s link, apart from guests')} - - - {_t("Anyone who knows the room's link, including guests")} - +
); } @@ -298,38 +301,36 @@ export default class SecurityRoomSettingsTab extends React.Component { {_t('Changes to who can read history will only apply to future messages in this room. ' + 'The visibility of existing history will be unchanged.')} - - {_t("Anyone")} - - - {_t('Members only (since the point in time of selecting this option)')} - - - {_t('Members only (since they were invited)')} - - - {_t('Members only (since they joined)')} - + ); } From 01d624fdafc2f49c7d516da2c6075c0dca82ffed Mon Sep 17 00:00:00 2001 From: Bruno Windels Date: Fri, 31 Jul 2020 13:47:40 +0200 Subject: [PATCH 023/424] Make the reply preview not an overlay on the timeline anymore As users can't scroll down all the way down to the timeline like this to see the last message (and perhaps adjust their reply to it) This also remove the wrapper div as it is not needed anymore --- res/css/views/rooms/_ReplyPreview.scss | 4 ---- res/css/views/rooms/_SendMessageComposer.scss | 5 ----- src/components/views/rooms/SendMessageComposer.js | 4 +--- 3 files changed, 1 insertion(+), 12 deletions(-) diff --git a/res/css/views/rooms/_ReplyPreview.scss b/res/css/views/rooms/_ReplyPreview.scss index 9feb337042..10f8e21e43 100644 --- a/res/css/views/rooms/_ReplyPreview.scss +++ b/res/css/views/rooms/_ReplyPreview.scss @@ -15,10 +15,6 @@ limitations under the License. */ .mx_ReplyPreview { - position: absolute; - bottom: 0; - z-index: 1000; - width: 100%; border: 1px solid $primary-hairline-color; background: $primary-bg-color; border-bottom: none; diff --git a/res/css/views/rooms/_SendMessageComposer.scss b/res/css/views/rooms/_SendMessageComposer.scss index 0b646666e7..9f6a8d52ce 100644 --- a/res/css/views/rooms/_SendMessageComposer.scss +++ b/res/css/views/rooms/_SendMessageComposer.scss @@ -44,10 +44,5 @@ limitations under the License. overflow-y: auto; } } - - .mx_SendMessageComposer_overlayWrapper { - position: relative; - height: 0; - } } diff --git a/src/components/views/rooms/SendMessageComposer.js b/src/components/views/rooms/SendMessageComposer.js index 130135f641..57927af4d0 100644 --- a/src/components/views/rooms/SendMessageComposer.js +++ b/src/components/views/rooms/SendMessageComposer.js @@ -444,9 +444,7 @@ export default class SendMessageComposer extends React.Component { render() { return (
-
- -
+ Date: Fri, 31 Jul 2020 14:02:40 +0200 Subject: [PATCH 024/424] Notify the timeline it's height has changed, so it can keep being at the bottom this way new messages will appear in the timeline without needing to scroll --- src/components/structures/RoomView.js | 1 + src/components/views/rooms/MessageComposer.js | 1 + src/components/views/rooms/SendMessageComposer.js | 7 +++++++ src/utils/ResizeNotifier.js | 4 ++++ 4 files changed, 13 insertions(+) diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js index 7dc2d57ff0..b6cc7722ee 100644 --- a/src/components/structures/RoomView.js +++ b/src/components/structures/RoomView.js @@ -1912,6 +1912,7 @@ export default createReactClass({ disabled={this.props.disabled} showApps={this.state.showApps} e2eStatus={this.state.e2eStatus} + resizeNotifier={this.props.resizeNotifier} permalinkCreator={this._getPermalinkCreatorForRoom(this.state.room)} />; } diff --git a/src/components/views/rooms/MessageComposer.js b/src/components/views/rooms/MessageComposer.js index bf4700ed97..00a02cf087 100644 --- a/src/components/views/rooms/MessageComposer.js +++ b/src/components/views/rooms/MessageComposer.js @@ -354,6 +354,7 @@ export default class MessageComposer extends React.Component { key="controls_input" room={this.props.room} placeholder={this.renderPlaceholderText()} + resizeNotifier={this.props.resizeNotifier} permalinkCreator={this.props.permalinkCreator} />, , , diff --git a/src/components/views/rooms/SendMessageComposer.js b/src/components/views/rooms/SendMessageComposer.js index 57927af4d0..d25eb52fb0 100644 --- a/src/components/views/rooms/SendMessageComposer.js +++ b/src/components/views/rooms/SendMessageComposer.js @@ -365,6 +365,13 @@ export default class SendMessageComposer extends React.Component { onAction = (payload) => { switch (payload.action) { case 'reply_to_event': + // add a timeout for the reply preview to be rendered, so + // that the ScrollPanel listening to the resizeNotifier can + // correctly measure it's new height and scroll down to keep + // at the bottom if it already is + setTimeout(() => { + this.props.resizeNotifier.notifyTimelineHeightChanged(); + }, 100); case Action.FocusComposer: this._editorRef && this._editorRef.focus(); break; diff --git a/src/utils/ResizeNotifier.js b/src/utils/ResizeNotifier.js index f726a43e08..5467716576 100644 --- a/src/utils/ResizeNotifier.js +++ b/src/utils/ResizeNotifier.js @@ -53,6 +53,10 @@ export default class ResizeNotifier extends EventEmitter { this._updateMiddlePanel(); } + notifyTimelineHeightChanged() { + this._updateMiddlePanel(); + } + // can be called in quick succession notifyWindowResized() { // no need to throttle this one, From 5c05b494df352e14cacd29bddda296195889e84b Mon Sep 17 00:00:00 2001 From: Bruno Windels Date: Fri, 31 Jul 2020 14:14:37 +0200 Subject: [PATCH 025/424] remove emoji icons in autocomplete/reply by designer request --- src/autocomplete/RoomProvider.tsx | 2 +- src/autocomplete/UserProvider.tsx | 2 +- src/components/views/rooms/ReplyPreview.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/autocomplete/RoomProvider.tsx b/src/autocomplete/RoomProvider.tsx index f14fa3bbfa..b18b2d132c 100644 --- a/src/autocomplete/RoomProvider.tsx +++ b/src/autocomplete/RoomProvider.tsx @@ -118,7 +118,7 @@ export default class RoomProvider extends AutocompleteProvider { } getName() { - return '💬 ' + _t('Rooms'); + return _t('Rooms'); } renderCompletions(completions: React.ReactNode[]): React.ReactNode { diff --git a/src/autocomplete/UserProvider.tsx b/src/autocomplete/UserProvider.tsx index eeb6c7a522..c957b5e597 100644 --- a/src/autocomplete/UserProvider.tsx +++ b/src/autocomplete/UserProvider.tsx @@ -137,7 +137,7 @@ export default class UserProvider extends AutocompleteProvider { } getName(): string { - return '👥 ' + _t('Users'); + return _t('Users'); } _makeUsers() { diff --git a/src/components/views/rooms/ReplyPreview.js b/src/components/views/rooms/ReplyPreview.js index e7cd2b4c0d..de70338245 100644 --- a/src/components/views/rooms/ReplyPreview.js +++ b/src/components/views/rooms/ReplyPreview.js @@ -73,7 +73,7 @@ export default class ReplyPreview extends React.Component { return
- { '💬 ' + _t('Replying') } + { _t('Replying') }
Date: Fri, 31 Jul 2020 13:24:17 +0100 Subject: [PATCH 026/424] Upgrade matrix-js-sdk to 8.0.1-rc.1 --- package.json | 2 +- yarn.lock | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 0808f5aecd..a5bb9d522e 100644 --- a/package.json +++ b/package.json @@ -79,7 +79,7 @@ "is-ip": "^2.0.0", "linkifyjs": "^2.1.9", "lodash": "^4.17.19", - "matrix-js-sdk": "github:matrix-org/matrix-js-sdk#develop", + "matrix-js-sdk": "8.0.1-rc.1", "minimist": "^1.2.5", "pako": "^1.0.11", "parse5": "^5.1.1", diff --git a/yarn.lock b/yarn.lock index 47248af9cd..21a3aa19f6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6435,9 +6435,10 @@ mathml-tag-names@^2.0.1: resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3" integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg== -"matrix-js-sdk@github:matrix-org/matrix-js-sdk#develop": - version "8.0.0" - resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/c669382e12c8cd1d7d538421dfad4f50812af44d" +matrix-js-sdk@8.0.1-rc.1: + version "8.0.1-rc.1" + resolved "https://registry.yarnpkg.com/matrix-js-sdk/-/matrix-js-sdk-8.0.1-rc.1.tgz#dbc2544f0058e2530e84a5d3b3e1abe06e395597" + integrity sha512-K3wOAf8lVLBx3Xhgb57JoVtFRVf52PHDnsnj00ST4kCAbnlJ3iuJ8OuOX16Bbk0fvV7RLJi/At4bm1Ld6PsIkQ== dependencies: "@babel/runtime" "^7.8.3" another-json "^0.2.0" From bc66ec851ab4d65ffe3f0cdc436ac2d38ca1c62f Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Fri, 31 Jul 2020 13:30:45 +0100 Subject: [PATCH 027/424] Prepare changelog for v3.1.0-rc.1 --- CHANGELOG.md | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d944d58f36..721f005dd9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,43 @@ +Changes in [3.1.0-rc.1](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v3.1.0-rc.1) (2020-07-31) +============================================================================================================= +[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v3.0.0...v3.1.0-rc.1) + + * Upgrade JS SDK to 8.0.1-rc.1 + * Update from Weblate + [\#5071](https://github.com/matrix-org/matrix-react-sdk/pull/5071) + * Add local echo for notifications in the new room list + [\#5065](https://github.com/matrix-org/matrix-react-sdk/pull/5065) + * Fix various small regressions in the room list's behaviour + [\#5070](https://github.com/matrix-org/matrix-react-sdk/pull/5070) + * Remove redundant lint dependencies + [\#5059](https://github.com/matrix-org/matrix-react-sdk/pull/5059) + * Fix key backup warning on soft logout page + [\#5069](https://github.com/matrix-org/matrix-react-sdk/pull/5069) + * Bump elliptic from 6.5.2 to 6.5.3 + [\#5066](https://github.com/matrix-org/matrix-react-sdk/pull/5066) + * Fix crash on logging in again after soft logout + [\#5068](https://github.com/matrix-org/matrix-react-sdk/pull/5068) + * Convert right_panel to TS + [\#5036](https://github.com/matrix-org/matrix-react-sdk/pull/5036) + * Remove all unreferenced images + [\#5063](https://github.com/matrix-org/matrix-react-sdk/pull/5063) + * Provide nicer error for no known servers error when accepting an invite + [\#5061](https://github.com/matrix-org/matrix-react-sdk/pull/5061) + * add logging for keytar/pickle key + [\#5057](https://github.com/matrix-org/matrix-react-sdk/pull/5057) + * Don't speak the outgoing message if it is in the Sending state. + [\#4075](https://github.com/matrix-org/matrix-react-sdk/pull/4075) + * Remove poorly contrasted "dark style" heading in Room Preview Bar + [\#5052](https://github.com/matrix-org/matrix-react-sdk/pull/5052) + * Fix Query Matcher regression with certain unhomoglyph'd characters + [\#5050](https://github.com/matrix-org/matrix-react-sdk/pull/5050) + * Fix handlebar interaction + [\#4989](https://github.com/matrix-org/matrix-react-sdk/pull/4989) + * Minor improvements to filtering performance + [\#5054](https://github.com/matrix-org/matrix-react-sdk/pull/5054) + * Fix TextWithTooltip "leaking" tooltip wrappers + [\#5055](https://github.com/matrix-org/matrix-react-sdk/pull/5055) + Changes in [3.0.0](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v3.0.0) (2020-07-27) =================================================================================================== [Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v2.10.1...v3.0.0) From d08a08daeb6cb50d3b0de7f7001a34f82ace6223 Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Fri, 31 Jul 2020 13:30:45 +0100 Subject: [PATCH 028/424] v3.1.0-rc.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a5bb9d522e..f23163248c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "matrix-react-sdk", - "version": "3.0.0", + "version": "3.1.0-rc.1", "description": "SDK for matrix.org using React", "author": "matrix.org", "repository": { From c0dc8905e416834af6ef679b0d1a59e626a5462e Mon Sep 17 00:00:00 2001 From: Bruno Windels Date: Fri, 31 Jul 2020 16:57:35 +0200 Subject: [PATCH 029/424] update i18n --- src/i18n/strings/en_EN.json | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 644cd03daf..46d9f4cdf3 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -2182,8 +2182,6 @@ "Room Notification": "Room Notification", "Notification Autocomplete": "Notification Autocomplete", "Room Autocomplete": "Room Autocomplete", - "Users": "Users", - "User Autocomplete": "User Autocomplete", "Passphrases must match": "Passphrases must match", "Passphrase must not be empty": "Passphrase must not be empty", "Export room keys": "Export room keys", From a3ca80b206d1e525225642c29dcd231cbde0f19b Mon Sep 17 00:00:00 2001 From: Bruno Windels Date: Fri, 31 Jul 2020 18:27:07 +0200 Subject: [PATCH 030/424] move the reply preview one level higher so the buttons and avatar don't get centered with it --- src/components/views/rooms/MessageComposer.js | 21 ++++++++++++++++++- .../views/rooms/SendMessageComposer.js | 9 -------- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/components/views/rooms/MessageComposer.js b/src/components/views/rooms/MessageComposer.js index 00a02cf087..22522c748e 100644 --- a/src/components/views/rooms/MessageComposer.js +++ b/src/components/views/rooms/MessageComposer.js @@ -29,6 +29,7 @@ import E2EIcon from './E2EIcon'; import SettingsStore from "../../../settings/SettingsStore"; import {aboveLeftOf, ContextMenu, ContextMenuTooltipButton, useContextMenu} from "../../structures/ContextMenu"; import AccessibleTooltipButton from "../elements/AccessibleTooltipButton"; +import ReplyPreview from "./ReplyPreview"; function ComposerAvatar(props) { const MemberStatusMessageAvatar = sdk.getComponent('avatars.MemberStatusMessageAvatar'); @@ -213,7 +214,7 @@ export default class MessageComposer extends React.Component { this._onRoomViewStoreUpdate = this._onRoomViewStoreUpdate.bind(this); this._onTombstoneClick = this._onTombstoneClick.bind(this); this.renderPlaceholderText = this.renderPlaceholderText.bind(this); - + this._dispatcherRef = null; this.state = { isQuoting: Boolean(RoomViewStore.getQuotingEvent()), tombstone: this._getRoomTombstone(), @@ -222,7 +223,24 @@ export default class MessageComposer extends React.Component { }; } + onAction = (payload) => { + if (payload.action === 'reply_to_event') { + // add a timeout for the reply preview to be rendered, so + // that the ScrollPanel listening to the resizeNotifier can + // correctly measure it's new height and scroll down to keep + // at the bottom if it already is + setTimeout(() => { + this.props.resizeNotifier.notifyTimelineHeightChanged(); + }, 100); + } + }; + + componentWillUnmount() { + dis.unregister(this.dispatcherRef); + } + componentDidMount() { + this.dispatcherRef = dis.register(this.onAction); MatrixClientPeg.get().on("RoomState.events", this._onRoomStateEvents); this._roomStoreToken = RoomViewStore.addListener(this._onRoomViewStoreUpdate); this._waitForOwnMember(); @@ -405,6 +423,7 @@ export default class MessageComposer extends React.Component { return (
+
{ controls }
diff --git a/src/components/views/rooms/SendMessageComposer.js b/src/components/views/rooms/SendMessageComposer.js index d25eb52fb0..6a7b2fc753 100644 --- a/src/components/views/rooms/SendMessageComposer.js +++ b/src/components/views/rooms/SendMessageComposer.js @@ -29,7 +29,6 @@ import { } from '../../../editor/serialize'; import {CommandPartCreator} from '../../../editor/parts'; import BasicMessageComposer from "./BasicMessageComposer"; -import ReplyPreview from "./ReplyPreview"; import RoomViewStore from '../../../stores/RoomViewStore'; import ReplyThread from "../elements/ReplyThread"; import {parseEvent} from '../../../editor/deserialize'; @@ -365,13 +364,6 @@ export default class SendMessageComposer extends React.Component { onAction = (payload) => { switch (payload.action) { case 'reply_to_event': - // add a timeout for the reply preview to be rendered, so - // that the ScrollPanel listening to the resizeNotifier can - // correctly measure it's new height and scroll down to keep - // at the bottom if it already is - setTimeout(() => { - this.props.resizeNotifier.notifyTimelineHeightChanged(); - }, 100); case Action.FocusComposer: this._editorRef && this._editorRef.focus(); break; @@ -451,7 +443,6 @@ export default class SendMessageComposer extends React.Component { render() { return (
- Date: Mon, 3 Aug 2020 13:21:04 +0100 Subject: [PATCH 031/424] Iterate copy on download logs button --- src/components/views/dialogs/BugReportDialog.js | 2 +- src/i18n/strings/en_EN.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/views/dialogs/BugReportDialog.js b/src/components/views/dialogs/BugReportDialog.js index 4c146ebed8..53dfb5d62e 100644 --- a/src/components/views/dialogs/BugReportDialog.js +++ b/src/components/views/dialogs/BugReportDialog.js @@ -202,7 +202,7 @@ export default class BugReportDialog extends React.Component {

- { _t("Click here to download your logs.") } + { _t("Download logs") } create a GitHub issue to describe your problem.": "Before submitting logs, you must create a GitHub issue to describe your problem.", - "Click here to download your logs.": "Click here to download your logs.", + "Download logs": "Download logs", "GitHub issue": "GitHub issue", "Notes": "Notes", "If there is additional context that would help in analysing the issue, such as what you were doing at the time, room IDs, user IDs, etc., please include those things here.": "If there is additional context that would help in analysing the issue, such as what you were doing at the time, room IDs, user IDs, etc., please include those things here.", From 7b7105f3f7b4c46dab5a148af7b170dc70347365 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Fri, 31 Jul 2020 16:26:03 -0600 Subject: [PATCH 032/424] Handle tag changes in sticky room updates Fixes https://github.com/vector-im/element-web/issues/14848 When we're filtering the sticky room will be excluded from the filtered set, and thus won't even appear in the `getOrderedRoomsWithoutSticky()` result. Further, we will likely have to update the position ourselves to ensure the sticky room can be placed appropriately in the list. --- src/stores/room-list/algorithms/Algorithm.ts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/stores/room-list/algorithms/Algorithm.ts b/src/stores/room-list/algorithms/Algorithm.ts index 2654a8b460..f1a7ab1613 100644 --- a/src/stores/room-list/algorithms/Algorithm.ts +++ b/src/stores/room-list/algorithms/Algorithm.ts @@ -212,7 +212,18 @@ export class Algorithm extends EventEmitter { // We specifically do NOT use the ordered rooms set as it contains the sticky room, which // means we'll be off by 1 when the user is switching rooms. This leads to visual jumping // when the user is moving south in the list (not north, because of math). - let position = this.getOrderedRoomsWithoutSticky()[tag].indexOf(val); + const tagList = this.getOrderedRoomsWithoutSticky()[tag] || []; // can be null if filtering + let position = tagList.indexOf(val); + + // We do want to see if a tag change happened though - if this did happen then we'll want + // to force the position to zero (top) to ensure we can properly handle it. + const wasSticky = this._lastStickyRoom.room ? this._lastStickyRoom.room.roomId === val.roomId : false; + if (this._lastStickyRoom.tag && tag !== this._lastStickyRoom.tag && wasSticky && position < 0) { + console.warn(`Sticky room ${val.roomId} changed tags during sticky room handling`); + position = 0; + } + + // Sanity check the position to make sure the room is qualified for being sticky if (position < 0) throw new Error(`${val.roomId} does not appear to be known and cannot be sticky`); // 🐉 Here be dragons. From 70b5e5b470e596779568abb7c8e545a4d7dce9a5 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Mon, 3 Aug 2020 13:42:01 +0100 Subject: [PATCH 033/424] skip gzipping for downloading --- src/rageshake/submit-rageshake.ts | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/rageshake/submit-rageshake.ts b/src/rageshake/submit-rageshake.ts index 092f33acab..e0e5570d99 100644 --- a/src/rageshake/submit-rageshake.ts +++ b/src/rageshake/submit-rageshake.ts @@ -40,8 +40,7 @@ interface IOpts { progressCallback?: (string) => void; } -async function collectBugReport(opts: IOpts) { - opts = opts || {}; +async function collectBugReport(opts: IOpts = {}, gzipLogs = true) { const progressCallback = opts.progressCallback || (() => {}); progressCallback(_t("Collecting app version information")); @@ -166,12 +165,14 @@ async function collectBugReport(opts: IOpts) { const logs = await rageshake.getLogsForReport(); for (const entry of logs) { // encode as UTF-8 - const buf = new TextEncoder().encode(entry.lines); + let buf = new TextEncoder().encode(entry.lines); // compress - const compressed = pako.gzip(buf); + if (gzipLogs) { + buf = pako.gzip(buf); + } - body.append('compressed-log', new Blob([compressed]), entry.id); + body.append('compressed-log', new Blob([buf]), entry.id); } } @@ -193,12 +194,11 @@ async function collectBugReport(opts: IOpts) { * * @return {Promise} Resolved when the bug report is sent. */ -export default async function sendBugReport(bugReportEndpoint: string, opts: IOpts) { +export default async function sendBugReport(bugReportEndpoint: string, opts: IOpts = {}) { if (!bugReportEndpoint) { throw new Error("No bug report endpoint has been set."); } - opts = opts || {}; const progressCallback = opts.progressCallback || (() => {}); const body = await collectBugReport(opts); @@ -220,10 +220,9 @@ export default async function sendBugReport(bugReportEndpoint: string, opts: IOp * * @return {Promise} Resolved when the bug report is downloaded (or started). */ -export async function downloadBugReport(opts) { - opts = opts || {}; +export async function downloadBugReport(opts: IOpts = {}) { const progressCallback = opts.progressCallback || (() => {}); - const body = await collectBugReport(opts); + const body = await collectBugReport(opts, false); progressCallback(_t("Downloading report")); let metadata = ""; @@ -234,7 +233,7 @@ export async function downloadBugReport(opts) { await new Promise((resolve => { const reader = new FileReader(); reader.addEventListener('loadend', ev => { - tape.append(`log-${i++}.log`, pako.ungzip(ev.target.result as string)); + tape.append(`log-${i++}.log`, new TextDecoder().decode(ev.target.result as ArrayBuffer)); resolve(); }); reader.readAsArrayBuffer(value as Blob); From 6910955f5b3ea33f03f7748960101a4948940928 Mon Sep 17 00:00:00 2001 From: Besnik Bleta Date: Sat, 1 Aug 2020 12:18:07 +0000 Subject: [PATCH 034/424] Translated using Weblate (Albanian) Currently translated at 99.8% (2333 of 2338 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/sq/ --- src/i18n/strings/sq.json | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/sq.json b/src/i18n/strings/sq.json index 3750d4d768..85c2ec6fea 100644 --- a/src/i18n/strings/sq.json +++ b/src/i18n/strings/sq.json @@ -2389,5 +2389,18 @@ "* %(senderName)s %(emote)s": "* %(senderName)s %(emote)s", "Custom Tag": "Etiketë Vetjake", "The person who invited you already left the room.": "Personi që ju ftoi ka dalë nga dhoma tashmë.", - "The person who invited you already left the room, or their server is offline.": "Personi që ju ftoi, ka dalë nga dhoma tashmë, ose shërbyesi i tij është jashtë funksionimi." + "The person who invited you already left the room, or their server is offline.": "Personi që ju ftoi, ka dalë nga dhoma tashmë, ose shërbyesi i tij është jashtë funksionimi.", + "Change notification settings": "Ndryshoni rregullime njoftimesh", + "Your server isn't responding to some requests.": "Shërbyesi juaj s’po u përgjigjet ca kërkesave.", + "Server isn't responding": "Shërbyesi s’po përgjigjet", + "Your server isn't responding to some of your requests. Below are some of the most likely reasons.": "Shërbyesi juaj s’po u përgjigjet disa kërkesave nga ju. Më poshtë gjenden disa nga arsyet më të mundshme.", + "The server (%(serverName)s) took too long to respond.": "Shërbyesi (%(serverName)s) e zgjati shumë përgjigjen.", + "Your firewall or anti-virus is blocking the request.": "Kërkesën po e bllokon firewall-i ose anti-virus-i juaj.", + "A browser extension is preventing the request.": "Kërkesën po e pengon një zgjerim i shfletuesit.", + "The server is offline.": "Shërbyesi është jashtë funksionimi.", + "The server has denied your request.": "Shërbyesi e ka hedhur poshtë kërkesën tuaj.", + "Your area is experiencing difficulties connecting to the internet.": "Zona juaj po ka probleme lidhjeje në internet.", + "A connection error occurred while trying to contact the server.": "Ndodhi një gabim teksa provohej lidhja me shërbyesin.", + "The server is not configured to indicate what the problem is (CORS).": "Shërbyesi s’është formësuar të tregojë se cili është problemi (CORS).", + "Recent changes that have not yet been received": "Ndryshime tani së fundi që s’janë marrë ende" } From d010a98593dfe0cfa811842e3e7f9195a6343f9e Mon Sep 17 00:00:00 2001 From: tusooa Date: Mon, 3 Aug 2020 06:17:59 +0000 Subject: [PATCH 035/424] Translated using Weblate (Chinese (Simplified)) Currently translated at 66.0% (1543 of 2338 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/zh_Hans/ --- src/i18n/strings/zh_Hans.json | 104 +++++++++++++++++++++++++++++++++- 1 file changed, 102 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/zh_Hans.json b/src/i18n/strings/zh_Hans.json index f4ad52a8f2..3d3970c510 100644 --- a/src/i18n/strings/zh_Hans.json +++ b/src/i18n/strings/zh_Hans.json @@ -1371,7 +1371,7 @@ "Room name or address": "房间名称或地址", "Joins room with given address": "使用给定地址加入房间", "Verify this login": "验证此登录名", - "Confirm your identity by verifying this login from one of your other sessions, granting it access to encrypted messages.": "通过从其他会话之一验证此登录名并授予其访问加密信息的权限来确认您的身份", + "Confirm your identity by verifying this login from one of your other sessions, granting it access to encrypted messages.": "通过从其他会话之一验证此登录名并授予其访问加密信息的权限来确认您的身份。", "Which officially provided instance you are using, if any": "如果您在使用官方实例,是哪一个", "Every page you use in the app": "您在应用中使用的每个页面", "Are you sure you want to cancel entering passphrase?": "确定要取消输入密码?", @@ -1460,5 +1460,105 @@ "Verify this session by completing one of the following:": "完成以下之一以验证这一会话:", "or": "或者", "Start": "开始", - "Confirm the emoji below are displayed on both sessions, in the same order:": "确认两个会话上都以同样顺序显示了下面的emoji:" + "Confirm the emoji below are displayed on both sessions, in the same order:": "确认两个会话上都以同样顺序显示了下面的emoji:", + "The person who invited you already left the room.": "邀请您的人已经离开了聊天室。", + "The person who invited you already left the room, or their server is offline.": "邀请您的人已经离开了聊天室,或者其服务器为离线状态。", + "Change notification settings": "修改通知设置", + "Manually verify all remote sessions": "手动验证所有远程会话", + "My Ban List": "我的封禁列表", + "This is your list of users/servers you have blocked - don't leave the room!": "这是您屏蔽的用户和服务器的列表——请不要离开这此聊天室!", + "Unknown caller": "未知来电人", + "Incoming voice call": "语音来电", + "Incoming video call": "视频来电", + "Incoming call": "来电", + "Waiting for your other session, %(deviceName)s (%(deviceId)s), to verify…": "等待您的另一个会话 %(deviceName)s (%(deviceId)s) 进行验证…", + "Waiting for your other session to verify…": "等待您的另一个会话进行验证…", + "Waiting for %(displayName)s to verify…": "等待 %(displayName)s 进行验证…", + "Cancelling…": "正在取消…", + "They match": "它们匹配", + "They don't match": "它们不匹配", + "To be secure, do this in person or use a trusted way to communicate.": "为了安全,请当面完成或使用信任的方法交流。", + "Lock": "锁", + "Your server isn't responding to some requests.": "您的服务器没有响应一些请求。", + "From %(deviceName)s (%(deviceId)s)": "来自 %(deviceName)s (%(deviceId)s)", + "Decline (%(counter)s)": "拒绝 (%(counter)s)", + "Accept to continue:": "接受 以继续:", + "Upload": "上传", + "Show less": "显示更少", + "Show more": "显示更多", + "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "修改密码会重置所有会话上的端对端加密的密钥,使加密聊天记录不可读,除非您先导出您的聊天室密钥,之后再重新导入。在未来会有所改进。", + "Your homeserver does not support cross-signing.": "您的主服务器不支持交叉签名。", + "Cross-signing and secret storage are enabled.": "交叉签名和秘密存储已启用。", + "Your account has a cross-signing identity in secret storage, but it is not yet trusted by this session.": "您的账户在秘密存储中有交叉签名身份,但并没有被此会话信任。", + "Cross-signing and secret storage are not yet set up.": "交叉签名和秘密存储尚未设置。", + "Reset cross-signing and secret storage": "重置交叉签名和秘密存储", + "Bootstrap cross-signing and secret storage": "自举交叉签名和秘密存储", + "unexpected type": "未预期的类型", + "Cross-signing public keys:": "交叉签名公钥:", + "in memory": "在内存中", + "not found": "未找到", + "Cross-signing private keys:": "交叉签名私钥:", + "in secret storage": "在秘密存储中", + "cached locally": "本地缓存", + "not found locally": "本地未找到", + "Session backup key:": "会话备份密钥:", + "Secret storage public key:": "秘密存储公钥:", + "in account data": "在账户数据中", + "exists": "存在", + "Your homeserver does not support session management.": "您的主服务器不支持会话管理。", + "Unable to load session list": "无法加载会话列表", + "Confirm deleting these sessions": "确认删除这些会话", + "Click the button below to confirm deleting these sessions.|other": "点击下方按钮以确认删除这些会话。", + "Click the button below to confirm deleting these sessions.|one": "点击下方按钮以确认删除此会话。", + "Delete sessions|other": "删除会话", + "Delete sessions|one": "删除会话", + "Delete %(count)s sessions|other": "删除 %(count)s 个会话", + "Delete %(count)s sessions|one": "删除 %(count)s 个会话", + "ID": "账号", + "Individually verify each session used by a user to mark it as trusted, not trusting cross-signed devices.": "逐一验证用户的每一个会话以将其标记为受信任的,而不信任交叉签名的设备。", + "Manage": "管理", + "Enable": "启用", + "%(brand)s is missing some components required for securely caching encrypted messages locally. If you'd like to experiment with this feature, build a custom %(brand)s Desktop with search components added.": "%(brand)s 缺少安全地在本地缓存加密信息所必须的部件。如果您想实验此功能,请构建一个自定义的带有搜索部件的 %(brand)s 桌面版。", + "%(brand)s can't securely cache encrypted messages locally while running in a web browser. Use %(brand)s Desktop for encrypted messages to appear in search results.": "%(brand)s 在浏览器中运行时不能安全地在本地缓存加密信息。请使用%(brand)s 桌面版以使加密信息出现在搜索结果中。", + "This session is backing up your keys. ": "此会话正在备份您的密钥。 ", + "Connect this session to key backup before signing out to avoid losing any keys that may only be on this session.": "在登出前连接此会话到密钥备份以避免丢失可能仅在此会话上的密钥。", + "Connect this session to Key Backup": "将此会话连接到密钥备份", + "Backup has a valid signature from this user": "备份有来自此用户的有效签名", + "Backup has a invalid signature from this user": "备份有来自此用户的无效签名", + "Backup has a signature from unknown user with ID %(deviceId)s": "备份有来自 ID 为 %(deviceId)s 的未知用户的签名", + "Backup has a signature from unknown session with ID %(deviceId)s": "备份有来自 ID 为 %(deviceId)s 的未知会话的签名", + "Backup has a valid signature from this session": "备份有来自此会话的有效签名", + "Backup has an invalid signature from this session": "备份有来自此会话的无效签名", + "Backup has a valid signature from verified session ": "备份有来自已验证的会话 有效签名", + "Backup has a valid signature from unverified session ": "备份有来自未验证的会话 无效签名", + "Backup has an invalid signature from verified session ": "备份有来自已验证的会话 无效签名", + "Backup has an invalid signature from unverified session ": "备份有来自未验证的会话 无效签名", + "Backup is not signed by any of your sessions": "备份没有被您的任何一个会话签名", + "This backup is trusted because it has been restored on this session": "此备份是受信任的因为它被恢复到了此会话上", + "Backup key stored: ": "存储的备份密钥: ", + "Your keys are not being backed up from this session.": "您的密钥没有被此会话备份。", + "Clear notifications": "清除通知", + "There are advanced notifications which are not shown here.": "有高级通知没有显示在此处。", + "You might have configured them in a client other than %(brand)s. You cannot tune them in %(brand)s but they still apply.": "您可能在非 %(brand)s 的客户端里配置了它们。您在 %(brand)s 里无法修改它们,但它们仍然适用。", + "Enable desktop notifications for this session": "为此会话启用桌面通知", + "Enable audible notifications for this session": "为此会话启用声音通知", + "Identity Server URL must be HTTPS": "身份服务器连接必须是 HTTPS", + "Not a valid Identity Server (status code %(code)s)": "不是有效的身份服务器(状态码 %(code)s)", + "Could not connect to Identity Server": "无法连接到身份服务器", + "Checking server": "检查服务器", + "Change identity server": "更改身份服务器", + "Disconnect from the identity server and connect to instead?": "从 身份服务器断开连接并连接到 吗?", + "Terms of service not accepted or the identity server is invalid.": "服务协议未同意或身份服务器无效。", + "The identity server you have chosen does not have any terms of service.": "您选择的身份服务器没有服务协议。", + "Disconnect identity server": "断开身份服务器连接", + "Disconnect from the identity server ?": "从身份服务器 断开连接吗?", + "Disconnect": "断开连接", + "You should remove your personal data from identity server before disconnecting. Unfortunately, identity server is currently offline or cannot be reached.": "在断开连接之前,您应该从身份服务器 删除您的个人信息。不幸的是,身份服务器 现在为离线状态或不能到达。", + "You should:": "您应该:", + "contact the administrators of identity server ": "联系身份服务器 的管理员", + "wait and try again later": "等待并稍后重试", + "Disconnect anyway": "仍然断开连接", + "You are still sharing your personal data on the identity server .": "您仍然在身份服务器 共享您的个人信息。", + "We recommend that you remove your email addresses and phone numbers from the identity server before disconnecting.": "我们推荐您在断开连接前从身份服务器上删除您的邮箱地址和手机号码。", + "Identity Server (%(server)s)": "身份服务器(%(server)s)" } From 62860d63851cacdf6020df1dd74c6f45d1f48da7 Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Sun, 2 Aug 2020 02:49:45 +0000 Subject: [PATCH 036/424] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (2338 of 2338 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/zh_Hant/ --- src/i18n/strings/zh_Hant.json | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json index 4278515ffd..a19c435147 100644 --- a/src/i18n/strings/zh_Hant.json +++ b/src/i18n/strings/zh_Hant.json @@ -2391,5 +2391,21 @@ "%(brand)s iOS": "%(brand)s iOS", "%(brand)s X for Android": "Android 的 %(brand)s X", "Custom Tag": "自訂標籤", - "* %(senderName)s %(emote)s": "* %(senderName)s %(emote)s" + "* %(senderName)s %(emote)s": "* %(senderName)s %(emote)s", + "The person who invited you already left the room.": "邀請您的人已離開聊天室。", + "The person who invited you already left the room, or their server is offline.": "邀請您的人已離開聊天室,或是他們的伺服器離線了。", + "Change notification settings": "變更通知設定", + "Your server isn't responding to some requests.": "您的伺服器未回應某些請求。", + "You're all caught up.": "都處理好了。", + "Server isn't responding": "伺服器沒有回應", + "Your server isn't responding to some of your requests. Below are some of the most likely reasons.": "您的伺服器未對您的某些請求回應。下列是可能的原因。", + "The server (%(serverName)s) took too long to respond.": "伺服器 (%(serverName)s) 花了太長的時間來回應。", + "Your firewall or anti-virus is blocking the request.": "您的防火牆或防毒軟體阻擋了請求。", + "A browser extension is preventing the request.": "瀏覽器擴充套件阻擋了請求。", + "The server is offline.": "伺服器離線。", + "The server has denied your request.": "伺服器拒絕了您的請求。", + "Your area is experiencing difficulties connecting to the internet.": "您所在區域可能遇到一些網際網路連線的問題。", + "A connection error occurred while trying to contact the server.": "在試圖與伺服器溝通時遇到連線錯誤。", + "The server is not configured to indicate what the problem is (CORS).": "伺服器沒有設定好指示問題是什麼 (CORS)。", + "Recent changes that have not yet been received": "尚未收到最新變更" } From 6ee8e39a3312656b861533a126dd40b9793dfedf Mon Sep 17 00:00:00 2001 From: Johnny998 <78mikey87@gmail.com> Date: Sun, 2 Aug 2020 12:55:52 +0000 Subject: [PATCH 037/424] Translated using Weblate (Czech) Currently translated at 91.7% (2143 of 2338 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/cs/ --- src/i18n/strings/cs.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/cs.json b/src/i18n/strings/cs.json index de80c4aa74..7f799072cb 100644 --- a/src/i18n/strings/cs.json +++ b/src/i18n/strings/cs.json @@ -1610,7 +1610,7 @@ "%(senderName)s changed a rule that was banning rooms matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s změnil pravidlo blokující místnosti odpovídající %(oldGlob)s na místnosti odpovídající %(newGlob)s z důvodu %(reason)s", "%(senderName)s changed a rule that was banning servers matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s změnil pravidlo blokující servery odpovídající %(oldGlob)s na servery odpovídající %(newGlob)s z důvodu %(reason)s", "%(senderName)s updated a ban rule that was matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s změnil blokovací pravidlo odpovídající %(oldGlob)s na odpovídající %(newGlob)s z důvodu %(reason)s", - "Try out new ways to ignore people (experimental)": "Vyzkošejte nové metody ignorování lidí (experimentální)", + "Try out new ways to ignore people (experimental)": "Vyzkoušejte nové metody ignorování lidí (experimentální)", "Match system theme": "Nastavit podle vzhledu systému", "My Ban List": "Můj seznam zablokovaných", "This is your list of users/servers you have blocked - don't leave the room!": "Toto je váš seznam blokovaných uživatelů/serverů - neopouštějte tuto místnost!", From 5da7d8e0cb0c27af61ed4aedab85340864e16bec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Priit=20J=C3=B5er=C3=BC=C3=BCt?= Date: Fri, 31 Jul 2020 13:26:47 +0000 Subject: [PATCH 038/424] Translated using Weblate (Estonian) Currently translated at 99.7% (2331 of 2338 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/et/ --- src/i18n/strings/et.json | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/i18n/strings/et.json b/src/i18n/strings/et.json index 271893b862..d4e64b46f3 100644 --- a/src/i18n/strings/et.json +++ b/src/i18n/strings/et.json @@ -792,7 +792,7 @@ "Verified!": "Verifitseeritud!", "You've successfully verified this user.": "Sa oled edukalt verifitseerinud selle kasutaja.", "Secure messages with this user are end-to-end encrypted and not able to be read by third parties.": "Turvalised sõnumid selle kasutajaga on läbivalt krüptitud ning kolmandad osapooled ei saa neid lugeda.", - "Got It": "Saan aru", + "Got It": "Selge lugu", "Scan this unique code": "Skaneeri seda unikaalset koodi", "or": "või", "Compare unique emoji": "Võrdle unikaalseid emoji'sid", @@ -1009,7 +1009,7 @@ "You are a member of this community": "Sa oled kogukonna liige", "Who can join this community?": "Kes võib liituda selle kogukonnaga?", "Everyone": "Kes iganes soovib", - "Your community hasn't got a Long Description, a HTML page to show to community members.
Click here to open settings and give it one!": "Sinu kogukonnal on puudu pikk kirjeldus, mis pole muud kui lihtne HTML-leht, mida kuvatakse liikmetele.
Klõpsi siia ja loo selline leht!", + "Your community hasn't got a Long Description, a HTML page to show to community members.
Click here to open settings and give it one!": "Sinu kogukonnal on puudu pikk kirjeldus, mis pole muud, kui lihtne HTML-leht, mida kuvatakse liikmetele.
Klõpsi siia ja loo selline leht!", "Long Description (HTML)": "Pikk kirjeldus (HTML)", "Upload avatar": "Lae üles profiilipilt ehk avatar", "Description": "Kirjeldus", @@ -2126,7 +2126,7 @@ "Restore": "Taasta", "You'll need to authenticate with the server to confirm the upgrade.": "Uuenduse kinnitamiseks pead end autentima serveris.", "Upgrade this session to allow it to verify other sessions, granting them access to encrypted messages and marking them as trusted for other users.": "Teiste sessioonide verifitseerimiseks pead uuendama seda sessiooni. Muud verifitseeritud sessioonid saavad sellega ligipääsu krüptitud sõnumitele ning nad märgitakse usaldusväärseteks ka teiste kasutajate jaoks.", - "Enter a security phrase only you know, as it’s used to safeguard your data. To be secure, you shouldn’t re-use your account password.": "Andmete kaitsmiseks sisesta turvafraas, mida vaid sina tead. On mõistlik ja palun ära kasuta selleks oma tavalist konto salasõna.", + "Enter a security phrase only you know, as it’s used to safeguard your data. To be secure, you shouldn’t re-use your account password.": "Andmete kaitsmiseks sisesta turvafraas, mida vaid sina tead. Ole mõistlik ja palun ära kasuta selleks oma tavalist konto salasõna.", "Enter a recovery passphrase": "Sisesta taastamiseks mõeldud paroolifraas", "Great! This recovery passphrase looks strong enough.": "Suurepärane! Taastamiseks mõeldud paroolifraas on piisavalt kange.", "That matches!": "Klapib!", @@ -2140,7 +2140,7 @@ "If you cancel now, you may lose encrypted messages & data if you lose access to your logins.": "Kui sa tühistad nüüd, siis sa võid peale viimasest seadmest välja logimist kaotada ligipääsu oma krüptitud sõnumitele ja andmetele.", "You can also set up Secure Backup & manage your keys in Settings.": "Samuti võid sa seadetes võtta kasutusse turvalise varunduse ning hallata oma krüptovõtmeid.", "Set up Secure backup": "Võta kasutusele turvaline varundus", - "Set a Security Phrase": "Sisesta turvafraas", + "Set a Security Phrase": "Määra turvafraas", "Confirm Security Phrase": "Kinnita turvafraas", "Save your Security Key": "Salvesta turvavõti", "Unable to set up secret storage": "Turvahoidla kasutuselevõtmine ei õnnestu", @@ -2385,5 +2385,17 @@ "Set up Secure Message Recovery": "Võta kasutusele turvaline sõnumivõtmete varundus", "Secure your backup with a recovery passphrase": "Krüpti oma varukoopia taastamiseks mõeldud paroolifraasiga", "The person who invited you already left the room.": "See, kes sind jututoa liikmeks kutsus, on juba jututoast lahkunud.", - "The person who invited you already left the room, or their server is offline.": "See, kes sind jututoa liikmeks kutsus, kas juba on jututoast lahkunud või tema koduserver on võrgust väljas." + "The person who invited you already left the room, or their server is offline.": "See, kes sind jututoa liikmeks kutsus, kas juba on jututoast lahkunud või tema koduserver on võrgust väljas.", + "Change notification settings": "Muuda teavituste seadistusi", + "Your server isn't responding to some requests.": "Sinu koduserver ei vasta mõnedele päringutele.", + "Server isn't responding": "Server ei vasta päringutele", + "Your server isn't responding to some of your requests. Below are some of the most likely reasons.": "Sinu koduserver ei vasta mõnedele sinu päringutele. Alljärgnevalt on mõned võimalikud põhjused.", + "The server (%(serverName)s) took too long to respond.": "Vastuseks serverist %(serverName)s kulus liiga palju aega.", + "Your firewall or anti-virus is blocking the request.": "Sinu tulemüür või viirusetõrjetarkvara blokeerib päringuid.", + "A browser extension is preventing the request.": "Brauserilaiendus takistab päringuid.", + "The server is offline.": "Serveril puudub võrguühendus või ta on lülitatud välja.", + "The server has denied your request.": "Server blokeerib sinu päringuid.", + "Your area is experiencing difficulties connecting to the internet.": "Sinu piirkonnas on tõrkeid internetiühenduses.", + "A connection error occurred while trying to contact the server.": "Serveriga ühenduse algatamisel tekkis viga.", + "The server is not configured to indicate what the problem is (CORS).": "Server on seadistatud varjama tegelikke veapõhjuseid (CORS)." } From ba9416268be9a71833736e671201ac7aaae345b1 Mon Sep 17 00:00:00 2001 From: XoseM Date: Sat, 1 Aug 2020 06:03:41 +0000 Subject: [PATCH 039/424] Translated using Weblate (Galician) Currently translated at 100.0% (2338 of 2338 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/gl/ --- src/i18n/strings/gl.json | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/gl.json b/src/i18n/strings/gl.json index f06b1e22d9..a38717ce79 100644 --- a/src/i18n/strings/gl.json +++ b/src/i18n/strings/gl.json @@ -2390,5 +2390,19 @@ "Custom Tag": "Etiqueta personal", "* %(senderName)s %(emote)s": "* %(senderName)s %(emote)s", "The person who invited you already left the room.": "A persoa que te convidou xa deixou a sala.", - "The person who invited you already left the room, or their server is offline.": "A persoa que te convidou xa deixou a sala, ou o seu servidor non está a funcionar." + "The person who invited you already left the room, or their server is offline.": "A persoa que te convidou xa deixou a sala, ou o seu servidor non está a funcionar.", + "Change notification settings": "Cambiar os axustes das notificacións", + "Your server isn't responding to some requests.": "O teu servidor non responde a algunhas solicitudes.", + "You're all caught up.": "Xa estás ó día.", + "Server isn't responding": "O servidor non responde", + "Your server isn't responding to some of your requests. Below are some of the most likely reasons.": "O servidor non responde a algunhas peticións. Aquí tes algunha das razóns máis probables.", + "The server (%(serverName)s) took too long to respond.": "O servidor (%(serverName)s) tardou moito en responder.", + "Your firewall or anti-virus is blocking the request.": "O cortalumes ou antivirus está bloqueando a solicitude.", + "A browser extension is preventing the request.": "Unha extensión do navegador está evitando a solicitude.", + "The server is offline.": "O servidor está apagado.", + "The server has denied your request.": "O servidor rexeitou a solicitude.", + "Your area is experiencing difficulties connecting to the internet.": "Hai problemas de conexión a internet na túa localidade.", + "A connection error occurred while trying to contact the server.": "Aconteceu un fallo de conexión ó intentar contactar co servidor.", + "The server is not configured to indicate what the problem is (CORS).": "O servidor non está configurado para sinalar cal é o problema (CORS).", + "Recent changes that have not yet been received": "Cambios recentes que aínda non foron recibidos" } From b8c25570c4a1a81e27d6d6f2e1130d2ea40cbd51 Mon Sep 17 00:00:00 2001 From: Robin Townsend Date: Sun, 2 Aug 2020 21:43:33 +0000 Subject: [PATCH 040/424] Translated using Weblate (Lojban) Currently translated at 20.9% (489 of 2338 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/jbo/ --- src/i18n/strings/jbo.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/i18n/strings/jbo.json b/src/i18n/strings/jbo.json index 9ac42af1de..f2c9dc6e43 100644 --- a/src/i18n/strings/jbo.json +++ b/src/i18n/strings/jbo.json @@ -363,8 +363,8 @@ "Success!": ".i snada", "Room List": "liste le'i ve zilbe'i", "Upload a file": "nu kibdu'a pa vreji", - "Verify your other session using one of the options below.": ".i ko cuxna da le di'e gai'o le ka tadji lo nu do co'a lacri", - "Ask this user to verify their session, or manually verify it below.": ".i ko cpedu le ka co'a lacri le se samtcise'u kei le pilno vau ja pilno le di'e gai'o le ka co'a lacri", + "Verify your other session using one of the options below.": ".i ko cuxna da le di'e cei'i le ka tadji lo nu do co'a lacri", + "Ask this user to verify their session, or manually verify it below.": ".i ko cpedu le ka co'a lacri le se samtcise'u kei le pilno vau ja pilno le di'e cei'i le ka co'a lacri", "Not Trusted": "na se lacri", "Manually Verify by Text": "nu pilno pa lerpoi lo nu co'a lacri", "Interactively verify by Emoji": "nu pilno vu'i pa cinmo sinxa lo nu co'a lacri", @@ -375,7 +375,7 @@ "%(names)s and %(lastPerson)s are typing …": ".i la'o zoi. %(names)s .zoi je la'o zoi. %(lastPerson)s .zoi ca'o ciska", "Cannot reach homeserver": ".i ca ku na da ka'e zilbe'i le samtcise'u", "Match system theme": "nu mapti le jvinu be le vanbi", - "Never send encrypted messages to unverified sessions in this room from this session": "nu na pa mifra be pa notci cu zilbe'i pa se samtcise'u poi na se lanli ku'o le se samtcise'u le gai'o", + "Never send encrypted messages to unverified sessions in this room from this session": "nu na pa mifra be pa notci cu zilbe'i pa se samtcise'u poi na se lanli ku'o le se samtcise'u le cei'i", "Order rooms by name": "nu porsi tu'a lo cmene", "Messages containing my username": "nu pa se pagbu be le judri be mi cu zilbe'i", "Messages containing @room": "nu pa se pagbu be zoi zoi. @room .zoi cu zilbe'i", @@ -472,9 +472,9 @@ "Riot is now Element!": ".i zo .elyment. basti zo .raiyt. le ka cmene", "Learn More": "nu facki", "We’re excited to announce Riot is now Element!": ".i fizbu lo nu gubni xusra le du'u zo .elyment. basti zo .raiyt. le ka cmene", - "Messages in this room are secured with end-to-end encryption. Only you and the recipient(s) have the keys to read these messages.": ".i ro zilbe'i be fo le gai'o cu mifra .i le ka ka'e tcidu lo notci cu steci fi lu'i do je ro pagbu be le se zilbe'i", - "Messages in this room are end-to-end encrypted.": ".i ro zilbe'i be fo le gai'o cu mifra", - "Messages in this room are not end-to-end encrypted.": ".i na pa zilbe'i be fo le gai'o cu mifra", + "Messages in this room are secured with end-to-end encryption. Only you and the recipient(s) have the keys to read these messages.": ".i ro zilbe'i be fo le cei'i cu mifra .i le ka ka'e tcidu lo notci cu steci fi lu'i do je ro pagbu be le se zilbe'i", + "Messages in this room are end-to-end encrypted.": ".i ro zilbe'i be fo le cei'i cu mifra", + "Messages in this room are not end-to-end encrypted.": ".i na pa zilbe'i be fo le cei'i cu mifra", "Members": "pagbu le se zilbe'i", "Files": "vreji", "Trusted": "se lacri", @@ -487,8 +487,8 @@ "Hide sessions": "nu ro se samtcise'u cu zilmipri", "Invite": "nu friti le ka ziljmina", "Logout": "nu co'u jaspu", - "For help with using %(brand)s, click here or start a chat with our bot using the button below.": ".i gi je lo nu samcu'a le dei gai'o gi lo nu co'a tavla le sampre cu tadji lo nu facki le du'u tadji lo nu pilno la'o zoi. %(brand)s .zoi", - "This room is end-to-end encrypted": ".i ro zilbe'i be fo le gai'o cu mifra", + "For help with using %(brand)s, click here or start a chat with our bot using the button below.": ".i gi je lo nu samcu'a le dei cei'i gi lo nu co'a tavla le sampre cu tadji lo nu facki le du'u tadji lo nu pilno la'o zoi. %(brand)s .zoi", + "This room is end-to-end encrypted": ".i ro zilbe'i be fo le cei'i cu mifra", "Everyone in this room is verified": ".i do lacri ro pagbu be le se zilbe'i", "Start chat": "nu co'a tavla", "Create room": "nu cupra pa ve zilbe'i", @@ -534,7 +534,7 @@ "Unable to leave community": ".i da nabmi fi lo nu do zilvi'u le girzu", "Join this community": "nu do ziljmina le girzu", "Leave this community": "nu do zilvi'u le girzu", - "Your community hasn't got a Long Description, a HTML page to show to community members.
Click here to open settings and give it one!": ".i na da tcila skicu be le girzu bei ro girzu pagbu be'o lerpoi bau la'au xy. bu ty. my. ly. li'u
.i lo nu samcu'a le dei gai'o cu tadji lo nu da go'i", + "Your community hasn't got a Long Description, a HTML page to show to community members.
Click here to open settings and give it one!": ".i na da tcila skicu be le girzu bei ro girzu pagbu be'o lerpoi bau la'au xy. bu ty. my. ly. li'u
.i lo nu samcu'a le dei cei'i cu tadji lo nu da go'i", "Long Description (HTML)": "tcila skicu lerpoi bau la'au xy. bu ty. my. ly. li'u", "Community %(groupId)s not found": ".i na da poi girzu zo'u facki le du'u zoi zoi. %(groupId)s .zoi judri da", "This homeserver does not support communities": ".i le samtcise'u na kakne tu'a lo girzu", From e2f3de5efdf5e2eadc5098d0e6084c564a3842a7 Mon Sep 17 00:00:00 2001 From: Marcelo Filho Date: Fri, 31 Jul 2020 19:16:12 +0000 Subject: [PATCH 041/424] Translated using Weblate (Portuguese (Brazil)) Currently translated at 94.1% (2200 of 2338 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/pt_BR/ --- src/i18n/strings/pt_BR.json | 490 ++++++++++++++++++++---------------- 1 file changed, 273 insertions(+), 217 deletions(-) diff --git a/src/i18n/strings/pt_BR.json b/src/i18n/strings/pt_BR.json index 60beb2b726..496974122b 100644 --- a/src/i18n/strings/pt_BR.json +++ b/src/i18n/strings/pt_BR.json @@ -6,9 +6,9 @@ "A new password must be entered.": "Uma nova senha precisa ser informada.", "Anyone who knows the room's link, apart from guests": "Qualquer pessoa que tenha o link da sala, exceto visitantes", "Anyone who knows the room's link, including guests": "Qualquer pessoa que tenha o link da sala, incluindo visitantes", - "Are you sure you want to reject the invitation?": "Você tem certeza que deseja rejeitar este convite?", - "Banned users": "Usuárias/os banidas/os", - "Bans user with given id": "Banir usuários com o identificador informado", + "Are you sure you want to reject the invitation?": "Você tem certeza que deseja recusar este convite?", + "Banned users": "Usuários bloqueados", + "Bans user with given id": "Bloquear o usuário com o ID indicado", "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s mudou a descrição para \"%(topic)s\".", "Changes your display nickname": "Troca o seu apelido", "Click here to fix": "Clique aqui para resolver isso", @@ -18,7 +18,7 @@ "Create Room": "Criar Sala", "Cryptography": "Criptografia", "Current password": "Senha atual", - "Deactivate Account": "Desativar conta", + "Deactivate Account": "Desativar minha conta", "Default": "Padrão", "Deops user with given id": "Retirar função de moderador do usuário com o identificador informado", "Displays action": "Visualizar atividades", @@ -27,8 +27,8 @@ "Export E2E room keys": "Exportar chaves ponta-a-ponta da sala", "Failed to change password. Is your password correct?": "Não foi possível mudar a senha. A sua senha está correta?", "Failed to leave room": "Falha ao tentar deixar a sala", - "Failed to reject invitation": "Falha ao tentar rejeitar convite", - "Failed to unban": "Não foi possível desfazer o banimento", + "Failed to reject invitation": "Falha ao tentar recusar o convite", + "Failed to unban": "Não foi possível desbloquear", "Favourite": "Favoritar", "Favourites": "Favoritos", "Filter room members": "Filtrar integrantes da sala", @@ -39,13 +39,13 @@ "Historical": "Histórico", "Homeserver is": "Servidor padrão é", "Identity Server is": "O servidor de identificação é", - "I have verified my email address": "Eu verifiquei o meu endereço de email", + "I have verified my email address": "Eu verifiquei o meu endereço de e-mail", "Import E2E room keys": "Importar chave de criptografia ponta-a-ponta (E2E) da sala", - "Invalid Email Address": "Endereço de email inválido", + "Invalid Email Address": "Endereço de e-mail inválido", "Invites": "Convidar", - "Invites user with given id to current room": "Convidar usuários com um dado identificador para esta sala", + "Invites user with given id to current room": "Convida o usuário com o ID especificado para esta sala", "Sign in with": "Quero entrar", - "Kicks user with given id": "Remove usuário com o identificador informado", + "Kicks user with given id": "Remover o usuário com o ID informado", "Labs": "Laboratório", "Leave room": "Sair da sala", "Logout": "Sair", @@ -62,16 +62,16 @@ "Passwords can't be empty": "As senhas não podem estar em branco", "Permissions": "Permissões", "Phone": "Telefone", - "Please check your email and click on the link it contains. Once this is done, click continue.": "Por favor verifique seu email e clique no link enviado. Quando finalizar este processo, clique para continuar.", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Por favor verifique seu e-mail e clique no link enviado. Quando finalizar este processo, clique para continuar.", "Privileged Users": "Usuárias/os privilegiadas/os", "Profile": "Perfil", - "Reject invitation": "Rejeitar convite", + "Reject invitation": "Recusar o convite", "Remove": "Apagar", "Return to login screen": "Retornar à tela de login", "Room Colour": "Cores da sala", "Rooms": "Salas", "Searches DuckDuckGo for results": "Buscar por resultados no buscador DuckDuckGo", - "Send Reset Email": "Enviar email para redefinição de senha", + "Send Reset Email": "Enviar e-mail para redefinição de senha", "Server may be unavailable, overloaded, or you hit a bug.": "O servidor pode estar indisponível ou sobrecarregado, ou então você encontrou uma falha no sistema.", "Session ID": "Identificador de sessão", "Settings": "Configurações", @@ -80,22 +80,22 @@ "Sign out": "Sair", "Someone": "Alguém", "Success": "Sucesso", - "The email address linked to your account must be entered.": "O endereço de email relacionado a sua conta precisa ser informado.", - "This doesn't appear to be a valid email address": "Este não aparenta ser um endereço de email válido", + "The email address linked to your account must be entered.": "O endereço de e-mail relacionado a sua conta precisa ser informado.", + "This doesn't appear to be a valid email address": "Este não aparenta ser um endereço de e-mail válido", "This room is not accessible by remote Matrix servers": "Esta sala não é acessível para servidores Matrix remotos", - "Unable to add email address": "Não foi possível adicionar endereço de email", + "Unable to add email address": "Não foi possível adicionar endereço de e-mail", "Unable to remove contact information": "Não foi possível remover informação de contato", - "Unable to verify email address.": "Não foi possível verificar o endereço de email.", - "Unban": "Desfazer banimento", + "Unable to verify email address.": "Não foi possível verificar o endereço de e-mail.", + "Unban": "Desbloquear", "unknown error code": "código de erro desconhecido", - "Upload avatar": "Enviar uma imagem de perfil", + "Upload avatar": "Enviar uma foto de perfil", "Upload file": "Enviar arquivo", "Users": "Usuários", "Verification Pending": "Verificação pendente", "Video call": "Chamada de vídeo", "Voice call": "Chamada de voz", - "VoIP conference finished.": "Conferência VoIP encerrada.", - "VoIP conference started.": "Conferência VoIP iniciada.", + "VoIP conference finished.": "Chamada em grupo encerrada.", + "VoIP conference started.": "Chamada em grupo iniciada.", "Who can access this room?": "Quem pode acessar esta sala?", "Who can read history?": "Quem pode ler o histórico da sala?", "You do not have permission to post to this room": "Você não tem permissão de postar nesta sala", @@ -123,19 +123,19 @@ "%(weekDayName)s %(time)s": "%(weekDayName)s às %(time)s", "%(targetName)s accepted an invitation.": "%(targetName)s aceitou um convite.", "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s aceitou o convite para %(displayName)s.", - "%(senderName)s answered the call.": "%(senderName)s atendeu à chamada.", - "%(senderName)s banned %(targetName)s.": "%(senderName)s removeu %(targetName)s da sala.", + "%(senderName)s answered the call.": "%(senderName)s aceitou a chamada.", + "%(senderName)s banned %(targetName)s.": "%(senderName)s bloqueou %(targetName)s.", "Call Timeout": "Tempo esgotado. Chamada encerrada", "%(senderName)s changed their profile picture.": "%(senderName)s alterou sua imagem de perfil.", "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s alterou o nível de permissões de %(powerLevelDiffText)s.", "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s alterou o nome da sala para %(roomName)s.", "click to reveal": "clique para ver", "/ddg is not a command": "/ddg não é um comando", - "%(senderName)s ended the call.": "%(senderName)s finalizou a chamada.", + "%(senderName)s ended the call.": "%(senderName)s encerrou a chamada.", "Existing Call": "Chamada em andamento", - "Failed to send email": "Não foi possível enviar email", + "Failed to send email": "Não foi possível enviar e-mail", "Failed to send request.": "Não foi possível mandar requisição.", - "Failed to verify email address: make sure you clicked the link in the email": "Não foi possível verificar o endereço de email: verifique se você realmente clicou no link que está no seu email", + "Failed to verify email address: make sure you clicked the link in the email": "Não foi possível verificar o endereço de e-mail: verifique se você realmente clicou no link que está no seu e-mail", "Failure to create room": "Não foi possível criar a sala", "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s de %(fromPowerLevel)s para %(toPowerLevel)s", "%(senderName)s invited %(targetName)s.": "%(senderName)s convidou %(targetName)s.", @@ -155,66 +155,66 @@ "%(targetName)s rejected the invitation.": "%(targetName)s recusou o convite.", "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s removeu o seu nome público (%(oldDisplayName)s).", "%(senderName)s removed their profile picture.": "%(senderName)s removeu sua imagem de perfil.", - "%(senderName)s requested a VoIP conference.": "%(senderName)s está solicitando uma conferência de voz.", - "%(brand)s does not have permission to send you notifications - please check your browser settings": "%(brand)s não tem permissões para enviar notificações a você - por favor, verifique as configurações do seu navegador", - "%(brand)s was not given permission to send notifications - please try again": "%(brand)s não tem permissões para enviar notificações a você - por favor, tente novamente", + "%(senderName)s requested a VoIP conference.": "%(senderName)s deseja iniciar uma chamada em grupo.", + "%(brand)s does not have permission to send you notifications - please check your browser settings": "%(brand)s não tem permissão para lhe enviar notificações - verifique as configurações do seu navegador", + "%(brand)s was not given permission to send notifications - please try again": "%(brand)s não tem permissão para lhe enviar notificações - tente novamente", "Room %(roomId)s not visible": "A sala %(roomId)s não está visível", "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s enviou uma imagem.", "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s enviou um convite para %(targetDisplayName)s entrar na sala.", "%(senderName)s set a profile picture.": "%(senderName)s definiu uma imagem de perfil.", "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s definiu seu nome público para %(displayName)s.", - "This email address is already in use": "Este endereço de email já está sendo usado", - "This email address was not found": "Este endereço de email não foi encontrado", + "This email address is already in use": "Este endereço de e-mail já está em uso", + "This email address was not found": "Este endereço de e-mail não foi encontrado", "The remote side failed to pick up": "Houve alguma falha que não permitiu a outra pessoa atender à chamada", "This room is not recognised.": "Esta sala não é reconhecida.", "This phone number is already in use": "Este número de telefone já está sendo usado", "To use it, just wait for autocomplete results to load and tab through them.": "Para usar esta funcionalidade, espere o carregamento dos resultados de autocompletar e então escolha entre as opções.", - "%(senderName)s unbanned %(targetName)s.": "%(senderName)s desfez o banimento de %(targetName)s.", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s desbloqueou %(targetName)s.", "Unable to capture screen": "Não foi possível capturar a imagem da tela", "Unable to enable Notifications": "Não foi possível ativar as notificações", "Upload Failed": "O envio falhou", "Usage": "Uso", - "VoIP is unsupported": "Chamada de voz não permitida", + "VoIP is unsupported": "Chamadas de voz não são suportadas", "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s desfez o convite a %(targetName)s.", "You are already in a call.": "Você já está em uma chamada.", - "You cannot place a call with yourself.": "Você não pode iniciar uma chamada.", - "You cannot place VoIP calls in this browser.": "Você não pode fazer chamadas de voz neste navegador.", + "You cannot place a call with yourself.": "Você não pode iniciar uma chamada consigo mesmo.", + "You cannot place VoIP calls in this browser.": "Chamadas de voz não são suportadas neste navegador.", "You need to be able to invite users to do that.": "Para fazer isso, você tem que ter permissão para convidar outras pessoas.", "You need to be logged in.": "Você tem que estar logado.", - "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "O seu endereço de email não parece estar associado a uma conta de usuária/o Matrix neste servidor.", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "O seu endereço de e-mail não parece estar associado a uma conta de usuária/o Matrix neste servidor.", "Set a display name:": "Defina um nome público para você:", - "Upload an avatar:": "Envie uma imagem de perfil para identificar você:", + "Upload an avatar:": "Enviar uma foto de perfil:", "This server does not support authentication with a phone number.": "Este servidor não permite a autenticação através de números de telefone.", "An error occurred: %(error_string)s": "Um erro ocorreu: %(error_string)s", "There are no visible files in this room": "Não há arquivos públicos nesta sala", "Connectivity to the server has been lost.": "A conexão com o servidor foi perdida. Verifique sua conexão de internet.", "Sent messages will be stored until your connection has returned.": "Imagens enviadas ficarão armazenadas até que sua conexão seja reestabelecida.", - "Active call": "Chamada ativa", + "Active call": "Chamada em andamento", "Failed to forget room %(errCode)s": "Falhou ao esquecer a sala %(errCode)s", "%(items)s and %(lastItem)s": "%(items)s e %(lastItem)s", "and %(count)s others...|one": "e um outro...", "and %(count)s others...|other": "e %(count)s outros...", "Are you sure?": "Você tem certeza?", "Attachment": "Anexo", - "Autoplay GIFs and videos": "Reproduzir automaticamente GIFs e videos", + "Autoplay GIFs and videos": "Reproduzir GIFs e vídeos automaticamente", "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(day)s de %(monthName)s de %(fullYear)s às %(time)s", "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Não consigo conectar ao servidor padrão através de HTTP quando uma URL HTTPS está na barra de endereços do seu navegador. Use HTTPS ou então habilite scripts não seguros no seu navegador.", "Change Password": "Alterar senha", "Click to mute audio": "Clique para colocar o áudio no mudo", - "Click to mute video": "Clique para desabilitar imagens de vídeo", - "Click to unmute video": "Clique para voltar a mostrar imagens de vídeo", + "Click to mute video": "Clique para desativar o som do vídeo", + "Click to unmute video": "Clique para ativar o som do vídeo", "Click to unmute audio": "Clique para retirar áudio do mudo", "Command error": "Erro de comando", "Decrypt %(text)s": "Descriptografar %(text)s", "Disinvite": "Desconvidar", "Download %(text)s": "Baixar %(text)s", - "Failed to ban user": "Não foi possível banir o/a usuário/a", + "Failed to ban user": "Não foi possível bloquear o usuário", "Failed to change power level": "Não foi possível mudar o nível de permissões", "Failed to join room": "Não foi possível ingressar na sala", - "Failed to kick": "Não foi possível remover usuária/o", + "Failed to kick": "Não foi possível remover o usuário", "Failed to load timeline position": "Não foi possível carregar a posição na linha do tempo", "Failed to mute user": "Não foi possível remover notificações da/do usuária/o", - "Failed to reject invite": "Não foi possível rejeitar o convite", + "Failed to reject invite": "Não foi possível recusar o convite", "Failed to set display name": "Houve falha ao definir o nome público", "Fill screen": "Tela cheia", "Incorrect verification code": "Código de verificação incorreto", @@ -240,13 +240,13 @@ "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Você não poderá desfazer esta mudança, pois estará dando a este(a) usuário(a) o mesmo nível de permissões que você.", "Room": "Sala", "Cancel": "Cancelar", - "Ban": "Banir", + "Ban": "Bloquear", "Access Token:": "Token de acesso:", "Always show message timestamps": "Sempre mostrar as datas das mensagens", "Authentication": "Autenticação", "An error has occurred.": "Ocorreu um erro.", - "Email": "Email", - "Email address": "Endereço de email", + "Email": "E-mail", + "Email address": "Endereço de e-mail", "Error decrypting attachment": "Erro ao descriptografar o anexo", "Invalid file%(extra)s": "Arquivo inválido %(extra)s", "Mute": "Mudo", @@ -271,11 +271,11 @@ "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Este processo permite que você exporte as chaves para mensagens que você recebeu em salas criptografadas para um arquivo local. Você poderá então importar o arquivo para outro cliente Matrix no futuro, de modo que este cliente também poderá descriptografar suas mensagens.", "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "O arquivo exportado será protegido com uma senha. Você deverá inserir a senha aqui para poder descriptografar o arquivo futuramente.", "You must join the room to see its files": "Você precisa ingressar na sala para ver seus arquivos", - "Reject all %(invitedRooms)s invites": "Rejeitar todos os %(invitedRooms)s convites", + "Reject all %(invitedRooms)s invites": "Recusar todos os %(invitedRooms)s convites", "Failed to invite": "Falha ao enviar o convite", "Failed to invite the following users to the %(roomName)s room:": "Falha ao convidar as(os) seguintes usuárias(os) para a sala %(roomName)s:", "Confirm Removal": "Confirmar a remoção", - "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Tem certeza de que deseja apagar este evento? Observe que, se você apagar o nome ou alterar a descrição de uma sala, pode desfazer a alteração.", + "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Tem certeza de que deseja apagar este evento? Observe que, se você apagar a alteração do nome ou descrição de uma sala, isso reverterá a alteração.", "Unknown error": "Erro desconhecido", "Incorrect password": "Senha incorreta", "Unable to restore session": "Não foi possível restaurar a sessão", @@ -297,14 +297,14 @@ "URL Previews": "Pré-visualização de links", "Drop file here to upload": "Arraste um arquivo aqui para enviar", " (unsupported)": " (não suportado)", - "Ongoing conference call%(supportedText)s.": "Conferência%(supportedText)s em andamento.", + "Ongoing conference call%(supportedText)s.": "Chamada em grupo em andamento%(supportedText)s.", "Online": "Conectada/o", "Idle": "Ocioso", "Offline": "Offline", "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "O arquivo exportado irá permitir a qualquer pessoa que o acesse a descriptografar qualquer uma das mensagens criptografadas que você veja, portanto seja bastante cuidadosa(o) em manter este arquivo seguro. Para deixar este arquivo mais protegido, recomendamos que você insira uma senha abaixo, que será usada para criptografar o arquivo. Só será possível importar os dados usando exatamente a mesma senha.", "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Este processo faz com que você possa importar as chaves de criptografia que tinha previamente exportado de outro cliente Matrix. Você poderá então descriptografar todas as mensagens que o outro cliente pôde criptografar.", "Start automatically after system login": "Iniciar automaticamente ao iniciar o sistema", - "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Você será levado agora a um site de terceiros para poder autenticar a sua conta para uso com o serviço %(integrationsUrl)s. Você quer continuar?", + "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Você será redirecionado para um site de terceiros para poder autenticar a sua conta, tendo em vista usar o serviço %(integrationsUrl)s. Deseja prosseguir?", "Export": "Exportar", "Import": "Importar", "Incorrect username and/or password.": "Nome de usuária(o) e/ou senha incorreto.", @@ -331,7 +331,7 @@ "You have enabled URL previews by default.": "Você habilitou pré-visualizações de links por padrão.", "Add": "Adicionar", "Error: Problem communicating with the given homeserver.": "Erro: problema de comunicação com o Servidor de Base fornecido.", - "Failed to fetch avatar URL": "Falha ao obter a URL da imagem de perfil", + "Failed to fetch avatar URL": "Falha ao obter a URL da foto de perfil", "Home": "Início", "The phone number entered looks invalid": "O número de telefone inserido parece ser inválido", "Uploading %(filename)s and %(count)s others|zero": "Enviando o arquivo %(filename)s", @@ -345,7 +345,7 @@ "New Password": "Nova senha", "Username available": "Nome de usuária(o) disponível", "Username not available": "Nome de usuária(o) indisponível", - "Something went wrong!": "Algo deu errado!", + "Something went wrong!": "Não foi possível carregar!", "This will be your account name on the homeserver, or you can pick a different server.": "Este será seu nome de conta no Servidor de Base , ou então você pode escolher um servidor diferente.", "If you already have a Matrix account you can log in instead.": "Se você já tem uma conta Matrix, pode também fazer login.", "Accept": "Aceitar", @@ -395,7 +395,7 @@ "Failed to add the following rooms to %(groupId)s:": "Falha ao adicionar as seguintes salas para %(groupId)s:", "You are not in this room.": "Você não está nesta sala.", "You do not have permission to do that in this room.": "Você não tem permissão para fazer isto nesta sala.", - "Ignored user": "Usuário ignorado", + "Ignored user": "Usuário silenciado", "You are no longer ignoring %(userId)s": "Você parou de ignorar %(userId)s", "Edit": "Editar", "Unpin Message": "Desafixar Mensagem", @@ -419,7 +419,7 @@ "Show these rooms to non-members on the community page and room list?": "Exibir estas salas para não integrantes na página da comunidade e na lista de salas?", "Unable to create widget.": "Não foi possível criar o widget.", "You are now ignoring %(userId)s": "Você está agora ignorando %(userId)s", - "Unignored user": "Usuária/o não está sendo mais ignorada/o", + "Unignored user": "Usuário não mais silenciado", "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s alterou o seu nome público para %(displayName)s.", "%(senderName)s changed the pinned messages for the room.": "%(senderName)s alterou as mensagens fixas da sala.", "%(widgetName)s widget modified by %(senderName)s": "O widget %(widgetName)s foi modificado por %(senderName)s", @@ -440,12 +440,12 @@ "%(senderName)s sent a video": "%(senderName)s enviou um vídeo", "%(senderName)s uploaded a file": "%(senderName)s enviou um arquivo", "Disinvite this user?": "Desconvidar esta/e usuária/o?", - "Kick this user?": "Excluir esta/e usuária/o?", - "Unban this user?": "Desfazer o banimento desta/e usuária/o?", - "Ban this user?": "Banir esta/e usuária/o?", + "Kick this user?": "Remover este usuário?", + "Unban this user?": "Desbloquear este usuário?", + "Ban this user?": "Bloquear este usuário?", "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "Você não poderá desfazer esta alteração, já que está baixando suas próprias permissões. Se você for a última pessoa nesta sala, será impossível recuperar as permissões atuais.", - "Unignore": "Não ignorar mais", - "Ignore": "Ignorar", + "Unignore": "Reativar notificações e mostrar mensagens", + "Ignore": "Silenciar e esconder mensagens", "Jump to read receipt": "Ir para a confirmação de leitura", "Mention": "Mencionar", "Invite": "Convidar", @@ -470,7 +470,7 @@ "World readable": "Aberto publicamente à leitura", "Guests can join": "Convidadas/os podem entrar", "Community Invites": "Convites a comunidades", - "Banned by %(displayName)s": "Banida/o por %(displayName)s", + "Banned by %(displayName)s": "Bloqueado por %(displayName)s", "Publish this room to the public in %(domain)s's room directory?": "Quer publicar esta sala na lista pública de salas em %(domain)s's?", "Members only (since the point in time of selecting this option)": "Apenas integrantes (a partir do momento em que esta opção for selecionada)", "Members only (since they were invited)": "Apenas integrantes (desde que foram convidadas/os)", @@ -479,13 +479,13 @@ "'%(groupId)s' is not a valid community ID": "'%(groupId)s' não é um ID de comunidade válido", "Flair": "Insígnia", "Showing flair for these communities:": "Esta sala mostrará insígnias para as seguintes comunidades:", - "This room is not showing flair for any communities": "Esta sala não está mostrando fairs para nenhuma comunidade", + "This room is not showing flair for any communities": "Esta sala não está mostrando insígnias para nenhuma comunidade", "New community ID (e.g. +foo:%(localDomain)s)": "Novo ID de comunidade (p.ex: +foo:%(localDomain)s)", "URL previews are enabled by default for participants in this room.": "Pré-visualizações de links estão ativadas por padrão para participantes desta sala.", "URL previews are disabled by default for participants in this room.": "Pré-visualizações de links estão desativadas por padrão para participantes desta sala.", "Copied!": "Copiado!", "Failed to copy": "Não foi possível copiar", - "An email has been sent to %(emailAddress)s": "Um email foi enviado para %(emailAddress)s", + "An email has been sent to %(emailAddress)s": "Um e-mail foi enviado para %(emailAddress)s", "A text message has been sent to %(msisdn)s": "Uma mensagem de texto foi enviada para %(msisdn)s", "Remove from community": "Remover da comunidade", "Disinvite this user from community?": "Desconvidar esta pessoa da comunidade?", @@ -502,14 +502,14 @@ "Visible to everyone": "Visível para todo mundo", "Only visible to community members": "Apenas visível para integrantes da comunidade", "Filter community rooms": "Filtrar salas da comunidade", - "Something went wrong when trying to get your communities.": "Algo deu errado quando estava carregando suas comunidades.", + "Something went wrong when trying to get your communities.": "Não foi possível carregar suas comunidades.", "Display your community flair in rooms configured to show it.": "Mostrar a insígnia de sua comunidade em salas configuradas para isso.", "You're not currently a member of any communities.": "Atualmente você não é integrante de nenhuma comunidade.", "Allow": "Permitir", "Delete Widget": "Apagar widget", "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Remover um widget o remove para todas as pessoas desta sala. Tem certeza que quer remover este widget?", "Delete widget": "Remover widget", - "Minimize apps": "Minimizar apps", + "Minimize apps": "Minimizar app", "Communities": "Comunidades", "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s", "%(severalUsers)sjoined %(count)s times|other": "%(severalUsers)s entraram %(count)s vezes", @@ -528,10 +528,10 @@ "%(severalUsers)sleft and rejoined %(count)s times|one": "%(severalUsers)s saíram e entraram", "%(oneUser)sleft and rejoined %(count)s times|other": "%(oneUser)s saiu e entrou %(count)s vezes", "%(oneUser)sleft and rejoined %(count)s times|one": "%(oneUser)s saiu e entrou", - "%(severalUsers)srejected their invitations %(count)s times|other": "%(severalUsers)s rejeitaram seus convites %(count)s vezes", - "%(severalUsers)srejected their invitations %(count)s times|one": "%(severalUsers)s rejeitaram seus convites", - "%(oneUser)srejected their invitation %(count)s times|other": "%(oneUser)s rejeitou seu convite %(count)s vezes", - "%(oneUser)srejected their invitation %(count)s times|one": "%(oneUser)s rejeitou seu convite", + "%(severalUsers)srejected their invitations %(count)s times|other": "%(severalUsers)s recusaram seus convites %(count)s vezes", + "%(severalUsers)srejected their invitations %(count)s times|one": "%(severalUsers)s recusaram seus convites", + "%(oneUser)srejected their invitation %(count)s times|other": "%(oneUser)s recusou seu convite %(count)s vezes", + "%(oneUser)srejected their invitation %(count)s times|one": "%(oneUser)s recusou seu convite", "%(severalUsers)shad their invitations withdrawn %(count)s times|other": "%(severalUsers)s tiveram seus convites retirados %(count)s vezes", "%(severalUsers)shad their invitations withdrawn %(count)s times|one": "%(severalUsers)s tiveram seus convites retirados", "%(oneUser)shad their invitation withdrawn %(count)s times|other": "%(oneUser)s teve seus convites removidos %(count)s vezes", @@ -540,26 +540,26 @@ "were invited %(count)s times|one": "foram convidadas/os", "was invited %(count)s times|other": "foi convidada/o %(count)s vezes", "was invited %(count)s times|one": "foi convidada/o", - "were banned %(count)s times|other": "foram banidas/os %(count)s vezes", - "were banned %(count)s times|one": "foram banidas/os", - "was banned %(count)s times|other": "foi banida/o %(count)s vezes", - "was banned %(count)s times|one": "foi banida/o", - "were unbanned %(count)s times|other": "tiveram seu banimento desfeito %(count)s vezes", - "were unbanned %(count)s times|one": "tiveram seu banimento desfeito", - "was unbanned %(count)s times|other": "teve seu banimento desfeito %(count)s vezes", - "was unbanned %(count)s times|one": "teve seu banimento desfeito", - "were kicked %(count)s times|other": "foram chutados %(count)s vezes", - "were kicked %(count)s times|one": "foram excluídas/os", - "was kicked %(count)s times|other": "foi excluída/o %(count)s vezes", - "was kicked %(count)s times|one": "foi excluída/o", + "were banned %(count)s times|other": "foram bloqueados %(count)s vezes", + "were banned %(count)s times|one": "foram bloqueados", + "was banned %(count)s times|other": "foi bloqueado %(count)s vezes", + "was banned %(count)s times|one": "foi bloqueado", + "were unbanned %(count)s times|other": "tiveram seu desbloqueio desfeito %(count)s vezes", + "were unbanned %(count)s times|one": "tiveram seu desbloqueio desfeito", + "was unbanned %(count)s times|other": "foi desbloqueado %(count)s vezes", + "was unbanned %(count)s times|one": "foi desbloqueado", + "were kicked %(count)s times|other": "foram removidos %(count)s vezes", + "were kicked %(count)s times|one": "foram removidos", + "was kicked %(count)s times|other": "foi removido %(count)s vezes", + "was kicked %(count)s times|one": "foi removido", "%(severalUsers)schanged their name %(count)s times|other": "%(severalUsers)s alteraram o seu nome %(count)s vezes", "%(severalUsers)schanged their name %(count)s times|one": "%(severalUsers)s alteraram o seu nome", "%(oneUser)schanged their name %(count)s times|other": "%(oneUser)s alterou o seu nome %(count)s vezes", "%(oneUser)schanged their name %(count)s times|one": "%(oneUser)s alterou o seu nome", - "%(severalUsers)schanged their avatar %(count)s times|other": "%(severalUsers)s alteraram a sua imagem de perfil %(count)s vezes", - "%(severalUsers)schanged their avatar %(count)s times|one": "%(severalUsers)s alteraram a sua imagem de perfil", - "%(oneUser)schanged their avatar %(count)s times|other": "%(oneUser)s alterou a sua imagem de perfil %(count)s vezes", - "%(oneUser)schanged their avatar %(count)s times|one": "%(oneUser)s alterou a sua imagem de perfil", + "%(severalUsers)schanged their avatar %(count)s times|other": "%(severalUsers)s alteraram as fotos de perfil %(count)s vezes", + "%(severalUsers)schanged their avatar %(count)s times|one": "%(severalUsers)s alteraram as fotos de perfil", + "%(oneUser)schanged their avatar %(count)s times|other": "%(oneUser)s alterou a foto de perfil %(count)s vezes", + "%(oneUser)schanged their avatar %(count)s times|one": "%(oneUser)s alterou a foto de perfil", "%(items)s and %(count)s others|other": "%(items)s e %(count)s outras", "%(items)s and %(count)s others|one": "%(items)s e uma outra", "collapse": "recolher", @@ -573,7 +573,7 @@ "You have entered an invalid address.": "Você entrou com um endereço inválido.", "Community IDs cannot be empty.": "IDs de comunidades não podem estar em branco.", "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "IDs de comunidade podem apenas ter os seguintes caracteres: a-z, 0-9, ou '=_-./'", - "Something went wrong whilst creating your community": "Algo deu errado ao criar sua comunidade", + "Something went wrong whilst creating your community": "Não foi possível criar sua comunidade. Por favor, tente novamente", "Create Community": "Criar comunidade", "Community Name": "Nome da comunidade", "Example": "Exemplo", @@ -598,7 +598,7 @@ "Failed to upload image": "O envio da imagem falhou", "Failed to update community": "A atualização da comunidade falhou", "Unable to accept invite": "Não foi possível aceitar o convite", - "Unable to reject invite": "Não foi possível rejeitar o convite", + "Unable to reject invite": "Não foi possível recusar o convite", "Leave Community": "Deixar a comunidade", "Leave %(groupName)s?": "Quer sair da comunidade %(groupName)s?", "Leave": "Sair", @@ -629,11 +629,11 @@ "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "A privacidade é importante para nós, portanto nós não coletamos nenhum dado pessoa ou identificável para nossas estatísticas.", "Learn more about how we use analytics.": "Saiba mais sobre como nós usamos os dados estatísticos.", "Check for update": "Verificar atualizações", - "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Um email foi enviado para %(emailAddress)s. Quando você tiver seguido o link que está nesta mensagem, clique abaixo.", + "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Um e-mail foi enviado para %(emailAddress)s. Quando você tiver seguido o link que está nesta mensagem, clique abaixo.", "Please note you are logging into the %(hs)s server, not matrix.org.": "Note que você está se conectando ao servidor %(hs)s, e não ao servidor matrix.org.", "This homeserver doesn't offer any login flows which are supported by this client.": "Este servidor de base (homeserver) não oferece fluxos de login que funcionem neste cliente.", "Define the power level of a user": "Definir o nível de permissões de um(a) usuário(a)", - "Ignores a user, hiding their messages from you": "Ignora um(a) usuário(a), ocultando suas mensagens de você", + "Ignores a user, hiding their messages from you": "Silenciar um usuário também esconderá as mensagens dele de você", "Stops ignoring a user, showing their messages going forward": "Deixa de ignorar um(a) usuário(a), exibindo suas mensagens daqui para frente", "Notify the whole room": "Notifica a sala inteira", "Room Notification": "Notificação da sala", @@ -641,57 +641,57 @@ "Failed to remove tag %(tagName)s from room": "Falha ao remover a tag %(tagName)s da sala", "Failed to add tag %(tagName)s to room": "Falha ao adicionar a tag %(tagName)s para a sala", "Did you know: you can use communities to filter your %(brand)s experience!": "Você sabia? Você pode usar as comunidades para filtrar a sua experiência no %(brand)s!", - "To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.": "Para criar um filtro, arraste a imagem de uma comunidade sobre o painel de filtros na extrema esquerda da sua tela. Você pode clicar na imagem de uma comunidade no painel de filtros a qualquer momento para ver apenas as salas e pessoas associadas com esta comunidade.", + "To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.": "Para criar um filtro, arraste a foto de uma comunidade sobre o painel de filtros na extrema esquerda da sua tela. Você pode clicar na foto de uma comunidade no painel de filtros a qualquer momento para ver apenas as salas e pessoas associadas com esta comunidade.", "Key request sent.": "Requisição de chave enviada.", - "Fetching third party location failed": "Falha ao acessar localização de terceiros", + "Fetching third party location failed": "Falha ao acessar a localização de terceiros", "I understand the risks and wish to continue": "Entendo os riscos e desejo continuar", "Send Account Data": "Enviar Dados da Conta", "Advanced notification settings": "Configurações avançadas de notificação", "Uploading report": "Enviando o relatório", "Sunday": "Domingo", - "Notification targets": "Alvos de notificação", + "Notification targets": "Tipos de notificação", "Today": "Hoje", - "You are not receiving desktop notifications": "Você não está recebendo notificações desktop", - "Friday": "Sexta", + "You are not receiving desktop notifications": "Você não está recebendo notificações na área de trabalho", + "Friday": "Sexta-feira", "Update": "Atualizar", "What's New": "Novidades", "On": "Ativado", "Changelog": "Histórico de alterações", - "Waiting for response from server": "Esperando por resposta do servidor", + "Waiting for response from server": "Aguardando a resposta do servidor", "Uploaded on %(date)s by %(user)s": "Enviada em %(date)s por %(user)s", "Send Custom Event": "Enviar Evento Customizado", - "All notifications are currently disabled for all targets.": "Todas as notificações estão atualmente desabilitadas para todos os casos.", + "All notifications are currently disabled for all targets.": "Todas as notificações estão desativadas para todos os casos.", "Forget": "Esquecer", "You cannot delete this image. (%(code)s)": "Você não pode apagar esta imagem. (%(code)s)", "Cancel Sending": "Cancelar o envio", "This Room": "Esta sala", "Resend": "Reenviar", - "Error saving email notification preferences": "Erro ao salvar as preferências de notificação por email", + "Error saving email notification preferences": "Erro ao salvar as preferências de notificação por e-mail", "Messages containing my display name": "Mensagens contendo meu nome público", "Messages in one-to-one chats": "Mensagens em conversas pessoais", "Unavailable": "Indisponível", - "View Decrypted Source": "Ver a fonte descriptografada", + "View Decrypted Source": "Ver código-fonte descriptografado", "Failed to update keywords": "Falha ao alterar as palavras-chave", "remove %(name)s from the directory.": "remover %(name)s da lista pública de salas.", "Notifications on the following keywords follow rules which can’t be displayed here:": "Notificações sobre as seguintes palavras-chave seguem regras que não podem ser exibidas aqui:", "Please set a password!": "Por favor, defina uma senha!", "You have successfully set a password!": "Você definiu sua senha com sucesso!", - "An error occurred whilst saving your email notification preferences.": "Um erro ocorreu enquanto o sistema estava salvando suas preferências de notificação por email.", + "An error occurred whilst saving your email notification preferences.": "Um erro ocorreu enquanto o sistema estava salvando suas preferências de notificação por e-mail.", "Explore Room State": "Explorar Estado da Sala", - "Source URL": "URL fonte", + "Source URL": "URL do código-fonte", "Messages sent by bot": "Mensagens enviadas por bots", "Filter results": "Filtrar resultados", "Members": "Membros", "No update available.": "Não há atualizações disponíveis.", - "Noisy": "Barulhento", + "Noisy": "Ativado com som", "Files": "Arquivos", "Collecting app version information": "Coletando informação sobre a versão do app", "Keywords": "Palavras-chave", - "Enable notifications for this account": "Ativar notificações para esta conta", + "Enable notifications for this account": "Ativar notificações na sua conta", "Invite to this community": "Convidar para essa comunidade", "Messages containing keywords": "Mensagens contendo palavras-chave", "Room not found": "Sala não encontrada", - "Tuesday": "Terça", + "Tuesday": "Terça-feira", "Enter keywords separated by a comma:": "Coloque cada palavras-chave separada por vírgula:", "Search…": "Buscar…", "You have successfully set a password and an email address!": "Você definiu uma senha e um endereço de e-mail com sucesso!", @@ -704,9 +704,9 @@ "Remember, you can always set an email address in user settings if you change your mind.": "Lembre-se: você pode sempre definir um endereço de e-mail nas configurações de usuário, se mudar de ideia.", "Direct Chat": "Conversa pessoal", "The server may be unavailable or overloaded": "O servidor pode estar inacessível ou sobrecarregado", - "Reject": "Rejeitar", + "Reject": "Recusar", "Failed to set Direct Message status of room": "Falha em definir a mensagem de status da sala", - "Monday": "Segunda", + "Monday": "Segunda-feira", "All messages (noisy)": "Todas as mensagens (alto)", "Enable them now": "Habilitar agora", "Toolbox": "Ferramentas", @@ -723,17 +723,17 @@ "What's new?": "O que há de novidades?", "Notify me for anything else": "Notificar-me sobre qualquer outro evento", "When I'm invited to a room": "Quando sou convidada(o) a uma sala", - "Can't update user notification settings": "Não é possível atualizar as preferências de notificação", + "Can't update user notification settings": "Não foi possível atualizar as preferências de notificação", "Notify for all other messages/rooms": "Notificar para todas as outras mensagens e salas", "Unable to look up room ID from server": "Não foi possível buscar identificação da sala no servidor", "Couldn't find a matching Matrix room": "Não foi possível encontrar uma sala correspondente no servidor Matrix", "All Rooms": "Todas as salas", "You cannot delete this message. (%(code)s)": "Você não pode apagar esta mensagem. (%(code)s)", - "Thursday": "Quinta", + "Thursday": "Quinta-feira", "Forward Message": "Encaminhar", "Back": "Voltar", "Reply": "Responder", - "Show message in desktop notification": "Mostrar mensagens na notificação", + "Show message in desktop notification": "Mostrar a mensagem na notificação da área de trabalho", "Unhide Preview": "Mostrar a pré-visualização", "Unable to join network": "Não foi possível conectar na rede", "Sorry, your browser is not able to run %(brand)s.": "Perdão. O seu navegador não é capaz de rodar o %(brand)s.", @@ -741,20 +741,20 @@ "Yesterday": "Ontem", "Error encountered (%(errorDetail)s).": "Erro encontrado (%(errorDetail)s).", "Low Priority": "Baixa prioridade", - "Unable to fetch notification target list": "Não foi possível obter a lista de alvos de notificação", + "Unable to fetch notification target list": "Não foi possível obter a lista de tipos de notificação", "Set Password": "Definir senha", "Off": "Desativado", "Mentions only": "Apenas menções", - "Wednesday": "Quarta", + "Wednesday": "Quarta-feira", "You can now return to your account after signing out, and sign in on other devices.": "Agora você pode retornar à sua conta depois de sair, e fazer login em outros aparelhos.", - "Enable email notifications": "Ativar notificações por email", + "Enable email notifications": "Ativar notificações por e-mail", "Event Type": "Tipo do Evento", "Download this file": "Baixar este arquivo", "Pin Message": "Fixar Mensagem", "Failed to change settings": "Falhou ao mudar as preferências", "View Community": "Ver a comunidade", "Event sent!": "Evento enviado!", - "View Source": "Ver a fonte", + "View Source": "Ver código-fonte", "Event Content": "Conteúdo do Evento", "Thank you!": "Obrigado!", "Quote": "Citar", @@ -764,10 +764,10 @@ "e.g. ": "ex. ", "Your device resolution": "A resolução do seu aparelho", "Call in Progress": "Chamada em andamento", - "A call is currently being placed!": "Uma chamada está sendo feita atualmente!", + "A call is currently being placed!": "Uma chamada já está em andamento!", "A call is already in progress!": "Uma chamada já está em andamento!", "Permission Required": "Permissão Exigida", - "You do not have permission to start a conference call in this room": "Você não tem permissão para iniciar uma chamada de conferência nesta sala", + "You do not have permission to start a conference call in this room": "Você não tem permissão para iniciar uma chamada em grupo nesta sala", "Unable to load! Check your network connectivity and try again.": "Incapaz de carregar! Verifique sua conectividade de rede e tente novamente.", "Failed to invite users to the room:": "Não foi possível convidar usuários para a sala:", "Missing roomId.": "RoomId ausente.", @@ -775,7 +775,7 @@ "Forces the current outbound group session in an encrypted room to be discarded": "Força a atual sessão de grupo de saída em uma sala criptografada a ser descartada", "e.g. %(exampleValue)s": "ex. %(exampleValue)s", "%(senderName)s set the main address for this room to %(address)s.": "%(senderName)s definiu o endereço principal desta sala para %(address)s.", - "%(senderName)s removed the main address for this room.": "%(senderName)s removeu o endereço principal para esta sala.", + "%(senderName)s removed the main address for this room.": "%(senderName)s removeu o endereço principal nesta sala.", "This homeserver has hit its Monthly Active User limit.": "Este homeserver atingiu seu limite de usuário ativo mensal.", "This homeserver has exceeded one of its resource limits.": "Este homeserver ultrapassou um dos seus limites de recursos.", "Please contact your service administrator to continue using the service.": "Por favor, entre em contato com o seu administrador de serviços para continuar usando o serviço.", @@ -827,7 +827,7 @@ "Algorithm: ": "Algoritmo: ", "This event could not be displayed": "Este evento não pôde ser exibido", "Use a longer keyboard pattern with more turns": "Use um padrão de teclas em diferentes direções e sentido", - "Share Link to User": "Compartilhar Link com Usuário", + "Share Link to User": "Compartilhar este usuário", "This room has been replaced and is no longer active.": "Esta sala foi substituída e não está mais ativa.", "The conversation continues here.": "A conversa continua aqui.", "Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "Visto por %(displayName)s (%(userName)s) em %(dateTime)s", @@ -838,13 +838,13 @@ "Muted Users": "Usuários silenciados", "Open Devtools": "Abrir as Ferramentas de Desenvolvimento", "Only room administrators will see this warning": "Somente administradores de sala verão esse aviso", - "You don't currently have any stickerpacks enabled": "Atualmente, você não tem nenhum stickerpacks ativado", + "You don't currently have any stickerpacks enabled": "No momento, você não tem pacotes de figurinhas ativados", "Demote": "Reduzir privilégio", "Demote yourself?": "Reduzir seu próprio privilégio?", "Add some now": "Adicione alguns agora", - "Stickerpack": "Stickerpack", - "Hide Stickers": "Esconder Stickers", - "Show Stickers": "Mostrar Stickers", + "Stickerpack": "Pacote de figurinhas", + "Hide Stickers": "Esconder figurinhas", + "Show Stickers": "Enviar figurinhas", "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "Em salas criptografadas, como esta, as visualizações de URL são desabilitadas por padrão para garantir que o seu homeserver (onde as visualizações são geradas) não possa coletar informações sobre os links que você vê nesta sala.", "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "Quando alguém coloca um URL em sua mensagem, uma visualização de URL pode ser exibida para fornecer mais informações sobre esse link, como o título, a descrição e uma imagem do site.", "This room is a continuation of another conversation.": "Esta sala é uma continuação de outra conversa.", @@ -852,14 +852,14 @@ "Please review and accept all of the homeserver's policies": "Por favor, revise e aceite todas as políticas do homeserver", "Please review and accept the policies of this homeserver:": "Por favor, revise e aceite as políticas deste homeserver:", "Code": "Código", - "The email field must not be blank.": "O campo de email não pode estar em branco.", + "The email field must not be blank.": "O campo de e-mail não pode estar em branco.", "The phone number field must not be blank.": "O campo do número de telefone não pode estar em branco.", "The password field must not be blank.": "O campo da senha não pode ficar em branco.", "Failed to load group members": "Falha ao carregar membros do grupo", "Failed to remove widget": "Falha ao remover o widget", "An error ocurred whilst trying to remove the widget from the room": "Ocorreu um erro ao tentar remover o widget da sala", "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "Não é possível carregar o evento que foi respondido, ele não existe ou você não tem permissão para visualizá-lo.", - "That doesn't look like a valid email address": "Isso não parece ser um endereço de e-mail válido", + "That doesn't look like a valid email address": "Este não parece ser um endereço de e-mail válido", "Preparing to send logs": "Preparando para enviar registros", "Logs sent": "Registros enviados", "Failed to send logs: ": "Falha ao enviar registros: ", @@ -883,7 +883,7 @@ "The room upgrade could not be completed": "A atualização da sala não pode ser completada", "Upgrade this room to version %(version)s": "Atualize essa sala para versão %(version)s", "Upgrade Room Version": "Atualize a Versão da Sala", - "Create a new room with the same name, description and avatar": "Criar uma nova sala com o mesmo nome, descrição e avatar", + "Create a new room with the same name, description and avatar": "Criar uma nova sala com o mesmo nome, descrição e foto", "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "Impedir usuários de conversar na versão antiga da sala e postar uma mensagem aconselhando os usuários a migrarem para a nova sala", "Put a link back to the old room at the start of the new room so people can see old messages": "Colocar um link para a sala antiga no começo da sala nova de modo que as pessoas possam ver mensagens antigas", "You've previously used %(brand)s on %(host)s with lazy loading of members enabled. In this version lazy loading is disabled. As the local cache is not compatible between these two settings, %(brand)s needs to resync your account.": "Você já usou o %(brand)s em %(host)s com o carregamento Lazy de membros ativado. Nesta versão, o carregamento Lazy está desativado. Como o cache local não é compatível entre essas duas configurações, a %(brand)s precisa ressincronizar sua conta.", @@ -920,7 +920,7 @@ "Unable to join community": "Não é possível participar da comunidade", "You are an administrator of this community. You will not be able to rejoin without an invite from another administrator.": "Você é um administrador dessa comunidade. Você não poderá se reingressar sem um convite de outro administrador.", "Unable to leave community": "Não é possível sair da comunidade", - "Changes made to your community name and avatar might not be seen by other users for up to 30 minutes.": "Alterações feitas à sua comunidade nome e avatar podem não ser vistas por outros usuários por até 30 minutos.", + "Changes made to your community name and avatar might not be seen by other users for up to 30 minutes.": "Alterações no nome e na foto da sua comunidade demoram até 30 minutos para serem vistas por todos os usuários.", "Join this community": "Junte-se a esta comunidade", "Leave this community": "Deixe esta comunidade", "Who can join this community?": "Quem pode participar desta comunidade?", @@ -975,8 +975,8 @@ "Render simple counters in room header": "Renderizar contadores simples no cabeçalho da sala", "Enable Emoji suggestions while typing": "Ativar sugestões de emoticons ao digitar", "Show a placeholder for removed messages": "Mostrar um marcador para as mensagens removidas", - "Show join/leave messages (invites/kicks/bans unaffected)": "Mostrar mensagens de entrar/sair (convites/chutes/banimentos não afetados)", - "Show avatar changes": "Mostrar alterações de avatar", + "Show join/leave messages (invites/kicks/bans unaffected)": "Mostrar mensagens de entrar/sair (não considera convites/remoções/bloqueios)", + "Show avatar changes": "Mostrar alterações de foto de perfil", "The file '%(fileName)s' exceeds this homeserver's size limit for uploads": "O arquivo '%(fileName)s' excede o limite de tamanho deste homeserver para uploads", "Changes your display nickname in the current room only": "Altera seu apelido de exibição apenas na sala atual", "%(senderDisplayName)s upgraded this room.": "%(senderDisplayName)s atualizou esta sala.", @@ -994,16 +994,16 @@ "%(names)s and %(count)s others are typing …|one": "%(names)s e outro está digitando …", "%(names)s and %(lastPerson)s are typing …": "%(names)s e %(lastPerson)s estão digitando …", "Show read receipts sent by other users": "Mostrar confirmações de leitura enviadas por outros usuários", - "Show avatars in user and room mentions": "Mostrar avatares em menções de usuários e salas", + "Show avatars in user and room mentions": "Mostrar fotos de perfil em menções de usuários e de salas", "Enable big emoji in chat": "Ativar emoticons grandes no bate-papo", "Send typing notifications": "Enviar notificações de digitação", "Enable Community Filter Panel": "Ativar painel de filtro da comunidade", "Allow Peer-to-Peer for 1:1 calls": "Permitir Peer-to-Peer para chamadas 1:1", "Messages containing my username": "Mensagens contendo meu nome de usuário", - "The other party cancelled the verification.": "A outra parte cancelou a verificação.", + "The other party cancelled the verification.": "Seu contato cancelou a verificação.", "Verified!": "Verificado!", "You've successfully verified this user.": "Você confirmou este usuário com sucesso.", - "Secure messages with this user are end-to-end encrypted and not able to be read by third parties.": "Mensagens seguras com este usuário são criptografadas de ponta a ponta e não podem ser lidas por terceiros.", + "Secure messages with this user are end-to-end encrypted and not able to be read by third parties.": "As mensagens com este usuário estão protegidas com a criptografia de ponta a ponta e não podem ser lidas por terceiros.", "Got It": "Entendi", "Unable to find a supported verification method.": "Não é possível encontrar um método de confirmação suportado.", "Dog": "Cachorro", @@ -1044,7 +1044,7 @@ "Santa": "Papai-noel", "Prepends ¯\\_(ツ)_/¯ to a plain-text message": "Adiciona ¯ \\ _ (ツ) _ / ¯ no início de uma mensagem de texto simples", "User %(userId)s is already in the room": "O usuário %(userId)s já está na sala", - "The user must be unbanned before they can be invited.": "O usuário não deve estar banido para poder ser convidado.", + "The user must be unbanned before they can be invited.": "O usuário precisa ser desbloqueado antes de ser convidado.", "Show display name changes": "Mostrar alterações no nome de exibição", "Verify this user by confirming the following emoji appear on their screen.": "Verifique este usuário confirmando o emoticon a seguir exibido em sua tela.", "Verify this user by confirming the following number appears on their screen.": "Confirme este usuário confirmando se o número a seguir aparece na tela.", @@ -1080,7 +1080,7 @@ "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.": "Enviamos um e-mail para você confirmar seu endereço. Por favor, siga as instruções e clique no botão abaixo.", "Email Address": "Endereço de e-mail", "Are you sure? You will lose your encrypted messages if your keys are not backed up properly.": "Você tem certeza? Você perderá suas mensagens criptografadas se não for feito o backup correto de suas chaves.", - "Encrypted messages are secured with end-to-end encryption. Only you and the recipient(s) have the keys to read these messages.": "As mensagens criptografadas são protegidas com criptografia de ponta a ponta. Somente você e o(s) destinatário(s) têm as chaves para ler essas mensagens.", + "Encrypted messages are secured with end-to-end encryption. Only you and the recipient(s) have the keys to read these messages.": "As mensagens estão protegidas com a criptografia de ponta a ponta. Somente você e o(s) destinatário(s) têm as chaves para ler essas mensagens.", "Restore from Backup": "Restaurar do Backup", "Back up your keys before signing out to avoid losing them.": "Faça o backup das suas chaves antes de sair, para evitar perdê-las.", "Backing up %(sessionsRemaining)s keys...": "Fazendo o backup das chaves de %(sessionsRemaining)s...", @@ -1113,7 +1113,7 @@ "Timeline": "Linha do Tempo", "Room list": "Lista de Salas", "Autocomplete delay (ms)": "Atraso no preenchimento automático (ms)", - "Ignored users": "Usuários ignorados", + "Ignored users": "Usuários silenciados", "Bulk options": "Opções em massa", "Accept all %(invitedRooms)s invites": "Aceite todos os convites de %(invitedRooms)s", "Key backup": "Backup da chave", @@ -1138,19 +1138,19 @@ "Send messages": "Enviar mensagens", "Invite users": "Convidar usuários", "Use Single Sign On to continue": "Use \"Single Sign On\" para continuar", - "Confirm adding this email address by using Single Sign On to prove your identity.": "Confirme a inclusão deste endereço de correio eletrônico usando o Single Sign On para comprovar sua identidade.", + "Confirm adding this email address by using Single Sign On to prove your identity.": "Confirme a inclusão deste endereço de e-mail usando o Single Sign On para comprovar sua identidade.", "Single Sign On": "Autenticação Única", - "Confirm adding email": "Confirmar a inclusão de email", - "Click the button below to confirm adding this email address.": "Clique no botão abaixo para confirmar a adição deste endereço de email.", + "Confirm adding email": "Confirmar a inclusão de e-mail", + "Click the button below to confirm adding this email address.": "Clique no botão abaixo para confirmar a adição deste endereço de e-mail.", "Confirm": "Confirmar", - "Add Email Address": "Adicionar endereço de email", + "Add Email Address": "Adicionar endereço de e-mail", "Confirm adding phone number": "Confirmar adição de número de telefone", "Add Phone Number": "Adicionar número de telefone", "Whether you're using %(brand)s on a device where touch is the primary input mechanism": "Se estiver usando %(brand)s em um aparelho onde touch é o mecanismo primário de entrada de dados", "Whether or not you're using the 'breadcrumbs' feature (avatars above the room list)": "Se você está usando ou não a funcionalidade 'breadcrumbs' (fotos acima da lista de salas)", "Whether you're using %(brand)s as an installed Progressive Web App": "Se estiver usando %(brand)s como uma Progressive Web App (PWA)", "Your user agent": "Seu agente de usuária(o)", - "Call failed due to misconfigured server": "A chamada caiu por conta de má configuração no servidor", + "Call failed due to misconfigured server": "A chamada falhou por conta de má configuração no servidor", "Please ask the administrator of your homeserver (%(homeserverDomain)s) to configure a TURN server in order for calls to work reliably.": "Por favor, peça ao administrador do seu servidor (%(homeserverDomain)s) para configurar um servidor TURN, de modo que as chamadas funcionem de maneira estável.", "Alternatively, you can try to use the public server at turn.matrix.org, but this will not be as reliable, and it will share your IP address with that server. You can also manage this in Settings.": "Alternativamente, você pode tentar usar o servidor público em turn.matrix.org. No entanto, ele não é tão confiável e compartilhará o seu IP com esse servidor. Você também pode configurar isso nas Configurações.", "Try using turn.matrix.org": "Tente utilizar turn.matrix.org", @@ -1165,7 +1165,7 @@ "Name or Matrix ID": "Nome ou ID Matrix", "Room name or address": "Nome ou endereço da sala", "Identity server has no terms of service": "O servidor de identidade não tem termos de serviço", - "This action requires accessing the default identity server to validate an email address or phone number, but the server does not have any terms of service.": "Esta ação requer acesso ao servidor de identidade padrão para poder validar um endereço de email ou número de telefone, mas este servidor não tem nenhum termo de uso.", + "This action requires accessing the default identity server to validate an email address or phone number, but the server does not have any terms of service.": "Esta ação requer acesso ao servidor de identidade padrão para poder validar um endereço de e-mail ou número de telefone, mas este servidor não tem nenhum termo de uso.", "Only continue if you trust the owner of the server.": "Continue apenas se você confia em quem possui este servidor.", "Trust": "Confiança", "%(name)s is requesting verification": "%(name)s está solicitando verificação", @@ -1187,14 +1187,14 @@ "Error upgrading room": "Erro atualizando a sala", "Double check that your server supports the room version chosen and try again.": "Verifique mais uma ver se seu servidor suporta a versão de sala escolhida e tente novamente.", "Changes the avatar of the current room": "Altera a imagem da sala atual", - "Changes your avatar in this current room only": "Muda sua imagem de perfil apenas nesta sala", - "Changes your avatar in all rooms": "Muda sua imagem de perfil em todas as salas", + "Changes your avatar in this current room only": "Altera sua foto de perfil apenas nesta sala", + "Changes your avatar in all rooms": "Altera sua foto de perfil em todas as salas", "Failed to set topic": "Não foi possível definir a descrição", "Use an identity server": "Usar um servidor de identidade", - "Use an identity server to invite by email. Manage in Settings.": "Use um servidor de identidade para convidar pessoas por email. Gerencie nas Configurações.", + "Use an identity server to invite by email. Manage in Settings.": "Use um servidor de identidade para convidar pessoas por e-mail. Gerencie nas Configurações.", "Joins room with given address": "Entra em uma sala com o endereço fornecido", "Unrecognised room address:": "Endereço de sala não reconhecido:", - "Unbans user with given ID": "Desfaz o banimento de usuária(o) com ID definido", + "Unbans user with given ID": "Desbloquear o usuário com o ID indicado", "Command failed": "O comando falhou", "Could not find user in room": "Não encontrei este(a) usuário(a) na sala", "Adds a custom widget by URL to the room": "Adiciona um widget personalizado por URL na sala", @@ -1216,35 +1216,35 @@ "Sends a message to the given user": "Envia uma mensagem com determinada pessoa", "%(senderName)s made no change.": "%(senderName)s não fez nenhuma alteração.", "%(senderDisplayName)s changed the room name from %(oldRoomName)s to %(newRoomName)s.": "%(senderDisplayName)s alterou o nome da sala de %(oldRoomName)s para %(newRoomName)s.", - "%(senderName)s added the alternative addresses %(addresses)s for this room.|other": "%(senderName)s adicionou os endereços alternativos %(addresses)s para esta sala.", - "%(senderName)s added the alternative addresses %(addresses)s for this room.|one": "%(senderName)s adicionou o endereço alternativo %(addresses)s para esta sala.", - "%(senderName)s removed the alternative addresses %(addresses)s for this room.|other": "%(senderName)s removeu os endereços alternativos %(addresses)s para esta sala.", - "%(senderName)s removed the alternative addresses %(addresses)s for this room.|one": "%(senderName)s removeu o endereço alternativo %(addresses)s para esta sala.", + "%(senderName)s added the alternative addresses %(addresses)s for this room.|other": "%(senderName)s adicionou os endereços alternativos %(addresses)s nesta sala.", + "%(senderName)s added the alternative addresses %(addresses)s for this room.|one": "%(senderName)s adicionou o endereço alternativo %(addresses)s nesta sala.", + "%(senderName)s removed the alternative addresses %(addresses)s for this room.|other": "%(senderName)s removeu os endereços alternativos %(addresses)s nesta sala.", + "%(senderName)s removed the alternative addresses %(addresses)s for this room.|one": "%(senderName)s removeu o endereço alternativo %(addresses)s nesta sala.", "%(senderName)s changed the alternative addresses for this room.": "%(senderName)s alterou os endereços alternativos desta sala.", - "%(senderName)s changed the main and alternative addresses for this room.": "%(senderName)s alterou os endereços principal e alternativos para esta sala.", + "%(senderName)s changed the main and alternative addresses for this room.": "%(senderName)s alterou os endereços principal e alternativos nesta sala.", "%(senderName)s changed the addresses for this room.": "%(senderName)s alterou os endereços desta sala.", "%(senderName)s placed a voice call.": "%(senderName)s iniciou uma chamada de voz.", "%(senderName)s placed a voice call. (not supported by this browser)": "%(senderName)s iniciou uma chamada de voz. (não suportada por este navegador)", "%(senderName)s placed a video call.": "%(senderName)s iniciou uma chamada de vídeo.", "%(senderName)s placed a video call. (not supported by this browser)": "%(senderName)s iniciou uma chamada de vídeo. (não suportada por este navegador)", "%(senderName)s revoked the invitation for %(targetDisplayName)s to join the room.": "%(senderName)s cancelou o convite a %(targetDisplayName)s para entrar na sala.", - "%(senderName)s removed the rule banning users matching %(glob)s": "%(senderName)s removeu a regra que bane usuárias(os) que correspondem a %(glob)s", - "%(senderName)s removed the rule banning rooms matching %(glob)s": "%(senderName)s removeu a regra que bane salas que correspondem a %(glob)s", - "%(senderName)s removed the rule banning servers matching %(glob)s": "%(senderName)s removeu a regra que bane servidores que correspondem a %(glob)s", - "%(senderName)s removed a ban rule matching %(glob)s": "%(senderName)s removeu uma regra de banimento correspondendo a %(glob)s", - "%(senderName)s updated an invalid ban rule": "%(senderName)s atualizou uma regra de banimento inválida", - "%(senderName)s updated the rule banning users matching %(glob)s for %(reason)s": "%(senderName)s atualizou a regra de banimento de usuárias(os) correspondendo a %(glob)s por %(reason)s", - "%(senderName)s updated the rule banning rooms matching %(glob)s for %(reason)s": "%(senderName)s atualizou a regra banindo salas correspondendo a %(glob)s por %(reason)s", - "%(senderName)s updated the rule banning servers matching %(glob)s for %(reason)s": "%(senderName)s atualizou a regra banindo servidores correspondendo a %(glob)s por %(reason)s", - "%(senderName)s updated a ban rule matching %(glob)s for %(reason)s": "%(senderName)s atualizou uma regra de banimento correspondendo a %(glob)s por %(reason)s", - "%(senderName)s created a rule banning users matching %(glob)s for %(reason)s": "%(senderName)s criou uma regra banindo usuárias(os) correspondentes a %(glob)s por %(reason)s", - "%(senderName)s created a rule banning rooms matching %(glob)s for %(reason)s": "%(senderName)s criou uma regra banindo salas correspondendo a %(glob)s por %(reason)s", - "%(senderName)s created a rule banning servers matching %(glob)s for %(reason)s": "%(senderName)s criou uma regra banindo servidores correspondendo a %(glob)s por %(reason)s", - "%(senderName)s created a ban rule matching %(glob)s for %(reason)s": "%(senderName)s criou uma regra de banimento correspondendo a %(glob)s por %(reason)s", - "%(senderName)s changed a rule that was banning users matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s alterou uma regra que estava banindo usuárias(os) correspondendo a %(oldGlob)s para corresponder a %(newGlob)s por %(reason)s", - "%(senderName)s changed a rule that was banning rooms matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s alterou uma regra que estava banindo salas correspondendo a %(oldGlob)s para corresponder a %(newGlob)s por %(reason)s", - "%(senderName)s changed a rule that was banning servers matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s alterou uma regra que estava banindo servidores correspondendo a %(oldGlob)s para corresponder a %(newGlob)s por %(reason)s", - "%(senderName)s updated a ban rule that was matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s alterou uma regra de banimento correspondendo a %(oldGlob)s para corresponder a %(newGlob)s por %(reason)s", + "%(senderName)s removed the rule banning users matching %(glob)s": "%(senderName)s removeu a regra que bloqueia usuários que correspondem a %(glob)s", + "%(senderName)s removed the rule banning rooms matching %(glob)s": "%(senderName)s removeu a regra que bloqueia salas que correspondem a %(glob)s", + "%(senderName)s removed the rule banning servers matching %(glob)s": "%(senderName)s removeu a regra que bloqueia servidores que correspondem a %(glob)s", + "%(senderName)s removed a ban rule matching %(glob)s": "%(senderName)s removeu uma regra de bloqueio correspondendo a %(glob)s", + "%(senderName)s updated an invalid ban rule": "%(senderName)s atualizou uma regra de bloqueio inválida", + "%(senderName)s updated the rule banning users matching %(glob)s for %(reason)s": "%(senderName)s atualizou a regra de bloqueio de usuários correspondendo a %(glob)s devido à %(reason)s", + "%(senderName)s updated the rule banning rooms matching %(glob)s for %(reason)s": "%(senderName)s atualizou a regra que bloqueia salas que correspondem a %(glob)s devido à %(reason)s", + "%(senderName)s updated the rule banning servers matching %(glob)s for %(reason)s": "%(senderName)s atualizou a regra que bloqueia servidores que correspondem a %(glob)s devido à %(reason)s", + "%(senderName)s updated a ban rule matching %(glob)s for %(reason)s": "%(senderName)s atualizou uma regra de bloqueio correspondendo a %(glob)s devido à %(reason)s", + "%(senderName)s created a rule banning users matching %(glob)s for %(reason)s": "%(senderName)s criou uma regra que bloqueia usuários que correspondem a %(glob)s devido à %(reason)s", + "%(senderName)s created a rule banning rooms matching %(glob)s for %(reason)s": "%(senderName)s criou uma regra que bloqueia salas que correspondem a %(glob)s devido à %(reason)s", + "%(senderName)s created a rule banning servers matching %(glob)s for %(reason)s": "%(senderName)s criou uma regra que bloqueia servidores que correspondem a %(glob)s devido à %(reason)s", + "%(senderName)s created a ban rule matching %(glob)s for %(reason)s": "%(senderName)s criou uma regra de que bloqueio correspondendo a %(glob)s devido à %(reason)s", + "%(senderName)s changed a rule that was banning users matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s alterou uma regra que bloqueava usuários que correspondiam a %(oldGlob)s para corresponder a %(newGlob)s devido à %(reason)s", + "%(senderName)s changed a rule that was banning rooms matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s alterou uma regra que bloqueava salas que correspondiam a %(oldGlob)s para corresponder a %(newGlob)s devido à %(reason)s", + "%(senderName)s changed a rule that was banning servers matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s alterou uma regra que bloqueava servidores que correspondiam a %(oldGlob)s para corresponder a %(newGlob)s devido à %(reason)s", + "%(senderName)s updated a ban rule that was matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s alterou uma regra que bloqueava o que correspondia a %(oldGlob)s para corresponder a %(newGlob)s devido à %(reason)s", "Light": "Claro", "Dark": "Escuro", "You signed in to a new session without verifying it:": "Você entrou em uma nova sessão sem verificá-la:", @@ -1312,12 +1312,12 @@ "You joined the call": "Você entrou na chamada", "%(senderName)s joined the call": "%(senderName)s entrou na chamada", "Call in progress": "Chamada em andamento", - "You left the call": "Você abandonou a chamada", + "You left the call": "Você saiu da chamada", "%(senderName)s left the call": "%(senderName)s saiu da chamada", "Call ended": "Chamada encerrada", "You started a call": "Você iniciou uma chamada", "%(senderName)s started a call": "%(senderName)s iniciou uma chamada", - "Waiting for answer": "Esperando por uma resposta", + "Waiting for answer": "Aguardando a resposta", "%(senderName)s is calling": "%(senderName)s está chamando", "* %(senderName)s %(emote)s": "* %(senderName)s %(emote)s", "%(senderName)s: %(message)s": "%(senderName)s: %(message)s", @@ -1325,7 +1325,7 @@ "%(senderName)s: %(stickerName)s": "%(senderName)s: %(stickerName)s", "New spinner design": "Novo design do spinner", "Multiple integration managers": "Múltiplos gestores de integrações", - "Try out new ways to ignore people (experimental)": "Tente novas maneiras de ignorar pessoas (experimental)", + "Try out new ways to ignore people (experimental)": "Tente novas maneiras de silenciar pessoas e esconder suas mensagens (experimental)", "Support adding custom themes": "Permite adicionar temas personalizados", "Enable advanced debugging for the room list": "Habilitar análise (debugging) avançada para a lista de salas", "Show info about bridges in room settings": "Exibir informações sobre bridges nas configurações das salas", @@ -1342,7 +1342,7 @@ "Show rooms with unread notifications first": "Mostrar primeiro as salas com notificações não lidas", "Show shortcuts to recently viewed rooms above the room list": "Mostrar atalhos para salas recentemente visualizadas acima da lista de salas", "Show hidden events in timeline": "Mostrar eventos ocultos na timeline", - "Low bandwidth mode": "Modo de baixo uso de internet", + "Low bandwidth mode": "Modo de baixo uso de dados", "Allow fallback call assist server turn.matrix.org when your homeserver does not offer one (your IP address would be shared during a call)": "Permitir a assistência do servidor de chamadas reserva turn.matrix.org quando seu servidor não oferecer este serviço (seu endereço IP será transmitido quando você ligar)", "Send read receipts for messages (requires compatible homeserver to disable)": "Enviar confirmação de leitura para mensagens (necessita um servidor compatível para desativar)", "Show previews/thumbnails for images": "Mostrar miniaturas e resumos para imagens", @@ -1352,7 +1352,7 @@ "IRC display name width": "Largura do nome IRC", "Enable experimental, compact IRC style layout": "Ativar o layout compacto IRC experimental", "When rooms are upgraded": "Quando salas são atualizadas", - "My Ban List": "Minha lista de banimentos", + "My Ban List": "Minha lista de bloqueados", "This is your list of users/servers you have blocked - don't leave the room!": "Esta é a sua lista de usuárias(os)/servidores que você bloqueou - não saia da sala!", "Unknown caller": "Pessoa desconhecida chamando", "Incoming voice call": "Recebendo chamada de voz", @@ -1366,9 +1366,9 @@ "Start": "Iniciar", "Confirm the emoji below are displayed on both sessions, in the same order:": "Confirme que o emoji abaixo está sendo exibido nas duas sessões, na mesma ordem:", "Verify this session by confirming the following number appears on its screen.": "Verifique esta sessão confirmando que o seguinte número aparece na sua tela.", - "Waiting for your other session, %(deviceName)s (%(deviceId)s), to verify…": "Esperando pela outra sessão, %(deviceName)s (%(deviceId)s), verificar…", - "Waiting for your other session to verify…": "Esperando sua outra sessão verificar…", - "Waiting for %(displayName)s to verify…": "Esperando por %(displayName)s verificar…", + "Waiting for your other session, %(deviceName)s (%(deviceId)s), to verify…": "Aguardando a outra sessão, %(deviceName)s (%(deviceId)s), verificar…", + "Waiting for your other session to verify…": "Aguardando a outra sessão verificar…", + "Waiting for %(displayName)s to verify…": "Aguardando %(displayName)s verificar…", "Cancelling…": "Cancelando…", "They match": "São coincidentes", "They don't match": "Elas não são correspondentes", @@ -1384,7 +1384,7 @@ "Channel: %(channelName)s": "Canal: %(channelName)s", "Show less": "Mostrar menos", "Show more": "Mostrar mais", - "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Ao mudar a senha, você apagará quaisquer chaves de criptografia ponta-a-ponta existentes em todas as sessões, fazendo com que o histórico de conversas criptografadas fique ilegível, a não ser que você exporte as salas das chaves criptografadas antes de mudar a senha e então as importe novamente depois. No futuro, isso será melhorado.", + "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Ao mudar a senha, você apagará todas as chaves de criptografia de ponta a ponta existentes em todas as sessões, fazendo com que o histórico de conversas criptografadas fique ilegível, a não ser que você exporte as salas das chaves criptografadas antes de mudar a senha e então as importe novamente depois. No futuro, isso será melhorado.", "Your homeserver does not support cross-signing.": "Seu servidor não suporta assinatura cruzada.", "Cross-signing and secret storage are enabled.": "Assinaturas cruzadas e armazenamento secreto estão habilitadas.", "Your account has a cross-signing identity in secret storage, but it is not yet trusted by this session.": "Sua conta tem uma identidade de assinatura cruzada em um armazenamento secreto, mas ainda não é considerada confiável por esta sessão.", @@ -1453,9 +1453,9 @@ "Your keys are not being backed up from this session.": "Suas chaves não estão sendo copiadas desta sessão.", "wait and try again later": "espere e tente novamente mais tarde", "Please verify the room ID or address and try again.": "Por favor, verifique o ID ou endereço da sala e tente novamente.", - "Ignoring people is done through ban lists which contain rules for who to ban. Subscribing to a ban list means the users/servers blocked by that list will be hidden from you.": "É possível ignorar pessoas através de listas de banimento que contém regras sobre quem banir. Colocar alguém na lista de banimento significa que as pessoas ou servidores bloqueadas pela lista não serão visíveis por você.", + "Ignoring people is done through ban lists which contain rules for who to ban. Subscribing to a ban list means the users/servers blocked by that list will be hidden from you.": "É possível ignorar pessoas através de listas de bloqueio que contêm regras sobre quem bloquear. Colocar alguém na lista de bloqueio significa que as pessoas ou servidores bloqueados pela lista não serão visualizados por você.", "Session key:": "Chave da sessão:", - "Your server admin has disabled end-to-end encryption by default in private rooms & Direct Messages.": "O/a administrador/a desativou criptografia ponta-a-ponta por padrão em salas privadas e conversas diretas.", + "Your server admin has disabled end-to-end encryption by default in private rooms & Direct Messages.": "O administrador do servidor desativou a criptografia de ponta a ponta por padrão em salas privadas e conversas diretas.", "Manage the names of and sign out of your sessions below or verify them in your User Profile.": "Gerencie os nomes de suas sessões e saia das mesmas abaixo ou verifique-as no seu Perfil de Usuária(o).", "A session's public name is visible to people you communicate with": "Um nome público de uma sessão é visível a pessoas com as quais você já se comunica", "Enable room encryption": "Ativar criptografia nesta sala", @@ -1464,11 +1464,11 @@ "Encryption": "Criptografia", "Once enabled, encryption cannot be disabled.": "Uma vez ativada, a criptografia não poderá ser desabilitada.", "Encrypted": "Criptografada", - "Click the link in the email you received to verify and then click continue again.": "Clique no link no email que você recebeu para verificar e então clique novamente em continuar.", - "Verify the link in your inbox": "Verifique o link na sua caixa de emails", - "This room is end-to-end encrypted": "Esta sala é criptografada ponta-a-ponta", + "Click the link in the email you received to verify and then click continue again.": "Clique no link no e-mail que você recebeu para verificar e então clique novamente em continuar.", + "Verify the link in your inbox": "Verifique o link na sua caixa de e-mails", + "This room is end-to-end encrypted": "Esta sala é criptografada de ponta a ponta", "Your key share request has been sent - please check your other sessions for key share requests.": "Sua solicitação de compartilhamento de chaves foi enviada - por favor, verifique a existência de solicitações de compartilhamento de chaves em suas outras sessões .", - "Key share requests are sent to your other sessions automatically. If you rejected or dismissed the key share request on your other sessions, click here to request the keys for this session again.": "Solicitações de compartilhamento de chaves são enviadas para suas outras sessões automaticamente. Se você rejeitou ou ignorou a solicitação de compartilhamento de chaves em suas outras sessões, clique aqui para solicitar as chaves para esta sessão novamente.", + "Key share requests are sent to your other sessions automatically. If you rejected or dismissed the key share request on your other sessions, click here to request the keys for this session again.": "Solicitações de compartilhamento de chaves são enviadas para suas outras sessões automaticamente. Se você recusou ou ignorou a solicitação de compartilhamento de chaves em suas outras sessões, clique aqui para solicitar as chaves para esta sessão novamente.", "If your other sessions do not have the key for this message you will not be able to decrypt them.": "Se suas outras sessões não possuem a chave para esta mensagem, você não será capaz de descriptografá-la.", "Re-request encryption keys from your other sessions.": "Solicitar novamente as chaves de criptografia das suas outras sessões.", "This message cannot be decrypted": "Esta mensagem não pode ser descriptografada", @@ -1481,18 +1481,18 @@ "Start chatting": "Começar a conversa", "Try again later, or ask a room admin to check if you have access.": "Tente novamente mais tarde, ou peça a um(a) administrador(a) da sala para verificar se você tem acesso.", "Never lose encrypted messages": "Nunca perca mensagens criptografadas", - "Messages in this room are secured with end-to-end encryption. Only you and the recipient(s) have the keys to read these messages.": "Mensagens nesta sala estão seguras com criptografia ponta-a-ponta. Apenas você e a(s) demais pessoa(s) desta sala têm a chave para ler estas mensagens.", + "Messages in this room are secured with end-to-end encryption. Only you and the recipient(s) have the keys to read these messages.": "As mensagens nesta sala estão protegidas com a criptografia de ponta a ponta. Apenas você e a(s) demais pessoa(s) desta sala têm a chave para ler estas mensagens.", "Upgrading this room will shut down the current instance of the room and create an upgraded room with the same name.": "Atualizar esta sala irá fechar a instância atual da sala e criar uma sala atualizada com o mesmo nome.", "Hint: Begin your message with // to start it with a slash.": "Dica: Inicie sua mensagem com // para iniciar com uma barra.", "Start Verification": "Iniciar verificação", - "Messages in this room are end-to-end encrypted.": "Mensagens nesta sala são criptografadas ponta-a-ponta.", - "Messages in this room are not end-to-end encrypted.": "Mensagens nesta sala não são criptografadas ponta-a-ponta.", + "Messages in this room are end-to-end encrypted.": "As mensagens nesta sala estão criptografadas de ponta a ponta.", + "Messages in this room are not end-to-end encrypted.": "As mensagens nesta sala não estão criptografadas de ponta a ponta.", "In encrypted rooms, your messages are secured and only you and the recipient have the unique keys to unlock them.": "Em salas criptografadas, suas mensagens estão seguras e apenas você e a pessoa que a recebe têm as chaves únicas que permitem a sua leitura.", "Verify User": "Verificar usuária(o)", "For extra security, verify this user by checking a one-time code on both of your devices.": "Para maior segurança, verifique esta(e) usuária(o) verificando um código único em ambos aparelhos.", "You are about to remove %(count)s messages by %(user)s. This cannot be undone. Do you wish to continue?|other": "Você está a ponto de remover %(count)s mensagens de %(user)s. Isso não poderá ser desfeito. Quer continuar?", "You are about to remove %(count)s messages by %(user)s. This cannot be undone. Do you wish to continue?|one": "Você está a ponto de remover 1 mensagem de %(user)s. Isso não poderá ser desfeito. Quer continuar?", - "This client does not support end-to-end encryption.": "Este cliente não suporte criptografia ponta-a-ponta.", + "This client does not support end-to-end encryption.": "A sua versão do aplicativo não suporta a criptografia de ponta a ponta.", "The session you are trying to verify doesn't support scanning a QR code or emoji verification, which is what %(brand)s supports. Try with a different client.": "A sessão que você está tentando verificar não permite escanear QR code ou verificação via emojis, que é o que %(brand)s permite. Tente um cliente diferente.", "Verify by scanning": "Verificar através de QR Code", "If you can't scan the code above, verify by comparing unique emoji.": "Se você não consegue escanear o código acima, verifique comparando os emojis únicos.", @@ -1503,7 +1503,7 @@ "Start verification again from the notification.": "Iniciar verificação novamente, após a notificação.", "Start verification again from their profile.": "Iniciar a verificação novamente a partir do seu perfil.", "Encryption enabled": "Criptografia habilitada", - "Messages in this room are end-to-end encrypted. Learn more & verify this user in their user profile.": "Mensagens nesta sala são criptografadas ponta-a-ponta. Saiba mais e verifique o este(a) usuário(a) em seu perfil.", + "Messages in this room are end-to-end encrypted. Learn more & verify this user in their user profile.": "As mensagens nesta sala estão criptografadas de ponta a ponta. Saiba mais e verifique este usuário em seu perfil.", "Encryption not enabled": "Criptografia não habilitada", "The encryption used by this room isn't supported.": "A criptografia usada nesta sala não é suportada.", "%(name)s wants to verify": "%(name)s deseja verificar", @@ -1515,15 +1515,15 @@ "Clearing all data from this session is permanent. Encrypted messages will be lost unless their keys have been backed up.": "Apagar todos os dados desta sessão é uma ação permanente. Mensagens criptografadas serão perdidas, a não ser que suas chaves tenham sido copiadas para o backup.", "Set a room address to easily share your room with other people.": "Defina um endereço de sala para facilmente compartilhar sua sala com outras pessoas.", "You can’t disable this later. Bridges & most bots won’t work yet.": "Você não poderá desabilitar depois. Pontes e a maioria dos bots não funcionarão no momento.", - "Enable end-to-end encryption": "Ativar criptografia ponta-a-ponta", + "Enable end-to-end encryption": "Ativar a criptografia de ponta a ponta", "Create a public room": "Criar uma sala pública", "Create a private room": "Criar uma sala privada", "Block users on other matrix homeservers from joining this room (This setting cannot be changed later!)": "Impedir usuárias(os) de outros servidores matrix de entrar nesta sala (Esta configuração não poderá ser desfeita depois!)", - "You've previously used a newer version of %(brand)s with this session. To use this version again with end to end encryption, you will need to sign out and back in again.": "Você usou antes uma versão mais nova do %(brand)s com esta sessão. Para usar esta versão novamente, com criptografia ponta-a-ponta, você terá que sair e entrar novamente.", - "Verify this user to mark them as trusted. Trusting users gives you extra peace of mind when using end-to-end encrypted messages.": "Verificar esta(e) usuária(o) para marcá-la(o) como confiável. Usuárias(os) de confiança dão a você mais tranquilidade mental quando estiver usando mensagens criptografadas.", - "Verify this device to mark it as trusted. Trusting this device gives you and other users extra peace of mind when using end-to-end encrypted messages.": "Verifique este aparelho para marcá-lo como confiável. Confiar neste aparelho dá a você e às(aos) outras(os) usuárias(os) maior tranquilidade mental quando estiverem usando mensagens criptografadas.", + "You've previously used a newer version of %(brand)s with this session. To use this version again with end to end encryption, you will need to sign out and back in again.": "Você já usou uma versão mais recente do %(brand)s nesta sessão. Para usar esta versão novamente com a criptografia de ponta a ponta, você terá que se desconectar e entrar novamente.", + "Verify this user to mark them as trusted. Trusting users gives you extra peace of mind when using end-to-end encrypted messages.": "Verifique este usuário para torná-lo confiável. Confiar nos usuários fornece segurança adicional ao trocar mensagens criptografadas de ponta a ponta.", + "Verify this device to mark it as trusted. Trusting this device gives you and other users extra peace of mind when using end-to-end encrypted messages.": "Verifique este aparelho para torná-lo confiável. Confiar neste aparelho fornecerá segurança adicional para você e aos outros ao trocarem mensagens criptografadas de ponta a ponta.", "We couldn't create your DM. Please check the users you want to invite and try again.": "Não conseguimos criar sua mensagem direta. Por favor, verifique as(os) usuárias(os) que você quer convidar e tente novamente.", - "Start a conversation with someone using their name, username (like ) or email address.": "Comece uma conversa com alguém usando seu nome, nome de usuária (como ) ou endereço de email.", + "Start a conversation with someone using their name, username (like ) or email address.": "Comece uma conversa com alguém usando seu nome, nome de usuária (como ) ou endereço de e-mail.", "a new master key signature": "uma nova chave mestra de assinatura", "a new cross-signing key signature": "uma nova chave de assinatura cruzada", "a key signature": "uma assinatura de chave", @@ -1563,15 +1563,15 @@ "Create your Matrix account on ": "Crie sua conta Matrix em ", "Welcome to %(appName)s": "Desejamos boas vindas ao %(appName)s", "Liberate your communication": "Liberte sua comunicação", - "Send a Direct Message": "Envie uma mensagem direta", + "Send a Direct Message": "Enviar uma mensagem", "Explore Public Rooms": "Explore as salas públicas", "Create a Group Chat": "Criar um chat de grupo", "Explore rooms": "Explorar salas", - "Data from an older version of %(brand)s has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Detectamos uma versão mais antiga do %(brand)s. Isso fará com que a criptografia ponta-a-ponta não funcione corretamente. Mensagens criptografadas ponta-a-ponta trocadas recentemente enquanto você usava a versão mais antiga talvez não sejam descriptografáveis nesta versão. Isso poderá também fazer com que mensagens trocadas nesta sessão falhem na outra. Se você experimentar problemas, por favor faça logout e entre novamente. Para manter o histórico de mensagens, exporte e reimporte suas chaves.", + "Data from an older version of %(brand)s has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Detectamos uma versão mais antiga do %(brand)s. Isso fará com que a criptografia de ponta a ponta não funcione corretamente. As mensagens criptografadas de ponta a ponta trocadas recentemente, enquanto você usava a versão mais antiga, talvez não sejam descriptografáveis na nova versão. Isso também poderá fazer com que as mensagens trocadas nesta sessão falhem na mais atual. Se você tiver problemas, desconecte-se e entre novamente. Para manter o histórico de mensagens, exporte e reimporte suas chaves.", "%(creator)s created and configured the room.": "%(creator)s criou e configurou esta sala.", "If you can't find the room you're looking for, ask for an invite or Create a new room.": "Se você não consegue encontrar a sala que está buscando, peça para ser convidada(o) ou então crie uma sala nova.", "Verify this login": "Verificar este login", - "Changing your password will reset any end-to-end encryption keys on all of your sessions, making encrypted chat history unreadable. Set up Key Backup or export your room keys from another session before resetting your password.": "Alterar a sua senha implicará na perda de quaisquer chaves de criptografia ponta-a-ponta existentes em todas as suas sessões, fazendo com que o histórico de mensagens criptografadas se torne ilegível. Faça uma cópia (backup) das suas chaves ou exporte as chaves de outra sessão antes de alterar sua senha.", + "Changing your password will reset any end-to-end encryption keys on all of your sessions, making encrypted chat history unreadable. Set up Key Backup or export your room keys from another session before resetting your password.": "Alterar a sua senha redefinirá todas as chaves de criptografia de ponta a ponta existentes em todas as suas sessões, tornando o histórico de mensagens criptografadas ilegível. Faça uma cópia (backup) das suas chaves, ou exporte as chaves de outra sessão antes de alterar a sua senha.", "Create account": "Criar conta", "Create your account": "Criar sua conta", "Use Recovery Key or Passphrase": "Use a Chave ou a Frase de Recuperação", @@ -1614,7 +1614,7 @@ "Click the button below to confirm adding this phone number.": "Clique no botão abaixo para confirmar a adição deste número de telefone.", "Clear notifications": "Limpar notificações", "There are advanced notifications which are not shown here.": "Existem notificações avançadas que não são mostradas aqui.", - "Enable desktop notifications for this session": "Ativar notificações na área de trabalho para esta sessão", + "Enable desktop notifications for this session": "Ativar notificações na área de trabalho nesta sessão", "Mentions & Keywords": "Menções & Palavras-Chave", "Notification options": "Opções de notificação", "Leave Room": "Sair da Sala", @@ -1660,7 +1660,7 @@ "Widget ID": "ID do widget", "Widget added by": "Widget adicionado por", "This widget may use cookies.": "Este widget pode usar cookies.", - "Maximize apps": "Maximizar apps", + "Maximize apps": "Maximizar app", "More options": "Mais opções", "Join": "Entrar", "Rotate Left": "Girar para a esquerda", @@ -1754,7 +1754,7 @@ "Username": "Nome de usuário", "Use an email address to recover your account": "Use um endereço de e-mail para recuperar sua conta", "Enter email address (required on this homeserver)": "Digite o endereço de e-mail (necessário neste servidor)", - "Doesn't look like a valid email address": "Este não parece ser um endereço de email válido", + "Doesn't look like a valid email address": "Este não parece ser um endereço de e-mail válido", "Passwords don't match": "As senhas não correspondem", "Other users can invite you to rooms using your contact details": "Outros usuários podem convidá-lo para salas usando seus detalhes de contato", "Enter phone number (required on this homeserver)": "Digite o número de celular (necessário neste servidor)", @@ -1768,7 +1768,7 @@ "Confirm adding this phone number by using Single Sign On to prove your identity.": "Confirme a adição deste número de telefone usando o Login Único para provar sua identidade.", "Use an identity server to invite by email. Click continue to use the default identity server (%(defaultIdentityServerName)s) or manage in Settings.": "Use um servidor de identidade para convidar por e-mail. Clique em continuar para usar o servidor de identidade padrão (%(defaultIdentityServerName)s) ou gerencie nas Configurações.", "You might have configured them in a client other than %(brand)s. You cannot tune them in %(brand)s but they still apply.": "Você pode ter configurado estas opções em um cliente que não seja %(brand)s. Você não pode ajustar essas opções no %(brand)s, mas elas ainda se aplicam.", - "Enable audible notifications for this session": "Ativar notificações sonoras para esta sessão", + "Enable audible notifications for this session": "Ativar o som de notificações nesta sessão", "Display Name": "Nome em exibição", "Identity Server URL must be HTTPS": "O URL do Servidor de Identidade deve ser HTTPS", "Not a valid Identity Server (status code %(code)s)": "Servidor de Identidade inválido (código de status %(code)s)", @@ -1816,10 +1816,10 @@ "Set the name of a font installed on your system & %(brand)s will attempt to use it.": "Defina o nome de uma fonte instalada no seu sistema e %(brand)s tentará usá-la.", "Customise your appearance": "Personalize sua aparência", "Appearance Settings only affect this %(brand)s session.": "As Configurações de aparência afetam apenas esta sessão do %(brand)s.", - "Your password was successfully changed. You will not receive push notifications on other sessions until you log back in to them": "Sua senha foi alterada com sucesso. Você não receberá notificações por push em outras sessões até fazer login novamente nelas", + "Your password was successfully changed. You will not receive push notifications on other sessions until you log back in to them": "Sua senha foi alterada com sucesso. Você não receberá notificações pop-up em outras sessões até fazer login novamente nelas", "Agree to the identity server (%(serverName)s) Terms of Service to allow yourself to be discoverable by email address or phone number.": "Concordar com os Termos de Serviço do servidor de identidade (%(serverName)s), para permitir aos seus contatos encontrarem-na(no) por endereço de e-mail ou por número de celular.", "Discovery": "Contatos", - "Deactivate account": "Desativar conta", + "Deactivate account": "Desativar minha conta", "Clear cache and reload": "Limpar cache e recarregar", "To report a Matrix-related security issue, please read the Matrix.org Security Disclosure Policy.": "Para relatar um problema de segurança relacionado à tecnologia Matrix, leia a Política de Divulgação de Segurança da Matrix.org.", "Always show the window menu bar": "Sempre mostrar a barra de menu na janela", @@ -1836,7 +1836,7 @@ "Custom Tag": "Etiqueta personalizada", "Joining room …": "Entrando na sala…", "Loading …": "Carregando…", - "Rejecting invite …": "Rejeitando convite…", + "Rejecting invite …": "Recusando o convite…", "Join the conversation with an account": "Participar da conversa com uma conta", "Sign Up": "Inscrever-se", "Loading room preview": "Carregando visualização da sala", @@ -1844,7 +1844,7 @@ "Reason: %(reason)s": "Razão: %(reason)s", "Forget this room": "Esquecer esta sala", "Re-join": "Entrar novamente", - "You were banned from %(roomName)s by %(memberName)s": "Você foi banida(o) de %(roomName)s por %(memberName)s", + "You were banned from %(roomName)s by %(memberName)s": "Você foi bloqueado de %(roomName)s por %(memberName)s", "Something went wrong with your invite to %(roomName)s": "Ocorreu um erro no seu convite para %(roomName)s", "An error (%(errcode)s) was returned while trying to validate your invite. You could try to pass this information on to a room admin.": "Ocorreu um erro (%(errcode)s) ao validar seu convite. Você pode passar essas informações para um administrador da sala.", "You can only join it with a working invite.": "Você só pode participar com um convite válido.", @@ -1860,7 +1860,7 @@ " wants to chat": " quer conversar", "Do you want to join %(roomName)s?": "Deseja se juntar a %(roomName)s?", " invited you": " convidou você", - "Reject & Ignore user": "Rejeitar e ignorar usuário", + "Reject & Ignore user": "Bloquear e silenciar usuário", "You're previewing %(roomName)s. Want to join it?": "Você está visualizando %(roomName)s. Deseja participar?", "%(roomName)s can't be previewed. Do you want to join it?": "%(roomName)s não pode ser visualizado. Deseja participar?", "This room doesn't exist. Are you sure you're at the right place?": "Esta sala não existe. Tem certeza de que você está no lugar certo?", @@ -1919,30 +1919,30 @@ "Expand room list section": "Mostrar seção da lista de salas", "The person who invited you already left the room.": "A pessoa que convidou você já saiu da sala.", "The person who invited you already left the room, or their server is offline.": "A pessoa que convidou você já saiu da sala, ou o servidor dela está offline.", - "Use an Integration Manager (%(serverName)s) to manage bots, widgets, and sticker packs.": "Use o Gerenciador de Integrações em (%(serverName)s) para gerenciar bots, widgets e pacotes de adesivos.", - "Use an Integration Manager to manage bots, widgets, and sticker packs.": "Use o Gerenciador de Integrações para gerenciar bots, widgets e pacotes de adesivos.", + "Use an Integration Manager (%(serverName)s) to manage bots, widgets, and sticker packs.": "Use o Gerenciador de Integrações em (%(serverName)s) para gerenciar bots, widgets e pacotes de figurinhas.", + "Use an Integration Manager to manage bots, widgets, and sticker packs.": "Use o Gerenciador de Integrações para gerenciar bots, widgets e pacotes de figurinhas.", "Integration Managers receive configuration data, and can modify widgets, send room invites, and set power levels on your behalf.": "O Gerenciador de Integrações recebe dados de configuração e pode modificar widgets, enviar convites para salas e definir níveis de permissão em seu nome.", "Keyboard Shortcuts": "Atalhos do teclado", "Customise your experience with experimental labs features. Learn more.": "Personalize sua experiência com os recursos experimentais. Saiba mais.", - "Ignored/Blocked": "Ignorado/Bloqueado", - "Error adding ignored user/server": "Erro ao adicionar usuário/servidor ignorado", - "Something went wrong. Please try again or view your console for hints.": "Algo deu errado. Por favor, tente novamente ou veja seu console para obter dicas.", + "Ignored/Blocked": "Silenciado/Bloqueado", + "Error adding ignored user/server": "Erro ao adicionar usuário/servidor silenciado", + "Something went wrong. Please try again or view your console for hints.": "Não foi possível carregar. Por favor, tente novamente ou veja seu console para obter dicas.", "Error subscribing to list": "Erro ao inscrever-se na lista", - "Error removing ignored user/server": "Erro ao remover usuário/servidor ignorado", + "Error removing ignored user/server": "Erro ao remover usuário/servidor silenciado", "Error unsubscribing from list": "Erro ao cancelar a inscrição da lista", "Please try again or view your console for hints.": "Por favor, tente novamente ou veja seu console para obter dicas.", "None": "Nenhum", "Server rules": "Regras do servidor", "User rules": "Regras do usuário", - "You have not ignored anyone.": "Você não ignorou ninguém.", + "You have not ignored anyone.": "Você não silenciou ninguém.", "You are currently ignoring:": "Você está atualmente ignorando:", "You are not subscribed to any lists": "Você não está inscrito em nenhuma lista", "Unsubscribe": "Desinscrever-se", "View rules": "Ver regras", "You are currently subscribed to:": "No momento, você está inscrito em:", "⚠ These settings are meant for advanced users.": "⚠ Essas configurações são destinadas a usuários avançados.", - "Add users and servers you want to ignore here. Use asterisks to have %(brand)s match any characters. For example, @bot:* would ignore all users that have the name 'bot' on any server.": "Adicione aqui os usuários e servidores que você deseja ignorar. Use asteriscos para fazer com que o %(brand)s corresponda a qualquer caractere. Por exemplo, @bot:* ignorará todos os usuários em qualquer servidor que tenham 'bot' no nome.", - "Server or user ID to ignore": "Servidor ou ID de usuário para ignorar", + "Add users and servers you want to ignore here. Use asterisks to have %(brand)s match any characters. For example, @bot:* would ignore all users that have the name 'bot' on any server.": "Adicione aqui os usuários e servidores que você deseja silenciar. Use asteriscos para fazer com que o %(brand)s corresponda a qualquer caractere. Por exemplo, @bot:* silenciará todos os usuários em qualquer servidor que tenham 'bot' no nome.", + "Server or user ID to ignore": "Servidor ou ID de usuário para silenciar", "Subscribe": "Inscrever-se", "Session ID:": "ID da sessão:", "Message search": "Pesquisa de mensagens", @@ -1951,7 +1951,7 @@ "Browse": "Buscar", "Upgrade the room": "Atualizar a sala", "Kick users": "Remover usuários", - "Ban users": "Banir usuários", + "Ban users": "Bloquear usuários", "Remove messages": "Remover mensagens", "Notify everyone": "Notificar todo mundo", "Your email address hasn't been verified yet": "Seu endereço de e-mail ainda não foi verificado", @@ -1973,7 +1973,7 @@ "Scroll to most recent messages": "Ir para as mensagens mais recentes", "Close preview": "Fechar a visualização", "Send a reply…": "Enviar uma resposta…", - "Send a message…": "Enviar uma mensagem…", + "Send a message…": "Digite uma mensagem…", "Bold": "Negrito", "Italics": "Itálico", "Strikethrough": "Riscado", @@ -2027,12 +2027,12 @@ "Verification cancelled": "Verificação cancelada", "Compare emoji": "Comparar emojis", "Show image": "Mostrar imagem", - "You have ignored this user, so their message is hidden. Show anyways.": "Você ignorou este usuário, portanto, a mensagem dele está oculta. Mostrar mesmo assim.", + "You have ignored this user, so their message is hidden. Show anyways.": "Você silenciou este usuário, portanto, a mensagem dele foi escondida. Mostrar mesmo assim.", "You verified %(name)s": "Você verificou %(name)s", "Use an identity server to invite by email. Use the default (%(defaultIdentityServerName)s) or manage in Settings.": "Use um servidor de identidade para convidar por e-mail. Use o padrão (%(defaultIdentityServerName)s) ou um servidor personalizado em Configurações.", "Use an identity server to invite by email. Manage in Settings.": "Use um servidor de identidade para convidar por e-mail. Gerencie o servidor em Configurações.", "Destroy cross-signing keys?": "Destruir chaves de assinatura cruzada?", - "Waiting for partner to confirm...": "Esperando a outra pessoa confirmar...", + "Waiting for partner to confirm...": "Aguardando seu contato confirmar...", "Enable 'Manage Integrations' in Settings to do this.": "Para fazer isso, ative 'Gerenciar Integrações' nas Configurações.", "Your %(brand)s doesn't allow you to use an Integration Manager to do this. Please contact an admin.": "Seu %(brand)s não permite que você use o Gerenciador de Integrações para fazer isso. Entre em contato com um administrador.", "Confirm to continue": "Confirme para continuar", @@ -2060,7 +2060,7 @@ "Your browser likely removed this data when running low on disk space.": "O seu navegador provavelmente removeu esses dados quando o espaço de armazenamento ficou insuficiente.", "Integration Manager": "Gerenciador de Integrações", "Find others by phone or email": "Encontre outras pessoas por telefone ou e-mail", - "Use bots, bridges, widgets and sticker packs": "Use bots, pontes, widgets e pacotes de adesivos", + "Use bots, bridges, widgets and sticker packs": "Use bots, pontes, widgets e pacotes de figurinhas", "Terms of Service": "Termos de serviço", "To continue you need to accept the terms of this service.": "Para continuar, você precisa aceitar os termos deste serviço.", "Service": "Serviço", @@ -2122,7 +2122,7 @@ "Search rooms": "Buscar salas", "You have %(count)s unread notifications in a prior version of this room.|other": "Você tem %(count)s notificações não lidas em uma versão anterior desta sala.", "You have %(count)s unread notifications in a prior version of this room.|one": "Você tem %(count)s notificações não lidas em uma versão anterior desta sala.", - "Feedback": "Feedback", + "Feedback": "Fale conosco", "User menu": "Menu do usuário", "Could not load user profile": "Não foi possível carregar o perfil do usuário", "Session verified": "Sessão verificada", @@ -2149,5 +2149,61 @@ "Navigation": "Navegação", "Calls": "Chamadas", "Esc": "Esc", - "Enter": "Enter" + "Enter": "Enter", + "Change notification settings": "Alterar configuração de notificações", + "Your server isn't responding to some requests.": "Seu servidor não está respondendo a algumas solicitações.", + "Ban list rules - %(roomName)s": "Regras da lista de bloqueados - %(roomName)s", + "Personal ban list": "Lista pessoal de bloqueio", + "Your personal ban list holds all the users/servers you personally don't want to see messages from. After ignoring your first user/server, a new room will show up in your room list named 'My Ban List' - stay in this room to keep the ban list in effect.": "Sua lista de bloqueios pessoais contém todos os usuários/servidores dos quais você pessoalmente não deseja mais receber mensagens. Depois de ignorar o primeiro usuário/servidor, uma nova sala será exibida na sua lista de salas chamada 'Minha lista de bloqueios' - permaneça nesta sala para manter a lista de bloqueios em vigor.", + "Subscribing to a ban list will cause you to join it!": "Inscrever-se em uma lista de bloqueios significa participar dela!", + "If this isn't what you want, please use a different tool to ignore users.": "Se isso não for o que você deseja, use outra ferramenta para silenciar os usuários.", + "Room ID or address of ban list": "ID da sala ou endereço da lista de bloqueios", + "Uploaded sound": "Som enviado", + "Sounds": "Sons", + "Notification sound": "Som de notificação", + "Unable to revoke sharing for email address": "Não foi possível revogar o compartilhamento do endereço de e-mail", + "Unable to share email address": "Não foi possível compartilhar o endereço de e-mail", + "Direct message": "Enviar mensagem", + "Incoming Verification Request": "Recebendo solicitação de verificação", + "Recently Direct Messaged": "Mensagens enviadas recentemente", + "Direct Messages": "Mensagens enviadas", + "Your account is not secure": "Sua conta não está segura", + "Server isn't responding": "O servidor não está respondendo", + "Your server isn't responding to some of your requests. Below are some of the most likely reasons.": "Seu servidor não está respondendo a algumas de suas solicitações. Abaixo estão alguns dos motivos mais prováveis.", + "The server (%(serverName)s) took too long to respond.": "O servidor (%(serverName)s) demorou muito para responder.", + "Your firewall or anti-virus is blocking the request.": "Seu firewall ou o antivírus está bloqueando a solicitação.", + "The server is offline.": "O servidor está fora do ar.", + "The server is not configured to indicate what the problem is (CORS).": "O servidor não está configurado para indicar qual é o problema (CORS).", + "Recent changes that have not yet been received": "Alterações recentes que ainda não foram recebidas", + "This will allow you to return to your account after signing out, and sign in on other sessions.": "Isso permitirá que você retorne à sua conta depois de se desconectar e fazer login em outras sessões.", + "Missing session data": "Dados de sessão ausentes", + "Be found by phone or email": "Seja encontrado por número de celular ou por e-mail", + "Looks good!": "Muito bem!", + "Security Phrase": "Frase de segurança", + "Restoring keys from backup": "Restaurando chaves do backup", + "Fetching keys from server...": "Obtendo chaves do servidor...", + "%(completed)s of %(total)s keys restored": "%(completed)s de %(total)s chaves restauradas", + "Incorrect recovery passphrase": "Frase de recuperação incorreta", + "Keys restored": "Chaves restauradas", + "Successfully restored %(sessionCount)s keys": "%(sessionCount)s chaves foram restauradas com sucesso", + "Enter recovery passphrase": "Digite a senha de recuperação", + "Resend edit": "Reenviar edição", + "Resend removal": "Reenviar a exclusão", + "Share Permalink": "Compartilhar link permanente", + "Reload": "Recarregar", + "Take picture": "Tirar uma foto", + "Country Dropdown": "Selecione o país", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use %(brand)s with an existing Matrix account on a different homeserver.": "Você pode usar as opções personalizadas do servidor para entrar em outros servidores Matrix especificando um URL de servidor local diferente. Isso permite que você use %(brand)s com uma conta Matrix existente em um servidor local diferente.", + "No identity server is configured so you cannot add an email address in order to reset your password in the future.": "Nenhum servidor de identidade está configurado, portanto você não pode adicionar um endereço de e-mail para redefinir sua senha no futuro.", + "Enter your custom identity server URL What does this mean?": "Digite o URL do servidor de identidade personalizado O que isso significa?", + "Join millions for free on the largest public server": "Junte-se a milhões de pessoas gratuitamente no maior servidor público", + "Premium": "Premium", + "Premium hosting for organisations Learn more": "Hospedagem premium para organizações Saiba mais", + "Self-verification request": "Solicitação de auto-verificação", + "Switch theme": "Escolha um tema", + "Signing In...": "Entrando...", + "Log in to your new account.": "Entrar em sua nova conta.", + "You can now close this window or log in to your new account.": "Agora você pode fechar esta janela ou entrar na sua nova conta.", + "Registration Successful": "Registro bem-sucedido", + "Notification Autocomplete": "Notificação do preenchimento automático" } From 6721de44e0b9afd35e3117c0d105868d4f1e3b86 Mon Sep 17 00:00:00 2001 From: Artyom Date: Fri, 31 Jul 2020 20:07:16 +0000 Subject: [PATCH 042/424] Translated using Weblate (Russian) Currently translated at 99.8% (2334 of 2338 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/ru/ --- src/i18n/strings/ru.json | 246 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 235 insertions(+), 11 deletions(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 5e29bfed09..d0c810b091 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -1718,21 +1718,21 @@ "Show rooms with unread notifications first": "Показывать в начале комнаты с непрочитанными уведомлениями", "Show shortcuts to recently viewed rooms above the room list": "Показывать ссылки на недавние комнаты над списком комнат", "Manually verify all remote sessions": "Подтверждать все удалённые сессии вручную", - "Your homeserver does not support cross-signing.": "Ваш домашний сервер не поддерживает кросс-подпись.", - "Cross-signing and secret storage are enabled.": "Кросс-подпись и хранилище секретов разрешены.", + "Your homeserver does not support cross-signing.": "Ваш домашний сервер не поддерживает кросс-подписи.", + "Cross-signing and secret storage are enabled.": "Кросс-подпись и секретное хранилище разрешены.", "Customise your experience with experimental labs features. Learn more.": "Попробуйте экспериментальные возможности. Подробнее.", - "Cross-signing and secret storage are not yet set up.": "Кросс-подпись и хранилище секретов ещё не настроены.", - "Reset cross-signing and secret storage": "Сбросить кросс-подпись и хранилище секретов", + "Cross-signing and secret storage are not yet set up.": "Кросс-подпись и секретное хранилище ещё не настроены.", + "Reset cross-signing and secret storage": "Сбросить кросс-подпись и секретное хранилище", "Cross-signing public keys:": "Публичные ключи для кросс-подписи:", "in memory": "в памяти", "not found": "не найдено", "Cross-signing private keys:": "Приватные ключи для кросс-подписи:", - "in secret storage": "в хранилище секретов", + "in secret storage": "в секретном хранилище", "cached locally": "сохранено локально", "not found locally": "не найдено локально", "User signing private key:": "Приватный ключ подписи пользователей:", "Session backup key:": "Резервная копия сессионного ключа:", - "Secret storage public key:": "Публичный ключ хранилища секретов:", + "Secret storage public key:": "Публичный ключ секретного хранилища:", "in account data": "в данных учётной записи", "Homeserver feature support:": "Поддержка со стороны домашнего сервера:", "exists": "существует", @@ -1782,7 +1782,7 @@ "Toggle right panel": "Переключить правую панель", "Toggle this dialog": "Переключить этот диалог", "Cancel autocomplete": "Отменить автодополнение", - "Esc": "", + "Esc": "Esc", "Enter": "Enter", "Delete %(count)s sessions|one": "Удалить %(count)s сессий", "Use Single Sign On to continue": "Воспользуйтесь единой точкой входа для продолжения", @@ -1798,8 +1798,8 @@ "Verify this session by confirming the following number appears on its screen.": "Подтвердите эту сессию, убедившись, что следующее число отображается на экране.", "Waiting for your other session, %(deviceName)s (%(deviceId)s), to verify…": "Ожидание других ваших сессий, %(deviceName)s %(deviceId)s, для подтверждения…", "From %(deviceName)s (%(deviceId)s)": "От %(deviceName)s (%(deviceId)s)", - "Your account has a cross-signing identity in secret storage, but it is not yet trusted by this session.": "У вашей учётной записи есть кросс-подпись в хранилище секретов, но она пока не является доверенной в этой сессии.", - "Bootstrap cross-signing and secret storage": "Инициализировать кросс-подпись и хранилище секретов", + "Your account has a cross-signing identity in secret storage, but it is not yet trusted by this session.": "У вашей учётной записи есть кросс-подпись в секретное хранилище, но она пока не является доверенной в этой сессии.", + "Bootstrap cross-signing and secret storage": "Инициализация кросс-подпись и секретного хранилища", "well formed": "корректный", "unexpected type": "непредвиденный тип", "Self signing private key:": "Самоподписанный приватный ключ:", @@ -1962,7 +1962,7 @@ "Send a bug report with logs": "Отправить отчёт об ошибке с логами", "Individually verify each session used by a user to mark it as trusted, not trusting cross-signed devices.": "Отдельно подтверждать каждую сессию пользователя как доверенную, не доверяя кросс-подписанным устройствам.", "Securely cache encrypted messages locally for them to appear in search results, using ": "Кэшировать шифрованные сообщения локально, чтобы они выводились в результатах поиска, используя: ", - " to store messages from ": " чтобы сохранить сообщения от ", + " to store messages from ": " хранить сообщения от ", "Securely cache encrypted messages locally for them to appear in search results.": "Безопасно кэшировать шифрованные сообщения локально, чтобы они появлялись в результатах поиска.", "%(brand)s is missing some components required for securely caching encrypted messages locally. If you'd like to experiment with this feature, build a custom %(brand)s Desktop with search components added.": "Отсутствуют некоторые необходимые компоненты для %(brand)s, чтобы безопасно кэшировать шифрованные сообщения локально. Если вы хотите попробовать эту возможность, соберите самостоятельно %(brand)s Desktop с добавлением поисковых компонентов.", "not stored": "не сохранено", @@ -2175,5 +2175,229 @@ "Reminder: Your browser is unsupported, so your experience may be unpredictable.": "Напоминание: ваш браузер не поддерживается, возможны непредвиденные проблемы.", "Notification settings": "Настройки уведомлений", "Switch to light mode": "Переключить в светлый режим", - "Switch to dark mode": "Переключить в тёмный режим" + "Switch to dark mode": "Переключить в тёмный режим", + "The person who invited you already left the room.": "Пригласивший вас человек уже покинул комнату.", + "The person who invited you already left the room, or their server is offline.": "Пригласивший вас человек уже покинул комнату, либо сервер оффлайн.", + "Change notification settings": "Изменить настройки уведомлений", + "IRC display name width": "Ширина отображаемого имени IRC", + "Your server isn't responding to some requests.": "Ваш сервер не отвечает на некоторые запросы.", + "Add users and servers you want to ignore here. Use asterisks to have %(brand)s match any characters. For example, @bot:* would ignore all users that have the name 'bot' on any server.": "%(brand)sДобавьте сюда пользователей и сервера, которые вы хотите игнорировать. Используйте звездочки, чтобы %(brand)s соответствовали любым символам. Например, @bot:* будет игнорировать всех пользователей, имеющих имя \" bot \" на любом сервере.", + "Room ID or address of ban list": "ID комнаты или адрес списка блокировок", + "To link to this room, please add an address.": "Для связи с этой комнатой, пожалуйста, добавьте адрес.", + "Key share requests are sent to your other sessions automatically. If you rejected or dismissed the key share request on your other sessions, click here to request the keys for this session again.": "Запросы на общий доступ к ключам автоматически отправляются в другие сеансы. Если вы отклонили или отклонили запрос на общий доступ к ключам в других сеансах, нажмите здесь, чтобы снова запросить ключи для этого сеанса.", + "The authenticity of this encrypted message can't be guaranteed on this device.": "Подлинность этого зашифрованного сообщения не может быть гарантирована на этом устройстве.", + "No recently visited rooms": "Нет недавно посещенных комнат", + "Use default": "Использовать по умолчанию", + "There was an error updating the room's alternative addresses. It may not be allowed by the server or a temporary failure occurred.": "Произошла ошибка при обновлении альтернативных адресов комнаты. Это может быть запрещено сервером или произошел временный сбой.", + "There was an error creating that address. It may not be allowed by the server or a temporary failure occurred.": "При создании этого адреса произошла ошибка. Это может быть запрещено сервером или произошел временный сбой.", + "There was an error removing that address. It may no longer exist or a temporary error occurred.": "Произошла ошибка при удалении этого адреса. Возможно, он больше не существует или произошла временная ошибка.", + "Using this widget may share data with %(widgetDomain)s & your Integration Manager.": "Используя этот виджет, вы можете делиться данными с %(widgetDomain)s и вашим Менеджером Интеграции.", + "Using this widget may share data with %(widgetDomain)s.": "Используя этот виджет, вы можете делиться данными с %(widgetDomain)s.", + "Can't find this server or its room list": "Не можем найти этот сервер или его список комнат", + "Deleting cross-signing keys is permanent. Anyone you have verified with will see security alerts. You almost certainly don't want to do this, unless you've lost every device you can cross-sign from.": "Удаление ключей кросс-подписи является мгновенным и необратимым действием. Любой, с кем вы прошли проверку, увидит предупреждения безопасности. Вы почти наверняка не захотите этого делать, если только не потеряете все устройства, с которых можно совершать кросс-подпись.", + "Clearing all data from this session is permanent. Encrypted messages will be lost unless their keys have been backed up.": "Очистка всех данных из этого сеанса является мгновенным и необратимым действием. Зашифрованные сообщения будут потеряны, если их ключи не будут сохранены.", + "You've previously used a newer version of %(brand)s with this session. To use this version again with end to end encryption, you will need to sign out and back in again.": "Ранее вы использовали более новую версию %(brand)s в этом сеансе. Чтобы снова использовать эту версию с сквозным шифрованием, вам нужно будет выйти из системы и снова войти в нее.", + "There was a problem communicating with the server. Please try again.": "Возникла проблема со связью с сервером. Пожалуйста, попробуйте еще раз.", + "Server did not require any authentication": "Сервер не требует проверки подлинности", + "Server did not return valid authentication information.": "Сервер не вернул существующую аутентификационную информацию.", + "Verification Requests": "Запрос на проверку", + "Verifying this user will mark their session as trusted, and also mark your session as trusted to them.": "Проверка этого пользователя пометит его сеанс как доверенный, а также пометит ваш сеанс как доверенный им.", + "Verify this device to mark it as trusted. Trusting this device gives you and other users extra peace of mind when using end-to-end encrypted messages.": "Проверьте это устройство, чтобы отметить его как доверенное. Доверие к этому устройству дает вам и другим пользователям дополнительное спокойствие при использовании сквозных зашифрованных сообщений.", + "Verifying this device will mark it as trusted, and users who have verified with you will trust this device.": "Проверка этого устройства пометит его как доверенное, и пользователи, которые проверили его вместе с вами, будут доверять этому устройству.", + "Integrations are disabled": "Интеграции отключены", + "Integrations not allowed": "Интеграции не разрешены", + "Your %(brand)s doesn't allow you to use an Integration Manager to do this. Please contact an admin.": "Ваш %(brand)s не позволяет вам использовать для этого Менеджер Интеграции. Пожалуйста, свяжитесь с администратором.", + "To continue, use Single Sign On to prove your identity.": "Чтобы продолжить, используйте единый вход, чтобы подтвердить свою личность.", + "Confirm to continue": "Подтвердите, чтобы продолжить", + "Click the button below to confirm your identity.": "Нажмите кнопку ниже, чтобы подтвердить свою личность.", + "Failed to invite the following users to chat: %(csvUsers)s": "Не удалось пригласить в чат этих пользователей: %(csvUsers)s", + "We couldn't create your DM. Please check the users you want to invite and try again.": "Мы не смогли создать ваши ЛС. Пожалуйста, проверьте пользователей, которых вы хотите пригласить, и повторите попытку.", + "Something went wrong trying to invite the users.": "Пытаясь пригласить пользователей, что-то пошло не так.", + "We couldn't invite those users. Please check the users you want to invite and try again.": "Мы не могли пригласить этих пользователей. Пожалуйста, проверьте пользователей, которых вы хотите пригласить, и повторите попытку.", + "Failed to find the following users": "Не удалось найти этих пользователей", + "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s": "Следующие пользователи могут не существовать или быть недействительными и не могут быть приглашены: %(csvNames)s", + "Recently Direct Messaged": "Недавно отправленные личные сообщения", + "Go": "Вперёд", + "Invite someone using their name, username (like ), email address or share this room.": "Пригласите кого-нибудь, используя свое имя, имя пользователя (например, ), адрес электронной почты или поделиться этой комнатой.", + "a new master key signature": "новая подпись мастер-ключа", + "a new cross-signing key signature": "новый ключ подписи для кросс-подписи", + "a device cross-signing signature": "подпись устройства для кросс-подписи", + "%(brand)s encountered an error during upload of:": "%(brand)s обнаружил ошибку при загрузке файла:", + "Confirm by comparing the following with the User Settings in your other session:": "Подтвердите это, сравнив следующие параметры с настройками пользователя в другом сеансе:", + "Confirm this user's session by comparing the following with their User Settings:": "Подтвердите сеанс этого пользователя, сравнив следующие параметры с их пользовательскими настройками:", + "If they don't match, the security of your communication may be compromised.": "Если они не совпадают, безопасность вашего общения может быть поставлена под угрозу.", + "Your password": "Ваш пароль", + "This session, or the other session": "Этот сеанс или другой сеанс", + "The internet connection either session is using": "Подключение к интернету используется в любом сеансе", + "We recommend you change your password and recovery key in Settings immediately": "Мы рекомендуем вам немедленно изменить свой пароль и ключ восстановления в настройках", + "New session": "Новый сеанс", + "Use this session to verify your new one, granting it access to encrypted messages:": "Используйте этот сеанс для проверки вашего нового сеанса, предоставляя ему доступ к зашифрованным сообщениям:", + "If you didn’t sign in to this session, your account may be compromised.": "Если вы не входили в этот сеанс, ваша учетная запись может быть скомпрометирована.", + "This wasn't me": "Это был не я", + "Use your account to sign in to the latest version of the app at ": "Используйте свою учетную запись для входа в последнюю версию приложения по адресу ", + "You’re already signed in and good to go here, but you can also grab the latest versions of the app on all platforms at element.io/get-started.": "Вы уже вошли в систему и можете остаться здесь, но вы также можете получить последние версии приложения на всех платформах по адресу element.io/get-started.", + "Go to Element": "Перейти к Element", + "We’re excited to announce Riot is now Element!": "Мы рады сообщить, что Riot теперь стал Element!", + "Learn more at element.io/previously-riot": "Узнайте больше на сайте element.io/previously-riot", + "Automatically invite users": "Автоматически приглашать пользователей", + "Upgrade private room": "Улучшить приватную комнату", + "Upgrade public room": "Улучшить публичную комнату", + "Upgrading a room is an advanced action and is usually recommended when a room is unstable due to bugs, missing features or security vulnerabilities.": "Обновление комнаты - это расширенное действие, которое обычно рекомендуется, когда комната нестабильна из-за ошибок, отсутствующих функций или уязвимостей безопасности.", + "This usually only affects how the room is processed on the server. If you're having problems with your %(brand)s, please report a bug.": "Обычно это влияет только на то, как комната обрабатывается на сервере. Если у вас возникли проблемы с вашим %(brand)s, пожалуйста, сообщите об ошибке.", + "You'll upgrade this room from to .": "Вы обновите эту комнату с до .", + "You're all caught up.": "Вы в курсе.", + "Server isn't responding": "Сервер не отвечает", + "Your server isn't responding to some of your requests. Below are some of the most likely reasons.": "Ваш сервер не отвечает на некоторые ваши запросы. Ниже приведены некоторые из наиболее вероятных причин.", + "The server (%(serverName)s) took too long to respond.": "Сервер (%(serverName)s) слишком долго не отвечал.", + "Your firewall or anti-virus is blocking the request.": "Ваш брандмауэр или антивирус блокирует запрос.", + "A browser extension is preventing the request.": "Расширение браузера предотвращает запрос.", + "The server is offline.": "Сервер оффлайн.", + "The server has denied your request.": "Сервер отклонил ваш запрос.", + "Your area is experiencing difficulties connecting to the internet.": "Ваш регион испытывает трудности с подключением к интернету.", + "A connection error occurred while trying to contact the server.": "При попытке связаться с сервером произошла ошибка подключения.", + "The server is not configured to indicate what the problem is (CORS).": "Сервер не настроен для указания того, в чем заключается проблема (CORS).", + "Recent changes that have not yet been received": "Последние изменения, которые еще не были получены", + "This will allow you to return to your account after signing out, and sign in on other sessions.": "Это позволит вам вернуться в свою учетную запись после выхода из системы и войти в другие сеансы.", + "Verify other session": "Проверьте другой сеанс", + "Verification Request": "Запрос на подтверждение", + "Wrong file type": "Неправильный тип файла", + "Looks good!": "Выглядит неплохо!", + "Wrong Recovery Key": "Неверный ключ восстановления", + "Invalid Recovery Key": "Неверный ключ восстановления", + "Security Phrase": "Защитная фраза", + "Unable to access secret storage. Please verify that you entered the correct recovery passphrase.": "Невозможно получить доступ к секретному хранилищу. Пожалуйста, убедитесь, что вы ввели правильную парольную фразу восстановления.", + "Enter your Security Phrase or to continue.": "Введите свою защитную фразу или , чтобы продолжить.", + "Security Key": "Ключ безопасности", + "Use your Security Key to continue.": "Чтобы продолжить, используйте свой ключ безопасности.", + "Restoring keys from backup": "Восстановление ключей из резервной копии", + "Fetching keys from server...": "Получение ключей с сервера...", + "%(completed)s of %(total)s keys restored": "%(completed)s из %(total)s ключей восстановлено", + "Recovery key mismatch": "Несоответствие ключа восстановления", + "Backup could not be decrypted with this recovery key: please verify that you entered the correct recovery key.": "Резервная копия не может быть расшифрована с помощью этого ключа восстановления: пожалуйста, убедитесь, что вы ввели правильный ключ восстановления.", + "Incorrect recovery passphrase": "Неверная парольная фраза восстановления", + "Backup could not be decrypted with this recovery passphrase: please verify that you entered the correct recovery passphrase.": "Резервная копия не может быть расшифрована с помощью этой парольной фразы восстановления: пожалуйста, убедитесь, что вы ввели правильную парольную фразу восстановления.", + "Keys restored": "Ключи восстановлены", + "Successfully restored %(sessionCount)s keys": "Успешно восстановлено %(sessionCount)s ключей", + "Enter recovery key": "Введите ключ восстановления", + "Warning: You should only set up key backup from a trusted computer.": "Предупреждение: вы должны настроивать резервное копирование ключей только с доверенного компьютера.", + "If you've forgotten your recovery key you can ": "Если вы забыли свой ключ восстановления, вы можете ", + "Address (optional)": "Адрес (необязательно)", + "Confirm your identity by entering your account password below.": "Подтвердите свою личность, введя пароль учетной записи ниже.", + "Enter the location of your Element Matrix Services homeserver. It may use your own domain name or be a subdomain of element.io.": "Укажите путь к вашему серверу Element Matrix Services. Он может использовать ваше собственное доменное имя или быть поддоменом element.io.", + "Sign in with SSO": "Вход с помощью SSO", + "Self-verification request": "Запрос на самоконтроль", + "Delete the room address %(alias)s and remove %(name)s from the directory?": "Удалить адрес комнаты %(alias)s и удалить %(name)s из каталога?", + "delete the address.": "удалить адрес.", + "Switch theme": "Сменить тему", + "User menu": "Меню пользователя", + "Verify this login": "Проверьте этот сеанс", + "Session verified": "Сессия подтверждена", + "Changing your password will reset any end-to-end encryption keys on all of your sessions, making encrypted chat history unreadable. Set up Key Backup or export your room keys from another session before resetting your password.": "Изменение пароля приведет к сбросу всех сквозных ключей шифрования на всех ваших сеансах, что сделает зашифрованную историю чата нечитаемой. Перед сбросом пароля настройте резервное копирование ключей или экспортируйте ключи от комнат из другого сеанса.", + "You have been logged out of all sessions and will no longer receive push notifications. To re-enable notifications, sign in again on each device.": "Вы вышли из всех сеансов и больше не будете получать push-уведомления. Чтобы повторно включить уведомления, войдите в систему еще раз на каждом устройстве.", + "Syncing...": "Синхронизация…", + "Signing In...": "Выполняется вход...", + "If you've joined lots of rooms, this might take a while": "Если вы присоединились к большому количеству комнат, это может занять некоторое время", + "Use Recovery Key or Passphrase": "Используйте ключ восстановления или парольную фразу", + "Use Recovery Key": "Используйте ключ восстановления", + "Confirm your identity by verifying this login from one of your other sessions, granting it access to encrypted messages.": "Подтвердите свою личность, проверив этот сеанс из одного из ваших других сеансов, предоставив ему доступ к зашифрованным сообщениям.", + "This requires the latest %(brand)s on your other devices:": "Для этого требуется последняя версия %(brand)s на других ваших устройствах:", + "%(brand)s Web": "Веб-версия %(brand)s", + "%(brand)s Desktop": "Настольный клиент %(brand)s", + "%(brand)s iOS": "iOS клиент %(brand)s", + "%(brand)s X for Android": "%(brand)s X для Android", + "or another cross-signing capable Matrix client": "или другой, поддерживаемый кросс-подпись Matrix клиент", + "Your new session is now verified. It has access to your encrypted messages, and other users will see it as trusted.": "Ваш новый сеанс теперь проверен. Он имеет доступ к вашим зашифрованным сообщениям, и другие пользователи будут считать его надежным.", + "Your new session is now verified. Other users will see it as trusted.": "Ваш новый сеанс теперь проверен. Другие пользователи будут считать его надежным.", + "Without completing security on this session, it won’t have access to encrypted messages.": "Без завершения защиты в этом сеансе он не будет иметь доступа к зашифрованным сообщениям.", + "Regain access to your account and recover encryption keys stored in this session. Without them, you won’t be able to read all of your secure messages in any session.": "Восстановите доступ к своей учетной записи и восстановите ключи шифрования, хранящиеся в этом сеансе. Без них вы не сможете прочитать все ваши защищенные сообщения ни в одном сеансе.", + "Warning: Your personal data (including encryption keys) is still stored in this session. Clear it if you're finished using this session, or want to sign in to another account.": "Предупреждение: ваши личные данные (включая ключи шифрования) все еще хранятся в этом сеансе. Очистите его, если вы хотите закончить использовать этот сеанс или хотите войти в другую учетную запись.", + "Confirm encryption setup": "Подтвердите настройку шифрования", + "Click the button below to confirm setting up encryption.": "Нажмите кнопку ниже, чтобы подтвердить настройку шифрования.", + "Safeguard against losing access to encrypted messages & data by backing up encryption keys on your server.": "Защитите себя от потери доступа к зашифрованным сообщениям и данным, создав резервные копии ключей шифрования на вашем сервере.", + "Generate a Security Key": "Создание ключа безопасности", + "We’ll generate a Security Key for you to store somewhere safe, like a password manager or a safe.": "Мы создадим ключ безопасности для вас, чтобы вы могли хранить его в надежном месте, например, в менеджере паролей или сейфе.", + "Enter a Security Phrase": "Введите защитную фразу", + "Use a secret phrase only you know, and optionally save a Security Key to use for backup.": "Используйте секретную фразу, известную только вам, и при необходимости сохраните ключ безопасности для резервного копирования.", + "Enter your account password to confirm the upgrade:": "Введите пароль своей учетной записи для подтверждения обновления:", + "Restore your key backup to upgrade your encryption": "Восстановите резервную копию ключа для обновления шифрования", + "Restore": "Восстановление", + "You'll need to authenticate with the server to confirm the upgrade.": "Вам нужно будет пройти аутентификацию на сервере,чтобы подтвердить обновление.", + "Upgrade this session to allow it to verify other sessions, granting them access to encrypted messages and marking them as trusted for other users.": "Обновите этот сеанс, чтобы он мог проверять другие сеансы, предоставляя им доступ к зашифрованным сообщениям и помечая их как доверенные для других пользователей.", + "Enter a security phrase only you know, as it’s used to safeguard your data. To be secure, you shouldn’t re-use your account password.": "Введите фразу безопасности, известную только вам, поскольку она используется для защиты ваших данных. Чтобы быть в безопасности, вы не должны повторно использовать пароль своей учетной записи.", + "Use a different passphrase?": "Используйте другой пароль?", + "Confirm your recovery passphrase": "Подтвердите пароль для восстановления", + "Store your Security Key somewhere safe, like a password manager or a safe, as it’s used to safeguard your encrypted data.": "Храните ключ безопасности в надежном месте, например в менеджере паролей или сейфе, так как он используется для защиты ваших зашифрованных данных.", + "Copy": "Копировать", + "Unable to query secret storage status": "Невозможно запросить состояние секретного хранилища", + "If you cancel now, you may lose encrypted messages & data if you lose access to your logins.": "Если вы отмените сейчас, вы можете потерять зашифрованные сообщения и данные, если потеряете доступ к своим логинам.", + "You can also set up Secure Backup & manage your keys in Settings.": "Вы также можете настроить безопасное резервное копирование и управлять своими ключами в настройках.", + "Set up Secure backup": "Настройка безопасного резервного копирования", + "Upgrade your encryption": "Обновите свое шифрование", + "Set a Security Phrase": "Установите защитную фразу", + "Confirm Security Phrase": "Подтвердите защитную фразу", + "Save your Security Key": "Сохраните свой ключ безопасности", + "Unable to set up secret storage": "Невозможно настроить секретное хранилище", + "We'll store an encrypted copy of your keys on our server. Secure your backup with a recovery passphrase.": "Мы будем хранить зашифрованную копию ваших ключей на нашем сервере. Защитите свою резервную копию с помощью пароля восстановления.", + "Set up with a recovery key": "Настройка с помощью ключа восстановления", + "Repeat your recovery passphrase...": "Настройка с помощью ключа восстановления повторите свой пароль восстановления...", + "Your recovery key is a safety net - you can use it to restore access to your encrypted messages if you forget your recovery passphrase.": "Ваш ключ восстановления - это защитная сетка - вы можете использовать его для восстановления доступа к зашифрованным сообщениям, если забудете пароль восстановления.", + "Keep a copy of it somewhere secure, like a password manager or even a safe.": "Храните его копию в надежном месте, например, в менеджере паролей или даже в сейфе.", + "Your recovery key": "Ваш ключ восстановления", + "Your recovery key has been copied to your clipboard, paste it to:": "Ваш ключ восстановления был скопирован в буфер обмена, вставьте его в:", + "Your recovery key is in your Downloads folder.": "Ваш ключ восстановления находится в папке Загрузки.", + "Without setting up Secure Message Recovery, you won't be able to restore your encrypted message history if you log out or use another session.": "Без настройки безопасного восстановления сообщений вы не сможете восстановить свою зашифрованную историю сообщений, если выйдете из системы или воспользуетесь другим сеансом.", + "Secure your backup with a recovery passphrase": "Защитите свою резервную копию с помощью пароля восстановления", + "Make a copy of your recovery key": "Сделайте копию вашего ключа восстановления", + "Create key backup": "Создать резервную копию ключа", + "This session is encrypting history using the new recovery method.": "Этот сеанс шифрует историю с помощью нового метода восстановления.", + "This session has detected that your recovery passphrase and key for Secure Messages have been removed.": "Этот сеанс обнаружил, что ваша парольная фраза восстановления и ключ для защищенных сообщений были удалены.", + "If you did this accidentally, you can setup Secure Messages on this session which will re-encrypt this session's message history with a new recovery method.": "Если вы сделали это случайно, вы можете настроить безопасные сообщения на этом сеансе, который будет повторно шифровать историю сообщений этого сеанса с помощью нового метода восстановления.", + "If disabled, messages from encrypted rooms won't appear in search results.": "Если этот параметр отключен, сообщения из зашифрованных комнат не будут отображаться в результатах поиска.", + "Disable": "Отключить", + "Not currently indexing messages for any room.": "В настоящее время не индексируются сообщения ни для одной комнаты.", + "Currently indexing: %(currentRoom)s": "В настоящее время идёт индексация: %(currentRoom)s", + "%(brand)s is securely caching encrypted messages locally for them to appear in search results:": "%(brand)s надежно кэширует зашифрованные сообщения локально, чтобы они появлялись в результатах поиска:", + "Space used:": "Занято места:", + "Indexed messages:": "Индексированные сообщения:", + "Indexed rooms:": "Индексированные комнаты:", + "%(doneRooms)s out of %(totalRooms)s": "%(doneRooms)s из %(totalRooms)s", + "Message downloading sleep time(ms)": "Время сна для загрузки сообщений (в ms)", + "Navigation": "Навигация", + "Calls": "Звонки", + "Room List": "Список комнат", + "Autocomplete": "Автозаполнение", + "Alt": "Alt", + "Alt Gr": "Правый Alt", + "Shift": "Shift", + "Super": "Super/Meta", + "Ctrl": "Ctrl", + "Toggle Bold": "Жирный шрифт", + "Toggle Italics": "Курсивный шрифт", + "Toggle Quote": "Цитата", + "New line": "Новая строка", + "Navigate recent messages to edit": "Перейдите к последним сообщениям для редактирования", + "Jump to start/end of the composer": "Переход к началу/концу составителя", + "Navigate composer history": "Навигация по истории составителя", + "Cancel replying to a message": "Отмена ответа на сообщение", + "Toggle microphone mute": "Переключатель отключения микрофона", + "Toggle video on/off": "Переключатель включения/выключения видео", + "Scroll up/down in the timeline": "Прокрутка вверх/вниз по временной шкале", + "Dismiss read marker and jump to bottom": "Отклонить маркер прочтения и перейти к основанию", + "Jump to oldest unread message": "Перейти к самому старому непрочитанному сообщению", + "Upload a file": "Загрузить файл", + "Jump to room search": "Перейти к поиску комнат", + "Navigate up/down in the room list": "Перемещайтесь вверх/вниз по списку комнат", + "Select room from the room list": "Выберите комнату из списка комнат", + "Collapse room list section": "Свернуть секцию списка комнат", + "Expand room list section": "Раскрыть раздел списка комнат", + "Clear room list filter field": "Очистить поле фильтра списка комнат", + "Previous/next unread room or DM": "Предыдущая/следующая непрочитанная комната или ЛС", + "Previous/next room or DM": "Предыдущая/следующая комната или ЛС", + "Toggle the top left menu": "Переключение верхнего левого меню", + "Close dialog or context menu": "Закройте диалоговое окно или контекстное меню", + "Move autocomplete selection up/down": "Перемещение выбора автозаполнения вверх/вниз", + "Page Up": "Page Up", + "Page Down": "Page Down", + "Space": "Пробел", + "End": "End" } From 095bc87ad9bbb38e3f52790e43026ce628c3bcf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D1=80=D0=BA=D0=BE=20=D0=9C=2E=20=D0=9A=D0=BE?= =?UTF-8?q?=D1=81=D1=82=D0=B8=D1=9B?= Date: Sun, 2 Aug 2020 10:34:02 +0000 Subject: [PATCH 043/424] Translated using Weblate (Serbian) Currently translated at 44.1% (1032 of 2338 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/sr/ --- src/i18n/strings/sr.json | 67 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 66 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/sr.json b/src/i18n/strings/sr.json index 9aee401085..bce9fe6728 100644 --- a/src/i18n/strings/sr.json +++ b/src/i18n/strings/sr.json @@ -978,5 +978,70 @@ "All settings": "Сва подешавања", "Feedback": "Повратни подаци", "General failure": "Општа грешка", - "Copy": "Копирај" + "Copy": "Копирај", + "Go Back": "Назад", + "We’re excited to announce Riot is now Element": "Са радошћу објављујемо да је Рајот (Riot) сада Елемент (Element)", + "Riot is now Element!": "Рајот (Riot) је сада Елемент!", + "Send a bug report with logs": "Пошаљи извештај о грешци са записницима", + "Light": "Светла", + "Dark": "Тамна", + "a few seconds ago": "пре неколико секунди", + "about a minute ago": "пре једног минута", + "%(num)s minutes ago": "пре %(num)s минута", + "about an hour ago": "пре једног часа", + "%(num)s hours ago": "пре %(num)s часова", + "about a day ago": "пре једног дана", + "%(num)s days ago": "пре %(num)s дана", + "Font size": "Величина фонта", + "Use custom size": "Користи прилагођену величину", + "Use a more compact ‘Modern’ layout": "Користи збијенији распоред звани „Модерн“", + "Match system theme": "Прати тему система", + "Use a system font": "Користи системски фонт", + "System font name": "Назив системског фонта", + "Show rooms with unread notifications first": "Прво прикажи собе са непрочитаним обавештењима", + "Enable experimental, compact IRC style layout": "Омогући пробни, збијенији распоред у IRC стилу", + "Got It": "Разумем", + "Light bulb": "Сијалица", + "Algorithm: ": "Алгоритам: ", + "Go back": "Назад", + "Hey you. You're the best!": "Хеј! Само напред!", + "Custom font size can only be between %(min)s pt and %(max)s pt": "Прилагођена величина фонта може бити између %(min)s и %(max)s тачака", + "Theme added!": "Тема додата!", + "Custom theme URL": "Адреса прилагођене теме", + "Add theme": "Додај тему", + "Theme": "Тема", + "Customise your appearance": "Прилагодите изглед", + "Appearance Settings only affect this %(brand)s session.": "Подешавања изгледа се примењују само на %(brand)s сесију.", + "Help & About": "Помоћ и подаци о програму", + "Preferences": "Поставке", + "Voice & Video": "Глас и видео", + "Unable to revoke sharing for email address": "Не могу да опозовем дељење ове мејл адресе", + "Revoke": "Опозови", + "Unable to revoke sharing for phone number": "Не могу да опозовем дељење броја телефона", + "Send a reply…": "Пошаљи одговор…", + "No recently visited rooms": "Нема недавно посећених соба", + "Appearance": "Изглед", + "Show rooms with unread messages first": "Прво прикажи собе са непрочитаним порукама", + "Show previews of messages": "Прикажи претпрегледе порука", + "Sort by": "Поређај по", + "Activity": "Активности", + "A-Z": "А-Ш", + "Send as message": "Пошаљи у облику поруке", + "Failed to revoke invite": "Неуспех при отказивању позивнице", + "Revoke invite": "Откажи позивницу", + "Got it": "Разумем", + "Categories": "Категорије", + "Your theme": "Ваша тема", + "Looks good": "Изгледа добро", + "Show advanced": "Прикажи напредно", + "Recent Conversations": "Недавни разговори", + "Recently Direct Messaged": "Недавно послате непосредне поруке", + "Start a conversation with someone using their name, username (like ) or email address.": "Започните разговор са неким користећи њихово име, корисничко име (као нпр.: ) или мејл адресу.", + "Go": "Напред", + "Go to Element": "Иди у Елемент", + "We’re excited to announce Riot is now Element!": "Са одушевљењем објављујемо да је Рајот (Riot) сада Елемент (Element)!", + "Learn more at element.io/previously-riot": "Сазнајте више на страници element.io/previously-riot", + "Looks good!": "Изгледа добро!", + "Send a Direct Message": "Пошаљи непосредну поруку", + "Switch theme": "Промени тему" } From 24719954a9bc82f5101438cb057da6e897ea6fd0 Mon Sep 17 00:00:00 2001 From: Johnny998 <78mikey87@gmail.com> Date: Sun, 2 Aug 2020 12:45:28 +0000 Subject: [PATCH 044/424] Translated using Weblate (Slovak) Currently translated at 70.7% (1654 of 2338 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/sk/ --- src/i18n/strings/sk.json | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/sk.json b/src/i18n/strings/sk.json index 063a3ff9ba..667768fd57 100644 --- a/src/i18n/strings/sk.json +++ b/src/i18n/strings/sk.json @@ -1769,5 +1769,34 @@ "This room is end-to-end encrypted": "Táto miestnosť je E2E šifrovaná", "Everyone in this room is verified": "Všetci v tejto miestnosti sú overení", "Edit message": "Upraviť správu", - "Mod": "Moderátor" + "Mod": "Moderátor", + "Are you sure you want to cancel entering passphrase?": "Naozaj chcete zrušiť zadávanie prístupovej frázy?", + "%(num)s minutes from now": "o %(num)s minút", + "%(num)s hours from now": "o %(num)s hodín", + "%(num)s days from now": "o %(num)s dní", + "The person who invited you already left the room.": "Osoba ktorá Vás pozvala už opustila miestnosť.", + "The person who invited you already left the room, or their server is offline.": "Osoba ktorá Vás pozvala už opustila miestnosť, alebo je ich server offline.", + "* %(senderName)s %(emote)s": "* %(senderName)s %(emote)s", + "Change notification settings": "Upraviť nastavenia upozornení", + "Enable advanced debugging for the room list": "Zapnúť pokročilé ladenie pre zoznam miestností", + "Securely cache encrypted messages locally for them to appear in search results, using ": "Bezpečne uchovávať šifrované správy na tomto zariadení, aby sa v nich dalo vyhľadávať pomocou ", + " to store messages from ": " na uchovanie správ z ", + "rooms.": "miestnosti.", + "Your personal ban list holds all the users/servers you personally don't want to see messages from. After ignoring your first user/server, a new room will show up in your room list named 'My Ban List' - stay in this room to keep the ban list in effect.": "Váš osobný zoznam blokácií obsahuje všetkých používateľov a servery, ktoré nechcete vidieť. Po ignorovaní prvého používateľa/servera sa vytvorí nová miestnosť 'Môj zoznam blokácií' - zostaňte v ňom, aby zoznam platil.", + "Discovery options will appear once you have added an email above.": "Možnosti nastavenia verejného profilu sa objavia po pridaní e-mailovej adresy vyššie.", + "Discovery options will appear once you have added a phone number above.": "Možnosti nastavenia verejného profilu sa objavia po pridaní telefónneho čísla vyššie.", + "Your key share request has been sent - please check your other sessions for key share requests.": "Požiadavka na zdieľanie kľúčov bola odoslaná - prosím skontrolujte si svoje relácie, či vám prišla.", + "No recently visited rooms": "Žiadne nedávno navštívené miestnosti", + "People": "Ľudia", + "Appearance": "Vzhľad", + "Show rooms with unread messages first": "Najprv ukázať miestnosti s neprečítanými správami", + "All rooms": "Všetky miestnosti", + "Hide advanced": "Skryť pokročilé možnosti", + "Show advanced": "Ukázať pokročilé možnosti", + "Explore rooms": "Preskúmať miestnosti", + "Search rooms": "Hľadať miestnosti", + "Security & privacy": "Bezpečnosť & súkromie", + "All settings": "Všetky nastavenia", + "Feedback": "Spätná väzba", + "Indexed rooms:": "Indexované miestnosti:" } From 57b61f81681157e453dc5f0662b3451dab764653 Mon Sep 17 00:00:00 2001 From: strix aluco Date: Fri, 31 Jul 2020 13:31:48 +0000 Subject: [PATCH 045/424] Translated using Weblate (Ukrainian) Currently translated at 48.6% (1136 of 2338 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/uk/ --- src/i18n/strings/uk.json | 89 ++++++++++++++++++++++++++++++---------- 1 file changed, 67 insertions(+), 22 deletions(-) diff --git a/src/i18n/strings/uk.json b/src/i18n/strings/uk.json index 2272ed49eb..b3886b96d2 100644 --- a/src/i18n/strings/uk.json +++ b/src/i18n/strings/uk.json @@ -74,7 +74,7 @@ "Email": "е-пошта", "Email address": "Адреса е-пошти", "Failed to send email": "Помилка відправки е-почти", - "Edit": "Редагувати", + "Edit": "Відредагувати", "Unpin Message": "Відкріпити повідомлення", "Register": "Зареєструватися", "Rooms": "Кімнати", @@ -111,7 +111,7 @@ "This Room": "Ця кімната", "Noisy": "Шумний", "Error saving email notification preferences": "Помилка при збереженні параметрів сповіщень е-поштою", - "Messages containing my display name": "Повідомлення, вміщає моє ім'я", + "Messages containing my display name": "Повідомлення, що містять моє видиме ім'я", "Remember, you can always set an email address in user settings if you change your mind.": "Пам'ятайте, що ви завжди можете встановити адресу е-пошти у користувацьких налаштуваннях, якщо передумаєте.", "Unavailable": "Нема в наявності", "View Decrypted Source": "Переглянути розшифроване джерело", @@ -163,7 +163,7 @@ "All Rooms": "Усі кімнати", "Wednesday": "Середа", "You cannot delete this message. (%(code)s)": "Ви не можете видалити це повідомлення. (%(code)s)", - "Quote": "Цитувати", + "Quote": "Процитувати", "Send": "Надіслати", "Send logs": "Надіслати журнали", "All messages": "Усі повідомлення", @@ -326,9 +326,9 @@ "Reason": "Причина", "%(senderName)s requested a VoIP conference.": "%(senderName)s бажає розпочати дзвінок-конференцію.", "%(senderName)s invited %(targetName)s.": "%(senderName)s запросив/ла %(targetName)s.", - "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s змінив/ла своє видиме ім'я на %(displayName)s.", - "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s вказав/ла своє видиме ім'я: %(displayName)s.", - "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s ліквідував/ла своє видиме ім'я (%(oldDisplayName)s).", + "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s змінив(-ла) своє видиме ім'я на %(displayName)s.", + "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s зазначив(-ла) своє видиме ім'я: %(displayName)s.", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s видалив(-ла) своє видиме ім'я (%(oldDisplayName)s).", "%(senderName)s removed their profile picture.": "%(senderName)s вилучав/ла свою світлину профілю.", "%(senderName)s set a profile picture.": "%(senderName)s встановив/ла світлину профілю.", "VoIP conference started.": "Розпочато дзвінок-конференцію.", @@ -375,7 +375,7 @@ "Please contact your homeserver administrator.": "Будь ласка, зв'яжіться з адміністратором вашого домашнього сервера.", "Failed to join room": "Не вдалося приєднатися до кімнати", "Message Pinning": "Закріплені повідомлення", - "Show timestamps in 12 hour format (e.g. 2:30pm)": "Показувати час у 12-годинному форматі (напр. 2:30 pm)", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "Показувати час у 12-годинному форматі (напр. 2:30 пп)", "Always show encryption icons": "Завжди показувати значки шифрування", "Enable automatic language detection for syntax highlighting": "Показувати автоматичне визначення мови для підсвічування синтаксису", "Automatically replace plain text Emoji": "Автоматично замінювати емоційки в простому тексті", @@ -394,7 +394,7 @@ "Phone": "Телефон", "Failed to upload profile picture!": "Не вдалося відвантажити світлину профілю!", "Upload new:": "Відвантажити нову:", - "No display name": "Немає імені для показу", + "No display name": "Немає видимого імені", "New passwords don't match": "Нові паролі не збігаються", "Passwords can't be empty": "Пароль не може бути пустим", "Export E2E room keys": "Експортувати ключі наскрізного шифрування кімнат", @@ -404,7 +404,7 @@ "New Password": "Новий пароль", "Confirm password": "Підтвердження пароля", "Last seen": "Востаннє в мережі", - "Failed to set display name": "Не вдалося встановити ім'я для показу", + "Failed to set display name": "Не вдалося зазначити видиме ім'я", "The maximum permitted number of widgets have already been added to this room.": "Максимально дозволену кількість віджетів уже додано до цієї кімнати.", "Drop File Here": "Киньте файл сюди", "Drop file here to upload": "Киньте файл сюди, щоб відвантажити", @@ -415,7 +415,7 @@ "%(senderName)s sent an image": "%(senderName)s надіслав/ла зображення", "%(senderName)s sent a video": "%(senderName)s надіслав/ла відео", "%(senderName)s uploaded a file": "%(senderName)s надіслав/ла файл", - "Options": "Налаштування", + "Options": "Параметри", "Key request sent.": "Запит ключа надіслано.", "Please select the destination room for this message": "Будь ласка, виберіть кімнату, куди потрібно надіслати це повідомлення", "Disinvite": "Скасувати запрошення", @@ -630,10 +630,10 @@ "Please enter verification code sent via text.": "Будь ласка, введіть звірювальний код, відправлений у текстовому повідомленні.", "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains.": "Текстове повідомлення було відправлено на номер +%(msisdn)s. Будь ласка, введіть звірювальний код, який воно містить.", "Messages in this room are secured with end-to-end encryption. Only you and the recipient(s) have the keys to read these messages.": "Повідомлення у цій кімнаті захищені наскрізним шифруванням. Тільки ви та одержувачі мають ключі для прочитання цих повідомлень.", - "Messages in this room are end-to-end encrypted.": "Повідомлення у цій кімнаті захищені наскрізним шифруванням.", - "Messages in this room are not end-to-end encrypted.": "Повідомлення у цій кімнаті не захищені наскрізним шифруванням.", + "Messages in this room are end-to-end encrypted.": "Повідомлення у цій кімнаті наскрізно зашифровані.", + "Messages in this room are not end-to-end encrypted.": "Повідомлення у цій кімнаті не є наскрізно зашифрованими.", "Encryption enabled": "Шифрування увімкнено", - "Messages in this room are end-to-end encrypted. Learn more & verify this user in their user profile.": "Повідомлення у цій кімнаті захищені наскрізним шифруванням. Дізнайтеся більше та звіртеся з цим користувачем через його профіль.", + "Messages in this room are end-to-end encrypted. Learn more & verify this user in their user profile.": "Повідомлення у цій кімнаті наскрізно зашифровані. Дізнайтеся більше та звіртеся з цим користувачем через його профіль.", "You sent a verification request": "Ви відправили звірювальний запит", "Direct Messages": "Особисті повідомлення", "Room Settings - %(roomName)s": "Налаштування кімнати - %(roomName)s", @@ -680,7 +680,7 @@ "%(senderName)s placed a video call.": "%(senderName)s розпочав(-ла) відеовиклик.", "%(senderName)s placed a video call. (not supported by this browser)": "%(senderName)s розпочав(-ла) відеовиклик. (не підтримується цим переглядачем)", "%(senderName)s revoked the invitation for %(targetDisplayName)s to join the room.": "%(senderName)s відкликав(-ла) запрошення %(targetDisplayName)s приєднання до кімнати.", - "%(senderName)s removed the rule banning users matching %(glob)s": "%(senderName)s видалив(ла) правило блокування користувачів по шаблону %(glob)s", + "%(senderName)s removed the rule banning users matching %(glob)s": "%(senderName)s видалив(-ла) правило блокування користувачів за шаблоном %(glob)s", "%(senderName)s removed the rule banning rooms matching %(glob)s": "%(senderName)s видалив(ла) правило блокування кімнат по шаблону %(glob)s", "%(senderName)s removed the rule banning servers matching %(glob)s": "%(senderName)s видалив(ла) правило блокування серверів по шаблону %(glob)s", "%(senderName)s removed a ban rule matching %(glob)s": "%(senderName)s видалив(ла) правило блокування по шаблону %(glob)s", @@ -702,10 +702,10 @@ "Manually Verify by Text": "Ручна перевірка за допомогою тексту", "Interactively verify by Emoji": "Інтерактивна перевірка з емодзі", "Done": "Зроблено", - "%(displayName)s is typing …": "%(displayName)s друкує…", - "%(names)s and %(count)s others are typing …|other": "%(names)s та %(count)s інших друкують…", - "%(names)s and %(count)s others are typing …|one": "%(names)s та ще один(на) друкують…", - "%(names)s and %(lastPerson)s are typing …": "%(names)s та %(lastPerson)s друкують…", + "%(displayName)s is typing …": "%(displayName)s пише…", + "%(names)s and %(count)s others are typing …|other": "%(names)s та ще %(count)s учасників пишуть…", + "%(names)s and %(count)s others are typing …|one": "%(names)s та ще один учасник пишуть…", + "%(names)s and %(lastPerson)s are typing …": "%(names)s та %(lastPerson)s пишуть…", "Ask your %(brand)s admin to check your config for incorrect or duplicate entries.": "Попросіть адміністратора %(brand)s перевірити конфігураційний файл на наявність неправильних або повторюваних записів.", "Cannot reach identity server": "Не вдається зв'язатися із сервером ідентифікаціїї", "No homeserver URL provided": "URL адресу домашнього сервера не вказано", @@ -782,7 +782,7 @@ "You joined the call": "Ви приєднались до дзвінку", "%(senderName)s joined the call": "%(senderName)s приєднався(лась) до дзвінку", "Call in progress": "Дзвінок у процесі", - "You left the call": "Ви покинули дзвінок", + "You left the call": "Ви припинили розмову", "%(senderName)s left the call": "%(senderName)s покинув(ла) дзвінок", "Call ended": "Дзвінок завершено", "You started a call": "Ви почали дзвінок", @@ -957,9 +957,9 @@ "This bridge is managed by .": "Цей міст керується .", "Workspace: %(networkName)s": "Робочий простір: %(networkName)s", "Channel: %(channelName)s": "Канал: %(channelName)s", - "Show less": "Показати менше", + "Show less": "Згорнути", "Show more": "Показати більше", - "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Якщо ви не експортуєте ключі для цієї комнати і не імпортуєте їх у майбутньому, зміна пароля приведе до скидання всіх ключів наскрізного шифрування і зробить неможилвимим читання історії чату. У майбутньому це буде вдосконалено.", + "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Змінення пароля призведе до скидання всіх ключів наскрізного шифрування та унеможливить читання історії листування, якщо тільки ви не експортуєте ваші ключі кімнати та не імпортуєте їх згодом. Це буде вдосконалено у майбутньому.", "Santa": "Санта Клаус", "Gift": "Подарунок", "Lock": "Замок", @@ -1100,5 +1100,50 @@ "Restore your key backup to upgrade your encryption": "Відновіть резервну копію вашого ключа щоб поліпшити шифрування", "You'll need to authenticate with the server to confirm the upgrade.": "Ви матимете пройти розпізнання на сервері щоб підтвердити поліпшування.", "Upgrade this session to allow it to verify other sessions, granting them access to encrypted messages and marking them as trusted for other users.": "Поліпште цей сеанс щоб уможливити звіряння інших сеансів, надаючи їм доступ до зашифрованих повідомлень та позначуючи їх довіреними для інших користувачів.", - "Upgrade your encryption": "Поліпшити ваше шифрування" + "Upgrade your encryption": "Поліпшити ваше шифрування", + "Show a placeholder for removed messages": "Показувати позначку-заповнювач для видалених повідомлень", + "Show join/leave messages (invites/kicks/bans unaffected)": "Показувати повідомлення про приєднання/залишення (не впливає на запрошення/викидання/заборону)", + "Show avatar changes": "Показувати зміни личини", + "Show display name changes": "Показувати зміни видимого імені", + "Show read receipts sent by other users": "Показувати мітки прочитання, надіслані іншими користувачами", + "Show a reminder to enable Secure Message Recovery in encrypted rooms": "Показувати нагадку про ввімкнення відновлювання захищених повідомлень у зашифрованих кімнатах", + "Show avatars in user and room mentions": "Показувати личини у згадках користувачів та кімнат", + "Never send encrypted messages to unverified sessions from this session": "Ніколи не надсилати зашифровані повідомлення до незвірених сеансів з цього сеансу", + "Never send encrypted messages to unverified sessions in this room from this session": "Ніколи не надсилати зашифровані повідомлення до незвірених сеансів у цій кімнаті з цього сеансу", + "Enable message search in encrypted rooms": "Увімкнути шукання повідомлень у зашифрованих кімнатах", + "IRC display name width": "Ширина видимого імені IRC", + "Encrypted messages in one-to-one chats": "Зашифровані повідомлення у балачках віч-на-віч", + "Encrypted messages in group chats": "Зашифровані повідомлення у групових балачках", + "Secure messages with this user are end-to-end encrypted and not able to be read by third parties.": "Захищені повідомлення з цим користувачем є наскрізно зашифрованими та непрочитними для сторонніх осіб.", + "Securely cache encrypted messages locally for them to appear in search results.": "Безпечно локально кешувати зашифровані повідомлення щоб вони з'являлись у результатах пошуку.", + "%(brand)s is missing some components required for securely caching encrypted messages locally. If you'd like to experiment with this feature, build a custom %(brand)s Desktop with search components added.": "%(brand)s'ові бракує деяких складників, необхідних для безпечного локального кешування зашифрованих повідомлень. Якщо ви хочете поекспериментувати з цією властивістю, зберіть спеціальну збірку %(brand)s Desktop із доданням пошукових складників.", + "%(brand)s can't securely cache encrypted messages locally while running in a web browser. Use %(brand)s Desktop for encrypted messages to appear in search results.": "%(brand)s не може безпечно локально кешувати зашифровані повідомлення під час виконання у переглядачі. Користуйтесь %(brand)s Desktop, в якому зашифровані повідомлення з'являються у результатах пошуку.", + "Are you sure? You will lose your encrypted messages if your keys are not backed up properly.": "Ви впевнені? Ви загубите ваші зашифровані повідомлення якщо копія ключів не була зроблена коректно.", + "Encrypted messages are secured with end-to-end encryption. Only you and the recipient(s) have the keys to read these messages.": "Зашифровані повідомлення захищені наскрізним шифруванням. Лише ви та отримувачі повідомлень мають ключі для їх читання.", + "Display Name": "Видиме ім'я", + "wait and try again later": "почекайте та спробуйте пізніше", + "Once enabled, encryption for a room cannot be disabled. Messages sent in an encrypted room cannot be seen by the server, only by the participants of the room. Enabling encryption may prevent many bots and bridges from working correctly. Learn more about encryption.": "Якщо ви увімкнете шифрування для кімнати, його неможливо буде вимкнути. Надіслані у зашифровану кімнату повідомлення будуть прочитними тільки для учасників кімнати, натомість для сервера вони будуть непрочитними. Увімкнення шифрування може унеможливити роботу ботів та мостів. Дізнатись більше про шифрування.", + "Encrypted": "Зашифроване", + "This room is end-to-end encrypted": "Ця кімната є наскрізно зашифрованою", + "Encrypted by an unverified session": "Зашифроване незвіреним сеансом", + "Encrypted by a deleted session": "Зашифроване видаленим сеансом", + "The authenticity of this encrypted message can't be guaranteed on this device.": "Справжність цього зашифрованого повідомлення не може бути гарантованою на цьому пристрої.", + "Send an encrypted reply…": "Надіслати зашифровану відповідь…", + "Replying": "Відповідання", + "Low priority": "Неважливі", + "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "У зашифрованих кімнатах, подібних до цієї, попередній перегляд посилань є початково вимкненим. Це робиться задля гарантування того, що ваш домашній сервер (на якому генеруються перегляди) не матиме змоги збирати інформацію щодо посилань, які ви бачите у цій кімнаті.", + "In encrypted rooms, your messages are secured and only you and the recipient have the unique keys to unlock them.": "У зашифрованих кімнатах ваші повідомлення є захищеними, тож тільки ви та отримувач маєте ключі для їх розблокування.", + "In encrypted rooms, verify all users to ensure it’s secure.": "У зашифрованих кімнатах звіряйте усіх користувачів щоб переконатись у безпеці спілкування.", + "Failed to copy": "Не вдалось скопіювати", + "Your display name": "Ваше видиме ім'я", + "COPY": "СКОПІЮВАТИ", + "Set a display name:": "Зазначити видиме ім'я:", + "Copy": "Скопіювати", + "Cancel replying to a message": "Скасувати відповідання на повідомлення", + "Page Up": "Page Up", + "Page Down": "Page Down", + "Esc": "Esc", + "Enter": "Enter", + "Space": "Пропуск", + "End": "End" } From 5b8a8ecc5ed1153db170c4169eefbd289ba74c76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20S=C3=BC=C3=9F?= Date: Mon, 3 Aug 2020 16:26:25 +0200 Subject: [PATCH 046/424] get screen type from app prop --- src/components/views/elements/AppTile.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/views/elements/AppTile.js b/src/components/views/elements/AppTile.js index d0fc56743f..e2e7bd5d95 100644 --- a/src/components/views/elements/AppTile.js +++ b/src/components/views/elements/AppTile.js @@ -314,13 +314,13 @@ export default class AppTile extends React.Component { if (SettingsStore.isFeatureEnabled("feature_many_integration_managers")) { IntegrationManagers.sharedInstance().openAll( this.props.room, - 'type_' + this.props.type, + 'type_' + this.props.app.type, this.props.app.id, ); } else { IntegrationManagers.sharedInstance().getPrimaryManager().open( this.props.room, - 'type_' + this.props.type, + 'type_' + this.props.app.type, this.props.app.id, ); } From 71a9fef49172d882b3d75e22a7631d96eb89a899 Mon Sep 17 00:00:00 2001 From: Bruno Windels Date: Mon, 3 Aug 2020 17:42:54 +0200 Subject: [PATCH 047/424] fix InviteDialog crash --- src/components/views/dialogs/InviteDialog.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/dialogs/InviteDialog.js b/src/components/views/dialogs/InviteDialog.js index 4d7a66e957..c90811ed5a 100644 --- a/src/components/views/dialogs/InviteDialog.js +++ b/src/components/views/dialogs/InviteDialog.js @@ -349,7 +349,7 @@ export default class InviteDialog extends React.PureComponent { // Also pull in all the rooms tagged as DefaultTagID.DM so we don't miss anything. Sometimes the // room list doesn't tag the room for the DMRoomMap, but does for the room list. - const dmTaggedRooms = RoomListStore.instance.orderedLists[DefaultTagID.DM]; + const dmTaggedRooms = RoomListStore.instance.orderedLists[DefaultTagID.DM] || []; const myUserId = MatrixClientPeg.get().getUserId(); for (const dmRoom of dmTaggedRooms) { const otherMembers = dmRoom.getJoinedMembers().filter(u => u.userId !== myUserId); From 1899bdf419e90d5d0ad8e5f34ac35a5efc1c93a2 Mon Sep 17 00:00:00 2001 From: Bruno Windels Date: Mon, 3 Aug 2020 18:05:52 +0200 Subject: [PATCH 048/424] fix i18n --- src/i18n/strings/en_EN.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 579414c5e9..8314402849 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -2198,6 +2198,8 @@ "Room Notification": "Room Notification", "Notification Autocomplete": "Notification Autocomplete", "Room Autocomplete": "Room Autocomplete", + "Users": "Users", + "User Autocomplete": "User Autocomplete", "Passphrases must match": "Passphrases must match", "Passphrase must not be empty": "Passphrase must not be empty", "Export room keys": "Export room keys", From 6a034552eca225e42525d05b126366a14c9772fc Mon Sep 17 00:00:00 2001 From: Txopi Date: Mon, 3 Aug 2020 15:09:29 +0000 Subject: [PATCH 049/424] Translated using Weblate (Basque) Currently translated at 96.9% (2268 of 2340 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/eu/ --- src/i18n/strings/eu.json | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/eu.json b/src/i18n/strings/eu.json index 01afa51836..2740ea2079 100644 --- a/src/i18n/strings/eu.json +++ b/src/i18n/strings/eu.json @@ -2266,5 +2266,32 @@ "%(brand)s Web": "%(brand)s web", "%(brand)s Desktop": "%(brand)s Desktop", "%(brand)s iOS": "%(brand)s iOS", - "%(brand)s X for Android": "%(brand)s X for Android" + "%(brand)s X for Android": "%(brand)s X for Android", + "Change notification settings": "Aldatu jakinarazpenen ezarpenak", + "Use custom size": "Erabili tamaina pertsonalizatua", + "Use a more compact ‘Modern’ layout": "Erabili mezuen antolaketa 'Modernoa', konpaktuagoa da", + "Use a system font": "Erabili sistemako letra-tipoa", + "System font name": "Sistemaren letra-tipoaren izena", + "Unknown caller": "Dei-egile ezezaguna", + "Incoming voice call": "Sarrerako ahots-deia", + "Incoming video call": "Sarrerako bideo-deia", + "Incoming call": "Sarrerako deia", + "Hey you. You're the best!": "Aupa txo. Onena zara!", + "Message layout": "Mezuen antolaketa", + "Compact": "Konpaktua", + "Modern": "Modernoa", + "Use default": "Erabili lehenetsia", + "Notification options": "Jakinarazpen ezarpenak", + "Forget Room": "Ahaztu gela", + "This room is public": "Gela hau publikoa da", + "Away": "Kanpoan", + "Click to view edits": "Klik egin edizioak ikusteko", + "Go to Element": "Joan Elementera", + "Learn more at element.io/previously-riot": "Ikasi gehiago element.io/previously-riot orrian", + "The server is offline.": "Zerbitzaria lineaz kanpo dago.", + "The server has denied your request.": "Zerbitzariak zure eskariari uko egin dio.", + "Wrong file type": "Okerreko fitxategi-mota", + "Looks good!": "Itxura ona du!", + "Search rooms": "Bilatu gelak", + "User menu": "Erabiltzailea-menua" } From 90193041d1b6c2543c44aebfc475a837d9f30dd3 Mon Sep 17 00:00:00 2001 From: tusooa Date: Mon, 3 Aug 2020 15:28:16 +0000 Subject: [PATCH 050/424] Translated using Weblate (Chinese (Simplified)) Currently translated at 70.0% (1637 of 2340 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/zh_Hans/ --- src/i18n/strings/zh_Hans.json | 97 ++++++++++++++++++++++++++++++++++- 1 file changed, 96 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/zh_Hans.json b/src/i18n/strings/zh_Hans.json index 3d3970c510..10486fe518 100644 --- a/src/i18n/strings/zh_Hans.json +++ b/src/i18n/strings/zh_Hans.json @@ -1560,5 +1560,100 @@ "Disconnect anyway": "仍然断开连接", "You are still sharing your personal data on the identity server .": "您仍然在身份服务器 共享您的个人信息。", "We recommend that you remove your email addresses and phone numbers from the identity server before disconnecting.": "我们推荐您在断开连接前从身份服务器上删除您的邮箱地址和手机号码。", - "Identity Server (%(server)s)": "身份服务器(%(server)s)" + "Identity Server (%(server)s)": "身份服务器(%(server)s)", + "not stored": "未存储", + "You are currently using to discover and be discoverable by existing contacts you know. You can change your identity server below.": "您正在使用 以发现您认识的现存联系人并被其发现。您可以在下方更改您的身份服务器。", + "If you don't want to use to discover and be discoverable by existing contacts you know, enter another identity server below.": "如果您不想使用 以发现您认识的现存联系人并被其发现,请在下方输入另一个身份服务器。", + "Identity Server": "身份服务器", + "You are not currently using an identity server. To discover and be discoverable by existing contacts you know, add one below.": "您现在没有使用身份服务器。若想发现您认识的现存联系人并被其发现,请在下方添加一个身份服务器。", + "Disconnecting from your identity server will mean you won't be discoverable by other users and you won't be able to invite others by email or phone.": "从您的身份服务器断开连接意味着您将不可被别的用户发现,同时您也将不能用邮箱或手机邀请别人。", + "Using an identity server is optional. If you choose not to use an identity server, you won't be discoverable by other users and you won't be able to invite others by email or phone.": "使用身份服务器是可选的。如果您选择不使用身份服务器,您将不能被别的用户发现,也不能用邮箱或手机邀请别人。", + "Do not use an identity server": "不使用身份服务器", + "Enter a new identity server": "输入一个新的身份服务器", + "New version available. Update now.": "新版本可用。现在更新。", + "Hey you. You're the best!": "嘿呀。您就是最棒的!", + "Size must be a number": "大小必须是数字", + "Custom font size can only be between %(min)s pt and %(max)s pt": "自定义字体大小只能介于 %(min)s pt 和 %(max)s pt 之间", + "Error downloading theme information.": "下载主题信息时发生错误。", + "Theme added!": "主题已添加!", + "Custom theme URL": "自定义主题链接", + "Add theme": "添加主题", + "Message layout": "信息布局", + "Compact": "紧凑", + "Modern": "现代", + "Set the name of a font installed on your system & %(brand)s will attempt to use it.": "设置一个安装在您的系统上的字体名称,%(brand)s 会尝试使用它。", + "Customise your appearance": "自定义您的外观", + "Appearance Settings only affect this %(brand)s session.": "外观设置仅会影响此 %(brand)s 会话。", + "Your password was successfully changed. You will not receive push notifications on other sessions until you log back in to them": "您的密码已成功更改。在您重新登录别的会话之前,您将不会在那里收到推送通知", + "Agree to the identity server (%(serverName)s) Terms of Service to allow yourself to be discoverable by email address or phone number.": "同意身份服务器(%(serverName)s)的服务协议以允许自己被通过邮件地址或手机号码发现。", + "Discovery": "发现", + "Clear cache and reload": "清除缓存重新加载", + "Keyboard Shortcuts": "键盘快捷键", + "Customise your experience with experimental labs features. Learn more.": "通过实验功能自定义您的体验。了解更多。", + "Ignored/Blocked": "已忽略/已屏蔽", + "Error adding ignored user/server": "添加已忽略的用户/服务器时出现错误", + "Error subscribing to list": "订阅列表时出现错误", + "Please verify the room ID or address and try again.": "请验证聊天室 ID 或地址并重试。", + "Error removing ignored user/server": "移除已忽略用户/服务器时出现错误", + "Error unsubscribing from list": "取消订阅列表时出现错误", + "None": "无", + "Ban list rules - %(roomName)s": "封禁列表规则 - %(roomName)s", + "Server rules": "服务器规则", + "User rules": "用户规则", + "You have not ignored anyone.": "您没有忽略任何人。", + "You are currently ignoring:": "您正在忽略:", + "You are not subscribed to any lists": "您没有订阅任何列表", + "Unsubscribe": "取消订阅", + "View rules": "查看规则", + "You are currently subscribed to:": "您正在订阅:", + "⚠ These settings are meant for advanced users.": "⚠ 这些设置是为高级用户准备的。", + "Add users and servers you want to ignore here. Use asterisks to have %(brand)s match any characters. For example, @bot:* would ignore all users that have the name 'bot' on any server.": "在此处添加您想忽略的用户和服务器。使用星号以使 %(brand)s 匹配任何字符。例如,@bot:* 会忽略在任何服务器上以「bot」为名的用户。", + "Ignoring people is done through ban lists which contain rules for who to ban. Subscribing to a ban list means the users/servers blocked by that list will be hidden from you.": "忽略人是通过含有封禁规则的封禁列表来完成的。订阅一个封禁列表意味着被该列表阻止的用户/服务器将会对您隐藏。", + "Personal ban list": "个人封禁列表", + "Your personal ban list holds all the users/servers you personally don't want to see messages from. After ignoring your first user/server, a new room will show up in your room list named 'My Ban List' - stay in this room to keep the ban list in effect.": "您的个人封禁列表包含所有您不想看见信息的用户/服务器。您第一次忽略用户/服务器。后,一个名叫「我的封禁列表」的新聊天室将会显示在您的聊天室列表中——留在该聊天室以保持该封禁列表生效。", + "Server or user ID to ignore": "要忽略的服务器或用户 ID", + "eg: @bot:* or example.org": "例如: @bot:* 或 example.org", + "Subscribed lists": "订阅的列表", + "Subscribing to a ban list will cause you to join it!": "订阅一个封禁列表会使您加入它!", + "If this isn't what you want, please use a different tool to ignore users.": "如果这不是您想要的,请使用别的的工具来忽略用户。", + "Room ID or address of ban list": "封禁列表的聊天室 ID 或地址", + "Subscribe": "订阅", + "Always show the window menu bar": "总是显示窗口菜单栏", + "Show tray icon and minimize window to it on close": "显示托盘图标并在关闭时最小化窗口到托盘", + "Session ID:": "会话 ID:", + "Session key:": "会话密钥:", + "Message search": "信息搜索", + "Cross-signing": "交叉签名", + "Where you’re logged in": "您在何处登录", + "A session's public name is visible to people you communicate with": "会话的公共名称会对和您交流的人显示", + "this room": "此聊天室", + "View older messages in %(roomName)s.": "查看 %(roomName)s 里更旧的信息。", + "Uploaded sound": "已上传的声音", + "Sounds": "声音", + "Notification sound": "通知声音", + "Reset": "重置", + "Set a new custom sound": "使用新的自定义声音", + "Browse": "浏览", + "Upgrade the room": "更新聊天室", + "Enable room encryption": "启用聊天室加密", + "Error changing power level requirement": "更改权限级别需求时出错", + "An error occurred changing the room's power level requirements. Ensure you have sufficient permissions and try again.": "更改此聊天室的权限级别需求时出错。请确保您有足够的权限后重试。", + "Error changing power level": "更改权限级别时出错", + "An error occurred changing the user's power level. Ensure you have sufficient permissions and try again.": "更改此用户的权限级别时出错。请确保您有足够权限后重试。", + "To link to this room, please add an address.": "要链接至此聊天室,请添加一个地址。", + "Unable to share email address": "无法共享邮件地址", + "Your email address hasn't been verified yet": "您的邮件地址尚未被验证", + "Click the link in the email you received to verify and then click continue again.": "请点击您收到的邮件中的链接后再点击继续。", + "Verify the link in your inbox": "验证您的收件箱中的链接", + "Complete": "完成", + "Share": "共享", + "Discovery options will appear once you have added an email above.": "您在上方添加邮箱后发现选项将会出现。", + "Unable to share phone number": "无法共享手机号码", + "Please enter verification code sent via text.": "请输入短信中发送的验证码。", + "Discovery options will appear once you have added a phone number above.": "您添加手机号码后发现选项将会出现。", + "Remove %(email)s?": "删除 %(email)s 吗?", + "Remove %(phone)s?": "删除 %(phone)s 吗?", + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains.": "一封短信已发送至 +%(msisdn)s。请输入其中包含的验证码。", + "This user has not verified all of their sessions.": "此用户没有验证其全部会话。", + "You have not verified this user.": "您没有验证此用户。" } From 2171042e060586360a4c4da1625750b2973d4e21 Mon Sep 17 00:00:00 2001 From: tusooa Date: Mon, 3 Aug 2020 16:15:51 +0000 Subject: [PATCH 051/424] Translated using Weblate (Chinese (Simplified)) Currently translated at 70.0% (1637 of 2340 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/zh_Hans/ --- src/i18n/strings/zh_Hans.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/zh_Hans.json b/src/i18n/strings/zh_Hans.json index 10486fe518..2e6bab23fd 100644 --- a/src/i18n/strings/zh_Hans.json +++ b/src/i18n/strings/zh_Hans.json @@ -1655,5 +1655,6 @@ "Remove %(phone)s?": "删除 %(phone)s 吗?", "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains.": "一封短信已发送至 +%(msisdn)s。请输入其中包含的验证码。", "This user has not verified all of their sessions.": "此用户没有验证其全部会话。", - "You have not verified this user.": "您没有验证此用户。" + "You have not verified this user.": "您没有验证此用户。", + "You have verified this user. This user has verified all of their sessions.": "您验证了此用户。此用户已验证了其全部会话。" } From c6257600e09ae3b708b6286aa4f0998cad81451c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Priit=20J=C3=B5er=C3=BC=C3=BCt?= Date: Mon, 3 Aug 2020 15:15:10 +0000 Subject: [PATCH 052/424] Translated using Weblate (Estonian) Currently translated at 99.7% (2332 of 2340 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/et/ --- src/i18n/strings/et.json | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/et.json b/src/i18n/strings/et.json index d4e64b46f3..a8490e805b 100644 --- a/src/i18n/strings/et.json +++ b/src/i18n/strings/et.json @@ -607,7 +607,7 @@ "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.": "Sinu aadressi kontrollimiseks saatsime sulle e-kirja. Palun järgi kirjas näidatud juhendit ja siis klõpsi alljärgnevat nuppu.", "Email Address": "E-posti aadress", "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains.": "Saatsime tekstisõnumi numbrile +%(msisdn)s. Palun sisesta seal kuvatud kontrollkood.", - "Phone Number": "Telefoni number", + "Phone Number": "Telefoninumber", "Cannot add any more widgets": "Rohkem vidinaid ei õnnestu lisada", "The maximum permitted number of widgets have already been added to this room.": "Suurim lubatud vidinate arv on siia jututuppa juba lisatud.", "Join as voice or video.": "Liitu kas häälkõnega või videokõnega.", @@ -2397,5 +2397,8 @@ "The server has denied your request.": "Server blokeerib sinu päringuid.", "Your area is experiencing difficulties connecting to the internet.": "Sinu piirkonnas on tõrkeid internetiühenduses.", "A connection error occurred while trying to contact the server.": "Serveriga ühenduse algatamisel tekkis viga.", - "The server is not configured to indicate what the problem is (CORS).": "Server on seadistatud varjama tegelikke veapõhjuseid (CORS)." + "The server is not configured to indicate what the problem is (CORS).": "Server on seadistatud varjama tegelikke veapõhjuseid (CORS).", + "No files visible in this room": "Selles jututoas pole nähtavaid faile", + "Attach files from chat or just drag and drop them anywhere in a room.": "Faile saad manueks lisada kas vastava nupu alt vestlusest või sikutades neid jututoa aknasse.", + "You have no visible notifications in this room.": "Jututoas pole nähtavaid teavitusi." } From 5113b7bfc5a2befae6893d341519cfd7a4ff4c13 Mon Sep 17 00:00:00 2001 From: XoseM Date: Mon, 3 Aug 2020 13:19:49 +0000 Subject: [PATCH 053/424] Translated using Weblate (Galician) Currently translated at 100.0% (2340 of 2340 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/gl/ --- src/i18n/strings/gl.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/gl.json b/src/i18n/strings/gl.json index a38717ce79..0e9d4ccecf 100644 --- a/src/i18n/strings/gl.json +++ b/src/i18n/strings/gl.json @@ -2404,5 +2404,9 @@ "Your area is experiencing difficulties connecting to the internet.": "Hai problemas de conexión a internet na túa localidade.", "A connection error occurred while trying to contact the server.": "Aconteceu un fallo de conexión ó intentar contactar co servidor.", "The server is not configured to indicate what the problem is (CORS).": "O servidor non está configurado para sinalar cal é o problema (CORS).", - "Recent changes that have not yet been received": "Cambios recentes que aínda non foron recibidos" + "Recent changes that have not yet been received": "Cambios recentes que aínda non foron recibidos", + "No files visible in this room": "Non hai ficheiros visibles na sala", + "Attach files from chat or just drag and drop them anywhere in a room.": "Anexa filecheiros desde a conversa ou arrastra e sóltaos onde queiras nunha sala.", + "You’re all caught up": "Xa estás ó día", + "You have no visible notifications in this room.": "Non tes notificacións visibles nesta sala." } From ce226ab5346b405b4f21a4938f87eb2ef6c748f9 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Mon, 3 Aug 2020 16:02:26 +0100 Subject: [PATCH 054/424] Replace Riot with Element in docs and comments This only covers the simple cases of references to issues and repos. More complex areas, such as deployment scripts, will be handled separately. Part of https://github.com/vector-im/element-web/issues/14864 --- .stylelintrc.js | 2 +- README.md | 18 +++---- docs/ciderEditor.md | 2 +- docs/jitsi.md | 2 +- docs/room-list-store.md | 2 +- docs/scrolling.md | 2 +- docs/usercontent.md | 6 +-- res/css/_common.scss | 4 +- res/css/structures/_MatrixChat.scss | 2 +- res/css/views/avatars/_BaseAvatar.scss | 2 +- res/css/views/rooms/_RoomSublist.scss | 2 +- res/themes/legacy-light/css/_paths.scss | 2 +- res/themes/light/css/_paths.scss | 2 +- scripts/ci/end-to-end-tests.sh | 2 +- scripts/gen-i18n.js | 2 +- src/AsyncWrapper.js | 2 +- src/CallHandler.js | 8 ++-- src/IdentityAuthClient.js | 2 +- src/Markdown.js | 4 +- src/Modal.tsx | 2 +- src/Registration.js | 2 +- src/Resend.js | 2 +- src/ScalarMessaging.js | 4 +- src/SlashCommands.tsx | 2 +- src/TextForEvent.js | 4 +- src/Tinter.js | 2 +- src/Unread.js | 6 +-- src/VectorConferenceHandler.js | 12 ++--- src/WidgetMessaging.js | 2 +- .../views/dialogs/ExportE2eKeysDialog.js | 2 +- .../keybackup/CreateKeyBackupDialog.js | 2 +- .../CreateSecretStorageDialog.js | 4 +- src/autocomplete/CommunityProvider.tsx | 2 +- src/components/structures/HomePage.tsx | 4 +- .../structures/IndicatorScrollbar.js | 2 +- src/components/structures/InteractiveAuth.js | 2 +- src/components/structures/LoggedInView.tsx | 2 +- src/components/structures/MatrixChat.tsx | 22 ++++----- src/components/structures/RoomView.js | 4 +- src/components/structures/TagPanel.js | 2 +- src/components/structures/TimelinePanel.js | 2 +- src/components/structures/UserMenu.tsx | 2 +- src/components/structures/auth/Login.js | 6 +-- .../structures/auth/Registration.js | 2 +- .../structures/auth/SetupEncryptionBody.js | 2 +- .../auth/InteractiveAuthEntryComponents.js | 4 +- .../views/dialogs/BugReportDialog.js | 4 +- .../views/dialogs/ChangelogDialog.js | 2 +- .../views/dialogs/RedesignFeedbackDialog.js | 4 +- src/components/views/elements/AppTile.js | 8 ++-- .../views/elements/ErrorBoundary.js | 2 +- src/components/views/groups/GroupTile.js | 2 +- .../views/right_panel/VerificationPanel.tsx | 2 +- .../views/room_settings/AliasSettings.js | 2 +- .../views/room_settings/ColorSettings.js | 2 +- .../views/rooms/BasicMessageComposer.tsx | 6 +-- src/components/views/rooms/EventTile.js | 8 ++-- .../views/rooms/NotificationBadge.tsx | 2 +- src/components/views/rooms/RoomList.tsx | 6 +-- src/components/views/rooms/RoomPreviewBar.js | 2 +- src/components/views/rooms/RoomSublist.tsx | 4 +- src/components/views/rooms/TemporaryTile.tsx | 2 +- .../views/settings/ChangePassword.js | 4 +- .../views/settings/EventIndexPanel.js | 4 +- .../tabs/room/RolesRoomSettingsTab.js | 4 +- .../tabs/room/SecurityRoomSettingsTab.js | 2 +- .../settings/tabs/user/LabsUserSettingsTab.js | 2 +- src/editor/caret.ts | 2 +- src/editor/deserialize.ts | 2 +- src/i18n/strings/en_EN.json | 2 +- src/indexing/EventIndex.js | 2 +- src/languageHandler.tsx | 4 +- src/settings/Settings.ts | 6 +-- src/settings/watchers/ThemeWatcher.ts | 2 +- src/stores/ActiveWidgetStore.js | 2 +- src/stores/notifications/NotificationColor.ts | 2 +- src/stores/room-list/RoomListStore.ts | 48 +++++++++---------- src/stores/room-list/algorithms/Algorithm.ts | 34 ++++++------- .../list-ordering/ImportanceAlgorithm.ts | 2 +- .../list-ordering/NaturalAlgorithm.ts | 2 +- .../algorithms/tag-sorting/RecentAlgorithm.ts | 4 +- src/theme.js | 2 +- src/toasts/UpdateToast.tsx | 2 +- src/usercontent/index.html | 6 +-- src/utils/AutoDiscoveryUtils.js | 4 +- src/utils/DecryptFile.js | 2 +- src/utils/WidgetUtils.js | 16 +++---- src/utils/membership.ts | 2 +- src/utils/pillify.js | 2 +- src/widgets/WidgetApi.ts | 2 +- .../views/rooms/RoomSettings-test.js | 2 +- test/editor/deserialize-test.js | 2 +- test/end-to-end-tests/install.sh | 2 +- 93 files changed, 202 insertions(+), 202 deletions(-) diff --git a/.stylelintrc.js b/.stylelintrc.js index 1690f2186f..313102ea83 100644 --- a/.stylelintrc.js +++ b/.stylelintrc.js @@ -17,7 +17,7 @@ module.exports = { "at-rule-no-unknown": null, "no-descending-specificity": null, "scss/at-rule-no-unknown": [true, { - // https://github.com/vector-im/riot-web/issues/10544 + // https://github.com/vector-im/element-web/issues/10544 "ignoreAtRules": ["define-mixin"], }], } diff --git a/README.md b/README.md index 5f5da9a40d..e468d272d0 100644 --- a/README.md +++ b/README.md @@ -11,14 +11,14 @@ a 'skin'. A skin provides: * The containing application * Zero or more 'modules' containing non-UI functionality -As of Aug 2018, the only skin that exists is `vector-im/riot-web`; it and +As of Aug 2018, the only skin that exists is `vector-im/element-web`; it and `matrix-org/matrix-react-sdk` should effectively be considered as a single project (for instance, matrix-react-sdk bugs -are currently filed against vector-im/riot-web rather than this project). +are currently filed against vector-im/element-web rather than this project). Translation Status ================== -[![Translation status](https://translate.riot.im/widgets/riot-web/-/multi-auto.svg)](https://translate.riot.im/engage/riot-web/?utm_source=widget) +[![Translation status](https://translate.riot.im/widgets/element-web/-/multi-auto.svg)](https://translate.riot.im/engage/element-web/?utm_source=widget) Developer Guide =============== @@ -41,10 +41,10 @@ https://github.com/matrix-org/matrix-react-sdk/blob/master/code_style.md Code should be committed as follows: * All new components: https://github.com/matrix-org/matrix-react-sdk/tree/master/src/components - * Riot-specific components: https://github.com/vector-im/riot-web/tree/master/src/components + * Element-specific components: https://github.com/vector-im/element-web/tree/master/src/components * In practice, `matrix-react-sdk` is still evolving so fast that the maintenance - burden of customising and overriding these components for Riot can seriously - impede development. So right now, there should be very few (if any) customisations for Riot. + burden of customising and overriding these components for Element can seriously + impede development. So right now, there should be very few (if any) customisations for Element. * CSS: https://github.com/matrix-org/matrix-react-sdk/tree/master/res/css * Theme specific CSS & resources: https://github.com/matrix-org/matrix-react-sdk/tree/master/res/themes @@ -71,7 +71,7 @@ practices that anyone working with the SDK needs to be be aware of and uphold: * The view's CSS file MUST have the same name (e.g. view/rooms/MessageTile.css). CSS for matrix-react-sdk currently resides in - https://github.com/vector-im/riot-web/tree/master/src/skins/vector/css/matrix-react-sdk. + https://github.com/vector-im/element-web/tree/master/src/skins/vector/css/matrix-react-sdk. * Per-view CSS is optional - it could choose to inherit all its styling from the context of the rest of the app, although this is unusual for any but @@ -125,7 +125,7 @@ from it. Github Issues ============= -All issues should be filed under https://github.com/vector-im/riot-web/issues +All issues should be filed under https://github.com/vector-im/element-web/issues for now. Development @@ -174,5 +174,5 @@ yarn test ## End-to-End tests -Make sure you've got your Riot development server running (by doing `yarn start` in riot-web), and then in this project, run `yarn run e2etests`. +Make sure you've got your Element development server running (by doing `yarn start` in element-web), and then in this project, run `yarn run e2etests`. See `test/end-to-end-tests/README.md` for more information. diff --git a/docs/ciderEditor.md b/docs/ciderEditor.md index 00033b5b8c..f522dc2fc4 100644 --- a/docs/ciderEditor.md +++ b/docs/ciderEditor.md @@ -1,6 +1,6 @@ # The CIDER (Contenteditable-Input-Diff-Error-Reconcile) editor -The CIDER editor is a custom editor written for Riot. +The CIDER editor is a custom editor written for Element. Most of the code can be found in the `/editor/` directory of the `matrix-react-sdk` project. It is used to power the composer main composer (both to send and edit messages), and might be used for other usecases where autocomplete is desired (invite box, ...). diff --git a/docs/jitsi.md b/docs/jitsi.md index 779ef79d3a..2b63ce0f72 100644 --- a/docs/jitsi.md +++ b/docs/jitsi.md @@ -25,7 +25,7 @@ which takes several parameters: be null. The react-sdk will assume that `jitsi.html` is at the path of wherever it is currently -being served. For example, `https://riot.im/develop/jitsi.html` or `vector://webapp/jitsi.html`. +being served. For example, `https://develop.element.io/jitsi.html` or `vector://webapp/jitsi.html`. The `jitsi.html` wrapper can use the react-sdk's `WidgetApi` to communicate, making it easier to actually implement the feature. diff --git a/docs/room-list-store.md b/docs/room-list-store.md index 53f0527209..fa849e2505 100644 --- a/docs/room-list-store.md +++ b/docs/room-list-store.md @@ -55,7 +55,7 @@ timestamp contained within the event (generated server-side by the sender's serv This is the easiest of the algorithms to understand because it does essentially nothing. It imposes no behavioural changes over the tag sorting algorithm and is by far the simplest way to order a room list. -Historically, it's been the only option in Riot and extremely common in most chat applications due to +Historically, it's been the only option in Element and extremely common in most chat applications due to its relative deterministic behaviour. ### List ordering algorithm: Importance diff --git a/docs/scrolling.md b/docs/scrolling.md index 71329e5c32..a5232359a7 100644 --- a/docs/scrolling.md +++ b/docs/scrolling.md @@ -13,7 +13,7 @@ ScrollPanel supports a mode to prevent it shrinking. This is used to prevent a j BACAT scrolling implements a different way of restoring the scroll position in the timeline while tiles out of view are changing height or tiles are being added or removed. It was added in https://github.com/matrix-org/matrix-react-sdk/pull/2842. -The motivation for the changes is having noticed that setting scrollTop while scrolling tends to not work well, with it interrupting ongoing scrolling and also querying scrollTop reporting outdated values and consecutive scroll adjustments cancelling each out previous ones. This seems to be worse on macOS than other platforms, presumably because of a higher resolution in scroll events there. Also see https://github.com/vector-im/riot-web/issues/528. The BACAT approach allows to only have to change the scroll offset when adding or removing tiles. +The motivation for the changes is having noticed that setting scrollTop while scrolling tends to not work well, with it interrupting ongoing scrolling and also querying scrollTop reporting outdated values and consecutive scroll adjustments cancelling each out previous ones. This seems to be worse on macOS than other platforms, presumably because of a higher resolution in scroll events there. Also see https://github.com/vector-im/element-web/issues/528. The BACAT approach allows to only have to change the scroll offset when adding or removing tiles. The approach taken instead is to vertically align the timeline tiles to the bottom of the scroll container (using flexbox) and give the timeline inside the scroll container an explicit height, initially set to a multiple of the PAGE_SIZE (400px at time of writing) as needed by the content. When scrolled up, we can compensate for anything that grew below the viewport by changing the height of the timeline to maintain what's currently visible in the viewport without adjusting the scrollTop and hence without jumping. diff --git a/docs/usercontent.md b/docs/usercontent.md index e54851dd0d..db0e34e5fa 100644 --- a/docs/usercontent.md +++ b/docs/usercontent.md @@ -5,9 +5,9 @@ letting the browser and user interact with the resulting data may be dangerous, previously `usercontent.riot.im` was used to act as a sandbox on a different origin to close the attack surface, it is now possible to do by using a combination of a sandboxed iframe and some code written into the app which consumes this SDK. -Usercontent is an iframe sandbox target for allowing a user to safely download a decrypted attachment from a sandboxed origin where it cannot be used to XSS your riot session out from under you. +Usercontent is an iframe sandbox target for allowing a user to safely download a decrypted attachment from a sandboxed origin where it cannot be used to XSS your Element session out from under you. -Its function is to create an Object URL for the user/browser to use but bound to an origin different to that of the riot instance to protect against XSS. +Its function is to create an Object URL for the user/browser to use but bound to an origin different to that of the Element instance to protect against XSS. It exposes a function over a postMessage API, when sent an object with the matching fields to render a download link with the Object URL: @@ -24,4 +24,4 @@ It exposes a function over a postMessage API, when sent an object with the match If only imgSrc, imgStyle and style are passed then just update the existing link without overwriting other things about it. -It is expected that this target be available at `usercontent/` relative to the root of the app, this can be seen in riot-web's webpack config. +It is expected that this target be available at `usercontent/` relative to the root of the app, this can be seen in element-web's webpack config. diff --git a/res/css/_common.scss b/res/css/_common.scss index f2d3a0e54b..0b2b861617 100644 --- a/res/css/_common.scss +++ b/res/css/_common.scss @@ -38,7 +38,7 @@ body { margin: 0px; // needed to match the designs correctly on macOS - // see https://github.com/vector-im/riot-web/issues/11425 + // see https://github.com/vector-im/element-web/issues/11425 -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } @@ -436,7 +436,7 @@ input[type=text]:focus, input[type=password]:focus, textarea:focus { // TODO: Review mx_GeneralButton usage to see if it can use a different class // These classes were brought in from the old UserSettings and are included here to avoid // breaking the app. -// Ref: https://github.com/vector-im/riot-web/issues/8420 +// Ref: https://github.com/vector-im/element-web/issues/8420 .mx_GeneralButton { @mixin mx_DialogButton; display: inline; diff --git a/res/css/structures/_MatrixChat.scss b/res/css/structures/_MatrixChat.scss index af6f6c79e9..f4e46a8e94 100644 --- a/res/css/structures/_MatrixChat.scss +++ b/res/css/structures/_MatrixChat.scss @@ -72,7 +72,7 @@ limitations under the License. flex: 1 1 0; min-width: 0; - /* To fix https://github.com/vector-im/riot-web/issues/3298 where Safari + /* To fix https://github.com/vector-im/element-web/issues/3298 where Safari needed height 100% all the way down to the HomePage. Height does not have to be auto, empirically. */ diff --git a/res/css/views/avatars/_BaseAvatar.scss b/res/css/views/avatars/_BaseAvatar.scss index e59598278f..1a1e14e7ac 100644 --- a/res/css/views/avatars/_BaseAvatar.scss +++ b/res/css/views/avatars/_BaseAvatar.scss @@ -22,7 +22,7 @@ limitations under the License. // different results during full reflow of the page vs. incremental reflow // of small portions. While that's surely a browser bug, we can avoid it by // using `inline-block` instead of the default `inline`. - // https://github.com/vector-im/riot-web/issues/5594 + // https://github.com/vector-im/element-web/issues/5594 // https://bugzilla.mozilla.org/show_bug.cgi?id=1535053 // https://bugzilla.mozilla.org/show_bug.cgi?id=255139 display: inline-block; diff --git a/res/css/views/rooms/_RoomSublist.scss b/res/css/views/rooms/_RoomSublist.scss index d3c9b79c69..fe80dfca22 100644 --- a/res/css/views/rooms/_RoomSublist.scss +++ b/res/css/views/rooms/_RoomSublist.scss @@ -169,7 +169,7 @@ limitations under the License. // that the sublists below them do not jump. However, that leaves a gap // when scrolled to the top above the first sublist (whose header can only // ever stick to top), so we force height to 0 for only that first header. - // See also https://github.com/vector-im/riot-web/issues/14429. + // See also https://github.com/vector-im/element-web/issues/14429. &:first-child .mx_RoomSublist_headerContainer { height: 0; padding-bottom: 4px; diff --git a/res/themes/legacy-light/css/_paths.scss b/res/themes/legacy-light/css/_paths.scss index 0744347826..3944076004 100644 --- a/res/themes/legacy-light/css/_paths.scss +++ b/res/themes/legacy-light/css/_paths.scss @@ -1,3 +1,3 @@ // Path from root SCSS file (such as `light.scss`) to `res` dir in the source tree -// This value is overridden by external themes in `riot-web`. +// This value is overridden by external themes in `element-web`. $res: ../../..; diff --git a/res/themes/light/css/_paths.scss b/res/themes/light/css/_paths.scss index 0744347826..3944076004 100644 --- a/res/themes/light/css/_paths.scss +++ b/res/themes/light/css/_paths.scss @@ -1,3 +1,3 @@ // Path from root SCSS file (such as `light.scss`) to `res` dir in the source tree -// This value is overridden by external themes in `riot-web`. +// This value is overridden by external themes in `element-web`. $res: ../../..; diff --git a/scripts/ci/end-to-end-tests.sh b/scripts/ci/end-to-end-tests.sh index 1233677db4..7a62c03b12 100755 --- a/scripts/ci/end-to-end-tests.sh +++ b/scripts/ci/end-to-end-tests.sh @@ -13,7 +13,7 @@ handle_error() { trap 'handle_error' ERR -echo "--- Building Riot" +echo "--- Building Element" scripts/ci/layered-riot-web.sh cd ../riot-web riot_web_dir=`pwd` diff --git a/scripts/gen-i18n.js b/scripts/gen-i18n.js index c30ac62e3b..91733469f7 100755 --- a/scripts/gen-i18n.js +++ b/scripts/gen-i18n.js @@ -217,7 +217,7 @@ function getTranslationsOther(file) { const trs = new Set(); - // Taken from riot-web src/components/structures/HomePage.js + // Taken from element-web src/components/structures/HomePage.js const translationsRegex = /_t\(['"]([\s\S]*?)['"]\)/mg; let matches; while (matches = translationsRegex.exec(contents)) { diff --git a/src/AsyncWrapper.js b/src/AsyncWrapper.js index 05054cf63a..94de5df214 100644 --- a/src/AsyncWrapper.js +++ b/src/AsyncWrapper.js @@ -41,7 +41,7 @@ export default createReactClass({ componentDidMount: function() { this._unmounted = false; // XXX: temporary logging to try to diagnose - // https://github.com/vector-im/riot-web/issues/3148 + // https://github.com/vector-im/element-web/issues/3148 console.log('Starting load of AsyncWrapper for modal'); this.props.prom.then((result) => { if (this._unmounted) { diff --git a/src/CallHandler.js b/src/CallHandler.js index d5e058ef1e..18f6aeb98a 100644 --- a/src/CallHandler.js +++ b/src/CallHandler.js @@ -90,7 +90,7 @@ function play(audioId) { // This is usually because the user hasn't interacted with the document, // or chrome doesn't think so and is denying the request. Not sure what // we can really do here... - // https://github.com/vector-im/riot-web/issues/7657 + // https://github.com/vector-im/element-web/issues/7657 console.log("Unable to play audio clip", e); } }; @@ -474,15 +474,15 @@ const callHandler = { /** * The conference handler is a module that deals with implementation-specific - * multi-party calling implementations. Riot passes in its own which creates + * multi-party calling implementations. Element passes in its own which creates * a one-to-one call with a freeswitch conference bridge. As of July 2018, * the de-facto way of conference calling is a Jitsi widget, so this is * deprecated. It reamins here for two reasons: - * 1. So Riot still supports joining existing freeswitch conference calls + * 1. So Element still supports joining existing freeswitch conference calls * (but doesn't support creating them). After a transition period, we can * remove support for joining them too. * 2. To hide the one-to-one rooms that old-style conferencing creates. This - * is much harder to remove: probably either we make Riot leave & forget these + * is much harder to remove: probably either we make Element leave & forget these * rooms after we remove support for joining freeswitch conferences, or we * accept that random rooms with cryptic users will suddently appear for * anyone who's ever used conference calling, or we are stuck with this diff --git a/src/IdentityAuthClient.js b/src/IdentityAuthClient.js index 4a830d6506..fbdb6812ee 100644 --- a/src/IdentityAuthClient.js +++ b/src/IdentityAuthClient.js @@ -177,7 +177,7 @@ export default class IdentityAuthClient { // appropriately. We already clear storage on sign out, but we'll need // additional clearing when changing ISes in settings as part of future // privacy work. - // See also https://github.com/vector-im/riot-web/issues/10455. + // See also https://github.com/vector-im/element-web/issues/10455. } async registerForToken(check=true) { diff --git a/src/Markdown.js b/src/Markdown.js index d312b7c5bd..e57507b4de 100644 --- a/src/Markdown.js +++ b/src/Markdown.js @@ -99,7 +99,7 @@ export default class Markdown { // puts softbreaks in for multiple lines in a blockquote, // so if these are just newline characters then the // block quote ends up all on one line - // (https://github.com/vector-im/riot-web/issues/3154) + // (https://github.com/vector-im/element-web/issues/3154) softbreak: '
', }); @@ -166,7 +166,7 @@ export default class Markdown { * Render the markdown message to plain text. That is, essentially * just remove any backslashes escaping what would otherwise be * markdown syntax - * (to fix https://github.com/vector-im/riot-web/issues/2870). + * (to fix https://github.com/vector-im/element-web/issues/2870). * * N.B. this does **NOT** render arbitrary MD to plain text - only MD * which has no formatting. Otherwise it emits HTML(!). diff --git a/src/Modal.tsx b/src/Modal.tsx index b744dbacf4..82ed33b794 100644 --- a/src/Modal.tsx +++ b/src/Modal.tsx @@ -319,7 +319,7 @@ export class ModalManager { private reRender() { if (this.modals.length === 0 && !this.priorityModal && !this.staticModal) { - // If there is no modal to render, make all of Riot available + // If there is no modal to render, make all of Element available // to screen reader users again dis.dispatch({ action: 'aria_unhide_main_app', diff --git a/src/Registration.js b/src/Registration.js index 32c3d9cc35..9c0264c067 100644 --- a/src/Registration.js +++ b/src/Registration.js @@ -52,7 +52,7 @@ export async function startAnyRegistrationFlow(options) { // caution though. // XXX: ILAG is disabled for now, - // see https://github.com/vector-im/riot-web/issues/8222 + // see https://github.com/vector-im/element-web/issues/8222 // const flows = await _getRegistrationFlows(); // const hasIlagFlow = flows.some((flow) => { diff --git a/src/Resend.js b/src/Resend.js index f5f24bffa5..5638313306 100644 --- a/src/Resend.js +++ b/src/Resend.js @@ -45,7 +45,7 @@ export default class Resend { }); }, function(err) { // XXX: temporary logging to try to diagnose - // https://github.com/vector-im/riot-web/issues/3148 + // https://github.com/vector-im/element-web/issues/3148 console.log('Resend got send failure: ' + err.name + '(' + err + ')'); dis.dispatch({ diff --git a/src/ScalarMessaging.js b/src/ScalarMessaging.js index b33aa57359..896e27d92c 100644 --- a/src/ScalarMessaging.js +++ b/src/ScalarMessaging.js @@ -174,7 +174,7 @@ Request: Response: [ { - // TODO: Enable support for m.widget event type (https://github.com/vector-im/riot-web/issues/13111) + // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) type: "im.vector.modular.widgets", state_key: "wid1", content: { @@ -193,7 +193,7 @@ Example: room_id: "!foo:bar", response: [ { - // TODO: Enable support for m.widget event type (https://github.com/vector-im/riot-web/issues/13111) + // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) type: "im.vector.modular.widgets", state_key: "wid1", content: { diff --git a/src/SlashCommands.tsx b/src/SlashCommands.tsx index ad3dc7002a..2063ad3149 100644 --- a/src/SlashCommands.tsx +++ b/src/SlashCommands.tsx @@ -479,7 +479,7 @@ export const Commands = [ const parsedUrl = new URL(params[0]); const hostname = parsedUrl.host || parsedUrl.hostname; // takes first non-falsey value - // if we're using a Riot permalink handler, this will catch it before we get much further. + // if we're using a Element permalink handler, this will catch it before we get much further. // see below where we make assumptions about parsing the URL. if (isPermalinkHost(hostname)) { isPermalink = true; diff --git a/src/TextForEvent.js b/src/TextForEvent.js index 3607d7a676..c55380bd9b 100644 --- a/src/TextForEvent.js +++ b/src/TextForEvent.js @@ -345,7 +345,7 @@ function textForCallHangupEvent(event) { } else if (eventContent.reason === "invite_timeout") { reason = _t('(no answer)'); } else if (eventContent.reason === "user hangup") { - // workaround for https://github.com/vector-im/riot-web/issues/5178 + // workaround for https://github.com/vector-im/element-web/issues/5178 // it seems Android randomly sets a reason of "user hangup" which is // interpreted as an error code :( // https://github.com/vector-im/riot-android/issues/2623 @@ -603,7 +603,7 @@ const stateHandlers = { 'm.room.guest_access': textForGuestAccessEvent, 'm.room.related_groups': textForRelatedGroupsEvent, - // TODO: Enable support for m.widget event type (https://github.com/vector-im/riot-web/issues/13111) + // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) 'im.vector.modular.widgets': textForWidgetEvent, }; diff --git a/src/Tinter.js b/src/Tinter.js index 24a4d25a00..ca5a460e16 100644 --- a/src/Tinter.js +++ b/src/Tinter.js @@ -327,7 +327,7 @@ class Tinter { // Vector Green as its primary color? // --richvdh - // Yes, tinting assumes that you are using the Riot skin for now. + // Yes, tinting assumes that you are using the Element skin for now. // The right solution will be to move the CSS over to react-sdk. // And yes, the default assets for the base skin might as well use // Vector Green as any other colour. diff --git a/src/Unread.js b/src/Unread.js index ca713b05e4..cf131cac00 100644 --- a/src/Unread.js +++ b/src/Unread.js @@ -52,10 +52,10 @@ export function doesRoomHaveUnreadMessages(room) { // as we don't send RRs for our own messages, make sure we special case that // if *we* sent the last message into the room, we consider it not unread! - // Should fix: https://github.com/vector-im/riot-web/issues/3263 - // https://github.com/vector-im/riot-web/issues/2427 + // Should fix: https://github.com/vector-im/element-web/issues/3263 + // https://github.com/vector-im/element-web/issues/2427 // ...and possibly some of the others at - // https://github.com/vector-im/riot-web/issues/3363 + // https://github.com/vector-im/element-web/issues/3363 if (room.timeline.length && room.timeline[room.timeline.length - 1].sender && room.timeline[room.timeline.length - 1].sender.userId === myUserId) { diff --git a/src/VectorConferenceHandler.js b/src/VectorConferenceHandler.js index 180dad876b..c10bc659ae 100644 --- a/src/VectorConferenceHandler.js +++ b/src/VectorConferenceHandler.js @@ -19,13 +19,13 @@ import {createNewMatrixCall as jsCreateNewMatrixCall, Room} from "matrix-js-sdk" import CallHandler from './CallHandler'; import {MatrixClientPeg} from "./MatrixClientPeg"; -// FIXME: this is Riot (Vector) specific code, but will be removed shortly when -// we switch over to jitsi entirely for video conferencing. +// FIXME: this is Element specific code, but will be removed shortly when we +// switch over to Jitsi entirely for video conferencing. -// FIXME: This currently forces Vector to try to hit the matrix.org AS for conferencing. -// This is bad because it prevents people running their own ASes from being used. -// This isn't permanent and will be customisable in the future: see the proposal -// at docs/conferencing.md for more info. +// FIXME: This currently forces Element to try to hit the matrix.org AS for +// conferencing. This is bad because it prevents people running their own ASes +// from being used. This isn't permanent and will be customisable in the future: +// see the proposal at docs/conferencing.md for more info. const USER_PREFIX = "fs_"; const DOMAIN = "matrix.org"; diff --git a/src/WidgetMessaging.js b/src/WidgetMessaging.js index c89a0ceeeb..6aed08c39d 100644 --- a/src/WidgetMessaging.js +++ b/src/WidgetMessaging.js @@ -76,7 +76,7 @@ export default class WidgetMessaging { console.error(err._error); } // Potential XSS attack if 'msg' is not appropriately sanitized, - // as it is untrusted input by our parent window (which we assume is Riot). + // as it is untrusted input by our parent window (which we assume is Element). // We can't aggressively sanitize [A-z0-9] since it might be a translation. throw new Error(msg); } diff --git a/src/async-components/views/dialogs/ExportE2eKeysDialog.js b/src/async-components/views/dialogs/ExportE2eKeysDialog.js index 7ec9da39de..a92578a547 100644 --- a/src/async-components/views/dialogs/ExportE2eKeysDialog.js +++ b/src/async-components/views/dialogs/ExportE2eKeysDialog.js @@ -84,7 +84,7 @@ export default createReactClass({ const blob = new Blob([f], { type: 'text/plain;charset=us-ascii', }); - FileSaver.saveAs(blob, 'riot-keys.txt'); + FileSaver.saveAs(blob, 'element-keys.txt'); this.props.onFinished(true); }).catch((e) => { console.error("Error exporting e2e keys:", e); diff --git a/src/async-components/views/dialogs/keybackup/CreateKeyBackupDialog.js b/src/async-components/views/dialogs/keybackup/CreateKeyBackupDialog.js index 79fbb98c7b..c3aef9109a 100644 --- a/src/async-components/views/dialogs/keybackup/CreateKeyBackupDialog.js +++ b/src/async-components/views/dialogs/keybackup/CreateKeyBackupDialog.js @@ -286,7 +286,7 @@ export default class CreateKeyBackupDialog extends React.PureComponent { changeText = _t("Use a different passphrase?"); } else if (!this.state.passPhrase.startsWith(this.state.passPhraseConfirm)) { // only tell them they're wrong if they've actually gone wrong. - // Security concious readers will note that if you left riot-web unattended + // Security concious readers will note that if you left element-web unattended // on this screen, this would make it easy for a malicious person to guess // your passphrase one letter at a time, but they could get this faster by // just opening the browser's developer tools and reading it. diff --git a/src/async-components/views/dialogs/secretstorage/CreateSecretStorageDialog.js b/src/async-components/views/dialogs/secretstorage/CreateSecretStorageDialog.js index 4cef817a38..53b3033330 100644 --- a/src/async-components/views/dialogs/secretstorage/CreateSecretStorageDialog.js +++ b/src/async-components/views/dialogs/secretstorage/CreateSecretStorageDialog.js @@ -480,7 +480,7 @@ export default class CreateSecretStorageDialog extends React.PureComponent { // click the button are aware they're making a change to their account. // Once we're confident enough in this (and it's supported enough) we can do // it automatically. - // https://github.com/vector-im/riot-web/issues/11696 + // https://github.com/vector-im/element-web/issues/11696 const Field = sdk.getComponent('views.elements.Field'); let authPrompt; @@ -575,7 +575,7 @@ export default class CreateSecretStorageDialog extends React.PureComponent { changeText = _t("Use a different passphrase?"); } else if (!this.state.passPhrase.startsWith(this.state.passPhraseConfirm)) { // only tell them they're wrong if they've actually gone wrong. - // Security concious readers will note that if you left riot-web unattended + // Security concious readers will note that if you left element-web unattended // on this screen, this would make it easy for a malicious person to guess // your passphrase one letter at a time, but they could get this faster by // just opening the browser's developer tools and reading it. diff --git a/src/autocomplete/CommunityProvider.tsx b/src/autocomplete/CommunityProvider.tsx index d7eac59f91..f34fee890e 100644 --- a/src/autocomplete/CommunityProvider.tsx +++ b/src/autocomplete/CommunityProvider.tsx @@ -53,7 +53,7 @@ export default class CommunityProvider extends AutocompleteProvider { const BaseAvatar = sdk.getComponent('views.avatars.BaseAvatar'); // Disable autocompletions when composing commands because of various issues - // (see https://github.com/vector-im/riot-web/issues/4762) + // (see https://github.com/vector-im/element-web/issues/4762) if (/^(\/join|\/leave)/.test(query)) { return []; } diff --git a/src/components/structures/HomePage.tsx b/src/components/structures/HomePage.tsx index 7414a44f11..a42032c9fe 100644 --- a/src/components/structures/HomePage.tsx +++ b/src/components/structures/HomePage.tsx @@ -46,8 +46,8 @@ const HomePage = () => { const AccessibleButton = sdk.getComponent("elements.AccessibleButton"); return
- {config.brand -

{ _t("Welcome to %(appName)s", { appName: config.brand || "Riot" }) }

+ {config.brand +

{ _t("Welcome to %(appName)s", { appName: config.brand || "Element" }) }

{ _t("Liberate your communication") }

diff --git a/src/components/structures/IndicatorScrollbar.js b/src/components/structures/IndicatorScrollbar.js index 27f7fbb301..cd5510de9d 100644 --- a/src/components/structures/IndicatorScrollbar.js +++ b/src/components/structures/IndicatorScrollbar.js @@ -158,7 +158,7 @@ export default class IndicatorScrollbar extends React.Component { } // don't mess with the horizontal scroll for trackpad users - // See https://github.com/vector-im/riot-web/issues/10005 + // See https://github.com/vector-im/element-web/issues/10005 if (this._likelyTrackpadUser) { return; } diff --git a/src/components/structures/InteractiveAuth.js b/src/components/structures/InteractiveAuth.js index 351e3bbad0..fa7860ccef 100644 --- a/src/components/structures/InteractiveAuth.js +++ b/src/components/structures/InteractiveAuth.js @@ -203,7 +203,7 @@ export default createReactClass({ // the UI layer, so we ignore this signal and show a spinner until // there's a new screen to show the user. This is implemented by setting // `busy: false` in `_authStateUpdated`. - // See also https://github.com/vector-im/riot-web/issues/12546 + // See also https://github.com/vector-im/element-web/issues/12546 }, _setFocus: function() { diff --git a/src/components/structures/LoggedInView.tsx b/src/components/structures/LoggedInView.tsx index 48669a3721..d7f2c73a0b 100644 --- a/src/components/structures/LoggedInView.tsx +++ b/src/components/structures/LoggedInView.tsx @@ -596,7 +596,7 @@ class LoggedInView extends React.Component { const maxRadius = 5; // People shouldn't be straying too far, hopefully // Note: we track how far the user moved their mouse to help - // combat against https://github.com/vector-im/riot-web/issues/7158 + // combat against https://github.com/vector-im/element-web/issues/7158 if (distance < maxRadius) { // This is probably a real click, and not a drag diff --git a/src/components/structures/MatrixChat.tsx b/src/components/structures/MatrixChat.tsx index a66d4c043f..ce96847d28 100644 --- a/src/components/structures/MatrixChat.tsx +++ b/src/components/structures/MatrixChat.tsx @@ -415,7 +415,7 @@ export default class MatrixChat extends React.PureComponent { return; } this.pageChanging = true; - performance.mark('riot_MatrixChat_page_change_start'); + performance.mark('element_MatrixChat_page_change_start'); } stopPageChangeTimer() { @@ -427,15 +427,15 @@ export default class MatrixChat extends React.PureComponent { return; } this.pageChanging = false; - performance.mark('riot_MatrixChat_page_change_stop'); + performance.mark('element_MatrixChat_page_change_stop'); performance.measure( - 'riot_MatrixChat_page_change_delta', - 'riot_MatrixChat_page_change_start', - 'riot_MatrixChat_page_change_stop', + 'element_MatrixChat_page_change_delta', + 'element_MatrixChat_page_change_start', + 'element_MatrixChat_page_change_stop', ); - performance.clearMarks('riot_MatrixChat_page_change_start'); - performance.clearMarks('riot_MatrixChat_page_change_stop'); - const measurement = performance.getEntriesByName('riot_MatrixChat_page_change_delta').pop(); + performance.clearMarks('element_MatrixChat_page_change_start'); + performance.clearMarks('element_MatrixChat_page_change_stop'); + const measurement = performance.getEntriesByName('element_MatrixChat_page_change_delta').pop(); // In practice, sometimes the entries list is empty, so we get no measurement if (!measurement) return null; @@ -1323,7 +1323,7 @@ export default class MatrixChat extends React.PureComponent { // state (each of which can be 10s of MBs) for each DISJOINT timeline. This is // particularly noticeable when there are lots of 'limited' /sync responses // such as when laptops unsleep. - // https://github.com/vector-im/riot-web/issues/3307#issuecomment-282895568 + // https://github.com/vector-im/element-web/issues/3307#issuecomment-282895568 cli.setCanResetTimelineCallback((roomId) => { console.log("Request to reset timeline in room ", roomId, " viewing:", this.state.currentRoomId); if (roomId !== this.state.currentRoomId) { @@ -1661,7 +1661,7 @@ export default class MatrixChat extends React.PureComponent { // of the app, we coerce the eventId to be undefined where applicable. if (!eventId) eventId = undefined; - // TODO: Handle encoded room/event IDs: https://github.com/vector-im/riot-web/issues/9149 + // TODO: Handle encoded room/event IDs: https://github.com/vector-im/element-web/issues/9149 // FIXME: sort_out caseConsistency const thirdPartyInvite = { @@ -1935,7 +1935,7 @@ export default class MatrixChat extends React.PureComponent { let fragmentAfterLogin = ""; const initialScreenAfterLogin = this.props.initialScreenAfterLogin; if (initialScreenAfterLogin && - // XXX: workaround for https://github.com/vector-im/riot-web/issues/11643 causing a login-loop + // XXX: workaround for https://github.com/vector-im/element-web/issues/11643 causing a login-loop !["welcome", "login", "register", "start_sso", "start_cas"].includes(initialScreenAfterLogin.screen) ) { fragmentAfterLogin = `/${initialScreenAfterLogin.screen}`; diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js index f585a97fde..9a61523941 100644 --- a/src/components/structures/RoomView.js +++ b/src/components/structures/RoomView.js @@ -251,7 +251,7 @@ export default createReactClass({ this.context.stopPeeking(); } - // Temporary logging to diagnose https://github.com/vector-im/riot-web/issues/4307 + // Temporary logging to diagnose https://github.com/vector-im/element-web/issues/4307 console.log( 'RVS update:', newState.roomId, @@ -1078,7 +1078,7 @@ export default createReactClass({ // Do this by indicating our intention to join // XXX: ILAG is disabled for now, - // see https://github.com/vector-im/riot-web/issues/8222 + // see https://github.com/vector-im/element-web/issues/8222 dis.dispatch({action: 'require_registration'}); // dis.dispatch({ // action: 'will_join', diff --git a/src/components/structures/TagPanel.js b/src/components/structures/TagPanel.js index 713ed004b0..4f8a051e62 100644 --- a/src/components/structures/TagPanel.js +++ b/src/components/structures/TagPanel.js @@ -141,7 +141,7 @@ const TagPanel = createReactClass({ { ev.preventDefault(); ev.stopPropagation(); - // TODO: Archived room view: https://github.com/vector-im/riot-web/issues/14038 + // TODO: Archived room view: https://github.com/vector-im/element-web/issues/14038 // Note: You'll need to uncomment the button too. console.log("TODO: Show archived rooms"); }; diff --git a/src/components/structures/auth/Login.js b/src/components/structures/auth/Login.js index e65a223bd6..3bc363f863 100644 --- a/src/components/structures/auth/Login.js +++ b/src/components/structures/auth/Login.js @@ -285,7 +285,7 @@ export default createReactClass({ // We'd like to rely on new props coming in via `onServerConfigChange` // so that we know the servers have definitely updated before clearing // the busy state. In the case of a full MXID that resolves to the same - // HS as Riot's default HS though, there may not be any server change. + // HS as Element's default HS though, there may not be any server change. // To avoid this trap, we clear busy here. For cases where the server // actually has changed, `_initLoginLogic` will be called and manages // busy state for its own liveness check. @@ -615,8 +615,8 @@ export default createReactClass({ } // XXX: This link does *not* have a target="_blank" because single sign-on relies on // redirecting the user back to a URI once they're logged in. On the web, this means - // we use the same window and redirect back to riot. On electron, this actually - // opens the SSO page in the electron app itself due to + // we use the same window and redirect back to Element. On Electron, this actually + // opens the SSO page in the Electron app itself due to // https://github.com/electron/electron/issues/8841 and so happens to work. // If this bug gets fixed, it will break SSO since it will open the SSO page in the // user's browser, let them log into their SSO provider, then redirect their browser diff --git a/src/components/structures/auth/Registration.js b/src/components/structures/auth/Registration.js index 3b5f5676dc..13e48f6287 100644 --- a/src/components/structures/auth/Registration.js +++ b/src/components/structures/auth/Registration.js @@ -262,7 +262,7 @@ export default createReactClass({ // the user off to the login page to figure their account out. try { const loginLogic = new Login(hsUrl, isUrl, null, { - defaultDeviceDisplayName: "riot login check", // We shouldn't ever be used + defaultDeviceDisplayName: "Element login check", // We shouldn't ever be used }); const flows = await loginLogic.getFlows(); const hasSsoFlow = flows.find(f => f.type === 'm.login.sso' || f.type === 'm.login.cas'); diff --git a/src/components/structures/auth/SetupEncryptionBody.js b/src/components/structures/auth/SetupEncryptionBody.js index 5b1f025dfb..6d090936e5 100644 --- a/src/components/structures/auth/SetupEncryptionBody.js +++ b/src/components/structures/auth/SetupEncryptionBody.js @@ -152,7 +152,7 @@ export default class SetupEncryptionBody extends React.Component {
{_t("%(brand)s iOS", { brand })}
-
{_t("%(brand)s X for Android", { brand })}
+
{_t("%(brand)s Android", { brand })}

{_t("or another cross-signing capable Matrix client")}

diff --git a/src/components/views/auth/InteractiveAuthEntryComponents.js b/src/components/views/auth/InteractiveAuthEntryComponents.js index f6bc1b8ae7..7080eb3602 100644 --- a/src/components/views/auth/InteractiveAuthEntryComponents.js +++ b/src/components/views/auth/InteractiveAuthEntryComponents.js @@ -109,7 +109,7 @@ export const PasswordAuthEntry = createReactClass({ this.props.submitAuthDict({ type: PasswordAuthEntry.LOGIN_TYPE, // TODO: Remove `user` once servers support proper UIA - // See https://github.com/vector-im/riot-web/issues/10312 + // See https://github.com/vector-im/element-web/issues/10312 user: this.props.matrixClient.credentials.userId, identifier: { type: "m.id.user", @@ -538,7 +538,7 @@ export const MsisdnAuthEntry = createReactClass({ this.props.submitAuthDict({ type: MsisdnAuthEntry.LOGIN_TYPE, // TODO: Remove `threepid_creds` once servers support proper UIA - // See https://github.com/vector-im/riot-web/issues/10312 + // See https://github.com/vector-im/element-web/issues/10312 // See https://github.com/matrix-org/matrix-doc/issues/2220 threepid_creds: creds, threepidCreds: creds, diff --git a/src/components/views/dialogs/BugReportDialog.js b/src/components/views/dialogs/BugReportDialog.js index 9bb716fe3f..f48d9c502d 100644 --- a/src/components/views/dialogs/BugReportDialog.js +++ b/src/components/views/dialogs/BugReportDialog.js @@ -166,7 +166,7 @@ export default class BugReportDialog extends React.Component { { a: (sub) => { sub } , @@ -179,7 +179,7 @@ export default class BugReportDialog extends React.Component { label={_t("GitHub issue")} onChange={this._onIssueUrlChange} value={this.state.issueUrl} - placeholder="https://github.com/vector-im/riot-web/issues/..." + placeholder="https://github.com/vector-im/element-web/issues/..." /> { - const existingIssuesUrl = "https://github.com/vector-im/riot-web/issues" + + const existingIssuesUrl = "https://github.com/vector-im/element-web/issues" + "?q=is%3Aopen+is%3Aissue+sort%3Areactions-%2B1-desc"; - const newIssueUrl = "https://github.com/vector-im/riot-web/issues/new"; + const newIssueUrl = "https://github.com/vector-im/element-web/issues/new"; const description1 = _t("If you run into any bugs or have feedback you'd like to share, " + diff --git a/src/components/views/elements/AppTile.js b/src/components/views/elements/AppTile.js index d0fc56743f..63b087f35f 100644 --- a/src/components/views/elements/AppTile.js +++ b/src/components/views/elements/AppTile.js @@ -361,14 +361,14 @@ export default class AppTile extends React.Component { return terminationPromise.finally(() => { // HACK: This is a really dirty way to ensure that Jitsi cleans up // its hold on the webcam. Without this, the widget holds a media - // stream open, even after death. See https://github.com/vector-im/riot-web/issues/7351 + // stream open, even after death. See https://github.com/vector-im/element-web/issues/7351 if (this._appFrame.current) { // In practice we could just do `+= ''` to trick the browser // into thinking the URL changed, however I can foresee this // being optimized out by a browser. Instead, we'll just point // the iframe at a page that is reasonably safe to use in the // event the iframe doesn't wink away. - // This is relative to where the Riot instance is located. + // This is relative to where the Element instance is located. this._appFrame.current.src = 'about:blank'; } @@ -727,7 +727,7 @@ export default class AppTile extends React.Component { // Note that there is advice saying allow-scripts shouldn't be used with allow-same-origin // because that would allow the iframe to programmatically remove the sandbox attribute, but - // this would only be for content hosted on the same origin as the riot client: anything + // this would only be for content hosted on the same origin as the element client: anything // hosted on the same origin as the client will get the same access as if you clicked // a link to it. const sandboxFlags = "allow-forms allow-popups allow-popups-to-escape-sandbox "+ @@ -924,7 +924,7 @@ AppTile.propTypes = { // Optionally show the reload widget icon // This is not currently intended for use with production widgets. However // it can be useful when developing persistent widgets in order to avoid - // having to reload all of riot to get new widget content. + // having to reload all of Element to get new widget content. showReload: PropTypes.bool, // Widget capabilities to allow by default (without user confirmation) // NOTE -- Use with caution. This is intended to aid better integration / UX diff --git a/src/components/views/elements/ErrorBoundary.js b/src/components/views/elements/ErrorBoundary.js index a043b350ab..68bec667d8 100644 --- a/src/components/views/elements/ErrorBoundary.js +++ b/src/components/views/elements/ErrorBoundary.js @@ -72,7 +72,7 @@ export default class ErrorBoundary extends React.PureComponent { render() { if (this.state.error) { const AccessibleButton = sdk.getComponent('elements.AccessibleButton'); - const newIssueUrl = "https://github.com/vector-im/riot-web/issues/new"; + const newIssueUrl = "https://github.com/vector-im/element-web/issues/new"; return

{_t("Something went wrong!")}

diff --git a/src/components/views/groups/GroupTile.js b/src/components/views/groups/GroupTile.js index 44ce69ee39..906bcbaf99 100644 --- a/src/components/views/groups/GroupTile.js +++ b/src/components/views/groups/GroupTile.js @@ -126,7 +126,7 @@ const GroupTile = createReactClass({ } // XXX: Use onMouseDown as a workaround for https://github.com/atlassian/react-beautiful-dnd/issues/273 - // instead of onClick. Otherwise we experience https://github.com/vector-im/riot-web/issues/6156 + // instead of onClick. Otherwise we experience https://github.com/vector-im/element-web/issues/6156 return { avatarElement }
diff --git a/src/components/views/right_panel/VerificationPanel.tsx b/src/components/views/right_panel/VerificationPanel.tsx index 9cb7f54dd8..1f0703839f 100644 --- a/src/components/views/right_panel/VerificationPanel.tsx +++ b/src/components/views/right_panel/VerificationPanel.tsx @@ -208,7 +208,7 @@ export default class VerificationPanel extends React.PureComponent { const alias = this.state.localAliases[index]; // TODO: In future, we should probably be making sure that the alias actually belongs - // to this room. See https://github.com/vector-im/riot-web/issues/7353 + // to this room. See https://github.com/vector-im/element-web/issues/7353 MatrixClientPeg.get().deleteAlias(alias).then(() => { const localAliases = this.state.localAliases.filter(a => a !== alias); this.setState({localAliases}); diff --git a/src/components/views/room_settings/ColorSettings.js b/src/components/views/room_settings/ColorSettings.js index 4e8b6ba42f..2179bd905e 100644 --- a/src/components/views/room_settings/ColorSettings.js +++ b/src/components/views/room_settings/ColorSettings.js @@ -39,7 +39,7 @@ const ROOM_COLORS = [ // Dev note: this component is not attached anywhere, but is left here as it // has a high possibility of being used in the nearish future. -// Ref: https://github.com/vector-im/riot-web/issues/8421 +// Ref: https://github.com/vector-im/element-web/issues/8421 export default createReactClass({ displayName: 'ColorSettings', diff --git a/src/components/views/rooms/BasicMessageComposer.tsx b/src/components/views/rooms/BasicMessageComposer.tsx index 2a909bdd26..58dd82341e 100644 --- a/src/components/views/rooms/BasicMessageComposer.tsx +++ b/src/components/views/rooms/BasicMessageComposer.tsx @@ -242,7 +242,7 @@ export default class BasicMessageEditor extends React.Component // so trigger a model update after the composition is done by calling the input handler. // however, modifying the DOM (caused by the editor model update) from the compositionend handler seems - // to confuse the IME in Chrome, likely causing https://github.com/vector-im/riot-web/issues/10913 , + // to confuse the IME in Chrome, likely causing https://github.com/vector-im/element-web/issues/10913 , // so we do it async // however, doing this async seems to break things in Safari for some reason, so browser sniff. @@ -273,7 +273,7 @@ export default class BasicMessageEditor extends React.Component const {model} = this.props; const range = getRangeForSelection(this.editorRef.current, model, selection); const selectedParts = range.parts.map(p => p.serialize()); - event.clipboardData.setData("application/x-riot-composer", JSON.stringify(selectedParts)); + event.clipboardData.setData("application/x-element-composer", JSON.stringify(selectedParts)); event.clipboardData.setData("text/plain", text); // so plain copy/paste works if (type === "cut") { // Remove the text, updating the model as appropriate @@ -301,7 +301,7 @@ export default class BasicMessageEditor extends React.Component const {model} = this.props; const {partCreator} = model; - const partsText = event.clipboardData.getData("application/x-riot-composer"); + const partsText = event.clipboardData.getData("application/x-element-composer"); let parts; if (partsText) { const serializedTextParts = JSON.parse(partsText); diff --git a/src/components/views/rooms/EventTile.js b/src/components/views/rooms/EventTile.js index 13554eb3d6..2f00447287 100644 --- a/src/components/views/rooms/EventTile.js +++ b/src/components/views/rooms/EventTile.js @@ -60,7 +60,7 @@ const stateEventTileTypes = { 'm.room.power_levels': 'messages.TextualEvent', 'm.room.pinned_events': 'messages.TextualEvent', 'm.room.server_acl': 'messages.TextualEvent', - // TODO: Enable support for m.widget event type (https://github.com/vector-im/riot-web/issues/13111) + // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) 'im.vector.modular.widgets': 'messages.TextualEvent', 'm.room.tombstone': 'messages.TextualEvent', 'm.room.join_rules': 'messages.TextualEvent', @@ -519,7 +519,7 @@ export default createReactClass({ onPermalinkClicked: function(e) { // This allows the permalink to be opened in a new tab/window or copied as - // matrix.to, but also for it to enable routing within Riot when clicked. + // matrix.to, but also for it to enable routing within Element when clicked. e.preventDefault(); dis.dispatch({ action: 'view_room', @@ -595,11 +595,11 @@ export default createReactClass({ } const eventId = this.props.mxEvent.getId(); if (!eventId) { - // XXX: Temporary diagnostic logging for https://github.com/vector-im/riot-web/issues/11120 + // XXX: Temporary diagnostic logging for https://github.com/vector-im/element-web/issues/11120 console.error("EventTile attempted to get relations for an event without an ID"); // Use event's special `toJSON` method to log key data. console.log(JSON.stringify(this.props.mxEvent, null, 4)); - console.trace("Stacktrace for https://github.com/vector-im/riot-web/issues/11120"); + console.trace("Stacktrace for https://github.com/vector-im/element-web/issues/11120"); } return this.props.getRelationsForEvent(eventId, "m.annotation", "m.reaction"); }, diff --git a/src/components/views/rooms/NotificationBadge.tsx b/src/components/views/rooms/NotificationBadge.tsx index ab6ec3fbed..8253940d4e 100644 --- a/src/components/views/rooms/NotificationBadge.tsx +++ b/src/components/views/rooms/NotificationBadge.tsx @@ -97,7 +97,7 @@ export default class NotificationBadge extends React.PureComponent { private updateLists = () => { const newLists = RoomListStore.instance.orderedLists; if (SettingsStore.getValue("advancedRoomListLogging")) { - // TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602 + // TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602 console.log("new lists", newLists); } @@ -256,7 +256,7 @@ export default class RoomList extends React.PureComponent { private renderCommunityInvites(): TemporaryTile[] { // TODO: Put community invites in a more sensible place (not in the room list) - // See https://github.com/vector-im/riot-web/issues/14456 + // See https://github.com/vector-im/element-web/issues/14456 return MatrixClientPeg.get().getGroups().filter(g => { return g.myMembership === 'invite'; }).map(g => { diff --git a/src/components/views/rooms/RoomPreviewBar.js b/src/components/views/rooms/RoomPreviewBar.js index 9aa78fbbfd..d52bbbb0d0 100644 --- a/src/components/views/rooms/RoomPreviewBar.js +++ b/src/components/views/rooms/RoomPreviewBar.js @@ -511,7 +511,7 @@ export default createReactClass({ "If you think you're seeing this message in error, please " + "submit a bug report.", { errcode: this.props.error.errcode }, - { issueLink: label => { label } }, ), ]; diff --git a/src/components/views/rooms/RoomSublist.tsx b/src/components/views/rooms/RoomSublist.tsx index f6d0d1c22e..c8ebac9318 100644 --- a/src/components/views/rooms/RoomSublist.tsx +++ b/src/components/views/rooms/RoomSublist.tsx @@ -74,7 +74,7 @@ interface IProps { // You should feel bad if you use this. extraBadTilesThatShouldntExist?: TemporaryTile[]; - // TODO: Account for https://github.com/vector-im/riot-web/issues/14179 + // TODO: Account for https://github.com/vector-im/element-web/issues/14179 } // TODO: Use re-resizer's NumberSize when it is exposed as the type @@ -703,7 +703,7 @@ export default class RoomSublist extends React.Component { private onScrollPrevent(e: React.UIEvent) { // the RoomTile calls scrollIntoView and the browser may scroll a div we do not wish to be scrollable - // this fixes https://github.com/vector-im/riot-web/issues/14413 + // this fixes https://github.com/vector-im/element-web/issues/14413 (e.target as HTMLDivElement).scrollTop = 0; } diff --git a/src/components/views/rooms/TemporaryTile.tsx b/src/components/views/rooms/TemporaryTile.tsx index fefcb654ba..a61ff6e1da 100644 --- a/src/components/views/rooms/TemporaryTile.tsx +++ b/src/components/views/rooms/TemporaryTile.tsx @@ -38,7 +38,7 @@ interface IState { hover: boolean; } -// TODO: Remove with community invites in the room list: https://github.com/vector-im/riot-web/issues/14456 +// TODO: Remove with community invites in the room list: https://github.com/vector-im/element-web/issues/14456 export default class TemporaryTile extends React.Component { constructor(props: IProps) { super(props); diff --git a/src/components/views/settings/ChangePassword.js b/src/components/views/settings/ChangePassword.js index a4ff65d8f9..47fcae5c6f 100644 --- a/src/components/views/settings/ChangePassword.js +++ b/src/components/views/settings/ChangePassword.js @@ -119,8 +119,8 @@ export default createReactClass({ 'In future this will be improved.', ) } {' '} - - https://github.com/vector-im/riot-web/issues/2671 + + https://github.com/vector-im/element-web/issues/2671
, button: _t("Continue"), diff --git a/src/components/views/settings/EventIndexPanel.js b/src/components/views/settings/EventIndexPanel.js index 35c751d91e..8598a2a966 100644 --- a/src/components/views/settings/EventIndexPanel.js +++ b/src/components/views/settings/EventIndexPanel.js @@ -160,7 +160,7 @@ export default class EventIndexPanel extends React.Component { ); } else if (EventIndexPeg.platformHasSupport() && !EventIndexPeg.supportIsInstalled()) { const nativeLink = ( - "https://github.com/vector-im/riot-web/blob/develop/" + + "https://github.com/vector-im/element-web/blob/develop/" + "docs/native-node-modules.md#" + "adding-seshat-for-search-in-e2e-encrypted-rooms" ); @@ -194,7 +194,7 @@ export default class EventIndexPanel extends React.Component { brand, }, { - 'desktopLink': (sub) => {sub}, }, ) diff --git a/src/components/views/settings/tabs/room/RolesRoomSettingsTab.js b/src/components/views/settings/tabs/room/RolesRoomSettingsTab.js index b812bb6b68..99352a452e 100644 --- a/src/components/views/settings/tabs/room/RolesRoomSettingsTab.js +++ b/src/components/views/settings/tabs/room/RolesRoomSettingsTab.js @@ -33,7 +33,7 @@ const plEventsToLabels = { "m.room.tombstone": _td("Upgrade the room"), "m.room.encryption": _td("Enable room encryption"), - // TODO: Enable support for m.widget event type (https://github.com/vector-im/riot-web/issues/13111) + // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) "im.vector.modular.widgets": _td("Modify widgets"), }; @@ -48,7 +48,7 @@ const plEventsToShow = { "m.room.tombstone": {isState: true}, "m.room.encryption": {isState: true}, - // TODO: Enable support for m.widget event type (https://github.com/vector-im/riot-web/issues/13111) + // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) "im.vector.modular.widgets": {isState: true}, }; diff --git a/src/components/views/settings/tabs/room/SecurityRoomSettingsTab.js b/src/components/views/settings/tabs/room/SecurityRoomSettingsTab.js index 596344d7cd..fb2f8fa983 100644 --- a/src/components/views/settings/tabs/room/SecurityRoomSettingsTab.js +++ b/src/components/views/settings/tabs/room/SecurityRoomSettingsTab.js @@ -99,7 +99,7 @@ export default class SecurityRoomSettingsTab extends React.Component { { 'a': (sub) => { return {sub}; + href='https://element.io/help#encryption'>{sub}; }, }, ), diff --git a/src/components/views/settings/tabs/user/LabsUserSettingsTab.js b/src/components/views/settings/tabs/user/LabsUserSettingsTab.js index 25dfd9e100..ef00b7136e 100644 --- a/src/components/views/settings/tabs/user/LabsUserSettingsTab.js +++ b/src/components/views/settings/tabs/user/LabsUserSettingsTab.js @@ -55,7 +55,7 @@ export default class LabsUserSettingsTab extends React.Component { _t('Customise your experience with experimental labs features. ' + 'Learn more.', {}, { 'a': (sub) => { - return {sub}; }, }) diff --git a/src/editor/caret.ts b/src/editor/caret.ts index 4864f9aa95..cb4978caf4 100644 --- a/src/editor/caret.ts +++ b/src/editor/caret.ts @@ -59,7 +59,7 @@ export function setCaretPosition(editor: HTMLDivElement, model: EditorModel, car // If the selection matches, it's important to leave it alone. // Recreating the selection state in at least Chrome can cause // strange side effects, like touch bar flickering on every key. - // See https://github.com/vector-im/riot-web/issues/9299 + // See https://github.com/vector-im/element-web/issues/9299 return; } } diff --git a/src/editor/deserialize.ts b/src/editor/deserialize.ts index 28543137be..ec697b193c 100644 --- a/src/editor/deserialize.ts +++ b/src/editor/deserialize.ts @@ -158,7 +158,7 @@ function checkDescendInto(node) { function checkIgnored(n) { if (n.nodeType === Node.TEXT_NODE) { - // riot adds \n text nodes in a lot of places, + // Element adds \n text nodes in a lot of places, // which should be ignored return n.nodeValue === "\n"; } else if (n.nodeType === Node.ELEMENT_NODE) { diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 8314402849..82a8f960ab 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -2171,7 +2171,7 @@ "%(brand)s Web": "%(brand)s Web", "%(brand)s Desktop": "%(brand)s Desktop", "%(brand)s iOS": "%(brand)s iOS", - "%(brand)s X for Android": "%(brand)s X for Android", + "%(brand)s Android": "%(brand)s Android", "or another cross-signing capable Matrix client": "or another cross-signing capable Matrix client", "Your new session is now verified. It has access to your encrypted messages, and other users will see it as trusted.": "Your new session is now verified. It has access to your encrypted messages, and other users will see it as trusted.", "Your new session is now verified. Other users will see it as trusted.": "Your new session is now verified. Other users will see it as trusted.", diff --git a/src/indexing/EventIndex.js b/src/indexing/EventIndex.js index d5abb3f2d2..fa263a2a55 100644 --- a/src/indexing/EventIndex.js +++ b/src/indexing/EventIndex.js @@ -145,7 +145,7 @@ export default class EventIndex extends EventEmitter { const indexManager = PlatformPeg.get().getEventIndexingManager(); if (prevState === "PREPARED" && state === "SYNCING") { - // If our indexer is empty we're most likely running Riot the + // If our indexer is empty we're most likely running Element the // first time with indexing support or running it with an // initial sync. Add checkpoints to crawl our encrypted rooms. const eventIndexWasEmpty = await indexManager.isEventIndexEmpty(); diff --git a/src/languageHandler.tsx b/src/languageHandler.tsx index 9d28b7d07d..59edc8766c 100644 --- a/src/languageHandler.tsx +++ b/src/languageHandler.tsx @@ -64,7 +64,7 @@ export function _td(s: string): string { // Wrapper for counterpart's translation function so that it handles nulls and undefineds properly // Takes the same arguments as counterpart.translate() function safeCounterpartTranslate(text: string, options?: object) { - // Horrible hack to avoid https://github.com/vector-im/riot-web/issues/4191 + // Horrible hack to avoid https://github.com/vector-im/element-web/issues/4191 // The interpolation library that counterpart uses does not support undefined/null // values and instead will throw an error. This is a problem since everywhere else // in JS land passing undefined/null will simply stringify instead, and when converting @@ -295,7 +295,7 @@ export function replaceByRegexes(text: string, mapping: IVariables | Tags): stri // Allow overriding the text displayed when no translation exists // Currently only used in unit tests to avoid having to load -// the translations in riot-web +// the translations in element-web export function setMissingEntryGenerator(f: (value: string) => void) { counterpart.setMissingEntryGenerator(f); } diff --git a/src/settings/Settings.ts b/src/settings/Settings.ts index 1989bd7a34..49d060a6b2 100644 --- a/src/settings/Settings.ts +++ b/src/settings/Settings.ts @@ -160,7 +160,7 @@ export const SETTINGS: {[setting: string]: ISetting} = { default: false, }, "advancedRoomListLogging": { - // TODO: Remove flag before launch: https://github.com/vector-im/riot-web/issues/14231 + // TODO: Remove flag before launch: https://github.com/vector-im/element-web/issues/14231 displayName: _td("Enable advanced debugging for the room list"), supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS, default: false, @@ -488,13 +488,13 @@ export const SETTINGS: {[setting: string]: ISetting} = { deny: [], }, }, - // TODO: Remove setting: https://github.com/vector-im/riot-web/issues/14373 + // TODO: Remove setting: https://github.com/vector-im/element-web/issues/14373 "RoomList.orderAlphabetically": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, displayName: _td("Order rooms by name"), default: false, }, - // TODO: Remove setting: https://github.com/vector-im/riot-web/issues/14373 + // TODO: Remove setting: https://github.com/vector-im/element-web/issues/14373 "RoomList.orderByImportance": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, displayName: _td("Show rooms with unread notifications first"), diff --git a/src/settings/watchers/ThemeWatcher.ts b/src/settings/watchers/ThemeWatcher.ts index 4330a15f57..53d72c7849 100644 --- a/src/settings/watchers/ThemeWatcher.ts +++ b/src/settings/watchers/ThemeWatcher.ts @@ -78,7 +78,7 @@ export default class ThemeWatcher { }; // XXX: forceTheme param added here as local echo appears to be unreliable - // https://github.com/vector-im/riot-web/issues/11443 + // https://github.com/vector-im/element-web/issues/11443 public recheck(forceTheme?: string) { const oldTheme = this.currentTheme; this.currentTheme = forceTheme === undefined ? this.getEffectiveTheme() : forceTheme; diff --git a/src/stores/ActiveWidgetStore.js b/src/stores/ActiveWidgetStore.js index c6f8dc69b7..bf9ae3586c 100644 --- a/src/stores/ActiveWidgetStore.js +++ b/src/stores/ActiveWidgetStore.js @@ -64,7 +64,7 @@ class ActiveWidgetStore extends EventEmitter { // Everything else relies on views listening for events and calling setters // on this class which is terrible. This store should just listen for events // and keep itself up to date. - // TODO: Enable support for m.widget event type (https://github.com/vector-im/riot-web/issues/13111) + // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) if (ev.getType() !== 'im.vector.modular.widgets') return; if (ev.getStateKey() === this._persistentWidgetId) { diff --git a/src/stores/notifications/NotificationColor.ts b/src/stores/notifications/NotificationColor.ts index aa2384b3df..b12f2b7c00 100644 --- a/src/stores/notifications/NotificationColor.ts +++ b/src/stores/notifications/NotificationColor.ts @@ -17,7 +17,7 @@ limitations under the License. export enum NotificationColor { // Inverted (None -> Red) because we do integer comparisons on this None, // nothing special - // TODO: Remove bold with notifications: https://github.com/vector-im/riot-web/issues/14227 + // TODO: Remove bold with notifications: https://github.com/vector-im/element-web/issues/14227 Bold, // no badge, show as unread Grey, // unread notified messages Red, // unread pings diff --git a/src/stores/room-list/RoomListStore.ts b/src/stores/room-list/RoomListStore.ts index c3e7fd5c51..f4c2d5050e 100644 --- a/src/stores/room-list/RoomListStore.ts +++ b/src/stores/room-list/RoomListStore.ts @@ -65,7 +65,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient { private readonly watchedSettings = [ 'feature_custom_tags', - 'advancedRoomListLogging', // TODO: Remove watch: https://github.com/vector-im/riot-web/issues/14602 + 'advancedRoomListLogging', // TODO: Remove watch: https://github.com/vector-im/element-web/issues/14602 ]; constructor() { @@ -161,7 +161,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient { await this.algorithm.setStickyRoom(null); } else if (activeRoom !== this.algorithm.stickyRoom) { if (SettingsStore.getValue("advancedRoomListLogging")) { - // TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602 + // TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602 console.log(`Changing sticky room to ${activeRoomId}`); } await this.algorithm.setStickyRoom(activeRoom); @@ -205,7 +205,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient { if (payload.action === 'setting_updated') { if (this.watchedSettings.includes(payload.settingName)) { - // TODO: Remove with https://github.com/vector-im/riot-web/issues/14602 + // TODO: Remove with https://github.com/vector-im/element-web/issues/14602 if (payload.settingName === "advancedRoomListLogging") { // Log when the setting changes so we know when it was turned on in the rageshake const enabled = SettingsStore.getValue("advancedRoomListLogging"); @@ -236,7 +236,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient { return; } if (SettingsStore.getValue("advancedRoomListLogging")) { - // TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602 + // TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602 console.log(`[RoomListDebug] Got own read receipt in ${room.roomId}`); } await this.handleRoomUpdate(room, RoomUpdateCause.ReadReceipt); @@ -246,7 +246,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient { } else if (payload.action === 'MatrixActions.Room.tags') { const roomPayload = (payload); // TODO: Type out the dispatcher types if (SettingsStore.getValue("advancedRoomListLogging")) { - // TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602 + // TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602 console.log(`[RoomListDebug] Got tag change in ${roomPayload.room.roomId}`); } await this.handleRoomUpdate(roomPayload.room, RoomUpdateCause.PossibleTagChange); @@ -261,13 +261,13 @@ export class RoomListStoreClass extends AsyncStoreWithClient { const room = this.matrixClient.getRoom(roomId); const tryUpdate = async (updatedRoom: Room) => { if (SettingsStore.getValue("advancedRoomListLogging")) { - // TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602 + // TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602 console.log(`[RoomListDebug] Live timeline event ${eventPayload.event.getId()}` + ` in ${updatedRoom.roomId}`); } if (eventPayload.event.getType() === 'm.room.tombstone' && eventPayload.event.getStateKey() === '') { if (SettingsStore.getValue("advancedRoomListLogging")) { - // TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602 + // TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602 console.log(`[RoomListDebug] Got tombstone event - trying to remove now-dead room`); } const newRoom = this.matrixClient.getRoom(eventPayload.event.getContent()['replacement_room']); @@ -300,7 +300,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient { return; } if (SettingsStore.getValue("advancedRoomListLogging")) { - // TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602 + // TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602 console.log(`[RoomListDebug] Decrypted timeline event ${eventPayload.event.getId()} in ${roomId}`); } await this.handleRoomUpdate(room, RoomUpdateCause.Timeline); @@ -308,7 +308,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient { } else if (payload.action === 'MatrixActions.accountData' && payload.event_type === 'm.direct') { const eventPayload = (payload); // TODO: Type out the dispatcher types if (SettingsStore.getValue("advancedRoomListLogging")) { - // TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602 + // TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602 console.log(`[RoomListDebug] Received updated DM map`); } const dmMap = eventPayload.event.getContent(); @@ -335,7 +335,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient { const newMembership = getEffectiveMembership(membershipPayload.membership); if (oldMembership !== EffectiveMembership.Join && newMembership === EffectiveMembership.Join) { if (SettingsStore.getValue("advancedRoomListLogging")) { - // TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602 + // TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602 console.log(`[RoomListDebug] Handling new room ${membershipPayload.room.roomId}`); } @@ -344,7 +344,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient { const createEvent = membershipPayload.room.currentState.getStateEvents("m.room.create", ""); if (createEvent && createEvent.getContent()['predecessor']) { if (SettingsStore.getValue("advancedRoomListLogging")) { - // TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602 + // TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602 console.log(`[RoomListDebug] Room has a predecessor`); } const prevRoom = this.matrixClient.getRoom(createEvent.getContent()['predecessor']['room_id']); @@ -352,7 +352,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient { const isSticky = this.algorithm.stickyRoom === prevRoom; if (isSticky) { if (SettingsStore.getValue("advancedRoomListLogging")) { - // TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602 + // TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602 console.log(`[RoomListDebug] Clearing sticky room due to room upgrade`); } await this.algorithm.setStickyRoom(null); @@ -361,7 +361,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient { // Note: we hit the algorithm instead of our handleRoomUpdate() function to // avoid redundant updates. if (SettingsStore.getValue("advancedRoomListLogging")) { - // TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602 + // TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602 console.log(`[RoomListDebug] Removing previous room from room list`); } await this.algorithm.handleRoomUpdate(prevRoom, RoomUpdateCause.RoomRemoved); @@ -369,7 +369,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient { } if (SettingsStore.getValue("advancedRoomListLogging")) { - // TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602 + // TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602 console.log(`[RoomListDebug] Adding new room to room list`); } await this.handleRoomUpdate(membershipPayload.room, RoomUpdateCause.NewRoom); @@ -379,7 +379,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient { if (oldMembership !== EffectiveMembership.Invite && newMembership === EffectiveMembership.Invite) { if (SettingsStore.getValue("advancedRoomListLogging")) { - // TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602 + // TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602 console.log(`[RoomListDebug] Handling invite to ${membershipPayload.room.roomId}`); } await this.handleRoomUpdate(membershipPayload.room, RoomUpdateCause.NewRoom); @@ -390,7 +390,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient { // If it's not a join, it's transitioning into a different list (possibly historical) if (oldMembership !== newMembership) { if (SettingsStore.getValue("advancedRoomListLogging")) { - // TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602 + // TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602 console.log(`[RoomListDebug] Handling membership change in ${membershipPayload.room.roomId}`); } await this.handleRoomUpdate(membershipPayload.room, RoomUpdateCause.PossibleTagChange); @@ -404,7 +404,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient { const shouldUpdate = await this.algorithm.handleRoomUpdate(room, cause); if (shouldUpdate) { if (SettingsStore.getValue("advancedRoomListLogging")) { - // TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602 + // TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602 console.log(`[DEBUG] Room "${room.name}" (${room.roomId}) triggered by ${cause} requires list update`); } this.updateFn.mark(); @@ -418,7 +418,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient { private async setAndPersistTagSorting(tagId: TagID, sort: SortAlgorithm) { await this.algorithm.setTagSorting(tagId, sort); - // TODO: Per-account? https://github.com/vector-im/riot-web/issues/14114 + // TODO: Per-account? https://github.com/vector-im/element-web/issues/14114 localStorage.setItem(`mx_tagSort_${tagId}`, sort); } @@ -428,7 +428,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient { // noinspection JSMethodCanBeStatic private getStoredTagSorting(tagId: TagID): SortAlgorithm { - // TODO: Per-account? https://github.com/vector-im/riot-web/issues/14114 + // TODO: Per-account? https://github.com/vector-im/element-web/issues/14114 return localStorage.getItem(`mx_tagSort_${tagId}`); } @@ -462,7 +462,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient { private async setAndPersistListOrder(tagId: TagID, order: ListAlgorithm) { await this.algorithm.setListOrdering(tagId, order); - // TODO: Per-account? https://github.com/vector-im/riot-web/issues/14114 + // TODO: Per-account? https://github.com/vector-im/element-web/issues/14114 localStorage.setItem(`mx_listOrder_${tagId}`, order); } @@ -472,7 +472,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient { // noinspection JSMethodCanBeStatic private getStoredListOrder(tagId: TagID): ListAlgorithm { - // TODO: Per-account? https://github.com/vector-im/riot-web/issues/14114 + // TODO: Per-account? https://github.com/vector-im/element-web/issues/14114 return localStorage.getItem(`mx_listOrder_${tagId}`); } @@ -521,7 +521,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient { private onAlgorithmListUpdated = () => { if (SettingsStore.getValue("advancedRoomListLogging")) { - // TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602 + // TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602 console.log("Underlying algorithm has triggered a list update - marking"); } this.updateFn.mark(); @@ -574,7 +574,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient { public addFilter(filter: IFilterCondition): void { if (SettingsStore.getValue("advancedRoomListLogging")) { - // TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602 + // TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602 console.log("Adding filter condition:", filter); } this.filterConditions.push(filter); @@ -586,7 +586,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient { public removeFilter(filter: IFilterCondition): void { if (SettingsStore.getValue("advancedRoomListLogging")) { - // TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602 + // TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602 console.log("Removing filter condition:", filter); } const idx = this.filterConditions.indexOf(filter); diff --git a/src/stores/room-list/algorithms/Algorithm.ts b/src/stores/room-list/algorithms/Algorithm.ts index f1a7ab1613..439141edb4 100644 --- a/src/stores/room-list/algorithms/Algorithm.ts +++ b/src/stores/room-list/algorithms/Algorithm.ts @@ -334,7 +334,7 @@ export class Algorithm extends EventEmitter { newMap[tagId] = allowedRoomsInThisTag; if (SettingsStore.getValue("advancedRoomListLogging")) { - // TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602 + // TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602 console.log(`[DEBUG] ${newMap[tagId].length}/${rooms.length} rooms filtered into ${tagId}`); } } @@ -349,7 +349,7 @@ export class Algorithm extends EventEmitter { if (!this.hasFilters) return; // don't bother doing work if there's nothing to do if (SettingsStore.getValue("advancedRoomListLogging")) { - // TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602 + // TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602 console.log(`Recalculating filtered rooms for ${tagId}`); } delete this.filteredRooms[tagId]; @@ -361,7 +361,7 @@ export class Algorithm extends EventEmitter { } if (SettingsStore.getValue("advancedRoomListLogging")) { - // TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602 + // TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602 console.log(`[DEBUG] ${filteredRooms.length}/${rooms.length} rooms filtered into ${tagId}`); } } @@ -403,7 +403,7 @@ export class Algorithm extends EventEmitter { if (!this._cachedStickyRooms || !updatedTag) { if (SettingsStore.getValue("advancedRoomListLogging")) { - // TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602 + // TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602 console.log(`Generating clone of cached rooms for sticky room handling`); } const stickiedTagMap: ITagMap = {}; @@ -417,7 +417,7 @@ export class Algorithm extends EventEmitter { // Update the tag indicated by the caller, if possible. This is mostly to ensure // our cache is up to date. if (SettingsStore.getValue("advancedRoomListLogging")) { - // TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602 + // TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602 console.log(`Replacing cached sticky rooms for ${updatedTag}`); } this._cachedStickyRooms[updatedTag] = this.cachedRooms[updatedTag].map(r => r); // shallow clone @@ -429,7 +429,7 @@ export class Algorithm extends EventEmitter { const sticky = this._stickyRoom; if (!updatedTag || updatedTag === sticky.tag) { if (SettingsStore.getValue("advancedRoomListLogging")) { - // TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602 + // TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602 console.log( `Inserting sticky room ${sticky.room.roomId} at position ${sticky.position} in ${sticky.tag}`, ); @@ -660,7 +660,7 @@ export class Algorithm extends EventEmitter { */ public async handleRoomUpdate(room: Room, cause: RoomUpdateCause): Promise { if (SettingsStore.getValue("advancedRoomListLogging")) { - // TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602 + // TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602 console.log(`Handle room update for ${room.roomId} called with cause ${cause}`); } if (!this.algorithms) throw new Error("Not ready: no algorithms to determine tags from"); @@ -720,7 +720,7 @@ export class Algorithm extends EventEmitter { if (diff.removed.length > 0 || diff.added.length > 0) { for (const rmTag of diff.removed) { if (SettingsStore.getValue("advancedRoomListLogging")) { - // TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602 + // TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602 console.log(`Removing ${room.roomId} from ${rmTag}`); } const algorithm: OrderingAlgorithm = this.algorithms[rmTag]; @@ -732,7 +732,7 @@ export class Algorithm extends EventEmitter { } for (const addTag of diff.added) { if (SettingsStore.getValue("advancedRoomListLogging")) { - // TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602 + // TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602 console.log(`Adding ${room.roomId} to ${addTag}`); } const algorithm: OrderingAlgorithm = this.algorithms[addTag]; @@ -745,14 +745,14 @@ export class Algorithm extends EventEmitter { this.roomIdsToTags[room.roomId] = newTags; if (SettingsStore.getValue("advancedRoomListLogging")) { - // TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602 + // TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602 console.log(`Changing update cause for ${room.roomId} to Timeline to sort rooms`); } cause = RoomUpdateCause.Timeline; didTagChange = true; } else { if (SettingsStore.getValue("advancedRoomListLogging")) { - // TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602 + // TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602 console.log(`Received no-op update for ${room.roomId} - changing to Timeline update`); } cause = RoomUpdateCause.Timeline; @@ -781,7 +781,7 @@ export class Algorithm extends EventEmitter { if (cause !== RoomUpdateCause.NewRoom && cause !== RoomUpdateCause.RoomRemoved) { if (this.stickyRoom === room) { if (SettingsStore.getValue("advancedRoomListLogging")) { - // TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602 + // TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602 console.warn(`[RoomListDebug] Received ${cause} update for sticky room ${room.roomId} - ignoring`); } return false; @@ -791,14 +791,14 @@ export class Algorithm extends EventEmitter { if (!this.roomIdsToTags[room.roomId]) { if (CAUSES_REQUIRING_ROOM.includes(cause)) { if (SettingsStore.getValue("advancedRoomListLogging")) { - // TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602 + // TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602 console.warn(`Skipping tag update for ${room.roomId} because we don't know about the room`); } return false; } if (SettingsStore.getValue("advancedRoomListLogging")) { - // TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602 + // TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602 console.log(`[RoomListDebug] Updating tags for room ${room.roomId} (${room.name})`); } @@ -812,13 +812,13 @@ export class Algorithm extends EventEmitter { this.roomIdsToTags[room.roomId] = roomTags; if (SettingsStore.getValue("advancedRoomListLogging")) { - // TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602 + // TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602 console.log(`[RoomListDebug] Updated tags for ${room.roomId}:`, roomTags); } } if (SettingsStore.getValue("advancedRoomListLogging")) { - // TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602 + // TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602 console.log(`[RoomListDebug] Reached algorithmic handling for ${room.roomId} and cause ${cause}`); } @@ -843,7 +843,7 @@ export class Algorithm extends EventEmitter { } if (SettingsStore.getValue("advancedRoomListLogging")) { - // TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602 + // TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602 console.log(`[RoomListDebug] Finished handling ${room.roomId} with cause ${cause} (changed=${changed})`); } return changed; diff --git a/src/stores/room-list/algorithms/list-ordering/ImportanceAlgorithm.ts b/src/stores/room-list/algorithms/list-ordering/ImportanceAlgorithm.ts index e4aa5ff06f..80bdf74afb 100644 --- a/src/stores/room-list/algorithms/list-ordering/ImportanceAlgorithm.ts +++ b/src/stores/room-list/algorithms/list-ordering/ImportanceAlgorithm.ts @@ -270,7 +270,7 @@ export class ImportanceAlgorithm extends OrderingAlgorithm { `!! Room list index corruption: ${lastCat} (i:${indices[lastCat]}) is greater ` + `than ${thisCat} (i:${indices[thisCat]}) - category indices are likely desynced from reality`); - // TODO: Regenerate index when this happens: https://github.com/vector-im/riot-web/issues/14234 + // TODO: Regenerate index when this happens: https://github.com/vector-im/element-web/issues/14234 } } } diff --git a/src/stores/room-list/algorithms/list-ordering/NaturalAlgorithm.ts b/src/stores/room-list/algorithms/list-ordering/NaturalAlgorithm.ts index 5759f0c32d..cc2a28d892 100644 --- a/src/stores/room-list/algorithms/list-ordering/NaturalAlgorithm.ts +++ b/src/stores/room-list/algorithms/list-ordering/NaturalAlgorithm.ts @@ -54,7 +54,7 @@ export class NaturalAlgorithm extends OrderingAlgorithm { } } - // TODO: Optimize this to avoid useless operations: https://github.com/vector-im/riot-web/issues/14457 + // TODO: Optimize this to avoid useless operations: https://github.com/vector-im/element-web/issues/14457 // For example, we can skip updates to alphabetic (sometimes) and manually ordered tags this.cachedOrderedRooms = await sortRoomsWithAlgorithm( this.cachedOrderedRooms, diff --git a/src/stores/room-list/algorithms/tag-sorting/RecentAlgorithm.ts b/src/stores/room-list/algorithms/tag-sorting/RecentAlgorithm.ts index 09182f3bfb..7c8c879cf6 100644 --- a/src/stores/room-list/algorithms/tag-sorting/RecentAlgorithm.ts +++ b/src/stores/room-list/algorithms/tag-sorting/RecentAlgorithm.ts @@ -33,13 +33,13 @@ export class RecentAlgorithm implements IAlgorithm { // of the rooms to each other. // TODO: We could probably improve the sorting algorithm here by finding changes. - // See https://github.com/vector-im/riot-web/issues/14459 + // See https://github.com/vector-im/element-web/issues/14459 // For example, if we spent a little bit of time to determine which elements have // actually changed (probably needs to be done higher up?) then we could do an // insertion sort or similar on the limited set of changes. // TODO: Don't assume we're using the same client as the peg - // See https://github.com/vector-im/riot-web/issues/14458 + // See https://github.com/vector-im/element-web/issues/14458 let myUserId = ''; if (MatrixClientPeg.get()) { myUserId = MatrixClientPeg.get().getUserId(); diff --git a/src/theme.js b/src/theme.js index c79e466933..a413ae74af 100644 --- a/src/theme.js +++ b/src/theme.js @@ -202,7 +202,7 @@ export async function setTheme(theme) { return new Promise((resolve) => { const switchTheme = function() { // we re-enable our theme here just in case we raced with another - // theme set request as per https://github.com/vector-im/riot-web/issues/5601. + // theme set request as per https://github.com/vector-im/element-web/issues/5601. // We could alternatively lock or similar to stop the race, but // this is probably good enough for now. styleElements[stylesheetName].disabled = false; diff --git a/src/toasts/UpdateToast.tsx b/src/toasts/UpdateToast.tsx index 595f3a35d6..dfd06cf3a0 100644 --- a/src/toasts/UpdateToast.tsx +++ b/src/toasts/UpdateToast.tsx @@ -29,7 +29,7 @@ const TOAST_KEY = "update"; /* * Check a version string is compatible with the Changelog - * dialog ([riot-version]-react-[react-sdk-version]-js-[js-sdk-version]) + * dialog ([element-version]-react-[react-sdk-version]-js-[js-sdk-version]) */ function checkVersion(ver) { const parts = ver.split('-'); diff --git a/src/usercontent/index.html b/src/usercontent/index.html index 90a0fe7c16..9abbdb5289 100644 --- a/src/usercontent/index.html +++ b/src/usercontent/index.html @@ -2,9 +2,9 @@ diff --git a/src/utils/AutoDiscoveryUtils.js b/src/utils/AutoDiscoveryUtils.js index 7452ff31a5..94aa0c3544 100644 --- a/src/utils/AutoDiscoveryUtils.js +++ b/src/utils/AutoDiscoveryUtils.js @@ -80,7 +80,7 @@ export default class AutoDiscoveryUtils { { a: (sub) => { return {sub}; @@ -203,7 +203,7 @@ export default class AutoDiscoveryUtils { // Note: In the cases where we rely on the default IS from the config (namely // lack of identity server provided by the discovery method), we intentionally do not // validate it. This has already been validated and this helps some off-the-grid usage - // of Riot. + // of Element. let preferredIdentityUrl = defaultConfig && defaultConfig['isUrl']; if (isResult && isResult.state === AutoDiscovery.SUCCESS) { preferredIdentityUrl = isResult["base_url"]; diff --git a/src/utils/DecryptFile.js b/src/utils/DecryptFile.js index f5a1b0aa62..dcdc2f9fdb 100644 --- a/src/utils/DecryptFile.js +++ b/src/utils/DecryptFile.js @@ -28,7 +28,7 @@ import {MatrixClientPeg} from '../MatrixClientPeg'; // called createObjectURL(), and so if the content contains any scripting then it // will pose a XSS vulnerability when the browser renders it. This is particularly // bad if the user right-clicks the URI and pastes it into a new window or tab, -// as the blob will then execute with access to Riot's full JS environment(!) +// as the blob will then execute with access to Element's full JS environment(!) // // See https://github.com/matrix-org/matrix-react-sdk/pull/1820#issuecomment-385210647 // for details. diff --git a/src/utils/WidgetUtils.js b/src/utils/WidgetUtils.js index f7f4be202b..645953210d 100644 --- a/src/utils/WidgetUtils.js +++ b/src/utils/WidgetUtils.js @@ -69,7 +69,7 @@ export default class WidgetUtils { return false; } - // TODO: Enable support for m.widget event type (https://github.com/vector-im/riot-web/issues/13111) + // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) return room.currentState.maySendStateEvent('im.vector.modular.widgets', me); } @@ -185,7 +185,7 @@ export default class WidgetUtils { } const room = MatrixClientPeg.get().getRoom(roomId); - // TODO: Enable support for m.widget event type (https://github.com/vector-im/riot-web/issues/13111) + // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) const startingWidgetEvents = room.currentState.getStateEvents('im.vector.modular.widgets'); if (eventsInIntendedState(startingWidgetEvents)) { resolve(); @@ -195,7 +195,7 @@ export default class WidgetUtils { function onRoomStateEvents(ev) { if (ev.getRoomId() !== roomId) return; - // TODO: Enable support for m.widget event type (https://github.com/vector-im/riot-web/issues/13111) + // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) const currentWidgetEvents = room.currentState.getStateEvents('im.vector.modular.widgets'); if (eventsInIntendedState(currentWidgetEvents)) { @@ -263,8 +263,8 @@ export default class WidgetUtils { if (addingWidget) { content = { - // TODO: Enable support for m.widget event type (https://github.com/vector-im/riot-web/issues/13111) - // For now we'll send the legacy event type for compatibility with older apps/riots + // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) + // For now we'll send the legacy event type for compatibility with older apps/elements type: widgetType.legacy, url: widgetUrl, name: widgetName, @@ -277,7 +277,7 @@ export default class WidgetUtils { WidgetEchoStore.setRoomWidgetEcho(roomId, widgetId, content); const client = MatrixClientPeg.get(); - // TODO: Enable support for m.widget event type (https://github.com/vector-im/riot-web/issues/13111) + // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) return client.sendStateEvent(roomId, "im.vector.modular.widgets", content, widgetId).then(() => { return WidgetUtils.waitForRoomWidget(widgetId, roomId, addingWidget); }).finally(() => { @@ -291,7 +291,7 @@ export default class WidgetUtils { * @return {[object]} Array containing current / active room widgets */ static getRoomWidgets(room: Room) { - // TODO: Enable support for m.widget event type (https://github.com/vector-im/riot-web/issues/13111) + // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) const appsStateEvents = room.currentState.getStateEvents('im.vector.modular.widgets'); if (!appsStateEvents) { return []; @@ -466,7 +466,7 @@ export default class WidgetUtils { // safe to send. // We'll end up using a local render URL when we see a Jitsi widget anyways, so this is // really just for backwards compatibility and to appease the spec. - baseUrl = "https://riot.im/app/"; + baseUrl = "https://app.element.io/"; } const url = new URL("jitsi.html#" + queryString, baseUrl); // this strips hash fragment from baseUrl return url.href; diff --git a/src/utils/membership.ts b/src/utils/membership.ts index 9f1c5b7b41..9534623d62 100644 --- a/src/utils/membership.ts +++ b/src/utils/membership.ts @@ -63,7 +63,7 @@ export function getEffectiveMembership(membership: string): EffectiveMembership if (membership === 'invite') { return EffectiveMembership.Invite; } else if (membership === 'join') { - // TODO: Include knocks? Update docs as needed in the enum. https://github.com/vector-im/riot-web/issues/14237 + // TODO: Include knocks? Update docs as needed in the enum. https://github.com/vector-im/element-web/issues/14237 return EffectiveMembership.Join; } else { // Probably a leave, kick, or ban diff --git a/src/utils/pillify.js b/src/utils/pillify.js index cb140c61a4..432771592a 100644 --- a/src/utils/pillify.js +++ b/src/utils/pillify.js @@ -139,7 +139,7 @@ export function pillifyLinks(nodes, mxEvent, pills) { * It's critical to call this after pillifyLinks, otherwise * Pills will leak, leaking entire DOM trees via the event * emitter on BaseAvatar as per - * https://github.com/vector-im/riot-web/issues/12417 + * https://github.com/vector-im/element-web/issues/12417 * * @param {Node[]} pills - array of pill containers whose React * components should be unmounted. diff --git a/src/widgets/WidgetApi.ts b/src/widgets/WidgetApi.ts index 4775c30c95..ede661461b 100644 --- a/src/widgets/WidgetApi.ts +++ b/src/widgets/WidgetApi.ts @@ -65,7 +65,7 @@ export interface FromWidgetRequest extends WidgetRequest { } /** - * Handles Riot <--> Widget interactions for embedded/standalone widgets. + * Handles Element <--> Widget interactions for embedded/standalone widgets. * * Emitted events: * - terminate(wait): client requested the widget to terminate. diff --git a/test/components/views/rooms/RoomSettings-test.js b/test/components/views/rooms/RoomSettings-test.js index b3790b2507..3b4989ccab 100644 --- a/test/components/views/rooms/RoomSettings-test.js +++ b/test/components/views/rooms/RoomSettings-test.js @@ -177,7 +177,7 @@ describe.skip('RoomSettings', () => { 'm.room.history_visibility': 50, 'm.room.power_levels': 50, 'm.room.topic': 50, - // TODO: Enable support for m.widget event type (https://github.com/vector-im/riot-web/issues/13111) + // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) 'im.vector.modular.widgets': 50, }, }, diff --git a/test/editor/deserialize-test.js b/test/editor/deserialize-test.js index 2bd5d7e4c6..112ac7d02b 100644 --- a/test/editor/deserialize-test.js +++ b/test/editor/deserialize-test.js @@ -204,7 +204,7 @@ describe('editor/deserialize', function() { expect(parts[3]).toStrictEqual({type: "newline", text: "\n"}); expect(parts[4]).toStrictEqual({type: "plain", text: "```"}); }); - // failing likely because of https://github.com/vector-im/riot-web/issues/10316 + // failing likely because of https://github.com/vector-im/element-web/issues/10316 xit('code block with no trailing text and no newlines', function() { const html = "
0xDEADBEEF
"; const parts = normalize(parseEvent(htmlMessage(html), createPartCreator())); diff --git a/test/end-to-end-tests/install.sh b/test/end-to-end-tests/install.sh index 937ef1f5eb..bbe7a24c9b 100755 --- a/test/end-to-end-tests/install.sh +++ b/test/end-to-end-tests/install.sh @@ -2,6 +2,6 @@ # run with PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true sh install.sh if chrome is already installed set -e ./synapse/install.sh -# local testing doesn't need a Riot fetched from master, +# local testing doesn't need a Element fetched from master, # so not installing that by default yarn install From 5426d9f105592dd7b20ff46652a4104ac6436306 Mon Sep 17 00:00:00 2001 From: Jorik Schellekens Date: Mon, 3 Aug 2020 19:21:24 +0100 Subject: [PATCH 055/424] Use accessible button for copy icon. --- src/components/views/dialogs/ShareDialog.tsx | 9 ++++++--- src/i18n/strings/en_EN.json | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/components/views/dialogs/ShareDialog.tsx b/src/components/views/dialogs/ShareDialog.tsx index 0712e6fe3f..dc2a987f13 100644 --- a/src/components/views/dialogs/ShareDialog.tsx +++ b/src/components/views/dialogs/ShareDialog.tsx @@ -30,6 +30,7 @@ import * as ContextMenu from "../../structures/ContextMenu"; import {toRightOf} from "../../structures/ContextMenu"; import {copyPlaintext, selectText} from "../../../utils/strings"; import StyledCheckbox from '../elements/StyledCheckbox'; +import AccessibleTooltipButton from '../elements/AccessibleTooltipButton'; const socials = [ { @@ -210,9 +211,11 @@ export default class ShareDialog extends React.PureComponent { > { matrixToUrl } - -
 
-
+
{ checkbox }
diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 04ddb71444..1fc1a6fee1 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -1399,6 +1399,7 @@ "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s changed the room avatar to ", "This room is a continuation of another conversation.": "This room is a continuation of another conversation.", "Click here to see older messages.": "Click here to see older messages.", + "Copy": "Copy", "Copied!": "Copied!", "Failed to copy": "Failed to copy", "Add an Integration": "Add an Integration", @@ -2217,7 +2218,6 @@ "Confirm your recovery passphrase": "Confirm your recovery passphrase", "Store your Security Key somewhere safe, like a password manager or a safe, as it’s used to safeguard your encrypted data.": "Store your Security Key somewhere safe, like a password manager or a safe, as it’s used to safeguard your encrypted data.", "Download": "Download", - "Copy": "Copy", "Unable to query secret storage status": "Unable to query secret storage status", "Retry": "Retry", "If you cancel now, you may lose encrypted messages & data if you lose access to your logins.": "If you cancel now, you may lose encrypted messages & data if you lose access to your logins.", From 4bebbad365215401cffe5d86a5f65abca4eb693c Mon Sep 17 00:00:00 2001 From: Jorik Schellekens Date: Mon, 3 Aug 2020 19:29:18 +0100 Subject: [PATCH 056/424] fix i18n --- src/i18n/strings/en_EN.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 1fc1a6fee1..f814d2879b 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -1399,7 +1399,6 @@ "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s changed the room avatar to ", "This room is a continuation of another conversation.": "This room is a continuation of another conversation.", "Click here to see older messages.": "Click here to see older messages.", - "Copy": "Copy", "Copied!": "Copied!", "Failed to copy": "Failed to copy", "Add an Integration": "Add an Integration", @@ -1779,6 +1778,7 @@ "Share Community": "Share Community", "Share Room Message": "Share Room Message", "Link to selected message": "Link to selected message", + "Copy": "Copy", "Command Help": "Command Help", "To help us prevent this in future, please send us logs.": "To help us prevent this in future, please send us logs.", "Missing session data": "Missing session data", From a0f5b23c1c924c1e1d911b6033d2983ee8005753 Mon Sep 17 00:00:00 2001 From: tusooa Date: Mon, 3 Aug 2020 16:16:03 +0000 Subject: [PATCH 057/424] Translated using Weblate (Chinese (Simplified)) Currently translated at 97.8% (2289 of 2340 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/zh_Hans/ --- src/i18n/strings/zh_Hans.json | 696 ++++++++++++++++++++++++++++++++-- 1 file changed, 674 insertions(+), 22 deletions(-) diff --git a/src/i18n/strings/zh_Hans.json b/src/i18n/strings/zh_Hans.json index 2e6bab23fd..de0ba31201 100644 --- a/src/i18n/strings/zh_Hans.json +++ b/src/i18n/strings/zh_Hans.json @@ -3,7 +3,7 @@ "Cryptography": "加密", "Current password": "当前密码", "/ddg is not a command": "/ddg 不是一个命令", - "Deactivate Account": "销毁账号", + "Deactivate Account": "停用账号", "Decrypt %(text)s": "解密 %(text)s", "Default": "默认", "Disinvite": "取消邀请", @@ -162,7 +162,7 @@ "Missing user_id in request": "请求中没有 user_id", "Moderator": "协管员", "Mute": "静音", - "Name": "姓名", + "Name": "名称", "New passwords don't match": "两次输入的新密码不符", "not specified": "未指定", "Notifications": "通知", @@ -175,7 +175,7 @@ "Password": "密码", "Passwords can't be empty": "密码不能为空", "Permissions": "权限", - "Phone": "手机号码", + "Phone": "电话号码", "Cancel": "取消", "Create new room": "创建新聊天室", "Custom Server Options": "自定义服务器选项", @@ -258,7 +258,7 @@ "Save": "保存", "This room has no local addresses": "此聊天室没有本地地址", "This doesn't appear to be a valid email address": "这似乎不是有效的邮箱地址", - "This phone number is already in use": "此手机号码已被使用", + "This phone number is already in use": "此电话号码已被使用", "This room": "此聊天室", "This room is not accessible by remote Matrix servers": "此聊天室无法被远程 Matrix 服务器访问", "Unable to create widget.": "无法创建小挂件。", @@ -280,7 +280,7 @@ "Manage Integrations": "管理集成", "No users have specific privileges in this room": "此聊天室中没有用户有特殊权限", "Please check your email and click on the link it contains. Once this is done, click continue.": "请检查你的电子邮箱并点击里面包含的链接。完成时请点击继续。", - "%(senderName)s removed their profile picture.": "%(senderName)s 移除了他们的头像。", + "%(senderName)s removed their profile picture.": "%(senderName)s 移除了头像。", "%(senderName)s requested a VoIP conference.": "%(senderName)s 已请求发起 VoIP 会议。", "Seen by %(userName)s at %(dateTime)s": "在 %(dateTime)s 被 %(userName)s 看到", "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s 接受了 %(displayName)s 的邀请。", @@ -295,12 +295,12 @@ "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s 设定历史浏览功能为 未知的 (%(visibility)s).", "AM": "上午", "PM": "下午", - "Profile": "个人配置", + "Profile": "个人资料", "Public Chat": "公开的", "%(roomName)s is not accessible at this time.": "%(roomName)s 此时无法访问。", "Start authentication": "开始认证", "The maximum permitted number of widgets have already been added to this room.": "此聊天室可拥有的小挂件数量已达到上限。", - "The phone number entered looks invalid": "此手机号码似乎无效", + "The phone number entered looks invalid": "此电话号码似乎无效", "The remote side failed to pick up": "对方未能接听", "This room is not recognised.": "无法识别此聊天室。", "To get started, please pick a username!": "请点击用户名!", @@ -337,7 +337,7 @@ "You have disabled URL previews by default.": "你已经默认 禁用 链接预览。", "You have enabled URL previews by default.": "你已经默认 启用 链接预览。", "Set a display name:": "设置昵称:", - "This server does not support authentication with a phone number.": "此服务器不支持使用手机号码认证。", + "This server does not support authentication with a phone number.": "此服务器不支持使用电话号码认证。", "Copied!": "已复制!", "Failed to copy": "复制失败", "Sent messages will be stored until your connection has returned.": "已发送的消息会被保存直到你的连接回来。", @@ -511,7 +511,7 @@ "To use it, just wait for autocomplete results to load and tab through them.": "若要使用自动补全,只要等待自动补全结果加载完成,按 Tab 键切换即可。", "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s 将他们的昵称修改成了 %(displayName)s 。", "Stickerpack": "贴图集", - "You don't currently have any stickerpacks enabled": "您目前没有启用任何贴纸包", + "You don't currently have any stickerpacks enabled": "您目前没有启用任何贴图集", "Key request sent.": "已发送密钥共享请求。", "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "如果您是房间中最后一位有权限的用户,在您降低自己的权限等级后将无法撤回此修改,因为你将无法重新获得权限。", "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "您将无法撤回此修改,因为您正在将此用户的滥权等级提升至与你相同。", @@ -788,7 +788,7 @@ "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "在启用加密的聊天室中,比如此聊天室,链接预览被默认禁用以确保主服务器(访问链接、生成预览的地方)无法获知聊天室中的链接及其信息。", "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "当有人发送一条带有链接的消息后,可显示链接的预览,链接预览可包含此链接的网页标题、描述以及图片。", "The email field must not be blank.": "必须输入电子邮箱。", - "The phone number field must not be blank.": "必须输入手机号码。", + "The phone number field must not be blank.": "必须输入电话号码。", "The password field must not be blank.": "必须输入密码。", "Display your community flair in rooms configured to show it.": "在启用“显示徽章”的聊天室中显示本社区的个性徽章。", "Failed to remove widget": "移除小挂件失败", @@ -1045,7 +1045,7 @@ "Unable to verify phone number.": "无法验证电话号码。", "Verification code": "验证码", "Phone Number": "电话号码", - "Profile picture": "个人资料头像", + "Profile picture": "头像", "Display Name": "昵称", "Set a new account password...": "设置一个新的账号密码...", "Email addresses": "电子邮箱地址", @@ -1103,7 +1103,7 @@ "Join": "加入", "That doesn't look like a valid email address": "看起来不像是个有效的电子邮箱地址", "The following users may not exist": "以下用户可能不存在", - "Unable to find profiles for the Matrix IDs listed below - would you like to invite them anyway?": "无法找到以下列表中 Matrix ID 的用户资料 - 您还是要邀请他们吗?", + "Unable to find profiles for the Matrix IDs listed below - would you like to invite them anyway?": "无法找到以下列表中 Matrix ID 的用户资料 - 您还是要邀请吗?", "Invite anyway and never warn me again": "还是邀请,不用再提醒我", "Invite anyway": "还是邀请", "Before submitting logs, you must create a GitHub issue to describe your problem.": "在提交日志之前,您必须 创建一个GitHub issue 来描述您的问题。", @@ -1260,11 +1260,11 @@ "Try using turn.matrix.org": "尝试使用 turn.matrix.org", "Your %(brand)s is misconfigured": "您的 %(brand)s 配置有错误", "Use Single Sign On to continue": "使用单点登陆继续", - "Confirm adding this email address by using Single Sign On to prove your identity.": "确认添加此邮件地址,通过使用单点登陆来证明您的身份。", + "Confirm adding this email address by using Single Sign On to prove your identity.": "通过使用单点登陆来证明您的身份,并确认添加此邮件地址。", "Single Sign On": "单点登陆", "Confirm adding email": "确认使用邮件", "Click the button below to confirm adding this email address.": "点击下面的按钮,添加此邮箱地址。", - "Confirm adding this phone number by using Single Sign On to prove your identity.": "通过单点确认添加此电话号码以确认您的身份。", + "Confirm adding this phone number by using Single Sign On to prove your identity.": "通过单点登录以证明您的身份,并确认添加此电话号码。", "Confirm adding phone number": "确认添加电话号码", "Click the button below to confirm adding this phone number.": "点击下面的按钮,确认添加此电话号码。", "Whether you're using %(brand)s on a device where touch is the primary input mechanism": "是否在触屏设备上使用 %(brand)s", @@ -1466,7 +1466,7 @@ "Change notification settings": "修改通知设置", "Manually verify all remote sessions": "手动验证所有远程会话", "My Ban List": "我的封禁列表", - "This is your list of users/servers you have blocked - don't leave the room!": "这是您屏蔽的用户和服务器的列表——请不要离开这此聊天室!", + "This is your list of users/servers you have blocked - don't leave the room!": "这是您屏蔽的用户和服务器的列表——请不要离开此聊天室!", "Unknown caller": "未知来电人", "Incoming voice call": "语音来电", "Incoming video call": "视频来电", @@ -1559,15 +1559,15 @@ "wait and try again later": "等待并稍后重试", "Disconnect anyway": "仍然断开连接", "You are still sharing your personal data on the identity server .": "您仍然在身份服务器 共享您的个人信息。", - "We recommend that you remove your email addresses and phone numbers from the identity server before disconnecting.": "我们推荐您在断开连接前从身份服务器上删除您的邮箱地址和手机号码。", + "We recommend that you remove your email addresses and phone numbers from the identity server before disconnecting.": "我们推荐您在断开连接前从身份服务器上删除您的邮箱地址和电话号码。", "Identity Server (%(server)s)": "身份服务器(%(server)s)", "not stored": "未存储", "You are currently using to discover and be discoverable by existing contacts you know. You can change your identity server below.": "您正在使用 以发现您认识的现存联系人并被其发现。您可以在下方更改您的身份服务器。", "If you don't want to use to discover and be discoverable by existing contacts you know, enter another identity server below.": "如果您不想使用 以发现您认识的现存联系人并被其发现,请在下方输入另一个身份服务器。", "Identity Server": "身份服务器", "You are not currently using an identity server. To discover and be discoverable by existing contacts you know, add one below.": "您现在没有使用身份服务器。若想发现您认识的现存联系人并被其发现,请在下方添加一个身份服务器。", - "Disconnecting from your identity server will mean you won't be discoverable by other users and you won't be able to invite others by email or phone.": "从您的身份服务器断开连接意味着您将不可被别的用户发现,同时您也将不能用邮箱或手机邀请别人。", - "Using an identity server is optional. If you choose not to use an identity server, you won't be discoverable by other users and you won't be able to invite others by email or phone.": "使用身份服务器是可选的。如果您选择不使用身份服务器,您将不能被别的用户发现,也不能用邮箱或手机邀请别人。", + "Disconnecting from your identity server will mean you won't be discoverable by other users and you won't be able to invite others by email or phone.": "从您的身份服务器断开连接意味着您将不可被别的用户发现,同时您也将不能用邮箱或电话邀请别人。", + "Using an identity server is optional. If you choose not to use an identity server, you won't be discoverable by other users and you won't be able to invite others by email or phone.": "使用身份服务器是可选的。如果您选择不使用身份服务器,您将不能被别的用户发现,也不能用邮箱或电话邀请别人。", "Do not use an identity server": "不使用身份服务器", "Enter a new identity server": "输入一个新的身份服务器", "New version available. Update now.": "新版本可用。现在更新。", @@ -1585,7 +1585,7 @@ "Customise your appearance": "自定义您的外观", "Appearance Settings only affect this %(brand)s session.": "外观设置仅会影响此 %(brand)s 会话。", "Your password was successfully changed. You will not receive push notifications on other sessions until you log back in to them": "您的密码已成功更改。在您重新登录别的会话之前,您将不会在那里收到推送通知", - "Agree to the identity server (%(serverName)s) Terms of Service to allow yourself to be discoverable by email address or phone number.": "同意身份服务器(%(serverName)s)的服务协议以允许自己被通过邮件地址或手机号码发现。", + "Agree to the identity server (%(serverName)s) Terms of Service to allow yourself to be discoverable by email address or phone number.": "同意身份服务器(%(serverName)s)的服务协议以允许自己被通过邮件地址或电话号码发现。", "Discovery": "发现", "Clear cache and reload": "清除缓存重新加载", "Keyboard Shortcuts": "键盘快捷键", @@ -1648,13 +1648,665 @@ "Complete": "完成", "Share": "共享", "Discovery options will appear once you have added an email above.": "您在上方添加邮箱后发现选项将会出现。", - "Unable to share phone number": "无法共享手机号码", + "Unable to share phone number": "无法共享电话号码", "Please enter verification code sent via text.": "请输入短信中发送的验证码。", - "Discovery options will appear once you have added a phone number above.": "您添加手机号码后发现选项将会出现。", + "Discovery options will appear once you have added a phone number above.": "您添加电话号码后发现选项将会出现。", "Remove %(email)s?": "删除 %(email)s 吗?", "Remove %(phone)s?": "删除 %(phone)s 吗?", "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains.": "一封短信已发送至 +%(msisdn)s。请输入其中包含的验证码。", "This user has not verified all of their sessions.": "此用户没有验证其全部会话。", "You have not verified this user.": "您没有验证此用户。", - "You have verified this user. This user has verified all of their sessions.": "您验证了此用户。此用户已验证了其全部会话。" + "You have verified this user. This user has verified all of their sessions.": "您验证了此用户。此用户已验证了其全部会话。", + "* %(senderName)s %(emote)s": "* %(senderName)s %(emote)s", + "%(senderName)s: %(message)s": "%(senderName)s: %(message)s", + "%(senderName)s: %(reaction)s": "%(senderName)s: %(reaction)s", + "%(senderName)s: %(stickerName)s": "%(senderName)s: %(stickerName)s", + "Multiple integration managers": "多个集成管理器", + "Try out new ways to ignore people (experimental)": "尝试忽略别人的新方法(实验性)", + "Enable advanced debugging for the room list": "为此聊天室列表启用高级调试", + "Show info about bridges in room settings": "在聊天室设置中显示桥接信息", + "Use a more compact ‘Modern’ layout": "使用更紧凑的「现代」布局", + "Show typing notifications": "显示输入通知", + "Show shortcuts to recently viewed rooms above the room list": "在聊天室列表上方显示最近浏览过的聊天室的快捷方式", + "Show hidden events in timeline": "显示时间线中的隐藏事件", + "Low bandwidth mode": "低带宽模式", + "Allow fallback call assist server turn.matrix.org when your homeserver does not offer one (your IP address would be shared during a call)": "当您的主服务器没有提供通话辅助服务器时使用备用的 turn.matrix.org 服务器(您的IP地址会在通话期间被共享)", + "Send read receipts for messages (requires compatible homeserver to disable)": "为消息发送已读回执(需要兼容的主服务器方可禁用)", + "Scan this unique code": "扫描此唯一代码", + "Compare unique emoji": "比较唯一表情符号", + "Compare a unique set of emoji if you don't have a camera on either device": "若您在两个设备上都没有相机,比较唯一一组表情符号", + "Verify this session by confirming the following number appears on its screen.": "确认下方数字显示在屏幕上以验证此会话。", + "This bridge is managed by .": "此桥接由 管理。", + "Homeserver feature support:": "主服务器功能支持:", + "Confirm deleting these sessions by using Single Sign On to prove your identity.|other": "通过单点登录证明您的身份并确认删除这些会话。", + "Confirm deleting these sessions by using Single Sign On to prove your identity.|one": "通过单点登录证明您的身份并确认删除此会话。", + "Public Name": "公开名称", + "Securely cache encrypted messages locally for them to appear in search results.": "在本地安全地缓存加密消息以使其出现在搜索结果中。", + "Connecting to integration manager...": "正在连接至集成管理器...", + "Cannot connect to integration manager": "不能连接到集成管理器", + "The integration manager is offline or it cannot reach your homeserver.": "此集成管理器为离线状态或者其不能访问您的主服务器。", + "check your browser plugins for anything that might block the identity server (such as Privacy Badger)": "检查您的浏览器是否安装有可能屏蔽身份服务器的插件(例如 Privacy Badger)", + "Use an Integration Manager (%(serverName)s) to manage bots, widgets, and sticker packs.": "使用集成管理器 (%(serverName)s) 以管理机器人、小挂件和贴图集。", + "Use an Integration Manager to manage bots, widgets, and sticker packs.": "使用集成管理器以管理机器人、小挂件和贴图集。", + "Manage integrations": "管理集成", + "Integration Managers receive configuration data, and can modify widgets, send room invites, and set power levels on your behalf.": "集成管理器接收配置数据,并可以以您的名义修改小挂件、发送聊天室邀请及设置权限级别。", + "Use between %(min)s pt and %(max)s pt": "请使用介于 %(min)s pt 和 %(max)s pt 之间的大小", + "Deactivate account": "停用帐号", + "To report a Matrix-related security issue, please read the Matrix.org Security Disclosure Policy.": "要报告 Matrix 相关的安全问题,请阅读 Matrix.org 的安全公开策略。", + "Something went wrong. Please try again or view your console for hints.": "出现问题。请重试或查看您的终端以获得提示。", + "Please try again or view your console for hints.": "请重试或查看您的终端以获得提示。", + "Your server admin has disabled end-to-end encryption by default in private rooms & Direct Messages.": "您的服务器管理员未在私人聊天室和私聊中默认启用端对端加密。", + "Manage the names of and sign out of your sessions below or verify them in your User Profile.": "在下方管理会话名称,登出您的会话或在您的用户资料中验证它们。", + "This room is bridging messages to the following platforms. Learn more.": "此聊天室正将消息桥接到以下平台。了解更多。", + "This room isn’t bridging messages to any platforms. Learn more.": "此聊天室未将消息桥接到任何平台。了解更多。", + "Bridges": "桥接", + "Someone is using an unknown session": "有人在使用未知会话", + "This room is end-to-end encrypted": "此聊天室是端对端加密的", + "Everyone in this room is verified": "聊天室中所有人都已被验证", + "Edit message": "编辑消息", + "Your key share request has been sent - please check your other sessions for key share requests.": "您的密钥共享请求已发送——请检查您别的会话。", + "Key share requests are sent to your other sessions automatically. If you rejected or dismissed the key share request on your other sessions, click here to request the keys for this session again.": "密钥共享请求会自动发送至您别的会话。如果您拒绝或忽略了您别的会话上的密钥共享请求,请点击此处重新为此会话请求密钥。", + "If your other sessions do not have the key for this message you will not be able to decrypt them.": "如果您别的会话没有此消息的密钥您将不能解密它们。", + "Re-request encryption keys from your other sessions.": "从您别的会话重新请求加密密钥。", + "This message cannot be decrypted": "此消息无法被解密", + "Encrypted by an unverified session": "由未验证的会话加密", + "Unencrypted": "未加密", + "Encrypted by a deleted session": "由已删除的会话加密", + "The authenticity of this encrypted message can't be guaranteed on this device.": "此加密消息的权威性不能在此设备上被保证。", + "Scroll to most recent messages": "滚动到最近的消息", + "Close preview": "关闭预览", + "Emoji picker": "表情符号选择器", + "Send a reply…": "发送回复…", + "Send a message…": "发送消息…", + "Bold": "粗体", + "Italics": "斜体", + "Strikethrough": "删除线", + "Code block": "代码块", + "Room %(name)s": "聊天室 %(name)s", + "No recently visited rooms": "没有最近访问过的聊天室", + "People": "联系人", + "Create room": "创建聊天室", + "Custom Tag": "自定义标签", + "Joining room …": "正在加入聊天室…", + "Loading …": "正在加载…", + "Rejecting invite …": "正在拒绝邀请…", + "Join the conversation with an account": "使用一个账户加入对话", + "Sign Up": "注册", + "Loading room preview": "正在加载聊天室预览", + "You were kicked from %(roomName)s by %(memberName)s": "您被 %(memberName)s 踢出了 %(roomName)s", + "Reason: %(reason)s": "原因:%(reason)s", + "Forget this room": "忘记此聊天室", + "Re-join": "重新加入", + "You were banned from %(roomName)s by %(memberName)s": "您被 %(memberName)s 从 %(roomName)s 封禁了", + "Something went wrong with your invite to %(roomName)s": "您到 %(roomName)s 的邀请出错", + "An error (%(errcode)s) was returned while trying to validate your invite. You could try to pass this information on to a room admin.": "尝试验证您的邀请时返回错误(%(errcode)s)。您可以将此信息转告给聊天室管理员。", + "Try to join anyway": "仍然尝试加入", + "You can still join it because this is a public room.": "您仍然能加入,因为这是一个公共聊天室。", + "Join the discussion": "加入讨论", + "This invite to %(roomName)s was sent to %(email)s which is not associated with your account": "这个到 %(roomName)s 的邀请是发送给 %(email)s 的,而此邮箱没有关联您的账户", + "Link this email with your account in Settings to receive invites directly in %(brand)s.": "要在 %(brand)s 中直接接收邀请,请在设置中将您的账户连接到此邮箱。", + "This invite to %(roomName)s was sent to %(email)s": "这个到 %(roomName)s 的邀请是发送给 %(email)s 的", + "Use an identity server in Settings to receive invites directly in %(brand)s.": "要直接在 %(brand)s 中接收邀请,请在设置中使用一个身份服务器。", + "Share this email in Settings to receive invites directly in %(brand)s.": "要在 %(brand)s 中直接接收邀请,请在设置中共享此邮箱。", + "Do you want to chat with %(user)s?": "您想和 %(user)s 聊天吗?", + " wants to chat": " 想聊天", + "Start chatting": "开始聊天", + "Do you want to join %(roomName)s?": "您想加入 %(roomName)s 吗?", + " invited you": " 邀请了您", + "Reject & Ignore user": "拒绝并忽略用户", + "You're previewing %(roomName)s. Want to join it?": "您正在预览 %(roomName)s。想加入吗?", + "%(roomName)s can't be previewed. Do you want to join it?": "%(roomName)s 不能被预览。您想加入吗?", + "This room doesn't exist. Are you sure you're at the right place?": "此聊天室不存在。您确定您在正确的地方吗?", + "Try again later, or ask a room admin to check if you have access.": "请稍后重试,或询问聊天室管理员以检查您是否有权限。", + "%(errcode)s was returned while trying to access the room. If you think you're seeing this message in error, please submit a bug report.": "尝试访问该房间是返回了 %(errcode)s。如果您认为您看到此消息是个错误,请提交一个错误报告。", + "Appearance": "外观", + "Show rooms with unread messages first": "优先显示有未读消息的聊天室", + "Show previews of messages": "显示消息预览", + "Sort by": "排序", + "Activity": "活动", + "A-Z": "字典顺序", + "List options": "列表选项", + "Jump to first unread room.": "跳转至第一个未读聊天室。", + "Jump to first invite.": "跳转至第一个邀请。", + "Add room": "添加聊天室", + "Show %(count)s more|other": "多显示 %(count)s 个", + "Show %(count)s more|one": "多显示 %(count)s 个", + "Use default": "使用默认", + "Mentions & Keywords": "提及和关键词", + "Notification options": "通知选项", + "Leave Room": "离开聊天室", + "Forget Room": "忘记聊天室", + "Favourited": "已收藏", + "Room options": "聊天室选项", + "%(count)s unread messages including mentions.|other": "包括提及在内有 %(count)s 个未读消息。", + "%(count)s unread messages including mentions.|one": "1 个未读提及。", + "%(count)s unread messages.|other": "%(count)s 个未读消息。", + "%(count)s unread messages.|one": "1 个未读消息。", + "Unread messages.": "未读消息。", + "This room is public": "此聊天室为公共的", + "Away": "离开", + "This room has already been upgraded.": "此聊天室已经被升级。", + "Unknown Command": "未知命令", + "Unrecognised command: %(commandText)s": "未识别的命令:%(commandText)s", + "You can use /help to list available commands. Did you mean to send this as a message?": "您可以使用 /help 列出可用命令。您是否要将其作为消息发送?", + "Hint: Begin your message with // to start it with a slash.": "提示:以 // 开始您的消息来使其以一个斜杠开始。", + "Send as message": "作为消息发送", + "Failed to connect to integration manager": "连接至集成管理器失败", + "Mark all as read": "标记所有为已读", + "There was an error updating the room's alternative addresses. It may not be allowed by the server or a temporary failure occurred.": "更新此聊天室的备用地址时出现错误。可能是服务器不允许,也可能是出现了一个暂时的错误。", + "Error creating address": "创建地址时出现错误", + "There was an error creating that address. It may not be allowed by the server or a temporary failure occurred.": "创建地址时出现错误。可能是服务器不允许,也可能是出现了一个暂时的错误。", + "You don't have permission to delete the address.": "您没有权限删除此地址。", + "There was an error removing that address. It may no longer exist or a temporary error occurred.": "删除那个地址时出现错误。可能它已不存在,也可能出现了一个暂时的错误。", + "Error removing address": "删除地址时出现错误", + "Local address": "本地地址", + "Published Addresses": "发布的地址", + "Published addresses can be used by anyone on any server to join your room. To publish an address, it needs to be set as a local address first.": "发布的地址可以被任何服务器上的任何人用来加入您的聊天室。要发布一个地址,它必须先被设为一个本地地址。", + "Other published addresses:": "其它发布的地址:", + "No other published addresses yet, add one below": "还没有别的发布的地址,可在下方添加", + "New published address (e.g. #alias:server)": "新的发布的地址(例如 #alias:server)", + "Local Addresses": "本地地址", + "Set addresses for this room so users can find this room through your homeserver (%(localDomain)s)": "为此聊天室设置地址以便用户通过您的主服务器(%(localDomain)s)找到此聊天室", + "Waiting for you to accept on your other session…": "等待您在您别的会话上接受…", + "Waiting for %(displayName)s to accept…": "等待 %(displayName)s 接受…", + "Accepting…": "正在接受…", + "Start Verification": "开始验证", + "Messages in this room are end-to-end encrypted.": "此聊天室内的消息是端对端加密的。", + "Your messages are secured and only you and the recipient have the unique keys to unlock them.": "您的消息是安全的,只有您和收件人有解开它们的唯一密钥。", + "Messages in this room are not end-to-end encrypted.": "此聊天室内的消息未端对端加密。", + "In encrypted rooms, your messages are secured and only you and the recipient have the unique keys to unlock them.": "在加密聊天室中,您的消息是安全的,只有您和收件人有解开它们的唯一密钥。", + "Verify User": "验证用户", + "For extra security, verify this user by checking a one-time code on both of your devices.": "为了更加安全,通过在您二者的设备上检查一次性代码来验证此用户。", + "Your messages are not secure": "您的消息不安全", + "One of the following may be compromised:": "以下之一可能被损害:", + "Your homeserver": "您的主服务器", + "The homeserver the user you’re verifying is connected to": "您在验证的用户连接到的主服务器", + "Yours, or the other users’ internet connection": "您的或另一位用户的网络连接", + "Yours, or the other users’ session": "您的或另一位用户的会话", + "Trusted": "受信任的", + "Not trusted": "不受信任的", + "%(count)s verified sessions|other": "%(count)s 个已验证的会话", + "%(count)s verified sessions|one": "1 个已验证的会话", + "Hide verified sessions": "隐藏已验证的会话", + "%(count)s sessions|other": "%(count)s 个会话", + "%(count)s sessions|one": "%(count)s 个会话", + "Hide sessions": "隐藏会话", + "Direct message": "私聊", + "No recent messages by %(user)s found": "没有找到 %(user)s 最近发送的消息", + "Try scrolling up in the timeline to see if there are any earlier ones.": "请尝试在时间线中向上滚动以查看是否有更早的。", + "Remove recent messages by %(user)s": "删除 %(user)s 最近发送的消息", + "You are about to remove %(count)s messages by %(user)s. This cannot be undone. Do you wish to continue?|other": "您将删除 %(user)s 发送的 %(count)s 条消息。此操作不能撤销。您想继续吗?", + "You are about to remove %(count)s messages by %(user)s. This cannot be undone. Do you wish to continue?|one": "您将删除 %(user)s 发送的 1 条消息。此操作不能撤销。您想继续吗?", + "For a large amount of messages, this might take some time. Please don't refresh your client in the meantime.": "对于大量消息,可能会消耗一段时间。在此期间请不要刷新您的客户端。", + "Remove %(count)s messages|other": "删除 %(count)s 条消息", + "Remove %(count)s messages|one": "删除 1 条消息", + "Remove recent messages": "删除最近消息", + "%(role)s in %(roomName)s": "%(roomName)s 中的 %(role)s", + "Deactivate user?": "停用用户吗?", + "Deactivating this user will log them out and prevent them from logging back in. Additionally, they will leave all the rooms they are in. This action cannot be reversed. Are you sure you want to deactivate this user?": "停用此用户将会使其登出并阻止其再次登入。而且此用户也会离开其所在的所有聊天室。此操作不可逆。您确定要停用此用户吗?", + "Deactivate user": "停用用户", + "Failed to deactivate user": "停用用户失败", + "This client does not support end-to-end encryption.": "此客户端不支持端对端加密。", + "Security": "安全", + "Verify by scanning": "扫码验证", + "Ask %(displayName)s to scan your code:": "请 %(displayName)s 扫描您的代码:", + "If you can't scan the code above, verify by comparing unique emoji.": "如果您不能扫描以上代码,请通过比较唯一的表情符号来验证。", + "Verify by comparing unique emoji.": "通过比较唯一的表情符号来验证。", + "Verify by emoji": "通过表情符号验证", + "Almost there! Is your other session showing the same shield?": "快完成了!您的另一个会话显示了同样的盾牌吗?", + "Almost there! Is %(displayName)s showing the same shield?": "快完成了!%(displayName)s 显示了同样的盾牌吗?", + "Verify all users in a room to ensure it's secure.": "验证聊天室中所有用户以确保其安全。", + "In encrypted rooms, verify all users to ensure it’s secure.": "在加密聊天室中,验证所有用户以确保其安全。", + "You've successfully verified your device!": "您成功验证了您的设备!", + "You've successfully verified %(deviceName)s (%(deviceId)s)!": "您成功验证了 %(deviceName)s (%(deviceId)s)!", + "You've successfully verified %(displayName)s!": "您成功验证了 %(displayName)s!", + "Verified": "已验证", + "Got it": "知道了", + "Start verification again from the notification.": "请从提示重新开始验证。", + "Start verification again from their profile.": "请从对方资料重新开始验证。", + "Verification timed out.": "雅正超时。", + "You cancelled verification on your other session.": "您在您别的会话上取消了验证。", + "%(displayName)s cancelled verification.": "%(displayName)s 取消了验证。", + "You cancelled verification.": "您取消了验证。", + "Verification cancelled": "验证已取消", + "Compare emoji": "比较表情符号", + "Encryption enabled": "加密已启用", + "Messages in this room are end-to-end encrypted. Learn more & verify this user in their user profile.": "此聊天室中的消息是端对端加密的。请在其用户资料中了解更多并验证此用户。", + "Encryption not enabled": "加密未启用", + "The encryption used by this room isn't supported.": "不支持此聊天室使用的加密方式。", + "React": "回应", + "Message Actions": "消息操作", + "Show image": "显示图像", + "You have ignored this user, so their message is hidden. Show anyways.": "您已忽略该用户,所以其消息已被隐藏。仍然显示。", + "You verified %(name)s": "您验证了 %(name)s", + "You cancelled verifying %(name)s": "您取消了 %(name)s 的验证", + "%(name)s cancelled verifying": "%(name)s 取消了验证", + "You accepted": "您接受了", + "%(name)s accepted": "%(name)s 接受了", + "You declined": "您拒绝了", + "You cancelled": "您取消了", + "%(name)s declined": "%(name)s 拒绝了", + "%(name)s cancelled": "%(name)s 取消了", + "Accepting …": "正在接受…", + "Declining …": "正在拒绝…", + "%(name)s wants to verify": "%(name)s 想要验证", + "You sent a verification request": "您发送了一个验证请求", + "Show all": "显示全部", + "Reactions": "回应", + " reacted with %(content)s": " 回应了 %(content)s", + "reacted with %(shortName)s": "回应了 %(shortName)s", + "Message deleted": "消息已删除", + "Message deleted by %(name)s": "消息被 %(name)s 删除", + "Message deleted on %(date)s": "消息于 %(date)s 被删除", + "Edited at %(date)s": "编辑于 %(date)s", + "Click to view edits": "点击查看编辑", + "Edited at %(date)s. Click to view edits.": "编辑于 %(date)s。点击以查看编辑。", + "edited": "被编辑过", + "Can't load this message": "无法加载此消息", + "Submit logs": "提交日志", + "Frequently Used": "经常使用", + "Smileys & People": "表情和人", + "Animals & Nature": "动物和自然", + "Food & Drink": "食物和饮料", + "Activities": "活动", + "Travel & Places": "旅行和地点", + "Objects": "物体", + "Symbols": "符号", + "Flags": "旗帜", + "Categories": "类别", + "Quick Reactions": "快速回应", + "Cancel search": "取消搜索", + "Any of the following data may be shared:": "以下数据之一可能被分享:", + "Your display name": "您的显示名称", + "Your avatar URL": "您的头像链接", + "Your user ID": "您的用户 ID", + "Your theme": "您的主题", + "%(brand)s URL": "%(brand)s 的链接", + "Room ID": "聊天室 ID", + "Widget ID": "小挂件 ID", + "Using this widget may share data with %(widgetDomain)s & your Integration Manager.": "使用此小挂件可能会和 %(widgetDomain)s 及您的集成管理器共享数据 。", + "Using this widget may share data with %(widgetDomain)s.": "使用此小挂件可能会和 %(widgetDomain)s 共享数据 。", + "Widgets do not use message encryption.": "小挂件不适用消息加密。", + "This widget may use cookies.": "此小挂件可能使用 cookie。", + "More options": "更多选项", + "Please create a new issue on GitHub so that we can investigate this bug.": "请在 GitHub 上创建一个新 issue 以便我们调查此错误。", + "Rotate Left": "向左旋转", + "Rotate counter-clockwise": "逆时针旋转", + "Rotate Right": "向右旋转", + "Rotate clockwise": "顺时针旋转", + "QR Code": "QR 码", + "Room address": "聊天室地址", + "e.g. my-room": "例如 my-room", + "Some characters not allowed": "一些字符不被允许", + "Please provide a room address": "请提供一个聊天室地址", + "This address is available to use": "此地址可用", + "This address is already in use": "此地址已被使用", + "Enter a server name": "输入一个服务器名", + "Looks good": "看着不错", + "Can't find this server or its room list": "不能找到此服务器或其聊天室列表", + "All rooms": "所有聊天室", + "Your server": "您的服务器", + "Are you sure you want to remove %(serverName)s": "您确定想删除 %(serverName)s 吗", + "Remove server": "删除服务器", + "Matrix": "Matrix", + "Add a new server": "添加一个新服务器", + "Enter the name of a new server you want to explore.": "输入您想探索的新服务器名。", + "Server name": "服务器名", + "Add a new server...": "添加一个新服务器...", + "%(networkName)s rooms": "%(networkName)s 的聊天室", + "Matrix rooms": "Matrix 聊天室", + "Use an identity server to invite by email. Use the default (%(defaultIdentityServerName)s) or manage in Settings.": "使用一个身份服务器以通过邮箱邀请。使用默认(%(defaultIdentityServerName)s)或在设置中管理。", + "Use an identity server to invite by email. Manage in Settings.": "使用一个身份服务器以通过邮箱邀请。在设置中管理。", + "Close dialog": "关闭对话框", + "Please tell us what went wrong or, better, create a GitHub issue that describes the problem.": "请告诉我们哪里出错了,或最好创建一个 GitHub issue 来描述该问题。", + "Reminder: Your browser is unsupported, so your experience may be unpredictable.": "提醒:您的浏览器不被支持,所以您的体验可能不可预料。", + "GitHub issue": "GitHub issue", + "Notes": "提示", + "If there is additional context that would help in analysing the issue, such as what you were doing at the time, room IDs, user IDs, etc., please include those things here.": "如果有额外的上下文可以帮助我们分析问题,比如您当时在做什么、房间 ID、用户 ID 等等,请将其列于此处。", + "Removing…": "正在删除…", + "Destroy cross-signing keys?": "销毁交叉签名密钥?", + "Deleting cross-signing keys is permanent. Anyone you have verified with will see security alerts. You almost certainly don't want to do this, unless you've lost every device you can cross-sign from.": "删除交叉签名密钥是永久的。所有您验证过的人都会看到安全警报。除非您丢失了所有可以交叉签名的设备,否则几乎可以确定您不想这么做。", + "Clear cross-signing keys": "清楚交叉签名密钥", + "Clear all data in this session?": "清除此会话中的所有数据吗?", + "Clearing all data from this session is permanent. Encrypted messages will be lost unless their keys have been backed up.": "清除此会话中的所有数据是永久的。加密消息会丢失,除非其密钥已被备份。", + "Clear all data": "清除所有数据", + "Please enter a name for the room": "请为此聊天室输入一个名称", + "Set a room address to easily share your room with other people.": "设置一个聊天室地址以轻松地和别人共享您的聊天室。", + "This room is private, and can only be joined by invitation.": "此聊天室是私人的,只能通过邀请加入。", + "You can’t disable this later. Bridges & most bots won’t work yet.": "您之后不能禁用此项。桥接和大部分机器人还不能正常工作。", + "Enable end-to-end encryption": "启用端对端加密", + "Create a public room": "创建一个公共聊天室", + "Create a private room": "创建一个私人聊天室", + "Topic (optional)": "主题(可选)", + "Make this room public": "将此聊天室设为公共的", + "Hide advanced": "隐藏高级", + "Show advanced": "显示高级", + "Block users on other matrix homeservers from joining this room (This setting cannot be changed later!)": "阻止别的 matrix 主服务器上的用户加入此聊天室(此设置之后不能更改!)", + "You've previously used a newer version of %(brand)s with this session. To use this version again with end to end encryption, you will need to sign out and back in again.": "您曾在此会话中使用了一个更新版本的 %(brand)s。要再使用此版本并使用端对端加密,您需要登出再重新登录。", + "Confirm your account deactivation by using Single Sign On to prove your identity.": "通过单点登录证明您的身份并确认停用您的账户。", + "Are you sure you want to deactivate your account? This is irreversible.": "您确定要停用您的账号吗?此操作不可逆。", + "Confirm account deactivation": "确认账号停用", + "There was a problem communicating with the server. Please try again.": "联系服务器时出现问题。请重试。", + "Server did not require any authentication": "服务器不要求任何认证", + "Server did not return valid authentication information.": "服务器未返回有效认证信息。", + "View Servers in Room": "查看聊天室中的服务器", + "Verification Requests": "验证请求", + "Verifying this user will mark their session as trusted, and also mark your session as trusted to them.": "验证此用户会将其会话标记为受信任的,并将您的会话对其标记为受信任的。", + "Verify this device to mark it as trusted. Trusting this device gives you and other users extra peace of mind when using end-to-end encrypted messages.": "验证此设备以将其标记为受信任的。信任此设备可让您和别的用户在使用端对端加密消息时更加放心。", + "Verifying this device will mark it as trusted, and users who have verified with you will trust this device.": "验证此设备会将其标记为受信任的,而验证了您的用户将会信任此设备。", + "Integrations are disabled": "集成已禁用", + "Enable 'Manage Integrations' in Settings to do this.": "在设置中启用「管理集成」以执行此操作。", + "Integrations not allowed": "集成未被允许", + "Your %(brand)s doesn't allow you to use an Integration Manager to do this. Please contact an admin.": "您的 %(brand)s 不允许您使用集成管理器来完成此操作。请联系管理员。", + "To continue, use Single Sign On to prove your identity.": "要继续,请使用单点登录证明您的身份。", + "Confirm to continue": "确认以继续", + "Click the button below to confirm your identity.": "点击下方按钮确认您的身份。", + "Failed to invite the following users to chat: %(csvUsers)s": "邀请以下用户加入聊天失败:%(csvUsers)s", + "Something went wrong trying to invite the users.": "尝试邀请用户时出错。", + "We couldn't invite those users. Please check the users you want to invite and try again.": "我们不能邀请这些用户。请检查您想邀请的用户并重试。", + "Failed to find the following users": "寻找以下用户失败", + "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s": "下列用户可能不存在或无效,因此不能被邀请:%(csvNames)s", + "Recent Conversations": "最近对话", + "Suggestions": "建议", + "Recently Direct Messaged": "最近私聊", + "Direct Messages": "私聊", + "Start a conversation with someone using their name, username (like ) or email address.": "使用名字,用户名(像是 )或邮件地址和某人开始对话。", + "Go": "前往", + "Invite someone using their name, username (like ), email address or share this room.": "使用名字,用户名(像是 )或邮件地址邀请某人,或者分享此聊天室。", + "a new master key signature": "一个新的主密钥签名", + "a new cross-signing key signature": "一个新的交叉签名密钥的签名", + "a device cross-signing signature": "一个设备的交叉签名的签名", + "a key signature": "一个密钥签名", + "Upload completed": "上传完成", + "Cancelled signature upload": "已取消签名上传", + "Unable to upload": "无法上传", + "Signature upload success": "签名上传成功", + "Signature upload failed": "签名上传失败", + "If the other version of %(brand)s is still open in another tab, please close it as using %(brand)s on the same host with both lazy loading enabled and disabled simultaneously will cause issues.": "如果别的 %(brand)s 版本在别的标签页中仍然开启,请关闭它,因为在同一宿主上同时使用开启了延迟加载和关闭了延迟加载的 %(brand)s 会导致问题。", + "Confirm by comparing the following with the User Settings in your other session:": "通过比较下方内容和您别的会话中的用户设置来确认:", + "Confirm this user's session by comparing the following with their User Settings:": "通过比较下方内容和对方用户设置来确认此用户会话:", + "Session name": "会话名称", + "Session key": "会话密钥", + "If they don't match, the security of your communication may be compromised.": "如果它们不匹配,您通讯的安全性可能已受损。", + "Verify session": "验证会话", + "Your homeserver doesn't seem to support this feature.": "您的主服务器似乎不支持此功能。", + "Message edits": "消息编辑", + "Your account is not secure": "您的账户不安全", + "Your password": "您的密码", + "This session, or the other session": "此会话,或别的会话", + "The internet connection either session is using": "您会话使用的网络连接", + "We recommend you change your password and recovery key in Settings immediately": "我们推荐您立刻在设置中更改您的密码和恢复密钥", + "New session": "新会话", + "Use this session to verify your new one, granting it access to encrypted messages:": "使用此会话以验证您的新会话,并允许其访问加密信息:", + "If you didn’t sign in to this session, your account may be compromised.": "如果您没有登录进此会话,您的账户可能已受损。", + "This wasn't me": "这不是我", + "Use your account to sign in to the latest version of the app at ": "使用您的账户在 登录此应用的最新版", + "You’re already signed in and good to go here, but you can also grab the latest versions of the app on all platforms at element.io/get-started.": "您已经登录且一切已就绪,但您也可以在 element.io/get-started 获取此应用在全平台上的最新版。", + "Go to Element": "前往 Element", + "We’re excited to announce Riot is now Element!": "我们很兴奋地宣布 Riot 现在是 Element 了!", + "Learn more at element.io/previously-riot": "访问 element.io/previously-riot 了解更多", + "Please fill why you're reporting.": "请填写您为何做此报告。", + "Report Content to Your Homeserver Administrator": "向您的主服务器管理员举报内容", + "Reporting this message will send its unique 'event ID' to the administrator of your homeserver. If messages in this room are encrypted, your homeserver administrator will not be able to read the message text or view any files or images.": "举报此消息会将其唯一的「事件 ID」发送给您的主服务器的管理员。如果此聊天室中的消息被加密,您的主服务器管理员将不能阅读消息文本,也不能查看任何文件或图片。", + "Send report": "发送报告", + "Upgrading this room requires closing down the current instance of the room and creating a new room in its place. To give room members the best possible experience, we will:": "更新此聊天室需要关闭此聊天室的当前实力并创建一个新的聊天室代替它。为了给聊天室成员最好的体验,我们会:", + "Automatically invite users": "自动邀请用户", + "Upgrade private room": "更新私人聊天室", + "Upgrade public room": "更新公共聊天室", + "Upgrading a room is an advanced action and is usually recommended when a room is unstable due to bugs, missing features or security vulnerabilities.": "更新聊天室是高级操作,通常建议在聊天室由于错误、缺失功能或安全漏洞而不稳定时使用。", + "This usually only affects how the room is processed on the server. If you're having problems with your %(brand)s, please report a bug.": "通常这只影响聊天室在服务器上的处理方式。如果您对您的 %(brand)s 有问题,请报告一个错误。", + "You'll upgrade this room from to .": "您将把此聊天室从 升级至 。", + "You're all caught up.": "全数阅毕。", + "Server isn't responding": "服务器未响应", + "Your server isn't responding to some of your requests. Below are some of the most likely reasons.": "您的服务器未响应您的一些请求。下方是一些最可能的原因。", + "The server (%(serverName)s) took too long to respond.": "服务器(%(serverName)s)花了太长时间响应。", + "Your firewall or anti-virus is blocking the request.": "您的防火墙或防病毒软件阻止了该请求。", + "A browser extension is preventing the request.": "一个浏览器扩展阻止了该请求。", + "The server is offline.": "该服务器为离线状态。", + "The server has denied your request.": "该服务器拒绝了您的请求。", + "Your area is experiencing difficulties connecting to the internet.": "您的区域难以连接上互联网。", + "A connection error occurred while trying to contact the server.": "尝试联系服务器时出现连接错误。", + "Recent changes that have not yet been received": "尚未被接受的最近更改", + "Sign out and remove encryption keys?": "登出并删除加密密钥?", + "This will allow you to return to your account after signing out, and sign in on other sessions.": "这允许您在登出后返回您的账户并在别的会话上登录。", + "Command Help": "命令帮助", + "To help us prevent this in future, please send us logs.": "要帮助我们防止其以后发生,请给我们发送日志。", + "Missing session data": "缺失会话数据", + "Some session data, including encrypted message keys, is missing. Sign out and sign in to fix this, restoring keys from backup.": "一些会话数据,包括加密消息密钥,已缺失。要修复此问题,登出并重新登录,然后从备份恢复密钥。", + "Your browser likely removed this data when running low on disk space.": "您的浏览器可能在磁盘空间不足时删除了此数据。", + "Integration Manager": "集成管理器", + "Find others by phone or email": "通过电话或邮箱寻找别人", + "Be found by phone or email": "通过电话或邮箱被寻找", + "Use bots, bridges, widgets and sticker packs": "使用机器人、桥接、小挂件和贴图集", + "Terms of Service": "服务协议", + "To continue you need to accept the terms of this service.": "要继续,您需要接受此服务协议。", + "Service": "服务", + "Summary": "总结", + "Document": "文档", + "Upload files (%(current)s of %(total)s)": "上传文件(%(total)s 中之 %(current)s)", + "Upload files": "上传文件", + "Upload all": "全部上传", + "This file is too large to upload. The file size limit is %(limit)s but this file is %(sizeOfThisFile)s.": "此文件过大而不能上传。文件大小限制是 %(limit)s 但此文件为 %(sizeOfThisFile)s。", + "These files are too large to upload. The file size limit is %(limit)s.": "这些文件过大而不能上传。文件大小限制为 %(limit)s。", + "Some files are too large to be uploaded. The file size limit is %(limit)s.": "一些文件过大而不能上传。文件大小限制为 %(limit)s。", + "Upload %(count)s other files|other": "上传 %(count)s 个别的文件", + "Upload %(count)s other files|one": "上传 %(count)s 个别的文件", + "Cancel All": "全部取消", + "Upload Error": "上传错误", + "Verify other session": "验证别的会话", + "Verification Request": "验证请求", + "Wrong file type": "错误文件类型", + "Looks good!": "看着不错!", + "Wrong Recovery Key": "错误的恢复密钥", + "Invalid Recovery Key": "无效的恢复密钥", + "Security Phrase": "安全密码", + "Unable to access secret storage. Please verify that you entered the correct recovery passphrase.": "无法访问秘密存储。请确认您输入了正确的恢复密码。", + "Enter your Security Phrase or to continue.": "输入您的安全密码或以继续。", + "Security Key": "安全密钥", + "Use your Security Key to continue.": "使用您的安全密钥以继续。", + "Restoring keys from backup": "从备份恢复密钥", + "Fetching keys from server...": "正在从服务器获取密钥...", + "%(completed)s of %(total)s keys restored": "%(total)s 个密钥中之 %(completed)s 个已恢复", + "Recovery key mismatch": "恢复密钥不匹配", + "Backup could not be decrypted with this recovery key: please verify that you entered the correct recovery key.": "备份不能被此恢复密钥解密:请确认您输入了正确的恢复密钥。", + "Incorrect recovery passphrase": "不正确的恢复密码", + "Backup could not be decrypted with this recovery passphrase: please verify that you entered the correct recovery passphrase.": "备份不能被此恢复密码解密:请确认您输入了正确的恢复密码。", + "Keys restored": "已恢复密钥", + "Successfully restored %(sessionCount)s keys": "成功恢复了 %(sessionCount)s 个密钥", + "Enter recovery passphrase": "输入恢复密码", + "Enter recovery key": "输入恢复密钥", + "Warning: You should only set up key backup from a trusted computer.": "警告:您应该只从信任的计算机设置密钥备份。", + "If you've forgotten your recovery key you can ": "如果您忘记了恢复密钥,您可以", + "Address (optional)": "地址(可选)", + "Resend edit": "重新发送编辑", + "Resend %(unsentCount)s reaction(s)": "重新发送 %(unsentCount)s 个回应", + "Resend removal": "重新发送删除", + "Report Content": "举报内容", + "Notification settings": "通知设置", + "Help": "帮助", + "Reload": "重新加载", + "Take picture": "拍照", + "Remove for everyone": "为所有人删除", + "Remove for me": "为我删除", + "User Status": "用户状态", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use %(brand)s with an existing Matrix account on a different homeserver.": "您可以使用自定义服务器选项以使用不同的主服务器链接登录至别的 Matrix 服务器。这允许您通过不同的主服务器上的现存 Matrix 账户使用 %(brand)s。", + "Confirm your identity by entering your account password below.": "在下方输入账户密码以确认您的身份。", + "Missing captcha public key in homeserver configuration. Please report this to your homeserver administrator.": "在主服务器配置中缺少验证码公钥。请将此报告给您的主服务器管理员。", + "Unable to validate homeserver/identity server": "无法验证主服务器/身份服务器", + "Enter the location of your Element Matrix Services homeserver. It may use your own domain name or be a subdomain of element.io.": "输入您的 Element Matrix Services 主服务器的地址。它可能使用您自己的域名,也可能是 element.io 的子域名。", + "Enter password": "输入密码", + "Nice, strong password!": "不错,是个强密码!", + "Password is allowed, but unsafe": "密码允许但不安全", + "No identity server is configured so you cannot add an email address in order to reset your password in the future.": "没有配置身份服务器因此您不能添加邮件地址以在将来重置您的密码。", + "Use an email address to recover your account": "使用邮件地址恢复您的账户", + "Enter email address (required on this homeserver)": "输入邮件地址(此主服务器上必须)", + "Doesn't look like a valid email address": "看起来不像有效的邮件地址", + "Passwords don't match": "密码不匹配", + "Other users can invite you to rooms using your contact details": "别的用户可以使用您的联系人信息邀请您加入聊天室", + "Enter phone number (required on this homeserver)": "输入电话号码(此主服务器上必须)", + "Doesn't look like a valid phone number": "看着不像一个有效的电话号码", + "Use lowercase letters, numbers, dashes and underscores only": "仅使用小写字母,数字,横杠和下划线", + "Enter username": "输入用户名", + "Create your Matrix account on ": "在 上创建您的 Matrix 账户", + "Set an email for account recovery. Use email or phone to optionally be discoverable by existing contacts.": "设置邮箱以便恢复账户。您可以选择让现存联系人通过邮箱或电话发现您。", + "Set an email for account recovery. Use email to optionally be discoverable by existing contacts.": "设置邮箱以便恢复账户。您可以选择让现存联系人通过邮箱发现您。", + "Enter your custom homeserver URL What does this mean?": "设置您自定义的主服务器链接这是什么意思?", + "Enter your custom identity server URL What does this mean?": "输入您自定义的身份服务器链接这是什么意思?", + "Sign in to your Matrix account on ": "登录到您在 上的 Matrix 账户", + "Sign in with SSO": "使用单点登录", + "No files visible in this room": "此聊天室中没有可见文件", + "Welcome to %(appName)s": "欢迎来到 %(appName)s", + "Liberate your communication": "解放您的交流", + "Send a Direct Message": "发送私聊", + "Explore Public Rooms": "探索公共聊天室", + "Create a Group Chat": "创建一个群聊", + "Explore rooms": "探索聊天室", + "Self-verification request": "自验证请求", + "%(creator)s created and configured the room.": "%(creator)s 创建并配置了此聊天室。", + "You’re all caught up": "全数阅毕", + "You have no visible notifications in this room.": "您在此聊天室内没有可见通知。", + "Delete the room address %(alias)s and remove %(name)s from the directory?": "删除聊天室地址 %(alias)s 并将 %(name)s 从目录中移除吗?", + "delete the address.": "删除此地址。", + "Preview": "预览", + "View": "查看", + "Find a room…": "寻找聊天室…", + "Find a room… (e.g. %(exampleRoom)s)": "寻找聊天室... (例如 %(exampleRoom)s)", + "If you can't find the room you're looking for, ask for an invite or Create a new room.": "如果您不能找到您所寻找的聊天室,请索要一个邀请或创建新聊天室。", + "Search rooms": "搜索聊天室", + "Switch to light mode": "切换到浅色模式", + "Switch to dark mode": "切换到深色模式", + "Switch theme": "切换主题", + "Security & privacy": "安全和隐私", + "All settings": "所有设置", + "Feedback": "反馈", + "User menu": "用户菜单", + "Session verified": "会话已验证", + "Your Matrix account on ": "您在 上的 Matrix 账户", + "No identity server is configured: add one in server settings to reset your password.": "没有配置身份服务器:在服务器设置中添加一个以重设您的密码。", + "You have been logged out of all sessions and will no longer receive push notifications. To re-enable notifications, sign in again on each device.": "您已经登出了所有会话,并将不会收到推送通知。要重新启用通知,请在每个设备上重新登录。", + "Failed to get autodiscovery configuration from server": "从服务器获取自动发现配置时失败", + "Invalid base_url for m.homeserver": "m.homeserver 的 base_url 无效", + "Homeserver URL does not appear to be a valid Matrix homeserver": "主服务器链接不像是有效的 Matrix 主服务器", + "Invalid base_url for m.identity_server": "m.identity_server 的 base_url 无效", + "Identity server URL does not appear to be a valid identity server": "身份服务器链接不像是有效的身份服务器", + "This account has been deactivated.": "此账号已被停用。", + "Syncing...": "正在同步...", + "Signing In...": "正在登录...", + "If you've joined lots of rooms, this might take a while": "如果您加入了很多聊天室,可能会消耗一些时间", + "Your new account (%(newAccountId)s) is registered, but you're already logged into a different account (%(loggedInUserId)s).": "您的新账户(%(newAccountId)s)已注册,但您已经登录了一个不同的账户(%(loggedInUserId)s)。", + "Continue with previous account": "用之前的账户继续", + "Log in to your new account.": "登录到您的新账户。", + "You can now close this window or log in to your new account.": "您现在可以关闭此窗口或登录到您的新账户。", + "Registration Successful": "注册成功", + "Use Recovery Key or Passphrase": "使用恢复密钥或密码", + "Use Recovery Key": "使用恢复密钥", + "This requires the latest %(brand)s on your other devices:": "这需要您在别的设备上有最新版的 %(brand)s:", + "%(brand)s Web": "%(brand)s 网页版", + "%(brand)s Desktop": "%(brand)s 桌面版", + "%(brand)s iOS": "%(brand)s iOS", + "%(brand)s X for Android": "%(brand)s X for Android", + "or another cross-signing capable Matrix client": "或者别的可以交叉签名的 Matrix 客户端", + "Your new session is now verified. It has access to your encrypted messages, and other users will see it as trusted.": "您的新会话现已被验证。它可以访问您的加密消息,别的用户也会视其为受信任的。", + "Your new session is now verified. Other users will see it as trusted.": "您的新会话现已被验证。别的用户会视其为受信任的。", + "Without completing security on this session, it won’t have access to encrypted messages.": "若不在此会话中完成安全验证,它便不能访问加密消息。", + "Failed to re-authenticate due to a homeserver problem": "由于主服务器的问题,重新认证失败", + "Failed to re-authenticate": "重新认证失败", + "Regain access to your account and recover encryption keys stored in this session. Without them, you won’t be able to read all of your secure messages in any session.": "重新获得访问您账户的权限,并恢复存储在此会话中的加密密钥。没有这些密钥,您将不能在任何会话中阅读您的所有安全消息。", + "Enter your password to sign in and regain access to your account.": "输入您的密码以登录并重新获取访问您账户的权限。", + "Forgotten your password?": "忘记您的密码了吗?", + "Sign in and regain access to your account.": "请登录以重新获取访问您账户的权限。", + "You cannot sign in to your account. Please contact your homeserver admin for more information.": "您不能登录进您的账户。请联系您的主服务器管理员以获取更多信息。", + "You're signed out": "您已登出", + "Clear personal data": "清除个人信息", + "Warning: Your personal data (including encryption keys) is still stored in this session. Clear it if you're finished using this session, or want to sign in to another account.": "警告:您的个人信息(包括加密密钥)仍存储于此会话中。如果您不用再使用此会话或想登录进另一个账户,请清除它。", + "Command Autocomplete": "命令自动补全", + "Community Autocomplete": "社区自动补全", + "DuckDuckGo Results": "DuckDuckGo 结果", + "Emoji Autocomplete": "表情符号自动补全", + "Notification Autocomplete": "通知自动补全", + "Room Autocomplete": "聊天室自动补全", + "User Autocomplete": "用户自动补全", + "Confirm encryption setup": "确认加密设置", + "Click the button below to confirm setting up encryption.": "点击下方按钮以确认设置加密。", + "Safeguard against losing access to encrypted messages & data by backing up encryption keys on your server.": "通过在您的服务器上备份加密密钥来防止丢失您对加密消息和数据的访问权。", + "Generate a Security Key": "生成一个安全密钥", + "We’ll generate a Security Key for you to store somewhere safe, like a password manager or a safe.": "我们会生成一个安全密钥以便让您存储在安全的地方,比如密码管理器或保险箱里。", + "Enter a Security Phrase": "输入一个安全密码", + "Use a secret phrase only you know, and optionally save a Security Key to use for backup.": "使用一个只有您知道的密码,您也可以保存安全密钥以供备份使用。", + "Enter your account password to confirm the upgrade:": "输入您的账户密码以确认更新:", + "Restore your key backup to upgrade your encryption": "恢复您的密钥备份以更新您的加密方式", + "Restore": "恢复", + "You'll need to authenticate with the server to confirm the upgrade.": "您需要和服务器进行认证以确认更新。", + "Upgrade this session to allow it to verify other sessions, granting them access to encrypted messages and marking them as trusted for other users.": "更新此会话以允许其验证别的会话,以允许它们访问加密消息并将其对别的用户标记为受信任的。", + "Enter a security phrase only you know, as it’s used to safeguard your data. To be secure, you shouldn’t re-use your account password.": "输入一个只有您知道的安全密码,它将被用来保护您的数据。为了安全,您不应该复用您的账户密码。", + "Enter a recovery passphrase": "输入一个恢复密码", + "Great! This recovery passphrase looks strong enough.": "棒!这个恢复密码看着够强。", + "Use a different passphrase?": "使用不同的密码?", + "Enter your recovery passphrase a second time to confirm it.": "再次输入您的恢复密码以确认。", + "Confirm your recovery passphrase": "确认您的恢复密码", + "Store your Security Key somewhere safe, like a password manager or a safe, as it’s used to safeguard your encrypted data.": "将您的安全密钥存储在安全的地方,像是密码管理器或保险箱里,它将被用来保护您的加密数据。", + "Copy": "复制", + "Unable to query secret storage status": "无法查询秘密存储状态", + "If you cancel now, you may lose encrypted messages & data if you lose access to your logins.": "如果您现在取消,您可能会丢失加密的消息和数据,如果您丢失了登录信息的话。", + "You can also set up Secure Backup & manage your keys in Settings.": "您也可以在设置中设置安全备份并管理您的密钥。", + "Set up Secure backup": "设置安全备份", + "Upgrade your encryption": "更新您的加密方法", + "Set a Security Phrase": "设置一个安全密码", + "Confirm Security Phrase": "确认安全密码", + "Save your Security Key": "保存您的安全密钥", + "Unable to set up secret storage": "无法设置秘密存储", + "We'll store an encrypted copy of your keys on our server. Secure your backup with a recovery passphrase.": "我们会在服务器上存储一份您的密钥的加密副本。用恢复密码来保护您的备份。", + "Set up with a recovery key": "用恢复密钥设置", + "Please enter your recovery passphrase a second time to confirm.": "请再输入您的恢复密码以确认。", + "Repeat your recovery passphrase...": "重输您的恢复密码...", + "Your recovery key is a safety net - you can use it to restore access to your encrypted messages if you forget your recovery passphrase.": "您的恢复密钥是一张安全网——如果您忘记了恢复密码,则可以使用它来恢复您对加密消息的访问。", + "Keep a copy of it somewhere secure, like a password manager or even a safe.": "在安全的地方保存一份副本,像是密码管理器或者保险箱里。", + "Your recovery key": "您的恢复密钥", + "Your recovery key has been copied to your clipboard, paste it to:": "您的恢复密钥已被复制到您的剪贴板,将其粘贴至:", + "Your recovery key is in your Downloads folder.": "您的恢复密钥在您的下载文件夹里。", + "Without setting up Secure Message Recovery, you won't be able to restore your encrypted message history if you log out or use another session.": "若不设置安全消息恢复,您如果登出或使用另一个会话,则将不能恢复您的加密消息历史。", + "Secure your backup with a recovery passphrase": "用恢复密码保护您的备份", + "Make a copy of your recovery key": "制作一份您的恢复密钥的副本", + "Create key backup": "创建密钥备份", + "This session is encrypting history using the new recovery method.": "此会话正在使用新的恢复方法加密历史。", + "This session has detected that your recovery passphrase and key for Secure Messages have been removed.": "此会话检测到您的恢复密码和安全消息的密钥已被移除。", + "If you did this accidentally, you can setup Secure Messages on this session which will re-encrypt this session's message history with a new recovery method.": "如果您出于意外这样做了,您可以在此会话上设置安全消息,以使用新的加密方式重新加密此会话的消息历史。", + "If disabled, messages from encrypted rooms won't appear in search results.": "如果被禁用,加密聊天室内的消息不会显示在搜索结果中。", + "Disable": "禁用", + "Not currently indexing messages for any room.": "现在没有为任何聊天室索引消息。", + "Currently indexing: %(currentRoom)s": "正在索引:%(currentRoom)s", + "%(brand)s is securely caching encrypted messages locally for them to appear in search results:": "%(brand)s 正在安全地在本地缓存加密消息以使其出现在搜索结果中:", + "Space used:": "已使用空间:", + "Indexed messages:": "已索引的消息:", + "Indexed rooms:": "已索引的聊天室:", + "%(doneRooms)s out of %(totalRooms)s": "%(totalRooms)s 中之 %(doneRooms)s", + "Navigation": "导航", + "Calls": "通话", + "Room List": "聊天室列表", + "Autocomplete": "自动补全", + "Alt": "Alt", + "Alt Gr": "Alt Gr", + "Shift": "Shift", + "Super": "Super", + "Ctrl": "Ctrl", + "New line": "换行", + "Jump to start/end of the composer": "跳转到编辑器的开始/结束", + "Cancel replying to a message": "取消回复消息", + "Scroll up/down in the timeline": "在时间线中向上/下滚动", + "Dismiss read marker and jump to bottom": "忽略已读标记并跳转到底部", + "Jump to oldest unread message": "跳转到最旧的未读消息", + "Upload a file": "上传文件", + "Jump to room search": "跳转到聊天室搜索", + "Select room from the room list": "从聊天室列表选择聊天室", + "Collapse room list section": "折叠聊天室列表段", + "Expand room list section": "展开聊天室列表段", + "Clear room list filter field": "清除聊天室过滤器字段", + "Close dialog or context menu": "关闭对话框或上下文菜单", + "Move autocomplete selection up/down": "上移/下移自动补全选项", + "Cancel autocomplete": "取消自动补全", + "Page Up": "Page Up", + "Page Down": "Page Down", + "Esc": "Esc", + "Enter": "Enter", + "Space": "Space" } From 5801a66d5cb98874c2c2700089901d3c0f185608 Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Tue, 4 Aug 2020 02:45:48 +0000 Subject: [PATCH 058/424] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (2340 of 2340 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/zh_Hant/ --- src/i18n/strings/zh_Hant.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json index a19c435147..9989c2ac52 100644 --- a/src/i18n/strings/zh_Hant.json +++ b/src/i18n/strings/zh_Hant.json @@ -2407,5 +2407,9 @@ "Your area is experiencing difficulties connecting to the internet.": "您所在區域可能遇到一些網際網路連線的問題。", "A connection error occurred while trying to contact the server.": "在試圖與伺服器溝通時遇到連線錯誤。", "The server is not configured to indicate what the problem is (CORS).": "伺服器沒有設定好指示問題是什麼 (CORS)。", - "Recent changes that have not yet been received": "尚未收到最新變更" + "Recent changes that have not yet been received": "尚未收到最新變更", + "No files visible in this room": "在此聊天室中看不到檔案", + "Attach files from chat or just drag and drop them anywhere in a room.": "從聊天中附加檔案,或將其拖放到聊天室的任何地方。", + "You’re all caught up": "您都設定好了", + "You have no visible notifications in this room.": "您在此聊天室沒有可見的通知。" } From 9e647e93960f8e3f68c44720919013c27f4637d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Priit=20J=C3=B5er=C3=BC=C3=BCt?= Date: Mon, 3 Aug 2020 21:33:34 +0000 Subject: [PATCH 059/424] Translated using Weblate (Estonian) Currently translated at 99.7% (2333 of 2340 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/et/ --- src/i18n/strings/et.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/et.json b/src/i18n/strings/et.json index a8490e805b..5eb47a562f 100644 --- a/src/i18n/strings/et.json +++ b/src/i18n/strings/et.json @@ -2400,5 +2400,6 @@ "The server is not configured to indicate what the problem is (CORS).": "Server on seadistatud varjama tegelikke veapõhjuseid (CORS).", "No files visible in this room": "Selles jututoas pole nähtavaid faile", "Attach files from chat or just drag and drop them anywhere in a room.": "Faile saad manueks lisada kas vastava nupu alt vestlusest või sikutades neid jututoa aknasse.", - "You have no visible notifications in this room.": "Jututoas pole nähtavaid teavitusi." + "You have no visible notifications in this room.": "Jututoas pole nähtavaid teavitusi.", + "You're all caught up.": "Ei tea... kõik vist on nüüd tehtud." } From 240ca714bbad527f88dfd35eb7f876afad77cd2e Mon Sep 17 00:00:00 2001 From: Lasse Liehu Date: Mon, 3 Aug 2020 16:18:52 +0000 Subject: [PATCH 060/424] Translated using Weblate (Finnish) Currently translated at 92.7% (2170 of 2340 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/fi/ --- src/i18n/strings/fi.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/fi.json b/src/i18n/strings/fi.json index 8d620828e6..c6abfc0de7 100644 --- a/src/i18n/strings/fi.json +++ b/src/i18n/strings/fi.json @@ -134,7 +134,7 @@ "Last seen": "Viimeksi nähty", "Leave room": "Poistu huoneesta", "Logout": "Kirjaudu ulos", - "Low priority": "Alhainen prioriteetti", + "Low priority": "Matala prioriteetti", "Manage Integrations": "Hallinnoi integraatioita", "Moderator": "Moderaattori", "Name": "Nimi", From a556c3f0ad8357920829051ba041b0800c58726c Mon Sep 17 00:00:00 2001 From: Marcelo Filho Date: Tue, 4 Aug 2020 00:39:56 +0000 Subject: [PATCH 061/424] Translated using Weblate (Portuguese (Brazil)) Currently translated at 94.1% (2203 of 2340 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/pt_BR/ --- src/i18n/strings/pt_BR.json | 223 ++++++++++++++++++------------------ 1 file changed, 114 insertions(+), 109 deletions(-) diff --git a/src/i18n/strings/pt_BR.json b/src/i18n/strings/pt_BR.json index 496974122b..c572cc82bf 100644 --- a/src/i18n/strings/pt_BR.json +++ b/src/i18n/strings/pt_BR.json @@ -9,8 +9,8 @@ "Are you sure you want to reject the invitation?": "Você tem certeza que deseja recusar este convite?", "Banned users": "Usuários bloqueados", "Bans user with given id": "Bloquear o usuário com o ID indicado", - "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s mudou a descrição para \"%(topic)s\".", - "Changes your display nickname": "Troca o seu apelido", + "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s alterou a descrição para \"%(topic)s\".", + "Changes your display nickname": "Alterar seu nome e sobrenome", "Click here to fix": "Clique aqui para resolver isso", "Commands": "Comandos", "Confirm password": "Confirme a nova senha", @@ -25,7 +25,7 @@ "Emoji": "Emoji", "Error": "Erro", "Export E2E room keys": "Exportar chaves ponta-a-ponta da sala", - "Failed to change password. Is your password correct?": "Não foi possível mudar a senha. A sua senha está correta?", + "Failed to change password. Is your password correct?": "Não foi possível alterar a senha. A sua senha está correta?", "Failed to leave room": "Falha ao tentar deixar a sala", "Failed to reject invitation": "Falha ao tentar recusar o convite", "Failed to unban": "Não foi possível desbloquear", @@ -44,7 +44,7 @@ "Invalid Email Address": "Endereço de e-mail inválido", "Invites": "Convidar", "Invites user with given id to current room": "Convida o usuário com o ID especificado para esta sala", - "Sign in with": "Quero entrar", + "Sign in with": "Entrar com", "Kicks user with given id": "Remover o usuário com o ID informado", "Labs": "Laboratório", "Leave room": "Sair da sala", @@ -126,8 +126,8 @@ "%(senderName)s answered the call.": "%(senderName)s aceitou a chamada.", "%(senderName)s banned %(targetName)s.": "%(senderName)s bloqueou %(targetName)s.", "Call Timeout": "Tempo esgotado. Chamada encerrada", - "%(senderName)s changed their profile picture.": "%(senderName)s alterou sua imagem de perfil.", - "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s alterou o nível de permissões de %(powerLevelDiffText)s.", + "%(senderName)s changed their profile picture.": "%(senderName)s alterou a foto de perfil.", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s alterou o nível de permissão de %(powerLevelDiffText)s.", "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s alterou o nome da sala para %(roomName)s.", "click to reveal": "clique para ver", "/ddg is not a command": "/ddg não é um comando", @@ -153,8 +153,8 @@ "Power level must be positive integer.": "O nível de permissões tem que ser um número inteiro e positivo.", "Reason": "Razão", "%(targetName)s rejected the invitation.": "%(targetName)s recusou o convite.", - "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s removeu o seu nome público (%(oldDisplayName)s).", - "%(senderName)s removed their profile picture.": "%(senderName)s removeu sua imagem de perfil.", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s removeu o nome e sobrenome (%(oldDisplayName)s).", + "%(senderName)s removed their profile picture.": "%(senderName)s removeu a foto de perfil.", "%(senderName)s requested a VoIP conference.": "%(senderName)s deseja iniciar uma chamada em grupo.", "%(brand)s does not have permission to send you notifications - please check your browser settings": "%(brand)s não tem permissão para lhe enviar notificações - verifique as configurações do seu navegador", "%(brand)s was not given permission to send notifications - please try again": "%(brand)s não tem permissão para lhe enviar notificações - tente novamente", @@ -162,7 +162,7 @@ "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s enviou uma imagem.", "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s enviou um convite para %(targetDisplayName)s entrar na sala.", "%(senderName)s set a profile picture.": "%(senderName)s definiu uma imagem de perfil.", - "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s definiu seu nome público para %(displayName)s.", + "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s definiu o nome e sobrenome para %(displayName)s.", "This email address is already in use": "Este endereço de e-mail já está em uso", "This email address was not found": "Este endereço de e-mail não foi encontrado", "The remote side failed to pick up": "Houve alguma falha que não permitiu a outra pessoa atender à chamada", @@ -182,7 +182,7 @@ "You need to be able to invite users to do that.": "Para fazer isso, você tem que ter permissão para convidar outras pessoas.", "You need to be logged in.": "Você tem que estar logado.", "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "O seu endereço de e-mail não parece estar associado a uma conta de usuária/o Matrix neste servidor.", - "Set a display name:": "Defina um nome público para você:", + "Set a display name:": "Defina um nome e sobrenome:", "Upload an avatar:": "Enviar uma foto de perfil:", "This server does not support authentication with a phone number.": "Este servidor não permite a autenticação através de números de telefone.", "An error occurred: %(error_string)s": "Um erro ocorreu: %(error_string)s", @@ -209,13 +209,13 @@ "Disinvite": "Desconvidar", "Download %(text)s": "Baixar %(text)s", "Failed to ban user": "Não foi possível bloquear o usuário", - "Failed to change power level": "Não foi possível mudar o nível de permissões", + "Failed to change power level": "Não foi possível alterar o nível de permissão", "Failed to join room": "Não foi possível ingressar na sala", "Failed to kick": "Não foi possível remover o usuário", "Failed to load timeline position": "Não foi possível carregar a posição na linha do tempo", "Failed to mute user": "Não foi possível remover notificações da/do usuária/o", "Failed to reject invite": "Não foi possível recusar o convite", - "Failed to set display name": "Houve falha ao definir o nome público", + "Failed to set display name": "Falha ao definir o nome e sobrenome", "Fill screen": "Tela cheia", "Incorrect verification code": "Código de verificação incorreto", "Join Room": "Ingressar na sala", @@ -237,7 +237,7 @@ "Tried to load a specific point in this room's timeline, but was unable to find it.": "Tentei carregar um ponto específico na linha do tempo desta sala, mas não o encontrei.", "You seem to be in a call, are you sure you want to quit?": "Parece que você está em uma chamada. Tem certeza que quer sair?", "You seem to be uploading files, are you sure you want to quit?": "Parece que você está enviando arquivos. Tem certeza que quer sair?", - "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Você não poderá desfazer esta mudança, pois estará dando a este(a) usuário(a) o mesmo nível de permissões que você.", + "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Você não poderá desfazer essa alteração, pois está promovendo o usuário ao mesmo nível de permissão que você.", "Room": "Sala", "Cancel": "Cancelar", "Ban": "Bloquear", @@ -307,7 +307,7 @@ "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Você será redirecionado para um site de terceiros para poder autenticar a sua conta, tendo em vista usar o serviço %(integrationsUrl)s. Deseja prosseguir?", "Export": "Exportar", "Import": "Importar", - "Incorrect username and/or password.": "Nome de usuária(o) e/ou senha incorreto.", + "Incorrect username and/or password.": "Nome de usuário e/ou senha incorreto.", "Invited": "Convidada(o)", "Results from DuckDuckGo": "Resultados de DuckDuckGo", "Verified key": "Chave verificada", @@ -317,7 +317,7 @@ "No Microphones detected": "Não foi detectado nenhum microfone", "No Webcams detected": "Não foi detectada nenhuma Webcam", "No media permissions": "Não há permissões de uso de vídeo/áudio no seu navegador", - "You may need to manually permit %(brand)s to access your microphone/webcam": "Você talvez precise autorizar manualmente que o %(brand)s acesse seu microfone e webcam", + "You may need to manually permit %(brand)s to access your microphone/webcam": "Pode ser necessário permitir manualmente que o %(brand)s acesse seu microfone e webcam", "Default Device": "Aparelho padrão", "Microphone": "Microfone", "Camera": "Câmera de vídeo", @@ -337,16 +337,16 @@ "Uploading %(filename)s and %(count)s others|zero": "Enviando o arquivo %(filename)s", "Uploading %(filename)s and %(count)s others|one": "Enviando o arquivo %(filename)s e %(count)s outros arquivos", "Uploading %(filename)s and %(count)s others|other": "Enviando o arquivo %(filename)s e %(count)s outros arquivos", - "Username invalid: %(errMessage)s": "Nome de usuária(o) inválido: %(errMessage)s", + "Username invalid: %(errMessage)s": "Nome de usuário inválido: %(errMessage)s", "You must register to use this functionality": "Você deve se registrar para poder usar esta funcionalidade", "Create new room": "Criar nova sala", "Room directory": "Lista pública de salas", "Start chat": "Iniciar conversa", "New Password": "Nova senha", - "Username available": "Nome de usuária(o) disponível", - "Username not available": "Nome de usuária(o) indisponível", + "Username available": "Nome de usuário disponível", + "Username not available": "Nome de usuário indisponível", "Something went wrong!": "Não foi possível carregar!", - "This will be your account name on the homeserver, or you can pick a different server.": "Este será seu nome de conta no Servidor de Base , ou então você pode escolher um servidor diferente.", + "This will be your account name on the homeserver, or you can pick a different server.": "Esse será o nome da sua conta no servidor principal, ou então você pode escolher um servidor diferente.", "If you already have a Matrix account you can log in instead.": "Se você já tem uma conta Matrix, pode também fazer login.", "Accept": "Aceitar", "Active call (%(roomName)s)": "Chamada ativa (%(roomName)s)", @@ -361,8 +361,8 @@ "Incoming video call from %(name)s": "Recebendo chamada de vídeo de %(name)s", "Incoming voice call from %(name)s": "Recebendo chamada de voz de %(name)s", "Join as voice or video.": "Participar por voz ou por vídeo.", - "Last seen": "Último uso", - "No display name": "Sem nome público de usuária(o)", + "Last seen": "Visto por último às", + "No display name": "Sem nome e sobrenome", "Private Chat": "Conversa privada", "Public Chat": "Conversa pública", "%(roomName)s does not exist.": "%(roomName)s não existe.", @@ -396,7 +396,7 @@ "You are not in this room.": "Você não está nesta sala.", "You do not have permission to do that in this room.": "Você não tem permissão para fazer isto nesta sala.", "Ignored user": "Usuário silenciado", - "You are no longer ignoring %(userId)s": "Você parou de ignorar %(userId)s", + "You are no longer ignoring %(userId)s": "Você não está mais silenciando %(userId)s", "Edit": "Editar", "Unpin Message": "Desafixar Mensagem", "Add rooms to this community": "Adicionar salas na comunidade", @@ -418,10 +418,10 @@ "Which rooms would you like to add to this community?": "Quais salas você quer adicionar a esta comunidade?", "Show these rooms to non-members on the community page and room list?": "Exibir estas salas para não integrantes na página da comunidade e na lista de salas?", "Unable to create widget.": "Não foi possível criar o widget.", - "You are now ignoring %(userId)s": "Você está agora ignorando %(userId)s", + "You are now ignoring %(userId)s": "Agora você está silenciando %(userId)s", "Unignored user": "Usuário não mais silenciado", - "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s alterou o seu nome público para %(displayName)s.", - "%(senderName)s changed the pinned messages for the room.": "%(senderName)s alterou as mensagens fixas da sala.", + "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s alterou o nome e sobrenome para %(displayName)s.", + "%(senderName)s changed the pinned messages for the room.": "%(senderName)s alterou as mensagens fixadas da sala.", "%(widgetName)s widget modified by %(senderName)s": "O widget %(widgetName)s foi modificado por %(senderName)s", "%(widgetName)s widget added by %(senderName)s": "O widget %(widgetName)s foi criado por %(senderName)s", "%(widgetName)s widget removed by %(senderName)s": "O widget %(widgetName)s foi removido por %(senderName)s", @@ -443,7 +443,7 @@ "Kick this user?": "Remover este usuário?", "Unban this user?": "Desbloquear este usuário?", "Ban this user?": "Bloquear este usuário?", - "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "Você não poderá desfazer esta alteração, já que está baixando suas próprias permissões. Se você for a última pessoa nesta sala, será impossível recuperar as permissões atuais.", + "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "Você não poderá desfazer essa alteração, já que está rebaixando sua própria permissão. Se você for a última pessoa nesta sala, será impossível recuperar a permissão atual.", "Unignore": "Reativar notificações e mostrar mensagens", "Ignore": "Silenciar e esconder mensagens", "Jump to read receipt": "Ir para a confirmação de leitura", @@ -528,14 +528,14 @@ "%(severalUsers)sleft and rejoined %(count)s times|one": "%(severalUsers)s saíram e entraram", "%(oneUser)sleft and rejoined %(count)s times|other": "%(oneUser)s saiu e entrou %(count)s vezes", "%(oneUser)sleft and rejoined %(count)s times|one": "%(oneUser)s saiu e entrou", - "%(severalUsers)srejected their invitations %(count)s times|other": "%(severalUsers)s recusaram seus convites %(count)s vezes", - "%(severalUsers)srejected their invitations %(count)s times|one": "%(severalUsers)s recusaram seus convites", - "%(oneUser)srejected their invitation %(count)s times|other": "%(oneUser)s recusou seu convite %(count)s vezes", - "%(oneUser)srejected their invitation %(count)s times|one": "%(oneUser)s recusou seu convite", - "%(severalUsers)shad their invitations withdrawn %(count)s times|other": "%(severalUsers)s tiveram seus convites retirados %(count)s vezes", - "%(severalUsers)shad their invitations withdrawn %(count)s times|one": "%(severalUsers)s tiveram seus convites retirados", - "%(oneUser)shad their invitation withdrawn %(count)s times|other": "%(oneUser)s teve seus convites removidos %(count)s vezes", - "%(oneUser)shad their invitation withdrawn %(count)s times|one": "%(oneUser)s teve seu convite removido", + "%(severalUsers)srejected their invitations %(count)s times|other": "%(severalUsers)s recusaram os convites %(count)s vezes", + "%(severalUsers)srejected their invitations %(count)s times|one": "%(severalUsers)s recusaram os convites", + "%(oneUser)srejected their invitation %(count)s times|other": "%(oneUser)s recusou o convite %(count)s vezes", + "%(oneUser)srejected their invitation %(count)s times|one": "%(oneUser)s recusou o convite", + "%(severalUsers)shad their invitations withdrawn %(count)s times|other": "%(severalUsers)s tiveram os convites retirados %(count)s vezes", + "%(severalUsers)shad their invitations withdrawn %(count)s times|one": "%(severalUsers)s tiveram os convites retirados", + "%(oneUser)shad their invitation withdrawn %(count)s times|other": "%(oneUser)s teve os convites removidos %(count)s vezes", + "%(oneUser)shad their invitation withdrawn %(count)s times|one": "%(oneUser)s teve o convite removido", "were invited %(count)s times|other": "foram convidadas/os %(count)s vezes", "were invited %(count)s times|one": "foram convidadas/os", "was invited %(count)s times|other": "foi convidada/o %(count)s vezes", @@ -544,18 +544,18 @@ "were banned %(count)s times|one": "foram bloqueados", "was banned %(count)s times|other": "foi bloqueado %(count)s vezes", "was banned %(count)s times|one": "foi bloqueado", - "were unbanned %(count)s times|other": "tiveram seu desbloqueio desfeito %(count)s vezes", - "were unbanned %(count)s times|one": "tiveram seu desbloqueio desfeito", + "were unbanned %(count)s times|other": "foram desbloqueados %(count)s vezes", + "were unbanned %(count)s times|one": "foram desbloqueados", "was unbanned %(count)s times|other": "foi desbloqueado %(count)s vezes", "was unbanned %(count)s times|one": "foi desbloqueado", "were kicked %(count)s times|other": "foram removidos %(count)s vezes", "were kicked %(count)s times|one": "foram removidos", "was kicked %(count)s times|other": "foi removido %(count)s vezes", "was kicked %(count)s times|one": "foi removido", - "%(severalUsers)schanged their name %(count)s times|other": "%(severalUsers)s alteraram o seu nome %(count)s vezes", - "%(severalUsers)schanged their name %(count)s times|one": "%(severalUsers)s alteraram o seu nome", - "%(oneUser)schanged their name %(count)s times|other": "%(oneUser)s alterou o seu nome %(count)s vezes", - "%(oneUser)schanged their name %(count)s times|one": "%(oneUser)s alterou o seu nome", + "%(severalUsers)schanged their name %(count)s times|other": "%(severalUsers)s alteraram o nome e sobrenome %(count)s vezes", + "%(severalUsers)schanged their name %(count)s times|one": "%(severalUsers)s alteraram o nome e sobrenome", + "%(oneUser)schanged their name %(count)s times|other": "%(oneUser)s alterou o nome e sobrenome %(count)s vezes", + "%(oneUser)schanged their name %(count)s times|one": "%(oneUser)s alterou o nome e sobrenome", "%(severalUsers)schanged their avatar %(count)s times|other": "%(severalUsers)s alteraram as fotos de perfil %(count)s vezes", "%(severalUsers)schanged their avatar %(count)s times|one": "%(severalUsers)s alteraram as fotos de perfil", "%(oneUser)schanged their avatar %(count)s times|other": "%(oneUser)s alterou a foto de perfil %(count)s vezes", @@ -580,7 +580,7 @@ "Community ID": "ID da comunidade", "example": "exemplo", "Create": "Criar", - "To get started, please pick a username!": "Para começar, escolha um nome de usuária/o!", + "To get started, please pick a username!": "Para começar, escolha um nome de usuário!", "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

HTML para a página da sua comunidade

\n

\n Use a descrição longa para apresentar a comunidade para novas/os integrantes ou partilhe links importantes.\n

\n

\n Você pode até mesmo usar tags 'img' do HTML\n

\n", "Add rooms to the community summary": "Adicionar salas para o índice da comunidade", "Which rooms would you like to add to this summary?": "Quais salas você gostaria de adicionar a este índice?", @@ -603,7 +603,7 @@ "Leave %(groupName)s?": "Quer sair da comunidade %(groupName)s?", "Leave": "Sair", "Community Settings": "Configurações da comunidade", - "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Estas salas são exibidas para as/os integrantes da comunidade na página da comunidade. Integrantes da comunidade podem entrar nas salas ao clicar nas mesmas.", + "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Essas salas são exibidas para os membros da comunidade na página da comunidade. Os membros da comunidade entram nas salas clicando nelas.", "Featured Rooms:": "Salas em destaque:", "Featured Users:": "Pessoas em destaque:", "%(inviter)s has invited you to join this community": "%(inviter)s convidou você para entrar nesta comunidade", @@ -634,7 +634,7 @@ "This homeserver doesn't offer any login flows which are supported by this client.": "Este servidor de base (homeserver) não oferece fluxos de login que funcionem neste cliente.", "Define the power level of a user": "Definir o nível de permissões de um(a) usuário(a)", "Ignores a user, hiding their messages from you": "Silenciar um usuário também esconderá as mensagens dele de você", - "Stops ignoring a user, showing their messages going forward": "Deixa de ignorar um(a) usuário(a), exibindo suas mensagens daqui para frente", + "Stops ignoring a user, showing their messages going forward": "Deixa de silenciar o usuário, exibindo suas mensagens daqui para frente", "Notify the whole room": "Notifica a sala inteira", "Room Notification": "Notificação da sala", "Failed to set direct chat tag": "Falha ao definir esta conversa como direta", @@ -649,14 +649,14 @@ "Advanced notification settings": "Configurações avançadas de notificação", "Uploading report": "Enviando o relatório", "Sunday": "Domingo", - "Notification targets": "Tipos de notificação", + "Notification targets": "Aparelhos notificados", "Today": "Hoje", "You are not receiving desktop notifications": "Você não está recebendo notificações na área de trabalho", "Friday": "Sexta-feira", "Update": "Atualizar", "What's New": "Novidades", "On": "Ativado", - "Changelog": "Histórico de alterações", + "Changelog": "Registro de alterações", "Waiting for response from server": "Aguardando a resposta do servidor", "Uploaded on %(date)s by %(user)s": "Enviada em %(date)s por %(user)s", "Send Custom Event": "Enviar Evento Customizado", @@ -667,7 +667,7 @@ "This Room": "Esta sala", "Resend": "Reenviar", "Error saving email notification preferences": "Erro ao salvar as preferências de notificação por e-mail", - "Messages containing my display name": "Mensagens contendo meu nome público", + "Messages containing my display name": "Mensagens contendo meu nome e sobrenome", "Messages in one-to-one chats": "Mensagens em conversas pessoais", "Unavailable": "Indisponível", "View Decrypted Source": "Ver código-fonte descriptografado", @@ -687,7 +687,7 @@ "Files": "Arquivos", "Collecting app version information": "Coletando informação sobre a versão do app", "Keywords": "Palavras-chave", - "Enable notifications for this account": "Ativar notificações na sua conta", + "Enable notifications for this account": "Receba notificações de novas mensagens", "Invite to this community": "Convidar para essa comunidade", "Messages containing keywords": "Mensagens contendo palavras-chave", "Room not found": "Sala não encontrada", @@ -741,7 +741,7 @@ "Yesterday": "Ontem", "Error encountered (%(errorDetail)s).": "Erro encontrado (%(errorDetail)s).", "Low Priority": "Baixa prioridade", - "Unable to fetch notification target list": "Não foi possível obter a lista de tipos de notificação", + "Unable to fetch notification target list": "Não foi possível obter a lista de aparelhos notificados", "Set Password": "Definir senha", "Off": "Desativado", "Mentions only": "Apenas menções", @@ -751,7 +751,7 @@ "Event Type": "Tipo do Evento", "Download this file": "Baixar este arquivo", "Pin Message": "Fixar Mensagem", - "Failed to change settings": "Falhou ao mudar as preferências", + "Failed to change settings": "Falha ao alterar as configurações", "View Community": "Ver a comunidade", "Event sent!": "Evento enviado!", "View Source": "Ver código-fonte", @@ -805,7 +805,7 @@ "This is a very common password": "Isto é uma senha muito comum", "This is similar to a commonly used password": "Isto é similar a uma senha muito comum", "A word by itself is easy to guess": "Uma palavra por si só é fácil de adivinhar", - "Names and surnames by themselves are easy to guess": "Nomes e sobrenomes sozinhos são fáceis de adivinhar", + "Names and surnames by themselves are easy to guess": "Nomes e sobrenomes por si só são fáceis de adivinhar", "Common names and surnames are easy to guess": "Nomes e sobrenomes comuns são fáceis de adivinhar", "Straight rows of keys are easy to guess": "Linhas retas de teclas são fáceis de adivinhar", "Short keyboard patterns are easy to guess": "Padrões de teclado curtos são fáceis de adivinhar", @@ -846,7 +846,7 @@ "Hide Stickers": "Esconder figurinhas", "Show Stickers": "Enviar figurinhas", "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "Em salas criptografadas, como esta, as visualizações de URL são desabilitadas por padrão para garantir que o seu homeserver (onde as visualizações são geradas) não possa coletar informações sobre os links que você vê nesta sala.", - "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "Quando alguém coloca um URL em sua mensagem, uma visualização de URL pode ser exibida para fornecer mais informações sobre esse link, como o título, a descrição e uma imagem do site.", + "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "Quando alguém coloca um URL em uma mensagem, a pré-visualização do URL pode ser exibida para fornecer mais informações sobre esse link, como o título, a descrição e uma imagem do site.", "This room is a continuation of another conversation.": "Esta sala é uma continuação de outra conversa.", "Click here to see older messages.": "Clique aqui para ver as mensagens mais antigas.", "Please review and accept all of the homeserver's policies": "Por favor, revise e aceite todas as políticas do homeserver", @@ -872,7 +872,7 @@ "Continue With Encryption Disabled": "Continuar com criptografia desativada", "This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. This action is irreversible.": "Isso tornará sua conta permanentemente inutilizável. Você não poderá efetuar login e ninguém poderá registrar novamente o mesmo ID de usuário. Isso fará com que sua conta deixe todas as salas nas quais está participando e removerá os detalhes da sua conta do seu servidor de identidade. Esta ação é irreversível.", "Deactivating your account does not by default cause us to forget messages you have sent. If you would like us to forget your messages, please tick the box below.": "Desativar sua conta não faz com que, por padrão, esqueçamos as mensagens que você enviou. Se você quiser que esqueçamos suas mensagens, marque a caixa abaixo.", - "Message visibility in Matrix is similar to email. Our forgetting your messages means that messages you have sent will not be shared with any new or unregistered users, but registered users who already have access to these messages will still have access to their copy.": "A visibilidade da mensagem no Matrix é semelhante ao e-mail. O fato de esquecermos suas mensagens significa que as mensagens que você enviou não serão compartilhadas com usuários novos ou não registrados, mas os usuários registrados que já têm acesso a essas mensagens ainda terão acesso a suas cópias.", + "Message visibility in Matrix is similar to email. Our forgetting your messages means that messages you have sent will not be shared with any new or unregistered users, but registered users who already have access to these messages will still have access to their copy.": "A visibilidade da mensagem no Matrix é semelhante ao e-mail. O fato de esquecermos suas mensagens significa que as mensagens que você enviou não serão compartilhadas com usuários novos ou não registrados, mas os usuários registrados que já têm acesso a essas mensagens ainda terão acesso para as cópias deles.", "Please forget all messages I have sent when my account is deactivated (Warning: this will cause future users to see an incomplete view of conversations)": "Por favor, esqueça todas as mensagens que enviei quando minha conta for desativada (Aviso: isso fará com que futuros usuários vejam uma visão incompleta das conversas)", "To continue, please enter your password:": "Para continuar, por favor digite sua senha:", "Incompatible local cache": "Cache local incompatível", @@ -956,7 +956,7 @@ "Without setting up Secure Message Recovery, you'll lose your secure message history when you log out.": "Sem configurar a Recuperação Segura de Mensagens, você perderá seu histórico de mensagens seguras quando fizer logout.", "If you don't want to set this up now, you can later in Settings.": "Se você não quiser configurá-lo agora, poderá fazê-lo posteriormente em Configurações.", "New Recovery Method": "Novo método de recuperação", - "If you didn't set the new recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings.": "Se você não definiu o novo método de recuperação, um invasor pode estar tentando acessar sua conta. Altere a senha da sua conta e defina um novo método de recuperação imediatamente em Configurações.", + "If you didn't set the new recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings.": "Se você não definiu o novo método de recuperação, um invasor pode estar tentando acessar sua conta. Altere a senha da sua conta e defina um novo método de recuperação imediatamente nas Configurações.", "Set up Secure Messages": "Configurar mensagens seguras", "Go to Settings": "Ir para as configurações", "Unrecognised address": "Endereço não reconhecido", @@ -973,29 +973,29 @@ "Sets the room name": "Define o nome da sala", "Group & filter rooms by custom tags (refresh to apply changes)": "Agrupar e filtrar salas por tags personalizadas (atualize para aplicar as alterações)", "Render simple counters in room header": "Renderizar contadores simples no cabeçalho da sala", - "Enable Emoji suggestions while typing": "Ativar sugestões de emoticons ao digitar", + "Enable Emoji suggestions while typing": "Ativar sugestões de emojis ao digitar", "Show a placeholder for removed messages": "Mostrar um marcador para as mensagens removidas", "Show join/leave messages (invites/kicks/bans unaffected)": "Mostrar mensagens de entrar/sair (não considera convites/remoções/bloqueios)", "Show avatar changes": "Mostrar alterações de foto de perfil", "The file '%(fileName)s' exceeds this homeserver's size limit for uploads": "O arquivo '%(fileName)s' excede o limite de tamanho deste homeserver para uploads", - "Changes your display nickname in the current room only": "Altera seu apelido de exibição apenas na sala atual", + "Changes your display nickname in the current room only": "Altera o seu nome e sobrenome apenas na sala atual", "%(senderDisplayName)s upgraded this room.": "%(senderDisplayName)s atualizou esta sala.", "%(senderDisplayName)s made the room public to whoever knows the link.": "%(senderDisplayName)s tornou a sala pública para quem conhece o link.", "%(senderDisplayName)s made the room invite only.": "%(senderDisplayName)s tornou a sala disponível apenas por convite.", "%(senderDisplayName)s changed the join rule to %(rule)s": "%(senderDisplayName)s alterou a regra de entrada para %(rule)s", "%(senderDisplayName)s has allowed guests to join the room.": "%(senderDisplayName)s permitiu que os convidados entrem na sala.", "%(senderDisplayName)s has prevented guests from joining the room.": "%(senderDisplayName)s impediu que os convidados entrassem na sala.", - "%(senderDisplayName)s changed guest access to %(rule)s": "%(senderDisplayName)s mudou o perfil de acesso do convidado para %(rule)s", - "%(senderDisplayName)s enabled flair for %(groups)s in this room.": "%(senderDisplayName)s habilitou insígnias para %(groups)s nesta sala.", - "%(senderDisplayName)s disabled flair for %(groups)s in this room.": "%(senderDisplayName)s desabilitou insígnias para %(groups)s nesta sala.", - "%(senderDisplayName)s enabled flair for %(newGroups)s and disabled flair for %(oldGroups)s in this room.": "%(senderDisplayName)s habilitou insígnias para %(newGroups)s e desabilitou insígnias para %(oldGroups)s nesta sala.", + "%(senderDisplayName)s changed guest access to %(rule)s": "%(senderDisplayName)s alterou a permissão de acesso de convidados para %(rule)s", + "%(senderDisplayName)s enabled flair for %(groups)s in this room.": "%(senderDisplayName)s ativou insígnias para %(groups)s nesta sala.", + "%(senderDisplayName)s disabled flair for %(groups)s in this room.": "%(senderDisplayName)s desativou insígnias para %(groups)s nesta sala.", + "%(senderDisplayName)s enabled flair for %(newGroups)s and disabled flair for %(oldGroups)s in this room.": "%(senderDisplayName)s ativou insígnias para %(newGroups)s e desativou insígnias para %(oldGroups)s nesta sala.", "%(displayName)s is typing …": "%(displayName)s está digitando…", "%(names)s and %(count)s others are typing …|other": "%(names)s e %(count)s outras pessoas estão digitando…", "%(names)s and %(count)s others are typing …|one": "%(names)s e outro está digitando …", "%(names)s and %(lastPerson)s are typing …": "%(names)s e %(lastPerson)s estão digitando …", "Show read receipts sent by other users": "Mostrar confirmações de leitura enviadas por outros usuários", "Show avatars in user and room mentions": "Mostrar fotos de perfil em menções de usuários e de salas", - "Enable big emoji in chat": "Ativar emoticons grandes no bate-papo", + "Enable big emoji in chat": "Ativar emojis grandes no bate-papo", "Send typing notifications": "Enviar notificações de digitação", "Enable Community Filter Panel": "Ativar painel de filtro da comunidade", "Allow Peer-to-Peer for 1:1 calls": "Permitir Peer-to-Peer para chamadas 1:1", @@ -1004,7 +1004,7 @@ "Verified!": "Verificado!", "You've successfully verified this user.": "Você confirmou este usuário com sucesso.", "Secure messages with this user are end-to-end encrypted and not able to be read by third parties.": "As mensagens com este usuário estão protegidas com a criptografia de ponta a ponta e não podem ser lidas por terceiros.", - "Got It": "Entendi", + "Got It": "Ok, entendi", "Unable to find a supported verification method.": "Não é possível encontrar um método de confirmação suportado.", "Dog": "Cachorro", "Cat": "Gato", @@ -1045,9 +1045,9 @@ "Prepends ¯\\_(ツ)_/¯ to a plain-text message": "Adiciona ¯ \\ _ (ツ) _ / ¯ no início de uma mensagem de texto simples", "User %(userId)s is already in the room": "O usuário %(userId)s já está na sala", "The user must be unbanned before they can be invited.": "O usuário precisa ser desbloqueado antes de ser convidado.", - "Show display name changes": "Mostrar alterações no nome de exibição", - "Verify this user by confirming the following emoji appear on their screen.": "Verifique este usuário confirmando o emoticon a seguir exibido em sua tela.", - "Verify this user by confirming the following number appears on their screen.": "Confirme este usuário confirmando se o número a seguir aparece na tela.", + "Show display name changes": "Mostrar alterações de nome e sobrenome", + "Verify this user by confirming the following emoji appear on their screen.": "Verifique este usuário confirmando os emojis a seguir exibidos na tela dele.", + "Verify this user by confirming the following number appears on their screen.": "Confirme este usuário confirmando se o número a seguir aparece na tela dele.", "Thumbs up": "Joinha", "Umbrella": "Guarda-chuva", "Hourglass": "Ampulheta", @@ -1057,7 +1057,7 @@ "Book": "Livro", "Pencil": "Lápis", "Paperclip": "Clipe de papel", - "Scissors": "Tesouras", + "Scissors": "Tesoura", "Key": "Chave", "Hammer": "Martelo", "Telephone": "Telefone", @@ -1068,7 +1068,7 @@ "Rocket": "Foguete", "Trophy": "Troféu", "Ball": "Bola", - "Guitar": "Violão", + "Guitar": "Guitarra", "Trumpet": "Trombeta", "Bell": "Sino", "Anchor": "Âncora", @@ -1128,7 +1128,7 @@ "Developer options": "Opções de desenvolvedor", "Room Addresses": "Endereços da sala", "Change room avatar": "Alterar a foto da sala", - "Change room name": "Alterar nome da sala", + "Change room name": "Alterar o nome da sala", "Change main address for the room": "Alterar o endereço principal da sala", "Change history visibility": "Alterar a visibilidade do histórico", "Change permissions": "Alterar permissões", @@ -1187,8 +1187,8 @@ "Error upgrading room": "Erro atualizando a sala", "Double check that your server supports the room version chosen and try again.": "Verifique mais uma ver se seu servidor suporta a versão de sala escolhida e tente novamente.", "Changes the avatar of the current room": "Altera a imagem da sala atual", - "Changes your avatar in this current room only": "Altera sua foto de perfil apenas nesta sala", - "Changes your avatar in all rooms": "Altera sua foto de perfil em todas as salas", + "Changes your avatar in this current room only": "Altera a sua foto de perfil apenas nesta sala", + "Changes your avatar in all rooms": "Altera a sua foto de perfil em todas as salas", "Failed to set topic": "Não foi possível definir a descrição", "Use an identity server": "Usar um servidor de identidade", "Use an identity server to invite by email. Manage in Settings.": "Use um servidor de identidade para convidar pessoas por e-mail. Gerencie nas Configurações.", @@ -1210,7 +1210,7 @@ "Sends the given message coloured as a rainbow": "Envia a mensagem colorida como arco-íris", "Sends the given emote coloured as a rainbow": "Envia o emoji colorido como um arco-íris", "Displays list of commands with usages and descriptions": "Exibe a lista de comandos com usos e descrições", - "Displays information about a user": "Exibe informação sobre um(a) usuário(a)", + "Displays information about a user": "Exibe informação sobre um usuário", "Send a bug report with logs": "Envia um relatório de erros com os logs", "Opens chat with the given user": "Abre um chat com determinada pessoa", "Sends a message to the given user": "Envia uma mensagem com determinada pessoa", @@ -1250,11 +1250,11 @@ "You signed in to a new session without verifying it:": "Você entrou em uma nova sessão sem verificá-la:", "Verify your other session using one of the options below.": "Verifique suas outras sessões usando uma das opções abaixo.", "%(name)s (%(userId)s) signed in to a new session without verifying it:": "%(name)s (%(userId)s) entrou em uma nova sessão sem verificá-la:", - "Ask this user to verify their session, or manually verify it below.": "Peça a esta(e) usuária(o) para verificar sua sessão, ou verifiquem manualmente abaixo.", + "Ask this user to verify their session, or manually verify it below.": "Peça a este usuário para verificar a sessão, ou verifique manualmente abaixo.", "Not Trusted": "Não confiável", - "Manually Verify by Text": "Verificada manualmente por texto", - "Interactively verify by Emoji": "Verificar interativamente por emojis", - "Done": "Feito", + "Manually Verify by Text": "Verifique manualmente por texto", + "Interactively verify by Emoji": "Verifiquem interativamente por emojis", + "Done": "Pronto", "Cannot reach homeserver": "Não consigo acessar o servidor", "Ensure you have a stable internet connection, or get in touch with the server admin": "Verifique se está com uma conexão de internet estável, ou entre em contato com os administradores do servidor", "Your %(brand)s is misconfigured": "O %(brand)s está mal configurado", @@ -1304,7 +1304,7 @@ "Verify yourself & others to keep your chats safe": "Verifique a sua conta e as dos seus contatos, para manter suas conversas seguras", "Other users may not trust it": "Outras(os) usuárias(os) podem não confiar nela", "New login. Was this you?": "Novo login. Foi você?", - "Verify the new login accessing your account: %(name)s": "Verifique o novo login acessando sua conta: %(name)s", + "Verify the new login accessing your account: %(name)s": "Verifique o novo login na sua conta: %(name)s", "Restart": "Reiniciar", "Upgrade your %(brand)s": "Atualize o seu %(brand)s", "A new version of %(brand)s is available!": "Uma nova versão do %(brand)s está disponível!", @@ -1325,7 +1325,7 @@ "%(senderName)s: %(stickerName)s": "%(senderName)s: %(stickerName)s", "New spinner design": "Novo design do spinner", "Multiple integration managers": "Múltiplos gestores de integrações", - "Try out new ways to ignore people (experimental)": "Tente novas maneiras de silenciar pessoas e esconder suas mensagens (experimental)", + "Try out new ways to ignore people (experimental)": "Tente novas maneiras de silenciar pessoas e esconder as mensagens delas (experimental)", "Support adding custom themes": "Permite adicionar temas personalizados", "Enable advanced debugging for the room list": "Habilitar análise (debugging) avançada para a lista de salas", "Show info about bridges in room settings": "Exibir informações sobre bridges nas configurações das salas", @@ -1349,8 +1349,8 @@ "Enable message search in encrypted rooms": "Ativar busca de mensagens em salas criptografadas", "How fast should messages be downloaded.": "Com qual rapidez as mensagens devem ser baixadas.", "Manually verify all remote sessions": "Verificar manualmente todas as sessões remotas", - "IRC display name width": "Largura do nome IRC", - "Enable experimental, compact IRC style layout": "Ativar o layout compacto IRC experimental", + "IRC display name width": "Largura do nome e sobrenome nas mensagens", + "Enable experimental, compact IRC style layout": "Ativar o layout compacto experimental nas mensagens", "When rooms are upgraded": "Quando salas são atualizadas", "My Ban List": "Minha lista de bloqueados", "This is your list of users/servers you have blocked - don't leave the room!": "Esta é a sua lista de usuárias(os)/servidores que você bloqueou - não saia da sala!", @@ -1361,10 +1361,10 @@ "Verify this session by completing one of the following:": "Verifique esta sessão completando um dos seguintes:", "Scan this unique code": "Escaneie este código único", "or": "ou", - "Compare unique emoji": "Compare um emoji único", + "Compare unique emoji": "Comparar emojis únicos", "Compare a unique set of emoji if you don't have a camera on either device": "Compare um conjunto único de emojis se você não tem uma câmera em nenhum dos dois aparelhos", "Start": "Iniciar", - "Confirm the emoji below are displayed on both sessions, in the same order:": "Confirme que o emoji abaixo está sendo exibido nas duas sessões, na mesma ordem:", + "Confirm the emoji below are displayed on both sessions, in the same order:": "Confirme que os emojis abaixo estão sendo exibidos nas duas sessões, na mesma ordem:", "Verify this session by confirming the following number appears on its screen.": "Verifique esta sessão confirmando que o seguinte número aparece na sua tela.", "Waiting for your other session, %(deviceName)s (%(deviceId)s), to verify…": "Aguardando a outra sessão, %(deviceName)s (%(deviceId)s), verificar…", "Waiting for your other session to verify…": "Aguardando a outra sessão verificar…", @@ -1419,7 +1419,7 @@ "Delete %(count)s sessions|other": "Apagar %(count)s sessões", "Delete %(count)s sessions|one": "Apagar %(count)s sessão", "ID": "ID", - "Public Name": "Nome Público", + "Public Name": "Nome público", "Individually verify each session used by a user to mark it as trusted, not trusting cross-signed devices.": "Verificar individualmente cada sessão usada por um(a) usuário(a) para marcá-la como confiável, sem confiar em aparelhos assinados com assinatura cruzada.", "Securely cache encrypted messages locally for them to appear in search results, using ": "Armazene mensagens criptografadas localmente para que elas apareçam nas buscas, usando ", " to store messages from ": " para armazenar mensagens de ", @@ -1453,11 +1453,11 @@ "Your keys are not being backed up from this session.": "Suas chaves não estão sendo copiadas desta sessão.", "wait and try again later": "espere e tente novamente mais tarde", "Please verify the room ID or address and try again.": "Por favor, verifique o ID ou endereço da sala e tente novamente.", - "Ignoring people is done through ban lists which contain rules for who to ban. Subscribing to a ban list means the users/servers blocked by that list will be hidden from you.": "É possível ignorar pessoas através de listas de bloqueio que contêm regras sobre quem bloquear. Colocar alguém na lista de bloqueio significa que as pessoas ou servidores bloqueados pela lista não serão visualizados por você.", + "Ignoring people is done through ban lists which contain rules for who to ban. Subscribing to a ban list means the users/servers blocked by that list will be hidden from you.": "É possível silenciar pessoas através de listas de bloqueio que contêm regras sobre quem bloquear. Colocar alguém na lista de bloqueio significa que as pessoas ou servidores bloqueados pela lista não serão visualizados por você.", "Session key:": "Chave da sessão:", "Your server admin has disabled end-to-end encryption by default in private rooms & Direct Messages.": "O administrador do servidor desativou a criptografia de ponta a ponta por padrão em salas privadas e conversas diretas.", - "Manage the names of and sign out of your sessions below or verify them in your User Profile.": "Gerencie os nomes de suas sessões e saia das mesmas abaixo ou verifique-as no seu Perfil de Usuária(o).", - "A session's public name is visible to people you communicate with": "Um nome público de uma sessão é visível a pessoas com as quais você já se comunica", + "Manage the names of and sign out of your sessions below or verify them in your User Profile.": "Gerencie os nomes de suas sessões e saia das mesmas abaixo ou verifique-as no seu Perfil de Usuário.", + "A session's public name is visible to people you communicate with": "O nome público de uma sessão é visível para as pessoas com quem você se comunica", "Enable room encryption": "Ativar criptografia nesta sala", "Enable encryption?": "Ativar criptografia?", "Once enabled, encryption for a room cannot be disabled. Messages sent in an encrypted room cannot be seen by the server, only by the participants of the room. Enabling encryption may prevent many bots and bridges from working correctly. Learn more about encryption.": "Uma vez ativada, a criptografia da sala não poderá ser desabilitada. Mensagens enviadas em uma sala criptografada não podem ser vistas pelo servidor, apenas pelas/os participantes da sala. Habilitar a criptografia poderá impedir que vários bots e bridges funcionem corretamente. Saiba mais sobre criptografia.", @@ -1501,29 +1501,29 @@ "Verify all users in a room to ensure it's secure.": "Verificar todas(os) as(os) usuárias(os) em uma sala para se certificar que ela é segura.", "In encrypted rooms, verify all users to ensure it’s secure.": "Em salas criptografadas, verificar todas(os) as(os) usuárias(os) para garantir que elas são seguras.", "Start verification again from the notification.": "Iniciar verificação novamente, após a notificação.", - "Start verification again from their profile.": "Iniciar a verificação novamente a partir do seu perfil.", + "Start verification again from their profile.": "Iniciar a verificação novamente a partir do perfil deste usuário.", "Encryption enabled": "Criptografia habilitada", - "Messages in this room are end-to-end encrypted. Learn more & verify this user in their user profile.": "As mensagens nesta sala estão criptografadas de ponta a ponta. Saiba mais e verifique este usuário em seu perfil.", + "Messages in this room are end-to-end encrypted. Learn more & verify this user in their user profile.": "As mensagens nesta sala estão criptografadas de ponta a ponta. Lembre-se de verificar este usuário no perfil dele/dela.", "Encryption not enabled": "Criptografia não habilitada", "The encryption used by this room isn't supported.": "A criptografia usada nesta sala não é suportada.", "%(name)s wants to verify": "%(name)s deseja verificar", - "Smileys & People": "Emoticons e Pessoas", + "Smileys & People": "Sorrisos e pessoas", "Widgets do not use message encryption.": "Widgets não usam criptografia de mensagens.", "Please create a new issue on GitHub so that we can investigate this bug.": "Por favor, crie um novo bilhete de erro no GitHub para que possamos investigar esta falha.", - "Enter the name of a new server you want to explore.": "Entre com o nome do novo servidor que você quer explorar.", + "Enter the name of a new server you want to explore.": "Digite o nome do novo servidor que você deseja explorar.", "Please tell us what went wrong or, better, create a GitHub issue that describes the problem.": "Por favor, diga-nos o que aconteceu de errado ou, ainda melhor, crie um bilhete de erro no GitHub que descreva o problema.", - "Clearing all data from this session is permanent. Encrypted messages will be lost unless their keys have been backed up.": "Apagar todos os dados desta sessão é uma ação permanente. Mensagens criptografadas serão perdidas, a não ser que suas chaves tenham sido copiadas para o backup.", + "Clearing all data from this session is permanent. Encrypted messages will be lost unless their keys have been backed up.": "Apagar todos os dados desta sessão é uma ação permanente. Mensagens criptografadas serão perdidas, a não ser que as chaves delas tenham sido copiadas para o backup.", "Set a room address to easily share your room with other people.": "Defina um endereço de sala para facilmente compartilhar sua sala com outras pessoas.", "You can’t disable this later. Bridges & most bots won’t work yet.": "Você não poderá desabilitar depois. Pontes e a maioria dos bots não funcionarão no momento.", "Enable end-to-end encryption": "Ativar a criptografia de ponta a ponta", "Create a public room": "Criar uma sala pública", "Create a private room": "Criar uma sala privada", - "Block users on other matrix homeservers from joining this room (This setting cannot be changed later!)": "Impedir usuárias(os) de outros servidores matrix de entrar nesta sala (Esta configuração não poderá ser desfeita depois!)", + "Block users on other matrix homeservers from joining this room (This setting cannot be changed later!)": "Impedir usuários de outros servidores na rede Matrix de entrarem nesta sala (Essa configuração não pode ser alterada posteriormente!)", "You've previously used a newer version of %(brand)s with this session. To use this version again with end to end encryption, you will need to sign out and back in again.": "Você já usou uma versão mais recente do %(brand)s nesta sessão. Para usar esta versão novamente com a criptografia de ponta a ponta, você terá que se desconectar e entrar novamente.", "Verify this user to mark them as trusted. Trusting users gives you extra peace of mind when using end-to-end encrypted messages.": "Verifique este usuário para torná-lo confiável. Confiar nos usuários fornece segurança adicional ao trocar mensagens criptografadas de ponta a ponta.", "Verify this device to mark it as trusted. Trusting this device gives you and other users extra peace of mind when using end-to-end encrypted messages.": "Verifique este aparelho para torná-lo confiável. Confiar neste aparelho fornecerá segurança adicional para você e aos outros ao trocarem mensagens criptografadas de ponta a ponta.", "We couldn't create your DM. Please check the users you want to invite and try again.": "Não conseguimos criar sua mensagem direta. Por favor, verifique as(os) usuárias(os) que você quer convidar e tente novamente.", - "Start a conversation with someone using their name, username (like ) or email address.": "Comece uma conversa com alguém usando seu nome, nome de usuária (como ) ou endereço de e-mail.", + "Start a conversation with someone using their name, username (like ) or email address.": "Comece uma conversa com alguém usando o seu respectivo nome e sobrenome, nome de usuário (por exemplo: ) ou endereço de e-mail.", "a new master key signature": "uma nova chave mestra de assinatura", "a new cross-signing key signature": "uma nova chave de assinatura cruzada", "a key signature": "uma assinatura de chave", @@ -1569,7 +1569,7 @@ "Explore rooms": "Explorar salas", "Data from an older version of %(brand)s has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Detectamos uma versão mais antiga do %(brand)s. Isso fará com que a criptografia de ponta a ponta não funcione corretamente. As mensagens criptografadas de ponta a ponta trocadas recentemente, enquanto você usava a versão mais antiga, talvez não sejam descriptografáveis na nova versão. Isso também poderá fazer com que as mensagens trocadas nesta sessão falhem na mais atual. Se você tiver problemas, desconecte-se e entre novamente. Para manter o histórico de mensagens, exporte e reimporte suas chaves.", "%(creator)s created and configured the room.": "%(creator)s criou e configurou esta sala.", - "If you can't find the room you're looking for, ask for an invite or Create a new room.": "Se você não consegue encontrar a sala que está buscando, peça para ser convidada(o) ou então crie uma sala nova.", + "If you can't find the room you're looking for, ask for an invite or Create a new room.": "Se você não conseguir encontrar a sala que está procurando, peça um convite para a sala ou Crie uma nova sala.", "Verify this login": "Verificar este login", "Changing your password will reset any end-to-end encryption keys on all of your sessions, making encrypted chat history unreadable. Set up Key Backup or export your room keys from another session before resetting your password.": "Alterar a sua senha redefinirá todas as chaves de criptografia de ponta a ponta existentes em todas as suas sessões, tornando o histórico de mensagens criptografadas ilegível. Faça uma cópia (backup) das suas chaves, ou exporte as chaves de outra sessão antes de alterar a sua senha.", "Create account": "Criar conta", @@ -1643,11 +1643,11 @@ "edited": "editado", "Can't load this message": "Não foi possível carregar esta mensagem", "Submit logs": "Enviar registros", - "Frequently Used": "Usado Frequentemente", - "Animals & Nature": "Animais e Natureza", - "Food & Drink": "Alimentação e Bebida", + "Frequently Used": "Mais usados", + "Animals & Nature": "Animais e natureza", + "Food & Drink": "Comidas e bebidas", "Activities": "Atividades", - "Travel & Places": "Viagens & Lugares", + "Travel & Places": "Viagem e lugares", "Objects": "Objetos", "Symbols": "Símbolos", "Flags": "Bandeiras", @@ -1725,7 +1725,7 @@ "New published address (e.g. #alias:server)": "Novo endereço publicado (por exemplo, #apelido:server)", "Local Addresses": "Endereços locais", "%(name)s cancelled verifying": "%(name)s cancelou a verificação", - "Your display name": "Seu nome de exibição", + "Your display name": "Seu nome e sobrenome", "Your avatar URL": "A URL da sua foto de perfil", "Your user ID": "Sua ID de usuário", "%(brand)s URL": "URL de %(brand)s", @@ -1733,7 +1733,7 @@ "Using this widget may share data with %(widgetDomain)s.": "Se você usar esse widget, os dados poderão ser compartilhados com %(widgetDomain)s.", "%(severalUsers)smade no changes %(count)s times|other": "%(severalUsers)s não fizeram alterações %(count)s vezes", "%(severalUsers)smade no changes %(count)s times|one": "%(severalUsers)s não fizeram alterações", - "%(oneUser)smade no changes %(count)s times|other": "%(oneUser)s não fez alteraçõe s%(count)s vezes", + "%(oneUser)smade no changes %(count)s times|other": "%(oneUser)s não fez alterações %(count)s vezes", "%(oneUser)smade no changes %(count)s times|one": "%(oneUser)s não fez alterações", "Power level": "Nível de permissão", "Please provide a room address": "Digite um endereço para a sala", @@ -1769,12 +1769,12 @@ "Use an identity server to invite by email. Click continue to use the default identity server (%(defaultIdentityServerName)s) or manage in Settings.": "Use um servidor de identidade para convidar por e-mail. Clique em continuar para usar o servidor de identidade padrão (%(defaultIdentityServerName)s) ou gerencie nas Configurações.", "You might have configured them in a client other than %(brand)s. You cannot tune them in %(brand)s but they still apply.": "Você pode ter configurado estas opções em um cliente que não seja %(brand)s. Você não pode ajustar essas opções no %(brand)s, mas elas ainda se aplicam.", "Enable audible notifications for this session": "Ativar o som de notificações nesta sessão", - "Display Name": "Nome em exibição", + "Display Name": "Nome e sobrenome", "Identity Server URL must be HTTPS": "O URL do Servidor de Identidade deve ser HTTPS", "Not a valid Identity Server (status code %(code)s)": "Servidor de Identidade inválido (código de status %(code)s)", "Could not connect to Identity Server": "Não foi possível conectar-se ao Servidor de Identidade", "Checking server": "Verificando servidor", - "Change identity server": "Mudar o servidor de identidade", + "Change identity server": "Alterar o servidor de identidade", "Disconnect from the identity server and connect to instead?": "Desconectar-se do servidor de identidade e conectar-se em em vez disso?", "Terms of service not accepted or the identity server is invalid.": "Termos de serviço não aceitos ou o servidor de identidade é inválido.", "The identity server you have chosen does not have any terms of service.": "O servidor de identidade que você escolheu não possui nenhum termo de serviço.", @@ -1830,7 +1830,7 @@ "Send %(eventType)s events": "Enviar eventos de %(eventType)s", "Roles & Permissions": "Papeis & Permissões", "Select the roles required to change various parts of the room": "Selecione as permissões necessárias para alterar várias partes da sala", - "Emoji picker": "Seletor de emoji", + "Emoji picker": "Enviar emoji", "Room %(name)s": "Sala %(name)s", "No recently visited rooms": "Não há salas visitadas recentemente", "Custom Tag": "Etiqueta personalizada", @@ -1918,7 +1918,7 @@ "Collapse room list section": "Esconder seção da lista de salas", "Expand room list section": "Mostrar seção da lista de salas", "The person who invited you already left the room.": "A pessoa que convidou você já saiu da sala.", - "The person who invited you already left the room, or their server is offline.": "A pessoa que convidou você já saiu da sala, ou o servidor dela está offline.", + "The person who invited you already left the room, or their server is offline.": "A pessoa que convidou você já saiu da sala, ou o servidor dela está desconectado.", "Use an Integration Manager (%(serverName)s) to manage bots, widgets, and sticker packs.": "Use o Gerenciador de Integrações em (%(serverName)s) para gerenciar bots, widgets e pacotes de figurinhas.", "Use an Integration Manager to manage bots, widgets, and sticker packs.": "Use o Gerenciador de Integrações para gerenciar bots, widgets e pacotes de figurinhas.", "Integration Managers receive configuration data, and can modify widgets, send room invites, and set power levels on your behalf.": "O Gerenciador de Integrações recebe dados de configuração e pode modificar widgets, enviar convites para salas e definir níveis de permissão em seu nome.", @@ -1935,7 +1935,7 @@ "Server rules": "Regras do servidor", "User rules": "Regras do usuário", "You have not ignored anyone.": "Você não silenciou ninguém.", - "You are currently ignoring:": "Você está atualmente ignorando:", + "You are currently ignoring:": "Você está silenciando atualmente:", "You are not subscribed to any lists": "Você não está inscrito em nenhuma lista", "Unsubscribe": "Desinscrever-se", "View rules": "Ver regras", @@ -1963,7 +1963,7 @@ "Remove %(email)s?": "Remover %(email)s?", "Remove %(phone)s?": "Remover %(phone)s?", "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains.": "Digite o código de verificação enviado por mensagem de texto para +%(msisdn)s.", - "This user has not verified all of their sessions.": "Este usuário não verificou todas suas próprias sessões.", + "This user has not verified all of their sessions.": "Este usuário não verificou todas as próprias sessões.", "You have not verified this user.": "Você não verificou este usuário.", "You have verified this user. This user has verified all of their sessions.": "Você confirmou este usuário. Este usuário verificou todas as próprias sessões.", "Someone is using an unknown session": "Alguém está usando uma sessão desconhecida", @@ -2025,7 +2025,7 @@ "%(displayName)s cancelled verification.": "%(displayName)s cancelou a verificação.", "You cancelled verification.": "Você cancelou a verificação.", "Verification cancelled": "Verificação cancelada", - "Compare emoji": "Comparar emojis", + "Compare emoji": "Compare os emojis", "Show image": "Mostrar imagem", "You have ignored this user, so their message is hidden. Show anyways.": "Você silenciou este usuário, portanto, a mensagem dele foi escondida. Mostrar mesmo assim.", "You verified %(name)s": "Você verificou %(name)s", @@ -2044,7 +2044,7 @@ "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s": "Os seguintes usuários não puderam ser convidados porque não existem ou são inválidos: %(csvNames)s", "Recent Conversations": "Conversas recentes", "Suggestions": "Sugestões", - "Invite someone using their name, username (like ), email address or share this room.": "Convide alguém com seu nome, nome de usuário (por exemplo: ), endereço de e-mail ou compartilhe esta sala.", + "Invite someone using their name, username (like ), email address or share this room.": "Convide alguém buscando o seu respectivo nome e sobrenome, nome de usuário (por exemplo: ), endereço de e-mail ou compartilhe esta sala.", "Use your account to sign in to the latest version of the app at ": "Use sua conta para fazer login na versão mais recente do aplicativo em ", "Report bugs & give feedback": "Relatar erros & enviar comentários", "Room Settings - %(roomName)s": "Configurações da sala - %(roomName)s", @@ -2154,7 +2154,7 @@ "Your server isn't responding to some requests.": "Seu servidor não está respondendo a algumas solicitações.", "Ban list rules - %(roomName)s": "Regras da lista de bloqueados - %(roomName)s", "Personal ban list": "Lista pessoal de bloqueio", - "Your personal ban list holds all the users/servers you personally don't want to see messages from. After ignoring your first user/server, a new room will show up in your room list named 'My Ban List' - stay in this room to keep the ban list in effect.": "Sua lista de bloqueios pessoais contém todos os usuários/servidores dos quais você pessoalmente não deseja mais receber mensagens. Depois de ignorar o primeiro usuário/servidor, uma nova sala será exibida na sua lista de salas chamada 'Minha lista de bloqueios' - permaneça nesta sala para manter a lista de bloqueios em vigor.", + "Your personal ban list holds all the users/servers you personally don't want to see messages from. After ignoring your first user/server, a new room will show up in your room list named 'My Ban List' - stay in this room to keep the ban list in effect.": "Sua lista de bloqueios pessoais contém todos os usuários/servidores dos quais você pessoalmente não deseja mais receber mensagens. Depois de silenciar o primeiro usuário/servidor, uma nova sala será exibida na sua lista de salas chamada 'Minha lista de bloqueios' - permaneça nesta sala para manter a lista de bloqueios em vigor.", "Subscribing to a ban list will cause you to join it!": "Inscrever-se em uma lista de bloqueios significa participar dela!", "If this isn't what you want, please use a different tool to ignore users.": "Se isso não for o que você deseja, use outra ferramenta para silenciar os usuários.", "Room ID or address of ban list": "ID da sala ou endereço da lista de bloqueios", @@ -2189,7 +2189,7 @@ "Enter recovery passphrase": "Digite a senha de recuperação", "Resend edit": "Reenviar edição", "Resend removal": "Reenviar a exclusão", - "Share Permalink": "Compartilhar link permanente", + "Share Permalink": "Compartilhar link", "Reload": "Recarregar", "Take picture": "Tirar uma foto", "Country Dropdown": "Selecione o país", @@ -2205,5 +2205,10 @@ "Log in to your new account.": "Entrar em sua nova conta.", "You can now close this window or log in to your new account.": "Agora você pode fechar esta janela ou entrar na sua nova conta.", "Registration Successful": "Registro bem-sucedido", - "Notification Autocomplete": "Notificação do preenchimento automático" + "Notification Autocomplete": "Notificação do preenchimento automático", + "Changes to who can read history will only apply to future messages in this room. The visibility of existing history will be unchanged.": "Alterações em quem pode ler o histórico de conversas aplica-se apenas para mensagens futuras nesta sala. A visibilidade do histórico existente não será alterada.", + "Ask %(displayName)s to scan your code:": "Peça para %(displayName)s escanear o seu código:", + "Almost there! Is %(displayName)s showing the same shield?": "Quase lá! Este escudo também aparece para %(displayName)s?", + "You've successfully verified %(displayName)s!": "Você verificou %(displayName)s com sucesso!", + "Confirm this user's session by comparing the following with their User Settings:": "Confirme a sessão deste usuário comparando o seguinte com as configurações deste usuário:" } From 188071fb7cf5b6cf1bb678b0963cfa65065baa75 Mon Sep 17 00:00:00 2001 From: Alexey Murz Korepov Date: Tue, 4 Aug 2020 08:18:47 +0000 Subject: [PATCH 062/424] Translated using Weblate (Russian) Currently translated at 99.7% (2332 of 2340 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/ru/ --- src/i18n/strings/ru.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index d0c810b091..4931a81cba 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -1141,7 +1141,7 @@ "The file '%(fileName)s' failed to upload.": "Файл '%(fileName)s' не был загружен.", "The server does not support the room version specified.": "Сервер не поддерживает указанную версию комнаты.", "Name or Matrix ID": "Имя или Matrix ID", - "Warning: Upgrading a room will not automatically migrate room members to the new version of the room. We'll post a link to the new room in the old version of the room - room members will have to click this link to join the new room.": "Предупреждение: Обновление номера не приведет к автоматическому переходу участников комнаты на новую версию комнаты. Мы разместим ссылку на новую комнату в старой версии комнаты - участники комнаты должны будут нажать эту ссылку для присоединения к новой комнате.", + "Warning: Upgrading a room will not automatically migrate room members to the new version of the room. We'll post a link to the new room in the old version of the room - room members will have to click this link to join the new room.": "Предупреждение: Модернизация комнаты не приведет к автоматическому переходу участников комнаты на новую версию комнаты. Мы разместим ссылку на новую комнату в старой версии комнаты - участники комнаты должны будут нажать эту ссылку для присоединения к новой комнате.", "Changes your avatar in this current room only": "Меняет ваш аватар только в этой комнате", "Unbans user with given ID": "Разблокирует пользователя с заданным ID", "Adds a custom widget by URL to the room": "Добавляет пользовательский виджет по URL-адресу в комнате", @@ -1159,7 +1159,7 @@ "Upgrade to your own domain": "Обновление до собственного домена", "Credits": "Благодарности", "Bulk options": "Групповые опции", - "Upgrade this room to the recommended room version": "Обновите комнату до рекомендованной версии", + "Upgrade this room to the recommended room version": "Модернизируйте комнату до рекомендованной версии", "this room": "эта комната", "View older messages in %(roomName)s.": "Просмотр старых сообщений в %(roomName)s.", "Change history visibility": "Изменить видимость истории", @@ -1717,7 +1717,7 @@ "Order rooms by name": "Сортировать комнаты по названию", "Show rooms with unread notifications first": "Показывать в начале комнаты с непрочитанными уведомлениями", "Show shortcuts to recently viewed rooms above the room list": "Показывать ссылки на недавние комнаты над списком комнат", - "Manually verify all remote sessions": "Подтверждать все удалённые сессии вручную", + "Manually verify all remote sessions": "Подтверждать вручную все сессии на других устройствах", "Your homeserver does not support cross-signing.": "Ваш домашний сервер не поддерживает кросс-подписи.", "Cross-signing and secret storage are enabled.": "Кросс-подпись и секретное хранилище разрешены.", "Customise your experience with experimental labs features. Learn more.": "Попробуйте экспериментальные возможности. Подробнее.", @@ -2240,11 +2240,11 @@ "We’re excited to announce Riot is now Element!": "Мы рады сообщить, что Riot теперь стал Element!", "Learn more at element.io/previously-riot": "Узнайте больше на сайте element.io/previously-riot", "Automatically invite users": "Автоматически приглашать пользователей", - "Upgrade private room": "Улучшить приватную комнату", - "Upgrade public room": "Улучшить публичную комнату", - "Upgrading a room is an advanced action and is usually recommended when a room is unstable due to bugs, missing features or security vulnerabilities.": "Обновление комнаты - это расширенное действие, которое обычно рекомендуется, когда комната нестабильна из-за ошибок, отсутствующих функций или уязвимостей безопасности.", + "Upgrade private room": "Модернизировать приватную комнату", + "Upgrade public room": "Модернизировать публичную комнату", + "Upgrading a room is an advanced action and is usually recommended when a room is unstable due to bugs, missing features or security vulnerabilities.": "Модернизация комнаты - это расширенное действие, которое обычно рекомендуется, когда комната нестабильна из-за ошибок, отсутствующих функций или уязвимостей безопасности.", "This usually only affects how the room is processed on the server. If you're having problems with your %(brand)s, please report a bug.": "Обычно это влияет только на то, как комната обрабатывается на сервере. Если у вас возникли проблемы с вашим %(brand)s, пожалуйста, сообщите об ошибке.", - "You'll upgrade this room from to .": "Вы обновите эту комнату с до .", + "You'll upgrade this room from to .": "Вы модернизируете эту комнату с до .", "You're all caught up.": "Вы в курсе.", "Server isn't responding": "Сервер не отвечает", "Your server isn't responding to some of your requests. Below are some of the most likely reasons.": "Ваш сервер не отвечает на некоторые ваши запросы. Ниже приведены некоторые из наиболее вероятных причин.", From f888ce10aabaa36e335ddb44d865be846266d112 Mon Sep 17 00:00:00 2001 From: Marcelo Filho Date: Tue, 4 Aug 2020 08:37:56 +0000 Subject: [PATCH 063/424] Translated using Weblate (Portuguese (Brazil)) Currently translated at 94.1% (2203 of 2340 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/pt_BR/ --- src/i18n/strings/pt_BR.json | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/i18n/strings/pt_BR.json b/src/i18n/strings/pt_BR.json index c572cc82bf..d3bb8f8948 100644 --- a/src/i18n/strings/pt_BR.json +++ b/src/i18n/strings/pt_BR.json @@ -161,7 +161,7 @@ "Room %(roomId)s not visible": "A sala %(roomId)s não está visível", "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s enviou uma imagem.", "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s enviou um convite para %(targetDisplayName)s entrar na sala.", - "%(senderName)s set a profile picture.": "%(senderName)s definiu uma imagem de perfil.", + "%(senderName)s set a profile picture.": "%(senderName)s definiu uma foto de perfil.", "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s definiu o nome e sobrenome para %(displayName)s.", "This email address is already in use": "Este endereço de e-mail já está em uso", "This email address was not found": "Este endereço de e-mail não foi encontrado", @@ -198,7 +198,7 @@ "Attachment": "Anexo", "Autoplay GIFs and videos": "Reproduzir GIFs e vídeos automaticamente", "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(day)s de %(monthName)s de %(fullYear)s às %(time)s", - "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Não consigo conectar ao servidor padrão através de HTTP quando uma URL HTTPS está na barra de endereços do seu navegador. Use HTTPS ou então habilite scripts não seguros no seu navegador.", + "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Não consigo conectar ao servidor padrão através de HTTP quando uma URL HTTPS está na barra de endereços do seu navegador. Use HTTPS ou então ative scripts não seguros no seu navegador.", "Change Password": "Alterar senha", "Click to mute audio": "Clique para colocar o áudio no mudo", "Click to mute video": "Clique para desativar o som do vídeo", @@ -300,7 +300,7 @@ "Ongoing conference call%(supportedText)s.": "Chamada em grupo em andamento%(supportedText)s.", "Online": "Conectada/o", "Idle": "Ocioso", - "Offline": "Offline", + "Offline": "Desconectado", "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "O arquivo exportado irá permitir a qualquer pessoa que o acesse a descriptografar qualquer uma das mensagens criptografadas que você veja, portanto seja bastante cuidadosa(o) em manter este arquivo seguro. Para deixar este arquivo mais protegido, recomendamos que você insira uma senha abaixo, que será usada para criptografar o arquivo. Só será possível importar os dados usando exatamente a mesma senha.", "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Este processo faz com que você possa importar as chaves de criptografia que tinha previamente exportado de outro cliente Matrix. Você poderá então descriptografar todas as mensagens que o outro cliente pôde criptografar.", "Start automatically after system login": "Iniciar automaticamente ao iniciar o sistema", @@ -328,7 +328,7 @@ "Register": "Registre-se", "Save": "Salvar", "You have disabled URL previews by default.": "Você desabilitou pré-visualizações de links por padrão.", - "You have enabled URL previews by default.": "Você habilitou pré-visualizações de links por padrão.", + "You have enabled URL previews by default.": "Você ativou pré-visualizações de links por padrão.", "Add": "Adicionar", "Error: Problem communicating with the given homeserver.": "Erro: problema de comunicação com o Servidor de Base fornecido.", "Failed to fetch avatar URL": "Falha ao obter a URL da foto de perfil", @@ -356,7 +356,7 @@ "Custom": "Personalizado", "Decline": "Recusar", "Drop File Here": "Arraste o arquivo aqui", - "Failed to upload profile picture!": "Falha ao enviar a imagem de perfil!", + "Failed to upload profile picture!": "Falha ao enviar a foto de perfil!", "Incoming call from %(name)s": "Recebendo chamada de %(name)s", "Incoming video call from %(name)s": "Recebendo chamada de vídeo de %(name)s", "Incoming voice call from %(name)s": "Recebendo chamada de voz de %(name)s", @@ -461,7 +461,7 @@ "%(duration)sd": "%(duration)sd", "Online for %(duration)s": "Online há %(duration)s", "Idle for %(duration)s": "Inativo há %(duration)s", - "Offline for %(duration)s": "Offline há %(duration)s", + "Offline for %(duration)s": "Desconectado há %(duration)s", "Unknown for %(duration)s": "Status desconhecido há %(duration)s", "Unknown": "Desconhecido", "Replying": "Respondendo", @@ -708,7 +708,7 @@ "Failed to set Direct Message status of room": "Falha em definir a mensagem de status da sala", "Monday": "Segunda-feira", "All messages (noisy)": "Todas as mensagens (alto)", - "Enable them now": "Habilitar agora", + "Enable them now": "Ativá-los agora", "Toolbox": "Ferramentas", "Collecting logs": "Coletando logs", "You must specify an event type!": "Você precisa especificar um tipo do evento!", @@ -1090,7 +1090,7 @@ "Unable to verify phone number.": "Não é possível verificar o número de telefone.", "Verification code": "Código de verificação", "Phone Number": "Número de telefone", - "Profile picture": "Foto de Perfil", + "Profile picture": "Foto de perfil", "Upgrade to your own domain": "Atualize para seu próprio domínio", "Set a new account password...": "Definir uma nova senha da conta...", "Email addresses": "Endereços de e-mail", @@ -1327,7 +1327,7 @@ "Multiple integration managers": "Múltiplos gestores de integrações", "Try out new ways to ignore people (experimental)": "Tente novas maneiras de silenciar pessoas e esconder as mensagens delas (experimental)", "Support adding custom themes": "Permite adicionar temas personalizados", - "Enable advanced debugging for the room list": "Habilitar análise (debugging) avançada para a lista de salas", + "Enable advanced debugging for the room list": "Ativar a depuração avançada para a lista de salas", "Show info about bridges in room settings": "Exibir informações sobre bridges nas configurações das salas", "Font size": "Tamanho da fonte", "Use custom size": "Usar tamanho personalizado", @@ -1386,7 +1386,7 @@ "Show more": "Mostrar mais", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Ao mudar a senha, você apagará todas as chaves de criptografia de ponta a ponta existentes em todas as sessões, fazendo com que o histórico de conversas criptografadas fique ilegível, a não ser que você exporte as salas das chaves criptografadas antes de mudar a senha e então as importe novamente depois. No futuro, isso será melhorado.", "Your homeserver does not support cross-signing.": "Seu servidor não suporta assinatura cruzada.", - "Cross-signing and secret storage are enabled.": "Assinaturas cruzadas e armazenamento secreto estão habilitadas.", + "Cross-signing and secret storage are enabled.": "Assinaturas cruzadas e armazenamento secreto estão ativados.", "Your account has a cross-signing identity in secret storage, but it is not yet trusted by this session.": "Sua conta tem uma identidade de assinatura cruzada em um armazenamento secreto, mas ainda não é considerada confiável por esta sessão.", "Cross-signing and secret storage are not yet set up.": "A assinatura cruzada e o armazenamento seguro ainda não foram configurados.", "Reset cross-signing and secret storage": "Reinicializar a assinatura cruzada e o armazenamento secreto", @@ -1431,7 +1431,7 @@ "%(brand)s can't securely cache encrypted messages locally while running in a web browser. Use %(brand)s Desktop for encrypted messages to appear in search results.": "%(brand)s não consegue armazenar de forma segura as mensagens criptografadas localmente enquando funciona em um navegador web. Use %(brand)s Desktop para que mensagens criptografadas sejam exibidas nos resultados de buscas.", "Connecting to integration manager...": "Conectando ao gestor de integrações...", "Cannot connect to integration manager": "Não foi possível conectar ao gerenciador de integrações", - "The integration manager is offline or it cannot reach your homeserver.": "O gerenciador de integrações está offline ou não consegue acesso ao seu servidor.", + "The integration manager is offline or it cannot reach your homeserver.": "Ou o gerenciador de integrações está desconectado, ou ele não conseguiu acessar o seu servidor.", "This session is backing up your keys. ": "Esta sessão está fazendo a cópia (backup) das suas chaves. ", "This session is not backing up your keys, but you do have an existing backup you can restore from and add to going forward.": "Esta sessão não está fazendo cópia (backup) de suas chaves, mas você tem uma cópia existente que pode restaurar e adicionar para continuar.", "Connect this session to key backup before signing out to avoid losing any keys that may only be on this session.": "Conecte esta sessão à cópia de segurança (backup) das chaves antes de fazer logout para evitar perder quaisquer chaves que possam estar apenas nesta sessão.", @@ -1460,7 +1460,7 @@ "A session's public name is visible to people you communicate with": "O nome público de uma sessão é visível para as pessoas com quem você se comunica", "Enable room encryption": "Ativar criptografia nesta sala", "Enable encryption?": "Ativar criptografia?", - "Once enabled, encryption for a room cannot be disabled. Messages sent in an encrypted room cannot be seen by the server, only by the participants of the room. Enabling encryption may prevent many bots and bridges from working correctly. Learn more about encryption.": "Uma vez ativada, a criptografia da sala não poderá ser desabilitada. Mensagens enviadas em uma sala criptografada não podem ser vistas pelo servidor, apenas pelas/os participantes da sala. Habilitar a criptografia poderá impedir que vários bots e bridges funcionem corretamente. Saiba mais sobre criptografia.", + "Once enabled, encryption for a room cannot be disabled. Messages sent in an encrypted room cannot be seen by the server, only by the participants of the room. Enabling encryption may prevent many bots and bridges from working correctly. Learn more about encryption.": "Uma vez ativada, a criptografia da sala não poderá ser desabilitada. Mensagens enviadas em uma sala criptografada não podem ser vistas pelo servidor, apenas pelas/os participantes da sala. Ativar a criptografia poderá impedir que vários bots e bridges funcionem corretamente. Saiba mais sobre criptografia.", "Encryption": "Criptografia", "Once enabled, encryption cannot be disabled.": "Uma vez ativada, a criptografia não poderá ser desabilitada.", "Encrypted": "Criptografada", @@ -1502,9 +1502,9 @@ "In encrypted rooms, verify all users to ensure it’s secure.": "Em salas criptografadas, verificar todas(os) as(os) usuárias(os) para garantir que elas são seguras.", "Start verification again from the notification.": "Iniciar verificação novamente, após a notificação.", "Start verification again from their profile.": "Iniciar a verificação novamente a partir do perfil deste usuário.", - "Encryption enabled": "Criptografia habilitada", + "Encryption enabled": "Criptografia ativada", "Messages in this room are end-to-end encrypted. Learn more & verify this user in their user profile.": "As mensagens nesta sala estão criptografadas de ponta a ponta. Lembre-se de verificar este usuário no perfil dele/dela.", - "Encryption not enabled": "Criptografia não habilitada", + "Encryption not enabled": "Criptografia desativada", "The encryption used by this room isn't supported.": "A criptografia usada nesta sala não é suportada.", "%(name)s wants to verify": "%(name)s deseja verificar", "Smileys & People": "Sorrisos e pessoas", @@ -1781,7 +1781,7 @@ "Disconnect identity server": "Desconectar servidor de identidade", "Disconnect from the identity server ?": "Desconectar-se do servidor de identidade ?", "Disconnect": "Desconectar", - "You should remove your personal data from identity server before disconnecting. Unfortunately, identity server is currently offline or cannot be reached.": "Você deve remover seus dados pessoais do servidor de identidade antes de desconectar. Infelizmente, o servidor de identidade está atualmente offline ou não pode ser acessado.", + "You should remove your personal data from identity server before disconnecting. Unfortunately, identity server is currently offline or cannot be reached.": "Você deve remover seus dados pessoais do servidor de identidade antes de desconectar. Infelizmente, o servidor de identidade ou está desconectado no momento, ou não pode ser acessado.", "You should:": "Você deveria:", "check your browser plugins for anything that might block the identity server (such as Privacy Badger)": "verifique se há extensões no seu navegador que possam bloquear o servidor de identidade (por exemplo, Privacy Badger)", "contact the administrators of identity server ": "entre em contato com os administradores do servidor de identidade ", From a61cbc1a117631af0e0d52e09dce14367cf6f363 Mon Sep 17 00:00:00 2001 From: Jorik Schellekens Date: Tue, 4 Aug 2020 15:07:13 +0100 Subject: [PATCH 064/424] Add more left padding to fix focus highlight --- res/css/views/elements/_StyledRadioButton.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/css/views/elements/_StyledRadioButton.scss b/res/css/views/elements/_StyledRadioButton.scss index f6c01e917b..62fb5c5512 100644 --- a/res/css/views/elements/_StyledRadioButton.scss +++ b/res/css/views/elements/_StyledRadioButton.scss @@ -63,7 +63,7 @@ limitations under the License. box-sizing: border-box; height: $font-16px; width: $font-16px; - margin-left: 1px; // For the highlight on focus + margin-left: 2px; // For the highlight on focus border: $font-1-5px solid $radio-circle-color; border-radius: $font-16px; From 9ce96bc28db8a5f078c7808c08d970c46d683248 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 4 Aug 2020 21:35:42 +0100 Subject: [PATCH 065/424] delint --- src/stores/RoomViewStore.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/stores/RoomViewStore.tsx b/src/stores/RoomViewStore.tsx index bfcbaf9029..a0f0fb8f68 100644 --- a/src/stores/RoomViewStore.tsx +++ b/src/stores/RoomViewStore.tsx @@ -285,7 +285,7 @@ class RoomViewStore extends Store { {_t("Please contact your homeserver administrator.")}
; } else if (err.httpStatus === 404) { - const invitingUserId = this.getInvitingUserId(this._state.roomId); + const invitingUserId = this.getInvitingUserId(this.state.roomId); // only provide a better error message for invites if (invitingUserId) { // if the inviting user is on the same HS, there can only be one cause: they left. From b30ce0355eb908e2fa409b755e33de632f18d051 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 4 Aug 2020 21:42:39 +0100 Subject: [PATCH 066/424] Factor out Iconized Context Menu for reusabilit --- res/css/_common.scss | 87 --------- res/css/_components.scss | 1 + .../context_menus/_IconizedContextMenu.scss | 102 ++++++++++ src/components/structures/ContextMenu.tsx | 2 +- src/components/structures/UserMenu.tsx | 153 +++++++-------- .../context_menus/IconizedContextMenu.tsx | 89 +++++++++ src/components/views/rooms/RoomTile.tsx | 175 +++++++++--------- 7 files changed, 350 insertions(+), 259 deletions(-) create mode 100644 res/css/views/context_menus/_IconizedContextMenu.scss create mode 100644 src/components/views/context_menus/IconizedContextMenu.tsx diff --git a/res/css/_common.scss b/res/css/_common.scss index f2d3a0e54b..2d221d6b9b 100644 --- a/res/css/_common.scss +++ b/res/css/_common.scss @@ -585,93 +585,6 @@ input[type=text]:focus, input[type=password]:focus, textarea:focus { max-width: 120px; } -// A context menu that largely fits the | [icon] [label] | format. -.mx_IconizedContextMenu { - min-width: 146px; - - .mx_IconizedContextMenu_optionList { - & > * { - padding-left: 20px; - padding-right: 20px; - } - - // the notFirst class is for cases where the optionList might be under a header of sorts. - &:nth-child(n + 2), .mx_IconizedContextMenu_optionList_notFirst { - // This is a bit of a hack when we could just use a simple border-top property, - // however we have a (kinda) good reason for doing it this way: we need opacity. - // To get the right color, we need an opacity modifier which means we have to work - // around the problem. PostCSS doesn't support the opacity() function, and if we - // use something like postcss-functions we quickly run into an issue where the - // function we would define gets passed a CSS variable for custom themes, which - // can't be converted easily even when considering https://stackoverflow.com/a/41265350/7037379 - // - // Therefore, we just hack in a line and border the thing ourselves - &::before { - border-top: 1px solid $primary-fg-color; - opacity: 0.1; - content: ''; - - // Counteract the padding problems (width: 100% ignores the 40px padding, - // unless we position it absolutely then it does the right thing). - width: 100%; - position: absolute; - left: 0; - } - } - - // round the top corners of the top button for the hover effect to be bounded - &:first-child .mx_AccessibleButton:first-child { - border-radius: 8px 8px 0 0; // radius matches .mx_ContextualMenu - } - - // round the bottom corners of the bottom button for the hover effect to be bounded - &:last-child .mx_AccessibleButton:last-child { - border-radius: 0 0 8px 8px; // radius matches .mx_ContextualMenu - } - - .mx_AccessibleButton { - // pad the inside of the button so that the hover background is padded too - padding-top: 12px; - padding-bottom: 12px; - text-decoration: none; - color: $primary-fg-color; - font-size: $font-15px; - line-height: $font-24px; - - // Create a flexbox to more easily define the list items - display: flex; - align-items: center; - - &:hover { - background-color: $menu-selected-color; - } - - img, .mx_IconizedContextMenu_icon { // icons - width: 16px; - min-width: 16px; - max-width: 16px; - } - - span.mx_IconizedContextMenu_label { // labels - padding-left: 14px; - width: 100%; - flex: 1; - - // Ellipsize any text overflow - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; - } - } - } - - &.mx_IconizedContextMenu_compact { - .mx_IconizedContextMenu_optionList > * { - padding: 8px 16px 8px 11px; - } - } -} - @define-mixin ProgressBarColour $colour { color: $colour; &::-moz-progress-bar { diff --git a/res/css/_components.scss b/res/css/_components.scss index fcc87e2061..0dc267e130 100644 --- a/res/css/_components.scss +++ b/res/css/_components.scss @@ -50,6 +50,7 @@ @import "./views/avatars/_DecoratedRoomAvatar.scss"; @import "./views/avatars/_MemberStatusMessageAvatar.scss"; @import "./views/avatars/_PulsedAvatar.scss"; +@import "./views/context_menus/_IconizedContextMenu.scss"; @import "./views/context_menus/_MessageContextMenu.scss"; @import "./views/context_menus/_RoomTileContextMenu.scss"; @import "./views/context_menus/_StatusMessageContextMenu.scss"; diff --git a/res/css/views/context_menus/_IconizedContextMenu.scss b/res/css/views/context_menus/_IconizedContextMenu.scss new file mode 100644 index 0000000000..444ef16f9c --- /dev/null +++ b/res/css/views/context_menus/_IconizedContextMenu.scss @@ -0,0 +1,102 @@ +/* +Copyright 2020 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// A context menu that largely fits the | [icon] [label] | format. +.mx_IconizedContextMenu { + min-width: 146px; + + .mx_IconizedContextMenu_optionList { + & > * { + padding-left: 20px; + padding-right: 20px; + } + + // the notFirst class is for cases where the optionList might be under a header of sorts. + &:nth-child(n + 2), .mx_IconizedContextMenu_optionList_notFirst { + // This is a bit of a hack when we could just use a simple border-top property, + // however we have a (kinda) good reason for doing it this way: we need opacity. + // To get the right color, we need an opacity modifier which means we have to work + // around the problem. PostCSS doesn't support the opacity() function, and if we + // use something like postcss-functions we quickly run into an issue where the + // function we would define gets passed a CSS variable for custom themes, which + // can't be converted easily even when considering https://stackoverflow.com/a/41265350/7037379 + // + // Therefore, we just hack in a line and border the thing ourselves + &::before { + border-top: 1px solid $primary-fg-color; + opacity: 0.1; + content: ''; + + // Counteract the padding problems (width: 100% ignores the 40px padding, + // unless we position it absolutely then it does the right thing). + width: 100%; + position: absolute; + left: 0; + } + } + + // round the top corners of the top button for the hover effect to be bounded + &:first-child .mx_AccessibleButton:first-child { + border-radius: 8px 8px 0 0; // radius matches .mx_ContextualMenu + } + + // round the bottom corners of the bottom button for the hover effect to be bounded + &:last-child .mx_AccessibleButton:last-child { + border-radius: 0 0 8px 8px; // radius matches .mx_ContextualMenu + } + + .mx_AccessibleButton { + // pad the inside of the button so that the hover background is padded too + padding-top: 12px; + padding-bottom: 12px; + text-decoration: none; + color: $primary-fg-color; + font-size: $font-15px; + line-height: $font-24px; + + // Create a flexbox to more easily define the list items + display: flex; + align-items: center; + + &:hover { + background-color: $menu-selected-color; + } + + img, .mx_IconizedContextMenu_icon { // icons + width: 16px; + min-width: 16px; + max-width: 16px; + } + + span.mx_IconizedContextMenu_label { // labels + padding-left: 14px; + width: 100%; + flex: 1; + + // Ellipsize any text overflow + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + } + } + } + + &.mx_IconizedContextMenu_compact { + .mx_IconizedContextMenu_optionList > * { + padding: 8px 16px 8px 11px; + } + } +} diff --git a/src/components/structures/ContextMenu.tsx b/src/components/structures/ContextMenu.tsx index f1bd297730..587ae2cb6b 100644 --- a/src/components/structures/ContextMenu.tsx +++ b/src/components/structures/ContextMenu.tsx @@ -58,7 +58,7 @@ export enum ChevronFace { None = "none", } -interface IProps extends IPosition { +export interface IProps extends IPosition { menuWidth?: number; menuHeight?: number; diff --git a/src/components/structures/UserMenu.tsx b/src/components/structures/UserMenu.tsx index 3f2e387ccb..d94cf7baa5 100644 --- a/src/components/structures/UserMenu.tsx +++ b/src/components/structures/UserMenu.tsx @@ -20,7 +20,7 @@ import defaultDispatcher from "../../dispatcher/dispatcher"; import { ActionPayload } from "../../dispatcher/payloads"; import { Action } from "../../dispatcher/actions"; import { _t } from "../../languageHandler"; -import { ChevronFace, ContextMenu, ContextMenuButton, MenuItem } from "./ContextMenu"; +import { ContextMenuButton } from "./ContextMenu"; import {USER_NOTIFICATIONS_TAB, USER_SECURITY_TAB} from "../views/dialogs/UserSettingsDialog"; import { OpenToTabPayload } from "../../dispatcher/payloads/OpenToTabPayload"; import RedesignFeedbackDialog from "../views/dialogs/RedesignFeedbackDialog"; @@ -38,6 +38,10 @@ import BaseAvatar from '../views/avatars/BaseAvatar'; import classNames from "classnames"; import AccessibleTooltipButton from "../views/elements/AccessibleTooltipButton"; import { SettingLevel } from "../../settings/SettingLevel"; +import IconizedContextMenu, { + IconizedContextMenuOption, + IconizedContextMenuOptionList +} from "../views/context_menus/IconizedContextMenu"; interface IProps { isMinimized: boolean; @@ -50,19 +54,6 @@ interface IState { isDarkTheme: boolean; } -interface IMenuButtonProps { - iconClassName: string; - label: string; - onClick(ev: ButtonEvent); -} - -const MenuButton: React.FC = ({iconClassName, label, onClick}) => { - return - - {label} - ; -}; - export default class UserMenu extends React.Component { private dispatcherRef: string; private themeWatcherRef: string; @@ -226,7 +217,7 @@ export default class UserMenu extends React.Component { let homeButton = null; if (this.hasHomePage) { homeButton = ( - { ); } - return ( - -
-
-
- - {OwnProfileStore.instance.displayName} - - - {MatrixClientPeg.get().getUserId()} - -
- - {_t("Switch - -
- {hostingLink} -
- {homeButton} - this.onSettingsOpen(e, USER_NOTIFICATIONS_TAB)} - /> - this.onSettingsOpen(e, USER_SECURITY_TAB)} - /> - this.onSettingsOpen(e, null)} - /> - {/* */} - -
-
- -
+ return +
+
+ + {OwnProfileStore.instance.displayName} + + + {MatrixClientPeg.get().getUserId()} +
- - ); + + {_t("Switch + +
+ {hostingLink} + + {homeButton} + this.onSettingsOpen(e, USER_NOTIFICATIONS_TAB)} + /> + this.onSettingsOpen(e, USER_SECURITY_TAB)} + /> + this.onSettingsOpen(e, null)} + /> + {/* */} + + + + + +
; }; public render() { diff --git a/src/components/views/context_menus/IconizedContextMenu.tsx b/src/components/views/context_menus/IconizedContextMenu.tsx new file mode 100644 index 0000000000..4127e5e839 --- /dev/null +++ b/src/components/views/context_menus/IconizedContextMenu.tsx @@ -0,0 +1,89 @@ +/* +Copyright 2020 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +import React from "react"; +import classNames from "classnames"; + +import { + ChevronFace, + ContextMenu, + IProps as IContextMenuProps, + MenuItem, + MenuItemCheckbox, +} from "../../structures/ContextMenu"; + +interface IProps extends IContextMenuProps { + className?: string; + compact?: boolean; +} + +interface IOptionListProps { + first?: boolean; + red?: boolean; +} + +interface IOptionProps extends React.ComponentProps { + iconClassName: string; +} + +interface ICheckboxProps extends React.ComponentProps { + iconClassName: string; +} + +export const IconizedContextMenuCheckbox: React.FC = ({label, onClick, iconClassName, checked}) => { + return + + {label} + ; +}; + +export const IconizedContextMenuOption: React.FC = ({label, onClick, iconClassName}) => { + return + + {label} + ; +}; + +export const IconizedContextMenuOptionList: React.FC = ({first, red, children}) => { + const classes = classNames("mx_IconizedContextMenu_optionList", { + mx_IconizedContextMenu_optionList_notFirst: !first, + mx_UserMenu_contextMenu_redRow: red, + }); + + return
+ {children} +
; +}; + +const IconizedContextMenu: React.FC = ({className, children, compact, ...props}) => { + const classes = classNames("mx_IconizedContextMenu", className, { + mx_IconizedContextMenu_compact: compact, + }); + + return +
+ { children } +
+
; +}; + +export default IconizedContextMenu; + diff --git a/src/components/views/rooms/RoomTile.tsx b/src/components/views/rooms/RoomTile.tsx index 02aa915fa5..8f3e8a3a51 100644 --- a/src/components/views/rooms/RoomTile.tsx +++ b/src/components/views/rooms/RoomTile.tsx @@ -27,14 +27,7 @@ import defaultDispatcher from '../../../dispatcher/dispatcher'; import { Key } from "../../../Keyboard"; import ActiveRoomObserver from "../../../ActiveRoomObserver"; import { _t } from "../../../languageHandler"; -import { - ChevronFace, - ContextMenu, - ContextMenuTooltipButton, - MenuItem, - MenuItemCheckbox, - MenuItemRadio, -} from "../../structures/ContextMenu"; +import { ChevronFace, ContextMenuTooltipButton, MenuItemRadio } from "../../structures/ContextMenu"; import { DefaultTagID, TagID } from "../../../stores/room-list/models"; import { MessagePreviewStore, ROOM_PREVIEW_CHANGED } from "../../../stores/room-list/MessagePreviewStore"; import DecoratedRoomAvatar from "../avatars/DecoratedRoomAvatar"; @@ -51,6 +44,11 @@ import AccessibleTooltipButton from "../elements/AccessibleTooltipButton"; import { EchoChamber } from "../../../stores/local-echo/EchoChamber"; import { CachedRoomKey, RoomEchoChamber } from "../../../stores/local-echo/RoomEchoChamber"; import { PROPERTY_UPDATED } from "../../../stores/local-echo/GenericEchoChamber"; +import IconizedContextMenu, { + IconizedContextMenuCheckbox, + IconizedContextMenuOption, + IconizedContextMenuOptionList +} from "../context_menus/IconizedContextMenu"; interface IProps { room: Room; @@ -335,38 +333,39 @@ export default class RoomTile extends React.PureComponent { let contextMenu = null; if (this.state.notificationsMenuPosition) { - contextMenu = ( - -
-
- - - - -
-
-
- ); + contextMenu = + + + + + + + ; } const classes = classNames("mx_RoomTile_notificationsButton", { @@ -400,18 +399,20 @@ export default class RoomTile extends React.PureComponent { let contextMenu = null; if (this.state.generalMenuPosition && this.props.tag === DefaultTagID.Archived) { - contextMenu = ( - -
-
- - - {_t("Forget Room")} - -
-
-
- ); + contextMenu = + + + + ; } else if (this.state.generalMenuPosition) { const roomTags = RoomListStore.instance.getTagsForRoom(this.props.room); @@ -421,42 +422,40 @@ export default class RoomTile extends React.PureComponent { const isLowPriority = roomTags.includes(DefaultTagID.LowPriority); const lowPriorityLabel = _t("Low Priority"); - contextMenu = ( - -
-
- this.onTagRoom(e, DefaultTagID.Favourite)} - active={isFavorite} - label={favouriteLabel} - > - - {favouriteLabel} - - this.onTagRoom(e, DefaultTagID.LowPriority)} - active={isLowPriority} - label={lowPriorityLabel} - > - - {lowPriorityLabel} - - - - {_t("Settings")} - -
-
- - - {_t("Leave Room")} - -
-
-
- ); + contextMenu = + + this.onTagRoom(e, DefaultTagID.Favourite)} + active={isFavorite} + label={favouriteLabel} + iconClassName="mx_RoomTile_iconStar" + /> + this.onTagRoom(e, DefaultTagID.LowPriority)} + active={isLowPriority} + label={lowPriorityLabel} + iconClassName="mx_RoomTile_iconArrowDown" + /> + + + + + + + ; } return ( From d126f5c1e62bd22948a92339b488df50e600cfe4 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 4 Aug 2020 17:20:17 +0100 Subject: [PATCH 067/424] tidy up IconizedContextMenu CSS --- res/css/structures/_UserMenu.scss | 7 +-- .../context_menus/_IconizedContextMenu.scss | 46 +++++++++++++++ res/css/views/rooms/_RoomTile.scss | 40 ------------- .../context_menus/IconizedContextMenu.tsx | 57 +++++++++++++++---- src/components/views/rooms/RoomTile.tsx | 36 ++---------- 5 files changed, 98 insertions(+), 88 deletions(-) diff --git a/res/css/structures/_UserMenu.scss b/res/css/structures/_UserMenu.scss index 81a10ee1d0..78795c85a2 100644 --- a/res/css/structures/_UserMenu.scss +++ b/res/css/structures/_UserMenu.scss @@ -89,15 +89,10 @@ limitations under the License. .mx_UserMenu_contextMenu { width: 247px; - .mx_UserMenu_contextMenu_redRow { + &.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList_red { .mx_AccessibleButton { padding-top: 16px; padding-bottom: 16px; - color: $warning-color !important; // !important to override styles from context menu - } - - .mx_IconizedContextMenu_icon::before { - background-color: $warning-color; } } diff --git a/res/css/views/context_menus/_IconizedContextMenu.scss b/res/css/views/context_menus/_IconizedContextMenu.scss index 444ef16f9c..7913058995 100644 --- a/res/css/views/context_menus/_IconizedContextMenu.scss +++ b/res/css/views/context_menus/_IconizedContextMenu.scss @@ -94,9 +94,55 @@ limitations under the License. } } + .mx_IconizedContextMenu_icon { + position: relative; + width: 16px; + height: 16px; + + &::before { + content: ''; + width: 16px; + height: 16px; + position: absolute; + mask-position: center; + mask-size: contain; + mask-repeat: no-repeat; + background: $primary-fg-color; + } + } + + .mx_IconizedContextMenu_optionList_red { + .mx_AccessibleButton { + color: $warning-color !important; + } + + .mx_IconizedContextMenu_icon::before { + background-color: $warning-color; + } + } + + .mx_IconizedContextMenu_active { + &.mx_AccessibleButton, .mx_AccessibleButton { + color: $accent-color !important; + } + + .mx_IconizedContextMenu_icon::before { + background-color: $accent-color; + } + } + &.mx_IconizedContextMenu_compact { .mx_IconizedContextMenu_optionList > * { padding: 8px 16px 8px 11px; } } + + .mx_IconizedContextMenu_checked { + margin-left: 16px; + margin-right: -5px; + + &::before { + mask-image: url('$(res)/img/element-icons/roomlist/checkmark.svg'); + } + } } diff --git a/res/css/views/rooms/_RoomTile.scss b/res/css/views/rooms/_RoomTile.scss index f22228602d..8eca3f1efa 100644 --- a/res/css/views/rooms/_RoomTile.scss +++ b/res/css/views/rooms/_RoomTile.scss @@ -175,48 +175,8 @@ limitations under the License. .mx_RoomTile_iconBellMentions::before { mask-image: url('$(res)/img/element-icons/roomlist/notifications-dm.svg'); } -.mx_RoomTile_iconCheck::before { - mask-image: url('$(res)/img/element-icons/roomlist/checkmark.svg'); -} .mx_RoomTile_contextMenu { - .mx_RoomTile_contextMenu_redRow { - .mx_AccessibleButton { - color: $warning-color !important; // !important to override styles from context menu - } - - .mx_IconizedContextMenu_icon::before { - background-color: $warning-color; - } - } - - .mx_RoomTile_contextMenu_activeRow { - &.mx_AccessibleButton, .mx_AccessibleButton { - color: $accent-color !important; // !important to override styles from context menu - } - - .mx_IconizedContextMenu_icon::before { - background-color: $accent-color; - } - } - - .mx_IconizedContextMenu_icon { - position: relative; - width: 16px; - height: 16px; - - &::before { - content: ''; - width: 16px; - height: 16px; - position: absolute; - mask-position: center; - mask-size: contain; - mask-repeat: no-repeat; - background: $primary-fg-color; - } - } - .mx_RoomTile_iconStar::before { mask-image: url('$(res)/img/element-icons/roomlist/favorite.svg'); } diff --git a/src/components/views/context_menus/IconizedContextMenu.tsx b/src/components/views/context_menus/IconizedContextMenu.tsx index 4127e5e839..b3ca9fde6f 100644 --- a/src/components/views/context_menus/IconizedContextMenu.tsx +++ b/src/components/views/context_menus/IconizedContextMenu.tsx @@ -22,7 +22,7 @@ import { ContextMenu, IProps as IContextMenuProps, MenuItem, - MenuItemCheckbox, + MenuItemCheckbox, MenuItemRadio, } from "../../structures/ContextMenu"; interface IProps extends IContextMenuProps { @@ -33,6 +33,7 @@ interface IProps extends IContextMenuProps { interface IOptionListProps { first?: boolean; red?: boolean; + className?: string; } interface IOptionProps extends React.ComponentProps { @@ -43,29 +44,63 @@ interface ICheckboxProps extends React.ComponentProps { iconClassName: string; } -export const IconizedContextMenuCheckbox: React.FC = ({label, onClick, iconClassName, checked}) => { - return { + iconClassName: string; +} + +export const IconizedContextMenuRadio: React.FC = ({ + label, + iconClassName, + active, + className, + ...props +}) => { + return {label} + {active && } + ; +}; + +export const IconizedContextMenuCheckbox: React.FC = ({ + label, + iconClassName, + active, + className, + ...props +}) => { + return + + {label} + {active && } ; }; -export const IconizedContextMenuOption: React.FC = ({label, onClick, iconClassName}) => { - return +export const IconizedContextMenuOption: React.FC = ({label, iconClassName, ...props}) => { + return {label} ; }; -export const IconizedContextMenuOptionList: React.FC = ({first, red, children}) => { - const classes = classNames("mx_IconizedContextMenu_optionList", { +export const IconizedContextMenuOptionList: React.FC = ({first, red, className, children}) => { + const classes = classNames("mx_IconizedContextMenu_optionList", className, { mx_IconizedContextMenu_optionList_notFirst: !first, - mx_UserMenu_contextMenu_redRow: red, + mx_IconizedContextMenu_optionList_red: red, }); return
diff --git a/src/components/views/rooms/RoomTile.tsx b/src/components/views/rooms/RoomTile.tsx index 8f3e8a3a51..7c5c5b469b 100644 --- a/src/components/views/rooms/RoomTile.tsx +++ b/src/components/views/rooms/RoomTile.tsx @@ -47,7 +47,7 @@ import { PROPERTY_UPDATED } from "../../../stores/local-echo/GenericEchoChamber" import IconizedContextMenu, { IconizedContextMenuCheckbox, IconizedContextMenuOption, - IconizedContextMenuOptionList + IconizedContextMenuOptionList, IconizedContextMenuRadio } from "../context_menus/IconizedContextMenu"; interface IProps { @@ -76,32 +76,6 @@ const contextMenuBelow = (elementRect: PartialDOMRect) => { return {left, top, chevronFace}; }; -interface INotifOptionProps { - active: boolean; - iconClassName: string; - label: string; - onClick(ev: ButtonEvent); -} - -const NotifOption: React.FC = ({active, onClick, iconClassName, label}) => { - const classes = classNames({ - mx_RoomTile_contextMenu_activeRow: active, - }); - - let activeIcon; - if (active) { - activeIcon = ; - } - - return ( - - - { label } - { activeIcon } - - ); -}; - export default class RoomTile extends React.PureComponent { private dispatcherRef: string; private roomTileRef = createRef(); @@ -340,25 +314,25 @@ export default class RoomTile extends React.PureComponent { compact > - - - - Date: Tue, 4 Aug 2020 21:46:07 +0100 Subject: [PATCH 068/424] i18n --- src/i18n/strings/en_EN.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 8314402849..e5193b3faf 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -1178,11 +1178,11 @@ "All messages": "All messages", "Mentions & Keywords": "Mentions & Keywords", "Notification options": "Notification options", - "Leave Room": "Leave Room", "Forget Room": "Forget Room", "Favourited": "Favourited", "Favourite": "Favourite", "Low Priority": "Low Priority", + "Leave Room": "Leave Room", "Room options": "Room options", "%(count)s unread messages including mentions.|other": "%(count)s unread messages including mentions.", "%(count)s unread messages including mentions.|one": "1 unread mention.", From 93b4ea5be43eda0d70963c54af80721cfa27b2ac Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 4 Aug 2020 21:57:37 +0100 Subject: [PATCH 069/424] Create Maps utility comparison functions --- src/utils/maps.ts | 49 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 src/utils/maps.ts diff --git a/src/utils/maps.ts b/src/utils/maps.ts new file mode 100644 index 0000000000..0ac931a06e --- /dev/null +++ b/src/utils/maps.ts @@ -0,0 +1,49 @@ +/* +Copyright 2020 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +import { arrayDiff, arrayMerge, arrayUnion } from "./arrays"; + +/** + * Determines the keys added, changed, and removed between two Maps. + * For changes, simple triple equal comparisons are done, not in-depth + * tree checking. + * @param a The first object. Must be defined. + * @param b The second object. Must be defined. + * @returns The difference between the keys of each object. + */ +export function mapDiff(a: Map, b: Map): { changed: K[], added: K[], removed: K[] } { + const aKeys = [...a.keys()]; + const bKeys = [...b.keys()]; + const keyDiff = arrayDiff(aKeys, bKeys); + const possibleChanges = arrayUnion(aKeys, bKeys); + const changes = possibleChanges.filter(k => a.get(k) !== b.get(k)); + + return {changed: changes, added: keyDiff.added, removed: keyDiff.removed}; +} + +/** + * Gets all the key changes (added, removed, or value difference) between + * two Maps. Triple equals is used to compare values, not in-depth tree + * checking. + * @param a The first object. Must be defined. + * @param b The second object. Must be defined. + * @returns The keys which have been added, removed, or changed between the + * two objects. + */ +export function mapKeyChanges(a: Map, b: Map): K[] { + const diff = mapDiff(a, b); + return arrayMerge(diff.removed, diff.added, diff.changed); +} From ed4a4272877432f8574a444b05848c8e05e78688 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 4 Aug 2020 22:00:05 +0100 Subject: [PATCH 070/424] Convert hooks to Typescript --- src/hooks/{useAsyncMemo.js => useAsyncMemo.ts} | 6 ++++-- src/hooks/{useEventEmitter.js => useEventEmitter.ts} | 7 +++++-- src/hooks/{useSettings.js => useSettings.ts} | 4 ++-- src/hooks/{useStateToggle.js => useStateToggle.ts} | 6 +++--- 4 files changed, 14 insertions(+), 9 deletions(-) rename src/hooks/{useAsyncMemo.js => useAsyncMemo.ts} (81%) rename src/hooks/{useEventEmitter.js => useEventEmitter.ts} (86%) rename src/hooks/{useSettings.js => useSettings.ts} (90%) rename src/hooks/{useStateToggle.js => useStateToggle.ts} (85%) diff --git a/src/hooks/useAsyncMemo.js b/src/hooks/useAsyncMemo.ts similarity index 81% rename from src/hooks/useAsyncMemo.js rename to src/hooks/useAsyncMemo.ts index ef7d256b04..11c7aca7f1 100644 --- a/src/hooks/useAsyncMemo.js +++ b/src/hooks/useAsyncMemo.ts @@ -14,9 +14,11 @@ See the License for the specific language governing permissions and limitations under the License. */ -import { useState, useEffect } from 'react'; +import {useState, useEffect, DependencyList} from 'react'; -export const useAsyncMemo = (fn, deps, initialValue) => { +type Fn = () => Promise; + +export const useAsyncMemo = (fn: Fn, deps: DependencyList, initialValue?: T) => { const [value, setValue] = useState(initialValue); useEffect(() => { fn().then(setValue); diff --git a/src/hooks/useEventEmitter.js b/src/hooks/useEventEmitter.ts similarity index 86% rename from src/hooks/useEventEmitter.js rename to src/hooks/useEventEmitter.ts index 6a758fb108..6b5693ef95 100644 --- a/src/hooks/useEventEmitter.js +++ b/src/hooks/useEventEmitter.ts @@ -15,11 +15,14 @@ limitations under the License. */ import {useRef, useEffect} from "react"; +import type {EventEmitter} from "events"; + +type Handler = (...args: any[]) => void; // Hook to wrap event emitter on and removeListener in hook lifecycle -export const useEventEmitter = (emitter, eventName, handler) => { +export const useEventEmitter = (emitter: EventEmitter, eventName: string | symbol, handler: Handler) => { // Create a ref that stores handler - const savedHandler = useRef(); + const savedHandler = useRef(handler); // Update ref.current value if handler changes. useEffect(() => { diff --git a/src/hooks/useSettings.js b/src/hooks/useSettings.ts similarity index 90% rename from src/hooks/useSettings.js rename to src/hooks/useSettings.ts index 151a6369de..4d1e1d5bad 100644 --- a/src/hooks/useSettings.js +++ b/src/hooks/useSettings.ts @@ -18,7 +18,7 @@ import {useEffect, useState} from "react"; import SettingsStore from '../settings/SettingsStore'; // Hook to fetch the value of a setting and dynamically update when it changes -export const useSettingValue = (settingName, roomId = null, excludeDefault = false) => { +export const useSettingValue = (settingName: string, roomId: string = null, excludeDefault = false) => { const [value, setValue] = useState(SettingsStore.getValue(settingName, roomId, excludeDefault)); useEffect(() => { @@ -35,7 +35,7 @@ export const useSettingValue = (settingName, roomId = null, excludeDefault = fal }; // Hook to fetch whether a feature is enabled and dynamically update when that changes -export const useFeatureEnabled = (featureName, roomId = null) => { +export const useFeatureEnabled = (featureName: string, roomId: string = null) => { const [enabled, setEnabled] = useState(SettingsStore.isFeatureEnabled(featureName, roomId)); useEffect(() => { diff --git a/src/hooks/useStateToggle.js b/src/hooks/useStateToggle.ts similarity index 85% rename from src/hooks/useStateToggle.js rename to src/hooks/useStateToggle.ts index 58cf123bfb..85441df328 100644 --- a/src/hooks/useStateToggle.js +++ b/src/hooks/useStateToggle.ts @@ -14,12 +14,12 @@ See the License for the specific language governing permissions and limitations under the License. */ -import {useState} from 'react'; +import {useState} from "react"; // Hook to simplify toggling of a boolean state value // Returns value, method to toggle boolean value and method to set the boolean value -export const useStateToggle = (initialValue) => { - const [value, setValue] = useState(Boolean(initialValue)); +export const useStateToggle = (initialValue: boolean) => { + const [value, setValue] = useState(initialValue); const toggleValue = () => { setValue(!value); }; From f5d75bc078582e55a0b92b85c4881843d83e0248 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 4 Aug 2020 22:03:30 +0100 Subject: [PATCH 071/424] fix comments --- src/utils/maps.ts | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/src/utils/maps.ts b/src/utils/maps.ts index 0ac931a06e..96832094f0 100644 --- a/src/utils/maps.ts +++ b/src/utils/maps.ts @@ -18,11 +18,10 @@ import { arrayDiff, arrayMerge, arrayUnion } from "./arrays"; /** * Determines the keys added, changed, and removed between two Maps. - * For changes, simple triple equal comparisons are done, not in-depth - * tree checking. - * @param a The first object. Must be defined. - * @param b The second object. Must be defined. - * @returns The difference between the keys of each object. + * For changes, simple triple equal comparisons are done, not in-depth tree checking. + * @param a The first Map. Must be defined. + * @param b The second Map. Must be defined. + * @returns The difference between the keys of each Map. */ export function mapDiff(a: Map, b: Map): { changed: K[], added: K[], removed: K[] } { const aKeys = [...a.keys()]; @@ -35,13 +34,11 @@ export function mapDiff(a: Map, b: Map): { changed: K[], added } /** - * Gets all the key changes (added, removed, or value difference) between - * two Maps. Triple equals is used to compare values, not in-depth tree - * checking. - * @param a The first object. Must be defined. - * @param b The second object. Must be defined. - * @returns The keys which have been added, removed, or changed between the - * two objects. + * Gets all the key changes (added, removed, or value difference) between two Maps. + * Triple equals is used to compare values, not in-depth tree checking. + * @param a The first Map. Must be defined. + * @param b The second Map. Must be defined. + * @returns The keys which have been added, removed, or changed between the two Maps. */ export function mapKeyChanges(a: Map, b: Map): K[] { const diff = mapDiff(a, b); From cd29edb442b801cde1ccbaba042d5b62263c1bf7 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Wed, 5 Aug 2020 09:13:01 +0100 Subject: [PATCH 072/424] Write more typescript defs --- src/components/views/rooms/RoomList.tsx | 1 + .../handlers/AccountSettingsHandler.ts | 2 +- .../handlers/RoomAccountSettingsHandler.ts | 2 +- src/settings/handlers/RoomSettingsHandler.ts | 5 +-- src/utils/objects.ts | 34 +++++++++++-------- 5 files changed, 25 insertions(+), 19 deletions(-) diff --git a/src/components/views/rooms/RoomList.tsx b/src/components/views/rooms/RoomList.tsx index 09fdbf0864..90270452fd 100644 --- a/src/components/views/rooms/RoomList.tsx +++ b/src/components/views/rooms/RoomList.tsx @@ -245,6 +245,7 @@ export default class RoomList extends React.PureComponent { if (doUpdate) { // We have to break our reference to the room list store if we want to be able to // diff the object for changes, so do that. + // @ts-ignore - ITagMap is ts-ignored so this will have to be too const newSublists = objectWithOnly(newLists, newListIds); const sublists = objectShallowClone(newSublists, (k, v) => arrayFastClone(v)); diff --git a/src/settings/handlers/AccountSettingsHandler.ts b/src/settings/handlers/AccountSettingsHandler.ts index 53180aeba8..d609fd3231 100644 --- a/src/settings/handlers/AccountSettingsHandler.ts +++ b/src/settings/handlers/AccountSettingsHandler.ts @@ -59,7 +59,7 @@ export default class AccountSettingsHandler extends MatrixClientBackedSettingsHa } else if (event.getType() === "im.vector.web.settings") { // Figure out what changed and fire those updates const prevContent = prevEvent ? prevEvent.getContent() : {}; - const changedSettings = objectKeyChanges(prevContent, event.getContent()); + const changedSettings = objectKeyChanges>(prevContent, event.getContent()); for (const settingName of changedSettings) { const val = event.getContent()[settingName]; this.watchers.notifyUpdate(settingName, null, SettingLevel.ACCOUNT, val); diff --git a/src/settings/handlers/RoomAccountSettingsHandler.ts b/src/settings/handlers/RoomAccountSettingsHandler.ts index e3449e76c3..53e29653f8 100644 --- a/src/settings/handlers/RoomAccountSettingsHandler.ts +++ b/src/settings/handlers/RoomAccountSettingsHandler.ts @@ -59,7 +59,7 @@ export default class RoomAccountSettingsHandler extends MatrixClientBackedSettin } else if (event.getType() === "im.vector.web.settings") { // Figure out what changed and fire those updates const prevContent = prevEvent ? prevEvent.getContent() : {}; - const changedSettings = objectKeyChanges(prevContent, event.getContent()); + const changedSettings = objectKeyChanges>(prevContent, event.getContent()); for (const settingName of changedSettings) { const val = event.getContent()[settingName]; this.watchers.notifyUpdate(settingName, roomId, SettingLevel.ROOM_ACCOUNT, val); diff --git a/src/settings/handlers/RoomSettingsHandler.ts b/src/settings/handlers/RoomSettingsHandler.ts index 4b4d4c4ad9..3315e40a65 100644 --- a/src/settings/handlers/RoomSettingsHandler.ts +++ b/src/settings/handlers/RoomSettingsHandler.ts @@ -65,9 +65,10 @@ export default class RoomSettingsHandler extends MatrixClientBackedSettingsHandl } else if (event.getType() === "im.vector.web.settings") { // Figure out what changed and fire those updates const prevContent = prevEvent ? prevEvent.getContent() : {}; - const changedSettings = objectKeyChanges(prevContent, event.getContent()); + const changedSettings = objectKeyChanges>(prevContent, event.getContent()); for (const settingName of changedSettings) { - this.watchers.notifyUpdate(settingName, roomId, SettingLevel.ROOM, event.getContent()[settingName]); + this.watchers.notifyUpdate(settingName, roomId, SettingLevel.ROOM, + event.getContent()[settingName]); } } }; diff --git a/src/utils/objects.ts b/src/utils/objects.ts index ddd9830832..658491188d 100644 --- a/src/utils/objects.ts +++ b/src/utils/objects.ts @@ -16,15 +16,17 @@ limitations under the License. import { arrayDiff, arrayHasDiff, arrayMerge, arrayUnion } from "./arrays"; +type ObjectExcluding = {[k in Exclude]: O[k]}; + /** * Gets a new object which represents the provided object, excluding some properties. * @param a The object to strip properties of. Must be defined. * @param props The property names to remove. * @returns The new object without the provided properties. */ -export function objectExcluding(a: any, props: string[]): any { +export function objectExcluding(a: O, props: P): ObjectExcluding { // We use a Map to avoid hammering the `delete` keyword, which is slow and painful. - const tempMap = new Map(Object.entries(a)); + const tempMap = new Map(Object.entries(a) as [keyof O, any][]); for (const prop of props) { tempMap.delete(prop); } @@ -33,7 +35,7 @@ export function objectExcluding(a: any, props: string[]): any { return Array.from(tempMap.entries()).reduce((c, [k, v]) => { c[k] = v; return c; - }, {}); + }, {} as O); } /** @@ -43,13 +45,13 @@ export function objectExcluding(a: any, props: string[]): any { * @param props The property names to keep. * @returns The new object with only the provided properties. */ -export function objectWithOnly(a: any, props: string[]): any { - const existingProps = Object.keys(a); +export function objectWithOnly(a: O, props: P): {[k in P[number]]: O[k]} { + const existingProps = Object.keys(a) as (keyof O)[]; const diff = arrayDiff(existingProps, props); if (diff.removed.length === 0) { return objectShallowClone(a); } else { - return objectExcluding(a, diff.removed); + return objectExcluding(a, diff.removed) as {[k in P[number]]: O[k]}; } } @@ -64,9 +66,9 @@ export function objectWithOnly(a: any, props: string[]): any { * First argument is the property key with the second being the current value. * @returns A cloned object. */ -export function objectShallowClone(a: any, propertyCloner?: (k: string, v: any) => any): any { - const newObj = {}; - for (const [k, v] of Object.entries(a)) { +export function objectShallowClone(a: O, propertyCloner?: (k: keyof O, v: O[keyof O]) => any): O { + const newObj = {} as O; + for (const [k, v] of Object.entries(a) as [keyof O, O[keyof O]][]) { newObj[k] = v; if (propertyCloner) { newObj[k] = propertyCloner(k, v); @@ -83,7 +85,7 @@ export function objectShallowClone(a: any, propertyCloner?: (k: string, v: any) * @param b The second object. Must be defined. * @returns True if there's a difference between the objects, false otherwise */ -export function objectHasDiff(a: any, b: any): boolean { +export function objectHasDiff(a: O, b: O): boolean { const aKeys = Object.keys(a); const bKeys = Object.keys(b); if (arrayHasDiff(aKeys, bKeys)) return true; @@ -92,6 +94,8 @@ export function objectHasDiff(a: any, b: any): boolean { return possibleChanges.some(k => a[k] !== b[k]); } +type Diff = { changed: K[], added: K[], removed: K[] }; + /** * Determines the keys added, changed, and removed between two objects. * For changes, simple triple equal comparisons are done, not in-depth @@ -100,9 +104,9 @@ export function objectHasDiff(a: any, b: any): boolean { * @param b The second object. Must be defined. * @returns The difference between the keys of each object. */ -export function objectDiff(a: any, b: any): { changed: string[], added: string[], removed: string[] } { - const aKeys = Object.keys(a); - const bKeys = Object.keys(b); +export function objectDiff(a: O, b: O): Diff { + const aKeys = Object.keys(a) as (keyof O)[]; + const bKeys = Object.keys(b) as (keyof O)[]; const keyDiff = arrayDiff(aKeys, bKeys); const possibleChanges = arrayUnion(aKeys, bKeys); const changes = possibleChanges.filter(k => a[k] !== b[k]); @@ -119,7 +123,7 @@ export function objectDiff(a: any, b: any): { changed: string[], added: string[] * @returns The keys which have been added, removed, or changed between the * two objects. */ -export function objectKeyChanges(a: any, b: any): string[] { +export function objectKeyChanges(a: O, b: O): (keyof O)[] { const diff = objectDiff(a, b); return arrayMerge(diff.removed, diff.added, diff.changed); } @@ -131,6 +135,6 @@ export function objectKeyChanges(a: any, b: any): string[] { * @param obj The object to clone. * @returns The cloned object */ -export function objectClone(obj: any): any { +export function objectClone(obj: O): O { return JSON.parse(JSON.stringify(obj)); } From 6220f503601126f03e26dfe3755e04b7ab1ca251 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Wed, 5 Aug 2020 09:28:02 +0100 Subject: [PATCH 073/424] delint --- src/utils/objects.ts | 4 ++-- src/widgets/WidgetApi.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/utils/objects.ts b/src/utils/objects.ts index 658491188d..bc74ab9ee0 100644 --- a/src/utils/objects.ts +++ b/src/utils/objects.ts @@ -24,7 +24,7 @@ type ObjectExcluding = {[k in Exclude(a: O, props: P): ObjectExcluding { +export function objectExcluding>(a: O, props: P): ObjectExcluding { // We use a Map to avoid hammering the `delete` keyword, which is slow and painful. const tempMap = new Map(Object.entries(a) as [keyof O, any][]); for (const prop of props) { @@ -45,7 +45,7 @@ export function objectExcluding(a: O, props * @param props The property names to keep. * @returns The new object with only the provided properties. */ -export function objectWithOnly(a: O, props: P): {[k in P[number]]: O[k]} { +export function objectWithOnly>(a: O, props: P): {[k in P[number]]: O[k]} { const existingProps = Object.keys(a) as (keyof O)[]; const diff = arrayDiff(existingProps, props); if (diff.removed.length === 0) { diff --git a/src/widgets/WidgetApi.ts b/src/widgets/WidgetApi.ts index 4775c30c95..039f72ce0f 100644 --- a/src/widgets/WidgetApi.ts +++ b/src/widgets/WidgetApi.ts @@ -141,7 +141,7 @@ export class WidgetApi extends EventEmitter { private replyToRequest(payload: ToWidgetRequest, reply: any) { if (!window.parent) return; - const request = objectClone(payload); + const request: ToWidgetRequest & {response?: any} = objectClone(payload); request.response = reply; window.parent.postMessage(request, this.origin); From a6e0a1d0b630b8978298595428b626cc0037bb0e Mon Sep 17 00:00:00 2001 From: Besnik Bleta Date: Tue, 4 Aug 2020 10:45:39 +0000 Subject: [PATCH 074/424] Translated using Weblate (Albanian) Currently translated at 99.7% (2334 of 2340 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/sq/ --- src/i18n/strings/sq.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/sq.json b/src/i18n/strings/sq.json index 85c2ec6fea..ec42b94864 100644 --- a/src/i18n/strings/sq.json +++ b/src/i18n/strings/sq.json @@ -2402,5 +2402,8 @@ "Your area is experiencing difficulties connecting to the internet.": "Zona juaj po ka probleme lidhjeje në internet.", "A connection error occurred while trying to contact the server.": "Ndodhi një gabim teksa provohej lidhja me shërbyesin.", "The server is not configured to indicate what the problem is (CORS).": "Shërbyesi s’është formësuar të tregojë se cili është problemi (CORS).", - "Recent changes that have not yet been received": "Ndryshime tani së fundi që s’janë marrë ende" + "Recent changes that have not yet been received": "Ndryshime tani së fundi që s’janë marrë ende", + "No files visible in this room": "S’ka kartela të dukshme në këtë dhomë", + "Attach files from chat or just drag and drop them anywhere in a room.": "Bashkëngjitni kartela prej fjalosjeje ose thjesht tërhiqini dhe lërini kudo qoftë brenda dhomës.", + "You have no visible notifications in this room.": "S’ka njoftime të dukshme për ju në këtë dhomë." } From 04d430304a3c6bd82fb9ba38324c25593fc226c9 Mon Sep 17 00:00:00 2001 From: "@a2sc:matrix.org" Date: Tue, 4 Aug 2020 14:28:31 +0000 Subject: [PATCH 075/424] Translated using Weblate (German) Currently translated at 98.6% (2307 of 2340 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 09dbcb2e18..74fde8d6d7 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -2361,5 +2361,19 @@ "%(brand)s encountered an error during upload of:": "%(brand)s hat einen Fehler festgestellt beim hochladen von:", "Use your account to sign in to the latest version of the app at ": "Verwende dein Konto um dich an der neusten Version der App anzumelden", "We’re excited to announce Riot is now Element!": "Wir freuen uns bekanntzugeben: Riot ist jetzt Element!", - "Learn more at element.io/previously-riot": "Erfahre mehr unter element.io/previously-riot" + "Learn more at element.io/previously-riot": "Erfahre mehr unter element.io/previously-riot", + "The person who invited you already left the room.": "Die Person, die dich eingeladen hat, hat den Raum bereits verlassen.", + "The person who invited you already left the room, or their server is offline.": "Die Person, die dich eingeladen hat, hat den Raum bereits verlassen oder ihr Server ist offline.", + "Change notification settings": "Benachrichtigungseinstellungen ändern", + "Your server isn't responding to some requests.": "Dein Server antwortet nicht auf einige Anfragen.", + "Go to Element": "Zu Element gehen", + "Server isn't responding": "Server antwortet nicht", + "Your server isn't responding to some of your requests. Below are some of the most likely reasons.": "Server reagiert nicht auf einige deiner Anfragen. Im Folgenden sind einige der wahrscheinlichsten Gründe aufgeführt.", + "The server (%(serverName)s) took too long to respond.": "Der Server (%(serverName)s) brauchte zu lange zum antworten.", + "Your firewall or anti-virus is blocking the request.": "Deine Firewall oder Anti-Virus-Programm blockiert die Anfrage.", + "A browser extension is preventing the request.": "Eine Browser-Erweiterung verhindert die Anfrage.", + "The server is offline.": "Der Server ist offline.", + "The server has denied your request.": "Der Server hat deine Anfrage abgewiesen.", + "Your area is experiencing difficulties connecting to the internet.": "Deine Region hat Schwierigkeiten, eine Verbindung zum Internet herzustellen.", + "A connection error occurred while trying to contact the server.": "Beim Versuch, den Server zu kontaktieren, ist ein Verbindungsfehler aufgetreten." } From ba404dade624b29c8abb91fda3f4ea8def34a070 Mon Sep 17 00:00:00 2001 From: baschi29 Date: Tue, 4 Aug 2020 14:31:43 +0000 Subject: [PATCH 076/424] Translated using Weblate (German) Currently translated at 98.6% (2307 of 2340 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 74fde8d6d7..63fdac677c 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -2375,5 +2375,6 @@ "The server is offline.": "Der Server ist offline.", "The server has denied your request.": "Der Server hat deine Anfrage abgewiesen.", "Your area is experiencing difficulties connecting to the internet.": "Deine Region hat Schwierigkeiten, eine Verbindung zum Internet herzustellen.", - "A connection error occurred while trying to contact the server.": "Beim Versuch, den Server zu kontaktieren, ist ein Verbindungsfehler aufgetreten." + "A connection error occurred while trying to contact the server.": "Beim Versuch, den Server zu kontaktieren, ist ein Verbindungsfehler aufgetreten.", + "You might have configured them in a client other than %(brand)s. You cannot tune them in %(brand)s but they still apply.": "Du hast sie ggf. in einem anderen Client als %(brand)s konfiguriert. Du kannst sie nicht in %(brand)s verändern, aber sie werden trotzdem angewendet. " } From a8ebb7c58edf97b570ad4d261ab82e0d9cc98515 Mon Sep 17 00:00:00 2001 From: Marcelo Filho Date: Wed, 5 Aug 2020 04:39:42 +0000 Subject: [PATCH 077/424] Translated using Weblate (Portuguese (Brazil)) Currently translated at 94.2% (2204 of 2340 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/pt_BR/ --- src/i18n/strings/pt_BR.json | 43 +++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/src/i18n/strings/pt_BR.json b/src/i18n/strings/pt_BR.json index d3bb8f8948..a5b6980c2b 100644 --- a/src/i18n/strings/pt_BR.json +++ b/src/i18n/strings/pt_BR.json @@ -223,7 +223,7 @@ "Kick": "Remover", "not specified": "não especificado", "No more results": "Não há mais resultados", - "No results": "Sem resultados", + "No results": "Nenhum resultado", "OK": "Ok", "Search": "Buscar", "Search failed": "Busca falhou", @@ -682,7 +682,7 @@ "Messages sent by bot": "Mensagens enviadas por bots", "Filter results": "Filtrar resultados", "Members": "Membros", - "No update available.": "Não há atualizações disponíveis.", + "No update available.": "Nenhuma atualização disponível.", "Noisy": "Ativado com som", "Files": "Arquivos", "Collecting app version information": "Coletando informação sobre a versão do app", @@ -774,8 +774,8 @@ "Opens the Developer Tools dialog": "Abre a caixa de diálogo Ferramentas do desenvolvedor", "Forces the current outbound group session in an encrypted room to be discarded": "Força a atual sessão de grupo de saída em uma sala criptografada a ser descartada", "e.g. %(exampleValue)s": "ex. %(exampleValue)s", - "%(senderName)s set the main address for this room to %(address)s.": "%(senderName)s definiu o endereço principal desta sala para %(address)s.", - "%(senderName)s removed the main address for this room.": "%(senderName)s removeu o endereço principal nesta sala.", + "%(senderName)s set the main address for this room to %(address)s.": "%(senderName)s definiu o endereço principal desta sala como %(address)s.", + "%(senderName)s removed the main address for this room.": "%(senderName)s removeu o endereço principal desta sala.", "This homeserver has hit its Monthly Active User limit.": "Este homeserver atingiu seu limite de usuário ativo mensal.", "This homeserver has exceeded one of its resource limits.": "Este homeserver ultrapassou um dos seus limites de recursos.", "Please contact your service administrator to continue using the service.": "Por favor, entre em contato com o seu administrador de serviços para continuar usando o serviço.", @@ -832,12 +832,12 @@ "The conversation continues here.": "A conversa continua aqui.", "Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "Visto por %(displayName)s (%(userName)s) em %(dateTime)s", "Share room": "Compartilhar sala", - "System Alerts": "Alertas do Sistema", - "Don't ask again": "Não pergunte novamente", + "System Alerts": "Alertas do sistema", + "Don't ask again": "Não perguntar novamente", "Set up": "Configurar", "Muted Users": "Usuários silenciados", "Open Devtools": "Abrir as Ferramentas de Desenvolvimento", - "Only room administrators will see this warning": "Somente administradores de sala verão esse aviso", + "Only room administrators will see this warning": "Somente administradores de sala verão esse alerta", "You don't currently have any stickerpacks enabled": "No momento, você não tem pacotes de figurinhas ativados", "Demote": "Reduzir privilégio", "Demote yourself?": "Reduzir seu próprio privilégio?", @@ -862,7 +862,7 @@ "That doesn't look like a valid email address": "Este não parece ser um endereço de e-mail válido", "Preparing to send logs": "Preparando para enviar registros", "Logs sent": "Registros enviados", - "Failed to send logs: ": "Falha ao enviar registros: ", + "Failed to send logs: ": "Falha ao enviar registros:· ", "Submit debug logs": "Submeter registros de depuração", "Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Os registros de depuração contêm dados de uso do aplicativo, incluindo seu nome de usuário, os IDs ou aliases das salas ou grupos que você visitou e os nomes de usuários de outros usuários. Eles não contêm mensagens.", "Before submitting logs, you must create a GitHub issue to describe your problem.": "Antes de enviar os registros, você deve criar um bilhete de erro no GitHub para descrever seu problema.", @@ -873,7 +873,7 @@ "This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. This action is irreversible.": "Isso tornará sua conta permanentemente inutilizável. Você não poderá efetuar login e ninguém poderá registrar novamente o mesmo ID de usuário. Isso fará com que sua conta deixe todas as salas nas quais está participando e removerá os detalhes da sua conta do seu servidor de identidade. Esta ação é irreversível.", "Deactivating your account does not by default cause us to forget messages you have sent. If you would like us to forget your messages, please tick the box below.": "Desativar sua conta não faz com que, por padrão, esqueçamos as mensagens que você enviou. Se você quiser que esqueçamos suas mensagens, marque a caixa abaixo.", "Message visibility in Matrix is similar to email. Our forgetting your messages means that messages you have sent will not be shared with any new or unregistered users, but registered users who already have access to these messages will still have access to their copy.": "A visibilidade da mensagem no Matrix é semelhante ao e-mail. O fato de esquecermos suas mensagens significa que as mensagens que você enviou não serão compartilhadas com usuários novos ou não registrados, mas os usuários registrados que já têm acesso a essas mensagens ainda terão acesso para as cópias deles.", - "Please forget all messages I have sent when my account is deactivated (Warning: this will cause future users to see an incomplete view of conversations)": "Por favor, esqueça todas as mensagens que enviei quando minha conta for desativada (Aviso: isso fará com que futuros usuários vejam uma visão incompleta das conversas)", + "Please forget all messages I have sent when my account is deactivated (Warning: this will cause future users to see an incomplete view of conversations)": "Por favor, esqueça todas as mensagens que enviei quando minha conta for desativada (Alerta: isso fará com que futuros usuários vejam uma visão incompleta das conversas)", "To continue, please enter your password:": "Para continuar, por favor digite sua senha:", "Incompatible local cache": "Cache local incompatível", "Clear cache and resync": "Limpar cache e ressincronizar", @@ -912,7 +912,7 @@ "Access your secure message history and set up secure messaging by entering your recovery key.": "Acesse seu histórico seguro de mensagens e configure mensagens seguras inserindo sua chave de recuperação.", "Share Message": "Compartilhar Mensagem", "Popout widget": "Widget Popout", - "Send Logs": "Enviar relatos de problemas", + "Send Logs": "Enviar registros", "Failed to decrypt %(failedCount)s sessions!": "Falha ao descriptografar as sessões de %(failedCount)s!", "Set a new status...": "Definir um novo status ...", "Collapse Reply Thread": "Recolher grupo de respostas", @@ -1036,7 +1036,7 @@ "Pizza": "Pizza", "Cake": "Bolo", "Heart": "Coração", - "Smiley": "Smiley", + "Smiley": "Sorriso", "Robot": "Robô", "Hat": "Chapéu", "Glasses": "Óculos", @@ -1216,18 +1216,18 @@ "Sends a message to the given user": "Envia uma mensagem com determinada pessoa", "%(senderName)s made no change.": "%(senderName)s não fez nenhuma alteração.", "%(senderDisplayName)s changed the room name from %(oldRoomName)s to %(newRoomName)s.": "%(senderDisplayName)s alterou o nome da sala de %(oldRoomName)s para %(newRoomName)s.", - "%(senderName)s added the alternative addresses %(addresses)s for this room.|other": "%(senderName)s adicionou os endereços alternativos %(addresses)s nesta sala.", - "%(senderName)s added the alternative addresses %(addresses)s for this room.|one": "%(senderName)s adicionou o endereço alternativo %(addresses)s nesta sala.", - "%(senderName)s removed the alternative addresses %(addresses)s for this room.|other": "%(senderName)s removeu os endereços alternativos %(addresses)s nesta sala.", - "%(senderName)s removed the alternative addresses %(addresses)s for this room.|one": "%(senderName)s removeu o endereço alternativo %(addresses)s nesta sala.", + "%(senderName)s added the alternative addresses %(addresses)s for this room.|other": "%(senderName)s adicionou os endereços alternativos %(addresses)s desta sala.", + "%(senderName)s added the alternative addresses %(addresses)s for this room.|one": "%(senderName)s adicionou o endereço alternativo %(addresses)s desta sala.", + "%(senderName)s removed the alternative addresses %(addresses)s for this room.|other": "%(senderName)s removeu os endereços alternativos %(addresses)s desta sala.", + "%(senderName)s removed the alternative addresses %(addresses)s for this room.|one": "%(senderName)s removeu o endereço alternativo %(addresses)s desta sala.", "%(senderName)s changed the alternative addresses for this room.": "%(senderName)s alterou os endereços alternativos desta sala.", - "%(senderName)s changed the main and alternative addresses for this room.": "%(senderName)s alterou os endereços principal e alternativos nesta sala.", + "%(senderName)s changed the main and alternative addresses for this room.": "%(senderName)s alterou os endereços principal e alternativos desta sala.", "%(senderName)s changed the addresses for this room.": "%(senderName)s alterou os endereços desta sala.", "%(senderName)s placed a voice call.": "%(senderName)s iniciou uma chamada de voz.", "%(senderName)s placed a voice call. (not supported by this browser)": "%(senderName)s iniciou uma chamada de voz. (não suportada por este navegador)", "%(senderName)s placed a video call.": "%(senderName)s iniciou uma chamada de vídeo.", "%(senderName)s placed a video call. (not supported by this browser)": "%(senderName)s iniciou uma chamada de vídeo. (não suportada por este navegador)", - "%(senderName)s revoked the invitation for %(targetDisplayName)s to join the room.": "%(senderName)s cancelou o convite a %(targetDisplayName)s para entrar na sala.", + "%(senderName)s revoked the invitation for %(targetDisplayName)s to join the room.": "%(senderName)s cancelou o convite para %(targetDisplayName)s entrar na sala.", "%(senderName)s removed the rule banning users matching %(glob)s": "%(senderName)s removeu a regra que bloqueia usuários que correspondem a %(glob)s", "%(senderName)s removed the rule banning rooms matching %(glob)s": "%(senderName)s removeu a regra que bloqueia salas que correspondem a %(glob)s", "%(senderName)s removed the rule banning servers matching %(glob)s": "%(senderName)s removeu a regra que bloqueia servidores que correspondem a %(glob)s", @@ -1262,7 +1262,7 @@ "Cannot reach identity server": "Não consigo acessar o servidor de identidade", "You can register, but some features will be unavailable until the identity server is back online. If you keep seeing this warning, check your configuration or contact a server admin.": "Você pode se registrar, mas algumas funcionalidades não estarão disponíveis até que o servidor de identidade esteja de volta online. Se você continuar vendo este alerta, verifique sua configuração ou entre em contato com um dos administradores do servidor.", "You can reset your password, but some features will be unavailable until the identity server is back online. If you keep seeing this warning, check your configuration or contact a server admin.": "Você pode trocar sua senha, mas algumas das funcionalidades não estarão mais disponíveis até que o servidor de identidade esteja de volta ao ar. Se você seguir vendo este alerta, verifique suas configurações ou entre em contato com um dos administradores do servidor.", - "You can log in, but some features will be unavailable until the identity server is back online. If you keep seeing this warning, check your configuration or contact a server admin.": "Você pode fazer login, mas algumas funcionalidades estarão indisponíveis até que o servidor de identidade estiver de volta. Se você continuar vendo esta mensagem, verifique suas configurações ou entre em contato com os administradores do servidor.", + "You can log in, but some features will be unavailable until the identity server is back online. If you keep seeing this warning, check your configuration or contact a server admin.": "Você pode fazer login, mas algumas funcionalidades estarão indisponíveis até que o servidor de identidade estiver de volta. Se você continuar vendo este alerta, verifique suas configurações ou entre em contato com os administradores do servidor.", "No homeserver URL provided": "Nenhuma URL de provedor fornecida", "Unexpected error resolving homeserver configuration": "Erro inesperado buscando a configuração do servidor", "Unexpected error resolving identity server configuration": "Erro inesperado buscando a configuração do servidor de identidade", @@ -1866,7 +1866,7 @@ "This room doesn't exist. Are you sure you're at the right place?": "Esta sala não existe. Tem certeza de que você está no lugar certo?", "Securely back up your keys to avoid losing them. Learn more.": "Faça backup de suas chaves com segurança para evitar perdê-las. Saiba mais.", "Not now": "Agora não", - "Don't ask me again": "Não me pergunte novamente", + "Don't ask me again": "Não pergunte novamente", "Appearance": "Aparência", "Show rooms with unread messages first": "Mostrar salas com mensagens não lidas primeiro", "Show previews of messages": "Mostrar pré-visualizações de mensagens", @@ -2081,7 +2081,7 @@ "Deny": "Rejeitar", "Wrong file type": "Tipo errado de arquivo", "Address (optional)": "Endereço (opcional)", - "Report Content": "Reportar conteúdo", + "Report Content": "Denunciar conteúdo", "Update status": "Atualizar status", "Set status": "Definir status", "Hide": "Esconder", @@ -2210,5 +2210,6 @@ "Ask %(displayName)s to scan your code:": "Peça para %(displayName)s escanear o seu código:", "Almost there! Is %(displayName)s showing the same shield?": "Quase lá! Este escudo também aparece para %(displayName)s?", "You've successfully verified %(displayName)s!": "Você verificou %(displayName)s com sucesso!", - "Confirm this user's session by comparing the following with their User Settings:": "Confirme a sessão deste usuário comparando o seguinte com as configurações deste usuário:" + "Confirm this user's session by comparing the following with their User Settings:": "Confirme a sessão deste usuário comparando o seguinte com as configurações deste usuário:", + "Report Content to Your Homeserver Administrator": "Denunciar conteúdo ao administrador do seu servidor principal" } From 094674028bb6f757c974e784eb6fc73b0a46aaf8 Mon Sep 17 00:00:00 2001 From: rkfg Date: Tue, 4 Aug 2020 20:53:22 +0000 Subject: [PATCH 078/424] Translated using Weblate (Russian) Currently translated at 99.7% (2332 of 2340 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/ru/ --- src/i18n/strings/ru.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 4931a81cba..dd6df0518f 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -266,7 +266,7 @@ "Register": "Зарегистрироваться", "Results from DuckDuckGo": "Результаты от DuckDuckGo", "Save": "Сохранить", - "Searches DuckDuckGo for results": "Для поиска используется DuckDuckGo", + "Searches DuckDuckGo for results": "Поиск с помощью DuckDuckGo", "Server error": "Ошибка сервера", "Server may be unavailable, overloaded, or search timed out :(": "Сервер может быть недоступен, перегружен или поиск прекращен по тайм-ауту :(", "Server may be unavailable, overloaded, or you hit a bug.": "Возможно, сервер недоступен, перегружен или случилась ошибка.", @@ -1569,7 +1569,7 @@ "Symbols": "Символы", "Flags": "Флаги", "React": "Реакция", - "Cancel search": "Отмена поиска", + "Cancel search": "Отменить поиск", "Room %(name)s": "Комната %(name)s", "Recent rooms": "Недавние комнаты", "No identity server is configured so you cannot add an email address in order to reset your password in the future.": "Сервер идентификации не настроен, поэтому вы не можете добавить адрес электронной почты, чтобы в будущем сбросить пароль.", From e3c8cf428e50012a6591cb10d0c4ada157857b6d Mon Sep 17 00:00:00 2001 From: strix aluco Date: Wed, 5 Aug 2020 01:58:50 +0000 Subject: [PATCH 079/424] Translated using Weblate (Ukrainian) Currently translated at 48.6% (1137 of 2340 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/uk/ --- src/i18n/strings/uk.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/uk.json b/src/i18n/strings/uk.json index b3886b96d2..9e53ad973f 100644 --- a/src/i18n/strings/uk.json +++ b/src/i18n/strings/uk.json @@ -1145,5 +1145,6 @@ "Esc": "Esc", "Enter": "Enter", "Space": "Пропуск", - "End": "End" + "End": "End", + "Clearing all data from this session is permanent. Encrypted messages will be lost unless their keys have been backed up.": "Видалення даних з цього сеансу є безповоротним. Зашифровані повідомлення будуть втрачені якщо їхні ключі не було продубльовано." } From f1505833b787dc95bb7a99599026db76889bfcab Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Wed, 5 Aug 2020 09:56:31 +0100 Subject: [PATCH 080/424] Make the room sublist show more/less buttons treeitems --- src/components/views/rooms/RoomSublist.tsx | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/components/views/rooms/RoomSublist.tsx b/src/components/views/rooms/RoomSublist.tsx index f6d0d1c22e..e7fa4477df 100644 --- a/src/components/views/rooms/RoomSublist.tsx +++ b/src/components/views/rooms/RoomSublist.tsx @@ -738,14 +738,20 @@ export default class RoomSublist extends React.Component { const nonPaddedHeight = this.state.height - RESIZE_HANDLE_HEIGHT - SHOW_N_BUTTON_HEIGHT; const amountFullyShown = Math.floor(nonPaddedHeight / this.layout.tileHeight); const numMissing = this.numTiles - amountFullyShown; + const label = _t("Show %(count)s more", {count: numMissing}); let showMoreText = ( - {_t("Show %(count)s more", {count: numMissing})} + {label} ); if (this.props.isMinimized) showMoreText = null; showNButton = ( - + {/* set by CSS masking */} @@ -754,14 +760,20 @@ export default class RoomSublist extends React.Component { ); } else if (this.numTiles > this.layout.defaultVisibleTiles) { // we have all tiles visible - add a button to show less + const label = _t("Show less"); let showLessText = ( - {_t("Show less")} + {label} ); if (this.props.isMinimized) showLessText = null; showNButton = ( - + {/* set by CSS masking */} From d7229064c4e483f609c06e4b141655f1278af79f Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Wed, 5 Aug 2020 11:07:10 +0100 Subject: [PATCH 081/424] Convert Notifier to typescript --- src/@types/global.d.ts | 6 +++++ src/BasePlatform.ts | 2 ++ src/{Notifier.js => Notifier.ts} | 40 +++++++++++++++++--------------- 3 files changed, 29 insertions(+), 19 deletions(-) rename src/{Notifier.js => Notifier.ts} (92%) diff --git a/src/@types/global.d.ts b/src/@types/global.d.ts index 6510c02160..1b3d88ac49 100644 --- a/src/@types/global.d.ts +++ b/src/@types/global.d.ts @@ -26,6 +26,7 @@ import RoomListLayoutStore from "../stores/room-list/RoomListLayoutStore"; import {IntegrationManagers} from "../integrations/IntegrationManagers"; import {ModalManager} from "../Modal"; import SettingsStore from "../settings/SettingsStore"; +import {Notifier} from "../Notifier"; declare global { interface Window { @@ -45,6 +46,7 @@ declare global { mxIntegrationManagers: typeof IntegrationManagers; singletonModalManager: ModalManager; mxSettingsStore: SettingsStore; + mxNotifier: typeof Notifier; } // workaround for https://github.com/microsoft/TypeScript/issues/30933 @@ -77,4 +79,8 @@ declare global { interface PromiseConstructor { allSettled(promises: Promise[]): Promise | ISettledRejected>>; } + + interface HTMLAudioElement { + type?: string; + } } diff --git a/src/BasePlatform.ts b/src/BasePlatform.ts index acf72a986c..1d28aa7f9a 100644 --- a/src/BasePlatform.ts +++ b/src/BasePlatform.ts @@ -155,6 +155,8 @@ export default abstract class BasePlatform { loudNotification(ev: Event, room: Object) { } + clearNotification(notif: Notification) { + } /** * Returns a promise that resolves to a string representing the current version of the application. diff --git a/src/Notifier.js b/src/Notifier.ts similarity index 92% rename from src/Notifier.js rename to src/Notifier.ts index 2ed302267e..5d074156a9 100644 --- a/src/Notifier.js +++ b/src/Notifier.ts @@ -17,6 +17,9 @@ See the License for the specific language governing permissions and limitations under the License. */ +import { MatrixEvent } from "matrix-js-sdk/src/models/event"; +import { Room } from "matrix-js-sdk/src/models/room"; + import { MatrixClientPeg } from './MatrixClientPeg'; import SdkConfig from './SdkConfig'; import PlatformPeg from './PlatformPeg'; @@ -28,9 +31,7 @@ import * as sdk from './index'; import { _t } from './languageHandler'; import Modal from './Modal'; import SettingsStore from "./settings/SettingsStore"; -import { - hideToast as hideNotificationsToast, -} from "./toasts/DesktopNotificationsToast"; +import { hideToast as hideNotificationsToast } from "./toasts/DesktopNotificationsToast"; import {SettingLevel} from "./settings/SettingLevel"; /* @@ -55,7 +56,7 @@ const typehandlers = { }, }; -const Notifier = { +export const Notifier = { notifsByRoom: {}, // A list of event IDs that we've received but need to wait until @@ -63,14 +64,14 @@ const Notifier = { // or not pendingEncryptedEventIds: [], - notificationMessageForEvent: function(ev) { + notificationMessageForEvent: function(ev: MatrixEvent) { if (typehandlers.hasOwnProperty(ev.getContent().msgtype)) { return typehandlers[ev.getContent().msgtype](ev); } return TextForEvent.textForEvent(ev); }, - _displayPopupNotification: function(ev, room) { + _displayPopupNotification: function(ev: MatrixEvent, room: Room) { const plaf = PlatformPeg.get(); if (!plaf) { return; @@ -125,7 +126,7 @@ const Notifier = { } }, - getSoundForRoom: function(roomId) { + getSoundForRoom: function(roomId: string) { // We do no caching here because the SDK caches setting // and the browser will cache the sound. const content = SettingsStore.getValue("notificationSound", roomId); @@ -153,12 +154,13 @@ const Notifier = { }; }, - _playAudioNotification: async function(ev, room) { + _playAudioNotification: async function(ev: MatrixEvent, room: Room) { const sound = this.getSoundForRoom(room.roomId); console.log(`Got sound ${sound && sound.name || "default"} for ${room.roomId}`); try { - const selector = document.querySelector(sound ? `audio[src='${sound.url}']` : "#messageAudio"); + const selector = + document.querySelector(sound ? `audio[src='${sound.url}']` : "#messageAudio"); let audioElement = selector; if (!selector) { if (!sound) { @@ -207,7 +209,7 @@ const Notifier = { return plaf && plaf.supportsNotifications(); }, - setEnabled: function(enable, callback) { + setEnabled: function(enable: boolean, callback: () => void) { const plaf = PlatformPeg.get(); if (!plaf) return; @@ -280,7 +282,7 @@ const Notifier = { return this.isEnabled() && SettingsStore.getValue("audioNotificationsEnabled"); }, - setToolbarHidden: function(hidden, persistent = true) { + setToolbarHidden: function(hidden: boolean, persistent = true) { this.toolbarHidden = hidden; Analytics.trackEvent('Notifier', 'Set Toolbar Hidden', hidden); @@ -289,7 +291,7 @@ const Notifier = { // update the info to localStorage for persistent settings if (persistent && global.localStorage) { - global.localStorage.setItem("notifications_hidden", hidden); + global.localStorage.setItem("notifications_hidden", String(hidden)); } }, @@ -312,7 +314,7 @@ const Notifier = { return this.toolbarHidden; }, - onSyncStateChange: function(state) { + onSyncStateChange: function(state: string) { if (state === "SYNCING") { this.isSyncing = true; } else if (state === "STOPPED" || state === "ERROR") { @@ -320,7 +322,7 @@ const Notifier = { } }, - onEvent: function(ev) { + onEvent: function(ev: MatrixEvent) { if (!this.isSyncing) return; // don't alert for any messages initially if (ev.sender && ev.sender.userId === MatrixClientPeg.get().credentials.userId) return; @@ -338,7 +340,7 @@ const Notifier = { this._evaluateEvent(ev); }, - onEventDecrypted: function(ev) { + onEventDecrypted: function(ev: MatrixEvent) { // 'decrypted' means the decryption process has finished: it may have failed, // in which case it might decrypt soon if the keys arrive if (ev.isDecryptionFailure()) return; @@ -350,7 +352,7 @@ const Notifier = { this._evaluateEvent(ev); }, - onRoomReceipt: function(ev, room) { + onRoomReceipt: function(ev: MatrixEvent, room: Room) { if (room.getUnreadNotificationCount() === 0) { // ideally we would clear each notification when it was read, // but we have no way, given a read receipt, to know whether @@ -383,8 +385,8 @@ const Notifier = { }, }; -if (!global.mxNotifier) { - global.mxNotifier = Notifier; +if (!window.mxNotifier) { + window.mxNotifier = Notifier; } -export default global.mxNotifier; +export default window.mxNotifier; From c1e152dba2e91c8a13e926ade9b869163b564a09 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Wed, 5 Aug 2020 11:10:12 +0100 Subject: [PATCH 082/424] Decouple Audible notifications from Desktop notifications --- src/Notifier.ts | 3 ++- src/settings/Settings.ts | 2 -- src/settings/controllers/NotificationControllers.ts | 9 --------- 3 files changed, 2 insertions(+), 12 deletions(-) diff --git a/src/Notifier.ts b/src/Notifier.ts index 5d074156a9..6c783a7b33 100644 --- a/src/Notifier.ts +++ b/src/Notifier.ts @@ -279,7 +279,8 @@ export const Notifier = { }, isAudioEnabled: function() { - return this.isEnabled() && SettingsStore.getValue("audioNotificationsEnabled"); + // We don't route Audio via the HTML Notifications API so it is possible regardless of other things + return SettingsStore.getValue("audioNotificationsEnabled"); }, setToolbarHidden: function(hidden: boolean, persistent = true) { diff --git a/src/settings/Settings.ts b/src/settings/Settings.ts index 1989bd7a34..0fd21e1722 100644 --- a/src/settings/Settings.ts +++ b/src/settings/Settings.ts @@ -19,7 +19,6 @@ import { MatrixClient } from 'matrix-js-sdk/src/client'; import { _td } from '../languageHandler'; import { - AudioNotificationsEnabledController, NotificationBodyEnabledController, NotificationsEnabledController, } from "./controllers/NotificationControllers"; @@ -460,7 +459,6 @@ export const SETTINGS: {[setting: string]: ISetting} = { "audioNotificationsEnabled": { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS, default: true, - controller: new AudioNotificationsEnabledController(), }, "enableWidgetScreenshots": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, diff --git a/src/settings/controllers/NotificationControllers.ts b/src/settings/controllers/NotificationControllers.ts index fc50af6096..bf5971d02e 100644 --- a/src/settings/controllers/NotificationControllers.ts +++ b/src/settings/controllers/NotificationControllers.ts @@ -79,12 +79,3 @@ export class NotificationBodyEnabledController extends SettingController { return calculatedValue; } } - -export class AudioNotificationsEnabledController extends SettingController { - public getValueOverride(level: SettingLevel, roomId: string, calculatedValue: any): any { - if (!getNotifier().isPossible()) return false; - - // Note: Audio notifications are *not* enabled by default. - return calculatedValue; - } -} From fca48c04262ae6f1a8c4e7391a743ab768c7290c Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Wed, 5 Aug 2020 11:22:43 +0100 Subject: [PATCH 083/424] improve types --- src/Notifier.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Notifier.ts b/src/Notifier.ts index 6c783a7b33..473de6c161 100644 --- a/src/Notifier.ts +++ b/src/Notifier.ts @@ -209,7 +209,7 @@ export const Notifier = { return plaf && plaf.supportsNotifications(); }, - setEnabled: function(enable: boolean, callback: () => void) { + setEnabled: function(enable: boolean, callback?: () => void) { const plaf = PlatformPeg.get(); if (!plaf) return; From b871d7e849e4ed5fa5f248c4d02136c1c1760479 Mon Sep 17 00:00:00 2001 From: Jorik Schellekens Date: Wed, 5 Aug 2020 13:53:19 +0100 Subject: [PATCH 084/424] Fix room security radios --- .../views/elements/StyledRadioGroup.tsx | 2 +- .../tabs/room/SecurityRoomSettingsTab.js | 19 +++++++------------ 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/src/components/views/elements/StyledRadioGroup.tsx b/src/components/views/elements/StyledRadioGroup.tsx index 4db627e83e..6b9e992f92 100644 --- a/src/components/views/elements/StyledRadioGroup.tsx +++ b/src/components/views/elements/StyledRadioGroup.tsx @@ -34,7 +34,7 @@ interface IProps { definitions: IDefinition[]; value?: T; // if not provided no options will be selected outlined?: boolean; - onChange(newValue: T); + onChange(newValue: T): void; } function StyledRadioGroup({name, definitions, value, className, outlined, onChange}: IProps) { diff --git a/src/components/views/settings/tabs/room/SecurityRoomSettingsTab.js b/src/components/views/settings/tabs/room/SecurityRoomSettingsTab.js index 7298bd0584..2ede49494d 100644 --- a/src/components/views/settings/tabs/room/SecurityRoomSettingsTab.js +++ b/src/components/views/settings/tabs/room/SecurityRoomSettingsTab.js @@ -145,7 +145,7 @@ export default class SecurityRoomSettingsTab extends React.Component { }); }; - _onRoomAccessRadioToggle = (ev) => { + _onRoomAccessRadioToggle = (roomAccess) => { // join_rule // INVITE | PUBLIC // ----------------------+---------------- @@ -162,7 +162,7 @@ export default class SecurityRoomSettingsTab extends React.Component { let joinRule = "invite"; let guestAccess = "can_join"; - switch (ev.target.value) { + switch (roomAccess) { case "invite_only": // no change - use defaults above break; @@ -191,11 +191,11 @@ export default class SecurityRoomSettingsTab extends React.Component { }); }; - _onHistoryRadioToggle = (ev) => { + _onHistoryRadioToggle = (history) => { const beforeHistory = this.state.history; - this.setState({history: ev.target.value}); + this.setState({history: history}); MatrixClientPeg.get().sendStateEvent(this.props.roomId, "m.room.history_visibility", { - history_visibility: ev.target.value, + history_visibility: history, }, "").catch((e) => { console.error(e); this.setState({history: beforeHistory}); @@ -261,25 +261,23 @@ export default class SecurityRoomSettingsTab extends React.Component { Date: Wed, 5 Aug 2020 14:32:02 +0100 Subject: [PATCH 085/424] Fix room list scrolling in Safari This sets `flex-basis` properly in Safari so the room list is scrollable. Fixes https://github.com/vector-im/element-web/issues/14877 --- res/css/structures/_LeftPanel.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/res/css/structures/_LeftPanel.scss b/res/css/structures/_LeftPanel.scss index db531cf088..354dc87b8f 100644 --- a/res/css/structures/_LeftPanel.scss +++ b/res/css/structures/_LeftPanel.scss @@ -137,6 +137,7 @@ $tagPanelWidth: 56px; // only applies in this file, used for calculations .mx_LeftPanel_roomListWrapper { overflow: hidden; margin-top: 10px; // so we're not up against the search/filter + flex: 1 0 0; // needed in Safari to properly set flex-basis &.mx_LeftPanel_roomListWrapper_stickyBottom { padding-bottom: 32px; From 1e868a256dc8ea572e0a7a6cda588d214f214755 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Wed, 5 Aug 2020 14:32:02 +0100 Subject: [PATCH 086/424] Fix room list scrolling in Safari This sets `flex-basis` properly in Safari so the room list is scrollable. Fixes https://github.com/vector-im/element-web/issues/14877 --- res/css/structures/_LeftPanel.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/res/css/structures/_LeftPanel.scss b/res/css/structures/_LeftPanel.scss index db531cf088..354dc87b8f 100644 --- a/res/css/structures/_LeftPanel.scss +++ b/res/css/structures/_LeftPanel.scss @@ -137,6 +137,7 @@ $tagPanelWidth: 56px; // only applies in this file, used for calculations .mx_LeftPanel_roomListWrapper { overflow: hidden; margin-top: 10px; // so we're not up against the search/filter + flex: 1 0 0; // needed in Safari to properly set flex-basis &.mx_LeftPanel_roomListWrapper_stickyBottom { padding-bottom: 32px; From 57814a40c1ec99cba18f9cb29c0ab9f88b3abbc6 Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Wed, 5 Aug 2020 15:50:03 +0100 Subject: [PATCH 087/424] Upgrade matrix-js-sdk to 8.0.1 --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index f23163248c..12039b986e 100644 --- a/package.json +++ b/package.json @@ -79,7 +79,7 @@ "is-ip": "^2.0.0", "linkifyjs": "^2.1.9", "lodash": "^4.17.19", - "matrix-js-sdk": "8.0.1-rc.1", + "matrix-js-sdk": "8.0.1", "minimist": "^1.2.5", "pako": "^1.0.11", "parse5": "^5.1.1", diff --git a/yarn.lock b/yarn.lock index 21a3aa19f6..8d15ba01d0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6435,10 +6435,10 @@ mathml-tag-names@^2.0.1: resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3" integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg== -matrix-js-sdk@8.0.1-rc.1: - version "8.0.1-rc.1" - resolved "https://registry.yarnpkg.com/matrix-js-sdk/-/matrix-js-sdk-8.0.1-rc.1.tgz#dbc2544f0058e2530e84a5d3b3e1abe06e395597" - integrity sha512-K3wOAf8lVLBx3Xhgb57JoVtFRVf52PHDnsnj00ST4kCAbnlJ3iuJ8OuOX16Bbk0fvV7RLJi/At4bm1Ld6PsIkQ== +matrix-js-sdk@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/matrix-js-sdk/-/matrix-js-sdk-8.0.1.tgz#dafd41023671249c01e4278e7103c93200b34e5e" + integrity sha512-DT2YjWi8l2eHyNTKZOhBkN/EakIMDDEglSCg+RWY4QzFaXYlSwfwfzzCujjtq1hxVSKim8NC7KqxgNetOiBegA== dependencies: "@babel/runtime" "^7.8.3" another-json "^0.2.0" From 299aa3ed98add307a1526c8ab5c9dc289d94a6a9 Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Wed, 5 Aug 2020 16:05:29 +0100 Subject: [PATCH 088/424] Prepare changelog for v3.1.0 --- CHANGELOG.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 721f005dd9..468d7d211a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,17 @@ +Changes in [3.1.0](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v3.1.0) (2020-08-05) +=================================================================================================== +[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v3.1.0-rc.1...v3.1.0) + + * Upgrade JS SDK to 8.0.1 + * Fix room list scrolling in Safari + [\#5091](https://github.com/matrix-org/matrix-react-sdk/pull/5091) + * Add null guard in InviteDialog + [\#5084](https://github.com/matrix-org/matrix-react-sdk/pull/5084) + * Add null guard in InviteDialog + [\#5082](https://github.com/matrix-org/matrix-react-sdk/pull/5082) + * Handle tag changes in sticky room updates + [\#5080](https://github.com/matrix-org/matrix-react-sdk/pull/5080) + Changes in [3.1.0-rc.1](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v3.1.0-rc.1) (2020-07-31) ============================================================================================================= [Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v3.0.0...v3.1.0-rc.1) From f8ed635fbfaa79e91acb96dee1922714ba9ccfab Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Wed, 5 Aug 2020 16:05:30 +0100 Subject: [PATCH 089/424] v3.1.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 12039b986e..50ddf84948 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "matrix-react-sdk", - "version": "3.1.0-rc.1", + "version": "3.1.0", "description": "SDK for matrix.org using React", "author": "matrix.org", "repository": { From 45b79a0b7c9237c6b4dbafd37c1a234ed2b7cf35 Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Wed, 5 Aug 2020 16:11:28 +0100 Subject: [PATCH 090/424] Reset matrix-js-sdk back to develop branch --- package.json | 2 +- yarn.lock | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index f0a3ccc145..548b33f353 100644 --- a/package.json +++ b/package.json @@ -79,7 +79,7 @@ "is-ip": "^2.0.0", "linkifyjs": "^2.1.9", "lodash": "^4.17.19", - "matrix-js-sdk": "8.0.1", + "matrix-js-sdk": "github:matrix-org/matrix-js-sdk#develop", "minimist": "^1.2.5", "pako": "^1.0.11", "parse5": "^5.1.1", diff --git a/yarn.lock b/yarn.lock index e41fda9e15..98fe42ef13 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6470,10 +6470,9 @@ mathml-tag-names@^2.0.1: resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3" integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg== -matrix-js-sdk@8.0.1: +"matrix-js-sdk@github:matrix-org/matrix-js-sdk#develop": version "8.0.1" - resolved "https://registry.yarnpkg.com/matrix-js-sdk/-/matrix-js-sdk-8.0.1.tgz#dafd41023671249c01e4278e7103c93200b34e5e" - integrity sha512-DT2YjWi8l2eHyNTKZOhBkN/EakIMDDEglSCg+RWY4QzFaXYlSwfwfzzCujjtq1hxVSKim8NC7KqxgNetOiBegA== + resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/a6fe4cdf1cbf56baeb538f071c27326fe98630d0" dependencies: "@babel/runtime" "^7.8.3" another-json "^0.2.0" From 060f2cf54f19beba7160fcf69b133c09c0e9078b Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Thu, 6 Aug 2020 15:10:47 +0100 Subject: [PATCH 091/424] Enable sharing of master cross-signing key We've realised it's beneficial to support sharing the master cross-singing key so that new devices can fully manage cross-signing on your account. Part of https://github.com/vector-im/element-web/issues/13896 --- src/CrossSigningManager.js | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/src/CrossSigningManager.js b/src/CrossSigningManager.js index a584a69d35..fe07a821c6 100644 --- a/src/CrossSigningManager.js +++ b/src/CrossSigningManager.js @@ -132,24 +132,14 @@ const onSecretRequested = async function({ if (name.startsWith("m.cross_signing")) { const callbacks = client.getCrossSigningCacheCallbacks(); if (!callbacks.getCrossSigningKeyCache) return; - /* Explicit enumeration here is deliberate – never share the master key! */ - if (name === "m.cross_signing.self_signing") { - const key = await callbacks.getCrossSigningKeyCache("self_signing"); - if (!key) { - console.log( - `self_signing requested by ${deviceId}, but not found in cache`, - ); - } - return key && encodeBase64(key); - } else if (name === "m.cross_signing.user_signing") { - const key = await callbacks.getCrossSigningKeyCache("user_signing"); - if (!key) { - console.log( - `user_signing requested by ${deviceId}, but not found in cache`, - ); - } - return key && encodeBase64(key); + const keyId = name.replace("m.cross_signing.", ""); + const key = await callbacks.getCrossSigningKeyCache(keyId); + if (!key) { + console.log( + `${keyId} requested by ${deviceId}, but not found in cache`, + ); } + return key && encodeBase64(key); } else if (name === "m.megolm_backup.v1") { const key = await client._crypto.getSessionBackupPrivateKey(); if (!key) { From 4c1956a3c21a2acf53c8924d9affd1e4f25f9712 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Thu, 6 Aug 2020 15:25:33 +0100 Subject: [PATCH 092/424] Show master key cache status in Settings --- src/components/views/settings/CrossSigningPanel.js | 8 ++++++++ src/i18n/strings/en_EN.json | 3 ++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/components/views/settings/CrossSigningPanel.js b/src/components/views/settings/CrossSigningPanel.js index aa512d4365..1c6baee9af 100644 --- a/src/components/views/settings/CrossSigningPanel.js +++ b/src/components/views/settings/CrossSigningPanel.js @@ -32,6 +32,7 @@ export default class CrossSigningPanel extends React.PureComponent { error: null, crossSigningPublicKeysOnDevice: false, crossSigningPrivateKeysInStorage: false, + masterPrivateKeyCached: false, selfSigningPrivateKeyCached: false, userSigningPrivateKeyCached: false, sessionBackupKeyCached: false, @@ -78,6 +79,7 @@ export default class CrossSigningPanel extends React.PureComponent { const secretStorage = cli._crypto._secretStorage; const crossSigningPublicKeysOnDevice = crossSigning.getId(); const crossSigningPrivateKeysInStorage = await crossSigning.isStoredInSecretStorage(secretStorage); + const masterPrivateKeyCached = !!(pkCache && await pkCache.getCrossSigningKeyCache("master")); const selfSigningPrivateKeyCached = !!(pkCache && await pkCache.getCrossSigningKeyCache("self_signing")); const userSigningPrivateKeyCached = !!(pkCache && await pkCache.getCrossSigningKeyCache("user_signing")); const sessionBackupKeyFromCache = await cli._crypto.getSessionBackupPrivateKey(); @@ -91,6 +93,7 @@ export default class CrossSigningPanel extends React.PureComponent { this.setState({ crossSigningPublicKeysOnDevice, crossSigningPrivateKeysInStorage, + masterPrivateKeyCached, selfSigningPrivateKeyCached, userSigningPrivateKeyCached, sessionBackupKeyCached, @@ -140,6 +143,7 @@ export default class CrossSigningPanel extends React.PureComponent { error, crossSigningPublicKeysOnDevice, crossSigningPrivateKeysInStorage, + masterPrivateKeyCached, selfSigningPrivateKeyCached, userSigningPrivateKeyCached, sessionBackupKeyCached, @@ -235,6 +239,10 @@ export default class CrossSigningPanel extends React.PureComponent { {_t("Cross-signing private keys:")} {crossSigningPrivateKeysInStorage ? _t("in secret storage") : _t("not found")} + + {_t("Master private key:")} + {masterPrivateKeyCached ? _t("cached locally") : _t("not found locally")} + {_t("Self signing private key:")} {selfSigningPrivateKeyCached ? _t("cached locally") : _t("not found locally")} diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 82a8f960ab..d25e136747 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -653,9 +653,10 @@ "not found": "not found", "Cross-signing private keys:": "Cross-signing private keys:", "in secret storage": "in secret storage", - "Self signing private key:": "Self signing private key:", + "Master private key:": "Master private key:", "cached locally": "cached locally", "not found locally": "not found locally", + "Self signing private key:": "Self signing private key:", "User signing private key:": "User signing private key:", "Session backup key:": "Session backup key:", "Secret storage public key:": "Secret storage public key:", From 810f07a84693170cf28d41382212e39a5cd5fe40 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Thu, 6 Aug 2020 15:26:47 +0100 Subject: [PATCH 093/424] Report master key cache status in rageshakes --- src/rageshake/submit-rageshake.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/rageshake/submit-rageshake.ts b/src/rageshake/submit-rageshake.ts index 350602aa5d..b562141338 100644 --- a/src/rageshake/submit-rageshake.ts +++ b/src/rageshake/submit-rageshake.ts @@ -122,6 +122,8 @@ export default async function sendBugReport(bugReportEndpoint: string, opts: IOp body.append("ssss_key_in_account", String(!!(await secretStorage.hasKey()))); const pkCache = client.getCrossSigningCacheCallbacks(); + body.append("master_pk_cached", + String(!!(pkCache && await pkCache.getCrossSigningKeyCache("master")))); body.append("self_signing_pk_cached", String(!!(pkCache && await pkCache.getCrossSigningKeyCache("self_signing")))); body.append("user_signing_pk_cached", From f03ed868bd963ea05d72f07c59ad86749b2fcfb2 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Thu, 6 Aug 2020 17:54:52 +0100 Subject: [PATCH 094/424] Update rageshake app name Fixes https://github.com/vector-im/element-web/issues/14892 --- src/rageshake/submit-rageshake.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rageshake/submit-rageshake.ts b/src/rageshake/submit-rageshake.ts index 350602aa5d..9ca5021cde 100644 --- a/src/rageshake/submit-rageshake.ts +++ b/src/rageshake/submit-rageshake.ts @@ -92,7 +92,7 @@ export default async function sendBugReport(bugReportEndpoint: string, opts: IOp const body = new FormData(); body.append('text', opts.userText || "User did not supply any additional text."); - body.append('app', 'riot-web'); + body.append('app', 'element-web'); body.append('version', version); body.append('user_agent', userAgent); body.append('installed_pwa', installedPWA); From 1c488dd032ec54a7b0c5871d71d08a50ceae3ac1 Mon Sep 17 00:00:00 2001 From: rkfg Date: Thu, 6 Aug 2020 13:28:55 +0000 Subject: [PATCH 095/424] Translated using Weblate (Russian) Currently translated at 100.0% (2340 of 2340 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/ru/ --- src/i18n/strings/ru.json | 119 ++++++++++++++++++++------------------- 1 file changed, 62 insertions(+), 57 deletions(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index dd6df0518f..2b9b4773af 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -637,7 +637,7 @@ "Community IDs cannot be empty.": "ID сообществ не могут быть пустыми.", "In reply to ": "В ответ на ", "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s изменил отображаемое имя на %(displayName)s.", - "Failed to set direct chat tag": "Не удалось установить тег прямого чата", + "Failed to set direct chat tag": "Не удалось установить тег диалога", "Failed to remove tag %(tagName)s from room": "Не удалось удалить тег %(tagName)s из комнаты", "Failed to add tag %(tagName)s to room": "Не удалось добавить тег %(tagName)s в комнату", "Clear filter": "Очистить фильтр", @@ -791,7 +791,7 @@ "Send Logs": "Отправить логи", "Clear Storage and Sign Out": "Очистить хранилище и выйти", "Refresh": "Обновить", - "We encountered an error trying to restore your previous session.": "Произошла ошибка при попытке восстановить предыдущий сеанс.", + "We encountered an error trying to restore your previous session.": "Произошла ошибка при попытке восстановить предыдущую сессию.", "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Очистка хранилища вашего браузера может устранить проблему, но при этом ваша сессия будет завершена, и зашифрованная история чата станет нечитаемой.", "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "Не удается загрузить событие, на которое был дан ответ. Либо оно не существует, либо у вас нет разрешения на его просмотр.", "Enable widget screenshots on supported widgets": "Включить скриншоты виджетов для поддерживаемых виджетов", @@ -1607,7 +1607,7 @@ "If you cancel now, you won't complete verifying your other session.": "Если вы отмените сейчас, вы не завершите проверку вашей другой сессии.", "Verify this session": "Проверьте эту сессию", "Verifies a user, session, and pubkey tuple": "Проверяет пользователя, сессию и публичные ключи", - "Unknown (user, session) pair:": "Неизвестная (пользователь:сессия) пара:", + "Unknown (user, session) pair:": "Неизвестная пара (пользователь, сессия):", "Session already verified!": "Сессия уже подтверждена!", "Never send encrypted messages to unverified sessions from this session": "Никогда не отправлять зашифрованные сообщения непроверенным сессиям в этой сессии", "Never send encrypted messages to unverified sessions in this room from this session": "Никогда не отправлять зашифрованные сообщения непроверенным сессиям в этой комнате и в этой сессии", @@ -1622,9 +1622,9 @@ "Encryption upgrade available": "Доступно обновление шифрования", "Set up encryption": "Настройка шифрования", "Double check that your server supports the room version chosen and try again.": "Дважды проверьте, что ваш сервер поддерживает версию комнаты и попробуйте снова.", - "WARNING: Session already verified, but keys do NOT MATCH!": "ВНИМАНИЕ:Сессия уже подтверждена, но ключи НЕ совпадают!", + "WARNING: Session already verified, but keys do NOT MATCH!": "ВНИМАНИЕ: сессия уже подтверждена, но ключи НЕ совпадают!", "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and session %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "ВНИМАНИЕ: ПРОВЕРКА КЛЮЧА НЕ ПРОШЛА! Ключом подписи для %(userId)s и сессии %(deviceId)s является \"%(fprint)s\", что не соответствует указанному ключу \"%(fingerprint)s\". Это может означать, что ваши сообщения перехватываются!", - "The signing key you provided matches the signing key you received from %(userId)s's session %(deviceId)s. Session marked as verified.": "Ключ подписи, который вы предоставили, соответствует ключу подписи, который вы получили от %(userId)s's сессии %(deviceId)s. Сессия отмечена как подтверждена.", + "The signing key you provided matches the signing key you received from %(userId)s's session %(deviceId)s. Session marked as verified.": "Ключ подписи, который вы предоставили, соответствует ключу подписи, который вы получили от пользователя %(userId)s и сессии %(deviceId)s. Сессия отмечена как подтверждённая.", "%(senderName)s placed a voice call.": "%(senderName)s сделал голосовой вызов.", "%(senderName)s placed a voice call. (not supported by this browser)": "%(senderName)s сделал голосовой вызов. (не поддерживается этим браузером)", "%(senderName)s placed a video call.": "%(senderName)s сделал видео вызов.", @@ -1778,9 +1778,9 @@ "You've successfully verified %(displayName)s!": "Вы успешно подтвердили %(displayName)s!", "Got it": "Понятно", "Compare emoji": "Сравните смайлы", - "Activate selected button": "Активировать выбранную кнопку", - "Toggle right panel": "Переключить правую панель", - "Toggle this dialog": "Переключить этот диалог", + "Activate selected button": "Нажать выбранную кнопку", + "Toggle right panel": "Показать/скрыть правую панель", + "Toggle this dialog": "Показать/скрыть этот диалог", "Cancel autocomplete": "Отменить автодополнение", "Esc": "Esc", "Enter": "Enter", @@ -2001,13 +2001,13 @@ "Joins room with given address": "Присоединиться к комнате с указанным адресом", "Opens chat with the given user": "Открыть чат с данным пользователем", "Sends a message to the given user": "Отправить сообщение данному пользователю", - "You signed in to a new session without verifying it:": "Вы вошли в новый сеанс, не подтвердив его:", - "Verify your other session using one of the options below.": "Проверьте другой сеанс, используя один из вариантов ниже.", + "You signed in to a new session without verifying it:": "Вы вошли в новую сессию, не подтвердив её:", + "Verify your other session using one of the options below.": "Подтвердите другую сессию, используя один из вариантов ниже.", "Help us improve %(brand)s": "Помогите нам улучшить %(brand)s", "Send anonymous usage data which helps us improve %(brand)s. This will use a cookie.": "Отправьте анонимные данные об использовании, которые помогут нам улучшить %(brand)s. Для этого будеть использоваться cookie.", "I want to help": "Я хочу помочь", "Review where you’re logged in": "Проверьте, где вы вошли", - "Verify all your sessions to ensure your account & messages are safe": "Проверьте все свои сеансы, чтобы убедиться, что ваша учетная запись и сообщения в безопасности", + "Verify all your sessions to ensure your account & messages are safe": "Подтвердите все свои сессии, чтобы убедиться, что ваша учетная запись и сообщения в безопасности", "Your homeserver has exceeded its user limit.": "Ваш домашний сервер превысил свой лимит пользователей.", "Your homeserver has exceeded one of its resource limits.": "Ваш домашний сервер превысил один из своих лимитов ресурсов.", "Are you sure you want to cancel entering passphrase?": "Вы уверены, что хотите отменить ввод пароля?", @@ -2067,7 +2067,7 @@ "Enable experimental, compact IRC style layout": "Включите экспериментальный, компактный стиль IRC", "Unknown caller": "Неизвестный абонент", "Incoming call": "Входящий звонок", - "Waiting for your other session to verify…": "В ожидании вашего другого сеанса, чтобы проверить…", + "Waiting for your other session to verify…": "Ожидание вашей другой сессии для начала подтверждения…", "%(brand)s can't securely cache encrypted messages locally while running in a web browser. Use %(brand)s Desktop for encrypted messages to appear in search results.": "%(brand)s не может безопасно кэшировать зашифрованные сообщения локально во время работы в веб-браузере. Используйте %(brand)s Desktop, чтобы зашифрованные сообщения появились в результатах поиска.", "There are advanced notifications which are not shown here.": "Есть расширенные уведомления, которые здесь не отображаются.", "You might have configured them in a client other than %(brand)s. You cannot tune them in %(brand)s but they still apply.": "Возможно, вы настроили их на клиенте, отличном от %(brand)s. Вы не можете настроить их на %(brand)s, но они все еще применяются.", @@ -2184,7 +2184,7 @@ "Add users and servers you want to ignore here. Use asterisks to have %(brand)s match any characters. For example, @bot:* would ignore all users that have the name 'bot' on any server.": "%(brand)sДобавьте сюда пользователей и сервера, которые вы хотите игнорировать. Используйте звездочки, чтобы %(brand)s соответствовали любым символам. Например, @bot:* будет игнорировать всех пользователей, имеющих имя \" bot \" на любом сервере.", "Room ID or address of ban list": "ID комнаты или адрес списка блокировок", "To link to this room, please add an address.": "Для связи с этой комнатой, пожалуйста, добавьте адрес.", - "Key share requests are sent to your other sessions automatically. If you rejected or dismissed the key share request on your other sessions, click here to request the keys for this session again.": "Запросы на общий доступ к ключам автоматически отправляются в другие сеансы. Если вы отклонили или отклонили запрос на общий доступ к ключам в других сеансах, нажмите здесь, чтобы снова запросить ключи для этого сеанса.", + "Key share requests are sent to your other sessions automatically. If you rejected or dismissed the key share request on your other sessions, click here to request the keys for this session again.": "Запросы на общий доступ к ключам автоматически отправляются в другие сессии. Если вы отклонили или пропустили запрос на общий доступ к ключам в других сессиях, нажмите здесь, чтобы перезапросить ключи для этой сессии.", "The authenticity of this encrypted message can't be guaranteed on this device.": "Подлинность этого зашифрованного сообщения не может быть гарантирована на этом устройстве.", "No recently visited rooms": "Нет недавно посещенных комнат", "Use default": "Использовать по умолчанию", @@ -2195,13 +2195,13 @@ "Using this widget may share data with %(widgetDomain)s.": "Используя этот виджет, вы можете делиться данными с %(widgetDomain)s.", "Can't find this server or its room list": "Не можем найти этот сервер или его список комнат", "Deleting cross-signing keys is permanent. Anyone you have verified with will see security alerts. You almost certainly don't want to do this, unless you've lost every device you can cross-sign from.": "Удаление ключей кросс-подписи является мгновенным и необратимым действием. Любой, с кем вы прошли проверку, увидит предупреждения безопасности. Вы почти наверняка не захотите этого делать, если только не потеряете все устройства, с которых можно совершать кросс-подпись.", - "Clearing all data from this session is permanent. Encrypted messages will be lost unless their keys have been backed up.": "Очистка всех данных из этого сеанса является мгновенным и необратимым действием. Зашифрованные сообщения будут потеряны, если их ключи не будут сохранены.", - "You've previously used a newer version of %(brand)s with this session. To use this version again with end to end encryption, you will need to sign out and back in again.": "Ранее вы использовали более новую версию %(brand)s в этом сеансе. Чтобы снова использовать эту версию с сквозным шифрованием, вам нужно будет выйти из системы и снова войти в нее.", + "Clearing all data from this session is permanent. Encrypted messages will be lost unless their keys have been backed up.": "Очистка всех данных этой сессии является необратимым действием. Зашифрованные сообщения будут потеряны, если их ключи не были сохранены.", + "You've previously used a newer version of %(brand)s with this session. To use this version again with end to end encryption, you will need to sign out and back in again.": "Ранее вы использовали более новую версию %(brand)s в этой сессии. Чтобы снова использовать эту версию со сквозным шифрованием, вам нужно будет выйти из учётной записи и снова войти.", "There was a problem communicating with the server. Please try again.": "Возникла проблема со связью с сервером. Пожалуйста, попробуйте еще раз.", "Server did not require any authentication": "Сервер не требует проверки подлинности", "Server did not return valid authentication information.": "Сервер не вернул существующую аутентификационную информацию.", "Verification Requests": "Запрос на проверку", - "Verifying this user will mark their session as trusted, and also mark your session as trusted to them.": "Проверка этого пользователя пометит его сеанс как доверенный, а также пометит ваш сеанс как доверенный им.", + "Verifying this user will mark their session as trusted, and also mark your session as trusted to them.": "Подтверждение этого пользователя сделает его сессию доверенной у вас, а также сделает вашу сессию доверенной у него.", "Verify this device to mark it as trusted. Trusting this device gives you and other users extra peace of mind when using end-to-end encrypted messages.": "Проверьте это устройство, чтобы отметить его как доверенное. Доверие к этому устройству дает вам и другим пользователям дополнительное спокойствие при использовании сквозных зашифрованных сообщений.", "Verifying this device will mark it as trusted, and users who have verified with you will trust this device.": "Проверка этого устройства пометит его как доверенное, и пользователи, которые проверили его вместе с вами, будут доверять этому устройству.", "Integrations are disabled": "Интеграции отключены", @@ -2223,16 +2223,16 @@ "a new cross-signing key signature": "новый ключ подписи для кросс-подписи", "a device cross-signing signature": "подпись устройства для кросс-подписи", "%(brand)s encountered an error during upload of:": "%(brand)s обнаружил ошибку при загрузке файла:", - "Confirm by comparing the following with the User Settings in your other session:": "Подтвердите это, сравнив следующие параметры с настройками пользователя в другом сеансе:", - "Confirm this user's session by comparing the following with their User Settings:": "Подтвердите сеанс этого пользователя, сравнив следующие параметры с их пользовательскими настройками:", + "Confirm by comparing the following with the User Settings in your other session:": "Подтвердите, сравнив следующие параметры с настройками пользователя в другой вашей сессии:", + "Confirm this user's session by comparing the following with their User Settings:": "Подтвердите сессию этого пользователя, сравнив следующие параметры с его пользовательскими настройками:", "If they don't match, the security of your communication may be compromised.": "Если они не совпадают, безопасность вашего общения может быть поставлена под угрозу.", "Your password": "Ваш пароль", - "This session, or the other session": "Этот сеанс или другой сеанс", - "The internet connection either session is using": "Подключение к интернету используется в любом сеансе", + "This session, or the other session": "Эта сессия или другая сессия", + "The internet connection either session is using": "Подключение к интернету, используемое любой из сессий", "We recommend you change your password and recovery key in Settings immediately": "Мы рекомендуем вам немедленно изменить свой пароль и ключ восстановления в настройках", - "New session": "Новый сеанс", - "Use this session to verify your new one, granting it access to encrypted messages:": "Используйте этот сеанс для проверки вашего нового сеанса, предоставляя ему доступ к зашифрованным сообщениям:", - "If you didn’t sign in to this session, your account may be compromised.": "Если вы не входили в этот сеанс, ваша учетная запись может быть скомпрометирована.", + "New session": "Новая сессия", + "Use this session to verify your new one, granting it access to encrypted messages:": "Используйте эту сессию для проверки новой сессии, чтобы предоставить ей доступ к зашифрованным сообщениям:", + "If you didn’t sign in to this session, your account may be compromised.": "Если вы не входили в эту сессию, ваша учетная запись может быть скомпрометирована.", "This wasn't me": "Это был не я", "Use your account to sign in to the latest version of the app at ": "Используйте свою учетную запись для входа в последнюю версию приложения по адресу ", "You’re already signed in and good to go here, but you can also grab the latest versions of the app on all platforms at element.io/get-started.": "Вы уже вошли в систему и можете остаться здесь, но вы также можете получить последние версии приложения на всех платформах по адресу element.io/get-started.", @@ -2245,7 +2245,7 @@ "Upgrading a room is an advanced action and is usually recommended when a room is unstable due to bugs, missing features or security vulnerabilities.": "Модернизация комнаты - это расширенное действие, которое обычно рекомендуется, когда комната нестабильна из-за ошибок, отсутствующих функций или уязвимостей безопасности.", "This usually only affects how the room is processed on the server. If you're having problems with your %(brand)s, please report a bug.": "Обычно это влияет только на то, как комната обрабатывается на сервере. Если у вас возникли проблемы с вашим %(brand)s, пожалуйста, сообщите об ошибке.", "You'll upgrade this room from to .": "Вы модернизируете эту комнату с до .", - "You're all caught up.": "Вы в курсе.", + "You're all caught up.": "Нет непрочитанных сообщений.", "Server isn't responding": "Сервер не отвечает", "Your server isn't responding to some of your requests. Below are some of the most likely reasons.": "Ваш сервер не отвечает на некоторые ваши запросы. Ниже приведены некоторые из наиболее вероятных причин.", "The server (%(serverName)s) took too long to respond.": "Сервер (%(serverName)s) слишком долго не отвечал.", @@ -2257,8 +2257,8 @@ "A connection error occurred while trying to contact the server.": "При попытке связаться с сервером произошла ошибка подключения.", "The server is not configured to indicate what the problem is (CORS).": "Сервер не настроен для указания того, в чем заключается проблема (CORS).", "Recent changes that have not yet been received": "Последние изменения, которые еще не были получены", - "This will allow you to return to your account after signing out, and sign in on other sessions.": "Это позволит вам вернуться в свою учетную запись после выхода из системы и войти в другие сеансы.", - "Verify other session": "Проверьте другой сеанс", + "This will allow you to return to your account after signing out, and sign in on other sessions.": "Это позволит вам вернуться в свою учетную запись после выхода из системы и войти в другие сессии.", + "Verify other session": "Проверьте другую сессию", "Verification Request": "Запрос на подтверждение", "Wrong file type": "Неправильный тип файла", "Looks good!": "Выглядит неплохо!", @@ -2285,32 +2285,32 @@ "Confirm your identity by entering your account password below.": "Подтвердите свою личность, введя пароль учетной записи ниже.", "Enter the location of your Element Matrix Services homeserver. It may use your own domain name or be a subdomain of element.io.": "Укажите путь к вашему серверу Element Matrix Services. Он может использовать ваше собственное доменное имя или быть поддоменом element.io.", "Sign in with SSO": "Вход с помощью SSO", - "Self-verification request": "Запрос на самоконтроль", + "Self-verification request": "Запрос самопроверки", "Delete the room address %(alias)s and remove %(name)s from the directory?": "Удалить адрес комнаты %(alias)s и удалить %(name)s из каталога?", "delete the address.": "удалить адрес.", "Switch theme": "Сменить тему", "User menu": "Меню пользователя", - "Verify this login": "Проверьте этот сеанс", + "Verify this login": "Подтвердите эту сессию", "Session verified": "Сессия подтверждена", - "Changing your password will reset any end-to-end encryption keys on all of your sessions, making encrypted chat history unreadable. Set up Key Backup or export your room keys from another session before resetting your password.": "Изменение пароля приведет к сбросу всех сквозных ключей шифрования на всех ваших сеансах, что сделает зашифрованную историю чата нечитаемой. Перед сбросом пароля настройте резервное копирование ключей или экспортируйте ключи от комнат из другого сеанса.", - "You have been logged out of all sessions and will no longer receive push notifications. To re-enable notifications, sign in again on each device.": "Вы вышли из всех сеансов и больше не будете получать push-уведомления. Чтобы повторно включить уведомления, войдите в систему еще раз на каждом устройстве.", + "Changing your password will reset any end-to-end encryption keys on all of your sessions, making encrypted chat history unreadable. Set up Key Backup or export your room keys from another session before resetting your password.": "Изменение пароля приведет к сбросу всех сквозных ключей шифрования во всех ваших сессиях, и зашифрованная история чата станет недоступна. Перед сбросом пароля настройте резервное копирование ключей или экспортируйте ключи от комнат из другой сессии.", + "You have been logged out of all sessions and will no longer receive push notifications. To re-enable notifications, sign in again on each device.": "Вы вышли из всех сессий и больше не будете получать push-уведомления. Чтобы снова включить уведомления, войдите в систему еще раз на каждом устройстве.", "Syncing...": "Синхронизация…", "Signing In...": "Выполняется вход...", "If you've joined lots of rooms, this might take a while": "Если вы присоединились к большому количеству комнат, это может занять некоторое время", "Use Recovery Key or Passphrase": "Используйте ключ восстановления или парольную фразу", "Use Recovery Key": "Используйте ключ восстановления", - "Confirm your identity by verifying this login from one of your other sessions, granting it access to encrypted messages.": "Подтвердите свою личность, проверив этот сеанс из одного из ваших других сеансов, предоставив ему доступ к зашифрованным сообщениям.", + "Confirm your identity by verifying this login from one of your other sessions, granting it access to encrypted messages.": "Подтвердите свою личность, подтвердив эту сессию в одной из ваших других сессий, чтобы предоставить ей доступ к зашифрованным сообщениям.", "This requires the latest %(brand)s on your other devices:": "Для этого требуется последняя версия %(brand)s на других ваших устройствах:", "%(brand)s Web": "Веб-версия %(brand)s", "%(brand)s Desktop": "Настольный клиент %(brand)s", "%(brand)s iOS": "iOS клиент %(brand)s", "%(brand)s X for Android": "%(brand)s X для Android", "or another cross-signing capable Matrix client": "или другой, поддерживаемый кросс-подпись Matrix клиент", - "Your new session is now verified. It has access to your encrypted messages, and other users will see it as trusted.": "Ваш новый сеанс теперь проверен. Он имеет доступ к вашим зашифрованным сообщениям, и другие пользователи будут считать его надежным.", - "Your new session is now verified. Other users will see it as trusted.": "Ваш новый сеанс теперь проверен. Другие пользователи будут считать его надежным.", - "Without completing security on this session, it won’t have access to encrypted messages.": "Без завершения защиты в этом сеансе он не будет иметь доступа к зашифрованным сообщениям.", - "Regain access to your account and recover encryption keys stored in this session. Without them, you won’t be able to read all of your secure messages in any session.": "Восстановите доступ к своей учетной записи и восстановите ключи шифрования, хранящиеся в этом сеансе. Без них вы не сможете прочитать все ваши защищенные сообщения ни в одном сеансе.", - "Warning: Your personal data (including encryption keys) is still stored in this session. Clear it if you're finished using this session, or want to sign in to another account.": "Предупреждение: ваши личные данные (включая ключи шифрования) все еще хранятся в этом сеансе. Очистите его, если вы хотите закончить использовать этот сеанс или хотите войти в другую учетную запись.", + "Your new session is now verified. It has access to your encrypted messages, and other users will see it as trusted.": "Ваша новая сессия теперь подтверждена. У неё есть доступ к вашим зашифрованным сообщениям, и другие пользователи будут считать её доверенной.", + "Your new session is now verified. Other users will see it as trusted.": "Ваша новая сессия теперь проверена. Другие пользователи будут считать её доверенной.", + "Without completing security on this session, it won’t have access to encrypted messages.": "Без подтверждения этой сессии, у неё не будет доступа к зашифрованным сообщениям.", + "Regain access to your account and recover encryption keys stored in this session. Without them, you won’t be able to read all of your secure messages in any session.": "Восстановите доступ к своей учетной записи и восстановите ключи шифрования, хранящиеся в этой сессии. Без них вы не сможете прочитать никакие защищённые сообщения ни в одной сессии.", + "Warning: Your personal data (including encryption keys) is still stored in this session. Clear it if you're finished using this session, or want to sign in to another account.": "Предупреждение: ваши личные данные (включая ключи шифрования) всё ещё хранятся в этой сессии. Удалите их, если вы хотите завершить эту сессию или войти в другую учетную запись.", "Confirm encryption setup": "Подтвердите настройку шифрования", "Click the button below to confirm setting up encryption.": "Нажмите кнопку ниже, чтобы подтвердить настройку шифрования.", "Safeguard against losing access to encrypted messages & data by backing up encryption keys on your server.": "Защитите себя от потери доступа к зашифрованным сообщениям и данным, создав резервные копии ключей шифрования на вашем сервере.", @@ -2322,7 +2322,7 @@ "Restore your key backup to upgrade your encryption": "Восстановите резервную копию ключа для обновления шифрования", "Restore": "Восстановление", "You'll need to authenticate with the server to confirm the upgrade.": "Вам нужно будет пройти аутентификацию на сервере,чтобы подтвердить обновление.", - "Upgrade this session to allow it to verify other sessions, granting them access to encrypted messages and marking them as trusted for other users.": "Обновите этот сеанс, чтобы он мог проверять другие сеансы, предоставляя им доступ к зашифрованным сообщениям и помечая их как доверенные для других пользователей.", + "Upgrade this session to allow it to verify other sessions, granting them access to encrypted messages and marking them as trusted for other users.": "Модернизируйте эту сессию, чтобы она могла проверять другие сессии, предоставляя им доступ к зашифрованным сообщениям и помечая их как доверенные для других пользователей.", "Enter a security phrase only you know, as it’s used to safeguard your data. To be secure, you shouldn’t re-use your account password.": "Введите фразу безопасности, известную только вам, поскольку она используется для защиты ваших данных. Чтобы быть в безопасности, вы не должны повторно использовать пароль своей учетной записи.", "Use a different passphrase?": "Используйте другой пароль?", "Confirm your recovery passphrase": "Подтвердите пароль для восстановления", @@ -2345,13 +2345,13 @@ "Your recovery key": "Ваш ключ восстановления", "Your recovery key has been copied to your clipboard, paste it to:": "Ваш ключ восстановления был скопирован в буфер обмена, вставьте его в:", "Your recovery key is in your Downloads folder.": "Ваш ключ восстановления находится в папке Загрузки.", - "Without setting up Secure Message Recovery, you won't be able to restore your encrypted message history if you log out or use another session.": "Без настройки безопасного восстановления сообщений вы не сможете восстановить свою зашифрованную историю сообщений, если выйдете из системы или воспользуетесь другим сеансом.", + "Without setting up Secure Message Recovery, you won't be able to restore your encrypted message history if you log out or use another session.": "Без настройки безопасного восстановления сообщений вы не сможете восстановить свою зашифрованную историю сообщений, если выйдете из системы или воспользуетесь другой сессией.", "Secure your backup with a recovery passphrase": "Защитите свою резервную копию с помощью пароля восстановления", "Make a copy of your recovery key": "Сделайте копию вашего ключа восстановления", "Create key backup": "Создать резервную копию ключа", - "This session is encrypting history using the new recovery method.": "Этот сеанс шифрует историю с помощью нового метода восстановления.", - "This session has detected that your recovery passphrase and key for Secure Messages have been removed.": "Этот сеанс обнаружил, что ваша парольная фраза восстановления и ключ для защищенных сообщений были удалены.", - "If you did this accidentally, you can setup Secure Messages on this session which will re-encrypt this session's message history with a new recovery method.": "Если вы сделали это случайно, вы можете настроить безопасные сообщения на этом сеансе, который будет повторно шифровать историю сообщений этого сеанса с помощью нового метода восстановления.", + "This session is encrypting history using the new recovery method.": "Эта сессия шифрует историю с помощью нового метода восстановления.", + "This session has detected that your recovery passphrase and key for Secure Messages have been removed.": "Эта сессия обнаружила, что ваша парольная фраза восстановления и ключ для защищенных сообщений были удалены.", + "If you did this accidentally, you can setup Secure Messages on this session which will re-encrypt this session's message history with a new recovery method.": "Если вы сделали это по ошибке, вы можете настроить безопасные сообщения в этой сессии, которая перешифрует историю сообщений в этой сессии с помощью нового метода восстановления.", "If disabled, messages from encrypted rooms won't appear in search results.": "Если этот параметр отключен, сообщения из зашифрованных комнат не будут отображаться в результатах поиска.", "Disable": "Отключить", "Not currently indexing messages for any room.": "В настоящее время не индексируются сообщения ни для одной комнаты.", @@ -2361,11 +2361,11 @@ "Indexed messages:": "Индексированные сообщения:", "Indexed rooms:": "Индексированные комнаты:", "%(doneRooms)s out of %(totalRooms)s": "%(doneRooms)s из %(totalRooms)s", - "Message downloading sleep time(ms)": "Время сна для загрузки сообщений (в ms)", + "Message downloading sleep time(ms)": "Пауза между загрузками сообщений (в мс)", "Navigation": "Навигация", "Calls": "Звонки", "Room List": "Список комнат", - "Autocomplete": "Автозаполнение", + "Autocomplete": "Автодополнение", "Alt": "Alt", "Alt Gr": "Правый Alt", "Shift": "Shift", @@ -2375,29 +2375,34 @@ "Toggle Italics": "Курсивный шрифт", "Toggle Quote": "Цитата", "New line": "Новая строка", - "Navigate recent messages to edit": "Перейдите к последним сообщениям для редактирования", - "Jump to start/end of the composer": "Переход к началу/концу составителя", - "Navigate composer history": "Навигация по истории составителя", + "Navigate recent messages to edit": "Выбор последних сообщений для редактирования", + "Jump to start/end of the composer": "Переход к началу/концу строки", + "Navigate composer history": "Просмотр истории сообщений", "Cancel replying to a message": "Отмена ответа на сообщение", - "Toggle microphone mute": "Переключатель отключения микрофона", - "Toggle video on/off": "Переключатель включения/выключения видео", - "Scroll up/down in the timeline": "Прокрутка вверх/вниз по временной шкале", - "Dismiss read marker and jump to bottom": "Отклонить маркер прочтения и перейти к основанию", + "Toggle microphone mute": "Включить/выключить микрофон", + "Toggle video on/off": "Включить/выключить видео", + "Scroll up/down in the timeline": "Прокрутка чата вверх/вниз", + "Dismiss read marker and jump to bottom": "Убрать маркер прочтения и перейти в конец", "Jump to oldest unread message": "Перейти к самому старому непрочитанному сообщению", "Upload a file": "Загрузить файл", "Jump to room search": "Перейти к поиску комнат", - "Navigate up/down in the room list": "Перемещайтесь вверх/вниз по списку комнат", - "Select room from the room list": "Выберите комнату из списка комнат", + "Navigate up/down in the room list": "Перемещение вверх/вниз по списку комнат", + "Select room from the room list": "Выбрать комнату из списка комнат", "Collapse room list section": "Свернуть секцию списка комнат", - "Expand room list section": "Раскрыть раздел списка комнат", - "Clear room list filter field": "Очистить поле фильтра списка комнат", + "Expand room list section": "Раскрыть секцию списка комнат", + "Clear room list filter field": "Очистить фильтр списка комнат", "Previous/next unread room or DM": "Предыдущая/следующая непрочитанная комната или ЛС", "Previous/next room or DM": "Предыдущая/следующая комната или ЛС", "Toggle the top left menu": "Переключение верхнего левого меню", - "Close dialog or context menu": "Закройте диалоговое окно или контекстное меню", - "Move autocomplete selection up/down": "Перемещение выбора автозаполнения вверх/вниз", + "Close dialog or context menu": "Закрыть диалоговое окно или контекстное меню", + "Move autocomplete selection up/down": "Выбор автодополнения следующее/предыдущее", "Page Up": "Page Up", "Page Down": "Page Down", "Space": "Пробел", - "End": "End" + "End": "End", + "No files visible in this room": "Нет видимых файлов в этой комнате", + "Attach files from chat or just drag and drop them anywhere in a room.": "Прикрепите файлы из чата или просто перетащите их в комнату.", + "You’re all caught up": "Нет непрочитанных сообщений", + "You have no visible notifications in this room.": "Нет видимых уведомлений в этой комнате.", + "%(brand)s Android": "%(brand)s Android" } From 9e40e079ffd0444348fc39eb4b2786faa4b63013 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Fri, 7 Aug 2020 15:54:05 +0100 Subject: [PATCH 096/424] Use an explicit list of keys to share --- src/CrossSigningManager.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/CrossSigningManager.js b/src/CrossSigningManager.js index fe07a821c6..676c41d7d7 100644 --- a/src/CrossSigningManager.js +++ b/src/CrossSigningManager.js @@ -129,7 +129,11 @@ const onSecretRequested = async function({ console.log(`CrossSigningManager: Ignoring request from untrusted device ${deviceId}`); return; } - if (name.startsWith("m.cross_signing")) { + if ( + name === "m.cross_signing.master" || + name === "m.cross_signing.self_signing" || + name === "m.cross_signing.user_signing" + ) { const callbacks = client.getCrossSigningCacheCallbacks(); if (!callbacks.getCrossSigningKeyCache) return; const keyId = name.replace("m.cross_signing.", ""); From 1571a577a1268fb26ba1c25a0fac323917d497fb Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Thu, 6 Aug 2020 02:09:48 +0000 Subject: [PATCH 097/424] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (2340 of 2340 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/zh_Hant/ --- src/i18n/strings/zh_Hant.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json index 9989c2ac52..bcae2fcea2 100644 --- a/src/i18n/strings/zh_Hant.json +++ b/src/i18n/strings/zh_Hant.json @@ -2411,5 +2411,6 @@ "No files visible in this room": "在此聊天室中看不到檔案", "Attach files from chat or just drag and drop them anywhere in a room.": "從聊天中附加檔案,或將其拖放到聊天室的任何地方。", "You’re all caught up": "您都設定好了", - "You have no visible notifications in this room.": "您在此聊天室沒有可見的通知。" + "You have no visible notifications in this room.": "您在此聊天室沒有可見的通知。", + "%(brand)s Android": "%(brand)s Android" } From 42308cf3feccde4492905f21062598a349478bd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Priit=20J=C3=B5er=C3=BC=C3=BCt?= Date: Wed, 5 Aug 2020 17:20:40 +0000 Subject: [PATCH 098/424] Translated using Weblate (Estonian) Currently translated at 99.7% (2334 of 2340 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/et/ --- src/i18n/strings/et.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/et.json b/src/i18n/strings/et.json index 5eb47a562f..2124f54839 100644 --- a/src/i18n/strings/et.json +++ b/src/i18n/strings/et.json @@ -1918,7 +1918,7 @@ "You don't have permission to delete the address.": "Sinul pole õigusi selle aadressi kustutamiseks.", "There was an error removing that address. It may no longer exist or a temporary error occurred.": "Selle aadressi kustutamisel tekkis viga. See kas juba on kustutatud või tekkis ajutine tõrge.", "Error removing address": "Viga aadresi kustutamisel", - "This room has no local addresses": "Sellel jututoal puudub kohalik aadress", + "This room has no local addresses": "Sellel jututoal puuduvad kohalikud aadressid", "Local address": "Kohalik aadress", "Published Addresses": "Avaldatud aadressid", "Published addresses can be used by anyone on any server to join your room. To publish an address, it needs to be set as a local address first.": "Avaldatud aadresse saab mis iganes serveri kasutaja pruukida sinu jututoaga liitumiseks. Aadressi avaldamiseks peab ta alustuseks olema määratud kohaliku aadressina.", @@ -2401,5 +2401,7 @@ "No files visible in this room": "Selles jututoas pole nähtavaid faile", "Attach files from chat or just drag and drop them anywhere in a room.": "Faile saad manueks lisada kas vastava nupu alt vestlusest või sikutades neid jututoa aknasse.", "You have no visible notifications in this room.": "Jututoas pole nähtavaid teavitusi.", - "You're all caught up.": "Ei tea... kõik vist on nüüd tehtud." + "You're all caught up.": "Ei tea... kõik vist on nüüd tehtud.", + "You’re all caught up": "Ei tea... kõik vist on nüüd tehtud", + "%(brand)s Android": "%(brand)s Android" } From 98222d2b46ecb8d91337385f198618f0253ae1d5 Mon Sep 17 00:00:00 2001 From: XoseM Date: Fri, 7 Aug 2020 06:13:33 +0000 Subject: [PATCH 099/424] Translated using Weblate (Galician) Currently translated at 100.0% (2340 of 2340 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/gl/ --- src/i18n/strings/gl.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/gl.json b/src/i18n/strings/gl.json index 0e9d4ccecf..b68529f0f2 100644 --- a/src/i18n/strings/gl.json +++ b/src/i18n/strings/gl.json @@ -2408,5 +2408,6 @@ "No files visible in this room": "Non hai ficheiros visibles na sala", "Attach files from chat or just drag and drop them anywhere in a room.": "Anexa filecheiros desde a conversa ou arrastra e sóltaos onde queiras nunha sala.", "You’re all caught up": "Xa estás ó día", - "You have no visible notifications in this room.": "Non tes notificacións visibles nesta sala." + "You have no visible notifications in this room.": "Non tes notificacións visibles nesta sala.", + "%(brand)s Android": "%(brand)s Android" } From f91bff4231b1918f71e12c6df1d74083b9245f90 Mon Sep 17 00:00:00 2001 From: zurtel22 Date: Wed, 5 Aug 2020 17:58:11 +0000 Subject: [PATCH 100/424] Translated using Weblate (German) Currently translated at 98.5% (2306 of 2340 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 63fdac677c..9407713fde 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -274,7 +274,7 @@ "ex. @bob:example.com": "z. B. @bob:example.com", "Add User": "Benutzer hinzufügen", "Custom Server Options": "Benutzerdefinierte Server-Optionen", - "Dismiss": "Ablehnen", + "Dismiss": "Ausblenden", "Please check your email to continue registration.": "Bitte prüfe deine E-Mails, um mit der Registrierung fortzufahren.", "Token incorrect": "Token fehlerhaft", "Please enter the code it contains:": "Bitte gib den darin enthaltenen Code ein:", From 3543556a33825753d9276bdb6ca5425b6b3807db Mon Sep 17 00:00:00 2001 From: ziriSut Date: Thu, 6 Aug 2020 13:21:13 +0000 Subject: [PATCH 101/424] Translated using Weblate (Kabyle) Currently translated at 31.4% (735 of 2340 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/kab/ --- src/i18n/strings/kab.json | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/kab.json b/src/i18n/strings/kab.json index 343238e626..2ffc8700fc 100644 --- a/src/i18n/strings/kab.json +++ b/src/i18n/strings/kab.json @@ -759,5 +759,19 @@ "Glasses": "Tisekkadin", "Umbrella": "Tasiwant", "Gift": "Asefk", - "Light bulb": "Taftilt" + "Light bulb": "Taftilt", + "Power level must be positive integer.": "Ilaq ad yili uswir n tezmert d ummid ufrir.", + "Sends a message as plain text, without interpreting it as markdown": "Yuzen izen d aḍris aččuran war ma isegza-t s tukksa n tecreḍt", + "You do not have the required permissions to use this command.": "Ur tesεiḍ ara tisirag akken ad tesqedceḍ taladna-a.", + "Double check that your server supports the room version chosen and try again.": "Senqed akken ilaq ma yella aqeddac-inek·inem issefrak lqem n texxamtyettwafernen syen εreḍ tikkelt-nniḍen.", + "Changes your display nickname": "Ibeddel isem-inek·inem yettwaskanen", + "Changes your display nickname in the current room only": "Ibeddel isem-inek·inem i d-yettwaskanen degtexxamt kan tamirant", + "Kicks user with given id": "Suffeɣ aseqdac s usulay i d-yettunefken", + "Unignored user": "Aseqdac ur yettuzeglen ara", + "You are no longer ignoring %(userId)s": "Dayen ur tettazgaleḍ ara akk %(userId)s", + "Opens the Developer Tools dialog": "Yeldi adiwenni n yifecka n uneflay", + "Adds a custom widget by URL to the room": "Yerna awiǧit udmawan s URL ɣer texxamt", + "Please supply a widget URL or embed code": "Ttxil-k·m mudd URL n uwiǧit neɣ tangalt tusliɣt", + "Verifies a user, session, and pubkey tuple": "Yessenqad tagrumma-a: aseqdac, tiɣimit d tsarut tazayezt", + "WARNING: Session already verified, but keys do NOT MATCH!": "ΓUR-K·M: Tettwasenqed tɣimit yakan maca tisura ur mṣadant ara!" } From 447e4c7bebefd4433b62323f720a53bc63b1c3ec Mon Sep 17 00:00:00 2001 From: Marcelo Filho Date: Fri, 7 Aug 2020 06:07:17 +0000 Subject: [PATCH 102/424] Translated using Weblate (Portuguese (Brazil)) Currently translated at 94.2% (2204 of 2340 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/pt_BR/ --- src/i18n/strings/pt_BR.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/i18n/strings/pt_BR.json b/src/i18n/strings/pt_BR.json index a5b6980c2b..5d4a727bd6 100644 --- a/src/i18n/strings/pt_BR.json +++ b/src/i18n/strings/pt_BR.json @@ -3,7 +3,7 @@ "Admin": "Administrador/a", "Advanced": "Avançado", "New passwords don't match": "As novas senhas não conferem", - "A new password must be entered.": "Uma nova senha precisa ser informada.", + "A new password must be entered.": "Uma nova senha precisa ser inserida.", "Anyone who knows the room's link, apart from guests": "Qualquer pessoa que tenha o link da sala, exceto visitantes", "Anyone who knows the room's link, including guests": "Qualquer pessoa que tenha o link da sala, incluindo visitantes", "Are you sure you want to reject the invitation?": "Você tem certeza que deseja recusar este convite?", @@ -62,7 +62,7 @@ "Passwords can't be empty": "As senhas não podem estar em branco", "Permissions": "Permissões", "Phone": "Telefone", - "Please check your email and click on the link it contains. Once this is done, click continue.": "Por favor verifique seu e-mail e clique no link enviado. Quando finalizar este processo, clique para continuar.", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Por favor, verifique o seu e-mail e clique no link enviado. Quando finalizar esse processo, clique em continuar.", "Privileged Users": "Usuárias/os privilegiadas/os", "Profile": "Perfil", "Reject invitation": "Recusar o convite", @@ -80,7 +80,7 @@ "Sign out": "Sair", "Someone": "Alguém", "Success": "Sucesso", - "The email address linked to your account must be entered.": "O endereço de e-mail relacionado a sua conta precisa ser informado.", + "The email address linked to your account must be entered.": "O e-mail vinculado à sua conta precisa ser informado.", "This doesn't appear to be a valid email address": "Este não aparenta ser um endereço de e-mail válido", "This room is not accessible by remote Matrix servers": "Esta sala não é acessível para servidores Matrix remotos", "Unable to add email address": "Não foi possível adicionar endereço de e-mail", @@ -135,7 +135,7 @@ "Existing Call": "Chamada em andamento", "Failed to send email": "Não foi possível enviar e-mail", "Failed to send request.": "Não foi possível mandar requisição.", - "Failed to verify email address: make sure you clicked the link in the email": "Não foi possível verificar o endereço de e-mail: verifique se você realmente clicou no link que está no seu e-mail", + "Failed to verify email address: make sure you clicked the link in the email": "Falha ao verificar o endereço de e-mail: certifique-se de clicar no link do e-mail", "Failure to create room": "Não foi possível criar a sala", "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s de %(fromPowerLevel)s para %(toPowerLevel)s", "%(senderName)s invited %(targetName)s.": "%(senderName)s convidou %(targetName)s.", @@ -165,7 +165,7 @@ "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s definiu o nome e sobrenome para %(displayName)s.", "This email address is already in use": "Este endereço de e-mail já está em uso", "This email address was not found": "Este endereço de e-mail não foi encontrado", - "The remote side failed to pick up": "Houve alguma falha que não permitiu a outra pessoa atender à chamada", + "The remote side failed to pick up": "A pessoa não atendeu a chamada", "This room is not recognised.": "Esta sala não é reconhecida.", "This phone number is already in use": "Este número de telefone já está sendo usado", "To use it, just wait for autocomplete results to load and tab through them.": "Para usar esta funcionalidade, espere o carregamento dos resultados de autocompletar e então escolha entre as opções.", @@ -285,7 +285,7 @@ "Add User": "Adicionar usuária(o)", "Custom Server Options": "Opções para Servidor Personalizado", "Dismiss": "Descartar", - "Please check your email to continue registration.": "Por favor, verifique o seu e-mail para continuar o processo de registro.", + "Please check your email to continue registration.": "Por favor, verifique o seu e-mail para continuar a inscrição.", "Token incorrect": "Token incorreto", "Please enter the code it contains:": "Por favor, entre com o código que está na mensagem:", "powered by Matrix": "oferecido por Matrix", @@ -629,7 +629,7 @@ "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "A privacidade é importante para nós, portanto nós não coletamos nenhum dado pessoa ou identificável para nossas estatísticas.", "Learn more about how we use analytics.": "Saiba mais sobre como nós usamos os dados estatísticos.", "Check for update": "Verificar atualizações", - "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Um e-mail foi enviado para %(emailAddress)s. Quando você tiver seguido o link que está nesta mensagem, clique abaixo.", + "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Um e-mail foi enviado para %(emailAddress)s. Após clicar no link contido no e-mail, clique abaixo.", "Please note you are logging into the %(hs)s server, not matrix.org.": "Note que você está se conectando ao servidor %(hs)s, e não ao servidor matrix.org.", "This homeserver doesn't offer any login flows which are supported by this client.": "Este servidor de base (homeserver) não oferece fluxos de login que funcionem neste cliente.", "Define the power level of a user": "Definir o nível de permissões de um(a) usuário(a)", @@ -850,7 +850,7 @@ "This room is a continuation of another conversation.": "Esta sala é uma continuação de outra conversa.", "Click here to see older messages.": "Clique aqui para ver as mensagens mais antigas.", "Please review and accept all of the homeserver's policies": "Por favor, revise e aceite todas as políticas do homeserver", - "Please review and accept the policies of this homeserver:": "Por favor, revise e aceite as políticas deste homeserver:", + "Please review and accept the policies of this homeserver:": "Por favor, revise e aceite as políticas deste servidor local:", "Code": "Código", "The email field must not be blank.": "O campo de e-mail não pode estar em branco.", "The phone number field must not be blank.": "O campo do número de telefone não pode estar em branco.", @@ -2089,7 +2089,7 @@ "Remove for everyone": "Remover para todo mundo", "Remove for me": "Remover para mim", "User Status": "Status do usuário", - "This homeserver would like to make sure you are not a robot.": "Este servidor local gostaria se certificar de que você não é um robô.", + "This homeserver would like to make sure you are not a robot.": "Este servidor local quer se certificar de que você não é um robô.", "Confirm your identity by entering your account password below.": "Confirme sua identidade digitando sua senha abaixo.", "Unable to validate homeserver/identity server": "Não foi possível validar seu servidor local/servidor de identidade", "Server Name": "Nome do servidor", From 5b27bcb8e0c6858b9a9943ee02393418ff26f1ab Mon Sep 17 00:00:00 2001 From: Artyom Date: Thu, 6 Aug 2020 19:38:22 +0000 Subject: [PATCH 103/424] Translated using Weblate (Russian) Currently translated at 100.0% (2340 of 2340 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/ru/ --- src/i18n/strings/ru.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 2b9b4773af..2cdad35956 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -1781,7 +1781,7 @@ "Activate selected button": "Нажать выбранную кнопку", "Toggle right panel": "Показать/скрыть правую панель", "Toggle this dialog": "Показать/скрыть этот диалог", - "Cancel autocomplete": "Отменить автодополнение", + "Cancel autocomplete": "Отменить автозаполнение", "Esc": "Esc", "Enter": "Enter", "Delete %(count)s sessions|one": "Удалить %(count)s сессий", @@ -2395,7 +2395,7 @@ "Previous/next room or DM": "Предыдущая/следующая комната или ЛС", "Toggle the top left menu": "Переключение верхнего левого меню", "Close dialog or context menu": "Закрыть диалоговое окно или контекстное меню", - "Move autocomplete selection up/down": "Выбор автодополнения следующее/предыдущее", + "Move autocomplete selection up/down": "Перемещение выбора автозаполнения вверх/вниз", "Page Up": "Page Up", "Page Down": "Page Down", "Space": "Пробел", From 53ac90d96b1ade8a5374088040da73d1433407ca Mon Sep 17 00:00:00 2001 From: rkfg Date: Fri, 7 Aug 2020 05:50:00 +0000 Subject: [PATCH 104/424] Translated using Weblate (Russian) Currently translated at 100.0% (2340 of 2340 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/ru/ --- src/i18n/strings/ru.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 2cdad35956..5ae611e7ba 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -1217,7 +1217,7 @@ "Error updating flair": "Ошибка обновления стиля", "There was an error updating the flair for this room. The server may not allow it or a temporary error occurred.": "При обновлении стиля для этой комнаты произошла ошибка. Сервер может не разрешить это или произошла временная ошибка.", "reacted with %(shortName)s": "отреагировал с %(shortName)s", - "edited": "отредактировано", + "edited": "изменено", "Maximize apps": "Развернуть приложения", "Rotate Left": "Повернуть влево", "Rotate counter-clockwise": "Повернуть против часовой стрелки", @@ -1370,7 +1370,7 @@ "%(senderName)s made no change.": "%(senderName)s не внёс изменений.", "Loading room preview": "Загрузка предпросмотра комнаты", "Show all": "Показать все", - "Edited at %(date)s. Click to view edits.": "Отредактировано в %(date)s. Нажмите, чтобы посмотреть историю редактирования.", + "Edited at %(date)s. Click to view edits.": "Изменено %(date)s. Нажмите для посмотра истории изменений.", "%(severalUsers)smade no changes %(count)s times|other": "%(severalUsers)sне внёс изменений %(count)s раз", "%(severalUsers)smade no changes %(count)s times|one": "%(severalUsers)sне внёс изменений", "%(oneUser)smade no changes %(count)s times|other": "%(oneUser)sне внёс изменений %(count)s раз", @@ -2159,7 +2159,7 @@ "Message deleted": "Сообщение удалено", "Message deleted by %(name)s": "Сообщение удалено %(name)s", "Message deleted on %(date)s": "Сообщение удалено %(date)s", - "Edited at %(date)s": "Отредактировано %(date)s", + "Edited at %(date)s": "Изменено %(date)s", "Click to view edits": "Нажмите для просмотра правок", "Can't load this message": "Не удалось загрузить это сообщение", "Submit logs": "Отправить логи", From 2e76eee678d07d86dbb64e04603925cf011ab460 Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Sat, 8 Aug 2020 02:51:01 +0000 Subject: [PATCH 105/424] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (2341 of 2341 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/zh_Hant/ --- src/i18n/strings/zh_Hant.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json index bcae2fcea2..b8fc2b43fb 100644 --- a/src/i18n/strings/zh_Hant.json +++ b/src/i18n/strings/zh_Hant.json @@ -2412,5 +2412,6 @@ "Attach files from chat or just drag and drop them anywhere in a room.": "從聊天中附加檔案,或將其拖放到聊天室的任何地方。", "You’re all caught up": "您都設定好了", "You have no visible notifications in this room.": "您在此聊天室沒有可見的通知。", - "%(brand)s Android": "%(brand)s Android" + "%(brand)s Android": "%(brand)s Android", + "Master private key:": "主控私鑰:" } From 09e8999345f4a4e84d9ecaa6421504bf8c8c6c92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Priit=20J=C3=B5er=C3=BC=C3=BCt?= Date: Sat, 8 Aug 2020 08:00:46 +0000 Subject: [PATCH 106/424] Translated using Weblate (Estonian) Currently translated at 99.7% (2334 of 2341 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/et/ --- src/i18n/strings/et.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/et.json b/src/i18n/strings/et.json index 2124f54839..7b6a5fa662 100644 --- a/src/i18n/strings/et.json +++ b/src/i18n/strings/et.json @@ -512,7 +512,7 @@ "%(senderName)s placed a voice call. (not supported by this browser)": "%(senderName)s alustas häälkõnet. (sellel brauseril puudub niisuguste kõnede tugi)", "%(senderName)s placed a video call.": "%(senderName)s alustas videokõnet.", "%(senderName)s placed a video call. (not supported by this browser)": "%(senderName)s alustas videokõnet. (sellel brauseril puudub niisuguste kõnede tugi)", - "%(senderDisplayName)s made the room invite only.": "%(senderDisplayName)s määras et jututuppa pääseb vaid kutsega.", + "%(senderDisplayName)s made the room invite only.": "%(senderDisplayName)s määras, et jututuppa pääseb vaid kutsega.", "%(senderDisplayName)s changed the join rule to %(rule)s": "%(senderDisplayName)s muutis liitumisreeglid järgnevaks - %(rule)s", "%(senderDisplayName)s has allowed guests to join the room.": "%(senderDisplayName)s on lubanud külalistel jututoaga liituda.", "%(senderDisplayName)s has prevented guests from joining the room.": "%(senderDisplayName)s on määranud et külalised ei saa jututoaga liituda.", From d934e53fe53c70a187cce9c1c990bd0439140561 Mon Sep 17 00:00:00 2001 From: XoseM Date: Fri, 7 Aug 2020 18:35:19 +0000 Subject: [PATCH 107/424] Translated using Weblate (Galician) Currently translated at 100.0% (2341 of 2341 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/gl/ --- src/i18n/strings/gl.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/gl.json b/src/i18n/strings/gl.json index b68529f0f2..db8a8f8100 100644 --- a/src/i18n/strings/gl.json +++ b/src/i18n/strings/gl.json @@ -2409,5 +2409,6 @@ "Attach files from chat or just drag and drop them anywhere in a room.": "Anexa filecheiros desde a conversa ou arrastra e sóltaos onde queiras nunha sala.", "You’re all caught up": "Xa estás ó día", "You have no visible notifications in this room.": "Non tes notificacións visibles nesta sala.", - "%(brand)s Android": "%(brand)s Android" + "%(brand)s Android": "%(brand)s Android", + "Master private key:": "Chave mestra principal:" } From 1c7cedf4d091d99e4bb7c0d56cb30547a2860f39 Mon Sep 17 00:00:00 2001 From: ziriSut Date: Fri, 7 Aug 2020 16:11:58 +0000 Subject: [PATCH 108/424] Translated using Weblate (Kabyle) Currently translated at 32.1% (751 of 2341 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/kab/ --- src/i18n/strings/kab.json | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/kab.json b/src/i18n/strings/kab.json index 2ffc8700fc..6073fbfd38 100644 --- a/src/i18n/strings/kab.json +++ b/src/i18n/strings/kab.json @@ -773,5 +773,21 @@ "Adds a custom widget by URL to the room": "Yerna awiǧit udmawan s URL ɣer texxamt", "Please supply a widget URL or embed code": "Ttxil-k·m mudd URL n uwiǧit neɣ tangalt tusliɣt", "Verifies a user, session, and pubkey tuple": "Yessenqad tagrumma-a: aseqdac, tiɣimit d tsarut tazayezt", - "WARNING: Session already verified, but keys do NOT MATCH!": "ΓUR-K·M: Tettwasenqed tɣimit yakan maca tisura ur mṣadant ara!" + "WARNING: Session already verified, but keys do NOT MATCH!": "ΓUR-K·M: Tettwasenqed tɣimit yakan maca tisura ur mṣadant ara!", + "%(senderName)s requested a VoIP conference.": "%(senderName)s isuter-d asarag VoIP.", + "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s ibeddel isem-ines yettwaskanen s %(displayName)s.", + "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s yesbadu isem yettwaskanen s %(displayName)s.", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s yessuffeɣ %(targetName)s.", + "%(senderDisplayName)s changed the room name from %(oldRoomName)s to %(newRoomName)s.": "%(senderDisplayName)s ibeddel isem n texxamt seg %(oldRoomName)s ɣer %(newRoomName)s.", + "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s ibeddel isem n texxamt s %(roomName)s.", + "%(senderDisplayName)s made the room public to whoever knows the link.": "%(senderDisplayName)s yerra taxxamt d tazayazt i kra n win yessnen aseɣwen.", + "%(senderDisplayName)s changed the join rule to %(rule)s": "%(senderDisplayName)s ibeddel alugen n uttekki s %(rule)s", + "%(senderDisplayName)s has prevented guests from joining the room.": "%(senderDisplayName)s ur yeǧǧi ara i yimerza ad kecmen ɣer texxamt.", + "%(senderDisplayName)s changed guest access to %(rule)s": "%(senderDisplayName)s ibeddel anekcum n yimerza s %(rule)s", + "%(senderName)s set the main address for this room to %(address)s.": "%(senderName)s yesbadu tansa tagejdant i texxamt-a s %(address)s.", + "%(senderName)s added the alternative addresses %(addresses)s for this room.|one": "%(senderName)s yerna tansa-nniḍen %(addresses)s i texxamt-a.", + "%(senderName)s removed the alternative addresses %(addresses)s for this room.|other": "%(senderName)s yekkes tansa-nni-nniḍen %(addresses)s i texxamt-a.", + "%(senderName)s removed the alternative addresses %(addresses)s for this room.|one": "%(senderName)s yekkes tansa-nni tayeḍ %(addresses)s i texxamt-a.", + "%(senderName)s changed the alternative addresses for this room.": "%(senderName)s ibeddel tansa-nni tayeḍ n texxamt-a.", + "%(senderName)s changed the main and alternative addresses for this room.": "%(senderName)s ibeddel tansa tagejdant d tansa-nni tayeḍ i texxamt-a." } From 6c5a04c92f1538972d9c8ccd9002a3d7f6287220 Mon Sep 17 00:00:00 2001 From: Marcelo Filho Date: Fri, 7 Aug 2020 19:23:46 +0000 Subject: [PATCH 109/424] Translated using Weblate (Portuguese (Brazil)) Currently translated at 94.7% (2216 of 2341 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/pt_BR/ --- src/i18n/strings/pt_BR.json | 160 +++++++++++++++++++----------------- 1 file changed, 86 insertions(+), 74 deletions(-) diff --git a/src/i18n/strings/pt_BR.json b/src/i18n/strings/pt_BR.json index 5d4a727bd6..d8996b8306 100644 --- a/src/i18n/strings/pt_BR.json +++ b/src/i18n/strings/pt_BR.json @@ -6,7 +6,7 @@ "A new password must be entered.": "Uma nova senha precisa ser inserida.", "Anyone who knows the room's link, apart from guests": "Qualquer pessoa que tenha o link da sala, exceto visitantes", "Anyone who knows the room's link, including guests": "Qualquer pessoa que tenha o link da sala, incluindo visitantes", - "Are you sure you want to reject the invitation?": "Você tem certeza que deseja recusar este convite?", + "Are you sure you want to reject the invitation?": "Tem certeza de que deseja recusar o convite?", "Banned users": "Usuários bloqueados", "Bans user with given id": "Bloquear o usuário com o ID indicado", "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s alterou a descrição para \"%(topic)s\".", @@ -62,7 +62,7 @@ "Passwords can't be empty": "As senhas não podem estar em branco", "Permissions": "Permissões", "Phone": "Telefone", - "Please check your email and click on the link it contains. Once this is done, click continue.": "Por favor, verifique o seu e-mail e clique no link enviado. Quando finalizar esse processo, clique em continuar.", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Por favor, verifique o seu e-mail e clique no link enviado. Feito isso, clique em continuar.", "Privileged Users": "Usuárias/os privilegiadas/os", "Profile": "Perfil", "Reject invitation": "Recusar o convite", @@ -83,7 +83,7 @@ "The email address linked to your account must be entered.": "O e-mail vinculado à sua conta precisa ser informado.", "This doesn't appear to be a valid email address": "Este não aparenta ser um endereço de e-mail válido", "This room is not accessible by remote Matrix servers": "Esta sala não é acessível para servidores Matrix remotos", - "Unable to add email address": "Não foi possível adicionar endereço de e-mail", + "Unable to add email address": "Não foi possível adicionar um endereço de e-mail", "Unable to remove contact information": "Não foi possível remover informação de contato", "Unable to verify email address.": "Não foi possível verificar o endereço de e-mail.", "Unban": "Desbloquear", @@ -150,7 +150,7 @@ "Missing room_id in request": "Faltou o id da sala na requisição", "Missing user_id in request": "Faltou o id de usuário na requisição", "(not supported by this browser)": "(não é compatível com este navegador)", - "Power level must be positive integer.": "O nível de permissões tem que ser um número inteiro e positivo.", + "Power level must be positive integer.": "O nível de permissão precisa ser um número inteiro e positivo.", "Reason": "Razão", "%(targetName)s rejected the invitation.": "%(targetName)s recusou o convite.", "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s removeu o nome e sobrenome (%(oldDisplayName)s).", @@ -168,7 +168,7 @@ "The remote side failed to pick up": "A pessoa não atendeu a chamada", "This room is not recognised.": "Esta sala não é reconhecida.", "This phone number is already in use": "Este número de telefone já está sendo usado", - "To use it, just wait for autocomplete results to load and tab through them.": "Para usar esta funcionalidade, espere o carregamento dos resultados de autocompletar e então escolha entre as opções.", + "To use it, just wait for autocomplete results to load and tab through them.": "Para usar esta funcionalidade, aguarde o carregamento dos resultados de autocompletar e então escolha entre as opções.", "%(senderName)s unbanned %(targetName)s.": "%(senderName)s desbloqueou %(targetName)s.", "Unable to capture screen": "Não foi possível capturar a imagem da tela", "Unable to enable Notifications": "Não foi possível ativar as notificações", @@ -179,8 +179,8 @@ "You are already in a call.": "Você já está em uma chamada.", "You cannot place a call with yourself.": "Você não pode iniciar uma chamada consigo mesmo.", "You cannot place VoIP calls in this browser.": "Chamadas de voz não são suportadas neste navegador.", - "You need to be able to invite users to do that.": "Para fazer isso, você tem que ter permissão para convidar outras pessoas.", - "You need to be logged in.": "Você tem que estar logado.", + "You need to be able to invite users to do that.": "Para fazer isso, precisa ter permissão para convidar outras pessoas.", + "You need to be logged in.": "Você precisa estar logado.", "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "O seu endereço de e-mail não parece estar associado a uma conta de usuária/o Matrix neste servidor.", "Set a display name:": "Defina um nome e sobrenome:", "Upload an avatar:": "Enviar uma foto de perfil:", @@ -198,7 +198,7 @@ "Attachment": "Anexo", "Autoplay GIFs and videos": "Reproduzir GIFs e vídeos automaticamente", "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(day)s de %(monthName)s de %(fullYear)s às %(time)s", - "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Não consigo conectar ao servidor padrão através de HTTP quando uma URL HTTPS está na barra de endereços do seu navegador. Use HTTPS ou então ative scripts não seguros no seu navegador.", + "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Uma conexão com o servidor local via HTTP não pode ser estabelecida se a barra de endereços do navegador contiver um endereço HTTPS. Use HTTPS ou, em vez disso, permita ao navegador executar scripts não seguros.", "Change Password": "Alterar senha", "Click to mute audio": "Clique para colocar o áudio no mudo", "Click to mute video": "Clique para desativar o som do vídeo", @@ -312,7 +312,7 @@ "Results from DuckDuckGo": "Resultados de DuckDuckGo", "Verified key": "Chave verificada", "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s removeu a foto da sala.", - "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s alterou a imagem da sala %(roomName)s", + "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s alterou a foto da sala %(roomName)s", "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s alterou a foto da sala para ", "No Microphones detected": "Não foi detectado nenhum microfone", "No Webcams detected": "Não foi detectada nenhuma Webcam", @@ -327,11 +327,11 @@ "Custom level": "Nível personalizado", "Register": "Registre-se", "Save": "Salvar", - "You have disabled URL previews by default.": "Você desabilitou pré-visualizações de links por padrão.", + "You have disabled URL previews by default.": "Você desativou pré-visualizações de links por padrão.", "You have enabled URL previews by default.": "Você ativou pré-visualizações de links por padrão.", "Add": "Adicionar", "Error: Problem communicating with the given homeserver.": "Erro: problema de comunicação com o Servidor de Base fornecido.", - "Failed to fetch avatar URL": "Falha ao obter a URL da foto de perfil", + "Failed to fetch avatar URL": "Falha ao obter o link da foto de perfil", "Home": "Início", "The phone number entered looks invalid": "O número de telefone inserido parece ser inválido", "Uploading %(filename)s and %(count)s others|zero": "Enviando o arquivo %(filename)s", @@ -362,7 +362,7 @@ "Incoming voice call from %(name)s": "Recebendo chamada de voz de %(name)s", "Join as voice or video.": "Participar por voz ou por vídeo.", "Last seen": "Visto por último às", - "No display name": "Sem nome e sobrenome", + "No display name": "Nenhum nome e sobrenome", "Private Chat": "Conversa privada", "Public Chat": "Conversa pública", "%(roomName)s does not exist.": "%(roomName)s não existe.", @@ -405,7 +405,7 @@ "Your language of choice": "O idioma que você selecionou", "Which officially provided instance you are using, if any": "Qual instância oficial você está usando, se for o caso", "Whether or not you're using the Richtext mode of the Rich Text Editor": "Se você está usando o editor de texto visual", - "Your homeserver's URL": "A URL do seu Servidor de Base (homeserver)", + "Your homeserver's URL": "O endereço do seu servidor local", "The information being sent to us to help make %(brand)s better includes:": "As informações que estão sendo enviadas para ajudar a melhorar o %(brand)s incluem:", "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Quando esta página tem informação de identificação, como uma sala, ID de usuária/o ou de grupo, estes dados são removidos antes de serem enviados ao servidor.", "Call Failed": "A chamada falhou", @@ -432,7 +432,7 @@ "Mirror local video feed": "Espelhar o feed de vídeo local", "Enable inline URL previews by default": "Ativar, por padrão, a visualização de resumo de links", "Enable URL previews for this room (only affects you)": "Ativar, para esta sala, a visualização de links (só afeta você)", - "Enable URL previews by default for participants in this room": "Ativar, para todas/os as/os integrantes desta sala, a visualização de links", + "Enable URL previews by default for participants in this room": "Ativar, para todos os integrantes desta sala, a visualização de links", "Cannot add any more widgets": "Não é possível adicionar novos widgets", "The maximum permitted number of widgets have already been added to this room.": "O número máximo de widgets permitidos já foi atingido nesta sala.", "Add a widget": "Adicionar um widget", @@ -477,9 +477,9 @@ "Members only (since they joined)": "Apenas integrantes (desde que entraram na sala)", "Invalid community ID": "ID de comunidade inválido", "'%(groupId)s' is not a valid community ID": "'%(groupId)s' não é um ID de comunidade válido", - "Flair": "Insígnia", - "Showing flair for these communities:": "Esta sala mostrará insígnias para as seguintes comunidades:", - "This room is not showing flair for any communities": "Esta sala não está mostrando insígnias para nenhuma comunidade", + "Flair": "Ícone", + "Showing flair for these communities:": "Esta sala mostra ícones das seguintes comunidades:", + "This room is not showing flair for any communities": "Esta sala não mostra ícones de alguma comunidade", "New community ID (e.g. +foo:%(localDomain)s)": "Novo ID de comunidade (p.ex: +foo:%(localDomain)s)", "URL previews are enabled by default for participants in this room.": "Pré-visualizações de links estão ativadas por padrão para participantes desta sala.", "URL previews are disabled by default for participants in this room.": "Pré-visualizações de links estão desativadas por padrão para participantes desta sala.", @@ -503,7 +503,7 @@ "Only visible to community members": "Apenas visível para integrantes da comunidade", "Filter community rooms": "Filtrar salas da comunidade", "Something went wrong when trying to get your communities.": "Não foi possível carregar suas comunidades.", - "Display your community flair in rooms configured to show it.": "Mostrar a insígnia de sua comunidade em salas configuradas para isso.", + "Display your community flair in rooms configured to show it.": "Mostrar o ícone da sua comunidade nas salas que o permitem.", "You're not currently a member of any communities.": "Atualmente você não é integrante de nenhuma comunidade.", "Allow": "Permitir", "Delete Widget": "Apagar widget", @@ -678,7 +678,7 @@ "You have successfully set a password!": "Você definiu sua senha com sucesso!", "An error occurred whilst saving your email notification preferences.": "Um erro ocorreu enquanto o sistema estava salvando suas preferências de notificação por e-mail.", "Explore Room State": "Explorar Estado da Sala", - "Source URL": "URL do código-fonte", + "Source URL": "Link do código-fonte", "Messages sent by bot": "Mensagens enviadas por bots", "Filter results": "Filtrar resultados", "Members": "Membros", @@ -707,7 +707,7 @@ "Reject": "Recusar", "Failed to set Direct Message status of room": "Falha em definir a mensagem de status da sala", "Monday": "Segunda-feira", - "All messages (noisy)": "Todas as mensagens (alto)", + "All messages (noisy)": "Todas as mensagens (com som)", "Enable them now": "Ativá-los agora", "Toolbox": "Ferramentas", "Collecting logs": "Coletando logs", @@ -761,7 +761,7 @@ "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Com o seu navegador atual, a aparência e sensação de uso da aplicação podem estar completamente incorretas, e algumas das funcionalidades poderão não funcionar. Se você quiser tentar de qualquer maneira, pode continuar, mas aí vai ter que se virar sozinho(a) com os problemas que porventura encontrar!", "Checking for an update...": "Verificando se há atualizações...", "Every page you use in the app": "Toda a página que você usa no aplicativo", - "e.g. ": "ex. ", + "e.g. ": "por exemplo: ", "Your device resolution": "A resolução do seu aparelho", "Call in Progress": "Chamada em andamento", "A call is currently being placed!": "Uma chamada já está em andamento!", @@ -777,7 +777,7 @@ "%(senderName)s set the main address for this room to %(address)s.": "%(senderName)s definiu o endereço principal desta sala como %(address)s.", "%(senderName)s removed the main address for this room.": "%(senderName)s removeu o endereço principal desta sala.", "This homeserver has hit its Monthly Active User limit.": "Este homeserver atingiu seu limite de usuário ativo mensal.", - "This homeserver has exceeded one of its resource limits.": "Este homeserver ultrapassou um dos seus limites de recursos.", + "This homeserver has exceeded one of its resource limits.": "Este servidor local ultrapassou um dos seus limites de recursos.", "Please contact your service administrator to continue using the service.": "Por favor, entre em contato com o seu administrador de serviços para continuar usando o serviço.", "Unable to connect to Homeserver. Retrying...": "Não é possível conectar-se ao Homeserver. Tentando novamente ...", "You do not have permission to invite people to this room.": "Você não tem permissão para convidar pessoas para esta sala.", @@ -814,7 +814,7 @@ "Please contact your homeserver administrator.": "Por favor, entre em contato com o administrador do seu homeserver.", "Custom user status messages": "Mensagens de status de usuário personalizadas", "Always show encryption icons": "Mostrar sempre ícones de criptografia", - "Show a reminder to enable Secure Message Recovery in encrypted rooms": "Mostrar um lembrete para ativar o Secure Message Recovery em salas criptografadas", + "Show a reminder to enable Secure Message Recovery in encrypted rooms": "Mostrar um lembrete para ativar a recuperação de mensagens seguras em salas criptografadas", "Send analytics data": "Enviar dados analíticos", "Enable widget screenshots on supported widgets": "Ativar capturas de tela do widget em widgets suportados", "Show developer tools": "Mostrar ferramentas de desenvolvedor", @@ -845,8 +845,8 @@ "Stickerpack": "Pacote de figurinhas", "Hide Stickers": "Esconder figurinhas", "Show Stickers": "Enviar figurinhas", - "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "Em salas criptografadas, como esta, as visualizações de URL são desabilitadas por padrão para garantir que o seu homeserver (onde as visualizações são geradas) não possa coletar informações sobre os links que você vê nesta sala.", - "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "Quando alguém coloca um URL em uma mensagem, a pré-visualização do URL pode ser exibida para fornecer mais informações sobre esse link, como o título, a descrição e uma imagem do site.", + "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "Em salas criptografadas, como esta, as pré-visualizações de links estão desativadas por padrão para garantir que o seu servidor local (onde as visualizações são geradas) não possa coletar informações sobre os links que você vê nesta sala.", + "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "Quando alguém inclui um link em uma mensagem, a pré-visualização do link pode ser exibida para fornecer mais informações sobre esse link, como o título, a descrição e uma imagem do site.", "This room is a continuation of another conversation.": "Esta sala é uma continuação de outra conversa.", "Click here to see older messages.": "Clique aqui para ver as mensagens mais antigas.", "Please review and accept all of the homeserver's policies": "Por favor, revise e aceite todas as políticas do homeserver", @@ -872,12 +872,12 @@ "Continue With Encryption Disabled": "Continuar com criptografia desativada", "This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. This action is irreversible.": "Isso tornará sua conta permanentemente inutilizável. Você não poderá efetuar login e ninguém poderá registrar novamente o mesmo ID de usuário. Isso fará com que sua conta deixe todas as salas nas quais está participando e removerá os detalhes da sua conta do seu servidor de identidade. Esta ação é irreversível.", "Deactivating your account does not by default cause us to forget messages you have sent. If you would like us to forget your messages, please tick the box below.": "Desativar sua conta não faz com que, por padrão, esqueçamos as mensagens que você enviou. Se você quiser que esqueçamos suas mensagens, marque a caixa abaixo.", - "Message visibility in Matrix is similar to email. Our forgetting your messages means that messages you have sent will not be shared with any new or unregistered users, but registered users who already have access to these messages will still have access to their copy.": "A visibilidade da mensagem no Matrix é semelhante ao e-mail. O fato de esquecermos suas mensagens significa que as mensagens que você enviou não serão compartilhadas com usuários novos ou não registrados, mas os usuários registrados que já têm acesso a essas mensagens ainda terão acesso para as cópias deles.", - "Please forget all messages I have sent when my account is deactivated (Warning: this will cause future users to see an incomplete view of conversations)": "Por favor, esqueça todas as mensagens que enviei quando minha conta for desativada (Alerta: isso fará com que futuros usuários vejam uma visão incompleta das conversas)", + "Message visibility in Matrix is similar to email. Our forgetting your messages means that messages you have sent will not be shared with any new or unregistered users, but registered users who already have access to these messages will still have access to their copy.": "A visibilidade das mensagens no Matrix é semelhante ao e-mail. O fato de esquecermos suas mensagens significa que as mensagens que você enviou não serão compartilhadas com usuários novos ou não registrados, mas os usuários registrados que já têm acesso a essas mensagens ainda terão acesso à cópia delas.", + "Please forget all messages I have sent when my account is deactivated (Warning: this will cause future users to see an incomplete view of conversations)": "Quando minha conta for desativada, exclua todas as mensagens que eu enviei (Atenção: isso fará com que futuros usuários tenham uma visão incompleta das conversas)", "To continue, please enter your password:": "Para continuar, por favor digite sua senha:", "Incompatible local cache": "Cache local incompatível", "Clear cache and resync": "Limpar cache e ressincronizar", - "%(brand)s now uses 3-5x less memory, by only loading information about other users when needed. Please wait whilst we resynchronise with the server!": "%(brand)s agora usa 3-5x menos memória, pois carrega informação sobre outros usuários apenas quando necessário. Por favor, aguarde enquanto ressincronizamos com o servidor!", + "%(brand)s now uses 3-5x less memory, by only loading information about other users when needed. Please wait whilst we resynchronise with the server!": "%(brand)s agora usa 3-5x menos memória, pois carrega informação sobre outros usuários apenas quando for necessário. Por favor, aguarde enquanto ressincronizamos com o servidor!", "Updating %(brand)s": "Atualizando %(brand)s", "Failed to upgrade room": "Falha ao atualizar a sala", "The room upgrade could not be completed": "A atualização da sala não pode ser completada", @@ -932,7 +932,7 @@ "Review terms and conditions": "Revise os termos e condições", "You can't send any messages until you review and agree to our terms and conditions.": "Você não pode enviar nenhuma mensagem até revisar e concordar com nossos termos e condições.", "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Sua mensagem não foi enviada porque este homeserver atingiu seu Limite de usuário ativo mensal. Por favor, entre em contato com o seu administrador de serviços para continuar usando o serviço.", - "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.": "Sua mensagem não foi enviada porque este homeserver excedeu o limite de recursos. Por favor, entre em contato com o seu administrador de serviços para continuar usando o serviço.", + "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.": "Sua mensagem não foi enviada porque este servidor local excedeu o limite de recursos. Por favor, entre em contato com o seu administrador de serviços para continuar usando o serviço.", "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Se você enviou um bug por meio do GitHub, os logs de depuração podem nos ajudar a rastrear o problema. Os logs de depuração contêm dados de uso do aplicativo, incluindo seu nome de usuário, os IDs ou apelidos das salas ou grupos que você visitou e os nomes de usuários de outros usuários. Eles não contêm mensagens.", "Legal": "Legal", "No Audio Outputs detected": "Nenhuma saída de áudio detectada", @@ -986,9 +986,9 @@ "%(senderDisplayName)s has allowed guests to join the room.": "%(senderDisplayName)s permitiu que os convidados entrem na sala.", "%(senderDisplayName)s has prevented guests from joining the room.": "%(senderDisplayName)s impediu que os convidados entrassem na sala.", "%(senderDisplayName)s changed guest access to %(rule)s": "%(senderDisplayName)s alterou a permissão de acesso de convidados para %(rule)s", - "%(senderDisplayName)s enabled flair for %(groups)s in this room.": "%(senderDisplayName)s ativou insígnias para %(groups)s nesta sala.", - "%(senderDisplayName)s disabled flair for %(groups)s in this room.": "%(senderDisplayName)s desativou insígnias para %(groups)s nesta sala.", - "%(senderDisplayName)s enabled flair for %(newGroups)s and disabled flair for %(oldGroups)s in this room.": "%(senderDisplayName)s ativou insígnias para %(newGroups)s e desativou insígnias para %(oldGroups)s nesta sala.", + "%(senderDisplayName)s enabled flair for %(groups)s in this room.": "%(senderDisplayName)s ativou o ícone de %(groups)s nesta sala.", + "%(senderDisplayName)s disabled flair for %(groups)s in this room.": "%(senderDisplayName)s desativou o ícone de %(groups)s nesta sala.", + "%(senderDisplayName)s enabled flair for %(newGroups)s and disabled flair for %(oldGroups)s in this room.": "%(senderDisplayName)s ativou o ícone de %(newGroups)s e desativou o ícone de %(oldGroups)s nesta sala.", "%(displayName)s is typing …": "%(displayName)s está digitando…", "%(names)s and %(count)s others are typing …|other": "%(names)s e %(count)s outras pessoas estão digitando…", "%(names)s and %(count)s others are typing …|one": "%(names)s e outro está digitando …", @@ -997,7 +997,7 @@ "Show avatars in user and room mentions": "Mostrar fotos de perfil em menções de usuários e de salas", "Enable big emoji in chat": "Ativar emojis grandes no bate-papo", "Send typing notifications": "Enviar notificações de digitação", - "Enable Community Filter Panel": "Ativar painel de filtro da comunidade", + "Enable Community Filter Panel": "Ativar o painel de comunidades", "Allow Peer-to-Peer for 1:1 calls": "Permitir Peer-to-Peer para chamadas 1:1", "Messages containing my username": "Mensagens contendo meu nome de usuário", "The other party cancelled the verification.": "Seu contato cancelou a verificação.", @@ -1147,7 +1147,7 @@ "Confirm adding phone number": "Confirmar adição de número de telefone", "Add Phone Number": "Adicionar número de telefone", "Whether you're using %(brand)s on a device where touch is the primary input mechanism": "Se estiver usando %(brand)s em um aparelho onde touch é o mecanismo primário de entrada de dados", - "Whether or not you're using the 'breadcrumbs' feature (avatars above the room list)": "Se você está usando ou não a funcionalidade 'breadcrumbs' (fotos acima da lista de salas)", + "Whether or not you're using the 'breadcrumbs' feature (avatars above the room list)": "Se você está usando ou não o recurso 'breadcrumbs' (fotos acima da lista de salas)", "Whether you're using %(brand)s as an installed Progressive Web App": "Se estiver usando %(brand)s como uma Progressive Web App (PWA)", "Your user agent": "Seu agente de usuária(o)", "Call failed due to misconfigured server": "A chamada falhou por conta de má configuração no servidor", @@ -1186,7 +1186,7 @@ "You do not have the required permissions to use this command.": "Você não tem as permissões necessárias para usar este comando.", "Error upgrading room": "Erro atualizando a sala", "Double check that your server supports the room version chosen and try again.": "Verifique mais uma ver se seu servidor suporta a versão de sala escolhida e tente novamente.", - "Changes the avatar of the current room": "Altera a imagem da sala atual", + "Changes the avatar of the current room": "Altera a foto da sala atual", "Changes your avatar in this current room only": "Altera a sua foto de perfil apenas nesta sala", "Changes your avatar in all rooms": "Altera a sua foto de perfil em todas as salas", "Failed to set topic": "Não foi possível definir a descrição", @@ -1197,9 +1197,9 @@ "Unbans user with given ID": "Desbloquear o usuário com o ID indicado", "Command failed": "O comando falhou", "Could not find user in room": "Não encontrei este(a) usuário(a) na sala", - "Adds a custom widget by URL to the room": "Adiciona um widget personalizado por URL na sala", - "Please supply a widget URL or embed code": "Por favor, forneça uma URL de widget ou código de integração", - "Please supply a https:// or http:// widget URL": "Por favor, forneça uma URL de widget com https:// ou http://", + "Adds a custom widget by URL to the room": "Adiciona um widget personalizado na sala por meio de um link", + "Please supply a widget URL or embed code": "Forneça o link de um widget ou de um código de incorporação", + "Please supply a https:// or http:// widget URL": "Forneça o link de um widget com https:// ou http://", "You cannot modify widgets in this room.": "Você não pode modificar widgets nesta sala.", "Verifies a user, session, and pubkey tuple": "Verifica um(a) usuário(a), e a tupla de chave pública", "Unknown (user, session) pair:": "Par (usuária(o), sessão) desconhecido:", @@ -1240,7 +1240,7 @@ "%(senderName)s created a rule banning users matching %(glob)s for %(reason)s": "%(senderName)s criou uma regra que bloqueia usuários que correspondem a %(glob)s devido à %(reason)s", "%(senderName)s created a rule banning rooms matching %(glob)s for %(reason)s": "%(senderName)s criou uma regra que bloqueia salas que correspondem a %(glob)s devido à %(reason)s", "%(senderName)s created a rule banning servers matching %(glob)s for %(reason)s": "%(senderName)s criou uma regra que bloqueia servidores que correspondem a %(glob)s devido à %(reason)s", - "%(senderName)s created a ban rule matching %(glob)s for %(reason)s": "%(senderName)s criou uma regra de que bloqueio correspondendo a %(glob)s devido à %(reason)s", + "%(senderName)s created a ban rule matching %(glob)s for %(reason)s": "%(senderName)s criou uma regra de bloqueio correspondendo a %(glob)s devido à %(reason)s", "%(senderName)s changed a rule that was banning users matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s alterou uma regra que bloqueava usuários que correspondiam a %(oldGlob)s para corresponder a %(newGlob)s devido à %(reason)s", "%(senderName)s changed a rule that was banning rooms matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s alterou uma regra que bloqueava salas que correspondiam a %(oldGlob)s para corresponder a %(newGlob)s devido à %(reason)s", "%(senderName)s changed a rule that was banning servers matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s alterou uma regra que bloqueava servidores que correspondiam a %(oldGlob)s para corresponder a %(newGlob)s devido à %(reason)s", @@ -1263,7 +1263,7 @@ "You can register, but some features will be unavailable until the identity server is back online. If you keep seeing this warning, check your configuration or contact a server admin.": "Você pode se registrar, mas algumas funcionalidades não estarão disponíveis até que o servidor de identidade esteja de volta online. Se você continuar vendo este alerta, verifique sua configuração ou entre em contato com um dos administradores do servidor.", "You can reset your password, but some features will be unavailable until the identity server is back online. If you keep seeing this warning, check your configuration or contact a server admin.": "Você pode trocar sua senha, mas algumas das funcionalidades não estarão mais disponíveis até que o servidor de identidade esteja de volta ao ar. Se você seguir vendo este alerta, verifique suas configurações ou entre em contato com um dos administradores do servidor.", "You can log in, but some features will be unavailable until the identity server is back online. If you keep seeing this warning, check your configuration or contact a server admin.": "Você pode fazer login, mas algumas funcionalidades estarão indisponíveis até que o servidor de identidade estiver de volta. Se você continuar vendo este alerta, verifique suas configurações ou entre em contato com os administradores do servidor.", - "No homeserver URL provided": "Nenhuma URL de provedor fornecida", + "No homeserver URL provided": "Nenhum endereço fornecido do servidor local", "Unexpected error resolving homeserver configuration": "Erro inesperado buscando a configuração do servidor", "Unexpected error resolving identity server configuration": "Erro inesperado buscando a configuração do servidor de identidade", "The message you are trying to send is too large.": "A mensagem que você está tentando enviar é muito grande.", @@ -1291,7 +1291,7 @@ "Review": "Revisar", "Later": "Mais tarde", "Your homeserver has exceeded its user limit.": "Seu servidor ultrapassou seu limite de usuárias(os).", - "Your homeserver has exceeded one of its resource limits.": "Seu servidor excedeu um de seus limites de recursos.", + "Your homeserver has exceeded one of its resource limits.": "Seu servidor local excedeu um de seus limites de recursos.", "Contact your server admin.": "Entre em contato com sua(seu) administrador(a) do servidor.", "Ok": "Ok", "Set password": "Definir senha", @@ -1354,7 +1354,7 @@ "When rooms are upgraded": "Quando salas são atualizadas", "My Ban List": "Minha lista de bloqueados", "This is your list of users/servers you have blocked - don't leave the room!": "Esta é a sua lista de usuárias(os)/servidores que você bloqueou - não saia da sala!", - "Unknown caller": "Pessoa desconhecida chamando", + "Unknown caller": "Pessoa desconhecida ligando", "Incoming voice call": "Recebendo chamada de voz", "Incoming video call": "Recebendo chamada de vídeo", "Incoming call": "Recebendo chamada", @@ -1385,18 +1385,18 @@ "Show less": "Mostrar menos", "Show more": "Mostrar mais", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Ao mudar a senha, você apagará todas as chaves de criptografia de ponta a ponta existentes em todas as sessões, fazendo com que o histórico de conversas criptografadas fique ilegível, a não ser que você exporte as salas das chaves criptografadas antes de mudar a senha e então as importe novamente depois. No futuro, isso será melhorado.", - "Your homeserver does not support cross-signing.": "Seu servidor não suporta assinatura cruzada.", - "Cross-signing and secret storage are enabled.": "Assinaturas cruzadas e armazenamento secreto estão ativados.", - "Your account has a cross-signing identity in secret storage, but it is not yet trusted by this session.": "Sua conta tem uma identidade de assinatura cruzada em um armazenamento secreto, mas ainda não é considerada confiável por esta sessão.", - "Cross-signing and secret storage are not yet set up.": "A assinatura cruzada e o armazenamento seguro ainda não foram configurados.", - "Reset cross-signing and secret storage": "Reinicializar a assinatura cruzada e o armazenamento secreto", - "Bootstrap cross-signing and secret storage": "Inicializar a assinatura cruzada e o armazenamento secreto", + "Your homeserver does not support cross-signing.": "Seu servidor não suporta a autoverificação.", + "Cross-signing and secret storage are enabled.": "A autoverificação e o armazenamento secreto estão ativados.", + "Your account has a cross-signing identity in secret storage, but it is not yet trusted by this session.": "Sua conta tem uma identidade autoverificada em armazenamento secreto, mas ainda não é considerada confiável por esta sessão.", + "Cross-signing and secret storage are not yet set up.": "A autoverificação e o armazenamento seguro ainda não foram configurados.", + "Reset cross-signing and secret storage": "Refazer a autoverificação e o armazenamento secreto", + "Bootstrap cross-signing and secret storage": "Fazer a autoverificação e o armazenamento secreto", "well formed": "bem formado", "unexpected type": "tipo inesperado", - "Cross-signing public keys:": "Chaves públicas de assinatura cruzada:", + "Cross-signing public keys:": "Chaves públicas de autoverificação:", "in memory": "na memória", "not found": "não encontradas", - "Cross-signing private keys:": "Chaves privadas de assinatura cruzada:", + "Cross-signing private keys:": "Chaves privadas de autoverificação:", "in secret storage": "em armazenamento secreto", "Self signing private key:": "Chave privada auto-assinada:", "cached locally": "armazenado localmente", @@ -1420,15 +1420,15 @@ "Delete %(count)s sessions|one": "Apagar %(count)s sessão", "ID": "ID", "Public Name": "Nome público", - "Individually verify each session used by a user to mark it as trusted, not trusting cross-signed devices.": "Verificar individualmente cada sessão usada por um(a) usuário(a) para marcá-la como confiável, sem confiar em aparelhos assinados com assinatura cruzada.", - "Securely cache encrypted messages locally for them to appear in search results, using ": "Armazene mensagens criptografadas localmente para que elas apareçam nas buscas, usando ", + "Individually verify each session used by a user to mark it as trusted, not trusting cross-signed devices.": "Verificar individualmente cada sessão usada por um usuário para marcá-la como confiável, em vez de confiar em aparelhos autoverificados.", + "Securely cache encrypted messages locally for them to appear in search results, using ": "Armazene mensagens criptografadas localmente para que elas apareçam nas buscas, usando· ", " to store messages from ": " para armazenar mensagens de ", "rooms.": "salas.", "Manage": "Gerenciar", "Securely cache encrypted messages locally for them to appear in search results.": "Armazene mensagens criptografadas de forma segura localmente para que possam aparecer nos resultados das buscas.", "Enable": "Ativar", "%(brand)s is missing some components required for securely caching encrypted messages locally. If you'd like to experiment with this feature, build a custom %(brand)s Desktop with search components added.": "%(brand)s não está com alguns dos componentes necessários para armazenar com segurança mensagens criptografadas localmente. Se você quer fazer testes com esta funcionalidade, construa uma versão Desktop do %(brand)s com componentes de busca ativos.", - "%(brand)s can't securely cache encrypted messages locally while running in a web browser. Use %(brand)s Desktop for encrypted messages to appear in search results.": "%(brand)s não consegue armazenar de forma segura as mensagens criptografadas localmente enquando funciona em um navegador web. Use %(brand)s Desktop para que mensagens criptografadas sejam exibidas nos resultados de buscas.", + "%(brand)s can't securely cache encrypted messages locally while running in a web browser. Use %(brand)s Desktop for encrypted messages to appear in search results.": "%(brand)s não consegue armazenar de forma segura as mensagens criptografadas localmente enquanto funciona em um navegador web. Use %(brand)s Desktop para que mensagens criptografadas sejam exibidas nos resultados de buscas.", "Connecting to integration manager...": "Conectando ao gestor de integrações...", "Cannot connect to integration manager": "Não foi possível conectar ao gerenciador de integrações", "The integration manager is offline or it cannot reach your homeserver.": "Ou o gerenciador de integrações está desconectado, ou ele não conseguiu acessar o seu servidor.", @@ -1451,7 +1451,7 @@ "This backup is trusted because it has been restored on this session": "Esta cópia de segurança (backup) é confiável, pois foi restaurada nesta sessão", "Backup key stored: ": "Chave de segurança (backup) armazenada: ", "Your keys are not being backed up from this session.": "Suas chaves não estão sendo copiadas desta sessão.", - "wait and try again later": "espere e tente novamente mais tarde", + "wait and try again later": "aguarde e tente novamente mais tarde", "Please verify the room ID or address and try again.": "Por favor, verifique o ID ou endereço da sala e tente novamente.", "Ignoring people is done through ban lists which contain rules for who to ban. Subscribing to a ban list means the users/servers blocked by that list will be hidden from you.": "É possível silenciar pessoas através de listas de bloqueio que contêm regras sobre quem bloquear. Colocar alguém na lista de bloqueio significa que as pessoas ou servidores bloqueados pela lista não serão visualizados por você.", "Session key:": "Chave da sessão:", @@ -1460,9 +1460,9 @@ "A session's public name is visible to people you communicate with": "O nome público de uma sessão é visível para as pessoas com quem você se comunica", "Enable room encryption": "Ativar criptografia nesta sala", "Enable encryption?": "Ativar criptografia?", - "Once enabled, encryption for a room cannot be disabled. Messages sent in an encrypted room cannot be seen by the server, only by the participants of the room. Enabling encryption may prevent many bots and bridges from working correctly. Learn more about encryption.": "Uma vez ativada, a criptografia da sala não poderá ser desabilitada. Mensagens enviadas em uma sala criptografada não podem ser vistas pelo servidor, apenas pelas/os participantes da sala. Ativar a criptografia poderá impedir que vários bots e bridges funcionem corretamente. Saiba mais sobre criptografia.", + "Once enabled, encryption for a room cannot be disabled. Messages sent in an encrypted room cannot be seen by the server, only by the participants of the room. Enabling encryption may prevent many bots and bridges from working correctly. Learn more about encryption.": "Uma vez ativada, a criptografia da sala não poderá ser desativada. Mensagens enviadas em uma sala criptografada não podem ser vistas pelo servidor, apenas pelos participantes da sala. Ativar a criptografia poderá impedir que vários bots e bridges funcionem corretamente. Saiba mais sobre criptografia.", "Encryption": "Criptografia", - "Once enabled, encryption cannot be disabled.": "Uma vez ativada, a criptografia não poderá ser desabilitada.", + "Once enabled, encryption cannot be disabled.": "Uma vez ativada, a criptografia não poderá ser desativada.", "Encrypted": "Criptografada", "Click the link in the email you received to verify and then click continue again.": "Clique no link no e-mail que você recebeu para verificar e então clique novamente em continuar.", "Verify the link in your inbox": "Verifique o link na sua caixa de e-mails", @@ -1514,7 +1514,7 @@ "Please tell us what went wrong or, better, create a GitHub issue that describes the problem.": "Por favor, diga-nos o que aconteceu de errado ou, ainda melhor, crie um bilhete de erro no GitHub que descreva o problema.", "Clearing all data from this session is permanent. Encrypted messages will be lost unless their keys have been backed up.": "Apagar todos os dados desta sessão é uma ação permanente. Mensagens criptografadas serão perdidas, a não ser que as chaves delas tenham sido copiadas para o backup.", "Set a room address to easily share your room with other people.": "Defina um endereço de sala para facilmente compartilhar sua sala com outras pessoas.", - "You can’t disable this later. Bridges & most bots won’t work yet.": "Você não poderá desabilitar depois. Pontes e a maioria dos bots não funcionarão no momento.", + "You can’t disable this later. Bridges & most bots won’t work yet.": "Você não poderá desativar isso mais tarde. Pontes e a maioria dos bots não funcionarão.", "Enable end-to-end encryption": "Ativar a criptografia de ponta a ponta", "Create a public room": "Criar uma sala pública", "Create a private room": "Criar uma sala privada", @@ -1525,7 +1525,7 @@ "We couldn't create your DM. Please check the users you want to invite and try again.": "Não conseguimos criar sua mensagem direta. Por favor, verifique as(os) usuárias(os) que você quer convidar e tente novamente.", "Start a conversation with someone using their name, username (like ) or email address.": "Comece uma conversa com alguém usando o seu respectivo nome e sobrenome, nome de usuário (por exemplo: ) ou endereço de e-mail.", "a new master key signature": "uma nova chave mestra de assinatura", - "a new cross-signing key signature": "uma nova chave de assinatura cruzada", + "a new cross-signing key signature": "uma nova chave de autoverificação", "a key signature": "uma assinatura de chave", "I don't want my encrypted messages": "Não quero minhas mensagens criptografadas", "You'll lose access to your encrypted messages": "Você perderá acesso às suas mensagens criptografadas", @@ -1543,7 +1543,7 @@ "Some session data, including encrypted message keys, is missing. Sign out and sign in to fix this, restoring keys from backup.": "Alguns dados de sessão, incluindo chaves de mensagens criptografadas, estão faltando. Faça logout e entre novamente para resolver isso, restaurando as chaves do backup.", "Verify other session": "Verificar outra sessão", "A widget would like to verify your identity": "Um Widget quer verificar sua identidade", - "A widget located at %(widgetUrl)s would like to verify your identity. By allowing this, the widget will be able to verify your user ID, but not perform actions as you.": "Um widget localizado em %(widgetUrl)s deseja verificar sua identidade. Permitindo isso, o widget poderá verificar seu ID de usuária(o), mas não poderá fazer permissões passando-se por você.", + "A widget located at %(widgetUrl)s would like to verify your identity. By allowing this, the widget will be able to verify your user ID, but not perform actions as you.": "Um widget localizado em %(widgetUrl)s deseja verificar sua identidade. Permitindo isso, o widget poderá verificar sua ID de usuário, mas não poderá realizar nenhuma ação em seu nome.", "Wrong Recovery Key": "Chave de recuperação errada", "Invalid Recovery Key": "Chave de recuperação inválida", "Unable to access secret storage. Please verify that you entered the correct recovery passphrase.": "Não foi possível acessar o armazenamento secreto. Por favor, verifique que você entrou com a frase de recuperação correta.", @@ -1607,7 +1607,7 @@ "This session is encrypting history using the new recovery method.": "Esta sessão está criptografando o histórico de mensagens usando o novo método de restauração.", "This session has detected that your recovery passphrase and key for Secure Messages have been removed.": "Esta sessão detectou que sua frase e chave de recuperação para Mensagens Seguras foram removidas.", "If you did this accidentally, you can setup Secure Messages on this session which will re-encrypt this session's message history with a new recovery method.": "Se você fez isso acidentalmente, você pode configurar Mensagens Seguras nesta sessão, o que vai re-criptografar o histórico de mensagens desta sessão com um novo método de recuperação.", - "If disabled, messages from encrypted rooms won't appear in search results.": "Se desabilitado, as mensagens de salas criptografadas não aparecerão em resultados de buscas.", + "If disabled, messages from encrypted rooms won't appear in search results.": "Se desativado, as mensagens de salas criptografadas não aparecerão em resultados de buscas.", "%(brand)s is securely caching encrypted messages locally for them to appear in search results:": "%(brand)s está armazenando de forma segura as mensagens criptografadas localmente, para que possam aparecer em resultados das buscas:", "%(doneRooms)s out of %(totalRooms)s": "%(doneRooms)s de %(totalRooms)s", "Jump to start/end of the composer": "Pule para o início/fim do compositor", @@ -1726,9 +1726,9 @@ "Local Addresses": "Endereços locais", "%(name)s cancelled verifying": "%(name)s cancelou a verificação", "Your display name": "Seu nome e sobrenome", - "Your avatar URL": "A URL da sua foto de perfil", + "Your avatar URL": "Link da sua foto de perfil", "Your user ID": "Sua ID de usuário", - "%(brand)s URL": "URL de %(brand)s", + "%(brand)s URL": "Link de %(brand)s", "Using this widget may share data with %(widgetDomain)s & your Integration Manager.": "Se você usar esse widget, os dados poderão ser compartilhados com %(widgetDomain)s & seu Gerenciador de Integrações.", "Using this widget may share data with %(widgetDomain)s.": "Se você usar esse widget, os dados poderão ser compartilhados com %(widgetDomain)s.", "%(severalUsers)smade no changes %(count)s times|other": "%(severalUsers)s não fizeram alterações %(count)s vezes", @@ -1770,7 +1770,7 @@ "You might have configured them in a client other than %(brand)s. You cannot tune them in %(brand)s but they still apply.": "Você pode ter configurado estas opções em um cliente que não seja %(brand)s. Você não pode ajustar essas opções no %(brand)s, mas elas ainda se aplicam.", "Enable audible notifications for this session": "Ativar o som de notificações nesta sessão", "Display Name": "Nome e sobrenome", - "Identity Server URL must be HTTPS": "O URL do Servidor de Identidade deve ser HTTPS", + "Identity Server URL must be HTTPS": "O link do servidor de identidade deve começar com HTTPS", "Not a valid Identity Server (status code %(code)s)": "Servidor de Identidade inválido (código de status %(code)s)", "Could not connect to Identity Server": "Não foi possível conectar-se ao Servidor de Identidade", "Checking server": "Verificando servidor", @@ -1808,7 +1808,7 @@ "Invalid theme schema.": "Esquema inválido de tema.", "Error downloading theme information.": "Erro ao baixar as informações do tema.", "Theme added!": "Tema adicionado!", - "Custom theme URL": "URL do tema personalizado", + "Custom theme URL": "Link do tema personalizado", "Add theme": "Adicionar tema", "Message layout": "Aparência da mensagem", "Compact": "Compacto", @@ -1817,7 +1817,7 @@ "Customise your appearance": "Personalize sua aparência", "Appearance Settings only affect this %(brand)s session.": "As Configurações de aparência afetam apenas esta sessão do %(brand)s.", "Your password was successfully changed. You will not receive push notifications on other sessions until you log back in to them": "Sua senha foi alterada com sucesso. Você não receberá notificações pop-up em outras sessões até fazer login novamente nelas", - "Agree to the identity server (%(serverName)s) Terms of Service to allow yourself to be discoverable by email address or phone number.": "Concordar com os Termos de Serviço do servidor de identidade (%(serverName)s), para permitir aos seus contatos encontrarem-na(no) por endereço de e-mail ou por número de celular.", + "Agree to the identity server (%(serverName)s) Terms of Service to allow yourself to be discoverable by email address or phone number.": "Concorde com os Termos de Serviço do servidor de identidade (%(serverName)s), para que você possa ser descoberto por endereço de e-mail ou por número de celular.", "Discovery": "Contatos", "Deactivate account": "Desativar minha conta", "Clear cache and reload": "Limpar cache e recarregar", @@ -1860,7 +1860,7 @@ " wants to chat": " quer conversar", "Do you want to join %(roomName)s?": "Deseja se juntar a %(roomName)s?", " invited you": " convidou você", - "Reject & Ignore user": "Bloquear e silenciar usuário", + "Reject & Ignore user": "Recusar e silenciar usuário", "You're previewing %(roomName)s. Want to join it?": "Você está visualizando %(roomName)s. Deseja participar?", "%(roomName)s can't be previewed. Do you want to join it?": "%(roomName)s não pode ser visualizado. Deseja participar?", "This room doesn't exist. Are you sure you're at the right place?": "Esta sala não existe. Tem certeza de que você está no lugar certo?", @@ -2031,7 +2031,7 @@ "You verified %(name)s": "Você verificou %(name)s", "Use an identity server to invite by email. Use the default (%(defaultIdentityServerName)s) or manage in Settings.": "Use um servidor de identidade para convidar por e-mail. Use o padrão (%(defaultIdentityServerName)s) ou um servidor personalizado em Configurações.", "Use an identity server to invite by email. Manage in Settings.": "Use um servidor de identidade para convidar por e-mail. Gerencie o servidor em Configurações.", - "Destroy cross-signing keys?": "Destruir chaves de assinatura cruzada?", + "Destroy cross-signing keys?": "Destruir chaves autoverificadas?", "Waiting for partner to confirm...": "Aguardando seu contato confirmar...", "Enable 'Manage Integrations' in Settings to do this.": "Para fazer isso, ative 'Gerenciar Integrações' nas Configurações.", "Your %(brand)s doesn't allow you to use an Integration Manager to do this. Please contact an admin.": "Seu %(brand)s não permite que você use o Gerenciador de Integrações para fazer isso. Entre em contato com um administrador.", @@ -2098,9 +2098,9 @@ "Password is allowed, but unsafe": "Esta senha é permitida, mas não é segura", "Not sure of your password? Set a new one": "Esqueceu sua senha? Defina uma nova", "Set an email for account recovery. Use email to optionally be discoverable by existing contacts.": "Defina um e-mail para poder recuperar a conta. Este e-mail também pode ser usado para encontrar seus contatos.", - "Enter your custom homeserver URL What does this mean?": "Digite o URL de um servidor local O que isso significa?", - "Homeserver URL": "URL do servidor local", - "Identity Server URL": "URL do servidor de identidade", + "Enter your custom homeserver URL What does this mean?": "Digite o endereço de um servidor local O que isso significa?", + "Homeserver URL": "Endereço do servidor local", + "Identity Server URL": "Endereço do servidor de identidade", "Other servers": "Outros servidores", "Free": "Gratuito", "Find other public servers or use a custom server": "Encontre outros servidores públicos ou use um servidor personalizado", @@ -2177,7 +2177,7 @@ "Recent changes that have not yet been received": "Alterações recentes que ainda não foram recebidas", "This will allow you to return to your account after signing out, and sign in on other sessions.": "Isso permitirá que você retorne à sua conta depois de se desconectar e fazer login em outras sessões.", "Missing session data": "Dados de sessão ausentes", - "Be found by phone or email": "Seja encontrado por número de celular ou por e-mail", + "Be found by phone or email": "Seja encontrada/o por número de celular ou por e-mail", "Looks good!": "Muito bem!", "Security Phrase": "Frase de segurança", "Restoring keys from backup": "Restaurando chaves do backup", @@ -2193,9 +2193,9 @@ "Reload": "Recarregar", "Take picture": "Tirar uma foto", "Country Dropdown": "Selecione o país", - "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use %(brand)s with an existing Matrix account on a different homeserver.": "Você pode usar as opções personalizadas do servidor para entrar em outros servidores Matrix especificando um URL de servidor local diferente. Isso permite que você use %(brand)s com uma conta Matrix existente em um servidor local diferente.", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use %(brand)s with an existing Matrix account on a different homeserver.": "Você pode usar as opções personalizadas do servidor para entrar em outros servidores Matrix especificando um endereço de servidor local diferente. Isso permite que você use %(brand)s com uma conta Matrix existente em um servidor local diferente.", "No identity server is configured so you cannot add an email address in order to reset your password in the future.": "Nenhum servidor de identidade está configurado, portanto você não pode adicionar um endereço de e-mail para redefinir sua senha no futuro.", - "Enter your custom identity server URL What does this mean?": "Digite o URL do servidor de identidade personalizado O que isso significa?", + "Enter your custom identity server URL What does this mean?": "Digite o endereço do servidor de identidade personalizado O que isso significa?", "Join millions for free on the largest public server": "Junte-se a milhões de pessoas gratuitamente no maior servidor público", "Premium": "Premium", "Premium hosting for organisations Learn more": "Hospedagem premium para organizações Saiba mais", @@ -2211,5 +2211,17 @@ "Almost there! Is %(displayName)s showing the same shield?": "Quase lá! Este escudo também aparece para %(displayName)s?", "You've successfully verified %(displayName)s!": "Você verificou %(displayName)s com sucesso!", "Confirm this user's session by comparing the following with their User Settings:": "Confirme a sessão deste usuário comparando o seguinte com as configurações deste usuário:", - "Report Content to Your Homeserver Administrator": "Denunciar conteúdo ao administrador do seu servidor principal" + "Report Content to Your Homeserver Administrator": "Denunciar conteúdo ao administrador do seu servidor principal", + "Cross-signing": "Autoverificação", + "Discovery options will appear once you have added an email above.": "As opções de descoberta aparecerão assim que você adicione um e-mail acima.", + "Error updating flair": "Falha ao atualizar o ícone", + "There was an error updating the flair for this room. The server may not allow it or a temporary error occurred.": "Ocorreu um erro ao atualizar o ícone nesta sala. O servidor pode não permitir ou ocorreu um erro temporário.", + "Deactivating this user will log them out and prevent them from logging back in. Additionally, they will leave all the rooms they are in. This action cannot be reversed. Are you sure you want to deactivate this user?": "Desativar este usuário irá desconectá-lo e impedi-lo de fazer o login novamente. Além disso, ele sairá de todas as salas em que estiver. Esta ação não pode ser revertida. Tem certeza de que deseja desativar este usuário?", + "Deleting cross-signing keys is permanent. Anyone you have verified with will see security alerts. You almost certainly don't want to do this, unless you've lost every device you can cross-sign from.": "Apagar chaves de autoverificação é permanente. Qualquer pessoa com quem você fez a verificação receberá alertas de segurança. Não é aconselhável fazer isso, a menos que você tenha perdido todos os aparelhos nos quais fez a autoverificação.", + "Clear cross-signing keys": "Limpar chaves autoverificadas", + "a device cross-signing signature": "um aparelho autoverificado", + "Homeserver URL does not appear to be a valid Matrix homeserver": "O endereço do servidor local não parece indicar um servidor local válido na Matrix", + "Identity server URL does not appear to be a valid identity server": "O endereço do servidor de identidade não parece indicar um servidor de identidade válido", + "This homeserver does not support login using email address.": "Este servidor local não suporta login usando endereço de e-mail.", + "or another cross-signing capable Matrix client": "ou outro cliente Matrix com capacidade de autoverificação" } From aab0286a0b5cbca4457a6b2d7b8bc3d820f337e1 Mon Sep 17 00:00:00 2001 From: strix aluco Date: Fri, 7 Aug 2020 17:09:35 +0000 Subject: [PATCH 110/424] Translated using Weblate (Ukrainian) Currently translated at 48.9% (1144 of 2341 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/uk/ --- src/i18n/strings/uk.json | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/uk.json b/src/i18n/strings/uk.json index 9e53ad973f..d593d406f3 100644 --- a/src/i18n/strings/uk.json +++ b/src/i18n/strings/uk.json @@ -494,7 +494,7 @@ "Your homeserver doesn't seem to support this feature.": "Схоже, що ваш домашній сервер не підтримує цю властивість.", "Sign out and remove encryption keys?": "Вийти та видалити ключі шифрування?", "Clear Storage and Sign Out": "Очистити сховище та вийти", - "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Очищення сховища вашого оглядача може усунути проблему, але воно виведе вас з системи і зробить непрочитною історію ваших зашифрованих листувань.", + "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Очищення сховища вашого переглядача може усунути проблему, але воно виведе вас з системи та зробить непрочитною історію ваших зашифрованих листувань.", "Verification Pending": "Очікується перевірка", "Upload files (%(current)s of %(total)s)": "Відвантажити файли (%(current)s з %(total)s)", "Upload files": "Відвантажити файли", @@ -1146,5 +1146,12 @@ "Enter": "Enter", "Space": "Пропуск", "End": "End", - "Clearing all data from this session is permanent. Encrypted messages will be lost unless their keys have been backed up.": "Видалення даних з цього сеансу є безповоротним. Зашифровані повідомлення будуть втрачені якщо їхні ключі не було продубльовано." + "Clearing all data from this session is permanent. Encrypted messages will be lost unless their keys have been backed up.": "Видалення даних з цього сеансу є безповоротним. Зашифровані повідомлення будуть втрачені якщо їхні ключі не було продубльовано.", + "Verify this user to mark them as trusted. Trusting users gives you extra peace of mind when using end-to-end encrypted messages.": "Звірте цього користувача щоб позначити його довіреним. Довіряння користувачам додає спокою якщо ви користуєтесь наскрізно зашифрованими повідомленнями.", + "Verify this device to mark it as trusted. Trusting this device gives you and other users extra peace of mind when using end-to-end encrypted messages.": "Звірте цей пристрій щоб позначити його довіреним. Довіряння цьому пристрою додає вам та іншим користувачам спокою якщо ви користуєтесь наскрізно зашифрованими повідомленнями.", + "I don't want my encrypted messages": "Мені не потрібні мої зашифровані повідомлення", + "You'll lose access to your encrypted messages": "Ви втратите доступ до ваших зашифрованих повідомлень", + "Use this session to verify your new one, granting it access to encrypted messages:": "Використати цей сеанс для звірення вашого нового сеансу, надаючи йому доступ до зашифрованих повідомлень:", + "Reporting this message will send its unique 'event ID' to the administrator of your homeserver. If messages in this room are encrypted, your homeserver administrator will not be able to read the message text or view any files or images.": "Скарження на це повідомлення надішле його унікальний 'ідентифікатор події (event ID)' адміністраторові вашого домашнього сервера. Якщо повідомлення у цій кімнаті зашифровані, то адміністратор не зможе бачити ані тексту повідомлень, ані жодних файлів чи зображень.", + "Some session data, including encrypted message keys, is missing. Sign out and sign in to fix this, restoring keys from backup.": "Бракує деяких даних сеансу, включно з ключами зашифрованих повідомлень. Вийдіть та зайдіть знову щоб виправити цю проблему, відновлюючи ключі з дубля." } From fee808a75e41614ed2c26c1bc52dfe277f8a8f00 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Sat, 8 Aug 2020 11:16:28 +0100 Subject: [PATCH 111/424] fix indentation --- src/components/structures/UserMenu.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/structures/UserMenu.tsx b/src/components/structures/UserMenu.tsx index d94cf7baa5..415b6a9a69 100644 --- a/src/components/structures/UserMenu.tsx +++ b/src/components/structures/UserMenu.tsx @@ -272,10 +272,10 @@ export default class UserMenu extends React.Component { onClick={(e) => this.onSettingsOpen(e, null)} /> {/* */} + iconClassName="mx_UserMenu_iconArchive" + label={_t("Archived rooms")} + onClick={this.onShowArchived} + /> */} Date: Sat, 8 Aug 2020 11:28:44 +0100 Subject: [PATCH 112/424] Fix Bridge Settings Tab --- src/components/views/settings/tabs/room/BridgeSettingsTab.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/views/settings/tabs/room/BridgeSettingsTab.js b/src/components/views/settings/tabs/room/BridgeSettingsTab.js index a5d20eae33..3309a6bf24 100644 --- a/src/components/views/settings/tabs/room/BridgeSettingsTab.js +++ b/src/components/views/settings/tabs/room/BridgeSettingsTab.js @@ -37,7 +37,7 @@ export default class BridgeSettingsTab extends React.Component { if (!content || !content.channel || !content.protocol) { return null; } - return ; + return ; } static getBridgeStateEvents(roomId) { @@ -45,7 +45,7 @@ export default class BridgeSettingsTab extends React.Component { const roomState = (client.getRoom(roomId)).currentState; const bridgeEvents = [].concat(...BRIDGE_EVENT_TYPES.map((typeName) => - Object.values(roomState.events[typeName] || {}), + Array.from(roomState.events.get(typeName).values()), )); return bridgeEvents; From 5c0d332e9d70dab033d0da48f9987bf35b6aab1f Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Sat, 8 Aug 2020 11:38:57 +0100 Subject: [PATCH 113/424] Convert Bridge Settings Tab to Typescript --- ...geSettingsTab.js => BridgeSettingsTab.tsx} | 33 +++++++++---------- 1 file changed, 16 insertions(+), 17 deletions(-) rename src/components/views/settings/tabs/room/{BridgeSettingsTab.js => BridgeSettingsTab.tsx} (81%) diff --git a/src/components/views/settings/tabs/room/BridgeSettingsTab.js b/src/components/views/settings/tabs/room/BridgeSettingsTab.tsx similarity index 81% rename from src/components/views/settings/tabs/room/BridgeSettingsTab.js rename to src/components/views/settings/tabs/room/BridgeSettingsTab.tsx index 3309a6bf24..8638105cd9 100644 --- a/src/components/views/settings/tabs/room/BridgeSettingsTab.js +++ b/src/components/views/settings/tabs/room/BridgeSettingsTab.tsx @@ -1,5 +1,5 @@ /* -Copyright 2019 The Matrix.org Foundation C.I.C. +Copyright 2019, 2020 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -14,8 +14,10 @@ See the License for the specific language governing permissions and limitations under the License. */ -import React from 'react'; -import PropTypes from 'prop-types'; +import React from "react"; +import {Room} from "matrix-js-sdk/src/models/room"; +import {MatrixEvent} from "matrix-js-sdk/src/models/event"; + import {_t} from "../../../../../languageHandler"; import {MatrixClientPeg} from "../../../../../MatrixClientPeg"; import BridgeTile from "../../BridgeTile"; @@ -27,28 +29,26 @@ const BRIDGE_EVENT_TYPES = [ const BRIDGES_LINK = "https://matrix.org/bridges/"; -export default class BridgeSettingsTab extends React.Component { - static propTypes = { - roomId: PropTypes.string.isRequired, - }; +interface IProps { + roomId: string; +} - _renderBridgeCard(event, room) { +export default class BridgeSettingsTab extends React.Component { + private renderBridgeCard(event: MatrixEvent, room: Room) { const content = event.getContent(); if (!content || !content.channel || !content.protocol) { return null; } - return ; + return ; } - static getBridgeStateEvents(roomId) { + static getBridgeStateEvents(roomId: string) { const client = MatrixClientPeg.get(); - const roomState = (client.getRoom(roomId)).currentState; + const roomState = client.getRoom(roomId).currentState; - const bridgeEvents = [].concat(...BRIDGE_EVENT_TYPES.map((typeName) => + return [].concat(...BRIDGE_EVENT_TYPES.map((typeName) => Array.from(roomState.events.get(typeName).values()), )); - - return bridgeEvents; } render() { @@ -58,8 +58,7 @@ export default class BridgeSettingsTab extends React.Component { const client = MatrixClientPeg.get(); const room = client.getRoom(this.props.roomId); - let content = null; - + let content: JSX.Element; if (bridgeEvents.length > 0) { content =

{_t( @@ -72,7 +71,7 @@ export default class BridgeSettingsTab extends React.Component { }, )}

    - { bridgeEvents.map((event) => this._renderBridgeCard(event, room)) } + { bridgeEvents.map((event) => this.renderBridgeCard(event, room)) }
; } else { From a12d0daa3809c3dab458f9e8bd4c07469148e2cd Mon Sep 17 00:00:00 2001 From: Marcelo Filho Date: Sat, 8 Aug 2020 10:37:08 +0000 Subject: [PATCH 114/424] Translated using Weblate (Portuguese (Brazil)) Currently translated at 94.7% (2216 of 2341 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/pt_BR/ --- src/i18n/strings/pt_BR.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/pt_BR.json b/src/i18n/strings/pt_BR.json index d8996b8306..71944028a6 100644 --- a/src/i18n/strings/pt_BR.json +++ b/src/i18n/strings/pt_BR.json @@ -1561,7 +1561,7 @@ "Enter the location of your Element Matrix Services homeserver. It may use your own domain name or be a subdomain of element.io.": "Entre com a localização do seu Servidor Matrix. Pode ser seu próprio domínio ou ser um subdomínio de element.io.", "Create your Matrix account on %(serverName)s": "Criar sua conta Matrix em %(serverName)s", "Create your Matrix account on ": "Crie sua conta Matrix em ", - "Welcome to %(appName)s": "Desejamos boas vindas ao %(appName)s", + "Welcome to %(appName)s": "Bem-vinda/o ao %(appName)s", "Liberate your communication": "Liberte sua comunicação", "Send a Direct Message": "Enviar uma mensagem", "Explore Public Rooms": "Explore as salas públicas", From ceccac902c82ea1af0c68360ab0f85984078217a Mon Sep 17 00:00:00 2001 From: Besnik Bleta Date: Sat, 8 Aug 2020 10:46:43 +0000 Subject: [PATCH 115/424] Translated using Weblate (Albanian) Currently translated at 99.7% (2334 of 2341 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/sq/ --- src/i18n/strings/sq.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/sq.json b/src/i18n/strings/sq.json index ec42b94864..9d9be78fdf 100644 --- a/src/i18n/strings/sq.json +++ b/src/i18n/strings/sq.json @@ -2405,5 +2405,7 @@ "Recent changes that have not yet been received": "Ndryshime tani së fundi që s’janë marrë ende", "No files visible in this room": "S’ka kartela të dukshme në këtë dhomë", "Attach files from chat or just drag and drop them anywhere in a room.": "Bashkëngjitni kartela prej fjalosjeje ose thjesht tërhiqini dhe lërini kudo qoftë brenda dhomës.", - "You have no visible notifications in this room.": "S’ka njoftime të dukshme për ju në këtë dhomë." + "You have no visible notifications in this room.": "S’ka njoftime të dukshme për ju në këtë dhomë.", + "Master private key:": "Kyç privat i përgjithshëm:", + "%(brand)s Android": "%(brand)s Android" } From 611113cee809b1776c522c186ef1a504464a5560 Mon Sep 17 00:00:00 2001 From: Marcelo Filho Date: Mon, 10 Aug 2020 00:36:54 +0000 Subject: [PATCH 116/424] Translated using Weblate (Portuguese (Brazil)) Currently translated at 94.7% (2217 of 2341 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/pt_BR/ --- src/i18n/strings/pt_BR.json | 253 ++++++++++++++++++------------------ 1 file changed, 127 insertions(+), 126 deletions(-) diff --git a/src/i18n/strings/pt_BR.json b/src/i18n/strings/pt_BR.json index 71944028a6..092f5c9e9f 100644 --- a/src/i18n/strings/pt_BR.json +++ b/src/i18n/strings/pt_BR.json @@ -7,8 +7,8 @@ "Anyone who knows the room's link, apart from guests": "Qualquer pessoa que tenha o link da sala, exceto visitantes", "Anyone who knows the room's link, including guests": "Qualquer pessoa que tenha o link da sala, incluindo visitantes", "Are you sure you want to reject the invitation?": "Tem certeza de que deseja recusar o convite?", - "Banned users": "Usuários bloqueados", - "Bans user with given id": "Bloquear o usuário com o ID indicado", + "Banned users": "Usuários banidos", + "Bans user with given id": "Bane o usuário com o ID indicado", "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s alterou a descrição para \"%(topic)s\".", "Changes your display nickname": "Alterar seu nome e sobrenome", "Click here to fix": "Clique aqui para resolver isso", @@ -28,7 +28,7 @@ "Failed to change password. Is your password correct?": "Não foi possível alterar a senha. A sua senha está correta?", "Failed to leave room": "Falha ao tentar deixar a sala", "Failed to reject invitation": "Falha ao tentar recusar o convite", - "Failed to unban": "Não foi possível desbloquear", + "Failed to unban": "Não foi possível remover o banimento", "Favourite": "Favoritar", "Favourites": "Favoritos", "Filter room members": "Filtrar integrantes da sala", @@ -56,7 +56,7 @@ "New passwords must match each other.": "As novas senhas informadas precisam ser idênticas.", "Notifications": "Notificações", "": "", - "No users have specific privileges in this room": "Nenhum/a usuário/a possui privilégios específicos nesta sala", + "No users have specific privileges in this room": "Nenhum usuário possui privilégios específicos nesta sala", "Only people who have been invited": "Apenas pessoas que tenham sido convidadas", "Password": "Senha", "Passwords can't be empty": "As senhas não podem estar em branco", @@ -86,7 +86,7 @@ "Unable to add email address": "Não foi possível adicionar um endereço de e-mail", "Unable to remove contact information": "Não foi possível remover informação de contato", "Unable to verify email address.": "Não foi possível verificar o endereço de e-mail.", - "Unban": "Desbloquear", + "Unban": "Remover banimento", "unknown error code": "código de erro desconhecido", "Upload avatar": "Enviar uma foto de perfil", "Upload file": "Enviar arquivo", @@ -124,7 +124,7 @@ "%(targetName)s accepted an invitation.": "%(targetName)s aceitou um convite.", "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s aceitou o convite para %(displayName)s.", "%(senderName)s answered the call.": "%(senderName)s aceitou a chamada.", - "%(senderName)s banned %(targetName)s.": "%(senderName)s bloqueou %(targetName)s.", + "%(senderName)s banned %(targetName)s.": "%(senderName)s baniu %(targetName)s.", "Call Timeout": "Tempo esgotado. Chamada encerrada", "%(senderName)s changed their profile picture.": "%(senderName)s alterou a foto de perfil.", "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s alterou o nível de permissão de %(powerLevelDiffText)s.", @@ -169,7 +169,7 @@ "This room is not recognised.": "Esta sala não é reconhecida.", "This phone number is already in use": "Este número de telefone já está sendo usado", "To use it, just wait for autocomplete results to load and tab through them.": "Para usar esta funcionalidade, aguarde o carregamento dos resultados de autocompletar e então escolha entre as opções.", - "%(senderName)s unbanned %(targetName)s.": "%(senderName)s desbloqueou %(targetName)s.", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s removeu o banimento de %(targetName)s.", "Unable to capture screen": "Não foi possível capturar a imagem da tela", "Unable to enable Notifications": "Não foi possível ativar as notificações", "Upload Failed": "O envio falhou", @@ -208,7 +208,7 @@ "Decrypt %(text)s": "Descriptografar %(text)s", "Disinvite": "Desconvidar", "Download %(text)s": "Baixar %(text)s", - "Failed to ban user": "Não foi possível bloquear o usuário", + "Failed to ban user": "Não foi possível banir o usuário", "Failed to change power level": "Não foi possível alterar o nível de permissão", "Failed to join room": "Não foi possível ingressar na sala", "Failed to kick": "Não foi possível remover o usuário", @@ -220,7 +220,7 @@ "Incorrect verification code": "Código de verificação incorreto", "Join Room": "Ingressar na sala", "Jump to first unread message.": "Ir diretamente para a primeira das mensagens não lidas.", - "Kick": "Remover", + "Kick": "Remover da sala", "not specified": "não especificado", "No more results": "Não há mais resultados", "No results": "Nenhum resultado", @@ -240,7 +240,7 @@ "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Você não poderá desfazer essa alteração, pois está promovendo o usuário ao mesmo nível de permissão que você.", "Room": "Sala", "Cancel": "Cancelar", - "Ban": "Bloquear", + "Ban": "Banir da sala", "Access Token:": "Token de acesso:", "Always show message timestamps": "Sempre mostrar as datas das mensagens", "Authentication": "Autenticação", @@ -315,15 +315,15 @@ "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s alterou a foto da sala %(roomName)s", "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s alterou a foto da sala para ", "No Microphones detected": "Não foi detectado nenhum microfone", - "No Webcams detected": "Não foi detectada nenhuma Webcam", + "No Webcams detected": "Nenhuma câmera detectada", "No media permissions": "Não há permissões de uso de vídeo/áudio no seu navegador", - "You may need to manually permit %(brand)s to access your microphone/webcam": "Pode ser necessário permitir manualmente que o %(brand)s acesse seu microfone e webcam", + "You may need to manually permit %(brand)s to access your microphone/webcam": "Pode ser necessário permitir manualmente ao %(brand)s acessar seu microfone ou sua câmera", "Default Device": "Aparelho padrão", "Microphone": "Microfone", - "Camera": "Câmera de vídeo", + "Camera": "Câmera", "Add a topic": "Adicionar uma descrição", "Anyone": "Qualquer pessoa", - "Are you sure you want to leave the room '%(roomName)s'?": "Você tem certeza que deseja sair da sala '%(roomName)s'?", + "Are you sure you want to leave the room '%(roomName)s'?": "Tem certeza de que deseja sair da sala '%(roomName)s'?", "Custom level": "Nível personalizado", "Register": "Registre-se", "Save": "Salvar", @@ -367,7 +367,7 @@ "Public Chat": "Conversa pública", "%(roomName)s does not exist.": "%(roomName)s não existe.", "%(roomName)s is not accessible at this time.": "%(roomName)s não está acessível neste momento.", - "Seen by %(userName)s at %(dateTime)s": "Visto por %(userName)s em %(dateTime)s", + "Seen by %(userName)s at %(dateTime)s": "Lida por %(userName)s em %(dateTime)s", "Start authentication": "Iniciar autenticação", "This room": "Esta sala", "unknown caller": "a pessoa que está chamando é desconhecida", @@ -390,13 +390,13 @@ "Add to community": "Adicionar à comunidade", "Add rooms to the community": "Adicionar salas à comunidade", "Failed to invite users to community": "Falha ao convidar os usuários à comunidade", - "Failed to invite users to %(groupId)s": "Falha ao convidar os usuários para %(groupId)s", + "Failed to invite users to %(groupId)s": "Falha ao convidar usuários para %(groupId)s", "Failed to invite the following users to %(groupId)s:": "Falha ao convidar os seguintes usuários para %(groupId)s:", - "Failed to add the following rooms to %(groupId)s:": "Falha ao adicionar as seguintes salas para %(groupId)s:", + "Failed to add the following rooms to %(groupId)s:": "Falha ao adicionar as seguintes salas em %(groupId)s:", "You are not in this room.": "Você não está nesta sala.", "You do not have permission to do that in this room.": "Você não tem permissão para fazer isto nesta sala.", - "Ignored user": "Usuário silenciado", - "You are no longer ignoring %(userId)s": "Você não está mais silenciando %(userId)s", + "Ignored user": "Usuário bloqueado", + "You are no longer ignoring %(userId)s": "Você não está mais bloqueando %(userId)s", "Edit": "Editar", "Unpin Message": "Desafixar Mensagem", "Add rooms to this community": "Adicionar salas na comunidade", @@ -407,7 +407,7 @@ "Whether or not you're using the Richtext mode of the Rich Text Editor": "Se você está usando o editor de texto visual", "Your homeserver's URL": "O endereço do seu servidor local", "The information being sent to us to help make %(brand)s better includes:": "As informações que estão sendo enviadas para ajudar a melhorar o %(brand)s incluem:", - "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Quando esta página tem informação de identificação, como uma sala, ID de usuária/o ou de grupo, estes dados são removidos antes de serem enviados ao servidor.", + "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Quando esta página inclui informações identificáveis, como uma sala, ID de usuário ou de comunidade, estes dados são removidos antes de serem enviados ao servidor.", "Call Failed": "A chamada falhou", "PM": "PM", "AM": "AM", @@ -418,8 +418,8 @@ "Which rooms would you like to add to this community?": "Quais salas você quer adicionar a esta comunidade?", "Show these rooms to non-members on the community page and room list?": "Exibir estas salas para não integrantes na página da comunidade e na lista de salas?", "Unable to create widget.": "Não foi possível criar o widget.", - "You are now ignoring %(userId)s": "Agora você está silenciando %(userId)s", - "Unignored user": "Usuário não mais silenciado", + "You are now ignoring %(userId)s": "Agora você está bloqueando %(userId)s", + "Unignored user": "Usuário desbloqueado", "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s alterou o nome e sobrenome para %(displayName)s.", "%(senderName)s changed the pinned messages for the room.": "%(senderName)s alterou as mensagens fixadas da sala.", "%(widgetName)s widget modified by %(senderName)s": "O widget %(widgetName)s foi modificado por %(senderName)s", @@ -441,11 +441,11 @@ "%(senderName)s uploaded a file": "%(senderName)s enviou um arquivo", "Disinvite this user?": "Desconvidar esta/e usuária/o?", "Kick this user?": "Remover este usuário?", - "Unban this user?": "Desbloquear este usuário?", - "Ban this user?": "Bloquear este usuário?", + "Unban this user?": "Remover o banimento deste usuário?", + "Ban this user?": "Banir este usuário?", "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "Você não poderá desfazer essa alteração, já que está rebaixando sua própria permissão. Se você for a última pessoa nesta sala, será impossível recuperar a permissão atual.", - "Unignore": "Reativar notificações e mostrar mensagens", - "Ignore": "Silenciar e esconder mensagens", + "Unignore": "Desbloquear", + "Ignore": "Bloquear", "Jump to read receipt": "Ir para a confirmação de leitura", "Mention": "Mencionar", "Invite": "Convidar", @@ -470,7 +470,7 @@ "World readable": "Aberto publicamente à leitura", "Guests can join": "Convidadas/os podem entrar", "Community Invites": "Convites a comunidades", - "Banned by %(displayName)s": "Bloqueado por %(displayName)s", + "Banned by %(displayName)s": "Banido por %(displayName)s", "Publish this room to the public in %(domain)s's room directory?": "Quer publicar esta sala na lista pública de salas em %(domain)s's?", "Members only (since the point in time of selecting this option)": "Apenas integrantes (a partir do momento em que esta opção for selecionada)", "Members only (since they were invited)": "Apenas integrantes (desde que foram convidadas/os)", @@ -493,13 +493,13 @@ "Failed to withdraw invitation": "Não foi possível retirar o convite", "Failed to remove user from community": "Não foi possível remover esta pessoa da comunidade", "Filter community members": "Filtrar participantes da comunidade", - "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "Tem certeza que quer remover a sala '%(roomName)s' do grupo %(groupId)s?", + "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "Tem certeza que quer remover a sala '%(roomName)s' da comunidade %(groupId)s?", "Removing a room from the community will also remove it from the community page.": "Remover uma sala da comunidade também a removerá da página da comunidade.", "Failed to remove room from community": "Não foi possível remover a sala da comunidade", - "Failed to remove '%(roomName)s' from %(groupId)s": "Não foi possível remover a sala '%(roomName)s' do grupo %(groupId)s", - "The visibility of '%(roomName)s' in %(groupId)s could not be updated.": "A visibilidade da sala '%(roomName)s' do grupo %(groupId)s não pôde ser atualizada.", + "Failed to remove '%(roomName)s' from %(groupId)s": "Não foi possível remover a sala '%(roomName)s' da comunidade %(groupId)s", + "The visibility of '%(roomName)s' in %(groupId)s could not be updated.": "A visibilidade da sala '%(roomName)s' na comunidade %(groupId)s não pôde ser atualizada.", "Visibility in Room List": "Visibilidade na lista de salas", - "Visible to everyone": "Visível para todo mundo", + "Visible to everyone": "Visível para todos", "Only visible to community members": "Apenas visível para integrantes da comunidade", "Filter community rooms": "Filtrar salas da comunidade", "Something went wrong when trying to get your communities.": "Não foi possível carregar suas comunidades.", @@ -540,14 +540,14 @@ "were invited %(count)s times|one": "foram convidadas/os", "was invited %(count)s times|other": "foi convidada/o %(count)s vezes", "was invited %(count)s times|one": "foi convidada/o", - "were banned %(count)s times|other": "foram bloqueados %(count)s vezes", - "were banned %(count)s times|one": "foram bloqueados", - "was banned %(count)s times|other": "foi bloqueado %(count)s vezes", - "was banned %(count)s times|one": "foi bloqueado", - "were unbanned %(count)s times|other": "foram desbloqueados %(count)s vezes", - "were unbanned %(count)s times|one": "foram desbloqueados", - "was unbanned %(count)s times|other": "foi desbloqueado %(count)s vezes", - "was unbanned %(count)s times|one": "foi desbloqueado", + "were banned %(count)s times|other": "foram banidos %(count)s vezes", + "were banned %(count)s times|one": "foram banidos", + "was banned %(count)s times|other": "foi banido %(count)s vezes", + "was banned %(count)s times|one": "foi banido", + "were unbanned %(count)s times|other": "tiveram o banimento removido %(count)s vezes", + "were unbanned %(count)s times|one": "tiveram o banimento removido", + "was unbanned %(count)s times|other": "teve o banimento removido %(count)s vezes", + "was unbanned %(count)s times|one": "teve o banimento removido", "were kicked %(count)s times|other": "foram removidos %(count)s vezes", "were kicked %(count)s times|one": "foram removidos", "was kicked %(count)s times|other": "foi removido %(count)s vezes", @@ -633,8 +633,8 @@ "Please note you are logging into the %(hs)s server, not matrix.org.": "Note que você está se conectando ao servidor %(hs)s, e não ao servidor matrix.org.", "This homeserver doesn't offer any login flows which are supported by this client.": "Este servidor de base (homeserver) não oferece fluxos de login que funcionem neste cliente.", "Define the power level of a user": "Definir o nível de permissões de um(a) usuário(a)", - "Ignores a user, hiding their messages from you": "Silenciar um usuário também esconderá as mensagens dele de você", - "Stops ignoring a user, showing their messages going forward": "Deixa de silenciar o usuário, exibindo suas mensagens daqui para frente", + "Ignores a user, hiding their messages from you": "Bloquear um usuário, esconderá as mensagens dele de você", + "Stops ignoring a user, showing their messages going forward": "Desbloquear um usuário, exibe suas mensagens daqui para frente", "Notify the whole room": "Notifica a sala inteira", "Room Notification": "Notificação da sala", "Failed to set direct chat tag": "Falha ao definir esta conversa como direta", @@ -666,7 +666,7 @@ "Cancel Sending": "Cancelar o envio", "This Room": "Esta sala", "Resend": "Reenviar", - "Error saving email notification preferences": "Erro ao salvar as preferências de notificação por e-mail", + "Error saving email notification preferences": "Erro ao salvar a configuração de notificações por e-mail", "Messages containing my display name": "Mensagens contendo meu nome e sobrenome", "Messages in one-to-one chats": "Mensagens em conversas pessoais", "Unavailable": "Indisponível", @@ -676,7 +676,7 @@ "Notifications on the following keywords follow rules which can’t be displayed here:": "Notificações sobre as seguintes palavras-chave seguem regras que não podem ser exibidas aqui:", "Please set a password!": "Por favor, defina uma senha!", "You have successfully set a password!": "Você definiu sua senha com sucesso!", - "An error occurred whilst saving your email notification preferences.": "Um erro ocorreu enquanto o sistema estava salvando suas preferências de notificação por e-mail.", + "An error occurred whilst saving your email notification preferences.": "Ocorreu um erro ao salvar sua configuração de notificações por e-mail.", "Explore Room State": "Explorar Estado da Sala", "Source URL": "Link do código-fonte", "Messages sent by bot": "Mensagens enviadas por bots", @@ -705,7 +705,7 @@ "Direct Chat": "Conversa pessoal", "The server may be unavailable or overloaded": "O servidor pode estar inacessível ou sobrecarregado", "Reject": "Recusar", - "Failed to set Direct Message status of room": "Falha em definir a mensagem de status da sala", + "Failed to set Direct Message status of room": "Falha em definir a descrição da conversa", "Monday": "Segunda-feira", "All messages (noisy)": "Todas as mensagens (com som)", "Enable them now": "Ativá-los agora", @@ -715,7 +715,7 @@ "(HTTP status %(httpStatus)s)": "(Status HTTP %(httpStatus)s)", "Invite to this room": "Convidar para esta sala", "Send logs": "Enviar registros", - "All messages": "Todas as mensagens", + "All messages": "Todas as mensagens novas", "Call invitation": "Convite para chamada", "Downloading update...": "Baixando atualização...", "State Key": "Chave do Estado", @@ -723,7 +723,7 @@ "What's new?": "O que há de novidades?", "Notify me for anything else": "Notificar-me sobre qualquer outro evento", "When I'm invited to a room": "Quando sou convidada(o) a uma sala", - "Can't update user notification settings": "Não foi possível atualizar as preferências de notificação", + "Can't update user notification settings": "Não foi possível atualizar a configuração das notificações", "Notify for all other messages/rooms": "Notificar para todas as outras mensagens e salas", "Unable to look up room ID from server": "Não foi possível buscar identificação da sala no servidor", "Couldn't find a matching Matrix room": "Não foi possível encontrar uma sala correspondente no servidor Matrix", @@ -772,7 +772,7 @@ "Failed to invite users to the room:": "Não foi possível convidar usuários para a sala:", "Missing roomId.": "RoomId ausente.", "Opens the Developer Tools dialog": "Abre a caixa de diálogo Ferramentas do desenvolvedor", - "Forces the current outbound group session in an encrypted room to be discarded": "Força a atual sessão de grupo de saída em uma sala criptografada a ser descartada", + "Forces the current outbound group session in an encrypted room to be discarded": "Força a atual sessão da comunidade em uma sala criptografada a ser descartada", "e.g. %(exampleValue)s": "ex. %(exampleValue)s", "%(senderName)s set the main address for this room to %(address)s.": "%(senderName)s definiu o endereço principal desta sala como %(address)s.", "%(senderName)s removed the main address for this room.": "%(senderName)s removeu o endereço principal desta sala.", @@ -820,7 +820,7 @@ "Show developer tools": "Mostrar ferramentas de desenvolvedor", "Messages containing @room": "Mensagens contendo @room", "Encrypted messages in one-to-one chats": "Mensagens criptografadas em bate-papos individuais", - "Encrypted messages in group chats": "Mensagens criptografadas em bate-papos de grupo", + "Encrypted messages in group chats": "Mensagens criptografadas em conversas em grupo", "Delete Backup": "Deletar Backup", "Unable to load key backup status": "Não é possível carregar o status da chave de backup", "Backup version: ": "Versão do Backup: ", @@ -830,7 +830,7 @@ "Share Link to User": "Compartilhar este usuário", "This room has been replaced and is no longer active.": "Esta sala foi substituída e não está mais ativa.", "The conversation continues here.": "A conversa continua aqui.", - "Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "Visto por %(displayName)s (%(userName)s) em %(dateTime)s", + "Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "Lida por %(displayName)s (%(userName)s) em %(dateTime)s", "Share room": "Compartilhar sala", "System Alerts": "Alertas do sistema", "Don't ask again": "Não perguntar novamente", @@ -855,7 +855,7 @@ "The email field must not be blank.": "O campo de e-mail não pode estar em branco.", "The phone number field must not be blank.": "O campo do número de telefone não pode estar em branco.", "The password field must not be blank.": "O campo da senha não pode ficar em branco.", - "Failed to load group members": "Falha ao carregar membros do grupo", + "Failed to load group members": "Falha ao carregar membros da comunidade", "Failed to remove widget": "Falha ao remover o widget", "An error ocurred whilst trying to remove the widget from the room": "Ocorreu um erro ao tentar remover o widget da sala", "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "Não é possível carregar o evento que foi respondido, ele não existe ou você não tem permissão para visualizá-lo.", @@ -864,7 +864,7 @@ "Logs sent": "Registros enviados", "Failed to send logs: ": "Falha ao enviar registros:· ", "Submit debug logs": "Submeter registros de depuração", - "Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Os registros de depuração contêm dados de uso do aplicativo, incluindo seu nome de usuário, os IDs ou aliases das salas ou grupos que você visitou e os nomes de usuários de outros usuários. Eles não contêm mensagens.", + "Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Os registros de depuração contêm dados de uso do aplicativo, incluindo seu nome de usuário, os IDs ou aliases das salas ou comunidades que você visitou e os nomes de usuários de outros usuários. Eles não contêm mensagens.", "Before submitting logs, you must create a GitHub issue to describe your problem.": "Antes de enviar os registros, você deve criar um bilhete de erro no GitHub para descrever seu problema.", "Unable to load commit detail: %(msg)s": "Não é possível carregar os detalhes do commit: %(msg)s", "To avoid losing your chat history, you must export your room keys before logging out. You will need to go back to the newer version of %(brand)s to do this": "Para evitar perder seu histórico de bate-papo, você deve exportar as chaves da sua sala antes de se desconectar. Para fazer isso, você precisará retornar na versão mais atual do %(brand)s", @@ -890,13 +890,13 @@ "If the other version of %(brand)s is still open in another tab, please close it as using %(brand)s on the same host with both lazy loading enabled and disabled simultaneously will cause issues.": "Se a outra versão do %(brand)s ainda estiver aberta em outra aba, por favor, feche-a pois usar o %(brand)s no mesmo host com o carregamento Lazy ativado e desativado simultaneamente causará problemas.", "Update any local room aliases to point to the new room": "Atualize todos os aliases da sala local para apontar para a nova sala", "Clear Storage and Sign Out": "Limpar armazenamento e sair", - "Refresh": "Atualizar", + "Refresh": "Recarregar", "We encountered an error trying to restore your previous session.": "Encontramos um erro ao tentar restaurar sua sessão anterior.", "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Limpar o armazenamento do seu navegador pode resolver o problema, mas você será deslogado e isso fará que qualquer histórico de bate-papo criptografado fique ilegível.", "Checking...": "Checando...", "Share Room": "Compartilhar Sala", "Link to most recent message": "Link para a mensagem mais recente", - "Share User": "Compartilhar Usuário", + "Share User": "Compartilhar usuário", "Share Community": "Compartilhar Comunidade", "Share Room Message": "Compartilhar Mensagem da Sala", "Link to selected message": "Link para a mensagem selecionada", @@ -906,7 +906,7 @@ "No backup found!": "Nenhum backup encontrado!", "Access your secure message history and set up secure messaging by entering your recovery passphrase.": "Acesse seu histórico de mensagens seguras e configure mensagens seguras digitando sua frase secreta de recuperação.", "Next": "Próximo", - "If you've forgotten your recovery passphrase you can use your recovery key or set up new recovery options": "Se você esqueceu sua frase secreata de recuperação, você pode usar sua chave de recuperação ou configurar novas opções de recuperação", + "If you've forgotten your recovery passphrase you can use your recovery key or set up new recovery options": "Se você esqueceu sua frase secreta de recuperação, você pode usar sua chave de recuperação ou configurar novas opções de recuperação", "This looks like a valid recovery key!": "Isso parece uma chave de recuperação válida!", "Not a valid recovery key": "Não é uma chave de recuperação válida", "Access your secure message history and set up secure messaging by entering your recovery key.": "Acesse seu histórico seguro de mensagens e configure mensagens seguras inserindo sua chave de recuperação.", @@ -925,7 +925,7 @@ "Leave this community": "Deixe esta comunidade", "Who can join this community?": "Quem pode participar desta comunidade?", "Everyone": "Todos", - "Can't leave Server Notices room": "Não é possível sair da sala Notificações do servidor", + "Can't leave Server Notices room": "Não é possível sair da sala Avisos do Servidor", "This room is used for important messages from the Homeserver, so you cannot leave it.": "Esta sala é usada para mensagens importantes do Homeserver, então você não pode sair dela.", "Terms and Conditions": "Termos e Condições", "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.\n\nPara continuar usando o homeserver %(homeserverDomain)s, você deve rever e concordar com nossos termos e condições.", @@ -933,10 +933,10 @@ "You can't send any messages until you review and agree to our terms and conditions.": "Você não pode enviar nenhuma mensagem até revisar e concordar com nossos termos e condições.", "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Sua mensagem não foi enviada porque este homeserver atingiu seu Limite de usuário ativo mensal. Por favor, entre em contato com o seu administrador de serviços para continuar usando o serviço.", "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.": "Sua mensagem não foi enviada porque este servidor local excedeu o limite de recursos. Por favor, entre em contato com o seu administrador de serviços para continuar usando o serviço.", - "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Se você enviou um bug por meio do GitHub, os logs de depuração podem nos ajudar a rastrear o problema. Os logs de depuração contêm dados de uso do aplicativo, incluindo seu nome de usuário, os IDs ou apelidos das salas ou grupos que você visitou e os nomes de usuários de outros usuários. Eles não contêm mensagens.", + "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Se você enviou um bug por meio do GitHub, os logs de depuração podem nos ajudar a rastrear o problema. Os logs de depuração contêm dados de uso do aplicativo, incluindo seu nome de usuário, os IDs ou apelidos das salas ou comunidades que você visitou e os nomes de usuários de outros usuários. Eles não contêm mensagens.", "Legal": "Legal", - "No Audio Outputs detected": "Nenhuma saída de áudio detectada", - "Audio Output": "Saída de áudio", + "No Audio Outputs detected": "Nenhuma caixa de som detectada", + "Audio Output": "Caixa de som", "Invalid homeserver discovery response": "Resposta de descoberta de homeserver inválida", "Invalid identity server discovery response": "Resposta de descoberta do servidor de identidade inválida", "General failure": "Falha geral", @@ -971,11 +971,11 @@ "Gets or sets the room topic": "Consultar ou definir a descrição da sala", "This room has no topic.": "Esta sala não tem descrição.", "Sets the room name": "Define o nome da sala", - "Group & filter rooms by custom tags (refresh to apply changes)": "Agrupar e filtrar salas por tags personalizadas (atualize para aplicar as alterações)", + "Group & filter rooms by custom tags (refresh to apply changes)": "Agrupar e filtrar salas por tags personalizadas (recarregue para aplicar as alterações)", "Render simple counters in room header": "Renderizar contadores simples no cabeçalho da sala", "Enable Emoji suggestions while typing": "Ativar sugestões de emojis ao digitar", "Show a placeholder for removed messages": "Mostrar um marcador para as mensagens removidas", - "Show join/leave messages (invites/kicks/bans unaffected)": "Mostrar mensagens de entrar/sair (não considera convites/remoções/bloqueios)", + "Show join/leave messages (invites/kicks/bans unaffected)": "Mostrar mensagens de entrar/sair (não considera convites/remoções/banimentos)", "Show avatar changes": "Mostrar alterações de foto de perfil", "The file '%(fileName)s' exceeds this homeserver's size limit for uploads": "O arquivo '%(fileName)s' excede o limite de tamanho deste homeserver para uploads", "Changes your display nickname in the current room only": "Altera o seu nome e sobrenome apenas na sala atual", @@ -1044,7 +1044,7 @@ "Santa": "Papai-noel", "Prepends ¯\\_(ツ)_/¯ to a plain-text message": "Adiciona ¯ \\ _ (ツ) _ / ¯ no início de uma mensagem de texto simples", "User %(userId)s is already in the room": "O usuário %(userId)s já está na sala", - "The user must be unbanned before they can be invited.": "O usuário precisa ser desbloqueado antes de ser convidado.", + "The user must be unbanned before they can be invited.": "O banimento do usuário precisa ser removido antes de ser convidado.", "Show display name changes": "Mostrar alterações de nome e sobrenome", "Verify this user by confirming the following emoji appear on their screen.": "Verifique este usuário confirmando os emojis a seguir exibidos na tela dele.", "Verify this user by confirming the following number appears on their screen.": "Confirme este usuário confirmando se o número a seguir aparece na tela dele.", @@ -1113,7 +1113,7 @@ "Timeline": "Linha do Tempo", "Room list": "Lista de Salas", "Autocomplete delay (ms)": "Atraso no preenchimento automático (ms)", - "Ignored users": "Usuários silenciados", + "Ignored users": "Usuários bloqueados", "Bulk options": "Opções em massa", "Accept all %(invitedRooms)s invites": "Aceite todos os convites de %(invitedRooms)s", "Key backup": "Backup da chave", @@ -1194,7 +1194,7 @@ "Use an identity server to invite by email. Manage in Settings.": "Use um servidor de identidade para convidar pessoas por e-mail. Gerencie nas Configurações.", "Joins room with given address": "Entra em uma sala com o endereço fornecido", "Unrecognised room address:": "Endereço de sala não reconhecido:", - "Unbans user with given ID": "Desbloquear o usuário com o ID indicado", + "Unbans user with given ID": "Remove o banimento do usuário com o ID indicado", "Command failed": "O comando falhou", "Could not find user in room": "Não encontrei este(a) usuário(a) na sala", "Adds a custom widget by URL to the room": "Adiciona um widget personalizado na sala por meio de um link", @@ -1228,23 +1228,23 @@ "%(senderName)s placed a video call.": "%(senderName)s iniciou uma chamada de vídeo.", "%(senderName)s placed a video call. (not supported by this browser)": "%(senderName)s iniciou uma chamada de vídeo. (não suportada por este navegador)", "%(senderName)s revoked the invitation for %(targetDisplayName)s to join the room.": "%(senderName)s cancelou o convite para %(targetDisplayName)s entrar na sala.", - "%(senderName)s removed the rule banning users matching %(glob)s": "%(senderName)s removeu a regra que bloqueia usuários que correspondem a %(glob)s", - "%(senderName)s removed the rule banning rooms matching %(glob)s": "%(senderName)s removeu a regra que bloqueia salas que correspondem a %(glob)s", - "%(senderName)s removed the rule banning servers matching %(glob)s": "%(senderName)s removeu a regra que bloqueia servidores que correspondem a %(glob)s", - "%(senderName)s removed a ban rule matching %(glob)s": "%(senderName)s removeu uma regra de bloqueio correspondendo a %(glob)s", - "%(senderName)s updated an invalid ban rule": "%(senderName)s atualizou uma regra de bloqueio inválida", - "%(senderName)s updated the rule banning users matching %(glob)s for %(reason)s": "%(senderName)s atualizou a regra de bloqueio de usuários correspondendo a %(glob)s devido à %(reason)s", - "%(senderName)s updated the rule banning rooms matching %(glob)s for %(reason)s": "%(senderName)s atualizou a regra que bloqueia salas que correspondem a %(glob)s devido à %(reason)s", - "%(senderName)s updated the rule banning servers matching %(glob)s for %(reason)s": "%(senderName)s atualizou a regra que bloqueia servidores que correspondem a %(glob)s devido à %(reason)s", - "%(senderName)s updated a ban rule matching %(glob)s for %(reason)s": "%(senderName)s atualizou uma regra de bloqueio correspondendo a %(glob)s devido à %(reason)s", - "%(senderName)s created a rule banning users matching %(glob)s for %(reason)s": "%(senderName)s criou uma regra que bloqueia usuários que correspondem a %(glob)s devido à %(reason)s", - "%(senderName)s created a rule banning rooms matching %(glob)s for %(reason)s": "%(senderName)s criou uma regra que bloqueia salas que correspondem a %(glob)s devido à %(reason)s", - "%(senderName)s created a rule banning servers matching %(glob)s for %(reason)s": "%(senderName)s criou uma regra que bloqueia servidores que correspondem a %(glob)s devido à %(reason)s", - "%(senderName)s created a ban rule matching %(glob)s for %(reason)s": "%(senderName)s criou uma regra de bloqueio correspondendo a %(glob)s devido à %(reason)s", - "%(senderName)s changed a rule that was banning users matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s alterou uma regra que bloqueava usuários que correspondiam a %(oldGlob)s para corresponder a %(newGlob)s devido à %(reason)s", - "%(senderName)s changed a rule that was banning rooms matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s alterou uma regra que bloqueava salas que correspondiam a %(oldGlob)s para corresponder a %(newGlob)s devido à %(reason)s", - "%(senderName)s changed a rule that was banning servers matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s alterou uma regra que bloqueava servidores que correspondiam a %(oldGlob)s para corresponder a %(newGlob)s devido à %(reason)s", - "%(senderName)s updated a ban rule that was matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s alterou uma regra que bloqueava o que correspondia a %(oldGlob)s para corresponder a %(newGlob)s devido à %(reason)s", + "%(senderName)s removed the rule banning users matching %(glob)s": "%(senderName)s removeu a regra que bane usuários que correspondem a %(glob)s", + "%(senderName)s removed the rule banning rooms matching %(glob)s": "%(senderName)s removeu a regra que bane salas que correspondem a %(glob)s", + "%(senderName)s removed the rule banning servers matching %(glob)s": "%(senderName)s removeu a regra que bane servidores que correspondem a %(glob)s", + "%(senderName)s removed a ban rule matching %(glob)s": "%(senderName)s removeu uma regra de banimento correspondendo a %(glob)s", + "%(senderName)s updated an invalid ban rule": "%(senderName)s atualizou uma regra de banimento inválida", + "%(senderName)s updated the rule banning users matching %(glob)s for %(reason)s": "%(senderName)s atualizou a regra de banimento de usuários correspondendo a %(glob)s devido à %(reason)s", + "%(senderName)s updated the rule banning rooms matching %(glob)s for %(reason)s": "%(senderName)s atualizou a regra que bane salas que correspondem a %(glob)s devido à %(reason)s", + "%(senderName)s updated the rule banning servers matching %(glob)s for %(reason)s": "%(senderName)s atualizou a regra que bane servidores que correspondem a %(glob)s devido à %(reason)s", + "%(senderName)s updated a ban rule matching %(glob)s for %(reason)s": "%(senderName)s atualizou uma regra de banimento correspondendo a %(glob)s devido à %(reason)s", + "%(senderName)s created a rule banning users matching %(glob)s for %(reason)s": "%(senderName)s criou uma regra que bane usuários que correspondem a %(glob)s devido à %(reason)s", + "%(senderName)s created a rule banning rooms matching %(glob)s for %(reason)s": "%(senderName)s criou uma regra que bane salas que correspondem a %(glob)s devido à %(reason)s", + "%(senderName)s created a rule banning servers matching %(glob)s for %(reason)s": "%(senderName)s criou uma regra que bane servidores que correspondem a %(glob)s devido à %(reason)s", + "%(senderName)s created a ban rule matching %(glob)s for %(reason)s": "%(senderName)s criou uma regra de banimento correspondendo a %(glob)s devido à %(reason)s", + "%(senderName)s changed a rule that was banning users matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s alterou uma regra que bania usuários que correspondiam a %(oldGlob)s para corresponder a %(newGlob)s devido à %(reason)s", + "%(senderName)s changed a rule that was banning rooms matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s alterou uma regra que bania salas que correspondiam a %(oldGlob)s para corresponder a %(newGlob)s devido à %(reason)s", + "%(senderName)s changed a rule that was banning servers matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s alterou uma regra que bania servidores que correspondiam a %(oldGlob)s para corresponder a %(newGlob)s devido à %(reason)s", + "%(senderName)s updated a ban rule that was matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s alterou uma regra que bania o que correspondia a %(oldGlob)s para corresponder a %(newGlob)s devido à %(reason)s", "Light": "Claro", "Dark": "Escuro", "You signed in to a new session without verifying it:": "Você entrou em uma nova sessão sem verificá-la:", @@ -1325,7 +1325,7 @@ "%(senderName)s: %(stickerName)s": "%(senderName)s: %(stickerName)s", "New spinner design": "Novo design do spinner", "Multiple integration managers": "Múltiplos gestores de integrações", - "Try out new ways to ignore people (experimental)": "Tente novas maneiras de silenciar pessoas e esconder as mensagens delas (experimental)", + "Try out new ways to ignore people (experimental)": "Tente novas maneiras de bloquear pessoas (experimental)", "Support adding custom themes": "Permite adicionar temas personalizados", "Enable advanced debugging for the room list": "Ativar a depuração avançada para a lista de salas", "Show info about bridges in room settings": "Exibir informações sobre bridges nas configurações das salas", @@ -1352,7 +1352,7 @@ "IRC display name width": "Largura do nome e sobrenome nas mensagens", "Enable experimental, compact IRC style layout": "Ativar o layout compacto experimental nas mensagens", "When rooms are upgraded": "Quando salas são atualizadas", - "My Ban List": "Minha lista de bloqueados", + "My Ban List": "Minha lista de banidos", "This is your list of users/servers you have blocked - don't leave the room!": "Esta é a sua lista de usuárias(os)/servidores que você bloqueou - não saia da sala!", "Unknown caller": "Pessoa desconhecida ligando", "Incoming voice call": "Recebendo chamada de voz", @@ -1453,14 +1453,14 @@ "Your keys are not being backed up from this session.": "Suas chaves não estão sendo copiadas desta sessão.", "wait and try again later": "aguarde e tente novamente mais tarde", "Please verify the room ID or address and try again.": "Por favor, verifique o ID ou endereço da sala e tente novamente.", - "Ignoring people is done through ban lists which contain rules for who to ban. Subscribing to a ban list means the users/servers blocked by that list will be hidden from you.": "É possível silenciar pessoas através de listas de bloqueio que contêm regras sobre quem bloquear. Colocar alguém na lista de bloqueio significa que as pessoas ou servidores bloqueados pela lista não serão visualizados por você.", + "Ignoring people is done through ban lists which contain rules for who to ban. Subscribing to a ban list means the users/servers blocked by that list will be hidden from you.": "É possível bloquear pessoas através de listas de banimento que contêm regras sobre quem banir de salas. Colocar alguém na lista de banimento significa que as pessoas ou servidores bloqueados pela lista não serão visualizados por você.", "Session key:": "Chave da sessão:", - "Your server admin has disabled end-to-end encryption by default in private rooms & Direct Messages.": "O administrador do servidor desativou a criptografia de ponta a ponta por padrão em salas privadas e conversas diretas.", + "Your server admin has disabled end-to-end encryption by default in private rooms & Direct Messages.": "O administrador do servidor desativou a criptografia de ponta a ponta por padrão em salas privadas e em conversas.", "Manage the names of and sign out of your sessions below or verify them in your User Profile.": "Gerencie os nomes de suas sessões e saia das mesmas abaixo ou verifique-as no seu Perfil de Usuário.", "A session's public name is visible to people you communicate with": "O nome público de uma sessão é visível para as pessoas com quem você se comunica", "Enable room encryption": "Ativar criptografia nesta sala", "Enable encryption?": "Ativar criptografia?", - "Once enabled, encryption for a room cannot be disabled. Messages sent in an encrypted room cannot be seen by the server, only by the participants of the room. Enabling encryption may prevent many bots and bridges from working correctly. Learn more about encryption.": "Uma vez ativada, a criptografia da sala não poderá ser desativada. Mensagens enviadas em uma sala criptografada não podem ser vistas pelo servidor, apenas pelos participantes da sala. Ativar a criptografia poderá impedir que vários bots e bridges funcionem corretamente. Saiba mais sobre criptografia.", + "Once enabled, encryption for a room cannot be disabled. Messages sent in an encrypted room cannot be seen by the server, only by the participants of the room. Enabling encryption may prevent many bots and bridges from working correctly. Learn more about encryption.": "Uma vez ativada, a criptografia da sala não poderá ser desativada. Mensagens enviadas em uma sala criptografada não podem ser lidas pelo servidor, apenas pelos participantes da sala. Ativar a criptografia poderá impedir que vários bots e bridges funcionem corretamente. Saiba mais sobre criptografia.", "Encryption": "Criptografia", "Once enabled, encryption cannot be disabled.": "Uma vez ativada, a criptografia não poderá ser desativada.", "Encrypted": "Criptografada", @@ -1490,7 +1490,7 @@ "In encrypted rooms, your messages are secured and only you and the recipient have the unique keys to unlock them.": "Em salas criptografadas, suas mensagens estão seguras e apenas você e a pessoa que a recebe têm as chaves únicas que permitem a sua leitura.", "Verify User": "Verificar usuária(o)", "For extra security, verify this user by checking a one-time code on both of your devices.": "Para maior segurança, verifique esta(e) usuária(o) verificando um código único em ambos aparelhos.", - "You are about to remove %(count)s messages by %(user)s. This cannot be undone. Do you wish to continue?|other": "Você está a ponto de remover %(count)s mensagens de %(user)s. Isso não poderá ser desfeito. Quer continuar?", + "You are about to remove %(count)s messages by %(user)s. This cannot be undone. Do you wish to continue?|other": "Você apagará para todos as %(count)s mensagens de %(user)s na sala. Isso não pode ser desfeito. Deseja continuar?", "You are about to remove %(count)s messages by %(user)s. This cannot be undone. Do you wish to continue?|one": "Você está a ponto de remover 1 mensagem de %(user)s. Isso não poderá ser desfeito. Quer continuar?", "This client does not support end-to-end encryption.": "A sua versão do aplicativo não suporta a criptografia de ponta a ponta.", "The session you are trying to verify doesn't support scanning a QR code or emoji verification, which is what %(brand)s supports. Try with a different client.": "A sessão que você está tentando verificar não permite escanear QR code ou verificação via emojis, que é o que %(brand)s permite. Tente um cliente diferente.", @@ -1554,7 +1554,7 @@ "Backup could not be decrypted with this recovery key: please verify that you entered the correct recovery key.": "O backup não pôde ser descriptografado com esta chave de recuperação: por favor, verifique se você entrou com a chave de recuperação correta.", "Backup could not be decrypted with this recovery passphrase: please verify that you entered the correct recovery passphrase.": "O backup não pôde ser descriptografado com esta frase de recuperação: por favor, verifique se você entrou com a frase de recuperação correta.", "Warning: you should only set up key backup from a trusted computer.": "Atenção: você só deve configurar a cópia de segurança (backup) das chaves em um computador de sua confiança.", - "Enter recovery key": "Entre com a chave de recuperação", + "Enter recovery key": "Digite a chave de recuperação", "Warning: You should only set up key backup from a trusted computer.": "Atenção: Você só deve configurar a cópia de segurança (backup) das chaves em um computador de sua confiança.", "If you've forgotten your recovery key you can ": "Se você esqueceu sua chave de recuperação, pode ", "Missing captcha public key in homeserver configuration. Please report this to your homeserver administrator.": "Está faltando a chave pública do captcha no Servidor (homeserver). Por favor, reporte isso aos(às) administradores(as) do servidor.", @@ -1574,8 +1574,8 @@ "Changing your password will reset any end-to-end encryption keys on all of your sessions, making encrypted chat history unreadable. Set up Key Backup or export your room keys from another session before resetting your password.": "Alterar a sua senha redefinirá todas as chaves de criptografia de ponta a ponta existentes em todas as suas sessões, tornando o histórico de mensagens criptografadas ilegível. Faça uma cópia (backup) das suas chaves, ou exporte as chaves de outra sessão antes de alterar a sua senha.", "Create account": "Criar conta", "Create your account": "Criar sua conta", - "Use Recovery Key or Passphrase": "Use a Chave ou a Frase de Recuperação", - "Use Recovery Key": "Use a Chave de Recuperação", + "Use Recovery Key or Passphrase": "Use a chave de recuperação, ou a frase de recuperação", + "Use Recovery Key": "Use a chave de recuperação", "Confirm your identity by verifying this login from one of your other sessions, granting it access to encrypted messages.": "Confirme sua identidade através da verificação deste login em qualquer uma de suas outras sessões, garantindo a elas acesso a mensagens criptografadas.", "Your new session is now verified. It has access to your encrypted messages, and other users will see it as trusted.": "Sua nova sessão está agora verificada. Ela tem acesso às suas mensagens criptografadas, e outras(os) usuárias(os) poderão ver esta sessão como confiável.", "Without completing security on this session, it won’t have access to encrypted messages.": "Sem completar os procedimentos de segurança nesta sessão, você não terá acesso a mensagens criptografadas.", @@ -1597,7 +1597,7 @@ "Set up with a recovery key": "Configurar com uma chave de recuperação", "Your recovery key is a safety net - you can use it to restore access to your encrypted messages if you forget your recovery passphrase.": "Sua chave de recuperação é uma rede de proteção - você pode usá-la para restaurar o acesso às suas mensagens criptografadas se você esquecer sua frase de recuperação.", "Your recovery key": "Sua chave de recuperação", - "Your recovery key has been copied to your clipboard, paste it to:": "Sua chave de recuperação foi copiada para sua área de transferência. Cole-a para:", + "Your recovery key has been copied to your clipboard, paste it to:": "Sua chave de recuperação foi copiada para sua área de transferência. Cole-a em:", "Your recovery key is in your Downloads folder.": "Sua chave de recuperação está na sua pasta de Downloads.", "Without setting up Secure Message Recovery, you won't be able to restore your encrypted message history if you log out or use another session.": "Sem configurar a Recuperação Segura de Mensagens, você não será capaz de restaurar seu histórico de mensagens criptografadas e fizer logout ou usar outra sessão.", "Make a copy of your recovery key": "Fazer uma cópia de sua chave de recuperação", @@ -1615,9 +1615,9 @@ "Clear notifications": "Limpar notificações", "There are advanced notifications which are not shown here.": "Existem notificações avançadas que não são mostradas aqui.", "Enable desktop notifications for this session": "Ativar notificações na área de trabalho nesta sessão", - "Mentions & Keywords": "Menções & Palavras-Chave", - "Notification options": "Opções de notificação", - "Leave Room": "Sair da Sala", + "Mentions & Keywords": "Apenas @menções e palavras-chave", + "Notification options": "Alterar notificações", + "Leave Room": "Sair da sala", "Forget Room": "Esquecer Sala", "Favourited": "Favoritado", "You cancelled verifying %(name)s": "Você cancelou a verificação do %(name)s", @@ -1822,7 +1822,7 @@ "Deactivate account": "Desativar minha conta", "Clear cache and reload": "Limpar cache e recarregar", "To report a Matrix-related security issue, please read the Matrix.org Security Disclosure Policy.": "Para relatar um problema de segurança relacionado à tecnologia Matrix, leia a Política de Divulgação de Segurança da Matrix.org.", - "Always show the window menu bar": "Sempre mostrar a barra de menu na janela", + "Always show the window menu bar": "Mostrar a barra de menu na janela", "Show tray icon and minimize window to it on close": "Mostrar ícone na barra de tarefas, que permanece visível ao fechar a janela", "Read Marker lifetime (ms)": "Duração do marcador de leitura (ms)", "Read Marker off-screen lifetime (ms)": "Vida útil do marcador de leitura fora da tela (ms)", @@ -1844,7 +1844,7 @@ "Reason: %(reason)s": "Razão: %(reason)s", "Forget this room": "Esquecer esta sala", "Re-join": "Entrar novamente", - "You were banned from %(roomName)s by %(memberName)s": "Você foi bloqueado de %(roomName)s por %(memberName)s", + "You were banned from %(roomName)s by %(memberName)s": "Você foi banido de %(roomName)s por %(memberName)s", "Something went wrong with your invite to %(roomName)s": "Ocorreu um erro no seu convite para %(roomName)s", "An error (%(errcode)s) was returned while trying to validate your invite. You could try to pass this information on to a room admin.": "Ocorreu um erro (%(errcode)s) ao validar seu convite. Você pode passar essas informações para um administrador da sala.", "You can only join it with a working invite.": "Você só pode participar com um convite válido.", @@ -1860,18 +1860,18 @@ " wants to chat": " quer conversar", "Do you want to join %(roomName)s?": "Deseja se juntar a %(roomName)s?", " invited you": " convidou você", - "Reject & Ignore user": "Recusar e silenciar usuário", + "Reject & Ignore user": "Recusar e bloquear usuário", "You're previewing %(roomName)s. Want to join it?": "Você está visualizando %(roomName)s. Deseja participar?", "%(roomName)s can't be previewed. Do you want to join it?": "%(roomName)s não pode ser visualizado. Deseja participar?", "This room doesn't exist. Are you sure you're at the right place?": "Esta sala não existe. Tem certeza de que você está no lugar certo?", "Securely back up your keys to avoid losing them. Learn more.": "Faça backup de suas chaves com segurança para evitar perdê-las. Saiba mais.", "Not now": "Agora não", "Don't ask me again": "Não pergunte novamente", - "Appearance": "Aparência", - "Show rooms with unread messages first": "Mostrar salas com mensagens não lidas primeiro", - "Show previews of messages": "Mostrar pré-visualizações de mensagens", + "Appearance": "Mostrar", + "Show rooms with unread messages first": "Salas não lidas primeiro", + "Show previews of messages": "Pré-visualizações de mensagens", "Sort by": "Ordenar por", - "Activity": "Atividade", + "Activity": "Atividade recente", "A-Z": "A-Z", "Unknown Command": "Comando desconhecido", "Unrecognised command: %(commandText)s": "Comando não reconhecido: %(commandText)s", @@ -1924,25 +1924,25 @@ "Integration Managers receive configuration data, and can modify widgets, send room invites, and set power levels on your behalf.": "O Gerenciador de Integrações recebe dados de configuração e pode modificar widgets, enviar convites para salas e definir níveis de permissão em seu nome.", "Keyboard Shortcuts": "Atalhos do teclado", "Customise your experience with experimental labs features. Learn more.": "Personalize sua experiência com os recursos experimentais. Saiba mais.", - "Ignored/Blocked": "Silenciado/Bloqueado", - "Error adding ignored user/server": "Erro ao adicionar usuário/servidor silenciado", + "Ignored/Blocked": "Bloqueado", + "Error adding ignored user/server": "Erro ao adicionar usuário/servidor bloqueado", "Something went wrong. Please try again or view your console for hints.": "Não foi possível carregar. Por favor, tente novamente ou veja seu console para obter dicas.", "Error subscribing to list": "Erro ao inscrever-se na lista", - "Error removing ignored user/server": "Erro ao remover usuário/servidor silenciado", + "Error removing ignored user/server": "Erro ao remover usuário/servidor bloqueado", "Error unsubscribing from list": "Erro ao cancelar a inscrição da lista", "Please try again or view your console for hints.": "Por favor, tente novamente ou veja seu console para obter dicas.", - "None": "Nenhum", + "None": "Nenhuma", "Server rules": "Regras do servidor", "User rules": "Regras do usuário", - "You have not ignored anyone.": "Você não silenciou ninguém.", - "You are currently ignoring:": "Você está silenciando atualmente:", + "You have not ignored anyone.": "Você não bloqueou ninguém.", + "You are currently ignoring:": "Você está bloqueando:", "You are not subscribed to any lists": "Você não está inscrito em nenhuma lista", "Unsubscribe": "Desinscrever-se", "View rules": "Ver regras", "You are currently subscribed to:": "No momento, você está inscrito em:", "⚠ These settings are meant for advanced users.": "⚠ Essas configurações são destinadas a usuários avançados.", - "Add users and servers you want to ignore here. Use asterisks to have %(brand)s match any characters. For example, @bot:* would ignore all users that have the name 'bot' on any server.": "Adicione aqui os usuários e servidores que você deseja silenciar. Use asteriscos para fazer com que o %(brand)s corresponda a qualquer caractere. Por exemplo, @bot:* silenciará todos os usuários em qualquer servidor que tenham 'bot' no nome.", - "Server or user ID to ignore": "Servidor ou ID de usuário para silenciar", + "Add users and servers you want to ignore here. Use asterisks to have %(brand)s match any characters. For example, @bot:* would ignore all users that have the name 'bot' on any server.": "Adicione aqui os usuários e servidores que você deseja bloquear. Use asteriscos para fazer com que o %(brand)s corresponda a qualquer caractere. Por exemplo, @bot:* bloqueará todos os usuários em qualquer servidor que tenham 'bot' no nome.", + "Server or user ID to ignore": "Servidor ou ID de usuário para bloquear", "Subscribe": "Inscrever-se", "Session ID:": "ID da sessão:", "Message search": "Pesquisa de mensagens", @@ -1951,9 +1951,9 @@ "Browse": "Buscar", "Upgrade the room": "Atualizar a sala", "Kick users": "Remover usuários", - "Ban users": "Bloquear usuários", - "Remove messages": "Remover mensagens", - "Notify everyone": "Notificar todo mundo", + "Ban users": "Banir usuários", + "Remove messages": "Apagar mensagens dos outros", + "Notify everyone": "Notificar todos", "Your email address hasn't been verified yet": "Seu endereço de e-mail ainda não foi verificado", "Revoke": "Revogar", "Share": "Compartilhar", @@ -1967,7 +1967,7 @@ "You have not verified this user.": "Você não verificou este usuário.", "You have verified this user. This user has verified all of their sessions.": "Você confirmou este usuário. Este usuário verificou todas as próprias sessões.", "Someone is using an unknown session": "Alguém está usando uma sessão desconhecida", - "Everyone in this room is verified": "Todo mundo nesta sala está verificado", + "Everyone in this room is verified": "Todos nesta sala estão verificados", "Edit message": "Editar mensagem", "Mod": "Moderador", "Scroll to most recent messages": "Ir para as mensagens mais recentes", @@ -2010,10 +2010,10 @@ "%(count)s sessions|one": "%(count)s sessão", "Hide sessions": "Esconder sessões", "No recent messages by %(user)s found": "Nenhuma mensagem recente de %(user)s foi encontrada", - "Remove recent messages by %(user)s": "Remover mensagens recentes de %(user)s", - "Remove %(count)s messages|other": "Remover %(count)s mensagens", + "Remove recent messages by %(user)s": "Apagar mensagens de %(user)s na sala", + "Remove %(count)s messages|other": "Apagar %(count)s mensagens para todos", "Remove %(count)s messages|one": "Remover 1 mensagem", - "Remove recent messages": "Remover mensagens recentes", + "Remove recent messages": "Apagar mensagens desta pessoa na sala", "%(role)s in %(roomName)s": "%(role)s em %(roomName)s", "Deactivate user?": "Desativar usuário?", "Deactivate user": "Desativar usuário", @@ -2027,7 +2027,7 @@ "Verification cancelled": "Verificação cancelada", "Compare emoji": "Compare os emojis", "Show image": "Mostrar imagem", - "You have ignored this user, so their message is hidden. Show anyways.": "Você silenciou este usuário, portanto, a mensagem dele foi escondida. Mostrar mesmo assim.", + "You have ignored this user, so their message is hidden. Show anyways.": "Você bloqueou este usuário, portanto, a mensagem dele foi escondida. Mostrar mesmo assim.", "You verified %(name)s": "Você verificou %(name)s", "Use an identity server to invite by email. Use the default (%(defaultIdentityServerName)s) or manage in Settings.": "Use um servidor de identidade para convidar por e-mail. Use o padrão (%(defaultIdentityServerName)s) ou um servidor personalizado em Configurações.", "Use an identity server to invite by email. Manage in Settings.": "Use um servidor de identidade para convidar por e-mail. Gerencie o servidor em Configurações.", @@ -2086,7 +2086,7 @@ "Set status": "Definir status", "Hide": "Esconder", "Help": "Ajuda", - "Remove for everyone": "Remover para todo mundo", + "Remove for everyone": "Remover para todos", "Remove for me": "Remover para mim", "User Status": "Status do usuário", "This homeserver would like to make sure you are not a robot.": "Este servidor local quer se certificar de que você não é um robô.", @@ -2152,12 +2152,12 @@ "Enter": "Enter", "Change notification settings": "Alterar configuração de notificações", "Your server isn't responding to some requests.": "Seu servidor não está respondendo a algumas solicitações.", - "Ban list rules - %(roomName)s": "Regras da lista de bloqueados - %(roomName)s", - "Personal ban list": "Lista pessoal de bloqueio", - "Your personal ban list holds all the users/servers you personally don't want to see messages from. After ignoring your first user/server, a new room will show up in your room list named 'My Ban List' - stay in this room to keep the ban list in effect.": "Sua lista de bloqueios pessoais contém todos os usuários/servidores dos quais você pessoalmente não deseja mais receber mensagens. Depois de silenciar o primeiro usuário/servidor, uma nova sala será exibida na sua lista de salas chamada 'Minha lista de bloqueios' - permaneça nesta sala para manter a lista de bloqueios em vigor.", - "Subscribing to a ban list will cause you to join it!": "Inscrever-se em uma lista de bloqueios significa participar dela!", - "If this isn't what you want, please use a different tool to ignore users.": "Se isso não for o que você deseja, use outra ferramenta para silenciar os usuários.", - "Room ID or address of ban list": "ID da sala ou endereço da lista de bloqueios", + "Ban list rules - %(roomName)s": "Regras da lista de banidos - %(roomName)s", + "Personal ban list": "Lista pessoal de banidos", + "Your personal ban list holds all the users/servers you personally don't want to see messages from. After ignoring your first user/server, a new room will show up in your room list named 'My Ban List' - stay in this room to keep the ban list in effect.": "Sua lista pessoal de banidos contém todos os usuários/servidores dos quais você não deseja mais receber mensagens. Depois de bloquear o primeiro usuário/servidor, uma nova sala será exibida na sua lista de salas chamada 'Minha lista de banidos' - permaneça nesta sala para manter a lista de banidos em vigor.", + "Subscribing to a ban list will cause you to join it!": "Inscrever-se em uma lista de banidos significa participar dela!", + "If this isn't what you want, please use a different tool to ignore users.": "Se isso não for o que você deseja, use outra ferramenta para bloquear os usuários.", + "Room ID or address of ban list": "ID da sala ou endereço da lista de banidos", "Uploaded sound": "Som enviado", "Sounds": "Sons", "Notification sound": "Som de notificação", @@ -2165,8 +2165,8 @@ "Unable to share email address": "Não foi possível compartilhar o endereço de e-mail", "Direct message": "Enviar mensagem", "Incoming Verification Request": "Recebendo solicitação de verificação", - "Recently Direct Messaged": "Mensagens enviadas recentemente", - "Direct Messages": "Mensagens enviadas", + "Recently Direct Messaged": "Conversas recentes", + "Direct Messages": "Conversas", "Your account is not secure": "Sua conta não está segura", "Server isn't responding": "O servidor não está respondendo", "Your server isn't responding to some of your requests. Below are some of the most likely reasons.": "Seu servidor não está respondendo a algumas de suas solicitações. Abaixo estão alguns dos motivos mais prováveis.", @@ -2223,5 +2223,6 @@ "Homeserver URL does not appear to be a valid Matrix homeserver": "O endereço do servidor local não parece indicar um servidor local válido na Matrix", "Identity server URL does not appear to be a valid identity server": "O endereço do servidor de identidade não parece indicar um servidor de identidade válido", "This homeserver does not support login using email address.": "Este servidor local não suporta login usando endereço de e-mail.", - "or another cross-signing capable Matrix client": "ou outro cliente Matrix com capacidade de autoverificação" + "or another cross-signing capable Matrix client": "ou outro cliente Matrix com capacidade de autoverificação", + "For a large amount of messages, this might take some time. Please don't refresh your client in the meantime.": "Quando há muitas mensagens, isso pode levar algum tempo. Por favor, não recarregue o seu cliente enquanto isso." } From 4d6d350df6cb60241f5e9a01abe3d18cd8be025c Mon Sep 17 00:00:00 2001 From: strix aluco Date: Sun, 9 Aug 2020 17:14:55 +0000 Subject: [PATCH 117/424] Translated using Weblate (Ukrainian) Currently translated at 48.9% (1145 of 2341 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/uk/ --- src/i18n/strings/uk.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/uk.json b/src/i18n/strings/uk.json index d593d406f3..c895da1ba4 100644 --- a/src/i18n/strings/uk.json +++ b/src/i18n/strings/uk.json @@ -1153,5 +1153,6 @@ "You'll lose access to your encrypted messages": "Ви втратите доступ до ваших зашифрованих повідомлень", "Use this session to verify your new one, granting it access to encrypted messages:": "Використати цей сеанс для звірення вашого нового сеансу, надаючи йому доступ до зашифрованих повідомлень:", "Reporting this message will send its unique 'event ID' to the administrator of your homeserver. If messages in this room are encrypted, your homeserver administrator will not be able to read the message text or view any files or images.": "Скарження на це повідомлення надішле його унікальний 'ідентифікатор події (event ID)' адміністраторові вашого домашнього сервера. Якщо повідомлення у цій кімнаті зашифровані, то адміністратор не зможе бачити ані тексту повідомлень, ані жодних файлів чи зображень.", - "Some session data, including encrypted message keys, is missing. Sign out and sign in to fix this, restoring keys from backup.": "Бракує деяких даних сеансу, включно з ключами зашифрованих повідомлень. Вийдіть та зайдіть знову щоб виправити цю проблему, відновлюючи ключі з дубля." + "Some session data, including encrypted message keys, is missing. Sign out and sign in to fix this, restoring keys from backup.": "Бракує деяких даних сеансу, включно з ключами зашифрованих повідомлень. Вийдіть та зайдіть знову щоб виправити цю проблему, відновлюючи ключі з дубля.", + "Data from an older version of %(brand)s has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Було виявлено дані зі старої версії %(brand)s. Це призведе до збоїння наскрізного шифрування у старій версії. Наскрізно зашифровані повідомлення, що обмінювані нещодавно, під час використання старої версії, можуть бути недешифровними у цій версії. Це може призвести до збоїв повідомлень, обмінюваних також і з цією версією. У разі виникнення проблем вийдіть з програми та зайдіть знову. Задля збереження історії повідомлень експортуйте та переімпортуйте ваші ключі." } From d866b2d9ef8e503e86de978d7a4ddf49ed26a770 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Mon, 10 Aug 2020 20:52:05 -0600 Subject: [PATCH 118/424] Generate previews for rooms when the option changes Fixes https://github.com/vector-im/element-web/issues/14853 This likely regressed in https://github.com/matrix-org/matrix-react-sdk/pull/5048 when the message preview information was made state, and the component wasn't updating the preview when the control flags changed. --- src/components/views/rooms/RoomTile.tsx | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/components/views/rooms/RoomTile.tsx b/src/components/views/rooms/RoomTile.tsx index 7c5c5b469b..09f201e3ef 100644 --- a/src/components/views/rooms/RoomTile.tsx +++ b/src/components/views/rooms/RoomTile.tsx @@ -120,6 +120,12 @@ export default class RoomTile extends React.PureComponent { return !this.props.isMinimized && this.props.showMessagePreview; } + public componentDidUpdate(prevProps: Readonly, prevState: Readonly) { + if (prevProps.showMessagePreview !== this.props.showMessagePreview && this.showMessagePreview) { + this.setState({messagePreview: this.generatePreview()}); + } + } + public componentDidMount() { // when we're first rendered (or our sublist is expanded) make sure we are visible if we're active if (this.state.selected) { From 9e429ee6694aa9cdf7a51552d3851d046ce6e0bd Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Tue, 11 Aug 2020 14:26:12 +0100 Subject: [PATCH 119/424] Remove rebranding toast It's time to remove the rebranding toast, as we believe people have had sufficient warning now. Fixes https://github.com/vector-im/element-web/issues/14931 --- res/css/_components.scss | 1 - res/css/structures/_ToastContainer.scss | 4 - res/css/views/dialogs/_RebrandDialog.scss | 64 ------ res/img/element-logo.svg | 6 - res/img/riot-logo.svg | 6 - src/Lifecycle.js | 4 - src/RebrandListener.tsx | 184 ------------------ .../views/dialogs/RebrandDialog.tsx | 116 ----------- src/i18n/strings/en_EN.json | 9 - 9 files changed, 394 deletions(-) delete mode 100644 res/css/views/dialogs/_RebrandDialog.scss delete mode 100644 res/img/element-logo.svg delete mode 100644 res/img/riot-logo.svg delete mode 100644 src/RebrandListener.tsx delete mode 100644 src/components/views/dialogs/RebrandDialog.tsx diff --git a/res/css/_components.scss b/res/css/_components.scss index 0dc267e130..7dd8a2034d 100644 --- a/res/css/_components.scss +++ b/res/css/_components.scss @@ -72,7 +72,6 @@ @import "./views/dialogs/_KeyboardShortcutsDialog.scss"; @import "./views/dialogs/_MessageEditHistoryDialog.scss"; @import "./views/dialogs/_NewSessionReviewDialog.scss"; -@import "./views/dialogs/_RebrandDialog.scss"; @import "./views/dialogs/_RoomSettingsDialog.scss"; @import "./views/dialogs/_RoomSettingsDialogBridges.scss"; @import "./views/dialogs/_RoomUpgradeDialog.scss"; diff --git a/res/css/structures/_ToastContainer.scss b/res/css/structures/_ToastContainer.scss index e798e4ac52..544dcbc180 100644 --- a/res/css/structures/_ToastContainer.scss +++ b/res/css/structures/_ToastContainer.scss @@ -80,10 +80,6 @@ limitations under the License. } } - &.mx_Toast_icon_element_logo::after { - background-image: url("$(res)/img/element-logo.svg"); - } - .mx_Toast_title, .mx_Toast_body { grid-column: 2; } diff --git a/res/css/views/dialogs/_RebrandDialog.scss b/res/css/views/dialogs/_RebrandDialog.scss deleted file mode 100644 index 534584ae2a..0000000000 --- a/res/css/views/dialogs/_RebrandDialog.scss +++ /dev/null @@ -1,64 +0,0 @@ -/* -Copyright 2020 The Matrix.org Foundation C.I.C. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_RebrandDialog { - text-align: center; - - a:link, - a:hover, - a:visited { - @mixin mx_Dialog_link; - } - - .mx_Dialog_buttons { - margin-top: 43px; - text-align: center; - } -} - -.mx_RebrandDialog_body { - width: 550px; - margin-left: auto; - margin-right: auto; -} - -.mx_RebrandDialog_logoContainer { - margin-top: 35px; - margin-bottom: 20px; - display: flex; - align-items: center; - justify-content: center; -} - -.mx_RebrandDialog_logo { - margin-left: 28px; - margin-right: 28px; - width: 64px; - height: 64px; -} - -.mx_RebrandDialog_chevron::after { - content: ''; - display: inline-block; - width: 30px; - height: 30px; - mask-position: center; - mask-size: contain; - mask-repeat: no-repeat; - background-color: $muted-fg-color; - mask-image: url('$(res)/img/feather-customised/chevron-down.svg'); - transform: rotate(-90deg); -} diff --git a/res/img/element-logo.svg b/res/img/element-logo.svg deleted file mode 100644 index 2cd11ed193..0000000000 --- a/res/img/element-logo.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/res/img/riot-logo.svg b/res/img/riot-logo.svg deleted file mode 100644 index ac1e547234..0000000000 --- a/res/img/riot-logo.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/Lifecycle.js b/src/Lifecycle.js index 2bebe22f14..d2de31eb80 100644 --- a/src/Lifecycle.js +++ b/src/Lifecycle.js @@ -40,7 +40,6 @@ import ToastStore from "./stores/ToastStore"; import {IntegrationManagers} from "./integrations/IntegrationManagers"; import {Mjolnir} from "./mjolnir/Mjolnir"; import DeviceListener from "./DeviceListener"; -import RebrandListener from "./RebrandListener"; import {Jitsi} from "./widgets/Jitsi"; import {SSO_HOMESERVER_URL_KEY, SSO_ID_SERVER_URL_KEY} from "./BasePlatform"; @@ -647,8 +646,6 @@ async function startMatrixClient(startSyncing=true) { // Now that we have a MatrixClientPeg, update the Jitsi info await Jitsi.getInstance().start(); - RebrandListener.sharedInstance().start(); - // dispatch that we finished starting up to wire up any other bits // of the matrix client that cannot be set prior to starting up. dis.dispatch({action: 'client_started'}); @@ -710,7 +707,6 @@ export function stopMatrixClient(unsetClient=true) { IntegrationManagers.sharedInstance().stopWatching(); Mjolnir.sharedInstance().stop(); DeviceListener.sharedInstance().stop(); - RebrandListener.sharedInstance().stop(); if (DMRoomMap.shared()) DMRoomMap.shared().stop(); EventIndexPeg.stop(); const cli = MatrixClientPeg.get(); diff --git a/src/RebrandListener.tsx b/src/RebrandListener.tsx deleted file mode 100644 index 47b883cf35..0000000000 --- a/src/RebrandListener.tsx +++ /dev/null @@ -1,184 +0,0 @@ -/* -Copyright 2020 The Matrix.org Foundation C.I.C. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -import SdkConfig from "./SdkConfig"; -import ToastStore from "./stores/ToastStore"; -import GenericToast from "./components/views/toasts/GenericToast"; -import RebrandDialog from "./components/views/dialogs/RebrandDialog"; -import { RebrandDialogKind } from "./components/views/dialogs/RebrandDialog"; -import Modal from './Modal'; -import { _t } from './languageHandler'; - -const TOAST_KEY = 'rebrand'; -const NAG_INTERVAL = 24 * 60 * 60 * 1000; - -function getRedirectUrl(url): string { - const redirectUrl = new URL(url); - redirectUrl.hash = ''; - - if (SdkConfig.get()['redirectToNewBrandUrl']) { - const newUrl = new URL(SdkConfig.get()['redirectToNewBrandUrl']); - if (url.hostname !== newUrl.hostname || url.pathname !== newUrl.pathname) { - redirectUrl.hostname = newUrl.hostname; - redirectUrl.pathname = newUrl.pathname; - return redirectUrl.toString(); - } - return null; - } else if (url.hostname === 'riot.im') { - if (url.pathname.startsWith('/app')) { - redirectUrl.hostname = 'app.element.io'; - redirectUrl.pathname = '/'; - } else if (url.pathname.startsWith('/staging')) { - redirectUrl.hostname = 'staging.element.io'; - redirectUrl.pathname = '/'; - } else if (url.pathname.startsWith('/develop')) { - redirectUrl.hostname = 'develop.element.io'; - redirectUrl.pathname = '/'; - } - - return redirectUrl.href; - } else if (url.hostname.endsWith('.riot.im')) { - redirectUrl.hostname = url.hostname.substr(0, url.hostname.length - '.riot.im'.length) + '.element.io'; - return redirectUrl.href; - } else { - return null; - } -} - -/** - * Shows toasts informing the user that the name of the app has changed and, - * potentially, that they should head to a different URL and log in there - */ -export default class RebrandListener { - private _reshowTimer?: number; - private nagAgainAt?: number = null; - - static sharedInstance() { - if (!window.mxRebrandListener) window.mxRebrandListener = new RebrandListener(); - return window.mxRebrandListener; - } - - constructor() { - this._reshowTimer = null; - } - - start() { - this.recheck(); - } - - stop() { - if (this._reshowTimer) { - clearTimeout(this._reshowTimer); - this._reshowTimer = null; - } - } - - onNagToastLearnMore = async () => { - const [doneClicked] = await Modal.createDialog(RebrandDialog, { - kind: RebrandDialogKind.NAG, - targetUrl: getRedirectUrl(window.location), - }).finished; - if (doneClicked) { - // open in new tab: they should come back here & log out - window.open(getRedirectUrl(window.location), '_blank'); - } - - // whatever the user clicks, we go away & nag again after however long: - // If they went to the new URL, we want to nag them to log out if they - // come back to this tab, and if they clicked, 'remind me later' we want - // to, well, remind them later. - this.nagAgainAt = Date.now() + NAG_INTERVAL; - this.recheck(); - }; - - onOneTimeToastLearnMore = async () => { - const [doneClicked] = await Modal.createDialog(RebrandDialog, { - kind: RebrandDialogKind.ONE_TIME, - }).finished; - if (doneClicked) { - localStorage.setItem('mx_rename_dialog_dismissed', 'true'); - this.recheck(); - } - }; - - onOneTimeToastDismiss = async () => { - localStorage.setItem('mx_rename_dialog_dismissed', 'true'); - this.recheck(); - }; - - onNagTimerFired = () => { - this._reshowTimer = null; - this.nagAgainAt = null; - this.recheck(); - }; - - private async recheck() { - // There are two types of toast/dialog we show: a 'one time' informing the user that - // the app is now called a different thing but no action is required from them (they - // may need to look for a different name name/icon to launch the app but don't need to - // log in again) and a nag toast where they need to log in to the app on a different domain. - let nagToast = false; - let oneTimeToast = false; - - if (getRedirectUrl(window.location)) { - if (!this.nagAgainAt) { - // if we have redirectUrl, show the nag toast - nagToast = true; - } - } else { - // otherwise we show the 'one time' toast / dialog - const renameDialogDismissed = localStorage.getItem('mx_rename_dialog_dismissed'); - if (renameDialogDismissed !== 'true') { - oneTimeToast = true; - } - } - - if (nagToast || oneTimeToast) { - let description; - let rejectLabel = null; - let onReject = null; - if (nagToast) { - description = _t("Use your account to sign in to the latest version"); - } else { - description = _t("We’re excited to announce Riot is now Element"); - rejectLabel = _t("Dismiss"); - onReject = this.onOneTimeToastDismiss; - } - - ToastStore.sharedInstance().addOrReplaceToast({ - key: TOAST_KEY, - title: _t("Riot is now Element!"), - icon: 'element_logo', - props: { - description, - acceptLabel: _t("Learn More"), - onAccept: nagToast ? this.onNagToastLearnMore : this.onOneTimeToastLearnMore, - rejectLabel, - onReject, - }, - component: GenericToast, - priority: 20, - }); - } else { - ToastStore.sharedInstance().dismissToast(TOAST_KEY); - } - - if (!this._reshowTimer && this.nagAgainAt) { - // XXX: Our build system picks up NodeJS bindings when we need browser bindings. - this._reshowTimer = setTimeout(this.onNagTimerFired, (this.nagAgainAt - Date.now()) + 100) as any as number; - } - } -} diff --git a/src/components/views/dialogs/RebrandDialog.tsx b/src/components/views/dialogs/RebrandDialog.tsx deleted file mode 100644 index 79b4b69a4a..0000000000 --- a/src/components/views/dialogs/RebrandDialog.tsx +++ /dev/null @@ -1,116 +0,0 @@ -/* -Copyright 2020 The Matrix.org Foundation C.I.C. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -import * as React from 'react'; -import * as PropTypes from 'prop-types'; -import BaseDialog from './BaseDialog'; -import { _t } from '../../../languageHandler'; -import DialogButtons from '../elements/DialogButtons'; - -export enum RebrandDialogKind { - NAG, - ONE_TIME, -} - -interface IProps { - onFinished: (bool) => void; - kind: RebrandDialogKind; - targetUrl?: string; -} - -export default class RebrandDialog extends React.PureComponent { - private onDoneClick = () => { - this.props.onFinished(true); - }; - - private onGoToElementClick = () => { - this.props.onFinished(true); - }; - - private onRemindMeLaterClick = () => { - this.props.onFinished(false); - }; - - private getPrettyTargetUrl() { - const u = new URL(this.props.targetUrl); - let ret = u.host; - if (u.pathname !== '/') ret += u.pathname; - return ret; - } - - getBodyText() { - if (this.props.kind === RebrandDialogKind.NAG) { - return _t( - "Use your account to sign in to the latest version of the app at ", {}, - { - a: sub => {this.getPrettyTargetUrl()}, - }, - ); - } else { - return _t( - "You’re already signed in and good to go here, but you can also grab the latest " + - "versions of the app on all platforms at element.io/get-started.", {}, - { - a: sub => {sub}, - }, - ); - } - } - - getDialogButtons() { - if (this.props.kind === RebrandDialogKind.NAG) { - return ; - } else { - return ; - } - } - - render() { - return -
{this.getBodyText()}
-
- Riot Logo - - Element Logo -
-
- {_t( - "Learn more at element.io/previously-riot", {}, { - a: sub => {sub}, - } - )} -
- {this.getDialogButtons()} -
; - } -} diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 974a96406f..006e7e67bf 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -117,10 +117,6 @@ "Unable to enable Notifications": "Unable to enable Notifications", "This email address was not found": "This email address was not found", "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Your email address does not appear to be associated with a Matrix ID on this Homeserver.", - "Use your account to sign in to the latest version": "Use your account to sign in to the latest version", - "We’re excited to announce Riot is now Element": "We’re excited to announce Riot is now Element", - "Riot is now Element!": "Riot is now Element!", - "Learn More": "Learn More", "Sign In or Create Account": "Sign In or Create Account", "Use your account or create a new one to continue.": "Use your account or create a new one to continue.", "Create Account": "Create Account", @@ -1720,11 +1716,6 @@ "Use this session to verify your new one, granting it access to encrypted messages:": "Use this session to verify your new one, granting it access to encrypted messages:", "If you didn’t sign in to this session, your account may be compromised.": "If you didn’t sign in to this session, your account may be compromised.", "This wasn't me": "This wasn't me", - "Use your account to sign in to the latest version of the app at ": "Use your account to sign in to the latest version of the app at ", - "You’re already signed in and good to go here, but you can also grab the latest versions of the app on all platforms at element.io/get-started.": "You’re already signed in and good to go here, but you can also grab the latest versions of the app on all platforms at element.io/get-started.", - "Go to Element": "Go to Element", - "We’re excited to announce Riot is now Element!": "We’re excited to announce Riot is now Element!", - "Learn more at element.io/previously-riot": "Learn more at element.io/previously-riot", "If you run into any bugs or have feedback you'd like to share, please let us know on GitHub.": "If you run into any bugs or have feedback you'd like to share, please let us know on GitHub.", "To help avoid duplicate issues, please view existing issues first (and add a +1) or create a new issue if you can't find it.": "To help avoid duplicate issues, please view existing issues first (and add a +1) or create a new issue if you can't find it.", "Report bugs & give feedback": "Report bugs & give feedback", From 82cf50de6563a0f5a707c8fd3f99219d9ca2dbb5 Mon Sep 17 00:00:00 2001 From: "@a2sc:matrix.org" Date: Tue, 11 Aug 2020 16:57:33 +0000 Subject: [PATCH 120/424] Translated using Weblate (German) Currently translated at 99.2% (2323 of 2341 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 9407713fde..5310440be8 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -2333,7 +2333,7 @@ "Incoming voice call": "Eingehender Sprachanruf", "Incoming video call": "Eingehender Videoanruf", "Incoming call": "Eingehender Anruf", - "There are advanced notifications which are not shown here.": "Es sind erweiterte Benachrichtigungen vorhanden, die hier nicht angezeigt werden.", + "There are advanced notifications which are not shown here.": "Erweiterte Benachrichtigungen, werden hier nicht angezeigt.", "Are you sure you want to cancel entering passphrase?": "Bist du sicher dass du die Eingabe der Passphrase abbrechen möchtest?", "Use your account to sign in to the latest version": "Verwende dein Konto um dich bei der neusten Version anzumelden", "* %(senderName)s %(emote)s": "* %(senderName)s %(emote)s", @@ -2376,5 +2376,15 @@ "The server has denied your request.": "Der Server hat deine Anfrage abgewiesen.", "Your area is experiencing difficulties connecting to the internet.": "Deine Region hat Schwierigkeiten, eine Verbindung zum Internet herzustellen.", "A connection error occurred while trying to contact the server.": "Beim Versuch, den Server zu kontaktieren, ist ein Verbindungsfehler aufgetreten.", - "You might have configured them in a client other than %(brand)s. You cannot tune them in %(brand)s but they still apply.": "Du hast sie ggf. in einem anderen Client als %(brand)s konfiguriert. Du kannst sie nicht in %(brand)s verändern, aber sie werden trotzdem angewendet. " + "You might have configured them in a client other than %(brand)s. You cannot tune them in %(brand)s but they still apply.": "Du hast sie ggf. in einem anderen Client als %(brand)s konfiguriert. Du kannst sie nicht in %(brand)s verändern, aber sie werden trotzdem angewendet. ", + "Master private key:": "Privater Hauptschlüssel:", + "Set the name of a font installed on your system & %(brand)s will attempt to use it.": "Setze den Schriftnamen auf eine in deinem System installierte Schriftart & %(brand)s werden versuchen sie zu verwenden.", + "Custom Tag": "Benutzerdefinierter Tag", + "You’re already signed in and good to go here, but you can also grab the latest versions of the app on all platforms at element.io/get-started.": "Du bist bereits eingeloggt und kannst loslegen. Allerdings kannst du auch die neuesten Versionen der App für alle Plattformen unter element.io/get-started herunterladen.", + "You're all caught up.": "Alles gesichtet.", + "The server is not configured to indicate what the problem is (CORS).": "Der Server ist nicht so konfiguriert, dass das Problem angezeigt wird (CORS).", + "Recent changes that have not yet been received": "Letzte Änderungen, die noch nicht eingegangen sind", + "Set a Security Phrase": "Sicherheitsphrase setzen", + "Confirm Security Phrase": "Sicherheitsphrase bestätigen", + "Save your Security Key": "Sicherungsschlüssel sichern" } From c0cfffdae64e25e220a484944058b0ef42e8bfa7 Mon Sep 17 00:00:00 2001 From: jadiof Date: Tue, 11 Aug 2020 16:58:26 +0000 Subject: [PATCH 121/424] Translated using Weblate (German) Currently translated at 99.2% (2323 of 2341 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 5310440be8..8dd7932d85 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -2055,7 +2055,7 @@ "Your new session is now verified. It has access to your encrypted messages, and other users will see it as trusted.": "Deine neue Sitzung ist nun verifiziert. Sie hat Zugriff auf deine verschlüsselten Nachrichten, und andere Benutzer sehen sie als vertrauenswürdig an.", "Your new session is now verified. Other users will see it as trusted.": "Deine neue Sitzung ist nun verifiziert. Andere Benutzer sehen sie als vertrauenswürdig an.", "well formed": "wohlgeformt", - "If you don't want to use to discover and be discoverable by existing contacts you know, enter another identity server below.": "Wenn du nicht verwenden willst um andere Benutzer zu finden und gefunden zu werden, trage unten einen anderen Identitätsserver ein.", + "If you don't want to use to discover and be discoverable by existing contacts you know, enter another identity server below.": "Wenn du nicht verwenden willst, um Kontakte zu finden und von anderen gefunden zu werden, trage unten einen anderen Identitätsserver ein.", "To report a Matrix-related security issue, please read the Matrix.org Security Disclosure Policy.": "Wenn du einen sicherheitsrelevaten Fehler melden möchtest, lies bitte die Matrix.org Security Disclosure Policy.", "An error occurred changing the room's power level requirements. Ensure you have sufficient permissions and try again.": "Beim Ändern der Anforderungen für Benutzerrechte ist ein Fehler aufgetreten. Stelle sicher dass du die nötigen Berechtigungen besitzt und versuche es erneut.", "An error occurred changing the user's power level. Ensure you have sufficient permissions and try again.": "Beim Ändern der Benutzerrechte ist ein Fehler aufgetreten. Stelle sicher dass du die nötigen Berechtigungen besitzt und versuche es erneut.", From 796678207a3c48ab2f9162dbbebf3d193fa28583 Mon Sep 17 00:00:00 2001 From: baschi29 Date: Tue, 11 Aug 2020 16:59:46 +0000 Subject: [PATCH 122/424] Translated using Weblate (German) Currently translated at 99.2% (2323 of 2341 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 8dd7932d85..b2430d0a23 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -2386,5 +2386,10 @@ "Recent changes that have not yet been received": "Letzte Änderungen, die noch nicht eingegangen sind", "Set a Security Phrase": "Sicherheitsphrase setzen", "Confirm Security Phrase": "Sicherheitsphrase bestätigen", - "Save your Security Key": "Sicherungsschlüssel sichern" + "Save your Security Key": "Sicherungsschlüssel sichern", + "Security Phrase": "Sicherheitsphrase", + "Enter your Security Phrase or to continue.": "Gib deine Sicherheitsphrase ein oder um fortzufahren.", + "Security Key": "Sicherheitsschlüssel", + "Use your Security Key to continue.": "Benutze deinen Sicherheitsschlüssel um fortzufahren. ", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use %(brand)s with an existing Matrix account on a different homeserver.": "Du kannst in den benutzerdefinierten Server-Optionen eine andere Heimserver URL amgeben, um dich bei anderen Matrix Servern anzumelden. Dadurch kannst du %(brand)s mit einem existierenden Matrix Account auf einem anderen Heimserver nutzen. " } From 1ade7e995c5edfca4baa1fa202f21b4799e12985 Mon Sep 17 00:00:00 2001 From: "@a2sc:matrix.org" Date: Tue, 11 Aug 2020 17:01:51 +0000 Subject: [PATCH 123/424] Translated using Weblate (German) Currently translated at 99.9% (2340 of 2341 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index b2430d0a23..0259d7c5ae 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1633,7 +1633,7 @@ "Sends a message as html, without interpreting it as markdown": "Verschickt eine Nachricht im html-Format, ohne sie in Markdown zu formatieren", "Show rooms with unread notifications first": "Räume mit nicht gelesenen Benachrichtungen zuerst zeigen", "Show shortcuts to recently viewed rooms above the room list": "Kurzbefehlezu den kürzlich gesichteteten Räumen über der Raumliste anzeigen", - "Use Single Sign On to continue": "Benutze „Single Sign-On“ (Einmalanmeldung) um fortzufahren", + "Use Single Sign On to continue": "Nutze „Single Sign-On“ (Einmal-Anmeldung) um fortzufahren", "Confirm adding this email address by using Single Sign On to prove your identity.": "Bestätige das Hinzufügen dieser E-Mail-Adresse mit „Single Sign-On“, um deine Identität nachzuweisen.", "Single Sign On": "Single Sign-On", "Confirm adding email": "Hinzufügen der E-Mail-Adresse bestätigen", @@ -2153,7 +2153,7 @@ "Self-verification request": "Selbstverifikationsanfrage", "or another cross-signing capable Matrix client": "oder einen anderen Matrix Client der Cross-signing fähig ist", "%(brand)s is securely caching encrypted messages locally for them to appear in search results:": "%(brand)s verwendet einen sicheren Zwischenspeicher für verschlüsselte Nachrichten, damit sie in den Suchergebnissen angezeigt werden:", - "Liberate your communication": "Liberate your communication", + "Liberate your communication": "Befreie deine Kommunikation", "Message downloading sleep time(ms)": "Wartezeit zwischen dem Herunterladen von Nachrichten (ms)", "Navigate recent messages to edit": "Letzte Nachrichten zur Bearbeitung ansehen", "Jump to start/end of the composer": "Springe zum Anfang/Ende der Nachrichteneingabe", @@ -2376,7 +2376,7 @@ "The server has denied your request.": "Der Server hat deine Anfrage abgewiesen.", "Your area is experiencing difficulties connecting to the internet.": "Deine Region hat Schwierigkeiten, eine Verbindung zum Internet herzustellen.", "A connection error occurred while trying to contact the server.": "Beim Versuch, den Server zu kontaktieren, ist ein Verbindungsfehler aufgetreten.", - "You might have configured them in a client other than %(brand)s. You cannot tune them in %(brand)s but they still apply.": "Du hast sie ggf. in einem anderen Client als %(brand)s konfiguriert. Du kannst sie nicht in %(brand)s verändern, aber sie werden trotzdem angewendet. ", + "You might have configured them in a client other than %(brand)s. You cannot tune them in %(brand)s but they still apply.": "Du hast sie ggf. in einem anderen Client als %(brand)s konfiguriert. Du kannst sie nicht in %(brand)s verändern, aber sie werden trotzdem angewandt.", "Master private key:": "Privater Hauptschlüssel:", "Set the name of a font installed on your system & %(brand)s will attempt to use it.": "Setze den Schriftnamen auf eine in deinem System installierte Schriftart & %(brand)s werden versuchen sie zu verwenden.", "Custom Tag": "Benutzerdefinierter Tag", @@ -2390,6 +2390,23 @@ "Security Phrase": "Sicherheitsphrase", "Enter your Security Phrase or to continue.": "Gib deine Sicherheitsphrase ein oder um fortzufahren.", "Security Key": "Sicherheitsschlüssel", - "Use your Security Key to continue.": "Benutze deinen Sicherheitsschlüssel um fortzufahren. ", - "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use %(brand)s with an existing Matrix account on a different homeserver.": "Du kannst in den benutzerdefinierten Server-Optionen eine andere Heimserver URL amgeben, um dich bei anderen Matrix Servern anzumelden. Dadurch kannst du %(brand)s mit einem existierenden Matrix Account auf einem anderen Heimserver nutzen. " + "Use your Security Key to continue.": "Benutze deinen Sicherheitsschlüssel um fortzufahren.", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use %(brand)s with an existing Matrix account on a different homeserver.": "Du kannst in den benutzerdefinierten Server-Optionen eine andere Heimserver URL angeben, um dich bei anderen Matrix Servern anzumelden. Dadurch kannst du %(brand)s mit einem existierenden Matrix-Account auf einem anderen Home-Server nutzen.", + "Enter the location of your Element Matrix Services homeserver. It may use your own domain name or be a subdomain of element.io.": "Gib die Adresse deines Element Matrix Services-Heimservers ein. Es kann deine eigene Domain oder eine Subdomain von element.io sein.", + "No files visible in this room": "Keine Dateien in diesem Raum", + "Attach files from chat or just drag and drop them anywhere in a room.": "Hänge Dateien aus dem Chat an oder ziehe sie einfach per Drag & Drop an eine beliebige Stelle im Raum.", + "You’re all caught up": "Alles gesichtet", + "You have no visible notifications in this room.": "Du hast keine sichtbaren Benachrichtigungen in diesem Raum.", + "Search rooms": "Räume suchen", + "%(brand)s Android": "%(brand)s Android", + "Safeguard against losing access to encrypted messages & data by backing up encryption keys on your server.": "Schütze dich vor dem Verlust des Zugriffs auf verschlüsselte Nachrichten und Daten, indem du Verschlüsselungsschlüssel auf deinem Server sicherst.", + "Generate a Security Key": "Sicherheitsschlüssel generieren", + "We’ll generate a Security Key for you to store somewhere safe, like a password manager or a safe.": "Wir generieren einen Sicherheitsschlüssel, den du an einem sicheren Ort wie z. B. in einem Passwort-Manager oder einem Safe aufbewahren kannst.", + "Enter a Security Phrase": "Sicherheitsphrase eingeben", + "Use a secret phrase only you know, and optionally save a Security Key to use for backup.": "Verwende für deine Sicherung eine geheime Phrase, die nur du kennst, und speichere optional einen Sicherheitsschlüssel.", + "Enter a security phrase only you know, as it’s used to safeguard your data. To be secure, you shouldn’t re-use your account password.": "Gibt für deine Datensicherung eine geheime Phrase ein, die nur du kennst. Um sicher zu gehen, benutze nicht dein Account-Passwort.", + "Store your Security Key somewhere safe, like a password manager or a safe, as it’s used to safeguard your encrypted data.": "Bewahre deinen Sicherheitsschlüssel an einem sicheren Ort wie z. B. in einem Passwort-Manager oder einem Safe auf. Er wird zum Schutz deiner verschlüsselten Daten verwendet.", + "If you cancel now, you may lose encrypted messages & data if you lose access to your logins.": "Wenn du jetzt abbrichst, kannst du verschlüsselte Nachrichten und Daten verlieren, wenn du den Zugriff auf deine Logins verlierst.", + "You can also set up Secure Backup & manage your keys in Settings.": "Du kannst auch in den Einstellungen eine Sicherung erstellen & deine Schlüssel verwalten.", + "Set up Secure backup": "Sicheres Backup einrichten" } From f6c031f1d97ceb08ce0ad347de73e93f083d96f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?T=2E=20K=C3=BCchel?= Date: Tue, 11 Aug 2020 17:08:06 +0000 Subject: [PATCH 124/424] Translated using Weblate (German) Currently translated at 99.9% (2340 of 2341 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 0259d7c5ae..c0e8832a24 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -633,7 +633,7 @@ "Community IDs cannot be empty.": "Community-IDs können nicht leer sein.", "Learn more about how we use analytics.": "Lerne mehr darüber, wie wir die Analysedaten nutzen.", "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Wenn diese Seite identifizierbare Informationen wie Raum-, Nutzer- oder Gruppen-ID enthält, werden diese Daten entfernt bevor sie an den Server gesendet werden.", - "Which officially provided instance you are using, if any": "Welche offiziell angebotene Instanz du nutzt, wenn es der Fall ist", + "Which officially provided instance you are using, if any": "Welche offiziell angebotene Instanz du nutzt, wenn überhaupt eine", "In reply to ": "Als Antwort auf ", "This room is not public. You will not be able to rejoin without an invite.": "Dies ist kein öffentlicher Raum. Du wirst diesen nicht ohne Einladung wieder beitreten können.", "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s änderte den Anzeigenamen auf %(displayName)s.", From 5c967cfbd9af5de7ad4e12c4a3655ea08b6160e5 Mon Sep 17 00:00:00 2001 From: toastbroot Date: Tue, 11 Aug 2020 17:08:17 +0000 Subject: [PATCH 125/424] Translated using Weblate (German) Currently translated at 99.9% (2340 of 2341 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index c0e8832a24..4877d0f1a1 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -627,7 +627,7 @@ "The version of %(brand)s": "Die %(brand)s-Version", "Your language of choice": "Deine ausgewählte Sprache", "Whether or not you're using the Richtext mode of the Rich Text Editor": "Ob du den Richtext-Modus des Editors benutzt oder nicht", - "Your homeserver's URL": "Die URL deines Homeservers", + "Your homeserver's URL": "Deine Homeserver-URL", "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s", "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "Du wirst nicht in der Lage sein, die Änderung zurückzusetzen, da du dich degradierst. Wenn du der letze Nutzer mit Berechtigungen bist, wird es unmöglich sein die Privilegien zurückzubekommen.", "Community IDs cannot be empty.": "Community-IDs können nicht leer sein.", @@ -797,7 +797,7 @@ "Collapse Reply Thread": "Antwort-Thread zusammenklappen", "Enable widget screenshots on supported widgets": "Widget-Screenshots bei unterstützten Widgets aktivieren", "Send analytics data": "Analysedaten senden", - "e.g. %(exampleValue)s": "z.B. %(exampleValue)s", + "e.g. %(exampleValue)s": "z. B. %(exampleValue)", "Muted Users": "Stummgeschaltete Benutzer", "This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. This action is irreversible.": "Dies wird deinen Account permanent unbenutzbar machen. Du wirst nicht in der Lage sein, dich anzumelden und keiner wird dieselbe Benutzer-ID erneut registrieren können. Alle Räume, in denen der Account ist, werden verlassen und deine Account-Daten werden vom Identitätsserver gelöscht. Diese Aktion ist unumkehrbar.", "Deactivating your account does not by default cause us to forget messages you have sent. If you would like us to forget your messages, please tick the box below.": "Standardmäßig werden die von dir gesendeten Nachrichten beim Deaktiveren nicht gelöscht. Wenn du dies von uns möchtest, aktivere das Auswalfeld unten.", From 0e8c3707691eae6e8db1f29fc678a773827b791e Mon Sep 17 00:00:00 2001 From: "@a2sc:matrix.org" Date: Tue, 11 Aug 2020 17:08:50 +0000 Subject: [PATCH 126/424] Translated using Weblate (German) Currently translated at 99.9% (2340 of 2341 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 4877d0f1a1..e7c772ccfa 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -797,7 +797,7 @@ "Collapse Reply Thread": "Antwort-Thread zusammenklappen", "Enable widget screenshots on supported widgets": "Widget-Screenshots bei unterstützten Widgets aktivieren", "Send analytics data": "Analysedaten senden", - "e.g. %(exampleValue)s": "z. B. %(exampleValue)", + "e.g. %(exampleValue)s": "z.B. %(exampleValue)s", "Muted Users": "Stummgeschaltete Benutzer", "This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. This action is irreversible.": "Dies wird deinen Account permanent unbenutzbar machen. Du wirst nicht in der Lage sein, dich anzumelden und keiner wird dieselbe Benutzer-ID erneut registrieren können. Alle Räume, in denen der Account ist, werden verlassen und deine Account-Daten werden vom Identitätsserver gelöscht. Diese Aktion ist unumkehrbar.", "Deactivating your account does not by default cause us to forget messages you have sent. If you would like us to forget your messages, please tick the box below.": "Standardmäßig werden die von dir gesendeten Nachrichten beim Deaktiveren nicht gelöscht. Wenn du dies von uns möchtest, aktivere das Auswalfeld unten.", @@ -1296,7 +1296,7 @@ "Actions": "Aktionen", "Displays list of commands with usages and descriptions": "Zeigt eine Liste von Befehlen mit Verwendungen und Beschreibungen an", "Call failed due to misconfigured server": "Anruf aufgrund eines falsch konfigurierten Servers fehlgeschlagen", - "Try using turn.matrix.org": "Versuchen Sie es mit turn.matrix.org", + "Try using turn.matrix.org": "Versuche es mit turn.matrix.org", "You do not have the required permissions to use this command.": "Sie haben nicht die erforderlichen Berechtigungen, um diesen Befehl zu verwenden.", "Multiple integration managers": "Mehrere Integrationsmanager", "Public Name": "Öffentlicher Name", From 626fac18ec5743884fbbba85b6e5cb2dee1d5006 Mon Sep 17 00:00:00 2001 From: toastbroot Date: Tue, 11 Aug 2020 17:09:24 +0000 Subject: [PATCH 127/424] Translated using Weblate (German) Currently translated at 99.9% (2340 of 2341 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index e7c772ccfa..9dcee95ef1 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -115,7 +115,7 @@ "You are already in a call.": "Du bist bereits in einem Gespräch.", "You cannot place a call with yourself.": "Du kannst keinen Anruf mit dir selbst starten.", "You cannot place VoIP calls in this browser.": "VoIP-Gespräche werden von diesem Browser nicht unterstützt.", - "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Deine E-Mail-Adresse scheint nicht mit einer Matrix-ID auf diesem Heimserver verbunden zu sein.", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Deine E-Mail-Adresse scheint nicht mit einer Matrix-ID auf diesem Homeserver verbunden zu sein.", "Sun": "So", "Mon": "Mo", "Tue": "Di", @@ -289,7 +289,7 @@ "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Bist du sicher, dass du dieses Ereignis entfernen (löschen) möchtest? Wenn du die Änderung eines Raum-Namens oder eines Raum-Themas löscht, kann dies dazu führen, dass die ursprüngliche Änderung rückgängig gemacht wird.", "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Dieser Prozess erlaubt es dir, die Schlüssel für die in verschlüsselten Räumen empfangenen Nachrichten in eine lokale Datei zu exportieren. In Zukunft wird es möglich sein, diese Datei in einen anderen Matrix-Client zu importieren, sodass dieser Client diese Nachrichten ebenfalls entschlüsseln kann.", "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Mit der exportierten Datei kann jeder, der diese Datei lesen kann, jede verschlüsselte Nachricht entschlüsseln, die für dich lesbar ist. Du solltest die Datei also unbedingt sicher verwahren. Um den Vorgang sicherer zu gestalten, solltest du unten eine Passphrase eingeben, die dazu verwendet wird, die exportierten Daten zu verschlüsseln. Anschließend wird es nur möglich sein, die Daten zu importieren, wenn dieselbe Passphrase verwendet wird.", - "Analytics": "Anonymisierte Analysedaten", + "Analytics": "Datenverkehrsanalyse", "%(brand)s collects anonymous analytics to allow us to improve the application.": "%(brand)s sammelt anonymisierte Analysedaten, um die Anwendung kontinuierlich verbessern zu können.", "Add an Integration": "Eine Integration hinzufügen", "URL Previews": "URL-Vorschau", @@ -403,8 +403,8 @@ "Featured Users:": "Hervorgehobene Benutzer:", "Automatically replace plain text Emoji": "Klartext-Emoji automatisch ersetzen", "Failed to upload image": "Bild-Hochladen fehlgeschlagen", - "AM": "a.m.", - "PM": "p.m.", + "AM": "a. m.", + "PM": "p. m.", "The maximum permitted number of widgets have already been added to this room.": "Die maximal erlaubte Anzahl an hinzufügbaren Widgets für diesen Raum wurde erreicht.", "Cannot add any more widgets": "Kann keine weiteren Widgets hinzufügen", "%(widgetName)s widget added by %(senderName)s": "%(senderName)s hat das Widget %(widgetName)s hinzugefügt", From 06adecd5fff543c8cbc59d7f5fa8101ef1081f1b Mon Sep 17 00:00:00 2001 From: baschi29 Date: Tue, 11 Aug 2020 17:10:30 +0000 Subject: [PATCH 128/424] Translated using Weblate (German) Currently translated at 99.9% (2340 of 2341 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 9dcee95ef1..2760a0a7fc 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -2334,7 +2334,7 @@ "Incoming video call": "Eingehender Videoanruf", "Incoming call": "Eingehender Anruf", "There are advanced notifications which are not shown here.": "Erweiterte Benachrichtigungen, werden hier nicht angezeigt.", - "Are you sure you want to cancel entering passphrase?": "Bist du sicher dass du die Eingabe der Passphrase abbrechen möchtest?", + "Are you sure you want to cancel entering passphrase?": "Bist du sicher, dass du die Eingabe der Passphrase abbrechen möchtest? ", "Use your account to sign in to the latest version": "Verwende dein Konto um dich bei der neusten Version anzumelden", "* %(senderName)s %(emote)s": "* %(senderName)s %(emote)s", "Enable advanced debugging for the room list": "Erweiterte Fehlersuche für die Raumliste aktivieren", From c06e543d4e9107d6f3b03b4181c2cdc468eebbc0 Mon Sep 17 00:00:00 2001 From: Bamstam Date: Tue, 11 Aug 2020 17:11:37 +0000 Subject: [PATCH 129/424] Translated using Weblate (German) Currently translated at 99.9% (2340 of 2341 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 2760a0a7fc..d34ef9faab 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -466,7 +466,7 @@ "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Warnung: Jede Person, die du einer Community hinzufügst, wird für alle, die die Community-ID kennen, öffentlich sichtbar sein", "Invite new community members": "Neue Community-Mitglieder einladen", "Invite to Community": "In die Community einladen", - "Which rooms would you like to add to this community?": "Welche Räume möchtest du zu dieser Community hinzufügen?", + "Which rooms would you like to add to this community?": "Welche Räume sollen zu dieser Community hinzugefügt werden?", "Add rooms to the community": "Räume zur Community hinzufügen", "Add to community": "Zur Community hinzufügen", "Failed to invite users to community": "Benutzer konnten nicht in die Community eingeladen werden", From c6ca1ed15093b53aa57b3ee9acae77bf3c143b90 Mon Sep 17 00:00:00 2001 From: "@a2sc:matrix.org" Date: Tue, 11 Aug 2020 17:13:24 +0000 Subject: [PATCH 130/424] Translated using Weblate (German) Currently translated at 99.9% (2340 of 2341 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index d34ef9faab..8ccb8490e7 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -115,7 +115,7 @@ "You are already in a call.": "Du bist bereits in einem Gespräch.", "You cannot place a call with yourself.": "Du kannst keinen Anruf mit dir selbst starten.", "You cannot place VoIP calls in this browser.": "VoIP-Gespräche werden von diesem Browser nicht unterstützt.", - "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Deine E-Mail-Adresse scheint nicht mit einer Matrix-ID auf diesem Homeserver verbunden zu sein.", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Deine E-Mail-Adresse scheint nicht mit einer Matrix-ID auf diesem Home-Server verbunden zu sein.", "Sun": "So", "Mon": "Mo", "Tue": "Di", @@ -390,7 +390,7 @@ "Add a widget": "Widget hinzufügen", "Allow": "Erlauben", "Delete widget": "Widget entfernen", - "Define the power level of a user": "Setze das Berechtigungslevel eines Benutzers", + "Define the power level of a user": "Berechtigungsstufe einer/s Benutzer!n setzen", "Edit": "Bearbeiten", "Enable automatic language detection for syntax highlighting": "Automatische Spracherkennung für die Syntax-Hervorhebung aktivieren", "To get started, please pick a username!": "Um zu starten, wähle bitte einen Nutzernamen!", @@ -1297,7 +1297,7 @@ "Displays list of commands with usages and descriptions": "Zeigt eine Liste von Befehlen mit Verwendungen und Beschreibungen an", "Call failed due to misconfigured server": "Anruf aufgrund eines falsch konfigurierten Servers fehlgeschlagen", "Try using turn.matrix.org": "Versuche es mit turn.matrix.org", - "You do not have the required permissions to use this command.": "Sie haben nicht die erforderlichen Berechtigungen, um diesen Befehl zu verwenden.", + "You do not have the required permissions to use this command.": "Du hast nicht die erforderlichen Berechtigungen, um diesen Befehl zu verwenden.", "Multiple integration managers": "Mehrere Integrationsmanager", "Public Name": "Öffentlicher Name", "Identity Server URL must be HTTPS": "Die Identity Server-URL muss HTTPS sein", @@ -1428,7 +1428,7 @@ "Unknown (user, session) pair:": "Unbekanntes (Nutzer-, Sitzungs-) Paar:", "Session already verified!": "Sitzung bereits verifiziert!", "WARNING: Session already verified, but keys do NOT MATCH!": "ACHTUNG: Sitzung bereits verifiziert, aber die Schlüssel passen NICHT ZUSAMMEN!", - "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and session %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "ACHTUNG: SCHLÜSSEL-VERIFIZIERUNG FEHLGESCHLAGEN! Der Signierschlüssel für %(userId)s und Sitzung %(deviceId)s ist \"%(fprint)s\", was nicht mit dem bereitgestellten Schlüssel \"%(fingerprint)s\" übereinstimmt. Das könnte bedeuten, dass Ihre Kommunikation abgehört wird!", + "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and session %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "ACHTUNG: SCHLÜSSEL-VERIFIZIERUNG FEHLGESCHLAGEN! Der Signierschlüssel für %(userId)s und Sitzung %(deviceId)s ist \"%(fprint)s\", was nicht mit dem bereitgestellten Schlüssel \"%(fingerprint)s\" übereinstimmt. Das könnte bedeuten, dass deine Kommunikation abgehört wird!", "Never send encrypted messages to unverified sessions from this session": "Sende niemals verschlüsselte Nachrichten von dieser Sitzung zu unverifizierten Sitzungen", "Never send encrypted messages to unverified sessions in this room from this session": "Sende niemals verschlüsselte Nachrichten von dieser Sitzung zu unverifizierten Sitzungen in diesem Raum", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Durch die Änderung des Passworts werden derzeit alle End-zu-End-Verschlüsselungsschlüssel in allen Sitzungen zurückgesetzt, sodass der verschlüsselte Chat-Verlauf nicht mehr lesbar ist, es sei denn, Sie exportieren zuerst Ihre Raumschlüssel und importieren sie anschließend wieder. In Zukunft wird dies verbessert werden.", @@ -1562,7 +1562,7 @@ "You're previewing %(roomName)s. Want to join it?": "Du betrachtest %(roomName)s. Willst du beitreten?", "%(senderName)s added the alternative addresses %(addresses)s for this room.|one": "%(senderName)s hat die alternative Adresse 2%(addresses)s für diesen Raum hinzugefügt.", "%(senderName)s changed the addresses for this room.": "%(senderName)s hat die Adresse für diesen Raum geändert.", - "Displays information about a user": "Zeigt Informationen über einen Benutzer", + "Displays information about a user": "Zeigt Informationen über ein/e Benutzer!n", "%(senderDisplayName)s changed the room name from %(oldRoomName)s to %(newRoomName)s.": "%(senderDisplayName)s hat den Raumnamen von %(oldRoomName)s zu %(newRoomName)s geändert.", "%(senderName)s added the alternative addresses %(addresses)s for this room.|other": "%(senderName)s hat die alternative Adresse %(addresses)s für diesen Raum hinzugefügt.", "%(senderName)s removed the alternative addresses %(addresses)s for this room.|other": "%(senderName)s hat die alternativen Adressen %(addresses)s für diesen Raum entfernt.", From d5de9162da5c096c290a492b66f23e358a2d893c Mon Sep 17 00:00:00 2001 From: baschi29 Date: Tue, 11 Aug 2020 17:13:39 +0000 Subject: [PATCH 131/424] Translated using Weblate (German) Currently translated at 99.9% (2340 of 2341 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 8ccb8490e7..6072d01f77 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -2335,7 +2335,7 @@ "Incoming call": "Eingehender Anruf", "There are advanced notifications which are not shown here.": "Erweiterte Benachrichtigungen, werden hier nicht angezeigt.", "Are you sure you want to cancel entering passphrase?": "Bist du sicher, dass du die Eingabe der Passphrase abbrechen möchtest? ", - "Use your account to sign in to the latest version": "Verwende dein Konto um dich bei der neusten Version anzumelden", + "Use your account to sign in to the latest version": "Melde dich mit deinem Account in der neuesten Version an. ", "* %(senderName)s %(emote)s": "* %(senderName)s %(emote)s", "Enable advanced debugging for the room list": "Erweiterte Fehlersuche für die Raumliste aktivieren", "Enable experimental, compact IRC style layout": "Kompaktes, experimentelles Layout im IRC-Stil aktivieren", @@ -2344,7 +2344,7 @@ "%(brand)s Desktop": "%(brand)s Desktop", "%(brand)s iOS": "%(brand)s iOS", "%(brand)s X for Android": "%(brand)s X für Android", - "We’re excited to announce Riot is now Element": "Wir freuen uns bekanntzugeben: Riot ist jetzt Element", + "We’re excited to announce Riot is now Element": "Wir freuen uns zu verkünden, dass Riot jetzt Element ist", "%(brand)s can't securely cache encrypted messages locally while running in a web browser. Use %(brand)s Desktop for encrypted messages to appear in search results.": "%(brand)s kann verschlüsselte Nachrichten nicht sicher zwischenspeichern während es in einem Browser läuft. Verwende %(brand)s Desktop damit verschlüsselte Nachrichten durchsuchbar werden.", "Show rooms with unread messages first": "Zeige Räume mit ungelesenen Nachrichten zuerst", "Show previews of messages": "Zeige Vorschau von Nachrichten", From 2241b5aa4f673b8c98fbd24255c59ccd5dd610ef Mon Sep 17 00:00:00 2001 From: toastbroot Date: Tue, 11 Aug 2020 17:14:01 +0000 Subject: [PATCH 132/424] Translated using Weblate (German) Currently translated at 99.9% (2340 of 2341 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 6072d01f77..065b9c9452 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -285,7 +285,7 @@ "Error decrypting video": "Video-Entschlüsselung fehlgeschlagen", "Import room keys": "Raum-Schlüssel importieren", "File to import": "Zu importierende Datei", - "Failed to invite the following users to the %(roomName)s room:": "Das Einladen der folgenden Benutzer in den Raum \"%(roomName)s\" ist fehlgeschlagen:", + "Failed to invite the following users to the %(roomName)s room:": "Folgende Benutzer konnten nicht in den Raum \"%(roomName)s\" eingeladen werden:", "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Bist du sicher, dass du dieses Ereignis entfernen (löschen) möchtest? Wenn du die Änderung eines Raum-Namens oder eines Raum-Themas löscht, kann dies dazu führen, dass die ursprüngliche Änderung rückgängig gemacht wird.", "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Dieser Prozess erlaubt es dir, die Schlüssel für die in verschlüsselten Räumen empfangenen Nachrichten in eine lokale Datei zu exportieren. In Zukunft wird es möglich sein, diese Datei in einen anderen Matrix-Client zu importieren, sodass dieser Client diese Nachrichten ebenfalls entschlüsseln kann.", "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Mit der exportierten Datei kann jeder, der diese Datei lesen kann, jede verschlüsselte Nachricht entschlüsseln, die für dich lesbar ist. Du solltest die Datei also unbedingt sicher verwahren. Um den Vorgang sicherer zu gestalten, solltest du unten eine Passphrase eingeben, die dazu verwendet wird, die exportierten Daten zu verschlüsseln. Anschließend wird es nur möglich sein, die Daten zu importieren, wenn dieselbe Passphrase verwendet wird.", From 7081bd008ea24850d627a816c23a37025622f6e6 Mon Sep 17 00:00:00 2001 From: Hucki Date: Tue, 11 Aug 2020 17:16:02 +0000 Subject: [PATCH 133/424] Translated using Weblate (German) Currently translated at 99.9% (2340 of 2341 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 065b9c9452..90a4bb7d01 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1570,7 +1570,7 @@ "%(senderName)s changed the alternative addresses for this room.": "%(senderName)s hat die alternative Adresse für diesen Raum geändert.", "%(senderName)s changed the main and alternative addresses for this room.": "%(senderName)s hat die Haupt- und Alternativadresse für diesen Raum geändert.", "%(senderName)s removed the rule banning users matching %(glob)s": "%(senderName)s entfernte die Ausschluss-Regel für Nutzer, die %(glob)s entsprechen", - "%(senderName)s removed the rule banning rooms matching %(glob)s": "%(senderName)s entfernte die Ausschluss-Regel für Räume, die %(glob)s entsprechen", + "%(senderName)s removed the rule banning rooms matching %(glob)s": "%(senderName)s entfernte die Ausschluss-Regel für Räume die %(glob)s entsprechen", "%(senderName)s removed the rule banning servers matching %(glob)s": "%(senderName)s entfernte die Ausschluss-Regel für Server, die %(glob)s entsprechen", "%(senderName)s removed a ban rule matching %(glob)s": "%(senderName)s entfernte die Ausschluss-Regel, die %(glob)s entspricht", "%(senderName)s updated the rule banning users matching %(glob)s for %(reason)s": "%(senderName)s aktualisierte die Ausschluss-Regel für Nutzer, die aufgrund von %(reason)s %(glob)s entsprechen", From 718eeb4a810ca753526667fe5d63e5c138962a17 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Wed, 12 Aug 2020 10:40:25 +0100 Subject: [PATCH 134/424] Fix exception when stripping replies from an event with a null body --- src/HtmlUtils.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/HtmlUtils.tsx b/src/HtmlUtils.tsx index 77a9579f2c..5d33645bb7 100644 --- a/src/HtmlUtils.tsx +++ b/src/HtmlUtils.tsx @@ -421,7 +421,7 @@ export function bodyToHtml(content: IContent, highlights: string[], opts: IOpts } let formattedBody = typeof content.formatted_body === 'string' ? content.formatted_body : null; - const plainBody = typeof content.body === 'string' ? content.body : null; + const plainBody = typeof content.body === 'string' ? content.body : ""; if (opts.stripReplyFallback && formattedBody) formattedBody = ReplyThread.stripHTMLReply(formattedBody); strippedBody = opts.stripReplyFallback ? ReplyThread.stripPlainReply(plainBody) : plainBody; From 7fe9fcf050da26f17d11fe7340678fca12fec290 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Wed, 12 Aug 2020 12:16:28 +0100 Subject: [PATCH 135/424] Try to close notification on all platforms which support it, not just electron --- src/BasePlatform.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/BasePlatform.ts b/src/BasePlatform.ts index 1d28aa7f9a..4d06c5df73 100644 --- a/src/BasePlatform.ts +++ b/src/BasePlatform.ts @@ -155,7 +155,13 @@ export default abstract class BasePlatform { loudNotification(ev: Event, room: Object) { } + clearNotification(notif: Notification) { + // Some browsers don't support this, e.g Safari on iOS + // https://developer.mozilla.org/en-US/docs/Web/API/Notification/close + if (notif.close) { + notif.close(); + } } /** From 3de23303fd94558ad4da044b2d045852488a8154 Mon Sep 17 00:00:00 2001 From: linsui Date: Wed, 12 Aug 2020 06:36:14 +0000 Subject: [PATCH 136/424] Translated using Weblate (Chinese (Simplified)) Currently translated at 97.9% (2291 of 2341 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/zh_Hans/ --- src/i18n/strings/zh_Hans.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/zh_Hans.json b/src/i18n/strings/zh_Hans.json index de0ba31201..da53880409 100644 --- a/src/i18n/strings/zh_Hans.json +++ b/src/i18n/strings/zh_Hans.json @@ -2308,5 +2308,8 @@ "Page Down": "Page Down", "Esc": "Esc", "Enter": "Enter", - "Space": "Space" + "Space": "Space", + "How fast should messages be downloaded.": "消息下载速度。", + "IRC display name width": "IRC 显示名称宽度", + "When rooms are upgraded": "聊天室升级时间" } From 9429e29e8c6d831669dfb922c9b66219a2323313 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Priit=20J=C3=B5er=C3=BC=C3=BCt?= Date: Mon, 10 Aug 2020 19:52:13 +0000 Subject: [PATCH 137/424] Translated using Weblate (Estonian) Currently translated at 99.7% (2334 of 2341 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/et/ --- src/i18n/strings/et.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/et.json b/src/i18n/strings/et.json index 7b6a5fa662..95253f5256 100644 --- a/src/i18n/strings/et.json +++ b/src/i18n/strings/et.json @@ -198,7 +198,7 @@ "Leave": "Lahku", "Forget": "Unusta", "Favourite": "Lemmik", - "Low Priority": "Madal prioriteet", + "Low Priority": "Vähetähtis", "Direct Chat": "Otsevestlus", "Clear status": "Eemalda olek", "Update status": "Uuenda olek", @@ -419,7 +419,7 @@ "Loading …": "Laen …", "e.g. %(exampleValue)s": "näiteks %(exampleValue)s", "Could not find user in room": "Jututoast ei leidnud kasutajat", - "Show timestamps in 12 hour format (e.g. 2:30pm)": "Näita ajatempleid 12-tunnises vomingus (näiteks 2:30pl)", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "Näita ajatempleid 12-tunnises vormingus (näiteks 2:30pl)", "New published address (e.g. #alias:server)": "Uus avaldatud aadess (näiteks #alias:server)", "New community ID (e.g. +foo:%(localDomain)s)": "Uus kogukonna tunnus (näiteks +midagi:%(localDomain)s)", "e.g. my-room": "näiteks minu-jututuba", From a8e12680c76eb50ac8ef5859c0cf8c95a70ba3f1 Mon Sep 17 00:00:00 2001 From: "@a2sc:matrix.org" Date: Tue, 11 Aug 2020 17:16:08 +0000 Subject: [PATCH 138/424] Translated using Weblate (German) Currently translated at 99.9% (2340 of 2341 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 90a4bb7d01..94e724ea3b 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1570,7 +1570,7 @@ "%(senderName)s changed the alternative addresses for this room.": "%(senderName)s hat die alternative Adresse für diesen Raum geändert.", "%(senderName)s changed the main and alternative addresses for this room.": "%(senderName)s hat die Haupt- und Alternativadresse für diesen Raum geändert.", "%(senderName)s removed the rule banning users matching %(glob)s": "%(senderName)s entfernte die Ausschluss-Regel für Nutzer, die %(glob)s entsprechen", - "%(senderName)s removed the rule banning rooms matching %(glob)s": "%(senderName)s entfernte die Ausschluss-Regel für Räume die %(glob)s entsprechen", + "%(senderName)s removed the rule banning rooms matching %(glob)s": "%(senderName)s entfernte die Ausschluss-Regel für Räume, die %(glob)s entsprechen", "%(senderName)s removed the rule banning servers matching %(glob)s": "%(senderName)s entfernte die Ausschluss-Regel für Server, die %(glob)s entsprechen", "%(senderName)s removed a ban rule matching %(glob)s": "%(senderName)s entfernte die Ausschluss-Regel, die %(glob)s entspricht", "%(senderName)s updated the rule banning users matching %(glob)s for %(reason)s": "%(senderName)s aktualisierte die Ausschluss-Regel für Nutzer, die aufgrund von %(reason)s %(glob)s entsprechen", @@ -1578,7 +1578,7 @@ "%(senderName)s updated the rule banning servers matching %(glob)s for %(reason)s": "%(senderName)s aktualisierte die Ausschluss-Regel für Server, die aufgrund von %(reason)s %(glob)s entsprechen", "%(senderName)s updated a ban rule matching %(glob)s for %(reason)s": "%(senderName)s aktualisierte eine Ausschluss-Regel, die wegen %(reason)s %(glob)s entspricht", "%(senderName)s created a rule banning users matching %(glob)s for %(reason)s": "%(senderName)s erstellte eine Ausschluss-Regel für Nutzer, die wegen %(reason)s %(glob)s entspricht", - "%(senderName)s created a rule banning rooms matching %(glob)s for %(reason)s": "%(senderName)s erstellte eine Ausschluss-Regel für Räume, die wegen %(reason)s %(glob)s entspricht", + "%(senderName)s created a rule banning rooms matching %(glob)s for %(reason)s": "%(senderName)s erstellt eine Ausschluss-Regel für Räume, die %(glob)s aufgrund von %(reason)s entspricht", "%(senderName)s created a rule banning servers matching %(glob)s for %(reason)s": "%(senderName)s erstellte eine Ausschluss-Regel für Server, die aufgrund von %(reason)s %(glob)s entsprechen", "%(senderName)s created a ban rule matching %(glob)s for %(reason)s": "%(senderName)s erstellt eine Ausschluss-Regel, die aufgrund von %(reason)s %(glob)s entsprechen", "Do you want to chat with %(user)s?": "Möchtest du mit %(user)s chatten?", @@ -1648,7 +1648,7 @@ "Confirm adding phone number": "Hinzufügen der Telefonnummer bestätigen", "%(senderName)s changed a rule that was banning servers matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s ändert eine Ausschluss-Regel für Server von %(oldGlob)s nach %(newGlob)s wegen %(reason)s", "%(senderName)s updated a ban rule that was matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s erneuert eine Ausschluss-Regel von %(oldGlob)s nach %(newGlob)s wegen %(reason)s", - "Not Trusted": "Nicht vertrauenswürdig", + "Not Trusted": "Nicht vertraut", "Manually Verify by Text": "Verifiziere manuell mit einem Text", "Interactively verify by Emoji": "Verifiziere interaktiv mit Emojis", "Support adding custom themes": "Unterstütze das Hinzufügen von benutzerdefinierten Designs", @@ -2334,8 +2334,8 @@ "Incoming video call": "Eingehender Videoanruf", "Incoming call": "Eingehender Anruf", "There are advanced notifications which are not shown here.": "Erweiterte Benachrichtigungen, werden hier nicht angezeigt.", - "Are you sure you want to cancel entering passphrase?": "Bist du sicher, dass du die Eingabe der Passphrase abbrechen möchtest? ", - "Use your account to sign in to the latest version": "Melde dich mit deinem Account in der neuesten Version an. ", + "Are you sure you want to cancel entering passphrase?": "Bist du sicher, dass du die Eingabe der Passphrase abbrechen möchtest?", + "Use your account to sign in to the latest version": "Melde dich mit deinem Account in der neuesten Version an", "* %(senderName)s %(emote)s": "* %(senderName)s %(emote)s", "Enable advanced debugging for the room list": "Erweiterte Fehlersuche für die Raumliste aktivieren", "Enable experimental, compact IRC style layout": "Kompaktes, experimentelles Layout im IRC-Stil aktivieren", From 7a7047144617967dfe0f1d764531fe29270f6c93 Mon Sep 17 00:00:00 2001 From: Hucki Date: Tue, 11 Aug 2020 17:16:34 +0000 Subject: [PATCH 139/424] Translated using Weblate (German) Currently translated at 99.9% (2340 of 2341 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 94e724ea3b..1f8a026319 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1353,7 +1353,7 @@ "%(senderName)s placed a video call. (not supported by this browser)": "%(senderName)s hat einen Videoanruf getätigt. (Nicht von diesem Browser unterstützt)", "Verify this session": "Sitzung verifizieren", "Set up encryption": "Verschlüsselung einrichten", - "%(senderName)s updated an invalid ban rule": "%(senderName)s hat eine ungültige Bannregel aktualisiert", + "%(senderName)s updated an invalid ban rule": "%(senderName)s aktualisierte eine ungültige Ausschluss-Regel", "The message you are trying to send is too large.": "Die Nachricht, die du versuchst zu senden, ist zu lang.", "a few seconds ago": "vor ein paar Sekunden", "about a minute ago": "vor etwa einer Minute", From 9c8f27f440048d90e92f14fb87e7908aa17793c9 Mon Sep 17 00:00:00 2001 From: Bamstam Date: Tue, 11 Aug 2020 17:19:01 +0000 Subject: [PATCH 140/424] Translated using Weblate (German) Currently translated at 99.9% (2340 of 2341 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 1f8a026319..3d5ba3722e 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -726,7 +726,7 @@ "Failed to set Direct Message status of room": "Konnte den direkten Benachrichtigungsstatus nicht setzen", "Monday": "Montag", "Remove from Directory": "Aus dem Raum-Verzeichnis entfernen", - "Enable them now": "Aktiviere diese jetzt", + "Enable them now": "Diese jetzt aktivieren", "Toolbox": "Werkzeugkasten", "Collecting logs": "Protokolle werden abgerufen", "You must specify an event type!": "Du musst einen Event-Typ spezifizieren!", From 8ec871c594d2cbbc137090611cd39933b69b0ec7 Mon Sep 17 00:00:00 2001 From: random Date: Wed, 12 Aug 2020 09:57:52 +0000 Subject: [PATCH 141/424] Translated using Weblate (Italian) Currently translated at 100.0% (2341 of 2341 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/it/ --- src/i18n/strings/it.json | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/it.json b/src/i18n/strings/it.json index 3ed851fd95..d86070018b 100644 --- a/src/i18n/strings/it.json +++ b/src/i18n/strings/it.json @@ -2391,5 +2391,27 @@ "Click to view edits": "Clicca per vedere le modifiche", "Are you sure you want to cancel entering passphrase?": "Sei sicuro di volere annullare l'inserimento della frase?", "* %(senderName)s %(emote)s": "* %(senderName)s %(emote)s", - "Custom Tag": "Etichetta personalizzata" + "Custom Tag": "Etichetta personalizzata", + "The person who invited you already left the room.": "La persona che ti ha invitato è già uscita dalla stanza.", + "The person who invited you already left the room, or their server is offline.": "La persona che ti ha invitato è già uscita dalla stanza, o il suo server è offline.", + "Change notification settings": "Cambia impostazioni di notifica", + "Your server isn't responding to some requests.": "Il tuo server non sta rispondendo ad alcune richieste.", + "Master private key:": "Chiave privata principale:", + "You're all caught up.": "Non hai nulla di nuovo da vedere.", + "Server isn't responding": "Il server non risponde", + "Your server isn't responding to some of your requests. Below are some of the most likely reasons.": "Il tuo server non sta rispondendo ad alcune tue richieste. Sotto trovi alcuni probabili motivi.", + "The server (%(serverName)s) took too long to respond.": "Il server (%(serverName)s) ha impiegato troppo tempo per rispondere.", + "Your firewall or anti-virus is blocking the request.": "Il tuo firewall o antivirus sta bloccando la richiesta.", + "A browser extension is preventing the request.": "Un'estensione del browser sta impedendo la richiesta.", + "The server is offline.": "Il server è offline.", + "The server has denied your request.": "Il server ha negato la tua richiesta.", + "Your area is experiencing difficulties connecting to the internet.": "La tua area sta riscontrando difficoltà di connessione a internet.", + "A connection error occurred while trying to contact the server.": "Si è verificato un errore di connessione tentando di contattare il server.", + "The server is not configured to indicate what the problem is (CORS).": "Il server non è configurato per indicare qual è il problema (CORS).", + "Recent changes that have not yet been received": "Modifiche recenti che non sono ancora state ricevute", + "No files visible in this room": "Nessun file visibile in questa stanza", + "Attach files from chat or just drag and drop them anywhere in a room.": "Allega file dalla chat o trascinali in qualsiasi punto in una stanza.", + "You’re all caught up": "Non hai nulla di nuovo da vedere", + "You have no visible notifications in this room.": "Non hai alcuna notifica visibile in questa stanza.", + "%(brand)s Android": "%(brand)s Android" } From e8e847e9bacf08fb8852299fec72bc434a588f6a Mon Sep 17 00:00:00 2001 From: call_xz Date: Mon, 10 Aug 2020 18:44:53 +0000 Subject: [PATCH 142/424] Translated using Weblate (Japanese) Currently translated at 57.8% (1354 of 2341 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/ja/ --- src/i18n/strings/ja.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/ja.json b/src/i18n/strings/ja.json index ee3871fc0f..ff2afb67be 100644 --- a/src/i18n/strings/ja.json +++ b/src/i18n/strings/ja.json @@ -1370,5 +1370,8 @@ "Always show the window menu bar": "常にウィンドウメニューバーを表示する", "Create room": "部屋を作成", "Show %(count)s more|other": "さらに %(count)s 件を表示", - "Show %(count)s more|one": "さらに %(count)s 件を表示" + "Show %(count)s more|one": "さらに %(count)s 件を表示", + "%(num)s minutes ago": "%(num)s 分前", + "%(num)s hours ago": "%(num)s 時間前", + "%(num)s days ago": "%(num)s 日前" } From 98309d7743eac09577f2fcc664ff15165009f231 Mon Sep 17 00:00:00 2001 From: Marcelo Filho Date: Tue, 11 Aug 2020 04:15:48 +0000 Subject: [PATCH 143/424] Translated using Weblate (Portuguese (Brazil)) Currently translated at 97.0% (2271 of 2341 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/pt_BR/ --- src/i18n/strings/pt_BR.json | 64 ++++++++++++++++++++++++++++++++++--- 1 file changed, 59 insertions(+), 5 deletions(-) diff --git a/src/i18n/strings/pt_BR.json b/src/i18n/strings/pt_BR.json index 092f5c9e9f..4ed4ca1175 100644 --- a/src/i18n/strings/pt_BR.json +++ b/src/i18n/strings/pt_BR.json @@ -1040,7 +1040,7 @@ "Robot": "Robô", "Hat": "Chapéu", "Glasses": "Óculos", - "Spanner": "Chave", + "Spanner": "Chave inglesa", "Santa": "Papai-noel", "Prepends ¯\\_(ツ)_/¯ to a plain-text message": "Adiciona ¯ \\ _ (ツ) _ / ¯ no início de uma mensagem de texto simples", "User %(userId)s is already in the room": "O usuário %(userId)s já está na sala", @@ -1652,7 +1652,7 @@ "Symbols": "Símbolos", "Flags": "Bandeiras", "Categories": "Categorias", - "Quick Reactions": "Reações Rápidas", + "Quick Reactions": "Reações rápidas", "Cancel search": "Cancelar busca", "Any of the following data may be shared:": "Qualquer um dos seguintes dados pode ser compartilhado:", "Your theme": "Seu tema", @@ -1878,7 +1878,7 @@ "You can use /help to list available commands. Did you mean to send this as a message?": "Você pode usar /help para listar os comandos disponíveis. Você quis enviar isso como uma mensagem?", "Send as message": "Enviar como mensagem", "Room Topic": "Descrição da sala", - "React": "Reagir", + "React": "Adicionar reação", "If you run into any bugs or have feedback you'd like to share, please let us know on GitHub.": "Se você encontrar algum erro ou tiver um comentário que gostaria de compartilhar, informe-nos no GitHub.", "Resend %(unsentCount)s reaction(s)": "Reenviar %(unsentCount)s reações", "Notification settings": "Configurar notificações", @@ -1887,7 +1887,7 @@ "Switch to dark mode": "Alternar para o modo escuro", "Security & privacy": "Segurança & privacidade", "All settings": "Todas as configurações", - "You're signed out": "Você foi desconectada(o)", + "You're signed out": "Você está desconectada/o", "Clear personal data": "Limpar dados pessoais", "Command Autocomplete": "Preenchimento automático de comandos", "Community Autocomplete": "Preenchimento automático da comunidade", @@ -2224,5 +2224,59 @@ "Identity server URL does not appear to be a valid identity server": "O endereço do servidor de identidade não parece indicar um servidor de identidade válido", "This homeserver does not support login using email address.": "Este servidor local não suporta login usando endereço de e-mail.", "or another cross-signing capable Matrix client": "ou outro cliente Matrix com capacidade de autoverificação", - "For a large amount of messages, this might take some time. Please don't refresh your client in the meantime.": "Quando há muitas mensagens, isso pode levar algum tempo. Por favor, não recarregue o seu cliente enquanto isso." + "For a large amount of messages, this might take some time. Please don't refresh your client in the meantime.": "Quando há muitas mensagens, isso pode levar algum tempo. Por favor, não recarregue o seu cliente enquanto isso.", + "Warning: Upgrading a room will not automatically migrate room members to the new version of the room. We'll post a link to the new room in the old version of the room - room members will have to click this link to join the new room.": "Atenção: ao atualizar uma sala, os membros da sala não são migrados automaticamente para a versão atualizada da sala. Publicaremos um link da nova sala na versão antiga da sala - os membros da sala terão que clicar neste link para entrar na nova sala.", + "Upgrade this room to the recommended room version": "Atualizar a versão desta sala", + "this room": "esta sala", + "View older messages in %(roomName)s.": "Ler mensagens antigas em %(roomName)s.", + "Error changing power level": "Erro ao alterar a permissão do usuário", + "Complete": "Concluir", + "Discovery options will appear once you have added a phone number above.": "As opções de descoberta aparecerão assim que você adicione um número de telefone acima.", + "No other published addresses yet, add one below": "Nenhum endereço publicado ainda, adicione um abaixo", + "Set addresses for this room so users can find this room through your homeserver (%(localDomain)s)": "Defina endereços para esta sala, de modo que os usuários possam encontrar esta sala em seu servidor local (%(localDomain)s)", + "One of the following may be compromised:": "Um dos seguintes pode estar comprometido:", + "The homeserver the user you’re verifying is connected to": "O servidor local no qual o usuário que você está verificando está conectado", + "Yours, or the other users’ internet connection": "A sua conexão de internet ou a dos outros usuários", + "Yours, or the other users’ session": "A sua sessão ou a dos outros usuários", + "Got it": "Ok, entendi", + "%(brand)s encountered an error during upload of:": "%(brand)s encontrou um erro durante o envio de:", + "Upload completed": "Envio concluído", + "Cancelled signature upload": "Envio cancelado da assinatura", + "Unable to upload": "Falha no envio", + "Signature upload success": "Envio bem-sucedido da assinatura", + "Signature upload failed": "O envio da assinatura falhou", + "Manually export keys": "Exportar chaves manualmente", + "Are you sure you want to sign out?": "Deseja mesmo sair?", + "Session name": "Nome da sessão", + "If they don't match, the security of your communication may be compromised.": "Se eles não corresponderem, a segurança da sua comunicação pode estar comprometida.", + "Your homeserver doesn't seem to support this feature.": "O seu servidor local não parece suportar este recurso.", + "Message edits": "Edições na mensagem", + "Your password": "Sua senha", + "This session, or the other session": "Esta sessão, ou a outra sessão", + "The internet connection either session is using": "A conexão de internet que cada sessão está usando", + "New session": "Nova sessão", + "If you didn’t sign in to this session, your account may be compromised.": "Se você não fez login nesta sessão, sua conta pode estar comprometida.", + "This wasn't me": "Não foi eu", + "Please fill why you're reporting.": "Por favor, descreva porque você está reportando.", + "Send report": "Enviar relatório", + "A browser extension is preventing the request.": "Uma extensão do navegador está impedindo a solicitação.", + "The server has denied your request.": "O servidor recusou a sua solicitação.", + "No files visible in this room": "Não há arquivos nesta sala", + "Attach files from chat or just drag and drop them anywhere in a room.": "Anexe arquivos na conversa, ou simplesmente arraste e solte arquivos em qualquer lugar na sala.", + "You have no visible notifications in this room.": "Não há notificações nesta sala.", + "Your new account (%(newAccountId)s) is registered, but you're already logged into a different account (%(loggedInUserId)s).": "Sua nova conta (%(newAccountId)s) foi registrada, mas você já está conectado a uma conta diferente (%(loggedInUserId)s).", + "%(brand)s Desktop": "%(brand)s para Computador", + "%(brand)s iOS": "%(brand)s para iOS", + "%(brand)s Android": "%(brand)s para Android", + "Failed to re-authenticate due to a homeserver problem": "Falha em autenticar novamente devido à um problema no servidor local", + "Failed to re-authenticate": "Falha em autenticar novamente", + "Enter your password to sign in and regain access to your account.": "Digite sua senha para entrar e recuperar o acesso à sua conta.", + "Sign in and regain access to your account.": "Entre e recupere o acesso à sua conta.", + "Enter a Security Phrase": "Digite uma frase de segurança", + "Enter your account password to confirm the upgrade:": "Digite a senha da sua conta para confirmar a atualização:", + "You'll need to authenticate with the server to confirm the upgrade.": "Você precisará se autenticar no servidor para confirmar a atualização.", + "Enter a security phrase only you know, as it’s used to safeguard your data. To be secure, you shouldn’t re-use your account password.": "Digite uma frase de segurança que só você conheça, usada para proteger segredos em seu servidor.", + "Use a different passphrase?": "Usar uma frase secreta diferente?", + "Enter your recovery passphrase a second time to confirm it.": "Digite sua senha de recuperação uma segunda vez para confirmá-la.", + "Confirm your recovery passphrase": "Confirme a sua frase de recuperação" } From bd51eb5ff02b835edebde9b664694661d352ce20 Mon Sep 17 00:00:00 2001 From: rkfg Date: Tue, 11 Aug 2020 08:08:35 +0000 Subject: [PATCH 144/424] Translated using Weblate (Russian) Currently translated at 100.0% (2341 of 2341 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/ru/ --- src/i18n/strings/ru.json | 65 ++++++++++++++++++++-------------------- 1 file changed, 33 insertions(+), 32 deletions(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 5ae611e7ba..ed685cc6ce 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -99,7 +99,7 @@ "%(senderName)s invited %(targetName)s.": "%(senderName)s пригласил %(targetName)s.", "%(targetName)s joined the room.": "%(targetName)s вошёл в комнату.", "%(senderName)s kicked %(targetName)s.": "%(senderName)s выгнал(а) %(targetName)s.", - "%(targetName)s left the room.": "%(targetName)s покидает комнату.", + "%(targetName)s left the room.": "%(targetName)s покинул(а) комнату.", "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s сделал(а) историю разговора видимой для всех собеседников с момента их приглашения.", "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s сделал(а) историю разговора видимой для всех собеседников с момента их входа в комнату.", "%(senderName)s made future room history visible to all room members.": "%(senderName)s сделал(а) историю разговора видимой для всех собеседников.", @@ -112,7 +112,7 @@ "Sent messages will be stored until your connection has returned.": "Отправленные сообщения будут сохранены, пока соединение не восстановится.", "There are no visible files in this room": "В этой комнате нет видимых файлов", "Set a display name:": "Введите отображаемое имя:", - "This server does not support authentication with a phone number.": "Этот сервер не поддерживает аутентификацию с помощью номера телефона.", + "This server does not support authentication with a phone number.": "Этот сервер не поддерживает аутентификацию по номеру телефона.", "An error occurred: %(error_string)s": "Произошла ошибка: %(error_string)s", "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", "Upload an avatar:": "Загрузите аватар:", @@ -194,7 +194,7 @@ "OK": "OK", "Only people who have been invited": "Только приглашённые участники", "Passwords can't be empty": "Пароли не могут быть пустыми", - "Please check your email and click on the link it contains. Once this is done, click continue.": "Проверьте свою электронную почту и нажмите на содержащуюся ссылку. После этого нажмите кнопку Продолжить.", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Проверьте свою электронную почту и нажмите на ссылку в письме. После этого нажмите кнопку Продолжить.", "Power level must be positive integer.": "Уровень прав должен быть положительным целым числом.", "Profile": "Профиль", "Reason": "Причина", @@ -306,7 +306,7 @@ "Unknown error": "Неизвестная ошибка", "Incorrect password": "Неверный пароль", "Unable to restore session": "Восстановление сессии не удалось", - "If you have previously used a more recent version of %(brand)s, your session may be incompatible with this version. Close this window and return to the more recent version.": "Если вы использовали более новую версию %(brand)s, то ваша сессия может быть несовместима с текущей. Закройте это окно и вернитесь к использованию более новой версии.", + "If you have previously used a more recent version of %(brand)s, your session may be incompatible with this version. Close this window and return to the more recent version.": "Если вы использовали более новую версию %(brand)s, то ваша сессия может быть несовместима с этой версией. Закройте это окно и вернитесь к более новой версии.", "Unknown Address": "Неизвестный адрес", "ex. @bob:example.com": "например @bob:example.com", "Add User": "Добавить пользователя", @@ -380,7 +380,7 @@ "(no answer)": "(нет ответа)", "(unknown failure: %(reason)s)": "(неизвестная ошибка: %(reason)s)", "Not a valid %(brand)s keyfile": "Недействительный файл ключей %(brand)s", - "Your browser does not support the required cryptography extensions": "Ваш браузер не поддерживает требуемые криптографические расширения", + "Your browser does not support the required cryptography extensions": "Ваш браузер не поддерживает необходимые криптографические расширения", "Authentication check failed: incorrect password?": "Ошибка аутентификации: возможно, неправильный пароль?", "Do you want to set an email address?": "Хотите указать email?", "This will allow you to reset your password and receive notifications.": "Это позволит при необходимости сбросить пароль и получать уведомления.", @@ -602,7 +602,7 @@ "Unknown for %(duration)s": "Неизвестно %(duration)s", "There's no one else here! Would you like to invite others or stop warning about the empty room?": "Здесь никого нет! Хотите пригласить кого-нибудь или выключить предупреждение о пустой комнате?", "Something went wrong when trying to get your communities.": "Что-то пошло не так при попытке получить список ваших сообществ.", - "This homeserver doesn't offer any login flows which are supported by this client.": "Этот домашний сервер не поддерживает метод входа, поддерживаемый клиентом.", + "This homeserver doesn't offer any login flows which are supported by this client.": "Этот домашний сервер не предлагает ни один метод входа, поддерживаемый клиентом.", "Call Failed": "Звонок не удался", "Send": "Отправить", "collapse": "свернуть", @@ -647,7 +647,7 @@ "Code": "Код", "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Если вы отправили ошибку через GitHub, журналы отладки могут помочь нам выявить проблему. Журналы отладки содержат данные об использовании приложения, включая ваше имя пользователя, идентификаторы или псевдонимы комнат или групп, которые вы посетили, а также имена других пользователей. Они не содержат сообщений.", "Submit debug logs": "Отправить отладочные журналы", - "Opens the Developer Tools dialog": "Открывает Инструменты разработчика", + "Opens the Developer Tools dialog": "Открывает инструменты разработчика", "Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "Прочитано %(displayName)s (%(userName)s) в %(dateTime)s", "Unable to join community": "Не удалось присоединиться к сообществу", "Unable to leave community": "Не удалось покинуть сообщество", @@ -1089,11 +1089,11 @@ "Prepends ¯\\_(ツ)_/¯ to a plain-text message": "Добавляет смайл ¯\\_(ツ)_/¯ в начало сообщения", "Changes your display nickname in the current room only": "Изменяет ваш псевдоним только для текущей комнаты", "Gets or sets the room topic": "Читает или устанавливает тему комнаты", - "%(senderDisplayName)s made the room public to whoever knows the link.": "%(senderDisplayName)s делает комнату публичной для всех кто знает ссылку.", - "%(senderDisplayName)s made the room invite only.": "%(senderDisplayName)s делает комнату доступной только по приглашению.", + "%(senderDisplayName)s made the room public to whoever knows the link.": "%(senderDisplayName)s сделал(а) комнату публичной для всех, кто знает ссылку.", + "%(senderDisplayName)s made the room invite only.": "%(senderDisplayName)s сделал(а) комнату доступной только по приглашению.", "%(senderDisplayName)s changed the join rule to %(rule)s": "%(senderDisplayName)s меняет правило входа на \"%(rule)s\"", - "%(senderDisplayName)s has allowed guests to join the room.": "%(senderDisplayName)s разрешает гостям присоединяться к комнате.", - "%(senderDisplayName)s has prevented guests from joining the room.": "%(senderDisplayName)s запрещает гостям присоединяться к комнате.", + "%(senderDisplayName)s has allowed guests to join the room.": "%(senderDisplayName)s разрешил(а) гостям входить в комнату.", + "%(senderDisplayName)s has prevented guests from joining the room.": "%(senderDisplayName)s запретил(а) гостям входить в комнату.", "%(senderDisplayName)s changed guest access to %(rule)s": "%(senderDisplayName)s меняет гостевой доступ на \"%(rule)s\"", "User %(userId)s is already in the room": "Пользователь %(userId)s уже находится в комнате", "The user must be unbanned before they can be invited.": "Пользователь должен быть разблокирован прежде чем может быть приглашён.", @@ -1147,8 +1147,8 @@ "Adds a custom widget by URL to the room": "Добавляет пользовательский виджет по URL-адресу в комнате", "Please supply a https:// or http:// widget URL": "Пожалуйста, укажите https:// или http:// адрес URL виджета", "You cannot modify widgets in this room.": "Вы не можете изменять виджеты в этой комнате.", - "Sends the given message coloured as a rainbow": "Посылает сообщение, окрашенное в цвет радуги", - "Sends the given emote coloured as a rainbow": "Посылает данную эмоцию, окрашенную в цвет радуги", + "Sends the given message coloured as a rainbow": "Отправляет сообщение, окрашенное в цвета радуги", + "Sends the given emote coloured as a rainbow": "Отправляет эмоцию, окрашенную в цвета радуги", "%(senderName)s revoked the invitation for %(targetDisplayName)s to join the room.": "%(senderName)s отозвал/а приглашение %(targetDisplayName)s присоединиться к комнате.", "No homeserver URL provided": "URL-адрес домашнего сервера не указан", "Unexpected error resolving homeserver configuration": "Неожиданная ошибка в настройках домашнего сервера", @@ -1195,7 +1195,7 @@ "Try to join anyway": "Постарайся присоединиться в любом случае", "Do you want to chat with %(user)s?": "Хотите пообщаться с %(user)s?", "Do you want to join %(roomName)s?": "Хотите присоединиться к %(roomName)s?", - " invited you": " приглашает вас", + " invited you": " пригласил(а) вас", "You're previewing %(roomName)s. Want to join it?": "Вы просматриваете %(roomName)s. Хотите присоединиться?", "%(roomName)s can't be previewed. Do you want to join it?": "%(roomName)s не может быть предварительно просмотрена. Вы хотите присоединиться к ней?", "This room doesn't exist. Are you sure you're at the right place?": "Эта комната не существует. Вы уверены, что находитесь в правильном месте?", @@ -1207,7 +1207,7 @@ "Don't ask me again": "Больше не спрашивать", "Upgrading this room will shut down the current instance of the room and create an upgraded room with the same name.": "Обновление этой комнаты отключит текущий экземпляр комнаты и создаст обновлённую комнату с тем же именем.", "This room has already been upgraded.": "Эта комната уже была обновлена.", - "This room is running room version , which this homeserver has marked as unstable.": "Эта комната работает под управлением версии комнаты , которую этот сервер пометил как unstable.", + "This room is running room version , which this homeserver has marked as unstable.": "Версия этой комнаты — , этот домашний сервер считает её нестабильной.", "Add some now": "Добавить сейчас", "Failed to revoke invite": "Не удалось отменить приглашение", "Could not revoke the invite. The server may be experiencing a temporary problem or you do not have sufficient permissions to revoke the invite.": "Не удалось отозвать приглашение. Возможно, на сервере возникла вре́менная проблема или у вас недостаточно прав для отзыва приглашения.", @@ -1330,7 +1330,7 @@ "Invalid base_url for m.identity_server": "Неверный base_url для m.identity_server", "Identity server URL does not appear to be a valid identity server": "URL-адрес сервера идентификации не является действительным сервером идентификации", "General failure": "Общая ошибка", - "This homeserver does not support login using email address.": "Этот сервер не поддерживает вход с использованием адреса электронной почты.", + "This homeserver does not support login using email address.": "Этот сервер не поддерживает вход по адресу электронной почты.", "Failed to perform homeserver discovery": "Не удалось выполнить обнаружение сервера", "Sign in with single sign-on": "Войти в систему с помощью единой точки входа", "Create account": "Создать учётную запись", @@ -1378,7 +1378,7 @@ "Please tell us what went wrong or, better, create a GitHub issue that describes the problem.": "Пожалуйста, расскажите нам что пошло не так, либо, ещё лучше, создайте отчёт в GitHub с описанием проблемы.", "Removing…": "Удаление…", "Clear all data": "Очистить все данные", - "Your homeserver doesn't seem to support this feature.": "Ваш сервер похоже не поддерживает эту возможность.", + "Your homeserver doesn't seem to support this feature.": "Ваш сервер, похоже, не поддерживает эту возможность.", "Message edits": "Правки сообщения", "Upgrading this room requires closing down the current instance of the room and creating a new room in its place. To give room members the best possible experience, we will:": "Модернизация этой комнаты требует закрытие комнаты в текущем состояние и создания новой комнаты вместо неё. Чтобы упростить процесс для участников, будет сделано:", "Identity Server": "Сервер идентификаций", @@ -1433,7 +1433,7 @@ "Use an identity server": "Используйте сервер идентификации", "Use an identity server to invite by email. Click continue to use the default identity server (%(defaultIdentityServerName)s) or manage in Settings.": "Используйте сервер идентификации что бы пригласить по электронной почте Нажмите Продолжить, чтобы использовать стандартный сервер идентифицации(%(defaultIdentityServerName)s) или изменить в Настройках.", "Use an identity server to invite by email. Manage in Settings.": "Используйте сервер идентификации что бы пригласить по электронной почте Управление в настройках.", - "Allow fallback call assist server turn.matrix.org when your homeserver does not offer one (your IP address would be shared during a call)": "Разрешить резервный вызов поддержки сервера turn.matrix.org, когда ваш домашний сервер не предлагает такой поддержки (ваш IP-адрес будет использоваться во время вызова)", + "Allow fallback call assist server turn.matrix.org when your homeserver does not offer one (your IP address would be shared during a call)": "Использовать резервный сервер помощи звонкам turn.matrix.org, когда ваш домашний сервер не поддерживает эту возможность (ваш IP-адрес будет использоваться во время вызова)", "Add Email Address": "Добавить адрес Email", "Add Phone Number": "Добавить номер телефона", "Changes the avatar of the current room": "Меняет аватарку текущей комнаты", @@ -1621,7 +1621,7 @@ "Setting up keys": "Настройка ключей", "Encryption upgrade available": "Доступно обновление шифрования", "Set up encryption": "Настройка шифрования", - "Double check that your server supports the room version chosen and try again.": "Дважды проверьте, что ваш сервер поддерживает версию комнаты и попробуйте снова.", + "Double check that your server supports the room version chosen and try again.": "Убедитесь, что ваш сервер поддерживает выбранную версию комнаты и попробуйте снова.", "WARNING: Session already verified, but keys do NOT MATCH!": "ВНИМАНИЕ: сессия уже подтверждена, но ключи НЕ совпадают!", "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and session %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "ВНИМАНИЕ: ПРОВЕРКА КЛЮЧА НЕ ПРОШЛА! Ключом подписи для %(userId)s и сессии %(deviceId)s является \"%(fprint)s\", что не соответствует указанному ключу \"%(fingerprint)s\". Это может означать, что ваши сообщения перехватываются!", "The signing key you provided matches the signing key you received from %(userId)s's session %(deviceId)s. Session marked as verified.": "Ключ подписи, который вы предоставили, соответствует ключу подписи, который вы получили от пользователя %(userId)s и сессии %(deviceId)s. Сессия отмечена как подтверждённая.", @@ -2202,7 +2202,7 @@ "Server did not return valid authentication information.": "Сервер не вернул существующую аутентификационную информацию.", "Verification Requests": "Запрос на проверку", "Verifying this user will mark their session as trusted, and also mark your session as trusted to them.": "Подтверждение этого пользователя сделает его сессию доверенной у вас, а также сделает вашу сессию доверенной у него.", - "Verify this device to mark it as trusted. Trusting this device gives you and other users extra peace of mind when using end-to-end encrypted messages.": "Проверьте это устройство, чтобы отметить его как доверенное. Доверие к этому устройству дает вам и другим пользователям дополнительное спокойствие при использовании сквозных зашифрованных сообщений.", + "Verify this device to mark it as trusted. Trusting this device gives you and other users extra peace of mind when using end-to-end encrypted messages.": "Подтвердите это устройство, чтобы сделать его доверенным. Доверие этому устройству дает вам и другим пользователям дополнительное спокойствие при использовании зашифрованных сообщений.", "Verifying this device will mark it as trusted, and users who have verified with you will trust this device.": "Проверка этого устройства пометит его как доверенное, и пользователи, которые проверили его вместе с вами, будут доверять этому устройству.", "Integrations are disabled": "Интеграции отключены", "Integrations not allowed": "Интеграции не разрешены", @@ -2247,15 +2247,15 @@ "You'll upgrade this room from to .": "Вы модернизируете эту комнату с до .", "You're all caught up.": "Нет непрочитанных сообщений.", "Server isn't responding": "Сервер не отвечает", - "Your server isn't responding to some of your requests. Below are some of the most likely reasons.": "Ваш сервер не отвечает на некоторые ваши запросы. Ниже приведены некоторые из наиболее вероятных причин.", + "Your server isn't responding to some of your requests. Below are some of the most likely reasons.": "Ваш сервер не отвечает на некоторые ваши запросы. Ниже приведены вероятные причины.", "The server (%(serverName)s) took too long to respond.": "Сервер (%(serverName)s) слишком долго не отвечал.", "Your firewall or anti-virus is blocking the request.": "Ваш брандмауэр или антивирус блокирует запрос.", - "A browser extension is preventing the request.": "Расширение браузера предотвращает запрос.", + "A browser extension is preventing the request.": "Расширение браузера блокирует запрос.", "The server is offline.": "Сервер оффлайн.", "The server has denied your request.": "Сервер отклонил ваш запрос.", - "Your area is experiencing difficulties connecting to the internet.": "Ваш регион испытывает трудности с подключением к интернету.", - "A connection error occurred while trying to contact the server.": "При попытке связаться с сервером произошла ошибка подключения.", - "The server is not configured to indicate what the problem is (CORS).": "Сервер не настроен для указания того, в чем заключается проблема (CORS).", + "Your area is experiencing difficulties connecting to the internet.": "Ваше подключение к Интернету нестабильно или отсутствует.", + "A connection error occurred while trying to contact the server.": "Произошла ошибка при подключении к серверу.", + "The server is not configured to indicate what the problem is (CORS).": "Сервер не настроен должным образом, чтобы определить проблему (CORS).", "Recent changes that have not yet been received": "Последние изменения, которые еще не были получены", "This will allow you to return to your account after signing out, and sign in on other sessions.": "Это позволит вам вернуться в свою учетную запись после выхода из системы и войти в другие сессии.", "Verify other session": "Проверьте другую сессию", @@ -2264,9 +2264,9 @@ "Looks good!": "Выглядит неплохо!", "Wrong Recovery Key": "Неверный ключ восстановления", "Invalid Recovery Key": "Неверный ключ восстановления", - "Security Phrase": "Защитная фраза", + "Security Phrase": "Секретная фраза", "Unable to access secret storage. Please verify that you entered the correct recovery passphrase.": "Невозможно получить доступ к секретному хранилищу. Пожалуйста, убедитесь, что вы ввели правильную парольную фразу восстановления.", - "Enter your Security Phrase or to continue.": "Введите свою защитную фразу или , чтобы продолжить.", + "Enter your Security Phrase or to continue.": "Введите свою секретную фразу или , чтобы продолжить.", "Security Key": "Ключ безопасности", "Use your Security Key to continue.": "Чтобы продолжить, используйте свой ключ безопасности.", "Restoring keys from backup": "Восстановление ключей из резервной копии", @@ -2316,14 +2316,14 @@ "Safeguard against losing access to encrypted messages & data by backing up encryption keys on your server.": "Защитите себя от потери доступа к зашифрованным сообщениям и данным, создав резервные копии ключей шифрования на вашем сервере.", "Generate a Security Key": "Создание ключа безопасности", "We’ll generate a Security Key for you to store somewhere safe, like a password manager or a safe.": "Мы создадим ключ безопасности для вас, чтобы вы могли хранить его в надежном месте, например, в менеджере паролей или сейфе.", - "Enter a Security Phrase": "Введите защитную фразу", + "Enter a Security Phrase": "Введите секретную фразу", "Use a secret phrase only you know, and optionally save a Security Key to use for backup.": "Используйте секретную фразу, известную только вам, и при необходимости сохраните ключ безопасности для резервного копирования.", "Enter your account password to confirm the upgrade:": "Введите пароль своей учетной записи для подтверждения обновления:", "Restore your key backup to upgrade your encryption": "Восстановите резервную копию ключа для обновления шифрования", "Restore": "Восстановление", "You'll need to authenticate with the server to confirm the upgrade.": "Вам нужно будет пройти аутентификацию на сервере,чтобы подтвердить обновление.", "Upgrade this session to allow it to verify other sessions, granting them access to encrypted messages and marking them as trusted for other users.": "Модернизируйте эту сессию, чтобы она могла проверять другие сессии, предоставляя им доступ к зашифрованным сообщениям и помечая их как доверенные для других пользователей.", - "Enter a security phrase only you know, as it’s used to safeguard your data. To be secure, you shouldn’t re-use your account password.": "Введите фразу безопасности, известную только вам, поскольку она используется для защиты ваших данных. Чтобы быть в безопасности, вы не должны повторно использовать пароль своей учетной записи.", + "Enter a security phrase only you know, as it’s used to safeguard your data. To be secure, you shouldn’t re-use your account password.": "Введите секретную фразу, известную только вам, поскольку она используется для защиты ваших данных. Для безопасности фраза должна отличаться от пароля вашей учетной записи.", "Use a different passphrase?": "Используйте другой пароль?", "Confirm your recovery passphrase": "Подтвердите пароль для восстановления", "Store your Security Key somewhere safe, like a password manager or a safe, as it’s used to safeguard your encrypted data.": "Храните ключ безопасности в надежном месте, например в менеджере паролей или сейфе, так как он используется для защиты ваших зашифрованных данных.", @@ -2333,8 +2333,8 @@ "You can also set up Secure Backup & manage your keys in Settings.": "Вы также можете настроить безопасное резервное копирование и управлять своими ключами в настройках.", "Set up Secure backup": "Настройка безопасного резервного копирования", "Upgrade your encryption": "Обновите свое шифрование", - "Set a Security Phrase": "Установите защитную фразу", - "Confirm Security Phrase": "Подтвердите защитную фразу", + "Set a Security Phrase": "Задайте секретную фразу", + "Confirm Security Phrase": "Подтвердите секретную фразу", "Save your Security Key": "Сохраните свой ключ безопасности", "Unable to set up secret storage": "Невозможно настроить секретное хранилище", "We'll store an encrypted copy of your keys on our server. Secure your backup with a recovery passphrase.": "Мы будем хранить зашифрованную копию ваших ключей на нашем сервере. Защитите свою резервную копию с помощью пароля восстановления.", @@ -2404,5 +2404,6 @@ "Attach files from chat or just drag and drop them anywhere in a room.": "Прикрепите файлы из чата или просто перетащите их в комнату.", "You’re all caught up": "Нет непрочитанных сообщений", "You have no visible notifications in this room.": "Нет видимых уведомлений в этой комнате.", - "%(brand)s Android": "%(brand)s Android" + "%(brand)s Android": "%(brand)s Android", + "Master private key:": "Приватный мастер-ключ:" } From f41eb9e7cf6c3f7039462430061f7d34f6476ef4 Mon Sep 17 00:00:00 2001 From: Yes Date: Tue, 11 Aug 2020 18:44:44 +0000 Subject: [PATCH 145/424] Translated using Weblate (Swedish) Currently translated at 61.9% (1448 of 2341 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/sv/ --- src/i18n/strings/sv.json | 52 +++++++++++++++++++++++++++------------- 1 file changed, 35 insertions(+), 17 deletions(-) diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index 83fd3fc5da..b2c7623fca 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -86,7 +86,7 @@ "Failed to send request.": "Det gick inte att sända begäran.", "Failed to set display name": "Det gick inte att ange visningsnamn", "Failed to unban": "Det gick inte att avbanna", - "Failed to verify email address: make sure you clicked the link in the email": "Det gick inte att bekräfta epostadressen, klicka på länken i epostmeddelandet", + "Failed to verify email address: make sure you clicked the link in the email": "Det gick inte att bekräfta e-postadressen, klicka på länken i e-postmeddelandet", "Favourite": "Favorit", "Accept": "Godkänn", "Access Token:": "Åtkomsttoken:", @@ -235,12 +235,12 @@ "Edit": "Ändra", "Enable automatic language detection for syntax highlighting": "Aktivera automatisk språkdetektering för syntaxmarkering", "Publish this room to the public in %(domain)s's room directory?": "Publicera rummet i den offentliga rumskatalogen på %(domain)s?", - "AM": "a.m.", - "PM": "p.m.", + "AM": "AM", + "PM": "PM", "Submit": "Lämna in", "The maximum permitted number of widgets have already been added to this room.": "Den största tillåtna mängden widgetar har redan tillsats till rummet.", "The phone number entered looks invalid": "Det angivna telefonnumret är ogiltigt", - "This email address is already in use": "Den här epostadressen används redan", + "This email address is already in use": "Den här e-postadressen används redan", "This email address was not found": "Den här epostadressen finns inte", "The email address linked to your account must be entered.": "Epostadressen som är kopplad till ditt konto måste anges.", "Online": "Online", @@ -262,18 +262,18 @@ "Thu": "Tors", "Fri": "Fre", "Sat": "Lör", - "Jan": "jan", - "Feb": "feb", - "Mar": "mar", - "Apr": "apr", - "May": "maj", - "Jun": "jun", - "Jul": "jul", - "Aug": "aug", - "Sep": "sep", - "Oct": "okt", - "Nov": "nov", - "Dec": "dec", + "Jan": "Jan", + "Feb": "Feb", + "Mar": "Mar", + "Apr": "Apr", + "May": "Maj", + "Jun": "Jun", + "Jul": "Jul", + "Aug": "Aug", + "Sep": "Sep", + "Oct": "Okt", + "Nov": "Nov", + "Dec": "Dec", "Invite to Community": "Bjud in till community", "Unable to enable Notifications": "Det går inte att aktivera aviseringar", "The information being sent to us to help make %(brand)s better includes:": "Informationen som skickas till oss för att förbättra %(brand)s inkluderar:", @@ -1521,5 +1521,23 @@ "Enter": "Enter", "Space": "Space", "End": "End", - "You have been logged out of all sessions and will no longer receive push notifications. To re-enable notifications, sign in again on each device.": "Du har blivit utloggad från alla dina sessioner och kommer inte längre att motta pushnotiser. För att återaktivera pushnotiser, logga in igen på varje enhet." + "You have been logged out of all sessions and will no longer receive push notifications. To re-enable notifications, sign in again on each device.": "Du har blivit utloggad från alla dina sessioner och kommer inte längre att motta pushnotiser. För att återaktivera pushnotiser, logga in igen på varje enhet.", + "Use Single Sign On to continue": "Använd Engångs Inloggning för att fortsätta", + "Confirm adding this email address by using Single Sign On to prove your identity.": "Bekräfta att du lägger till e-postadressen genom att använda Engångs Inloggning för att bevisa din identitet.", + "Single Sign On": "Engångs Inloggning", + "Confirm adding email": "Bekräfta att du lägger till e-posten", + "Click the button below to confirm adding this email address.": "Klicka på knappen nedan för att bekräfta att du lägger till e-postadressen.", + "Confirm adding this phone number by using Single Sign On to prove your identity.": "Bekräfta att du lägger till telefon numret genom att använda Engångs Inloggning för att bevisa din identitet.", + "Confirm adding phone number": "Bekräfta att du lägger till telefon numret", + "Click the button below to confirm adding this phone number.": "Klicka på knappen nedan för att bekräfta att du lägger till telefon numret.", + "Are you sure you want to cancel entering passphrase?": "Är du säker på att du bill avbryta inmatning av lösenordet?", + "Go Back": "Gå tillbaka", + "Room name or address": "Rum namn eller adress", + "%(name)s is requesting verification": "%(name)s begär verifiering", + "Use your account to sign in to the latest version": "Använd ditt konto för att logga in till den senaste versionen", + "We’re excited to announce Riot is now Element": "Vi är glada att meddela att Riot är nu Element", + "Riot is now Element!": "Riot är nu Element!", + "Learn More": "Lär mer", + "Sends a message as html, without interpreting it as markdown": "Skicka ett meddelande som html, utan att tolka det som markdown", + "Failed to set topic": "Misslyckades med att ställa in ämnet" } From f8526a7387fb56652a136efbd3ce28df03a1b009 Mon Sep 17 00:00:00 2001 From: vejetaryenvampir Date: Tue, 11 Aug 2020 16:17:03 +0000 Subject: [PATCH 146/424] Translated using Weblate (Turkish) Currently translated at 73.4% (1719 of 2341 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/tr/ --- src/i18n/strings/tr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/tr.json b/src/i18n/strings/tr.json index 48c051004a..5a152eeab6 100644 --- a/src/i18n/strings/tr.json +++ b/src/i18n/strings/tr.json @@ -223,7 +223,7 @@ "Submit": "Gönder", "Success": "Başarılı", "The phone number entered looks invalid": "Girilen telefon numarası geçersiz görünüyor", - "This email address is already in use": "Bu eposta adresi zaten kullanımda", + "This email address is already in use": "Bu e-posta adresi zaten kullanımda", "This email address was not found": "Bu e-posta adresi bulunamadı", "The email address linked to your account must be entered.": "Hesabınıza bağlı e-posta adresi girilmelidir.", "The remote side failed to pick up": "Uzak taraf toplanamadı(alınamadı)", From 839b533a97581a898551e65d647913739778bad1 Mon Sep 17 00:00:00 2001 From: strix aluco Date: Mon, 10 Aug 2020 19:18:59 +0000 Subject: [PATCH 147/424] Translated using Weblate (Ukrainian) Currently translated at 49.0% (1147 of 2341 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/uk/ --- src/i18n/strings/uk.json | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/i18n/strings/uk.json b/src/i18n/strings/uk.json index c895da1ba4..efdfa13fe6 100644 --- a/src/i18n/strings/uk.json +++ b/src/i18n/strings/uk.json @@ -891,7 +891,7 @@ "Go to Settings": "Перейти до налаштувань", "Compare unique emoji": "Порівняйте унікальні смайлики", "Cancelling…": "Скасування…", - "Dog": "Собака", + "Dog": "Пес", "Cat": "Кіт", "Lion": "Лев", "Horse": "Кінь", @@ -899,7 +899,7 @@ "Elephant": "Слон", "Rabbit": "Кріль", "Panda": "Панда", - "Rooster": "Півень", + "Rooster": "Когут", "Penguin": "Пінгвін", "Turtle": "Черепаха", "Fish": "Риба", @@ -913,16 +913,16 @@ "Corn": "Кукурудза", "Pizza": "Піца", "Heart": "Серце", - "Smiley": "Смайлик", + "Smiley": "Посмішка", "Robot": "Робот", "Hat": "Капелюх", "Glasses": "Окуляри", "Spanner": "Гайковий ключ", "Thumbs up": "Великий палець вгору", - "Umbrella": "Парасоля", + "Umbrella": "Парасолька", "Hourglass": "Пісковий годинник", "Clock": "Годинник", - "Light bulb": "Лампа", + "Light bulb": "Лампочка", "Book": "Книга", "Pencil": "Олівець", "Paperclip": "Спиначка", @@ -946,7 +946,7 @@ "Pin": "Кнопка", "Accept to continue:": "Прийміть для продовження:", "Flower": "Квітка", - "Unicorn": "Одноріг", + "Unicorn": "Єдиноріг", "Butterfly": "Метелик", "Cake": "Пиріг", "Tree": "Дерево", @@ -1154,5 +1154,7 @@ "Use this session to verify your new one, granting it access to encrypted messages:": "Використати цей сеанс для звірення вашого нового сеансу, надаючи йому доступ до зашифрованих повідомлень:", "Reporting this message will send its unique 'event ID' to the administrator of your homeserver. If messages in this room are encrypted, your homeserver administrator will not be able to read the message text or view any files or images.": "Скарження на це повідомлення надішле його унікальний 'ідентифікатор події (event ID)' адміністраторові вашого домашнього сервера. Якщо повідомлення у цій кімнаті зашифровані, то адміністратор не зможе бачити ані тексту повідомлень, ані жодних файлів чи зображень.", "Some session data, including encrypted message keys, is missing. Sign out and sign in to fix this, restoring keys from backup.": "Бракує деяких даних сеансу, включно з ключами зашифрованих повідомлень. Вийдіть та зайдіть знову щоб виправити цю проблему, відновлюючи ключі з дубля.", - "Data from an older version of %(brand)s has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Було виявлено дані зі старої версії %(brand)s. Це призведе до збоїння наскрізного шифрування у старій версії. Наскрізно зашифровані повідомлення, що обмінювані нещодавно, під час використання старої версії, можуть бути недешифровними у цій версії. Це може призвести до збоїв повідомлень, обмінюваних також і з цією версією. У разі виникнення проблем вийдіть з програми та зайдіть знову. Задля збереження історії повідомлень експортуйте та переімпортуйте ваші ключі." + "Data from an older version of %(brand)s has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Було виявлено дані зі старої версії %(brand)s. Це призведе до збоїння наскрізного шифрування у старій версії. Наскрізно зашифровані повідомлення, що обмінювані нещодавно, під час використання старої версії, можуть бути недешифровними у цій версії. Це може призвести до збоїв повідомлень, обмінюваних також і з цією версією. У разі виникнення проблем вийдіть з програми та зайдіть знову. Задля збереження історії повідомлень експортуйте та переімпортуйте ваші ключі.", + "Changing your password will reset any end-to-end encryption keys on all of your sessions, making encrypted chat history unreadable. Set up Key Backup or export your room keys from another session before resetting your password.": "Змінення паролю скине усі ключі наскрізного шифрування в усіх ваших сеансах, роблячи зашифровану історію листувань непрочитною. Налагодьте дублювання ключів або експортуйте ключі кімнат з іншого сеансу перед скиданням паролю.", + "Confirm your identity by verifying this login from one of your other sessions, granting it access to encrypted messages.": "Підтвердьте вашу особу шляхом звіряння цього входу з одного з інших ваших сеансів, надаючи йому доступ до зашифрованих повідомлень." } From 83867b893fbbd6cc6a9e23a108f6dd6d63b624f0 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Wed, 12 Aug 2020 14:53:31 +0100 Subject: [PATCH 148/424] Update types --- src/@types/global.d.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/@types/global.d.ts b/src/@types/global.d.ts index 102643dd6a..6565b6549e 100644 --- a/src/@types/global.d.ts +++ b/src/@types/global.d.ts @@ -40,7 +40,6 @@ declare global { mxContentMessages: ContentMessages; mxToastStore: ToastStore; mxDeviceListener: DeviceListener; - mxRebrandListener: RebrandListener; mxRoomListStore: RoomListStoreClass; mxRoomListLayoutStore: RoomListLayoutStore; mxActiveRoomObserver: ActiveRoomObserver; From 1a68d2bb7c589d6d4cae51ff0e5a1bdbab873b0f Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Wed, 12 Aug 2020 14:57:26 +0100 Subject: [PATCH 149/424] Update more types --- src/@types/global.d.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/@types/global.d.ts b/src/@types/global.d.ts index 6565b6549e..13520e218d 100644 --- a/src/@types/global.d.ts +++ b/src/@types/global.d.ts @@ -19,7 +19,6 @@ import ContentMessages from "../ContentMessages"; import { IMatrixClientPeg } from "../MatrixClientPeg"; import ToastStore from "../stores/ToastStore"; import DeviceListener from "../DeviceListener"; -import RebrandListener from "../RebrandListener"; import { RoomListStoreClass } from "../stores/room-list/RoomListStore"; import { PlatformPeg } from "../PlatformPeg"; import RoomListLayoutStore from "../stores/room-list/RoomListLayoutStore"; From 2e76e19f37d47df09a79d2ac4cf93c2b6e34f1f4 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Wed, 12 Aug 2020 14:58:55 +0100 Subject: [PATCH 150/424] Remove rebrand toast from tests --- test/end-to-end-tests/src/scenarios/toast.js | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/test/end-to-end-tests/src/scenarios/toast.js b/test/end-to-end-tests/src/scenarios/toast.js index 2eafad8315..8b23dbcabc 100644 --- a/test/end-to-end-tests/src/scenarios/toast.js +++ b/test/end-to-end-tests/src/scenarios/toast.js @@ -24,12 +24,6 @@ module.exports = async function toastScenarios(alice, bob) { await rejectToast(alice, "Notifications"); alice.log.done(); - alice.log.step(`accepts rebrand toast`); - await acceptToast(alice, "Riot is now Element!"); - let doneButton = await alice.query('.mx_Dialog_primary'); - await doneButton.click(); // also accept the resulting dialog - alice.log.done(); - alice.log.step(`accepts analytics toast`); await acceptToast(alice, "Help us improve Element"); alice.log.done(); @@ -44,12 +38,6 @@ module.exports = async function toastScenarios(alice, bob) { await rejectToast(bob, "Notifications"); bob.log.done(); - bob.log.step(`accepts rebrand toast`); - await acceptToast(bob, "Riot is now Element!"); - doneButton = await bob.query('.mx_Dialog_primary'); - await doneButton.click(); // also accept the resulting dialog - bob.log.done(); - bob.log.step(`reject analytics toast`); await rejectToast(bob, "Help us improve Element"); bob.log.done(); From 3e475bb69cb8e6b08228ddf09be140c53e3f946d Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Wed, 12 Aug 2020 16:21:37 +0100 Subject: [PATCH 151/424] padding the timeline so that its scrollbar has its own space from the resize handle --- res/css/structures/_MainSplit.scss | 2 ++ 1 file changed, 2 insertions(+) diff --git a/res/css/structures/_MainSplit.scss b/res/css/structures/_MainSplit.scss index aee7b5a154..dc62cb8218 100644 --- a/res/css/structures/_MainSplit.scss +++ b/res/css/structures/_MainSplit.scss @@ -23,6 +23,8 @@ limitations under the License. .mx_MainSplit > .mx_RightPanel_ResizeWrapper { padding: 5px; + // margin left to not allow the handle to not encroach on the space for the scrollbar + margin-left: 8px; &:hover .mx_RightPanel_ResizeHandle { // Need to use important to override element style attributes From a4d30c15496064ebc444ff56d6d41f2fc11a7bde Mon Sep 17 00:00:00 2001 From: strix aluco Date: Wed, 12 Aug 2020 19:23:55 +0000 Subject: [PATCH 152/424] Translated using Weblate (Ukrainian) Currently translated at 50.0% (1166 of 2331 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/uk/ --- src/i18n/strings/uk.json | 52 +++++++++++++++++++++++++++++----------- 1 file changed, 38 insertions(+), 14 deletions(-) diff --git a/src/i18n/strings/uk.json b/src/i18n/strings/uk.json index efdfa13fe6..3bae709451 100644 --- a/src/i18n/strings/uk.json +++ b/src/i18n/strings/uk.json @@ -184,7 +184,7 @@ "Logs sent": "Журнали надіслані", "Back": "Назад", "Reply": "Відповісти", - "Show message in desktop notification": "Показати повідомлення в сповіщення на робочому столі", + "Show message in desktop notification": "Показувати повідомлення у стільничних сповіщеннях", "Unable to join network": "Неможливо приєднатись до мережі", "Sorry, your browser is not able to run %(brand)s.": "Вибачте, ваш оглядач не спроможний запустити %(brand)s.", "Uploaded on %(date)s by %(user)s": "Завантажено %(date)s користувачем %(user)s", @@ -201,7 +201,7 @@ "You can now return to your account after signing out, and sign in on other devices.": "Тепер ви можете повернутися до свого облікового запису після виходу з нього, а також зайти з інших пристроїв.", "Enable email notifications": "Увімкнути сповіщення е-поштою", "Event Type": "Тип західу", - "No rooms to show": "Кімнати відсутні", + "No rooms to show": "Відсутні кімнати для показу", "Download this file": "Звантажити цей файл", "Pin Message": "Прикріпити повідомлення", "Failed to change settings": "Не вдалось змінити налаштування", @@ -349,7 +349,7 @@ "(unknown failure: %(reason)s)": "(невідома помилка: %(reason)s)", "%(senderName)s ended the call.": "%(senderName)s завершив/ла дзвінок.", "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s надіслав/ла запрошення %(targetDisplayName)s приєднатися до кімнати.", - "Show developer tools": "Показати інструменти розробки", + "Show developer tools": "Показувати розробницькі засоби", "Default": "Типово", "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s зробив/ла майбутню історію кімнати видимою для всіх учасників, з моменту, коли вони приєдналися.", "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s зробив/ла майбутню історію кімнати видимою для всіх учасників, з моменту, коли вони приєдналися.", @@ -378,7 +378,7 @@ "Show timestamps in 12 hour format (e.g. 2:30pm)": "Показувати час у 12-годинному форматі (напр. 2:30 пп)", "Always show encryption icons": "Завжди показувати значки шифрування", "Enable automatic language detection for syntax highlighting": "Показувати автоматичне визначення мови для підсвічування синтаксису", - "Automatically replace plain text Emoji": "Автоматично замінювати емоційки в простому тексті", + "Automatically replace plain text Emoji": "Автоматично замінювати простотекстові емодзі", "Mirror local video feed": "Показувати локальне відео віддзеркалено", "Send analytics data": "Надсилати дані аналітики", "Enable inline URL previews by default": "Увімкнути вбудований перегляд гіперпосилань за умовчанням", @@ -530,7 +530,7 @@ "Click the button below to confirm adding this email address.": "Клацніть на кнопці нижче щоб підтвердити додавання цієї адреси е-пошти.", "Confirm": "Підтвердити", "Confirm adding this phone number by using Single Sign On to prove your identity.": "Підтвердьте додавання цього телефонного номера через використання Single Sign On аби довести вашу ідентичність.", - "Confirm adding phone number": "Підтвердити додавання телефонного номера", + "Confirm adding phone number": "Підтвердьте додавання телефонного номера", "Click the button below to confirm adding this phone number.": "Клацніть на кнопці нижче щоб підтвердити додавання цього телефонного номера.", "Whether you're using %(brand)s on a device where touch is the primary input mechanism": "Чи використовуєте ви %(brand)s на пристрої, де основним засобом вводження є дотик", "Whether you're using %(brand)s as an installed Progressive Web App": "Чи використовуєте ви %(brand)s як встановлений Progressive Web App", @@ -700,7 +700,7 @@ "Ask this user to verify their session, or manually verify it below.": "Попросіть цього користувача підтвердити сесію, або підтвердіть її власноруч нижче.", "Not Trusted": "Недовірене", "Manually Verify by Text": "Ручна перевірка за допомогою тексту", - "Interactively verify by Emoji": "Інтерактивна перевірка з емодзі", + "Interactively verify by Emoji": "Інтерактивно звірити за допомогою емодзі", "Done": "Зроблено", "%(displayName)s is typing …": "%(displayName)s пише…", "%(names)s and %(count)s others are typing …|other": "%(names)s та ще %(count)s учасників пишуть…", @@ -802,7 +802,7 @@ "Show info about bridges in room settings": "Показувати інформацію про мости в налаштуваннях кімнати", "Font size": "Розмір шрифту", "Use custom size": "Використовувати нетиповий розмір", - "Enable Emoji suggestions while typing": "Увімкнути пропонування смайлів при друкуванні", + "Enable Emoji suggestions while typing": "Увімкнути пропонування емодзі при друкуванні", "Use a more compact ‘Modern’ layout": "Використовувати компактнішу \"Сучасну\" тему", "General": "Загальні", "Discovery": "Відкриття", @@ -850,8 +850,8 @@ "Room ID or address of ban list": "Ідентифікатор номера або адреса бан-лісту", "Subscribe": "Підписатись", "Start automatically after system login": "Автозапуск при вході в систему", - "Always show the window menu bar": "Завжди показуввати рядок меню", - "Show tray icon and minimize window to it on close": "Показати іконку в панелі завдань та згорнути вікно при закритті", + "Always show the window menu bar": "Завжди показувати рядок меню", + "Show tray icon and minimize window to it on close": "Показувати піктограму у лотку та згортати вікно при закритті", "Preferences": "Параметри", "Room list": "Перелік кімнат", "Composer": "Редактор", @@ -889,7 +889,7 @@ "User menu": "Користувацьке меню", "If you don't want to set this up now, you can later in Settings.": "Якщо ви не бажаєте налаштовувати це зараз, ви можете зробити це пізніше у налаштуваннях.", "Go to Settings": "Перейти до налаштувань", - "Compare unique emoji": "Порівняйте унікальні смайлики", + "Compare unique emoji": "Порівняйте унікальні емодзі", "Cancelling…": "Скасування…", "Dog": "Пес", "Cat": "Кіт", @@ -935,7 +935,7 @@ "Bicycle": "Велоcипед", "Aeroplane": "Літак", "Rocket": "Ракета", - "Trophy": "Трофей", + "Trophy": "Приз", "Ball": "М'яч", "Guitar": "Гітара", "Trumpet": "Труба", @@ -958,7 +958,7 @@ "Workspace: %(networkName)s": "Робочий простір: %(networkName)s", "Channel: %(channelName)s": "Канал: %(channelName)s", "Show less": "Згорнути", - "Show more": "Показати більше", + "Show more": "Розгорнути", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Змінення пароля призведе до скидання всіх ключів наскрізного шифрування та унеможливить читання історії листування, якщо тільки ви не експортуєте ваші ключі кімнати та не імпортуєте їх згодом. Це буде вдосконалено у майбутньому.", "Santa": "Санта Клаус", "Gift": "Подарунок", @@ -1023,7 +1023,7 @@ "Not now": "Не зараз", "Don't ask me again": "Не запитувати мене знову", "Appearance": "Вигляд", - "Show rooms with unread messages first": "Показувати вгорі кімнати з непрочитаними повідомленнями", + "Show rooms with unread messages first": "Спочатку показувати кімнати з непрочитаними повідомленнями", "Show previews of messages": "Показувати попередній перегляд повідомлень", "Sort by": "Упорядкувати за", "Activity": "Активністю", @@ -1156,5 +1156,29 @@ "Some session data, including encrypted message keys, is missing. Sign out and sign in to fix this, restoring keys from backup.": "Бракує деяких даних сеансу, включно з ключами зашифрованих повідомлень. Вийдіть та зайдіть знову щоб виправити цю проблему, відновлюючи ключі з дубля.", "Data from an older version of %(brand)s has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Було виявлено дані зі старої версії %(brand)s. Це призведе до збоїння наскрізного шифрування у старій версії. Наскрізно зашифровані повідомлення, що обмінювані нещодавно, під час використання старої версії, можуть бути недешифровними у цій версії. Це може призвести до збоїв повідомлень, обмінюваних також і з цією версією. У разі виникнення проблем вийдіть з програми та зайдіть знову. Задля збереження історії повідомлень експортуйте та переімпортуйте ваші ключі.", "Changing your password will reset any end-to-end encryption keys on all of your sessions, making encrypted chat history unreadable. Set up Key Backup or export your room keys from another session before resetting your password.": "Змінення паролю скине усі ключі наскрізного шифрування в усіх ваших сеансах, роблячи зашифровану історію листувань непрочитною. Налагодьте дублювання ключів або експортуйте ключі кімнат з іншого сеансу перед скиданням паролю.", - "Confirm your identity by verifying this login from one of your other sessions, granting it access to encrypted messages.": "Підтвердьте вашу особу шляхом звіряння цього входу з одного з інших ваших сеансів, надаючи йому доступ до зашифрованих повідомлень." + "Confirm your identity by verifying this login from one of your other sessions, granting it access to encrypted messages.": "Підтвердьте вашу особу шляхом звіряння цього входу з одного з інших ваших сеансів, надаючи йому доступ до зашифрованих повідомлень.", + "Enable big emoji in chat": "Увімкнути великі емодзі у балачках", + "Show typing notifications": "Сповіщати про друкування", + "Show rooms with unread notifications first": "Спочатку показувати кімнати з непрочитаними сповіщеннями", + "Show shortcuts to recently viewed rooms above the room list": "Показувати нещодавно бачені кімнати вгорі понад переліком кімнат", + "Show hidden events in timeline": "Показувати приховані події у часоряді", + "Show previews/thumbnails for images": "Показувати попередній перегляд зображень", + "Compare a unique set of emoji if you don't have a camera on either device": "Порівняйте унікальну низку емодзі якщо ви не маєте камери на жодному пристрої", + "Confirm the emoji below are displayed on both sessions, in the same order:": "Підтвердьте, що нижчевказані емодзі відбиваються в обох сеансах в однаковому порядку:", + "Verify this user by confirming the following emoji appear on their screen.": "Звірте цього користувача підтвердженням того, що наступні емодзі з'являються на його екрані.", + "Emoji picker": "Обирач емодзі", + "The session you are trying to verify doesn't support scanning a QR code or emoji verification, which is what %(brand)s supports. Try with a different client.": "Сеанс, який ви намагаєтесь звірити, не підтримує сканування QR-коду або звіряння за допомогою емодзі, що є підтримувані %(brand)s. Спробуйте використати інший клієнт.", + "If you can't scan the code above, verify by comparing unique emoji.": "Якщо ви не можете відсканувати вищезазначений код, звірте порівнянням унікальних емодзі.", + "Verify by comparing unique emoji.": "Звірити порівнянням унікальних емодзі.", + "Verify by emoji": "Звірити за допомогою емодзі", + "Compare emoji": "Порівняти емодзі", + "This requires the latest %(brand)s on your other devices:": "Це потребує найостаннішого %(brand)s на ваших інших пристроях:", + "%(brand)s Web": "%(brand)s Web", + "%(brand)s Desktop": "%(brand)s Desktop", + "%(brand)s iOS": "%(brand)s iOS", + "%(brand)s Android": "%(brand)s Android", + "or another cross-signing capable Matrix client": "або інший здатний до перехресного підписування Matrix-клієнт", + "Your new session is now verified. It has access to your encrypted messages, and other users will see it as trusted.": "Ваш новий сеанс тепер є звірений. Він має доступ до ваших зашифрованих повідомлень, а інші користувачі бачитимуть його як довірений.", + "Emoji": "Емодзі", + "Emoji Autocomplete": "Самодоповнення емодзі" } From 47bb6d0b252d4cd819b3b64becd9bd0fc25a9ef6 Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Thu, 13 Aug 2020 12:12:10 +0100 Subject: [PATCH 153/424] Upgrade matrix-js-sdk to 8.1.0-rc.1 --- package.json | 2 +- yarn.lock | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 548b33f353..a788282ed2 100644 --- a/package.json +++ b/package.json @@ -79,7 +79,7 @@ "is-ip": "^2.0.0", "linkifyjs": "^2.1.9", "lodash": "^4.17.19", - "matrix-js-sdk": "github:matrix-org/matrix-js-sdk#develop", + "matrix-js-sdk": "8.1.0-rc.1", "minimist": "^1.2.5", "pako": "^1.0.11", "parse5": "^5.1.1", diff --git a/yarn.lock b/yarn.lock index 98fe42ef13..d4d48c10c2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6470,9 +6470,10 @@ mathml-tag-names@^2.0.1: resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3" integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg== -"matrix-js-sdk@github:matrix-org/matrix-js-sdk#develop": - version "8.0.1" - resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/a6fe4cdf1cbf56baeb538f071c27326fe98630d0" +matrix-js-sdk@8.1.0-rc.1: + version "8.1.0-rc.1" + resolved "https://registry.yarnpkg.com/matrix-js-sdk/-/matrix-js-sdk-8.1.0-rc.1.tgz#e42ca8dae7f513f956457eeb46f03c445a3712e8" + integrity sha512-/qOSe0FQsbC2ITXhUbpjCIRAT78f2VHxKGqGMC2M2s5e2Mvpxcpu7lj/ONz5irUPd34Sqhj9KdIUnAqBbh3stQ== dependencies: "@babel/runtime" "^7.8.3" another-json "^0.2.0" From ee1ea4132d911dbafeaa3414aea09fb0b7d26bbc Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Thu, 13 Aug 2020 12:17:58 +0100 Subject: [PATCH 154/424] Prepare changelog for v3.2.0-rc.1 --- CHANGELOG.md | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 468d7d211a..0bfd203b27 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,69 @@ +Changes in [3.2.0-rc.1](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v3.2.0-rc.1) (2020-08-13) +============================================================================================================= +[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v3.1.0...v3.2.0-rc.1) + + * Upgrade to JS SDK 8.1.0-rc.1 + * Update from Weblate + [\#5105](https://github.com/matrix-org/matrix-react-sdk/pull/5105) + * padding the timeline so that its scrollbar has its own space from the + resizer + [\#5103](https://github.com/matrix-org/matrix-react-sdk/pull/5103) + * Try to close notification on all platforms which support it, not just + electron + [\#5102](https://github.com/matrix-org/matrix-react-sdk/pull/5102) + * Fix exception when stripping replies from an event with a non-string body + [\#5101](https://github.com/matrix-org/matrix-react-sdk/pull/5101) + * Quick win session 24/07/2020 + [\#5056](https://github.com/matrix-org/matrix-react-sdk/pull/5056) + * Remove rebranding toast + [\#5100](https://github.com/matrix-org/matrix-react-sdk/pull/5100) + * Generate previews for rooms when the option changes + [\#5098](https://github.com/matrix-org/matrix-react-sdk/pull/5098) + * Fix Bridge Settings tab + [\#5095](https://github.com/matrix-org/matrix-react-sdk/pull/5095) + * get screen type from app prop + [\#5081](https://github.com/matrix-org/matrix-react-sdk/pull/5081) + * Update rageshake app name + [\#5093](https://github.com/matrix-org/matrix-react-sdk/pull/5093) + * Factor out Iconized Context menu for reusability + [\#5085](https://github.com/matrix-org/matrix-react-sdk/pull/5085) + * Decouple Audible notifications from Desktop notifications + [\#5088](https://github.com/matrix-org/matrix-react-sdk/pull/5088) + * Make the room sublist show more/less buttons treeitems + [\#5087](https://github.com/matrix-org/matrix-react-sdk/pull/5087) + * Share and debug master cross-signing key + [\#5092](https://github.com/matrix-org/matrix-react-sdk/pull/5092) + * Create Map comparison utilities and convert Hooks to Typescript + [\#5086](https://github.com/matrix-org/matrix-react-sdk/pull/5086) + * Fix room list scrolling in Safari + [\#5090](https://github.com/matrix-org/matrix-react-sdk/pull/5090) + * Replace Riot with Element in docs and comments + [\#5083](https://github.com/matrix-org/matrix-react-sdk/pull/5083) + * When the room view isn't active don't highlight it in room list + [\#5027](https://github.com/matrix-org/matrix-react-sdk/pull/5027) + * remove emoji icons in autocomplete/reply by designer request + [\#5073](https://github.com/matrix-org/matrix-react-sdk/pull/5073) + * Add title and icon to empty state of file and notification panel + [\#5079](https://github.com/matrix-org/matrix-react-sdk/pull/5079) + * Mass redact ignore room creation events + [\#5045](https://github.com/matrix-org/matrix-react-sdk/pull/5045) + * Replace all chevrons with a single icon + [\#5067](https://github.com/matrix-org/matrix-react-sdk/pull/5067) + * Replace i18n generation script with something matching our project + [\#5077](https://github.com/matrix-org/matrix-react-sdk/pull/5077) + * Handle tag changes in sticky room updates + [\#5078](https://github.com/matrix-org/matrix-react-sdk/pull/5078) + * Remove leftover bits of TSLint + [\#5075](https://github.com/matrix-org/matrix-react-sdk/pull/5075) + * Clean up documentation of Whenable + fix other code concerns + [\#5076](https://github.com/matrix-org/matrix-react-sdk/pull/5076) + * Center the jump down/up icon, looks misaligned + [\#5074](https://github.com/matrix-org/matrix-react-sdk/pull/5074) + * [WIP] Support a new settings structure + [\#5058](https://github.com/matrix-org/matrix-react-sdk/pull/5058) + * Convert SettingsStore to TypeScript + [\#5062](https://github.com/matrix-org/matrix-react-sdk/pull/5062) + Changes in [3.1.0](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v3.1.0) (2020-08-05) =================================================================================================== [Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v3.1.0-rc.1...v3.1.0) From 8e8a2e602b55d9b2ad3f9df6618a6f0a1d0f1ffd Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Thu, 13 Aug 2020 12:17:59 +0100 Subject: [PATCH 155/424] v3.2.0-rc.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a788282ed2..a4aa5b1e9c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "matrix-react-sdk", - "version": "3.1.0", + "version": "3.2.0-rc.1", "description": "SDK for matrix.org using React", "author": "matrix.org", "repository": { From 8aa50ecb599ad69ff8038dc7c2e3239dde0a3f60 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Thu, 13 Aug 2020 13:08:07 +0100 Subject: [PATCH 156/424] Iterate rageshake download styling --- res/css/_components.scss | 1 + res/css/views/dialogs/_BugReportDialog.scss | 23 +++++++++++++ .../views/dialogs/BugReportDialog.js | 34 +++++++++++++------ 3 files changed, 47 insertions(+), 11 deletions(-) create mode 100644 res/css/views/dialogs/_BugReportDialog.scss diff --git a/res/css/_components.scss b/res/css/_components.scss index 7dd8a2034d..6808953e4f 100644 --- a/res/css/_components.scss +++ b/res/css/_components.scss @@ -59,6 +59,7 @@ @import "./views/context_menus/_WidgetContextMenu.scss"; @import "./views/dialogs/_AddressPickerDialog.scss"; @import "./views/dialogs/_Analytics.scss"; +@import "./views/dialogs/_BugReportDialog.scss"; @import "./views/dialogs/_ChangelogDialog.scss"; @import "./views/dialogs/_ChatCreateOrReuseChatDialog.scss"; @import "./views/dialogs/_ConfirmUserActionDialog.scss"; diff --git a/res/css/views/dialogs/_BugReportDialog.scss b/res/css/views/dialogs/_BugReportDialog.scss new file mode 100644 index 0000000000..1920ac33ea --- /dev/null +++ b/res/css/views/dialogs/_BugReportDialog.scss @@ -0,0 +1,23 @@ +/* +Copyright 2020 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +.mx_BugReportDialog { + .mx_BugReportDialog_download { + .mx_AccessibleButton_kind_link { + padding-left: 0; + } + } +} diff --git a/src/components/views/dialogs/BugReportDialog.js b/src/components/views/dialogs/BugReportDialog.js index ffef88e8be..d001d3993d 100644 --- a/src/components/views/dialogs/BugReportDialog.js +++ b/src/components/views/dialogs/BugReportDialog.js @@ -36,6 +36,8 @@ export default class BugReportDialog extends React.Component { issueUrl: "", text: "", progress: null, + downloadBusy: false, + downloadProgress: null, }; this._unmounted = false; this._onSubmit = this._onSubmit.bind(this); @@ -44,6 +46,7 @@ export default class BugReportDialog extends React.Component { this._onIssueUrlChange = this._onIssueUrlChange.bind(this); this._onSendLogsChange = this._onSendLogsChange.bind(this); this._sendProgressCallback = this._sendProgressCallback.bind(this); + this._downloadProgressCallback = this._downloadProgressCallback.bind(this); } componentWillUnmount() { @@ -97,26 +100,25 @@ export default class BugReportDialog extends React.Component { } _onDownload = async (ev) => { - this.setState({ busy: true, progress: null, err: null }); - this._sendProgressCallback(_t("Preparing to download logs")); + this.setState({ downloadBusy: true }); + this._downloadProgressCallback(_t("Preparing to download logs")); try { await downloadBugReport({ sendLogs: true, - progressCallback: this._sendProgressCallback, + progressCallback: this._downloadProgressCallback, label: this.props.label, }); this.setState({ - busy: false, - progress: null, + downloadBusy: false, + downloadProgress: null, }); } catch (err) { if (!this._unmounted) { this.setState({ - busy: false, - progress: null, - err: _t("Failed to send logs: ") + `${err.message}`, + downloadBusy: false, + downloadProgress: _t("Failed to send logs: ") + `${err.message}`, }); } } @@ -141,6 +143,13 @@ export default class BugReportDialog extends React.Component { this.setState({progress: progress}); } + _downloadProgressCallback(downloadProgress) { + if (this._unmounted) { + return; + } + this.setState({ downloadProgress }); + } + render() { const Loader = sdk.getComponent("elements.Spinner"); const BaseDialog = sdk.getComponent('views.dialogs.BaseDialog'); @@ -201,9 +210,12 @@ export default class BugReportDialog extends React.Component { ) }

- - { _t("Download logs") } - +
+ + { _t("Download logs") } + + {this.state.downloadProgress && {this.state.downloadProgress} ...} +
Date: Thu, 13 Aug 2020 15:16:31 +0100 Subject: [PATCH 157/424] Switch out the globe icon and colour it depending on theme --- res/css/views/rooms/_RoomTileIcon.scss | 2 +- res/img/globe.svg | 5 +---- res/themes/legacy-dark/css/_legacy-dark.scss | 1 + res/themes/legacy-light/css/_legacy-light.scss | 1 + 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/res/css/views/rooms/_RoomTileIcon.scss b/res/css/views/rooms/_RoomTileIcon.scss index 2f3afdd446..a133e84133 100644 --- a/res/css/views/rooms/_RoomTileIcon.scss +++ b/res/css/views/rooms/_RoomTileIcon.scss @@ -31,7 +31,7 @@ limitations under the License. mask-position: center; mask-size: contain; mask-repeat: no-repeat; - background: $primary-fg-color; + background: $secondary-fg-color; mask-image: url('$(res)/img/globe.svg'); } diff --git a/res/img/globe.svg b/res/img/globe.svg index cc22bc6e66..635fa91cce 100644 --- a/res/img/globe.svg +++ b/res/img/globe.svg @@ -1,6 +1,3 @@ - - - - + diff --git a/res/themes/legacy-dark/css/_legacy-dark.scss b/res/themes/legacy-dark/css/_legacy-dark.scss index 4268fad030..287723ec9c 100644 --- a/res/themes/legacy-dark/css/_legacy-dark.scss +++ b/res/themes/legacy-dark/css/_legacy-dark.scss @@ -15,6 +15,7 @@ $room-highlight-color: #343a46; // typical text (dark-on-white in light skin) $primary-fg-color: $text-primary-color; +$secondary-fg-color: $primary-fg-color; $primary-bg-color: $bg-color; $muted-fg-color: $header-panel-text-primary-color; diff --git a/res/themes/legacy-light/css/_legacy-light.scss b/res/themes/legacy-light/css/_legacy-light.scss index 5ebb4ccc02..e5ae7f866e 100644 --- a/res/themes/legacy-light/css/_legacy-light.scss +++ b/res/themes/legacy-light/css/_legacy-light.scss @@ -23,6 +23,7 @@ $header-panel-bg-color: #f3f8fd; // typical text (dark-on-white in light skin) $primary-fg-color: #2e2f32; +$secondary-fg-color: $primary-fg-color; $primary-bg-color: #ffffff; $muted-fg-color: #61708b; // Commonly used in headings and relevant alt text From 4abbcd8c0693f15469f8036866463ce77dcdcc56 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Thu, 13 Aug 2020 15:24:21 +0100 Subject: [PATCH 158/424] Fix styling for selected community marker --- res/css/structures/_TagPanel.scss | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/res/css/structures/_TagPanel.scss b/res/css/structures/_TagPanel.scss index 78e8326772..b2d05ad7e6 100644 --- a/res/css/structures/_TagPanel.scss +++ b/res/css/structures/_TagPanel.scss @@ -108,13 +108,12 @@ limitations under the License. .mx_TagPanel .mx_TagTile.mx_TagTile_selected::before { content: ''; - height: calc(100% + 16px); + height: 100%; background-color: $accent-color; - width: 5px; + width: 4px; position: absolute; - left: -15px; + left: -12px; border-radius: 0 3px 3px 0; - top: -8px; // (16px from height / 2) } .mx_TagPanel .mx_TagTile.mx_AccessibleButton:focus { From b8a260bb84f1c70a8e0aef8d136c253249643ccc Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Thu, 13 Aug 2020 16:18:26 +0100 Subject: [PATCH 159/424] Change add room action for rooms to context menu --- res/css/views/rooms/_RoomList.scss | 7 ++++ res/css/views/rooms/_RoomSublist.scss | 2 +- res/img/element-icons/roomlist/explore.svg | 4 +++ res/img/element-icons/roomlist/plus.svg | 3 ++ src/components/views/rooms/RoomList.tsx | 30 ++++++++++++++-- src/components/views/rooms/RoomSublist.tsx | 41 +++++++++++++++++++++- src/i18n/strings/en_EN.json | 5 +-- 7 files changed, 85 insertions(+), 7 deletions(-) create mode 100644 res/img/element-icons/roomlist/explore.svg create mode 100644 res/img/element-icons/roomlist/plus.svg diff --git a/res/css/views/rooms/_RoomList.scss b/res/css/views/rooms/_RoomList.scss index 89ab85e146..d210e118a2 100644 --- a/res/css/views/rooms/_RoomList.scss +++ b/res/css/views/rooms/_RoomList.scss @@ -17,3 +17,10 @@ limitations under the License. .mx_RoomList { padding-right: 7px; // width of the scrollbar, to line things up } + +.mx_RoomList_iconPlus::before { + mask-image: url('$(res)/img/element-icons/roomlist/plus.svg'); +} +.mx_RoomList_iconExplore::before { + mask-image: url('$(res)/img/element-icons/roomlist/explore.svg'); +} diff --git a/res/css/views/rooms/_RoomSublist.scss b/res/css/views/rooms/_RoomSublist.scss index fe80dfca22..543940fb78 100644 --- a/res/css/views/rooms/_RoomSublist.scss +++ b/res/css/views/rooms/_RoomSublist.scss @@ -120,7 +120,7 @@ limitations under the License. } .mx_RoomSublist_auxButton::before { - mask-image: url('$(res)/img/feather-customised/plus.svg'); + mask-image: url('$(res)/img/element-icons/roomlist/plus.svg'); } .mx_RoomSublist_menuButton::before { diff --git a/res/img/element-icons/roomlist/explore.svg b/res/img/element-icons/roomlist/explore.svg new file mode 100644 index 0000000000..3786ce1153 --- /dev/null +++ b/res/img/element-icons/roomlist/explore.svg @@ -0,0 +1,4 @@ + + + + diff --git a/res/img/element-icons/roomlist/plus.svg b/res/img/element-icons/roomlist/plus.svg new file mode 100644 index 0000000000..f6d80ac7ef --- /dev/null +++ b/res/img/element-icons/roomlist/plus.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/views/rooms/RoomList.tsx b/src/components/views/rooms/RoomList.tsx index 0d90c04e13..0d3bbb7f8b 100644 --- a/src/components/views/rooms/RoomList.tsx +++ b/src/components/views/rooms/RoomList.tsx @@ -43,6 +43,7 @@ import SettingsStore from "../../../settings/SettingsStore"; import CustomRoomTagStore from "../../../stores/CustomRoomTagStore"; import { arrayFastClone, arrayHasDiff } from "../../../utils/arrays"; import { objectShallowClone, objectWithOnly } from "../../../utils/objects"; +import { IconizedContextMenuOption, IconizedContextMenuOptionList } from "../context_menus/IconizedContextMenu"; interface IProps { onKeyDown: (ev: React.KeyboardEvent) => void; @@ -81,6 +82,7 @@ interface ITagAesthetics { sectionLabelRaw?: string; addRoomLabel?: string; onAddRoom?: (dispatcher?: Dispatcher) => void; + addRoomContextMenu?: (onFinished: () => void) => React.ReactNode; isInvite: boolean; defaultHidden: boolean; } @@ -112,9 +114,30 @@ const TAG_AESTHETICS: { sectionLabel: _td("Rooms"), isInvite: false, defaultHidden: false, - addRoomLabel: _td("Create room"), - onAddRoom: (dispatcher?: Dispatcher) => { - (dispatcher || defaultDispatcher).dispatch({action: 'view_create_room'}) + addRoomLabel: _td("Add room"), + addRoomContextMenu: (onFinished: () => void) => { + return + { + e.preventDefault(); + e.stopPropagation(); + onFinished(); + defaultDispatcher.dispatch({action: "view_create_room"}); + }} + /> + { + e.preventDefault(); + e.stopPropagation(); + onFinished(); + defaultDispatcher.fire(Action.ViewRoomDirectory); + }} + /> + ; }, }, [DefaultTagID.LowPriority]: { @@ -324,6 +347,7 @@ export default class RoomList extends React.PureComponent { label={aesthetics.sectionLabelRaw ? aesthetics.sectionLabelRaw : _t(aesthetics.sectionLabel)} onAddRoom={aesthetics.onAddRoom} addRoomLabel={aesthetics.addRoomLabel ? _t(aesthetics.addRoomLabel) : aesthetics.addRoomLabel} + addRoomContextMenu={aesthetics.addRoomContextMenu} isMinimized={this.props.isMinimized} onResize={this.props.onResize} extraBadTilesThatShouldntExist={extraTiles} diff --git a/src/components/views/rooms/RoomSublist.tsx b/src/components/views/rooms/RoomSublist.tsx index b2337c8c22..1e7ba3f77a 100644 --- a/src/components/views/rooms/RoomSublist.tsx +++ b/src/components/views/rooms/RoomSublist.tsx @@ -50,6 +50,7 @@ import { arrayFastClone, arrayHasOrderChange } from "../../../utils/arrays"; import { objectExcluding, objectHasDiff } from "../../../utils/objects"; import TemporaryTile from "./TemporaryTile"; import { ListNotificationState } from "../../../stores/notifications/ListNotificationState"; +import IconizedContextMenu from "../context_menus/IconizedContextMenu"; const SHOW_N_BUTTON_HEIGHT = 28; // As defined by CSS const RESIZE_HANDLE_HEIGHT = 4; // As defined by CSS @@ -65,6 +66,7 @@ interface IProps { startAsHidden: boolean; label: string; onAddRoom?: () => void; + addRoomContextMenu?: (onFinished: () => void) => React.ReactNode; addRoomLabel: string; isMinimized: boolean; tagId: TagID; @@ -87,6 +89,7 @@ type PartialDOMRect = Pick; interface IState { contextMenuPosition: PartialDOMRect; + addRoomContextMenuPosition: PartialDOMRect; isResizing: boolean; isExpanded: boolean; // used for the for expand of the sublist when the room list is being filtered height: number; @@ -112,6 +115,7 @@ export default class RoomSublist extends React.Component { this.notificationState = RoomNotificationStateStore.instance.getListState(this.props.tagId); this.state = { contextMenuPosition: null, + addRoomContextMenuPosition: null, isResizing: false, isExpanded: this.isBeingFiltered ? this.isBeingFiltered : !this.layout.isCollapsed, height: 0, // to be fixed in a moment, we need `rooms` to calculate this. @@ -376,10 +380,21 @@ export default class RoomSublist extends React.Component { }); }; + private onAddRoomContextMenu = (ev: React.MouseEvent) => { + ev.preventDefault(); + ev.stopPropagation(); + const target = ev.target as HTMLButtonElement; + this.setState({addRoomContextMenuPosition: target.getBoundingClientRect()}); + }; + private onCloseMenu = () => { this.setState({contextMenuPosition: null}); }; + private onCloseAddRoomMenu = () => { + this.setState({addRoomContextMenuPosition: null}); + }; + private onUnreadFirstChanged = async () => { const isUnreadFirst = RoomListStore.instance.getListOrder(this.props.tagId) === ListAlgorithm.Importance; const newAlgorithm = isUnreadFirst ? ListAlgorithm.Natural : ListAlgorithm.Importance; @@ -594,6 +609,18 @@ export default class RoomSublist extends React.Component {
); + } else if (this.state.addRoomContextMenuPosition) { + contextMenu = ( + + {this.props.addRoomContextMenu(this.onCloseAddRoomMenu)} + + ); } return ( @@ -637,9 +664,21 @@ export default class RoomSublist extends React.Component { tabIndex={tabIndex} onClick={this.onAddRoom} className="mx_RoomSublist_auxButton" + tooltipClassName="mx_RoomSublist_addRoomTooltip" aria-label={this.props.addRoomLabel || _t("Add room")} title={this.props.addRoomLabel} - tooltipClassName={"mx_RoomSublist_addRoomTooltip"} + /> + ); + } else if (this.props.addRoomContextMenu) { + addRoomButton = ( + ); } diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index b636b5470e..b311a0cd5b 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -1111,7 +1111,9 @@ "People": "People", "Start chat": "Start chat", "Rooms": "Rooms", - "Create room": "Create room", + "Add room": "Add room", + "Create new room": "Create new room", + "Explore public rooms": "Explore public rooms", "Low priority": "Low priority", "System Alerts": "System Alerts", "Historical": "Historical", @@ -1168,7 +1170,6 @@ "List options": "List options", "Jump to first unread room.": "Jump to first unread room.", "Jump to first invite.": "Jump to first invite.", - "Add room": "Add room", "Show %(count)s more|other": "Show %(count)s more", "Show %(count)s more|one": "Show %(count)s more", "Use default": "Use default", From 3f2c1500e54d83916625bbe4d1b7e28b692be721 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Thu, 13 Aug 2020 16:29:25 +0100 Subject: [PATCH 160/424] Fix /op slash command --- src/SlashCommands.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/SlashCommands.tsx b/src/SlashCommands.tsx index 2063ad3149..50a49ccf1c 100644 --- a/src/SlashCommands.tsx +++ b/src/SlashCommands.tsx @@ -733,7 +733,7 @@ export const Commands = [ const cli = MatrixClientPeg.get(); const room = cli.getRoom(roomId); if (!room) return reject(_t("Command failed")); - const member = room.getMember(args); + const member = room.getMember(userId); if (!member || getEffectiveMembership(member.membership) === EffectiveMembership.Leave) { return reject(_t("Could not find user in room")); } From 50b9da75976296a6b498f40c5abea9bfc55ffac6 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Thu, 13 Aug 2020 16:40:18 +0100 Subject: [PATCH 161/424] Put message previews for Emoji behind Labs --- src/settings/Settings.ts | 12 ++++++++++++ src/stores/room-list/previews/IPreview.ts | 2 +- .../room-list/previews/ReactionEventPreview.ts | 7 +++++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/settings/Settings.ts b/src/settings/Settings.ts index 714d80f983..3d18c14e16 100644 --- a/src/settings/Settings.ts +++ b/src/settings/Settings.ts @@ -158,6 +158,18 @@ export const SETTINGS: {[setting: string]: ISetting} = { supportedLevels: LEVELS_FEATURE, default: false, }, + "feature_roomlist_preview_reactions_dms": { + isFeature: true, + displayName: _td("Show message previews for reactions in DMs"), + supportedLevels: LEVELS_FEATURE, + default: false, + }, + "feature_roomlist_preview_reactions_all": { + isFeature: true, + displayName: _td("Show message previews for reactions in all rooms"), + supportedLevels: LEVELS_FEATURE, + default: false, + }, "advancedRoomListLogging": { // TODO: Remove flag before launch: https://github.com/vector-im/element-web/issues/14231 displayName: _td("Enable advanced debugging for the room list"), diff --git a/src/stores/room-list/previews/IPreview.ts b/src/stores/room-list/previews/IPreview.ts index 9beb92bfbf..fe69637543 100644 --- a/src/stores/room-list/previews/IPreview.ts +++ b/src/stores/room-list/previews/IPreview.ts @@ -27,5 +27,5 @@ export interface IPreview { * @param tagId Optional. The tag where the room the event was sent in resides. * @returns The preview. */ - getTextFor(event: MatrixEvent, tagId?: TagID): string; + getTextFor(event: MatrixEvent, tagId?: TagID): string | null; } diff --git a/src/stores/room-list/previews/ReactionEventPreview.ts b/src/stores/room-list/previews/ReactionEventPreview.ts index 07fac107ca..c8f2be9a6e 100644 --- a/src/stores/room-list/previews/ReactionEventPreview.ts +++ b/src/stores/room-list/previews/ReactionEventPreview.ts @@ -19,9 +19,16 @@ import { TagID } from "../models"; import { MatrixEvent } from "matrix-js-sdk/src/models/event"; import { getSenderName, isSelf, shouldPrefixMessagesIn } from "./utils"; import { _t } from "../../../languageHandler"; +import SettingsStore from "../../../settings/SettingsStore"; +import DMRoomMap from "../../../utils/DMRoomMap"; export class ReactionEventPreview implements IPreview { public getTextFor(event: MatrixEvent, tagId?: TagID): string { + const showDms = SettingsStore.isFeatureEnabled("feature_roomlist_preview_reactions_dms"); + const showAll = SettingsStore.isFeatureEnabled("feature_roomlist_preview_reactions_all"); + + if (!showAll && (!showDms || DMRoomMap.shared().getUserIdForRoomId(event.getRoomId()))) return null; + const relation = event.getRelation(); if (!relation) return null; // invalid reaction (probably redacted) From e7bd656a198355f8322fdfe6a2a67dffafac94d9 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Thu, 13 Aug 2020 16:41:25 +0100 Subject: [PATCH 162/424] i18n --- src/i18n/strings/en_EN.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index b636b5470e..0c6b6ae056 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -448,6 +448,8 @@ "Multiple integration managers": "Multiple integration managers", "Try out new ways to ignore people (experimental)": "Try out new ways to ignore people (experimental)", "Support adding custom themes": "Support adding custom themes", + "Show message previews for reactions in DMs": "Show message previews for reactions in DMs", + "Show message previews for reactions in all rooms": "Show message previews for reactions in all rooms", "Enable advanced debugging for the room list": "Enable advanced debugging for the room list", "Show info about bridges in room settings": "Show info about bridges in room settings", "Font size": "Font size", From 62c1798bec06a5db2e7ddaaf2a8611bbb98a3aea Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Thu, 13 Aug 2020 16:55:48 +0100 Subject: [PATCH 163/424] try to fix the e2e tests --- test/end-to-end-tests/src/usecases/create-room.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/end-to-end-tests/src/usecases/create-room.js b/test/end-to-end-tests/src/usecases/create-room.js index 26c54771ab..e05edbc051 100644 --- a/test/end-to-end-tests/src/usecases/create-room.js +++ b/test/end-to-end-tests/src/usecases/create-room.js @@ -39,6 +39,9 @@ async function createRoom(session, roomName, encrypted=false) { const addRoomButton = await roomsSublist.$(".mx_RoomSublist_auxButton"); await addRoomButton.click(); + const createRoomButton = await session.query('.mx_AccessibleButton[aria-label="Create new room"]'); + await createRoomButton.click(); + const roomNameInput = await session.query('.mx_CreateRoomDialog_name input'); await session.replaceInputText(roomNameInput, roomName); From 3ece2dd21d6a4298baedec6ac4d2de2de8f899bc Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Thu, 13 Aug 2020 19:24:11 +0100 Subject: [PATCH 164/424] Fix action bar safe area regression The action bar was recently moved, but the safe area was not, which left a gap between the event and the action bar, making it quite easy to trigger hover on a different event instead of reaching the action bar. Fixes https://github.com/vector-im/element-web/issues/14953 Regressed by https://github.com/matrix-org/matrix-react-sdk/pull/5056 --- res/css/views/messages/_MessageActionBar.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/css/views/messages/_MessageActionBar.scss b/res/css/views/messages/_MessageActionBar.scss index d2ff551668..1254b496b5 100644 --- a/res/css/views/messages/_MessageActionBar.scss +++ b/res/css/views/messages/_MessageActionBar.scss @@ -41,7 +41,7 @@ limitations under the License. width: calc(10px + 48px + 100% + 8px); // safe area + action bar height: calc(20px + 100%); - top: -20px; + top: -12px; left: -58px; z-index: -1; cursor: initial; From df65d03473a12918d7d0f26f485e61f193d040eb Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Thu, 13 Aug 2020 19:24:11 +0100 Subject: [PATCH 165/424] Fix action bar safe area regression The action bar was recently moved, but the safe area was not, which left a gap between the event and the action bar, making it quite easy to trigger hover on a different event instead of reaching the action bar. Fixes https://github.com/vector-im/element-web/issues/14953 Regressed by https://github.com/matrix-org/matrix-react-sdk/pull/5056 --- res/css/views/messages/_MessageActionBar.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/css/views/messages/_MessageActionBar.scss b/res/css/views/messages/_MessageActionBar.scss index d2ff551668..1254b496b5 100644 --- a/res/css/views/messages/_MessageActionBar.scss +++ b/res/css/views/messages/_MessageActionBar.scss @@ -41,7 +41,7 @@ limitations under the License. width: calc(10px + 48px + 100% + 8px); // safe area + action bar height: calc(20px + 100%); - top: -20px; + top: -12px; left: -58px; z-index: -1; cursor: initial; From 4ec602b960f41648990204751a4a903a12097aaa Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Fri, 14 Aug 2020 10:20:59 +0100 Subject: [PATCH 166/424] Make cutout in the decorated room avatar transparent rather than fixed --- res/css/_components.scss | 1 - .../views/avatars/_DecoratedRoomAvatar.scss | 48 ++++- res/css/views/rooms/_RoomTileIcon.scss | 69 ------- .../roomlist/decorated-avatar-mask.svg | 3 + .../views/avatars/DecoratedRoomAvatar.tsx | 143 ++++++++++++++- src/components/views/rooms/RoomTileIcon.tsx | 168 ------------------ 6 files changed, 187 insertions(+), 245 deletions(-) delete mode 100644 res/css/views/rooms/_RoomTileIcon.scss create mode 100644 res/img/element-icons/roomlist/decorated-avatar-mask.svg delete mode 100644 src/components/views/rooms/RoomTileIcon.tsx diff --git a/res/css/_components.scss b/res/css/_components.scss index 7dd8a2034d..a2d0e1ceb5 100644 --- a/res/css/_components.scss +++ b/res/css/_components.scss @@ -184,7 +184,6 @@ @import "./views/rooms/_RoomRecoveryReminder.scss"; @import "./views/rooms/_RoomSublist.scss"; @import "./views/rooms/_RoomTile.scss"; -@import "./views/rooms/_RoomTileIcon.scss"; @import "./views/rooms/_RoomUpgradeWarningBar.scss"; @import "./views/rooms/_SearchBar.scss"; @import "./views/rooms/_SendMessageComposer.scss"; diff --git a/res/css/views/avatars/_DecoratedRoomAvatar.scss b/res/css/views/avatars/_DecoratedRoomAvatar.scss index 48d72131b5..2e4caf8e91 100644 --- a/res/css/views/avatars/_DecoratedRoomAvatar.scss +++ b/res/css/views/avatars/_DecoratedRoomAvatar.scss @@ -18,10 +18,52 @@ limitations under the License. .mx_DecoratedRoomAvatar, .mx_TemporaryTile { position: relative; - .mx_RoomTileIcon { + &.mx_DecoratedRoomAvatar_cutout .mx_BaseAvatar { + mask-image: url('$(res)/img/element-icons/roomlist/decorated-avatar-mask.svg'); + mask-position: center; + mask-size: contain; + mask-repeat: no-repeat; + } + + .mx_DecoratedRoomAvatar_icon { position: absolute; - bottom: 0; - right: 0; + bottom: -2px; + right: -2px; + margin: 4px; + width: 8px; + height: 8px; + border-radius: 50%; + } + + .mx_DecoratedRoomAvatar_icon::before { + content: ''; + width: 8px; + height: 8px; + position: absolute; + border-radius: 8px; + } + + .mx_DecoratedRoomAvatar_icon_globe { + background-color: #fff; + } + .mx_DecoratedRoomAvatar_icon_globe::before { + mask-position: center; + mask-size: contain; + mask-repeat: no-repeat; + background: $secondary-fg-color; + mask-image: url('$(res)/img/globe.svg'); + } + + .mx_DecoratedRoomAvatar_icon_offline::before { + background-color: $presence-offline; + } + + .mx_DecoratedRoomAvatar_icon_online::before { + background-color: $presence-online; + } + + .mx_DecoratedRoomAvatar_icon_away::before { + background-color: $presence-away; } .mx_NotificationBadge, .mx_RoomTile_badgeContainer { diff --git a/res/css/views/rooms/_RoomTileIcon.scss b/res/css/views/rooms/_RoomTileIcon.scss deleted file mode 100644 index a133e84133..0000000000 --- a/res/css/views/rooms/_RoomTileIcon.scss +++ /dev/null @@ -1,69 +0,0 @@ -/* -Copyright 2020 The Matrix.org Foundation C.I.C. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_RoomTileIcon { - width: 12px; - height: 12px; - border-radius: 12px; - background-color: $roomlist-bg-color; // to match the room list itself -} - -.mx_RoomTileIcon_globe::before { - content: ''; - width: 8px; - height: 8px; - top: 2px; - left: 2px; - position: absolute; - mask-position: center; - mask-size: contain; - mask-repeat: no-repeat; - background: $secondary-fg-color; - mask-image: url('$(res)/img/globe.svg'); -} - -.mx_RoomTileIcon_offline::before { - content: ''; - width: 8px; - height: 8px; - top: 2px; - left: 2px; - position: absolute; - border-radius: 8px; - background-color: $presence-offline; -} - -.mx_RoomTileIcon_online::before { - content: ''; - width: 8px; - height: 8px; - top: 2px; - left: 2px; - position: absolute; - border-radius: 8px; - background-color: $presence-online; -} - -.mx_RoomTileIcon_away::before { - content: ''; - width: 8px; - height: 8px; - top: 2px; - left: 2px; - position: absolute; - border-radius: 8px; - background-color: $presence-away; -} diff --git a/res/img/element-icons/roomlist/decorated-avatar-mask.svg b/res/img/element-icons/roomlist/decorated-avatar-mask.svg new file mode 100644 index 0000000000..fb09c16bba --- /dev/null +++ b/res/img/element-icons/roomlist/decorated-avatar-mask.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/views/avatars/DecoratedRoomAvatar.tsx b/src/components/views/avatars/DecoratedRoomAvatar.tsx index daf28400f2..e6dadf676c 100644 --- a/src/components/views/avatars/DecoratedRoomAvatar.tsx +++ b/src/components/views/avatars/DecoratedRoomAvatar.tsx @@ -14,15 +14,22 @@ See the License for the specific language governing permissions and limitations under the License. */ -import React from 'react'; +import React from "react"; +import classNames from "classnames"; import { Room } from "matrix-js-sdk/src/models/room"; +import { User } from "matrix-js-sdk/src/models/user"; +import { MatrixEvent } from "matrix-js-sdk/src/models/event"; import { TagID } from '../../../stores/room-list/models'; import RoomAvatar from "./RoomAvatar"; -import RoomTileIcon from "../rooms/RoomTileIcon"; import NotificationBadge from '../rooms/NotificationBadge'; import { RoomNotificationStateStore } from "../../../stores/notifications/RoomNotificationStateStore"; import { NotificationState } from "../../../stores/notifications/NotificationState"; +import {isPresenceEnabled} from "../../../utils/presence"; +import {MatrixClientPeg} from "../../../MatrixClientPeg"; +import {_t} from "../../../languageHandler"; +import TextWithTooltip from "../elements/TextWithTooltip"; +import DMRoomMap from "../../../utils/DMRoomMap"; interface IProps { room: Room; @@ -36,18 +43,134 @@ interface IProps { interface IState { notificationState?: NotificationState; + icon: Icon; +} + +enum Icon { + // Note: the names here are used in CSS class names + None = "NONE", // ... except this one + Globe = "GLOBE", + PresenceOnline = "ONLINE", + PresenceAway = "AWAY", + PresenceOffline = "OFFLINE", +} + +function tooltipText(variant: Icon) { + switch (variant) { + case Icon.Globe: + return _t("This room is public"); + case Icon.PresenceOnline: + return _t("Online"); + case Icon.PresenceAway: + return _t("Away"); + case Icon.PresenceOffline: + return _t("Offline"); + } } export default class DecoratedRoomAvatar extends React.PureComponent { + private _dmUser: User; + private isUnmounted = false; + private isWatchingTimeline = false; constructor(props: IProps) { super(props); this.state = { notificationState: RoomNotificationStateStore.instance.getRoomState(this.props.room), + icon: this.calculateIcon(), }; } + public componentWillUnmount() { + this.isUnmounted = true; + if (this.isWatchingTimeline) this.props.room.off('Room.timeline', this.onRoomTimeline); + this.dmUser = null; // clear listeners, if any + } + + private get isPublicRoom(): boolean { + const joinRules = this.props.room.currentState.getStateEvents("m.room.join_rules", ""); + const joinRule = joinRules && joinRules.getContent().join_rule; + return joinRule === 'public'; + } + + private get dmUser(): User { + return this._dmUser; + } + + private set dmUser(val: User) { + const oldUser = this._dmUser; + this._dmUser = val; + if (oldUser && oldUser !== this._dmUser) { + oldUser.off('User.currentlyActive', this.onPresenceUpdate); + oldUser.off('User.presence', this.onPresenceUpdate); + } + if (this._dmUser && oldUser !== this._dmUser) { + this._dmUser.on('User.currentlyActive', this.onPresenceUpdate); + this._dmUser.on('User.presence', this.onPresenceUpdate); + } + } + + private onRoomTimeline = (ev: MatrixEvent, room: Room) => { + if (this.isUnmounted) return; + + // apparently these can happen? + if (!room) return; + if (this.props.room.roomId !== room.roomId) return; + + if (ev.getType() === 'm.room.join_rules' || ev.getType() === 'm.room.member') { + this.setState({icon: this.calculateIcon()}); + } + }; + + private onPresenceUpdate = () => { + if (this.isUnmounted) return; + + let newIcon = this.getPresenceIcon(); + if (newIcon !== this.state.icon) this.setState({icon: newIcon}); + }; + + private getPresenceIcon(): Icon { + if (!this.dmUser) return Icon.None; + + let icon = Icon.None; + + const isOnline = this.dmUser.currentlyActive || this.dmUser.presence === 'online'; + if (isOnline) { + icon = Icon.PresenceOnline; + } else if (this.dmUser.presence === 'offline') { + icon = Icon.PresenceOffline; + } else if (this.dmUser.presence === 'unavailable') { + icon = Icon.PresenceAway; + } + + return icon; + } + + private calculateIcon(): Icon { + let icon = Icon.None; + + // We look at the DMRoomMap and not the tag here so that we don't exclude DMs in Favourites + const otherUserId = DMRoomMap.shared().getUserIdForRoomId(this.props.room.roomId); + if (otherUserId && this.props.room.getJoinedMemberCount() === 2) { + // Track presence, if available + if (isPresenceEnabled()) { + if (otherUserId) { + this.dmUser = MatrixClientPeg.get().getUser(otherUserId); + icon = this.getPresenceIcon(); + } + } + } else { + // Track publicity + icon = this.isPublicRoom ? Icon.Globe : Icon.None; + if (!this.isWatchingTimeline) { + this.props.room.on('Room.timeline', this.onRoomTimeline); + this.isWatchingTimeline = true; + } + } + return icon; + } + public render(): React.ReactNode { let badge: React.ReactNode; if (this.props.displayBadge) { @@ -58,7 +181,19 @@ export default class DecoratedRoomAvatar extends React.PureComponent; } - return
+ let icon; + if (this.state.icon !== Icon.None) { + icon = ; + } + + const classes = classNames("mx_DecoratedRoomAvatar", { + mx_DecoratedRoomAvatar_cutout: icon, + }); + + return
- + {icon} {badge}
; } diff --git a/src/components/views/rooms/RoomTileIcon.tsx b/src/components/views/rooms/RoomTileIcon.tsx deleted file mode 100644 index 94833ac818..0000000000 --- a/src/components/views/rooms/RoomTileIcon.tsx +++ /dev/null @@ -1,168 +0,0 @@ -/* -Copyright 2020 The Matrix.org Foundation C.I.C. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -import React from "react"; -import { Room } from "matrix-js-sdk/src/models/room"; -import { DefaultTagID, TagID } from "../../../stores/room-list/models"; -import { User } from "matrix-js-sdk/src/models/user"; -import { MatrixEvent } from "matrix-js-sdk/src/models/event"; -import DMRoomMap from "../../../utils/DMRoomMap"; -import { MatrixClientPeg } from "../../../MatrixClientPeg"; -import { isPresenceEnabled } from "../../../utils/presence"; -import { _t } from "../../../languageHandler"; -import TextWithTooltip from "../elements/TextWithTooltip"; - -enum Icon { - // Note: the names here are used in CSS class names - None = "NONE", // ... except this one - Globe = "GLOBE", - PresenceOnline = "ONLINE", - PresenceAway = "AWAY", - PresenceOffline = "OFFLINE", -} - -function tooltipText(variant: Icon) { - switch (variant) { - case Icon.Globe: - return _t("This room is public"); - case Icon.PresenceOnline: - return _t("Online"); - case Icon.PresenceAway: - return _t("Away"); - case Icon.PresenceOffline: - return _t("Offline"); - } -} - -interface IProps { - room: Room; -} - -interface IState { - icon: Icon; -} - -export default class RoomTileIcon extends React.Component { - private _dmUser: User; - private isUnmounted = false; - private isWatchingTimeline = false; - - constructor(props: IProps) { - super(props); - - this.state = { - icon: this.calculateIcon(), - }; - } - - private get isPublicRoom(): boolean { - const joinRules = this.props.room.currentState.getStateEvents("m.room.join_rules", ""); - const joinRule = joinRules && joinRules.getContent().join_rule; - return joinRule === 'public'; - } - - private get dmUser(): User { - return this._dmUser; - } - - private set dmUser(val: User) { - const oldUser = this._dmUser; - this._dmUser = val; - if (oldUser && oldUser !== this._dmUser) { - oldUser.off('User.currentlyActive', this.onPresenceUpdate); - oldUser.off('User.presence', this.onPresenceUpdate); - } - if (this._dmUser && oldUser !== this._dmUser) { - this._dmUser.on('User.currentlyActive', this.onPresenceUpdate); - this._dmUser.on('User.presence', this.onPresenceUpdate); - } - } - - public componentWillUnmount() { - this.isUnmounted = true; - if (this.isWatchingTimeline) this.props.room.off('Room.timeline', this.onRoomTimeline); - this.dmUser = null; // clear listeners, if any - } - - private onRoomTimeline = (ev: MatrixEvent, room: Room) => { - if (this.isUnmounted) return; - - // apparently these can happen? - if (!room) return; - if (this.props.room.roomId !== room.roomId) return; - - if (ev.getType() === 'm.room.join_rules' || ev.getType() === 'm.room.member') { - this.setState({icon: this.calculateIcon()}); - } - }; - - private onPresenceUpdate = () => { - if (this.isUnmounted) return; - - let newIcon = this.getPresenceIcon(); - if (newIcon !== this.state.icon) this.setState({icon: newIcon}); - }; - - private getPresenceIcon(): Icon { - if (!this.dmUser) return Icon.None; - - let icon = Icon.None; - - const isOnline = this.dmUser.currentlyActive || this.dmUser.presence === 'online'; - if (isOnline) { - icon = Icon.PresenceOnline; - } else if (this.dmUser.presence === 'offline') { - icon = Icon.PresenceOffline; - } else if (this.dmUser.presence === 'unavailable') { - icon = Icon.PresenceAway; - } - - return icon; - } - - private calculateIcon(): Icon { - let icon = Icon.None; - - // We look at the DMRoomMap and not the tag here so that we don't exclude DMs in Favourites - const otherUserId = DMRoomMap.shared().getUserIdForRoomId(this.props.room.roomId); - if (otherUserId && this.props.room.getJoinedMemberCount() === 2) { - // Track presence, if available - if (isPresenceEnabled()) { - if (otherUserId) { - this.dmUser = MatrixClientPeg.get().getUser(otherUserId); - icon = this.getPresenceIcon(); - } - } - } else { - // Track publicity - icon = this.isPublicRoom ? Icon.Globe : Icon.None; - if (!this.isWatchingTimeline) { - this.props.room.on('Room.timeline', this.onRoomTimeline); - this.isWatchingTimeline = true; - } - } - return icon; - } - - public render(): React.ReactElement { - if (this.state.icon === Icon.None) return null; - - return ; - } -} From d861536487d44fb2dc5594e1bc27cc6b0fe821c9 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Fri, 14 Aug 2020 10:30:54 +0100 Subject: [PATCH 167/424] Make globe transparent --- res/css/views/avatars/_DecoratedRoomAvatar.scss | 3 --- 1 file changed, 3 deletions(-) diff --git a/res/css/views/avatars/_DecoratedRoomAvatar.scss b/res/css/views/avatars/_DecoratedRoomAvatar.scss index 2e4caf8e91..e0afd9de66 100644 --- a/res/css/views/avatars/_DecoratedRoomAvatar.scss +++ b/res/css/views/avatars/_DecoratedRoomAvatar.scss @@ -43,9 +43,6 @@ limitations under the License. border-radius: 8px; } - .mx_DecoratedRoomAvatar_icon_globe { - background-color: #fff; - } .mx_DecoratedRoomAvatar_icon_globe::before { mask-position: center; mask-size: contain; From 228d1af6dca3dce8cdce8ee7bc482595291eec32 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Fri, 14 Aug 2020 11:01:03 +0100 Subject: [PATCH 168/424] i18n --- src/i18n/strings/en_EN.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index b636b5470e..0f8891b5fe 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -1186,8 +1186,6 @@ "%(count)s unread messages.|other": "%(count)s unread messages.", "%(count)s unread messages.|one": "1 unread message.", "Unread messages.": "Unread messages.", - "This room is public": "This room is public", - "Away": "Away", "Add a topic": "Add a topic", "Upgrading this room will shut down the current instance of the room and create an upgraded room with the same name.": "Upgrading this room will shut down the current instance of the room and create an upgraded room with the same name.", "This room has already been upgraded.": "This room has already been upgraded.", @@ -1893,6 +1891,8 @@ "Take picture": "Take picture", "Remove for everyone": "Remove for everyone", "Remove for me": "Remove for me", + "This room is public": "This room is public", + "Away": "Away", "User Status": "User Status", "powered by Matrix": "powered by Matrix", "This homeserver would like to make sure you are not a robot.": "This homeserver would like to make sure you are not a robot.", From 835c72f6113cd36c70b8956b040da7523c49bfcd Mon Sep 17 00:00:00 2001 From: Marcelo Filho Date: Thu, 13 Aug 2020 16:12:58 +0000 Subject: [PATCH 169/424] Translated using Weblate (Portuguese (Brazil)) Currently translated at 97.1% (2263 of 2331 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/pt_BR/ --- src/i18n/strings/pt_BR.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/pt_BR.json b/src/i18n/strings/pt_BR.json index 4ed4ca1175..c82295e293 100644 --- a/src/i18n/strings/pt_BR.json +++ b/src/i18n/strings/pt_BR.json @@ -2278,5 +2278,7 @@ "Enter a security phrase only you know, as it’s used to safeguard your data. To be secure, you shouldn’t re-use your account password.": "Digite uma frase de segurança que só você conheça, usada para proteger segredos em seu servidor.", "Use a different passphrase?": "Usar uma frase secreta diferente?", "Enter your recovery passphrase a second time to confirm it.": "Digite sua senha de recuperação uma segunda vez para confirmá-la.", - "Confirm your recovery passphrase": "Confirme a sua frase de recuperação" + "Confirm your recovery passphrase": "Confirme a sua frase de recuperação", + "Page Up": "Page Up", + "Page Down": "Page Down" } From 3e78f228d6097bad98e0a3d5946e8c2e88c42926 Mon Sep 17 00:00:00 2001 From: strix aluco Date: Thu, 13 Aug 2020 21:46:56 +0000 Subject: [PATCH 170/424] Translated using Weblate (Ukrainian) Currently translated at 52.0% (1211 of 2331 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/uk/ --- src/i18n/strings/uk.json | 115 +++++++++++++++++++++++++++------------ 1 file changed, 80 insertions(+), 35 deletions(-) diff --git a/src/i18n/strings/uk.json b/src/i18n/strings/uk.json index 3bae709451..7dcfe4eeee 100644 --- a/src/i18n/strings/uk.json +++ b/src/i18n/strings/uk.json @@ -67,7 +67,7 @@ "Cannot add any more widgets": "Неможливо додати більше віджетів", "Change Password": "Змінити пароль", "%(senderName)s changed their profile picture.": "%(senderName)s змінив/ла зображення профілю.", - "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s змінив(ла) рівень повноважень %(powerLevelDiffText)s.", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s змінив(-ла) рівень повноважень %(powerLevelDiffText)s.", "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s змінив/ла назву кімнати на %(roomName)s.", "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s видалив ім'я кімнати.", "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s змінив тему на %(topic)s.", @@ -82,7 +82,7 @@ "This email address is already in use": "Ця е-пошта вже використовується", "This phone number is already in use": "Цей телефонний номер вже використовується", "Fetching third party location failed": "Не вдалось отримати стороннє місцеперебування", - "Messages in one-to-one chats": "Повідомлення у чатах \"сам на сам\"", + "Messages in one-to-one chats": "Повідомлення у балачках віч-на-віч", "Send Account Data": "Надіслати дані облікового запису", "Advanced notification settings": "Додаткові налаштування сповіщень", "Uploading report": "Завантаження звіту", @@ -109,7 +109,7 @@ "Cancel Sending": "Скасувати надсилання", "Warning": "Попередження", "This Room": "Ця кімната", - "Noisy": "Шумний", + "Noisy": "Шумно", "Error saving email notification preferences": "Помилка при збереженні параметрів сповіщень е-поштою", "Messages containing my display name": "Повідомлення, що містять моє видиме ім'я", "Remember, you can always set an email address in user settings if you change your mind.": "Пам'ятайте, що ви завжди можете встановити адресу е-пошти у користувацьких налаштуваннях, якщо передумаєте.", @@ -124,7 +124,7 @@ "Explore Room State": "Перегляд статуса кімнати", "Source URL": "Джерельне посилання", "Messages sent by bot": "Повідомлення, надіслані ботом", - "Filter results": "Фільтр результатів", + "Filter results": "Відцідити результати", "Members": "Учасники", "No update available.": "Оновлення відсутні.", "Resend": "Перенадіслати", @@ -188,7 +188,7 @@ "Unable to join network": "Неможливо приєднатись до мережі", "Sorry, your browser is not able to run %(brand)s.": "Вибачте, ваш оглядач не спроможний запустити %(brand)s.", "Uploaded on %(date)s by %(user)s": "Завантажено %(date)s користувачем %(user)s", - "Messages in group chats": "Повідомлення у групових чатах", + "Messages in group chats": "Повідомлення у групових балачках", "Yesterday": "Вчора", "Error encountered (%(errorDetail)s).": "Трапилась помилка (%(errorDetail)s).", "Low Priority": "Неважливі", @@ -298,7 +298,7 @@ "Missing roomId.": "Бракує ідентифікатора кімнати.", "Failed to send request.": "Не вдалося надіслати запит.", "This room is not recognised.": "Кімнату не знайдено.", - "Power level must be positive integer.": "Рівень повноважень мусить бути додатнім цілим числом.", + "Power level must be positive integer.": "Рівень повноважень мусить бути додатним цілим числом.", "You are not in this room.": "Вас немає в цій кімнаті.", "You do not have permission to do that in this room.": "У вас немає прав виконувати для цього в цій кімнаті.", "Missing room_id in request": "У запиті бракує room_id", @@ -348,19 +348,19 @@ "(no answer)": "(немає відповіді)", "(unknown failure: %(reason)s)": "(невідома помилка: %(reason)s)", "%(senderName)s ended the call.": "%(senderName)s завершив/ла дзвінок.", - "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s надіслав/ла запрошення %(targetDisplayName)s приєднатися до кімнати.", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s надіслав(-ла) запрошення %(targetDisplayName)s приєднатися до кімнати.", "Show developer tools": "Показувати розробницькі засоби", "Default": "Типово", - "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s зробив/ла майбутню історію кімнати видимою для всіх учасників, з моменту, коли вони приєдналися.", - "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s зробив/ла майбутню історію кімнати видимою для всіх учасників, з моменту, коли вони приєдналися.", - "%(senderName)s made future room history visible to all room members.": "%(senderName)s зробив/ла майбутню історію видимою для всіх учасників кімнати.", - "%(senderName)s made future room history visible to anyone.": "%(senderName)s зробив/ла майбутню історію кімнати видимою для всіх.", - "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s зробив/ла майбутню історію видимою невідомим (%(visibility)s).", + "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s зробив(-ла) майбутню історію кімнати видимою для всіх учасників з моменту, коли вони приєдналися.", + "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s зробив(-ла) майбутню історію кімнати видимою для всіх учасників з моменту, коли вони приєдналися.", + "%(senderName)s made future room history visible to all room members.": "%(senderName)s зробив(-ла) майбутню історію видимою для всіх учасників кімнати.", + "%(senderName)s made future room history visible to anyone.": "%(senderName)s зробив(-ла) майбутню історію кімнати видимою для всіх.", + "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s зробив(-ла) майбутню історію видимою для невідомого значення (%(visibility)s).", "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s з %(fromPowerLevel)s до %(toPowerLevel)s", - "%(senderName)s changed the pinned messages for the room.": "%(senderName)s змінив/ла прикріплені повідомлення для кімнати.", - "%(widgetName)s widget modified by %(senderName)s": "%(senderName)s змінив/ла %(widgetName)s", - "%(widgetName)s widget added by %(senderName)s": "%(senderName)s додав/ла %(widgetName)s", - "%(widgetName)s widget removed by %(senderName)s": "%(senderName)s вилучив/ла %(widgetName)s", + "%(senderName)s changed the pinned messages for the room.": "%(senderName)s змінив(-ла) приколоті повідомлення у кімнаті.", + "%(widgetName)s widget modified by %(senderName)s": "%(senderName)s змінив(-ла) знадіб %(widgetName)s", + "%(widgetName)s widget added by %(senderName)s": "%(senderName)s додав(-ла) знадіб %(widgetName)s", + "%(widgetName)s widget removed by %(senderName)s": "%(senderName)s вилучив(-ла) знадіб %(widgetName)s", "Failure to create room": "Не вдалося створити кімнату", "Server may be unavailable, overloaded, or you hit a bug.": "Сервер може бути недоступний, перевантажений, або ж ви натрапили на ваду.", "Unnamed Room": "Кімната без назви", @@ -572,7 +572,7 @@ "Clear notifications": "Очистити сповіщення", "Add an email address to configure email notifications": "Додати адресу е-пошти для налаштування поштових сповіщень", "Theme added!": "Тему додано!", - "Email addresses": "Адреса е-пошти", + "Email addresses": "Адреси е-пошти", "Phone numbers": "Номери телефонів", "Set a new account password...": "Встановити новий пароль облікового запису…", "Forget this room": "Забути цю кімнату", @@ -680,18 +680,18 @@ "%(senderName)s placed a video call.": "%(senderName)s розпочав(-ла) відеовиклик.", "%(senderName)s placed a video call. (not supported by this browser)": "%(senderName)s розпочав(-ла) відеовиклик. (не підтримується цим переглядачем)", "%(senderName)s revoked the invitation for %(targetDisplayName)s to join the room.": "%(senderName)s відкликав(-ла) запрошення %(targetDisplayName)s приєднання до кімнати.", - "%(senderName)s removed the rule banning users matching %(glob)s": "%(senderName)s видалив(-ла) правило блокування користувачів за шаблоном %(glob)s", - "%(senderName)s removed the rule banning rooms matching %(glob)s": "%(senderName)s видалив(ла) правило блокування кімнат по шаблону %(glob)s", - "%(senderName)s removed the rule banning servers matching %(glob)s": "%(senderName)s видалив(ла) правило блокування серверів по шаблону %(glob)s", - "%(senderName)s removed a ban rule matching %(glob)s": "%(senderName)s видалив(ла) правило блокування по шаблону %(glob)s", - "%(senderName)s updated an invalid ban rule": "%(senderName)s оновив(ла) неправильне правило блокування", - "%(senderName)s updated the rule banning users matching %(glob)s for %(reason)s": "%(senderName)s оновив(ла) правило блокування користувачів по шаблону %(glob)s за %(reason)s", - "%(senderName)s updated the rule banning rooms matching %(glob)s for %(reason)s": "%(senderName)s оновив(ла) правило блокування кімнат по шаблону %(glob)s за %(reason)s", - "%(senderName)s updated the rule banning servers matching %(glob)s for %(reason)s": "%(senderName)s оновив(ла) правило блокування серверів по шаблону %(glob)s за %(reason)s", - "%(senderName)s updated a ban rule matching %(glob)s for %(reason)s": "%(senderName)s оновив(ла) правило блокування по шаблону %(glob)s за %(reason)s", - "%(senderName)s created a rule banning users matching %(glob)s for %(reason)s": "%(senderName)s створив(ла) правило блокування користувачів по шаблону %(glob)s за %(reason)s", - "%(senderName)s created a rule banning rooms matching %(glob)s for %(reason)s": "%(senderName)s створив(ла) правило блокування кімнат по шаблону %(glob)s за %(reason)s", - "%(senderName)s created a rule banning servers matching %(glob)s for %(reason)s": "%(senderName)s створив(ла) правило блокування серверів по шаблону %(glob)s за %(reason)s", + "%(senderName)s removed the rule banning users matching %(glob)s": "%(senderName)s видалив(-ла) правило блокування користувачів зі збігом з %(glob)s", + "%(senderName)s removed the rule banning rooms matching %(glob)s": "%(senderName)s видалив(-ла) правило блокування кімнат зі збігом з %(glob)s", + "%(senderName)s removed the rule banning servers matching %(glob)s": "%(senderName)s видалив(-ла) правило блокування серверів зі збігом з %(glob)s", + "%(senderName)s removed a ban rule matching %(glob)s": "%(senderName)s видалив(-ла) правило блокування зі збігом з %(glob)s", + "%(senderName)s updated an invalid ban rule": "%(senderName)s оновив(-ла) хибне правило блокування", + "%(senderName)s updated the rule banning users matching %(glob)s for %(reason)s": "%(senderName)s оновив(-ла) правило блокування користувачів зі збігом з %(glob)s через %(reason)s", + "%(senderName)s updated the rule banning rooms matching %(glob)s for %(reason)s": "%(senderName)s оновив(-ла) правило блокування кімнат зі збігом з %(glob)s через %(reason)s", + "%(senderName)s updated the rule banning servers matching %(glob)s for %(reason)s": "%(senderName)s оновив(-ла) правило блокування серверів зі збігом з %(glob)s через %(reason)s", + "%(senderName)s updated a ban rule matching %(glob)s for %(reason)s": "%(senderName)s оновив(-ла) правило блокування зі збігом з %(glob)s через %(reason)s", + "%(senderName)s created a rule banning users matching %(glob)s for %(reason)s": "%(senderName)s створив(-ла) правило блокування користувачів зі збігом з %(glob)s через %(reason)s", + "%(senderName)s created a rule banning rooms matching %(glob)s for %(reason)s": "%(senderName)s створив(-ла) правило блокування кімнат зі збігом з %(glob)s через %(reason)s", + "%(senderName)s created a rule banning servers matching %(glob)s for %(reason)s": "%(senderName)s створив(-ла) правило блокування серверів зі збігом з %(glob)s через %(reason)s", "Light": "Світла", "Dark": "Темна", "You signed in to a new session without verifying it:": "Ви увійшли в нову сесію, не підтвердивши її:", @@ -794,7 +794,7 @@ "%(senderName)s: %(reaction)s": "%(senderName)s: %(reaction)s", "%(senderName)s: %(stickerName)s": "%(senderName)s: %(stickerName)s", "Custom user status messages": "користувацький статус", - "Group & filter rooms by custom tags (refresh to apply changes)": "Групувати та фільтрувати кімнати за кастомними тегами (оновіть для застосування змін)", + "Group & filter rooms by custom tags (refresh to apply changes)": "Групувати та проціджувати кімнати за нетиповими наличками (оновіть щоб застосувати зміни)", "Multiple integration managers": "Декілька менджерів інтеграції", "Try out new ways to ignore people (experimental)": "Спробуйте нові способи ігнорувати людей (експериментальні)", "Support adding custom themes": "Підтримка користувацьких тем", @@ -805,11 +805,11 @@ "Enable Emoji suggestions while typing": "Увімкнути пропонування емодзі при друкуванні", "Use a more compact ‘Modern’ layout": "Використовувати компактнішу \"Сучасну\" тему", "General": "Загальні", - "Discovery": "Відкриття", + "Discovery": "Виявлення", "Help & About": "Допомога та про програму", "Bug reporting": "Повідомити про помилку", "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Якщо ви відправляли помилки через GitHub, журнали можуть допомогти нам виявити проблеми. Журнали відладки, що містять інформацію про використані додатки, включають ваше ім’я користувача, ідентифікатори або псевдоніми кімнат або груп, які ви відвідували, а також імена інших користувачів. Вони не містять повідомлень.", - "Submit debug logs": "Відправити відладочні журнали (debug logs)", + "Submit debug logs": "Надіслати журнал зневадження", "Clear cache and reload": "Очистити кеш та перезавантажити", "To report a Matrix-related security issue, please read the Matrix.org Security Disclosure Policy.": "Щоб повідомити про проблеми безпеки Matrix, будь ласка, прочитайте Політику розкриття інформації Matrix.org.", "FAQ": "Часті питання", @@ -992,7 +992,7 @@ "Backup version: ": "Версія резервної копії: ", "Algorithm: ": "Алгоритм: ", "Backup key stored: ": "Резервна копія ключа збережена ", - "Enable audible notifications for this session": "Ввімкнути звукові сповіщення для цього сеансу", + "Enable audible notifications for this session": "Увімкнути звукові сповіщення для цього сеансу", "Save": "Зберегти", "Checking server": "Перевірка серверу", "Disconnect": "Відключити", @@ -1017,7 +1017,7 @@ "Unable to revoke sharing for email address": "Не вдалось відкликати оприлюднювання адреси е-пошти", "Revoke": "Відкликати", "Unable to revoke sharing for phone number": "Не вдалось відкликати оприлюднювання телефонного номеру", - "Filter room members": "Відфільтрувати учасників кімнати", + "Filter room members": "Відцідити учасників кімнати", "Voice call": "Голосовий виклик", "Video call": "Відеовиклик", "Not now": "Не зараз", @@ -1180,5 +1180,50 @@ "or another cross-signing capable Matrix client": "або інший здатний до перехресного підписування Matrix-клієнт", "Your new session is now verified. It has access to your encrypted messages, and other users will see it as trusted.": "Ваш новий сеанс тепер є звірений. Він має доступ до ваших зашифрованих повідомлень, а інші користувачі бачитимуть його як довірений.", "Emoji": "Емодзі", - "Emoji Autocomplete": "Самодоповнення емодзі" + "Emoji Autocomplete": "Самодоповнення емодзі", + "%(senderName)s created a ban rule matching %(glob)s for %(reason)s": "%(senderName)s створив(-ла) правило блокування зі збігом з %(glob)s через %(reason)s", + "%(senderName)s changed a rule that was banning users matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s змінив(-ла) правило блокування користувачів зі збігу з %(oldGlob)s на збіг з %(newGlob)s через %(reason)s", + "%(senderName)s changed a rule that was banning rooms matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s змінив(-ла) правило блокування кімнат зі збігу з %(oldGlob)s на збіг з %(newGlob)s через %(reason)s", + "%(senderName)s changed a rule that was banning servers matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s змінив(-ла) правило блокування серверів зі збігу з %(oldGlob)s на збіг з %(newGlob)s через %(reason)s", + "%(senderName)s updated a ban rule that was matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s змінив(-ла) правило блокування зі збігу з %(oldGlob)s на збіг з %(newGlob)s через %(reason)s", + "Enable Community Filter Panel": "Увімкнути панель спільнот", + "Messages containing my username": "Повідомлення, що містять моє користувацьке ім'я", + "Messages containing @room": "Повідомлення, що містять @room", + "When rooms are upgraded": "Коли кімнати поліпшено", + "Unknown caller": "Невідомий викликач", + "The integration manager is offline or it cannot reach your homeserver.": "Менеджер інтеграцій непід'єднаний або не може досягти вашого домашнього сервера.", + "Enable desktop notifications for this session": "Увімкнути стільничні сповіщення для цього сеансу", + "Profile picture": "Зображення профілю", + "Use an Integration Manager (%(serverName)s) to manage bots, widgets, and sticker packs.": "Використовувати менеджер інтеграцій %(serverName)s для керування ботами, знадобами та паками наліпок.", + "Use an Integration Manager to manage bots, widgets, and sticker packs.": "Використовувати менеджер інтеграцій для керування ботами, знадобами та паками наліпок.", + "Integration Managers receive configuration data, and can modify widgets, send room invites, and set power levels on your behalf.": "Менеджери інтеграцій отримують дані конфігурації та можуть змінювати знадоби, надсилати запрошення у кімнати й встановлювати рівні повноважень від вашого імені.", + "Show %(count)s more|other": "Показати ще %(count)s", + "Show %(count)s more|one": "Показати ще %(count)s", + "Failed to connect to integration manager": "Не вдалось з'єднатись з менеджером інтеграцій", + "Show image": "Показати зображення", + "You have ignored this user, so their message is hidden. Show anyways.": "Ви ігноруєте цього користувача, тож його повідомлення приховано. Все одно показати.", + "Show all": "Показати все", + "Add an Integration": "Додати інтеграцію", + "Filter community members": "Відцідити учасників спільноти", + "Filter community rooms": "Відцідити кімнати спільноти", + "Display your community flair in rooms configured to show it.": "Відбивати ваш спільнотний значок у кімнатах, що налаштовані показувати його.", + "Using this widget may share data with %(widgetDomain)s & your Integration Manager.": "Користування цим знадобом може призвести до поширення ваших даних з %(widgetDomain)s та вашим менеджером інтеграцій.", + "Show advanced": "Показати розширені", + "Your %(brand)s doesn't allow you to use an Integration Manager to do this. Please contact an admin.": "Ваш %(brand)s не дозволяє вам використовувати для цього менеджер інтеграцій. Зверніться, будь ласка, до адміністратора.", + "Integration Manager": "Менеджер інтеграцій", + "Your community hasn't got a Long Description, a HTML page to show to community members.
Click here to open settings and give it one!": "Ваша спільнота не має великого опису (HTML-сторінки, показуваної членам спільноти).
Клацніть тут щоб відкрити налаштування й створити цей опис!", + "Review terms and conditions": "Переглянути умови користування", + "Old cryptography data detected": "Виявлено старі криптографічні дані", + "Logout": "Вийти", + "Your Communities": "Ваші спільноти", + "Did you know: you can use communities to filter your %(brand)s experience!": "Чи знаєте ви, що спільноти можна використовувати для припасування %(brand)s під ваші потреби?", + "Communities": "Спільноти", + "Create a new community": "Створити нову спільноту", + "Clear filter": "Очистити цідило", + "Syncing...": "Синхронізування…", + "Signing In...": "Входження…", + "If you've joined lots of rooms, this might take a while": "Якщо ви приєднались до багатьох кімнат, це може зайняти деякий час", + "Create account": "Створити обліковий запис", + "Failed to fetch avatar URL": "Не вдалось вибрати URL личини", + "Clear room list filter field": "Очистити поле цідила списку кімнат" } From 8f0e4dae9dab0baf8ae712af14dd7abc5b3603df Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Fri, 14 Aug 2020 12:01:16 +0100 Subject: [PATCH 171/424] Allow room tile context menu when minimized using right click --- .../views/elements/AccessibleTooltipButton.tsx | 10 ++++++++++ src/components/views/rooms/RoomTile.tsx | 12 +++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/components/views/elements/AccessibleTooltipButton.tsx b/src/components/views/elements/AccessibleTooltipButton.tsx index 3546f62359..0388c565ad 100644 --- a/src/components/views/elements/AccessibleTooltipButton.tsx +++ b/src/components/views/elements/AccessibleTooltipButton.tsx @@ -25,6 +25,7 @@ interface ITooltipProps extends React.ComponentProps { title: string; tooltip?: React.ReactNode; tooltipClassName?: string; + forceHide?: boolean; } interface IState { @@ -39,7 +40,16 @@ export default class AccessibleTooltipButton extends React.PureComponent) { + if (!prevProps.forceHide && this.props.forceHide && this.state.hover) { + this.setState({ + hover: false, + }); + } + } + onMouseOver = () => { + if (this.props.forceHide) return; this.setState({ hover: true, }); diff --git a/src/components/views/rooms/RoomTile.tsx b/src/components/views/rooms/RoomTile.tsx index 09f201e3ef..0c99b98e1a 100644 --- a/src/components/views/rooms/RoomTile.tsx +++ b/src/components/views/rooms/RoomTile.tsx @@ -113,7 +113,7 @@ export default class RoomTile extends React.PureComponent { }; private get showContextMenu(): boolean { - return !this.props.isMinimized && this.props.tag !== DefaultTagID.Invite; + return this.props.tag !== DefaultTagID.Invite; } private get showMessagePreview(): boolean { @@ -304,7 +304,9 @@ export default class RoomTile extends React.PureComponent { private onClickMute = ev => this.saveNotifState(ev, MUTE); private renderNotificationsMenu(isActive: boolean): React.ReactElement { - if (MatrixClientPeg.get().isGuest() || this.props.tag === DefaultTagID.Archived || !this.showContextMenu) { + if (MatrixClientPeg.get().isGuest() || this.props.tag === DefaultTagID.Archived || + !this.showContextMenu || this.props.isMinimized + ) { // the menu makes no sense in these cases so do not show one return null; } @@ -530,9 +532,13 @@ export default class RoomTile extends React.PureComponent { ariaDescribedBy = messagePreviewId(this.props.room.roomId); } + const props: Partial> = {}; let Button: React.ComponentType> = AccessibleButton; if (this.props.isMinimized) { Button = AccessibleTooltipButton; + props.title = name; + // force the tooltip to hide whilst we are showing the context menu + props.forceHide = !!this.state.generalMenuPosition; } return ( @@ -540,6 +546,7 @@ export default class RoomTile extends React.PureComponent { {({onFocus, isActive, ref}) => to continue.": "Entre com sua Frase de Segurança ou para continuar.", "Security Key": "Chave de Segurança", "Use your Security Key to continue.": "Use sua Chave de Segurança para continuar.", - "Recovery key mismatch": "A chave de segurança não corresponde à correta", + "Recovery key mismatch": "Chave de recuperação incorreta", "Backup could not be decrypted with this recovery key: please verify that you entered the correct recovery key.": "O backup não pôde ser descriptografado com esta chave de recuperação: por favor, verifique se você entrou com a chave de recuperação correta.", "Backup could not be decrypted with this recovery passphrase: please verify that you entered the correct recovery passphrase.": "O backup não pôde ser descriptografado com esta frase de recuperação: por favor, verifique se você entrou com a frase de recuperação correta.", "Warning: you should only set up key backup from a trusted computer.": "Atenção: você só deve configurar a cópia de segurança (backup) das chaves em um computador de sua confiança.", @@ -1564,7 +1564,7 @@ "Welcome to %(appName)s": "Bem-vinda/o ao %(appName)s", "Liberate your communication": "Liberte sua comunicação", "Send a Direct Message": "Enviar uma mensagem", - "Explore Public Rooms": "Explore as salas públicas", + "Explore Public Rooms": "Explorar salas públicas", "Create a Group Chat": "Criar um chat de grupo", "Explore rooms": "Explorar salas", "Data from an older version of %(brand)s has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Detectamos uma versão mais antiga do %(brand)s. Isso fará com que a criptografia de ponta a ponta não funcione corretamente. As mensagens criptografadas de ponta a ponta trocadas recentemente, enquanto você usava a versão mais antiga, talvez não sejam descriptografáveis na nova versão. Isso também poderá fazer com que as mensagens trocadas nesta sessão falhem na mais atual. Se você tiver problemas, desconecte-se e entre novamente. Para manter o histórico de mensagens, exporte e reimporte suas chaves.", @@ -1575,7 +1575,7 @@ "Create account": "Criar conta", "Create your account": "Criar sua conta", "Use Recovery Key or Passphrase": "Use a chave de recuperação, ou a frase de recuperação", - "Use Recovery Key": "Use a chave de recuperação", + "Use Recovery Key": "Usar a chave de recuperação", "Confirm your identity by verifying this login from one of your other sessions, granting it access to encrypted messages.": "Confirme sua identidade através da verificação deste login em qualquer uma de suas outras sessões, garantindo a elas acesso a mensagens criptografadas.", "Your new session is now verified. It has access to your encrypted messages, and other users will see it as trusted.": "Sua nova sessão está agora verificada. Ela tem acesso às suas mensagens criptografadas, e outras(os) usuárias(os) poderão ver esta sessão como confiável.", "Without completing security on this session, it won’t have access to encrypted messages.": "Sem completar os procedimentos de segurança nesta sessão, você não terá acesso a mensagens criptografadas.", @@ -1608,7 +1608,7 @@ "This session has detected that your recovery passphrase and key for Secure Messages have been removed.": "Esta sessão detectou que sua frase e chave de recuperação para Mensagens Seguras foram removidas.", "If you did this accidentally, you can setup Secure Messages on this session which will re-encrypt this session's message history with a new recovery method.": "Se você fez isso acidentalmente, você pode configurar Mensagens Seguras nesta sessão, o que vai re-criptografar o histórico de mensagens desta sessão com um novo método de recuperação.", "If disabled, messages from encrypted rooms won't appear in search results.": "Se desativado, as mensagens de salas criptografadas não aparecerão em resultados de buscas.", - "%(brand)s is securely caching encrypted messages locally for them to appear in search results:": "%(brand)s está armazenando de forma segura as mensagens criptografadas localmente, para que possam aparecer em resultados das buscas:", + "%(brand)s is securely caching encrypted messages locally for them to appear in search results:": "%(brand)s está armazenando de forma segura as mensagens criptografadas localmente, para que possam aparecer nos resultados das buscas:", "%(doneRooms)s out of %(totalRooms)s": "%(doneRooms)s de %(totalRooms)s", "Jump to start/end of the composer": "Pule para o início/fim do compositor", "Click the button below to confirm adding this phone number.": "Clique no botão abaixo para confirmar a adição deste número de telefone.", @@ -1728,7 +1728,7 @@ "Your display name": "Seu nome e sobrenome", "Your avatar URL": "Link da sua foto de perfil", "Your user ID": "Sua ID de usuário", - "%(brand)s URL": "Link de %(brand)s", + "%(brand)s URL": "Link do %(brand)s", "Using this widget may share data with %(widgetDomain)s & your Integration Manager.": "Se você usar esse widget, os dados poderão ser compartilhados com %(widgetDomain)s & seu Gerenciador de Integrações.", "Using this widget may share data with %(widgetDomain)s.": "Se você usar esse widget, os dados poderão ser compartilhados com %(widgetDomain)s.", "%(severalUsers)smade no changes %(count)s times|other": "%(severalUsers)s não fizeram alterações %(count)s vezes", @@ -1767,7 +1767,7 @@ "You cannot sign in to your account. Please contact your homeserver admin for more information.": "Você não pôde se conectar na sua conta. Entre em contato com o administrador do servidor para obter mais informações.", "Confirm adding this phone number by using Single Sign On to prove your identity.": "Confirme a adição deste número de telefone usando o Login Único para provar sua identidade.", "Use an identity server to invite by email. Click continue to use the default identity server (%(defaultIdentityServerName)s) or manage in Settings.": "Use um servidor de identidade para convidar por e-mail. Clique em continuar para usar o servidor de identidade padrão (%(defaultIdentityServerName)s) ou gerencie nas Configurações.", - "You might have configured them in a client other than %(brand)s. You cannot tune them in %(brand)s but they still apply.": "Você pode ter configurado estas opções em um cliente que não seja %(brand)s. Você não pode ajustar essas opções no %(brand)s, mas elas ainda se aplicam.", + "You might have configured them in a client other than %(brand)s. You cannot tune them in %(brand)s but they still apply.": "Você pode ter configurado estas opções em um aplicativo que não seja o %(brand)s. Você não pode ajustar essas opções no %(brand)s, mas elas ainda se aplicam.", "Enable audible notifications for this session": "Ativar o som de notificações nesta sessão", "Display Name": "Nome e sobrenome", "Identity Server URL must be HTTPS": "O link do servidor de identidade deve começar com HTTPS", @@ -1797,7 +1797,7 @@ "Disconnecting from your identity server will mean you won't be discoverable by other users and you won't be able to invite others by email or phone.": "Desconectar-se do servidor de identidade significa que você não poderá ser descoberto por outros usuários e não poderá convidar outras pessoas por e-mail ou número de celular.", "Using an identity server is optional. If you choose not to use an identity server, you won't be discoverable by other users and you won't be able to invite others by email or phone.": "Usar um servidor de identidade é opcional. Se você optar por não usar um servidor de identidade, não poderá ser descoberto por outros usuários e não poderá convidar outras pessoas por e-mail ou por número de celular.", "Do not use an identity server": "Não usar um servidor de identidade", - "Enter a new identity server": "Digitar um novo servidor de identidade", + "Enter a new identity server": "Digite um novo servidor de identidade", "Change": "Alterar", "Manage integrations": "Gerenciar integrações", "New version available. Update now.": "Nova versão disponível. Atualize agora.", @@ -1813,9 +1813,9 @@ "Message layout": "Aparência da mensagem", "Compact": "Compacto", "Modern": "Moderno", - "Set the name of a font installed on your system & %(brand)s will attempt to use it.": "Defina o nome de uma fonte instalada no seu sistema e %(brand)s tentará usá-la.", + "Set the name of a font installed on your system & %(brand)s will attempt to use it.": "Defina o nome de uma fonte instalada no seu sistema e o %(brand)s tentará usá-la.", "Customise your appearance": "Personalize sua aparência", - "Appearance Settings only affect this %(brand)s session.": "As Configurações de aparência afetam apenas esta sessão do %(brand)s.", + "Appearance Settings only affect this %(brand)s session.": "As configurações de aparência afetam apenas esta sessão do %(brand)s.", "Your password was successfully changed. You will not receive push notifications on other sessions until you log back in to them": "Sua senha foi alterada com sucesso. Você não receberá notificações pop-up em outras sessões até fazer login novamente nelas", "Agree to the identity server (%(serverName)s) Terms of Service to allow yourself to be discoverable by email address or phone number.": "Concorde com os Termos de Serviço do servidor de identidade (%(serverName)s), para que você possa ser descoberto por endereço de e-mail ou por número de celular.", "Discovery": "Contatos", @@ -1852,10 +1852,10 @@ "You can still join it because this is a public room.": "Você ainda pode entrar, porque esta é uma sala pública.", "Join the discussion": "Participar da discussão", "This invite to %(roomName)s was sent to %(email)s which is not associated with your account": "Este convite para %(roomName)s foi enviado para %(email)s, que não está associado à sua conta", - "Link this email with your account in Settings to receive invites directly in %(brand)s.": "Vincule esse e-mail à sua conta em Configurações, para receber convites diretamente em %(brand)s.", + "Link this email with your account in Settings to receive invites directly in %(brand)s.": "Vincule esse e-mail à sua conta em Configurações, para receber convites diretamente no %(brand)s.", "This invite to %(roomName)s was sent to %(email)s": "Este convite para %(roomName)s foi enviado para %(email)s", - "Use an identity server in Settings to receive invites directly in %(brand)s.": "Use um servidor de identidade em Configurações para receber convites diretamente em %(brand)s.", - "Share this email in Settings to receive invites directly in %(brand)s.": "Compartilhe este e-mail em Configurações para receber convites diretamente em %(brand)s.", + "Use an identity server in Settings to receive invites directly in %(brand)s.": "Use um servidor de identidade em Configurações para receber convites diretamente no %(brand)s.", + "Share this email in Settings to receive invites directly in %(brand)s.": "Compartilhe este e-mail em Configurações para receber convites diretamente no %(brand)s.", "Do you want to chat with %(user)s?": "Deseja conversar com %(user)s?", " wants to chat": " quer conversar", "Do you want to join %(roomName)s?": "Deseja se juntar a %(roomName)s?", @@ -1972,7 +1972,7 @@ "Mod": "Moderador", "Scroll to most recent messages": "Ir para as mensagens mais recentes", "Close preview": "Fechar a visualização", - "Send a reply…": "Enviar uma resposta…", + "Send a reply…": "Digite sua resposta…", "Send a message…": "Digite uma mensagem…", "Bold": "Negrito", "Italics": "Itálico", @@ -2034,7 +2034,7 @@ "Destroy cross-signing keys?": "Destruir chaves autoverificadas?", "Waiting for partner to confirm...": "Aguardando seu contato confirmar...", "Enable 'Manage Integrations' in Settings to do this.": "Para fazer isso, ative 'Gerenciar Integrações' nas Configurações.", - "Your %(brand)s doesn't allow you to use an Integration Manager to do this. Please contact an admin.": "Seu %(brand)s não permite que você use o Gerenciador de Integrações para fazer isso. Entre em contato com um administrador.", + "Your %(brand)s doesn't allow you to use an Integration Manager to do this. Please contact an admin.": "Seu %(brand)s não permite que você use o Gerenciador de Integrações para fazer isso. Entre em contato com o administrador.", "Confirm to continue": "Confirme para continuar", "Click the button below to confirm your identity.": "Clique no botão abaixo para confirmar sua identidade.", "Failed to invite the following users to chat: %(csvUsers)s": "Falha ao convidar os seguintes usuários para a conversa: %(csvUsers)s", @@ -2193,7 +2193,7 @@ "Reload": "Recarregar", "Take picture": "Tirar uma foto", "Country Dropdown": "Selecione o país", - "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use %(brand)s with an existing Matrix account on a different homeserver.": "Você pode usar as opções personalizadas do servidor para entrar em outros servidores Matrix especificando um endereço de servidor local diferente. Isso permite que você use %(brand)s com uma conta Matrix existente em um servidor local diferente.", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use %(brand)s with an existing Matrix account on a different homeserver.": "Você pode usar as opções personalizadas do servidor para entrar em outros servidores Matrix especificando um endereço de servidor local diferente. Isso permite que você use o %(brand)s com uma conta Matrix existente em um servidor local diferente.", "No identity server is configured so you cannot add an email address in order to reset your password in the future.": "Nenhum servidor de identidade está configurado, portanto você não pode adicionar um endereço de e-mail para redefinir sua senha no futuro.", "Enter your custom identity server URL What does this mean?": "Digite o endereço do servidor de identidade personalizado O que isso significa?", "Join millions for free on the largest public server": "Junte-se a milhões de pessoas gratuitamente no maior servidor público", From 20c245ecd4b32a07012cf02a929632f5563de1ea Mon Sep 17 00:00:00 2001 From: Nikita Epifanov Date: Sat, 15 Aug 2020 07:51:20 +0000 Subject: [PATCH 202/424] Translated using Weblate (Russian) Currently translated at 100.0% (2333 of 2333 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/ru/ --- src/i18n/strings/ru.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index ed685cc6ce..b584f83f2d 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -2405,5 +2405,7 @@ "You’re all caught up": "Нет непрочитанных сообщений", "You have no visible notifications in this room.": "Нет видимых уведомлений в этой комнате.", "%(brand)s Android": "%(brand)s Android", - "Master private key:": "Приватный мастер-ключ:" + "Master private key:": "Приватный мастер-ключ:", + "Show message previews for reactions in DMs": "Показывать превью сообщений для реакций в ЛС", + "Show message previews for reactions in all rooms": "Показывать предварительный просмотр сообщений для реакций во всех комнатах" } From 21cb4b3fd445b8d2e39b472d3a720aeed0c8a90b Mon Sep 17 00:00:00 2001 From: strix aluco Date: Fri, 14 Aug 2020 20:03:16 +0000 Subject: [PATCH 203/424] Translated using Weblate (Ukrainian) Currently translated at 52.1% (1215 of 2333 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/uk/ --- src/i18n/strings/uk.json | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/i18n/strings/uk.json b/src/i18n/strings/uk.json index de19a22397..62bfe2f1ab 100644 --- a/src/i18n/strings/uk.json +++ b/src/i18n/strings/uk.json @@ -556,9 +556,9 @@ "Decline (%(counter)s)": "Відхилити (%(counter)s)", "Language and region": "Мова та регіон", "Account management": "Керування обліковим записом", - "Deactivating your account is a permanent action - be careful!": "Деактивація вашого облікового запису є безповоротною дією — будьте обережні!", - "Deactivate Account": "Деактивувати обліковий запис", - "Deactivate account": "Знедіяти обліківку", + "Deactivating your account is a permanent action - be careful!": "Знедіяння вашого облікового запису є безповоротним — будьте обережні!", + "Deactivate Account": "Знедіяти обліковий запис", + "Deactivate account": "Знедіяти обліковий запис", "Legal": "Правова інформація", "Credits": "Подяки", "For help with using %(brand)s, click here.": "Якщо необхідна допомога у користуванні %(brand)s'ом, клацніть тут.", @@ -582,7 +582,7 @@ "This invite to %(roomName)s was sent to %(email)s": "Це запрошення до %(roomName)s було надіслане на %(email)s", "Use an identity server in Settings to receive invites directly in %(brand)s.": "Використовувати сервер ідентифікації у Налаштуваннях щоб отримувати запрошення прямо у %(brand)s.", "Are you sure you want to deactivate your account? This is irreversible.": "Ви впевнені у тому, що бажаєте знедіяти ваш обліковий запис? Ця дія безповоротна.", - "Confirm account deactivation": "Підтвердьте деактивацію облікового запису", + "Confirm account deactivation": "Підтвердьте знедіювання облікового запису", "To continue, please enter your password:": "Щоб продовжити, введіть, будь ласка, ваш пароль:", "This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. This action is irreversible.": "Ваш обліковий запис стане назавжди невикористовним. Ви не матимете змоги увійти в нього і ніхто не зможе перереєструватись під цим користувацьким ID. Це призведе до виходу вашого облікового запису з усіх кімнат та до видалення деталей вашого облікового запису з вашого серверу ідентифікації. Ця дія є безповоротною.", "Verify session": "Звірити сесію", @@ -807,8 +807,8 @@ "General": "Загальні", "Discovery": "Виявлення", "Help & About": "Допомога та про програму", - "Bug reporting": "Повідомити про помилку", - "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Якщо ви відправляли помилки через GitHub, журнали можуть допомогти нам виявити проблеми. Журнали відладки, що містять інформацію про використані додатки, включають ваше ім’я користувача, ідентифікатори або псевдоніми кімнат або груп, які ви відвідували, а також імена інших користувачів. Вони не містять повідомлень.", + "Bug reporting": "Звітування про вади", + "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Якщо ви подали ваду через GitHub, журнали зневадження можуть допомогти нам відстежити проблему. Журнали зневадження містять дані використання застосунку, включно з вашим користувацьким ім’ям, ідентифікаторами або псевдонімами відвіданих вами кімнат або груп, а також іменами інших користувачів. Вони не містять повідомлень.", "Submit debug logs": "Надіслати журнал зневадження", "Clear cache and reload": "Очистити кеш та перезавантажити", "To report a Matrix-related security issue, please read the Matrix.org Security Disclosure Policy.": "Щоб повідомити про проблеми безпеки Matrix, будь ласка, прочитайте Політику розкриття інформації Matrix.org.", @@ -1226,5 +1226,8 @@ "Create account": "Створити обліковий запис", "Failed to fetch avatar URL": "Не вдалось вибрати URL личини", "Clear room list filter field": "Очистити поле цідила списку кімнат", - "Cancel autocomplete": "Скасувати самодоповнення" + "Cancel autocomplete": "Скасувати самодоповнення", + "Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Журнали зневадження містять дані використання застосунку, включно з вашим користувацьким ім’ям, ідентифікаторами або псевдонімами відвіданих вами кімнат або груп, а також іменами інших користувачів. Вони не містять повідомлень.", + "Confirm your account deactivation by using Single Sign On to prove your identity.": "Підтвердьте знедіяння вашого облікового запису через Single Sign On щоб підтвердити вашу особу.", + "This account has been deactivated.": "Цей обліковий запис було знедіяно." } From 6e2a26443da41a52239f30f88aae9fff8d6b8f80 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Mon, 17 Aug 2020 10:55:54 +0100 Subject: [PATCH 204/424] Fix corner rounding on images not always affecting right side --- res/css/views/messages/_MImageBody.scss | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/res/css/views/messages/_MImageBody.scss b/res/css/views/messages/_MImageBody.scss index 2faea41709..1c773c2f06 100644 --- a/res/css/views/messages/_MImageBody.scss +++ b/res/css/views/messages/_MImageBody.scss @@ -25,6 +25,7 @@ limitations under the License. height: 100%; left: 0; top: 0; + border-radius: 4px; } .mx_MImageBody_thumbnail_container { @@ -34,8 +35,6 @@ limitations under the License. // Make sure the _thumbnail is positioned relative to the _container position: relative; - - border-radius: 4px; } .mx_MImageBody_thumbnail_spinner { From 70f0701de5c1ec67b30ac982ee983eb9ec194018 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Mon, 17 Aug 2020 10:59:43 +0100 Subject: [PATCH 205/424] null guard group inviter for corrupted groups --- src/components/structures/GroupView.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/components/structures/GroupView.js b/src/components/structures/GroupView.js index a946d16319..2e2fa25169 100644 --- a/src/components/structures/GroupView.js +++ b/src/components/structures/GroupView.js @@ -1003,9 +1003,10 @@ export default createReactClass({ this.state.inviterProfile.avatarUrl, 36, 36, ) : null; - let inviterName = group.inviter.userId; + const inviter = group.inviter || {}; + let inviterName = inviter.userId; if (this.state.inviterProfile) { - inviterName = this.state.inviterProfile.displayName || group.inviter.userId; + inviterName = this.state.inviterProfile.displayName || inviter.userId; } return
@@ -1016,7 +1017,7 @@ export default createReactClass({ height={36} /> { _t("%(inviter)s has invited you to join this community", { - inviter: inviterName, + inviter: inviterName || _t("Someone"), }) }
From aed2c24b736b2e4312dbd1294d9e2347b1d3f6e1 Mon Sep 17 00:00:00 2001 From: Nikita Epifanov Date: Mon, 17 Aug 2020 09:18:39 +0000 Subject: [PATCH 206/424] Translated using Weblate (Russian) Currently translated at 100.0% (2334 of 2334 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/ru/ --- src/i18n/strings/ru.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index b584f83f2d..1e2763f59f 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -2407,5 +2407,6 @@ "%(brand)s Android": "%(brand)s Android", "Master private key:": "Приватный мастер-ключ:", "Show message previews for reactions in DMs": "Показывать превью сообщений для реакций в ЛС", - "Show message previews for reactions in all rooms": "Показывать предварительный просмотр сообщений для реакций во всех комнатах" + "Show message previews for reactions in all rooms": "Показывать предварительный просмотр сообщений для реакций во всех комнатах", + "Explore public rooms": "Просмотреть публичные комнаты" } From 9a5134eff21e7d53c467e7ae568b9fd44512fa89 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Mon, 17 Aug 2020 10:55:54 +0100 Subject: [PATCH 207/424] Fix corner rounding on images not always affecting right side --- res/css/views/messages/_MImageBody.scss | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/res/css/views/messages/_MImageBody.scss b/res/css/views/messages/_MImageBody.scss index 2faea41709..1c773c2f06 100644 --- a/res/css/views/messages/_MImageBody.scss +++ b/res/css/views/messages/_MImageBody.scss @@ -25,6 +25,7 @@ limitations under the License. height: 100%; left: 0; top: 0; + border-radius: 4px; } .mx_MImageBody_thumbnail_container { @@ -34,8 +35,6 @@ limitations under the License. // Make sure the _thumbnail is positioned relative to the _container position: relative; - - border-radius: 4px; } .mx_MImageBody_thumbnail_spinner { From 32ca810809e251067704bf81fd56d1b6b2bbbcde Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Mon, 17 Aug 2020 12:53:33 +0100 Subject: [PATCH 208/424] Upgrade matrix-js-sdk to 8.1.0 --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index a4aa5b1e9c..8932deea56 100644 --- a/package.json +++ b/package.json @@ -79,7 +79,7 @@ "is-ip": "^2.0.0", "linkifyjs": "^2.1.9", "lodash": "^4.17.19", - "matrix-js-sdk": "8.1.0-rc.1", + "matrix-js-sdk": "8.1.0", "minimist": "^1.2.5", "pako": "^1.0.11", "parse5": "^5.1.1", diff --git a/yarn.lock b/yarn.lock index d4d48c10c2..ea9d16a903 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6470,10 +6470,10 @@ mathml-tag-names@^2.0.1: resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3" integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg== -matrix-js-sdk@8.1.0-rc.1: - version "8.1.0-rc.1" - resolved "https://registry.yarnpkg.com/matrix-js-sdk/-/matrix-js-sdk-8.1.0-rc.1.tgz#e42ca8dae7f513f956457eeb46f03c445a3712e8" - integrity sha512-/qOSe0FQsbC2ITXhUbpjCIRAT78f2VHxKGqGMC2M2s5e2Mvpxcpu7lj/ONz5irUPd34Sqhj9KdIUnAqBbh3stQ== +matrix-js-sdk@8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/matrix-js-sdk/-/matrix-js-sdk-8.1.0.tgz#c4e48b03a54455dda3d3e1c539ce31dbb46790ac" + integrity sha512-id/J1rBmooQWebCNO4we5W4w816+6LR503H6N1A3jn2CZl2etg86HOScmtGmw+4qkzjKJI5QkL30tvDyAJ+lxA== dependencies: "@babel/runtime" "^7.8.3" another-json "^0.2.0" From 18ae1a95470260bce92532e43ff6b6fc4965cb68 Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Mon, 17 Aug 2020 12:59:51 +0100 Subject: [PATCH 209/424] Prepare changelog for v3.2.0 --- CHANGELOG.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0bfd203b27..29cbb040f4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,17 @@ +Changes in [3.2.0](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v3.2.0) (2020-08-17) +=================================================================================================== +[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v3.2.0-rc.1...v3.2.0) + + * Upgrade to JS SDK 8.1.0 + * [Release] Fix corner rounding on images not always affecting right side + [\#5122](https://github.com/matrix-org/matrix-react-sdk/pull/5122) + * [Release] Message Action Bar watch for event send changes + [\#5116](https://github.com/matrix-org/matrix-react-sdk/pull/5116) + * Fix /op slash command to release + [\#5114](https://github.com/matrix-org/matrix-react-sdk/pull/5114) + * Fix action bar safe area regression + [\#5112](https://github.com/matrix-org/matrix-react-sdk/pull/5112) + Changes in [3.2.0-rc.1](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v3.2.0-rc.1) (2020-08-13) ============================================================================================================= [Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v3.1.0...v3.2.0-rc.1) From ea337465ae1a670dac1aad61fd20efc6d0ac3204 Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Mon, 17 Aug 2020 12:59:51 +0100 Subject: [PATCH 210/424] v3.2.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8932deea56..e7a7dfac6b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "matrix-react-sdk", - "version": "3.2.0-rc.1", + "version": "3.2.0", "description": "SDK for matrix.org using React", "author": "matrix.org", "repository": { From c91fc99d4bfd76808c99327979c1b7dbcb9bf093 Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Mon, 17 Aug 2020 13:08:45 +0100 Subject: [PATCH 211/424] Reset matrix-js-sdk back to develop branch --- package.json | 2 +- yarn.lock | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index e7a7dfac6b..7462978946 100644 --- a/package.json +++ b/package.json @@ -79,7 +79,7 @@ "is-ip": "^2.0.0", "linkifyjs": "^2.1.9", "lodash": "^4.17.19", - "matrix-js-sdk": "8.1.0", + "matrix-js-sdk": "github:matrix-org/matrix-js-sdk#develop", "minimist": "^1.2.5", "pako": "^1.0.11", "parse5": "^5.1.1", diff --git a/yarn.lock b/yarn.lock index ea9d16a903..79a11ffb71 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6470,10 +6470,9 @@ mathml-tag-names@^2.0.1: resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3" integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg== -matrix-js-sdk@8.1.0: +"matrix-js-sdk@github:matrix-org/matrix-js-sdk#develop": version "8.1.0" - resolved "https://registry.yarnpkg.com/matrix-js-sdk/-/matrix-js-sdk-8.1.0.tgz#c4e48b03a54455dda3d3e1c539ce31dbb46790ac" - integrity sha512-id/J1rBmooQWebCNO4we5W4w816+6LR503H6N1A3jn2CZl2etg86HOScmtGmw+4qkzjKJI5QkL30tvDyAJ+lxA== + resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/64cdd73b93a475d10284977b69ef73138315b3be" dependencies: "@babel/runtime" "^7.8.3" another-json "^0.2.0" From 7ca3707b2fd4931f996a8d6481d27906dcfe2e09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Priit=20J=C3=B5er=C3=BC=C3=BCt?= Date: Mon, 17 Aug 2020 10:53:36 +0000 Subject: [PATCH 212/424] Translated using Weblate (Estonian) Currently translated at 99.8% (2329 of 2334 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/et/ --- src/i18n/strings/et.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/et.json b/src/i18n/strings/et.json index 29c1d17b01..857877e61f 100644 --- a/src/i18n/strings/et.json +++ b/src/i18n/strings/et.json @@ -2407,5 +2407,6 @@ "Show message previews for reactions in DMs": "Näita eelvaates otsesõnumitele regeerimisi", "Show message previews for reactions in all rooms": "Näita kõikides jututubades eelvaadetes sõnumitele regeerimisi", "Master private key:": "Üldine privaatvõti:", - "Recent changes that have not yet been received": "Hiljutised muudatused, mis pole veel alla laetud või saabunud" + "Recent changes that have not yet been received": "Hiljutised muudatused, mis pole veel alla laetud või saabunud", + "Explore public rooms": "Sirvi avalikke jututubasid" } From 7389be2a5fd8cd3a1ecb741e6dc9d4b9697deee8 Mon Sep 17 00:00:00 2001 From: Szimszon Date: Mon, 17 Aug 2020 10:13:36 +0000 Subject: [PATCH 213/424] Translated using Weblate (Hungarian) Currently translated at 100.0% (2334 of 2334 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/hu/ --- src/i18n/strings/hu.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index 7914da4d51..d2581b4405 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -2412,5 +2412,6 @@ "Attach files from chat or just drag and drop them anywhere in a room.": "Csatolj fájlt a csevegésből vagy húzd és ejtsd bárhova a szobában.", "You’re all caught up": "Mindent elolvastál", "You have no visible notifications in this room.": "Nincsenek látható értesítéseid ebben a szobában.", - "%(brand)s Android": "%(brand)s Android" + "%(brand)s Android": "%(brand)s Android", + "Explore public rooms": "Nyilvános szobák felderítése" } From a4d11cc19056027d745e63e46682e777dccfa60b Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Mon, 17 Aug 2020 16:59:29 +0100 Subject: [PATCH 214/424] Change highlighting around the room list filter --- res/css/structures/_LeftPanel.scss | 20 ++++++++++--------- res/css/structures/_RoomSearch.scss | 15 +++++++++++++- res/themes/dark/css/_dark.scss | 1 + res/themes/legacy-dark/css/_legacy-dark.scss | 1 + .../legacy-light/css/_legacy-light.scss | 1 + res/themes/light/css/_light.scss | 1 + src/components/structures/RoomSearch.tsx | 3 ++- 7 files changed, 31 insertions(+), 11 deletions(-) diff --git a/res/css/structures/_LeftPanel.scss b/res/css/structures/_LeftPanel.scss index 3c3c5f4444..380cce50fa 100644 --- a/res/css/structures/_LeftPanel.scss +++ b/res/css/structures/_LeftPanel.scss @@ -97,16 +97,18 @@ $tagPanelWidth: 56px; // only applies in this file, used for calculations display: flex; align-items: center; - .mx_RoomSearch_expanded + .mx_LeftPanel_exploreButton { - // Cheaty way to return the occupied space to the filter input - flex-basis: 0; - margin: 0; - width: 0; + .mx_RoomSearch_focused, .mx_RoomSearch_hasQuery { + & + .mx_LeftPanel_exploreButton { + // Cheaty way to return the occupied space to the filter input + flex-basis: 0; + margin: 0; + width: 0; - // Don't forget to hide the masked ::before icon, - // using display:none or visibility:hidden would break accessibility - &::before { - content: none; + // Don't forget to hide the masked ::before icon, + // using display:none or visibility:hidden would break accessibility + &::before { + content: none; + } } } diff --git a/res/css/structures/_RoomSearch.scss b/res/css/structures/_RoomSearch.scss index 031ac37f9c..c33a3c0ff9 100644 --- a/res/css/structures/_RoomSearch.scss +++ b/res/css/structures/_RoomSearch.scss @@ -19,6 +19,8 @@ limitations under the License. flex: 1; border-radius: 8px; background-color: $roomlist-button-bg-color; + // keep border thickness consistent to prevent movement + border: 1px solid transparent; height: 28px; padding: 2px; @@ -50,7 +52,18 @@ limitations under the License. } } - &.mx_RoomSearch_expanded { + &.mx_RoomSearch_hasQuery { + border-color: $secondary-fg-color; + } + + &.mx_RoomSearch_focused { + box-shadow: 0 0 4px 4px rgba(0, 132, 255, 0.5); + border-color: transparent; + } + + &.mx_RoomSearch_focused, &.mx_RoomSearch_hasQuery { + background-color: $roomlist-filter-active-bg-color; + .mx_RoomSearch_clearButton { width: 16px; height: 16px; diff --git a/res/themes/dark/css/_dark.scss b/res/themes/dark/css/_dark.scss index 8175e7d33d..d48abf6a4c 100644 --- a/res/themes/dark/css/_dark.scss +++ b/res/themes/dark/css/_dark.scss @@ -114,6 +114,7 @@ $composer-e2e-icon-color: $header-panel-text-primary-color; $theme-button-bg-color: #e3e8f0; $roomlist-button-bg-color: rgba(141, 151, 165, 0.2); // Buttons include the filter box, explore button, and sublist buttons +$roomlist-filter-active-bg-color: $bg-color; $roomlist-bg-color: rgba(33, 38, 44, 0.90); $roomlist-header-color: $tertiary-fg-color; $roomsublist-divider-color: $primary-fg-color; diff --git a/res/themes/legacy-dark/css/_legacy-dark.scss b/res/themes/legacy-dark/css/_legacy-dark.scss index fe1103a529..4ab5f99942 100644 --- a/res/themes/legacy-dark/css/_legacy-dark.scss +++ b/res/themes/legacy-dark/css/_legacy-dark.scss @@ -111,6 +111,7 @@ $composer-e2e-icon-color: $header-panel-text-primary-color; $theme-button-bg-color: #e3e8f0; $roomlist-button-bg-color: #1A1D23; // Buttons include the filter box, explore button, and sublist buttons +$roomlist-filter-active-bg-color: $roomlist-button-bg-color; $roomlist-bg-color: $header-panel-bg-color; $roomsublist-divider-color: $primary-fg-color; diff --git a/res/themes/legacy-light/css/_legacy-light.scss b/res/themes/legacy-light/css/_legacy-light.scss index 0aa9bd0394..6e66964fdf 100644 --- a/res/themes/legacy-light/css/_legacy-light.scss +++ b/res/themes/legacy-light/css/_legacy-light.scss @@ -178,6 +178,7 @@ $header-divider-color: #91a1c0; $theme-button-bg-color: #e3e8f0; $roomlist-button-bg-color: #fff; // Buttons include the filter box, explore button, and sublist buttons +$roomlist-filter-active-bg-color: $roomlist-button-bg-color; $roomlist-bg-color: $header-panel-bg-color; $roomlist-header-color: $primary-fg-color; $roomsublist-divider-color: $primary-fg-color; diff --git a/res/themes/light/css/_light.scss b/res/themes/light/css/_light.scss index 5a86a29248..ceb8d5677c 100644 --- a/res/themes/light/css/_light.scss +++ b/res/themes/light/css/_light.scss @@ -172,6 +172,7 @@ $header-divider-color: #91A1C0; $theme-button-bg-color: #e3e8f0; $roomlist-button-bg-color: rgba(141, 151, 165, 0.2); // Buttons include the filter box, explore button, and sublist buttons +$roomlist-filter-active-bg-color: #ffffff; $roomlist-bg-color: rgba(245, 245, 245, 0.90); $roomlist-header-color: $tertiary-fg-color; $roomsublist-divider-color: $primary-fg-color; diff --git a/src/components/structures/RoomSearch.tsx b/src/components/structures/RoomSearch.tsx index 69504e9ab8..f6b8d42c30 100644 --- a/src/components/structures/RoomSearch.tsx +++ b/src/components/structures/RoomSearch.tsx @@ -126,7 +126,8 @@ export default class RoomSearch extends React.PureComponent { public render(): React.ReactNode { const classes = classNames({ 'mx_RoomSearch': true, - 'mx_RoomSearch_expanded': this.state.query || this.state.focused, + 'mx_RoomSearch_hasQuery': this.state.query, + 'mx_RoomSearch_focused': this.state.focused, 'mx_RoomSearch_minimized': this.props.isMinimized, }); From e20b3754339e77eff3add18ca10854c830bb32c4 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Mon, 17 Aug 2020 18:20:00 +0100 Subject: [PATCH 215/424] Add filter results count and explore prompt --- res/css/structures/_LeftPanel.scss | 8 ++++ res/css/views/rooms/_RoomList.scss | 34 +++++++++++++++ src/components/structures/LeftPanel.tsx | 2 + src/components/views/rooms/RoomList.tsx | 20 ++++++++- .../views/rooms/RoomListNumResults.tsx | 41 +++++++++++++++++++ src/i18n/strings/en_EN.json | 3 ++ 6 files changed, 107 insertions(+), 1 deletion(-) create mode 100644 src/components/views/rooms/RoomListNumResults.tsx diff --git a/res/css/structures/_LeftPanel.scss b/res/css/structures/_LeftPanel.scss index 380cce50fa..69fff53444 100644 --- a/res/css/structures/_LeftPanel.scss +++ b/res/css/structures/_LeftPanel.scss @@ -136,6 +136,14 @@ $tagPanelWidth: 56px; // only applies in this file, used for calculations } } + .mx_LeftPanel_roomListFilterCount { + font-size: $font-13px; + font-weight: 500; + margin-left: 12px; + margin-top: 16px; + margin-bottom: -4px; // to counteract the normal roomListWrapper margin-top + } + .mx_LeftPanel_roomListWrapper { overflow: hidden; margin-top: 10px; // so we're not up against the search/filter diff --git a/res/css/views/rooms/_RoomList.scss b/res/css/views/rooms/_RoomList.scss index d210e118a2..2335bd5e18 100644 --- a/res/css/views/rooms/_RoomList.scss +++ b/res/css/views/rooms/_RoomList.scss @@ -24,3 +24,37 @@ limitations under the License. .mx_RoomList_iconExplore::before { mask-image: url('$(res)/img/element-icons/roomlist/explore.svg'); } + +.mx_RoomList_explorePrompt { + margin: 4px 12px 4px; + padding-top: 12px; + border-top: 1px solid #8D99A5; + font-size: $font-13px; + + div:first-child { + font-weight: 500; + margin-bottom: 8px; + } + + .mx_AccessibleButton { + color: $secondary-fg-color; + position: relative; + margin-left: 24px; + padding: 0; + font-size: inherit; + + &::before { + content: ''; + width: 16px; + height: 16px; + position: absolute; + top: 0; + left: -24px; + background: $secondary-fg-color; + mask-position: center; + mask-size: contain; + mask-repeat: no-repeat; + mask-image: url('$(res)/img/element-icons/roomlist/explore.svg'); + } + } +} diff --git a/src/components/structures/LeftPanel.tsx b/src/components/structures/LeftPanel.tsx index bc17bbe23f..dff6b47bfc 100644 --- a/src/components/structures/LeftPanel.tsx +++ b/src/components/structures/LeftPanel.tsx @@ -37,6 +37,7 @@ import IndicatorScrollbar from "../structures/IndicatorScrollbar"; import AccessibleTooltipButton from "../views/elements/AccessibleTooltipButton"; import { OwnProfileStore } from "../../stores/OwnProfileStore"; import { MatrixClientPeg } from "../../MatrixClientPeg"; +import RoomListNumResults from "../views/rooms/RoomListNumResults"; interface IProps { isMinimized: boolean; @@ -409,6 +410,7 @@ export default class LeftPanel extends React.Component { {this.renderHeader()} {this.renderSearchExplore()} {this.renderBreadcrumbs()} +
void; @@ -278,6 +279,10 @@ export default class RoomList extends React.PureComponent { } }; + private onExplore = () => { + dis.fire(Action.ViewRoomDirectory); + }; + private renderCommunityInvites(): TemporaryTile[] { // TODO: Put community invites in a more sensible place (not in the room list) // See https://github.com/vector-im/element-web/issues/14456 @@ -359,6 +364,16 @@ export default class RoomList extends React.PureComponent { } public render() { + let explorePrompt: JSX.Element; + if (RoomListStore.instance.getFirstNameFilterCondition()) { + explorePrompt =
+
{_t("Can't see what you’re looking for?")}
+ + {_t("Explore all public rooms")} + +
; + } + const sublists = this.renderSublists(); return ( @@ -370,7 +385,10 @@ export default class RoomList extends React.PureComponent { className="mx_RoomList" role="tree" aria-label={_t("Rooms")} - >{sublists}
+ > + {sublists} + {explorePrompt} +
)} ); diff --git a/src/components/views/rooms/RoomListNumResults.tsx b/src/components/views/rooms/RoomListNumResults.tsx new file mode 100644 index 0000000000..fcac91a56a --- /dev/null +++ b/src/components/views/rooms/RoomListNumResults.tsx @@ -0,0 +1,41 @@ +/* +Copyright 2020 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +import React, {useState} from "react"; + +import { _t } from "../../../languageHandler"; +import RoomListStore, { LISTS_UPDATE_EVENT } from "../../../stores/room-list/RoomListStore"; +import {useEventEmitter} from "../../../hooks/useEventEmitter"; + +const RoomListNumResults: React.FC = () => { + const [count, setCount] = useState(null); + useEventEmitter(RoomListStore.instance, LISTS_UPDATE_EVENT, () => { + if (RoomListStore.instance.getFirstNameFilterCondition()) { + const numRooms = Object.values(RoomListStore.instance.orderedLists).flat(1).length; + setCount(numRooms); + } else { + setCount(null); + } + }); + + if (typeof count !== "number") return null; + + return
+ {_t("%(count)s results", { count })} +
; +}; + +export default RoomListNumResults; diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index e82581de8d..eb41b2b64c 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -1120,6 +1120,9 @@ "System Alerts": "System Alerts", "Historical": "Historical", "Custom Tag": "Custom Tag", + "Can't see what you’re looking for?": "Can't see what you’re looking for?", + "Explore all public rooms": "Explore all public rooms", + "%(count)s results|other": "%(count)s results", "This room": "This room", "Joining room …": "Joining room …", "Loading …": "Loading …", From 2caee2eadd6eb9d90c4df5a86a41d82f581de97d Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Mon, 17 Aug 2020 18:20:57 +0100 Subject: [PATCH 216/424] TypeScript: enable es2019 lib for newer definitions --- src/@types/global.d.ts | 5 ----- tsconfig.json | 5 +++++ 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/@types/global.d.ts b/src/@types/global.d.ts index 13520e218d..86ee995a13 100644 --- a/src/@types/global.d.ts +++ b/src/@types/global.d.ts @@ -49,11 +49,6 @@ declare global { mxNotifier: typeof Notifier; } - // workaround for https://github.com/microsoft/TypeScript/issues/30933 - interface ObjectConstructor { - fromEntries?(xs: [string|number|symbol, any][]): object; - } - interface Document { // https://developer.mozilla.org/en-US/docs/Web/API/Document/hasStorageAccess hasStorageAccess?: () => Promise; diff --git a/tsconfig.json b/tsconfig.json index db040d1f31..b139e8e8d1 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -17,6 +17,11 @@ "react", "flux", "react-transition-group" + ], + "lib": [ + "es2019", + "dom", + "dom.iterable" ] }, "include": [ From 3fe6f0a792abab9a97a85e445a423a2a0d6f3bc1 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Mon, 17 Aug 2020 18:26:42 +0100 Subject: [PATCH 217/424] delint css --- res/css/views/rooms/_RoomList.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/css/views/rooms/_RoomList.scss b/res/css/views/rooms/_RoomList.scss index 2335bd5e18..9a6c47ad31 100644 --- a/res/css/views/rooms/_RoomList.scss +++ b/res/css/views/rooms/_RoomList.scss @@ -28,7 +28,7 @@ limitations under the License. .mx_RoomList_explorePrompt { margin: 4px 12px 4px; padding-top: 12px; - border-top: 1px solid #8D99A5; + border-top: 1px solid $tertiary-fg-color; font-size: $font-13px; div:first-child { From 96087d61f689b97217548cb2a47a69e51b69e58b Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Mon, 17 Aug 2020 13:12:18 -0600 Subject: [PATCH 218/424] Convert feature setting usages to regular settings --- src/FromWidgetPostMessageApi.js | 2 +- src/components/structures/LeftPanel.tsx | 2 +- .../avatars/MemberStatusMessageAvatar.js | 4 +- .../views/context_menus/MessageContextMenu.js | 2 +- .../views/dialogs/RoomSettingsDialog.js | 2 +- .../views/dialogs/UserSettingsDialog.js | 2 +- src/components/views/elements/AppTile.js | 2 +- .../views/elements/InlineSpinner.js | 2 +- .../views/elements/ManageIntegsButton.js | 2 +- src/components/views/elements/Spinner.js | 2 +- src/components/views/messages/MessageEvent.js | 2 +- src/components/views/right_panel/UserInfo.js | 2 +- src/components/views/rooms/AppsDrawer.js | 2 +- src/components/views/rooms/AuxPanel.js | 6 +- src/components/views/rooms/MemberTile.js | 4 +- src/components/views/rooms/RoomHeader.js | 2 +- src/components/views/rooms/Stickerpicker.js | 2 +- .../tabs/user/AppearanceUserSettingsTab.tsx | 2 +- .../settings/tabs/user/LabsUserSettingsTab.js | 2 +- src/hooks/useSettings.ts | 4 +- src/rageshake/submit-rageshake.ts | 2 +- src/settings/SettingsStore.ts | 71 ------------------- src/stores/CustomRoomTagStore.js | 2 +- src/stores/room-list/RoomListStore.ts | 2 +- .../previews/ReactionEventPreview.ts | 4 +- 25 files changed, 30 insertions(+), 101 deletions(-) diff --git a/src/FromWidgetPostMessageApi.js b/src/FromWidgetPostMessageApi.js index 1b4aa19ebf..d5d7c08d50 100644 --- a/src/FromWidgetPostMessageApi.js +++ b/src/FromWidgetPostMessageApi.js @@ -197,7 +197,7 @@ export default class FromWidgetPostMessageApi { const integId = (data && data.integId) ? data.integId : null; // TODO: Open the right integration manager for the widget - if (SettingsStore.isFeatureEnabled("feature_many_integration_managers")) { + if (SettingsStore.getValue("feature_many_integration_managers")) { IntegrationManagers.sharedInstance().openAll( MatrixClientPeg.get().getRoom(RoomViewStore.getRoomId()), `type_${integType}`, diff --git a/src/components/structures/LeftPanel.tsx b/src/components/structures/LeftPanel.tsx index bc17bbe23f..a0d7f3d9ea 100644 --- a/src/components/structures/LeftPanel.tsx +++ b/src/components/structures/LeftPanel.tsx @@ -377,7 +377,7 @@ export default class LeftPanel extends React.Component { const tagPanel = !this.state.showTagPanel ? null : (
- {SettingsStore.isFeatureEnabled("feature_custom_tags") ? : null} + {SettingsStore.getValue("feature_custom_tags") ? : null}
); diff --git a/src/components/views/avatars/MemberStatusMessageAvatar.js b/src/components/views/avatars/MemberStatusMessageAvatar.js index eef3f86d9a..d5d927106c 100644 --- a/src/components/views/avatars/MemberStatusMessageAvatar.js +++ b/src/components/views/avatars/MemberStatusMessageAvatar.js @@ -53,7 +53,7 @@ export default class MemberStatusMessageAvatar extends React.Component { if (this.props.member.userId !== MatrixClientPeg.get().getUserId()) { throw new Error("Cannot use MemberStatusMessageAvatar on anyone but the logged in user"); } - if (!SettingsStore.isFeatureEnabled("feature_custom_status")) { + if (!SettingsStore.getValue("feature_custom_status")) { return; } const { user } = this.props.member; @@ -105,7 +105,7 @@ export default class MemberStatusMessageAvatar extends React.Component { resizeMethod={this.props.resizeMethod} />; - if (!SettingsStore.isFeatureEnabled("feature_custom_status")) { + if (!SettingsStore.getValue("feature_custom_status")) { return avatar; } diff --git a/src/components/views/context_menus/MessageContextMenu.js b/src/components/views/context_menus/MessageContextMenu.js index 59e3d4c230..6fa54058a0 100644 --- a/src/components/views/context_menus/MessageContextMenu.js +++ b/src/components/views/context_menus/MessageContextMenu.js @@ -81,7 +81,7 @@ export default createReactClass({ let canPin = room.currentState.mayClientSendStateEvent('m.room.pinned_events', cli); // HACK: Intentionally say we can't pin if the user doesn't want to use the functionality - if (!SettingsStore.isFeatureEnabled("feature_pinning")) canPin = false; + if (!SettingsStore.getValue("feature_pinning")) canPin = false; this.setState({canRedact, canPin}); }, diff --git a/src/components/views/dialogs/RoomSettingsDialog.js b/src/components/views/dialogs/RoomSettingsDialog.js index 7ad1001f75..613708e436 100644 --- a/src/components/views/dialogs/RoomSettingsDialog.js +++ b/src/components/views/dialogs/RoomSettingsDialog.js @@ -87,7 +87,7 @@ export default class RoomSettingsDialog extends React.Component { , )); - if (SettingsStore.isFeatureEnabled("feature_bridge_state")) { + if (SettingsStore.getValue("feature_bridge_state")) { tabs.push(new Tab( ROOM_BRIDGES_TAB, _td("Bridges"), diff --git a/src/components/views/dialogs/UserSettingsDialog.js b/src/components/views/dialogs/UserSettingsDialog.js index 1f1a8d1523..820de713c1 100644 --- a/src/components/views/dialogs/UserSettingsDialog.js +++ b/src/components/views/dialogs/UserSettingsDialog.js @@ -54,7 +54,7 @@ export default class UserSettingsDialog extends React.Component { super(); this.state = { - mjolnirEnabled: SettingsStore.isFeatureEnabled("feature_mjolnir"), + mjolnirEnabled: SettingsStore.getValue("feature_mjolnir"), }; } diff --git a/src/components/views/elements/AppTile.js b/src/components/views/elements/AppTile.js index 75946f19c1..a52dea3e0a 100644 --- a/src/components/views/elements/AppTile.js +++ b/src/components/views/elements/AppTile.js @@ -311,7 +311,7 @@ export default class AppTile extends React.Component { this.props.onEditClick(); } else { // TODO: Open the right manager for the widget - if (SettingsStore.isFeatureEnabled("feature_many_integration_managers")) { + if (SettingsStore.getValue("feature_many_integration_managers")) { IntegrationManagers.sharedInstance().openAll( this.props.room, 'type_' + this.props.app.type, diff --git a/src/components/views/elements/InlineSpinner.js b/src/components/views/elements/InlineSpinner.js index 89b5e6f19d..ce3c738f3b 100644 --- a/src/components/views/elements/InlineSpinner.js +++ b/src/components/views/elements/InlineSpinner.js @@ -28,7 +28,7 @@ export default createReactClass({ const imgClass = this.props.imgClassName || ""; let imageSource; - if (SettingsStore.isFeatureEnabled('feature_new_spinner')) { + if (SettingsStore.getValue('feature_new_spinner')) { imageSource = require("../../../../res/img/spinner.svg"); } else { imageSource = require("../../../../res/img/spinner.gif"); diff --git a/src/components/views/elements/ManageIntegsButton.js b/src/components/views/elements/ManageIntegsButton.js index ac8a98a94a..0990218c65 100644 --- a/src/components/views/elements/ManageIntegsButton.js +++ b/src/components/views/elements/ManageIntegsButton.js @@ -34,7 +34,7 @@ export default class ManageIntegsButton extends React.Component { if (!managers.hasManager()) { managers.openNoManagerDialog(); } else { - if (SettingsStore.isFeatureEnabled("feature_many_integration_managers")) { + if (SettingsStore.getValue("feature_many_integration_managers")) { managers.openAll(this.props.room); } else { managers.getPrimaryManager().open(this.props.room); diff --git a/src/components/views/elements/Spinner.js b/src/components/views/elements/Spinner.js index 033d4d13f4..4d2dcea90a 100644 --- a/src/components/views/elements/Spinner.js +++ b/src/components/views/elements/Spinner.js @@ -22,7 +22,7 @@ import SettingsStore from "../../../settings/SettingsStore"; const Spinner = ({w = 32, h = 32, imgClassName, message}) => { let imageSource; - if (SettingsStore.isFeatureEnabled('feature_new_spinner')) { + if (SettingsStore.getValue('feature_new_spinner')) { imageSource = require("../../../../res/img/spinner.svg"); } else { imageSource = require("../../../../res/img/spinner.gif"); diff --git a/src/components/views/messages/MessageEvent.js b/src/components/views/messages/MessageEvent.js index eb74270762..c3e5af2eb6 100644 --- a/src/components/views/messages/MessageEvent.js +++ b/src/components/views/messages/MessageEvent.js @@ -95,7 +95,7 @@ export default createReactClass({ } } - if (SettingsStore.isFeatureEnabled("feature_mjolnir")) { + if (SettingsStore.getValue("feature_mjolnir")) { const key = `mx_mjolnir_render_${this.props.mxEvent.getRoomId()}__${this.props.mxEvent.getId()}`; const allowRender = localStorage.getItem(key) === "true"; diff --git a/src/components/views/right_panel/UserInfo.js b/src/components/views/right_panel/UserInfo.js index b52792b3d1..71ee86a1ea 100644 --- a/src/components/views/right_panel/UserInfo.js +++ b/src/components/views/right_panel/UserInfo.js @@ -1428,7 +1428,7 @@ const UserInfoHeader = ({onClose, member, e2eStatus}) => { presenceLastActiveAgo = member.user.lastActiveAgo; presenceCurrentlyActive = member.user.currentlyActive; - if (SettingsStore.isFeatureEnabled("feature_custom_status")) { + if (SettingsStore.getValue("feature_custom_status")) { statusMessage = member.user._unstable_statusMessage; } } diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js index 06dfffad30..8cf7a54da2 100644 --- a/src/components/views/rooms/AppsDrawer.js +++ b/src/components/views/rooms/AppsDrawer.js @@ -130,7 +130,7 @@ export default createReactClass({ }, _launchManageIntegrations: function() { - if (SettingsStore.isFeatureEnabled("feature_many_integration_managers")) { + if (SettingsStore.getValue("feature_many_integration_managers")) { IntegrationManagers.sharedInstance().openAll(); } else { IntegrationManagers.sharedInstance().getPrimaryManager().open(this.props.room, 'add_integ'); diff --git a/src/components/views/rooms/AuxPanel.js b/src/components/views/rooms/AuxPanel.js index ad66f0e151..521aeec406 100644 --- a/src/components/views/rooms/AuxPanel.js +++ b/src/components/views/rooms/AuxPanel.js @@ -104,7 +104,7 @@ export default createReactClass({ }, _rateLimitedUpdate: new RateLimitedFunc(function() { - if (SettingsStore.isFeatureEnabled("feature_state_counters")) { + if (SettingsStore.getValue("feature_state_counters")) { this.setState({counters: this._computeCounters()}); } }, 500), @@ -112,7 +112,7 @@ export default createReactClass({ _computeCounters: function() { let counters = []; - if (this.props.room && SettingsStore.isFeatureEnabled("feature_state_counters")) { + if (this.props.room && SettingsStore.getValue("feature_state_counters")) { const stateEvs = this.props.room.currentState.getStateEvents('re.jki.counter'); stateEvs.sort((a, b) => { return a.getStateKey() < b.getStateKey(); @@ -206,7 +206,7 @@ export default createReactClass({ />; let stateViews = null; - if (this.state.counters && SettingsStore.isFeatureEnabled("feature_state_counters")) { + if (this.state.counters && SettingsStore.getValue("feature_state_counters")) { let counters = []; this.state.counters.forEach((counter, idx) => { diff --git a/src/components/views/rooms/MemberTile.js b/src/components/views/rooms/MemberTile.js index 3be378b341..ebb8b7999d 100644 --- a/src/components/views/rooms/MemberTile.js +++ b/src/components/views/rooms/MemberTile.js @@ -50,7 +50,7 @@ export default createReactClass({ componentDidMount() { const cli = MatrixClientPeg.get(); - if (SettingsStore.isFeatureEnabled("feature_custom_status")) { + if (SettingsStore.getValue("feature_custom_status")) { const { user } = this.props.member; if (user) { user.on("User._unstable_statusMessage", this._onStatusMessageCommitted); @@ -209,7 +209,7 @@ export default createReactClass({ const presenceState = member.user ? member.user.presence : null; let statusMessage = null; - if (member.user && SettingsStore.isFeatureEnabled("feature_custom_status")) { + if (member.user && SettingsStore.getValue("feature_custom_status")) { statusMessage = this.state.statusMessage; } diff --git a/src/components/views/rooms/RoomHeader.js b/src/components/views/rooms/RoomHeader.js index 1dedd53d00..fe5b12c1c0 100644 --- a/src/components/views/rooms/RoomHeader.js +++ b/src/components/views/rooms/RoomHeader.js @@ -226,7 +226,7 @@ export default createReactClass({ title={_t("Settings")} />; } - if (this.props.onPinnedClick && SettingsStore.isFeatureEnabled('feature_pinning')) { + if (this.props.onPinnedClick && SettingsStore.getValue('feature_pinning')) { let pinsIndicator = null; if (this._hasUnreadPins()) { pinsIndicator = (
); diff --git a/src/components/views/rooms/Stickerpicker.js b/src/components/views/rooms/Stickerpicker.js index b48790a9cf..dba25a94cf 100644 --- a/src/components/views/rooms/Stickerpicker.js +++ b/src/components/views/rooms/Stickerpicker.js @@ -363,7 +363,7 @@ export default class Stickerpicker extends React.Component { */ _launchManageIntegrations() { // TODO: Open the right integration manager for the widget - if (SettingsStore.isFeatureEnabled("feature_many_integration_managers")) { + if (SettingsStore.getValue("feature_many_integration_managers")) { IntegrationManagers.sharedInstance().openAll( this.props.room, `type_${WidgetType.STICKERPICKER.preferred}`, diff --git a/src/components/views/settings/tabs/user/AppearanceUserSettingsTab.tsx b/src/components/views/settings/tabs/user/AppearanceUserSettingsTab.tsx index c646025bbe..c9ec4a6bc7 100644 --- a/src/components/views/settings/tabs/user/AppearanceUserSettingsTab.tsx +++ b/src/components/views/settings/tabs/user/AppearanceUserSettingsTab.tsx @@ -237,7 +237,7 @@ export default class AppearanceUserSettingsTab extends React.Component; } } diff --git a/src/hooks/useSettings.ts b/src/hooks/useSettings.ts index 4d1e1d5bad..9534fccc4c 100644 --- a/src/hooks/useSettings.ts +++ b/src/hooks/useSettings.ts @@ -36,11 +36,11 @@ export const useSettingValue = (settingName: string, roomId: string = null, excl // Hook to fetch whether a feature is enabled and dynamically update when that changes export const useFeatureEnabled = (featureName: string, roomId: string = null) => { - const [enabled, setEnabled] = useState(SettingsStore.isFeatureEnabled(featureName, roomId)); + const [enabled, setEnabled] = useState(SettingsStore.getValue(featureName, roomId)); useEffect(() => { const ref = SettingsStore.watchSetting(featureName, roomId, () => { - setEnabled(SettingsStore.isFeatureEnabled(featureName, roomId)); + setEnabled(SettingsStore.getValue(featureName, roomId)); }); // clean-up return () => { diff --git a/src/rageshake/submit-rageshake.ts b/src/rageshake/submit-rageshake.ts index 76b0444052..80034691c8 100644 --- a/src/rageshake/submit-rageshake.ts +++ b/src/rageshake/submit-rageshake.ts @@ -143,7 +143,7 @@ export default async function sendBugReport(bugReportEndpoint: string, opts: IOp } // add labs options - const enabledLabs = SettingsStore.getLabsFeatures().filter(f => SettingsStore.isFeatureEnabled(f)); + const enabledLabs = SettingsStore.getLabsFeatures().filter(f => SettingsStore.getValue(f)); if (enabledLabs.length) { body.append('enabled_labs', enabledLabs.join(', ')); } diff --git a/src/settings/SettingsStore.ts b/src/settings/SettingsStore.ts index e64de8af16..6c1f9b8411 100644 --- a/src/settings/SettingsStore.ts +++ b/src/settings/SettingsStore.ts @@ -240,19 +240,6 @@ export default class SettingsStore { return _t(displayName as string); } - /** - * Returns a list of all available labs feature names - * @returns {string[]} The list of available feature names - */ - public static getLabsFeatures(): string[] { - const possibleFeatures = Object.keys(SETTINGS).filter((s) => SettingsStore.isFeature(s)); - - const enableLabs = SdkConfig.get()["enableLabs"]; - if (enableLabs) return possibleFeatures; - - return possibleFeatures.filter((s) => SettingsStore.getFeatureState(s) === "labs"); - } - /** * Determines if a setting is also a feature. * @param {string} settingName The setting to look up. @@ -263,39 +250,6 @@ export default class SettingsStore { return SETTINGS[settingName].isFeature; } - /** - * Determines if a given feature is enabled. The feature given must be a known - * feature. - * @param {string} settingName The name of the setting that is a feature. - * @param {String} roomId The optional room ID to validate in, may be null. - * @return {boolean} True if the feature is enabled, false otherwise - */ - public static isFeatureEnabled(settingName: string, roomId: string = null) { - if (!SettingsStore.isFeature(settingName)) { - throw new Error("Setting " + settingName + " is not a feature"); - } - - return SettingsStore.getValue(settingName, roomId); - } - - /** - * Sets a feature as enabled or disabled on the current device. - * @param {string} settingName The name of the setting. - * @param {boolean} value True to enable the feature, false otherwise. - * @returns {Promise} Resolves when the setting has been set. - */ - public static setFeatureEnabled(settingName: string, value: any): Promise { - // Verify that the setting is actually a setting - if (!SETTINGS[settingName]) { - throw new Error("Setting '" + settingName + "' does not appear to be a setting."); - } - if (!SettingsStore.isFeature(settingName)) { - throw new Error("Setting " + settingName + " is not a feature"); - } - - return SettingsStore.setValue(settingName, null, SettingLevel.DEVICE, value); - } - /** * Gets the value of a setting. The room ID is optional if the setting is not to * be applied to any particular room, otherwise it should be supplied. @@ -346,13 +300,6 @@ export default class SettingsStore { const minIndex = levelOrder.indexOf(level); if (minIndex === -1) throw new Error("Level " + level + " is not prioritized"); - if (SettingsStore.isFeature(settingName)) { - const configValue = SettingsStore.getFeatureState(settingName); - if (configValue === "enable") return true; - if (configValue === "disable") return false; - // else let it fall through the default process - } - const handlers = SettingsStore.getHandlers(settingName); // Check if we need to invert the setting at all. Do this after we get the setting @@ -611,24 +558,6 @@ export default class SettingsStore { return handlers; } - - private static getFeatureState(settingName: string): LabsFeatureState { - const featuresConfig = SdkConfig.get()['features']; - const enableLabs = SdkConfig.get()['enableLabs']; // we'll honour the old flag - - let featureState = enableLabs ? "labs" : "disable"; - if (featuresConfig && featuresConfig[settingName] !== undefined) { - featureState = featuresConfig[settingName]; - } - - const allowedStates = ['enable', 'disable', 'labs']; - if (!allowedStates.includes(featureState)) { - console.warn("Feature state '" + featureState + "' is invalid for " + settingName); - featureState = "disable"; // to prevent accidental features. - } - - return featureState; - } } // For debugging purposes diff --git a/src/stores/CustomRoomTagStore.js b/src/stores/CustomRoomTagStore.js index 1f24dc589a..39177181b4 100644 --- a/src/stores/CustomRoomTagStore.js +++ b/src/stores/CustomRoomTagStore.js @@ -137,7 +137,7 @@ class CustomRoomTagStore extends EventEmitter { } _getUpdatedTags() { - if (!SettingsStore.isFeatureEnabled("feature_custom_tags")) { + if (!SettingsStore.getValue("feature_custom_tags")) { return {}; // none } diff --git a/src/stores/room-list/RoomListStore.ts b/src/stores/room-list/RoomListStore.ts index f4c2d5050e..0f3138fe9e 100644 --- a/src/stores/room-list/RoomListStore.ts +++ b/src/stores/room-list/RoomListStore.ts @@ -136,7 +136,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient { } private async readAndCacheSettingsFromStore() { - const tagsEnabled = SettingsStore.isFeatureEnabled("feature_custom_tags"); + const tagsEnabled = SettingsStore.getValue("feature_custom_tags"); await this.updateState({ tagsEnabled, }); diff --git a/src/stores/room-list/previews/ReactionEventPreview.ts b/src/stores/room-list/previews/ReactionEventPreview.ts index c8f2be9a6e..95cdc01c66 100644 --- a/src/stores/room-list/previews/ReactionEventPreview.ts +++ b/src/stores/room-list/previews/ReactionEventPreview.ts @@ -24,8 +24,8 @@ import DMRoomMap from "../../../utils/DMRoomMap"; export class ReactionEventPreview implements IPreview { public getTextFor(event: MatrixEvent, tagId?: TagID): string { - const showDms = SettingsStore.isFeatureEnabled("feature_roomlist_preview_reactions_dms"); - const showAll = SettingsStore.isFeatureEnabled("feature_roomlist_preview_reactions_all"); + const showDms = SettingsStore.getValue("feature_roomlist_preview_reactions_dms"); + const showAll = SettingsStore.getValue("feature_roomlist_preview_reactions_all"); if (!showAll && (!showDms || DMRoomMap.shared().getUserIdForRoomId(event.getRoomId()))) return null; From eda4e24926c00138db2fbbea850ce90b3875560b Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Mon, 17 Aug 2020 13:19:15 -0600 Subject: [PATCH 219/424] Update LabsUserSettings for new feature behaviour --- .../views/settings/tabs/user/LabsUserSettingsTab.js | 4 ++-- src/settings/SettingsStore.ts | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/components/views/settings/tabs/user/LabsUserSettingsTab.js b/src/components/views/settings/tabs/user/LabsUserSettingsTab.js index 2666671a30..6559448dfe 100644 --- a/src/components/views/settings/tabs/user/LabsUserSettingsTab.js +++ b/src/components/views/settings/tabs/user/LabsUserSettingsTab.js @@ -28,7 +28,7 @@ export class LabsSettingToggle extends React.Component { }; _onChange = async (checked) => { - await SettingsStore.setFeatureEnabled(this.props.featureId, checked); + await SettingsStore.setValue(this.props.featureId, null, SettingLevel.DEVICE, checked); this.forceUpdate(); }; @@ -46,7 +46,7 @@ export default class LabsUserSettingsTab extends React.Component { render() { const SettingsFlag = sdk.getComponent("views.elements.SettingsFlag"); - const flags = SettingsStore.getLabsFeatures().map(f => ); + const flags = SettingsStore.getFeatureSettingNames().map(f => ); return (
{_t("Labs")}
diff --git a/src/settings/SettingsStore.ts b/src/settings/SettingsStore.ts index 6c1f9b8411..ea7d965720 100644 --- a/src/settings/SettingsStore.ts +++ b/src/settings/SettingsStore.ts @@ -124,6 +124,14 @@ export default class SettingsStore { // Counter used for generation of watcher IDs private static watcherCount = 1; + /** + * Gets all the feature-style setting names. + * @returns {string[]} The names of the feature settings. + */ + public static getFeatureSettingNames(): string[] { + return Object.keys(SETTINGS).filter(n => SettingsStore.isFeature(n)); + } + /** * Watches for changes in a particular setting. This is done without any local echo * wrapping and fires whenever a change is detected in a setting's value, at any level. From 71643862c04b93976c3cc77b3d848e2d4fb4b30c Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Mon, 17 Aug 2020 13:24:55 -0600 Subject: [PATCH 220/424] Implement new config style for features --- src/settings/SettingsStore.ts | 2 +- src/settings/handlers/ConfigSettingsHandler.ts | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/settings/SettingsStore.ts b/src/settings/SettingsStore.ts index ea7d965720..dd75f8d1c9 100644 --- a/src/settings/SettingsStore.ts +++ b/src/settings/SettingsStore.ts @@ -53,7 +53,7 @@ const LEVEL_HANDLERS = { [SettingLevel.ROOM_ACCOUNT]: new RoomAccountSettingsHandler(defaultWatchManager), [SettingLevel.ACCOUNT]: new AccountSettingsHandler(defaultWatchManager), [SettingLevel.ROOM]: new RoomSettingsHandler(defaultWatchManager), - [SettingLevel.CONFIG]: new ConfigSettingsHandler(), + [SettingLevel.CONFIG]: new ConfigSettingsHandler(featureNames), [SettingLevel.DEFAULT]: new DefaultSettingsHandler(defaultSettings, invertedDefaultSettings), }; diff --git a/src/settings/handlers/ConfigSettingsHandler.ts b/src/settings/handlers/ConfigSettingsHandler.ts index 3e8b1724c1..791c655a0d 100644 --- a/src/settings/handlers/ConfigSettingsHandler.ts +++ b/src/settings/handlers/ConfigSettingsHandler.ts @@ -24,9 +24,24 @@ import {isNullOrUndefined} from "matrix-js-sdk/src/utils"; * roomId parameter. */ export default class ConfigSettingsHandler extends SettingsHandler { + public constructor(private featureNames: string[]) { + super(); + } + public getValue(settingName: string, roomId: string): any { const config = SdkConfig.get() || {}; + if (this.featureNames.includes(settingName)) { + const labsConfig = config["features"] || {}; + const val = labsConfig[settingName]; + if (isNullOrUndefined(val)) return null; // no definition at this level + if (val === true || val === false) return val; // new style: mapped as a boolean + if (val === "enable") return true; // backwards compat + if (val === "disable") return false; // backwards compat + if (val === "labs") return null; // backwards compat, no override + return null; // fallback in the case of invalid input + } + // Special case themes if (settingName === "theme") { return config["default_theme"]; From 2c0e6c859ab21c0e23b5a5a97cc3d7225819ec58 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Mon, 17 Aug 2020 13:32:33 -0600 Subject: [PATCH 221/424] Update settings documentation for features --- docs/settings.md | 85 ++++++++++++------------------------------------ 1 file changed, 20 insertions(+), 65 deletions(-) diff --git a/docs/settings.md b/docs/settings.md index 46e4a68fdb..40c3e6a7d6 100644 --- a/docs/settings.md +++ b/docs/settings.md @@ -9,13 +9,13 @@ of dealing with the different levels and exposes easy to use getters and setters ## Levels Granular Settings rely on a series of known levels in order to use the correct value for the scenario. These levels, in -order of prioirty, are: +order of priority, are: * `device` - The current user's device * `room-device` - The current user's device, but only when in a specific room * `room-account` - The current user's account, but only when in a specific room * `account` - The current user's account * `room` - A specific room (setting for all members of the room) -* `config` - Values are defined by the `settingDefaults` key (usually) in `config.json` +* `config` - Values are defined by the `settingDefaults` key (usually) in `config.tson` * `default` - The hardcoded default for the settings Individual settings may control which levels are appropriate for them as part of the defaults. This is often to ensure @@ -25,33 +25,10 @@ that room administrators cannot force account-only settings upon participants. ## Settings Settings are the different options a user may set or experience in the application. These are pre-defined in -`src/settings/Settings.js` under the `SETTINGS` constant and have the following minimum requirements: -``` -// The ID is used to reference the setting throughout the application. This must be unique. -"theSettingId": { - // The levels this setting supports is required. In `src/settings/Settings.js` there are various pre-set arrays - // for this option - they should be used where possible to avoid copy/pasting arrays across settings. - supportedLevels: [...], +`src/settings/Settings.ts` under the `SETTINGS` constant, and match the `ISetting` interface as defined there. - // The default for this setting serves two purposes: It provides a value if the setting is not defined at other - // levels, and it serves to demonstrate the expected type to other developers. The value isn't enforced, but it - // should be respected throughout the code. The default may be any data type. - default: false, - - // The display name has two notations: string and object. The object notation allows for different translatable - // strings to be used for different levels, while the string notation represents the string for all levels. - - displayName: _td("Change something"), // effectively `displayName: { "default": _td("Change something") }` - displayName: { - "room": _td("Change something for participants of this room"), - - // Note: the default will be used if the level requested (such as `device`) does not have a string defined here. - "default": _td("Change something"), - } -} -``` - -Settings that support the config level can be set in the config file under the `settingDefaults` key (note that some settings, like the "theme" setting, are special cased in the config file): +Settings that support the config level can be set in the config file under the `settingDefaults` key (note that some +settings, like the "theme" setting, are special cased in the config file): ```json { ... @@ -119,38 +96,29 @@ for you. If a display name cannot be found, it will return `null`. ## Features -Occasionally some parts of the application may be undergoing testing and are not quite production ready. These are -commonly known to be behind a "labs flag". Features behind lab flags must go through the granular settings system, and -look and act very much normal settings. The exception is that they must supply `isFeature: true` as part of the setting -definition and should go through the helper functions on `SettingsStore`. +Feature flags are just like regular settings with some underlying semantics for how they are meant to be used. Usually +a feature flag is used when a portion of the application is under development or not ready for full release yet, such +as new functionality or experimental ideas. In these cases, the feature name *should* be named with the `feature_*` +convention and must be tagged with `isFeature: true` in the setting definition. By doing so, the feature will automatically +appear in the "labs" section of the user's settings. -Although features have levels and a default value, the calculation of those options is blocked by the feature's state. -A feature's state is determined from the `SdkConfig` and is a little complex. If `enableLabs` (a legacy flag) is `true` -then the feature's state is `labs`, if it is `false`, the state is `disable`. If `enableLabs` is not set then the state -is determined from the `features` config, such as in the following: +Features can be controlled at the config level using the following structure: ```json "features": { - "feature_lazyloading": "labs" + "feature_lazyloading": true } ``` -In this example, `feature_lazyloading` is in the `labs` state. It may also be in the `enable` or `disable` state with a -similar approach. If the state is invalid, the feature is in the `disable` state. A feature's levels are only calculated -if it is in the `labs` state, therefore the default only applies in that scenario. If the state is `enable`, the feature -is always-on. -Once a feature flag has served its purpose, it is generally recommended to remove it and the associated feature flag -checks. This would enable the feature implicitly as it is part of the application now. +When `true`, the user will see the feature as enabled. Similarly, when `false` the user will see the feature as disabled. +The user will only be able to change/see these states if `showLabsSettings: true` is in the config. ### Determining if a feature is enabled -A simple call to `SettingsStore.isFeatureEnabled` will tell you if the feature is enabled. This will perform all the -required calculations to determine if the feature is enabled based upon the configuration and user selection. +Call `SettingsStore.getValue()` as you would for any other setting. ### Enabling a feature -Features can only be enabled if the feature is in the `labs` state, otherwise this is a no-op. To find the current set -of features in the `labs` state, call `SettingsStore.getLabsFeatures`. To set the value, call -`SettingsStore.setFeatureEnabled`. +Call `SettingsStore.setValue("feature_name", null, SettingLevel.DEVICE, true)`. ## Setting controllers @@ -162,7 +130,7 @@ kept up to date with the setting where it is otherwise not possible. An example they can only be considered enabled if the platform supports notifications, and enabling notifications requires additional steps to actually enable notifications. -For more information, see `src/settings/controllers/SettingController.js`. +For more information, see `src/settings/controllers/SettingController.ts`. ## Local echo @@ -222,7 +190,7 @@ The `SettingsStore` uses the hardcoded `LEVEL_ORDER` constant to ensure that it The array is checked from left to right, simulating the behaviour of overriding values from the higher levels. Each level should be defined in this array, including `default`. -Handlers (`src/settings/handlers/SettingsHandler.js`) represent a single level and are responsible for getting and +Handlers (`src/settings/handlers/SettingsHandler.ts`) represent a single level and are responsible for getting and setting values at that level. Handlers also provide additional information to the `SettingsStore` such as if the level is supported or if the current user may set values at the level. The `SettingsStore` will use the handler to enforce checks and manipulate settings. Handlers are also responsible for dealing with migration patterns or legacy settings for @@ -230,7 +198,7 @@ their level (for example, a setting being renamed or using a different key from Handlers are provided to the `SettingsStore` via the `LEVEL_HANDLERS` constant. `SettingsStore` will optimize lookups by only considering handlers that are supported on the platform. -Local echo is achieved through `src/settings/handlers/LocalEchoWrapper.js` which acts as a wrapper around a given +Local echo is achieved through `src/settings/handlers/LocalEchoWrapper.ts` which acts as a wrapper around a given handler. This is automatically applied to all defined `LEVEL_HANDLERS` and proxies the calls to the wrapped handler where possible. The echo is achieved by a simple object cache stored within the class itself. The cache is invalidated immediately upon the proxied save call succeeding or failing. @@ -240,20 +208,7 @@ Controllers are notified of changes by the `SettingsStore`, and are given the op ### Features -Features automatically get considered as `disabled` if they are not listed in the `SdkConfig` or `enableLabs` is -false/not set. Features are always checked against the configuration before going through the level order as they have -the option of being forced-on or forced-off for the application. This is done by the `features` section and looks -something like this: - -``` -"features": { - "feature_groups": "enable", - "feature_pinning": "disable", // the default - "feature_presence": "labs" -} -``` - -If `enableLabs` is true in the configuration, the default for features becomes `"labs"`. +See above for feature reference. ### Watchers From 3659115921ade127e46bf9a5f5b5abdd1147dc0e Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Mon, 17 Aug 2020 13:37:16 -0600 Subject: [PATCH 222/424] Followup on some SettingsStore removals --- src/components/views/dialogs/UserSettingsDialog.js | 2 +- src/rageshake/submit-rageshake.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/views/dialogs/UserSettingsDialog.js b/src/components/views/dialogs/UserSettingsDialog.js index 820de713c1..ffde03fe31 100644 --- a/src/components/views/dialogs/UserSettingsDialog.js +++ b/src/components/views/dialogs/UserSettingsDialog.js @@ -116,7 +116,7 @@ export default class UserSettingsDialog extends React.Component { "mx_UserSettingsDialog_securityIcon", , )); - if (SdkConfig.get()['showLabsSettings'] || SettingsStore.getLabsFeatures().length > 0) { + if (SdkConfig.get()['showLabsSettings']) { tabs.push(new Tab( USER_LABS_TAB, _td("Labs"), diff --git a/src/rageshake/submit-rageshake.ts b/src/rageshake/submit-rageshake.ts index 80034691c8..1dcf929e86 100644 --- a/src/rageshake/submit-rageshake.ts +++ b/src/rageshake/submit-rageshake.ts @@ -143,7 +143,7 @@ export default async function sendBugReport(bugReportEndpoint: string, opts: IOp } // add labs options - const enabledLabs = SettingsStore.getLabsFeatures().filter(f => SettingsStore.getValue(f)); + const enabledLabs = SettingsStore.getFeatureSettingNames().filter(f => SettingsStore.getValue(f)); if (enabledLabs.length) { body.append('enabled_labs', enabledLabs.join(', ')); } From 4f851542ac882243b52a383106dc64d588fbd0e8 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Mon, 17 Aug 2020 13:51:41 -0600 Subject: [PATCH 223/424] Implement force state for features like in the proposal --- .../views/settings/tabs/user/LabsUserSettingsTab.js | 3 ++- src/settings/SettingsStore.ts | 7 ++++++- test/end-to-end-tests/riot/config-template/config.json | 5 +---- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/components/views/settings/tabs/user/LabsUserSettingsTab.js b/src/components/views/settings/tabs/user/LabsUserSettingsTab.js index 6559448dfe..eba5c6586d 100644 --- a/src/components/views/settings/tabs/user/LabsUserSettingsTab.js +++ b/src/components/views/settings/tabs/user/LabsUserSettingsTab.js @@ -35,7 +35,8 @@ export class LabsSettingToggle extends React.Component { render() { const label = SettingsStore.getDisplayName(this.props.featureId); const value = SettingsStore.getValue(this.props.featureId); - return ; + const canChange = SettingsStore.canSetValue(this.props.featureId, null, SettingLevel.DEVICE); + return ; } } diff --git a/src/settings/SettingsStore.ts b/src/settings/SettingsStore.ts index dd75f8d1c9..9e146ad799 100644 --- a/src/settings/SettingsStore.ts +++ b/src/settings/SettingsStore.ts @@ -23,7 +23,6 @@ import AccountSettingsHandler from "./handlers/AccountSettingsHandler"; import RoomSettingsHandler from "./handlers/RoomSettingsHandler"; import ConfigSettingsHandler from "./handlers/ConfigSettingsHandler"; import { _t } from '../languageHandler'; -import SdkConfig from "../SdkConfig"; import dis from '../dispatcher/dispatcher'; import { ISetting, SETTINGS } from "./Settings"; import LocalEchoWrapper from "./handlers/LocalEchoWrapper"; @@ -435,6 +434,12 @@ export default class SettingsStore { throw new Error("Setting '" + settingName + "' does not appear to be a setting."); } + // When features are specified in the config.json, we force them as enabled or disabled. + if (SettingsStore.isFeature(settingName)) { + const configVal = SettingsStore.getValueAt(SettingLevel.CONFIG, settingName, roomId, true, true); + if (configVal === true || configVal === false) return false; + } + const handler = SettingsStore.getHandler(settingName, level); if (!handler) return false; return handler.canSetValue(settingName, roomId); diff --git a/test/end-to-end-tests/riot/config-template/config.json b/test/end-to-end-tests/riot/config-template/config.json index d0d3a288e4..b647d0bec8 100644 --- a/test/end-to-end-tests/riot/config-template/config.json +++ b/test/end-to-end-tests/riot/config-template/config.json @@ -9,10 +9,7 @@ "integrations_ui_url": "https://scalar.vector.im/", "integrations_rest_url": "https://scalar.vector.im/api", "bug_report_endpoint_url": "https://riot.im/bugreports/submit", - "features": { - "feature_groups": "labs", - "feature_pinning": "labs" - }, + "showLabsSettings": true, "default_federate": true, "welcomePageUrl": "home.html", "default_theme": "light", From d9e725356127d1ff70df1518a2ea8ee8625b5639 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Mon, 17 Aug 2020 15:37:36 -0600 Subject: [PATCH 224/424] Use matrix-doc for SAS emoji translations This is done through the js-sdk's new SASEmojiV1 class. --- .../views/verification/VerificationShowSas.js | 74 +-------- src/i18n/strings/ar.json | 4 - src/i18n/strings/az.json | 2 - src/i18n/strings/bg.json | 122 +-------------- src/i18n/strings/ca.json | 8 - src/i18n/strings/cs.json | 89 ----------- src/i18n/strings/da.json | 4 - src/i18n/strings/de_DE.json | 143 ----------------- src/i18n/strings/el.json | 7 - src/i18n/strings/en_EN.json | 64 -------- src/i18n/strings/en_US.json | 10 -- src/i18n/strings/eo.json | 145 ------------------ src/i18n/strings/es.json | 107 +------------ src/i18n/strings/et.json | 145 ------------------ src/i18n/strings/eu.json | 97 ------------ src/i18n/strings/fi.json | 124 --------------- src/i18n/strings/fr.json | 145 +----------------- src/i18n/strings/gl.json | 145 ------------------ src/i18n/strings/hi.json | 68 -------- src/i18n/strings/hu.json | 145 ------------------ src/i18n/strings/id.json | 1 - src/i18n/strings/is.json | 3 - src/i18n/strings/it.json | 145 ------------------ src/i18n/strings/ja.json | 14 -- src/i18n/strings/jbo.json | 101 ------------ src/i18n/strings/kab.json | 87 ----------- src/i18n/strings/ko.json | 82 ---------- src/i18n/strings/lt.json | 78 ---------- src/i18n/strings/lv.json | 8 - src/i18n/strings/nb_NO.json | 73 --------- src/i18n/strings/nl.json | 86 ----------- src/i18n/strings/nn.json | 16 -- src/i18n/strings/oc.json | 1 - src/i18n/strings/pl.json | 80 ---------- src/i18n/strings/pt.json | 7 - src/i18n/strings/pt_BR.json | 83 ---------- src/i18n/strings/ru.json | 139 ----------------- src/i18n/strings/sk.json | 127 --------------- src/i18n/strings/sq.json | 144 ----------------- src/i18n/strings/sr.json | 22 --- src/i18n/strings/sv.json | 82 ---------- src/i18n/strings/te.json | 3 - src/i18n/strings/th.json | 1 - src/i18n/strings/tr.json | 104 +------------ src/i18n/strings/uk.json | 79 ---------- src/i18n/strings/vls.json | 75 --------- src/i18n/strings/zh_Hans.json | 96 ------------ src/i18n/strings/zh_Hant.json | 145 ------------------ src/languageHandler.tsx | 14 ++ 49 files changed, 20 insertions(+), 3524 deletions(-) diff --git a/src/components/views/verification/VerificationShowSas.js b/src/components/views/verification/VerificationShowSas.js index 09374b91af..7101b9db91 100644 --- a/src/components/views/verification/VerificationShowSas.js +++ b/src/components/views/verification/VerificationShowSas.js @@ -16,16 +16,12 @@ limitations under the License. import React from 'react'; import PropTypes from 'prop-types'; -import { _t, _td } from '../../../languageHandler'; +import { _t, _tSasV1 } from '../../../languageHandler'; import {PendingActionSpinner} from "../right_panel/EncryptionInfo"; import AccessibleButton from "../elements/AccessibleButton"; import DialogButtons from "../elements/DialogButtons"; import { fixupColorFonts } from '../../../utils/FontManager'; -function capFirst(s) { - return s.charAt(0).toUpperCase() + s.slice(1); -} - export default class VerificationShowSas extends React.Component { static propTypes = { pending: PropTypes.bool, @@ -73,7 +69,7 @@ export default class VerificationShowSas extends React.Component { { emoji[0] }
- {_t(capFirst(emoji[1]))} + {_tSasV1(emoji[0])}
, ); @@ -166,69 +162,3 @@ export default class VerificationShowSas extends React.Component {
; } } - -// List of Emoji strings from the js-sdk, for i18n -_td("Dog"); -_td("Cat"); -_td("Lion"); -_td("Horse"); -_td("Unicorn"); -_td("Pig"); -_td("Elephant"); -_td("Rabbit"); -_td("Panda"); -_td("Rooster"); -_td("Penguin"); -_td("Turtle"); -_td("Fish"); -_td("Octopus"); -_td("Butterfly"); -_td("Flower"); -_td("Tree"); -_td("Cactus"); -_td("Mushroom"); -_td("Globe"); -_td("Moon"); -_td("Cloud"); -_td("Fire"); -_td("Banana"); -_td("Apple"); -_td("Strawberry"); -_td("Corn"); -_td("Pizza"); -_td("Cake"); -_td("Heart"); -_td("Smiley"); -_td("Robot"); -_td("Hat"); -_td("Glasses"); -_td("Spanner"); -_td("Santa"); -_td("Thumbs up"); -_td("Umbrella"); -_td("Hourglass"); -_td("Clock"); -_td("Gift"); -_td("Light bulb"); -_td("Book"); -_td("Pencil"); -_td("Paperclip"); -_td("Scissors"); -_td("Lock"); -_td("Key"); -_td("Hammer"); -_td("Telephone"); -_td("Flag"); -_td("Train"); -_td("Bicycle"); -_td("Aeroplane"); -_td("Rocket"); -_td("Trophy"); -_td("Ball"); -_td("Guitar"); -_td("Trumpet"); -_td("Bell"); -_td("Anchor"); -_td("Headphones"); -_td("Folder"); -_td("Pin"); diff --git a/src/i18n/strings/ar.json b/src/i18n/strings/ar.json index a6a52b147d..e541fb8fa6 100644 --- a/src/i18n/strings/ar.json +++ b/src/i18n/strings/ar.json @@ -155,10 +155,6 @@ "Unable to enable Notifications": "غير قادر على تفعيل التنبيهات", "This email address was not found": "لم يتم العثور على البريد الالكتروني هذا", "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "يبدو ان بريدك الالكتروني غير مرتبط بمعرف Matrix على هذا السيرفر.", - "Use your account to sign in to the latest version": "استخدم حسابك للدخول الى الاصدار الاخير", - "We’re excited to announce Riot is now Element": "نحن سعيدون باعلان ان Riot اصبح الان Element", - "Riot is now Element!": "Riot اصبح الان Element!", - "Learn More": "تعلم المزيد", "Sign In or Create Account": "قم بتسجيل الدخول او انشاء حساب جديد", "Use your account or create a new one to continue.": "استخدم حسابك او قم بانشاء حساب اخر للاستمرار.", "Create Account": "انشاء حساب", diff --git a/src/i18n/strings/az.json b/src/i18n/strings/az.json index 5a8dec76f0..91e52c03ad 100644 --- a/src/i18n/strings/az.json +++ b/src/i18n/strings/az.json @@ -220,13 +220,11 @@ "Reject invitation": "Dəvəti rədd etmək", "Are you sure you want to reject the invitation?": "Siz əminsiniz ki, siz dəvəti rədd etmək istəyirsiniz?", "Name": "Ad", - "There are no visible files in this room": "Bu otaqda görülən fayl yoxdur", "Featured Users:": "Seçilmiş istifadəçilər:", "Failed to reject invitation": "Dəvəti rədd etməyi bacarmadı", "Failed to leave room": "Otaqdan çıxmağı bacarmadı", "For security, this session has been signed out. Please sign in again.": "Təhlükəsizliyin təmin olunması üçün sizin sessiyanız başa çatmışdır idi. Zəhmət olmasa, yenidən girin.", "Logout": "Çıxmaq", - "You have no visible notifications": "Görülən xəbərdarlıq yoxdur", "Files": "Fayllar", "Notifications": "Xəbərdarlıqlar", "Connectivity to the server has been lost.": "Serverlə əlaqə itirilmişdir.", diff --git a/src/i18n/strings/bg.json b/src/i18n/strings/bg.json index 32652669af..fa07ed3781 100644 --- a/src/i18n/strings/bg.json +++ b/src/i18n/strings/bg.json @@ -179,11 +179,6 @@ "Enable URL previews for this room (only affects you)": "Включване на URL прегледи за тази стая (засяга само Вас)", "Enable URL previews by default for participants in this room": "Включване по подразбиране на URL прегледи за участници в тази стая", "Room Colour": "Цвят на стая", - "Active call (%(roomName)s)": "Активен разговор (%(roomName)s)", - "unknown caller": "повикване от непознат", - "Incoming voice call from %(name)s": "Входящо гласово повикване от %(name)s", - "Incoming video call from %(name)s": "Входящо видео повикване от %(name)s", - "Incoming call from %(name)s": "Входящо повикване от %(name)s", "Decline": "Откажи", "Accept": "Приеми", "Incorrect verification code": "Неправилен код за потвърждение", @@ -279,7 +274,6 @@ "Settings": "Настройки", "Forget room": "Забрави стаята", "Failed to set direct chat tag": "Неуспешно означаване на директен чат", - "Community Invites": "Покани за общност", "Invites": "Покани", "Favourites": "Любими", "Low priority": "Нисък приоритет", @@ -501,7 +495,6 @@ "Name": "Име", "You must register to use this functionality": "Трябва да се регистрирате, за да използвате тази функционалност", "You must join the room to see its files": "Трябва да се присъедините към стаята, за да видите файловете, които съдържа", - "There are no visible files in this room": "Няма видими файлове в тази стая", "Which rooms would you like to add to this summary?": "Кои стаи бихте искали да добавите в това обобщение?", "Add to summary": "Добави в обобщението", "Failed to add the following rooms to the summary of %(groupId)s:": "Неуспешно добавяне на следните стаи в обобщението на %(groupId)s:", @@ -534,7 +527,6 @@ "Logout": "Излез", "Sign out": "Изход", "Error whilst fetching joined communities": "Грешка при извличането на общности, към които сте присъединени", - "You have no visible notifications": "Нямате видими известия", "%(count)s of your messages have not been sent.|other": "Някои от Вашите съобщение не бяха изпратени.", "%(count)s of your messages have not been sent.|one": "Вашето съобщение не беше изпратено.", "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.|other": "Изпрати всички отново или откажи всички сега. Също така може да изберете индивидуални съобщения, които да изпратите отново или да откажете.", @@ -817,7 +809,6 @@ "Share Community": "Споделяне на общност", "Share Room Message": "Споделяне на съобщение от стая", "Link to selected message": "Създай връзка към избраното съобщение", - "COPY": "КОПИРАЙ", "Share Message": "Сподели съобщението", "No Audio Outputs detected": "Не са открити аудио изходи", "Audio Output": "Аудио изходи", @@ -1056,8 +1047,6 @@ "Go back": "Върни се", "Update status": "Обнови статуса", "Set status": "Настрой статус", - "Your Modular server": "Вашият Modular сървър", - "Enter the location of your Modular homeserver. It may use your own domain name or be a subdomain of modular.im.": "Въведете адреса на вашият Modular сървър. Той представлява или вашето собствено домейн име или поддомейн на modular.im.", "Server Name": "Име на сървър", "The username field must not be blank.": "Потребителското име не може да бъде празно.", "Username": "Потребителско име", @@ -1096,68 +1085,6 @@ "Group & filter rooms by custom tags (refresh to apply changes)": "Групирай & филтрирай стаи по собствен етикет (презаредете за да влезе в сила)", "Verify this user by confirming the following emoji appear on their screen.": "Потвърдете този потребител, като установите че следното емоджи се вижда на екрана им.", "Unable to find a supported verification method.": "Не може да бъде намерен поддържан метод за потвърждение.", - "Dog": "Куче", - "Cat": "Котка", - "Lion": "Лъв", - "Horse": "Кон", - "Unicorn": "Еднорог", - "Pig": "Прасе", - "Elephant": "Слон", - "Rabbit": "Заек", - "Panda": "Панда", - "Rooster": "Петел", - "Penguin": "Пингвин", - "Turtle": "Костенурка", - "Fish": "Риба", - "Octopus": "Октопод", - "Butterfly": "Пеперуда", - "Flower": "Цвете", - "Tree": "Дърво", - "Cactus": "Кактус", - "Mushroom": "Гъба", - "Globe": "Земя", - "Moon": "Луна", - "Cloud": "Облак", - "Fire": "Огън", - "Banana": "Банан", - "Apple": "Ябълка", - "Strawberry": "Ягода", - "Corn": "Царевица", - "Pizza": "Пица", - "Cake": "Торта", - "Heart": "Сърце", - "Smiley": "Усмивка", - "Robot": "Робот", - "Hat": "Шапка", - "Glasses": "Очила", - "Spanner": "Гаечен ключ", - "Santa": "Дядо Коледа", - "Thumbs up": "Палец нагоре", - "Umbrella": "Чадър", - "Hourglass": "Пясъчен часовник", - "Clock": "Часовник", - "Gift": "Подарък", - "Light bulb": "Лампа", - "Book": "Книга", - "Pencil": "Молив", - "Paperclip": "Кламер", - "Key": "Ключ", - "Hammer": "Чук", - "Telephone": "Телефон", - "Flag": "Флаг", - "Train": "Влак", - "Bicycle": "Колело", - "Aeroplane": "Самолет", - "Rocket": "Ракета", - "Trophy": "Трофей", - "Ball": "Топка", - "Guitar": "Китара", - "Trumpet": "Тромпет", - "Bell": "Звънец", - "Anchor": "Котва", - "Headphones": "Слушалки", - "Folder": "Папка", - "Pin": "Кабърче", "This homeserver would like to make sure you are not a robot.": "Сървърът иска да потвърди, че не сте робот.", "Change": "Промени", "Couldn't load page": "Страницата не можа да бъде заредена", @@ -1194,7 +1121,6 @@ "%(senderDisplayName)s disabled flair for %(groups)s in this room.": "%(senderDisplayName)s изключи показването на значки в тази стая за следните групи: %(groups)s.", "%(senderDisplayName)s enabled flair for %(newGroups)s and disabled flair for %(oldGroups)s in this room.": "%(senderDisplayName)s включи показването на значки в тази стая за %(newGroups)s и изключи показването на значки за %(oldGroups)s.", "Show read receipts sent by other users": "Показвай индикация за прочитане от други потребители", - "Scissors": "Ножици", "Error updating main address": "Грешка при обновяване на основния адрес", "There was an error updating the room's main address. It may not be allowed by the server or a temporary failure occurred.": "Случи се грешка при обновяването на основния адрес за стаята. Може да не е позволено от сървъра, или да се е случила друга временна грешка.", "Error updating flair": "Грешка при обновяването на значка", @@ -1346,7 +1272,6 @@ "Some characters not allowed": "Някои символи не са позволени", "Create your Matrix account on ": "Създайте Matrix акаунт в ", "Add room": "Добави стая", - "Your profile": "Вашият профил", "Your Matrix account on ": "Вашият Matrix акаунт в ", "Failed to get autodiscovery configuration from server": "Неуспешно автоматично откриване на конфигурацията за сървъра", "Invalid base_url for m.homeserver": "Невалиден base_url в m.homeserver", @@ -1501,13 +1426,10 @@ "Reporting this message will send its unique 'event ID' to the administrator of your homeserver. If messages in this room are encrypted, your homeserver administrator will not be able to read the message text or view any files or images.": "Докладването на съобщението ще изпрати уникалният номер на събитието (event ID) до администратора на сървъра. Ако съобщенията в стаята са шифровани, администратора няма да може да прочете текста им или да види снимките или файловете.", "Send report": "Изпрати доклад", "Report Content": "Докладвай съдържание", - "Filter": "Филтрирай", - "Filter rooms…": "Филтрирай стаите…", "Preview": "Прегледай", "View": "Виж", "Find a room…": "Намери стая…", "Find a room… (e.g. %(exampleRoom)s)": "Намери стая... (напр. %(exampleRoom)s)", - "Explore": "Открий стаи", "If you can't find the room you're looking for, ask for an invite or Create a new room.": "Ако не намирате търсената стая, попитайте за покана или Създайте нова стая.", "Explore rooms": "Открий стаи", "Verify the link in your inbox": "Потвърдете линка във вашата пощенска кутия", @@ -1543,12 +1465,10 @@ "You are about to remove %(count)s messages by %(user)s. This cannot be undone. Do you wish to continue?|one": "На път сте да премахнете 1 съобщение от %(user)s. Това е необратимо. Искате ли да продължите?", "Remove %(count)s messages|one": "Премахни 1 съобщение", "Room %(name)s": "Стая %(name)s", - "Recent rooms": "Скорошни стаи", "%(count)s unread messages including mentions.|other": "%(count)s непрочетени съобщения, включително споменавания.", "%(count)s unread messages including mentions.|one": "1 непрочетено споменаване.", "%(count)s unread messages.|other": "%(count)s непрочетени съобщения.", "%(count)s unread messages.|one": "1 непрочетено съобщение.", - "Unread mentions.": "Непрочетени споменавания.", "Unread messages.": "Непрочетени съобщения.", "Failed to deactivate user": "Неуспешно деактивиране на потребител", "This client does not support end-to-end encryption.": "Този клиент не поддържа шифроване от край до край.", @@ -1746,7 +1666,6 @@ "Whether you're using %(brand)s on a device where touch is the primary input mechanism": "Дали използвате %(brand)s на устройство, на което основния механизъм за достъп е докосване", "Whether you're using %(brand)s as an installed Progressive Web App": "Дали използвате %(brand)s като инсталирано прогресивно уеб приложение (PWA)", "Your user agent": "Информация за браузъра ви", - "If you cancel now, you won't complete verifying the other user.": "Ако се откажете сега, няма да завършите верификацията на другия потребител.", "Use Single Sign On to continue": "Използвайте Single Sign On за да продължите", "Confirm adding this email address by using Single Sign On to prove your identity.": "Потвърдете добавянето на този имейл адрес като потвърдите идентичността си чрез Single Sign On.", "Single Sign On": "Single Sign On", @@ -1755,7 +1674,6 @@ "Confirm adding this phone number by using Single Sign On to prove your identity.": "Потвърдете добавянето на този телефонен номер като докажете идентичността си чрез използване на Single Sign On.", "Confirm adding phone number": "Потвърдете добавянето на телефонен номер", "Click the button below to confirm adding this phone number.": "Кликнете бутона по-долу за да потвърдите добавянето на телефонния номер.", - "If you cancel now, you won't complete verifying your other session.": "Ако се откажете сега, няма да завършите потвърждаването на другата ви сесия.", "Cancel entering passphrase?": "Откажете въвеждането на парола?", "Setting up keys": "Настройка на ключове", "Verify this session": "Потвърди тази сесия", @@ -1810,7 +1728,6 @@ "Enable message search in encrypted rooms": "Включи търсенето на съобщения в шифровани стаи", "How fast should messages be downloaded.": "Колко бързо да се изтеглят съобщенията.", "Manually verify all remote sessions": "Ръчно потвърждаване на всички отдалечени сесии", - "If you cancel now, you won't complete your operation.": "Ако се откажете сега, няма да завършите операцията.", "Review where you’re logged in": "Прегледайте откъде сте влезли в профила си", "New login. Was this you?": "Нов вход. Вие ли бяхте това?", "%(name)s is requesting verification": "%(name)s изпрати запитване за верификация", @@ -1833,7 +1750,6 @@ "They match": "Съвпадат", "They don't match": "Не съвпадат", "To be secure, do this in person or use a trusted way to communicate.": "За да е по-сигурно, направете го на живо или използвайте доверен начин за комуникация.", - "Lock": "Заключи", "Later": "По-късно", "Review": "Прегледай", "Verify yourself & others to keep your chats safe": "Потвърдете себе си и останалите за да запазите чатовете си сигурни", @@ -1924,7 +1840,6 @@ "Re-request encryption keys from your other sessions.": "Поискай отново ключове за шифроване от другите сесии.", "Encrypted by an unverified session": "Шифровано от неверифицирана сесия", "Encrypted by a deleted session": "Шифровано от изтрита сесия", - "Invite only": "Само с покани", "Scroll to most recent messages": "Отиди до най-скорошните съобщения", "Send a reply…": "Изпрати отговор…", "Send a message…": "Изпрати съобщение…", @@ -2039,7 +1954,6 @@ "Invite someone using their name, username (like ), email address or share this room.": "Поканете някой посредством име, потребителско име (като ), имейл адрес или като споделите тази стая.", "Opens chat with the given user": "Отваря чат с дадения потребител", "Sends a message to the given user": "Изпраща съобщение до дадения потребител", - "Font scaling": "Мащабиране на шрифта", "Font size": "Размер на шрифта", "IRC display name width": "Ширина на IRC името", "Waiting for your other session to verify…": "Изчакване другата сесията да потвърди…", @@ -2047,7 +1961,6 @@ "Custom font size can only be between %(min)s pt and %(max)s pt": "Собствения размер на шрифта може да бъде единствено между %(min)s pt и %(max)s pt", "Use between %(min)s pt and %(max)s pt": "Изберете между %(min)s pt и %(max)s pt", "Appearance": "Изглед", - "Create room": "Създай стая", "You've successfully verified your device!": "Успешно потвърдихте устройството си!", "Message deleted": "Съобщението беше изтрито", "Message deleted by %(name)s": "Съобщението беше изтрито от %(name)s", @@ -2244,12 +2157,10 @@ "Sort by": "Подреди по", "Activity": "Активност", "A-Z": "Азбучен ред", - "Unread rooms": "Непрочетени стаи", "Show %(count)s more|other": "Покажи още %(count)s", "Show %(count)s more|one": "Покажи още %(count)s", "Light": "Светла", "Dark": "Тъмна", - "Use the improved room list (will refresh to apply changes)": "Използвай подобрения списък със стаи (ще презареди за да се приложи промяната)", "Use custom size": "Използвай собствен размер", "Use a system font": "Използвай системния шрифт", "System font name": "Име на системния шрифт", @@ -2260,18 +2171,11 @@ "Customise your appearance": "Настройте изгледа", "Appearance Settings only affect this %(brand)s session.": "Настройките на изгледа влияят само на тази %(brand)s сесия.", "The authenticity of this encrypted message can't be guaranteed on this device.": "Автентичността на това шифровано съобщение не може да бъде гарантирана на това устройство.", - "Always show first": "Винаги показвай първо", - "Show": "Покажи", - "Message preview": "Преглед на съобщението", "List options": "Опции на списъка", "Leave Room": "Напусни стаята", "Room options": "Настройки на стаята", "Use Recovery Key or Passphrase": "Използвай ключ за възстановяване или парола", "Use Recovery Key": "Използвай ключ за възстановяване", - "Use your account to sign in to the latest version": "Използвайте профила си за да влезете в последната версия", - "We’re excited to announce Riot is now Element": "Развълнувани сме да обявим, че Riot вече е Element", - "Riot is now Element!": "Riot вече е Element!", - "Learn More": "Научи повече", "You joined the call": "Присъединихте се към разговор", "%(senderName)s joined the call": "%(senderName)s се присъедини към разговор", "Call in progress": "Тече разговор", @@ -2281,29 +2185,5 @@ "You started a call": "Започнахте разговор", "%(senderName)s started a call": "%(senderName)s започна разговор", "Waiting for answer": "Изчакване на отговор", - "%(senderName)s is calling": "%(senderName)s се обажда", - "You created the room": "Създадохте стаята", - "%(senderName)s created the room": "%(senderName)s създаде стаята", - "You made the chat encrypted": "Направихте чата шифрован", - "%(senderName)s made the chat encrypted": "%(senderName)s направи чата шифрован", - "You made history visible to new members": "Направихте историята видима за нови членове", - "%(senderName)s made history visible to new members": "%(senderName)s направи историята видима за нови членове", - "You made history visible to anyone": "Направихте историята видима за всички", - "%(senderName)s made history visible to anyone": "%(senderName)s направи историята видима за всички", - "You made history visible to future members": "Направихте историята видима за бъдещи членове", - "%(senderName)s made history visible to future members": "%(senderName)s направи историята видима за бъдещи членове", - "You were invited": "Бяхте поканени", - "%(targetName)s was invited": "%(targetName)s беше поканен", - "You left": "Напуснахте", - "%(targetName)s left": "%(targetName)s напусна", - "You were kicked (%(reason)s)": "Бяхте изгонени (%(reason)s)", - "%(targetName)s was kicked (%(reason)s)": "%(targetName)s беше изгонен(а) (%(reason)s)", - "You were kicked": "Бяхте изгонени", - "%(targetName)s was kicked": "%(targetName)s беше изгонен(а)", - "You rejected the invite": "Отхвърлихте поканата", - "%(targetName)s rejected the invite": "%(targetName)s отхвърли поканата", - "You were uninvited": "Поканата към вас беше премахната", - "%(targetName)s was uninvited": "Поканата към %(targetName)s беше премахната", - "You were banned (%(reason)s)": "Бяхте блокирани (%(reason)s)", - "%(targetName)s was banned (%(reason)s)": "%(targetName)s беше блокиран(а) (%(reason)s)" + "%(senderName)s is calling": "%(senderName)s се обажда" } diff --git a/src/i18n/strings/ca.json b/src/i18n/strings/ca.json index 6b954da9f2..cb5a4f7f64 100644 --- a/src/i18n/strings/ca.json +++ b/src/i18n/strings/ca.json @@ -175,11 +175,6 @@ "Enable URL previews for this room (only affects you)": "Activa la vista prèvia d'URL d'aquesta sala (no afecta altres usuaris)", "Enable URL previews by default for participants in this room": "Activa per defecte la vista prèvia d'URL per als participants d'aquesta sala", "Room Colour": "Color de la sala", - "Active call (%(roomName)s)": "Trucada activa (%(roomName)s)", - "unknown caller": "trucada d'un desconegut", - "Incoming voice call from %(name)s": "Trucada de veu entrant de %(name)s", - "Incoming video call from %(name)s": "Trucada de vídeo entrant de %(name)s", - "Incoming call from %(name)s": "Trucada entrant de %(name)s", "Decline": "Declina", "Accept": "Accepta", "Incorrect verification code": "El codi de verificació és incorrecte", @@ -279,7 +274,6 @@ "Join Room": "Entra a la sala", "Upload avatar": "Puja l'avatar", "Forget room": "Oblida la sala", - "Community Invites": "Invitacions de les comunitats", "Invites": "Invitacions", "Favourites": "Preferits", "Low priority": "Baixa prioritat", @@ -477,7 +471,6 @@ "Name": "Nom", "You must register to use this functionality": "Heu de register per utilitzar aquesta funcionalitat", "You must join the room to see its files": "Heu d'entrar a la sala per poder-ne veure els fitxers", - "There are no visible files in this room": "No hi ha fitxers visibles en aquesta sala", "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

Aquest és l'HTML per a la pàgina de la vostra comunitat

\n

\n Utilitzeu la descripció llarga per a presentar la comunitat a nous membres,\n o per afegir-hi enlaços d'interès. \n

\n

\n També podeu utilitzar etiquetes 'img'.\n

\n", "Add rooms to the community summary": "Afegiu sales al resum de la comunitat", "Which rooms would you like to add to this summary?": "Quines sales voleu afegir a aquest resum?", @@ -525,7 +518,6 @@ "Error whilst fetching joined communities": "S'ha produït un error en buscar comunitats unides", "Create a new community": "Crea una comunitat nova", "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Crea una comunitat per agrupar usuaris i sales! Creeu una pàgina d'inici personalitzada per definir el vostre espai a l'univers Matrix.", - "You have no visible notifications": "No teniu cap notificació visible", "%(count)s of your messages have not been sent.|other": "Alguns dels vostres missatges no s'han enviat.", "%(count)s of your messages have not been sent.|one": "El vostre missatge no s'ha enviat.", "Warning": "Avís", diff --git a/src/i18n/strings/cs.json b/src/i18n/strings/cs.json index 7f799072cb..973ac29ea3 100644 --- a/src/i18n/strings/cs.json +++ b/src/i18n/strings/cs.json @@ -33,7 +33,6 @@ "Oct": "Říj", "Nov": "Lis", "Dec": "Pro", - "There are no visible files in this room": "V této místnosti nejsou žádné viditelné soubory", "Create new room": "Založit novou místnost", "Room directory": "Adresář místností", "Start chat": "Zahájit konverzaci", @@ -150,9 +149,6 @@ "I have verified my email address": "Ověřil/a jsem svou e-mailovou adresu", "Import": "Importovat", "Import E2E room keys": "Importovat end-to-end klíče místností", - "Incoming call from %(name)s": "Příchozí hovor od %(name)s", - "Incoming video call from %(name)s": "Příchozí videohovor od %(name)s", - "Incoming voice call from %(name)s": "Příchozí hlasový hovor od %(name)s", "Incorrect username and/or password.": "Nesprávné uživatelské jméno nebo heslo.", "Incorrect verification code": "Nesprávný ověřovací kód", "Invalid Email Address": "Neplatná e-mailová adresa", @@ -236,7 +232,6 @@ "Offline": "Offline", "Check for update": "Zkontrolovat aktualizace", "%(targetName)s accepted the invitation for %(displayName)s.": "Uživatel %(targetName)s přijal pozvání pro %(displayName)s.", - "Active call (%(roomName)s)": "Probíhající hovor (%(roomName)s)", "%(senderName)s banned %(targetName)s.": "Uživatel %(senderName)s vykázal uživatele %(targetName)s.", "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Nelze se připojit k domovskému serveru přes HTTP, pokud je v adresním řádku HTTPS. Buď použijte HTTPS, nebo povolte nezabezpečené skripty.", "Click here to fix": "Pro opravu klepněte zde", @@ -261,7 +256,6 @@ "%(senderName)s unbanned %(targetName)s.": "Uživatel %(senderName)s přijal zpět uživatele %(targetName)s.", "Unable to capture screen": "Nepodařilo se zachytit obrazovku", "Unable to enable Notifications": "Nepodařilo se povolit oznámení", - "unknown caller": "neznámý volající", "Unmute": "Povolit", "Unnamed Room": "Nepojmenovaná místnost", "Uploading %(filename)s and %(count)s others|zero": "Nahrávání souboru %(filename)s", @@ -391,7 +385,6 @@ "Kick this user?": "Vykopnout tohoto uživatele?", "Unban this user?": "Přijmout zpět tohoto uživatele?", "Ban this user?": "Vykázat tohoto uživatele?", - "Community Invites": "Pozvánky do skupin", "Members only (since the point in time of selecting this option)": "Pouze členové (od chvíle vybrání této volby)", "Members only (since they were invited)": "Pouze členové (od chvíle jejich pozvání)", "Members only (since they joined)": "Pouze členové (od chvíle jejich vstupu)", @@ -577,7 +570,6 @@ "Error whilst fetching joined communities": "Při získávání vašich skupin se vyskytla chyba", "Create a new community": "Vytvořit novou skupinu", "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Vytvořte skupinu s cílem seskupit uživatele a místnosti! Vytvořte si vlastní domovskou stránku a vymezte tak svůj prostor ve světe Matrix.", - "You have no visible notifications": "Nejsou dostupná žádná oznámení", "Connectivity to the server has been lost.": "Spojení se serverem bylo přerušeno.", "Sent messages will be stored until your connection has returned.": "Odeslané zprávy zůstanou uložené, dokud se spojení znovu neobnoví.", "Active call": "Aktivní hovor", @@ -817,7 +809,6 @@ "Share Community": "Sdílet skupinu", "Share Room Message": "Sdílet zprávu z místnosti", "Link to selected message": "Odkaz na vybranou zprávu", - "COPY": "Kopírovat", "Share Message": "Sdílet", "Collapse Reply Thread": "Sbalit vlákno odpovědi", "Unable to join community": "Není možné vstoupit do skupiny", @@ -1000,68 +991,6 @@ "Verify this user by confirming the following emoji appear on their screen.": "Ověřte uživatele zkontrolováním, že se mu na obrazovce objevily stejné emoji.", "Verify this user by confirming the following number appears on their screen.": "Ověřte uživatele zkontrolováním, že se na obrazovce objevila stejná čísla.", "Unable to find a supported verification method.": "Nepovedlo se nám najít podporovanou metodu ověření.", - "Dog": "Pes", - "Cat": "Kočka", - "Lion": "Lev", - "Horse": "Kůň", - "Unicorn": "Jednorožec", - "Pig": "Prase", - "Elephant": "Slon", - "Rabbit": "Králík", - "Panda": "Panda", - "Rooster": "Kohout", - "Penguin": "Tučňák", - "Turtle": "Želva", - "Fish": "Ryba", - "Octopus": "Chobotnice", - "Butterfly": "Motýl", - "Flower": "Květina", - "Tree": "Strom", - "Cactus": "Kaktus", - "Mushroom": "Houba", - "Globe": "Zeměkoule", - "Moon": "Měsíc", - "Cloud": "Mrak", - "Fire": "Oheň", - "Banana": "Banán", - "Apple": "Jablko", - "Strawberry": "Jahoda", - "Corn": "Kukuřice", - "Pizza": "Pizza", - "Cake": "Dort", - "Heart": "Srdce", - "Smiley": "Smajlík", - "Robot": "Robot", - "Hat": "Klobouk", - "Glasses": "Brýle", - "Spanner": "Maticový klíč", - "Santa": "Santa Klaus", - "Thumbs up": "Palec nahoru", - "Umbrella": "Deštník", - "Hourglass": "Přesýpací hodiny", - "Clock": "Hodiny", - "Gift": "Dárek", - "Light bulb": "Žárovka", - "Book": "Kniha", - "Pencil": "Tužka", - "Paperclip": "Sponka", - "Key": "Klíč", - "Hammer": "Kladivo", - "Telephone": "Telefon", - "Flag": "Vlajka", - "Train": "Vlak", - "Bicycle": "Jízdní kolo", - "Aeroplane": "Letadlo", - "Rocket": "Raketa", - "Trophy": "Trofej", - "Ball": "Míč", - "Guitar": "Kytara", - "Trumpet": "Trumpeta", - "Bell": "Zvon", - "Anchor": "Kotva", - "Headphones": "Sluchátka", - "Folder": "Desky", - "Pin": "Připínáček", "Yes": "Ano", "No": "Ne", "Never lose encrypted messages": "Nikdy nepřijdete o šifrované zprávy", @@ -1149,7 +1078,6 @@ "This homeserver would like to make sure you are not a robot.": "Domovský server se potřebuje přesvědčit, že nejste robot.", "Please review and accept all of the homeserver's policies": "Pročtěte si a odsouhlaste prosím všechna pravidla domovského serveru", "Please review and accept the policies of this homeserver:": "Pročtěte si a odsouhlaste prosím pravidla domovského serveru:", - "Enter the location of your Modular homeserver. It may use your own domain name or be a subdomain of modular.im.": "Zadejte adresu serveru Modular. Můžete použít svou vlastní doménu a nebo subdoménu modular.im.", "Homeserver URL": "URL domovského serveru", "This homeserver does not support communities": "Tento domovský server nepodporuje skupiny", "Invalid homeserver discovery response": "Neplatná odpověd při hledání domovského serveru", @@ -1157,7 +1085,6 @@ "Registration has been disabled on this homeserver.": "Tento domovský server nepovoluje registraci.", "Identity Server URL": "URL serveru identity", "Invalid identity server discovery response": "Neplatná odpověď při hledání serveru identity", - "Your Modular server": "Váš server Modular", "Server Name": "Název serveru", "The username field must not be blank.": "Je potřeba vyplnit uživatelské jméno.", "Username": "Uživatelské jméno", @@ -1188,7 +1115,6 @@ "User %(userId)s is already in the room": "Uživatel %(userId)s už je v této místnosti", "The user must be unbanned before they can be invited.": "Uživatel je vykázán, nelze ho pozvat.", "Show read receipts sent by other users": "Zobrazovat potvrzení o přijetí", - "Scissors": "Nůžky", "Accept all %(invitedRooms)s invites": "Přijmout pozvání do všech těchto místností: %(invitedRooms)s", "Change room avatar": "Změnit avatar místnosti", "Change room name": "Změnit název místnosti", @@ -1333,7 +1259,6 @@ "Add room": "Přidat místnost", "You have %(count)s unread notifications in a prior version of this room.|other": "Máte %(count)s nepřečtených oznámení v předchozí verzi této místnosti.", "You have %(count)s unread notifications in a prior version of this room.|one": "Máte jedno nepřečtené oznámení v předchozí verzi této místnosti.", - "Your profile": "Váš profil", "Your Matrix account on ": "Váš účet Matrix na serveru ", "Failed to get autodiscovery configuration from server": "Nepovedlo se automaticky načíst konfiguraci ze serveru", "Invalid base_url for m.homeserver": "Neplatná base_url pro m.homeserver", @@ -1487,7 +1412,6 @@ "Strikethrough": "Přešktnutě", "Code block": "Blok kódu", "Room %(name)s": "Místnost %(name)s", - "Recent rooms": "Nedávné místnosti", "Loading room preview": "Načítání náhdledu místnosti", "An error (%(errcode)s) was returned while trying to validate your invite. You could try to pass this information on to a room admin.": "Při ověřování pozvánky došlo k chybě (%(errcode)s). Předejte tuto informaci správci místnosti.", "This invite to %(roomName)s was sent to %(email)s which is not associated with your account": "Pozvánka do místnosti %(roomName)s byla poslána na adresu %(email)s, která není k tomuto účtu přidána", @@ -1499,7 +1423,6 @@ "%(count)s unread messages including mentions.|one": "Nepřečtená zmínka.", "%(count)s unread messages.|other": "%(count)s nepřečtených zpráv.", "%(count)s unread messages.|one": "Nepřečtená zpráva.", - "Unread mentions.": "Nepřečtená zmínka.", "Unread messages.": "Nepřečtené zprávy.", "Failed to deactivate user": "Deaktivace uživatele se nezdařila", "This client does not support end-to-end encryption.": "Tento klient nepodporuje end-to-end šifrování.", @@ -1552,9 +1475,6 @@ "Set an email for account recovery. Use email to optionally be discoverable by existing contacts.": "Nastavte si e-mailovou adresu pro obnovení hesla. E-mail můžete také použít, aby vás vaši přátelé snadno našli.", "Enter your custom homeserver URL What does this mean?": "Zadejte adresu domovského serveru. Co to znamená?", "Enter your custom identity server URL What does this mean?": "Zadejte adresu serveru identit. Co to znamená?", - "Explore": "Procházet", - "Filter": "Filtr místností", - "Filter rooms…": "Najít místnost…", "%(creator)s created and configured the room.": "%(creator)s vytvořil a nakonfiguroval místnost.", "Preview": "Náhled", "View": "Zobrazit", @@ -1746,7 +1666,6 @@ "They match": "Odpovídají", "They don't match": "Neodpovídají", "To be secure, do this in person or use a trusted way to communicate.": "Aby to bylo bezpečné, udělejte to osobně nebo použijte důvěryhodný komunikační prostředek.", - "Lock": "Zámek", "Verify yourself & others to keep your chats safe": "Ověřte sebe a ostatní, aby byla vaše komunikace bezpečná", "Other users may not trust it": "Ostatní uživatelé této relaci nemusí věřit", "Later": "Později", @@ -1818,7 +1737,6 @@ "Re-request encryption keys from your other sessions.": "Znovu zažádat o šifrovací klíče z vašich ostatních relací.", "Encrypted by an unverified session": "Šifrované neověřenou relací", "Encrypted by a deleted session": "Šifrované smazanou relací", - "Invite only": "Pouze na pozvání", "Send a reply…": "Odpovědět…", "Send a message…": "Napsat zprávu…", "Direct Messages": "Přímé zprávy", @@ -1891,8 +1809,6 @@ "You have been logged out of all sessions and will no longer receive push notifications. To re-enable notifications, sign in again on each device.": "Všude jsme vás odhlásili, takže nedostáváte žádná oznámení. Můžete je znovu povolit tím, že se na všech svých zařízeních znovu přihlásíte.", "Regain access to your account and recover encryption keys stored in this session. Without them, you won’t be able to read all of your secure messages in any session.": "Získejte znovu přístup k účtu a obnovte si šifrovací klíče uložené v této relaci. Bez nich nebudete schopni číst zabezpečené zprávy na některých zařízeních.", "Warning: Your personal data (including encryption keys) is still stored in this session. Clear it if you're finished using this session, or want to sign in to another account.": "Varování: Vaše osobní data (včetně šifrovacích klíčů) jsou tu pořád uložena. Smažte je, pokud chcete tuto relaci zahodit, nebo se přihlaste pod jiný účet.", - "If you cancel now, you won't complete verifying the other user.": "Pokud teď proces zrušíte, tak nebude druhý uživatel ověřen.", - "If you cancel now, you won't complete verifying your other session.": "Pokud teď proces zrušíte, tak nebude druhá relace ověřena.", "Cancel entering passphrase?": "Zrušit zadávání hesla?", "Setting up keys": "Příprava klíčů", "%(brand)s is missing some components required for securely caching encrypted messages locally. If you'd like to experiment with this feature, build a custom %(brand)s Desktop with search components added.": "%(brand)su chybí nějaké komponenty, které jsou potřeba pro vyhledávání v zabezpečených místnostech. Pokud chcete s touto funkcí experimentovat, tak si pořiďte vlastní %(brand)s Desktop s přidanými komponentami.", @@ -2023,7 +1939,6 @@ "Almost there! Is your other session showing the same shield?": "Téměř hotovo! Je vaše druhá relace také ověřená?", "Almost there! Is %(displayName)s showing the same shield?": "Téměř hotovo! Je relace %(displayName)s také ověřená?", "You've successfully verified %(deviceName)s (%(deviceId)s)!": "Ověřili jste %(deviceName)s (%(deviceId)s)!", - "If you cancel now, you won't complete your operation.": "Pokud teď akci stornujete, nebudete jí moci dokončit.", "Review where you’re logged in": "Zobrazit kde jste přihlášení", "New login. Was this you?": "Nové přihlášní. Jste to vy?", "%(name)s is requesting verification": "%(name)s žádá o ověření", @@ -2105,9 +2020,6 @@ "Upgrade your %(brand)s": "Aktualizovat %(brand)s", "A new version of %(brand)s is available!": "Je dostupná nová verze %(brand)su!", "Are you sure you want to cancel entering passphrase?": "Chcete určitě zrušit zadávání hesla?", - "Use your account to sign in to the latest version": "Přihlašte se za pomoci svého účtu do nejnovější verze", - "Riot is now Element!": "Riot je nyní Element!", - "Learn More": "Zjistit více", "Light": "Světlý", "Dark": "Tmavý", "You joined the call": "Připojili jste se k hovoru", @@ -2152,7 +2064,6 @@ "Invite someone using their name, username (like ), email address or share this room.": "Pozvěte někoho za použití jeho jména, uživatelského jména (např. ), e-mailové adresy, a nebo sdílejte tuto místnost.", "a new master key signature": "nový podpis hlavního klíče", "Please install Chrome, Firefox, or Safari for the best experience.": "Pro nejlepší zážitek si prosím nainstalujte prohlížeč Chrome, Firefox, nebo Safari.", - "We’re excited to announce Riot is now Element": "S nadšením oznamujeme, že Riot je nyní Element", "Enable experimental, compact IRC style layout": "Povolit experimentální, kompaktní zobrazení zpráv ve stylu IRC", "New version available. Update now.": "Je dostupná nová verze. Aktualizovat nyní.", "Message layout": "Zobrazení zpráv", diff --git a/src/i18n/strings/da.json b/src/i18n/strings/da.json index f44d724643..d99b0774ef 100644 --- a/src/i18n/strings/da.json +++ b/src/i18n/strings/da.json @@ -1,6 +1,5 @@ { "Filter room members": "Filter medlemmer", - "You have no visible notifications": "Du har ingen synlige meddelelser", "Invites": "Invitationer", "Favourites": "Favoritter", "Rooms": "Rum", @@ -483,9 +482,6 @@ "Confirm adding phone number": "Bekræft tilføjelse af telefonnummer", "Click the button below to confirm adding this phone number.": "Klik på knappen herunder for at bekræfte tilføjelsen af dette telefonnummer.", "Whether you're using %(brand)s as an installed Progressive Web App": "Om du anvender %(brand)s som en installeret Progressiv Web App", - "If you cancel now, you won't complete verifying the other user.": "Hvis du annullerer du, vil du ikke have færdiggjort verifikationen af den anden bruger.", - "If you cancel now, you won't complete verifying your other session.": "Hvis du annullerer nu, vil du ikke have færdiggjort verifikationen af din anden session.", - "If you cancel now, you won't complete your operation.": "Hvis du annullerer nu, vil du ikke færdiggøre din operation.", "Cancel entering passphrase?": "Annuller indtastning af kodeord?", "Enter passphrase": "Indtast kodeord", "Setting up keys": "Sætter nøgler op", diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 3d5ba3722e..8dab9543f1 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1,6 +1,5 @@ { "Filter room members": "Raum-Mitglieder filtern", - "You have no visible notifications": "Du hast keine sichtbaren Benachrichtigungen", "Invites": "Einladungen", "Favourites": "Favoriten", "Rooms": "Räume", @@ -183,7 +182,6 @@ "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s hat die Einladung für %(targetName)s zurückgezogen.", "You need to be able to invite users to do that.": "Du musst die Berechtigung haben, Benutzer einzuladen, um diese Aktion ausführen zu können.", "You need to be logged in.": "Du musst angemeldet sein.", - "There are no visible files in this room": "Es gibt keine sichtbaren Dateien in diesem Raum", "Connectivity to the server has been lost.": "Verbindung zum Server wurde unterbrochen.", "Sent messages will be stored until your connection has returned.": "Gesendete Nachrichten werden gespeichert, bis die Internetverbindung wiederhergestellt wird.", "Active call": "Aktiver Anruf", @@ -350,7 +348,6 @@ "Home": "Startseite", "Username invalid: %(errMessage)s": "Ungültiger Benutzername: %(errMessage)s", "Accept": "Akzeptieren", - "Active call (%(roomName)s)": "Aktiver Anruf (%(roomName)s)", "Admin Tools": "Admin-Werkzeuge", "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Verbindung zum Heimserver fehlgeschlagen - bitte überprüfe die Internetverbindung und stelle sicher, dass dem SSL-Zertifikat deines Heimservers vertraut wird und dass Anfragen nicht durch eine Browser-Erweiterung blockiert werden.", "Close": "Schließen", @@ -358,9 +355,6 @@ "Decline": "Ablehnen", "Drop File Here": "Lasse Datei hier los", "Failed to upload profile picture!": "Hochladen des Profilbild's fehlgeschlagen!", - "Incoming call from %(name)s": "Eingehender Anruf von %(name)s", - "Incoming video call from %(name)s": "Eingehender Videoanruf von %(name)s", - "Incoming voice call from %(name)s": "Eingehender Sprachanruf von %(name)s", "Join as voice or video.": "Per Sprachanruf oder Videoanruf beitreten.", "Last seen": "Zuletzt gesehen", "No display name": "Kein Anzeigename", @@ -371,7 +365,6 @@ "Seen by %(userName)s at %(dateTime)s": "Gesehen von %(userName)s um %(dateTime)s", "Start authentication": "Authentifizierung beginnen", "This room": "diesen Raum", - "unknown caller": "Unbekannter Anrufer", "Unnamed Room": "Unbenannter Raum", "Upload new:": "Neue(s) hochladen:", "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (Berechtigungslevel %(powerLevelNumber)s)", @@ -578,7 +571,6 @@ "Visibility in Room List": "Sichtbarkeit in Raum-Liste", "Visible to everyone": "Für alle sichtbar", "Only visible to community members": "Nur für Community-Mitglieder sichtbar", - "Community Invites": "Community-Einladungen", "Notify the whole room": "Alle im Raum benachrichtigen", "Room Notification": "Raum-Benachrichtigung", "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Diese Räume werden Community-Mitgliedern auf der Community-Seite angezeigt. Community-Mitglieder können diesen Räumen beitreten, indem sie diese anklicken.", @@ -817,7 +809,6 @@ "Share Community": "Teile Community", "Share Room Message": "Teile Raumnachricht", "Link to selected message": "Link zur ausgewählten Nachricht", - "COPY": "KOPIEREN", "Share Message": "Teile Nachricht", "No Audio Outputs detected": "Keine Ton-Ausgabe erkannt", "Audio Output": "Ton-Ausgabe", @@ -1038,68 +1029,6 @@ "%(senderDisplayName)s changed guest access to %(rule)s": "%(senderDisplayName)s änderte den Gastzugriff auf '%(rule)s'", "Group & filter rooms by custom tags (refresh to apply changes)": "Gruppiere & filtere Räume nach eigenen Tags (neu laden um Änderungen zu übernehmen)", "Unable to find a supported verification method.": "Konnte kein unterstützte Verifikationsmethode finden.", - "Dog": "Hund", - "Cat": "Katze", - "Lion": "Löwe", - "Horse": "Pferd", - "Unicorn": "Einhorn", - "Pig": "Schwein", - "Elephant": "Elefant", - "Rabbit": "Kaninchen", - "Panda": "Panda", - "Rooster": "Hahn", - "Penguin": "Pinguin", - "Turtle": "Schildkröte", - "Fish": "Fisch", - "Octopus": "Oktopus", - "Butterfly": "Schmetterling", - "Flower": "Blume", - "Tree": "Baum", - "Cactus": "Kaktus", - "Mushroom": "Pilz", - "Globe": "Globus", - "Moon": "Mond", - "Cloud": "Wolke", - "Fire": "Feuer", - "Banana": "Banane", - "Apple": "Apfel", - "Strawberry": "Erdbeere", - "Corn": "Mais", - "Pizza": "Pizza", - "Cake": "Kuchen", - "Heart": "Herz", - "Smiley": "Smiley", - "Robot": "Roboter", - "Hat": "Hut", - "Glasses": "Brille", - "Spanner": "Schraubenschlüssel", - "Santa": "Nikolaus", - "Thumbs up": "Daumen hoch", - "Umbrella": "Regenschirm", - "Hourglass": "Sanduhr", - "Clock": "Uhr", - "Gift": "Geschenk", - "Light bulb": "Glühbirne", - "Book": "Buch", - "Pencil": "Stift", - "Paperclip": "Büroklammer", - "Key": "Schlüssel", - "Hammer": "Hammer", - "Telephone": "Telefon", - "Flag": "Flagge", - "Train": "Zug", - "Bicycle": "Fahrrad", - "Aeroplane": "Flugzeug", - "Rocket": "Rakete", - "Trophy": "Pokal", - "Ball": "Ball", - "Guitar": "Gitarre", - "Trumpet": "Trompete", - "Bell": "Glocke", - "Anchor": "Anker", - "Headphones": "Kopfhörer", - "Folder": "Ordner", - "Pin": "Stecknadel", "Timeline": "Chatverlauf", "Autocomplete delay (ms)": "Verzögerung zur Autovervollständigung (ms)", "Roles & Permissions": "Rollen & Berechtigungen", @@ -1152,7 +1081,6 @@ "Hide": "Verberge", "This homeserver would like to make sure you are not a robot.": "Dieser Heimserver möchte sicherstellen, dass du kein Roboter bist.", "Server Name": "Servername", - "Your Modular server": "Dein Modular-Server", "The username field must not be blank.": "Das Feld für den Benutzername darf nicht leer sein.", "Username": "Benutzername", "Not sure of your password? Set a new one": "Du bist dir bei deinem Passwort nicht sicher? Setze ein neues", @@ -1185,7 +1113,6 @@ "Recovery Method Removed": "Wiederherstellungsmethode gelöscht", "If you didn't remove the recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings.": "Wenn du die Wiederherstellungsmethode nicht gelöscht hast, kann ein Angreifer versuchen Zugang zu deinem Konto zu bekommen. Ändere dein Passwort und richte sofort eine neue Wiederherstellungsmethode in den Einstellungen ein.", "Warning: you should only set up key backup from a trusted computer.": "Warnung: Du solltest die Schlüsselsicherung nur auf einem vertrauenswürdigen Gerät einrichten.", - "Enter the location of your Modular homeserver. It may use your own domain name or be a subdomain of modular.im.": "Gib die Adresse deines Modular-Heimservers an. Es kann deine eigene Domain oder eine Subdomain von modular.im sein.", "Unable to query for supported registration methods.": "Konnte unterstützte Registrierungsmethoden nicht abrufen.", "Bulk options": "Sammeloptionen", "Join millions for free on the largest public server": "Schließen Sie sich auf dem größten öffentlichen Server kostenlos Millionen von Menschen an", @@ -1197,7 +1124,6 @@ "User %(userId)s is already in the room": "Nutzer %(userId)s ist bereits im Raum", "The user must be unbanned before they can be invited.": "Nutzer müssen entbannt werden, bevor sie eingeladen werden können.", "Show read receipts sent by other users": "Zeige Lesebestätigungen anderer Benutzer", - "Scissors": "Scheren", "Upgrade to your own domain": "Upgrade zu deiner eigenen Domain", "Accept all %(invitedRooms)s invites": "Akzeptiere alle %(invitedRooms)s Einladungen", "Change room avatar": "Ändere Raumbild", @@ -1286,7 +1212,6 @@ "Passwords don't match": "Passwörter stimmen nicht überein", "Enter username": "Benutzername eingeben", "Add room": "Raum hinzufügen", - "Your profile": "Dein Profil", "Registration Successful": "Registrierung erfolgreich", "Failed to revoke invite": "Einladung zurückziehen fehlgeschlagen", "Revoke invite": "Einladung zurückziehen", @@ -1370,7 +1295,6 @@ "%(num)s days from now": "in %(num)s Tagen", "Show info about bridges in room settings": "Information über Bridges in den Raumeinstellungen anzeigen", "Enable message search in encrypted rooms": "Nachrichtensuche in verschlüsselten Räumen aktivieren", - "Lock": "Sperren", "Later": "Später", "Review": "Überprüfen", "Verify": "Verifizieren", @@ -1419,8 +1343,6 @@ "Whether you're using %(brand)s on a device where touch is the primary input mechanism": "Ob du %(brand)s auf einem Gerät verwendest, bei dem Berührung der primäre Eingabemechanismus ist", "Whether you're using %(brand)s as an installed Progressive Web App": "Ob Sie %(brand)s als installierte progressive Web-App verwenden", "Your user agent": "Dein User-Agent", - "If you cancel now, you won't complete verifying the other user.": "Wenn Sie jetzt abbrechen, werden Sie die Verifizierung des anderen Nutzers nicht beenden können.", - "If you cancel now, you won't complete verifying your other session.": "Wenn Sie jetzt abbrechen, werden Sie die Verifizierung der anderen Sitzung nicht beenden können.", "Cancel entering passphrase?": "Eingabe der Passphrase abbrechen?", "Setting up keys": "Einrichten der Schlüssel", "Encryption upgrade available": "Verschlüsselungs-Update verfügbar", @@ -1448,8 +1370,6 @@ "To help us prevent this in future, please send us logs.": "Um uns zu helfen, dies in Zukunft zu vermeiden, senden Sie uns bitte Logs.", "Notification settings": "Benachrichtigungseinstellungen", "Help": "Hilf uns", - "Filter": "Filtern", - "Filter rooms…": "Räume filtern…", "You have %(count)s unread notifications in a prior version of this room.|one": "Sie haben %(count)s ungelesene Benachrichtigungen in einer früheren Version dieses Raumes.", "Go Back": "Gehe zurück", "Notification Autocomplete": "Benachrichtigung Autovervollständigen", @@ -1527,7 +1447,6 @@ "Service": "Dienst", "Summary": "Zusammenfassung", "Document": "Dokument", - "Explore": "Erkunde", "Explore rooms": "Erkunde Räume", "Maximize apps": "Apps maximieren", "The signing key you provided matches the signing key you received from %(userId)s's session %(deviceId)s. Session marked as verified.": "Dein bereitgestellter Signaturschlüssel passt zu dem Schlüssel, der von %(userId)s's Sitzung %(deviceId)s empfangen wurde. Sitzung wird als verifiziert markiert.", @@ -1639,7 +1558,6 @@ "Confirm adding email": "Hinzufügen der E-Mail-Adresse bestätigen", "Confirm adding this phone number by using Single Sign On to prove your identity.": "Bestätige das Hinzufügen dieser Telefonnummer, indem du deine Identität mittels „Single Sign-On“ nachweist.", "Click the button below to confirm adding this phone number.": "Klicke unten die Schaltfläche, um die hinzugefügte Telefonnummer zu bestätigen.", - "If you cancel now, you won't complete your operation.": "Wenn du jetzt abbrichst, wirst du deinen Vorgang nicht fertigstellen.", "%(name)s is requesting verification": "%(name)s fordert eine Verifizierung an", "Failed to set topic": "Das Festlegen des Themas ist fehlgeschlagen", "Command failed": "Befehl fehlgeschlagen", @@ -1784,7 +1702,6 @@ "You have not verified this user.": "Du hast diesen Benutzer nicht verifiziert.", "Everyone in this room is verified": "Jeder in diesem Raum ist verifiziert", "Mod": "Mod", - "Invite only": "Nur auf Einladung", "Scroll to most recent messages": "Springe zur neusten Nachricht", "No recent messages by %(user)s found": "Keine neuen Nachrichten von %(user)s gefunden", "Try scrolling up in the timeline to see if there are any earlier ones.": "Versuche nach oben zu scrollen um zu sehen ob sich dort frühere Nachrichten befinden.", @@ -1799,7 +1716,6 @@ "Italics": "Kursiv", "Strikethrough": "Durchgestrichen", "Code block": "Quelltext", - "Recent rooms": "Letzte Räume", "Loading …": "Lade …", "Join the conversation with an account": "Tritt der Unterhaltung mit einem Konto bei", "You were kicked from %(roomName)s by %(memberName)s": "Du wurdest von %(memberName)s aus %(roomName)s entfernt", @@ -1823,7 +1739,6 @@ "%(count)s unread messages including mentions.|one": "1 ungelesene Erwähnung.", "%(count)s unread messages.|other": "%(count)s ungelesene Nachrichten.", "%(count)s unread messages.|one": "1 ungelesene Nachricht.", - "Unread mentions.": "Ungelesene Erwähnungen.", "Unread messages.": "Ungelesene Nachrichten.", "This room has already been upgraded.": "Dieser Raum wurde bereits hochgestuft.", "This room is running room version , which this homeserver has marked as unstable.": "Dieser Raum läuft mit der Raumversion , welcher dieser Heimserver als instabil markiert hat.", @@ -2183,14 +2098,12 @@ "Click the button below to confirm your identity.": "Klicke den Button unten um deine Identität zu bestätigen.", "Confirm encryption setup": "Bestätige die Einrichtung der Verschlüsselung", "Click the button below to confirm setting up encryption.": "Klick die Schaltfläche unten um die Einstellungen der Verschlüsselung zu bestätigen.", - "Font scaling": "Schriftskalierung", "Font size": "Schriftgröße", "IRC display name width": "Breite des IRC Anzeigenamens", "Size must be a number": "Größe muss eine Zahl sein", "Custom font size can only be between %(min)s pt and %(max)s pt": "Eigene Schriftgröße kann nur eine Zahl zwischen %(min)s pt und %(max)s pt sein", "Use between %(min)s pt and %(max)s pt": "Verwende eine Zahl zwischen %(min)s pt und %(max)s pt", "Appearance": "Erscheinungsbild", - "Create room": "Raum erstellen", "Jump to oldest unread message": "Zur ältesten ungelesenen Nachricht springen", "Upload a file": "Eine Datei hochladen", "Dismiss read marker and jump to bottom": "Entferne Lesemarker und springe nach unten", @@ -2240,10 +2153,6 @@ "Room ID or address of ban list": "Raum-ID oder Adresse der Verbotsliste", "No recently visited rooms": "Keine kürzlich besuchten Räume", "Sort by": "Sortieren nach", - "Unread rooms": "Ungelesene Räume", - "Always show first": "Zeige immer zuerst", - "Show": "Zeige", - "Message preview": "Nachrichtenvorschau", "List options": "Optionen anzeigen", "Show %(count)s more|other": "Zeige %(count)s weitere", "Show %(count)s more|one": "Zeige %(count)s weitere", @@ -2256,7 +2165,6 @@ "Use Recovery Key": "Verwende einen Wiederherstellungsschlüssel", "Light": "Hell", "Dark": "Dunkel", - "Use the improved room list (will refresh to apply changes)": "Verwende die verbesserte Raumliste (lädt die Anwendung neu)", "Use custom size": "Verwende individuelle Größe", "Hey you. You're the best!": "Hey du. Du bist der Beste!", "Message layout": "Nachrichtenlayout", @@ -2277,65 +2185,21 @@ "%(senderName)s started a call": "%(senderName)s hat einen Anruf gestartet", "Waiting for answer": "Warte auf Antwort", "%(senderName)s is calling": "%(senderName)s ruft an", - "You created the room": "Du hast den Raum erstellt", - "%(senderName)s created the room": "%(senderName)s hat den Raum erstellt", - "You made the chat encrypted": "Du hast den Raum verschlüsselt", - "%(senderName)s made the chat encrypted": "%(senderName)s hat den Raum verschlüsselt", - "You made history visible to new members": "Du hast die bisherige Kommunikation für neue Teilnehmern sichtbar gemacht", - "%(senderName)s made history visible to new members": "%(senderName)s hat die bisherige Kommunikation für neue Teilnehmern sichtbar gemacht", - "You made history visible to anyone": "Du hast die bisherige Kommunikation für alle sichtbar gemacht", - "%(senderName)s made history visible to anyone": "%(senderName)s hat die bisherige Kommunikation für alle sichtbar gemacht", - "You made history visible to future members": "Du hast die bisherige Kommunikation für zukünftige Teilnehmer sichtbar gemacht", - "%(senderName)s made history visible to future members": "%(senderName)s hat die bisherige Kommunikation für zukünftige Teilnehmer sichtbar gemacht", - "You were invited": "Du wurdest eingeladen", - "%(targetName)s was invited": "%(targetName)s wurde eingeladen", - "You left": "Du hast den Raum verlassen", - "%(targetName)s left": "%(targetName)s hat den Raum verlassen", - "You were kicked (%(reason)s)": "Du wurdest herausgeworfen (%(reason)s)", - "%(targetName)s was kicked (%(reason)s)": "%(targetName)s wurde herausgeworfen (%(reason)s)", - "You were kicked": "Du wurdest herausgeworfen", - "%(targetName)s was kicked": "%(targetName)s wurde herausgeworfen", - "You rejected the invite": "Du hast die Einladung abgelehnt", - "%(targetName)s rejected the invite": "%(targetName)s hat die Einladung abgelehnt", - "You were uninvited": "Deine Einladung wurde zurückgezogen", - "%(targetName)s was uninvited": "Die Einladung für %(targetName)s wurde zurückgezogen", - "You were banned (%(reason)s)": "Du wurdest verbannt (%(reason)s)", - "%(targetName)s was banned (%(reason)s)": "%(targetName)s wurde verbannt (%(reason)s)", - "You were banned": "Du wurdest verbannt", - "%(targetName)s was banned": "%(targetName)s wurde verbannt", - "You joined": "Du bist beigetreten", - "%(targetName)s joined": "%(targetName)s ist beigetreten", - "You changed your name": "Du hast deinen Namen geändert", - "%(targetName)s changed their name": "%(targetName)s hat den Namen geändert", - "You changed your avatar": "Du hast deinen Avatar geändert", - "%(targetName)s changed their avatar": "%(targetName)s hat den Avatar geändert", - "%(senderName)s %(emote)s": "%(senderName)s %(emote)s", "%(senderName)s: %(message)s": "%(senderName)s: %(message)s", - "You changed the room name": "Du hast den Raumnamen geändert", - "%(senderName)s changed the room name": "%(senderName)s hat den Raumnamen geändert", "%(senderName)s: %(reaction)s": "%(senderName)s: %(reaction)s", "%(senderName)s: %(stickerName)s": "%(senderName)s: %(stickerName)s", - "You uninvited %(targetName)s": "Du hast die Einladung für %(targetName)s zurückgezogen", - "%(senderName)s uninvited %(targetName)s": "%(senderName)s hat die Einladung für %(targetName)s zurückgezogen", - "You invited %(targetName)s": "Du hast %(targetName)s eingeladen", - "%(senderName)s invited %(targetName)s": "%(senderName)s hat %(targetName)s eingeladen", - "You changed the room topic": "Du hast das Raumthema geändert", - "%(senderName)s changed the room topic": "%(senderName)s hat das Raumthema geändert", "New spinner design": "Neue Warteanimation", "Use a more compact ‘Modern’ layout": "Verwende ein kompakteres 'modernes' Layout", "Message deleted on %(date)s": "Nachricht am %(date)s gelöscht", "Wrong file type": "Falscher Dateityp", "Wrong Recovery Key": "Falscher Wiederherstellungsschlüssel", "Invalid Recovery Key": "Ungültiger Wiederherstellungsschlüssel", - "Riot is now Element!": "Riot ist jetzt Element!", - "Learn More": "Mehr erfahren", "Unknown caller": "Unbekannter Anrufer", "Incoming voice call": "Eingehender Sprachanruf", "Incoming video call": "Eingehender Videoanruf", "Incoming call": "Eingehender Anruf", "There are advanced notifications which are not shown here.": "Erweiterte Benachrichtigungen, werden hier nicht angezeigt.", "Are you sure you want to cancel entering passphrase?": "Bist du sicher, dass du die Eingabe der Passphrase abbrechen möchtest?", - "Use your account to sign in to the latest version": "Melde dich mit deinem Account in der neuesten Version an", "* %(senderName)s %(emote)s": "* %(senderName)s %(emote)s", "Enable advanced debugging for the room list": "Erweiterte Fehlersuche für die Raumliste aktivieren", "Enable experimental, compact IRC style layout": "Kompaktes, experimentelles Layout im IRC-Stil aktivieren", @@ -2343,8 +2207,6 @@ "%(brand)s Web": "%(brand)s Web", "%(brand)s Desktop": "%(brand)s Desktop", "%(brand)s iOS": "%(brand)s iOS", - "%(brand)s X for Android": "%(brand)s X für Android", - "We’re excited to announce Riot is now Element": "Wir freuen uns zu verkünden, dass Riot jetzt Element ist", "%(brand)s can't securely cache encrypted messages locally while running in a web browser. Use %(brand)s Desktop for encrypted messages to appear in search results.": "%(brand)s kann verschlüsselte Nachrichten nicht sicher zwischenspeichern während es in einem Browser läuft. Verwende %(brand)s Desktop damit verschlüsselte Nachrichten durchsuchbar werden.", "Show rooms with unread messages first": "Zeige Räume mit ungelesenen Nachrichten zuerst", "Show previews of messages": "Zeige Vorschau von Nachrichten", @@ -2359,14 +2221,10 @@ "Edited at %(date)s": "Geändert am %(date)s", "Click to view edits": "Klicke um Änderungen anzuzeigen", "%(brand)s encountered an error during upload of:": "%(brand)s hat einen Fehler festgestellt beim hochladen von:", - "Use your account to sign in to the latest version of the app at ": "Verwende dein Konto um dich an der neusten Version der App anzumelden", - "We’re excited to announce Riot is now Element!": "Wir freuen uns bekanntzugeben: Riot ist jetzt Element!", - "Learn more at element.io/previously-riot": "Erfahre mehr unter element.io/previously-riot", "The person who invited you already left the room.": "Die Person, die dich eingeladen hat, hat den Raum bereits verlassen.", "The person who invited you already left the room, or their server is offline.": "Die Person, die dich eingeladen hat, hat den Raum bereits verlassen oder ihr Server ist offline.", "Change notification settings": "Benachrichtigungseinstellungen ändern", "Your server isn't responding to some requests.": "Dein Server antwortet nicht auf einige Anfragen.", - "Go to Element": "Zu Element gehen", "Server isn't responding": "Server antwortet nicht", "Your server isn't responding to some of your requests. Below are some of the most likely reasons.": "Server reagiert nicht auf einige deiner Anfragen. Im Folgenden sind einige der wahrscheinlichsten Gründe aufgeführt.", "The server (%(serverName)s) took too long to respond.": "Der Server (%(serverName)s) brauchte zu lange zum antworten.", @@ -2380,7 +2238,6 @@ "Master private key:": "Privater Hauptschlüssel:", "Set the name of a font installed on your system & %(brand)s will attempt to use it.": "Setze den Schriftnamen auf eine in deinem System installierte Schriftart & %(brand)s werden versuchen sie zu verwenden.", "Custom Tag": "Benutzerdefinierter Tag", - "You’re already signed in and good to go here, but you can also grab the latest versions of the app on all platforms at element.io/get-started.": "Du bist bereits eingeloggt und kannst loslegen. Allerdings kannst du auch die neuesten Versionen der App für alle Plattformen unter element.io/get-started herunterladen.", "You're all caught up.": "Alles gesichtet.", "The server is not configured to indicate what the problem is (CORS).": "Der Server ist nicht so konfiguriert, dass das Problem angezeigt wird (CORS).", "Recent changes that have not yet been received": "Letzte Änderungen, die noch nicht eingegangen sind", diff --git a/src/i18n/strings/el.json b/src/i18n/strings/el.json index 118c87e153..48e6c94ff2 100644 --- a/src/i18n/strings/el.json +++ b/src/i18n/strings/el.json @@ -143,7 +143,6 @@ "Room directory": "Ευρετήριο", "Start chat": "Έναρξη συνομιλίας", "Accept": "Αποδοχή", - "Active call (%(roomName)s)": "Ενεργή κλήση (%(roomName)s)", "Add": "Προσθήκη", "Admin Tools": "Εργαλεία διαχειριστή", "No media permissions": "Χωρίς δικαιώματα πολυμέσων", @@ -196,7 +195,6 @@ "Unban": "Άρση αποκλεισμού", "%(senderName)s unbanned %(targetName)s.": "Ο χρήστης %(senderName)s έδιωξε τον χρήστη %(targetName)s.", "Unable to enable Notifications": "Αδυναμία ενεργοποίησης των ειδοποιήσεων", - "unknown caller": "άγνωστος καλών", "Unmute": "Άρση σίγασης", "Unnamed Room": "Ανώνυμο δωμάτιο", "Upload avatar": "Αποστολή προσωπικής εικόνας", @@ -210,7 +208,6 @@ "Voice call": "Φωνητική κλήση", "Warning!": "Προειδοποίηση!", "You are already in a call.": "Είστε ήδη σε μια κλήση.", - "You have no visible notifications": "Δεν έχετε ορατές ειδοποιήσεις", "You must register to use this functionality": "Πρέπει να εγγραφείτε για να χρησιμοποιήσετε αυτή την λειτουργία", "You need to be logged in.": "Πρέπει να είστε συνδεδεμένος.", "Sun": "Κυρ", @@ -281,9 +278,6 @@ "Failed to unban": "Δεν ήταν δυνατή η άρση του αποκλεισμού", "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s από %(fromPowerLevel)s σε %(toPowerLevel)s", "Guests cannot join this room even if explicitly invited.": "Οι επισκέπτες δεν μπορούν να συνδεθούν στο δωμάτιο ακόμη και αν έχουν καλεστεί.", - "Incoming call from %(name)s": "Εισερχόμενη κλήση από %(name)s", - "Incoming video call from %(name)s": "Εισερχόμενη βιντεοκλήση από %(name)s", - "Incoming voice call from %(name)s": "Εισερχόμενη φωνητική κλήση από %(name)s", "Invalid file%(extra)s": "Μη έγκυρο αρχείο %(extra)s", "%(senderName)s invited %(targetName)s.": "Ο %(senderName)s προσκάλεσε τον %(targetName)s.", "Invites user with given id to current room": "Προσκαλεί τον χρήστη με το δοσμένο αναγνωριστικό στο τρέχον δωμάτιο", @@ -325,7 +319,6 @@ "You do not have permission to post to this room": "Δεν έχετε δικαιώματα για να δημοσιεύσετε σε αυτό το δωμάτιο", "You seem to be in a call, are you sure you want to quit?": "Φαίνεται ότι είστε σε μια κλήση, είστε βέβαιοι ότι θέλετε να αποχωρήσετε;", "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(day)s %(monthName)s %(fullYear)s %(time)s", - "There are no visible files in this room": "Δεν υπάρχουν ορατά αρχεία σε αυτό το δωμάτιο", "Connectivity to the server has been lost.": "Χάθηκε η συνδεσιμότητα στον διακομιστή.", "Please select the destination room for this message": "Παρακαλούμε επιλέξτε ένα δωμάτιο προορισμού για αυτό το μήνυμα", "Analytics": "Αναλυτικά δεδομένα", diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index e82581de8d..467c2a9671 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -548,70 +548,6 @@ "They match": "They match", "They don't match": "They don't match", "To be secure, do this in person or use a trusted way to communicate.": "To be secure, do this in person or use a trusted way to communicate.", - "Dog": "Dog", - "Cat": "Cat", - "Lion": "Lion", - "Horse": "Horse", - "Unicorn": "Unicorn", - "Pig": "Pig", - "Elephant": "Elephant", - "Rabbit": "Rabbit", - "Panda": "Panda", - "Rooster": "Rooster", - "Penguin": "Penguin", - "Turtle": "Turtle", - "Fish": "Fish", - "Octopus": "Octopus", - "Butterfly": "Butterfly", - "Flower": "Flower", - "Tree": "Tree", - "Cactus": "Cactus", - "Mushroom": "Mushroom", - "Globe": "Globe", - "Moon": "Moon", - "Cloud": "Cloud", - "Fire": "Fire", - "Banana": "Banana", - "Apple": "Apple", - "Strawberry": "Strawberry", - "Corn": "Corn", - "Pizza": "Pizza", - "Cake": "Cake", - "Heart": "Heart", - "Smiley": "Smiley", - "Robot": "Robot", - "Hat": "Hat", - "Glasses": "Glasses", - "Spanner": "Spanner", - "Santa": "Santa", - "Thumbs up": "Thumbs up", - "Umbrella": "Umbrella", - "Hourglass": "Hourglass", - "Clock": "Clock", - "Gift": "Gift", - "Light bulb": "Light bulb", - "Book": "Book", - "Pencil": "Pencil", - "Paperclip": "Paperclip", - "Scissors": "Scissors", - "Lock": "Lock", - "Key": "Key", - "Hammer": "Hammer", - "Telephone": "Telephone", - "Flag": "Flag", - "Train": "Train", - "Bicycle": "Bicycle", - "Aeroplane": "Aeroplane", - "Rocket": "Rocket", - "Trophy": "Trophy", - "Ball": "Ball", - "Guitar": "Guitar", - "Trumpet": "Trumpet", - "Bell": "Bell", - "Anchor": "Anchor", - "Headphones": "Headphones", - "Folder": "Folder", - "Pin": "Pin", "Your server isn't responding to some requests.": "Your server isn't responding to some requests.", "From %(deviceName)s (%(deviceId)s)": "From %(deviceName)s (%(deviceId)s)", "Decline (%(counter)s)": "Decline (%(counter)s)", diff --git a/src/i18n/strings/en_US.json b/src/i18n/strings/en_US.json index a4249a93eb..0505397fd2 100644 --- a/src/i18n/strings/en_US.json +++ b/src/i18n/strings/en_US.json @@ -259,7 +259,6 @@ "You do not have permission to post to this room": "You do not have permission to post to this room", "You have disabled URL previews by default.": "You have disabled URL previews by default.", "You have enabled URL previews by default.": "You have enabled URL previews by default.", - "You have no visible notifications": "You have no visible notifications", "You need to be able to invite users to do that.": "You need to be able to invite users to do that.", "You need to be logged in.": "You need to be logged in.", "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Your email address does not appear to be associated with a Matrix ID on this Homeserver.", @@ -292,7 +291,6 @@ "Upload an avatar:": "Upload an avatar:", "This server does not support authentication with a phone number.": "This server does not support authentication with a phone number.", "An error occurred: %(error_string)s": "An error occurred: %(error_string)s", - "There are no visible files in this room": "There are no visible files in this room", "Room": "Room", "Connectivity to the server has been lost.": "Connectivity to the server has been lost.", "Sent messages will be stored until your connection has returned.": "Sent messages will be stored until your connection has returned.", @@ -350,7 +348,6 @@ "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s changed the room avatar to ", "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s removed the room avatar.", "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s changed the avatar for %(roomName)s", - "Active call (%(roomName)s)": "Active call (%(roomName)s)", "Accept": "Accept", "Add": "Add", "Admin Tools": "Admin Tools", @@ -366,9 +363,6 @@ "Failed to fetch avatar URL": "Failed to fetch avatar URL", "Failed to upload profile picture!": "Failed to upload profile picture!", "Home": "Home", - "Incoming call from %(name)s": "Incoming call from %(name)s", - "Incoming video call from %(name)s": "Incoming video call from %(name)s", - "Incoming voice call from %(name)s": "Incoming voice call from %(name)s", "Join as voice or video.": "Join as voice or video.", "Last seen": "Last seen", "No display name": "No display name", @@ -380,7 +374,6 @@ "Start authentication": "Start authentication", "The phone number entered looks invalid": "The phone number entered looks invalid", "This room": "This room", - "unknown caller": "unknown caller", "Unnamed Room": "Unnamed Room", "Uploading %(filename)s and %(count)s others|zero": "Uploading %(filename)s", "Uploading %(filename)s and %(count)s others|one": "Uploading %(filename)s and %(count)s other", @@ -570,9 +563,6 @@ "Opens the Developer Tools dialog": "Opens the Developer Tools dialog", "Forces the current outbound group session in an encrypted room to be discarded": "Forces the current outbound group session in an encrypted room to be discarded", "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s changed their display name to %(displayName)s.", - "Spanner": "Wrench", - "Aeroplane": "Airplane", - "Cat": "Cat", "Sends the given message coloured as a rainbow": "Sends the given message colored as a rainbow", "Sends the given emote coloured as a rainbow": "Sends the given emote colored as a rainbow", "Unrecognised address": "Unrecognized address", diff --git a/src/i18n/strings/eo.json b/src/i18n/strings/eo.json index 8d07db7eaf..2027934e70 100644 --- a/src/i18n/strings/eo.json +++ b/src/i18n/strings/eo.json @@ -144,11 +144,6 @@ "Enable URL previews for this room (only affects you)": "Ŝalti URL-antaŭrigardon en ĉi tiu ĉambro (nur por vi)", "Enable URL previews by default for participants in this room": "Ŝalti URL-antaŭrigardon por anoj de ĉi tiu ĉambro", "Room Colour": "Koloro de ĉambro", - "Active call (%(roomName)s)": "Aktiva voko (%(roomName)s)", - "unknown caller": "nekonata vokanto", - "Incoming voice call from %(name)s": "Envena voĉvoko de %(name)s", - "Incoming video call from %(name)s": "Envena vidvoko de %(name)s", - "Incoming call from %(name)s": "Envena voko de %(name)s", "Decline": "Rifuzi", "Accept": "Akcepti", "Error": "Eraro", @@ -253,7 +248,6 @@ "Settings": "Agordoj", "Forget room": "Forgesi ĉambron", "Search": "Serĉi", - "Community Invites": "Komunumaj invitoj", "Invites": "Invitoj", "Favourites": "Elstarigitaj", "Rooms": "Ĉambroj", @@ -462,7 +456,6 @@ "Name": "Nomo", "You must register to use this functionality": "Vi devas registriĝî por uzi tiun ĉi funkcion", "You must join the room to see its files": "Vi devas aliĝi al la ĉambro por vidi tie dosierojn", - "There are no visible files in this room": "En ĉi tiu ĉambro estas neniaj videblaj dosieroj", "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

HTML por la paĝo de via komunumo

\n

\n Uzu la longan priskribon por enkonduki novajn komunumanojn, aŭ disdoni iujn\n gravajn ligilojn\n

\n

\n Vi povas eĉ uzi etikedojn « img »\n

\n", "Add rooms to the community summary": "Aldoni ĉambrojn al la komunuma superrigardo", "Which rooms would you like to add to this summary?": "Kiujn ĉambrojn vi volas aldoni al ĉi tiu superrigardo?", @@ -508,7 +501,6 @@ "Error whilst fetching joined communities": "Akirado de viaj komunumoj eraris", "Create a new community": "Krei novan komunumon", "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Kreu komunumon por kunigi uzantojn kaj ĉambrojn! Fari propran hejmpaĝon por montri vian spacon en la universo de Matrix.", - "You have no visible notifications": "Neniuj videblaj sciigoj", "Connectivity to the server has been lost.": "Konekto al la servilo perdiĝis.", "Sent messages will be stored until your connection has returned.": "Senditaj mesaĝoj konserviĝos ĝis via konekto refunkcios.", "Active call": "Aktiva voko", @@ -817,65 +809,6 @@ "Prepends ¯\\_(ツ)_/¯ to a plain-text message": "Antaŭmetas ¯\\_(ツ)_/¯ al platteksta mesaĝo", "Verified!": "Kontrolita!", "Got It": "Komprenite", - "Dog": "Hundo", - "Cat": "Kato", - "Lion": "Leono", - "Horse": "Ĉevalo", - "Unicorn": "Unukorno", - "Pig": "Porko", - "Elephant": "Elefanto", - "Rabbit": "Kuniklo", - "Panda": "Pando", - "Rooster": "Koko", - "Penguin": "Pingveno", - "Turtle": "Testudo", - "Fish": "Fiŝo", - "Octopus": "Polpo", - "Butterfly": "Papilio", - "Flower": "Floro", - "Tree": "Arbo", - "Cactus": "Kakto", - "Mushroom": "Fungo", - "Globe": "Globo", - "Moon": "Luno", - "Cloud": "Nubo", - "Fire": "Fajro", - "Banana": "Banano", - "Apple": "Pomo", - "Strawberry": "Frago", - "Corn": "Greno", - "Pizza": "Pico", - "Cake": "Kuko", - "Heart": "Koro", - "Smiley": "Mieneto", - "Robot": "Roboto", - "Hat": "Ĉapelo", - "Glasses": "Okulvitroj", - "Spanner": "Ŝraŭbŝlosilo", - "Umbrella": "Ombrelo", - "Hourglass": "Sablohorloĝo", - "Clock": "Horloĝo", - "Gift": "Donaco", - "Light bulb": "Lampo", - "Book": "Libro", - "Pencil": "Grifelo", - "Scissors": "Tondilo", - "Key": "Ŝlosilo", - "Hammer": "Martelo", - "Telephone": "Telefono", - "Flag": "Flago", - "Train": "Vagonaro", - "Bicycle": "Biciklo", - "Aeroplane": "Aeroplano", - "Rocket": "Raketo", - "Trophy": "Trofeo", - "Ball": "Pilko", - "Guitar": "Gitaro", - "Trumpet": "Trumpeto", - "Bell": "Sonorilo", - "Anchor": "Ankro", - "Headphones": "Kapaŭdilo", - "Folder": "Dosierujo", "Yes": "Jes", "No": "Ne", "Email Address": "Retpoŝtadreso", @@ -950,7 +883,6 @@ "Share User": "Kunhavigi uzanton", "Share Community": "Kunhavigi komunumon", "Share Room Message": "Kunhavigi ĉambran mesaĝon", - "COPY": "KOPII", "Next": "Sekva", "Clear status": "Vakigi staton", "Update status": "Ĝisdatigi staton", @@ -1052,10 +984,6 @@ "Verify this user by confirming the following emoji appear on their screen.": "Kontrolu ĉi tiun uzanton per konfirmo, ke la jenaj bildsignoj aperis sur ĝia ekrano.", "Verify this user by confirming the following number appears on their screen.": "Kontrolu ĉu tiun uzanton per konfirmo, ke la jena numero aperis sur ĝia ekrano.", "Unable to find a supported verification method.": "Ne povas trovi subtenatan metodon de kontrolo.", - "Santa": "Kristnaska viro", - "Thumbs up": "Dikfingro supren", - "Paperclip": "Paperkuntenilo", - "Pin": "Pinglo", "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.": "Ni sendis al vi retleteron por konfirmi vian adreson. Bonvolu sekvi la tieajn intrukciojn kaj poste klaki al la butono sube.", "Are you sure? You will lose your encrypted messages if your keys are not backed up properly.": "Ĉu vi certas? Vi perdos ĉiujn viajn ĉifritajn mesaĝojn, se viaj ŝlosiloj ne estas savkopiitaj.", "Encrypted messages are secured with end-to-end encryption. Only you and the recipient(s) have the keys to read these messages.": "Ĉifritaj mesaĝoj estas sekurigitaj per tutvoja ĉifrado. Nur vi kaj la ricevonto(j) havas la ŝlosilojn necesajn por legado.", @@ -1207,7 +1135,6 @@ "Add room": "Aldoni ĉambron", "You have %(count)s unread notifications in a prior version of this room.|other": "Vi havas %(count)s nelegitajn sciigojn en antaŭa versio de ĉi tiu ĉambro.", "You have %(count)s unread notifications in a prior version of this room.|one": "Vi havas %(count)s nelegitan sciigon en antaŭa versio de ĉi tiu ĉambro.", - "Your profile": "Via profilo", "Your Matrix account on ": "Via Matrix-konto sur ", "This homeserver does not support login using email address.": "Ĉi tiu hejmservilo ne subtenas saluton per retpoŝtadreso.", "Registration has been disabled on this homeserver.": "Registriĝoj malŝaltiĝis sur ĉi tiu hejmservilo.", @@ -1391,8 +1318,6 @@ "Unable to create key backup": "Ne povas krei savkopion de ŝlosiloj", "Without setting up Secure Message Recovery, you'll lose your secure message history when you log out.": "Sen agordo de Sekura rehavo de mesaĝoj, vi perdos vian sekuran historion de mesaĝoj per adiaŭo.", "Bulk options": "Amasaj elektebloj", - "Your Modular server": "Via Modular-servilo", - "Enter the location of your Modular homeserver. It may use your own domain name or be a subdomain of modular.im.": "Enigu la lokon de via Modular-hejmservilo. Ĝi povas uzi vian propran domajnan nomon aŭ esti subdomajno de modular.im.", "Invalid base_url for m.homeserver": "Nevalida base_url por m.homeserver", "Invalid base_url for m.identity_server": "Nevalida base_url por m.identity_server", "Identity Server": "Identiga servilo", @@ -1471,9 +1396,6 @@ "Code block": "Kodujo", "Set an email for account recovery. Use email or phone to optionally be discoverable by existing contacts.": "Agordi retpoŝtadreson por rehavo de konto. Uzu retpoŝton aŭ telefonon por laŭelekte troviĝi de jamaj kontaktoj.", "Set an email for account recovery. Use email to optionally be discoverable by existing contacts.": "Agordi retpoŝtadreson por rehavo de konto. Uzu retpoŝton por laŭelekte troviĝi de jamaj kontaktoj.", - "Explore": "Esplori", - "Filter": "Filtri", - "Filter rooms…": "Filtri ĉambrojn…", "Preview": "Antaŭrigardo", "View": "Rigardo", "Find a room…": "Trovi ĉambron…", @@ -1514,7 +1436,6 @@ "You are about to remove %(count)s messages by %(user)s. This cannot be undone. Do you wish to continue?|one": "Vi estas forigonta 1 mesaĝon de %(user)s. Ne eblas tion malfari. Ĉu vi volas pluigi?", "Remove %(count)s messages|one": "Forigi 1 mesaĝon", "Room %(name)s": "Ĉambro %(name)s", - "Recent rooms": "Freŝaj vizititaj ĉambroj", "An error (%(errcode)s) was returned while trying to validate your invite. You could try to pass this information on to a room admin.": "Eraris (%(errcode)s) validigo de via invito. Vi povas transdoni ĉi tiun informon al ĉambra administranto.", "This invite to %(roomName)s was sent to %(email)s which is not associated with your account": "Ĉi tiu invito al %(roomName)s sendiĝis al %(email)s, kiu ne estas ligita al via konto", "Link this email with your account in Settings to receive invites directly in %(brand)s.": "Ligu ĉi tiun retpoŝtadreson al via konto en Agordoj por ricevadi invitojn rekte per %(brand)s.", @@ -1525,7 +1446,6 @@ "%(count)s unread messages including mentions.|one": "1 nelegita mencio.", "%(count)s unread messages.|other": "%(count)s nelegitaj mesaĝoj.", "%(count)s unread messages.|one": "1 nelegita mesaĝo.", - "Unread mentions.": "Nelegitaj mencioj.", "Unread messages.": "Nelegitaj mesaĝoj.", "Failed to deactivate user": "Malsukcesis malaktivigi uzanton", "This client does not support end-to-end encryption.": "Ĉi tiu kliento ne subtenas tutvojan ĉifradon.", @@ -1637,7 +1557,6 @@ "%(num)s hours from now": "%(num)s horojn de nun", "about a day from now": "ĉirkaŭ tagon de nun", "%(num)s days from now": "%(num)s tagojn de nun", - "Lock": "Seruro", "Other users may not trust it": "Aliaj uzantoj eble ne kredas ĝin", "Later": "Pli poste", "Verify": "Kontroli", @@ -1682,8 +1601,6 @@ "Go Back": "Reiri", "Upgrade your encryption": "Gradaltigi vian ĉifradon", "Whether you're using %(brand)s on a device where touch is the primary input mechanism": "Ĉu vi uzas %(brand)son per aparato, kies ĉefa enigilo estas tuŝado", - "If you cancel now, you won't complete verifying the other user.": "Se vi nuligos nun, vi ne finos kontrolon de la alia uzanto.", - "If you cancel now, you won't complete verifying your other session.": "Se vi nuligos nun, vi ne finos kontrolon de via alia salutaĵo.", "Cancel entering passphrase?": "Ĉu nuligi enigon de pasfrazo?", "Setting up keys": "Agordo de klavoj", "Verify this session": "Kontroli ĉi tiun salutaĵon", @@ -1852,7 +1769,6 @@ "Re-request encryption keys from your other sessions.": "Repeti viajn ĉifrajn ŝlosilojn de ceteraj viaj salutaĵoj.", "Encrypted by an unverified session": "Ĉifrita de nekontrolita salutaĵo", "Encrypted by a deleted session": "Ĉifrita de forigita salutaĵo", - "Invite only": "Nur por invititaj", "Close preview": "Fermi antaŭrigardon", "Unrecognised command: %(commandText)s": "Nerekonita komando: %(commandText)s", "You can use /help to list available commands. Did you mean to send this as a message?": "Vi povas komandi /help por listigi uzeblajn komandojn. Ĉu vi intencis sendi ĉi tion kiel mesaĝon?", @@ -2085,7 +2001,6 @@ "Confirm adding this phone number by using Single Sign On to prove your identity.": "Konfirmu aldonon de ĉi tiu telefonnumero per identiĝo per ununura saluto.", "Confirm adding phone number": "Konfirmu aldonon de telefonnumero", "Click the button below to confirm adding this phone number.": "Klaku la ĉi-suban butonon por konfirmi aldonon de ĉi tiu telefonnumero.", - "If you cancel now, you won't complete your operation.": "Se vi nuligos nun, vi ne finos vian agon.", "Review where you’re logged in": "Kontrolu, kie vi salutis", "New login. Was this you?": "Nova saluto. Ĉu tio estis vi?", "%(name)s is requesting verification": "%(name)s petas kontrolon", @@ -2187,9 +2102,7 @@ "Dismiss read marker and jump to bottom": "Forigi legomarkon kaj iri al fundo", "Jump to oldest unread message": "Iri al plej malnova nelegita mesaĝo", "Upload a file": "Alŝuti dosieron", - "Create room": "Krei ĉambron", "IRC display name width": "Larĝo de vidiga nomo de IRC", - "Font scaling": "Skalado de tiparoj", "Font size": "Grando de tiparo", "Size must be a number": "Grando devas esti nombro", "Custom font size can only be between %(min)s pt and %(max)s pt": "Propra grando de tiparo povas interi nur %(min)s punktojn kaj %(max)s punktojn", @@ -2231,10 +2144,6 @@ "A new version of %(brand)s is available!": "Nova versio de %(brand)s estas disponebla!", "New version available. Update now.": "Nova versio estas disponebla. Ĝisdatigu nun.", "Emoji picker": "Elektilo de bildsignoj", - "Use your account to sign in to the latest version": "Uzu vian konton por saluti la plej freŝan version", - "We’re excited to announce Riot is now Element": "Ni ekscite anoncas, ke Riot nun estas Elemento", - "Riot is now Element!": "Riot nun estas Elemento!", - "Learn More": "Eksciu plion", "Light": "Hela", "Dark": "Malhela", "You joined the call": "Vi aliĝis al la voko", @@ -2247,51 +2156,9 @@ "%(senderName)s started a call": "%(senderName)s komencis vokon", "Waiting for answer": "Atendante respondon", "%(senderName)s is calling": "%(senderName)s vokas", - "You created the room": "Vi kreis la ĉambron", - "%(senderName)s created the room": "%(senderName)s kreis la ĉambron", - "You made the chat encrypted": "Vi ekĉifris la babilon", - "%(senderName)s made the chat encrypted": "%(senderName)s ekĉifris la babilon", - "You made history visible to new members": "Vi videbligis la historion al novaj anoj", - "%(senderName)s made history visible to new members": "%(senderName)s videbligis la historion al novaj anoj", - "You made history visible to anyone": "Vi videbligis la historion al ĉiu ajn", - "%(senderName)s made history visible to anyone": "%(senderName)s videbligis la historion al ĉiu ajn", - "You made history visible to future members": "Vi videbligis la historion al osaj anoj", - "%(senderName)s made history visible to future members": "%(senderName)s videbligis la historion al osaj anoj", - "You were invited": "Vi estis invitita", - "%(targetName)s was invited": "%(senderName)s estis invitita", - "You left": "Vi foriris", - "%(targetName)s left": "%(senderName)s foriris", - "You were kicked (%(reason)s)": "Vi estis forpelita (%(reason)s)", - "%(targetName)s was kicked (%(reason)s)": "%(targetName)s estis forpelita (%(reason)s)", - "You were kicked": "Vi estis forpelita", - "%(targetName)s was kicked": "%(targetName)s estis forpelita", - "You rejected the invite": "Vi rifuzis la inviton", - "%(targetName)s rejected the invite": "%(targetName)s rifuzis la inviton", - "You were uninvited": "Vi estis malinvitita", - "%(targetName)s was uninvited": "%(targetName)s estis malinvitita", - "You were banned (%(reason)s)": "Vi estis forbarita (%(reason)s)", - "%(targetName)s was banned (%(reason)s)": "%(targetName)s estis forbarita (%(reason)s)", - "You were banned": "Vi estis forbarita", - "%(targetName)s was banned": "%(targetName)s estis forbarita", - "You joined": "Vi aliĝis", - "%(targetName)s joined": "%(targetName)s aliĝis", - "You changed your name": "Vi ŝanĝis vian nomon", - "%(targetName)s changed their name": "%(targetName)s ŝanĝis sian nomon", - "You changed your avatar": "Vi ŝanĝis vian profilbildon", - "%(targetName)s changed their avatar": "%(targetName)s ŝanĝis sian profilbildon", - "%(senderName)s %(emote)s": "%(senderName)s %(emote)s", "%(senderName)s: %(message)s": "%(senderName)s: %(message)s", - "You changed the room name": "Vi ŝanĝis la nomon de la ĉambro", - "%(senderName)s changed the room name": "%(senderName)s ŝanĝis la nomon de la ĉambro", "%(senderName)s: %(reaction)s": "%(senderName)s: %(reaction)s", "%(senderName)s: %(stickerName)s": "%(senderName)s: %(stickerName)s", - "You uninvited %(targetName)s": "Vi malinvitis uzanton %(targetName)s", - "%(senderName)s uninvited %(targetName)s": "%(senderName)s malinvitis uzanton %(targetName)s", - "You invited %(targetName)s": "Vi invitis uzanton %(targetName)s", - "%(senderName)s invited %(targetName)s": "%(senderName)s invitis uzanton %(targetName)s", - "You changed the room topic": "Vi ŝanĝis la temon de la ĉambro", - "%(senderName)s changed the room topic": "%(senderName)s ŝanĝis la temon de la ĉambro", - "Use the improved room list (will refresh to apply changes)": "Uzi la plibonigitan ĉambrobreton (aktualigos la paĝon por apliki la ŝanĝojn)", "Use custom size": "Uzi propran grandon", "Use a more compact ‘Modern’ layout": "Uzi pli densan »Modernan« aranĝon", "Use a system font": "Uzi sisteman tiparon", @@ -2313,15 +2180,9 @@ "Appearance Settings only affect this %(brand)s session.": "Agordoj de aspekto nur efikos sur ĉi tiun salutaĵon de %(brand)s.", "Add users and servers you want to ignore here. Use asterisks to have %(brand)s match any characters. For example, @bot:* would ignore all users that have the name 'bot' on any server.": "Aldonu uzantojn kaj servilojn, kiujn vi volas malatenti, ĉi tien. Uzu steletojn por ke %(brand)s atendu iujn ajn signojn. Ekzemple, @bot:* malatentigus ĉiujn uzantojn, kiuj havas la nomon «bot» sur ĉiu ajn servilo.", "Your server admin has disabled end-to-end encryption by default in private rooms & Direct Messages.": "La administranto de via servilo malŝaltis implicitan tutvojan ĉifradon en privataj kaj rektaj ĉambroj.", - "Make this room low priority": "Doni al la ĉambro malaltan prioritaton", - "Low priority rooms show up at the bottom of your room list in a dedicated section at the bottom of your room list": "Ĉambroj kun malalta prioritato montriĝas en aparta sekcio, en la suba parto de via ĉambrobreto,", "The authenticity of this encrypted message can't be guaranteed on this device.": "La aŭtentikeco de ĉi tiu ĉifrita mesaĝo ne povas esti garantiita sur ĉi tiu aparato.", "No recently visited rooms": "Neniuj freŝdate vizititaj ĉambroj", "People": "Homoj", - "Unread rooms": "Nelegitaj ĉambroj", - "Always show first": "Ĉiam montri unuaj", - "Show": "Montri", - "Message preview": "Antaŭrigardo al mesaĝo", "Sort by": "Ordigi laŭ", "Activity": "Aktiveco", "A-Z": "A–Z", @@ -2336,11 +2197,6 @@ "Forget Room": "Forgesi ĉambron", "Room options": "Elektebloj pri ĉambro", "Message deleted on %(date)s": "Mesaĝo forigita je %(date)s", - "Use your account to sign in to the latest version of the app at ": "Uzu vian konton por saluti la plej freŝan version de la aplikaĵo je ", - "You’re already signed in and good to go here, but you can also grab the latest versions of the app on all platforms at element.io/get-started.": "Vi jam estas salutinta kaj preta ĉi tie, sed vi povas ankaŭ ekhavi la plej freŝajn versiojn de la aplikaĵoj sur ĉiuj platformoj je element.io/get-started.", - "Go to Element": "Iri al Elemento", - "We’re excited to announce Riot is now Element!": "Ni estas ekscititaj anonci, ke Riot nun estas Elemento!", - "Learn more at element.io/previously-riot": "Eksciu plion je element.io/previously-riot", "Wrong file type": "Neĝusta dosiertipo", "Looks good!": "Ŝajnas bona!", "Wrong Recovery Key": "Neĝusta rehava ŝlosilo", @@ -2362,7 +2218,6 @@ "%(brand)s Web": "%(brand)s por Reto", "%(brand)s Desktop": "%(brand)s por Labortablo", "%(brand)s iOS": "%(brand)s por iOS", - "%(brand)s X for Android": "%(brand)s X por Android", "Safeguard against losing access to encrypted messages & data by backing up encryption keys on your server.": "Malhelpu perdon de aliro al ĉifritaj mesaĝoj kaj datumoj per savkopiado de ĉifraj ŝlosiloj al via servilo.", "Generate a Security Key": "Generi sekurecan ŝlosilon", "We’ll generate a Security Key for you to store somewhere safe, like a password manager or a safe.": "Ni estigos sekurecan ŝlosilon, kiun vi devus konservi en sekura loko, ekzemple administrilo de pasvortoj, aŭ sekurŝranko.", diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json index 1619bb7616..01f71b4a95 100644 --- a/src/i18n/strings/es.json +++ b/src/i18n/strings/es.json @@ -128,9 +128,6 @@ "Failed to upload profile picture!": "¡No se pudo subir la imagen de perfil!", "Home": "Inicio", "Import": "Importar", - "Incoming call from %(name)s": "Llamada entrante de %(name)s", - "Incoming video call from %(name)s": "Llamada de vídeo entrante de %(name)s", - "Incoming voice call from %(name)s": "Llamada de voz entrante de %(name)s", "Incorrect username and/or password.": "Nombre de usuario y/o contraseña incorrectos.", "Invited": "Invitado", "Jump to first unread message.": "Ir al primer mensaje no leído.", @@ -188,7 +185,6 @@ "Submit": "Enviar", "Success": "Éxito", "The phone number entered looks invalid": "El número telefónico indicado parece erróneo", - "Active call (%(roomName)s)": "Llamada activa (%(roomName)s)", "Add a topic": "Añadir un tema", "No media permissions": "Sin permisos para el medio", "You may need to manually permit %(brand)s to access your microphone/webcam": "Probablemente necesite dar permisos manualmente a %(brand)s para su micrófono/cámara", @@ -279,7 +275,6 @@ "Unban": "Quitar Veto", "Unable to capture screen": "No es posible capturar la pantalla", "Unable to enable Notifications": "No es posible habilitar las Notificaciones", - "unknown caller": "Persona que llama desconocida", "Unnamed Room": "Sala sin nombre", "Uploading %(filename)s and %(count)s others|zero": "Subiendo %(filename)s", "Uploading %(filename)s and %(count)s others|one": "Subiendo %(filename)s y otros %(count)s", @@ -322,7 +317,6 @@ "You do not have permission to post to this room": "No tienes permiso para publicar en esta sala", "You have disabled URL previews by default.": "Ha deshabilitado la vista previa de URL por defecto.", "You have enabled URL previews by default.": "Ha habilitado vista previa de URL por defecto.", - "You have no visible notifications": "No tiene notificaciones visibles", "You must register to use this functionality": "Usted debe ser un registrar para usar esta funcionalidad", "You need to be able to invite users to do that.": "Debes ser capaz de invitar usuarios para realizar esa acción.", "You need to be logged in.": "Necesitas haber iniciado sesión.", @@ -587,7 +581,6 @@ "(~%(count)s results)|other": "(~%(count)s resultados)", "(~%(count)s results)|one": "(~%(count)s resultado)", "Share room": "Compartir sala", - "Community Invites": "Invitaciones a comunidades", "Banned by %(displayName)s": "Vetado por %(displayName)s", "Muted Users": "Usuarios Silenciados", "Members only (since the point in time of selecting this option)": "Solo miembros (desde el momento en que se selecciona esta opción)", @@ -750,11 +743,9 @@ "Share Community": "Compartir Comunidad", "Share Room Message": "Compartir el mensaje de la sala", "Link to selected message": "Enlazar a mensaje seleccionado", - "COPY": "COPIAR", "Unable to reject invite": "No se pudo rechazar la invitación", "Share Message": "Compartir mensaje", "Collapse Reply Thread": "Colapsar Hilo de Respuestas", - "There are no visible files in this room": "No hay archivos visibles en esta sala", "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "HTML para la página de tu comunidad. Usa la descripción larga para su presentación, o distribuir enlaces de interés. Puedes incluso usar etiquetas 'img'\n", "Add rooms to the community summary": "Agregar salas al resumen de la comunidad", "Which rooms would you like to add to this summary?": "¿Cuáles salas desea agregar a este resumen?", @@ -949,68 +940,6 @@ "Secure messages with this user are end-to-end encrypted and not able to be read by third parties.": "Los mensajes seguros con este usuario están cifrados punto a punto y no es posible que los lean otros.", "Verify this user by confirming the following number appears on their screen.": "Verifica a este usuario confirmando que este número aparece en su pantalla.", "Unable to find a supported verification method.": "No es posible encontrar un método de verificación soportado.", - "Dog": "Perro", - "Cat": "Gato", - "Lion": "León", - "Horse": "Caballo", - "Unicorn": "Unicornio", - "Pig": "Cerdo", - "Elephant": "Elefante", - "Rabbit": "Conejo", - "Panda": "Panda", - "Rooster": "Gallo", - "Penguin": "Pingüino", - "Turtle": "Tortuga", - "Fish": "Pez", - "Octopus": "Pulpo", - "Butterfly": "Mariposa", - "Flower": "Flor", - "Tree": "Árbol", - "Cactus": "Cactus", - "Mushroom": "Champiñón", - "Globe": "Globo", - "Moon": "Luna", - "Cloud": "Nube", - "Fire": "Fuego", - "Banana": "Plátano", - "Apple": "Manzana", - "Strawberry": "Fresa", - "Corn": "Maíz", - "Pizza": "Pizza", - "Cake": "Tarta", - "Heart": "Corazón", - "Smiley": "Sonriente", - "Robot": "Robot", - "Hat": "Sombrero", - "Glasses": "Gafas", - "Spanner": "Llave", - "Santa": "Papá Noel", - "Thumbs up": "Pulgares arriba", - "Umbrella": "Sombrilla", - "Hourglass": "Reloj de arena", - "Clock": "Reloj", - "Gift": "Regalo", - "Light bulb": "Bombilla", - "Book": "Libro", - "Pencil": "Lápiz", - "Paperclip": "Clip", - "Key": "Llave", - "Hammer": "Martillo", - "Telephone": "Teléfono", - "Flag": "Bandera", - "Train": "Tren", - "Bicycle": "Bicicleta", - "Aeroplane": "Avión", - "Rocket": "Cohete", - "Trophy": "Trofeo", - "Ball": "Balón", - "Guitar": "Guitarra", - "Trumpet": "Trompeta", - "Bell": "Campana", - "Anchor": "Ancla", - "Headphones": "Auriculares", - "Folder": "Carpeta", - "Pin": "Pin", "Yes": "Sí", "No": "No", "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.": "Te hemos enviado un mensaje para verificar tu dirección de correo. Por favor, sigue las instrucciones y después haz clic el botón de abajo.", @@ -1128,7 +1057,6 @@ "Show hidden events in timeline": "Mostrar eventos ocultos en la línea de tiempo", "Low bandwidth mode": "Modo de ancho de banda bajo", "Got It": "Entendido", - "Scissors": "Tijeras", "Call failed due to misconfigured server": "Llamada fallida debido a la mala configuración del servidor", "Please ask the administrator of your homeserver (%(homeserverDomain)s) to configure a TURN server in order for calls to work reliably.": "Por favor pídele al administrador de tu servidor doméstico (%(homeserverDomain)s) que configure un servidor TURN para que las llamadas funcionen correctamente.", "Alternatively, you can try to use the public server at turn.matrix.org, but this will not be as reliable, and it will share your IP address with that server. You can also manage this in Settings.": "Alternativamente, puedes tratar de usar el servidor público en turn.matrix.org, pero éste no será igual de confiable, y compartirá tu dirección IP con ese servidor. También puedes administrar esto en Ajustes.", @@ -1178,7 +1106,6 @@ "%(count)s unread messages including mentions.|one": "1 mención sin leer.", "%(count)s unread messages.|other": "%(count)s mensajes sin leer.", "%(count)s unread messages.|one": "1 mensaje sin leer.", - "Unread mentions.": "Menciones sin leer.", "Unread messages.": "Mensajes sin leer.", "Jump to first unread room.": "Saltar a la primera sala sin leer.", "You have %(count)s unread notifications in a prior version of this room.|other": "Tiene %(count)s notificaciones sin leer en una versión anterior de esta sala.", @@ -1202,7 +1129,6 @@ "They match": "Coinciden", "They don't match": "No coinciden", "To be secure, do this in person or use a trusted way to communicate.": "Para ser seguro, haz esto en persona o usando una forma de comunicación de confianza.", - "Lock": "Bloquear", "Verify yourself & others to keep your chats safe": "Verifícate y verifica a otros para mantener tus conversaciones seguras", "Other users may not trust it": "Puede que otros usuarios no confíen en ello", "Upgrade": "Actualizar", @@ -1316,8 +1242,6 @@ "Server or user ID to ignore": "Servidor o ID de usuario a ignorar", "eg: @bot:* or example.org": "p. ej.: @bot:* o ejemplo.org", "Your user agent": "Tu agente de usuario", - "If you cancel now, you won't complete verifying the other user.": "Si cancelas ahora, no completarás la verificación del otro usuario.", - "If you cancel now, you won't complete verifying your other session.": "Si cancelas ahora, no completarás la verificación de tu otra sesión.", "Cancel entering passphrase?": "¿Cancelar la introducción de frase de contraseña?", "%(senderName)s updated the rule banning rooms matching %(glob)s for %(reason)s": "%(senderName)s actualizó la regla bloqueando salas que coinciden con %(glob)s por %(reason)s", "%(senderName)s updated the rule banning servers matching %(glob)s for %(reason)s": "%(senderName)s actualizó la regla bloqueando servidores que coinciden con %(glob)s por %(reason)s", @@ -1433,7 +1357,6 @@ "Click the button below to confirm adding this phone number.": "Haga clic en el botón de abajo para confirmar la adición de este número de teléfono.", "Whether you're using %(brand)s on a device where touch is the primary input mechanism": "Si estés usando %(brand)s en un dispositivo donde una pantalla táctil es el principal mecanismo de entrada", "Whether you're using %(brand)s as an installed Progressive Web App": "Si estás usando %(brand)s como una Aplicación Web Progresiva instalada", - "If you cancel now, you won't complete your operation.": "Si cancela ahora, no completará la operación.", "Review where you’re logged in": "Revise dónde hizo su registro", "New login. Was this you?": "Nuevo registro. ¿Fuiste tú?", "%(name)s is requesting verification": "%(name)s solicita verificación", @@ -1706,7 +1629,6 @@ "Encrypted by an unverified session": "Encriptado por una sesión no verificada", "Unencrypted": "Sin encriptación", "Encrypted by a deleted session": "Encriptado por una sesión eliminada", - "Invite only": "Sólamente por invitación", "Scroll to most recent messages": "Desplácese a los mensajes más recientes", "Close preview": "Cerrar vista previa", "No recent messages by %(user)s found": "No se han encontrado mensajes recientes de %(user)s", @@ -1729,7 +1651,6 @@ "Strikethrough": "Tachado", "Code block": "Bloque de código", "Room %(name)s": "Sala %(name)s", - "Recent rooms": "Salas recientes", "Direct Messages": "Mensaje Directo", "Loading room preview": "Cargando vista previa de la sala", "An error (%(errcode)s) was returned while trying to validate your invite. You could try to pass this information on to a room admin.": "Un código de error (%(errcode)s) fue devuelto al tratar de validar su invitación. Podrías intentar pasar esta información a un administrador de la sala.", @@ -1946,8 +1867,6 @@ "Please review and accept all of the homeserver's policies": "Por favor, revise y acepte todas las políticas del servidor doméstico", "Please review and accept the policies of this homeserver:": "Por favor revise y acepte las políticas de este servidor doméstico:", "Unable to validate homeserver/identity server": "No se pudo validar el servidor doméstico/servidor de identidad", - "Your Modular server": "Su servidor modular", - "Enter the location of your Modular homeserver. It may use your own domain name or be a subdomain of modular.im.": "Introduzca la ubicación de su Servidor Modular Doméstico. Este puede usar su propio nombre de dominio o ser un subdominio de modular.im.", "Server Name": "Nombre del servidor", "The username field must not be blank.": "El campo del nombre de usuario no puede estar en blanco.", "Username": "Nombre de usuario", @@ -1995,9 +1914,6 @@ "Send a Direct Message": "Envía un mensaje directo", "Explore Public Rooms": "Explorar salas públicas", "Create a Group Chat": "Crear un chat grupal", - "Explore": "Explorar", - "Filter": "Filtrar", - "Filter rooms…": "Filtrar salas…", "Self-verification request": "Solicitud de auto-verificación", "%(creator)s created and configured the room.": "Sala creada y configurada por %(creator)s.", "%(brand)s failed to get the protocol list from the homeserver. The homeserver may be too old to support third party networks.": "%(brand)s no logró obtener la lista de protocolo del servidor doméstico. El servidor doméstico puede ser demasiado viejo para admitir redes de terceros.", @@ -2012,7 +1928,6 @@ "Jump to first invite.": "Salte a la primera invitación.", "Add room": "Añadir sala", "Guest": "Invitado", - "Your profile": "Su perfil", "Could not load user profile": "No se pudo cargar el perfil de usuario", "Verify this login": "Verifique este inicio de sesión", "Session verified": "Sesión verificada", @@ -2055,25 +1970,5 @@ "You started a call": "Has iniciado una llamada", "%(senderName)s started a call": "%(senderName)s inicio una llamada", "Waiting for answer": "Esperado por una respuesta", - "%(senderName)s is calling": "%(senderName)s está llamando", - "%(senderName)s created the room": "%(senderName)s creo la sala", - "You were invited": "Has sido invitado", - "%(targetName)s was invited": "%(targetName)s ha sido invitado", - "%(targetName)s left": "%(targetName)s se ha ido", - "You were kicked (%(reason)s)": "Has sido expulsado por %(reason)s", - "You rejected the invite": "Has rechazado la invitación", - "%(targetName)s rejected the invite": "%(targetName)s rechazo la invitación", - "You were banned (%(reason)s)": "Has sido baneado por %(reason)s", - "%(targetName)s was banned (%(reason)s)": "%(targetName)s fue baneado por %(reason)s", - "You were banned": "Has sido baneado", - "%(targetName)s was banned": "%(targetName)s fue baneado", - "You joined": "Te has unido", - "%(targetName)s joined": "%(targetName)s se ha unido", - "You changed your name": "Has cambiado tu nombre", - "%(targetName)s changed their name": "%(targetName)s cambio su nombre", - "You changed your avatar": "Ha cambiado su avatar", - "%(targetName)s changed their avatar": "%(targetName)s ha cambiado su avatar", - "You changed the room name": "Has cambiado el nombre de la sala", - "%(senderName)s changed the room name": "%(senderName)s cambio el nombre de la sala", - "You invited %(targetName)s": "Has invitado a %(targetName)s" + "%(senderName)s is calling": "%(senderName)s está llamando" } diff --git a/src/i18n/strings/et.json b/src/i18n/strings/et.json index 95253f5256..9441839e22 100644 --- a/src/i18n/strings/et.json +++ b/src/i18n/strings/et.json @@ -68,7 +68,6 @@ "Send an encrypted message…": "Saada krüptitud sõnum…", "Send a message…": "Saada sõnum…", "The conversation continues here.": "Vestlus jätkub siin.", - "Recent rooms": "Hiljutised jututoad", "No rooms to show": "Ei saa kuvada ühtegi jututuba", "Direct Messages": "Isiklikud sõnumid", "Start chat": "Alusta vestlust", @@ -124,8 +123,6 @@ "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Neid jututubasid kuvatakse kogukonna liikmetele kogukonna lehel. Liikmed saavad nimetatud jututubadega liituda neil klõpsides.", "Featured Rooms:": "Esiletõstetud jututoad:", "Explore Public Rooms": "Sirvi avalikke jututubasid", - "Explore": "Uuri", - "Filter rooms…": "Filtreeri jututubasid…", "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Liites kokku kasutajaid ja jututubasid loo oma kogukond! Loo kogukonna koduleht, et märkida oma koht Matrix'i universumis.", "Explore rooms": "Uuri jututubasid", "If you've joined lots of rooms, this might take a while": "Kui oled liitunud paljude jututubadega, siis see võib natuke aega võtta", @@ -215,7 +212,6 @@ "Remove for me": "Eemalda minult", "User Status": "Kasutaja olek", "You must join the room to see its files": "Failide nägemiseks pead jututoaga liituma", - "There are no visible files in this room": "Jututoas pole nähtavaid faile", "Failed to remove the room from the summary of %(groupId)s": "Jututoa eemaldamine %(groupId)s kogukonna ülevaatelehelt ebaõnnestus", "Failed to remove a user from the summary of %(groupId)s": "Kasutaja eemaldamine %(groupId)s kogukonna ülevaatelehelt ebaõnnestus", "Create a Group Chat": "Loo rühmavestlus", @@ -273,7 +269,6 @@ "Share Community": "Jaga viidet kogukonna kohta", "Share Room Message": "Jaga jututoa sõnumit", "Link to selected message": "Viide valitud sõnumile", - "COPY": "KOPEERI", "Command Help": "Abiteave käskude kohta", "To help us prevent this in future, please send us logs.": "Tagamaks et sama ei juhtuks tulevikus, palun saada meile salvestatud logid.", "Missing session data": "Sessiooni andmed on puudu", @@ -292,7 +287,6 @@ "powered by Matrix": "põhineb Matrix'il", "Custom Server Options": "Serveri kohaldatud seadistused", "Missing captcha public key in homeserver configuration. Please report this to your homeserver administrator.": "Robotilõksu avalik võti on puudu koduserveri seadistustes. Palun teata sellest oma koduserveri haldurile.", - "Filter": "Filtreeri", "Clear filter": "Eemalda filter", "Copy": "Kopeeri", "Clear room list filter field": "Tühjenda jututubade filtriväli", @@ -408,7 +402,6 @@ "Forget room": "Unusta jututuba", "Search": "Otsing", "Share room": "Jaga jututuba", - "Community Invites": "Kutsed kogukonda", "Invites": "Kutsed", "Favourites": "Lemmikud", "Low priority": "Vähetähtis", @@ -554,7 +547,6 @@ "Unencrypted": "Krüptimata", "Encrypted by a deleted session": "Krüptitud kustutatud sessiooni poolt", "Please select the destination room for this message": "Palun vali jututuba, kuhu soovid seda sõnumit saata", - "Invite only": "Ainult kutse", "Scroll to most recent messages": "Mine viimaste sõnumite juurde", "Close preview": "Sulge eelvaade", "Disinvite": "Eemalda kutse", @@ -571,7 +563,6 @@ "Click to mute video": "Klõpsi video heli summutamiseks", "Click to unmute audio": "Klõpsi heli taastamiseks", "Click to mute audio": "Klõpsi heli summutamiseks", - "Your profile": "Sinu profiil", "How fast should messages be downloaded.": "Kui kiiresti peaksime sõnumeid alla laadima.", "Error downloading theme information.": "Viga teema teabefaili allalaadimisel.", "Close": "Sulge", @@ -782,10 +773,6 @@ "Show avatars in user and room mentions": "Näita avatare kasutajate ja jututubade mainimistes", "Manually verify all remote sessions": "Verifitseeri käsitsi kõik välised sessioonid", "Collecting app version information": "Kogun teavet rakenduse versiooni kohta", - "unknown caller": "tundmatu helistaja", - "Incoming voice call from %(name)s": "Saabuv häälkõne kasutajalt %(name)s", - "Incoming video call from %(name)s": "Saabuv videokõne kasutajalt %(name)s", - "Incoming call from %(name)s": "Saabuv kõne kasutajalt %(name)s", "Decline": "Keeldu", "Accept": "Võta vastu", "The other party cancelled the verification.": "Teine osapool tühistas verifitseerimise.", @@ -807,70 +794,6 @@ "They match": "Nad klapivad", "They don't match": "Nad ei klapi", "To be secure, do this in person or use a trusted way to communicate.": "Turvalisuse mõttes on oluline, et teed seda nii, et kas olete üheskoos või kasutate suhtluskanalit, mida mõlemad usaldate.", - "Dog": "Koer", - "Cat": "Kass", - "Lion": "Lõvi", - "Horse": "Hobune", - "Unicorn": "Ükssarvik", - "Pig": "Siga", - "Elephant": "Elevant", - "Rabbit": "Jänes", - "Panda": "Panda", - "Rooster": "Kukk", - "Penguin": "Pingviin", - "Turtle": "Kilpkonn", - "Fish": "Kala", - "Octopus": "Kaheksajalg", - "Butterfly": "Liblikas", - "Flower": "Lill", - "Tree": "Puu", - "Cactus": "Kaktus", - "Mushroom": "Seen", - "Globe": "Maakera", - "Moon": "Kuu", - "Cloud": "Pilv", - "Fire": "Tuli", - "Banana": "Banaan", - "Apple": "Õun", - "Strawberry": "Maasikas", - "Corn": "Mais", - "Pizza": "Pitsa", - "Cake": "Kook", - "Heart": "Süda", - "Smiley": "Smaili", - "Robot": "Robot", - "Hat": "Müts", - "Glasses": "Prillid", - "Spanner": "Mutrivõti", - "Santa": "Jõuluvana", - "Thumbs up": "Pöidlad püsti", - "Umbrella": "Vihmavari", - "Hourglass": "Liivakell", - "Clock": "Kell", - "Gift": "Kingitus", - "Light bulb": "Lambipirn", - "Book": "Raamat", - "Pencil": "Pliiats", - "Paperclip": "Kirjaklamber", - "Scissors": "Käärid", - "Lock": "Lukk", - "Key": "Võti", - "Hammer": "Haamer", - "Telephone": "Telefon", - "Flag": "Lipp", - "Train": "Rong", - "Bicycle": "Jalgratas", - "Aeroplane": "Lennuk", - "Rocket": "Rakett", - "Trophy": "Auhind", - "Ball": "Pall", - "Guitar": "Kitarr", - "Trumpet": "Trompet", - "Bell": "Kelluke", - "Anchor": "Ankur", - "Headphones": "Kõrvaklapid", - "Folder": "Kaust", - "Pin": "Knopka", "Verify all your sessions to ensure your account & messages are safe": "Selleks et sinu konto ja sõnumid oleks turvatud, verifitseeri kõik oma sessioonid", "Later": "Hiljem", "Review": "Vaata üle", @@ -971,7 +894,6 @@ "Logout": "Logi välja", "Your Communities": "Sinu kogukonnad", "Error whilst fetching joined communities": "Viga nende kogukondade laadimisel, millega sa oled liitunud", - "You have no visible notifications": "Sul ei ole nähtavaid teavitusi", "%(brand)s failed to get the protocol list from the homeserver. The homeserver may be too old to support third party networks.": "%(brand)s'il ei õnnestunud koduserverist laadida toetatud protokollide loendit. Toetamaks kolmandate osapoolte võrke võib koduserver olla liiga vana.", "%(brand)s failed to get the public room list.": "%(brand)s'il ei õnnestunud laadida avalike jututubade loendit.", "The homeserver may be unavailable or overloaded.": "Koduserver pole kas saadaval või on üle koormatud.", @@ -1091,7 +1013,6 @@ "%(count)s unread messages including mentions.|other": "%(count)s lugemata sõnumit kaasa arvatud mainimised.", "%(count)s unread messages.|other": "%(count)s lugemata teadet.", "%(count)s unread messages.|one": "1 lugemata teade.", - "Unread mentions.": "Lugemata mainimised.", "Unread messages.": "Lugemata sõnumid.", "Add a topic": "Lisa teema", "Upgrading this room will shut down the current instance of the room and create an upgraded room with the same name.": "Selle jututoa versiooni uuendamine sulgeb tema praeguse instantsi ja loob sama nimega uuendatud jututoa.", @@ -1329,9 +1250,6 @@ "Server may be unavailable, overloaded, or you hit a bug.": "Server kas pole võrgus või on üle koormatud, aga võib-olla oled komistanud süsteemivea otsa.", "The server does not support the room version specified.": "See server ei toeta antud jututoa versiooni.", "Failure to create room": "Jututoa loomine ei õnnestunud", - "If you cancel now, you won't complete verifying the other user.": "Kui sa katkestad nüüd, siis sul jääb teise kasutaja verifitseerimine lõpetamata.", - "If you cancel now, you won't complete verifying your other session.": "Kui sa katkestad nüüd, siis sul jääb oma muu sessiooni verifitseerimine lõpetamata.", - "If you cancel now, you won't complete your operation.": "Kui sa katkestad nüüd, siis sul jääb pooleliolev tegevus lõpetamata.", "Cancel entering passphrase?": "Kas katkestame paroolifraasi sisestamise?", "Enter passphrase": "Sisesta paroolifraas", "Setting up keys": "Võtamevõtmed kasutusele", @@ -1445,7 +1363,6 @@ "Sorry, your homeserver is too old to participate in this room.": "Vabandust, sinu koduserver on siin jututoas osalemiseks liiga vana.", "Please contact your homeserver administrator.": "Palun võta ühendust koduserveri haldajaga.", "Failed to join room": "Jututoaga liitumine ei õnnestunud", - "Font scaling": "Fontide skaleerimine", "Custom user status messages": "Kasutajate kohandatud olekuteated", "Font size": "Fontide suurus", "Enable automatic language detection for syntax highlighting": "Kasuta süntaksi esiletõstmisel automaatset keeletuvastust", @@ -1476,8 +1393,6 @@ "Italics": "Kaldkiri", "Strikethrough": "Läbikriipsutus", "Code block": "Koodiplokk", - "Show": "Näita", - "Message preview": "Sõnumi eelvaade", "List options": "Loendi valikud", "Show %(count)s more|other": "Näita veel %(count)s sõnumit", "Show %(count)s more|one": "Näita veel %(count)s sõnumit", @@ -1556,8 +1471,6 @@ "Submit": "Saada", "Start authentication": "Alusta autentimist", "Unable to validate homeserver/identity server": "Ei õnnestu valideerida koduserverit/isikutuvastusserverit", - "Your Modular server": "Sinu Modular-server", - "Enter the location of your Modular homeserver. It may use your own domain name or be a subdomain of modular.im.": "Sisesta oma Modular'i koduserveri aadress. See võib kasutada nii sinu oma domeeni, kui olla modular.im alamdomeen.", "Sign in with SSO": "Logi sisse kasutades SSO'd ehk ühekordset autentimist", "Failed to reject invitation": "Kutse tagasi lükkamine ei õnnestunud", "This room is not public. You will not be able to rejoin without an invite.": "See ei ole avalik jututuba. Ilma kutseta sa ei saa uuesti liituda.", @@ -1641,47 +1554,9 @@ "%(senderName)s started a call": "%(senderName)s alustas kõnet", "Waiting for answer": "Ootan kõnele vastamist", "%(senderName)s is calling": "%(senderName)s helistab", - "You created the room": "Sa lõid jututoa", - "%(senderName)s created the room": "%(senderName)s lõi jututoa", - "You made the chat encrypted": "Sina võtsid vestlusel kasutuse krüptimise", - "%(senderName)s made the chat encrypted": "%(senderName)s võttis vestlusel kasutuse krüptimise", - "You made history visible to new members": "Sina tegid jututoa ajaloo loetavaks uuetele liikmetele", - "%(senderName)s made history visible to new members": "%(senderName)s tegi jututoa ajaloo loetavaks uuetele liikmetele", - "You made history visible to anyone": "Sina tegi jututoa ajaloo loetavaks kõikidele", - "%(senderName)s made history visible to anyone": "%(senderName)s tegi jututoa ajaloo loetavaks kõikidele", - "You made history visible to future members": "Sina tegid jututoa ajaloo loetavaks tulevastele liikmetele", - "%(senderName)s made history visible to future members": "%(senderName)s tegi jututoa ajaloo loetavaks tulevastele liikmetele", - "You were invited": "Sina said kutse", - "%(targetName)s was invited": "%(targetName)s sai kutse", - "You left": "Sina lahkusid", - "%(targetName)s left": "%(targetName)s lahkus", - "You were kicked (%(reason)s)": "Sind müksati jututoast välja (%(reason)s)", - "%(targetName)s was kicked (%(reason)s)": "%(targetName)s müksati jututoast välja (%(reason)s)", - "You were kicked": "Sind müksati jututoast välja", - "%(targetName)s was kicked": "%(targetName)s müksati jututoast välja", - "You rejected the invite": "Sa lükkasid kutse tagasi", - "%(targetName)s rejected the invite": "%(targetName)s lükkas kutse tagasi", - "You were uninvited": "Sinult võeti kutse tagasi", - "%(targetName)s was uninvited": "%(targetName)s'lt võeti kutse tagasi", - "You joined": "Sina liitusid", - "%(targetName)s joined": "%(targetName)s liitus", - "You changed your name": "Sa muutsid oma nime", - "%(targetName)s changed their name": "%(targetName)s muutis oma nime", - "You changed your avatar": "Sa muutsid oma tunnuspilti", - "%(targetName)s changed their avatar": "%(targetName)s muutis oma tunnuspilti", - "%(senderName)s %(emote)s": "%(senderName)s %(emote)s", "%(senderName)s: %(message)s": "%(senderName)s: %(message)s", - "You changed the room name": "Sina muutsid jututoa nime", - "%(senderName)s changed the room name": "%(senderName)s muutis jututoa nime", "%(senderName)s: %(reaction)s": "%(senderName)s: %(reaction)s", "%(senderName)s: %(stickerName)s": "%(senderName)s: %(stickerName)s", - "You uninvited %(targetName)s": "Sina võtsid tagasi kutse kasutajalt %(targetName)s", - "%(senderName)s uninvited %(targetName)s": "%(senderName)s võttis kutse tagasi kasutajalt %(targetName)s", - "You invited %(targetName)s": "Sina kutsusid kasutajat %(targetName)s", - "%(senderName)s invited %(targetName)s": "%(senderName)s kutsus kasutajat %(targetName)s", - "You changed the room topic": "Sina muutsid jututoa teemat", - "%(senderName)s changed the room topic": "%(senderName)s muutis jututoa teemat", - "Use the improved room list (will refresh to apply changes)": "Kasuta parandaatud jututubade loendit (muudatuse jõustamine eeldab andmete uuesti laadimist)", "Use custom size": "Kasuta kohandatud suurust", "Use a more compact ‘Modern’ layout": "Kasuta veel kompaktsemat „moodsat“ paigutust", "Cross-signing public keys:": "Avalikud võtmed risttunnustamise jaoks:", @@ -1787,16 +1662,11 @@ "Ok": "Sobib", "Set password": "Määra salasõna", "To return to your account in future you need to set a password": "Selleks, et sa saaksid tulevikus oma konto juurde tagasi pöörduda, peaksid määrama salasõna", - "You were banned (%(reason)s)": "Sinule on seatud ligipääsukeeld %(reason)s", - "%(targetName)s was banned (%(reason)s)": "%(targetName)s seati ligipääsukeeld %(reason)s", - "You were banned": "Sinule seati ligipääsukeeld", - "%(targetName)s was banned": "%(targetName)s'le seati ligipääsukeeld", "New spinner design": "Uus vurri-moodi paigutus", "Message Pinning": "Sõnumite klammerdamine", "IRC display name width": "IRC kuvatava nime laius", "Enable experimental, compact IRC style layout": "Võta kasutusele katseline, IRC-stiilis kompaktne sõnumite paigutus", "My Ban List": "Minu poolt seatud ligipääsukeeldude loend", - "Active call (%(roomName)s)": "Käsilolev kõne (%(roomName)s)", "Unknown caller": "Tundmatu helistaja", "Incoming voice call": "Saabuv häälkõne", "Incoming video call": "Saabuv videokõne", @@ -1881,8 +1751,6 @@ "Room ID or address of ban list": "Ligipääsukeelu reeglite loendi jututoa tunnus või aadress", "Show tray icon and minimize window to it on close": "Näita süsteemisalve ikooni ja Element'i akna sulgemisel minimeeri ta salve", "Read Marker off-screen lifetime (ms)": "Lugemise markeri iga, kui Element pole fookuses (ms)", - "Make this room low priority": "Muuda see jututuba vähetähtsaks", - "Low priority rooms show up at the bottom of your room list in a dedicated section at the bottom of your room list": "Vähetähtsad jututoad kuvatakse jututubade loendi lõpus omaette grupina", "Failed to unban": "Ligipääsu taastamine ei õnnestunud", "Unban": "Taasta ligipääs", "Banned by %(displayName)s": "Ligipääs on keelatud %(displayName)s poolt", @@ -1909,10 +1777,7 @@ "Pinned Messages": "Klammerdatud sõnumid", "Unpin Message": "Eemalda sõnumi klammerdus", "No recently visited rooms": "Hiljuti külastatud jututubasid ei leidu", - "Create room": "Loo jututuba", "People": "Inimesed", - "Unread rooms": "Lugemata jututoad", - "Always show first": "Näita alati esimisena", "Error creating address": "Viga aadressi loomisel", "There was an error creating that address. It may not be allowed by the server or a temporary failure occurred.": "Aadressi loomisel tekkis viga. See kas on serveri poolt keelatud või tekkis ajutine tõrge.", "You don't have permission to delete the address.": "Sinul pole õigusi selle aadressi kustutamiseks.", @@ -2071,17 +1936,10 @@ "Access your secure message history and set up secure messaging by entering your recovery passphrase.": "Sisestades taastamiseks mõeldud paroolifraasi, saad ligipääsu oma turvatud sõnumitele ning sätid üles krüptitud sõnumivahetuse.", "If you've forgotten your recovery passphrase you can use your recovery key or set up new recovery options": "Kui sa oled unudtanud taastamiseks mõeldud paroolifraasi, siis sa saad kasutada oma taastevõtit või seadistada uued taastamise võimalused", "Warning: You should only set up key backup from a trusted computer.": "Hoiatus: Sa peaksid võtmete varundust seadistama vaid arvutist, mida sa usaldad.", - "We’re excited to announce Riot is now Element": "Meil on hea meel teatada, et Riot'i uus nimi on nüüd Element", - "Riot is now Element!": "Riot'i uus nimi on Element!", "Secret storage public key:": "Turvahoidla avalik võti:", "Verify User": "Verifitseeri kasutaja", "For extra security, verify this user by checking a one-time code on both of your devices.": "Lisaturvalisus mõttes verifitseeri see kasutaja võrreldes selleks üheks korraks loodud koodi mõlemas seadmes.", "Your messages are not secure": "Sinu sõnumid ei ole turvatud", - "Use your account to sign in to the latest version of the app at ": "Kasuta oma kontot logimaks sisse rakenduse viimasesse versiooni serveris", - "You’re already signed in and good to go here, but you can also grab the latest versions of the app on all platforms at element.io/get-started.": "Sa oled juba sisse loginud ja võid rahumeeli jätkata, kuid alati on hea mõte, kui kasutad viimast rakenduse versiooni, mille erinevate süsteemide jaoks leiad element.io/get-started lehelt.", - "Go to Element": "Võta Element kasutusele", - "We’re excited to announce Riot is now Element!": "Meil on hea meel teatada, et Riot'i uus nimi on nüüd Element!", - "Learn more at element.io/previously-riot": "Lisateavet leiad element.io/previously-riot lehelt", "Access your secure message history and set up secure messaging by entering your recovery key.": "Pääse ligi oma turvatud sõnumitele ning säti üles krüptitud sõnumivahetus.", "If you've forgotten your recovery key you can ": "Kui sa oled unustanud oma taastevõtme, siis sa võid ", "Custom": "Kohandatud", @@ -2158,8 +2016,6 @@ "Forget Room": "Unusta jututuba ära", "Which officially provided instance you are using, if any": "Mis iganes ametlikku klienti sa kasutad, kui üldse kasutad", "Whether you're using %(brand)s on a device where touch is the primary input mechanism": "Kui kasutad %(brand)s seadmes, kus puuteekraan on põhiline sisestusviis", - "Use your account to sign in to the latest version": "Kasuta oma kontot selleks, et sisse logida rakenduse viimasesse versiooni", - "Learn More": "Lisateave", "Upgrades a room to a new version": "Uuendab jututoa uue versioonini", "You do not have the required permissions to use this command.": "Sul ei ole piisavalt õigusi selle käsu käivitamiseks.", "Error upgrading room": "Viga jututoa uuendamisel", @@ -2344,7 +2200,6 @@ "%(brand)s Web": "%(brand)s Web", "%(brand)s Desktop": "%(brand)s Desktop", "%(brand)s iOS": "%(brand)s iOS", - "%(brand)s X for Android": "%(brand)s X Androidi jaoks", "Starting backup...": "Alusta varundamist...", "Success!": "Õnnestus!", "Create key backup": "Tee võtmetest varukoopia", diff --git a/src/i18n/strings/eu.json b/src/i18n/strings/eu.json index 2740ea2079..2867dd0678 100644 --- a/src/i18n/strings/eu.json +++ b/src/i18n/strings/eu.json @@ -97,7 +97,6 @@ "Moderator": "Moderatzailea", "Account": "Kontua", "Access Token:": "Sarbide tokena:", - "Active call (%(roomName)s)": "Dei aktiboa (%(roomName)s)", "Add": "Gehitu", "Add a topic": "Gehitu mintzagai bat", "Admin": "Kudeatzailea", @@ -170,15 +169,12 @@ "Fill screen": "Bete pantaila", "Forget room": "Ahaztu gela", "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s %(fromPowerLevel)s mailatik %(toPowerLevel)s mailara", - "Incoming call from %(name)s": "%(name)s erabiltzailearen deia jasotzen", - "Incoming video call from %(name)s": "%(name)s erabiltzailearen bideo deia jasotzen", "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s erabiltzaileak %(displayName)s erabiltzailearen gonbidapena onartu du.", "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Ezin da hasiera zerbitzarira konektatu, egiaztatu zure konexioa, ziurtatu zure hasiera zerbitzariaren SSL ziurtagiria fidagarritzat jotzen duela zure gailuak, eta nabigatzailearen pluginen batek ez dituela eskaerak blokeatzen.", "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Ezin zara hasiera zerbitzarira HTTP bidez konektatu zure nabigatzailearen barran dagoen URLa HTTS bada. Erabili HTTPS edo gaitu script ez seguruak.", "%(senderName)s changed their profile picture.": "%(senderName)s erabiltzaileak bere profileko argazkia aldatu du.", "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s erabiltzaileak botere mailaz aldatu du %(powerLevelDiffText)s.", "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s erabiltzaileak gelaren izena aldatu du, orain %(roomName)s da.", - "Incoming voice call from %(name)s": "%(name)s erabiltzailearen deia jasotzen", "Incorrect username and/or password.": "Erabiltzaile-izen edo pasahitz okerra.", "Incorrect verification code": "Egiaztaketa kode okerra", "Invalid Email Address": "E-mail helbide baliogabea", @@ -263,7 +259,6 @@ "%(senderName)s unbanned %(targetName)s.": "%(senderName)s erabiltzaileak debekua kendu dio %(targetName)s erabiltzaileari.", "Unable to capture screen": "Ezin izan da pantaila-argazkia atera", "Unable to enable Notifications": "Ezin izan dira jakinarazpenak gaitu", - "unknown caller": "deitzaile ezezaguna", "Unmute": "Audioa aktibatu", "Unnamed Room": "Izen gabeko gela", "Uploading %(filename)s and %(count)s others|zero": "%(filename)s igotzen", @@ -292,7 +287,6 @@ "You cannot place VoIP calls in this browser.": "Ezin dituzu VoIP deiak egin nabigatzaile honekin.", "You have disabled URL previews by default.": "Lehenetsita URLak aurreikustea desgaitu duzu.", "You have enabled URL previews by default.": "Lehenetsita URLak aurreikustea gaitu duzu.", - "You have no visible notifications": "Ez daukazu jakinarazpen ikusgairik", "You must register to use this functionality": "Funtzionaltasun hau erabiltzeko erregistratu", "You need to be able to invite users to do that.": "Erabiltzaileak gonbidatzeko baimena behar duzu hori egiteko.", "You need to be logged in.": "Saioa hasi duzu.", @@ -326,7 +320,6 @@ "Upload an avatar:": "Igo abatarra:", "This server does not support authentication with a phone number.": "Zerbitzari honek ez du telefono zenbakia erabiliz autentifikatzea onartzen.", "An error occurred: %(error_string)s": "Errore bat gertatu da: %(error_string)s", - "There are no visible files in this room": "Ez dago fitxategirik ikusgai gela honetan", "Sent messages will be stored until your connection has returned.": "Bidalitako mezuak zure konexioa berreskuratu arte gordeko dira.", "(~%(count)s results)|one": "(~%(count)s emaitza)", "(~%(count)s results)|other": "(~%(count)s emaitza)", @@ -469,7 +462,6 @@ "World readable": "Munduak irakurgarria", "Guests can join": "Bisitariak elkartu daitezke", "No rooms to show": "Ez dago gelarik erakusteko", - "Community Invites": "Komunitate gonbidapenak", "Members only (since the point in time of selecting this option)": "Kideek besterik ez (aukera hau hautatzen den unetik)", "Members only (since they were invited)": "Kideek besterik ez (gonbidatu zaienetik)", "Members only (since they joined)": "Kideek besterik ez (elkartu zirenetik)", @@ -817,7 +809,6 @@ "Share Community": "Partekatu komunitatea", "Share Room Message": "Partekatu gelako mezua", "Link to selected message": "Esteka hautatutako mezura", - "COPY": "KOPIATU", "Share Message": "Partekatu mezua", "No Audio Outputs detected": "Ez da audio irteerarik antzeman", "Audio Output": "Audio irteera", @@ -996,51 +987,6 @@ "Verified!": "Egiaztatuta!", "You've successfully verified this user.": "Ongi egiaztatu duzu erabiltzaile hau.", "Got It": "Ulertuta", - "Dog": "Txakurra", - "Cat": "Katua", - "Lion": "Lehoia", - "Horse": "Zaldia", - "Unicorn": "Unikornioa", - "Pig": "Txerria", - "Elephant": "Elefantea", - "Rabbit": "Untxia", - "Panda": "Panda hartza", - "Rooster": "Oilarra", - "Penguin": "Pinguinoa", - "Turtle": "Dordoka", - "Fish": "Arraina", - "Octopus": "Olagarroa", - "Butterfly": "Tximeleta", - "Flower": "Lorea", - "Tree": "Zuhaitza", - "Cactus": "Kaktusa", - "Mushroom": "Perretxikoa", - "Globe": "Lurra", - "Moon": "Ilargia", - "Cloud": "Hodeia", - "Fire": "Sua", - "Banana": "Banana", - "Apple": "Sagarra", - "Strawberry": "Marrubia", - "Corn": "Artoa", - "Pizza": "Pizza", - "Cake": "Pastela", - "Heart": "Bihotza", - "Smiley": "Irrifartxoa", - "Robot": "Robota", - "Hat": "Txanoa", - "Glasses": "Betaurrekoak", - "Spanner": "Giltza", - "Santa": "Santa", - "Umbrella": "Aterkia", - "Clock": "Erlojua", - "Gift": "Oparia", - "Light bulb": "Bonbilla", - "Book": "Liburua", - "Pencil": "Arkatza", - "Key": "Giltza", - "Hammer": "Mailua", - "Telephone": "Telefonoa", "Room avatar": "Gelaren abatarra", "Room Name": "Gelaren izena", "Room Topic": "Gelaren mintzagaia", @@ -1049,8 +995,6 @@ "Update status": "Eguneratu egoera", "Set status": "Ezarri egoera", "This homeserver would like to make sure you are not a robot.": "Hasiera-zerbitzari honek robota ez zarela egiaztatu nahi du.", - "Your Modular server": "Zure Modular zerbitzaria", - "Enter the location of your Modular homeserver. It may use your own domain name or be a subdomain of modular.im.": "Sartu zure Modular hasiera-zerbitzariaren helbidea. Zure domeinua erabili dezake edo modular.imren azpi-domeinua izan daiteke.", "Server Name": "Zerbitzariaren izena", "The username field must not be blank.": "Erabiltzaile-izena eremua ezin da hutsik egon.", "Username": "Erabiltzaile-izena", @@ -1116,19 +1060,6 @@ "Back up your keys before signing out to avoid losing them.": "Egin gakoen babes-kopia bat saioa amaitu aurretik, galdu nahi ez badituzu.", "Backing up %(sessionsRemaining)s keys...": "%(sessionsRemaining)s gakoen babes-kopia egiten…", "All keys backed up": "Gako guztien babes.kopia egin da", - "Headphones": "Aurikularrak", - "Folder": "Karpeta", - "Flag": "Bandera", - "Train": "Trena", - "Bicycle": "Bizikleta", - "Aeroplane": "Hegazkina", - "Rocket": "Kohetea", - "Trophy": "Saria", - "Ball": "Baloia", - "Guitar": "Gitarra", - "Trumpet": "Tronpeta", - "Bell": "Kanpaia", - "Anchor": "Aingura", "Credits": "Kredituak", "%(senderDisplayName)s changed the join rule to %(rule)s": "%(senderDisplayName)s erabiltzaileak elkartzeko araua aldatu du: %(rule)s", "%(senderDisplayName)s has allowed guests to join the room.": "%(senderDisplayName)s erabiltzaileak bisitariak gelara elkartzea baimendu du.", @@ -1138,10 +1069,6 @@ "Verify this user by confirming the following emoji appear on their screen.": "Egiaztatu erabiltzaile hau beheko emojiak bere pantailan agertzen direla baieztatuz.", "Verify this user by confirming the following number appears on their screen.": "Egiaztatu erabiltzaile hau honako zenbakia bere pantailan agertzen dela baieztatuz.", "Unable to find a supported verification method.": "Ezin izan da onartutako egiaztaketa metodorik aurkitu.", - "Thumbs up": "Ederto", - "Hourglass": "Harea-erlojua", - "Paperclip": "Klipa", - "Pin": "Txintxeta", "Yes": "Bai", "No": "Ez", "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.": "E-mail bat bidali dizugu zure helbidea egiaztatzeko. Jarraitu hango argibideak eta gero sakatu beheko botoia.", @@ -1197,7 +1124,6 @@ "User %(userId)s is already in the room": "%(userId)s erabiltzailea gelan dago jada", "The user must be unbanned before they can be invited.": "Erabiltzaileari debekua kendu behar zaio gonbidatu aurretik.", "Show read receipts sent by other users": "Erakutsi beste erabiltzaileek bidalitako irakurragiriak", - "Scissors": "Artaziak", "Upgrade to your own domain": "Eguneratu zure domeinu propiora", "Accept all %(invitedRooms)s invites": "Onartu %(invitedRooms)s gelako gonbidapen guztiak", "Change room avatar": "Aldatu gelaren abatarra", @@ -1340,7 +1266,6 @@ "Some characters not allowed": "Karaktere batzuk ez dira onartzen", "Create your Matrix account on ": "Sortu zure Matrix kontua zerbitzarian", "Add room": "Gehitu gela", - "Your profile": "Zure profila", "Your Matrix account on ": "Zure zerbitzariko Matrix kontua", "Homeserver URL does not appear to be a valid Matrix homeserver": "Hasiera-zerbitzariaren URL-a ez dirudi baliozko hasiera-zerbitzari batena", "Identity server URL does not appear to be a valid identity server": "Identitate-zerbitzariaren URL-a ez dirudi baliozko identitate-zerbitzari batena", @@ -1503,7 +1428,6 @@ "Share this email in Settings to receive invites directly in %(brand)s.": "Partekatu e-mail hau ezarpenetan gonbidapenak zuzenean %(brand)s-en jasotzeko.", "%(count)s unread messages including mentions.|other": "irakurri gabeko %(count)s mezu aipamenak barne.", "%(count)s unread messages.|other": "irakurri gabeko %(count)s mezu.", - "Unread mentions.": "Irakurri gabeko aipamenak.", "Show image": "Erakutsi irudia", "Please create a new issue on GitHub so that we can investigate this bug.": "Sortu txosten berri bat GitHub zerbitzarian arazo hau ikertu dezagun.", "e.g. my-room": "adib. nire-gela", @@ -1531,9 +1455,6 @@ "Set an email for account recovery. Use email to optionally be discoverable by existing contacts.": "Ezarri E-mail bat kontua berreskuratzeko. Erabili E-maila aukeran zure kontaktuek aurkitu zaitzaten.", "Enter your custom homeserver URL What does this mean?": "Sartu zure hasiera-zerbitzari pertsonalizatuaren URL-a Zer esan nahi du?", "Enter your custom identity server URL What does this mean?": "Sartu zure identitate-zerbitzari pertsonalizatuaren URL-a Zer esan nahi du?", - "Explore": "Arakatu", - "Filter": "Iragazi", - "Filter rooms…": "Iragazi gelak…", "%(creator)s created and configured the room.": "%(creator)s erabiltzaileak gela sortu eta konfiguratu du.", "Preview": "Aurrebista", "View": "Ikusi", @@ -1553,7 +1474,6 @@ "wait and try again later": "itxaron eta berriro saiatu", "Show tray icon and minimize window to it on close": "Erakutsi egoera-barrako ikonoa eta minimizatu leihoa itxi ordez", "Room %(name)s": "%(name)s gela", - "Recent rooms": "Azken gelak", "%(count)s unread messages including mentions.|one": "Irakurri gabeko aipamen 1.", "%(count)s unread messages.|one": "Irakurri gabeko mezu 1.", "Unread messages.": "Irakurri gabeko mezuak.", @@ -1739,7 +1659,6 @@ "Suggestions": "Proposamenak", "Failed to find the following users": "Ezin izan dira honako erabiltzaile hauek aurkitu", "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s": "Honako erabiltzaile hauek agian ez dira existitzen edo baliogabeak dira, eta ezin dira gonbidatu: %(csvNames)s", - "Lock": "Blokeatu", "Restore": "Berrezarri", "a few seconds ago": "duela segundo batzuk", "about a minute ago": "duela minutu bat inguru", @@ -1769,7 +1688,6 @@ "Go Back": "Joan atzera", "This room is end-to-end encrypted": "Gela hau muturretik muturrera zifratuta dago", "Everyone in this room is verified": "Gelako guztiak egiaztatuta daude", - "Invite only": "Gonbidapenez besterik ez", "Send a reply…": "Bidali erantzuna…", "Send a message…": "Bidali mezua…", "Reject & Ignore user": "Ukatu eta ezikusi erabiltzailea", @@ -1886,8 +1804,6 @@ "Your recovery key": "Zure berreskuratze gakoa", "Copy": "Kopiatu", "Make a copy of your recovery key": "Egin zure berreskuratze gakoaren kopia", - "If you cancel now, you won't complete verifying the other user.": "Orain ezeztatzen baduzu, ez duzu beste erabiltzailearen egiaztaketa burutuko.", - "If you cancel now, you won't complete verifying your other session.": "Orain ezeztatzen baduzu, ez duzu beste zure beste saioaren egiaztaketa burutuko.", "Cancel entering passphrase?": "Ezeztatu pasa-esaldiaren sarrera?", "Securely cache encrypted messages locally for them to appear in search results.": "Gorde zifratutako mezuak cachean modu seguruan bilaketen emaitzetan agertu daitezen.", "You have verified this user. This user has verified all of their sessions.": "Erabiltzaile hau egiaztatu duzu. Erabiltzaile honek bere saio guztiak egiaztatu ditu.", @@ -2123,7 +2039,6 @@ "Self-verification request": "Auto-egiaztaketa eskaria", "Delete sessions|other": "Ezabatu saioak", "Delete sessions|one": "Ezabatu saioa", - "If you cancel now, you won't complete your operation.": "Orain ezeztatzen baduzu, ez duzu eragiketa burutuko.", "Failed to set topic": "Ezin izan da mintzagaia ezarri", "Command failed": "Aginduak huts egin du", "Could not find user in room": "Ezin izan da erabiltzailea gelan aurkitu", @@ -2161,7 +2076,6 @@ "Sends a message to the given user": "Erabiltzaileari mezua bidaltzen dio", "You signed in to a new session without verifying it:": "Saio berria hasi duzu hau egiaztatu gabe:", "Verify your other session using one of the options below.": "Egiaztatu zure beste saioa beheko aukeretako batekin.", - "Font scaling": "Letren eskalatzea", "Font size": "Letra-tamaina", "IRC display name width": "IRC-ko pantaila izenaren zabalera", "Waiting for your other session to verify…": "Zure beste saioak egiaztatu bitartean zain…", @@ -2173,7 +2087,6 @@ "Appearance": "Itxura", "Where you’re logged in": "Non hasi duzun saioa", "Manage the names of and sign out of your sessions below or verify them in your User Profile.": "Kudeatu azpiko saioen izenak eta hauek amaitu edo egiaztatu zure erabiltzaile-profilean.", - "Create room": "Sortu gela", "You've successfully verified your device!": "Ongi egiaztatu duzu zure gailua!", "Message deleted": "Mezu ezabatuta", "Message deleted by %(name)s": "Mezua ezabatu du %(name)s erabiltzaileak", @@ -2218,10 +2131,6 @@ "Sort by": "Ordenatu honela", "Activity": "Jarduera", "A-Z": "A-Z", - "Unread rooms": "Irakurri gabeko gelak", - "Always show first": "Erakutsi lehenbizi", - "Show": "Erakutsi", - "Message preview": "Mezu-aurrebista", "List options": "Zerrenda-aukerak", "Show %(count)s more|other": "Erakutsi %(count)s gehiago", "Show %(count)s more|one": "Erakutsi %(count)s gehiago", @@ -2249,9 +2158,6 @@ "All settings": "Ezarpen guztiak", "Feedback": "Iruzkinak", "Use a different passphrase?": "Erabili pasa-esaldi desberdin bat?", - "We’re excited to announce Riot is now Element": "Pozik jakinarazten dizugu: Riot orain Element deitzen da", - "Riot is now Element!": "Riot orain Element da!", - "Learn More": "Ikasi gehiago", "Light": "Argia", "The person who invited you already left the room.": "Gonbidatu zaituen pertsonak dagoeneko gela utzi du.", "The person who invited you already left the room, or their server is offline.": "Gonbidatu zaituen pertsonak dagoeneko gela utzi du edo bere zerbitzaria lineaz kanpo dago.", @@ -2266,7 +2172,6 @@ "%(brand)s Web": "%(brand)s web", "%(brand)s Desktop": "%(brand)s Desktop", "%(brand)s iOS": "%(brand)s iOS", - "%(brand)s X for Android": "%(brand)s X for Android", "Change notification settings": "Aldatu jakinarazpenen ezarpenak", "Use custom size": "Erabili tamaina pertsonalizatua", "Use a more compact ‘Modern’ layout": "Erabili mezuen antolaketa 'Modernoa', konpaktuagoa da", @@ -2286,8 +2191,6 @@ "This room is public": "Gela hau publikoa da", "Away": "Kanpoan", "Click to view edits": "Klik egin edizioak ikusteko", - "Go to Element": "Joan Elementera", - "Learn more at element.io/previously-riot": "Ikasi gehiago element.io/previously-riot orrian", "The server is offline.": "Zerbitzaria lineaz kanpo dago.", "The server has denied your request.": "Zerbitzariak zure eskariari uko egin dio.", "Wrong file type": "Okerreko fitxategi-mota", diff --git a/src/i18n/strings/fi.json b/src/i18n/strings/fi.json index c6abfc0de7..3c5fc769f8 100644 --- a/src/i18n/strings/fi.json +++ b/src/i18n/strings/fi.json @@ -20,7 +20,6 @@ "Failed to change password. Is your password correct?": "Salasanan vaihtaminen epäonnistui. Onko salasanasi oikein?", "Continue": "Jatka", "powered by Matrix": "moottorina Matrix", - "Active call (%(roomName)s)": "Aktiivinen puhelu (%(roomName)s)", "Add": "Lisää", "Add a topic": "Lisää aihe", "Admin": "Ylläpitäjä", @@ -116,9 +115,6 @@ "I have verified my email address": "Olen varmistanut sähköpostiosoitteeni", "Import": "Tuo", "Import E2E room keys": "Tuo olemassaolevat osapuolten välisen salauksen huoneavaimet", - "Incoming call from %(name)s": "Saapuva puhelu käyttäjältä %(name)s", - "Incoming video call from %(name)s": "Saapuva videopuhelu käyttäjältä %(name)s", - "Incoming voice call from %(name)s": "Saapuva äänipuhelu käyttäjältä %(name)s", "Incorrect username and/or password.": "Virheellinen käyttäjätunnus ja/tai salasana.", "Incorrect verification code": "Virheellinen varmennuskoodi", "Invalid Email Address": "Virheellinen sähköpostiosoite", @@ -183,7 +179,6 @@ "This room": "Tämä huone", "This room is not accessible by remote Matrix servers": "Tähän huoneeseen ei pääse ulkopuolisilta Matrix-palvelimilta", "Unban": "Poista porttikielto", - "unknown caller": "tuntematon soittaja", "Unmute": "Poista mykistys", "Unnamed Room": "Nimeämätön huone", "Uploading %(filename)s and %(count)s others|zero": "Ladataan %(filename)s", @@ -224,7 +219,6 @@ "You do not have permission to post to this room": "Sinulla ei ole oikeutta kirjoittaa tässä huoneessa", "You have disabled URL previews by default.": "Olet oletusarvoisesti ottanut URL-esikatselut pois käytöstä.", "You have enabled URL previews by default.": "Olet oletusarvoisesti ottanut URL-esikatselut käyttöön.", - "You have no visible notifications": "Sinulla ei ole näkyviä ilmoituksia", "You must register to use this functionality": "Sinun pitää rekisteröityä käyttääksesi tätä toiminnallisuutta", "You need to be able to invite users to do that.": "Sinun pitää pystyä kutsua käyttäjiä voidaksesi tehdä tuon.", "You need to be logged in.": "Sinun pitää olla kirjautunut.", @@ -239,7 +233,6 @@ "Set a display name:": "Aseta näyttönimi:", "This server does not support authentication with a phone number.": "Tämä palvelin ei tue autentikointia puhelinnumeron avulla.", "An error occurred: %(error_string)s": "Virhe: %(error_string)s", - "There are no visible files in this room": "Tässä huoneessa ei tiedostoja näkyvissä", "Room": "Huone", "Copied!": "Kopioitu!", "Failed to copy": "Kopiointi epäonnistui", @@ -426,7 +419,6 @@ "Guests can join": "Vierailijat voivat liittyä", "No rooms to show": "Ei näytettäviä huoneita", "Upload avatar": "Lataa profiilikuva", - "Community Invites": "Yhteisökutsut", "Banned by %(displayName)s": "%(displayName)s antoi porttikiellon", "Privileged Users": "Etuoikeutetut käyttäjät", "Members only (since the point in time of selecting this option)": "Vain jäsenet (tämän valinnan tekemisestä lähtien)", @@ -772,66 +764,6 @@ "Verify this user by confirming the following emoji appear on their screen.": "Varmenna tämä käyttäjä varmistamalla, että seuraava emoji ilmestyy hänen ruudulleen.", "Verify this user by confirming the following number appears on their screen.": "Varmenna tämä käyttäjä varmistamalla, että seuraava luku ilmestyy hänen ruudulleen.", "Unable to find a supported verification method.": "Tuettua varmennustapaa ei löydy.", - "Dog": "Koira", - "Cat": "Kissa", - "Lion": "Leijona", - "Horse": "Hevonen", - "Unicorn": "Yksisarvinen", - "Pig": "Sika", - "Rabbit": "Kani", - "Panda": "Panda", - "Rooster": "Kukko", - "Penguin": "Pingviini", - "Turtle": "Kilpikonna", - "Fish": "Kala", - "Octopus": "Tursas", - "Butterfly": "Perhonen", - "Flower": "Kukka", - "Tree": "Puu", - "Cactus": "Kaktus", - "Mushroom": "Sieni", - "Globe": "Maapallo", - "Moon": "Kuu", - "Cloud": "Pilvi", - "Fire": "Tuli", - "Banana": "Banaani", - "Apple": "Omena", - "Strawberry": "Mansikka", - "Corn": "Maissi", - "Pizza": "Pizza", - "Cake": "Kakku", - "Heart": "Sydän", - "Smiley": "Hymiö", - "Robot": "Robotti", - "Hat": "Hattu", - "Glasses": "Silmälasit", - "Spanner": "Jakoavain", - "Santa": "Joulupukki", - "Umbrella": "Sateenvarjo", - "Hourglass": "Tiimalasi", - "Clock": "Kello", - "Gift": "Lahja", - "Light bulb": "Hehkulamppu", - "Book": "Kirja", - "Pencil": "Lyijykynä", - "Paperclip": "Klemmari", - "Key": "Avain", - "Hammer": "Vasara", - "Telephone": "Puhelin", - "Flag": "Lippu", - "Train": "Juna", - "Bicycle": "Polkupyörä", - "Aeroplane": "Lentokone", - "Rocket": "Raketti", - "Trophy": "Palkinto", - "Ball": "Pallo", - "Guitar": "Kitara", - "Trumpet": "Trumpetti", - "Bell": "Soittokello", - "Anchor": "Ankkuri", - "Headphones": "Kuulokkeet", - "Folder": "Kansio", - "Pin": "Nuppineula", "Call in Progress": "Puhelu meneillään", "General": "Yleiset", "Security & Privacy": "Tietoturva ja -suoja", @@ -959,7 +891,6 @@ "Email Address": "Sähköpostiosoite", "Yes": "Kyllä", "No": "Ei", - "Elephant": "Norsu", "Add an email address to configure email notifications": "Lisää sähköpostiosoite määrittääksesi sähköposti-ilmoitukset", "Chat with %(brand)s Bot": "Keskustele %(brand)s-botin kanssa", "You'll lose access to your encrypted messages": "Menetät pääsyn salattuihin viesteihisi", @@ -1027,7 +958,6 @@ "Messages containing my username": "Viestit, jotka sisältävät käyttäjätunnukseni", "Messages containing @room": "Viestit, jotka sisältävät sanan ”@room”", "Secure messages with this user are end-to-end encrypted and not able to be read by third parties.": "Turvalliset viestit tämän käyttäjän kanssa ovat salattuja päästä päähän, eivätkä kolmannet osapuolet voi lukea niitä.", - "Thumbs up": "Peukut ylös", "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.": "Lähetimme sinulle sähköpostin osoitteesi vahvistamiseksi. Noudata sähköpostissa olevia ohjeita, ja klikkaa sen jälkeen alla olevaa painiketta.", "Are you sure? You will lose your encrypted messages if your keys are not backed up properly.": "Oletko varma? Et voi lukea salattuja viestejäsi, mikäli avaimesi eivät ole kunnolla varmuuskopioituna.", "Encrypted messages are secured with end-to-end encryption. Only you and the recipient(s) have the keys to read these messages.": "Salatut viestit turvataan kahdenkeskisellä salauksella. Vain sinä ja viestien vastaanottaja(t) omaavat avaimet näiden viestien lukemiseen.", @@ -1066,7 +996,6 @@ "Show a reminder to enable Secure Message Recovery in encrypted rooms": "Näytä muistutus suojatun viestien palautuksen käyttöönotosta salatuissa huoneissa", "Show avatars in user and room mentions": "Näytä profiilikuvat käyttäjä- ja huonemaininnoissa", "Got It": "Ymmärretty", - "Scissors": "Sakset", "Which officially provided instance you are using, if any": "Mitä virallisesti saatavilla olevaa instanssia käytät, jos mitään", "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s %(day)s. %(monthName)s %(fullYear)s", "Missing roomId.": "roomId puuttuu.", @@ -1150,7 +1079,6 @@ "Clear Storage and Sign Out": "Tyhjennä varasto ja kirjaudu ulos", "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Selaimen varaston tyhjentäminen saattaa korjata ongelman, mutta kirjaa sinut samalla ulos ja estää sinua lukemasta salattuja keskusteluita.", "A username can only contain lower case letters, numbers and '=_-./'": "Käyttäjätunnus voi sisältää vain pieniä kirjaimia, numeroita ja merkkejä ”=_-./”", - "COPY": "Kopioi", "Unable to load backup status": "Varmuuskopioinnin tilan lataaminen epäonnistui", "Failed to decrypt %(failedCount)s sessions!": "%(failedCount)s istunnon purkaminen epäonnistui!", "Warning: you should only set up key backup from a trusted computer.": "Varoitus: sinun pitäisi ottaa avainvarmuuskopio käyttöön vain luotetulla tietokoneella.", @@ -1162,8 +1090,6 @@ "Please review and accept all of the homeserver's policies": "Tarkistathan tämän kotipalvelimen käytännöt", "Please review and accept the policies of this homeserver:": "Tarkistathan tämän kotipalvelimen käytännöt:", "Code": "Koodi", - "Your Modular server": "Modular-palvelimesi", - "Enter the location of your Modular homeserver. It may use your own domain name or be a subdomain of modular.im.": "Syötä Modular-kotipalvelimesi sijainti. Se voi käyttää omaa verkkotunnustasi tai olla modular.im:n aliverkkotunnus.", "The username field must not be blank.": "Käyttäjätunnus ei voi olla tyhjä.", "Username": "Käyttäjätunnus", "Sign in to your Matrix account on %(serverName)s": "Kirjaudu sisään Matrix-tilillesi palvelimella %(serverName)s", @@ -1337,7 +1263,6 @@ "Unable to validate homeserver/identity server": "Kotipalvelinta/identiteettipalvelinta ei voida validoida", "Create your Matrix account on ": "Luo Matrix-tili palvelimelle ", "Add room": "Lisää huone", - "Your profile": "Oma profiilisi", "Your Matrix account on ": "Matrix-tilisi palvelimella ", "Cannot reach homeserver": "Kotipalvelinta ei voida tavoittaa", "Your %(brand)s is misconfigured": "%(brand)sin asetukset ovat pielessä", @@ -1467,8 +1392,6 @@ "Strikethrough": "Yliviivattu", "Code block": "Ohjelmakoodia", "This invite to %(roomName)s was sent to %(email)s which is not associated with your account": "Kutsu huoneeseen %(roomName)s lähetettiin osoitteeseen %(email)s, joka ei ole yhteydessä tiliisi", - "Filter": "Suodata", - "Filter rooms…": "Suodata huoneita…", "Changes the avatar of the current room": "Vaihtaa nykyisen huoneen kuvan", "Error changing power level requirement": "Virhe muutettaessa oikeustasovaatimusta", "An error occurred changing the room's power level requirements. Ensure you have sufficient permissions and try again.": "Huoneen oikeustasovaatimuksia muutettaessa tapahtui virhe. Varmista, että sinulla on riittävät oikeudet ja yritä uudelleen.", @@ -1483,7 +1406,6 @@ "Reporting this message will send its unique 'event ID' to the administrator of your homeserver. If messages in this room are encrypted, your homeserver administrator will not be able to read the message text or view any files or images.": "Tämän viestin ilmoittaminen lähettää sen yksilöllisen tapahtumatunnuksen (event ID) kotipalvelimesi ylläpitäjälle. Jos tämän huoneen viestit on salattu, kotipalvelimesi ylläpitäjä ei voi lukea viestin tekstiä tai nähdä tiedostoja tai kuvia.", "Send report": "Lähetä ilmoitus", "Report Content": "Ilmoita sisällöstä", - "Explore": "Selaa", "Preview": "Esikatsele", "View": "Näytä", "Find a room…": "Etsi huonetta…", @@ -1508,7 +1430,6 @@ "Clear cache and reload": "Tyhjennä välimuisti ja lataa uudelleen", "%(count)s unread messages including mentions.|other": "%(count)s lukematonta viestiä, sisältäen maininnat.", "%(count)s unread messages.|other": "%(count)s lukematonta viestiä.", - "Unread mentions.": "Lukemattomat maininnat.", "Show image": "Näytä kuva", "Please create a new issue on GitHub so that we can investigate this bug.": "Luo uusi issue GitHubissa, jotta voimme tutkia tätä ongelmaa.", "Close dialog": "Sulje dialogi", @@ -1523,7 +1444,6 @@ "You are about to remove %(count)s messages by %(user)s. This cannot be undone. Do you wish to continue?|one": "Olet poistamassa yhtä käyttäjän %(user)s kirjoittamaa viestiä. Tätä toimintoa ei voi kumota. Haluatko jatkaa?", "Remove %(count)s messages|one": "Poista yksi viesti", "Room %(name)s": "Huone %(name)s", - "Recent rooms": "Viimeaikaiset huoneet", "React": "Reagoi", "Frequently Used": "Usein käytetyt", "Smileys & People": "Hymiöt ja ihmiset", @@ -1736,7 +1656,6 @@ "Recent Conversations": "Viimeaikaiset keskustelut", "Direct Messages": "Yksityisviestit", "Go": "Mene", - "Lock": "Lukko", "Whether you're using %(brand)s on a device where touch is the primary input mechanism": "Käytätkö %(brand)sia laitteella, jossa kosketus on ensisijainen syöttömekanismi", "Whether you're using %(brand)s as an installed Progressive Web App": "Käytätkö %(brand)sia asennettuna PWA:na (Progressive Web App)", "Cancel entering passphrase?": "Peruuta salalauseen syöttäminen?", @@ -1842,8 +1761,6 @@ "Never send encrypted messages to unverified sessions from this session": "Älä koskaan lähetä salattuja viestejä vahvistamattomiin istuntoihin tästä istunnosta", "Never send encrypted messages to unverified sessions in this room from this session": "Älä lähetä salattuja viestejä vahvistamattomiin istuntoihin tässä huoneessa tässä istunnossa", "Order rooms by name": "Suodata huoneet nimellä", - "If you cancel now, you won't complete verifying the other user.": "Jo peruutat nyt, toista käyttäjää ei varmenneta.", - "If you cancel now, you won't complete verifying your other session.": "Jos peruutat nyt, toista istuntoasi ei varmenneta.", "Setting up keys": "Otetaan avaimet käyttöön", "Verifies a user, session, and pubkey tuple": "Varmentaa käyttäjän, istunnon ja julkiset avaimet", "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and session %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "VAROITUS: AVAIMEN VARMENTAMINEN EPÄONNISTUI! Käyttäjän %(userId)s ja laitteen %(deviceId)s istunnon allekirjoitusavain on ”%(fprint)s”, mikä ei täsmää annettuun avaimeen ”%(fingerprint)s”. Tämä voi tarkoittaa, että yhteyksiänne peukaloidaan!", @@ -1977,7 +1894,6 @@ "If you've joined lots of rooms, this might take a while": "Jos olet liittynyt moniin huoneisiin, tässä voi kestää hetken", "Click the button below to confirm adding this email address.": "Klikkaa alapuolella olevaa painiketta lisätäksesi tämän sähköpostiosoitteen.", "Click the button below to confirm adding this phone number.": "Klikkaa alapuolella olevaa painiketta lisätäksesi tämän puhelinnumeron.", - "If you cancel now, you won't complete your operation.": "Jos peruutat, toimintoa ei suoriteta loppuun.", "Review where you’re logged in": "Tarkasta missä olet sisäänkirjautuneena", "New login. Was this you?": "Uusi sisäänkirjautuminen. Olitko se sinä?", "%(name)s is requesting verification": "%(name)s pyytää varmennusta", @@ -2053,7 +1969,6 @@ "If your other sessions do not have the key for this message you will not be able to decrypt them.": "Jos muissa laitteissasi ei ole avainta tämän viestin purkamiseen, niillä istunnoilla ei voi lukea tätä viestiä.", "Encrypted by an unverified session": "Salattu varmentamattoman istunnon toimesta", "Encrypted by a deleted session": "Salattu poistetun istunnon toimesta", - "Create room": "Luo huone", "Reject & Ignore user": "Hylkää ja jätä käyttäjä huomiotta", "Start Verification": "Aloita varmennus", "Your messages are secured and only you and the recipient have the unique keys to unlock them.": "Viestisi ovat turvattu, ja vain sinulla ja vastaanottajalla on avaimet viestien lukemiseen.", @@ -2148,9 +2063,6 @@ "No recently visited rooms": "Ei hiljattain vierailtuja huoneita", "People": "Ihmiset", "Sort by": "Lajittelutapa", - "Unread rooms": "Lukemattomat huoneet", - "Always show first": "Näytä aina ensin", - "Show": "Näytä", "Leave Room": "Poistu huoneesta", "Switch to light mode": "Vaihda vaaleaan teemaan", "Switch to dark mode": "Vaihda tummaan teemaan", @@ -2170,39 +2082,9 @@ "%(senderName)s started a call": "%(senderName)s aloitti puhelun", "Waiting for answer": "Odotetaan vastausta", "%(senderName)s is calling": "%(senderName)s soittaa", - "You created the room": "Loit huoneen", - "%(senderName)s created the room": "%(senderName)s loi huoneen", - "You made the chat encrypted": "Otit salauksen käyttöön keskustelussa", - "%(senderName)s made the chat encrypted": "%(senderName)s otti salauksen käyttöön keskustelussa", - "You made history visible to new members": "Teit historiasta näkyvän uusille jäsenille", - "%(senderName)s made history visible to new members": "%(senderName)s teki historiasta näkyvän uusille jäsenille", - "You made history visible to anyone": "Teit historiasta näkyvän kaikille", - "%(senderName)s made history visible to anyone": "%(senderName)s teki historiasta näkyvän kaikille", - "You made history visible to future members": "Teit historiasta näkyvän tuleville jäsenille", - "%(senderName)s made history visible to future members": "%(senderName)s teki historiasta näkyvän tuleville jäsenille", - "You were invited": "Sinut kutsuttiin", - "%(targetName)s was invited": "%(targetName)s kutsuttiin", - "You left": "Poistuit", - "%(targetName)s left": "%(targetName)s poistui", - "You rejected the invite": "Hylkäsit kutsun", - "%(targetName)s rejected the invite": "%(targetName)s hylkäsi kutsun", - "You were banned (%(reason)s)": "Sait porttikiellon (%(reason)s)", - "%(targetName)s was banned (%(reason)s)": "%(targetName)s sai porttikiellon (%(reason)s)", - "You were banned": "Sait porttikiellon", - "%(targetName)s was banned": "%(targetName)s sai porttikiellon", - "You joined": "Liityit", - "%(targetName)s joined": "%(targetName)s liittyi", - "You changed your name": "Vaihdoit nimeäsi", - "%(targetName)s changed their name": "%(targetName)s vaihtoi nimeään", "%(senderName)s: %(message)s": "%(senderName)s: %(message)s", - "You changed the room name": "Vaihdoit huoneen nimeä", - "%(senderName)s changed the room name": "%(senderName)s vaihtoi huoneen nimeä", "%(senderName)s: %(reaction)s": "%(senderName)s: %(reaction)s", "%(senderName)s: %(stickerName)s": "%(senderName)s: %(stickerName)s", - "You invited %(targetName)s": "Kutsuit käyttäjän %(targetName)s", - "%(senderName)s invited %(targetName)s": "%(senderName)s kutsui käyttäjän %(targetName)s", - "You changed the room topic": "Vaihdoit huoneen aiheen", - "%(senderName)s changed the room topic": "%(senderName)s vaihtoi huoneen aiheen", "Use custom size": "Käytä mukautettua kokoa", "Use a more compact ‘Modern’ layout": "Käytä tiiviimpää 'modernia' asettelua", "Use a system font": "Käytä järjestelmän fonttia", @@ -2210,17 +2092,11 @@ "Message layout": "Viestiasettelu", "Compact": "Tiivis", "Modern": "Moderni", - "We’re excited to announce Riot is now Element": "Meillä on ilo ilmoittaa, että Riot on nyt Element", - "Riot is now Element!": "Riot on nyt Element!", - "Learn More": "Lue lisää", "Use default": "Käytä oletusta", "Mentions & Keywords": "Maininnat ja avainsanat", "Notification options": "Ilmoitusasetukset", "Room options": "Huoneen asetukset", "This room is public": "Tämä huone on julkinen", - "You’re already signed in and good to go here, but you can also grab the latest versions of the app on all platforms at element.io/get-started.": "Olet jo kirjautuneena eikä sinun tarvitse tehdä mitään, mutta voit myös hakea sovelluksen uusimman version kaikille alustoille osoitteesta element.io/get-started.", - "We’re excited to announce Riot is now Element!": "Meillä on ilo ilmoittaa, että Riot on nyt Element!", - "Learn more at element.io/previously-riot": "Lue lisää osoitteessa element.io/previously-riot", "Security & privacy": "Tietoturva ja -suoja", "User menu": "Käyttäjän valikko" } diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index 42f9d74502..8345c35af7 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -217,7 +217,6 @@ "You cannot place a call with yourself.": "Vous ne pouvez pas passer d'appel avec vous-même.", "You cannot place VoIP calls in this browser.": "Vous ne pouvez pas passer d'appel en Voix sur IP dans ce navigateur.", "You do not have permission to post to this room": "Vous n’avez pas la permission de poster dans ce salon", - "You have no visible notifications": "Vous n'avez pas de notification visible", "You need to be able to invite users to do that.": "Vous devez être capable d’inviter des utilisateurs pour faire ça.", "You need to be logged in.": "Vous devez être identifié.", "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Votre adresse e-mail ne semble pas être associée à un identifiant Matrix sur ce serveur d'accueil.", @@ -250,7 +249,6 @@ "Upload an avatar:": "Envoyer un avatar :", "This server does not support authentication with a phone number.": "Ce serveur ne prend pas en charge l’authentification avec un numéro de téléphone.", "An error occurred: %(error_string)s": "Une erreur est survenue : %(error_string)s", - "There are no visible files in this room": "Il n'y a pas de fichier visible dans ce salon", "Room": "Salon", "Connectivity to the server has been lost.": "La connectivité au serveur a été perdue.", "Sent messages will be stored until your connection has returned.": "Les messages envoyés seront stockés jusqu’à ce que votre connexion revienne.", @@ -347,16 +345,12 @@ "This will be your account name on the homeserver, or you can pick a different server.": "Cela sera le nom de votre compte sur le serveur d'accueil , ou vous pouvez sélectionner un autre serveur.", "If you already have a Matrix account you can log in instead.": "Si vous avez déjà un compte Matrix vous pouvez vous connecter à la place.", "Accept": "Accepter", - "Active call (%(roomName)s)": "Appel en cours (%(roomName)s)", "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Impossible de se connecter au serveur d’accueil - veuillez vérifier votre connexion, assurez-vous que le certificat SSL de votre serveur d’accueil est un certificat de confiance, et qu’aucune extension du navigateur ne bloque les requêtes.", "Close": "Fermer", "Custom": "Personnaliser", "Decline": "Refuser", "Drop File Here": "Déposer le fichier Ici", "Failed to upload profile picture!": "Échec de l'envoi de l'image de profil !", - "Incoming call from %(name)s": "Appel entrant de %(name)s", - "Incoming video call from %(name)s": "Appel vidéo entrant de %(name)s", - "Incoming voice call from %(name)s": "Appel vocal entrant de %(name)s", "No display name": "Pas de nom affiché", "Private Chat": "Discussion privée", "Public Chat": "Discussion publique", @@ -365,7 +359,6 @@ "Seen by %(userName)s at %(dateTime)s": "Vu par %(userName)s à %(dateTime)s", "Start authentication": "Commencer une authentification", "This room": "Ce salon", - "unknown caller": "appelant inconnu", "Unnamed Room": "Salon anonyme", "Username invalid: %(errMessage)s": "Nom d'utilisateur non valide : %(errMessage)s", "(~%(count)s results)|one": "(~%(count)s résultat)", @@ -578,7 +571,6 @@ "Visibility in Room List": "Visibilité dans la liste des salons", "Visible to everyone": "Visible pour tout le monde", "Only visible to community members": "Visible uniquement par les membres de la communauté", - "Community Invites": "Invitations de communauté", "Notify the whole room": "Notifier tout le salon", "Room Notification": "Notification du salon", "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Ces salons sont affichés aux membres de la communauté sur la page de la communauté. Les membres de la communauté peuvent rejoindre ces salons en cliquant dessus.", @@ -819,7 +811,6 @@ "Share Community": "Partager la communauté", "Share Room Message": "Partager le message du salon", "Link to selected message": "Lien vers le message sélectionné", - "COPY": "COPIER", "Share Message": "Partager le message", "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "Dans les salons chiffrés, comme celui-ci, l'aperçu des liens est désactivé par défaut pour s'assurer que le serveur d'accueil (où sont générés les aperçus) ne puisse pas collecter d'informations sur les liens qui apparaissent dans ce salon.", "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "Quand quelqu'un met un lien dans son message, un aperçu du lien peut être affiché afin de fournir plus d'informations sur ce lien comme le titre, la description et une image du site.", @@ -1056,8 +1047,6 @@ "Report bugs & give feedback": "Rapporter des anomalies & Donner son avis", "Update status": "Mettre à jour le statut", "Set status": "Définir le statut", - "Your Modular server": "Votre serveur Modular", - "Enter the location of your Modular homeserver. It may use your own domain name or be a subdomain of modular.im.": "Saisissez l'emplacement de votre serveur d'accueil Modular. Il peut utiliser votre nom de domaine personnel ou être un sous-domaine de modular.im.", "Server Name": "Nom du serveur", "The username field must not be blank.": "Le champ du nom d'utilisateur ne doit pas être vide.", "Username": "Nom d'utilisateur", @@ -1096,68 +1085,6 @@ "Group & filter rooms by custom tags (refresh to apply changes)": "Grouper et filtrer les salons grâce à des étiquettes personnalisées (actualiser pour appliquer les changements)", "Verify this user by confirming the following emoji appear on their screen.": "Vérifier cet utilisateur en confirmant que les émojis suivant apparaissent sur son écran.", "Unable to find a supported verification method.": "Impossible de trouver une méthode de vérification prise en charge.", - "Dog": "Chien", - "Cat": "Chat", - "Lion": "Lion", - "Horse": "Cheval", - "Unicorn": "Licorne", - "Pig": "Cochon", - "Elephant": "Éléphant", - "Rabbit": "Lapin", - "Panda": "Panda", - "Rooster": "Coq", - "Penguin": "Manchot", - "Turtle": "Tortue", - "Fish": "Poisson", - "Octopus": "Pieuvre", - "Butterfly": "Papillon", - "Flower": "Fleur", - "Tree": "Arbre", - "Cactus": "Cactus", - "Mushroom": "Champignon", - "Globe": "Terre", - "Moon": "Lune", - "Cloud": "Nuage", - "Fire": "Feu", - "Banana": "Banane", - "Apple": "Pomme", - "Strawberry": "Fraise", - "Corn": "Maïs", - "Pizza": "Pizza", - "Cake": "Gâteau", - "Heart": "Cœur", - "Smiley": "Smiley", - "Robot": "Robot", - "Hat": "Chapeau", - "Glasses": "Lunettes", - "Spanner": "Clé plate", - "Santa": "Père Noël", - "Thumbs up": "Pouce levé", - "Umbrella": "Parapluie", - "Hourglass": "Sablier", - "Clock": "Horloge", - "Gift": "Cadeau", - "Light bulb": "Ampoule", - "Book": "Livre", - "Pencil": "Crayon", - "Paperclip": "Trombone", - "Key": "Clé", - "Hammer": "Marteau", - "Telephone": "Téléphone", - "Flag": "Drapeau", - "Train": "Train", - "Bicycle": "Vélo", - "Aeroplane": "Avion", - "Rocket": "Fusée", - "Trophy": "Trophée", - "Ball": "Balle", - "Guitar": "Guitare", - "Trumpet": "Trompette", - "Bell": "Cloche", - "Anchor": "Ancre", - "Headphones": "Écouteurs", - "Folder": "Dossier", - "Pin": "Épingle", "This homeserver would like to make sure you are not a robot.": "Ce serveur d'accueil veut s'assurer que vous n'êtes pas un robot.", "Change": "Changer", "Couldn't load page": "Impossible de charger la page", @@ -1194,7 +1121,6 @@ "%(senderDisplayName)s disabled flair for %(groups)s in this room.": "%(senderDisplayName)s a désactivé le badge pour %(groups)s dans ce salon.", "%(senderDisplayName)s enabled flair for %(newGroups)s and disabled flair for %(oldGroups)s in this room.": "%(senderDisplayName)s a activé le badge pour %(newGroups)s et désactivé le badge pour %(oldGroups)s dans ce salon.", "Show read receipts sent by other users": "Afficher les accusés de lecture envoyés par les autres utilisateurs", - "Scissors": "Ciseaux", "Error updating main address": "Erreur lors de la mise à jour de l’adresse principale", "There was an error updating the room's main address. It may not be allowed by the server or a temporary failure occurred.": "Une erreur est survenue lors de la mise à jour de l’adresse principale de salon. Ce n’est peut-être pas autorisé par le serveur ou une erreur temporaire est survenue.", "Error updating flair": "Erreur lors de la mise à jour du badge", @@ -1337,7 +1263,6 @@ "Invalid base_url for m.identity_server": "base_url pour m.identity_server non valide", "Identity server URL does not appear to be a valid identity server": "L’URL du serveur d’identité ne semble pas être un serveur d’identité valide", "Show hidden events in timeline": "Afficher les évènements cachés dans l’historique", - "Your profile": "Votre profil", "Add room": "Ajouter un salon", "Edit message": "Éditer le message", "No homeserver URL provided": "Aucune URL de serveur d’accueil fournie", @@ -1496,9 +1421,6 @@ "Remove %(count)s messages|other": "Supprimer %(count)s messages", "Remove recent messages": "Supprimer les messages récents", "Send read receipts for messages (requires compatible homeserver to disable)": "Envoyer des accusés de lecture pour les messages (nécessite un serveur d’accueil compatible pour le désactiver)", - "Explore": "Explorer", - "Filter": "Filtrer", - "Filter rooms…": "Filtrer les salons…", "Preview": "Aperçu", "View": "Afficher", "Find a room…": "Trouver un salon…", @@ -1538,7 +1460,6 @@ "Clear cache and reload": "Vider le cache et recharger", "%(count)s unread messages including mentions.|other": "%(count)s messages non lus y compris les mentions.", "%(count)s unread messages.|other": "%(count)s messages non lus.", - "Unread mentions.": "Mentions non lues.", "Please create a new issue on GitHub so that we can investigate this bug.": "Veuillez créer un nouveau rapport sur GitHub afin que l’on enquête sur cette erreur.", "Missing captcha public key in homeserver configuration. Please report this to your homeserver administrator.": "Clé public du captcha manquante dans la configuration du serveur d’accueil. Veuillez le signaler à l’administrateur de votre serveur d’accueil.", "You are about to remove %(count)s messages by %(user)s. This cannot be undone. Do you wish to continue?|one": "Vous êtes sur le point de supprimer 1 message de %(user)s. Ça ne peut pas être annulé. Voulez-vous continuer ?", @@ -1573,7 +1494,6 @@ "Jump to first unread room.": "Sauter au premier salon non lu.", "Jump to first invite.": "Sauter à la première invitation.", "Room %(name)s": "Salon %(name)s", - "Recent rooms": "Salons récents", "No identity server is configured so you cannot add an email address in order to reset your password in the future.": "Aucun serveur d’identité n’est configuré donc vous ne pouvez pas ajouter une adresse e-mail afin de réinitialiser votre mot de passe dans l’avenir.", "%(count)s unread messages including mentions.|one": "1 mention non lue.", "%(count)s unread messages.|one": "1 message non lu.", @@ -1742,7 +1662,6 @@ "Suggestions": "Suggestions", "Failed to find the following users": "Impossible de trouver les utilisateurs suivants", "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s": "Les utilisateurs suivant n’existent peut-être pas ou ne sont pas valides, et ne peuvent pas être invités : %(csvNames)s", - "Lock": "Cadenas", "Restore": "Restaurer", "a few seconds ago": "il y a quelques secondes", "about a minute ago": "il y a environ une minute", @@ -1785,7 +1704,6 @@ "Set up encryption": "Configurer le chiffrement", "This room is end-to-end encrypted": "Ce salon est chiffré de bout en bout", "Everyone in this room is verified": "Tout le monde dans ce salon est vérifié", - "Invite only": "Uniquement sur invitation", "Send a reply…": "Envoyer une réponse…", "Send a message…": "Envoyer un message…", "Verify this session": "Vérifier cette session", @@ -1924,8 +1842,6 @@ "Message downloading sleep time(ms)": "Temps d’attente de téléchargement des messages (ms)", "Cancel entering passphrase?": "Annuler la saisie du mot de passe ?", "Indexed rooms:": "Salons indexés :", - "If you cancel now, you won't complete verifying the other user.": "Si vous annuler maintenant, vous ne terminerez pas la vérification de l’autre utilisateur.", - "If you cancel now, you won't complete verifying your other session.": "Si vous annulez maintenant, vous ne terminerez pas la vérification de votre autre session.", "Show typing notifications": "Afficher les notifications de saisie", "Reset cross-signing and secret storage": "Réinitialiser la signature croisée et le coffre secret", "Destroy cross-signing keys?": "Détruire les clés de signature croisée ?", @@ -2135,7 +2051,6 @@ "Syncing...": "Synchronisation…", "Signing In...": "Authentification…", "If you've joined lots of rooms, this might take a while": "Si vous avez rejoint beaucoup de salons, cela peut prendre du temps", - "If you cancel now, you won't complete your operation.": "Si vous annulez maintenant, vous ne pourrez par terminer votre opération.", "Verify other session": "Vérifier une autre session", "Unable to access secret storage. Please verify that you entered the correct recovery passphrase.": "Impossible d’accéder au coffre secret. Vérifiez que vous avez renseigné la bonne phrase secrète de récupération.", "Backup could not be decrypted with this recovery key: please verify that you entered the correct recovery key.": "La sauvegarde n’a pas pu être déchiffrée avec cette clé de récupération : vérifiez que vous avez renseigné la bonne clé de récupération.", @@ -2191,8 +2106,6 @@ "Jump to oldest unread message": "Aller au plus vieux message non lu", "Upload a file": "Envoyer un fichier", "IRC display name width": "Largeur du nom affiché IRC", - "Create room": "Créer un salon", - "Font scaling": "Mise à l’échelle de la police", "Font size": "Taille de la police", "Size must be a number": "La taille doit être un nombre", "Custom font size can only be between %(min)s pt and %(max)s pt": "La taille de police personnalisée doit être comprise entre %(min)s pt et %(max)s pt", @@ -2244,10 +2157,6 @@ "Feedback": "Commentaire", "No recently visited rooms": "Aucun salon visité récemment", "Sort by": "Trier par", - "Unread rooms": "Salons non lus", - "Always show first": "Toujours afficher en premier", - "Show": "Afficher", - "Message preview": "Aperçu de message", "List options": "Options de liste", "Show %(count)s more|other": "En afficher %(count)s de plus", "Show %(count)s more|one": "En afficher %(count)s de plus", @@ -2262,7 +2171,6 @@ "Looks good!": "Ça a l’air correct !", "Use Recovery Key or Passphrase": "Utiliser la clé ou la phrase secrète de récupération", "Use Recovery Key": "Utiliser la clé de récupération", - "Use the improved room list (will refresh to apply changes)": "Utiliser la liste de salons améliorée (actualisera pour appliquer les changements)", "Use custom size": "Utiliser une taille personnalisée", "Hey you. You're the best!": "Eh vous. Vous êtes les meilleurs !", "Message layout": "Mise en page des messages", @@ -2282,50 +2190,9 @@ "%(senderName)s started a call": "%(senderName)s a démarré un appel", "Waiting for answer": "En attente d’une réponse", "%(senderName)s is calling": "%(senderName)s appelle", - "You created the room": "Vous avez créé le salon", - "%(senderName)s created the room": "%(senderName)s a créé le salon", - "You made the chat encrypted": "Vous avez activé le chiffrement de la discussion", - "%(senderName)s made the chat encrypted": "%(senderName)s a activé le chiffrement de la discussion", - "You made history visible to new members": "Vous avez rendu l’historique visible aux nouveaux membres", - "%(senderName)s made history visible to new members": "%(senderName)s a rendu l’historique visible aux nouveaux membres", - "You made history visible to anyone": "Vous avez rendu l’historique visible à tout le monde", - "%(senderName)s made history visible to anyone": "%(senderName)s a rendu l’historique visible à tout le monde", - "You made history visible to future members": "Vous avez rendu l’historique visible aux futurs membres", - "%(senderName)s made history visible to future members": "%(senderName)s a rendu l’historique visible aux futurs membres", - "You were invited": "Vous avez été invité", - "%(targetName)s was invited": "%(targetName)s a été invité·e", - "You left": "Vous êtes parti·e", - "%(targetName)s left": "%(targetName)s est parti·e", - "You were kicked (%(reason)s)": "Vous avez été expulsé·e (%(reason)s)", - "%(targetName)s was kicked (%(reason)s)": "%(targetName)s a été expulsé·e (%(reason)s)", - "You were kicked": "Vous avez été expulsé·e", - "%(targetName)s was kicked": "%(targetName)s a été expulsé·e", - "You rejected the invite": "Vous avez rejeté l’invitation", - "%(targetName)s rejected the invite": "%(targetName)s a rejeté l’invitation", - "You were uninvited": "Votre invitation a été révoquée", - "%(targetName)s was uninvited": "L’invitation de %(targetName)s a été révoquée", - "You were banned (%(reason)s)": "Vous avez été banni·e (%(reason)s)", - "%(targetName)s was banned (%(reason)s)": "%(targetName)s a été banni·e (%(reason)s)", - "You were banned": "Vous avez été banni·e", - "%(targetName)s was banned": "%(targetName)s a été banni·e", - "You joined": "Vous avez rejoint le salon", - "%(targetName)s joined": "%(targetName)s a rejoint le salon", - "You changed your name": "Vous avez changé votre nom", - "%(targetName)s changed their name": "%(targetName)s a changé son nom", - "You changed your avatar": "Vous avez changé votre avatar", - "%(targetName)s changed their avatar": "%(targetName)s a changé son avatar", - "%(senderName)s %(emote)s": "%(senderName)s %(emote)s", "%(senderName)s: %(message)s": "%(senderName)s : %(message)s", - "You changed the room name": "Vous avez changé le nom du salon", - "%(senderName)s changed the room name": "%(senderName)s a changé le nom du salon", "%(senderName)s: %(reaction)s": "%(senderName)s : %(reaction)s", "%(senderName)s: %(stickerName)s": "%(senderName)s : %(stickerName)s", - "You uninvited %(targetName)s": "Vous avez révoqué l’invitation de %(targetName)s", - "%(senderName)s uninvited %(targetName)s": "%(senderName)s a révoqué l’invitation de %(targetName)s", - "You invited %(targetName)s": "Vous avez invité %(targetName)s", - "%(senderName)s invited %(targetName)s": "%(senderName)s a invité %(targetName)s", - "You changed the room topic": "Vous avez changé le sujet du salon", - "%(senderName)s changed the room topic": "%(senderName)s a changé le sujet du salon", "New spinner design": "Nouveau design du spinner", "Message deleted on %(date)s": "Message supprimé le %(date)s", "Wrong file type": "Mauvais type de fichier", @@ -2348,16 +2215,10 @@ "Set a Security Phrase": "Définir une phrase de sécurité", "Confirm Security Phrase": "Confirmer la phrase de sécurité", "Save your Security Key": "Sauvegarder votre clé de sécurité", - "Use your account to sign in to the latest version": "Connectez-vous à la nouvelle version", - "We’re excited to announce Riot is now Element": "Nous sommes heureux de vous annoncer que Riot est désormais Element", - "Riot is now Element!": "Riot est maintenant Element !", - "Learn More": "Plus d'infos", "Enable experimental, compact IRC style layout": "Disposition expérimentale compacte style IRC", "Incoming voice call": "Appel vocal entrant", "Incoming video call": "Appel vidéo entrant", "Incoming call": "Appel entrant", - "Make this room low priority": "Définir ce salon en priorité basse", - "Low priority rooms show up at the bottom of your room list in a dedicated section at the bottom of your room list": "Les salons de priorité basse s'affichent en bas de votre liste de salons, dans une section dédiée", "Show rooms with unread messages first": "Afficher les salons non lus en premier", "Show previews of messages": "Afficher un aperçu des messages", "Use default": "Utiliser la valeur par défaut", @@ -2369,13 +2230,9 @@ "This room is public": "Ce salon est public", "Edited at %(date)s": "Édité le %(date)s", "Click to view edits": "Cliquez pour éditer", - "Go to Element": "Aller à Element", - "We’re excited to announce Riot is now Element!": "Nous sommes heureux d'annoncer que Riot est désormais Element !", - "Learn more at element.io/previously-riot": "Plus d'infos sur element.io/previously-riot", "Search rooms": "Chercher des salons", "User menu": "Menu d'utilisateur", "%(brand)s Web": "%(brand)s Web", "%(brand)s Desktop": "%(brand)s Desktop", - "%(brand)s iOS": "%(brand)s iOS", - "%(brand)s X for Android": "%(brand)s X pour Android" + "%(brand)s iOS": "%(brand)s iOS" } diff --git a/src/i18n/strings/gl.json b/src/i18n/strings/gl.json index db8a8f8100..c3e85ba7a5 100644 --- a/src/i18n/strings/gl.json +++ b/src/i18n/strings/gl.json @@ -140,11 +140,6 @@ "Enable URL previews for this room (only affects you)": "Activar avista previa de URL nesta sala (só che afesta a ti)", "Enable URL previews by default for participants in this room": "Activar a vista previa de URL por defecto para as participantes nesta sala", "Room Colour": "Cor da sala", - "Active call (%(roomName)s)": "Chamada activa (%(roomName)s)", - "unknown caller": "interlocutora descoñecida", - "Incoming voice call from %(name)s": "Chamada de voz entrante de %(name)s", - "Incoming video call from %(name)s": "Chamada de vídeo entrante de %(name)s", - "Incoming call from %(name)s": "Chamada entrante de %(name)s", "Decline": "Rexeitar", "Accept": "Aceptar", "Error": "Fallo", @@ -253,7 +248,6 @@ "Forget room": "Esquecer sala", "Search": "Busca", "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "Non poderá desfacer este cambio xa que está a diminuír a súa autoridade, se é a única persoa con autorización na sala será imposible volver a obter privilexios.", - "Community Invites": "Convites da comunidade", "Invites": "Convites", "Favourites": "Favoritas", "Rooms": "Salas", @@ -464,7 +458,6 @@ "Name": "Nome", "You must register to use this functionality": "Debe rexistrarse para utilizar esta función", "You must join the room to see its files": "Debes unirte a sala para ver os seus ficheiros", - "There are no visible files in this room": "Non hai ficheiros visibles nesta sala", "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

HTML para a páxina da súa comunidade

\n

\n Utilice a descrición longa para presentar novos membros a comunidade, ou publicar algunha ligazón importante\n \n

\n

\n Tamén pode utilizar etiquetas 'img'\n

\n", "Add rooms to the community summary": "Engadir salas ao resumo da comunidade", "Which rooms would you like to add to this summary?": "Que salas desexa engadir a este resumo?", @@ -512,7 +505,6 @@ "Error whilst fetching joined communities": "Fallo mentres se obtiñas as comunidades unidas", "Create a new community": "Crear unha nova comunidade", "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Crea unha comunidade para agrupar usuarias e salas! Pon unha páxina de inicio personalizada para destacar o teu lugar no universo Matrix.", - "You have no visible notifications": "Non ten notificacións visibles", "%(count)s of your messages have not been sent.|other": "Algunha das súas mensaxes non foron enviadas.", "%(count)s of your messages have not been sent.|one": "A súa mensaxe non foi enviada.", "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.|other": "Reenviar todo ou bencancelar todo. Tamén pode seleccionar mensaxes individuais para reenviar ou cancelar.", @@ -812,7 +804,6 @@ "Share Community": "Compartir comunidade", "Share Room Message": "Compartir unha mensaxe da sala", "Link to selected message": "Ligazón á mensaxe escollida", - "COPY": "Copiar", "Share Message": "Compartir mensaxe", "Can't leave Server Notices room": "Non se pode saír da sala de información do servidor", "This room is used for important messages from the Homeserver, so you cannot leave it.": "Esta sala emprégase para mensaxes importantes do servidor da sala, as que non pode saír dela.", @@ -897,9 +888,6 @@ "The file '%(fileName)s' failed to upload.": "Fallou a subida do ficheiro '%(fileName)s'.", "The file '%(fileName)s' exceeds this homeserver's size limit for uploads": "O ficheiro '%(fileName)s' supera o tamaño máximo permitido polo servidor", "The server does not support the room version specified.": "O servidor non soporta a versión da sala indicada.", - "If you cancel now, you won't complete verifying the other user.": "Se cancelas agora non completarás a verificación da outra usuaria.", - "If you cancel now, you won't complete verifying your other session.": "Se cancelas agora non completarás o proceso de verificación da outra sesión.", - "If you cancel now, you won't complete your operation.": "Se cancelas agora, non completarás a operación.", "Cancel entering passphrase?": "Cancelar a escrita da frase de paso?", "Setting up keys": "Configurando as chaves", "Verify this session": "Verificar esta sesión", @@ -987,9 +975,7 @@ "Change room name": "Cambiar nome da sala", "Roles & Permissions": "Roles & Permisos", "Room %(name)s": "Sala %(name)s", - "Recent rooms": "Salas recentes", "Direct Messages": "Mensaxes Directas", - "Create room": "Crear sala", "You can use /help to list available commands. Did you mean to send this as a message?": "Podes usar axuda para ver os comandos dispoñibles. ¿Querías mellor enviar esto como unha mensaxe?", "Error updating flair": "Fallo ao actualizar popularidade", "There was an error updating the flair for this room. The server may not allow it or a temporary error occurred.": "Algo fallou cando se actualizaba a popularidade da sala. Pode ser un fallo temporal ou que o servidor non o permita.", @@ -1000,9 +986,6 @@ "To help us prevent this in future, please send us logs.": "Para axudarnos a previr esto no futuro, envíanos o rexistro.", "Help": "Axuda", "Explore Public Rooms": "Explorar Salas Públicas", - "Explore": "Explorar", - "Filter": "Filtrar", - "Filter rooms…": "Filtrar salas…", "%(creator)s created and configured the room.": "%(creator)s creou e configurou a sala.", "Explore rooms": "Explorar salas", "General failure": "Fallo xeral", @@ -1146,7 +1129,6 @@ "Upgrade your %(brand)s": "Mellora o teu %(brand)s", "A new version of %(brand)s is available!": "Hai unha nova versión de %(brand)s!", "There was an error joining the room": "Houbo un fallo ao unirte a sala", - "Font scaling": "Escalado da tipografía", "Custom user status messages": "Mensaxes de estado personalizados", "Render simple counters in room header": "Mostrar contadores simples na cabeceira da sala", "Multiple integration managers": "Múltiples xestores da integración", @@ -1237,70 +1219,6 @@ "They match": "Concordan", "They don't match": "Non concordan", "To be secure, do this in person or use a trusted way to communicate.": "Para estar seguro, fai esto en persoa ou utiliza un xeito seguro para comunicarte.", - "Dog": "Can", - "Cat": "Gato", - "Lion": "León", - "Horse": "Cabalo", - "Unicorn": "Unicorno", - "Pig": "Porco", - "Elephant": "Elefante", - "Rabbit": "Coello", - "Panda": "Panda", - "Rooster": "Galo", - "Penguin": "Pingüino", - "Turtle": "Tartaruga", - "Fish": "Peixe", - "Octopus": "Polbo", - "Butterfly": "Bolboreta", - "Flower": "Flor", - "Tree": "Árbore", - "Cactus": "Cacto", - "Mushroom": "Cogomelo", - "Globe": "Globo", - "Moon": "Lúa", - "Cloud": "Nube", - "Fire": "Lume", - "Banana": "Plátano", - "Apple": "Mazá", - "Strawberry": "Amorodo", - "Corn": "Millo", - "Pizza": "Pizza", - "Cake": "Biscoito", - "Heart": "Corazón", - "Smiley": "Sorriso", - "Robot": "Robot", - "Hat": "Sombreiro", - "Glasses": "Gafas", - "Spanner": "Ferramenta", - "Santa": "Nöel", - "Thumbs up": "Oká", - "Umbrella": "Paraugas", - "Hourglass": "Reloxo area", - "Clock": "Reloxo", - "Gift": "Agasallo", - "Light bulb": "Lámpada", - "Book": "Libro", - "Pencil": "Lápis", - "Paperclip": "Prendedor", - "Scissors": "Tesoiras", - "Lock": "Cadeado", - "Key": "Chave", - "Hammer": "Martelo", - "Telephone": "Teléfono", - "Flag": "Bandeira", - "Train": "Tren", - "Bicycle": "Bicicleta", - "Aeroplane": "Aeroplano", - "Rocket": "Foguete", - "Trophy": "Trofeo", - "Ball": "Bola", - "Guitar": "Guitarra", - "Trumpet": "Trompeta", - "Bell": "Campá", - "Anchor": "Áncora", - "Headphones": "Auriculares", - "Folder": "Cartafol", - "Pin": "Pin", "From %(deviceName)s (%(deviceId)s)": "Desde %(deviceName)s (%(deviceId)s)", "Decline (%(counter)s)": "Rexeitar (%(counter)s)", "Accept to continue:": "Acepta para continuar:", @@ -1587,7 +1505,6 @@ "Encrypted by an unverified session": "Cifrada por unha sesión non verificada", "Unencrypted": "Non cifrada", "Encrypted by a deleted session": "Cifrada por unha sesión eliminada", - "Invite only": "Só por convite", "Scroll to most recent messages": "Ir ás mensaxes máis recentes", "Close preview": "Pechar vista previa", "Emoji picker": "Selector Emoticona", @@ -1631,10 +1548,6 @@ "Sort by": "Orde por", "Activity": "Actividade", "A-Z": "A-Z", - "Unread rooms": "Salas non lidas", - "Always show first": "Mostrar sempre primeiro", - "Show": "Mostrar", - "Message preview": "Vista previa da mensaxe", "List options": "Opcións da listaxe", "Add room": "Engadir sala", "Show %(count)s more|other": "Mostrar %(count)s máis", @@ -1643,7 +1556,6 @@ "%(count)s unread messages including mentions.|one": "1 mención non lida.", "%(count)s unread messages.|other": "%(count)s mensaxe non lidas.", "%(count)s unread messages.|one": "1 mensaxe non lida.", - "Unread mentions.": "Mencións non lidas.", "Unread messages.": "Mensaxes non lidas.", "Leave Room": "Deixar a Sala", "Room options": "Opcións da Sala", @@ -1728,7 +1640,6 @@ "Almost there! Is %(displayName)s showing the same shield?": "Case feito! ¿está %(displayName)s mostrando as mesmas emoticonas?", "Yes": "Si", "Verify all users in a room to ensure it's secure.": "Verificar todas as usuarias da sala para asegurar que é segura.", - "Use the improved room list (will refresh to apply changes)": "Usa a lista de salas mellorada (actualizará para aplicar)", "Strikethrough": "Sobrescrito", "In encrypted rooms, verify all users to ensure it’s secure.": "En salas cifradas, verifica todas as usuarias para asegurar que é segura.", "You've successfully verified your device!": "Verificaches correctamente o teu dispositivo!", @@ -2043,8 +1954,6 @@ "Please review and accept all of the homeserver's policies": "Revisa e acepta todas as cláusulas do servidor", "Please review and accept the policies of this homeserver:": "Revisa e acepta as cláusulas deste servidor:", "Unable to validate homeserver/identity server": "Non se puido validar o servidor/servidor de identidade", - "Your Modular server": "O teu servidor Modular", - "Enter the location of your Modular homeserver. It may use your own domain name or be a subdomain of modular.im.": "Escribe a localización do teu servidor Modular. Podería utilizar o teu propio nome de dominio ou ser un subdominio de modular.im.", "Server Name": "Nome do Servidor", "Enter password": "Escribe contrasinal", "Nice, strong password!": "Ben, bo contrasinal!", @@ -2099,7 +2008,6 @@ "Jump to first invite.": "Vai ó primeiro convite.", "You have %(count)s unread notifications in a prior version of this room.|other": "Tes %(count)s notificacións non lidas nunha versión previa desta sala.", "You have %(count)s unread notifications in a prior version of this room.|one": "Tes %(count)s notificacións non lidas nunha versión previa desta sala.", - "Your profile": "Perfil", "Switch to light mode": "Cambiar a decorado claro", "Switch to dark mode": "Cambiar a decorado escuro", "Switch theme": "Cambiar decorado", @@ -2279,50 +2187,9 @@ "%(senderName)s started a call": "%(senderName)s iniciou unha chamada", "Waiting for answer": "Agardando resposta", "%(senderName)s is calling": "%(senderName)s está chamando", - "You created the room": "Creaches a sala", - "%(senderName)s created the room": "%(senderName)s creou a sala", - "You made the chat encrypted": "Cifraches a conversa", - "%(senderName)s made the chat encrypted": "%(senderName)s cifrou a conversa", - "You made history visible to new members": "Fixeches visible o historial para novos membros", - "%(senderName)s made history visible to new members": "%(senderName)s fixo o historial visible para novos membros", - "You made history visible to anyone": "Fixeches que o historial sexa visible para todas", - "%(senderName)s made history visible to anyone": "%(senderName)s fixo o historial visible para todas", - "You made history visible to future members": "Fixeches o historial visible para membros futuros", - "%(senderName)s made history visible to future members": "%(senderName)s fixo o historial visible para futuros membros", - "You were invited": "Foches convidada", - "%(targetName)s was invited": "%(targetName)s foi convidada", - "You left": "Saíches", - "%(targetName)s left": "%(targetName)s saíu", - "You were kicked (%(reason)s)": "Expulsáronte (%(reason)s)", - "%(targetName)s was kicked (%(reason)s)": "%(targetName)s foi expulsada (%(reason)s)", - "You were kicked": "Foches expulsada", - "%(targetName)s was kicked": "%(targetName)s foi expulsada", - "You rejected the invite": "Rexeitaches o convite", - "%(targetName)s rejected the invite": "%(targetName)s rexeitou o convite", - "You were uninvited": "Retiraronche o convite", - "%(targetName)s was uninvited": "Retirouse o convite para %(targetName)s", - "You were banned (%(reason)s)": "Foches bloqueada (%(reason)s)", - "%(targetName)s was banned (%(reason)s)": "%(targetName)s foi bloqueada (%(reason)s)", - "You were banned": "Foches bloqueada", - "%(targetName)s was banned": "%(targetName)s foi bloqueada", - "You joined": "Unícheste", - "%(targetName)s joined": "%(targetName)s uneuse", - "You changed your name": "Cambiaches o nome", - "%(targetName)s changed their name": "%(targetName)s cambiou o seu nome", - "You changed your avatar": "Cambiáchelo avatar", - "%(targetName)s changed their avatar": "%(targetName)s cambiou o seu avatar", - "%(senderName)s %(emote)s": "%(senderName)s %(emote)s", "%(senderName)s: %(message)s": "%(senderName)s: %(message)s", - "You changed the room name": "Cambiaches o nome da sala", - "%(senderName)s changed the room name": "%(senderName)s cambiou o nome da sala", "%(senderName)s: %(reaction)s": "%(senderName)s: %(reaction)s", "%(senderName)s: %(stickerName)s": "%(senderName)s: %(stickerName)s", - "You uninvited %(targetName)s": "Retiraches o convite para %(targetName)s", - "%(senderName)s uninvited %(targetName)s": "%(senderName)s retiroulle o convite a %(targetName)s", - "You invited %(targetName)s": "Convidaches a %(targetName)s", - "%(senderName)s invited %(targetName)s": "%(senderName)s convidou a %(targetName)s", - "You changed the room topic": "Cambiaches o tema da sala", - "%(senderName)s changed the room topic": "%(senderName)s cambiou o asunto da sala", "Message deleted on %(date)s": "Mensaxe eliminada o %(date)s", "Wrong file type": "Tipo de ficheiro erróneo", "Looks good!": "Pinta ben!", @@ -2345,10 +2212,6 @@ "Set a Security Phrase": "Establece a Frase de Seguridade", "Confirm Security Phrase": "Confirma a Frase de Seguridade", "Save your Security Key": "Garda a Chave de Seguridade", - "Use your account to sign in to the latest version": "Usa a túa conta para conectarte á última versión", - "We’re excited to announce Riot is now Element": "Emociónanos anunciar que Riot agora chámase Element", - "Riot is now Element!": "Riot agora é Element!", - "Learn More": "Saber máis", "Enable experimental, compact IRC style layout": "Activar o estilo experimental IRC compacto", "Unknown caller": "Descoñecido", "Incoming voice call": "Chamada de voz entrante", @@ -2358,19 +2221,12 @@ "There are advanced notifications which are not shown here.": "Existen notificacións avanzadas que non aparecen aquí.", "You might have configured them in a client other than %(brand)s. You cannot tune them in %(brand)s but they still apply.": "Deberialas ter configurado nun cliente diferente de %(brand)s. Non podes modificalas en %(brand)s pero aplícanse igualmente.", "Set the name of a font installed on your system & %(brand)s will attempt to use it.": "Escolle unha das tipografías instaladas no teu sistema e %(brand)s intentará utilizalas.", - "Make this room low priority": "Marcar a sala como de baixa prioridade", - "Low priority rooms show up at the bottom of your room list in a dedicated section at the bottom of your room list": "As salas de baixa prioridade aparecen abaixo na lista de salas, nunha sección dedicada no final da lista", "Use default": "Usar por omisión", "Mentions & Keywords": "Mencións e Palabras chave", "Notification options": "Opcións de notificación", "Favourited": "Con marca de Favorita", "Forget Room": "Esquecer sala", "If the other version of %(brand)s is still open in another tab, please close it as using %(brand)s on the same host with both lazy loading enabled and disabled simultaneously will cause issues.": "Se a outra versión de %(brand)s aínda está aberta noutra lapela, péchaa xa que usar %(brand)s no mesmo servidor con carga preguiceira activada e desactivada ao mesmo tempo causará problemas.", - "Use your account to sign in to the latest version of the app at ": "Usa a túa conta para conectarte á última versión da app en ", - "You’re already signed in and good to go here, but you can also grab the latest versions of the app on all platforms at element.io/get-started.": "Xa estás conectada e podes ir alá, pero tamén podes ir á última versión da app en tódalas plataformas en element.io/get-started.", - "Go to Element": "Ir a Element", - "We’re excited to announce Riot is now Element!": "Emociónanos comunicar que Riot agora é Element!", - "Learn more at element.io/previously-riot": "Coñece máis en element.io/previously-riot", "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use %(brand)s with an existing Matrix account on a different homeserver.": "Podes usar as opcións de servidor personalizado para conectar con outros servidores Matrix indicando un URL diferente para o servidor. Poderás usar %(brand)s cunha conta Matrix existente noutro servidor de inicio.", "Enter the location of your Element Matrix Services homeserver. It may use your own domain name or be a subdomain of element.io.": "Escribe a localización do teu servidor Element Matrix Services. Podería ser o teu propio dominio ou un subdominio de element.io.", "Search rooms": "Buscar salas", @@ -2378,7 +2234,6 @@ "%(brand)s Web": "Web %(brand)s", "%(brand)s Desktop": "%(brand)s Desktop", "%(brand)s iOS": "%(brand)s iOS", - "%(brand)s X for Android": "%(brand)s X para Android", "This room is public": "Esta é unha sala pública", "Away": "Fóra", "Enable advanced debugging for the room list": "Activar depuración avanzada para a lista da sala", diff --git a/src/i18n/strings/hi.json b/src/i18n/strings/hi.json index 75b14cca18..fc3eba0592 100644 --- a/src/i18n/strings/hi.json +++ b/src/i18n/strings/hi.json @@ -202,11 +202,6 @@ "When I'm invited to a room": "जब मुझे एक रूम में आमंत्रित किया जाता है", "Call invitation": "कॉल आमंत्रण", "Messages sent by bot": "रोबॉट द्वारा भेजे गए संदेश", - "Active call (%(roomName)s)": "सक्रिय कॉल (%(roomName)s)", - "unknown caller": "अज्ञात फ़ोन करने वाला", - "Incoming voice call from %(name)s": "%(name)s से आने वाली ध्वनि कॉल", - "Incoming video call from %(name)s": "%(name)s से आने वाली वीडियो कॉल", - "Incoming call from %(name)s": "%(name)s से आने वाली कॉल", "Decline": "पतन", "Accept": "स्वीकार", "Error": "त्रुटि", @@ -412,68 +407,6 @@ "Verify this user by confirming the following emoji appear on their screen.": "इस उपयोगकर्ता की पुष्टि करें कि उनकी स्क्रीन पर निम्नलिखित इमोजी दिखाई देते हैं।", "Verify this user by confirming the following number appears on their screen.": "निम्न स्क्रीन पर दिखाई देने वाली संख्या की पुष्टि करके इस उपयोगकर्ता को सत्यापित करें।", "Unable to find a supported verification method.": "समर्थित सत्यापन विधि खोजने में असमर्थ।", - "Dog": "कुत्ता", - "Cat": "बिल्ली", - "Lion": "शेर", - "Horse": "घोड़ा", - "Unicorn": "यूनिकॉर्न", - "Pig": "शूकर", - "Elephant": "हाथी", - "Rabbit": "खरगोश", - "Panda": "पांडा", - "Rooster": "मुरग़ा", - "Penguin": "पेंगुइन", - "Turtle": "कछुए", - "Fish": "मछली", - "Octopus": "ऑक्टोपस", - "Butterfly": "तितली", - "Flower": "फूल", - "Tree": "वृक्ष", - "Cactus": "कैक्टस", - "Mushroom": "मशरूम", - "Globe": "ग्लोब", - "Moon": "चांद", - "Cloud": "मेघ", - "Fire": "आग", - "Banana": "केला", - "Apple": "सेब", - "Strawberry": "स्ट्रॉबेरी", - "Corn": "मक्का", - "Pizza": "पिज़्ज़ा", - "Cake": "केक", - "Heart": "दिल", - "Smiley": "स्माइली", - "Robot": "रोबोट", - "Hat": "टोपी", - "Glasses": "चश्मा", - "Spanner": "नापनेवाला", - "Santa": "सांता", - "Thumbs up": "थम्स अप", - "Umbrella": "छाता", - "Hourglass": "समय सूचक", - "Clock": "घड़ी", - "Gift": "उपहार", - "Light bulb": "लाइट बल्ब", - "Book": "पुस्तक", - "Pencil": "पेंसिल", - "Paperclip": "पेपर क्लिप", - "Key": "चाबी", - "Hammer": "हथौड़ा", - "Telephone": "टेलीफोन", - "Flag": "झंडा", - "Train": "रेल गाडी", - "Bicycle": "साइकिल", - "Aeroplane": "विमान", - "Rocket": "राकेट", - "Trophy": "ट्रॉफी", - "Ball": "गेंद", - "Guitar": "गिटार", - "Trumpet": "तुरही", - "Bell": "घंटी", - "Anchor": "लंगर", - "Headphones": "हेडफोन", - "Folder": "फ़ोल्डर", - "Pin": "पिन", "Unable to remove contact information": "संपर्क जानकारी निकालने में असमर्थ", "Yes": "हाँ", "No": "नहीं", @@ -546,7 +479,6 @@ "%(senderDisplayName)s disabled flair for %(groups)s in this room.": "%(senderDisplayName)s ने फ्लेयर %(groups)s के लिए अक्षम कर दिया।", "%(senderDisplayName)s enabled flair for %(newGroups)s and disabled flair for %(oldGroups)s in this room.": "%(senderDisplayName)s ने इस कमरे में %(newGroups)s के लिए फ्लेयर सक्षम किया और %(oldGroups)s के लिए फ्लेयर अक्षम किया।", "Show read receipts sent by other users": "अन्य उपयोगकर्ताओं द्वारा भेजी गई रसीदें दिखाएं", - "Scissors": "कैंची", "Timeline": "समयसीमा", "Room list": "कक्ष सूचि", "Autocomplete delay (ms)": "स्वत: पूर्ण विलंब (ms)", diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index 209c237c0c..20559f6917 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -19,7 +19,6 @@ "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s elfogadta a meghívást ide: %(displayName)s.", "Account": "Fiók", "Access Token:": "Elérési kulcs:", - "Active call (%(roomName)s)": "Hívás folyamatban (%(roomName)s)", "Add": "Hozzáad", "Add a topic": "Téma megadása", "Admin": "Admin", @@ -133,9 +132,6 @@ "I have verified my email address": "Ellenőriztem az e-mail címemet", "Import": "Betöltés", "Import E2E room keys": "E2E szoba kulcsok betöltése", - "Incoming call from %(name)s": "Beérkező hivás: %(name)s", - "Incoming video call from %(name)s": "Bejövő videóhívás: %(name)s", - "Incoming voice call from %(name)s": "Bejövő hívás: %(name)s", "Incorrect username and/or password.": "Helytelen felhasználó és/vagy jelszó.", "Incorrect verification code": "Hibás azonosítási kód", "Invalid Email Address": "Hibás e-mail cím", @@ -250,7 +246,6 @@ "%(senderName)s unbanned %(targetName)s.": "%(senderName)s visszaengedte %(targetName)s felhasználót.", "Unable to capture screen": "A képernyő felvétele sikertelen", "Unable to enable Notifications": "Az értesítések engedélyezése sikertelen", - "unknown caller": "ismeretlen hívó", "Unmute": "Némítás kikapcsolása", "Unnamed Room": "Névtelen szoba", "Uploading %(filename)s and %(count)s others|zero": "%(filename)s feltöltése", @@ -284,7 +279,6 @@ "You do not have permission to post to this room": "Nincs jogod írni ebben a szobában", "You have disabled URL previews by default.": "Az URL előnézet alapból tiltva van.", "You have enabled URL previews by default.": "Az URL előnézet alapból engedélyezve van.", - "You have no visible notifications": "Nincsenek látható értesítéseid", "You must register to use this functionality": "Regisztrálnod kell hogy ezt használhasd", "You need to be able to invite users to do that.": "Hogy ezt tehesd, meg kell tudnod hívni felhasználókat.", "You need to be logged in.": "Be kell jelentkezz.", @@ -318,7 +312,6 @@ "Upload an avatar:": "Avatar kép feltöltése:", "This server does not support authentication with a phone number.": "Ez a szerver nem támogatja a telefonszámmal való azonosítást.", "An error occurred: %(error_string)s": "Hiba történt: %(error_string)s", - "There are no visible files in this room": "Ebben a szobában láthatólag nincsenek fájlok", "Room": "Szoba", "Connectivity to the server has been lost.": "A szerverrel a kapcsolat megszakadt.", "Sent messages will be stored until your connection has returned.": "Az elküldött üzenetek addig lesznek tárolva amíg a kapcsolatod újra elérhető lesz.", @@ -578,7 +571,6 @@ "Visibility in Room List": "Láthatóság a szoba listában", "Visible to everyone": "Mindenki számára látható", "Only visible to community members": "Csak a közösség számára látható", - "Community Invites": "Közösségi meghívók", "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

HTML a közösségi oldalhoz

\n

\n Használj hosszú leírást az tagok közösségbe való bemutatásához vagy terjessz\n hasznos linkeket\n

\n

\n Még 'img' tagokat is használhatsz\n

\n", "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Ezek a szobák megjelennek a közösség tagjainak a közösségi oldalon. A közösség tagjai kattintással csatlakozhatnak a szobákhoz.", "Your community hasn't got a Long Description, a HTML page to show to community members.
Click here to open settings and give it one!": "A közösségednek nincs bő leírása, HTML oldala ami megjelenik a közösség tagjainak.
A létrehozáshoz kattints ide!", @@ -819,7 +811,6 @@ "Share Community": "Közösség megosztás", "Share Room Message": "Szoba üzenet megosztás", "Link to selected message": "Hivatkozás a kijelölt üzenetre", - "COPY": "Másol", "Share Message": "Üzenet megosztása", "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "Az olyan titkosított szobákban, mint ez is, az URL előnézet alapértelmezetten ki van kapcsolva, hogy biztosított legyen, hogy a Matrix szerver (ahol az előnézet készül) ne tudjon információt gyűjteni arról, hogy milyen linkeket látsz ebben a szobában.", "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "Ha valaki URL linket helyez az üzenetébe, lehetőség van egy előnézet megjelenítésére amivel további információt kaphatunk a linkről, mint cím, leírás és a weboldal képe.", @@ -1055,8 +1046,6 @@ "Go back": "Vissza", "Update status": "Állapot frissítése", "Set status": "Állapot beállítása", - "Your Modular server": "A te Modular servered", - "Enter the location of your Modular homeserver. It may use your own domain name or be a subdomain of modular.im.": "Add meg a Modular Matrix szerveredet. Ami vagy saját domaint használ vagy a modular.im aldomainját.", "Server Name": "Szerver neve", "The username field must not be blank.": "A felhasználói név mező nem lehet üres.", "Username": "Felhasználói név", @@ -1096,68 +1085,6 @@ "Group & filter rooms by custom tags (refresh to apply changes)": "Szobák csoportosítása és szűrése egyedi címkékkel (frissíts, hogy a változások érvényre jussanak)", "Verify this user by confirming the following emoji appear on their screen.": "Hitelesítheted a felhasználót, ha megerősíted, hogy az alábbi emodzsi az ami megjelent a képernyőjén.", "Unable to find a supported verification method.": "Nem található támogatott hitelesítési eljárás.", - "Dog": "Kutya", - "Cat": "Macska", - "Lion": "Oroszlán", - "Horse": "Ló", - "Unicorn": "Egyszarvú", - "Pig": "Disznó", - "Elephant": "Elefánt", - "Rabbit": "Nyúl", - "Panda": "Panda", - "Rooster": "Kakas", - "Penguin": "Pingvin", - "Turtle": "Teknős", - "Fish": "Hal", - "Octopus": "Polip", - "Butterfly": "Pillangó", - "Flower": "Virág", - "Tree": "Fa", - "Cactus": "Kaktusz", - "Mushroom": "Gomba", - "Globe": "Földgömb", - "Moon": "Hold", - "Cloud": "Felhő", - "Fire": "Tűz", - "Banana": "Banán", - "Apple": "Alma", - "Strawberry": "Eper", - "Corn": "Kukorica", - "Pizza": "Pizza", - "Cake": "Sütemény", - "Heart": "Szív", - "Smiley": "Smiley", - "Robot": "Robot", - "Hat": "Kalap", - "Glasses": "Szemüveg", - "Spanner": "Csavarhúzó", - "Santa": "Télapó", - "Thumbs up": "Hüvelykujj fel", - "Umbrella": "Esernyő", - "Hourglass": "Homokóra", - "Clock": "Óra", - "Gift": "Ajándék", - "Light bulb": "Égő", - "Book": "Könyv", - "Pencil": "Toll", - "Paperclip": "Gémkapocs", - "Key": "Kulcs", - "Hammer": "Kalapács", - "Telephone": "Telefon", - "Flag": "Zászló", - "Train": "Vonat", - "Bicycle": "Kerékpár", - "Aeroplane": "Repülőgép", - "Rocket": "Rakéta", - "Trophy": "Kupa", - "Ball": "Labda", - "Guitar": "Gitár", - "Trumpet": "Trombita", - "Bell": "Harang", - "Anchor": "Horgony", - "Headphones": "Fejhallgató", - "Folder": "Dosszié", - "Pin": "Gombostű", "This homeserver would like to make sure you are not a robot.": "A Matrix szerver meg kíván győződni arról, hogy nem vagy robot.", "Change": "Változtat", "Couldn't load page": "Az oldal nem tölthető be", @@ -1194,7 +1121,6 @@ "%(senderDisplayName)s disabled flair for %(groups)s in this room.": "%(senderDisplayName)s letiltotta a kitűzőket ebben a szobában az alábbi közösséghez: %(groups)s.", "%(senderDisplayName)s enabled flair for %(newGroups)s and disabled flair for %(oldGroups)s in this room.": "%(senderDisplayName)s engedélyezte a kitűzőket ebben a szobában az alábbi közösséghez: %(newGroups)s és letiltotta ehhez a közösséghez: %(oldGroups)s.", "Show read receipts sent by other users": "Mások által küldött olvasási visszajelzések mutatása", - "Scissors": "Ollók", "Error updating main address": "Az elsődleges cím frissítése sikertelen", "There was an error updating the room's main address. It may not be allowed by the server or a temporary failure occurred.": "A szoba elsődleges címének frissítésénél hiba történt. Vagy nincs engedélyezve a szerveren vagy átmeneti hiba történt.", "Error updating flair": "Kitűző frissítése sikertelen", @@ -1338,7 +1264,6 @@ "edited": "szerkesztve", "Show hidden events in timeline": "Rejtett események megmutatása az idővonalon", "Add room": "Szoba hozzáadása", - "Your profile": "Profilod", "No homeserver URL provided": "Hiányzó matrix szerver URL", "Unexpected error resolving homeserver configuration": "A matrix szerver konfiguráció betöltésekor ismeretlen hiba lépett fel", "Edit message": "Üzenet szerkesztése", @@ -1496,9 +1421,6 @@ "Error changing power level requirement": "A szükséges hozzáférési szint változtatás nem sikerült", "An error occurred changing the room's power level requirements. Ensure you have sufficient permissions and try again.": "A szoba szükséges hozzáférési szint változtatásakor hiba történt. Ellenőrizd, hogy megvan hozzá a megfelelő jogosultságod és próbáld újra.", "Send read receipts for messages (requires compatible homeserver to disable)": "Olvasás visszajelzés küldése üzenetekhez (a tiltáshoz kompatibilis matrix szerverre van szükség)", - "Explore": "Felderít", - "Filter": "Szűrés", - "Filter rooms…": "Szobák szűrése…", "Preview": "Előnézet", "View": "Nézet", "Find a room…": "Szoba keresése…", @@ -1530,7 +1452,6 @@ "Clear cache and reload": "Gyorsítótár ürítése és újratöltés", "%(count)s unread messages including mentions.|other": "%(count)s olvasatlan üzenet megemlítéssel.", "%(count)s unread messages.|other": "%(count)s olvasatlan üzenet.", - "Unread mentions.": "Olvasatlan megemlítés.", "Show image": "Képek megmutatása", "Please create a new issue on GitHub so that we can investigate this bug.": "Ahhoz hogy a hibát megvizsgálhassuk kérlek készíts egy új hibajegyet a GitHubon.", "To continue you need to accept the terms of this service.": "A folytatáshoz el kell fogadnod a felhasználási feltételeket.", @@ -1573,7 +1494,6 @@ "Jump to first unread room.": "Az első olvasatlan szobába ugrás.", "Jump to first invite.": "Az első meghívóra ugrás.", "Room %(name)s": "Szoba: %(name)s", - "Recent rooms": "Legutóbbi szobák", "No identity server is configured so you cannot add an email address in order to reset your password in the future.": "Azonosítási szerver nincs beállítva, így nem tudsz hozzáadni e-mail címet amivel vissza lehetne állítani a jelszót a későbbiekben.", "%(count)s unread messages including mentions.|one": "1 olvasatlan megemlítés.", "%(count)s unread messages.|one": "1 olvasatlan üzenet.", @@ -1742,7 +1662,6 @@ "Suggestions": "Javaslatok", "Failed to find the following users": "Az alábbi felhasználók nem találhatók", "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s": "Az alábbi felhasználók nem léteznek vagy hibásan vannak megadva és nem lehet őket meghívni: %(csvNames)s", - "Lock": "Zár", "a few seconds ago": "néhány másodperce", "about a minute ago": "percekkel ezelőtt", "%(num)s minutes ago": "%(num)s perccel ezelőtt", @@ -1780,7 +1699,6 @@ "Send as message": "Üzenet küldése", "This room is end-to-end encrypted": "Ez a szoba végpontok közötti titkosítást használ", "Everyone in this room is verified": "A szobába mindenki ellenőrizve van", - "Invite only": "Csak meghívóval", "Send a reply…": "Válasz küldése…", "Send a message…": "Üzenet küldése…", "Reject & Ignore user": "Felhasználó elutasítása és figyelmen kívül hagyása", @@ -1924,8 +1842,6 @@ "If you did this accidentally, you can setup Secure Messages on this session which will re-encrypt this session's message history with a new recovery method.": "Ha véletlenül tetted, beállíthatod a Biztonságos Üzeneteket ezen a munkameneten ami újra titkosítja a régi üzeneteket az visszaállítási eljárással.", "Indexed rooms:": "Indexált szobák:", "Message downloading sleep time(ms)": "Üzenet letöltés alvási idő (ms)", - "If you cancel now, you won't complete verifying the other user.": "A másik felhasználó ellenőrzését nem fejezed be, ha ezt most megszakítod.", - "If you cancel now, you won't complete verifying your other session.": "A másik munkameneted ellenőrzését nem fejezed be, ha ezt most megszakítod.", "Show typing notifications": "Gépelés visszajelzés megjelenítése", "Verify this session by completing one of the following:": "Ellenőrizd ezt a munkamenetet az alábbiak egyikével:", "Scan this unique code": "Ennek az egyedi kódnak a beolvasása", @@ -2122,7 +2038,6 @@ "Click the button below to confirm adding this phone number.": "Az telefonszám hozzáadásának megerősítéséhez kattints a gombra lent.", "Confirm adding this email address by using Single Sign On to prove your identity.": "Erősítsd meg, hogy az egyszeri bejelentkezésnél a személyazonosságod bizonyításaként használt e-mail címet hozzáadod.", "Confirm adding this phone number by using Single Sign On to prove your identity.": "Erősítsd meg, hogy az egyszeri bejelentkezésnél a személyazonosságod bizonyításaként használt telefonszámot hozzáadod.", - "If you cancel now, you won't complete your operation.": "A műveletet nem fejezed be, ha ezt most megszakítod.", "Failed to set topic": "A téma beállítása sikertelen", "Command failed": "A parancs sikertelen", "Could not find user in room": "A felhasználó nem található a szobában", @@ -2190,7 +2105,6 @@ "Room name or address": "A szoba neve vagy címe", "Joins room with given address": "Megadott címmel csatlakozik a szobához", "Unrecognised room address:": "Ismeretlen szoba cím:", - "Font scaling": "Betű nagyítás", "Font size": "Betűméret", "IRC display name width": "IRC megjelenítési név szélessége", "Size must be a number": "A méretnek számnak kell lennie", @@ -2213,7 +2127,6 @@ "Please verify the room ID or address and try again.": "Kérlek ellenőrizd a szoba azonosítót vagy címet és próbáld újra.", "Room ID or address of ban list": "Tiltó lista szoba azonosító vagy cím", "To link to this room, please add an address.": "Hogy linkelhess egy szobához, adj hozzá egy címet.", - "Create room": "Szoba létrehozása", "Error creating address": "Cím beállítási hiba", "There was an error creating that address. It may not be allowed by the server or a temporary failure occurred.": "A cím beállításánál hiba történt. Vagy nincs engedélyezve a szerveren vagy átmeneti hiba történt.", "You don't have permission to delete the address.": "A cím törléséhez nincs jogosultságod.", @@ -2235,10 +2148,6 @@ "No recently visited rooms": "Nincsenek nemrégiben meglátogatott szobák", "People": "Emberek", "Sort by": "Rendezve:", - "Unread rooms": "Olvasatlan szobák", - "Always show first": "Mindig az elsőt mutatja", - "Show": "Mutat", - "Message preview": "Üzenet előnézet", "List options": "Lista beállítások", "Show %(count)s more|other": "Még %(count)s megjelenítése", "Show %(count)s more|one": "Még %(count)s megjelenítése", @@ -2258,7 +2167,6 @@ "Looks good!": "Jól néz ki!", "Use Recovery Key or Passphrase": "Használd a visszaállítási kulcsot vagy jelmondatot", "Use Recovery Key": "Használd a Visszaállítási Kulcsot", - "Use the improved room list (will refresh to apply changes)": "Használd a fejlesztett szoba listát (a változások életbe lépéséhez újra fog tölteni)", "Use custom size": "Egyedi méret használata", "Use a system font": "Rendszer betűtípus használata", "System font name": "Rendszer betűtípus neve", @@ -2277,50 +2185,9 @@ "%(senderName)s started a call": "%(senderName)s hívást kezdeményezett", "Waiting for answer": "Válaszra várakozás", "%(senderName)s is calling": "%(senderName)s hív", - "You created the room": "Létrehoztál egy szobát", - "%(senderName)s created the room": "%(senderName)s létrehozott egy szobát", - "You made the chat encrypted": "A beszélgetést titkosítottá tetted", - "%(senderName)s made the chat encrypted": "%(senderName)s titkosítottá tette a beszélgetést", - "You made history visible to new members": "A régi beszélgetéseket láthatóvá tetted az új tagok számára", - "%(senderName)s made history visible to new members": "%(senderName)s a régi beszélgetéseket láthatóvá tette az új tagok számára", - "You made history visible to anyone": "A régi beszélgetéseket láthatóvá tette mindenki számára", - "%(senderName)s made history visible to anyone": "%(senderName)s a régi beszélgetéseket láthatóvá tette mindenki számára", - "You made history visible to future members": "A régi beszélgetéseket láthatóvá tetted a leendő tagok számára", - "%(senderName)s made history visible to future members": "%(senderName)s a régi beszélgetéseket láthatóvá tette a leendő tagok számára", - "You were invited": "Meghívtak", - "%(targetName)s was invited": "Meghívták őt: %(targetName)s", - "You left": "Távoztál", - "%(targetName)s left": "%(targetName)s távozott", - "You were kicked (%(reason)s)": "Kirúgtak (%(reason)s)", - "%(targetName)s was kicked (%(reason)s)": "Kirúgták őt: %(targetName)s (%(reason)s)", - "You were kicked": "Kirúgtak", - "%(targetName)s was kicked": "Kirúgták őt: %(targetName)s", - "You rejected the invite": "A meghívót elutasítottad", - "%(targetName)s rejected the invite": "%(targetName)s elutasította a meghívót", - "You were uninvited": "A meghívódat visszavonták", - "%(targetName)s was uninvited": "A meghívóját visszavonták neki: %(targetName)s", - "You were banned (%(reason)s)": "Kitiltottak (%(reason)s)", - "%(targetName)s was banned (%(reason)s)": "Kitiltották őt: %(targetName)s (%(reason)s)", - "You were banned": "Kitiltottak", - "%(targetName)s was banned": "Kitiltották őt: %(targetName)s", - "You joined": "Beléptél", - "%(targetName)s joined": "%(targetName)s belépett", - "You changed your name": "A neved megváltoztattad", - "%(targetName)s changed their name": "%(targetName)s megváltoztatta a nevét", - "You changed your avatar": "A profilképedet megváltoztattad", - "%(targetName)s changed their avatar": "%(targetName)s megváltoztatta a profilképét", - "%(senderName)s %(emote)s": "%(senderName)s %(emote)s", "%(senderName)s: %(message)s": "%(senderName)s: %(message)s", - "You changed the room name": "A szoba nevét megváltoztattad", - "%(senderName)s changed the room name": "%(senderName)s megváltoztatta a szoba nevét", "%(senderName)s: %(reaction)s": "%(senderName)s: %(reaction)s", "%(senderName)s: %(stickerName)s": "%(senderName)s: %(stickerName)s", - "You uninvited %(targetName)s": "A meghívóját visszavontad neki: %(targetName)s", - "%(senderName)s uninvited %(targetName)s": "%(senderName)s visszavonta a meghívóját neki: %(targetName)s", - "You invited %(targetName)s": "Meghívtad őt: %(targetName)s", - "%(senderName)s invited %(targetName)s": "%(senderName)s meghívta őt: %(targetName)s", - "You changed the room topic": "A szoba témáját megváltoztattad", - "%(senderName)s changed the room topic": "%(senderName)s megváltoztatta a szoba témáját", "New spinner design": "Új várakozási animáció", "Use a more compact ‘Modern’ layout": "Egyszerűbb 'Modern' kinézet használata", "Message deleted on %(date)s": "Az üzenetet ekkor törölték: %(date)s", @@ -2344,10 +2211,6 @@ "Set a Security Phrase": "Biztonsági Jelmondat beállítása", "Confirm Security Phrase": "Biztonsági Jelmondat megerősítése", "Save your Security Key": "Ments el a Biztonsági Kulcsodat", - "Use your account to sign in to the latest version": "A legutolsó verzióba való bejelentkezéshez használd a fiókodat", - "We’re excited to announce Riot is now Element": "Izgatottan jelentjük, hogy a Riot mostantól Element", - "Riot is now Element!": "Riot mostantól Element!", - "Learn More": "Tudj meg többet", "Enable experimental, compact IRC style layout": "Egyszerű (kísérleti) IRC stílusú kinézet engedélyezése", "Unknown caller": "Ismeretlen hívó", "Incoming voice call": "Bejövő hanghívás", @@ -2355,22 +2218,16 @@ "Incoming call": "Bejövő hívás", "There are advanced notifications which are not shown here.": "Vannak haladó értesítési beállítások amik itt nem jelennek meg.", "Appearance Settings only affect this %(brand)s session.": "A megjelenítési beállítások csak erre az %(brand)s munkamenetre lesznek érvényesek.", - "Make this room low priority": "Ez a szoba legyen alacsony prioritású", "Use default": "Alapértelmezett használata", "Mentions & Keywords": "Megemlítések és kulcsszavak", "Notification options": "Értesítési beállítások", "Favourited": "Kedvencek", "Forget Room": "Szoba elfelejtése", - "Use your account to sign in to the latest version of the app at ": "Az alkalmazás legutolsó verzióba való bejelentkezéshez itt használd a fiókodat", - "Go to Element": "Irány az Element", - "We’re excited to announce Riot is now Element!": "Izgatottan jelentjük, hogy a Riot mostantól Element!", - "Learn more at element.io/previously-riot": "Tudj meg többet: element.io/previously-riot", "Search rooms": "Szobák keresése", "User menu": "Felhasználói menü", "%(brand)s Web": "%(brand)s Web", "%(brand)s Desktop": "Asztali %(brand)s", "%(brand)s iOS": "%(brand)s iOS", - "%(brand)s X for Android": "%(brand)s X Android", "This room is public": "Ez egy nyilvános szoba", "Away": "Távol", "Are you sure you want to cancel entering passphrase?": "Biztos vagy benne, hogy megszakítod a jelmondat bevitelét?", @@ -2379,13 +2236,11 @@ "You might have configured them in a client other than %(brand)s. You cannot tune them in %(brand)s but they still apply.": "Valószínűleg egy %(brand)s klienstől eltérő programmal konfiguráltad. %(brand)s kliensben nem tudod módosítani de attól még érvényesek.", "Set the name of a font installed on your system & %(brand)s will attempt to use it.": "Add meg a rendszer által használt font nevét és %(brand)s megpróbálja majd azt használni.", "Add users and servers you want to ignore here. Use asterisks to have %(brand)s match any characters. For example, @bot:* would ignore all users that have the name 'bot' on any server.": "A figyelmen kívül hagyandó felhasználókat és szervereket itt add meg. %(brand)s kliensben használj csillagot hogy a helyén minden karakterre illeszkedjen a kifejezés. Például: @bot:* figyelmen kívül fog hagyni minden „bot” nevű felhasználót bármely szerverről.", - "Low priority rooms show up at the bottom of your room list in a dedicated section at the bottom of your room list": "Az alacsony prioritású szobák egy külön helyen a szobalista alján fognak megjelenni", "Custom Tag": "Egyedi címke", "Show rooms with unread messages first": "Olvasatlan üzeneteket tartalmazó szobák megjelenítése elől", "Show previews of messages": "Üzenet előnézet megjelenítése", "Edited at %(date)s": "Szerkesztve ekkor: %(date)s", "Click to view edits": "A szerkesztések megtekintéséhez kattints", - "You’re already signed in and good to go here, but you can also grab the latest versions of the app on all platforms at element.io/get-started.": "Már be vagy jelentkezve és ez rendben van, de minden platformon az alkalmazás legfrissebb verziójának beszerzéséhez látogass el ide: element.io/get-started.", "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use %(brand)s with an existing Matrix account on a different homeserver.": "Használhatod a más szerver opciót, hogy egy másik matrix szerverre jelentkezz be amihez megadod a szerver url címét. Ezzel használhatod %(brand)s klienst egy már létező Matrix fiókkal egy másik matrix szerveren.", "Enter the location of your Element Matrix Services homeserver. It may use your own domain name or be a subdomain of element.io.": "Add meg az Element Matrix Services matrix szerveredet. Használhatod a saját domain-edet vagy az element.io al-domain-jét.", "* %(senderName)s %(emote)s": "* %(senderName)s %(emote)s", diff --git a/src/i18n/strings/id.json b/src/i18n/strings/id.json index 2de350bae3..85888a9b17 100644 --- a/src/i18n/strings/id.json +++ b/src/i18n/strings/id.json @@ -105,7 +105,6 @@ "%(targetName)s accepted an invitation.": "%(targetName)s telah menerima undangan.", "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s menerima undangan untuk %(displayName)s.", "Access Token:": "Token Akses:", - "Active call (%(roomName)s)": "Panggilan aktif (%(roomName)s)", "Admin": "Admin", "Admin Tools": "Peralatan Admin", "No Webcams detected": "Tidak ada Webcam terdeteksi", diff --git a/src/i18n/strings/is.json b/src/i18n/strings/is.json index 6f561331f6..7e9faccdc1 100644 --- a/src/i18n/strings/is.json +++ b/src/i18n/strings/is.json @@ -73,9 +73,6 @@ "When I'm invited to a room": "Þegar mér er boðið á spjallrás", "Call invitation": "Boð um þátttöku", "Messages sent by bot": "Skilaboð send af vélmennum", - "unknown caller": "Óþekktur símnotandi", - "Incoming voice call from %(name)s": "Innhringing raddsamtals frá %(name)s", - "Incoming video call from %(name)s": "Innhringing myndsamtals frá %(name)s", "Decline": "Hafna", "Accept": "Samþykkja", "Error": "Villa", diff --git a/src/i18n/strings/it.json b/src/i18n/strings/it.json index d86070018b..b5fba31100 100644 --- a/src/i18n/strings/it.json +++ b/src/i18n/strings/it.json @@ -191,11 +191,6 @@ "Enable URL previews for this room (only affects you)": "Attiva le anteprime URL in questa stanza (riguarda solo te)", "Enable URL previews by default for participants in this room": "Attiva le anteprime URL in modo predefinito per i partecipanti in questa stanza", "Room Colour": "Colore della stanza", - "Active call (%(roomName)s)": "Chiamata attiva (%(roomName)s)", - "unknown caller": "Chiamante sconosciuto", - "Incoming voice call from %(name)s": "Telefonata in arrivo da %(name)s", - "Incoming video call from %(name)s": "Videochiamata in arrivo da %(name)s", - "Incoming call from %(name)s": "Chiamata in arrivo da %(name)s", "Decline": "Rifiuta", "Accept": "Accetta", "Incorrect verification code": "Codice di verifica sbagliato", @@ -288,7 +283,6 @@ "Join Room": "Entra nella stanza", "Upload avatar": "Invia avatar", "Forget room": "Dimentica la stanza", - "Community Invites": "Inviti della comunità", "Invites": "Inviti", "Favourites": "Preferiti", "Low priority": "Bassa priorità", @@ -490,7 +484,6 @@ "Name": "Nome", "You must register to use this functionality": "Devi registrarti per usare questa funzionalità", "You must join the room to see its files": "Devi entrare nella stanza per vederne i file", - "There are no visible files in this room": "Non ci sono file visibili in questa stanza", "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

HTML per la pagina della tua comunità

\n

\n Usa la descrizione estesa per introdurre i nuovi membri alla comunità, o distribuisci\n alcuni link importanti\n

\n

\n Puoi anche usare i tag 'img'\n

\n", "Add rooms to the community summary": "Aggiungi stanze nel sommario della comunità", "Which rooms would you like to add to this summary?": "Quali stanze vorresti aggiungere a questo sommario?", @@ -541,7 +534,6 @@ "Error whilst fetching joined communities": "Errore nella rilevazione delle comunità a cui ti sei unito", "Create a new community": "Crea una nuova comunità", "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Crea una comunità per raggruppare utenti e stanze! Crea una pagina iniziale personalizzata per stabilire il tuo spazio nell'universo di Matrix.", - "You have no visible notifications": "Non hai alcuna notifica visibile", "%(count)s of your messages have not been sent.|other": "Alcuni dei tuoi messaggi non sono stati inviati.", "%(count)s of your messages have not been sent.|one": "Il tuo messaggio non è stato inviato.", "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.|other": "Reinvia tutti o annulla tutti adesso. Puoi anche selezionare i singoli messaggi da reinviare o annullare.", @@ -817,7 +809,6 @@ "Share Community": "Condividi comunità", "Share Room Message": "Condividi messaggio stanza", "Link to selected message": "Link al messaggio selezionato", - "COPY": "COPIA", "Share Message": "Condividi messaggio", "No Audio Outputs detected": "Nessuna uscita audio rilevata", "Audio Output": "Uscita audio", @@ -1014,69 +1005,6 @@ "Verify this user by confirming the following emoji appear on their screen.": "Verifica questo utente confermando che la seguente emoji appare sul suo schermo.", "Verify this user by confirming the following number appears on their screen.": "Verifica questo utente confermando che il seguente numero appare sul suo schermo.", "Unable to find a supported verification method.": "Impossibile trovare un metodo di verifica supportato.", - "Dog": "Cane", - "Cat": "Gatto", - "Lion": "Leone", - "Horse": "Cavallo", - "Unicorn": "Unicorno", - "Pig": "Maiale", - "Elephant": "Elefante", - "Rabbit": "Coniglio", - "Panda": "Panda", - "Rooster": "Gallo", - "Penguin": "Pinguino", - "Turtle": "Tartaruga", - "Fish": "Pesce", - "Octopus": "Piovra", - "Butterfly": "Farfalla", - "Flower": "Fiore", - "Tree": "Albero", - "Cactus": "Cactus", - "Mushroom": "Fungo", - "Globe": "Globo", - "Moon": "Luna", - "Cloud": "Nuvola", - "Fire": "Fuoco", - "Banana": "Banana", - "Apple": "Mela", - "Strawberry": "Fragola", - "Corn": "Mais", - "Pizza": "Pizza", - "Cake": "Torta", - "Heart": "Cuore", - "Smiley": "Sorriso", - "Robot": "Robot", - "Hat": "Cappello", - "Glasses": "Occhiali", - "Spanner": "Chiave inglese", - "Santa": "Babbo Natale", - "Thumbs up": "Pollice in su", - "Umbrella": "Ombrello", - "Hourglass": "Clessidra", - "Clock": "Orologio", - "Gift": "Regalo", - "Light bulb": "Lampadina", - "Book": "Libro", - "Pencil": "Matita", - "Paperclip": "Graffetta", - "Scissors": "Forbici", - "Key": "Chiave", - "Hammer": "Martello", - "Telephone": "Telefono", - "Flag": "Bandiera", - "Train": "Treno", - "Bicycle": "Bicicletta", - "Aeroplane": "Aeroplano", - "Rocket": "Razzo", - "Trophy": "Trofeo", - "Ball": "Palla", - "Guitar": "Chitarra", - "Trumpet": "Tromba", - "Bell": "Campana", - "Anchor": "Ancora", - "Headphones": "Auricolari", - "Folder": "Cartella", - "Pin": "Spillo", "Yes": "Sì", "No": "No", "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.": "Ti abbiamo inviato un'email per verificare il tuo indirizzo. Segui le istruzioni contenute e poi clicca il pulsante sotto.", @@ -1188,8 +1116,6 @@ "Set status": "Imposta stato", "Hide": "Nascondi", "This homeserver would like to make sure you are not a robot.": "Questo homeserver vorrebbe assicurarsi che non sei un robot.", - "Your Modular server": "Il tuo server Modular", - "Enter the location of your Modular homeserver. It may use your own domain name or be a subdomain of modular.im.": "Inserisci l'indirizzo del tuo homeserver Modular. Potrebbe usare il tuo nome di dominio o essere un sottodominio di modular.im.", "Server Name": "Nome server", "The username field must not be blank.": "Il campo nome utente non deve essere vuoto.", "Username": "Nome utente", @@ -1334,7 +1260,6 @@ "Enter username": "Inserisci nome utente", "Some characters not allowed": "Alcuni caratteri non sono permessi", "Add room": "Aggiungi stanza", - "Your profile": "Il tuo profilo", "Failed to get autodiscovery configuration from server": "Ottenimento automatico configurazione dal server fallito", "Invalid base_url for m.homeserver": "Base_url per m.homeserver non valido", "Homeserver URL does not appear to be a valid Matrix homeserver": "L'URL dell'homeserver non sembra essere un homeserver Matrix valido", @@ -1515,9 +1440,6 @@ "Reporting this message will send its unique 'event ID' to the administrator of your homeserver. If messages in this room are encrypted, your homeserver administrator will not be able to read the message text or view any files or images.": "La segnalazione di questo messaggio invierà il suo 'ID evento' univoco all'amministratore del tuo homeserver. Se i messaggi della stanza sono cifrati, l'amministratore non potrà leggere il messaggio o vedere file e immagini.", "Send report": "Invia segnalazione", "Report Content": "Segnala contenuto", - "Explore": "Esplora", - "Filter": "Filtra", - "Filter rooms…": "Filtra stanze…", "Preview": "Anteprima", "View": "Vedi", "Find a room…": "Trova una stanza…", @@ -1528,7 +1450,6 @@ "Clear cache and reload": "Svuota la cache e ricarica", "%(count)s unread messages including mentions.|other": "%(count)s messaggi non letti incluse le menzioni.", "%(count)s unread messages.|other": "%(count)s messaggi non letti.", - "Unread mentions.": "Menzioni non lette.", "Show image": "Mostra immagine", "Please create a new issue on GitHub so that we can investigate this bug.": "Segnala un nuovo problema su GitHub in modo che possiamo indagare su questo errore.", "To continue you need to accept the terms of this service.": "Per continuare devi accettare le condizioni di servizio.", @@ -1573,7 +1494,6 @@ "Command Autocomplete": "Autocompletamento comando", "DuckDuckGo Results": "Risultati DuckDuckGo", "Room %(name)s": "Stanza %(name)s", - "Recent rooms": "Stanze recenti", "No identity server is configured so you cannot add an email address in order to reset your password in the future.": "Nessun server di identità configurato, perciò non puoi aggiungere un indirizzo email per ripristinare la tua password in futuro.", "%(count)s unread messages including mentions.|one": "1 citazione non letta.", "%(count)s unread messages.|one": "1 messaggio non letto.", @@ -1754,7 +1674,6 @@ "%(num)s hours from now": "%(num)s ore da adesso", "about a day from now": "circa un giorno da adesso", "%(num)s days from now": "%(num)s giorni da adesso", - "Lock": "Lucchetto", "Bootstrap cross-signing and secret storage": "Inizializza firma incrociata e archivio segreto", "Failed to find the following users": "Impossibile trovare i seguenti utenti", "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s": "I seguenti utenti potrebbero non esistere o non sono validi, perciò non possono essere invitati: %(csvNames)s", @@ -1776,7 +1695,6 @@ "Start Verification": "Inizia la verifica", "This room is end-to-end encrypted": "Questa stanza è cifrata end-to-end", "Everyone in this room is verified": "Tutti in questa stanza sono verificati", - "Invite only": "Solo a invito", "Send a reply…": "Invia risposta…", "Send a message…": "Invia un messaggio…", "Reject & Ignore user": "Rifiuta e ignora l'utente", @@ -1922,8 +1840,6 @@ "Disable": "Disattiva", "%(brand)s is securely caching encrypted messages locally for them to appear in search results:": "%(brand)s sta tenendo in cache localmente i messaggi cifrati in modo sicuro affinché appaiano nei risultati di ricerca:", "Message downloading sleep time(ms)": "Tempo di attesa scaricamento messaggi (ms)", - "If you cancel now, you won't complete verifying the other user.": "Se adesso annulli, non completerai la verifica dell'altro utente.", - "If you cancel now, you won't complete verifying your other session.": "Se adesso annulli, non completerai la verifica dell'altra tua sessione.", "Cancel entering passphrase?": "Annullare l'inserimento della password?", "Mod": "Moderatore", "Indexed rooms:": "Stanze indicizzate:", @@ -2136,7 +2052,6 @@ "Syncing...": "Sincronizzazione...", "Signing In...": "Accesso...", "If you've joined lots of rooms, this might take a while": "Se sei dentro a molte stanze, potrebbe impiegarci un po'", - "If you cancel now, you won't complete your operation.": "Se annulli adesso, non completerai l'operazione.", "Please supply a widget URL or embed code": "Inserisci un URL del widget o un codice di incorporamento", "Send a bug report with logs": "Invia una segnalazione di errore con i registri", "Can't load this message": "Impossibile caricare questo messaggio", @@ -2192,8 +2107,6 @@ "Jump to oldest unread message": "Salta al messaggio non letto più vecchio", "Upload a file": "Invia un file", "IRC display name width": "Larghezza nome di IRC", - "Create room": "Crea stanza", - "Font scaling": "Ridimensionamento carattere", "Font size": "Dimensione carattere", "Size must be a number": "La dimensione deve essere un numero", "Custom font size can only be between %(min)s pt and %(max)s pt": "La dimensione del carattere personalizzata può solo essere tra %(min)s pt e %(max)s pt", @@ -2245,9 +2158,6 @@ "Feedback": "Feedback", "No recently visited rooms": "Nessuna stanza visitata di recente", "Sort by": "Ordina per", - "Unread rooms": "Stanze non lette", - "Show": "Mostra", - "Message preview": "Anteprima messaggio", "List options": "Opzioni lista", "Show %(count)s more|other": "Mostra altri %(count)s", "Show %(count)s more|one": "Mostra %(count)s altro", @@ -2262,7 +2172,6 @@ "Looks good!": "Sembra giusta!", "Use Recovery Key or Passphrase": "Usa la chiave o password di recupero", "Use Recovery Key": "Usa chiave di recupero", - "Use the improved room list (will refresh to apply changes)": "Usa l'elenco stanze migliorato (verrà ricaricato per applicare le modifiche)", "Use custom size": "Usa dimensione personalizzata", "Hey you. You're the best!": "Ehi tu. Sei il migliore!", "Message layout": "Layout messaggio", @@ -2281,58 +2190,12 @@ "%(senderName)s started a call": "%(senderName)s ha iniziato una chiamata", "Waiting for answer": "In attesa di risposta", "%(senderName)s is calling": "%(senderName)s sta chiamando", - "You created the room": "Hai creato la stanza", - "%(senderName)s created the room": "%(senderName)s ha creato la stanza", - "You made the chat encrypted": "Hai reso la chat crittografata", - "%(senderName)s made the chat encrypted": "%(senderName)s ha reso la chat crittografata", - "You made history visible to new members": "Hai reso visibile la cronologia ai nuovi membri", - "%(senderName)s made history visible to new members": "%(senderName)s ha reso visibile la cronologia ai nuovi membri", - "You made history visible to anyone": "Hai reso visibile la cronologia a chiunque", - "%(senderName)s made history visible to anyone": "%(senderName)s ha reso visibile la cronologia a chiunque", - "You made history visible to future members": "Hai reso visibile la cronologia ai membri futuri", - "%(senderName)s made history visible to future members": "%(senderName)s ha reso visibile la cronologia ai membri futuri", - "You were invited": "Sei stato invitato", - "%(targetName)s was invited": "%(targetName)s è stato invitato", - "You left": "Sei uscito", - "%(targetName)s left": "%(targetName)s è uscito", - "You were kicked (%(reason)s)": "Sei stato buttato fuori (%(reason)s)", - "%(targetName)s was kicked (%(reason)s)": "%(targetName)s è stato buttato fuori (%(reason)s)", - "You were kicked": "Sei stato buttato fuori", - "%(targetName)s was kicked": "%(targetName)s è stato buttato fuori", - "You rejected the invite": "Hai rifiutato l'invito", - "%(targetName)s rejected the invite": "%(targetName)s ha rifiutato l'invito", - "You were uninvited": "Ti è stato revocato l'invito", - "%(targetName)s was uninvited": "È stato revocato l'invito a %(targetName)s", - "You were banned (%(reason)s)": "Sei stato bandito (%(reason)s)", - "%(targetName)s was banned (%(reason)s)": "%(targetName)s è stato bandito (%(reason)s)", - "You were banned": "Sei stato bandito", - "%(targetName)s was banned": "%(targetName)s è stato bandito", - "You joined": "Ti sei unito", - "%(targetName)s joined": "%(targetName)s si è unito", - "You changed your name": "Hai cambiato il tuo nome", - "%(targetName)s changed their name": "%(targetName)s ha cambiato il suo nome", - "You changed your avatar": "Hai cambiato il tuo avatar", - "%(targetName)s changed their avatar": "%(targetName)s ha cambiato il suo avatar", - "%(senderName)s %(emote)s": "%(senderName)s %(emote)s", "%(senderName)s: %(message)s": "%(senderName)s: %(message)s", - "You changed the room name": "Hai cambiato il nome della stanza", - "%(senderName)s changed the room name": "%(senderName)s ha cambiato il nome della stanza", "%(senderName)s: %(reaction)s": "%(senderName)s: %(reaction)s", "%(senderName)s: %(stickerName)s": "%(senderName)s: %(stickerName)s", - "You uninvited %(targetName)s": "Hai revocato l'invito a %(targetName)s", - "%(senderName)s uninvited %(targetName)s": "%(senderName)s ha revocato l'invito a %(targetName)s", - "You invited %(targetName)s": "Hai invitato %(targetName)s", - "%(senderName)s invited %(targetName)s": "%(senderName)s ha invitato %(targetName)s", - "You changed the room topic": "Hai cambiato l'argomento della stanza", - "%(senderName)s changed the room topic": "%(senderName)s ha cambiato l'argomento della stanza", "New spinner design": "Nuovo design dello spinner", "Use a more compact ‘Modern’ layout": "Usa un layout più compatto e moderno", - "Always show first": "Mostra sempre per prime", "Message deleted on %(date)s": "Messaggio eliminato il %(date)s", - "Use your account to sign in to the latest version": "Usa il tuo account per accedere alla versione più recente", - "We’re excited to announce Riot is now Element": "Siamo entusiasti di annunciare che Riot ora si chiama Element", - "Riot is now Element!": "Riot ora si chiama Element!", - "Learn More": "Maggiori info", "Enable experimental, compact IRC style layout": "Attiva il layout in stile IRC, sperimentale e compatto", "Unknown caller": "Chiamante sconosciuto", "Incoming voice call": "Telefonata in arrivo", @@ -2342,18 +2205,11 @@ "There are advanced notifications which are not shown here.": "Ci sono notifiche avanzate che non vengono mostrate qui.", "You might have configured them in a client other than %(brand)s. You cannot tune them in %(brand)s but they still apply.": "Potresti averle configurate in un client diverso da %(brand)s. Non puoi regolarle in %(brand)s ma sono comunque applicate.", "Set the name of a font installed on your system & %(brand)s will attempt to use it.": "Imposta il nome di un font installato nel tuo sistema e %(brand)s proverà ad usarlo.", - "Make this room low priority": "Rendi questa stanza a bassa priorità", - "Low priority rooms show up at the bottom of your room list in a dedicated section at the bottom of your room list": "Le stanze a bassa priorità vengono mostrate in fondo all'elenco stanze in una sezione dedicata", "Use default": "Usa predefinito", "Mentions & Keywords": "Citazioni e parole chiave", "Notification options": "Opzioni di notifica", "Favourited": "Preferito", "Forget Room": "Dimentica stanza", - "Use your account to sign in to the latest version of the app at ": "Usa il tuo account per accedere alla versione più recente dell'app in ", - "You’re already signed in and good to go here, but you can also grab the latest versions of the app on all platforms at element.io/get-started.": "Hai già fatto l'accesso e sei pronto ad iniziare, ma puoi anche ottenere le versioni più recenti dell'app su tutte le piattaforme in element.io/get-started.", - "Go to Element": "Vai su Element", - "We’re excited to announce Riot is now Element!": "Siamo entusiasti di annunciare che Riot ora si chiama Element!", - "Learn more at element.io/previously-riot": "Maggiori informazioni su element.io/previously-riot", "Wrong file type": "Tipo di file errato", "Wrong Recovery Key": "Chiave di ripristino errata", "Invalid Recovery Key": "Chiave di ripristino non valida", @@ -2368,7 +2224,6 @@ "%(brand)s Web": "%(brand)s Web", "%(brand)s Desktop": "%(brand)s Desktop", "%(brand)s iOS": "%(brand)s iOS", - "%(brand)s X for Android": "%(brand)s X per Android", "Safeguard against losing access to encrypted messages & data by backing up encryption keys on your server.": "Proteggiti contro la perdita dell'accesso ai messaggi e dati cifrati facendo un backup delle chiavi crittografiche sul tuo server.", "Generate a Security Key": "Genera una chiave di sicurezza", "We’ll generate a Security Key for you to store somewhere safe, like a password manager or a safe.": "Genereremo per te una chiave di sicurezza da conservare in un posto sicuro, come un gestore di password o una cassaforte.", diff --git a/src/i18n/strings/ja.json b/src/i18n/strings/ja.json index ff2afb67be..d1b7b2e32e 100644 --- a/src/i18n/strings/ja.json +++ b/src/i18n/strings/ja.json @@ -355,11 +355,6 @@ "Enable URL previews by default for participants in this room": "この部屋の参加者のためにデフォルトで URL プレビューを有効にする", "Room Colour": "部屋の色", "Enable widget screenshots on supported widgets": "サポートされているウィジェットでウィジェットのスクリーンショットを有効にする", - "Active call (%(roomName)s)": "アクティブな通話 (%(roomName)s)", - "unknown caller": "不明な発信者", - "Incoming voice call from %(name)s": "%(name)s からの音声通話の着信", - "Incoming video call from %(name)s": "%(name)s からのビデオ通話の着信", - "Incoming call from %(name)s": "%(name)s からの通話の着信", "Decline": "辞退", "Accept": "受諾", "Incorrect verification code": "認証コードの誤りです", @@ -455,7 +450,6 @@ "Join Room": "部屋に入る", "Forget room": "部屋を忘れる", "Share room": "部屋を共有する", - "Community Invites": "コミュニティへの招待", "Invites": "招待", "Unban": "ブロック解除", "Ban": "ブロックする", @@ -700,7 +694,6 @@ "Share Community": "コミュニティを共有", "Share Room Message": "部屋のメッセージを共有", "Link to selected message": "選択したメッセージにリンクする", - "COPY": "コピー", "Private Chat": "プライベートチャット", "Public Chat": "パブリックチャット", "Custom": "カスタム", @@ -712,7 +705,6 @@ "Name": "名前", "You must register to use this functionality": "この機能を使用するには登録する必要があります", "You must join the room to see its files": "そのファイルを見るために部屋に参加する必要があります", - "There are no visible files in this room": "この部屋に表示可能なファイルは存在しません", "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

コミュニティのページのHTML

\n

\n 詳細な説明を使用して、新しいメンバーをコミュニティに紹介する、または配布する\n 重要なリンク\n

\n

\n あなたは 'img'タグを使うことさえできます\n

\n", "Add rooms to the community summary": "コミュニティサマリーに部屋を追加する", "Which rooms would you like to add to this summary?": "このサマリーにどの部屋を追加したいですか?", @@ -772,7 +764,6 @@ "Error whilst fetching joined communities": "参加したコミュニティを取得中にエラーが発生しました", "Create a new community": "新しいコミュニティを作成する", "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "ユーザーと部屋をグループ化するコミュニティを作成してください! Matrixユニバースにあなたの空間を目立たせるためにカスタムホームページを作成してください。", - "You have no visible notifications": "通知はありません", "You can't send any messages until you review and agree to our terms and conditions.": "利用規約 を確認して同意するまでは、いかなるメッセージも送信できません。", "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "このホームサーバーが月間アクティブユーザー制限を超えたため、メッセージは送信されませんでした。 サービスを引き続き使用するには、サービス管理者にお問い合わせください。", "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.": "このホームサーバーがリソース制限を超えたため、メッセージは送信されませんでした。 サービスを引き続き使用するには、サービス管理者にお問い合わせください。", @@ -1006,8 +997,6 @@ "Show advanced": "高度な設定を表示", "Block users on other matrix homeservers from joining this room (This setting cannot be changed later!)": "他の Matrix ホームサーバーからの参加を禁止する (この設定はあとから変更できません!)", "Room Settings - %(roomName)s": "部屋の設定 - %(roomName)s", - "Explore": "探索", - "Filter": "フィルター", "Find a room… (e.g. %(exampleRoom)s)": "部屋を探す… (例: %(exampleRoom)s)", "If you can't find the room you're looking for, ask for an invite or Create a new room.": "もしお探しの部屋が見つからない場合、招待してもらうか部屋を作成しましょう。", "Enable room encryption": "部屋の暗号化を有効化", @@ -1138,7 +1127,6 @@ "Report Content": "コンテンツを報告", "Hide": "隠す", "Help": "ヘルプ", - "Filter rooms…": "部屋を検索…", "Preview": "プレビュー", "Your user agent": "あなたの User Agent", "Bold": "太字", @@ -1184,7 +1172,6 @@ "Verify yourself & others to keep your chats safe": "あなたと他の人々とのチャットの安全性を検証", "Upgrade": "アップグレード", "Verify": "検証", - "Invite only": "招待者のみ参加可能", "Trusted": "信頼済み", "Not trusted": "未信頼", "%(count)s verified sessions|other": "%(count)s 件の検証済みのセッション", @@ -1368,7 +1355,6 @@ "Use Single Sign On to continue": "シングルサインオンを使用して続行", "Accept to continue:": " に同意して続行:", "Always show the window menu bar": "常にウィンドウメニューバーを表示する", - "Create room": "部屋を作成", "Show %(count)s more|other": "さらに %(count)s 件を表示", "Show %(count)s more|one": "さらに %(count)s 件を表示", "%(num)s minutes ago": "%(num)s 分前", diff --git a/src/i18n/strings/jbo.json b/src/i18n/strings/jbo.json index f2c9dc6e43..87d54edf08 100644 --- a/src/i18n/strings/jbo.json +++ b/src/i18n/strings/jbo.json @@ -191,11 +191,6 @@ "When I'm invited to a room": "nu da friti le ka ziljmina lo se zilbe'i kei do", "Call invitation": "nu da co'a fonjo'e do", "Messages sent by bot": "nu da zilbe'i fi pa sampre", - "Active call (%(roomName)s)": "le ca fonjo'e ne la'o ly. %(roomName)s .ly.", - "unknown caller": "lo fonjo'e noi na'e te djuno", - "Incoming voice call from %(name)s": ".i la'o ly. %(name)s .ly. ca'o snavi fonjo'e", - "Incoming video call from %(name)s": ".i la'o ly. %(name)s .ly. ca'o vidvi fonjo'e", - "Incoming call from %(name)s": ".i la'o ly. %(name)s .ly. ca'o fonjo'e", "Decline": "nu na fonjo'e", "Accept": "nu fonjo'e", "Error": "nabmi", @@ -266,63 +261,6 @@ "You signed in to a new session without verifying it:": ".i fe le di'e se samtcise'u pu co'a jaspu vau je za'o na lacri", "They match": "du", "They don't match": "na du", - "Dog": "gerku", - "Cat": "mlatu", - "Lion": "cinfo", - "Horse": "xirma", - "Unicorn": "pavyseljirna", - "Pig": "xarju", - "Elephant": "xanto", - "Rabbit": "ractu", - "Panda": "ribrmelanole'usa", - "Rooster": "jipci", - "Penguin": "zipcpi", - "Turtle": "cakyrespa", - "Fish": "finpe", - "Octopus": "dalroktopoda", - "Butterfly": "toldi", - "Flower": "xrula", - "Tree": "tricu", - "Cactus": "jesyspa", - "Mushroom": "mledi", - "Globe": "bolcartu", - "Moon": "lunra", - "Cloud": "dilnu", - "Fire": "fagri", - "Banana": "badna", - "Apple": "plise", - "Strawberry": "grutrananasa", - "Corn": "zumri", - "Pizza": "cidjrpitsa", - "Cake": "titnanba", - "Heart": "risna", - "Smiley": "cisma", - "Robot": "sampre", - "Hat": "mapku", - "Glasses": "vistci", - "Santa": "la santa", - "Umbrella": "santa", - "Hourglass": "canjunla", - "Clock": "junla", - "Light bulb": "te gusni", - "Book": "cukta", - "Pencil": "pinsi", - "Scissors": "jinci", - "Lock": "stela", - "Key": "ckiku", - "Hammer": "mruli", - "Telephone": "fonxa", - "Flag": "lanci", - "Train": "trene", - "Bicycle": "carvrama'e", - "Aeroplane": "vinji", - "Rocket": "jakne", - "Ball": "bolci", - "Guitar": "jgita", - "Trumpet": "tabra", - "Bell": "janbe", - "Headphones": "selsnapra", - "Pin": "pijne", "Upload": "nu kibdu'a", "Send an encrypted reply…": "nu pa mifra be pa jai te spuda cu zilbe'i", "Send a reply…": "nu pa jai te spuda cu zilbe'i", @@ -420,38 +358,9 @@ "%(senderName)s started a call": ".i la'o zoi. %(senderName)s .zoi co'a fonjo'e", "Waiting for answer": ".i ca'o denpa lo nu spuda", "%(senderName)s is calling": ".i la'o zoi. %(senderName)s .zoi co'a fonjo'e", - "You created the room": ".i do cupra le ve zilbe'i", - "%(senderName)s created the room": ".i la'o zoi. %(senderName)s .zoi cupra le ve zilbe'i", - "You made the chat encrypted": ".i gau do ro ba zilbe'i be fo le gai'o cu mifra", - "%(senderName)s made the chat encrypted": ".i gau la'o zoi. %(senderName)s .zoi ro ba zilbe'i be fo le gai'o cu mifra", - "You were invited": ".i da friti le ka ziljmina kei do", - "%(targetName)s was invited": ".i da friti le ka ziljmina kei la'o zoi. %(targetName)s .zoi", - "You left": ".i do zilvi'u", - "%(targetName)s left": ".i la'o zoi. %(targetName)s .zoi zilvi'u", - "You were kicked (%(reason)s)": ".i gau da do zilvi'u fi'o krinu lerpoi zoi zoi. %(reason)s .zoi", - "%(targetName)s was kicked (%(reason)s)": ".i gau da la'o zoi. %(targetName)s .zoi zilvi'u fi'o krinu lerpoi zoi zoi. %(reason)s .zoi", - "You were kicked": ".i gau da do zilvi'u", - "%(targetName)s was kicked": ".i gau da la'o zoi. %(targetName)s .zoi zilvi'u", - "You rejected the invite": ".i do zukte le ka na ckaji le se friti", - "%(targetName)s rejected the invite": ".i la'o zoi. %(targetName)s .zoi zukte le ka na ckaji le se friti", - "You were uninvited": ".i da co'u friti le ka ziljmina kei do", - "%(targetName)s was uninvited": ".i da co'u friti le ka ziljmina kei la'o zoi. %(targetName)s .zoi", - "You changed your name": ".i gau do da basti de le ka cmene do", - "%(targetName)s changed their name": ".i gau da zoi zoi. %(targetName)s .zoi basti de le ka cmene da", - "You changed your avatar": ".i gau do da basti de le ka pixra sinxa do", - "%(targetName)s changed their avatar": ".i gau la'o zoi. %(targetName)s .zoi da basti de le ka pixra sinxa ri", - "%(senderName)s %(emote)s": ".i la'o zoi. %(senderName)s .zoi ckaji le smuni be zoi zoi. %(emote)s .zoi", "%(senderName)s: %(message)s": "%(senderName)s: %(message)s", - "You changed the room name": ".i gau do da basti de le ka cmene le ve zilbe'i", - "%(senderName)s changed the room name": ".i gau la'o zoi. %(senderName)s .zoi da basti de le ka cmene le ve zilbe'i", "%(senderName)s: %(reaction)s": "%(senderName)s: %(reaction)s", "%(senderName)s: %(stickerName)s": "%(senderName)s: %(stickerName)s", - "You uninvited %(targetName)s": ".i do co'u friti le ka ziljmina kei la'o zoi. %(targetName)s .zoi", - "%(senderName)s uninvited %(targetName)s": ".i la'o zoi. %(senderName)s .zoi co'u friti le ka ziljmina kei la'o zoi. %(targetName)s .zoi", - "You invited %(targetName)s": ".i do friti le ka ziljmina kei la'o zoi. %(targetName)s .zoi", - "%(senderName)s invited %(targetName)s": ".i la'o zoi. %(senderName)s .zoi friti le ka ziljmina kei la'o zoi. %(targetName)s .zoi", - "You changed the room topic": ".i gau do da basti de le ka skicu be le ve zilbe'i be'o lerpoi", - "%(senderName)s changed the room topic": ".i gau la'o zoi. %(senderName)s .zoi da basti de le ka skicu be le ve zilbe'i be'o lerpoi", "Use a system font": "nu da pe le vanbi cu ci'artai", "System font name": "cmene le ci'artai pe le vanbi", "Never send encrypted messages to unverified sessions from this session": "nu na pa mifra be pa notci cu zilbe'i pa se samtcise'u poi na se lanli ku'o le se samtcise'u", @@ -468,10 +377,6 @@ " invited you": ".i la'o zoi. .zoi friti le ka ziljmina kei do", "Username": "judri cmene", "Enter username": ".i ko cuxna fo le ka judri cmene", - "We’re excited to announce Riot is now Element": ".i fizbu lo nu zo .elyment. basti zo .raiyt. le ka cmene", - "Riot is now Element!": ".i zo .elyment. basti zo .raiyt. le ka cmene", - "Learn More": "nu facki", - "We’re excited to announce Riot is now Element!": ".i fizbu lo nu gubni xusra le du'u zo .elyment. basti zo .raiyt. le ka cmene", "Messages in this room are secured with end-to-end encryption. Only you and the recipient(s) have the keys to read these messages.": ".i ro zilbe'i be fo le cei'i cu mifra .i le ka ka'e tcidu lo notci cu steci fi lu'i do je ro pagbu be le se zilbe'i", "Messages in this room are end-to-end encrypted.": ".i ro zilbe'i be fo le cei'i cu mifra", "Messages in this room are not end-to-end encrypted.": ".i na pa zilbe'i be fo le cei'i cu mifra", @@ -491,7 +396,6 @@ "This room is end-to-end encrypted": ".i ro zilbe'i be fo le cei'i cu mifra", "Everyone in this room is verified": ".i do lacri ro pagbu be le se zilbe'i", "Start chat": "nu co'a tavla", - "Create room": "nu cupra pa ve zilbe'i", "The file '%(fileName)s' failed to upload.": ".i da nabmi fi lo nu kibdu'a la'o zoi. %(fileName)s .zoi", "Invite users": "nu friti le ka ziljmina kei pa pilno", "Invite to this room": "nu friti le ka ziljmina le se zilbe'i", @@ -548,9 +452,6 @@ "React": "nu cinmo spuda", "Reply": "nu spuda", "In reply to ": ".i nu spuda tu'a la'o zoi. .zoi", - "%(senderName)s made history visible to anyone": ".i gau la'o zoi. %(senderName)s .zoi ro da ka'e tcidu ro pu zilbe'i", - "You joined": ".i do ziljmina", - "%(targetName)s joined": ".i la'o zoi. %(targetName)s .zoi ziljmina", "Show less": "nu viska so'u da", "Save": "nu co'a vreji", "Unable to share email address": ".i da nabmi fi lo nu jungau le du'u samymri judri", @@ -567,8 +468,6 @@ "Resend edit": "nu le basti cu za'u re'u zilbe'i", "Share Permalink": "nu jungau fi le du'u vitno judri", "Share Message": "nu jungau fi le du'u notci", - "%(senderName)s made history visible to new members": ".i gau la'o zoi. %(senderName)s .zoi ro cnino be fi le ka pagbu le se zilbe'i cu ka'e tcidu ro pu zilbe'i", - "%(senderName)s made history visible to future members": ".i gau la'o zoi. %(senderName)s .zoi ro ba pagbu be le se zilbe'i cu ka'e tcidu ro pu zilbe'i", "%(senderName)s sent an image": ".i pa pixra cu zilbe'i fi la'o zoi. %(senderName)s .zoi", "%(senderName)s sent a video": ".i pa se vidvi cu zilbe'i fi la'o zoi. %(senderName)s .zoi", "%(senderName)s uploaded a file": ".i pa vreji cu zilbe'i fi la'o zoi. %(senderName)s .zoi", diff --git a/src/i18n/strings/kab.json b/src/i18n/strings/kab.json index 6073fbfd38..6670423339 100644 --- a/src/i18n/strings/kab.json +++ b/src/i18n/strings/kab.json @@ -65,22 +65,6 @@ "Accept": "Qbel", "or": "neɣ", "Start": "Bdu", - "Cat": "Amcic", - "Lion": "Izem", - "Rabbit": "Awtul", - "Turtle": "Afekrun", - "Tree": "Aseklu", - "Clock": "Tamrint", - "Book": "Adlis", - "Lock": "Sekkeṛ", - "Key": "Tasarut", - "Telephone": "Tiliγri", - "Flag": "Anay", - "Bicycle": "Azlalam", - "Ball": "Balles", - "Anchor": "Tamdeyt", - "Headphones": "Wennez", - "Folder": "Akaram", "Upload": "Sali", "Remove": "Sfeḍ", "Show less": "Sken-d drus", @@ -154,7 +138,6 @@ "Sort by": "Semyizwer s", "Activity": "Armud", "A-Z": "A-Z", - "Show": "Sken", "Options": "Tixtiṛiyin", "Server error": "Tuccḍa n uqeddac", "Members": "Imettekkiyen", @@ -255,15 +238,12 @@ "Free": "Ilelli", "Failed to upload image": "Tegguma ad d-tali tugna", "Description": "Aglam", - "Explore": "Snirem", - "Filter": "Imsizdeg", "Explore rooms": "Snirem tixxamin", "Unknown error": "Tuccḍa tarussint", "Logout": "Tuffɣa", "Preview": "Taskant", "View": "Sken", "Guest": "Anerzaf", - "Your profile": "Amaɣnu-ik/im", "Feedback": "Takti", "Your password has been reset.": "Awal uffir-inek/inem yettuwennez.", "Syncing...": "Amtawi...", @@ -387,7 +367,6 @@ "Add to community": "Rnu ɣer temɣiwent", "Unnamed Room": "Taxxamt war isem", "The server does not support the room version specified.": "Aqeddac ur issefrek ara lqem n texxamt yettwafernen.", - "If you cancel now, you won't complete verifying the other user.": "Ma yella teffɣeḍ tura, asenqed n yiseqdacen-nniḍen ur ittemmed ara.", "Cancel entering passphrase?": "Sefsex tafyirt tuffirt n uεeddi?", "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Γur-k: yal amdan ara ternuḍ ɣer temɣiwent ad d-iban s wudem azayaz i yal yiwen yessnen asulay n temɣiwent", "Invite new community members": "Nced-d imttekkiyen imaynuten ɣer temɣiwent", @@ -457,8 +436,6 @@ "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Ma yili asebter-a degs talɣut tummilt, am texxamt neɣ aseqdac neɣ asulay n ugraw, isefka-a ad ttwakksen send ad ttwaznen i uqeddac.", "Unable to load! Check your network connectivity and try again.": "Yegguma ad d-yali! Senqed tuqqna-inek.inem ɣer uzeṭṭa syen tεerḍeḍ tikkelt-nniḍen.", "Failure to create room": "Timerna n texxamt ur teddi ara", - "If you cancel now, you won't complete verifying your other session.": "Ma yella teffɣeḍ tura, ur tessawaḍeḍ ara ad tesneqdeḍ akk tiɣimiyin-inek.inem.", - "If you cancel now, you won't complete your operation.": "Ma yella teffɣeḍ tura, tamhelt-ik.im ur tettemmed ara.", "Show these rooms to non-members on the community page and room list?": "Sken tixxamin-a i wid ur nettekka ara deg usebter n temɣiwent d tebdert n texxamt?", "The remote side failed to pick up": "Amazan ur yessaweḍ ara ad d-yerr", "Call failed due to misconfigured server": "Ur yeddi ara usiwel ssebba n uqeddac ur nettuswel ara akken iwata", @@ -471,12 +448,8 @@ "Are you sure you want to cancel entering passphrase?": "S tidet tebɣiḍ ad tesfesxeḍ asekcem n tefyirt tuffirt?", "This action requires accessing the default identity server to validate an email address or phone number, but the server does not have any terms of service.": "Tigawt-a tesra anekcum ɣer uqeddac n tmagit tamezwert i usentem n tansa n yimayl neɣ uṭṭun n tiliɣri, maca aqeddac ur yesεi ula d yiwet n twali n umeẓlu.", "Only continue if you trust the owner of the server.": "Ala ma tettekleḍ ɣef bab n uqeddac ara tkemmleḍ.", - "Use your account to sign in to the latest version": "Seqdec amiḍan-ik·im akken ad tkecmeḍ ɣer lqem aneggaru", - "Riot is now Element!": "Tura, Riot d aferdis!", - "Learn More": "Issin ugar", "Restricted": "Yesεa tilas", "Set up": "Sbadu", - "Pencil": "Akeryun", "Compact": "Akussem", "Modern": "Atrar", "Online": "Srid", @@ -505,7 +478,6 @@ "Alt Gr": "Alt Gr", "Super": "Ayuz", "Ctrl": "Ctrl", - "We’re excited to announce Riot is now Element": "S tumert meqqren ara d-nselɣu belli Riot tura d aferdis", "Operation failed": "Tamhelt ur teddi ara", "Failed to invite users to the room:": "Yegguma ad yeddu usnubget n yiseqdacen ɣer texxamt:", "Failed to invite the following users to the %(roomName)s room:": "Asnubget n yiseqdacen i d-iteddun ɣer taxxamt %(roomName)s ur yeddi ara:", @@ -591,42 +563,9 @@ "%(senderName)s started a call": "%(senderName)s yebda asiwel", "Waiting for answer": "Yettṛaǧu tiririt", "%(senderName)s is calling": "%(senderName)s yessawal", - "You created the room": "Terniḍ taxxamt", - "%(senderName)s created the room": "%(senderName)s yerna taxxamt", - "You made the chat encrypted": "Terriḍ adiwenni yettuwgelhen", - "%(senderName)s made the chat encrypted": "%(senderName)s yerra adiwenni yettuwgelhen", - "You made history visible to new members": "Terriḍ amazray yettban i yimttekkiyen imaynuten", - "%(senderName)s made history visible to new members": "%(senderName)s yerra amazray yettban i yimttekkiyen imaynuten", - "You made history visible to anyone": "Terriḍ amazray yettban i yal amdan", - "%(senderName)s made history visible to anyone": "%(senderName)s yerra amazray yettban i yal amdan", - "You made history visible to future members": "Terriḍ amazray yettban i yimttekkiyen ara d-yernun", - "%(senderName)s made history visible to future members": "%(senderName)s yerra amazray yettban i yimttekkiyen ara d-yernun", - "You were invited": "Tettusnubegteḍ", - "%(targetName)s was invited": "%(senderName)s yettusnubget", - "You left": "Truḥeḍ", - "%(targetName)s left": "%(targetName)s iṛuḥ", - "You rejected the invite": "Tugiḍ tinnubga", - "%(targetName)s rejected the invite": "%(targetName)s yugi tinnubga", - "You were uninvited": "Ur tettusnubegteḍ ara", - "%(targetName)s was uninvited": "%(senderName)s ur yettusnubget ara", - "You joined": "Terniḍ", - "%(targetName)s joined": "%(targetName)s yerna", - "You changed your name": "Tbeddleḍ isem-ik·im", - "%(targetName)s changed their name": "%(targetName)s ibeddel isem-is", - "You changed your avatar": "Tbeddleḍ avatar-inek·inem", - "%(targetName)s changed their avatar": "%(targetName)s ibeddel avatar-ines", - "%(senderName)s %(emote)s": "%(senderName)s %(emote)s", "%(senderName)s: %(message)s": "%(senderName)s: %(message)s", - "You changed the room name": "Tbeddleḍ isem n texxamt", - "%(senderName)s changed the room name": "%(senderName)s kksen isem n texxamt", "%(senderName)s: %(reaction)s": "%(senderName)s: %(reaction)s", "%(senderName)s: %(stickerName)s": "%(senderName)s: %(stickerName)s", - "You uninvited %(targetName)s": "Ur tettusnubegteḍ ara sɣur %(targetName)s", - "%(senderName)s uninvited %(targetName)s": "%(senderName)s ur yettusnubget ara sɣur %(targetName)s", - "You invited %(targetName)s": "Tettusnubegteḍ sɣur %(targetName)s", - "%(senderName)s invited %(targetName)s": "%(senderName)s yettusnubget %(targetName)s", - "You changed the room topic": "Tbeddleḍ asentel n texxamt", - "%(senderName)s changed the room topic": "%(senderName)s ibeddel asentel n texxamt", "Message Pinning": "Arezzi n yizen", "Group & filter rooms by custom tags (refresh to apply changes)": "Sdukkel tixxamin, tsizedgeḍ-tent s tebzimin tudmawanin (smiren akken ad alin yisnifal)", "Order rooms by name": "Semyizwer tixxamin s yisem", @@ -734,32 +673,6 @@ "Cancelling…": "Asefsex...", "They match": "Mṣadan", "They don't match": "Ur mṣadan ara", - "Dog": "Aqjun", - "Horse": "Aεewdiw", - "Pig": "Ilef", - "Elephant": "Ilu", - "Panda": "Apunda", - "Rooster": "Ayaziḍ", - "Fish": "Lḥut", - "Butterfly": "Aferteṭṭu", - "Flower": "Ajeǧǧig", - "Mushroom": "Agersal", - "Moon": "Ayyur", - "Cloud": "Agu", - "Fire": "Times", - "Banana": "Tabanant", - "Apple": "Tatteffaḥt", - "Strawberry": "Tazwelt", - "Corn": "Akbal", - "Cake": "Angul", - "Heart": "Ul", - "Smiley": "Acmumeḥ", - "Robot": "Aṛubut", - "Hat": "Acapun", - "Glasses": "Tisekkadin", - "Umbrella": "Tasiwant", - "Gift": "Asefk", - "Light bulb": "Taftilt", "Power level must be positive integer.": "Ilaq ad yili uswir n tezmert d ummid ufrir.", "Sends a message as plain text, without interpreting it as markdown": "Yuzen izen d aḍris aččuran war ma isegza-t s tukksa n tecreḍt", "You do not have the required permissions to use this command.": "Ur tesεiḍ ara tisirag akken ad tesqedceḍ taladna-a.", diff --git a/src/i18n/strings/ko.json b/src/i18n/strings/ko.json index 59bb68af94..9fe3e41ffd 100644 --- a/src/i18n/strings/ko.json +++ b/src/i18n/strings/ko.json @@ -54,7 +54,6 @@ "%(targetName)s accepted an invitation.": "%(targetName)s님이 초대를 수락했습니다.", "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s님이 %(displayName)s 초대를 수락했습니다.", "Access Token:": "접근 토큰:", - "Active call (%(roomName)s)": "현재 전화 (%(roomName)s 방)", "Add a topic": "주제 추가", "You may need to manually permit %(brand)s to access your microphone/webcam": "수동으로 %(brand)s에 마이크와 카메라를 허용해야 함", "%(items)s and %(lastItem)s": "%(items)s님과 %(lastItem)s님", @@ -135,9 +134,6 @@ "Import": "가져오기", "Import E2E room keys": "종단간 암호화 방 키 불러오기", "Import room keys": "방 키 가져오기", - "Incoming call from %(name)s": "%(name)s님으로부터 전화가 왔습니다", - "Incoming video call from %(name)s": "%(name)s님으로부터 영상 통화가 왔습니다", - "Incoming voice call from %(name)s": "%(name)s님으로부터 음성 통화가 왔습니다", "Incorrect username and/or password.": "사용자 이름 혹은 비밀번호가 맞지 않습니다.", "Incorrect verification code": "맞지 않은 인증 코드", "Invalid Email Address": "잘못된 이메일 주소", @@ -254,7 +250,6 @@ "%(senderName)s unbanned %(targetName)s.": "%(senderName)s님이 %(targetName)s님에 대한 출입 금지를 풀었습니다.", "Unable to capture screen": "화면을 찍을 수 없음", "Unable to enable Notifications": "알림을 사용할 수 없음", - "unknown caller": "알 수 없는 발신자", "Unmute": "음소거 끄기", "Unnamed Room": "이름 없는 방", "Uploading %(filename)s and %(count)s others|zero": "%(filename)s을(를) 올리는 중", @@ -287,7 +282,6 @@ "You do not have permission to post to this room": "이 방에 글을 올릴 권한이 없습니다", "You have disabled URL previews by default.": "기본으로 URL 미리 보기를 껐습니다.", "You have enabled URL previews by default.": "기본으로 URL 미리 보기를 켰습니다.", - "You have no visible notifications": "보여줄 수 있는 알림이 없습니다", "You must register to use this functionality": "이 기능을 쓰려면 등록해야 합니다", "You need to be able to invite users to do that.": "그러려면 사용자를 초대할 수 있어야 합니다.", "You need to be logged in.": "로그인을 해야 합니다.", @@ -320,7 +314,6 @@ "Upload an avatar:": "아바타 업로드:", "This server does not support authentication with a phone number.": "이 서버는 전화번호 인증을 지원하지 않습니다.", "An error occurred: %(error_string)s": "오류가 발생함: %(error_string)s", - "There are no visible files in this room": "이 방에는 보여줄 수 있는 파일이 없습니다", "Room": "방", "Connectivity to the server has been lost.": "서버 연결이 끊어졌습니다.", "Sent messages will be stored until your connection has returned.": "보낸 메시지는 연결이 돌아올 때까지 저장됩니다.", @@ -644,7 +637,6 @@ "Jump to read receipt": "읽은 기록으로 건너뛰기", "Jump to message": "메세지로 건너뛰기", "Share room": "방 공유하기", - "Community Invites": "커뮤니티 초대", "Members only (since they joined)": "구성원만(구성원들이 참여한 시점부터)", "%(severalUsers)sjoined %(count)s times|one": "%(severalUsers)s이 참가했습니다", "%(severalUsers)sjoined %(count)s times|other": "%(severalUsers)s이 %(count)s번 참가했습니다", @@ -747,7 +739,6 @@ "Share Community": "커뮤니티 공유", "Share Room Message": "방 메시지 공유", "Link to selected message": "선택한 메시지로 연결", - "COPY": "복사", "Unable to reject invite": "초대를 거절하지 못함", "Reply": "답장", "Pin Message": "메시지 고정하기", @@ -928,69 +919,6 @@ "Predictable substitutions like '@' instead of 'a' don't help very much": "'a'대신 '@'를 적는 등의 추측할 수 있는 대체제는 큰 도움이 되지 않습니다", "Add another word or two. Uncommon words are better.": "한 두 문자를 추가하세요. 흔하지 않은 문자일수록 좋습니다.", "Repeats like \"aaa\" are easy to guess": "\"aaa\"와 같은 반복은 쉽게 추측합니다", - "Dog": "개", - "Cat": "고양이", - "Lion": "사자", - "Horse": "말", - "Unicorn": "유니콘", - "Pig": "돼지", - "Elephant": "코끼리", - "Rabbit": "토끼", - "Panda": "판다", - "Rooster": "수탉", - "Penguin": "펭귄", - "Turtle": "거북", - "Fish": "물고기", - "Octopus": "문어", - "Butterfly": "나비", - "Flower": "꽃", - "Tree": "나무", - "Cactus": "선인장", - "Mushroom": "버섯", - "Globe": "지구본", - "Moon": "달", - "Cloud": "구름", - "Fire": "불", - "Banana": "바나나", - "Apple": "사과", - "Strawberry": "딸기", - "Corn": "옥수수", - "Pizza": "피자", - "Cake": "케이크", - "Heart": "하트", - "Smiley": "웃음", - "Robot": "로봇", - "Hat": "모자", - "Glasses": "안경", - "Spanner": "스패너", - "Santa": "산타클로스", - "Thumbs up": "좋아요", - "Umbrella": "우산", - "Hourglass": "모래시계", - "Clock": "시계", - "Gift": "선물", - "Light bulb": "전구", - "Book": "책", - "Pencil": "연필", - "Paperclip": "클립", - "Scissors": "가위", - "Key": "열쇠", - "Hammer": "망치", - "Telephone": "전화기", - "Flag": "깃발", - "Train": "기차", - "Bicycle": "자전거", - "Aeroplane": "비행기", - "Rocket": "로켓", - "Trophy": "트로피", - "Ball": "공", - "Guitar": "기타", - "Trumpet": "트럼펫", - "Bell": "종", - "Anchor": "닻", - "Headphones": "헤드폰", - "Folder": "폴더", - "Pin": "핀", "Accept to continue:": "계속하려면 을(를) 수락하세요:", "Power level": "권한 등급", "Repeats like \"abcabcabc\" are only slightly harder to guess than \"abc\"": "\"abcabcabc\"와 같은 반복은 \"abc\"에서 겨우 조금 더 어렵습니다", @@ -1341,8 +1269,6 @@ "Please review and accept all of the homeserver's policies": "모든 홈서버의 정책을 검토하고 수락해주세요", "Please review and accept the policies of this homeserver:": "이 홈서버의 정책을 검토하고 수락해주세요:", "Unable to validate homeserver/identity server": "홈서버/ID서버를 확인할 수 없음", - "Your Modular server": "당신의 Modular 서버", - "Enter the location of your Modular homeserver. It may use your own domain name or be a subdomain of modular.im.": "Modular 홈서버의 위치를 입력하세요. 고유 도메인 이름 혹은 modular.im의 하위 도메인으로 사용할 수 있습니다.", "Server Name": "서버 이름", "The username field must not be blank.": "사용자 이름을 반드시 입력해야 합니다.", "Username": "사용자 이름", @@ -1395,7 +1321,6 @@ "You have %(count)s unread notifications in a prior version of this room.|other": "이 방의 이전 버전에서 읽지 않은 %(count)s개의 알림이 있습니다.", "You have %(count)s unread notifications in a prior version of this room.|one": "이 방의 이전 버전에서 읽지 않은 %(count)s개의 알림이 있습니다.", "Guest": "손님", - "Your profile": "당신의 프로필", "Could not load user profile": "사용자 프로필을 불러올 수 없음", "Your Matrix account on %(serverName)s": "%(serverName)s에서 당신의 Matrix 계정", "Your Matrix account on ": "에서 당신의 Matrix 계정", @@ -1495,9 +1420,6 @@ "Remove %(count)s messages|other": "%(count)s개의 메시지 삭제", "Remove recent messages": "최근 메시지 삭제", "Send read receipts for messages (requires compatible homeserver to disable)": "메시지 읽은 기록 보내기 (이 기능을 끄려면 그것을 호환하는 홈서버이어야 함)", - "Explore": "검색", - "Filter": "필터", - "Filter rooms…": "방 필터…", "Preview": "미리 보기", "View": "보기", "Find a room…": "방 찾기…", @@ -1537,7 +1459,6 @@ "Clear cache and reload": "캐시 지우기 및 새로고침", "%(count)s unread messages including mentions.|other": "언급을 포함한 %(count)s개의 읽지 않은 메시지.", "%(count)s unread messages.|other": "%(count)s개의 읽지 않은 메시지.", - "Unread mentions.": "읽지 않은 언급.", "Please create a new issue on GitHub so that we can investigate this bug.": "이 버그를 조사할 수 있도록 GitHub에 새 이슈를 추가해주세요.", "You are about to remove %(count)s messages by %(user)s. This cannot be undone. Do you wish to continue?|one": "%(user)s님의 1개의 메시지를 삭제합니다. 이것은 되돌릴 수 없습니다. 계속하겠습니까?", "Remove %(count)s messages|one": "1개의 메시지 삭제", @@ -1572,7 +1493,6 @@ "Jump to first unread room.": "읽지 않은 첫 방으로 건너뜁니다.", "Jump to first invite.": "첫 초대로 건너뜁니다.", "Room %(name)s": "%(name)s 방", - "Recent rooms": "최근 방", "No identity server is configured so you cannot add an email address in order to reset your password in the future.": "설정된 ID 서버가 없어서 이후 비밀번호를 초기화하기 위한 이메일 주소를 추가할 수 없습니다.", "%(count)s unread messages including mentions.|one": "1개의 읽지 않은 언급.", "%(count)s unread messages.|one": "1개의 읽지 않은 메시지.", @@ -1650,8 +1570,6 @@ "Whether you're using %(brand)s on a device where touch is the primary input mechanism": "터치가 기본 입력 방식인 기기에서 %(brand)s을 사용하는지 여부", "Whether you're using %(brand)s as an installed Progressive Web App": "%(brand)s을 설치형 프로그레시브 웹 앱으로 사용하는지 여부", "Your user agent": "사용자 에이전트", - "If you cancel now, you won't complete verifying the other user.": "지금 취소하면 다른 사용자 확인이 완료될 수 없습니다.", - "If you cancel now, you won't complete verifying your other session.": "지금 취소하면 당신의 다른 세션을 검증할 수 없습니다.", "Cancel entering passphrase?": "암호 입력을 취소하시겠습니까?", "Setting up keys": "키 설정", "Verify this session": "이 세션 검증", diff --git a/src/i18n/strings/lt.json b/src/i18n/strings/lt.json index 9bdbb7a6f7..77ea24f917 100644 --- a/src/i18n/strings/lt.json +++ b/src/i18n/strings/lt.json @@ -293,7 +293,6 @@ "(~%(count)s results)|one": "(~%(count)s rezultatas)", "Upload avatar": "Įkelti pseudoportretą", "Settings": "Nustatymai", - "Community Invites": "Bendruomenės pakvietimai", "%(roomName)s does not exist.": "%(roomName)s neegzistuoja.", "%(roomName)s is not accessible at this time.": "%(roomName)s šiuo metu nėra pasiekiamas.", "Muted Users": "Nutildyti naudotojai", @@ -453,9 +452,6 @@ "Not a valid %(brand)s keyfile": "Negaliojantis %(brand)s rakto failas", "Authentication check failed: incorrect password?": "Autentifikavimo patikra nepavyko: neteisingas slaptažodis?", "Send analytics data": "Siųsti analitinius duomenis", - "Incoming voice call from %(name)s": "Įeinantis balso skambutis nuo %(name)s", - "Incoming video call from %(name)s": "Įeinantis vaizdo skambutis nuo %(name)s", - "Incoming call from %(name)s": "Įeinantis skambutis nuo %(name)s", "Change Password": "Keisti slaptažodį", "Authentication": "Tapatybės nustatymas", "The maximum permitted number of widgets have already been added to this room.": "Į šį kambarį jau yra pridėtas didžiausias leidžiamas valdiklių skaičius.", @@ -659,7 +655,6 @@ "Next": "Toliau", "Private Chat": "Privatus pokalbis", "Public Chat": "Viešas pokalbis", - "There are no visible files in this room": "Šiame kambaryje nėra matomų failų", "Add a Room": "Pridėti kambarį", "Add a User": "Pridėti naudotoją", "Long Description (HTML)": "Ilgasis aprašas (HTML)", @@ -670,7 +665,6 @@ "For security, this session has been signed out. Please sign in again.": "Saugumo sumetimais, šis seansas buvo atjungtas. Prisijunkite dar kartą.", "Your Communities": "Jūsų bendruomenės", "Create a new community": "Sukurti naują bendruomenę", - "You have no visible notifications": "Jūs neturite matomų pranešimų", "Failed to perform homeserver discovery": "Nepavyko atlikti serverio radimo", "Error: Problem communicating with the given homeserver.": "Klaida: Problemos susisiekiant su nurodytu namų serveriu.", "This server does not support authentication with a phone number.": "Šis serveris nepalaiko tapatybės nustatymo telefono numeriu.", @@ -819,9 +813,6 @@ "Upload %(count)s other files|one": "Įkelti %(count)s kitą failą", "Cancel All": "Atšaukti visus", "Upload Error": "Įkėlimo klaida", - "Explore": "Žvalgyti", - "Filter": "Filtruoti", - "Filter rooms…": "Filtruoti kambarius…", "This room is not public. You will not be able to rejoin without an invite.": "Šis kambarys nėra viešas. Jūs negalėsite vėl prie jo prisijungti be pakvietimo.", "Are you sure you want to leave the room '%(roomName)s'?": "Ar tikrai norite išeiti iš kambario %(roomName)s?", "%(creator)s created and configured the room.": "%(creator)s sukūrė ir sukonfigūravo kambarį.", @@ -933,8 +924,6 @@ "Shift": "Shift", "Super": "Super", "Ctrl": "Ctrl", - "If you cancel now, you won't complete verifying the other user.": "Jei atšauksite dabar, neužbaigsite kito vartotojo patvirtinimo.", - "If you cancel now, you won't complete verifying your other session.": "Jei atšauksite dabar, neužbaigsite kito seanso patvirtinimo.", "Verify this session": "Patvirtinti šį seansą", "%(senderDisplayName)s changed the room name from %(oldRoomName)s to %(newRoomName)s.": "%(senderDisplayName)s pakeitė kambario pavadinimą iš %(oldRoomName)s į %(newRoomName)s.", "Show display name changes": "Rodyti rodomo vardo pakeitimus", @@ -987,7 +976,6 @@ "Set a display name:": "Nustatyti rodomą vardą:", "For maximum security, this should be different from your account password.": "Maksimaliam saugumui užtikrinti ji turi skirtis nuo jūsų paskyros slaptažodžio.", "Set up encryption": "Nustatyti šifravimą", - "COPY": "Kopijuoti", "Enter recovery key": "Įveskite atgavimo raktą", "Keep going...": "Tęskite...", "Syncing...": "Sinchronizuojama...", @@ -1231,70 +1219,6 @@ "Cancelling…": "Atšaukiama…", "They match": "Jie sutampa", "They don't match": "Jie nesutampa", - "Dog": "Šuo", - "Cat": "Katė", - "Lion": "Liūtas", - "Horse": "Arklys", - "Unicorn": "Vienaragis", - "Pig": "Kiaulė", - "Elephant": "Dramblys", - "Rabbit": "Triušis", - "Panda": "Panda", - "Rooster": "Gaidys", - "Penguin": "Pingvinas", - "Turtle": "Vėžlys", - "Fish": "Žuvis", - "Octopus": "Aštunkojis", - "Butterfly": "Drugelis", - "Flower": "Gėlė", - "Tree": "Medis", - "Cactus": "Kaktusas", - "Mushroom": "Grybas", - "Globe": "Gaublys", - "Moon": "Mėnulis", - "Cloud": "Debesis", - "Fire": "Ugnis", - "Banana": "Bananas", - "Apple": "Obuolys", - "Strawberry": "Braškė", - "Corn": "Kukurūzas", - "Pizza": "Pica", - "Cake": "Tortas", - "Heart": "Širdis", - "Smiley": "Šypsenėlė", - "Robot": "Robotas", - "Hat": "Skrybėlė", - "Glasses": "Akiniai", - "Spanner": "Veržliaraktis", - "Santa": "Santa", - "Thumbs up": "Liuks", - "Umbrella": "Skėtis", - "Hourglass": "Smėlio laikrodis", - "Clock": "Laikrodis", - "Gift": "Dovana", - "Light bulb": "Lemputė", - "Book": "Knyga", - "Pencil": "Pieštukas", - "Paperclip": "Sąvaržėlė", - "Scissors": "Žirklės", - "Lock": "Spyna", - "Key": "Raktas", - "Hammer": "Plaktukas", - "Telephone": "Telefonas", - "Flag": "Vėliava", - "Train": "Traukinys", - "Bicycle": "Dviratis", - "Aeroplane": "Lėktuvas", - "Rocket": "Raketa", - "Trophy": "Trofėjus", - "Ball": "Kamuolys", - "Guitar": "Gitara", - "Trumpet": "Trimitas", - "Bell": "Varpas", - "Anchor": "Inkaras", - "Headphones": "Ausinės", - "Folder": "Aplankas", - "Pin": "Smeigtukas", "Other users may not trust it": "Kiti vartotojai gali nepasitikėti", "Upgrade": "Atnaujinti", "From %(deviceName)s (%(deviceId)s)": "Iš %(deviceName)s (%(deviceId)s)", @@ -1428,9 +1352,7 @@ "Unable to reject invite": "Nepavyko atmesti pakvietimo", "Whether you're using %(brand)s as an installed Progressive Web App": "Ar naudojate %(brand)s kaip įdiegtą progresyviąją žiniatinklio programą", "Your user agent": "Jūsų vartotojo agentas", - "Invite only": "Tik pakviestiems", "You can only join it with a working invite.": "Jūs galite prisijungti tik su veikiančiu pakvietimu.", - "If you cancel now, you won't complete your operation.": "Jei atšauksite dabar, jūs neužbaigsite savo operacijos.", "Cancel entering passphrase?": "Atšaukti slaptafrazės įvedimą?", "Room name or address": "Kambario pavadinimas arba adresas", "%(name)s is requesting verification": "%(name)s prašo patvirtinimo", diff --git a/src/i18n/strings/lv.json b/src/i18n/strings/lv.json index 6369ffed82..759a57cd35 100644 --- a/src/i18n/strings/lv.json +++ b/src/i18n/strings/lv.json @@ -4,7 +4,6 @@ "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s apstiprināja uzaicinājumu no %(displayName)s.", "Account": "Konts", "Access Token:": "Pieejas tokens:", - "Active call (%(roomName)s)": "Aktīvs zvans (%(roomName)s)", "Add": "Pievienot", "Add a topic": "Pievienot tematu", "Admin": "Administrators", @@ -119,9 +118,6 @@ "I have verified my email address": "Mana epasta adrese ir verificēta", "Import": "Importēt", "Import E2E room keys": "Importēt E2E istabas atslēgas", - "Incoming call from %(name)s": "Ienākošs zvans no %(name)s", - "Incoming video call from %(name)s": "Ienākošs VIDEO zvans no %(name)s", - "Incoming voice call from %(name)s": "Ienākošs AUDIO zvans no %(name)s", "Incorrect username and/or password.": "Nepareizs lietotājvārds un/vai parole.", "Incorrect verification code": "Nepareizs verifikācijas kods", "Invalid Email Address": "Nepareiza epasta adrese", @@ -192,7 +188,6 @@ "%(brand)s was not given permission to send notifications - please try again": "%(brand)s nav piešķirta atļauja nosūtīt paziņojumus. Lūdzu mēģini vēlreiz", "%(brand)s version:": "%(brand)s versija:", "Unable to enable Notifications": "Nav iespējams iespējot paziņojumus", - "You have no visible notifications": "Tev nav redzamo paziņojumu", "This will allow you to reset your password and receive notifications.": "Tas atļaus Tev atiestatīt paroli un saņemt paziņojumus.", "Room %(roomId)s not visible": "Istaba %(roomId)s nav redzama", "%(roomName)s does not exist.": "%(roomName)s neeksistē.", @@ -263,7 +258,6 @@ "Unable to verify email address.": "Nav iespējams apstiprināt epasta adresi.", "Unban": "Atbanot/atcelt pieejas liegumu", "Unable to capture screen": "Neizdevās uzņemt ekrānattēlu", - "unknown caller": "nezināms zvanītājs", "unknown error code": "nezināms kļūdas kods", "Unmute": "Ieslēgt skaņu", "Unnamed Room": "Istaba bez nosaukuma", @@ -324,7 +318,6 @@ "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s nomainīja istabas avataru uz ", "Upload an avatar:": "Augšuplādē avataru (profila attēlu):", "This server does not support authentication with a phone number.": "Šis serveris neatbalsta autentifikāciju pēc telefona numura.", - "There are no visible files in this room": "Nav redzamu failu šajā istabā", "Room": "Istaba", "Connectivity to the server has been lost.": "Savienojums ar serveri pārtrūka.", "Sent messages will be stored until your connection has returned.": "Nosūtītās ziņas tiks saglabātas tiklīdz savienojums tiks atjaunots.", @@ -485,7 +478,6 @@ "World readable": "Pieejama ikvienam un no visurienes", "Failed to remove tag %(tagName)s from room": "Neizdevās istabai noņemt birku %(tagName)s", "Failed to add tag %(tagName)s to room": "Neizdevās istabai pievienot birku %(tagName)s", - "Community Invites": "Uzaicinājums uz kopienu", "Banned by %(displayName)s": "Nobanojis/bloķējis (liedzis piekļuvi) %(displayName)s", "Members only (since the point in time of selecting this option)": "Tikai biedri (no šī parametra iestatīšanas brīža)", "Members only (since they were invited)": "Tikai biedri (no to uzaicināšanas brīža)", diff --git a/src/i18n/strings/nb_NO.json b/src/i18n/strings/nb_NO.json index f0c9827c06..3b21517865 100644 --- a/src/i18n/strings/nb_NO.json +++ b/src/i18n/strings/nb_NO.json @@ -270,37 +270,6 @@ "Decline": "Avslå", "Accept": "Godta", "Start": "Begynn", - "Dog": "Hund", - "Cat": "Katt", - "Horse": "Hest", - "Unicorn": "Enhjørning", - "Elephant": "Elefant", - "Panda": "Panda", - "Penguin": "Pingvin", - "Fish": "Fisk", - "Octopus": "Blekksprut", - "Flower": "Blomst", - "Mushroom": "Sopp", - "Moon": "Måne", - "Banana": "Banan", - "Strawberry": "Jordbær", - "Pizza": "Pizza", - "Cake": "Kaker", - "Robot": "Robot", - "Glasses": "Briller", - "Umbrella": "Paraply", - "Clock": "Klokke", - "Pencil": "Blyant", - "Scissors": "Saks", - "Key": "Nøkkel", - "Hammer": "Hammer", - "Flag": "Flagg", - "Bicycle": "Sykkel", - "Trumpet": "Trompet", - "Bell": "Bjelle", - "Anchor": "Anker", - "Headphones": "Hodetelefoner", - "Folder": "Mappe", "Upgrade": "Oppgrader", "Verify": "Bekreft", "Review": "Gjennomgang", @@ -381,7 +350,6 @@ "Idle": "Rolig", "Offline": "Frakoblet", "Unknown": "Ukjent", - "Recent rooms": "Nylige rom", "Settings": "Innstillinger", "Search": "Søk", "Direct Messages": "Direktemeldinger", @@ -453,7 +421,6 @@ "Email address": "E-postadresse", "Skip": "Hopp over", "Share Room Message": "Del rommelding", - "COPY": "KOPIER", "Terms of Service": "Vilkår for bruk", "Service": "Tjeneste", "Summary": "Oppsummering", @@ -489,8 +456,6 @@ "Featured Rooms:": "Fremhevede rom:", "Everyone": "Alle", "Description": "Beskrivelse", - "Explore": "Utforsk", - "Filter": "Filter", "Logout": "Logg ut", "Preview": "Forhåndsvisning", "View": "Vis", @@ -555,28 +520,6 @@ "Got It": "Skjønner", "Scan this unique code": "Skann denne unike koden", "or": "eller", - "Lion": "Løve", - "Pig": "Gris", - "Rabbit": "Kanin", - "Rooster": "Hane", - "Turtle": "Skilpadde", - "Butterfly": "Sommerfugl", - "Tree": "Tre", - "Cactus": "Kaktus", - "Globe": "Klode", - "Heart": "Hjerte", - "Smiley": "Smilefjes", - "Hat": "Hatt", - "Thumbs up": "Tommel opp", - "Hourglass": "Timeglass", - "Gift": "Gave", - "Light bulb": "Lyspære", - "Paperclip": "Binders", - "Telephone": "Telefon", - "Rocket": "Rakett", - "Trophy": "Trofé", - "Ball": "Ball", - "Guitar": "Gitar", "Later": "Senere", "Accept to continue:": "Aksepter for å fortsette:", "Public Name": "Offentlig navn", @@ -786,7 +729,6 @@ "Search failed": "Søket mislyktes", "No more results": "Ingen flere resultater", "Fill screen": "Fyll skjermen", - "Your profile": "Din profil", "Session verified": "Økten er verifisert", "Sign in instead": "Logg inn i stedet", "I have verified my email address": "Jeg har verifisert E-postadressen min", @@ -885,7 +827,6 @@ "Room %(name)s": "Rom %(name)s", "Start chatting": "Begynn å chatte", "%(count)s unread messages.|one": "1 ulest melding.", - "Unread mentions.": "Uleste nevninger.", "Unread messages.": "Uleste meldinger.", "Send as message": "Send som en melding", "You don't currently have any stickerpacks enabled": "Du har ikke skrudd på noen klistremerkepakker for øyeblikket", @@ -983,14 +924,11 @@ "Doesn't look like a valid phone number": "Det ser ikke ut som et gyldig telefonnummer", "Use lowercase letters, numbers, dashes and underscores only": "Bruk kun småbokstaver, numre, streker og understreker", "You must join the room to see its files": "Du må bli med i rommet for å se filene dens", - "There are no visible files in this room": "Det er ingen synlig filer i dette rommet", "Failed to upload image": "Mislyktes i å laste opp bildet", "Featured Users:": "Fremhevede brukere:", - "Filter rooms…": "Filtrer rom …", "Signed Out": "Avlogget", "%(creator)s created and configured the room.": "%(creator)s opprettet og satte opp rommet.", "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Opprett et samfunn for å samle sammen brukere og rom! Lag en tilpasset hjemmeside for å markere territoriet ditt i Matrix-universet.", - "You have no visible notifications": "Du har ingen synlige varsler", "Find a room… (e.g. %(exampleRoom)s)": "Finn et rom… (f.eks. %(exampleRoom)s)", "If you can't find the room you're looking for, ask for an invite or Create a new room.": "Hvis du ikke finner rommet du leter etter, be om en invitasjon eller Opprett et nytt rom.", "Active call": "Aktiv samtale", @@ -1025,7 +963,6 @@ "Avoid sequences": "Unngå sekvenser", "Avoid recent years": "Unngå nylige år", "Failed to join room": "Mislyktes i å bli med i rommet", - "unknown caller": "ukjent oppringer", "Cancelling…": "Avbryter …", "They match": "De samsvarer", "They don't match": "De samsvarer ikke", @@ -1155,7 +1092,6 @@ "This is a top-10 common password": "Dette er et topp-10 vanlig passord", "This is a top-100 common password": "Dette er et topp-100 vanlig passord", "Message Pinning": "Meldingsklistring", - "Aeroplane": "Fly", "Verify all your sessions to ensure your account & messages are safe": "Verifiser alle øktene dine for å sikre at kontoen og meldingene dine er trygge", "From %(deviceName)s (%(deviceId)s)": "Fra %(deviceName)s (%(deviceId)s)", "Decline (%(counter)s)": "Avslå (%(counter)s)", @@ -1176,7 +1112,6 @@ "Muted Users": "Dempede brukere", "Incorrect verification code": "Ugyldig verifiseringskode", "Unable to add email address": "Klarte ikke å legge til E-postadressen", - "Invite only": "Kun ved invitasjon", "Close preview": "Lukk forhåndsvisning", "Failed to kick": "Mislyktes i å sparke ut", "Unban this user?": "Vil du oppheve bannlysingen av denne brukeren?", @@ -1278,7 +1213,6 @@ "Mention": "Nevn", "Community Name": "Samfunnets navn", "Dismiss read marker and jump to bottom": "Avføy lesekvitteringen og hopp ned til bunnen", - "If you cancel now, you won't complete verifying your other session.": "Hvis du avbryter nå, vil du ikke ha fullført verifiseringen av den andre økten din.", "Room name or address": "Rommets navn eller adresse", "Light": "Lys", "Dark": "Mørk", @@ -1291,12 +1225,10 @@ "Encryption upgrade available": "Krypteringsoppdatering tilgjengelig", "Verify the new login accessing your account: %(name)s": "Verifiser den nye påloggingen som vil ha tilgang til kontoen din: %(name)s", "Restart": "Start på nytt", - "Font scaling": "Skrifttypeskalering", "Font size": "Skriftstørrelse", "You've successfully verified this user.": "Du har vellykket verifisert denne brukeren.", "Waiting for your other session, %(deviceName)s (%(deviceId)s), to verify…": "Venter på at den andre økten din, %(deviceName)s (%(deviceId)s), skal verifisere …", "Waiting for your other session to verify…": "Venter på at den andre økten din skal verifisere …", - "Santa": "Julenisse", "Delete %(count)s sessions|other": "Slett %(count)s økter", "Delete %(count)s sessions|one": "Slett %(count)s økt", "Backup version: ": "Sikkerhetskopiversjon: ", @@ -1309,15 +1241,10 @@ "Remove %(phone)s?": "Vil du fjerne %(phone)s?", "Online for %(duration)s": "På nett i %(duration)s", "Favourites": "Favoritter", - "Create room": "Opprett et rom", "People": "Folk", "Sort by": "Sorter etter", "Activity": "Aktivitet", "A-Z": "A-Å", - "Unread rooms": "Uleste rom", - "Always show first": "Alltid vis først", - "Show": "Vis", - "Message preview": "Meldingsforhåndsvisning", "Leave Room": "Forlat rommet", "This room has no local addresses": "Dette rommet har ikke noen lokale adresser", "Waiting for you to accept on your other session…": "Venter på at du aksepterer på den andre økten din …", diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json index bb0fb5def6..2a2160efae 100644 --- a/src/i18n/strings/nl.json +++ b/src/i18n/strings/nl.json @@ -43,7 +43,6 @@ "Continue": "Doorgaan", "Cancel": "Annuleren", "Accept": "Aannemen", - "Active call (%(roomName)s)": "Actieve oproep (%(roomName)s)", "Add": "Toevoegen", "Add a topic": "Voeg een onderwerp toe", "Admin Tools": "Beheerdersgereedschap", @@ -182,9 +181,6 @@ "I have verified my email address": "Ik heb mijn e-mailadres geverifieerd", "Import": "Inlezen", "Import E2E room keys": "E2E-gesprekssleutels inlezen", - "Incoming call from %(name)s": "Inkomende oproep van %(name)s", - "Incoming video call from %(name)s": "Inkomende video-oproep van %(name)s", - "Incoming voice call from %(name)s": "Inkomende spraakoproep van %(name)s", "Incorrect username and/or password.": "Onjuiste gebruikersnaam en/of wachtwoord.", "Incorrect verification code": "Onjuiste verificatiecode", "Invalid Email Address": "Ongeldig e-mailadres", @@ -275,7 +271,6 @@ "%(senderName)s unbanned %(targetName)s.": "%(senderName)s heeft %(targetName)s ontbannen.", "Unable to capture screen": "Kan geen schermafdruk maken", "Unable to enable Notifications": "Kan meldingen niet inschakelen", - "unknown caller": "onbekende beller", "Unmute": "Niet dempen", "Unnamed Room": "Naamloos gesprek", "Uploading %(filename)s and %(count)s others|zero": "%(filename)s wordt geüpload", @@ -309,7 +304,6 @@ "You do not have permission to post to this room": "U heeft geen toestemming actief aan dit gesprek deel te nemen", "You have disabled URL previews by default.": "U heeft URL-voorvertoningen standaard uitgeschakeld.", "You have enabled URL previews by default.": "U heeft URL-voorvertoningen standaard ingeschakeld.", - "You have no visible notifications": "U heeft geen zichtbare meldingen", "You must register to use this functionality": "U dient u te registreren om deze functie te gebruiken", "You need to be able to invite users to do that.": "Dit vereist de bevoegdheid gebruikers uit te nodigen.", "You need to be logged in.": "Hiervoor dient u aangemeld te zijn.", @@ -319,7 +313,6 @@ "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "U zult deze veranderingen niet terug kunnen draaien, daar u de gebruiker tot uw eigen niveau promoveert.", "This server does not support authentication with a phone number.": "Deze server biedt geen ondersteuning voor authenticatie met een telefoonnummer.", "An error occurred: %(error_string)s": "Er is een fout opgetreden: %(error_string)s", - "There are no visible files in this room": "Er zijn geen zichtbare bestanden in dit gesprek", "Room": "Gesprek", "Connectivity to the server has been lost.": "De verbinding met de server is verbroken.", "Sent messages will be stored until your connection has returned.": "Verstuurde berichten zullen opgeslagen worden totdat uw verbinding hersteld is.", @@ -475,7 +468,6 @@ "Unnamed room": "Naamloos gesprek", "World readable": "Leesbaar voor iedereen", "Guests can join": "Gasten kunnen toetreden", - "Community Invites": "Gemeenschapsuitnodigingen", "Banned by %(displayName)s": "Verbannen door %(displayName)s", "Members only (since the point in time of selecting this option)": "Alleen deelnemers (vanaf het moment dat deze optie wordt geselecteerd)", "Members only (since they were invited)": "Alleen deelnemers (vanaf het moment dat ze uitgenodigd zijn)", @@ -833,7 +825,6 @@ "Share Community": "Gemeenschap delen", "Share Room Message": "Bericht uit gesprek delen", "Link to selected message": "Koppeling naar geselecteerd bericht", - "COPY": "KOPIËREN", "Share Message": "Bericht delen", "You can't send any messages until you review and agree to our terms and conditions.": "U kunt geen berichten sturen totdat u onze algemene voorwaarden heeft gelezen en aanvaard.", "No Audio Outputs detected": "Geen geluidsuitgangen gedetecteerd", @@ -936,69 +927,6 @@ "Verify this user by confirming the following emoji appear on their screen.": "Verifieer deze gebruiker door te bevestigen dat hun scherm de volgende emoji toont.", "Verify this user by confirming the following number appears on their screen.": "Verifieer deze gebruiker door te bevestigen dat hun scherm het volgende getal toont.", "Unable to find a supported verification method.": "Kan geen ondersteunde verificatiemethode vinden.", - "Dog": "Hond", - "Cat": "Kat", - "Lion": "Leeuw", - "Horse": "Paard", - "Unicorn": "Eenhoorn", - "Pig": "Varken", - "Elephant": "Olifant", - "Rabbit": "Konijn", - "Panda": "Panda", - "Rooster": "Haan", - "Penguin": "Pinguïn", - "Turtle": "Schildpad", - "Fish": "Vis", - "Octopus": "Octopus", - "Butterfly": "Vlinder", - "Flower": "Bloem", - "Tree": "Boom", - "Cactus": "Cactus", - "Mushroom": "Paddenstoel", - "Globe": "Wereldbol", - "Moon": "Maan", - "Cloud": "Wolk", - "Fire": "Vuur", - "Banana": "Banaan", - "Apple": "Appel", - "Strawberry": "Aardbei", - "Corn": "Maïs", - "Pizza": "Pizza", - "Cake": "Taart", - "Heart": "Hart", - "Smiley": "Smiley", - "Robot": "Robot", - "Hat": "Hoed", - "Glasses": "Bril", - "Spanner": "Moersleutel", - "Santa": "Kerstman", - "Thumbs up": "Duim omhoog", - "Umbrella": "Paraplu", - "Hourglass": "Zandloper", - "Clock": "Klok", - "Gift": "Cadeau", - "Light bulb": "Gloeilamp", - "Book": "Boek", - "Pencil": "Potlood", - "Paperclip": "Paperclip", - "Scissors": "Schaar", - "Key": "Sleutel", - "Hammer": "Hamer", - "Telephone": "Telefoon", - "Flag": "Vlag", - "Train": "Trein", - "Bicycle": "Fiets", - "Aeroplane": "Vliegtuig", - "Rocket": "Raket", - "Trophy": "Trofee", - "Ball": "Bal", - "Guitar": "Gitaar", - "Trumpet": "Trompet", - "Bell": "Bel", - "Anchor": "Anker", - "Headphones": "Koptelefoon", - "Folder": "Map", - "Pin": "Speld", "Yes": "Ja", "No": "Nee", "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.": "We hebben u een e-mail gestuurd om uw adres te verifiëren. Gelieve de daarin gegeven aanwijzingen op te volgen en dan op de knop hieronder te klikken.", @@ -1161,8 +1089,6 @@ "This homeserver would like to make sure you are not a robot.": "Deze thuisserver wil graag weten of u geen robot bent.", "Please review and accept all of the homeserver's policies": "Gelieve het beleid van de thuisserver door te nemen en te aanvaarden", "Please review and accept the policies of this homeserver:": "Gelieve het beleid van deze thuisserver door te nemen en te aanvaarden:", - "Your Modular server": "Uw Modular-server", - "Enter the location of your Modular homeserver. It may use your own domain name or be a subdomain of modular.im.": "Voer de locatie van uw Modular-thuisserver in. Deze kan uw eigen domeinnaam gebruiken, of een subdomein van modular.im zijn.", "Server Name": "Servernaam", "The username field must not be blank.": "Het gebruikersnaamveld mag niet leeg zijn.", "Username": "Gebruikersnaam", @@ -1339,7 +1265,6 @@ "Some characters not allowed": "Sommige tekens zijn niet toegestaan", "Create your Matrix account on ": "Maak uw Matrix-account op aan", "Add room": "Gesprek toevoegen", - "Your profile": "Uw profiel", "Your Matrix account on ": "Uw Matrix-account op ", "Failed to get autodiscovery configuration from server": "Ophalen van auto-ontdekkingsconfiguratie van server is mislukt", "Invalid base_url for m.homeserver": "Ongeldige base_url voor m.homeserver", @@ -1506,9 +1431,6 @@ "Set an email for account recovery. Use email to optionally be discoverable by existing contacts.": "Stel een e-mailadres voor accountherstel in. Gebruik eventueel een e-mailadres om vindbaar te zijn voor bestaande contacten.", "Enter your custom homeserver URL What does this mean?": "Voer uw aangepaste thuisserver-URL in Wat betekent dit?", "Enter your custom identity server URL What does this mean?": "Voer uw aangepaste identiteitsserver-URL in Wat betekent dit?", - "Explore": "Ontdekken", - "Filter": "Filteren", - "Filter rooms…": "Filter de gesprekken…", "Preview": "Voorbeeld", "View": "Bekijken", "Find a room…": "Zoek een gesprek…", @@ -1521,7 +1443,6 @@ "Remove %(count)s messages|one": "1 bericht verwijderen", "%(count)s unread messages including mentions.|other": "%(count)s ongelezen berichten, inclusief vermeldingen.", "%(count)s unread messages.|other": "%(count)s ongelezen berichten.", - "Unread mentions.": "Ongelezen vermeldingen.", "Show image": "Afbeelding tonen", "Please create a new issue on GitHub so that we can investigate this bug.": "Maak een nieuw rapport aan op GitHub opdat we dit probleem kunnen onderzoeken.", "e.g. my-room": "bv. mijn-gesprek", @@ -1615,7 +1536,6 @@ "They match": "Ze komen overeen", "They don't match": "Ze komen niet overeen", "To be secure, do this in person or use a trusted way to communicate.": "Doe dit voor de zekerheid onder vier ogen, of via een betrouwbaar communicatiemedium.", - "Lock": "Hangslot", "Verify yourself & others to keep your chats safe": "Verifieer uzelf en anderen om uw gesprekken veilig te houden", "Other users may not trust it": "Mogelijk wantrouwen anderen het", "Upgrade": "Bijwerken", @@ -1639,8 +1559,6 @@ "Whether you're using %(brand)s on a device where touch is the primary input mechanism": "Of u %(brand)s op een apparaat gebruikt waarop een aanraakscherm de voornaamste invoermethode is", "Whether you're using %(brand)s as an installed Progressive Web App": "Of u %(brand)s gebruikt als een geïnstalleerde Progressive-Web-App", "Your user agent": "Uw gebruikersagent", - "If you cancel now, you won't complete verifying the other user.": "Als u nu annuleert zult u de andere gebruiker niet verifiëren.", - "If you cancel now, you won't complete verifying your other session.": "Als u nu annuleert zult u uw andere sessie niet verifiëren.", "Cancel entering passphrase?": "Wachtwoordinvoer annuleren?", "Show typing notifications": "Typmeldingen weergeven", "Verify this session by completing one of the following:": "Verifieer deze sessie door een van het volgende te doen:", @@ -1710,7 +1628,6 @@ "Everyone in this room is verified": "Iedereen in dit gesprek is geverifieerd", "Mod": "Mod", "rooms.": "gesprekken.", - "Recent rooms": "Actuele gesprekken", "Direct Messages": "Tweegesprekken", "If disabled, messages from encrypted rooms won't appear in search results.": "Dit moet aan staan om te kunnen zoeken in versleutelde gesprekken.", "Indexed rooms:": "Geïndexeerde gesprekken:", @@ -1768,7 +1685,6 @@ "Encrypted by an unverified session": "Versleuteld door een niet-geverifieerde sessie", "Unencrypted": "Onversleuteld", "Encrypted by a deleted session": "Versleuteld door een verwijderde sessie", - "Invite only": "Enkel op uitnodiging", "Close preview": "Voorbeeld sluiten", "Failed to deactivate user": "Deactiveren van gebruiker is mislukt", "Send a reply…": "Verstuur een antwoord…", @@ -1980,7 +1896,6 @@ "Confirm adding this phone number by using Single Sign On to prove your identity.": "Bevestig uw identiteit met Eenmalige Aanmelding om dit telefoonnummer toe te voegen.", "Confirm adding phone number": "Bevestig toevoegen van het telefoonnummer", "Click the button below to confirm adding this phone number.": "Klik op de knop hieronder om het toevoegen van dit telefoonnummer te bevestigen.", - "If you cancel now, you won't complete your operation.": "Als u de operatie afbreekt kunt u haar niet voltooien.", "Review where you’re logged in": "Kijk na waar u aangemeld bent", "New login. Was this you?": "Nieuwe aanmelding - was u dat?", "%(name)s is requesting verification": "%(name)s verzoekt om verificatie", @@ -2005,7 +1920,6 @@ "Support adding custom themes": "Sta maatwerkthema's toe", "Opens chat with the given user": "Start een tweegesprek met die gebruiker", "Sends a message to the given user": "Zendt die gebruiker een bericht", - "Font scaling": "Lettergrootte", "Verify all your sessions to ensure your account & messages are safe": "Controleer al uw sessies om zeker te zijn dat uw account & berichten veilig zijn", "Verify the new login accessing your account: %(name)s": "Verifieer de nieuwe aanmelding op uw account: %(name)s", "Confirm your account deactivation by using Single Sign On to prove your identity.": "Bevestig uw intentie deze account te sluiten door met Single Sign On uw identiteit te bewijzen.", diff --git a/src/i18n/strings/nn.json b/src/i18n/strings/nn.json index 52cbfc75e1..971abe87e8 100644 --- a/src/i18n/strings/nn.json +++ b/src/i18n/strings/nn.json @@ -182,11 +182,6 @@ "When I'm invited to a room": "Når eg blir invitert til eit rom", "Call invitation": "Samtaleinvitasjonar", "Messages sent by bot": "Meldingar sendt frå ein bot", - "Active call (%(roomName)s)": "Pågåande samtale (%(roomName)s)", - "unknown caller": "ukjend ringar", - "Incoming voice call from %(name)s": "Innkommande talesamtale frå %(name)s", - "Incoming video call from %(name)s": "%(name)s ynskjer ei videosamtale", - "Incoming call from %(name)s": "%(name)s ynskjer ei samtale", "Decline": "Sei nei", "Accept": "Sei ja", "Error": "Noko gjekk gale", @@ -320,7 +315,6 @@ "Forget room": "Gløym rom", "Search": "Søk", "Share room": "Del rom", - "Community Invites": "Fellesskapsinvitasjonar", "Invites": "Invitasjonar", "Favourites": "Yndlingar", "Rooms": "Rom", @@ -599,7 +593,6 @@ "Share Community": "Del Fellesskap", "Share Room Message": "Del Rommelding", "Link to selected message": "Lenk til den valde meldinga", - "COPY": "KOPIER", "Private Chat": "Lukka Samtale", "Public Chat": "Offentleg Samtale", "Reject invitation": "Sei nei til innbyding", @@ -634,7 +627,6 @@ "Name": "Namn", "You must register to use this functionality": "Du må melda deg inn for å bruka denne funksjonen", "You must join the room to see its files": "Du må fare inn i rommet for å sjå filene dets", - "There are no visible files in this room": "Det er ingen synlege filer i dette rommet", "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

HTML for fellesskapssida di

\n

\n Bruk den Lange Skildringa for å ynskja nye medlemmar velkomen, eller gje ut viktige lenkjer\n

\n

\n Du kan til og med bruka 'img' HTML-taggar!\n

\n", "Add rooms to the community summary": "Legg rom til i samandraget for fellesskapet", "Which rooms would you like to add to this summary?": "Kva rom ynskjer du å leggja til i samanfattinga?", @@ -691,7 +683,6 @@ "Your Communities": "Dine fellesskap", "Error whilst fetching joined communities": "Noko gjekk gale under innlasting av fellesskapa du med er i", "Create a new community": "Opprett nytt fellesskap", - "You have no visible notifications": "Du har ingen synlege varsel", "Members": "Medlemmar", "Invite to this room": "Inviter til dette rommet", "Files": "Filer", @@ -854,7 +845,6 @@ "You have %(count)s unread notifications in a prior version of this room.|other": "Du har %(count)s uleste varslingar i ein tidligare versjon av dette rommet.", "You have %(count)s unread notifications in a prior version of this room.|one": "Du har %(count)s ulest varsel i ein tidligare versjon av dette rommet.", "Guest": "Gjest", - "Your profile": "Din profil", "Could not load user profile": "Klarde ikkje å laste brukarprofilen", "Your Matrix account on %(serverName)s": "Din Matrix-konto på %(serverName)s", "Your Matrix account on ": "Din Matrix-konto på ", @@ -961,8 +951,6 @@ "Whether or not you're using the 'breadcrumbs' feature (avatars above the room list)": "Om du nyttar funksjonen 'breadcrumbs' (avatarane over romkatalogen)", "Whether you're using %(brand)s as an installed Progressive Web App": "Om din %(brand)s er installert som ein webapplikasjon (Progressive Web App)", "Your user agent": "Din nettlesar (User-Agent)", - "If you cancel now, you won't complete verifying the other user.": "Om du avbryter no, vil dette stoppe verifikasjonsprosessen for den andre brukaren.", - "If you cancel now, you won't complete verifying your other session.": "Om du avbryter no, vil dette stoppe verifikasjonsprosessen for den andre økta.", "Cancel entering passphrase?": "Avbryte inntasting av passfrase ?", "Setting up keys": "Setter opp nøklar", "Verify this session": "Stadfest denne økta", @@ -1022,7 +1010,6 @@ "Error changing power level": "Feil under endring av tilgangsnivå", "An error occurred changing the user's power level. Ensure you have sufficient permissions and try again.": "Ein feil skjedde under endring av tilgangsnivå. Sjekk at du har lov til dette, deretter prøv på nytt.", "Invite users": "Inviter brukarar", - "Invite only": "Berre invitasjonar", "Scroll to most recent messages": "Gå til dei nyaste meldingane", "Close preview": "Lukk førehandsvisninga", "No recent messages by %(user)s found": "Fann ingen nyare meldingar frå %(user)s", @@ -1046,7 +1033,6 @@ "Strikethrough": "Gjennomstreka", "Code block": "Kodeblokk", "Room %(name)s": "Rom %(name)s", - "Recent rooms": "Siste rom", "Direct Messages": "Folk", "Joining room …": "Blir med i rommet…", "Loading …": "Lastar…", @@ -1238,7 +1224,6 @@ "Access your secure message history and set up secure messaging by entering your recovery passphrase.": "Få tilgang til sikker meldingshistorikk og sett opp sikker meldingsutveksling, ved å skrive inn gjennopprettingspassfrasen.", "If you've forgotten your recovery passphrase you can use your recovery key or set up new recovery options": "Har du gløymt gjennopprettingspassfrasen kan du bruka ein gjennopprettingsnøkkel eller setta opp nye gjennopprettingsval", "Help": "Hjelp", - "Explore": "Utforsk", "%(creator)s created and configured the room.": "%(creator)s oppretta og konfiguerte dette rommet.", "%(brand)s failed to get the protocol list from the homeserver. The homeserver may be too old to support third party networks.": "%(brand)s klarde ikkje å hente protokolllister frå heimetenaren. Det kan hende at tenaren er for gammal til å støtte tredjeparts-nettverk", "The homeserver may be unavailable or overloaded.": "Heimetenaren kan vere overlasta eller utilgjengeleg.", @@ -1304,7 +1289,6 @@ "This room is end-to-end encrypted": "Dette rommet er ende-til-ende kryptert", "Encrypted by an unverified session": "Kryptert av ein ikkje-verifisert sesjon", "Encrypted by a deleted session": "Kryptert av ein sletta sesjon", - "Create room": "Lag rom", "Messages in this room are end-to-end encrypted.": "Meldingar i dette rommet er ende-til-ende kryptert.", "Messages in this room are not end-to-end encrypted.": "Meldingar i dette rommet er ikkje ende-til-ende kryptert.", "In encrypted rooms, your messages are secured and only you and the recipient have the unique keys to unlock them.": "Når du nyttar krypterte rom er meldingane din sikra. Berre du og mottakaren har unike nøklar som kan gjere meldingane lesbare.", diff --git a/src/i18n/strings/oc.json b/src/i18n/strings/oc.json index 124439a802..0cf825eeac 100644 --- a/src/i18n/strings/oc.json +++ b/src/i18n/strings/oc.json @@ -29,7 +29,6 @@ "Idle": "Inactiu", "Offline": "Fòra linha", "Unknown": "Desconegut", - "Recent rooms": "Salas recentas", "No rooms to show": "Cap de sala a mostrar", "Unnamed room": "Sala sens nom", "Settings": "Paramètres", diff --git a/src/i18n/strings/pl.json b/src/i18n/strings/pl.json index 1343405781..5742cf348e 100644 --- a/src/i18n/strings/pl.json +++ b/src/i18n/strings/pl.json @@ -75,7 +75,6 @@ "%(targetName)s accepted an invitation.": "%(targetName)s zaakceptował(a) zaproszenie.", "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s zaakceptował(a) zaproszenie dla %(displayName)s.", "Access Token:": "Jednorazowy kod dostępu:", - "Active call (%(roomName)s)": "Aktywne połączenie (%(roomName)s)", "Admin": "Administrator", "Admin Tools": "Narzędzia Administracyjne", "No Microphones detected": "Nie wykryto żadnego mikrofonu", @@ -178,9 +177,6 @@ "I have verified my email address": "Zweryfikowałem swój adres e-mail", "Import": "Importuj", "Import E2E room keys": "Importuj klucze pokoju E2E", - "Incoming call from %(name)s": "Połączenie przychodzące od %(name)s", - "Incoming video call from %(name)s": "Przychodzące połączenie wideo od %(name)s", - "Incoming voice call from %(name)s": "Przychodzące połączenie głosowe od %(name)s", "Incorrect username and/or password.": "Nieprawidłowa nazwa użytkownika i/lub hasło.", "Incorrect verification code": "Nieprawidłowy kod weryfikujący", "Invalid Email Address": "Nieprawidłowy adres e-mail", @@ -299,7 +295,6 @@ "Unable to capture screen": "Nie można zrobić zrzutu ekranu", "Unable to enable Notifications": "Nie można włączyć powiadomień", "To use it, just wait for autocomplete results to load and tab through them.": "Żeby tego użyć, należy poczekać na załadowanie się autouzupełnienia i naciskać przycisk \"Tab\", by wybierać.", - "unknown caller": "nieznany dzwoniący", "Unmute": "Wyłącz wyciszenie", "Unnamed Room": "Pokój bez nazwy", "Uploading %(filename)s and %(count)s others|zero": "Przesyłanie %(filename)s", @@ -329,7 +324,6 @@ "You cannot place VoIP calls in this browser.": "Nie możesz przeprowadzić rozmowy głosowej VoIP w tej przeglądarce.", "You do not have permission to post to this room": "Nie masz uprawnień do pisania w tym pokoju", "You have disabled URL previews by default.": "Masz domyślnie wyłączone podglądy linków.", - "You have no visible notifications": "Nie masz widocznych powiadomień", "You must register to use this functionality": "Musisz się zarejestrować aby móc używać tej funkcji", "You need to be able to invite users to do that.": "Aby to zrobić musisz mieć możliwość zapraszania użytkowników.", "You need to be logged in.": "Musisz być zalogowany.", @@ -338,7 +332,6 @@ "You seem to be uploading files, are you sure you want to quit?": "Wygląda na to, że jesteś w trakcie przesyłania plików; jesteś pewien, że chcesz wyjść?", "Set a display name:": "Ustaw nazwę ekranową:", "This server does not support authentication with a phone number.": "Ten serwer nie wspiera autentykacji za pomocą numeru telefonu.", - "There are no visible files in this room": "Nie ma widocznych plików w tym pokoju", "Connectivity to the server has been lost.": "Połączenie z serwerem zostało utracone.", "Create": "Utwórz", "Online": "Dostępny(-a)", @@ -639,7 +632,6 @@ "Share Link to User": "Udostępnij odnośnik do użytkownika", "Replying": "Odpowiadanie", "Share room": "Udostępnij pokój", - "Community Invites": "Zaproszenia do społeczności", "Banned by %(displayName)s": "Zbanowany przez %(displayName)s", "Muted Users": "Wyciszeni użytkownicy", "Invalid community ID": "Błędne ID społeczności", @@ -688,7 +680,6 @@ "Share Community": "Udostępnij Społeczność", "Share Room Message": "Udostępnij wiadomość w pokoju", "Link to selected message": "Link do zaznaczonej wiadomości", - "COPY": "KOPIUJ", "Unable to reject invite": "Nie udało się odrzucić zaproszenia", "Share Message": "Udostępnij wiadomość", "Collapse Reply Thread": "Zwiń wątek odpowiedzi", @@ -916,60 +907,6 @@ "I don't want my encrypted messages": "Nie chcę moich zaszyfrowanych wiadomości", "You'll lose access to your encrypted messages": "Utracisz dostęp do zaszyfrowanych wiadomości", "Verified!": "Zweryfikowano!", - "Dog": "Pies", - "Cat": "Kot", - "Lion": "Lew", - "Horse": "Koń", - "Unicorn": "Jednorożec", - "Pig": "Świnia", - "Elephant": "Słoń", - "Rabbit": "Królik", - "Panda": "Panda", - "Rooster": "Kogut", - "Penguin": "Pingwin", - "Turtle": "Żółw", - "Fish": "Ryba", - "Octopus": "Ośmiornica", - "Butterfly": "Motyl", - "Flower": "Kwiat", - "Tree": "Drzewo", - "Cactus": "Kaktus", - "Mushroom": "Grzyb", - "Moon": "Księżyc", - "Cloud": "Chmura", - "Fire": "Ogień", - "Banana": "Banan", - "Apple": "Jabłko", - "Strawberry": "Truskawka", - "Corn": "Kukurydza", - "Pizza": "Pizza", - "Cake": "Ciasto", - "Heart": "Serce", - "Robot": "Robot", - "Hat": "Kapelusz", - "Glasses": "Okulary", - "Umbrella": "Parasol", - "Hourglass": "Klepsydra", - "Clock": "Zegar", - "Light bulb": "Żarówka", - "Book": "Książka", - "Pencil": "Ołówek", - "Paperclip": "Spinacz", - "Scissors": "Nożyczki", - "Key": "Klucz", - "Telephone": "Telefon", - "Flag": "Flaga", - "Train": "Pociąg", - "Bicycle": "Rower", - "Aeroplane": "Samolot", - "Rocket": "Rakieta", - "Trophy": "Trofeum", - "Guitar": "Gitara", - "Trumpet": "Trąbka", - "Bell": "Dzwonek", - "Anchor": "Kotwica", - "Headphones": "Słuchawki", - "Folder": "Folder", "Phone Number": "Numer telefonu", "Display Name": "Wyświetlana nazwa", "Set a new account password...": "Ustaw nowe hasło do konta…", @@ -1007,12 +944,6 @@ "Power level": "Poziom uprawnień", "Room Settings - %(roomName)s": "Ustawienia pokoju - %(roomName)s", "Doesn't look like a valid phone number": "To nie wygląda na poprawny numer telefonu", - "Globe": "Ziemia", - "Smiley": "Uśmiech", - "Spanner": "Klucz francuski", - "Santa": "Mikołaj", - "Gift": "Prezent", - "Hammer": "Młotek", "Group & filter rooms by custom tags (refresh to apply changes)": "Grupuj i filtruj pokoje według niestandardowych znaczników (odśwież, aby zastosować zmiany)", "Prepends ¯\\_(ツ)_/¯ to a plain-text message": "Dodaje ¯\\_(ツ)_/¯ na początku wiadomości tekstowej", "Upgrades a room to a new version": "Aktualizuje pokój do nowej wersji", @@ -1124,9 +1055,6 @@ "Verify this user by confirming the following emoji appear on their screen.": "Sprawdź tego użytkownika potwierdzając, że następujące emotikony pojawiają się na ekranie rozmówcy.", "Verify this user by confirming the following number appears on their screen.": "Sprawdź tego użytkownika potwierdzając, że następujące liczby pojawiają się na ekranie rozmówcy.", "Unable to find a supported verification method.": "Nie można znaleźć wspieranej metody weryfikacji.", - "Thumbs up": "Kciuk w górę", - "Ball": "Piłka", - "Pin": "Pinezka", "Accept to continue:": "Zaakceptuj aby kontynuować:", "ID": "ID", "Public Name": "Nazwa publiczna", @@ -1205,8 +1133,6 @@ "eg: @bot:* or example.org": "np: @bot:* lub przykład.pl", "Composer": "Kompozytor", "Autocomplete delay (ms)": "Opóźnienie autouzupełniania (ms)", - "Explore": "Przeglądaj", - "Filter": "Filtruj", "Add room": "Dodaj pokój", "Request media permissions": "Zapytaj o uprawnienia", "Voice & Video": "Głos i wideo", @@ -1242,7 +1168,6 @@ "%(count)s unread messages including mentions.|one": "1 nieprzeczytana wzmianka.", "%(count)s unread messages.|other": "%(count)s nieprzeczytanych wiadomości.", "%(count)s unread messages.|one": "1 nieprzeczytana wiadomość.", - "Unread mentions.": "Nieprzeczytane wzmianki.", "Unread messages.": "Nieprzeczytane wiadomości.", "Join": "Dołącz", "%(creator)s created and configured the room.": "%(creator)s stworzył(a) i skonfigurował(a) pokój.", @@ -1257,7 +1182,6 @@ "e.g. my-room": "np. mój-pokój", "Some characters not allowed": "Niektóre znaki niedozwolone", "Report bugs & give feedback": "Zgłoś błędy & sugestie", - "Filter rooms…": "Filtruj pokoje…", "Find a room…": "Znajdź pokój…", "Find a room… (e.g. %(exampleRoom)s)": "Znajdź pokój… (np. %(exampleRoom)s)", "If you can't find the room you're looking for, ask for an invite or Create a new room.": "Jeżeli nie możesz znaleźć szukanego pokoju, poproś o zaproszenie albo stwórz nowy pokój.", @@ -1386,7 +1310,6 @@ "Other servers": "Inne serwery", "Sign in to your Matrix account on ": "Zaloguj się do swojego konta Matrix na ", "Explore rooms": "Przeglądaj pokoje", - "Your profile": "Twój profil", "Your Matrix account on %(serverName)s": "Twoje konto Matrix na %(serverName)s", "Your Matrix account on ": "Twoje konto Matrix na ", "A verification email will be sent to your inbox to confirm setting your new password.": "E-mail weryfikacyjny zostanie wysłany do skrzynki odbiorczej w celu potwierdzenia ustawienia nowego hasła.", @@ -1418,7 +1341,6 @@ "Session ID:": "Identyfikator sesji:", "Session key:": "Klucz sesji:", "Accept all %(invitedRooms)s invites": "Zaakceptuj wszystkie zaproszenia do %(invitedRooms)s", - "Invite only": "Tylko dla zaproszonych", "Close preview": "Zamknij podgląd", "Send a reply…": "Wyślij odpowiedź…", "Send a message…": "Wyślij wiadomość…", @@ -1464,7 +1386,6 @@ "Bold": "Pogrubienie", "Italics": "Kursywa", "Strikethrough": "Przekreślenie", - "Recent rooms": "Ostatnie pokoje", "Reason: %(reason)s": "Powód: %(reason)s", "Reject & Ignore user": "Odrzuć i zignoruj użytkownika", "Show image": "Pokaż obraz", @@ -1506,7 +1427,6 @@ "Confirm adding this email address by using Single Sign On to prove your identity.": "Potwierdź dodanie tego adresu e-mail przez użycie pojedynczego logowania, aby potwierdzić swoją tożsamość.", "Single Sign On": "Pojedyncze logowanie", "Confirm adding this phone number by using Single Sign On to prove your identity.": "Potwierdź dodanie tego numeru telefonu przez użycie pojedynczego logowania, aby potwierdzić swoją tożsamość.", - "Learn More": "Dowiedz się więcej", "Light": "Jasny", "Dark": "Ciemny", "Font size": "Rozmiar czcionki", diff --git a/src/i18n/strings/pt.json b/src/i18n/strings/pt.json index f72edc150d..021cbbc04a 100644 --- a/src/i18n/strings/pt.json +++ b/src/i18n/strings/pt.json @@ -99,7 +99,6 @@ "Who can access this room?": "Quem pode acessar esta sala?", "Who can read history?": "Quem pode ler o histórico da sala?", "You do not have permission to post to this room": "Você não tem permissão de postar nesta sala", - "You have no visible notifications": "Voce não possui notificações visíveis", "Sun": "Dom", "Mon": "Seg", "Tue": "Ter", @@ -186,7 +185,6 @@ "Upload an avatar:": "Envie uma imagem de perfil para identificar você:", "This server does not support authentication with a phone number.": "Este servidor não permite a autenticação através de números de telefone.", "An error occurred: %(error_string)s": "Um erro ocorreu: %(error_string)s", - "There are no visible files in this room": "Não há arquivos públicos nesta sala", "Connectivity to the server has been lost.": "A conexão com o servidor foi perdida. Verifique sua conexão de internet.", "Sent messages will be stored until your connection has returned.": "Imagens enviadas ficarão armazenadas até que sua conexão seja reestabelecida.", "Active call": "Chamada ativa", @@ -340,25 +338,20 @@ "Public Chat": "Conversa pública", "Uploading %(filename)s and %(count)s others|zero": "Enviando o arquivo %(filename)s", "Admin Tools": "Ferramentas de administração", - "Incoming video call from %(name)s": "Chamada de vídeo de %(name)s recebida", - "Active call (%(roomName)s)": "Chamada ativa (%(roomName)s)", "Error: Problem communicating with the given homeserver.": "Erro: problema de comunicação com o Servidor de Base fornecido.", "Failed to upload profile picture!": "Falha ao enviar a imagem de perfil!", "Room directory": "Lista de salas", "Failed to fetch avatar URL": "Falha ao obter a URL da imagem de perfil", - "Incoming call from %(name)s": "Chamada de %(name)s recebida", "Last seen": "Último uso", "Drop File Here": "Arraste o arquivo aqui", "Seen by %(userName)s at %(dateTime)s": "Visto por %(userName)s em %(dateTime)s", "%(roomName)s does not exist.": "%(roomName)s não existe.", "Username not available": "Nome de usuária(o) indisponível", "(~%(count)s results)|other": "(~%(count)s resultados)", - "unknown caller": "a pessoa que está chamando é desconhecida", "Start authentication": "Iniciar autenticação", "(~%(count)s results)|one": "(~%(count)s resultado)", "New Password": "Nova senha", "Username invalid: %(errMessage)s": "Nome de usuária(o) inválido: %(errMessage)s", - "Incoming voice call from %(name)s": "Chamada de voz de %(name)s recebida", "If you already have a Matrix account you can log in instead.": "Se você já tem uma conta Matrix, pode também fazer login.", "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Não foi possível conectar ao Servidor de Base. Por favor, confira sua conectividade à internet, garanta que o certificado SSL do Servidor de Base é confiável, e que uma extensão do navegador não esteja bloqueando as requisições de rede.", "Join as voice or video.": "Participar por voz ou por vídeo.", diff --git a/src/i18n/strings/pt_BR.json b/src/i18n/strings/pt_BR.json index 4ed4ca1175..dd686edf56 100644 --- a/src/i18n/strings/pt_BR.json +++ b/src/i18n/strings/pt_BR.json @@ -99,7 +99,6 @@ "Who can access this room?": "Quem pode acessar esta sala?", "Who can read history?": "Quem pode ler o histórico da sala?", "You do not have permission to post to this room": "Você não tem permissão de postar nesta sala", - "You have no visible notifications": "Voce não possui notificações visíveis", "Sun": "Dom", "Mon": "Seg", "Tue": "Ter", @@ -186,7 +185,6 @@ "Upload an avatar:": "Enviar uma foto de perfil:", "This server does not support authentication with a phone number.": "Este servidor não permite a autenticação através de números de telefone.", "An error occurred: %(error_string)s": "Um erro ocorreu: %(error_string)s", - "There are no visible files in this room": "Não há arquivos públicos nesta sala", "Connectivity to the server has been lost.": "A conexão com o servidor foi perdida. Verifique sua conexão de internet.", "Sent messages will be stored until your connection has returned.": "Imagens enviadas ficarão armazenadas até que sua conexão seja reestabelecida.", "Active call": "Chamada em andamento", @@ -349,7 +347,6 @@ "This will be your account name on the homeserver, or you can pick a different server.": "Esse será o nome da sua conta no servidor principal, ou então você pode escolher um servidor diferente.", "If you already have a Matrix account you can log in instead.": "Se você já tem uma conta Matrix, pode também fazer login.", "Accept": "Aceitar", - "Active call (%(roomName)s)": "Chamada ativa (%(roomName)s)", "Admin Tools": "Ferramentas de administração", "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Não foi possível conectar ao Servidor de Base. Por favor, confira sua conectividade à internet, garanta que o certificado SSL do Servidor de Base é confiável, e que uma extensão do navegador não esteja bloqueando as requisições de rede.", "Close": "Fechar", @@ -357,9 +354,6 @@ "Decline": "Recusar", "Drop File Here": "Arraste o arquivo aqui", "Failed to upload profile picture!": "Falha ao enviar a foto de perfil!", - "Incoming call from %(name)s": "Recebendo chamada de %(name)s", - "Incoming video call from %(name)s": "Recebendo chamada de vídeo de %(name)s", - "Incoming voice call from %(name)s": "Recebendo chamada de voz de %(name)s", "Join as voice or video.": "Participar por voz ou por vídeo.", "Last seen": "Visto por último às", "No display name": "Nenhum nome e sobrenome", @@ -370,7 +364,6 @@ "Seen by %(userName)s at %(dateTime)s": "Lida por %(userName)s em %(dateTime)s", "Start authentication": "Iniciar autenticação", "This room": "Esta sala", - "unknown caller": "a pessoa que está chamando é desconhecida", "Unnamed Room": "Sala sem nome", "Upload new:": "Enviar novo:", "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (nível de permissão %(powerLevelNumber)s)", @@ -469,7 +462,6 @@ "Unnamed room": "Sala sem nome", "World readable": "Aberto publicamente à leitura", "Guests can join": "Convidadas/os podem entrar", - "Community Invites": "Convites a comunidades", "Banned by %(displayName)s": "Banido por %(displayName)s", "Publish this room to the public in %(domain)s's room directory?": "Quer publicar esta sala na lista pública de salas em %(domain)s's?", "Members only (since the point in time of selecting this option)": "Apenas integrantes (a partir do momento em que esta opção for selecionada)", @@ -900,7 +892,6 @@ "Share Community": "Compartilhar Comunidade", "Share Room Message": "Compartilhar Mensagem da Sala", "Link to selected message": "Link para a mensagem selecionada", - "COPY": "COPIAR", "Unable to load backup status": "Não é possível carregar o status do backup", "Unable to restore backup": "Não é possível restaurar o backup", "No backup found!": "Nenhum backup encontrado!", @@ -1006,75 +997,12 @@ "Secure messages with this user are end-to-end encrypted and not able to be read by third parties.": "As mensagens com este usuário estão protegidas com a criptografia de ponta a ponta e não podem ser lidas por terceiros.", "Got It": "Ok, entendi", "Unable to find a supported verification method.": "Não é possível encontrar um método de confirmação suportado.", - "Dog": "Cachorro", - "Cat": "Gato", - "Lion": "Leão", - "Horse": "Cavalo", - "Unicorn": "Unicórnio", - "Pig": "Porco", - "Elephant": "Elefante", - "Rabbit": "Coelho", - "Panda": "Panda", - "Rooster": "Galo", - "Penguin": "Pinguim", - "Turtle": "Tartaruga", - "Fish": "Peixe", - "Octopus": "Polvo", - "Butterfly": "Borboleta", - "Flower": "Flor", - "Tree": "Árvore", - "Cactus": "Cacto", - "Mushroom": "Cogumelo", - "Globe": "Globo", - "Moon": "Lua", - "Cloud": "Nuvem", - "Fire": "Fogo", - "Banana": "Banana", - "Apple": "Maçã", - "Strawberry": "Morango", - "Corn": "Milho", - "Pizza": "Pizza", - "Cake": "Bolo", - "Heart": "Coração", - "Smiley": "Sorriso", - "Robot": "Robô", - "Hat": "Chapéu", - "Glasses": "Óculos", - "Spanner": "Chave inglesa", - "Santa": "Papai-noel", "Prepends ¯\\_(ツ)_/¯ to a plain-text message": "Adiciona ¯ \\ _ (ツ) _ / ¯ no início de uma mensagem de texto simples", "User %(userId)s is already in the room": "O usuário %(userId)s já está na sala", "The user must be unbanned before they can be invited.": "O banimento do usuário precisa ser removido antes de ser convidado.", "Show display name changes": "Mostrar alterações de nome e sobrenome", "Verify this user by confirming the following emoji appear on their screen.": "Verifique este usuário confirmando os emojis a seguir exibidos na tela dele.", "Verify this user by confirming the following number appears on their screen.": "Confirme este usuário confirmando se o número a seguir aparece na tela dele.", - "Thumbs up": "Joinha", - "Umbrella": "Guarda-chuva", - "Hourglass": "Ampulheta", - "Clock": "Relógio", - "Gift": "Presente", - "Light bulb": "Lâmpada", - "Book": "Livro", - "Pencil": "Lápis", - "Paperclip": "Clipe de papel", - "Scissors": "Tesoura", - "Key": "Chave", - "Hammer": "Martelo", - "Telephone": "Telefone", - "Flag": "Bandeira", - "Train": "Trem", - "Bicycle": "Bicicleta", - "Aeroplane": "Avião", - "Rocket": "Foguete", - "Trophy": "Troféu", - "Ball": "Bola", - "Guitar": "Guitarra", - "Trumpet": "Trombeta", - "Bell": "Sino", - "Anchor": "Âncora", - "Headphones": "Fones de ouvido", - "Folder": "Pasta", - "Pin": "Alfinete", "Yes": "Sim", "No": "Não", "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.": "Enviamos um e-mail para você confirmar seu endereço. Por favor, siga as instruções e clique no botão abaixo.", @@ -1169,10 +1097,6 @@ "Only continue if you trust the owner of the server.": "Continue apenas se você confia em quem possui este servidor.", "Trust": "Confiança", "%(name)s is requesting verification": "%(name)s está solicitando verificação", - "Use your account to sign in to the latest version": "Use sua conta para logar na última versão", - "We’re excited to announce Riot is now Element": "Estamos muito felizes em anunciar que Riot agora é Element", - "Riot is now Element!": "Riot agora é Element!", - "Learn More": "Saiba mais", "Sign In or Create Account": "Faça login ou crie uma conta", "Use your account or create a new one to continue.": "Use sua conta ou crie uma nova para continuar.", "Create Account": "Criar conta", @@ -1373,7 +1297,6 @@ "They match": "São coincidentes", "They don't match": "Elas não são correspondentes", "To be secure, do this in person or use a trusted way to communicate.": "Para sua segurança, faça isso pessoalmente ou use uma forma confiável de comunicação.", - "Lock": "Cadeado", "From %(deviceName)s (%(deviceId)s)": "De %(deviceName)s (%(deviceId)s)", "Decline (%(counter)s)": "Recusar (%(counter)s)", "Accept to continue:": "Aceitar para continuar:", @@ -1477,7 +1400,6 @@ "Encrypted by a deleted session": "Criptografada por uma sessão já apagada", "The authenticity of this encrypted message can't be guaranteed on this device.": "A autenticidade desta mensagem criptografada não pode ser garantida neste aparelho.", "People": "Pessoas", - "Create room": "Criar sala", "Start chatting": "Começar a conversa", "Try again later, or ask a room admin to check if you have access.": "Tente novamente mais tarde, ou peça a um(a) administrador(a) da sala para verificar se você tem acesso.", "Never lose encrypted messages": "Nunca perca mensagens criptografadas", @@ -1533,10 +1455,6 @@ "Verify session": "Verificar sessão", "We recommend you change your password and recovery key in Settings immediately": "Nós recomendamos que você altere imediatamente sua senha e chave de recuperação nas Configurações", "Use this session to verify your new one, granting it access to encrypted messages:": "Use esta sessão para verificar a sua nova sessão, dando a ela acesso às mensagens criptografadas:", - "You’re already signed in and good to go here, but you can also grab the latest versions of the app on all platforms at element.io/get-started.": "Você já está logada(o) e pode começar a usar à vontade, mas você também pode buscar pelas últimas versões do app em todas as plataformas em element.io/get-started.", - "Go to Element": "Ir a Element", - "We’re excited to announce Riot is now Element!": "Estamos muito felizes de anunciar que agora Riot é Element!", - "Learn more at element.io/previously-riot": "Saiba mais em element.io/previously-riot", "To help avoid duplicate issues, please view existing issues first (and add a +1) or create a new issue if you can't find it.": "Para evitar a duplicação de registro de problemas, por favor veja os problemas existentes antes e adicione um +1, ou então crie um novo item se seu problema ainda não foi reportado.", "Reporting this message will send its unique 'event ID' to the administrator of your homeserver. If messages in this room are encrypted, your homeserver administrator will not be able to read the message text or view any files or images.": "Reportar esta mensagem enviará o seu 'event ID' único para o/a administrador/a do seu Homeserver. Se as mensagens nesta sala são criptografadas, o/a administrador/a não conseguirá ler o texto da mensagem nem ver nenhuma imagem ou arquivo.", "Sign out and remove encryption keys?": "Fazer logout e remover as chaves de criptografia?", @@ -2045,7 +1963,6 @@ "Recent Conversations": "Conversas recentes", "Suggestions": "Sugestões", "Invite someone using their name, username (like ), email address or share this room.": "Convide alguém buscando o seu respectivo nome e sobrenome, nome de usuário (por exemplo: ), endereço de e-mail ou compartilhe esta sala.", - "Use your account to sign in to the latest version of the app at ": "Use sua conta para fazer login na versão mais recente do aplicativo em ", "Report bugs & give feedback": "Relatar erros & enviar comentários", "Room Settings - %(roomName)s": "Configurações da sala - %(roomName)s", "Automatically invite users": "Convidar usuários automaticamente", diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index ed685cc6ce..76ae54d8c7 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -77,7 +77,6 @@ "Who can access this room?": "Кто может войти в эту комнату?", "Who can read history?": "Кто может читать историю?", "You do not have permission to post to this room": "Вы не можете писать в эту комнату", - "You have no visible notifications": "Нет видимых уведомлений", "%(targetName)s accepted an invitation.": "%(targetName)s принял приглашение.", "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s принял приглашение от %(displayName)s.", "Active call": "Активный вызов", @@ -110,7 +109,6 @@ "(not supported by this browser)": "(не поддерживается этим браузером)", "Connectivity to the server has been lost.": "Связь с сервером потеряна.", "Sent messages will be stored until your connection has returned.": "Отправленные сообщения будут сохранены, пока соединение не восстановится.", - "There are no visible files in this room": "В этой комнате нет видимых файлов", "Set a display name:": "Введите отображаемое имя:", "This server does not support authentication with a phone number.": "Этот сервер не поддерживает аутентификацию по номеру телефона.", "An error occurred: %(error_string)s": "Произошла ошибка: %(error_string)s", @@ -349,14 +347,10 @@ "If you already have a Matrix account you can log in instead.": "Если у вас уже есть учётная запись Matrix, вы можете войти.", "Home": "Home", "Accept": "Принять", - "Active call (%(roomName)s)": "Текущий вызов (%(roomName)s)", "Admin Tools": "Инструменты администратора", "Close": "Закрыть", "Drop File Here": "Перетащите файл сюда", "Failed to upload profile picture!": "Не удалось загрузить аватар!", - "Incoming call from %(name)s": "Входящий вызов от %(name)s", - "Incoming video call from %(name)s": "Входящий видеовызов от %(name)s", - "Incoming voice call from %(name)s": "Входящий голосовой вызов от %(name)s", "Join as voice or video.": "Присоединиться с голосом или с видео.", "Last seen": "Последний вход", "No display name": "Нет отображаемого имени", @@ -370,7 +364,6 @@ "%(roomName)s does not exist.": "%(roomName)s не существует.", "%(roomName)s is not accessible at this time.": "%(roomName)s на данный момент недоступна.", "Seen by %(userName)s at %(dateTime)s": "Прочитано %(userName)s в %(dateTime)s", - "unknown caller": "неизвестный абонент", "Unnamed Room": "Комната без названия", "Upload new:": "Загрузить новый:", "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (уровень прав %(powerLevelNumber)s)", @@ -567,7 +560,6 @@ "%(items)s and %(count)s others|one": "%(items)s и еще кто-то", "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Сообщение отправлено на %(emailAddress)s. После перехода по ссылке в отправленном вам письме, щелкните ниже.", "Room Notification": "Уведомления комнаты", - "Community Invites": "Приглашения в сообщества", "Notify the whole room": "Уведомить всю комнату", "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Эти комнаты отображаются для участников сообщества на странице сообщества. Участники сообщества могут присоединиться к комнатам, щелкнув на них.", "Show these rooms to non-members on the community page and room list?": "Следует ли показывать эти комнаты посторонним на странице сообщества и в списке комнат?", @@ -818,7 +810,6 @@ "Share User": "Поделиться пользователем", "Share Community": "Поделиться сообществом", "Link to selected message": "Ссылка на выбранное сообщение", - "COPY": "КОПИРОВАТЬ", "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "В зашифрованных комнатах, подобных этой, предварительный просмотр URL-адресов отключен по умолчанию, чтобы гарантировать, что ваш сервер (где создаются предварительные просмотры) не может собирать информацию о ссылках, которые вы видите в этой комнате.", "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "Когда кто-то вставляет URL-адрес в свое сообщение, то можно просмотреть его, чтобы получить дополнительную информацию об этой ссылке, такую как название, описание и изображение с веб-сайта.", "The email field must not be blank.": "Поле email не должно быть пустым.", @@ -1001,7 +992,6 @@ "Not sure of your password? Set a new one": "Не помните пароль? Установите новый", "The username field must not be blank.": "Имя пользователя не должно быть пустым.", "Server Name": "Название сервера", - "Your Modular server": "Ваш Модульный сервер", "Email (optional)": "Адрес электронной почты (не обязательно)", "Phone (optional)": "Телефон (не обязательно)", "Confirm": "Подтвердить", @@ -1022,68 +1012,6 @@ "Save it on a USB key or backup drive": "Сохраните на USB-диске или на резервном диске", "This room has no topic.": "У этой комнаты нет темы.", "Group & filter rooms by custom tags (refresh to apply changes)": "Группировать и фильтровать комнаты по пользовательским тэгам (обновите для применения изменений)", - "Dog": "Собака", - "Cat": "Кошка", - "Lion": "Лев", - "Horse": "Конь", - "Unicorn": "Единорог", - "Pig": "Поросёнок", - "Elephant": "Слон", - "Rabbit": "Кролик", - "Panda": "Панда", - "Rooster": "Петух", - "Penguin": "Пингвин", - "Fish": "Рыба", - "Turtle": "Черепаха", - "Octopus": "Осьминог", - "Butterfly": "Бабочка", - "Flower": "Цветок", - "Tree": "Дерево", - "Cactus": "Кактус", - "Mushroom": "Гриб", - "Globe": "Земля", - "Moon": "Луна", - "Cloud": "Облако", - "Fire": "Огонь", - "Banana": "Банан", - "Apple": "Яблоко", - "Strawberry": "Клубника", - "Corn": "Кукуруза", - "Pizza": "Пицца", - "Cake": "Кекс", - "Heart": "Сердце", - "Smiley": "Смайлик", - "Robot": "Робот", - "Hat": "Шляпа", - "Glasses": "Очки", - "Spanner": "Гаечный ключ", - "Santa": "Санта", - "Thumbs up": "Большой палец вверх", - "Umbrella": "Зонтик", - "Hourglass": "Песочные часы", - "Clock": "Часы", - "Gift": "Подарок", - "Light bulb": "Лампочка", - "Book": "Книга", - "Pencil": "Карандаш", - "Paperclip": "Скрепка для бумаг", - "Key": "Ключ", - "Hammer": "Молоток", - "Telephone": "Телефон", - "Flag": "Флаг", - "Train": "Поезда", - "Bicycle": "Велосипед", - "Aeroplane": "Самолёт", - "Rocket": "Ракета", - "Trophy": "Трофей", - "Ball": "Мяч", - "Guitar": "Гитара", - "Trumpet": "Труба", - "Bell": "Колокол", - "Anchor": "Якорь", - "Headphones": "Наушники", - "Folder": "Папка", - "Pin": "Кнопка", "Your keys are being backed up (the first backup could take a few minutes).": "Выполняется резервная копия ключей (первый раз это может занять несколько минут).", "The file '%(fileName)s' exceeds this homeserver's size limit for uploads": "Размер файла '%(fileName)s' превышает допустимый размер для этого сервера", "Prepends ¯\\_(ツ)_/¯ to a plain-text message": "Добавляет смайл ¯\\_(ツ)_/¯ в начало сообщения", @@ -1100,7 +1028,6 @@ "Allow Peer-to-Peer for 1:1 calls": "Разрешить прямое соединение (p2p) для прямых звонков (один на один)", "Verify this user by confirming the following emoji appear on their screen.": "Проверьте собеседника, убедившись, что на его экране отображаются следующие символы (смайлы).", "Unable to find a supported verification method.": "Невозможно определить поддерживаемый метод верификации.", - "Scissors": "Ножницы", "Secure messages with this user are end-to-end encrypted and not able to be read by third parties.": "Защищённые сообщения с этим пользователем зашифрованы сквозным шифрованием и недоступны третьим лицам.", "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.": "Мы отправили вам сообщение для подтверждения адреса электронной почты. Пожалуйста, следуйте указаниям в сообщении, после чего нажмите кнопку ниже.", "Are you sure? You will lose your encrypted messages if your keys are not backed up properly.": "Вы уверены? Зашифрованные сообщения будут безвозвратно утеряны при отсутствии соответствующего резервного копирования ваших ключей.", @@ -1280,7 +1207,6 @@ "Please review and accept all of the homeserver's policies": "Пожалуйста, просмотрите и примите все правила сервера", "Please review and accept the policies of this homeserver:": "Пожалуйста, просмотрите и примите политику этого сервера:", "Unable to validate homeserver/identity server": "Невозможно проверить сервер/сервер идентификации", - "Enter the location of your Modular homeserver. It may use your own domain name or be a subdomain of modular.im.": "Введите местоположение вашего Modula homeserver. Он может использовать ваше собственное доменное имя или быть поддоменом modular.im.", "Sign in to your Matrix account on %(serverName)s": "Вход в учётную запись Matrix на сервере %(serverName)s", "Sign in to your Matrix account on ": "Вход в учётную запись Matrix на сервере ", "Change": "Изменить", @@ -1314,7 +1240,6 @@ "You have %(count)s unread notifications in a prior version of this room.|other": "У вас есть %(count)s непрочитанных уведомлений в предыдущей версии этой комнаты.", "You have %(count)s unread notifications in a prior version of this room.|one": "В предыдущей версии этой комнаты у вас есть непрочитанное уведомление %(count)s.", "Guest": "Гость", - "Your profile": "Ваш профиль", "Could not load user profile": "Не удалось загрузить профиль пользователя", "Your Matrix account on %(serverName)s": "Ваша учётная запись Matrix на сервере %(serverName)s", "Your Matrix account on ": "Ваша учётная запись Matrix на сервере ", @@ -1438,9 +1363,6 @@ "Add Phone Number": "Добавить номер телефона", "Changes the avatar of the current room": "Меняет аватарку текущей комнаты", "Change identity server": "Изменить сервер идентификации", - "Explore": "Обзор", - "Filter": "Поиск", - "Filter rooms…": "Поиск комнат…", "If you can't find the room you're looking for, ask for an invite or Create a new room.": "Если не удаётся найти комнату, то можно запросить приглашение или Создать новую комнату.", "Create a public room": "Создать публичную комнату", "Create a private room": "Создать приватную комнату", @@ -1508,7 +1430,6 @@ "Strikethrough": "Перечёркнутый", "Code block": "Блок кода", "%(count)s unread messages.|other": "%(count)s непрочитанные сообщения.", - "Unread mentions.": "Непрочитанные упоминания.", "Show image": "Показать изображение", "e.g. my-room": "например, моя-комната", "Close dialog": "Закрыть диалог", @@ -1571,7 +1492,6 @@ "React": "Реакция", "Cancel search": "Отменить поиск", "Room %(name)s": "Комната %(name)s", - "Recent rooms": "Недавние комнаты", "No identity server is configured so you cannot add an email address in order to reset your password in the future.": "Сервер идентификации не настроен, поэтому вы не можете добавить адрес электронной почты, чтобы в будущем сбросить пароль.", "Jump to first unread room.": "Перейти в первую непрочитанную комнату.", "Jump to first invite.": "Перейти к первому приглашению.", @@ -1604,7 +1524,6 @@ "Hide sessions": "Скрыть сессии", "Enable 'Manage Integrations' in Settings to do this.": "Включите «Управление интеграциями» в настройках, чтобы сделать это.", "Help": "Помощь", - "If you cancel now, you won't complete verifying your other session.": "Если вы отмените сейчас, вы не завершите проверку вашей другой сессии.", "Verify this session": "Проверьте эту сессию", "Verifies a user, session, and pubkey tuple": "Проверяет пользователя, сессию и публичные ключи", "Unknown (user, session) pair:": "Неизвестная пара (пользователь, сессия):", @@ -1616,7 +1535,6 @@ "Subscribed lists": "Подписанные списки", "Subscribe": "Подписаться", "A session's public name is visible to people you communicate with": "Ваши собеседники видят публичные имена сессий", - "If you cancel now, you won't complete verifying the other user.": "Если вы сейчас отмените, у вас не будет завершена проверка других пользователей.", "Cancel entering passphrase?": "Отмена ввода пароль?", "Setting up keys": "Настройка ключей", "Encryption upgrade available": "Доступно обновление шифрования", @@ -1660,7 +1578,6 @@ "They match": "Они совпадают", "They don't match": "Они не совпадают", "To be secure, do this in person or use a trusted way to communicate.": "Чтобы быть в безопасности, делайте это лично или используйте надежный способ связи.", - "Lock": "Заблокировать", "Verify yourself & others to keep your chats safe": "Подтвердите себя и других для безопасности ваших бесед", "Other users may not trust it": "Другие пользователи могут не доверять этому", "Upgrade": "Обновление", @@ -1831,7 +1748,6 @@ "Encrypted by an unverified session": "Зашифровано неподтверждённой сессией", "Unencrypted": "Не зашифровано", "Encrypted by a deleted session": "Зашифровано удалённой сессией", - "Invite only": "Только по приглашениям", "Scroll to most recent messages": "Перейти к последним сообщениям", "Close preview": "Закрыть предпросмотр", "Send a reply…": "Отправить ответ…", @@ -1955,7 +1871,6 @@ "Enter a recovery passphrase": "Введите пароль восстановления", "Enter your recovery passphrase a second time to confirm it.": "Введите пароль восстановления ещё раз для подтверждения.", "Please enter your recovery passphrase a second time to confirm.": "Введите пароль восстановления повторно для подтверждения.", - "If you cancel now, you won't complete your operation.": "Если вы отмените операцию сейчас, она не завершится.", "Failed to set topic": "Не удалось установить тему", "Could not find user in room": "Не удалось найти пользователя в комнате", "Please supply a widget URL or embed code": "Укажите URL или код вставки виджета", @@ -1994,10 +1909,6 @@ "Signature upload failed": "Сбой отправки отпечатка", "Room name or address": "Имя или адрес комнаты", "Unrecognised room address:": "Не удалось найти адрес комнаты:", - "Use your account to sign in to the latest version": "Используйте свой аккаунт для входа в последнюю версию", - "We’re excited to announce Riot is now Element": "Мы рады объявить, что Riot теперь Element", - "Riot is now Element!": "Riot теперь Element!", - "Learn More": "Узнать больше", "Joins room with given address": "Присоединиться к комнате с указанным адресом", "Opens chat with the given user": "Открыть чат с данным пользователем", "Sends a message to the given user": "Отправить сообщение данному пользователю", @@ -2031,39 +1942,6 @@ "%(senderName)s started a call": "%(senderName)s начал(а) звонок", "Waiting for answer": "Ждём ответа", "%(senderName)s is calling": "%(senderName)s звонит", - "You created the room": "Вы создали комнату", - "%(senderName)s created the room": "%(senderName)s создал(а) комнату", - "You made the chat encrypted": "Вы включили шифрование в комнате", - "%(senderName)s made the chat encrypted": "%(senderName)s включил(а) шифрование в комнате", - "You made history visible to new members": "Вы сделали историю видимой для новых участников", - "%(senderName)s made history visible to new members": "%(senderName)s сделал(а) историю видимой для новых участников", - "You made history visible to anyone": "Вы сделали историю видимой для всех", - "%(senderName)s made history visible to anyone": "%(senderName)s сделал(а) историю видимой для всех", - "You made history visible to future members": "Вы сделали историю видимой для будущих участников", - "%(senderName)s made history visible to future members": "%(senderName)s сделал(а) историю видимой для будущих участников", - "You were invited": "Вы были приглашены", - "%(targetName)s was invited": "%(targetName)s был(а) приглашен(а)", - "You left": "Вы покинули комнату", - "%(targetName)s left": "%(targetName)s покинул комнату", - "You were kicked (%(reason)s)": "Вас исключили из комнаты (%(reason)s)", - "%(targetName)s was kicked (%(reason)s)": "%(targetName)s был(а) исключен(а) из комнаты (%(reason)s)", - "You were kicked": "Вас исключили из комнаты", - "%(targetName)s was kicked": "%(targetName)s был(а) исключен(а) из комнаты", - "You rejected the invite": "Вы отклонили приглашение", - "%(targetName)s rejected the invite": "%(targetName)s отклонил(а) приглашение", - "You were uninvited": "Вам отменили приглашение", - "%(targetName)s was uninvited": "Приглашение для %(targetName)s отменено", - "You were banned (%(reason)s)": "Вас забанили (%(reason)s)", - "%(targetName)s was banned (%(reason)s)": "%(targetName)s был(а) исключен(а) из комнаты (%(reason)s)", - "You were banned": "Вас заблокировали", - "%(targetName)s was banned": "%(targetName)s был(а) забанен(а)", - "You joined": "Вы вошли", - "%(targetName)s joined": "%(targetName)s присоединился(ась)", - "You changed your name": "Вы поменяли своё имя", - "%(targetName)s changed their name": "%(targetName)s поменял(а) своё имя", - "You changed your avatar": "Вы поменяли свой аватар", - "%(targetName)s changed their avatar": "%(targetName)s поменял(а) свой аватар", - "You changed the room name": "Вы поменяли имя комнаты", "Enable experimental, compact IRC style layout": "Включите экспериментальный, компактный стиль IRC", "Unknown caller": "Неизвестный абонент", "Incoming call": "Входящий звонок", @@ -2087,17 +1965,9 @@ "Remove for me": "Убрать для меня", "User Status": "Статус пользователя", "Country Dropdown": "Выпадающий список стран", - "%(senderName)s %(emote)s": "%(senderName)s %(emote)s", "%(senderName)s: %(message)s": "%(senderName)s: %(message)s", - "%(senderName)s changed the room name": "%(senderName)s изменил(а) название комнаты", "%(senderName)s: %(reaction)s": "%(senderName)s: %(reaction)s", "%(senderName)s: %(stickerName)s": "%(senderName)s: %(stickerName)s", - "You uninvited %(targetName)s": "Вы отозвали приглашение %(targetName)s", - "%(senderName)s uninvited %(targetName)s": "%(senderName)s отозвал(а) приглашение %(targetName)s", - "You invited %(targetName)s": "Вы пригласили %(targetName)s", - "%(senderName)s invited %(targetName)s": "%(senderName)s пригласил(а) %(targetName)s", - "You changed the room topic": "Вы изменили тему комнаты", - "%(senderName)s changed the room topic": "%(senderName)s изменил(а) тему комнаты", "Enable advanced debugging for the room list": "Разрешить расширенную отладку списка комнат", "Font size": "Размер шрифта", "Use custom size": "Использовать другой размер", @@ -2108,15 +1978,12 @@ "Incoming video call": "Входящий видеозвонок", "Please verify the room ID or address and try again.": "Проверьте ID комнаты или адрес и попробуйте снова.", "Your server admin has disabled end-to-end encryption by default in private rooms & Direct Messages.": "Администратор вашего сервера отключил сквозное шифрование по умолчанию в приватных комнатах и диалогах.", - "Make this room low priority": "Сделать эту комнату маловажной", - "Low priority rooms show up at the bottom of your room list in a dedicated section at the bottom of your room list": "Маловажные комнаты отображаются в конце списка в отдельной секции", "People": "Люди", "%(networkName)s rooms": "Комнаты %(networkName)s", "Explore Public Rooms": "Просмотреть публичные комнаты", "Search rooms": "Поиск комнат", "Where you’re logged in": "Где вы вошли", "Manage the names of and sign out of your sessions below or verify them in your User Profile.": "Ниже вы можете изменить названия сессий или выйти из них, либо подтвердите их в своём профиле.", - "Create room": "Создать комнату", "Custom Tag": "Пользовательский тег", "Appearance": "Внешний вид", "Show rooms with unread messages first": "Комнаты с непрочитанными сообщениями в начале", @@ -2234,11 +2101,6 @@ "Use this session to verify your new one, granting it access to encrypted messages:": "Используйте эту сессию для проверки новой сессии, чтобы предоставить ей доступ к зашифрованным сообщениям:", "If you didn’t sign in to this session, your account may be compromised.": "Если вы не входили в эту сессию, ваша учетная запись может быть скомпрометирована.", "This wasn't me": "Это был не я", - "Use your account to sign in to the latest version of the app at ": "Используйте свою учетную запись для входа в последнюю версию приложения по адресу ", - "You’re already signed in and good to go here, but you can also grab the latest versions of the app on all platforms at element.io/get-started.": "Вы уже вошли в систему и можете остаться здесь, но вы также можете получить последние версии приложения на всех платформах по адресу element.io/get-started.", - "Go to Element": "Перейти к Element", - "We’re excited to announce Riot is now Element!": "Мы рады сообщить, что Riot теперь стал Element!", - "Learn more at element.io/previously-riot": "Узнайте больше на сайте element.io/previously-riot", "Automatically invite users": "Автоматически приглашать пользователей", "Upgrade private room": "Модернизировать приватную комнату", "Upgrade public room": "Модернизировать публичную комнату", @@ -2304,7 +2166,6 @@ "%(brand)s Web": "Веб-версия %(brand)s", "%(brand)s Desktop": "Настольный клиент %(brand)s", "%(brand)s iOS": "iOS клиент %(brand)s", - "%(brand)s X for Android": "%(brand)s X для Android", "or another cross-signing capable Matrix client": "или другой, поддерживаемый кросс-подпись Matrix клиент", "Your new session is now verified. It has access to your encrypted messages, and other users will see it as trusted.": "Ваша новая сессия теперь подтверждена. У неё есть доступ к вашим зашифрованным сообщениям, и другие пользователи будут считать её доверенной.", "Your new session is now verified. Other users will see it as trusted.": "Ваша новая сессия теперь проверена. Другие пользователи будут считать её доверенной.", diff --git a/src/i18n/strings/sk.json b/src/i18n/strings/sk.json index 667768fd57..830352458d 100644 --- a/src/i18n/strings/sk.json +++ b/src/i18n/strings/sk.json @@ -128,11 +128,6 @@ "Not a valid %(brand)s keyfile": "Toto nie je správny súbor s kľúčami %(brand)s", "Authentication check failed: incorrect password?": "Kontrola overenia zlyhala: Nesprávne heslo?", "Failed to join room": "Nepodarilo sa vstúpiť do miestnosti", - "Active call (%(roomName)s)": "Aktívny hovor (%(roomName)s)", - "unknown caller": "neznámeho volajúceho", - "Incoming voice call from %(name)s": "Prichádzajúci audio hovor od %(name)s", - "Incoming video call from %(name)s": "Prichádzajúci video hovor od %(name)s", - "Incoming call from %(name)s": "Prichádzajúci hovor od %(name)s", "Decline": "Odmietnuť", "Accept": "Prijať", "Error": "Chyba", @@ -227,7 +222,6 @@ "Settings": "Nastavenia", "Forget room": "Zabudnúť miestnosť", "Search": "Hľadať", - "Community Invites": "Pozvánky do komunity", "Invites": "Pozvánky", "Favourites": "Obľúbené", "Rooms": "Miestnosti", @@ -429,7 +423,6 @@ "Name": "Názov", "You must register to use this functionality": "Aby ste mohli použiť túto vlastnosť, musíte byť zaregistrovaný", "You must join the room to see its files": "Aby ste si mohli zobraziť zoznam súborov, musíte vstúpiť do miestnosti", - "There are no visible files in this room": "V tejto miestnosti nie sú žiadne viditeľné súbory", "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

HTML kód hlavnej stránky komunity

\n

\n Dlhý popis môžete použiť na predstavenie komunity novým členom, alebo uvedenie \n dôležitých odkazov\n

\n

\n Môžete tiež používať HTML značku 'img'\n

\n", "Add rooms to the community summary": "Pridať miestnosti do prehľadu komunity", "Which rooms would you like to add to this summary?": "Ktoré miestnosti si želáte pridať do tohoto prehľadu?", @@ -477,7 +470,6 @@ "Error whilst fetching joined communities": "Pri získavaní vašich komunít sa vyskytla chyba", "Create a new community": "Vytvoriť novú komunitu", "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Vytvorte si komunitu s cieľom zoskupiť miestnosti a používateľov! Zostavte si vlastnú domovskú stránku a vymedzte tak svoj priestor vo svete Matrix.", - "You have no visible notifications": "Nie sú k dispozícii žiadne oznámenia", "Connectivity to the server has been lost.": "Spojenie so serverom bolo prerušené.", "Sent messages will be stored until your connection has returned.": "Odoslané správy ostanú uložené, kým sa spojenie nenadviaže znovu.", "Active call": "Aktívny hovor", @@ -811,7 +803,6 @@ "Share User": "Zdieľať používateľa", "Share Community": "Zdieľať komunitu", "Link to selected message": "Odkaz na vybratú správu", - "COPY": "Kopírovať", "Share Message": "Zdieľať správu", "No Audio Outputs detected": "Neboli rozpoznané žiadne zariadenia pre výstup zvuku", "Audio Output": "Výstup zvuku", @@ -1009,69 +1000,6 @@ "Verify this user by confirming the following emoji appear on their screen.": "Overte tohto používateľa tak, že zistíte, či sa na jeho obrazovke objavia nasledujúce emoji.", "Verify this user by confirming the following number appears on their screen.": "Overte tohoto používateľa tým, že zistíte, či sa na jeho obrazovke objaví nasledujúce číslo.", "Unable to find a supported verification method.": "Nie je možné nájsť podporovanú metódu overenia.", - "Dog": "Hlava psa", - "Cat": "Hlava mačky", - "Lion": "Hlava leva", - "Horse": "Kôň", - "Unicorn": "Hlava jednorožca", - "Pig": "Hlava Prasaťa", - "Elephant": "Slon", - "Rabbit": "Hlava Zajaca", - "Panda": "Hlava Pandy", - "Rooster": "Kohút", - "Penguin": "Tučniak", - "Turtle": "Korytnačka", - "Fish": "Ryba", - "Octopus": "Chobotnica", - "Butterfly": "Motýľ", - "Flower": "Tulipán", - "Tree": "Listnatý strom", - "Cactus": "Kaktus", - "Mushroom": "Huba", - "Globe": "Zemeguľa", - "Moon": "Polmesiac", - "Cloud": "Oblak", - "Fire": "Oheň", - "Banana": "Banán", - "Apple": "Červené jablko", - "Strawberry": "Jahoda", - "Corn": "Kukuričný klas", - "Pizza": "Pizza", - "Cake": "Narodeninová torta", - "Heart": "Červené srdce", - "Smiley": "Škeriaca sa tvár", - "Robot": "Robot", - "Hat": "Cylinder", - "Glasses": "Okuliare", - "Spanner": "Francúzsky kľúč", - "Santa": "Santa Claus", - "Thumbs up": "palec nahor", - "Umbrella": "Dáždnik", - "Hourglass": "Presýpacie hodiny", - "Clock": "Budík", - "Gift": "Zabalený darček", - "Light bulb": "Žiarovka", - "Book": "Zatvorená kniha", - "Pencil": "Ceruzka", - "Paperclip": "Sponka na papier", - "Scissors": "Nožnice", - "Key": "Kľúč", - "Hammer": "Kladivo", - "Telephone": "Telefón", - "Flag": "Kockovaná zástava", - "Train": "Rušeň", - "Bicycle": "Bicykel", - "Aeroplane": "Lietadlo", - "Rocket": "Raketa", - "Trophy": "Trofej", - "Ball": "Futbal", - "Guitar": "Gitara", - "Trumpet": "Trúbka", - "Bell": "Zvon", - "Anchor": "Kotva", - "Headphones": "Slúchadlá", - "Folder": "Fascikel", - "Pin": "Špendlík", "Yes": "Áno", "No": "Nie", "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.": "Poslali sme vám email, aby sme mohli overiť vašu adresu. Postupujte podľa odoslaných inštrukcií a potom klepnite na nižšie zobrazené tlačidlo.", @@ -1183,8 +1111,6 @@ "Set status": "Nastaviť stav", "Hide": "Skryť", "This homeserver would like to make sure you are not a robot.": "Tento domovský server by sa rád uistil, že nie ste robot.", - "Your Modular server": "Váš server Modular", - "Enter the location of your Modular homeserver. It may use your own domain name or be a subdomain of modular.im.": "Zadajte umiestnenie vášho domovského servera modular. Môže to byť buď vaša doména alebo subdoména modular.im.", "Server Name": "Názov servera", "The username field must not be blank.": "Pole meno používateľa nesmie ostať prázdne.", "Username": "Meno používateľa", @@ -1388,9 +1314,6 @@ "Whether you're using %(brand)s on a device where touch is the primary input mechanism": "Či používate %(brand)s na zariadení, ktorého hlavným vstupným mechanizmom je dotyk (mobil, tablet,...)", "Whether you're using %(brand)s as an installed Progressive Web App": "Či používate %(brand)s ako nainštalovanú Progresívnu Webovú Aplikáciu", "Your user agent": "Identifikátor vášho prehliadača", - "If you cancel now, you won't complete verifying the other user.": "Pokiaľ teraz proces zrušíte, nedokončíte overenie druhého používateľa.", - "If you cancel now, you won't complete verifying your other session.": "Pokiaľ teraz proces zrušíte, nedokončíte overenie vašej druhej relácie.", - "If you cancel now, you won't complete your operation.": "Pokiaľ teraz proces zrušíte, nedokončíte ho.", "Cancel entering passphrase?": "Zrušiť zadávanie (dlhého) hesla.", "Setting up keys": "Príprava kľúčov", "Verify this session": "Overiť túto reláciu", @@ -1473,7 +1396,6 @@ "Failed to re-authenticate due to a homeserver problem": "Opätovná autentifikácia zlyhala kvôli problému domovského servera", "Failed to re-authenticate": "Opätovná autentifikácia zlyhala", "Regain access to your account and recover encryption keys stored in this session. Without them, you won’t be able to read all of your secure messages in any session.": "Znovuzískajte prístup k vášmu účtu a obnovte šifrovacie kľúče uložené v tejto relácií. Bez nich nebudete môcť čítať všetky vaše šifrované správy vo všetkých reláciach.", - "Font scaling": "Škálovanie písma", "Show info about bridges in room settings": "Zobraziť informácie o mostoch v Nastaveniach miestnosti", "Font size": "Veľkosť písma", "Show typing notifications": "Posielať oznámenia, keď píšete", @@ -1517,7 +1439,6 @@ "They match": "Zhodujú sa", "They don't match": "Nezhodujú sa", "To be secure, do this in person or use a trusted way to communicate.": "Aby ste si boli istý, urobte to osobne alebo použite dôveryhodný spôsob komunikácie.", - "Lock": "Zámok", "If you can't scan the code above, verify by comparing unique emoji.": "Pokiaľ nemôžete kód vyššie skenovať, overte sa porovnaním jedinečnej kombinácie emoji.", "Verify by comparing unique emoji.": "Overenie porovnaním jedinečnej kombinácie emoji", "Verify by emoji": "Overte pomocou emoji", @@ -1596,10 +1517,6 @@ "Upgrade your %(brand)s": "Upgradujte svoj %(brand)s", "A new version of %(brand)s is available!": "Nová verzia %(brand)su je dostupná!", "Which officially provided instance you are using, if any": "Ktorú oficiálne poskytovanú inštanciu používate, pokiaľ nejakú", - "Use your account to sign in to the latest version": "Použite svoj účet na prihlásenie sa do najnovšej verzie", - "We’re excited to announce Riot is now Element": "Sme nadšený oznámiť, že Riot je odteraz Element", - "Riot is now Element!": "Riot je odteraz Element!", - "Learn More": "Dozvedieť sa viac", "Light": "Svetlý", "Dark": "Tmavý", "Ask your %(brand)s admin to check your config for incorrect or duplicate entries.": "Požiadajte správcu vášho %(brand)su, aby skontroloval vašu konfiguráciu. Pravdepodobne obsahuje chyby alebo duplikáty.", @@ -1613,52 +1530,10 @@ "%(senderName)s started a call": "%(senderName)s začal/a hovor", "Waiting for answer": "Čakám na odpoveď", "%(senderName)s is calling": "%(senderName)s volá", - "You created the room": "Vytvorili ste miestnosť", - "%(senderName)s created the room": "%(senderName)s vytvoril/a miestnosť", - "You made the chat encrypted": "Zašifrovali ste čet", - "%(senderName)s made the chat encrypted": "%(senderName)s zašifroval/a čet", - "You made history visible to new members": "Zviditeľnili ste históriu pre nových členov", - "%(senderName)s made history visible to new members": "%(senderName)s zviditeľnil/a históriu pre nových členov", - "You made history visible to anyone": "Zviditeľnili ste históriu pre všetkých", - "%(senderName)s made history visible to anyone": "%(senderName)s zviditeľnil/a históriu pre všetkých", - "You made history visible to future members": "Zviditeľnili ste históriu pre budúcich členov", - "%(senderName)s made history visible to future members": "%(senderName)s zviditeľnil/a históriu pre budúcich členov", - "You were invited": "Boli ste pozvaný/á", - "%(targetName)s was invited": "%(targetName)s vás pozval/a", - "You left": "Odišli ste", - "%(targetName)s left": "%(targetName)s odišiel/odišla", - "You were kicked (%(reason)s)": "Boli ste vykopnutý/á (%(reason)s)", - "%(targetName)s was kicked (%(reason)s)": "%(targetName)s bol vykopnutý/á (%(reason)s)", - "You were kicked": "Boli ste vykopnutý/á", - "%(targetName)s was kicked": "%(targetName)s bol vykopnutý/á", - "You rejected the invite": "Odmietli ste pozvánku", - "%(targetName)s rejected the invite": "%(targetName)s odmietol/odmietla pozvánku", - "You were uninvited": "Boli ste odpozvaný/á", - "%(targetName)s was uninvited": "%(targetName)s bol odpozvaný/á", - "You were banned (%(reason)s)": "Boli ste vyhostený/á (%(reason)s)", - "%(targetName)s was banned (%(reason)s)": "%(targetName)s bol vyhostený/á (%(reason)s)", - "You were banned": "Boli ste vyhostený/á", - "%(targetName)s was banned": "%(targetName)s bol vyhostený/á", - "You joined": "Pridali ste sa", - "%(targetName)s joined": "%(targetName)s sa pridal/a", - "You changed your name": "Zmenili ste vaše meno", - "%(targetName)s changed their name": "%(targetName)s zmenil/a svoje meno", - "You changed your avatar": "Zmenili ste svojho avatara", - "%(targetName)s changed their avatar": "%(targetName)s zmenil/a svojho avatara", - "%(senderName)s %(emote)s": "%(senderName)s %(emote)s", "%(senderName)s: %(message)s": "%(senderName)s: %(message)s", - "You changed the room name": "Zmenili ste meno miestnosti", - "%(senderName)s changed the room name": "%(senderName)s zmenil/a meno miestnosti", "%(senderName)s: %(reaction)s": "%(senderName)s: %(reaction)s", "%(senderName)s: %(stickerName)s": "%(senderName)s: %(stickerName)s", - "You uninvited %(targetName)s": "Odpozvali ste používateľa %(targetName)s", - "%(senderName)s uninvited %(targetName)s": "%(senderName)s odpozval/a používateľa %(targetName)s", - "You invited %(targetName)s": "Pozvali ste používateľa %(targetName)s", - "%(senderName)s invited %(targetName)s": "%(senderName)s pozval/a používateľa %(targetName)s", - "You changed the room topic": "Zmenili ste tému miestnosti", - "%(senderName)s changed the room topic": "%(senderName)s zmenil/a tému miestnosti", "New spinner design": "Nový točivý štýl", - "Use the improved room list (will refresh to apply changes)": "Použiť vylepšený list miestností (obnový stránku, aby sa aplikovali zmeny)", "Use custom size": "Použiť vlastnú veľkosť", "Use a more compact ‘Modern’ layout": "Použiť kompaktnejšie 'moderné' rozloženie", "Use a system font": "Použiť systémové písmo", @@ -1730,8 +1605,6 @@ "Upgrade this room to the recommended room version": "Upgradujte túto miestnosť na odporúčanú verziu", "this room": "táto miestnosť", "View older messages in %(roomName)s.": "Zobraziť staršie správy v miestnosti %(roomName)s.", - "Make this room low priority": "Priradiť tejto miestnosti nízku prioritu", - "Low priority rooms show up at the bottom of your room list in a dedicated section at the bottom of your room list": "Miestnosti s nízkou prioritou sa zobrazia vo vyhradenej sekcií na konci vášho zoznamu miestností", "This room is bridging messages to the following platforms. Learn more.": "Táto miestnosť premosťuje správy s nasledujúcimi platformami. Viac informácií", "This room isn’t bridging messages to any platforms. Learn more.": "Táto miestnosť nepremosťuje správy so žiadnymi ďalšími platformami. Viac informácií", "Bridges": "Mosty", diff --git a/src/i18n/strings/sq.json b/src/i18n/strings/sq.json index 9d9be78fdf..9b35fa7f3f 100644 --- a/src/i18n/strings/sq.json +++ b/src/i18n/strings/sq.json @@ -254,7 +254,6 @@ "%(senderName)s made future room history visible to anyone.": "%(senderName)s e bëri historikun e ardhshëm të dhomës të dukshëm për këdo.", "Always show message timestamps": "Shfaq përherë vula kohore për mesazhet", "Room Colour": "Ngjyrë Dhome", - "unknown caller": "thirrës i panjohur", "Decline": "Hidhe poshtë", "Accept": "Pranoje", "Incorrect verification code": "Kod verifikimi i pasaktë", @@ -330,7 +329,6 @@ "Upload avatar": "Ngarkoni avatar", "Settings": "Rregullime", "Forget room": "Harroje dhomën", - "Community Invites": "Ftesa Bashkësie", "Invites": "Ftesa", "Favourites": "Të parapëlqyer", "Low priority": "Me përparësi të ulët", @@ -446,7 +444,6 @@ "Logout": "Dalje", "Your Communities": "Bashkësitë Tuaja", "Create a new community": "Krijoni një bashkësi të re", - "You have no visible notifications": "S’keni njoftime të dukshme", "%(count)s of your messages have not been sent.|other": "Disa nga mesazhet tuaj s’janë dërguar.", "%(count)s of your messages have not been sent.|one": "Mesazhi juaj s’u dërgua.", "Active call": "Thirrje aktive", @@ -507,9 +504,6 @@ "Missing user_id in request": "Mungon user_id te kërkesa", "Failed to join room": "S’u arrit të hyhej në dhomë", "Mirror local video feed": "Pasqyro prurje vendore videoje", - "Incoming voice call from %(name)s": "Thirrje audio ardhëse nga %(name)s", - "Incoming video call from %(name)s": "Thirrje video ardhëse nga %(name)s", - "Incoming call from %(name)s": "Thirrje ardhëse nga %(name)s", "Failed to upload profile picture!": "S’u arrit të ngarkohej foto profili!", "New community ID (e.g. +foo:%(localDomain)s)": "ID bashkësie të re (p.sh. +foo:%(localDomain)s)", "Ongoing conference call%(supportedText)s.": "Thirrje konference që po zhvillohet%(supportedText)s.", @@ -542,7 +536,6 @@ "Unable to add email address": "S’arrihet të shtohet adresë email", "Unable to verify email address.": "S’arrihet të verifikohet adresë email.", "To get started, please pick a username!": "Që t’ia filloni, ju lutemi, zgjidhni një emër përdoruesi!", - "There are no visible files in this room": "S’ka kartela të dukshme në këtë dhomë", "Failed to upload image": "S’u arrit të ngarkohej figurë", "Failed to update community": "S’u arrit të përditësohej bashkësia", "Unable to accept invite": "S’arrihet të pranohet ftesë", @@ -632,7 +625,6 @@ "Authentication check failed: incorrect password?": "Dështoi kontrolli i mirëfilltësimit: fjalëkalim i pasaktë?", "Message Pinning": "Fiksim Mesazhi", "Autoplay GIFs and videos": "Vetëluaj GIF-e dhe video", - "Active call (%(roomName)s)": "Thirrje aktive (%(roomName)s)", "%(senderName)s uploaded a file": "%(senderName)s ngarkoi një kartelë", "Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "Parë nga %(displayName)s (%(userName)s) më %(dateTime)s", "%(roomName)s is not accessible at this time.": "Te %(roomName)s s’hyhet dot tani.", @@ -680,7 +672,6 @@ "%(oneUser)schanged their avatar %(count)s times|other": "%(oneUser)sndryshoi avatarin e vet %(count)s herë", "Clear cache and resync": "Spastro fshehtinën dhe rinjëkohëso", "Clear Storage and Sign Out": "Spastro Depon dhe Dil", - "COPY": "KOPJOJE", "e.g. %(exampleValue)s": "p.sh., %(exampleValue)s", "e.g. ": "p.sh., ", "Permission Required": "Lypset Leje", @@ -1049,8 +1040,6 @@ "Go back": "Kthehu mbrapsht", "Update status": "Përditëso gendjen", "Set status": "Caktojini gjendjen", - "Your Modular server": "Shërbyesi juaj Modular", - "Enter the location of your Modular homeserver. It may use your own domain name or be a subdomain of modular.im.": "Jepni vendndodhjen e shërbyesit tuaj Home Modular. Mund të përdorë emrin e përkatësisë tuaj ose të jetë një nënpërkatësi e modular.im.", "Server Name": "Emër Shërbyesi", "The username field must not be blank.": "Fusha e emrit të përdoruesit s’duhet të jetë e zbrazët.", "Username": "Emër përdoruesi", @@ -1083,62 +1072,6 @@ "Gets or sets the room topic": "Merr ose cakton temën e dhomës", "This room has no topic.": "Kjo dhomë s’ka temë.", "Verify this user by confirming the following emoji appear on their screen.": "Verifikojeni këtë përdorues duke ripohuar shfaqjen e emoji-t vijues në skenën e tyre.", - "Dog": "Qen", - "Cat": "Mace", - "Lion": "Luan", - "Horse": "Kalë", - "Unicorn": "Njëbrirësh", - "Pig": "Derr", - "Elephant": "Elefant", - "Rabbit": "Lepur", - "Panda": "Panda", - "Rooster": "Këndes", - "Penguin": "Pinguin", - "Turtle": "Breshkë", - "Fish": "Peshk", - "Octopus": "Oktapod", - "Butterfly": "Flutur", - "Flower": "Lule", - "Tree": "Pemë", - "Cactus": "Kaktus", - "Mushroom": "Kërpudhë", - "Globe": "Rruzull", - "Moon": "Hëna", - "Cloud": "Re", - "Fire": "Zjarr", - "Banana": "Banane", - "Apple": "Mollë", - "Strawberry": "Luleshtrydhe", - "Corn": "Misër", - "Pizza": "Picë", - "Cake": "Tortë", - "Heart": "Zemër", - "Smiley": "Emotikon", - "Robot": "Robot", - "Hat": "Kapë", - "Glasses": "Syze", - "Umbrella": "Ombrellë", - "Clock": "Sahat", - "Gift": "Dhuratë", - "Light bulb": "Llambë", - "Book": "Libër", - "Pencil": "Laps", - "Paperclip": "Kapëse", - "Hammer": "Çekiç", - "Telephone": "Telefon", - "Flag": "Flamur", - "Train": "Tren", - "Bicycle": "Biçikletë", - "Aeroplane": "Avion", - "Rocket": "Raketë", - "Trophy": "Trofe", - "Ball": "Top", - "Guitar": "Kitarë", - "Trumpet": "Trombë", - "Bell": "Kambanë", - "Anchor": "Spirancë", - "Headphones": "Kufje", - "Folder": "Dosje", "Chat with %(brand)s Bot": "Fjalosuni me Robotin %(brand)s", "This homeserver would like to make sure you are not a robot.": "Ky Shërbyes Home do të donte të sigurohej se s’jeni robot.", "Change": "Ndërroje", @@ -1156,9 +1089,6 @@ "%(senderDisplayName)s changed guest access to %(rule)s": "%(senderDisplayName)s ndryshoi hyrjen për vizitorë në %(rule)s", "Group & filter rooms by custom tags (refresh to apply changes)": "Gruponi & filtroni dhoma sipas etiketash vetjake (që të hyjnë në fuqi ndryshimet, rifreskojeni)", "Unable to find a supported verification method.": "S’arrihet të gjendet metodë verifikimi e mbuluar.", - "Santa": "Babagjyshi i Vitit të Ri", - "Hourglass": "Klepsidër", - "Key": "Kyç", "Disinvite": "Hiqi ftesën", "Disinvite this user from community?": "T’i hiqet ftesa për në bashkësi këtij përdoruesi?", "A verification email will be sent to your inbox to confirm setting your new password.": "Te mesazhet tuaj do të dërgohet një email verifikimi, për të ripohuar caktimin e fjalëkalimit tuaj të ri.", @@ -1189,8 +1119,6 @@ "%(senderDisplayName)s disabled flair for %(groups)s in this room.": "%(senderDisplayName)s çaktivizoi flair-in për %(groups)s në këtë dhomë.", "%(senderDisplayName)s enabled flair for %(newGroups)s and disabled flair for %(oldGroups)s in this room.": "%(senderDisplayName)s aktivizoi flair-in për %(newGroups)s dhe çaktivizoi flair-in për %(oldGroups)s në këtë dhomë.", "Show read receipts sent by other users": "Shfaq dëftesa leximi dërguar nga përdorues të tjerë", - "Scissors": "Gërshërë", - "Pin": "Fiksoje", "Error updating main address": "Gabim gjatë përditësimit të adresës kryesore", "There was an error updating the room's main address. It may not be allowed by the server or a temporary failure occurred.": "Pati një gabim në përditësimin e adresës kryesore të dhomës. Mund të mos lejohet nga shërbyesi ose mund të ketë ndodhur një gabim i përkohshëm.", "Error updating flair": "Gabim gjatë përditësimit të flair-it", @@ -1299,7 +1227,6 @@ "%(brand)s failed to get the public room list.": "%(brand)s-i s’arriti të merrte listën e dhomave publike.", "The homeserver may be unavailable or overloaded.": "Shërbyesi Home mund të jetë i pakapshëm ose i mbingarkuar.", "Add room": "Shtoni dhomë", - "Your profile": "Profili juaj", "Your Matrix account on ": "Llogaria juaj Matrix te ", "Failed to get autodiscovery configuration from server": "S’u arrit të merrej formësim vetëzbulimi nga shërbyesi", "Invalid base_url for m.homeserver": "Parametër base_url i pavlefshëm për m.homeserver", @@ -1414,7 +1341,6 @@ "Sign in and regain access to your account.": "Bëni hyrjen dhe rifitoni hyrje në llogarinë tuaj.", "You cannot sign in to your account. Please contact your homeserver admin for more information.": "S’mund të bëni hyrjen në llogarinë tuaj. Ju lutemi, për më tepër hollësi, lidhuni me përgjegjësin e shërbyesit tuaj Home.", "Clear personal data": "Spastro të dhëna personale", - "Spanner": "Çelës", "Identity Server URL must be HTTPS": "URL-ja e Shërbyesit të Identiteteve duhet të jetë HTTPS", "Not a valid Identity Server (status code %(code)s)": "Shërbyes Identitetesh i pavlefshëm (kod gjendjeje %(code)s)", "Could not connect to Identity Server": "S’u lidh dot me Shërbyes Identitetesh", @@ -1493,9 +1419,6 @@ "For a large amount of messages, this might take some time. Please don't refresh your client in the meantime.": "Për një sasi të madhe mesazhesh, kjo mund të dojë ca kohë. Ju lutemi, mos e rifreskoni klientin tuaj gjatë kësaj kohe.", "Remove %(count)s messages|other": "Hiq %(count)s mesazhe", "Remove recent messages": "Hiq mesazhe së fundi", - "Explore": "Eksploroni", - "Filter": "Filtër", - "Filter rooms…": "Filtroni dhoma…", "Preview": "Paraparje", "View": "Shihni", "Find a room…": "Gjeni një dhomë…", @@ -1540,7 +1463,6 @@ "Remove %(count)s messages|one": "Hiq 1 mesazh", "%(count)s unread messages including mentions.|other": "%(count)s mesazhe të palexuar, përfshi përmendje.", "%(count)s unread messages.|other": "%(count)s mesazhe të palexuar.", - "Unread mentions.": "Përmendje të palexuara.", "Show image": "Shfaq figurë", "Please create a new issue on GitHub so that we can investigate this bug.": "Ju lutemi, krijoni një çështje të re në GitHub, që të mund ta hetojmë këtë të metë.", "Missing captcha public key in homeserver configuration. Please report this to your homeserver administrator.": "Mungon kyç publik captcha-je te formësimi i shërbyesit Home. Ju lutemi, njoftojani këtë përgjegjësit të shërbyesit tuaj Home.", @@ -1556,7 +1478,6 @@ "%(name)s (%(userId)s)": "%(name)s (%(userId)s)", "Show tray icon and minimize window to it on close": "Me mbylljen, shfaq ikonë paneli dhe minimizo dritaren", "Room %(name)s": "Dhoma %(name)s", - "Recent rooms": "Dhoma së fundi", "%(count)s unread messages including mentions.|one": "1 përmendje e palexuar.", "%(count)s unread messages.|one": "1 mesazh i palexuar.", "Unread messages.": "Mesazhe të palexuar.", @@ -1754,7 +1675,6 @@ "Complete": "E plotë", "This room is end-to-end encrypted": "Kjo dhomë është e fshehtëzuar skaj-më-skaj", "Everyone in this room is verified": "Gjithkush në këtë dhomë është verifikuar", - "Invite only": "Vetëm me ftesa", "Send a reply…": "Dërgoni një përgjigje…", "Send a message…": "Dërgoni një mesazh…", "Reject & Ignore user": "Hidhe poshtë & Shpërfille përdoruesin", @@ -1800,8 +1720,6 @@ "%(brand)s is securely caching encrypted messages locally for them to appear in search results:": "%(brand)s-i po ruan lokalisht në mënyrë të sigurt në fshehtinë mesazhet që të shfaqen në përfundime kërkimi:", "Space used:": "Hapësirë e përdorur:", "Indexed messages:": "Mesazhe të indeksuar:", - "If you cancel now, you won't complete verifying the other user.": "Nëse e anuloni tani, s’do të plotësoni verifikimin e përdoruesit tjetër.", - "If you cancel now, you won't complete verifying your other session.": "Nëse e anuloni tani, s’do të plotësoni verifikimin e sesionit tuaj tjetër.", "Cancel entering passphrase?": "Të anulohet dhënue frazëkalimi?", "Setting up keys": "Ujdisje kyçesh", "Verifies a user, session, and pubkey tuple": "Verifikon një përdorues, sesion dhe një set kyçesh publikë", @@ -2127,7 +2045,6 @@ "Server did not require any authentication": "Shërbyesi s’kërkoi ndonjë mirëfilltësim", "Server did not return valid authentication information.": "Shërbyesi s’ktheu ndonjë të dhënë të vlefshme mirëfilltësimi.", "There was a problem communicating with the server. Please try again.": "Pati një problem në komunikimin me shërbyesin. Ju lutemi, riprovoni.", - "If you cancel now, you won't complete your operation.": "Nëse e anuloni tani, s’do ta plotësoni veprimin tuaj.", "Verify other session": "Verifikoni tjetër sesion", "Unable to access secret storage. Please verify that you entered the correct recovery passphrase.": "S’arrihet të hyhet në depozitë të fshehtë. Ju lutemi, verifikoni se dhatë frazëkalimin e duhur për rimarrje.", "Backup could not be decrypted with this recovery key: please verify that you entered the correct recovery key.": "Kopjeruajtja s’u shfshehtëzua dot me këtë kyç rimarrjesh: ju lutemi, verifikoni se keni dhënë kyçin e saktë të rimarrjeve.", @@ -2150,7 +2067,6 @@ "Send a bug report with logs": "Dërgoni një njoftim të metash me regjistra", "You signed in to a new session without verifying it:": "Bëtë hyrjen në një sesion të ri pa e verifikuar:", "Verify your other session using one of the options below.": "Verifikoni sesionit tuaj tjetër duke përdorur një nga mundësitë më poshtë.", - "Lock": "Kyçje", "Verify all your sessions to ensure your account & messages are safe": "Verifikoni krejt sesionet tuaj që të siguroheni se llogaria & mesazhet tuaja janë të sigurt", "Verify the new login accessing your account: %(name)s": "Verifikoni kredencialet e reja për hyrje te llogaria juaj: %(name)s", "Cross-signing": "Cross-signing", @@ -2188,14 +2104,12 @@ "Dismiss read marker and jump to bottom": "Mos merr parasysh piketë leximi dhe hidhu te fundi", "Jump to oldest unread message": "Hidhu te mesazhi më i vjetër i palexuar", "Upload a file": "Ngarkoni një kartelë", - "Font scaling": "Përshkallëzim shkronjash", "Font size": "Madhësi shkronjash", "IRC display name width": "Gjerësi shfaqjeje emrash IRC", "Size must be a number": "Madhësia duhet të jetë një numër", "Custom font size can only be between %(min)s pt and %(max)s pt": "Madhësia vetjake për shkronjat mund të jetë vetëm mes vlerave %(min)s pt dhe %(max)s pt", "Use between %(min)s pt and %(max)s pt": "Përdor me %(min)s pt dhe %(max)s pt", "Appearance": "Dukje", - "Create room": "Krijo dhomë", "Room name or address": "Emër ose adresë dhome", "Joins room with given address": "Hyhet në dhomën me adresën e dhënë", "Unrecognised room address:": "Adresë dhome që s’njihet:", @@ -2243,10 +2157,6 @@ "Feedback": "Mendime", "No recently visited rooms": "S’ka dhoma të vizituara së fundi", "Sort by": "Renditi sipas", - "Unread rooms": "Dhoma të palexuara", - "Always show first": "Shfaq përherë të parën", - "Show": "Shfaqe", - "Message preview": "Paraparje mesazhi", "List options": "Mundësi liste", "Show %(count)s more|other": "Shfaq %(count)s të tjera", "Show %(count)s more|one": "Shfaq %(count)s tjetër", @@ -2261,7 +2171,6 @@ "Looks good!": "Mirë duket!", "Use Recovery Key or Passphrase": "Përdorni Kyç ose Frazëkalim Rimarrjesh", "Use Recovery Key": "Përdorni Kyç Rimarrjesh", - "Use the improved room list (will refresh to apply changes)": "Përdor listën e përmirësuar të dhomave (do të rifreskohet, që të aplikohen ndryshimet)", "Use custom size": "Përdor madhësi vetjake", "Hey you. You're the best!": "Hej, ju. S’u ka kush shokun!", "Message layout": "Skemë mesazhesh", @@ -2279,50 +2188,9 @@ "%(senderName)s started a call": "%(senderName)s filluat një thirrje", "Waiting for answer": "Po pritet për përgjigje", "%(senderName)s is calling": "%(senderName)s po thërret", - "You created the room": "Krijuat dhomën", - "%(senderName)s created the room": "%(senderName)s krijoi dhomën", - "You made the chat encrypted": "E bëtë të fshehtëzuar fjalosjen", - "%(senderName)s made the chat encrypted": "%(senderName)s e bëri të fshehtëzuar fjalosjen", - "You made history visible to new members": "E bëtë historikun të dukshëm për anëtarë të rinj", - "%(senderName)s made history visible to new members": "%(senderName)s e bëri historikun të dukshëm për anëtarë të rinj", - "You made history visible to anyone": "E bëtë historikun të dukshëm për këdo", - "%(senderName)s made history visible to anyone": "%(senderName)s e bëri historikun të dukshëm për këdo", - "You made history visible to future members": "E bëtë historikun të dukshëm për anëtarë të ardhshëm", - "%(senderName)s made history visible to future members": "%(senderName)s e bëri historikun të dukshëm për anëtarë të ardhshëm", - "You were invited": "U ftuat", - "%(targetName)s was invited": "%(targetName)s u ftua", - "You left": "Dolët", - "%(targetName)s left": "%(targetName)s doli", - "You were kicked (%(reason)s)": "U përzutë (%(reason)s)", - "%(targetName)s was kicked (%(reason)s)": "%(targetName)s u përzu (%(reason)s)", - "You were kicked": "U përzutë", - "%(targetName)s was kicked": "%(targetName)s u përzu", - "You rejected the invite": "S’pranuat ftesën", - "%(targetName)s rejected the invite": "%(targetName)s s’pranoi ftesën", - "You were uninvited": "Ju shfuqizuan ftesën", - "%(targetName)s was uninvited": "%(targetName)s i shfuqizuan ftesën", - "You were banned (%(reason)s)": "U dëbuat (%(reason)s)", - "%(targetName)s was banned (%(reason)s)": "%(targetName)s u dëbua (%(reason)s)", - "You were banned": "U dëbuat", - "%(targetName)s was banned": "%(targetName)s u dëbua", - "You joined": "U bëtë pjesë", - "%(targetName)s joined": "%(targetName)s u bë pjesë", - "You changed your name": "Ndryshuat emrin", - "%(targetName)s changed their name": "%(targetName)s ndryshoi emrin e vet", - "You changed your avatar": "Ndryshuat avatarin tuaj", - "%(targetName)s changed their avatar": "%(targetName)s ndryshoi avatarin e vet", - "%(senderName)s %(emote)s": "%(senderName)s %(emote)s", "%(senderName)s: %(message)s": "%(senderName)s: %(message)s", - "You changed the room name": "Ndryshuat emrin e dhomës", - "%(senderName)s changed the room name": "%(senderName)s ndryshoi emrin e dhomës", "%(senderName)s: %(reaction)s": "%(senderName)s: %(reaction)s", "%(senderName)s: %(stickerName)s": "%(senderName)s: %(stickerName)s", - "You uninvited %(targetName)s": "Shfuqizuat ftesën për %(targetName)s", - "%(senderName)s uninvited %(targetName)s": "%(senderName)s shfuqizoi ftesën për %(targetName)s", - "You invited %(targetName)s": "Ftuat %(targetName)s", - "%(senderName)s invited %(targetName)s": "%(senderName)s ftoi %(targetName)s", - "You changed the room topic": "Ndryshuat temën e dhomës", - "%(senderName)s changed the room topic": "%(senderName)s ndryshoi temën e dhomës", "Use a more compact ‘Modern’ layout": "Përdorni një skemë ‘Modern’ më kompakte", "The authenticity of this encrypted message can't be guaranteed on this device.": "Mirëfilltësia e këtij mesazhi të fshehtëzuar s’mund të garantohet në këtë pajisje.", "Message deleted on %(date)s": "Mesazh i fshirë më %(date)s", @@ -2346,10 +2214,6 @@ "Set a Security Phrase": "Caktoni një Frazë Sigurie", "Confirm Security Phrase": "Ripohoni Frazë Sigurie", "Save your Security Key": "Ruani Kyçin tuaj të Sigurisë", - "Use your account to sign in to the latest version": "Përdorni llogarinë tuaj për të bërë hyrjen te versioni më i ri", - "We’re excited to announce Riot is now Element": "Jemi të ngazëllyer t’ju njoftojmë se Riot tanimë është Element", - "Riot is now Element!": "Riot-i tani është Element!", - "Learn More": "Mësoni Më Tepër", "Are you sure you want to cancel entering passphrase?": "Jeni i sigurt se doni të anulohet dhënie frazëkalimi?", "Enable advanced debugging for the room list": "Aktivizo diagnostikim të thelluar për listën e dhomave", "Enable experimental, compact IRC style layout": "Aktivizo skemë eksperimentale, kompakte, IRC-je", @@ -2361,8 +2225,6 @@ "There are advanced notifications which are not shown here.": "Ka njoftime të thelluara që s’janë shfaqur këtu.", "You might have configured them in a client other than %(brand)s. You cannot tune them in %(brand)s but they still apply.": "Mund t’i keni formësuar në një klient tjetër nga %(brand)s. S’mund t’i përimtoni në %(brand)s, por janë ende të vlefshëm.", "Set the name of a font installed on your system & %(brand)s will attempt to use it.": "Caktoni emrin e një palë shkronjash të instaluara në sistemin tuaj & %(brand)s do të provojë t’i përdorë.", - "Make this room low priority": "Bëje këtë dhomë të përparësisë së ulët", - "Low priority rooms show up at the bottom of your room list in a dedicated section at the bottom of your room list": "Dhomat me përparësi të ulët shfaqen në fund të listës tuaj të dhomave, në një ndarje enkas në fund të listës tuaj të dhomave", "Show rooms with unread messages first": "Së pari shfaq dhoma me mesazhe të palexuar", "Show previews of messages": "Shfaq paraparje mesazhesh", "Use default": "Përdor parazgjedhjen", @@ -2373,11 +2235,6 @@ "Away": "I larguar", "Edited at %(date)s": "Përpunuar më %(date)s", "Click to view edits": "Klikoni që të shihni përpunime", - "Use your account to sign in to the latest version of the app at ": "Përdorni llogarinë tuaj për të hyrë te versioni më i ri i aplikacionit te ", - "You’re already signed in and good to go here, but you can also grab the latest versions of the app on all platforms at element.io/get-started.": "Keni bërë tashmë hyrjen këtu dhe jeni në rregull, por mundeni edhe të merrnit versionet më të reja të aplikacioneve në krejt platformat, te element.io/get-started.", - "Go to Element": "Shko te Element-i", - "We’re excited to announce Riot is now Element!": "Jemi të ngazëllyer të njoftojmë se Riot-i tani e tutje është Element-i!", - "Learn more at element.io/previously-riot": "Mësoni më tepër te element.io/previously-riot", "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use %(brand)s with an existing Matrix account on a different homeserver.": "Mund të përdorni mundësitë vetjake për shërbyesin Që të bëni hyrjen te shërbyes të tjerë Matrix, duke specifikuar një URL të një shërbyesi Home tjetër. Kjo ju lejon të përdorni %(brand)s në një tjetër shërbyes Home me një llogari Matrix ekzistuese.", "Enter the location of your Element Matrix Services homeserver. It may use your own domain name or be a subdomain of element.io.": "Jepni vendndodhjen e shërbyesit tuaj vatër Element Matrix Services. Mund të përdorë emrin e përkatësisë tuaj vetjake ose të jetë një nënpërkatësi e element.io.", "Search rooms": "Kërkoni në dhoma", @@ -2385,7 +2242,6 @@ "%(brand)s Web": "%(brand)s Web", "%(brand)s Desktop": "%(brand)s Desktop", "%(brand)s iOS": "%(brand)s iOS", - "%(brand)s X for Android": "%(brand)s X për Android", "* %(senderName)s %(emote)s": "* %(senderName)s %(emote)s", "Custom Tag": "Etiketë Vetjake", "The person who invited you already left the room.": "Personi që ju ftoi ka dalë nga dhoma tashmë.", diff --git a/src/i18n/strings/sr.json b/src/i18n/strings/sr.json index bce9fe6728..5936904a0e 100644 --- a/src/i18n/strings/sr.json +++ b/src/i18n/strings/sr.json @@ -142,11 +142,6 @@ "Enable URL previews for this room (only affects you)": "Омогући претпрегледе адреса у овој соби (утиче само на вас)", "Enable URL previews by default for participants in this room": "Подразумевано омогући прегледе адреса за чланове ове собе", "Room Colour": "Боја собе", - "Active call (%(roomName)s)": "Активни позив (%(roomName)s)", - "unknown caller": "непознати позивалац", - "Incoming voice call from %(name)s": "Долазни гласовни позив од корисника %(name)s", - "Incoming video call from %(name)s": "Долазни видео позив од корисника %(name)s", - "Incoming call from %(name)s": "Долазни позив од корисника %(name)s", "Decline": "Одбиј", "Accept": "Прихвати", "Error": "Грешка", @@ -253,7 +248,6 @@ "Settings": "Подешавања", "Forget room": "Заборави собу", "Search": "Претрага", - "Community Invites": "Позивнице заједнице", "Invites": "Позивнице", "Favourites": "Омиљено", "Rooms": "Собе", @@ -469,7 +463,6 @@ "Name": "Име", "You must register to use this functionality": "Морате се регистровати да бисте користили ову могућност", "You must join the room to see its files": "Морате приступити соби да бисте видели њене датотеке", - "There are no visible files in this room": "Нема видљивих датотека у овој соби", "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

HTML за страницу ваше заједнице

\n

\n Користите дужи опис да бисте упознали нове чланове са заједницом, или поделили\n неке важне везе\n

\n

\n Можете чак користити \"img\" ознаке\n

\n", "Add rooms to the community summary": "Додај собе у кратак опис заједнице", "Which rooms would you like to add to this summary?": "Које собе желите додати у овај кратак опис?", @@ -533,7 +526,6 @@ "Error whilst fetching joined communities": "Грешка приликом добављања списка са приступљеним заједницама", "Create a new community": "Направи нову заједницу", "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Направите заједницу да бисте спојили кориснике и собе! Направите прилагођену почетну страницу да бисте означили ваш кутак у Матрикс универзуму.", - "You have no visible notifications": "Немате видљивих обавештења", "%(count)s of your messages have not been sent.|other": "Неке ваше поруке нису послате.", "%(count)s of your messages have not been sent.|one": "Ваша порука није послата.", "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.|other": "Пошаљи поново или откажи све сада. Такође можете изабрати појединачне поруке за поновно слање или отказивање.", @@ -817,7 +809,6 @@ "Share Community": "Подели заједницу", "Share Room Message": "Подели поруку у соби", "Link to selected message": "Веза ка изабраној поруци", - "COPY": "КОПИРАЈ", "Share Message": "Подели поруку", "No Audio Outputs detected": "Нема уочених излаза звука", "Audio Output": "Излаз звука", @@ -855,8 +846,6 @@ "Confirm": "Потврди", "A verification email will be sent to your inbox to confirm setting your new password.": "Мејл потврде ће бити послат у ваше сандуче да бисмо потврдили постављање ваше нове лозинке.", "Email (optional)": "Мејл (изборно)", - "Your Modular server": "Ваш Модулар сервер", - "Enter the location of your Modular homeserver. It may use your own domain name or be a subdomain of modular.im.": "Унесите адресу вашег Модулар кућног сервера. Можете користити ваш домен или унети поддомен на домену modular.im.", "Server Name": "Назив сервера", "Change": "Промени", "Messages containing my username": "Поруке које садрже моје корисничко", @@ -884,11 +873,7 @@ "You do not have permission to invite people to this room.": "Немате дозволу за позивање људи у ову собу.", "Set up encryption": "Подеси шифровање", "Encryption upgrade available": "Надоградња шифровања је доступна", - "You changed the room name": "Променили сте назив собе", - "%(senderName)s changed the room name": "Корисник %(senderName)s је променио назив собе", "%(senderName)s: %(reaction)s": "%(senderName)s: %(reaction)s", - "You changed the room topic": "Променили сте тему собе", - "%(senderName)s changed the room topic": "Корисник %(senderName)s је променио тему собе", "Multiple integration managers": "Више управника уградњи", "Try out new ways to ignore people (experimental)": "Испробајте нове начине за игнорисање људи (у пробној фази)", "Show info about bridges in room settings": "Прикажи податке о мостовима у подешавањима собе", @@ -921,7 +906,6 @@ "Emoji picker": "Бирач емоџија", "Send a message…": "Пошаљи поруку…", "Direct Messages": "Непосредне поруке", - "Create room": "Направи собу", "People": "Људи", "Forget this room": "Заборави ову собу", "Start chatting": "Започни ћаскање", @@ -980,8 +964,6 @@ "General failure": "Општа грешка", "Copy": "Копирај", "Go Back": "Назад", - "We’re excited to announce Riot is now Element": "Са радошћу објављујемо да је Рајот (Riot) сада Елемент (Element)", - "Riot is now Element!": "Рајот (Riot) је сада Елемент!", "Send a bug report with logs": "Пошаљи извештај о грешци са записницима", "Light": "Светла", "Dark": "Тамна", @@ -1001,7 +983,6 @@ "Show rooms with unread notifications first": "Прво прикажи собе са непрочитаним обавештењима", "Enable experimental, compact IRC style layout": "Омогући пробни, збијенији распоред у IRC стилу", "Got It": "Разумем", - "Light bulb": "Сијалица", "Algorithm: ": "Алгоритам: ", "Go back": "Назад", "Hey you. You're the best!": "Хеј! Само напред!", @@ -1038,9 +1019,6 @@ "Recently Direct Messaged": "Недавно послате непосредне поруке", "Start a conversation with someone using their name, username (like ) or email address.": "Започните разговор са неким користећи њихово име, корисничко име (као нпр.: ) или мејл адресу.", "Go": "Напред", - "Go to Element": "Иди у Елемент", - "We’re excited to announce Riot is now Element!": "Са одушевљењем објављујемо да је Рајот (Riot) сада Елемент (Element)!", - "Learn more at element.io/previously-riot": "Сазнајте више на страници element.io/previously-riot", "Looks good!": "Изгледа добро!", "Send a Direct Message": "Пошаљи непосредну поруку", "Switch theme": "Промени тему" diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index b2c7623fca..90381c00cf 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -90,7 +90,6 @@ "Favourite": "Favorit", "Accept": "Godkänn", "Access Token:": "Åtkomsttoken:", - "Active call (%(roomName)s)": "Aktiv samtal (%(roomName)s)", "Add": "Lägg till", "Admin Tools": "Admin-verktyg", "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Det gick inte att ansluta till hemservern - kontrollera anslutningen, se till att hemserverns SSL-certifikat är betrott, och att inget webbläsartillägg blockerar förfrågningar.", @@ -119,9 +118,6 @@ "I have verified my email address": "Jag har verifierat min epostadress", "Import": "Importera", "Import E2E room keys": "Importera rumskrypteringsnycklar", - "Incoming call from %(name)s": "Inkommande samtal från %(name)s", - "Incoming video call from %(name)s": "Inkommande videosamtal från %(name)s", - "Incoming voice call from %(name)s": "Inkommande röstsamtal från %(name)s", "Incorrect username and/or password.": "Fel användarnamn och/eller lösenord.", "Incorrect verification code": "Fel verifieringskod", "Invalid Email Address": "Ogiltig epostadress", @@ -504,10 +500,8 @@ "If you already have a Matrix account you can log in instead.": "Om du redan har ett Matrix-konto kan du logga in istället.", "You must register to use this functionality": "Du måste registrera dig för att använda den här funktionaliteten", "You must join the room to see its files": "Du måste gå med i rummet för att se tillhörande filer", - "There are no visible files in this room": "Det finns inga synliga filer i det här rummet", "Start automatically after system login": "Starta automatiskt vid systeminloggning", "This will allow you to reset your password and receive notifications.": "Det här låter dig återställa lösenordet och ta emot aviseringar.", - "You have no visible notifications": "Du har inga synliga aviseringar", "Failed to upload image": "Det gick inte att ladda upp bild", "New Password": "Nytt lösenord", "Do you want to set an email address?": "Vill du ange en epostadress?", @@ -673,7 +667,6 @@ "Add to community": "Lägg till i community", "Failed to invite users to community": "Det gick inte att bjuda in användare till communityn", "Mirror local video feed": "Speglad lokal-video", - "Community Invites": "Community-inbjudningar", "Invalid community ID": "Ogiltigt community-ID", "'%(groupId)s' is not a valid community ID": "%(groupId)s är inte ett giltigt community-ID", "New community ID (e.g. +foo:%(localDomain)s)": "Nytt community-ID (t.ex. +foo:%(localDomain)s)", @@ -739,7 +732,6 @@ "Disinvite this user?": "Ta bort användarens inbjudan?", "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "Du kommer inte att kunna ångra den här ändringen eftersom du sänker din egen behörighetsnivå, om du är den sista privilegierade användaren i rummet blir det omöjligt att ändra behörigheter.", "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Du kommer inte att kunna ångra den här ändringen eftersom du höjer användaren till samma behörighetsnivå som dig själv.", - "unknown caller": "okänd uppringare", "To use it, just wait for autocomplete results to load and tab through them.": "För att använda detta, vänta på att autokompletteringen laddas och tabba igenom resultatet.", "Enable inline URL previews by default": "Aktivera URL-förhandsvisning som standard", "Enable URL previews for this room (only affects you)": "Aktivera URL-förhandsvisning för detta rum (påverkar bara dig)", @@ -817,7 +809,6 @@ "Share Community": "Dela community", "Share Room Message": "Dela rumsmeddelande", "Link to selected message": "Länk till valt meddelande", - "COPY": "KOPIERA", "Share Message": "Dela meddelande", "No Audio Outputs detected": "Inga ljudutgångar hittades", "Audio Output": "Ljudutgång", @@ -939,69 +930,6 @@ "Messages containing @room": "Meddelanden som innehåller @room", "Encrypted messages in one-to-one chats": "Krypterade meddelanden i privata chattar", "Encrypted messages in group chats": "Krypterade meddelanden i gruppchattar", - "Dog": "Hund", - "Cat": "Katt", - "Lion": "Lejon", - "Horse": "Häst", - "Unicorn": "Enhörning", - "Pig": "Gris", - "Elephant": "Elefant", - "Rabbit": "Kanin", - "Panda": "Panda", - "Rooster": "Tupp", - "Penguin": "Pingvin", - "Turtle": "Sköldpadda", - "Fish": "Fisk", - "Octopus": "Bläckfisk", - "Butterfly": "Fjäril", - "Flower": "Blomma", - "Tree": "Träd", - "Cactus": "Kaktus", - "Mushroom": "Svamp", - "Globe": "Jordglob", - "Moon": "Måne", - "Cloud": "Moln", - "Fire": "Eld", - "Banana": "Banan", - "Apple": "Äpple", - "Strawberry": "Jordgubbe", - "Corn": "Majs", - "Pizza": "Pizza", - "Cake": "Tårta", - "Heart": "Hjärta", - "Smiley": "Smiley", - "Robot": "Robot", - "Hat": "Hatt", - "Glasses": "Glasögon", - "Spanner": "Skruvnyckel", - "Santa": "Tomte", - "Thumbs up": "Tummen upp", - "Umbrella": "Paraply", - "Hourglass": "Timglas", - "Clock": "Klocka", - "Gift": "Present", - "Light bulb": "Glödlampa", - "Book": "Bok", - "Pencil": "Penna", - "Paperclip": "Gem", - "Scissors": "Sax", - "Key": "Nyckel", - "Hammer": "Hammare", - "Telephone": "Telefon", - "Flag": "Flagga", - "Train": "Tåg", - "Bicycle": "Cykel", - "Aeroplane": "Flygplan", - "Rocket": "Raket", - "Trophy": "Trofé", - "Ball": "Boll", - "Guitar": "Gitarr", - "Trumpet": "Trumpet", - "Bell": "Ringklocka", - "Anchor": "Ankare", - "Headphones": "Hörlurar", - "Folder": "Mapp", - "Pin": "Knappnål", "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.": "Vi har skickat ett mail till dig för att verifiera din adress. Följ instruktionerna där och klicka sedan på knappen nedan.", "Email Address": "Epostadress", "Add an email address to configure email notifications": "Lägg till en epostadress för att konfigurera epostaviseringar", @@ -1314,9 +1242,6 @@ "Couldn't load page": "Det gick inte att ladda sidan", "Want more than a community? Get your own server": "Vill du ha mer än en community? Skaffa din egen server", "This homeserver does not support communities": "Denna hemserver stöder inte communityn", - "Explore": "Utforska", - "Filter": "Filtrera", - "Filter rooms…": "Filtrera rum…", "Please ask the administrator of your homeserver (%(homeserverDomain)s) to configure a TURN server in order for calls to work reliably.": "Be administratören för din hemserver (%(homeserverDomain)s) att konfigurera en TURN-server för att samtal ska fungera pålitligt.", "Alternatively, you can try to use the public server at turn.matrix.org, but this will not be as reliable, and it will share your IP address with that server. You can also manage this in Settings.": "Alternativt kan du testa att använda den offentliga servern turn.matrix.org, men det är inte lika pålitligt och det kommer att dela din IP-adress med den servern. Du kan också hantera detta under Inställningar.", "Warning: Upgrading a room will not automatically migrate room members to the new version of the room. We'll post a link to the new room in the old version of the room - room members will have to click this link to join the new room.": "Varning: Uppgradering av ett rum flyttar inte automatiskt rumsmedlemmar till den nya versionen av rummet. Vi lägger ut en länk till det nya rummet i den gamla versionen av rummet - rumsmedlemmar måste klicka på den här länken för att gå med i det nya rummet.", @@ -1360,7 +1285,6 @@ "Integration Managers receive configuration data, and can modify widgets, send room invites, and set power levels on your behalf.": "Integrationshanterare får konfigurationsdata och kan ändra widgetar, skicka ruminbjudningar och ställa in behörighetsnivåer via ditt konto.", "Close preview": "Stäng förhandsvisning", "Room %(name)s": "Rum %(name)s", - "Recent rooms": "Senaste rummen", "Loading room preview": "Laddar förhandsvisning av rummet", "Re-join": "Gå med igen", "Try to join anyway": "Försök att gå med ändå", @@ -1456,8 +1380,6 @@ "Whether you're using %(brand)s on a device where touch is the primary input mechanism": "Om du använder %(brand)s på en enhet där pekskärm är den primära inmatningsmekanismen", "Whether you're using %(brand)s as an installed Progressive Web App": "Om du använder %(brand)s som en installerad progressiv webbapp", "Your user agent": "Din användaragent", - "If you cancel now, you won't complete verifying the other user.": "Om du avbryter nu kommer du inte att verifiera den andra användaren.", - "If you cancel now, you won't complete verifying your other session.": "Om du avbryter nu kommer du inte att verifiera din andra session.", "Cancel entering passphrase?": "Avbryta att ange lösenfras?", "Setting up keys": "Sätter upp nycklar", "Verify this session": "Verifiera denna session", @@ -1534,10 +1456,6 @@ "Go Back": "Gå tillbaka", "Room name or address": "Rum namn eller adress", "%(name)s is requesting verification": "%(name)s begär verifiering", - "Use your account to sign in to the latest version": "Använd ditt konto för att logga in till den senaste versionen", - "We’re excited to announce Riot is now Element": "Vi är glada att meddela att Riot är nu Element", - "Riot is now Element!": "Riot är nu Element!", - "Learn More": "Lär mer", "Sends a message as html, without interpreting it as markdown": "Skicka ett meddelande som html, utan att tolka det som markdown", "Failed to set topic": "Misslyckades med att ställa in ämnet" } diff --git a/src/i18n/strings/te.json b/src/i18n/strings/te.json index 431c4571ea..878072cc38 100644 --- a/src/i18n/strings/te.json +++ b/src/i18n/strings/te.json @@ -17,7 +17,6 @@ "Always show message timestamps": "ఎల్లప్పుడూ సందేశాల సమయ ముద్రలు చూపించు", "Authentication": "ప్రామాణీకరణ", "You do not have permission to post to this room": "మీకు ఈ గదికి పోస్ట్ చేయడానికి అనుమతి లేదు", - "Active call (%(roomName)s)": "క్రియాశీల కాల్ల్ (%(roomName)s)", "A new password must be entered.": "కొత్త పాస్ వర్డ్ ను తప్పక నమోదు చేయాలి.", "%(senderName)s answered the call.": "%(senderName)s కు సమాధానం ఇచ్చారు.", "An error has occurred.": "ఒక లోపము సంభవించినది.", @@ -41,7 +40,6 @@ "You cannot place a call with yourself.": "మీకు మీరే కాల్ చేయలేరు.", "You are already in a call.": "మీరు ఇప్పటికే కాల్లో ఉన్నారు.", "You cannot place VoIP calls in this browser.": "మీరు ఈ బ్రౌజర్లో కాల్లను చేయలేరు.", - "You have no visible notifications": "మీకు కనిపించే నోటిఫికేషన్లు లేవు", "You need to be able to invite users to do that.": "మీరు దీన్ని చేయడానికి వినియోగదారులను ఆహ్వానించగలరు.", "Click here to fix": "పరిష్కరించడానికి ఇక్కడ క్లిక్ చేయండి", "Click to mute audio": "ఆడియోను మ్యూట్ చేయడానికి క్లిక్ చేయండి", @@ -93,7 +91,6 @@ "Upload an avatar:": "అవతార్ను అప్లోడ్ చేయండి:", "This server does not support authentication with a phone number.": "ఈ సర్వర్ ఫోన్ నంబర్తో ప్రామాణీకరణకు మద్దతు ఇవ్వదు.", "New passwords don't match": "కొత్త పాస్వర్డ్లు సరిపోలడం లేదు", - "There are no visible files in this room": "ఈ గదిలో కనిపించే ఫైల్లు లేవు", "Connectivity to the server has been lost.": "సెర్వెర్ కనెక్టివిటీని కోల్పోయారు.", "Sent messages will be stored until your connection has returned.": "మీ కనెక్షన్ తిరిగి వచ్చే వరకు పంపిన సందేశాలు నిల్వ చేయబడతాయి.", "Cancel": "రద్దు", diff --git a/src/i18n/strings/th.json b/src/i18n/strings/th.json index 811d549d54..8d71e05a0e 100644 --- a/src/i18n/strings/th.json +++ b/src/i18n/strings/th.json @@ -261,7 +261,6 @@ "%(roomName)s does not exist.": "ไม่มีห้อง %(roomName)s อยู่จริง", "Enter passphrase": "กรอกรหัสผ่าน", "Seen by %(userName)s at %(dateTime)s": "%(userName)s เห็นแล้วเมื่อเวลา %(dateTime)s", - "unknown caller": "ไม่ทราบผู้โทร", "Upload new:": "อัปโหลดใหม่:", "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (ระดับอำนาจ %(powerLevelNumber)s)", "Users": "ผู้ใช้", diff --git a/src/i18n/strings/tr.json b/src/i18n/strings/tr.json index 5a152eeab6..2f855f384e 100644 --- a/src/i18n/strings/tr.json +++ b/src/i18n/strings/tr.json @@ -4,7 +4,6 @@ "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s %(displayName)s için davetiyeyi kabul etti.", "Account": "Hesap", "Access Token:": "Erişim Anahtarı:", - "Active call (%(roomName)s)": "Aktif çağrı (%(roomName)s)", "Add": "Ekle", "Add a topic": "Bir konu(topic) ekle", "Admin": "Admin", @@ -119,9 +118,6 @@ "I have verified my email address": "E-posta adresimi doğruladım", "Import": "İçe Aktar", "Import E2E room keys": "Uçtan uca Oda Anahtarlarını İçe Aktar", - "Incoming call from %(name)s": "%(name)s ' den gelen çağrı", - "Incoming video call from %(name)s": "%(name)s ' den görüntülü arama", - "Incoming voice call from %(name)s": "%(name)s ' den gelen sesli arama", "Incorrect username and/or password.": "Yanlış kullanıcı adı ve / veya şifre.", "Incorrect verification code": "Yanlış doğrulama kodu", "Invalid Email Address": "Geçersiz E-posta Adresi", @@ -243,7 +239,6 @@ "%(senderName)s unbanned %(targetName)s.": "%(senderName)s %(targetName)s 'in yasağını kaldırdı.", "Unable to capture screen": "Ekran yakalanamadı", "Unable to enable Notifications": "Bildirimler aktif edilemedi", - "unknown caller": "bilinmeyen arayıcı", "unknown error code": "bilinmeyen hata kodu", "Unmute": "Sesi aç", "Unnamed Room": "İsimsiz Oda", @@ -278,7 +273,6 @@ "You do not have permission to post to this room": "Bu odaya göndermeye izniniz yok", "You have disabled URL previews by default.": "URL önizlemelerini varsayılan olarak devre dışı bıraktınız.", "You have enabled URL previews by default.": "URL önizlemelerini varsayılan olarak etkinleştirdiniz.", - "You have no visible notifications": "Hiçbir görünür bildiriminiz yok", "You must register to use this functionality": "Bu işlevi kullanmak için Kayıt Olun ", "You need to be able to invite users to do that.": "Bunu yapmak için kullanıcıları davet etmeye ihtiyacınız var.", "You need to be logged in.": "Oturum açmanız gerekiyor.", @@ -312,7 +306,6 @@ "Upload an avatar:": "Bir Avatar yükle :", "This server does not support authentication with a phone number.": "Bu sunucu bir telefon numarası ile kimlik doğrulamayı desteklemez.", "An error occurred: %(error_string)s": "Bir hata oluştu : %(error_string)s", - "There are no visible files in this room": "Bu odada görünür hiçbir dosya yok", "Room": "Oda", "Connectivity to the server has been lost.": "Sunucuyla olan bağlantı kesildi.", "Sent messages will be stored until your connection has returned.": "Gönderilen iletiler bağlantınız geri gelene kadar saklanacak.", @@ -658,7 +651,6 @@ "Share Community": "Topluluk Paylaş", "Share Room Message": "Oda Mesajı Paylaş", "Link to selected message": "Seçili mesaja bağlantı", - "COPY": "KOPYA", "Command Help": "Komut Yardımı", "Missing session data": "Kayıp oturum verisi", "Integration Manager": "Bütünleştirme Yöneticisi", @@ -699,7 +691,6 @@ "Country Dropdown": "Ülke Listesi", "Code": "Kod", "Unable to validate homeserver/identity server": "Ana/kimlik sunucu doğrulanamıyor", - "Your Modular server": "Sizin Modüler sunucunuz", "Server Name": "Sunucu Adı", "The email field must not be blank.": "E-posta alanı boş bırakılamaz.", "The username field must not be blank.": "Kullanıcı adı alanı boş bırakılamaz.", @@ -746,8 +737,6 @@ "Community %(groupId)s not found": "%(groupId)s topluluğu bulunamıyor", "This homeserver does not support communities": "Bu ana sunucu toplulukları desteklemiyor", "Failed to load %(groupId)s": "%(groupId)s yükleme başarısız", - "Filter": "Filtre", - "Filter rooms…": "Odaları filtrele…", "Old cryptography data detected": "Eski kriptolama verisi tespit edildi", "Verification Request": "Doğrulama Talebi", "Your Communities": "Topluluklarınız", @@ -764,7 +753,6 @@ "Add room": "Oda ekle", "Clear filter": "Filtre temizle", "Guest": "Misafir", - "Your profile": "Profiliniz", "Could not load user profile": "Kullanıcı profili yüklenemedi", "Your Matrix account on %(serverName)s": "%(serverName)s sunucusundaki Matrix hesabınız", "Your password has been reset.": "Parolanız sıfırlandı.", @@ -838,33 +826,6 @@ "New Recovery Method": "Yeni Kurtarma Yöntemi", "Go to Settings": "Ayarlara Git", "Recovery Method Removed": "Kurtarma Yöntemi Silindi", - "Robot": "Robot", - "Hat": "Şapka", - "Glasses": "Gözlük", - "Umbrella": "Şemsiye", - "Hourglass": "Kum saati", - "Clock": "Saat", - "Gift": "Hediye", - "Light bulb": "Ampül", - "Book": "Kitap", - "Pencil": "Kalem", - "Paperclip": "Ataç", - "Scissors": "Makas", - "Key": "Anahtar", - "Hammer": "Çekiç", - "Telephone": "Telefon", - "Flag": "Bayrak", - "Train": "Tren", - "Bicycle": "Bisiklet", - "Aeroplane": "Uçak", - "Rocket": "Füze", - "Ball": "Top", - "Guitar": "Gitar", - "Trumpet": "Trampet", - "Bell": "Zil", - "Anchor": "Çıpa", - "Headphones": "Kulaklık", - "Folder": "Klasör", "Accept to continue:": "Devam etmek için i kabul ediniz:", "Upload": "Yükle", "not found": "bulunamadı", @@ -907,36 +868,6 @@ "Verified!": "Doğrulandı!", "You've successfully verified this user.": "Bu kullanıcıyı başarılı şekilde doğruladınız.", "Unable to find a supported verification method.": "Desteklenen doğrulama yöntemi bulunamadı.", - "Dog": "Köpek", - "Cat": "Kedi", - "Lion": "Aslan", - "Horse": "At", - "Unicorn": "Midilli", - "Pig": "Domuz", - "Elephant": "Fil", - "Rabbit": "Tavşan", - "Panda": "Panda", - "Penguin": "Penguen", - "Turtle": "Kaplumbağa", - "Fish": "Balık", - "Octopus": "Ahtapot", - "Butterfly": "Kelebek", - "Flower": "Çiçek", - "Tree": "Ağaç", - "Cactus": "Kaktüs", - "Mushroom": "Mantar", - "Globe": "Dünya", - "Moon": "Ay", - "Cloud": "Bulut", - "Fire": "Ateş", - "Banana": "Muz", - "Apple": "Elma", - "Strawberry": "Çilek", - "Corn": "Mısır", - "Pizza": "Pizza", - "Cake": "Kek", - "Heart": "Kalp", - "Trophy": "Ödül", "wait and try again later": "bekle ve tekrar dene", "Disconnect anyway": "Yinede bağlantıyı kes", "Go back": "Geri dön", @@ -1040,7 +971,6 @@ "Failed to invite users to %(groupId)s": "%(groupId)s grubuna kullanıcı daveti başarısız", "Failed to add the following rooms to %(groupId)s:": "%(groupId)s odalarına ekleme başarısız:", "Prepends ¯\\_(ツ)_/¯ to a plain-text message": "Düz-metin mesajına ¯\\_(ツ)_/¯ ifadesi ekler", - "Rooster": "Horoz", "Cross-signing public keys:": "Çarpraz-imzalama açık anahtarları:", "Cross-signing private keys:": "Çarpraz-imzalama gizli anahtarları:", "Backup has a valid signature from this user": "Yedek bu kullanıcıdan geçerli anahtara sahip", @@ -1079,7 +1009,6 @@ "Replying": "Cevap yazıyor", "Room %(name)s": "Oda %(name)s", "Share room": "Oda paylaş", - "Community Invites": "Topluluk Davetleri", "System Alerts": "Sistem Uyarıları", "Joining room …": "Odaya giriliyor …", "Loading …": "Yükleniyor …", @@ -1440,8 +1369,6 @@ "Someone is using an unknown session": "Birisi bilinmeyen bir oturum kullanıyor", "Everyone in this room is verified": "Bu odadaki herkes doğrulanmış", "Your user agent": "Kullanıcı aracınız", - "If you cancel now, you won't complete verifying the other user.": "Şimdi iptal ederseniz, diğer kullanıcıyı doğrulamayı tamamlamış olmayacaksınız.", - "If you cancel now, you won't complete verifying your other session.": "Şimdi iptal ederseniz, diğer oturumu doğrulamış olmayacaksınız.", "Setting up keys": "Anahtarları ayarla", "Custom (%(level)s)": "Özel (%(level)s)", "Upload %(count)s other files|other": "%(count)s diğer dosyaları yükle", @@ -1535,8 +1462,6 @@ "Scan this unique code": "Bu eşsiz kodu tara", "or": "veya", "Cancelling…": "İptal ediliyor…", - "Lock": "Kilit", - "Pin": "Şifre", "Your homeserver does not support cross-signing.": "Ana sunucunuz çapraz imzalamayı desteklemiyor.", "exists": "mevcut", "This session is backing up your keys. ": "Bu oturum anahtarlarınızı yedekliyor. ", @@ -1549,12 +1474,9 @@ "Re-request encryption keys from your other sessions.": "Diğer oturumlardan şifreleme anahtarlarını yeniden talep et.", "Encrypted by an unverified session": "Doğrulanmamış bir oturum tarafından şifrelenmiş", "Encrypted by a deleted session": "Silinen bir oturumla şifrelenmiş", - "Invite only": "Sadece davetliler", "Strikethrough": "Üstü çizili", - "Recent rooms": "Güncel odalar", "Reject & Ignore user": "Kullanıcı Reddet & Yoksay", "%(count)s unread messages including mentions.|one": "1 okunmamış bahis.", - "Unread mentions.": "Okunmamış bahisler.", "Could not revoke the invite. The server may be experiencing a temporary problem or you do not have sufficient permissions to revoke the invite.": "Davet geri çekilemiyor. Sunucu geçici bir problem yaşıyor olabilir yada daveti geri çekmek için gerekli izinlere sahip değilsin.", "Mark all as read": "Tümünü okunmuş olarak işaretle", "Incoming Verification Request": "Gelen Doğrulama İsteği", @@ -1700,10 +1622,6 @@ "Are you sure you want to cancel entering passphrase?": "Parola girmeyi iptal etmek istediğinizden emin misiniz?", "Room name or address": "Oda adı ya da adresi", "%(name)s is requesting verification": "%(name)s doğrulama istiyor", - "Use your account to sign in to the latest version": "En son sürümde oturum açmak için hesabınızı kullanın", - "We’re excited to announce Riot is now Element": "Riot'ın artık Element olduğunu duyurmaktan heyecan duyuyoruz", - "Riot is now Element!": "Riot artık Element!", - "Learn More": "", "Sends a message as html, without interpreting it as markdown": "İletiyi MarkDown olarak göndermek yerine HTML olarak gönderir", "Failed to set topic": "Konu belirlenemedi", "Joins room with given address": "Belirtilen adres ile odaya katılır", @@ -1737,25 +1655,5 @@ "You started a call": "Bir çağrı başlattınız", "%(senderName)s started a call": "%(senderName)s bir çağrı başlattı", "Waiting for answer": "Yanıt bekleniyor", - "%(senderName)s is calling": "%(senderName)s arıyor", - "You created the room": "Odayı oluşturdunuz", - "%(senderName)s created the room": "%(senderName)s odayı oluşturdu", - "You made the chat encrypted": "Sohbeti şifrelediniz", - "%(senderName)s made the chat encrypted": "%(senderName)s sohbeti şifreledi", - "You made history visible to new members": "Yeni üyelere sohbet geçmişini görünür yaptınız", - "%(senderName)s made history visible to new members": "%(senderName)s yeni üyelere sohbet geçmişini görünür yaptı", - "You made history visible to anyone": "Sohbet geçmişini herkese görünür yaptınız", - "%(senderName)s made history visible to anyone": "%(senderName)s sohbet geçmişini herkese görünür yaptı", - "You made history visible to future members": "Sohbet geçmişini gelecek kullanıcılara görünür yaptınız", - "%(senderName)s made history visible to future members": "%(senderName)s sohbet geçmişini gelecek kullanıcılara görünür yaptı", - "You were invited": "Davet edildiniz", - "%(targetName)s was invited": "%(targetName)s davet edildi", - "You left": "Ayrıldınız", - "%(targetName)s left": "%(targetName)s ayrıldı", - "You were kicked (%(reason)s)": "Atıldınız (%(reason)s)", - "%(targetName)s was kicked (%(reason)s)": "%(targetName)s atıldı (%(reason)s)", - "You were kicked": "Atıldınız", - "%(targetName)s was kicked": "%(targetName)s atıldı", - "You rejected the invite": "Daveti reddettiniz", - "%(targetName)s rejected the invite": "%(targetName)s daveti reddetti" + "%(senderName)s is calling": "%(senderName)s arıyor" } diff --git a/src/i18n/strings/uk.json b/src/i18n/strings/uk.json index 3bae709451..74d2ded71f 100644 --- a/src/i18n/strings/uk.json +++ b/src/i18n/strings/uk.json @@ -25,7 +25,6 @@ "%(targetName)s accepted an invitation.": "%(targetName)s приймає запрошення.", "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s приймає запрошення від %(displayName)s.", "Access Token:": "Токен доступу:", - "Active call (%(roomName)s)": "Активний виклик (%(roomName)s)", "Add": "Додати", "Add a topic": "Додати тему", "Admin": "Адміністратор", @@ -385,9 +384,6 @@ "Enable URL previews for this room (only affects you)": "Увімкнути попередній перегляд гіперпосилань в цій кімнаті (стосується тільки вас)", "Enable URL previews by default for participants in this room": "Увімкнути попередній перегляд гіперпосилань за умовчанням для учасників цієї кімнати", "Room Colour": "Колір кімнати", - "Incoming voice call from %(name)s": "Вхідний дзвінок від %(name)s", - "Incoming video call from %(name)s": "Вхідний відеодзвінок від %(name)s", - "Incoming call from %(name)s": "Вхідний дзвінок від %(name)s", "Decline": "Відхилити", "Incorrect verification code": "Неправильний код перевірки", "Submit": "Надіслати", @@ -515,9 +511,6 @@ "Send a Direct Message": "Надіслати особисте повідомлення", "Explore Public Rooms": "Дослідити прилюдні кімнати", "Create a Group Chat": "Створити групову балачку", - "Explore": "Дослідити", - "Filter": "Фільтрувати", - "Filter rooms…": "Фільтрувати кімнати…", "Failed to reject invitation": "Не вдалось відхилити запрошення", "This room is not public. You will not be able to rejoin without an invite.": "Ця кімната не є прилюдною. Ви не зможете перепід'єднатись без запрошення.", "Failed to leave room": "Не вдалось залишити кімнату", @@ -535,9 +528,6 @@ "Whether you're using %(brand)s on a device where touch is the primary input mechanism": "Чи використовуєте ви %(brand)s на пристрої, де основним засобом вводження є дотик", "Whether you're using %(brand)s as an installed Progressive Web App": "Чи використовуєте ви %(brand)s як встановлений Progressive Web App", "Your user agent": "Ваш user agent", - "If you cancel now, you won't complete verifying the other user.": "Якщо ви скасуєте зараз, то не завершите звіряння іншого користувача.", - "If you cancel now, you won't complete verifying your other session.": "Якщо ви скасуєте зараз, то не завершите звіряння вашої іншої сесії.", - "If you cancel now, you won't complete your operation.": "Якщо ви скасуєте зараз, то не завершите вашу дію.", "Cancel entering passphrase?": "Скасувати введення парольної фрази?", "Enter passphrase": "Введіть парольну фразу", "Setting up keys": "Налаштовування ключів", @@ -619,10 +609,6 @@ "Go Back": "Назад", "Room name or address": "Назва та адреса кімнати", "%(name)s is requesting verification": "%(name)s робить запит на звірення", - "Use your account to sign in to the latest version": "Увійдіть до останньої версії через свій обліковий запис", - "We’re excited to announce Riot is now Element": "Ми раді повідомити, що Riot тепер називається Element", - "Riot is now Element!": "Riot тепер - Element!", - "Learn More": "Дізнатися більше", "Command error": "Помилка команди", "Sends a message as html, without interpreting it as markdown": "Надсилає повідомлення як HTML, не інтерпритуючи Markdown", "Failed to set topic": "Не вдалося встановити тему", @@ -891,68 +877,7 @@ "Go to Settings": "Перейти до налаштувань", "Compare unique emoji": "Порівняйте унікальні емодзі", "Cancelling…": "Скасування…", - "Dog": "Пес", - "Cat": "Кіт", - "Lion": "Лев", - "Horse": "Кінь", - "Pig": "Свиня", - "Elephant": "Слон", - "Rabbit": "Кріль", - "Panda": "Панда", - "Rooster": "Когут", - "Penguin": "Пінгвін", - "Turtle": "Черепаха", - "Fish": "Риба", - "Octopus": "Восьминіг", - "Moon": "Місяць", - "Cloud": "Хмара", - "Fire": "Вогонь", - "Banana": "Банан", - "Apple": "Яблуко", - "Strawberry": "Полуниця", - "Corn": "Кукурудза", - "Pizza": "Піца", - "Heart": "Серце", - "Smiley": "Посмішка", - "Robot": "Робот", - "Hat": "Капелюх", - "Glasses": "Окуляри", - "Spanner": "Гайковий ключ", - "Thumbs up": "Великий палець вгору", - "Umbrella": "Парасолька", - "Hourglass": "Пісковий годинник", - "Clock": "Годинник", - "Light bulb": "Лампочка", - "Book": "Книга", - "Pencil": "Олівець", - "Paperclip": "Спиначка", - "Scissors": "Ножиці", - "Key": "Ключ", - "Hammer": "Молоток", - "Telephone": "Телефон", - "Flag": "Прапор", - "Train": "Потяг", - "Bicycle": "Велоcипед", - "Aeroplane": "Літак", - "Rocket": "Ракета", - "Trophy": "Приз", - "Ball": "М'яч", - "Guitar": "Гітара", - "Trumpet": "Труба", - "Bell": "Дзвін", - "Anchor": "Якір", - "Headphones": "Навушники", - "Folder": "Тека", - "Pin": "Кнопка", "Accept to continue:": "Прийміть для продовження:", - "Flower": "Квітка", - "Unicorn": "Єдиноріг", - "Butterfly": "Метелик", - "Cake": "Пиріг", - "Tree": "Дерево", - "Cactus": "Кактус", - "Mushroom": "Гриб", - "Globe": "Глобус", "This bridge was provisioned by .": "Цей місток був підготовленим .", "This bridge is managed by .": "Цей міст керується .", "Workspace: %(networkName)s": "Робочий простір: %(networkName)s", @@ -960,9 +885,6 @@ "Show less": "Згорнути", "Show more": "Розгорнути", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Змінення пароля призведе до скидання всіх ключів наскрізного шифрування та унеможливить читання історії листування, якщо тільки ви не експортуєте ваші ключі кімнати та не імпортуєте їх згодом. Це буде вдосконалено у майбутньому.", - "Santa": "Санта Клаус", - "Gift": "Подарунок", - "Lock": "Замок", "Cross-signing and secret storage are not yet set up.": "Перехресне підписування та таємне сховище ще не налагоджені.", "Your homeserver does not support cross-signing.": "Ваш домашній сервер не підтримує кросс-підпис.", "Cross-signing and secret storage are enabled.": "Кросс-підпис та секретне сховище дозволені.", @@ -1136,7 +1058,6 @@ "In encrypted rooms, verify all users to ensure it’s secure.": "У зашифрованих кімнатах звіряйте усіх користувачів щоб переконатись у безпеці спілкування.", "Failed to copy": "Не вдалось скопіювати", "Your display name": "Ваше видиме ім'я", - "COPY": "СКОПІЮВАТИ", "Set a display name:": "Зазначити видиме ім'я:", "Copy": "Скопіювати", "Cancel replying to a message": "Скасувати відповідання на повідомлення", diff --git a/src/i18n/strings/vls.json b/src/i18n/strings/vls.json index 1172804efa..5537d30d02 100644 --- a/src/i18n/strings/vls.json +++ b/src/i18n/strings/vls.json @@ -303,11 +303,6 @@ "Call invitation": "Iproep-uutnodigienge", "Messages sent by bot": "Berichtn verzoundn deur e robot", "When rooms are upgraded": "Wanneer da gesprekkn ipgewoardeerd wordn", - "Active call (%(roomName)s)": "Actieven iproep (%(roomName)s)", - "unknown caller": "ounbekende beller", - "Incoming voice call from %(name)s": "Inkommende sproakiproep van %(name)s", - "Incoming video call from %(name)s": "Inkommende video-iproep van %(name)s", - "Incoming call from %(name)s": "Inkommenden iproep van %(name)s", "Decline": "Weigern", "Accept": "Anveirdn", "The other party cancelled the verification.": "De tegenparty èt de verificoasje geannuleerd.", @@ -319,69 +314,6 @@ "Verify this user by confirming the following emoji appear on their screen.": "Verifieert deze gebruuker deur te bevestign da zyn/heur scherm de volgende emoji toogt.", "Verify this user by confirming the following number appears on their screen.": "Verifieert deze gebruuker deur te bevestign da zyn/heur scherm ’t volgend getal toogt.", "Unable to find a supported verification method.": "Kan geen oundersteunde verificoasjemethode viendn.", - "Dog": "Hound", - "Cat": "Katte", - "Lion": "Leeuw", - "Horse": "Peird", - "Unicorn": "Eenhoorn", - "Pig": "Zwyn", - "Elephant": "Olifant", - "Rabbit": "Keun", - "Panda": "Panda", - "Rooster": "Hoane", - "Penguin": "Pinguin", - "Turtle": "Schildpadde", - "Fish": "Vis", - "Octopus": "Octopus", - "Butterfly": "Beutervlieg", - "Flower": "Bloem", - "Tree": "Boom", - "Cactus": "Cactus", - "Mushroom": "Paddestoel", - "Globe": "Eirdbol", - "Moon": "Moane", - "Cloud": "Wolk", - "Fire": "Vier", - "Banana": "Banoan", - "Apple": "Appel", - "Strawberry": "Freize", - "Corn": "Mais", - "Pizza": "Pizza", - "Cake": "Toarte", - "Heart": "Herte", - "Smiley": "Smiley", - "Robot": "Robot", - "Hat": "Hoed", - "Glasses": "Bril", - "Spanner": "Moersleuter", - "Santa": "Kestman", - "Thumbs up": "Duum omhooge", - "Umbrella": "Paraplu", - "Hourglass": "Zandloper", - "Clock": "Klok", - "Gift": "Cadeau", - "Light bulb": "Gloeilampe", - "Book": "Boek", - "Pencil": "Potlood", - "Paperclip": "Paperclip", - "Scissors": "Schoar", - "Key": "Sleuter", - "Hammer": "Oamer", - "Telephone": "Telefong", - "Flag": "Vlagge", - "Train": "Tring", - "Bicycle": "Veloo", - "Aeroplane": "Vlieger", - "Rocket": "Rakette", - "Trophy": "Trofee", - "Ball": "Bolle", - "Guitar": "Gitoar", - "Trumpet": "Trompette", - "Bell": "Belle", - "Anchor": "Anker", - "Headphones": "Koptelefong", - "Folder": "Mappe", - "Pin": "Pinne", "Failed to upload profile picture!": "Iploaden van profielfoto es mislukt!", "Upload new:": "Loadt der e nieuwen ip:", "No display name": "Geen weergavenoame", @@ -662,7 +594,6 @@ "Forget room": "Gesprek vergeetn", "Search": "Zoekn", "Share room": "Gesprek deeln", - "Community Invites": "Gemeenschapsuutnodigiengn", "Invites": "Uutnodigiengn", "Favourites": "Favorietn", "Start chat": "Gesprek beginn", @@ -1012,7 +943,6 @@ "Share Community": "Gemeenschap deeln", "Share Room Message": "Bericht uut gesprek deeln", "Link to selected message": "Koppelienge noa geselecteerd bericht", - "COPY": "KOPIEERN", "To help us prevent this in future, please send us logs.": "Gelieve uus logboekn te stuurn vo dit in de toekomst t’helpn voorkomn.", "Missing session data": "Sessiegegeevns ountbreekn", "Some session data, including encrypted message keys, is missing. Sign out and sign in to fix this, restoring keys from backup.": "Sommige sessiegegeevns, inclusief sleuters vo versleuterde berichtn, ountbreekn. Meldt jen af en were an vo dit ip te lossn, en herstelt de sleuters uut den back-up.", @@ -1093,8 +1023,6 @@ "Submit": "Bevestign", "Start authentication": "Authenticoasje beginn", "Unable to validate homeserver/identity server": "Kostege de thuus-/identiteitsserver nie valideern", - "Your Modular server": "Joun Modular-server", - "Enter the location of your Modular homeserver. It may use your own domain name or be a subdomain of modular.im.": "Gift de locoasje van je Modular-thuusserver in. Deze kan jen eigen domeinnoame gebruukn, of e subdomein van modular.im zyn.", "Server Name": "Servernoame", "The email field must not be blank.": "’t E-mailveld meug nie leeg zyn.", "The username field must not be blank.": "’t Gebruukersnoamveld meug nie leeg zyn.", @@ -1144,7 +1072,6 @@ "Couldn't load page": "Kostege ’t blad nie loadn", "You must register to use this functionality": "Je moe je registreern vo deze functie te gebruukn", "You must join the room to see its files": "Je moe tout ’t gesprek toetreedn vo de bestandn te kunn zien", - "There are no visible files in this room": "’t Zyn geen zichtboare bestandn in dit gesprek", "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

HTML vo joun gemeenschapsblad

\n

\n Gebruukt de lange beschryvienge vo nieuwe leden in de gemeenschap t’introduceern of vo belangryke koppeliengn an te biedn.\n

\n

\n Je ku zelfst ‘img’-tags gebruukn.\n

\n", "Add rooms to the community summary": "Voegt gesprekkn an ’t gemeenschapsoverzicht toe", "Which rooms would you like to add to this summary?": "Welke gesprekkn zou j’an dit overzicht willn toevoegn?", @@ -1207,7 +1134,6 @@ "Error whilst fetching joined communities": "’t Is e foute ipgetreedn by ’t iphoaln van de gemeenschappn da je lid van zyt", "Create a new community": "Makt e nieuwe gemeenschap an", "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Makt e gemeenschap an vo gebruukers en gesprekkn by makoar te briengn! Schep met e startblad ip moet jen eigen pleksje in ’t Matrix-universum.", - "You have no visible notifications": "J’è geen zichtboare meldiengn", "%(brand)s failed to get the protocol list from the homeserver. The homeserver may be too old to support third party networks.": "%(brand)s kostege de protocollyste nie iphoaln van de thuusserver. Meugliks is de thuusserver te oud vo derdepartynetwerkn t’oundersteunn.", "%(brand)s failed to get the public room list.": "%(brand)s kostege de lyste met openboare gesprekkn nie verkrygn.", "The homeserver may be unavailable or overloaded.": "De thuusserver is meugliks ounbereikboar of overbelast.", @@ -1252,7 +1178,6 @@ "Tried to load a specific point in this room's timeline, but was unable to find it.": "Geprobeerd voor e gegeven punt in de tydslyn van dit gesprek te loadn, moar kostege dit nie viendn.", "Failed to load timeline position": "Loadn van tydslynpositie is mislukt", "Guest": "Gast", - "Your profile": "Joun profiel", "Uploading %(filename)s and %(count)s others|other": "%(filename)s en %(count)s andere wordn ipgeloadn", "Uploading %(filename)s and %(count)s others|zero": "%(filename)s wordt ipgeloadn", "Uploading %(filename)s and %(count)s others|one": "%(filename)s en %(count)s ander wordn ipgeloadn", diff --git a/src/i18n/strings/zh_Hans.json b/src/i18n/strings/zh_Hans.json index da53880409..bdb5afb1f5 100644 --- a/src/i18n/strings/zh_Hans.json +++ b/src/i18n/strings/zh_Hans.json @@ -149,9 +149,6 @@ "Failed to upload profile picture!": "头像上传失败!", "Home": "主页面", "Import": "导入", - "Incoming call from %(name)s": "来自 %(name)s 的通话请求", - "Incoming video call from %(name)s": "来自 %(name)s 的视频通话请求", - "Incoming voice call from %(name)s": "来自 %(name)s 的语音通话请求", "Incorrect username and/or password.": "用户名或密码错误。", "%(senderName)s invited %(targetName)s.": "%(senderName)s 邀请了 %(targetName)s。", "Invited": "已邀请", @@ -265,7 +262,6 @@ "Unban": "解除封禁", "Unable to capture screen": "无法录制屏幕", "Unable to enable Notifications": "无法启用通知", - "unknown caller": "未知呼叫者", "Unnamed Room": "未命名的聊天室", "Upload avatar": "上传头像", "Upload Failed": "上传失败", @@ -273,7 +269,6 @@ "Usage": "用法", "Who can read history?": "谁可以阅读历史消息?", "You are not in this room.": "您不在此聊天室中。", - "You have no visible notifications": "没有可见的通知", "Not a valid %(brand)s keyfile": "不是有效的 %(brand)s 密钥文件", "%(targetName)s accepted an invitation.": "%(targetName)s 已接受邀请。", "Publish this room to the public in %(domain)s's room directory?": "是否将此聊天室发布至 %(domain)s 的聊天室目录中?", @@ -284,7 +279,6 @@ "%(senderName)s requested a VoIP conference.": "%(senderName)s 已请求发起 VoIP 会议。", "Seen by %(userName)s at %(dateTime)s": "在 %(dateTime)s 被 %(userName)s 看到", "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s 接受了 %(displayName)s 的邀请。", - "Active call (%(roomName)s)": "当前通话 (来自聊天室 %(roomName)s)", "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s 将级别调整至 %(powerLevelDiffText)s 。", "Deops user with given id": "按照 ID 取消特定用户的管理员权限", "Join as voice or video.": "通过 语言 或者 视频加入.", @@ -317,7 +311,6 @@ "You seem to be uploading files, are you sure you want to quit?": "您似乎正在上传文件,确定要退出吗?", "Upload an avatar:": "上传头像:", "An error occurred: %(error_string)s": "发生了一个错误: %(error_string)s", - "There are no visible files in this room": "此聊天室中没有可见的文件", "Active call": "当前通话", "Error decrypting audio": "解密音频时出错", "Error decrypting image": "解密图像时出错", @@ -480,7 +473,6 @@ "Send an encrypted reply…": "发送加密回复…", "Send an encrypted message…": "发送加密消息…", "Replying": "正在回复", - "Community Invites": "社区邀请", "Banned by %(displayName)s": "被 %(displayName)s 封禁", "Members only (since the point in time of selecting this option)": "仅成员(从选中此选项时开始)", "Members only (since they were invited)": "只有成员(从他们被邀请开始)", @@ -808,7 +800,6 @@ "Add users to the community summary": "添加用户至社区简介", "Collapse Reply Thread": "收起回复", "Share Message": "分享消息", - "COPY": "复制", "Share Room Message": "分享聊天室消息", "Share Community": "分享社区", "Share User": "分享用户", @@ -966,69 +957,6 @@ "Verify this user by confirming the following emoji appear on their screen.": "通过在其屏幕上显示以下表情符号来验证此用户。", "Verify this user by confirming the following number appears on their screen.": "通过在其屏幕上显示以下数字来验证此用户。", "Unable to find a supported verification method.": "无法找到支持的验证方法。", - "Dog": "狗", - "Cat": "猫", - "Lion": "狮子", - "Horse": "马", - "Unicorn": "独角兽", - "Pig": "猪", - "Elephant": "大象", - "Rabbit": "兔子", - "Panda": "熊猫", - "Rooster": "公鸡", - "Penguin": "企鹅", - "Turtle": "乌龟", - "Fish": "鱼", - "Octopus": "章鱼", - "Butterfly": "蝴蝶", - "Flower": "花", - "Tree": "树", - "Cactus": "仙人掌", - "Mushroom": "蘑菇", - "Globe": "地球", - "Moon": "月亮", - "Cloud": "云", - "Fire": "火", - "Banana": "香蕉", - "Apple": "苹果", - "Strawberry": "草莓", - "Corn": "玉米", - "Pizza": "披萨", - "Cake": "蛋糕", - "Heart": "心", - "Smiley": "微笑", - "Robot": "机器人", - "Hat": "帽子", - "Glasses": "眼镜", - "Spanner": "扳手", - "Santa": "圣诞老人", - "Thumbs up": "竖大拇指", - "Umbrella": "伞", - "Hourglass": "沙漏", - "Clock": "时钟", - "Gift": "礼物", - "Light bulb": "灯泡", - "Book": "书", - "Pencil": "铅笔", - "Paperclip": "回形针", - "Scissors": "剪刀", - "Key": "钥匙", - "Hammer": "锤子", - "Telephone": "电话", - "Flag": "旗子", - "Train": "火车", - "Bicycle": "自行车", - "Aeroplane": "飞机", - "Rocket": "火箭", - "Trophy": "奖杯", - "Ball": "球", - "Guitar": "吉他", - "Trumpet": "喇叭", - "Bell": "铃铛", - "Anchor": "锚", - "Headphones": "耳机", - "Folder": "文件夹", - "Pin": "别针", "Yes": "是", "No": "拒绝", "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.": "我们已向您发送了一封电子邮件,以验证您的地址。 请按照里面的说明操作,然后单击下面的按钮。", @@ -1140,8 +1068,6 @@ "This homeserver would like to make sure you are not a robot.": "此主服务器想要确认您不是机器人。", "Please review and accept all of the homeserver's policies": "请阅读并接受该主服务器的所有政策", "Please review and accept the policies of this homeserver:": "请阅读并接受此主服务器的政策:", - "Your Modular server": "您的模组服务器", - "Enter the location of your Modular homeserver. It may use your own domain name or be a subdomain of modular.im.": "输入您的模组主服务器的位置。它可能使用的是您自己的域名或者 modular.im 的子域名。", "Server Name": "服务器名称", "The username field must not be blank.": "必须输入用户名。", "Username": "用户名", @@ -1274,9 +1200,6 @@ "At this time it is not possible to reply with a file. Would you like to upload this file without replying?": "当前无法在回复中附加文件。您想要仅上传此文件而不回复吗?", "The file '%(fileName)s' failed to upload.": "上传文件 ‘%(fileName)s’ 失败。", "The server does not support the room version specified.": "服务器不支持指定的聊天室版本。", - "If you cancel now, you won't complete verifying the other user.": "如果现在取消,您将无法完成验证其他用户。", - "If you cancel now, you won't complete verifying your other session.": "如果现在取消,您将无法完成验证您的其他会话。", - "If you cancel now, you won't complete your operation.": "如果现在取消,您将无法完成您的操作。", "Cancel entering passphrase?": "取消输入密码?", "Setting up keys": "设置按键", "Verify this session": "验证此会话", @@ -1376,9 +1299,6 @@ "Every page you use in the app": "您在应用中使用的每个页面", "Are you sure you want to cancel entering passphrase?": "确定要取消输入密码?", "Go Back": "后退", - "Use your account to sign in to the latest version": "使用您的帐户登录到最新版本", - "We’re excited to announce Riot is now Element": "我们很高兴地宣布Riot现在更名为Element", - "Learn More": "了解更多", "Unrecognised room address:": "无法识别的聊天室地址:", "Light": "浅色", "Dark": "深色", @@ -1436,14 +1356,6 @@ "%(senderName)s started a call": "%(senderName)s开始了通话", "Waiting for answer": "等待接听", "%(senderName)s is calling": "%(senderName)s正在通话", - "You created the room": "您创建了聊天室", - "%(senderName)s created the room": "%(senderName)s创建了聊天室", - "You made the chat encrypted": "您启用了聊天加密", - "%(senderName)s made the chat encrypted": "%(senderName)s启用了聊天加密", - "You made history visible to new members": "您设置了历史记录对新成员可见", - "%(senderName)s made history visible to new members": "%(senderName)s设置了历史记录对新成员可见", - "You made history visible to anyone": "您设置了历史记录对所有人可见", - "Riot is now Element!": "Riot现在是Element了!", "Support adding custom themes": "支持添加自定义主题", "Font size": "字体大小", "Use custom size": "使用自定义大小", @@ -1478,7 +1390,6 @@ "They match": "它们匹配", "They don't match": "它们不匹配", "To be secure, do this in person or use a trusted way to communicate.": "为了安全,请当面完成或使用信任的方法交流。", - "Lock": "锁", "Your server isn't responding to some requests.": "您的服务器没有响应一些请求。", "From %(deviceName)s (%(deviceId)s)": "来自 %(deviceName)s (%(deviceId)s)", "Decline (%(counter)s)": "拒绝 (%(counter)s)", @@ -1725,7 +1636,6 @@ "Room %(name)s": "聊天室 %(name)s", "No recently visited rooms": "没有最近访问过的聊天室", "People": "联系人", - "Create room": "创建聊天室", "Custom Tag": "自定义标签", "Joining room …": "正在加入聊天室…", "Loading …": "正在加载…", @@ -2040,11 +1950,6 @@ "Use this session to verify your new one, granting it access to encrypted messages:": "使用此会话以验证您的新会话,并允许其访问加密信息:", "If you didn’t sign in to this session, your account may be compromised.": "如果您没有登录进此会话,您的账户可能已受损。", "This wasn't me": "这不是我", - "Use your account to sign in to the latest version of the app at ": "使用您的账户在 登录此应用的最新版", - "You’re already signed in and good to go here, but you can also grab the latest versions of the app on all platforms at element.io/get-started.": "您已经登录且一切已就绪,但您也可以在 element.io/get-started 获取此应用在全平台上的最新版。", - "Go to Element": "前往 Element", - "We’re excited to announce Riot is now Element!": "我们很兴奋地宣布 Riot 现在是 Element 了!", - "Learn more at element.io/previously-riot": "访问 element.io/previously-riot 了解更多", "Please fill why you're reporting.": "请填写您为何做此报告。", "Report Content to Your Homeserver Administrator": "向您的主服务器管理员举报内容", "Reporting this message will send its unique 'event ID' to the administrator of your homeserver. If messages in this room are encrypted, your homeserver administrator will not be able to read the message text or view any files or images.": "举报此消息会将其唯一的「事件 ID」发送给您的主服务器的管理员。如果此聊天室中的消息被加密,您的主服务器管理员将不能阅读消息文本,也不能查看任何文件或图片。", @@ -2204,7 +2109,6 @@ "%(brand)s Web": "%(brand)s 网页版", "%(brand)s Desktop": "%(brand)s 桌面版", "%(brand)s iOS": "%(brand)s iOS", - "%(brand)s X for Android": "%(brand)s X for Android", "or another cross-signing capable Matrix client": "或者别的可以交叉签名的 Matrix 客户端", "Your new session is now verified. It has access to your encrypted messages, and other users will see it as trusted.": "您的新会话现已被验证。它可以访问您的加密消息,别的用户也会视其为受信任的。", "Your new session is now verified. Other users will see it as trusted.": "您的新会话现已被验证。别的用户会视其为受信任的。", diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json index b8fc2b43fb..828b80417f 100644 --- a/src/i18n/strings/zh_Hant.json +++ b/src/i18n/strings/zh_Hant.json @@ -162,7 +162,6 @@ "Accept": "接受", "%(targetName)s accepted an invitation.": "%(targetName)s 已接受邀請。", "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s 已接受 %(displayName)s 的邀請。", - "Active call (%(roomName)s)": "活躍的通話(%(roomName)s)", "Add": "新增", "Admin Tools": "管理員工具", "No Microphones detected": "未偵測到麥克風", @@ -196,9 +195,6 @@ "Failed to upload profile picture!": "上傳基本資料圖片失敗!", "Home": "家", "Import": "匯入", - "Incoming call from %(name)s": "從 %(name)s 而來的來電", - "Incoming video call from %(name)s": "從 %(name)s 而來的視訊來電", - "Incoming voice call from %(name)s": "從 %(name)s 而來的語音來電", "Incorrect username and/or password.": "不正確的使用者名稱和/或密碼。", "%(senderName)s invited %(targetName)s.": "%(senderName)s 邀請了 %(targetName)s。", "Invited": "已邀請", @@ -269,7 +265,6 @@ "Unable to verify email address.": "無法驗證電子郵件。", "Unban": "解除禁止", "%(senderName)s unbanned %(targetName)s.": "%(senderName)s 解除阻擋 %(targetName)s。", - "unknown caller": "不明來電", "Unmute": "解除靜音", "Unnamed Room": "未命名的聊天室", "Uploading %(filename)s and %(count)s others|zero": "正在上傳 %(filename)s", @@ -300,7 +295,6 @@ "You do not have permission to post to this room": "您沒有權限在此房間發言", "You have disabled URL previews by default.": "您已預設停用 URL 預覽。", "You have enabled URL previews by default.": "您已預設啟用 URL 預覽。", - "You have no visible notifications": "您沒有可見的通知", "You must register to use this functionality": "您必須註冊以使用此功能", "You need to be able to invite users to do that.": "您需要邀請使用者來做這件事。", "You need to be logged in.": "您需要登入。", @@ -331,7 +325,6 @@ "Upload an avatar:": "上傳大頭貼:", "This server does not support authentication with a phone number.": "這個伺服器不支援以電話號碼認證。", "An error occurred: %(error_string)s": "遇到錯誤:%(error_string)s", - "There are no visible files in this room": "此房間中沒有可見的檔案", "Room": "房間", "Connectivity to the server has been lost.": "至伺服器的連線已遺失。", "Sent messages will be stored until your connection has returned.": "傳送的訊息會在您的連線恢復前先儲存起來。", @@ -471,7 +464,6 @@ "Unnamed room": "未命名的聊天室", "World readable": "所有人可讀", "Guests can join": "訪客可加入", - "Community Invites": "社群邀請", "Banned by %(displayName)s": "被 %(displayName)s 阻擋", "Members only (since the point in time of selecting this option)": "僅成員(自選取此選項開始)", "Members only (since they were invited)": "僅成員(自他們被邀請開始)", @@ -818,7 +810,6 @@ "Share Community": "分享社群", "Share Room Message": "分享聊天室訊息", "Link to selected message": "連結到選定的訊息", - "COPY": "複製", "Share Message": "分享訊息", "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "在加密的聊天室中(這個就是),URL 預覽會預設停用以確保您的家伺服器(預覽生成的地方)無法在這個聊天室中收集關於您看到的連結的資訊。", "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "當某人在他們的訊息中放置 URL 時,URL 預覽可以顯示如標題、描述與網頁上的圖片等等來給您更多關於該連結的資訊。", @@ -1054,8 +1045,6 @@ "Go back": "返回", "Update status": "更新狀態", "Set status": "設定狀態", - "Your Modular server": "您的模組化伺服器", - "Enter the location of your Modular homeserver. It may use your own domain name or be a subdomain of modular.im.": "輸入您模組化伺服器的位置。它可能會使用您自己的域名或是 modular.im 的子網域。", "Server Name": "伺服器名稱", "The username field must not be blank.": "使用者欄位不能留空。", "Username": "使用者名稱", @@ -1094,68 +1083,6 @@ "Group & filter rooms by custom tags (refresh to apply changes)": "透過自訂標籤篩選群組與聊天室(重新整理以套用變更)", "Verify this user by confirming the following emoji appear on their screen.": "透過確認顯示在他們螢幕下方的顏文字來確認使用者。", "Unable to find a supported verification method.": "找不到支援的驗證方式。", - "Dog": "狗", - "Cat": "貓", - "Lion": "獅", - "Horse": "馬", - "Unicorn": "獨角獸", - "Pig": "豬", - "Elephant": "象", - "Rabbit": "兔", - "Panda": "熊貓", - "Rooster": "公雞", - "Penguin": "企鵝", - "Turtle": "烏龜", - "Fish": "魚", - "Octopus": "章魚", - "Butterfly": "蝴蝶", - "Flower": "花", - "Tree": "樹", - "Cactus": "仙人掌", - "Mushroom": "蘑菇", - "Globe": "地球", - "Moon": "月亮", - "Cloud": "雲", - "Fire": "火", - "Banana": "香蕉", - "Apple": "蘋果", - "Strawberry": "草苺", - "Corn": "玉米", - "Pizza": "披薩", - "Cake": "蛋糕", - "Heart": "心", - "Smiley": "微笑", - "Robot": "機器人", - "Hat": "帽子", - "Glasses": "眼鏡", - "Spanner": "扳手", - "Santa": "聖誕老人", - "Thumbs up": "豎起大姆指", - "Umbrella": "雨傘", - "Hourglass": "沙漏", - "Clock": "時鐘", - "Gift": "禮物", - "Light bulb": "燈泡", - "Book": "書", - "Pencil": "鉛筆", - "Paperclip": "迴紋針", - "Key": "鑰匙", - "Hammer": "鎚子", - "Telephone": "電話", - "Flag": "旗子", - "Train": "火車", - "Bicycle": "腳踏車", - "Aeroplane": "飛機", - "Rocket": "火箭", - "Trophy": "獎盃", - "Ball": "球", - "Guitar": "吉他", - "Trumpet": "喇叭", - "Bell": "鈴", - "Anchor": "錨", - "Headphones": "耳機", - "Folder": "資料夾", - "Pin": "別針", "This homeserver would like to make sure you are not a robot.": "此家伺服器想要確保您不是機器人。", "Change": "變更", "Couldn't load page": "無法載入頁面", @@ -1192,7 +1119,6 @@ "%(senderDisplayName)s disabled flair for %(groups)s in this room.": "%(senderDisplayName)s 為此聊天室中的 %(groups)s 停用鑑別能力。", "%(senderDisplayName)s enabled flair for %(newGroups)s and disabled flair for %(oldGroups)s in this room.": "%(senderDisplayName)s 為此聊天室中的 %(newGroups)s 啟用鑑別能力,並為 %(oldGroups)s 停用。", "Show read receipts sent by other users": "顯示從其他使用者傳送的讀取回條", - "Scissors": "剪刀", "Error updating main address": "更新主要位置時發生錯誤", "There was an error updating the room's main address. It may not be allowed by the server or a temporary failure occurred.": "更新聊天室的主要位置時發生錯誤。可能是不被伺服器允許或是遇到暫時性的錯誤。", "Error updating flair": "更新鑑別能力時發生錯誤", @@ -1337,7 +1263,6 @@ "Some characters not allowed": "不允許某些字元", "Create your Matrix account on ": "在 上建立您的 Matrix 帳號", "Add room": "新增聊天室", - "Your profile": "您的簡介", "Your Matrix account on ": "您在 上的 Matrix 帳號", "Failed to get autodiscovery configuration from server": "從伺服器取得自動探索設定失敗", "Invalid base_url for m.homeserver": "無效的 m.homeserver base_url", @@ -1501,9 +1426,6 @@ "Reporting this message will send its unique 'event ID' to the administrator of your homeserver. If messages in this room are encrypted, your homeserver administrator will not be able to read the message text or view any files or images.": "回報此訊息將會傳送其獨一無二的「活動 ID」給您家伺服器的管理員。如果此聊天室中的訊息已加密,您的家伺服器管理員將無法閱讀訊息文字或檢視任何檔案或圖片。", "Send report": "傳送回報", "Report Content": "回報內容", - "Explore": "探索", - "Filter": "過濾器", - "Filter rooms…": "過濾聊天室……", "Preview": "預覽", "View": "檢視", "Find a room…": "尋找聊天室……", @@ -1535,7 +1457,6 @@ "Clear cache and reload": "清除快取並重新載入", "%(count)s unread messages including mentions.|other": "包含提及有 %(count)s 則未讀訊息。", "%(count)s unread messages.|other": "%(count)s 則未讀訊息。", - "Unread mentions.": "未讀提及。", "Show image": "顯示圖片", "Please create a new issue on GitHub so that we can investigate this bug.": "請在 GitHub 上建立新議題,這樣我們才能調查這個臭蟲。", "Missing captcha public key in homeserver configuration. Please report this to your homeserver administrator.": "家伺服器設定中遺失驗證碼公開金鑰。請向您的家伺服器管理員回報。", @@ -1571,7 +1492,6 @@ "Jump to first unread room.": "跳到第一個未讀的聊天室。", "Jump to first invite.": "跳到第一個邀請。", "Room %(name)s": "聊天室 %(name)s", - "Recent rooms": "最近的聊天室", "No identity server is configured so you cannot add an email address in order to reset your password in the future.": "未設定身份識別伺服器,所以您無法新增電子郵件以在未來重設您的密碼。", "%(count)s unread messages including mentions.|one": "1 則未讀的提及。", "%(count)s unread messages.|one": "1 則未讀的訊息。", @@ -1741,7 +1661,6 @@ "Suggestions": "建議", "Failed to find the following users": "找不到以下使用者", "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s": "以下使用者可能不存在或無效,且無法被邀請:%(csvNames)s", - "Lock": "鎖定", "Restore": "還原", "a few seconds ago": "數秒前", "about a minute ago": "大約一分鐘前", @@ -1779,7 +1698,6 @@ "Send as message": "以訊息傳送", "This room is end-to-end encrypted": "此聊天室已端到端加密", "Everyone in this room is verified": "此聊天室中每個人都已驗證", - "Invite only": "僅邀請", "Send a reply…": "傳送回覆……", "Send a message…": "傳送訊息……", "Reject & Ignore user": "回絕並忽略使用者", @@ -1922,8 +1840,6 @@ "Create key backup": "建立金鑰備份", "Message downloading sleep time(ms)": "訊息下載休眠時間(毫秒)", "Indexed rooms:": "已索引的聊天室:", - "If you cancel now, you won't complete verifying the other user.": "如果您現在取消,您將無法完成驗證其他使用者。", - "If you cancel now, you won't complete verifying your other session.": "如果您現在取消,您將無法完成驗證您其他的工作階段。", "Cancel entering passphrase?": "取消輸入通關密語?", "Show typing notifications": "顯示打字通知", "Reset cross-signing and secret storage": "重設交叉簽章與秘密儲存空間", @@ -2134,7 +2050,6 @@ "Syncing...": "正在同步……", "Signing In...": "正在登入……", "If you've joined lots of rooms, this might take a while": "如果您已加入很多聊天室,這可能需要一點時間", - "If you cancel now, you won't complete your operation.": "如果您現在取消,您將無法完成您的操作。", "Verify other session": "驗證其他工作階段", "Unable to access secret storage. Please verify that you entered the correct recovery passphrase.": "無法存取秘密儲存空間。請驗證您是否輸入正確的復原通關密語。", "Backup could not be decrypted with this recovery key: please verify that you entered the correct recovery key.": "備份無法使用此復原金鑰解密:請驗證您是否輸入正確的復原金鑰。", @@ -2190,8 +2105,6 @@ "Jump to oldest unread message": "跳至最舊的未讀訊息", "Upload a file": "上傳檔案", "IRC display name width": "IRC 顯示名稱寬度", - "Create room": "建立聊天室", - "Font scaling": "字型縮放", "Font size": "字型大小", "Size must be a number": "大小必須為數字", "Custom font size can only be between %(min)s pt and %(max)s pt": "自訂字型大小僅能為 %(min)s 點至 %(max)s 點間", @@ -2243,10 +2156,6 @@ "Feedback": "回饋", "No recently visited rooms": "沒有最近造訪過的聊天室", "Sort by": "排序方式", - "Unread rooms": "未讀聊天室", - "Always show first": "一律先顯示", - "Show": "顯示", - "Message preview": "訊息預覽", "List options": "列表選項", "Show %(count)s more|other": "再顯示 %(count)s 個", "Show %(count)s more|one": "再顯示 %(count)s 個", @@ -2261,7 +2170,6 @@ "Looks good!": "看起來不錯!", "Use Recovery Key or Passphrase": "使用復原金鑰或通關密語", "Use Recovery Key": "使用復原金鑰", - "Use the improved room list (will refresh to apply changes)": "使用改進的聊天室清單(將會重新整理以套用變更)", "Use custom size": "使用自訂大小", "Hey you. You're the best!": "你是最棒的!", "Message layout": "訊息佈局", @@ -2280,50 +2188,9 @@ "%(senderName)s started a call": "%(senderName)s 開始了通話", "Waiting for answer": "正在等待回應", "%(senderName)s is calling": "%(senderName)s 正在通話", - "You created the room": "您建立了聊天室", - "%(senderName)s created the room": "%(senderName)s 建立了聊天室", - "You made the chat encrypted": "您讓聊天加密", - "%(senderName)s made the chat encrypted": "%(senderName)s 讓聊天加密", - "You made history visible to new members": "您讓歷史紀錄對新成員可見", - "%(senderName)s made history visible to new members": "%(senderName)s 讓歷史紀錄對新成員可見", - "You made history visible to anyone": "您讓歷史紀錄對所有人可見", - "%(senderName)s made history visible to anyone": "%(senderName)s 讓歷史紀錄對所有人可見", - "You made history visible to future members": "您讓歷史紀錄對未來成員可見", - "%(senderName)s made history visible to future members": "%(senderName)s 讓歷史紀錄對未來成員可見", - "You were invited": "您被邀請", - "%(targetName)s was invited": "%(targetName)s 被邀請", - "You left": "您離開", - "%(targetName)s left": "%(targetName)s 離開", - "You were kicked (%(reason)s)": "您被踢除(%(reason)s)", - "%(targetName)s was kicked (%(reason)s)": "%(targetName)s 被踢除(%(reason)s)", - "You were kicked": "您被踢除", - "%(targetName)s was kicked": "%(targetName)s 被踢除", - "You rejected the invite": "您回絕了邀請", - "%(targetName)s rejected the invite": "%(targetName)s 回絕了邀請", - "You were uninvited": "您被取消邀請", - "%(targetName)s was uninvited": "%(targetName)s 被取消邀請", - "You were banned (%(reason)s)": "您被封鎖(%(reason)s)", - "%(targetName)s was banned (%(reason)s)": "%(targetName)s 被封鎖(%(reason)s)", - "You were banned": "您被封鎖", - "%(targetName)s was banned": "%(targetName)s 被封鎖", - "You joined": "您加入", - "%(targetName)s joined": "%(targetName)s 加入", - "You changed your name": "您變更了您的名稱", - "%(targetName)s changed their name": "%(targetName)s 變更了他們的名稱", - "You changed your avatar": "您變更了您的大頭貼", - "%(targetName)s changed their avatar": "%(targetName)s 變更了他們的大頭貼", - "%(senderName)s %(emote)s": "%(senderName)s %(emote)s", "%(senderName)s: %(message)s": "%(senderName)s: %(message)s", - "You changed the room name": "您變更了聊天室名稱", - "%(senderName)s changed the room name": "%(senderName)s 變更了聊天室名稱", "%(senderName)s: %(reaction)s": "%(senderName)s: %(reaction)s", "%(senderName)s: %(stickerName)s": "%(senderName)s: %(stickerName)s", - "You uninvited %(targetName)s": "您取消邀請了 %(targetName)s", - "%(senderName)s uninvited %(targetName)s": "%(senderName)s 取消邀請了 %(targetName)s", - "You invited %(targetName)s": "您邀請了 %(targetName)s", - "%(senderName)s invited %(targetName)s": "%(senderName)s 邀請了 %(targetName)s", - "You changed the room topic": "您變更了聊天室主題", - "%(senderName)s changed the room topic": "%(senderName)s 變更了聊天室主題", "New spinner design": "新的微調器設計", "Use a more compact ‘Modern’ layout": "使用更簡潔的「現代」佈局", "Message deleted on %(date)s": "訊息刪除於 %(date)s", @@ -2348,10 +2215,6 @@ "Confirm Security Phrase": "確認安全密語", "Save your Security Key": "儲存您的安全金鑰", "Are you sure you want to cancel entering passphrase?": "您確定您想要取消輸入通關密語嗎?", - "Use your account to sign in to the latest version": "使用您的帳號以登入到最新版本", - "We’re excited to announce Riot is now Element": "我們很高興地宣佈 Riot 現在變為 Element 了", - "Riot is now Element!": "Riot 現在變為 Element 了!", - "Learn More": "取得更多資訊", "Enable advanced debugging for the room list": "啟用聊天室清單的進階除錯", "Enable experimental, compact IRC style layout": "啟用實驗性、簡潔的 IRC 風格佈局", "Unknown caller": "未知的來電者", @@ -2363,8 +2226,6 @@ "You might have configured them in a client other than %(brand)s. You cannot tune them in %(brand)s but they still apply.": "您可能已在 %(brand)s 以外的客戶端設定它們了。您無法以 %(brand)s 調整,但仍然適用。", "Set the name of a font installed on your system & %(brand)s will attempt to use it.": "設定您系統上安裝的字型名稱,%(brand)s 將會嘗試使用它。", "%(brand)s version:": "%(brand)s 版本:", - "Make this room low priority": "將此聊天室設為較低優先程度", - "Low priority rooms show up at the bottom of your room list in a dedicated section at the bottom of your room list": "低優先程度的聊天室會顯示在您聊天室清單底部的專用區域中", "Show rooms with unread messages first": "先顯示有未讀訊息的聊天室", "Show previews of messages": "顯示訊息預覽", "Use default": "使用預設值", @@ -2377,11 +2238,6 @@ "Edited at %(date)s": "編輯於 %(date)s", "Click to view edits": "點擊以檢視編輯", "If the other version of %(brand)s is still open in another tab, please close it as using %(brand)s on the same host with both lazy loading enabled and disabled simultaneously will cause issues.": "如果其他版本的 %(brand)s 仍在其他分頁中開啟,請關閉它,因為在同一主機上使用同時啟用與停用惰性載入的 %(brand)s 可能會造成問題。", - "Use your account to sign in to the latest version of the app at ": "使用您的帳號以登入到最新版本的應用程式於 ", - "You’re already signed in and good to go here, but you can also grab the latest versions of the app on all platforms at element.io/get-started.": "您已登入並可在此處進行存取,但您可以在 element.io/get-started 取得所有平臺的最新版本的應用程式。", - "Go to Element": "到 Element", - "We’re excited to announce Riot is now Element!": "我們很高興地宣佈 Riot 現在變為 Element 了!", - "Learn more at element.io/previously-riot": "在 element.io/previously-riot 取得更多資訊", "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use %(brand)s with an existing Matrix account on a different homeserver.": "您可以透過指定不同的家伺服器 URL 來使用自訂伺服器選項以登入到其他 Matrix 伺服器。這讓您可以與既有的 Matrix 帳號在不同的家伺服器一起使用 %(brand)s。", "Enter the location of your Element Matrix Services homeserver. It may use your own domain name or be a subdomain of element.io.": "輸入您的 Element Matrix 服務家伺服器位置。它可能使用您的域名或 element.io 的子網域。", "Search rooms": "搜尋聊天室", @@ -2389,7 +2245,6 @@ "%(brand)s Web": "%(brand)s 網頁版", "%(brand)s Desktop": "%(brand)s 桌面版", "%(brand)s iOS": "%(brand)s iOS", - "%(brand)s X for Android": "Android 的 %(brand)s X", "Custom Tag": "自訂標籤", "* %(senderName)s %(emote)s": "* %(senderName)s %(emote)s", "The person who invited you already left the room.": "邀請您的人已離開聊天室。", diff --git a/src/languageHandler.tsx b/src/languageHandler.tsx index 59edc8766c..aca8db5677 100644 --- a/src/languageHandler.tsx +++ b/src/languageHandler.tsx @@ -27,6 +27,7 @@ import PlatformPeg from "./PlatformPeg"; // @ts-ignore - $webapp is a webpack resolve alias pointing to the output directory, see webpack config import webpackLangJsonUrl from "$webapp/i18n/languages.json"; import { SettingLevel } from "./settings/SettingLevel"; +import { SASEmojiV1 } from "matrix-js-sdk/src/crypto/verification/SASEmojiV1"; const i18nFolder = 'i18n/'; @@ -39,6 +40,14 @@ counterpart.setSeparator('|'); // Fall back to English counterpart.setFallbackLocale('en'); +for (const emoji of SASEmojiV1.getAllEmoji()) { + const translations = SASEmojiV1.getTranslationsFor(emoji); + for (const lang of Object.keys(translations)) { + const tempObject = {[SASEmojiV1.getNameFor(emoji)]: translations[lang]}; + counterpart.registerTranslations(lang, tempObject); + } +} + interface ITranslatableError extends Error { translatedMessage: string; } @@ -144,6 +153,11 @@ export function _t(text: string, variables?: IVariables, tags?: Tags): string | } } +export function _tSasV1(emoji: string): string | React.ReactNode { + const name = SASEmojiV1.getNameFor(emoji); + return _t(name); +} + /* * Similar to _t(), except only does substitutions, and no translation * @param {string} text The text, e.g "click here now to %(foo)s". From fa1e27076d6bbf42c80f575c182b4b80f4ab04a3 Mon Sep 17 00:00:00 2001 From: Bruno Windels Date: Tue, 18 Aug 2020 12:34:43 +0200 Subject: [PATCH 225/424] remove dupe method --- src/components/views/rooms/MessageComposer.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/components/views/rooms/MessageComposer.js b/src/components/views/rooms/MessageComposer.js index 22522c748e..9fe87cc98b 100644 --- a/src/components/views/rooms/MessageComposer.js +++ b/src/components/views/rooms/MessageComposer.js @@ -235,10 +235,6 @@ export default class MessageComposer extends React.Component { } }; - componentWillUnmount() { - dis.unregister(this.dispatcherRef); - } - componentDidMount() { this.dispatcherRef = dis.register(this.onAction); MatrixClientPeg.get().on("RoomState.events", this._onRoomStateEvents); @@ -269,6 +265,7 @@ export default class MessageComposer extends React.Component { if (this._roomStoreToken) { this._roomStoreToken.remove(); } + dis.unregister(this.dispatcherRef); } _onRoomStateEvents(ev, state) { From 24a088e2341b2921eb2f865290fa18cd9b172aba Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 18 Aug 2020 12:00:56 +0100 Subject: [PATCH 226/424] Iterate PR, tweak margins --- res/css/_components.scss | 1 + res/css/_font-weights.scss | 17 +++++++++++++++++ res/css/structures/_LeftPanel.scss | 4 ++-- res/css/views/rooms/_RoomList.scss | 7 +++---- 4 files changed, 23 insertions(+), 6 deletions(-) create mode 100644 res/css/_font-weights.scss diff --git a/res/css/_components.scss b/res/css/_components.scss index a2d0e1ceb5..7e56942764 100644 --- a/res/css/_components.scss +++ b/res/css/_components.scss @@ -1,6 +1,7 @@ // autogenerated by rethemendex.sh @import "./_common.scss"; @import "./_font-sizes.scss"; +@import "./_font-weights.scss"; @import "./structures/_AutoHideScrollbar.scss"; @import "./structures/_CompatibilityPage.scss"; @import "./structures/_ContextualMenu.scss"; diff --git a/res/css/_font-weights.scss b/res/css/_font-weights.scss new file mode 100644 index 0000000000..3e2b19d516 --- /dev/null +++ b/res/css/_font-weights.scss @@ -0,0 +1,17 @@ +/* +Copyright 2020 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +$font-semi-bold: 600; diff --git a/res/css/structures/_LeftPanel.scss b/res/css/structures/_LeftPanel.scss index 69fff53444..5112d07c46 100644 --- a/res/css/structures/_LeftPanel.scss +++ b/res/css/structures/_LeftPanel.scss @@ -138,9 +138,9 @@ $tagPanelWidth: 56px; // only applies in this file, used for calculations .mx_LeftPanel_roomListFilterCount { font-size: $font-13px; - font-weight: 500; + font-weight: $font-semi-bold; margin-left: 12px; - margin-top: 16px; + margin-top: 14px; margin-bottom: -4px; // to counteract the normal roomListWrapper margin-top } diff --git a/res/css/views/rooms/_RoomList.scss b/res/css/views/rooms/_RoomList.scss index 9a6c47ad31..78e7307bc0 100644 --- a/res/css/views/rooms/_RoomList.scss +++ b/res/css/views/rooms/_RoomList.scss @@ -32,15 +32,14 @@ limitations under the License. font-size: $font-13px; div:first-child { - font-weight: 500; + font-weight: $font-semi-bold; margin-bottom: 8px; } .mx_AccessibleButton { color: $secondary-fg-color; position: relative; - margin-left: 24px; - padding: 0; + padding: 0 0 0 24px; font-size: inherit; &::before { @@ -49,7 +48,7 @@ limitations under the License. height: 16px; position: absolute; top: 0; - left: -24px; + left: 0; background: $secondary-fg-color; mask-position: center; mask-size: contain; From a039582cfc52b0ec68408e5d86d1ae15eb8e2950 Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Tue, 18 Aug 2020 07:54:37 +0000 Subject: [PATCH 227/424] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (2334 of 2334 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/zh_Hant/ --- src/i18n/strings/zh_Hant.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json index 5a354ec27c..cef1d21701 100644 --- a/src/i18n/strings/zh_Hant.json +++ b/src/i18n/strings/zh_Hant.json @@ -2415,5 +2415,6 @@ "%(brand)s Android": "%(brand)s Android", "Master private key:": "主控私鑰:", "Show message previews for reactions in DMs": "在直接訊息中顯示反應的訊息預覽", - "Show message previews for reactions in all rooms": "在所有聊天室中顯示反應的訊息預覽" + "Show message previews for reactions in all rooms": "在所有聊天室中顯示反應的訊息預覽", + "Explore public rooms": "探索公開聊天室" } From 8d23072e78326e662c3f7f4684e56b8298b0d13a Mon Sep 17 00:00:00 2001 From: XoseM Date: Tue, 18 Aug 2020 05:27:51 +0000 Subject: [PATCH 228/424] Translated using Weblate (Galician) Currently translated at 100.0% (2334 of 2334 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/gl/ --- src/i18n/strings/gl.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/gl.json b/src/i18n/strings/gl.json index c5501ac187..e023ce9801 100644 --- a/src/i18n/strings/gl.json +++ b/src/i18n/strings/gl.json @@ -2412,5 +2412,6 @@ "%(brand)s Android": "%(brand)s Android", "Master private key:": "Chave mestra principal:", "Show message previews for reactions in DMs": "Mostrar vista previa das mensaxes para reaccións en MDs", - "Show message previews for reactions in all rooms": "Mostrar vista previa das mensaxes para reaccións en todas as salas" + "Show message previews for reactions in all rooms": "Mostrar vista previa das mensaxes para reaccións en todas as salas", + "Explore public rooms": "Explorar salas públicas" } From 6d82203b3b1904f8a7344ce12423f0dd5d5677a0 Mon Sep 17 00:00:00 2001 From: random Date: Mon, 17 Aug 2020 13:44:43 +0000 Subject: [PATCH 229/424] Translated using Weblate (Italian) Currently translated at 100.0% (2334 of 2334 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/it/ --- src/i18n/strings/it.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/it.json b/src/i18n/strings/it.json index 6c5fe1d4db..fb76f3a621 100644 --- a/src/i18n/strings/it.json +++ b/src/i18n/strings/it.json @@ -2415,5 +2415,6 @@ "You have no visible notifications in this room.": "Non hai alcuna notifica visibile in questa stanza.", "%(brand)s Android": "%(brand)s Android", "Show message previews for reactions in DMs": "Mostra anteprime messaggi per le reazioni nei messaggi diretti", - "Show message previews for reactions in all rooms": "Mostra anteprime messaggi per le reazioni in tutte le stanze" + "Show message previews for reactions in all rooms": "Mostra anteprime messaggi per le reazioni in tutte le stanze", + "Explore public rooms": "Esplora stanze pubbliche" } From 25f74581cb139e5da89614c1de8bfc585b707cd5 Mon Sep 17 00:00:00 2001 From: call_xz Date: Mon, 17 Aug 2020 14:11:16 +0000 Subject: [PATCH 230/424] Translated using Weblate (Japanese) Currently translated at 58.6% (1367 of 2334 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/ja/ --- src/i18n/strings/ja.json | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/i18n/strings/ja.json b/src/i18n/strings/ja.json index 7c818e1596..4edf415efb 100644 --- a/src/i18n/strings/ja.json +++ b/src/i18n/strings/ja.json @@ -579,7 +579,7 @@ "%(severalUsers)sleft %(count)s times|one": "%(severalUsers)s は退出しました", "%(oneUser)sleft %(count)s times|other": "%(oneUser)s は %(count)s 回退出しました", "%(oneUser)sleft %(count)s times|one": "%(oneUser)s は退出しました", - "%(severalUsers)sjoined and left %(count)s times|other": "%(severalUsers)s が%(count)s 回参加し、退出した", + "%(severalUsers)sjoined and left %(count)s times|other": "%(severalUsers)s が %(count)s 回参加し、退出しました", "%(severalUsers)sjoined and left %(count)s times|one": "%(severalUsers)s は参加して退出しました", "%(oneUser)sjoined and left %(count)s times|other": "%(oneUser)s が %(count)s 回参加し退出しました", "%(oneUser)sjoined and left %(count)s times|one": "%(oneUser)s が参加し退出しました", @@ -668,7 +668,7 @@ "Update any local room aliases to point to the new room": "新しいルームを指すようにローカルルームのエイリアスを更新する", "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "古いバージョンの部屋でのユーザーの発言を停止し、新しい部屋に移動するようユーザーに通知するメッセージを投稿する", "Mention": "記載", - "%(severalUsers)shad their invitations withdrawn %(count)s times|other": "%(severalUsers)s が %(count)s 回招待を撤回した", + "%(severalUsers)shad their invitations withdrawn %(count)s times|other": "%(severalUsers)s が %(count)s 回招待を取り消しました", "was unbanned %(count)s times|one": "ブロック解除されました", "Put a link back to the old room at the start of the new room so people can see old messages": "新しい部屋の始めに古い部屋にリンクを張って、人々が古いメッセージを見ることができるようにする", "Sign out": "サインアウト", @@ -1375,5 +1375,17 @@ "%(num)s hours ago": "%(num)s 時間前", "%(num)s days ago": "%(num)s 日前", "Favourited": "お気に入り登録中", - "Room options": "部屋の設定" + "Room options": "部屋の設定", + "Ignored users": "無視しているユーザー", + "Show tray icon and minimize window to it on close": "トレイアイコンを表示しウィンドウを閉じても最小化して待機する", + "This message cannot be decrypted": "メッセージが復号できません", + "Unencrypted": "暗号化されていません", + "Encrypted by a deleted session": "削除済みのセッションによる暗号化", + "Scroll to most recent messages": "最新のメッセージを表示", + "Emoji picker": "絵文字を選択", + "All rooms": "全ての部屋", + "Your server": "あなたのサーバー", + "Matrix": "Matrix", + "Add a new server": "新しいサーバーを追加", + "Server name": "サーバー名" } From ef9e1b494a4a15769008e18d1e00437a449090c3 Mon Sep 17 00:00:00 2001 From: ziriSut Date: Mon, 17 Aug 2020 18:52:06 +0000 Subject: [PATCH 231/424] Translated using Weblate (Kabyle) Currently translated at 60.0% (1401 of 2334 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/kab/ --- src/i18n/strings/kab.json | 50 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 48 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/kab.json b/src/i18n/strings/kab.json index 377da10d56..653a198e3a 100644 --- a/src/i18n/strings/kab.json +++ b/src/i18n/strings/kab.json @@ -1240,7 +1240,7 @@ "Trumpet": "Lɣiḍa", "Bell": "Anayna", "Pin": "Amessak", - "Your server isn't responding to some requests.": "Aqeddac-inek·inem ur d-yettarra ara ɣef kra n yisuturen. ", + "Your server isn't responding to some requests.": "Aqeddac-inek·inem ur d-yettarra ara ɣef kra n yisuturen.", "Decline (%(counter)s)": "Agi (%(counter)s)", "Failed to upload profile picture!": "Asali n tewlaft n umaɣnu ur yeddui ara!", "No display name": "Ulac meffer isem", @@ -1398,5 +1398,51 @@ "delete the address.": "kkes tansa.", "Room not found": "Ur tettwaf ara texxamt", "Find a room…": "Af-d taxxamt...", - "Search rooms": "Nadi tixxamin" + "Search rooms": "Nadi tixxamin", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s yuzen tinubga i %(targetDisplayName)s i wakken ad d-yernu ɣer texxamt.", + "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s yerra amazray n texxamt tamaynut yettban i meṛṛa iɛeggalen n texxamt, segmi ara d-ttwanecden.", + "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s yerra amazray n texxamt tamaynut yettban i meṛṛa iɛeggalen n texxamt, segmi ara d-rnun.", + "%(senderName)s made future room history visible to all room members.": "%(senderName)s yerra amazray n texxamt tamaynut yettban i meṛṛa iɛeggalen n texxamt.", + "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s yerra amazray n texxamt tamaynut yettban i wid ur nettwassen ara (%(visibility)s).", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s seg %(fromPowerLevel)s ɣer %(toPowerLevel)s", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s yettwabeddel uswir afellay n %(powerLevelDiffText)s.", + "%(senderName)s removed the rule banning users matching %(glob)s": "%(senderName)s yekkes alugen i yugin iseqdacen yemṣadan d %(glob)s", + "%(senderName)s removed the rule banning rooms matching %(glob)s": "%(senderName)s yekkes alugen i yugin tixxamin yemṣadan d %(glob)s", + "%(senderName)s removed the rule banning servers matching %(glob)s": "%(senderName)s yekkes alugen i yugin iqeddacen yemṣadan d %(glob)s", + "%(senderName)s removed a ban rule matching %(glob)s": "%(senderName)s yekkes alugen n tigtin yemṣadan d %(glob)s", + "%(senderName)s updated an invalid ban rule": "%(senderName)s ileqqem alugen n tigtin arameɣtu", + "%(senderName)s updated the rule banning users matching %(glob)s for %(reason)s": "%(senderName)s ileqqem alugen i yugin iseqdacen yemṣadan d %(glob)s", + "%(senderName)s updated the rule banning rooms matching %(glob)s for %(reason)s": "%(senderName)s ileqqem alugen i yugin tixxamin yemṣadan d %(glob)s", + "%(senderName)s updated the rule banning servers matching %(glob)s for %(reason)s": "%(senderName)s ileqqem alugen i yugin iqeddacen yemṣadan d %(glob)s", + "%(senderName)s updated a ban rule matching %(glob)s for %(reason)s": "%(senderName)s ileqqem alugen n tigtin yemṣadan d %(glob)s", + "%(senderName)s created a rule banning users matching %(glob)s for %(reason)s": "%(senderName)s yerna alugen i yugin iseqdacen yemṣadan d %(glob)s i %(reason)s", + "%(senderName)s created a rule banning rooms matching %(glob)s for %(reason)s": "%(senderName)s yerna alugen i yugin tixxamin yemṣadan d %(glob)s i %(reason)s", + "%(senderName)s created a rule banning servers matching %(glob)s for %(reason)s": "%(senderName)s yerna alugen i yugin iqeddacen yemṣadan d %(glob)s i %(reason)s", + "%(senderName)s created a ban rule matching %(glob)s for %(reason)s": "%(senderName)s yerna alugen yemṣadan d %(glob)s i %(reason)s", + "%(senderName)s changed a rule that was banning users matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s ibeddel alugen i yugin iseqdacen yemṣadan d %(oldGlob)s deg %(newGlob)s yemṣadan i %(reason)s", + "%(senderName)s changed a rule that was banning rooms matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s ibeddel alugen i yugin tixxamin yemṣadan d %(oldGlob)s deg %(newGlob)s yemṣadan i %(reason)s", + "%(senderName)s changed a rule that was banning servers matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s ibeddel alugen i yugin tixxamin iqeddacen d %(oldGlob)s deg %(newGlob)s yemṣadan i %(reason)s", + "%(senderName)s updated a ban rule that was matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s ibeddel alugen i yemṣadan d %(oldGlob)s deg %(newGlob)s yemṣadan i %(reason)s", + "You signed in to a new session without verifying it:": "Teqqneḍ ɣer tɣimit war ma tesneqdeḍ-tt:", + "Verify your other session using one of the options below.": "Senqed tiɣimiyin-ik·im tiyaḍ s useqdec yiwet seg textiṛiyin ddaw.", + "%(name)s (%(userId)s) signed in to a new session without verifying it:": "%(name)s (%(userId)s) yeqqen ɣer tɣimit tamaynut war ma isenqed-itt:", + "Ask this user to verify their session, or manually verify it below.": "Suter deg useqdac-a ad isenqed tiɣimit-is, neɣ senqed-itt ddaw s ufus.", + "Ensure you have a stable internet connection, or get in touch with the server admin": "Ḍmen qbel tesɛiḍ tuqqna i igerrzen, neɣ nermes anedbal n uqeddac", + "Ask your %(brand)s admin to check your config for incorrect or duplicate entries.": "Suter deg %(brand)s unedbal ad isenqed tawila-ik·im n unekcam arameɣtu neɣ i d-yuɣalen.", + "The message you are trying to send is too large.": "Izen i tettaɛraḍeḍ ad t-tazneḍ ɣezzif aṭas.", + "This homeserver has hit its Monthly Active User limit.": "Aqeddac-a agejdan yewweḍ ɣer talast n useqdac urmid n wayyur.", + "Please contact your service administrator to continue using the service.": "Ttxil-k·m nermes anedbal-ik·im n uqeddac i wakken ad tkemmleḍ aseqdec n uqeddac.", + "Unable to connect to Homeserver. Retrying...": "Yegguma ad yeqqen ɣer uqeddac agejdan. Ales aneɛruḍ...", + "Use a few words, avoid common phrases": "Seqdec kra n wawalen, sinef i tefyar i d-yettuɣalen", + "No need for symbols, digits, or uppercase letters": "Ulayɣer izamulen, izwilen d yisekkilen imeqqranen", + "Make a copy of your recovery key": "Eg anɣal i tsarut-ik·im n uɛeddi", + "Create key backup": "Rnu aḥraz n tsarut", + "Unable to create key backup": "Yegguma ad yernu uḥraz n tsarut", + "If you don't want to set this up now, you can later in Settings.": "Ma yella ur tebɣiḍ ara ad t-tesbaduḍ tura, tzemreḍ ad t-tgeḍ mbeɛd deg yiɣewwaren.", + "A new recovery passphrase and key for Secure Messages have been detected.": "Tasarut tuffirt n uɛeddi tamaynut d tsarut i tɣellist n yiznan ttwafent.", + "This session is encrypting history using the new recovery method.": "Tiɣimit-a, amazray-ines awgelhen yesseqdac tarrayt n uɛeddi tamaynut.", + "If disabled, messages from encrypted rooms won't appear in search results.": "Ma yella tensa, iznan n texxamin tiwgelhanin ur d-ttbanen ara deg yigmaḍ n unadi.", + "%(brand)s is securely caching encrypted messages locally for them to appear in search results:": "%(brand)s iteffer iznan iwgelhanen idiganen s wudem aɣelsan i wakken ad d-banen deg yigmaḍ n unadi:", + "Message downloading sleep time(ms)": "Akud n usgunfu n usali n yiznan (ms)", + "Dismiss read marker and jump to bottom": "Zgel ticreḍt n tɣuri, tɛeddiḍ d akessar" } From f0bfc17228e61ab7a8205d92d78968edfa141d5f Mon Sep 17 00:00:00 2001 From: Kahina Messaoudi Date: Mon, 17 Aug 2020 20:58:28 +0000 Subject: [PATCH 232/424] Translated using Weblate (Kabyle) Currently translated at 60.0% (1401 of 2334 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/kab/ --- src/i18n/strings/kab.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/i18n/strings/kab.json b/src/i18n/strings/kab.json index 653a198e3a..2ec5616ddf 100644 --- a/src/i18n/strings/kab.json +++ b/src/i18n/strings/kab.json @@ -532,16 +532,16 @@ "Session already verified!": "Tiɣimit tettwasenqed yakan!", "Verified key": "Tasarut tettwasenqed", "Displays information about a user": "Yeskan talɣut ɣef useqdac", - "Send a bug report with logs": "Azen aneqqis n wabug s yiɣƔisen", + "Send a bug report with logs": "Azen aneqqis n ubug s yiɣmisen", "Logs sent": "Iɣmisen ttewaznen", "Opens chat with the given user": "Yeldi adiwenni d useqdac i d-yettunefken", - "Sends a message to the given user": "Yuzen iznan i useqdac i d-yettunefken", + "Sends a message to the given user": "Yettazen izen i useqdac i d-yettunefken", "Displays action": "Yeskan tigawt", "%(targetName)s accepted an invitation.": "%(targetName)s yeqbel tinnubga.", "%(senderName)s invited %(targetName)s.": "%(senderName)s inced-d %(targetName)s.", "%(senderName)s banned %(targetName)s.": "%(senderName)s yugi %(targetName)s.", "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s kksen isem ara d-ibanen (%(oldDisplayName)s).", - "%(senderName)s removed their profile picture.": "%(senderName)s yekkes tawlaft n umaqnu-ines.", + "%(senderName)s removed their profile picture.": "%(senderName)s yekkes tawlaft n umaɣnu-ines.", "%(senderName)s changed their profile picture.": "%(senderName)s ibeddel tawlaft n umaɣnu-ines.", "%(senderName)s set a profile picture.": "%(senderName)s yesbadu tawlaft n umaɣnu.", "%(senderName)s made no change.": "%(senderName)s ur yegi ara ula d yiwen n ubeddel.", From 2e2bcf18710bb03a2973a001087b4f4e9b03763d Mon Sep 17 00:00:00 2001 From: rkfg Date: Tue, 18 Aug 2020 06:58:24 +0000 Subject: [PATCH 233/424] Translated using Weblate (Russian) Currently translated at 100.0% (2334 of 2334 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/ru/ --- src/i18n/strings/ru.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 1e2763f59f..214648eea7 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -975,7 +975,7 @@ "Developer options": "Параметры разработчика", "General": "Общие", "Set a new account password...": "Установить новый пароль учётной записи...", - "Legal": "Законный", + "Legal": "Правовая информация", "Room avatar": "Аватар комнаты", "The following users may not exist": "Следующих пользователей может не существовать", "Invite anyway and never warn me again": "Пригласить и больше не предупреждать", From 13e7a3ebd7500d65c1f9c9ca143f8b3890c25d0b Mon Sep 17 00:00:00 2001 From: aethralis Date: Tue, 18 Aug 2020 13:43:55 +0000 Subject: [PATCH 234/424] Translated using Weblate (Estonian) Currently translated at 100.0% (2334 of 2334 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/et/ --- src/i18n/strings/et.json | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/et.json b/src/i18n/strings/et.json index 857877e61f..fdd717db6f 100644 --- a/src/i18n/strings/et.json +++ b/src/i18n/strings/et.json @@ -2342,7 +2342,7 @@ "Custom Tag": "Kohandatud silt", "%(brand)s does not know how to join a room on this network": "%(brand)s ei tea kuidas selles võrgus jututoaga liituda", "%(brand)s Web": "%(brand)s Web", - "%(brand)s Desktop": "%(brand)s Desktop", + "%(brand)s Desktop": "%(brand)s Töölaud", "%(brand)s iOS": "%(brand)s iOS", "%(brand)s X for Android": "%(brand)s X Androidi jaoks", "Starting backup...": "Alusta varundamist...", @@ -2408,5 +2408,10 @@ "Show message previews for reactions in all rooms": "Näita kõikides jututubades eelvaadetes sõnumitele regeerimisi", "Master private key:": "Üldine privaatvõti:", "Recent changes that have not yet been received": "Hiljutised muudatused, mis pole veel alla laetud või saabunud", - "Explore public rooms": "Sirvi avalikke jututubasid" + "Explore public rooms": "Sirvi avalikke jututubasid", + "Forces the current outbound group session in an encrypted room to be discarded": "Sunnib loobuma praeguse krüpteeritud ruumi grupivestluse seansist", + "You've previously used %(brand)s on %(host)s with lazy loading of members enabled. In this version lazy loading is disabled. As the local cache is not compatible between these two settings, %(brand)s needs to resync your account.": "Olete varem kasutanud %(brand)s %(host)s ja lubanud liikmete laisa laadimise. Selles versioonis on laisk laadimine keelatud. Kuna kohalik vahemälu nende kahe sätte vahel ei ühildu, peab %(brand)s teie konto uuesti sünkroonima.", + "If the other version of %(brand)s is still open in another tab, please close it as using %(brand)s on the same host with both lazy loading enabled and disabled simultaneously will cause issues.": "Kui %(brand)s teine versioon on mõnel teisel vahekaardil endiselt avatud, sulgege see, kuna %(brand)s kasutamine samal hostil, kui laisk laadimine on lubatud ja keelatud ühekorraga põhjustab probleeme.", + "Data from an older version of %(brand)s has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "%(brand)s vanema versiooni andmed on tuvastatud. See on põhjustanud krüptograafia tõrke vanemas versioonis. Krüptitud teated, mida on vanema versiooni kasutamise ajal hiljuti vahetatud, ei pruugi selles versioonis olla dekrüptitavad. See võib põhjustada ka selle versiooniga vahetatud sõnumite tõrke. Kui teil on probleeme, logige välja ja uuesti sisse. Sõnumite ajaloo säilitamiseks eksportige ja uuesti importige oma võtmed.", + "Navigation": "Navigeerimine" } From d55cb4266a5ab0d69119153f716f6ea407e502f4 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 18 Aug 2020 17:38:10 +0100 Subject: [PATCH 235/424] Update copy --- src/i18n/strings/en_EN.json | 4 ++-- src/rageshake/submit-rageshake.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 964317d2c9..8bfc3ed703 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -503,8 +503,8 @@ "Enable experimental, compact IRC style layout": "Enable experimental, compact IRC style layout", "Collecting app version information": "Collecting app version information", "Collecting logs": "Collecting logs", - "Uploading report": "Uploading report", - "Downloading report": "Downloading report", + "Uploading logs": "Uploading logs", + "Downloading logs": "Downloading logs", "Waiting for response from server": "Waiting for response from server", "Messages containing my display name": "Messages containing my display name", "Messages containing my username": "Messages containing my username", diff --git a/src/rageshake/submit-rageshake.ts b/src/rageshake/submit-rageshake.ts index fbcce4cef9..cc512bdfc7 100644 --- a/src/rageshake/submit-rageshake.ts +++ b/src/rageshake/submit-rageshake.ts @@ -204,7 +204,7 @@ export default async function sendBugReport(bugReportEndpoint: string, opts: IOp const progressCallback = opts.progressCallback || (() => {}); const body = await collectBugReport(opts); - progressCallback(_t("Uploading report")); + progressCallback(_t("Uploading logs")); await _submitReport(bugReportEndpoint, body, progressCallback); } @@ -226,7 +226,7 @@ export async function downloadBugReport(opts: IOpts = {}) { const progressCallback = opts.progressCallback || (() => {}); const body = await collectBugReport(opts, false); - progressCallback(_t("Downloading report")); + progressCallback(_t("Downloading logs")); let metadata = ""; const tape = new Tar(); let i = 0; From 323ebdfac8d440b12eccfbc0b66219f2b97de93e Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Tue, 18 Aug 2020 10:51:30 -0600 Subject: [PATCH 236/424] Remove unused return type --- src/languageHandler.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/languageHandler.tsx b/src/languageHandler.tsx index aca8db5677..dd541df254 100644 --- a/src/languageHandler.tsx +++ b/src/languageHandler.tsx @@ -153,7 +153,7 @@ export function _t(text: string, variables?: IVariables, tags?: Tags): string | } } -export function _tSasV1(emoji: string): string | React.ReactNode { +export function _tSasV1(emoji: string): string { const name = SASEmojiV1.getNameFor(emoji); return _t(name); } From bc8a4175d5a26066f7a40a89fd05798e42ad1aed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Priit=20J=C3=B5er=C3=BC=C3=BCt?= Date: Tue, 18 Aug 2020 17:58:58 +0000 Subject: [PATCH 237/424] Translated using Weblate (Estonian) Currently translated at 100.0% (2340 of 2340 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/et/ --- src/i18n/strings/et.json | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/et.json b/src/i18n/strings/et.json index fdd717db6f..f2a3909bc6 100644 --- a/src/i18n/strings/et.json +++ b/src/i18n/strings/et.json @@ -2342,7 +2342,7 @@ "Custom Tag": "Kohandatud silt", "%(brand)s does not know how to join a room on this network": "%(brand)s ei tea kuidas selles võrgus jututoaga liituda", "%(brand)s Web": "%(brand)s Web", - "%(brand)s Desktop": "%(brand)s Töölaud", + "%(brand)s Desktop": "%(brand)s Desktop", "%(brand)s iOS": "%(brand)s iOS", "%(brand)s X for Android": "%(brand)s X Androidi jaoks", "Starting backup...": "Alusta varundamist...", @@ -2413,5 +2413,12 @@ "You've previously used %(brand)s on %(host)s with lazy loading of members enabled. In this version lazy loading is disabled. As the local cache is not compatible between these two settings, %(brand)s needs to resync your account.": "Olete varem kasutanud %(brand)s %(host)s ja lubanud liikmete laisa laadimise. Selles versioonis on laisk laadimine keelatud. Kuna kohalik vahemälu nende kahe sätte vahel ei ühildu, peab %(brand)s teie konto uuesti sünkroonima.", "If the other version of %(brand)s is still open in another tab, please close it as using %(brand)s on the same host with both lazy loading enabled and disabled simultaneously will cause issues.": "Kui %(brand)s teine versioon on mõnel teisel vahekaardil endiselt avatud, sulgege see, kuna %(brand)s kasutamine samal hostil, kui laisk laadimine on lubatud ja keelatud ühekorraga põhjustab probleeme.", "Data from an older version of %(brand)s has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "%(brand)s vanema versiooni andmed on tuvastatud. See on põhjustanud krüptograafia tõrke vanemas versioonis. Krüptitud teated, mida on vanema versiooni kasutamise ajal hiljuti vahetatud, ei pruugi selles versioonis olla dekrüptitavad. See võib põhjustada ka selle versiooniga vahetatud sõnumite tõrke. Kui teil on probleeme, logige välja ja uuesti sisse. Sõnumite ajaloo säilitamiseks eksportige ja uuesti importige oma võtmed.", - "Navigation": "Navigeerimine" + "Navigation": "Navigeerimine", + "Uploading logs": "Laen üles logisid", + "Downloading logs": "Laen alla logisid", + "Can't see what you’re looking for?": "Kas sa ei leia seda, mida otsisid?", + "Explore all public rooms": "Sirvi kõiki avalikke jututubasid", + "%(count)s results|other": "%(count)s tulemust", + "Preparing to download logs": "Valmistun logikirjete allalaadimiseks", + "Download logs": "Lae logikirjed alla" } From cdab2c3a07419fbe22426ad4af36a05797c83c60 Mon Sep 17 00:00:00 2001 From: aethralis Date: Tue, 18 Aug 2020 18:16:30 +0000 Subject: [PATCH 238/424] Translated using Weblate (Estonian) Currently translated at 100.0% (2340 of 2340 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/et/ --- src/i18n/strings/et.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/et.json b/src/i18n/strings/et.json index f2a3909bc6..c58a8a82f2 100644 --- a/src/i18n/strings/et.json +++ b/src/i18n/strings/et.json @@ -2409,7 +2409,7 @@ "Master private key:": "Üldine privaatvõti:", "Recent changes that have not yet been received": "Hiljutised muudatused, mis pole veel alla laetud või saabunud", "Explore public rooms": "Sirvi avalikke jututubasid", - "Forces the current outbound group session in an encrypted room to be discarded": "Sunnib loobuma praeguse krüpteeritud ruumi grupivestluse seansist", + "Forces the current outbound group session in an encrypted room to be discarded": "Sunnib loobuma praeguse krüpteeritud ruumi grupivestluse seansist.", "You've previously used %(brand)s on %(host)s with lazy loading of members enabled. In this version lazy loading is disabled. As the local cache is not compatible between these two settings, %(brand)s needs to resync your account.": "Olete varem kasutanud %(brand)s %(host)s ja lubanud liikmete laisa laadimise. Selles versioonis on laisk laadimine keelatud. Kuna kohalik vahemälu nende kahe sätte vahel ei ühildu, peab %(brand)s teie konto uuesti sünkroonima.", "If the other version of %(brand)s is still open in another tab, please close it as using %(brand)s on the same host with both lazy loading enabled and disabled simultaneously will cause issues.": "Kui %(brand)s teine versioon on mõnel teisel vahekaardil endiselt avatud, sulgege see, kuna %(brand)s kasutamine samal hostil, kui laisk laadimine on lubatud ja keelatud ühekorraga põhjustab probleeme.", "Data from an older version of %(brand)s has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "%(brand)s vanema versiooni andmed on tuvastatud. See on põhjustanud krüptograafia tõrke vanemas versioonis. Krüptitud teated, mida on vanema versiooni kasutamise ajal hiljuti vahetatud, ei pruugi selles versioonis olla dekrüptitavad. See võib põhjustada ka selle versiooniga vahetatud sõnumite tõrke. Kui teil on probleeme, logige välja ja uuesti sisse. Sõnumite ajaloo säilitamiseks eksportige ja uuesti importige oma võtmed.", From 192d1416057cce1039874e6848081d0aa3f4aa84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Priit=20J=C3=B5er=C3=BC=C3=BCt?= Date: Tue, 18 Aug 2020 18:17:06 +0000 Subject: [PATCH 239/424] Translated using Weblate (Estonian) Currently translated at 100.0% (2340 of 2340 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/et/ --- src/i18n/strings/et.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/et.json b/src/i18n/strings/et.json index c58a8a82f2..88822514bb 100644 --- a/src/i18n/strings/et.json +++ b/src/i18n/strings/et.json @@ -2409,9 +2409,9 @@ "Master private key:": "Üldine privaatvõti:", "Recent changes that have not yet been received": "Hiljutised muudatused, mis pole veel alla laetud või saabunud", "Explore public rooms": "Sirvi avalikke jututubasid", - "Forces the current outbound group session in an encrypted room to be discarded": "Sunnib loobuma praeguse krüpteeritud ruumi grupivestluse seansist.", + "Forces the current outbound group session in an encrypted room to be discarded": "Sunnib loobuma praeguse krüptitud jututoa rühmavestluse seansist", "You've previously used %(brand)s on %(host)s with lazy loading of members enabled. In this version lazy loading is disabled. As the local cache is not compatible between these two settings, %(brand)s needs to resync your account.": "Olete varem kasutanud %(brand)s %(host)s ja lubanud liikmete laisa laadimise. Selles versioonis on laisk laadimine keelatud. Kuna kohalik vahemälu nende kahe sätte vahel ei ühildu, peab %(brand)s teie konto uuesti sünkroonima.", - "If the other version of %(brand)s is still open in another tab, please close it as using %(brand)s on the same host with both lazy loading enabled and disabled simultaneously will cause issues.": "Kui %(brand)s teine versioon on mõnel teisel vahekaardil endiselt avatud, sulgege see, kuna %(brand)s kasutamine samal hostil, kui laisk laadimine on lubatud ja keelatud ühekorraga põhjustab probleeme.", + "If the other version of %(brand)s is still open in another tab, please close it as using %(brand)s on the same host with both lazy loading enabled and disabled simultaneously will cause issues.": "Kui %(brand)s teine versioon on mõnel teisel vahekaardil endiselt avatud, palun sulge see. %(brand)s kasutamine samal serveril põhjustab vigu olukorras, kus laisk laadimine on samal ajal lubatud ja keelatud.", "Data from an older version of %(brand)s has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "%(brand)s vanema versiooni andmed on tuvastatud. See on põhjustanud krüptograafia tõrke vanemas versioonis. Krüptitud teated, mida on vanema versiooni kasutamise ajal hiljuti vahetatud, ei pruugi selles versioonis olla dekrüptitavad. See võib põhjustada ka selle versiooniga vahetatud sõnumite tõrke. Kui teil on probleeme, logige välja ja uuesti sisse. Sõnumite ajaloo säilitamiseks eksportige ja uuesti importige oma võtmed.", "Navigation": "Navigeerimine", "Uploading logs": "Laen üles logisid", From 569f09742736745561d14a27aca80b1a94cebce1 Mon Sep 17 00:00:00 2001 From: aethralis Date: Tue, 18 Aug 2020 18:26:38 +0000 Subject: [PATCH 240/424] Translated using Weblate (Estonian) Currently translated at 100.0% (2340 of 2340 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/et/ --- src/i18n/strings/et.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/et.json b/src/i18n/strings/et.json index 88822514bb..2b620bd8a0 100644 --- a/src/i18n/strings/et.json +++ b/src/i18n/strings/et.json @@ -2410,7 +2410,7 @@ "Recent changes that have not yet been received": "Hiljutised muudatused, mis pole veel alla laetud või saabunud", "Explore public rooms": "Sirvi avalikke jututubasid", "Forces the current outbound group session in an encrypted room to be discarded": "Sunnib loobuma praeguse krüptitud jututoa rühmavestluse seansist", - "You've previously used %(brand)s on %(host)s with lazy loading of members enabled. In this version lazy loading is disabled. As the local cache is not compatible between these two settings, %(brand)s needs to resync your account.": "Olete varem kasutanud %(brand)s %(host)s ja lubanud liikmete laisa laadimise. Selles versioonis on laisk laadimine keelatud. Kuna kohalik vahemälu nende kahe sätte vahel ei ühildu, peab %(brand)s teie konto uuesti sünkroonima.", + "You've previously used %(brand)s on %(host)s with lazy loading of members enabled. In this version lazy loading is disabled. As the local cache is not compatible between these two settings, %(brand)s needs to resync your account.": "Olete varem kasutanud %(brand)s %(host)s ja lubanud liikmete laisa laadimise. Selles versioonis on laisk laadimine keelatud. Kuna kohalik vahemälu nende kahe sätte vahel ei ühildu, peab %(brand)s teie konto uuesti sünkroonima. ", "If the other version of %(brand)s is still open in another tab, please close it as using %(brand)s on the same host with both lazy loading enabled and disabled simultaneously will cause issues.": "Kui %(brand)s teine versioon on mõnel teisel vahekaardil endiselt avatud, palun sulge see. %(brand)s kasutamine samal serveril põhjustab vigu olukorras, kus laisk laadimine on samal ajal lubatud ja keelatud.", "Data from an older version of %(brand)s has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "%(brand)s vanema versiooni andmed on tuvastatud. See on põhjustanud krüptograafia tõrke vanemas versioonis. Krüptitud teated, mida on vanema versiooni kasutamise ajal hiljuti vahetatud, ei pruugi selles versioonis olla dekrüptitavad. See võib põhjustada ka selle versiooniga vahetatud sõnumite tõrke. Kui teil on probleeme, logige välja ja uuesti sisse. Sõnumite ajaloo säilitamiseks eksportige ja uuesti importige oma võtmed.", "Navigation": "Navigeerimine", From 49243e5de9da9e590f71303c89a7d0badd76249f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Priit=20J=C3=B5er=C3=BC=C3=BCt?= Date: Tue, 18 Aug 2020 18:27:17 +0000 Subject: [PATCH 241/424] Translated using Weblate (Estonian) Currently translated at 100.0% (2340 of 2340 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/et/ --- src/i18n/strings/et.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/et.json b/src/i18n/strings/et.json index 2b620bd8a0..de71fd1ab0 100644 --- a/src/i18n/strings/et.json +++ b/src/i18n/strings/et.json @@ -2410,7 +2410,7 @@ "Recent changes that have not yet been received": "Hiljutised muudatused, mis pole veel alla laetud või saabunud", "Explore public rooms": "Sirvi avalikke jututubasid", "Forces the current outbound group session in an encrypted room to be discarded": "Sunnib loobuma praeguse krüptitud jututoa rühmavestluse seansist", - "You've previously used %(brand)s on %(host)s with lazy loading of members enabled. In this version lazy loading is disabled. As the local cache is not compatible between these two settings, %(brand)s needs to resync your account.": "Olete varem kasutanud %(brand)s %(host)s ja lubanud liikmete laisa laadimise. Selles versioonis on laisk laadimine keelatud. Kuna kohalik vahemälu nende kahe sätte vahel ei ühildu, peab %(brand)s teie konto uuesti sünkroonima. ", + "You've previously used %(brand)s on %(host)s with lazy loading of members enabled. In this version lazy loading is disabled. As the local cache is not compatible between these two settings, %(brand)s needs to resync your account.": "Oled varem kasutanud %(brand)s serveriga %(host)s ja lubanud andmete laisa laadimise. Selles versioonis on laisk laadimine keelatud. Kuna kohalik vahemälu nende kahe seadistuse vahel ei ühildu, peab %(brand)s sinu konto uuesti sünkroonima.", "If the other version of %(brand)s is still open in another tab, please close it as using %(brand)s on the same host with both lazy loading enabled and disabled simultaneously will cause issues.": "Kui %(brand)s teine versioon on mõnel teisel vahekaardil endiselt avatud, palun sulge see. %(brand)s kasutamine samal serveril põhjustab vigu olukorras, kus laisk laadimine on samal ajal lubatud ja keelatud.", "Data from an older version of %(brand)s has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "%(brand)s vanema versiooni andmed on tuvastatud. See on põhjustanud krüptograafia tõrke vanemas versioonis. Krüptitud teated, mida on vanema versiooni kasutamise ajal hiljuti vahetatud, ei pruugi selles versioonis olla dekrüptitavad. See võib põhjustada ka selle versiooniga vahetatud sõnumite tõrke. Kui teil on probleeme, logige välja ja uuesti sisse. Sõnumite ajaloo säilitamiseks eksportige ja uuesti importige oma võtmed.", "Navigation": "Navigeerimine", From cac4e6c9209d032ed28617751aafcf28c3e81672 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Tue, 18 Aug 2020 12:50:25 -0600 Subject: [PATCH 242/424] update js-sdk reference in lockfile --- yarn.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yarn.lock b/yarn.lock index 9ee9374945..da328f88cb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6477,7 +6477,7 @@ mathml-tag-names@^2.0.1: "matrix-js-sdk@github:matrix-org/matrix-js-sdk#develop": version "8.1.0" - resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/64cdd73b93a475d10284977b69ef73138315b3be" + resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/2401ad71590d3ae3a09bbfefc758222fb6cdfd71" dependencies: "@babel/runtime" "^7.8.3" another-json "^0.2.0" From 820adca5a863e6a090ddbbd31df5cded41597f83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Priit=20J=C3=B5er=C3=BC=C3=BCt?= Date: Tue, 18 Aug 2020 18:31:19 +0000 Subject: [PATCH 243/424] Translated using Weblate (Estonian) Currently translated at 100.0% (2340 of 2340 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/et/ --- src/i18n/strings/et.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/et.json b/src/i18n/strings/et.json index de71fd1ab0..e00a5e0ecc 100644 --- a/src/i18n/strings/et.json +++ b/src/i18n/strings/et.json @@ -2412,7 +2412,7 @@ "Forces the current outbound group session in an encrypted room to be discarded": "Sunnib loobuma praeguse krüptitud jututoa rühmavestluse seansist", "You've previously used %(brand)s on %(host)s with lazy loading of members enabled. In this version lazy loading is disabled. As the local cache is not compatible between these two settings, %(brand)s needs to resync your account.": "Oled varem kasutanud %(brand)s serveriga %(host)s ja lubanud andmete laisa laadimise. Selles versioonis on laisk laadimine keelatud. Kuna kohalik vahemälu nende kahe seadistuse vahel ei ühildu, peab %(brand)s sinu konto uuesti sünkroonima.", "If the other version of %(brand)s is still open in another tab, please close it as using %(brand)s on the same host with both lazy loading enabled and disabled simultaneously will cause issues.": "Kui %(brand)s teine versioon on mõnel teisel vahekaardil endiselt avatud, palun sulge see. %(brand)s kasutamine samal serveril põhjustab vigu olukorras, kus laisk laadimine on samal ajal lubatud ja keelatud.", - "Data from an older version of %(brand)s has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "%(brand)s vanema versiooni andmed on tuvastatud. See on põhjustanud krüptograafia tõrke vanemas versioonis. Krüptitud teated, mida on vanema versiooni kasutamise ajal hiljuti vahetatud, ei pruugi selles versioonis olla dekrüptitavad. See võib põhjustada ka selle versiooniga vahetatud sõnumite tõrke. Kui teil on probleeme, logige välja ja uuesti sisse. Sõnumite ajaloo säilitamiseks eksportige ja uuesti importige oma võtmed.", + "Data from an older version of %(brand)s has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "%(brand)s vanema versiooni andmed on tuvastatud. See kindlasti põhjustab läbiva krüptimise tõrke vanemas versioonis. Läbivalt krüptitud sõnumid, mida on vanema versiooni kasutamise ajal hiljuti vahetatud, ei pruugi selles versioonis olla dekrüptitavad. See võib põhjustada vigu ka selle versiooniga saadetud sõnumite lugemisel. Kui teil tekib probleeme, logige välja ja uuesti sisse. Sõnumite ajaloo säilitamiseks eksportige ja uuesti importige oma krüptovõtmed.", "Navigation": "Navigeerimine", "Uploading logs": "Laen üles logisid", "Downloading logs": "Laen alla logisid", From 0a4d4e4df3880fba4a90caa485f869a984a30d72 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Tue, 18 Aug 2020 12:50:25 -0600 Subject: [PATCH 244/424] Revert "update js-sdk reference in lockfile" This reverts commit cac4e6c9209d032ed28617751aafcf28c3e81672. --- yarn.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yarn.lock b/yarn.lock index da328f88cb..9ee9374945 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6477,7 +6477,7 @@ mathml-tag-names@^2.0.1: "matrix-js-sdk@github:matrix-org/matrix-js-sdk#develop": version "8.1.0" - resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/2401ad71590d3ae3a09bbfefc758222fb6cdfd71" + resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/64cdd73b93a475d10284977b69ef73138315b3be" dependencies: "@babel/runtime" "^7.8.3" another-json "^0.2.0" From 534f0cc89eed0ed0699e58e8c0679d1544caafe0 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Tue, 18 Aug 2020 11:41:42 -0600 Subject: [PATCH 245/424] Revert "Merge pull request #5125 from matrix-org/travis/spec-i18n" This reverts commit d3dba0ba3a139e19763aaee976c7aa9a96ecb07e. --- .../views/verification/VerificationShowSas.js | 74 ++++++++- src/i18n/strings/ar.json | 4 + src/i18n/strings/az.json | 2 + src/i18n/strings/bg.json | 122 ++++++++++++++- src/i18n/strings/ca.json | 8 + src/i18n/strings/cs.json | 89 +++++++++++ src/i18n/strings/da.json | 4 + src/i18n/strings/de_DE.json | 143 +++++++++++++++++ src/i18n/strings/el.json | 7 + src/i18n/strings/en_EN.json | 64 ++++++++ src/i18n/strings/en_US.json | 10 ++ src/i18n/strings/eo.json | 145 ++++++++++++++++++ src/i18n/strings/es.json | 107 ++++++++++++- src/i18n/strings/et.json | 145 ++++++++++++++++++ src/i18n/strings/eu.json | 97 ++++++++++++ src/i18n/strings/fi.json | 124 +++++++++++++++ src/i18n/strings/fr.json | 145 +++++++++++++++++- src/i18n/strings/gl.json | 145 ++++++++++++++++++ src/i18n/strings/hi.json | 68 ++++++++ src/i18n/strings/hu.json | 145 ++++++++++++++++++ src/i18n/strings/id.json | 1 + src/i18n/strings/is.json | 3 + src/i18n/strings/it.json | 145 ++++++++++++++++++ src/i18n/strings/ja.json | 14 ++ src/i18n/strings/jbo.json | 101 ++++++++++++ src/i18n/strings/kab.json | 87 +++++++++++ src/i18n/strings/ko.json | 82 ++++++++++ src/i18n/strings/lt.json | 78 ++++++++++ src/i18n/strings/lv.json | 8 + src/i18n/strings/nb_NO.json | 73 +++++++++ src/i18n/strings/nl.json | 86 +++++++++++ src/i18n/strings/nn.json | 16 ++ src/i18n/strings/oc.json | 1 + src/i18n/strings/pl.json | 80 ++++++++++ src/i18n/strings/pt.json | 7 + src/i18n/strings/pt_BR.json | 83 ++++++++++ src/i18n/strings/ru.json | 139 +++++++++++++++++ src/i18n/strings/sk.json | 127 +++++++++++++++ src/i18n/strings/sq.json | 144 +++++++++++++++++ src/i18n/strings/sr.json | 22 +++ src/i18n/strings/sv.json | 82 ++++++++++ src/i18n/strings/te.json | 3 + src/i18n/strings/th.json | 1 + src/i18n/strings/tr.json | 104 ++++++++++++- src/i18n/strings/uk.json | 79 ++++++++++ src/i18n/strings/vls.json | 75 +++++++++ src/i18n/strings/zh_Hans.json | 96 ++++++++++++ src/i18n/strings/zh_Hant.json | 145 ++++++++++++++++++ src/languageHandler.tsx | 14 -- 49 files changed, 3524 insertions(+), 20 deletions(-) diff --git a/src/components/views/verification/VerificationShowSas.js b/src/components/views/verification/VerificationShowSas.js index 7101b9db91..09374b91af 100644 --- a/src/components/views/verification/VerificationShowSas.js +++ b/src/components/views/verification/VerificationShowSas.js @@ -16,12 +16,16 @@ limitations under the License. import React from 'react'; import PropTypes from 'prop-types'; -import { _t, _tSasV1 } from '../../../languageHandler'; +import { _t, _td } from '../../../languageHandler'; import {PendingActionSpinner} from "../right_panel/EncryptionInfo"; import AccessibleButton from "../elements/AccessibleButton"; import DialogButtons from "../elements/DialogButtons"; import { fixupColorFonts } from '../../../utils/FontManager'; +function capFirst(s) { + return s.charAt(0).toUpperCase() + s.slice(1); +} + export default class VerificationShowSas extends React.Component { static propTypes = { pending: PropTypes.bool, @@ -69,7 +73,7 @@ export default class VerificationShowSas extends React.Component { { emoji[0] }
- {_tSasV1(emoji[0])} + {_t(capFirst(emoji[1]))}
, ); @@ -162,3 +166,69 @@ export default class VerificationShowSas extends React.Component {
; } } + +// List of Emoji strings from the js-sdk, for i18n +_td("Dog"); +_td("Cat"); +_td("Lion"); +_td("Horse"); +_td("Unicorn"); +_td("Pig"); +_td("Elephant"); +_td("Rabbit"); +_td("Panda"); +_td("Rooster"); +_td("Penguin"); +_td("Turtle"); +_td("Fish"); +_td("Octopus"); +_td("Butterfly"); +_td("Flower"); +_td("Tree"); +_td("Cactus"); +_td("Mushroom"); +_td("Globe"); +_td("Moon"); +_td("Cloud"); +_td("Fire"); +_td("Banana"); +_td("Apple"); +_td("Strawberry"); +_td("Corn"); +_td("Pizza"); +_td("Cake"); +_td("Heart"); +_td("Smiley"); +_td("Robot"); +_td("Hat"); +_td("Glasses"); +_td("Spanner"); +_td("Santa"); +_td("Thumbs up"); +_td("Umbrella"); +_td("Hourglass"); +_td("Clock"); +_td("Gift"); +_td("Light bulb"); +_td("Book"); +_td("Pencil"); +_td("Paperclip"); +_td("Scissors"); +_td("Lock"); +_td("Key"); +_td("Hammer"); +_td("Telephone"); +_td("Flag"); +_td("Train"); +_td("Bicycle"); +_td("Aeroplane"); +_td("Rocket"); +_td("Trophy"); +_td("Ball"); +_td("Guitar"); +_td("Trumpet"); +_td("Bell"); +_td("Anchor"); +_td("Headphones"); +_td("Folder"); +_td("Pin"); diff --git a/src/i18n/strings/ar.json b/src/i18n/strings/ar.json index e541fb8fa6..a6a52b147d 100644 --- a/src/i18n/strings/ar.json +++ b/src/i18n/strings/ar.json @@ -155,6 +155,10 @@ "Unable to enable Notifications": "غير قادر على تفعيل التنبيهات", "This email address was not found": "لم يتم العثور على البريد الالكتروني هذا", "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "يبدو ان بريدك الالكتروني غير مرتبط بمعرف Matrix على هذا السيرفر.", + "Use your account to sign in to the latest version": "استخدم حسابك للدخول الى الاصدار الاخير", + "We’re excited to announce Riot is now Element": "نحن سعيدون باعلان ان Riot اصبح الان Element", + "Riot is now Element!": "Riot اصبح الان Element!", + "Learn More": "تعلم المزيد", "Sign In or Create Account": "قم بتسجيل الدخول او انشاء حساب جديد", "Use your account or create a new one to continue.": "استخدم حسابك او قم بانشاء حساب اخر للاستمرار.", "Create Account": "انشاء حساب", diff --git a/src/i18n/strings/az.json b/src/i18n/strings/az.json index 91e52c03ad..5a8dec76f0 100644 --- a/src/i18n/strings/az.json +++ b/src/i18n/strings/az.json @@ -220,11 +220,13 @@ "Reject invitation": "Dəvəti rədd etmək", "Are you sure you want to reject the invitation?": "Siz əminsiniz ki, siz dəvəti rədd etmək istəyirsiniz?", "Name": "Ad", + "There are no visible files in this room": "Bu otaqda görülən fayl yoxdur", "Featured Users:": "Seçilmiş istifadəçilər:", "Failed to reject invitation": "Dəvəti rədd etməyi bacarmadı", "Failed to leave room": "Otaqdan çıxmağı bacarmadı", "For security, this session has been signed out. Please sign in again.": "Təhlükəsizliyin təmin olunması üçün sizin sessiyanız başa çatmışdır idi. Zəhmət olmasa, yenidən girin.", "Logout": "Çıxmaq", + "You have no visible notifications": "Görülən xəbərdarlıq yoxdur", "Files": "Fayllar", "Notifications": "Xəbərdarlıqlar", "Connectivity to the server has been lost.": "Serverlə əlaqə itirilmişdir.", diff --git a/src/i18n/strings/bg.json b/src/i18n/strings/bg.json index fa07ed3781..32652669af 100644 --- a/src/i18n/strings/bg.json +++ b/src/i18n/strings/bg.json @@ -179,6 +179,11 @@ "Enable URL previews for this room (only affects you)": "Включване на URL прегледи за тази стая (засяга само Вас)", "Enable URL previews by default for participants in this room": "Включване по подразбиране на URL прегледи за участници в тази стая", "Room Colour": "Цвят на стая", + "Active call (%(roomName)s)": "Активен разговор (%(roomName)s)", + "unknown caller": "повикване от непознат", + "Incoming voice call from %(name)s": "Входящо гласово повикване от %(name)s", + "Incoming video call from %(name)s": "Входящо видео повикване от %(name)s", + "Incoming call from %(name)s": "Входящо повикване от %(name)s", "Decline": "Откажи", "Accept": "Приеми", "Incorrect verification code": "Неправилен код за потвърждение", @@ -274,6 +279,7 @@ "Settings": "Настройки", "Forget room": "Забрави стаята", "Failed to set direct chat tag": "Неуспешно означаване на директен чат", + "Community Invites": "Покани за общност", "Invites": "Покани", "Favourites": "Любими", "Low priority": "Нисък приоритет", @@ -495,6 +501,7 @@ "Name": "Име", "You must register to use this functionality": "Трябва да се регистрирате, за да използвате тази функционалност", "You must join the room to see its files": "Трябва да се присъедините към стаята, за да видите файловете, които съдържа", + "There are no visible files in this room": "Няма видими файлове в тази стая", "Which rooms would you like to add to this summary?": "Кои стаи бихте искали да добавите в това обобщение?", "Add to summary": "Добави в обобщението", "Failed to add the following rooms to the summary of %(groupId)s:": "Неуспешно добавяне на следните стаи в обобщението на %(groupId)s:", @@ -527,6 +534,7 @@ "Logout": "Излез", "Sign out": "Изход", "Error whilst fetching joined communities": "Грешка при извличането на общности, към които сте присъединени", + "You have no visible notifications": "Нямате видими известия", "%(count)s of your messages have not been sent.|other": "Някои от Вашите съобщение не бяха изпратени.", "%(count)s of your messages have not been sent.|one": "Вашето съобщение не беше изпратено.", "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.|other": "Изпрати всички отново или откажи всички сега. Също така може да изберете индивидуални съобщения, които да изпратите отново или да откажете.", @@ -809,6 +817,7 @@ "Share Community": "Споделяне на общност", "Share Room Message": "Споделяне на съобщение от стая", "Link to selected message": "Създай връзка към избраното съобщение", + "COPY": "КОПИРАЙ", "Share Message": "Сподели съобщението", "No Audio Outputs detected": "Не са открити аудио изходи", "Audio Output": "Аудио изходи", @@ -1047,6 +1056,8 @@ "Go back": "Върни се", "Update status": "Обнови статуса", "Set status": "Настрой статус", + "Your Modular server": "Вашият Modular сървър", + "Enter the location of your Modular homeserver. It may use your own domain name or be a subdomain of modular.im.": "Въведете адреса на вашият Modular сървър. Той представлява или вашето собствено домейн име или поддомейн на modular.im.", "Server Name": "Име на сървър", "The username field must not be blank.": "Потребителското име не може да бъде празно.", "Username": "Потребителско име", @@ -1085,6 +1096,68 @@ "Group & filter rooms by custom tags (refresh to apply changes)": "Групирай & филтрирай стаи по собствен етикет (презаредете за да влезе в сила)", "Verify this user by confirming the following emoji appear on their screen.": "Потвърдете този потребител, като установите че следното емоджи се вижда на екрана им.", "Unable to find a supported verification method.": "Не може да бъде намерен поддържан метод за потвърждение.", + "Dog": "Куче", + "Cat": "Котка", + "Lion": "Лъв", + "Horse": "Кон", + "Unicorn": "Еднорог", + "Pig": "Прасе", + "Elephant": "Слон", + "Rabbit": "Заек", + "Panda": "Панда", + "Rooster": "Петел", + "Penguin": "Пингвин", + "Turtle": "Костенурка", + "Fish": "Риба", + "Octopus": "Октопод", + "Butterfly": "Пеперуда", + "Flower": "Цвете", + "Tree": "Дърво", + "Cactus": "Кактус", + "Mushroom": "Гъба", + "Globe": "Земя", + "Moon": "Луна", + "Cloud": "Облак", + "Fire": "Огън", + "Banana": "Банан", + "Apple": "Ябълка", + "Strawberry": "Ягода", + "Corn": "Царевица", + "Pizza": "Пица", + "Cake": "Торта", + "Heart": "Сърце", + "Smiley": "Усмивка", + "Robot": "Робот", + "Hat": "Шапка", + "Glasses": "Очила", + "Spanner": "Гаечен ключ", + "Santa": "Дядо Коледа", + "Thumbs up": "Палец нагоре", + "Umbrella": "Чадър", + "Hourglass": "Пясъчен часовник", + "Clock": "Часовник", + "Gift": "Подарък", + "Light bulb": "Лампа", + "Book": "Книга", + "Pencil": "Молив", + "Paperclip": "Кламер", + "Key": "Ключ", + "Hammer": "Чук", + "Telephone": "Телефон", + "Flag": "Флаг", + "Train": "Влак", + "Bicycle": "Колело", + "Aeroplane": "Самолет", + "Rocket": "Ракета", + "Trophy": "Трофей", + "Ball": "Топка", + "Guitar": "Китара", + "Trumpet": "Тромпет", + "Bell": "Звънец", + "Anchor": "Котва", + "Headphones": "Слушалки", + "Folder": "Папка", + "Pin": "Кабърче", "This homeserver would like to make sure you are not a robot.": "Сървърът иска да потвърди, че не сте робот.", "Change": "Промени", "Couldn't load page": "Страницата не можа да бъде заредена", @@ -1121,6 +1194,7 @@ "%(senderDisplayName)s disabled flair for %(groups)s in this room.": "%(senderDisplayName)s изключи показването на значки в тази стая за следните групи: %(groups)s.", "%(senderDisplayName)s enabled flair for %(newGroups)s and disabled flair for %(oldGroups)s in this room.": "%(senderDisplayName)s включи показването на значки в тази стая за %(newGroups)s и изключи показването на значки за %(oldGroups)s.", "Show read receipts sent by other users": "Показвай индикация за прочитане от други потребители", + "Scissors": "Ножици", "Error updating main address": "Грешка при обновяване на основния адрес", "There was an error updating the room's main address. It may not be allowed by the server or a temporary failure occurred.": "Случи се грешка при обновяването на основния адрес за стаята. Може да не е позволено от сървъра, или да се е случила друга временна грешка.", "Error updating flair": "Грешка при обновяването на значка", @@ -1272,6 +1346,7 @@ "Some characters not allowed": "Някои символи не са позволени", "Create your Matrix account on ": "Създайте Matrix акаунт в ", "Add room": "Добави стая", + "Your profile": "Вашият профил", "Your Matrix account on ": "Вашият Matrix акаунт в ", "Failed to get autodiscovery configuration from server": "Неуспешно автоматично откриване на конфигурацията за сървъра", "Invalid base_url for m.homeserver": "Невалиден base_url в m.homeserver", @@ -1426,10 +1501,13 @@ "Reporting this message will send its unique 'event ID' to the administrator of your homeserver. If messages in this room are encrypted, your homeserver administrator will not be able to read the message text or view any files or images.": "Докладването на съобщението ще изпрати уникалният номер на събитието (event ID) до администратора на сървъра. Ако съобщенията в стаята са шифровани, администратора няма да може да прочете текста им или да види снимките или файловете.", "Send report": "Изпрати доклад", "Report Content": "Докладвай съдържание", + "Filter": "Филтрирай", + "Filter rooms…": "Филтрирай стаите…", "Preview": "Прегледай", "View": "Виж", "Find a room…": "Намери стая…", "Find a room… (e.g. %(exampleRoom)s)": "Намери стая... (напр. %(exampleRoom)s)", + "Explore": "Открий стаи", "If you can't find the room you're looking for, ask for an invite or Create a new room.": "Ако не намирате търсената стая, попитайте за покана или Създайте нова стая.", "Explore rooms": "Открий стаи", "Verify the link in your inbox": "Потвърдете линка във вашата пощенска кутия", @@ -1465,10 +1543,12 @@ "You are about to remove %(count)s messages by %(user)s. This cannot be undone. Do you wish to continue?|one": "На път сте да премахнете 1 съобщение от %(user)s. Това е необратимо. Искате ли да продължите?", "Remove %(count)s messages|one": "Премахни 1 съобщение", "Room %(name)s": "Стая %(name)s", + "Recent rooms": "Скорошни стаи", "%(count)s unread messages including mentions.|other": "%(count)s непрочетени съобщения, включително споменавания.", "%(count)s unread messages including mentions.|one": "1 непрочетено споменаване.", "%(count)s unread messages.|other": "%(count)s непрочетени съобщения.", "%(count)s unread messages.|one": "1 непрочетено съобщение.", + "Unread mentions.": "Непрочетени споменавания.", "Unread messages.": "Непрочетени съобщения.", "Failed to deactivate user": "Неуспешно деактивиране на потребител", "This client does not support end-to-end encryption.": "Този клиент не поддържа шифроване от край до край.", @@ -1666,6 +1746,7 @@ "Whether you're using %(brand)s on a device where touch is the primary input mechanism": "Дали използвате %(brand)s на устройство, на което основния механизъм за достъп е докосване", "Whether you're using %(brand)s as an installed Progressive Web App": "Дали използвате %(brand)s като инсталирано прогресивно уеб приложение (PWA)", "Your user agent": "Информация за браузъра ви", + "If you cancel now, you won't complete verifying the other user.": "Ако се откажете сега, няма да завършите верификацията на другия потребител.", "Use Single Sign On to continue": "Използвайте Single Sign On за да продължите", "Confirm adding this email address by using Single Sign On to prove your identity.": "Потвърдете добавянето на този имейл адрес като потвърдите идентичността си чрез Single Sign On.", "Single Sign On": "Single Sign On", @@ -1674,6 +1755,7 @@ "Confirm adding this phone number by using Single Sign On to prove your identity.": "Потвърдете добавянето на този телефонен номер като докажете идентичността си чрез използване на Single Sign On.", "Confirm adding phone number": "Потвърдете добавянето на телефонен номер", "Click the button below to confirm adding this phone number.": "Кликнете бутона по-долу за да потвърдите добавянето на телефонния номер.", + "If you cancel now, you won't complete verifying your other session.": "Ако се откажете сега, няма да завършите потвърждаването на другата ви сесия.", "Cancel entering passphrase?": "Откажете въвеждането на парола?", "Setting up keys": "Настройка на ключове", "Verify this session": "Потвърди тази сесия", @@ -1728,6 +1810,7 @@ "Enable message search in encrypted rooms": "Включи търсенето на съобщения в шифровани стаи", "How fast should messages be downloaded.": "Колко бързо да се изтеглят съобщенията.", "Manually verify all remote sessions": "Ръчно потвърждаване на всички отдалечени сесии", + "If you cancel now, you won't complete your operation.": "Ако се откажете сега, няма да завършите операцията.", "Review where you’re logged in": "Прегледайте откъде сте влезли в профила си", "New login. Was this you?": "Нов вход. Вие ли бяхте това?", "%(name)s is requesting verification": "%(name)s изпрати запитване за верификация", @@ -1750,6 +1833,7 @@ "They match": "Съвпадат", "They don't match": "Не съвпадат", "To be secure, do this in person or use a trusted way to communicate.": "За да е по-сигурно, направете го на живо или използвайте доверен начин за комуникация.", + "Lock": "Заключи", "Later": "По-късно", "Review": "Прегледай", "Verify yourself & others to keep your chats safe": "Потвърдете себе си и останалите за да запазите чатовете си сигурни", @@ -1840,6 +1924,7 @@ "Re-request encryption keys from your other sessions.": "Поискай отново ключове за шифроване от другите сесии.", "Encrypted by an unverified session": "Шифровано от неверифицирана сесия", "Encrypted by a deleted session": "Шифровано от изтрита сесия", + "Invite only": "Само с покани", "Scroll to most recent messages": "Отиди до най-скорошните съобщения", "Send a reply…": "Изпрати отговор…", "Send a message…": "Изпрати съобщение…", @@ -1954,6 +2039,7 @@ "Invite someone using their name, username (like ), email address or share this room.": "Поканете някой посредством име, потребителско име (като ), имейл адрес или като споделите тази стая.", "Opens chat with the given user": "Отваря чат с дадения потребител", "Sends a message to the given user": "Изпраща съобщение до дадения потребител", + "Font scaling": "Мащабиране на шрифта", "Font size": "Размер на шрифта", "IRC display name width": "Ширина на IRC името", "Waiting for your other session to verify…": "Изчакване другата сесията да потвърди…", @@ -1961,6 +2047,7 @@ "Custom font size can only be between %(min)s pt and %(max)s pt": "Собствения размер на шрифта може да бъде единствено между %(min)s pt и %(max)s pt", "Use between %(min)s pt and %(max)s pt": "Изберете между %(min)s pt и %(max)s pt", "Appearance": "Изглед", + "Create room": "Създай стая", "You've successfully verified your device!": "Успешно потвърдихте устройството си!", "Message deleted": "Съобщението беше изтрито", "Message deleted by %(name)s": "Съобщението беше изтрито от %(name)s", @@ -2157,10 +2244,12 @@ "Sort by": "Подреди по", "Activity": "Активност", "A-Z": "Азбучен ред", + "Unread rooms": "Непрочетени стаи", "Show %(count)s more|other": "Покажи още %(count)s", "Show %(count)s more|one": "Покажи още %(count)s", "Light": "Светла", "Dark": "Тъмна", + "Use the improved room list (will refresh to apply changes)": "Използвай подобрения списък със стаи (ще презареди за да се приложи промяната)", "Use custom size": "Използвай собствен размер", "Use a system font": "Използвай системния шрифт", "System font name": "Име на системния шрифт", @@ -2171,11 +2260,18 @@ "Customise your appearance": "Настройте изгледа", "Appearance Settings only affect this %(brand)s session.": "Настройките на изгледа влияят само на тази %(brand)s сесия.", "The authenticity of this encrypted message can't be guaranteed on this device.": "Автентичността на това шифровано съобщение не може да бъде гарантирана на това устройство.", + "Always show first": "Винаги показвай първо", + "Show": "Покажи", + "Message preview": "Преглед на съобщението", "List options": "Опции на списъка", "Leave Room": "Напусни стаята", "Room options": "Настройки на стаята", "Use Recovery Key or Passphrase": "Използвай ключ за възстановяване или парола", "Use Recovery Key": "Използвай ключ за възстановяване", + "Use your account to sign in to the latest version": "Използвайте профила си за да влезете в последната версия", + "We’re excited to announce Riot is now Element": "Развълнувани сме да обявим, че Riot вече е Element", + "Riot is now Element!": "Riot вече е Element!", + "Learn More": "Научи повече", "You joined the call": "Присъединихте се към разговор", "%(senderName)s joined the call": "%(senderName)s се присъедини към разговор", "Call in progress": "Тече разговор", @@ -2185,5 +2281,29 @@ "You started a call": "Започнахте разговор", "%(senderName)s started a call": "%(senderName)s започна разговор", "Waiting for answer": "Изчакване на отговор", - "%(senderName)s is calling": "%(senderName)s се обажда" + "%(senderName)s is calling": "%(senderName)s се обажда", + "You created the room": "Създадохте стаята", + "%(senderName)s created the room": "%(senderName)s създаде стаята", + "You made the chat encrypted": "Направихте чата шифрован", + "%(senderName)s made the chat encrypted": "%(senderName)s направи чата шифрован", + "You made history visible to new members": "Направихте историята видима за нови членове", + "%(senderName)s made history visible to new members": "%(senderName)s направи историята видима за нови членове", + "You made history visible to anyone": "Направихте историята видима за всички", + "%(senderName)s made history visible to anyone": "%(senderName)s направи историята видима за всички", + "You made history visible to future members": "Направихте историята видима за бъдещи членове", + "%(senderName)s made history visible to future members": "%(senderName)s направи историята видима за бъдещи членове", + "You were invited": "Бяхте поканени", + "%(targetName)s was invited": "%(targetName)s беше поканен", + "You left": "Напуснахте", + "%(targetName)s left": "%(targetName)s напусна", + "You were kicked (%(reason)s)": "Бяхте изгонени (%(reason)s)", + "%(targetName)s was kicked (%(reason)s)": "%(targetName)s беше изгонен(а) (%(reason)s)", + "You were kicked": "Бяхте изгонени", + "%(targetName)s was kicked": "%(targetName)s беше изгонен(а)", + "You rejected the invite": "Отхвърлихте поканата", + "%(targetName)s rejected the invite": "%(targetName)s отхвърли поканата", + "You were uninvited": "Поканата към вас беше премахната", + "%(targetName)s was uninvited": "Поканата към %(targetName)s беше премахната", + "You were banned (%(reason)s)": "Бяхте блокирани (%(reason)s)", + "%(targetName)s was banned (%(reason)s)": "%(targetName)s беше блокиран(а) (%(reason)s)" } diff --git a/src/i18n/strings/ca.json b/src/i18n/strings/ca.json index cb5a4f7f64..6b954da9f2 100644 --- a/src/i18n/strings/ca.json +++ b/src/i18n/strings/ca.json @@ -175,6 +175,11 @@ "Enable URL previews for this room (only affects you)": "Activa la vista prèvia d'URL d'aquesta sala (no afecta altres usuaris)", "Enable URL previews by default for participants in this room": "Activa per defecte la vista prèvia d'URL per als participants d'aquesta sala", "Room Colour": "Color de la sala", + "Active call (%(roomName)s)": "Trucada activa (%(roomName)s)", + "unknown caller": "trucada d'un desconegut", + "Incoming voice call from %(name)s": "Trucada de veu entrant de %(name)s", + "Incoming video call from %(name)s": "Trucada de vídeo entrant de %(name)s", + "Incoming call from %(name)s": "Trucada entrant de %(name)s", "Decline": "Declina", "Accept": "Accepta", "Incorrect verification code": "El codi de verificació és incorrecte", @@ -274,6 +279,7 @@ "Join Room": "Entra a la sala", "Upload avatar": "Puja l'avatar", "Forget room": "Oblida la sala", + "Community Invites": "Invitacions de les comunitats", "Invites": "Invitacions", "Favourites": "Preferits", "Low priority": "Baixa prioritat", @@ -471,6 +477,7 @@ "Name": "Nom", "You must register to use this functionality": "Heu de register per utilitzar aquesta funcionalitat", "You must join the room to see its files": "Heu d'entrar a la sala per poder-ne veure els fitxers", + "There are no visible files in this room": "No hi ha fitxers visibles en aquesta sala", "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

Aquest és l'HTML per a la pàgina de la vostra comunitat

\n

\n Utilitzeu la descripció llarga per a presentar la comunitat a nous membres,\n o per afegir-hi enlaços d'interès. \n

\n

\n També podeu utilitzar etiquetes 'img'.\n

\n", "Add rooms to the community summary": "Afegiu sales al resum de la comunitat", "Which rooms would you like to add to this summary?": "Quines sales voleu afegir a aquest resum?", @@ -518,6 +525,7 @@ "Error whilst fetching joined communities": "S'ha produït un error en buscar comunitats unides", "Create a new community": "Crea una comunitat nova", "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Crea una comunitat per agrupar usuaris i sales! Creeu una pàgina d'inici personalitzada per definir el vostre espai a l'univers Matrix.", + "You have no visible notifications": "No teniu cap notificació visible", "%(count)s of your messages have not been sent.|other": "Alguns dels vostres missatges no s'han enviat.", "%(count)s of your messages have not been sent.|one": "El vostre missatge no s'ha enviat.", "Warning": "Avís", diff --git a/src/i18n/strings/cs.json b/src/i18n/strings/cs.json index 973ac29ea3..7f799072cb 100644 --- a/src/i18n/strings/cs.json +++ b/src/i18n/strings/cs.json @@ -33,6 +33,7 @@ "Oct": "Říj", "Nov": "Lis", "Dec": "Pro", + "There are no visible files in this room": "V této místnosti nejsou žádné viditelné soubory", "Create new room": "Založit novou místnost", "Room directory": "Adresář místností", "Start chat": "Zahájit konverzaci", @@ -149,6 +150,9 @@ "I have verified my email address": "Ověřil/a jsem svou e-mailovou adresu", "Import": "Importovat", "Import E2E room keys": "Importovat end-to-end klíče místností", + "Incoming call from %(name)s": "Příchozí hovor od %(name)s", + "Incoming video call from %(name)s": "Příchozí videohovor od %(name)s", + "Incoming voice call from %(name)s": "Příchozí hlasový hovor od %(name)s", "Incorrect username and/or password.": "Nesprávné uživatelské jméno nebo heslo.", "Incorrect verification code": "Nesprávný ověřovací kód", "Invalid Email Address": "Neplatná e-mailová adresa", @@ -232,6 +236,7 @@ "Offline": "Offline", "Check for update": "Zkontrolovat aktualizace", "%(targetName)s accepted the invitation for %(displayName)s.": "Uživatel %(targetName)s přijal pozvání pro %(displayName)s.", + "Active call (%(roomName)s)": "Probíhající hovor (%(roomName)s)", "%(senderName)s banned %(targetName)s.": "Uživatel %(senderName)s vykázal uživatele %(targetName)s.", "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Nelze se připojit k domovskému serveru přes HTTP, pokud je v adresním řádku HTTPS. Buď použijte HTTPS, nebo povolte nezabezpečené skripty.", "Click here to fix": "Pro opravu klepněte zde", @@ -256,6 +261,7 @@ "%(senderName)s unbanned %(targetName)s.": "Uživatel %(senderName)s přijal zpět uživatele %(targetName)s.", "Unable to capture screen": "Nepodařilo se zachytit obrazovku", "Unable to enable Notifications": "Nepodařilo se povolit oznámení", + "unknown caller": "neznámý volající", "Unmute": "Povolit", "Unnamed Room": "Nepojmenovaná místnost", "Uploading %(filename)s and %(count)s others|zero": "Nahrávání souboru %(filename)s", @@ -385,6 +391,7 @@ "Kick this user?": "Vykopnout tohoto uživatele?", "Unban this user?": "Přijmout zpět tohoto uživatele?", "Ban this user?": "Vykázat tohoto uživatele?", + "Community Invites": "Pozvánky do skupin", "Members only (since the point in time of selecting this option)": "Pouze členové (od chvíle vybrání této volby)", "Members only (since they were invited)": "Pouze členové (od chvíle jejich pozvání)", "Members only (since they joined)": "Pouze členové (od chvíle jejich vstupu)", @@ -570,6 +577,7 @@ "Error whilst fetching joined communities": "Při získávání vašich skupin se vyskytla chyba", "Create a new community": "Vytvořit novou skupinu", "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Vytvořte skupinu s cílem seskupit uživatele a místnosti! Vytvořte si vlastní domovskou stránku a vymezte tak svůj prostor ve světe Matrix.", + "You have no visible notifications": "Nejsou dostupná žádná oznámení", "Connectivity to the server has been lost.": "Spojení se serverem bylo přerušeno.", "Sent messages will be stored until your connection has returned.": "Odeslané zprávy zůstanou uložené, dokud se spojení znovu neobnoví.", "Active call": "Aktivní hovor", @@ -809,6 +817,7 @@ "Share Community": "Sdílet skupinu", "Share Room Message": "Sdílet zprávu z místnosti", "Link to selected message": "Odkaz na vybranou zprávu", + "COPY": "Kopírovat", "Share Message": "Sdílet", "Collapse Reply Thread": "Sbalit vlákno odpovědi", "Unable to join community": "Není možné vstoupit do skupiny", @@ -991,6 +1000,68 @@ "Verify this user by confirming the following emoji appear on their screen.": "Ověřte uživatele zkontrolováním, že se mu na obrazovce objevily stejné emoji.", "Verify this user by confirming the following number appears on their screen.": "Ověřte uživatele zkontrolováním, že se na obrazovce objevila stejná čísla.", "Unable to find a supported verification method.": "Nepovedlo se nám najít podporovanou metodu ověření.", + "Dog": "Pes", + "Cat": "Kočka", + "Lion": "Lev", + "Horse": "Kůň", + "Unicorn": "Jednorožec", + "Pig": "Prase", + "Elephant": "Slon", + "Rabbit": "Králík", + "Panda": "Panda", + "Rooster": "Kohout", + "Penguin": "Tučňák", + "Turtle": "Želva", + "Fish": "Ryba", + "Octopus": "Chobotnice", + "Butterfly": "Motýl", + "Flower": "Květina", + "Tree": "Strom", + "Cactus": "Kaktus", + "Mushroom": "Houba", + "Globe": "Zeměkoule", + "Moon": "Měsíc", + "Cloud": "Mrak", + "Fire": "Oheň", + "Banana": "Banán", + "Apple": "Jablko", + "Strawberry": "Jahoda", + "Corn": "Kukuřice", + "Pizza": "Pizza", + "Cake": "Dort", + "Heart": "Srdce", + "Smiley": "Smajlík", + "Robot": "Robot", + "Hat": "Klobouk", + "Glasses": "Brýle", + "Spanner": "Maticový klíč", + "Santa": "Santa Klaus", + "Thumbs up": "Palec nahoru", + "Umbrella": "Deštník", + "Hourglass": "Přesýpací hodiny", + "Clock": "Hodiny", + "Gift": "Dárek", + "Light bulb": "Žárovka", + "Book": "Kniha", + "Pencil": "Tužka", + "Paperclip": "Sponka", + "Key": "Klíč", + "Hammer": "Kladivo", + "Telephone": "Telefon", + "Flag": "Vlajka", + "Train": "Vlak", + "Bicycle": "Jízdní kolo", + "Aeroplane": "Letadlo", + "Rocket": "Raketa", + "Trophy": "Trofej", + "Ball": "Míč", + "Guitar": "Kytara", + "Trumpet": "Trumpeta", + "Bell": "Zvon", + "Anchor": "Kotva", + "Headphones": "Sluchátka", + "Folder": "Desky", + "Pin": "Připínáček", "Yes": "Ano", "No": "Ne", "Never lose encrypted messages": "Nikdy nepřijdete o šifrované zprávy", @@ -1078,6 +1149,7 @@ "This homeserver would like to make sure you are not a robot.": "Domovský server se potřebuje přesvědčit, že nejste robot.", "Please review and accept all of the homeserver's policies": "Pročtěte si a odsouhlaste prosím všechna pravidla domovského serveru", "Please review and accept the policies of this homeserver:": "Pročtěte si a odsouhlaste prosím pravidla domovského serveru:", + "Enter the location of your Modular homeserver. It may use your own domain name or be a subdomain of modular.im.": "Zadejte adresu serveru Modular. Můžete použít svou vlastní doménu a nebo subdoménu modular.im.", "Homeserver URL": "URL domovského serveru", "This homeserver does not support communities": "Tento domovský server nepodporuje skupiny", "Invalid homeserver discovery response": "Neplatná odpověd při hledání domovského serveru", @@ -1085,6 +1157,7 @@ "Registration has been disabled on this homeserver.": "Tento domovský server nepovoluje registraci.", "Identity Server URL": "URL serveru identity", "Invalid identity server discovery response": "Neplatná odpověď při hledání serveru identity", + "Your Modular server": "Váš server Modular", "Server Name": "Název serveru", "The username field must not be blank.": "Je potřeba vyplnit uživatelské jméno.", "Username": "Uživatelské jméno", @@ -1115,6 +1188,7 @@ "User %(userId)s is already in the room": "Uživatel %(userId)s už je v této místnosti", "The user must be unbanned before they can be invited.": "Uživatel je vykázán, nelze ho pozvat.", "Show read receipts sent by other users": "Zobrazovat potvrzení o přijetí", + "Scissors": "Nůžky", "Accept all %(invitedRooms)s invites": "Přijmout pozvání do všech těchto místností: %(invitedRooms)s", "Change room avatar": "Změnit avatar místnosti", "Change room name": "Změnit název místnosti", @@ -1259,6 +1333,7 @@ "Add room": "Přidat místnost", "You have %(count)s unread notifications in a prior version of this room.|other": "Máte %(count)s nepřečtených oznámení v předchozí verzi této místnosti.", "You have %(count)s unread notifications in a prior version of this room.|one": "Máte jedno nepřečtené oznámení v předchozí verzi této místnosti.", + "Your profile": "Váš profil", "Your Matrix account on ": "Váš účet Matrix na serveru ", "Failed to get autodiscovery configuration from server": "Nepovedlo se automaticky načíst konfiguraci ze serveru", "Invalid base_url for m.homeserver": "Neplatná base_url pro m.homeserver", @@ -1412,6 +1487,7 @@ "Strikethrough": "Přešktnutě", "Code block": "Blok kódu", "Room %(name)s": "Místnost %(name)s", + "Recent rooms": "Nedávné místnosti", "Loading room preview": "Načítání náhdledu místnosti", "An error (%(errcode)s) was returned while trying to validate your invite. You could try to pass this information on to a room admin.": "Při ověřování pozvánky došlo k chybě (%(errcode)s). Předejte tuto informaci správci místnosti.", "This invite to %(roomName)s was sent to %(email)s which is not associated with your account": "Pozvánka do místnosti %(roomName)s byla poslána na adresu %(email)s, která není k tomuto účtu přidána", @@ -1423,6 +1499,7 @@ "%(count)s unread messages including mentions.|one": "Nepřečtená zmínka.", "%(count)s unread messages.|other": "%(count)s nepřečtených zpráv.", "%(count)s unread messages.|one": "Nepřečtená zpráva.", + "Unread mentions.": "Nepřečtená zmínka.", "Unread messages.": "Nepřečtené zprávy.", "Failed to deactivate user": "Deaktivace uživatele se nezdařila", "This client does not support end-to-end encryption.": "Tento klient nepodporuje end-to-end šifrování.", @@ -1475,6 +1552,9 @@ "Set an email for account recovery. Use email to optionally be discoverable by existing contacts.": "Nastavte si e-mailovou adresu pro obnovení hesla. E-mail můžete také použít, aby vás vaši přátelé snadno našli.", "Enter your custom homeserver URL What does this mean?": "Zadejte adresu domovského serveru. Co to znamená?", "Enter your custom identity server URL What does this mean?": "Zadejte adresu serveru identit. Co to znamená?", + "Explore": "Procházet", + "Filter": "Filtr místností", + "Filter rooms…": "Najít místnost…", "%(creator)s created and configured the room.": "%(creator)s vytvořil a nakonfiguroval místnost.", "Preview": "Náhled", "View": "Zobrazit", @@ -1666,6 +1746,7 @@ "They match": "Odpovídají", "They don't match": "Neodpovídají", "To be secure, do this in person or use a trusted way to communicate.": "Aby to bylo bezpečné, udělejte to osobně nebo použijte důvěryhodný komunikační prostředek.", + "Lock": "Zámek", "Verify yourself & others to keep your chats safe": "Ověřte sebe a ostatní, aby byla vaše komunikace bezpečná", "Other users may not trust it": "Ostatní uživatelé této relaci nemusí věřit", "Later": "Později", @@ -1737,6 +1818,7 @@ "Re-request encryption keys from your other sessions.": "Znovu zažádat o šifrovací klíče z vašich ostatních relací.", "Encrypted by an unverified session": "Šifrované neověřenou relací", "Encrypted by a deleted session": "Šifrované smazanou relací", + "Invite only": "Pouze na pozvání", "Send a reply…": "Odpovědět…", "Send a message…": "Napsat zprávu…", "Direct Messages": "Přímé zprávy", @@ -1809,6 +1891,8 @@ "You have been logged out of all sessions and will no longer receive push notifications. To re-enable notifications, sign in again on each device.": "Všude jsme vás odhlásili, takže nedostáváte žádná oznámení. Můžete je znovu povolit tím, že se na všech svých zařízeních znovu přihlásíte.", "Regain access to your account and recover encryption keys stored in this session. Without them, you won’t be able to read all of your secure messages in any session.": "Získejte znovu přístup k účtu a obnovte si šifrovací klíče uložené v této relaci. Bez nich nebudete schopni číst zabezpečené zprávy na některých zařízeních.", "Warning: Your personal data (including encryption keys) is still stored in this session. Clear it if you're finished using this session, or want to sign in to another account.": "Varování: Vaše osobní data (včetně šifrovacích klíčů) jsou tu pořád uložena. Smažte je, pokud chcete tuto relaci zahodit, nebo se přihlaste pod jiný účet.", + "If you cancel now, you won't complete verifying the other user.": "Pokud teď proces zrušíte, tak nebude druhý uživatel ověřen.", + "If you cancel now, you won't complete verifying your other session.": "Pokud teď proces zrušíte, tak nebude druhá relace ověřena.", "Cancel entering passphrase?": "Zrušit zadávání hesla?", "Setting up keys": "Příprava klíčů", "%(brand)s is missing some components required for securely caching encrypted messages locally. If you'd like to experiment with this feature, build a custom %(brand)s Desktop with search components added.": "%(brand)su chybí nějaké komponenty, které jsou potřeba pro vyhledávání v zabezpečených místnostech. Pokud chcete s touto funkcí experimentovat, tak si pořiďte vlastní %(brand)s Desktop s přidanými komponentami.", @@ -1939,6 +2023,7 @@ "Almost there! Is your other session showing the same shield?": "Téměř hotovo! Je vaše druhá relace také ověřená?", "Almost there! Is %(displayName)s showing the same shield?": "Téměř hotovo! Je relace %(displayName)s také ověřená?", "You've successfully verified %(deviceName)s (%(deviceId)s)!": "Ověřili jste %(deviceName)s (%(deviceId)s)!", + "If you cancel now, you won't complete your operation.": "Pokud teď akci stornujete, nebudete jí moci dokončit.", "Review where you’re logged in": "Zobrazit kde jste přihlášení", "New login. Was this you?": "Nové přihlášní. Jste to vy?", "%(name)s is requesting verification": "%(name)s žádá o ověření", @@ -2020,6 +2105,9 @@ "Upgrade your %(brand)s": "Aktualizovat %(brand)s", "A new version of %(brand)s is available!": "Je dostupná nová verze %(brand)su!", "Are you sure you want to cancel entering passphrase?": "Chcete určitě zrušit zadávání hesla?", + "Use your account to sign in to the latest version": "Přihlašte se za pomoci svého účtu do nejnovější verze", + "Riot is now Element!": "Riot je nyní Element!", + "Learn More": "Zjistit více", "Light": "Světlý", "Dark": "Tmavý", "You joined the call": "Připojili jste se k hovoru", @@ -2064,6 +2152,7 @@ "Invite someone using their name, username (like ), email address or share this room.": "Pozvěte někoho za použití jeho jména, uživatelského jména (např. ), e-mailové adresy, a nebo sdílejte tuto místnost.", "a new master key signature": "nový podpis hlavního klíče", "Please install Chrome, Firefox, or Safari for the best experience.": "Pro nejlepší zážitek si prosím nainstalujte prohlížeč Chrome, Firefox, nebo Safari.", + "We’re excited to announce Riot is now Element": "S nadšením oznamujeme, že Riot je nyní Element", "Enable experimental, compact IRC style layout": "Povolit experimentální, kompaktní zobrazení zpráv ve stylu IRC", "New version available. Update now.": "Je dostupná nová verze. Aktualizovat nyní.", "Message layout": "Zobrazení zpráv", diff --git a/src/i18n/strings/da.json b/src/i18n/strings/da.json index d99b0774ef..f44d724643 100644 --- a/src/i18n/strings/da.json +++ b/src/i18n/strings/da.json @@ -1,5 +1,6 @@ { "Filter room members": "Filter medlemmer", + "You have no visible notifications": "Du har ingen synlige meddelelser", "Invites": "Invitationer", "Favourites": "Favoritter", "Rooms": "Rum", @@ -482,6 +483,9 @@ "Confirm adding phone number": "Bekræft tilføjelse af telefonnummer", "Click the button below to confirm adding this phone number.": "Klik på knappen herunder for at bekræfte tilføjelsen af dette telefonnummer.", "Whether you're using %(brand)s as an installed Progressive Web App": "Om du anvender %(brand)s som en installeret Progressiv Web App", + "If you cancel now, you won't complete verifying the other user.": "Hvis du annullerer du, vil du ikke have færdiggjort verifikationen af den anden bruger.", + "If you cancel now, you won't complete verifying your other session.": "Hvis du annullerer nu, vil du ikke have færdiggjort verifikationen af din anden session.", + "If you cancel now, you won't complete your operation.": "Hvis du annullerer nu, vil du ikke færdiggøre din operation.", "Cancel entering passphrase?": "Annuller indtastning af kodeord?", "Enter passphrase": "Indtast kodeord", "Setting up keys": "Sætter nøgler op", diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 8dab9543f1..3d5ba3722e 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1,5 +1,6 @@ { "Filter room members": "Raum-Mitglieder filtern", + "You have no visible notifications": "Du hast keine sichtbaren Benachrichtigungen", "Invites": "Einladungen", "Favourites": "Favoriten", "Rooms": "Räume", @@ -182,6 +183,7 @@ "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s hat die Einladung für %(targetName)s zurückgezogen.", "You need to be able to invite users to do that.": "Du musst die Berechtigung haben, Benutzer einzuladen, um diese Aktion ausführen zu können.", "You need to be logged in.": "Du musst angemeldet sein.", + "There are no visible files in this room": "Es gibt keine sichtbaren Dateien in diesem Raum", "Connectivity to the server has been lost.": "Verbindung zum Server wurde unterbrochen.", "Sent messages will be stored until your connection has returned.": "Gesendete Nachrichten werden gespeichert, bis die Internetverbindung wiederhergestellt wird.", "Active call": "Aktiver Anruf", @@ -348,6 +350,7 @@ "Home": "Startseite", "Username invalid: %(errMessage)s": "Ungültiger Benutzername: %(errMessage)s", "Accept": "Akzeptieren", + "Active call (%(roomName)s)": "Aktiver Anruf (%(roomName)s)", "Admin Tools": "Admin-Werkzeuge", "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Verbindung zum Heimserver fehlgeschlagen - bitte überprüfe die Internetverbindung und stelle sicher, dass dem SSL-Zertifikat deines Heimservers vertraut wird und dass Anfragen nicht durch eine Browser-Erweiterung blockiert werden.", "Close": "Schließen", @@ -355,6 +358,9 @@ "Decline": "Ablehnen", "Drop File Here": "Lasse Datei hier los", "Failed to upload profile picture!": "Hochladen des Profilbild's fehlgeschlagen!", + "Incoming call from %(name)s": "Eingehender Anruf von %(name)s", + "Incoming video call from %(name)s": "Eingehender Videoanruf von %(name)s", + "Incoming voice call from %(name)s": "Eingehender Sprachanruf von %(name)s", "Join as voice or video.": "Per Sprachanruf oder Videoanruf beitreten.", "Last seen": "Zuletzt gesehen", "No display name": "Kein Anzeigename", @@ -365,6 +371,7 @@ "Seen by %(userName)s at %(dateTime)s": "Gesehen von %(userName)s um %(dateTime)s", "Start authentication": "Authentifizierung beginnen", "This room": "diesen Raum", + "unknown caller": "Unbekannter Anrufer", "Unnamed Room": "Unbenannter Raum", "Upload new:": "Neue(s) hochladen:", "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (Berechtigungslevel %(powerLevelNumber)s)", @@ -571,6 +578,7 @@ "Visibility in Room List": "Sichtbarkeit in Raum-Liste", "Visible to everyone": "Für alle sichtbar", "Only visible to community members": "Nur für Community-Mitglieder sichtbar", + "Community Invites": "Community-Einladungen", "Notify the whole room": "Alle im Raum benachrichtigen", "Room Notification": "Raum-Benachrichtigung", "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Diese Räume werden Community-Mitgliedern auf der Community-Seite angezeigt. Community-Mitglieder können diesen Räumen beitreten, indem sie diese anklicken.", @@ -809,6 +817,7 @@ "Share Community": "Teile Community", "Share Room Message": "Teile Raumnachricht", "Link to selected message": "Link zur ausgewählten Nachricht", + "COPY": "KOPIEREN", "Share Message": "Teile Nachricht", "No Audio Outputs detected": "Keine Ton-Ausgabe erkannt", "Audio Output": "Ton-Ausgabe", @@ -1029,6 +1038,68 @@ "%(senderDisplayName)s changed guest access to %(rule)s": "%(senderDisplayName)s änderte den Gastzugriff auf '%(rule)s'", "Group & filter rooms by custom tags (refresh to apply changes)": "Gruppiere & filtere Räume nach eigenen Tags (neu laden um Änderungen zu übernehmen)", "Unable to find a supported verification method.": "Konnte kein unterstützte Verifikationsmethode finden.", + "Dog": "Hund", + "Cat": "Katze", + "Lion": "Löwe", + "Horse": "Pferd", + "Unicorn": "Einhorn", + "Pig": "Schwein", + "Elephant": "Elefant", + "Rabbit": "Kaninchen", + "Panda": "Panda", + "Rooster": "Hahn", + "Penguin": "Pinguin", + "Turtle": "Schildkröte", + "Fish": "Fisch", + "Octopus": "Oktopus", + "Butterfly": "Schmetterling", + "Flower": "Blume", + "Tree": "Baum", + "Cactus": "Kaktus", + "Mushroom": "Pilz", + "Globe": "Globus", + "Moon": "Mond", + "Cloud": "Wolke", + "Fire": "Feuer", + "Banana": "Banane", + "Apple": "Apfel", + "Strawberry": "Erdbeere", + "Corn": "Mais", + "Pizza": "Pizza", + "Cake": "Kuchen", + "Heart": "Herz", + "Smiley": "Smiley", + "Robot": "Roboter", + "Hat": "Hut", + "Glasses": "Brille", + "Spanner": "Schraubenschlüssel", + "Santa": "Nikolaus", + "Thumbs up": "Daumen hoch", + "Umbrella": "Regenschirm", + "Hourglass": "Sanduhr", + "Clock": "Uhr", + "Gift": "Geschenk", + "Light bulb": "Glühbirne", + "Book": "Buch", + "Pencil": "Stift", + "Paperclip": "Büroklammer", + "Key": "Schlüssel", + "Hammer": "Hammer", + "Telephone": "Telefon", + "Flag": "Flagge", + "Train": "Zug", + "Bicycle": "Fahrrad", + "Aeroplane": "Flugzeug", + "Rocket": "Rakete", + "Trophy": "Pokal", + "Ball": "Ball", + "Guitar": "Gitarre", + "Trumpet": "Trompete", + "Bell": "Glocke", + "Anchor": "Anker", + "Headphones": "Kopfhörer", + "Folder": "Ordner", + "Pin": "Stecknadel", "Timeline": "Chatverlauf", "Autocomplete delay (ms)": "Verzögerung zur Autovervollständigung (ms)", "Roles & Permissions": "Rollen & Berechtigungen", @@ -1081,6 +1152,7 @@ "Hide": "Verberge", "This homeserver would like to make sure you are not a robot.": "Dieser Heimserver möchte sicherstellen, dass du kein Roboter bist.", "Server Name": "Servername", + "Your Modular server": "Dein Modular-Server", "The username field must not be blank.": "Das Feld für den Benutzername darf nicht leer sein.", "Username": "Benutzername", "Not sure of your password? Set a new one": "Du bist dir bei deinem Passwort nicht sicher? Setze ein neues", @@ -1113,6 +1185,7 @@ "Recovery Method Removed": "Wiederherstellungsmethode gelöscht", "If you didn't remove the recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings.": "Wenn du die Wiederherstellungsmethode nicht gelöscht hast, kann ein Angreifer versuchen Zugang zu deinem Konto zu bekommen. Ändere dein Passwort und richte sofort eine neue Wiederherstellungsmethode in den Einstellungen ein.", "Warning: you should only set up key backup from a trusted computer.": "Warnung: Du solltest die Schlüsselsicherung nur auf einem vertrauenswürdigen Gerät einrichten.", + "Enter the location of your Modular homeserver. It may use your own domain name or be a subdomain of modular.im.": "Gib die Adresse deines Modular-Heimservers an. Es kann deine eigene Domain oder eine Subdomain von modular.im sein.", "Unable to query for supported registration methods.": "Konnte unterstützte Registrierungsmethoden nicht abrufen.", "Bulk options": "Sammeloptionen", "Join millions for free on the largest public server": "Schließen Sie sich auf dem größten öffentlichen Server kostenlos Millionen von Menschen an", @@ -1124,6 +1197,7 @@ "User %(userId)s is already in the room": "Nutzer %(userId)s ist bereits im Raum", "The user must be unbanned before they can be invited.": "Nutzer müssen entbannt werden, bevor sie eingeladen werden können.", "Show read receipts sent by other users": "Zeige Lesebestätigungen anderer Benutzer", + "Scissors": "Scheren", "Upgrade to your own domain": "Upgrade zu deiner eigenen Domain", "Accept all %(invitedRooms)s invites": "Akzeptiere alle %(invitedRooms)s Einladungen", "Change room avatar": "Ändere Raumbild", @@ -1212,6 +1286,7 @@ "Passwords don't match": "Passwörter stimmen nicht überein", "Enter username": "Benutzername eingeben", "Add room": "Raum hinzufügen", + "Your profile": "Dein Profil", "Registration Successful": "Registrierung erfolgreich", "Failed to revoke invite": "Einladung zurückziehen fehlgeschlagen", "Revoke invite": "Einladung zurückziehen", @@ -1295,6 +1370,7 @@ "%(num)s days from now": "in %(num)s Tagen", "Show info about bridges in room settings": "Information über Bridges in den Raumeinstellungen anzeigen", "Enable message search in encrypted rooms": "Nachrichtensuche in verschlüsselten Räumen aktivieren", + "Lock": "Sperren", "Later": "Später", "Review": "Überprüfen", "Verify": "Verifizieren", @@ -1343,6 +1419,8 @@ "Whether you're using %(brand)s on a device where touch is the primary input mechanism": "Ob du %(brand)s auf einem Gerät verwendest, bei dem Berührung der primäre Eingabemechanismus ist", "Whether you're using %(brand)s as an installed Progressive Web App": "Ob Sie %(brand)s als installierte progressive Web-App verwenden", "Your user agent": "Dein User-Agent", + "If you cancel now, you won't complete verifying the other user.": "Wenn Sie jetzt abbrechen, werden Sie die Verifizierung des anderen Nutzers nicht beenden können.", + "If you cancel now, you won't complete verifying your other session.": "Wenn Sie jetzt abbrechen, werden Sie die Verifizierung der anderen Sitzung nicht beenden können.", "Cancel entering passphrase?": "Eingabe der Passphrase abbrechen?", "Setting up keys": "Einrichten der Schlüssel", "Encryption upgrade available": "Verschlüsselungs-Update verfügbar", @@ -1370,6 +1448,8 @@ "To help us prevent this in future, please send us logs.": "Um uns zu helfen, dies in Zukunft zu vermeiden, senden Sie uns bitte Logs.", "Notification settings": "Benachrichtigungseinstellungen", "Help": "Hilf uns", + "Filter": "Filtern", + "Filter rooms…": "Räume filtern…", "You have %(count)s unread notifications in a prior version of this room.|one": "Sie haben %(count)s ungelesene Benachrichtigungen in einer früheren Version dieses Raumes.", "Go Back": "Gehe zurück", "Notification Autocomplete": "Benachrichtigung Autovervollständigen", @@ -1447,6 +1527,7 @@ "Service": "Dienst", "Summary": "Zusammenfassung", "Document": "Dokument", + "Explore": "Erkunde", "Explore rooms": "Erkunde Räume", "Maximize apps": "Apps maximieren", "The signing key you provided matches the signing key you received from %(userId)s's session %(deviceId)s. Session marked as verified.": "Dein bereitgestellter Signaturschlüssel passt zu dem Schlüssel, der von %(userId)s's Sitzung %(deviceId)s empfangen wurde. Sitzung wird als verifiziert markiert.", @@ -1558,6 +1639,7 @@ "Confirm adding email": "Hinzufügen der E-Mail-Adresse bestätigen", "Confirm adding this phone number by using Single Sign On to prove your identity.": "Bestätige das Hinzufügen dieser Telefonnummer, indem du deine Identität mittels „Single Sign-On“ nachweist.", "Click the button below to confirm adding this phone number.": "Klicke unten die Schaltfläche, um die hinzugefügte Telefonnummer zu bestätigen.", + "If you cancel now, you won't complete your operation.": "Wenn du jetzt abbrichst, wirst du deinen Vorgang nicht fertigstellen.", "%(name)s is requesting verification": "%(name)s fordert eine Verifizierung an", "Failed to set topic": "Das Festlegen des Themas ist fehlgeschlagen", "Command failed": "Befehl fehlgeschlagen", @@ -1702,6 +1784,7 @@ "You have not verified this user.": "Du hast diesen Benutzer nicht verifiziert.", "Everyone in this room is verified": "Jeder in diesem Raum ist verifiziert", "Mod": "Mod", + "Invite only": "Nur auf Einladung", "Scroll to most recent messages": "Springe zur neusten Nachricht", "No recent messages by %(user)s found": "Keine neuen Nachrichten von %(user)s gefunden", "Try scrolling up in the timeline to see if there are any earlier ones.": "Versuche nach oben zu scrollen um zu sehen ob sich dort frühere Nachrichten befinden.", @@ -1716,6 +1799,7 @@ "Italics": "Kursiv", "Strikethrough": "Durchgestrichen", "Code block": "Quelltext", + "Recent rooms": "Letzte Räume", "Loading …": "Lade …", "Join the conversation with an account": "Tritt der Unterhaltung mit einem Konto bei", "You were kicked from %(roomName)s by %(memberName)s": "Du wurdest von %(memberName)s aus %(roomName)s entfernt", @@ -1739,6 +1823,7 @@ "%(count)s unread messages including mentions.|one": "1 ungelesene Erwähnung.", "%(count)s unread messages.|other": "%(count)s ungelesene Nachrichten.", "%(count)s unread messages.|one": "1 ungelesene Nachricht.", + "Unread mentions.": "Ungelesene Erwähnungen.", "Unread messages.": "Ungelesene Nachrichten.", "This room has already been upgraded.": "Dieser Raum wurde bereits hochgestuft.", "This room is running room version , which this homeserver has marked as unstable.": "Dieser Raum läuft mit der Raumversion , welcher dieser Heimserver als instabil markiert hat.", @@ -2098,12 +2183,14 @@ "Click the button below to confirm your identity.": "Klicke den Button unten um deine Identität zu bestätigen.", "Confirm encryption setup": "Bestätige die Einrichtung der Verschlüsselung", "Click the button below to confirm setting up encryption.": "Klick die Schaltfläche unten um die Einstellungen der Verschlüsselung zu bestätigen.", + "Font scaling": "Schriftskalierung", "Font size": "Schriftgröße", "IRC display name width": "Breite des IRC Anzeigenamens", "Size must be a number": "Größe muss eine Zahl sein", "Custom font size can only be between %(min)s pt and %(max)s pt": "Eigene Schriftgröße kann nur eine Zahl zwischen %(min)s pt und %(max)s pt sein", "Use between %(min)s pt and %(max)s pt": "Verwende eine Zahl zwischen %(min)s pt und %(max)s pt", "Appearance": "Erscheinungsbild", + "Create room": "Raum erstellen", "Jump to oldest unread message": "Zur ältesten ungelesenen Nachricht springen", "Upload a file": "Eine Datei hochladen", "Dismiss read marker and jump to bottom": "Entferne Lesemarker und springe nach unten", @@ -2153,6 +2240,10 @@ "Room ID or address of ban list": "Raum-ID oder Adresse der Verbotsliste", "No recently visited rooms": "Keine kürzlich besuchten Räume", "Sort by": "Sortieren nach", + "Unread rooms": "Ungelesene Räume", + "Always show first": "Zeige immer zuerst", + "Show": "Zeige", + "Message preview": "Nachrichtenvorschau", "List options": "Optionen anzeigen", "Show %(count)s more|other": "Zeige %(count)s weitere", "Show %(count)s more|one": "Zeige %(count)s weitere", @@ -2165,6 +2256,7 @@ "Use Recovery Key": "Verwende einen Wiederherstellungsschlüssel", "Light": "Hell", "Dark": "Dunkel", + "Use the improved room list (will refresh to apply changes)": "Verwende die verbesserte Raumliste (lädt die Anwendung neu)", "Use custom size": "Verwende individuelle Größe", "Hey you. You're the best!": "Hey du. Du bist der Beste!", "Message layout": "Nachrichtenlayout", @@ -2185,21 +2277,65 @@ "%(senderName)s started a call": "%(senderName)s hat einen Anruf gestartet", "Waiting for answer": "Warte auf Antwort", "%(senderName)s is calling": "%(senderName)s ruft an", + "You created the room": "Du hast den Raum erstellt", + "%(senderName)s created the room": "%(senderName)s hat den Raum erstellt", + "You made the chat encrypted": "Du hast den Raum verschlüsselt", + "%(senderName)s made the chat encrypted": "%(senderName)s hat den Raum verschlüsselt", + "You made history visible to new members": "Du hast die bisherige Kommunikation für neue Teilnehmern sichtbar gemacht", + "%(senderName)s made history visible to new members": "%(senderName)s hat die bisherige Kommunikation für neue Teilnehmern sichtbar gemacht", + "You made history visible to anyone": "Du hast die bisherige Kommunikation für alle sichtbar gemacht", + "%(senderName)s made history visible to anyone": "%(senderName)s hat die bisherige Kommunikation für alle sichtbar gemacht", + "You made history visible to future members": "Du hast die bisherige Kommunikation für zukünftige Teilnehmer sichtbar gemacht", + "%(senderName)s made history visible to future members": "%(senderName)s hat die bisherige Kommunikation für zukünftige Teilnehmer sichtbar gemacht", + "You were invited": "Du wurdest eingeladen", + "%(targetName)s was invited": "%(targetName)s wurde eingeladen", + "You left": "Du hast den Raum verlassen", + "%(targetName)s left": "%(targetName)s hat den Raum verlassen", + "You were kicked (%(reason)s)": "Du wurdest herausgeworfen (%(reason)s)", + "%(targetName)s was kicked (%(reason)s)": "%(targetName)s wurde herausgeworfen (%(reason)s)", + "You were kicked": "Du wurdest herausgeworfen", + "%(targetName)s was kicked": "%(targetName)s wurde herausgeworfen", + "You rejected the invite": "Du hast die Einladung abgelehnt", + "%(targetName)s rejected the invite": "%(targetName)s hat die Einladung abgelehnt", + "You were uninvited": "Deine Einladung wurde zurückgezogen", + "%(targetName)s was uninvited": "Die Einladung für %(targetName)s wurde zurückgezogen", + "You were banned (%(reason)s)": "Du wurdest verbannt (%(reason)s)", + "%(targetName)s was banned (%(reason)s)": "%(targetName)s wurde verbannt (%(reason)s)", + "You were banned": "Du wurdest verbannt", + "%(targetName)s was banned": "%(targetName)s wurde verbannt", + "You joined": "Du bist beigetreten", + "%(targetName)s joined": "%(targetName)s ist beigetreten", + "You changed your name": "Du hast deinen Namen geändert", + "%(targetName)s changed their name": "%(targetName)s hat den Namen geändert", + "You changed your avatar": "Du hast deinen Avatar geändert", + "%(targetName)s changed their avatar": "%(targetName)s hat den Avatar geändert", + "%(senderName)s %(emote)s": "%(senderName)s %(emote)s", "%(senderName)s: %(message)s": "%(senderName)s: %(message)s", + "You changed the room name": "Du hast den Raumnamen geändert", + "%(senderName)s changed the room name": "%(senderName)s hat den Raumnamen geändert", "%(senderName)s: %(reaction)s": "%(senderName)s: %(reaction)s", "%(senderName)s: %(stickerName)s": "%(senderName)s: %(stickerName)s", + "You uninvited %(targetName)s": "Du hast die Einladung für %(targetName)s zurückgezogen", + "%(senderName)s uninvited %(targetName)s": "%(senderName)s hat die Einladung für %(targetName)s zurückgezogen", + "You invited %(targetName)s": "Du hast %(targetName)s eingeladen", + "%(senderName)s invited %(targetName)s": "%(senderName)s hat %(targetName)s eingeladen", + "You changed the room topic": "Du hast das Raumthema geändert", + "%(senderName)s changed the room topic": "%(senderName)s hat das Raumthema geändert", "New spinner design": "Neue Warteanimation", "Use a more compact ‘Modern’ layout": "Verwende ein kompakteres 'modernes' Layout", "Message deleted on %(date)s": "Nachricht am %(date)s gelöscht", "Wrong file type": "Falscher Dateityp", "Wrong Recovery Key": "Falscher Wiederherstellungsschlüssel", "Invalid Recovery Key": "Ungültiger Wiederherstellungsschlüssel", + "Riot is now Element!": "Riot ist jetzt Element!", + "Learn More": "Mehr erfahren", "Unknown caller": "Unbekannter Anrufer", "Incoming voice call": "Eingehender Sprachanruf", "Incoming video call": "Eingehender Videoanruf", "Incoming call": "Eingehender Anruf", "There are advanced notifications which are not shown here.": "Erweiterte Benachrichtigungen, werden hier nicht angezeigt.", "Are you sure you want to cancel entering passphrase?": "Bist du sicher, dass du die Eingabe der Passphrase abbrechen möchtest?", + "Use your account to sign in to the latest version": "Melde dich mit deinem Account in der neuesten Version an", "* %(senderName)s %(emote)s": "* %(senderName)s %(emote)s", "Enable advanced debugging for the room list": "Erweiterte Fehlersuche für die Raumliste aktivieren", "Enable experimental, compact IRC style layout": "Kompaktes, experimentelles Layout im IRC-Stil aktivieren", @@ -2207,6 +2343,8 @@ "%(brand)s Web": "%(brand)s Web", "%(brand)s Desktop": "%(brand)s Desktop", "%(brand)s iOS": "%(brand)s iOS", + "%(brand)s X for Android": "%(brand)s X für Android", + "We’re excited to announce Riot is now Element": "Wir freuen uns zu verkünden, dass Riot jetzt Element ist", "%(brand)s can't securely cache encrypted messages locally while running in a web browser. Use %(brand)s Desktop for encrypted messages to appear in search results.": "%(brand)s kann verschlüsselte Nachrichten nicht sicher zwischenspeichern während es in einem Browser läuft. Verwende %(brand)s Desktop damit verschlüsselte Nachrichten durchsuchbar werden.", "Show rooms with unread messages first": "Zeige Räume mit ungelesenen Nachrichten zuerst", "Show previews of messages": "Zeige Vorschau von Nachrichten", @@ -2221,10 +2359,14 @@ "Edited at %(date)s": "Geändert am %(date)s", "Click to view edits": "Klicke um Änderungen anzuzeigen", "%(brand)s encountered an error during upload of:": "%(brand)s hat einen Fehler festgestellt beim hochladen von:", + "Use your account to sign in to the latest version of the app at ": "Verwende dein Konto um dich an der neusten Version der App anzumelden", + "We’re excited to announce Riot is now Element!": "Wir freuen uns bekanntzugeben: Riot ist jetzt Element!", + "Learn more at element.io/previously-riot": "Erfahre mehr unter element.io/previously-riot", "The person who invited you already left the room.": "Die Person, die dich eingeladen hat, hat den Raum bereits verlassen.", "The person who invited you already left the room, or their server is offline.": "Die Person, die dich eingeladen hat, hat den Raum bereits verlassen oder ihr Server ist offline.", "Change notification settings": "Benachrichtigungseinstellungen ändern", "Your server isn't responding to some requests.": "Dein Server antwortet nicht auf einige Anfragen.", + "Go to Element": "Zu Element gehen", "Server isn't responding": "Server antwortet nicht", "Your server isn't responding to some of your requests. Below are some of the most likely reasons.": "Server reagiert nicht auf einige deiner Anfragen. Im Folgenden sind einige der wahrscheinlichsten Gründe aufgeführt.", "The server (%(serverName)s) took too long to respond.": "Der Server (%(serverName)s) brauchte zu lange zum antworten.", @@ -2238,6 +2380,7 @@ "Master private key:": "Privater Hauptschlüssel:", "Set the name of a font installed on your system & %(brand)s will attempt to use it.": "Setze den Schriftnamen auf eine in deinem System installierte Schriftart & %(brand)s werden versuchen sie zu verwenden.", "Custom Tag": "Benutzerdefinierter Tag", + "You’re already signed in and good to go here, but you can also grab the latest versions of the app on all platforms at element.io/get-started.": "Du bist bereits eingeloggt und kannst loslegen. Allerdings kannst du auch die neuesten Versionen der App für alle Plattformen unter element.io/get-started herunterladen.", "You're all caught up.": "Alles gesichtet.", "The server is not configured to indicate what the problem is (CORS).": "Der Server ist nicht so konfiguriert, dass das Problem angezeigt wird (CORS).", "Recent changes that have not yet been received": "Letzte Änderungen, die noch nicht eingegangen sind", diff --git a/src/i18n/strings/el.json b/src/i18n/strings/el.json index 48e6c94ff2..118c87e153 100644 --- a/src/i18n/strings/el.json +++ b/src/i18n/strings/el.json @@ -143,6 +143,7 @@ "Room directory": "Ευρετήριο", "Start chat": "Έναρξη συνομιλίας", "Accept": "Αποδοχή", + "Active call (%(roomName)s)": "Ενεργή κλήση (%(roomName)s)", "Add": "Προσθήκη", "Admin Tools": "Εργαλεία διαχειριστή", "No media permissions": "Χωρίς δικαιώματα πολυμέσων", @@ -195,6 +196,7 @@ "Unban": "Άρση αποκλεισμού", "%(senderName)s unbanned %(targetName)s.": "Ο χρήστης %(senderName)s έδιωξε τον χρήστη %(targetName)s.", "Unable to enable Notifications": "Αδυναμία ενεργοποίησης των ειδοποιήσεων", + "unknown caller": "άγνωστος καλών", "Unmute": "Άρση σίγασης", "Unnamed Room": "Ανώνυμο δωμάτιο", "Upload avatar": "Αποστολή προσωπικής εικόνας", @@ -208,6 +210,7 @@ "Voice call": "Φωνητική κλήση", "Warning!": "Προειδοποίηση!", "You are already in a call.": "Είστε ήδη σε μια κλήση.", + "You have no visible notifications": "Δεν έχετε ορατές ειδοποιήσεις", "You must register to use this functionality": "Πρέπει να εγγραφείτε για να χρησιμοποιήσετε αυτή την λειτουργία", "You need to be logged in.": "Πρέπει να είστε συνδεδεμένος.", "Sun": "Κυρ", @@ -278,6 +281,9 @@ "Failed to unban": "Δεν ήταν δυνατή η άρση του αποκλεισμού", "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s από %(fromPowerLevel)s σε %(toPowerLevel)s", "Guests cannot join this room even if explicitly invited.": "Οι επισκέπτες δεν μπορούν να συνδεθούν στο δωμάτιο ακόμη και αν έχουν καλεστεί.", + "Incoming call from %(name)s": "Εισερχόμενη κλήση από %(name)s", + "Incoming video call from %(name)s": "Εισερχόμενη βιντεοκλήση από %(name)s", + "Incoming voice call from %(name)s": "Εισερχόμενη φωνητική κλήση από %(name)s", "Invalid file%(extra)s": "Μη έγκυρο αρχείο %(extra)s", "%(senderName)s invited %(targetName)s.": "Ο %(senderName)s προσκάλεσε τον %(targetName)s.", "Invites user with given id to current room": "Προσκαλεί τον χρήστη με το δοσμένο αναγνωριστικό στο τρέχον δωμάτιο", @@ -319,6 +325,7 @@ "You do not have permission to post to this room": "Δεν έχετε δικαιώματα για να δημοσιεύσετε σε αυτό το δωμάτιο", "You seem to be in a call, are you sure you want to quit?": "Φαίνεται ότι είστε σε μια κλήση, είστε βέβαιοι ότι θέλετε να αποχωρήσετε;", "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(day)s %(monthName)s %(fullYear)s %(time)s", + "There are no visible files in this room": "Δεν υπάρχουν ορατά αρχεία σε αυτό το δωμάτιο", "Connectivity to the server has been lost.": "Χάθηκε η συνδεσιμότητα στον διακομιστή.", "Please select the destination room for this message": "Παρακαλούμε επιλέξτε ένα δωμάτιο προορισμού για αυτό το μήνυμα", "Analytics": "Αναλυτικά δεδομένα", diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index d28bb8427d..8bfc3ed703 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -549,6 +549,70 @@ "They match": "They match", "They don't match": "They don't match", "To be secure, do this in person or use a trusted way to communicate.": "To be secure, do this in person or use a trusted way to communicate.", + "Dog": "Dog", + "Cat": "Cat", + "Lion": "Lion", + "Horse": "Horse", + "Unicorn": "Unicorn", + "Pig": "Pig", + "Elephant": "Elephant", + "Rabbit": "Rabbit", + "Panda": "Panda", + "Rooster": "Rooster", + "Penguin": "Penguin", + "Turtle": "Turtle", + "Fish": "Fish", + "Octopus": "Octopus", + "Butterfly": "Butterfly", + "Flower": "Flower", + "Tree": "Tree", + "Cactus": "Cactus", + "Mushroom": "Mushroom", + "Globe": "Globe", + "Moon": "Moon", + "Cloud": "Cloud", + "Fire": "Fire", + "Banana": "Banana", + "Apple": "Apple", + "Strawberry": "Strawberry", + "Corn": "Corn", + "Pizza": "Pizza", + "Cake": "Cake", + "Heart": "Heart", + "Smiley": "Smiley", + "Robot": "Robot", + "Hat": "Hat", + "Glasses": "Glasses", + "Spanner": "Spanner", + "Santa": "Santa", + "Thumbs up": "Thumbs up", + "Umbrella": "Umbrella", + "Hourglass": "Hourglass", + "Clock": "Clock", + "Gift": "Gift", + "Light bulb": "Light bulb", + "Book": "Book", + "Pencil": "Pencil", + "Paperclip": "Paperclip", + "Scissors": "Scissors", + "Lock": "Lock", + "Key": "Key", + "Hammer": "Hammer", + "Telephone": "Telephone", + "Flag": "Flag", + "Train": "Train", + "Bicycle": "Bicycle", + "Aeroplane": "Aeroplane", + "Rocket": "Rocket", + "Trophy": "Trophy", + "Ball": "Ball", + "Guitar": "Guitar", + "Trumpet": "Trumpet", + "Bell": "Bell", + "Anchor": "Anchor", + "Headphones": "Headphones", + "Folder": "Folder", + "Pin": "Pin", "Your server isn't responding to some requests.": "Your server isn't responding to some requests.", "From %(deviceName)s (%(deviceId)s)": "From %(deviceName)s (%(deviceId)s)", "Decline (%(counter)s)": "Decline (%(counter)s)", diff --git a/src/i18n/strings/en_US.json b/src/i18n/strings/en_US.json index 0505397fd2..a4249a93eb 100644 --- a/src/i18n/strings/en_US.json +++ b/src/i18n/strings/en_US.json @@ -259,6 +259,7 @@ "You do not have permission to post to this room": "You do not have permission to post to this room", "You have disabled URL previews by default.": "You have disabled URL previews by default.", "You have enabled URL previews by default.": "You have enabled URL previews by default.", + "You have no visible notifications": "You have no visible notifications", "You need to be able to invite users to do that.": "You need to be able to invite users to do that.", "You need to be logged in.": "You need to be logged in.", "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Your email address does not appear to be associated with a Matrix ID on this Homeserver.", @@ -291,6 +292,7 @@ "Upload an avatar:": "Upload an avatar:", "This server does not support authentication with a phone number.": "This server does not support authentication with a phone number.", "An error occurred: %(error_string)s": "An error occurred: %(error_string)s", + "There are no visible files in this room": "There are no visible files in this room", "Room": "Room", "Connectivity to the server has been lost.": "Connectivity to the server has been lost.", "Sent messages will be stored until your connection has returned.": "Sent messages will be stored until your connection has returned.", @@ -348,6 +350,7 @@ "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s changed the room avatar to ", "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s removed the room avatar.", "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s changed the avatar for %(roomName)s", + "Active call (%(roomName)s)": "Active call (%(roomName)s)", "Accept": "Accept", "Add": "Add", "Admin Tools": "Admin Tools", @@ -363,6 +366,9 @@ "Failed to fetch avatar URL": "Failed to fetch avatar URL", "Failed to upload profile picture!": "Failed to upload profile picture!", "Home": "Home", + "Incoming call from %(name)s": "Incoming call from %(name)s", + "Incoming video call from %(name)s": "Incoming video call from %(name)s", + "Incoming voice call from %(name)s": "Incoming voice call from %(name)s", "Join as voice or video.": "Join as voice or video.", "Last seen": "Last seen", "No display name": "No display name", @@ -374,6 +380,7 @@ "Start authentication": "Start authentication", "The phone number entered looks invalid": "The phone number entered looks invalid", "This room": "This room", + "unknown caller": "unknown caller", "Unnamed Room": "Unnamed Room", "Uploading %(filename)s and %(count)s others|zero": "Uploading %(filename)s", "Uploading %(filename)s and %(count)s others|one": "Uploading %(filename)s and %(count)s other", @@ -563,6 +570,9 @@ "Opens the Developer Tools dialog": "Opens the Developer Tools dialog", "Forces the current outbound group session in an encrypted room to be discarded": "Forces the current outbound group session in an encrypted room to be discarded", "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s changed their display name to %(displayName)s.", + "Spanner": "Wrench", + "Aeroplane": "Airplane", + "Cat": "Cat", "Sends the given message coloured as a rainbow": "Sends the given message colored as a rainbow", "Sends the given emote coloured as a rainbow": "Sends the given emote colored as a rainbow", "Unrecognised address": "Unrecognized address", diff --git a/src/i18n/strings/eo.json b/src/i18n/strings/eo.json index 2027934e70..8d07db7eaf 100644 --- a/src/i18n/strings/eo.json +++ b/src/i18n/strings/eo.json @@ -144,6 +144,11 @@ "Enable URL previews for this room (only affects you)": "Ŝalti URL-antaŭrigardon en ĉi tiu ĉambro (nur por vi)", "Enable URL previews by default for participants in this room": "Ŝalti URL-antaŭrigardon por anoj de ĉi tiu ĉambro", "Room Colour": "Koloro de ĉambro", + "Active call (%(roomName)s)": "Aktiva voko (%(roomName)s)", + "unknown caller": "nekonata vokanto", + "Incoming voice call from %(name)s": "Envena voĉvoko de %(name)s", + "Incoming video call from %(name)s": "Envena vidvoko de %(name)s", + "Incoming call from %(name)s": "Envena voko de %(name)s", "Decline": "Rifuzi", "Accept": "Akcepti", "Error": "Eraro", @@ -248,6 +253,7 @@ "Settings": "Agordoj", "Forget room": "Forgesi ĉambron", "Search": "Serĉi", + "Community Invites": "Komunumaj invitoj", "Invites": "Invitoj", "Favourites": "Elstarigitaj", "Rooms": "Ĉambroj", @@ -456,6 +462,7 @@ "Name": "Nomo", "You must register to use this functionality": "Vi devas registriĝî por uzi tiun ĉi funkcion", "You must join the room to see its files": "Vi devas aliĝi al la ĉambro por vidi tie dosierojn", + "There are no visible files in this room": "En ĉi tiu ĉambro estas neniaj videblaj dosieroj", "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

HTML por la paĝo de via komunumo

\n

\n Uzu la longan priskribon por enkonduki novajn komunumanojn, aŭ disdoni iujn\n gravajn ligilojn\n

\n

\n Vi povas eĉ uzi etikedojn « img »\n

\n", "Add rooms to the community summary": "Aldoni ĉambrojn al la komunuma superrigardo", "Which rooms would you like to add to this summary?": "Kiujn ĉambrojn vi volas aldoni al ĉi tiu superrigardo?", @@ -501,6 +508,7 @@ "Error whilst fetching joined communities": "Akirado de viaj komunumoj eraris", "Create a new community": "Krei novan komunumon", "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Kreu komunumon por kunigi uzantojn kaj ĉambrojn! Fari propran hejmpaĝon por montri vian spacon en la universo de Matrix.", + "You have no visible notifications": "Neniuj videblaj sciigoj", "Connectivity to the server has been lost.": "Konekto al la servilo perdiĝis.", "Sent messages will be stored until your connection has returned.": "Senditaj mesaĝoj konserviĝos ĝis via konekto refunkcios.", "Active call": "Aktiva voko", @@ -809,6 +817,65 @@ "Prepends ¯\\_(ツ)_/¯ to a plain-text message": "Antaŭmetas ¯\\_(ツ)_/¯ al platteksta mesaĝo", "Verified!": "Kontrolita!", "Got It": "Komprenite", + "Dog": "Hundo", + "Cat": "Kato", + "Lion": "Leono", + "Horse": "Ĉevalo", + "Unicorn": "Unukorno", + "Pig": "Porko", + "Elephant": "Elefanto", + "Rabbit": "Kuniklo", + "Panda": "Pando", + "Rooster": "Koko", + "Penguin": "Pingveno", + "Turtle": "Testudo", + "Fish": "Fiŝo", + "Octopus": "Polpo", + "Butterfly": "Papilio", + "Flower": "Floro", + "Tree": "Arbo", + "Cactus": "Kakto", + "Mushroom": "Fungo", + "Globe": "Globo", + "Moon": "Luno", + "Cloud": "Nubo", + "Fire": "Fajro", + "Banana": "Banano", + "Apple": "Pomo", + "Strawberry": "Frago", + "Corn": "Greno", + "Pizza": "Pico", + "Cake": "Kuko", + "Heart": "Koro", + "Smiley": "Mieneto", + "Robot": "Roboto", + "Hat": "Ĉapelo", + "Glasses": "Okulvitroj", + "Spanner": "Ŝraŭbŝlosilo", + "Umbrella": "Ombrelo", + "Hourglass": "Sablohorloĝo", + "Clock": "Horloĝo", + "Gift": "Donaco", + "Light bulb": "Lampo", + "Book": "Libro", + "Pencil": "Grifelo", + "Scissors": "Tondilo", + "Key": "Ŝlosilo", + "Hammer": "Martelo", + "Telephone": "Telefono", + "Flag": "Flago", + "Train": "Vagonaro", + "Bicycle": "Biciklo", + "Aeroplane": "Aeroplano", + "Rocket": "Raketo", + "Trophy": "Trofeo", + "Ball": "Pilko", + "Guitar": "Gitaro", + "Trumpet": "Trumpeto", + "Bell": "Sonorilo", + "Anchor": "Ankro", + "Headphones": "Kapaŭdilo", + "Folder": "Dosierujo", "Yes": "Jes", "No": "Ne", "Email Address": "Retpoŝtadreso", @@ -883,6 +950,7 @@ "Share User": "Kunhavigi uzanton", "Share Community": "Kunhavigi komunumon", "Share Room Message": "Kunhavigi ĉambran mesaĝon", + "COPY": "KOPII", "Next": "Sekva", "Clear status": "Vakigi staton", "Update status": "Ĝisdatigi staton", @@ -984,6 +1052,10 @@ "Verify this user by confirming the following emoji appear on their screen.": "Kontrolu ĉi tiun uzanton per konfirmo, ke la jenaj bildsignoj aperis sur ĝia ekrano.", "Verify this user by confirming the following number appears on their screen.": "Kontrolu ĉu tiun uzanton per konfirmo, ke la jena numero aperis sur ĝia ekrano.", "Unable to find a supported verification method.": "Ne povas trovi subtenatan metodon de kontrolo.", + "Santa": "Kristnaska viro", + "Thumbs up": "Dikfingro supren", + "Paperclip": "Paperkuntenilo", + "Pin": "Pinglo", "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.": "Ni sendis al vi retleteron por konfirmi vian adreson. Bonvolu sekvi la tieajn intrukciojn kaj poste klaki al la butono sube.", "Are you sure? You will lose your encrypted messages if your keys are not backed up properly.": "Ĉu vi certas? Vi perdos ĉiujn viajn ĉifritajn mesaĝojn, se viaj ŝlosiloj ne estas savkopiitaj.", "Encrypted messages are secured with end-to-end encryption. Only you and the recipient(s) have the keys to read these messages.": "Ĉifritaj mesaĝoj estas sekurigitaj per tutvoja ĉifrado. Nur vi kaj la ricevonto(j) havas la ŝlosilojn necesajn por legado.", @@ -1135,6 +1207,7 @@ "Add room": "Aldoni ĉambron", "You have %(count)s unread notifications in a prior version of this room.|other": "Vi havas %(count)s nelegitajn sciigojn en antaŭa versio de ĉi tiu ĉambro.", "You have %(count)s unread notifications in a prior version of this room.|one": "Vi havas %(count)s nelegitan sciigon en antaŭa versio de ĉi tiu ĉambro.", + "Your profile": "Via profilo", "Your Matrix account on ": "Via Matrix-konto sur ", "This homeserver does not support login using email address.": "Ĉi tiu hejmservilo ne subtenas saluton per retpoŝtadreso.", "Registration has been disabled on this homeserver.": "Registriĝoj malŝaltiĝis sur ĉi tiu hejmservilo.", @@ -1318,6 +1391,8 @@ "Unable to create key backup": "Ne povas krei savkopion de ŝlosiloj", "Without setting up Secure Message Recovery, you'll lose your secure message history when you log out.": "Sen agordo de Sekura rehavo de mesaĝoj, vi perdos vian sekuran historion de mesaĝoj per adiaŭo.", "Bulk options": "Amasaj elektebloj", + "Your Modular server": "Via Modular-servilo", + "Enter the location of your Modular homeserver. It may use your own domain name or be a subdomain of modular.im.": "Enigu la lokon de via Modular-hejmservilo. Ĝi povas uzi vian propran domajnan nomon aŭ esti subdomajno de modular.im.", "Invalid base_url for m.homeserver": "Nevalida base_url por m.homeserver", "Invalid base_url for m.identity_server": "Nevalida base_url por m.identity_server", "Identity Server": "Identiga servilo", @@ -1396,6 +1471,9 @@ "Code block": "Kodujo", "Set an email for account recovery. Use email or phone to optionally be discoverable by existing contacts.": "Agordi retpoŝtadreson por rehavo de konto. Uzu retpoŝton aŭ telefonon por laŭelekte troviĝi de jamaj kontaktoj.", "Set an email for account recovery. Use email to optionally be discoverable by existing contacts.": "Agordi retpoŝtadreson por rehavo de konto. Uzu retpoŝton por laŭelekte troviĝi de jamaj kontaktoj.", + "Explore": "Esplori", + "Filter": "Filtri", + "Filter rooms…": "Filtri ĉambrojn…", "Preview": "Antaŭrigardo", "View": "Rigardo", "Find a room…": "Trovi ĉambron…", @@ -1436,6 +1514,7 @@ "You are about to remove %(count)s messages by %(user)s. This cannot be undone. Do you wish to continue?|one": "Vi estas forigonta 1 mesaĝon de %(user)s. Ne eblas tion malfari. Ĉu vi volas pluigi?", "Remove %(count)s messages|one": "Forigi 1 mesaĝon", "Room %(name)s": "Ĉambro %(name)s", + "Recent rooms": "Freŝaj vizititaj ĉambroj", "An error (%(errcode)s) was returned while trying to validate your invite. You could try to pass this information on to a room admin.": "Eraris (%(errcode)s) validigo de via invito. Vi povas transdoni ĉi tiun informon al ĉambra administranto.", "This invite to %(roomName)s was sent to %(email)s which is not associated with your account": "Ĉi tiu invito al %(roomName)s sendiĝis al %(email)s, kiu ne estas ligita al via konto", "Link this email with your account in Settings to receive invites directly in %(brand)s.": "Ligu ĉi tiun retpoŝtadreson al via konto en Agordoj por ricevadi invitojn rekte per %(brand)s.", @@ -1446,6 +1525,7 @@ "%(count)s unread messages including mentions.|one": "1 nelegita mencio.", "%(count)s unread messages.|other": "%(count)s nelegitaj mesaĝoj.", "%(count)s unread messages.|one": "1 nelegita mesaĝo.", + "Unread mentions.": "Nelegitaj mencioj.", "Unread messages.": "Nelegitaj mesaĝoj.", "Failed to deactivate user": "Malsukcesis malaktivigi uzanton", "This client does not support end-to-end encryption.": "Ĉi tiu kliento ne subtenas tutvojan ĉifradon.", @@ -1557,6 +1637,7 @@ "%(num)s hours from now": "%(num)s horojn de nun", "about a day from now": "ĉirkaŭ tagon de nun", "%(num)s days from now": "%(num)s tagojn de nun", + "Lock": "Seruro", "Other users may not trust it": "Aliaj uzantoj eble ne kredas ĝin", "Later": "Pli poste", "Verify": "Kontroli", @@ -1601,6 +1682,8 @@ "Go Back": "Reiri", "Upgrade your encryption": "Gradaltigi vian ĉifradon", "Whether you're using %(brand)s on a device where touch is the primary input mechanism": "Ĉu vi uzas %(brand)son per aparato, kies ĉefa enigilo estas tuŝado", + "If you cancel now, you won't complete verifying the other user.": "Se vi nuligos nun, vi ne finos kontrolon de la alia uzanto.", + "If you cancel now, you won't complete verifying your other session.": "Se vi nuligos nun, vi ne finos kontrolon de via alia salutaĵo.", "Cancel entering passphrase?": "Ĉu nuligi enigon de pasfrazo?", "Setting up keys": "Agordo de klavoj", "Verify this session": "Kontroli ĉi tiun salutaĵon", @@ -1769,6 +1852,7 @@ "Re-request encryption keys from your other sessions.": "Repeti viajn ĉifrajn ŝlosilojn de ceteraj viaj salutaĵoj.", "Encrypted by an unverified session": "Ĉifrita de nekontrolita salutaĵo", "Encrypted by a deleted session": "Ĉifrita de forigita salutaĵo", + "Invite only": "Nur por invititaj", "Close preview": "Fermi antaŭrigardon", "Unrecognised command: %(commandText)s": "Nerekonita komando: %(commandText)s", "You can use /help to list available commands. Did you mean to send this as a message?": "Vi povas komandi /help por listigi uzeblajn komandojn. Ĉu vi intencis sendi ĉi tion kiel mesaĝon?", @@ -2001,6 +2085,7 @@ "Confirm adding this phone number by using Single Sign On to prove your identity.": "Konfirmu aldonon de ĉi tiu telefonnumero per identiĝo per ununura saluto.", "Confirm adding phone number": "Konfirmu aldonon de telefonnumero", "Click the button below to confirm adding this phone number.": "Klaku la ĉi-suban butonon por konfirmi aldonon de ĉi tiu telefonnumero.", + "If you cancel now, you won't complete your operation.": "Se vi nuligos nun, vi ne finos vian agon.", "Review where you’re logged in": "Kontrolu, kie vi salutis", "New login. Was this you?": "Nova saluto. Ĉu tio estis vi?", "%(name)s is requesting verification": "%(name)s petas kontrolon", @@ -2102,7 +2187,9 @@ "Dismiss read marker and jump to bottom": "Forigi legomarkon kaj iri al fundo", "Jump to oldest unread message": "Iri al plej malnova nelegita mesaĝo", "Upload a file": "Alŝuti dosieron", + "Create room": "Krei ĉambron", "IRC display name width": "Larĝo de vidiga nomo de IRC", + "Font scaling": "Skalado de tiparoj", "Font size": "Grando de tiparo", "Size must be a number": "Grando devas esti nombro", "Custom font size can only be between %(min)s pt and %(max)s pt": "Propra grando de tiparo povas interi nur %(min)s punktojn kaj %(max)s punktojn", @@ -2144,6 +2231,10 @@ "A new version of %(brand)s is available!": "Nova versio de %(brand)s estas disponebla!", "New version available. Update now.": "Nova versio estas disponebla. Ĝisdatigu nun.", "Emoji picker": "Elektilo de bildsignoj", + "Use your account to sign in to the latest version": "Uzu vian konton por saluti la plej freŝan version", + "We’re excited to announce Riot is now Element": "Ni ekscite anoncas, ke Riot nun estas Elemento", + "Riot is now Element!": "Riot nun estas Elemento!", + "Learn More": "Eksciu plion", "Light": "Hela", "Dark": "Malhela", "You joined the call": "Vi aliĝis al la voko", @@ -2156,9 +2247,51 @@ "%(senderName)s started a call": "%(senderName)s komencis vokon", "Waiting for answer": "Atendante respondon", "%(senderName)s is calling": "%(senderName)s vokas", + "You created the room": "Vi kreis la ĉambron", + "%(senderName)s created the room": "%(senderName)s kreis la ĉambron", + "You made the chat encrypted": "Vi ekĉifris la babilon", + "%(senderName)s made the chat encrypted": "%(senderName)s ekĉifris la babilon", + "You made history visible to new members": "Vi videbligis la historion al novaj anoj", + "%(senderName)s made history visible to new members": "%(senderName)s videbligis la historion al novaj anoj", + "You made history visible to anyone": "Vi videbligis la historion al ĉiu ajn", + "%(senderName)s made history visible to anyone": "%(senderName)s videbligis la historion al ĉiu ajn", + "You made history visible to future members": "Vi videbligis la historion al osaj anoj", + "%(senderName)s made history visible to future members": "%(senderName)s videbligis la historion al osaj anoj", + "You were invited": "Vi estis invitita", + "%(targetName)s was invited": "%(senderName)s estis invitita", + "You left": "Vi foriris", + "%(targetName)s left": "%(senderName)s foriris", + "You were kicked (%(reason)s)": "Vi estis forpelita (%(reason)s)", + "%(targetName)s was kicked (%(reason)s)": "%(targetName)s estis forpelita (%(reason)s)", + "You were kicked": "Vi estis forpelita", + "%(targetName)s was kicked": "%(targetName)s estis forpelita", + "You rejected the invite": "Vi rifuzis la inviton", + "%(targetName)s rejected the invite": "%(targetName)s rifuzis la inviton", + "You were uninvited": "Vi estis malinvitita", + "%(targetName)s was uninvited": "%(targetName)s estis malinvitita", + "You were banned (%(reason)s)": "Vi estis forbarita (%(reason)s)", + "%(targetName)s was banned (%(reason)s)": "%(targetName)s estis forbarita (%(reason)s)", + "You were banned": "Vi estis forbarita", + "%(targetName)s was banned": "%(targetName)s estis forbarita", + "You joined": "Vi aliĝis", + "%(targetName)s joined": "%(targetName)s aliĝis", + "You changed your name": "Vi ŝanĝis vian nomon", + "%(targetName)s changed their name": "%(targetName)s ŝanĝis sian nomon", + "You changed your avatar": "Vi ŝanĝis vian profilbildon", + "%(targetName)s changed their avatar": "%(targetName)s ŝanĝis sian profilbildon", + "%(senderName)s %(emote)s": "%(senderName)s %(emote)s", "%(senderName)s: %(message)s": "%(senderName)s: %(message)s", + "You changed the room name": "Vi ŝanĝis la nomon de la ĉambro", + "%(senderName)s changed the room name": "%(senderName)s ŝanĝis la nomon de la ĉambro", "%(senderName)s: %(reaction)s": "%(senderName)s: %(reaction)s", "%(senderName)s: %(stickerName)s": "%(senderName)s: %(stickerName)s", + "You uninvited %(targetName)s": "Vi malinvitis uzanton %(targetName)s", + "%(senderName)s uninvited %(targetName)s": "%(senderName)s malinvitis uzanton %(targetName)s", + "You invited %(targetName)s": "Vi invitis uzanton %(targetName)s", + "%(senderName)s invited %(targetName)s": "%(senderName)s invitis uzanton %(targetName)s", + "You changed the room topic": "Vi ŝanĝis la temon de la ĉambro", + "%(senderName)s changed the room topic": "%(senderName)s ŝanĝis la temon de la ĉambro", + "Use the improved room list (will refresh to apply changes)": "Uzi la plibonigitan ĉambrobreton (aktualigos la paĝon por apliki la ŝanĝojn)", "Use custom size": "Uzi propran grandon", "Use a more compact ‘Modern’ layout": "Uzi pli densan »Modernan« aranĝon", "Use a system font": "Uzi sisteman tiparon", @@ -2180,9 +2313,15 @@ "Appearance Settings only affect this %(brand)s session.": "Agordoj de aspekto nur efikos sur ĉi tiun salutaĵon de %(brand)s.", "Add users and servers you want to ignore here. Use asterisks to have %(brand)s match any characters. For example, @bot:* would ignore all users that have the name 'bot' on any server.": "Aldonu uzantojn kaj servilojn, kiujn vi volas malatenti, ĉi tien. Uzu steletojn por ke %(brand)s atendu iujn ajn signojn. Ekzemple, @bot:* malatentigus ĉiujn uzantojn, kiuj havas la nomon «bot» sur ĉiu ajn servilo.", "Your server admin has disabled end-to-end encryption by default in private rooms & Direct Messages.": "La administranto de via servilo malŝaltis implicitan tutvojan ĉifradon en privataj kaj rektaj ĉambroj.", + "Make this room low priority": "Doni al la ĉambro malaltan prioritaton", + "Low priority rooms show up at the bottom of your room list in a dedicated section at the bottom of your room list": "Ĉambroj kun malalta prioritato montriĝas en aparta sekcio, en la suba parto de via ĉambrobreto,", "The authenticity of this encrypted message can't be guaranteed on this device.": "La aŭtentikeco de ĉi tiu ĉifrita mesaĝo ne povas esti garantiita sur ĉi tiu aparato.", "No recently visited rooms": "Neniuj freŝdate vizititaj ĉambroj", "People": "Homoj", + "Unread rooms": "Nelegitaj ĉambroj", + "Always show first": "Ĉiam montri unuaj", + "Show": "Montri", + "Message preview": "Antaŭrigardo al mesaĝo", "Sort by": "Ordigi laŭ", "Activity": "Aktiveco", "A-Z": "A–Z", @@ -2197,6 +2336,11 @@ "Forget Room": "Forgesi ĉambron", "Room options": "Elektebloj pri ĉambro", "Message deleted on %(date)s": "Mesaĝo forigita je %(date)s", + "Use your account to sign in to the latest version of the app at ": "Uzu vian konton por saluti la plej freŝan version de la aplikaĵo je ", + "You’re already signed in and good to go here, but you can also grab the latest versions of the app on all platforms at element.io/get-started.": "Vi jam estas salutinta kaj preta ĉi tie, sed vi povas ankaŭ ekhavi la plej freŝajn versiojn de la aplikaĵoj sur ĉiuj platformoj je element.io/get-started.", + "Go to Element": "Iri al Elemento", + "We’re excited to announce Riot is now Element!": "Ni estas ekscititaj anonci, ke Riot nun estas Elemento!", + "Learn more at element.io/previously-riot": "Eksciu plion je element.io/previously-riot", "Wrong file type": "Neĝusta dosiertipo", "Looks good!": "Ŝajnas bona!", "Wrong Recovery Key": "Neĝusta rehava ŝlosilo", @@ -2218,6 +2362,7 @@ "%(brand)s Web": "%(brand)s por Reto", "%(brand)s Desktop": "%(brand)s por Labortablo", "%(brand)s iOS": "%(brand)s por iOS", + "%(brand)s X for Android": "%(brand)s X por Android", "Safeguard against losing access to encrypted messages & data by backing up encryption keys on your server.": "Malhelpu perdon de aliro al ĉifritaj mesaĝoj kaj datumoj per savkopiado de ĉifraj ŝlosiloj al via servilo.", "Generate a Security Key": "Generi sekurecan ŝlosilon", "We’ll generate a Security Key for you to store somewhere safe, like a password manager or a safe.": "Ni estigos sekurecan ŝlosilon, kiun vi devus konservi en sekura loko, ekzemple administrilo de pasvortoj, aŭ sekurŝranko.", diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json index 01f71b4a95..1619bb7616 100644 --- a/src/i18n/strings/es.json +++ b/src/i18n/strings/es.json @@ -128,6 +128,9 @@ "Failed to upload profile picture!": "¡No se pudo subir la imagen de perfil!", "Home": "Inicio", "Import": "Importar", + "Incoming call from %(name)s": "Llamada entrante de %(name)s", + "Incoming video call from %(name)s": "Llamada de vídeo entrante de %(name)s", + "Incoming voice call from %(name)s": "Llamada de voz entrante de %(name)s", "Incorrect username and/or password.": "Nombre de usuario y/o contraseña incorrectos.", "Invited": "Invitado", "Jump to first unread message.": "Ir al primer mensaje no leído.", @@ -185,6 +188,7 @@ "Submit": "Enviar", "Success": "Éxito", "The phone number entered looks invalid": "El número telefónico indicado parece erróneo", + "Active call (%(roomName)s)": "Llamada activa (%(roomName)s)", "Add a topic": "Añadir un tema", "No media permissions": "Sin permisos para el medio", "You may need to manually permit %(brand)s to access your microphone/webcam": "Probablemente necesite dar permisos manualmente a %(brand)s para su micrófono/cámara", @@ -275,6 +279,7 @@ "Unban": "Quitar Veto", "Unable to capture screen": "No es posible capturar la pantalla", "Unable to enable Notifications": "No es posible habilitar las Notificaciones", + "unknown caller": "Persona que llama desconocida", "Unnamed Room": "Sala sin nombre", "Uploading %(filename)s and %(count)s others|zero": "Subiendo %(filename)s", "Uploading %(filename)s and %(count)s others|one": "Subiendo %(filename)s y otros %(count)s", @@ -317,6 +322,7 @@ "You do not have permission to post to this room": "No tienes permiso para publicar en esta sala", "You have disabled URL previews by default.": "Ha deshabilitado la vista previa de URL por defecto.", "You have enabled URL previews by default.": "Ha habilitado vista previa de URL por defecto.", + "You have no visible notifications": "No tiene notificaciones visibles", "You must register to use this functionality": "Usted debe ser un registrar para usar esta funcionalidad", "You need to be able to invite users to do that.": "Debes ser capaz de invitar usuarios para realizar esa acción.", "You need to be logged in.": "Necesitas haber iniciado sesión.", @@ -581,6 +587,7 @@ "(~%(count)s results)|other": "(~%(count)s resultados)", "(~%(count)s results)|one": "(~%(count)s resultado)", "Share room": "Compartir sala", + "Community Invites": "Invitaciones a comunidades", "Banned by %(displayName)s": "Vetado por %(displayName)s", "Muted Users": "Usuarios Silenciados", "Members only (since the point in time of selecting this option)": "Solo miembros (desde el momento en que se selecciona esta opción)", @@ -743,9 +750,11 @@ "Share Community": "Compartir Comunidad", "Share Room Message": "Compartir el mensaje de la sala", "Link to selected message": "Enlazar a mensaje seleccionado", + "COPY": "COPIAR", "Unable to reject invite": "No se pudo rechazar la invitación", "Share Message": "Compartir mensaje", "Collapse Reply Thread": "Colapsar Hilo de Respuestas", + "There are no visible files in this room": "No hay archivos visibles en esta sala", "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "HTML para la página de tu comunidad. Usa la descripción larga para su presentación, o distribuir enlaces de interés. Puedes incluso usar etiquetas 'img'\n", "Add rooms to the community summary": "Agregar salas al resumen de la comunidad", "Which rooms would you like to add to this summary?": "¿Cuáles salas desea agregar a este resumen?", @@ -940,6 +949,68 @@ "Secure messages with this user are end-to-end encrypted and not able to be read by third parties.": "Los mensajes seguros con este usuario están cifrados punto a punto y no es posible que los lean otros.", "Verify this user by confirming the following number appears on their screen.": "Verifica a este usuario confirmando que este número aparece en su pantalla.", "Unable to find a supported verification method.": "No es posible encontrar un método de verificación soportado.", + "Dog": "Perro", + "Cat": "Gato", + "Lion": "León", + "Horse": "Caballo", + "Unicorn": "Unicornio", + "Pig": "Cerdo", + "Elephant": "Elefante", + "Rabbit": "Conejo", + "Panda": "Panda", + "Rooster": "Gallo", + "Penguin": "Pingüino", + "Turtle": "Tortuga", + "Fish": "Pez", + "Octopus": "Pulpo", + "Butterfly": "Mariposa", + "Flower": "Flor", + "Tree": "Árbol", + "Cactus": "Cactus", + "Mushroom": "Champiñón", + "Globe": "Globo", + "Moon": "Luna", + "Cloud": "Nube", + "Fire": "Fuego", + "Banana": "Plátano", + "Apple": "Manzana", + "Strawberry": "Fresa", + "Corn": "Maíz", + "Pizza": "Pizza", + "Cake": "Tarta", + "Heart": "Corazón", + "Smiley": "Sonriente", + "Robot": "Robot", + "Hat": "Sombrero", + "Glasses": "Gafas", + "Spanner": "Llave", + "Santa": "Papá Noel", + "Thumbs up": "Pulgares arriba", + "Umbrella": "Sombrilla", + "Hourglass": "Reloj de arena", + "Clock": "Reloj", + "Gift": "Regalo", + "Light bulb": "Bombilla", + "Book": "Libro", + "Pencil": "Lápiz", + "Paperclip": "Clip", + "Key": "Llave", + "Hammer": "Martillo", + "Telephone": "Teléfono", + "Flag": "Bandera", + "Train": "Tren", + "Bicycle": "Bicicleta", + "Aeroplane": "Avión", + "Rocket": "Cohete", + "Trophy": "Trofeo", + "Ball": "Balón", + "Guitar": "Guitarra", + "Trumpet": "Trompeta", + "Bell": "Campana", + "Anchor": "Ancla", + "Headphones": "Auriculares", + "Folder": "Carpeta", + "Pin": "Pin", "Yes": "Sí", "No": "No", "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.": "Te hemos enviado un mensaje para verificar tu dirección de correo. Por favor, sigue las instrucciones y después haz clic el botón de abajo.", @@ -1057,6 +1128,7 @@ "Show hidden events in timeline": "Mostrar eventos ocultos en la línea de tiempo", "Low bandwidth mode": "Modo de ancho de banda bajo", "Got It": "Entendido", + "Scissors": "Tijeras", "Call failed due to misconfigured server": "Llamada fallida debido a la mala configuración del servidor", "Please ask the administrator of your homeserver (%(homeserverDomain)s) to configure a TURN server in order for calls to work reliably.": "Por favor pídele al administrador de tu servidor doméstico (%(homeserverDomain)s) que configure un servidor TURN para que las llamadas funcionen correctamente.", "Alternatively, you can try to use the public server at turn.matrix.org, but this will not be as reliable, and it will share your IP address with that server. You can also manage this in Settings.": "Alternativamente, puedes tratar de usar el servidor público en turn.matrix.org, pero éste no será igual de confiable, y compartirá tu dirección IP con ese servidor. También puedes administrar esto en Ajustes.", @@ -1106,6 +1178,7 @@ "%(count)s unread messages including mentions.|one": "1 mención sin leer.", "%(count)s unread messages.|other": "%(count)s mensajes sin leer.", "%(count)s unread messages.|one": "1 mensaje sin leer.", + "Unread mentions.": "Menciones sin leer.", "Unread messages.": "Mensajes sin leer.", "Jump to first unread room.": "Saltar a la primera sala sin leer.", "You have %(count)s unread notifications in a prior version of this room.|other": "Tiene %(count)s notificaciones sin leer en una versión anterior de esta sala.", @@ -1129,6 +1202,7 @@ "They match": "Coinciden", "They don't match": "No coinciden", "To be secure, do this in person or use a trusted way to communicate.": "Para ser seguro, haz esto en persona o usando una forma de comunicación de confianza.", + "Lock": "Bloquear", "Verify yourself & others to keep your chats safe": "Verifícate y verifica a otros para mantener tus conversaciones seguras", "Other users may not trust it": "Puede que otros usuarios no confíen en ello", "Upgrade": "Actualizar", @@ -1242,6 +1316,8 @@ "Server or user ID to ignore": "Servidor o ID de usuario a ignorar", "eg: @bot:* or example.org": "p. ej.: @bot:* o ejemplo.org", "Your user agent": "Tu agente de usuario", + "If you cancel now, you won't complete verifying the other user.": "Si cancelas ahora, no completarás la verificación del otro usuario.", + "If you cancel now, you won't complete verifying your other session.": "Si cancelas ahora, no completarás la verificación de tu otra sesión.", "Cancel entering passphrase?": "¿Cancelar la introducción de frase de contraseña?", "%(senderName)s updated the rule banning rooms matching %(glob)s for %(reason)s": "%(senderName)s actualizó la regla bloqueando salas que coinciden con %(glob)s por %(reason)s", "%(senderName)s updated the rule banning servers matching %(glob)s for %(reason)s": "%(senderName)s actualizó la regla bloqueando servidores que coinciden con %(glob)s por %(reason)s", @@ -1357,6 +1433,7 @@ "Click the button below to confirm adding this phone number.": "Haga clic en el botón de abajo para confirmar la adición de este número de teléfono.", "Whether you're using %(brand)s on a device where touch is the primary input mechanism": "Si estés usando %(brand)s en un dispositivo donde una pantalla táctil es el principal mecanismo de entrada", "Whether you're using %(brand)s as an installed Progressive Web App": "Si estás usando %(brand)s como una Aplicación Web Progresiva instalada", + "If you cancel now, you won't complete your operation.": "Si cancela ahora, no completará la operación.", "Review where you’re logged in": "Revise dónde hizo su registro", "New login. Was this you?": "Nuevo registro. ¿Fuiste tú?", "%(name)s is requesting verification": "%(name)s solicita verificación", @@ -1629,6 +1706,7 @@ "Encrypted by an unverified session": "Encriptado por una sesión no verificada", "Unencrypted": "Sin encriptación", "Encrypted by a deleted session": "Encriptado por una sesión eliminada", + "Invite only": "Sólamente por invitación", "Scroll to most recent messages": "Desplácese a los mensajes más recientes", "Close preview": "Cerrar vista previa", "No recent messages by %(user)s found": "No se han encontrado mensajes recientes de %(user)s", @@ -1651,6 +1729,7 @@ "Strikethrough": "Tachado", "Code block": "Bloque de código", "Room %(name)s": "Sala %(name)s", + "Recent rooms": "Salas recientes", "Direct Messages": "Mensaje Directo", "Loading room preview": "Cargando vista previa de la sala", "An error (%(errcode)s) was returned while trying to validate your invite. You could try to pass this information on to a room admin.": "Un código de error (%(errcode)s) fue devuelto al tratar de validar su invitación. Podrías intentar pasar esta información a un administrador de la sala.", @@ -1867,6 +1946,8 @@ "Please review and accept all of the homeserver's policies": "Por favor, revise y acepte todas las políticas del servidor doméstico", "Please review and accept the policies of this homeserver:": "Por favor revise y acepte las políticas de este servidor doméstico:", "Unable to validate homeserver/identity server": "No se pudo validar el servidor doméstico/servidor de identidad", + "Your Modular server": "Su servidor modular", + "Enter the location of your Modular homeserver. It may use your own domain name or be a subdomain of modular.im.": "Introduzca la ubicación de su Servidor Modular Doméstico. Este puede usar su propio nombre de dominio o ser un subdominio de modular.im.", "Server Name": "Nombre del servidor", "The username field must not be blank.": "El campo del nombre de usuario no puede estar en blanco.", "Username": "Nombre de usuario", @@ -1914,6 +1995,9 @@ "Send a Direct Message": "Envía un mensaje directo", "Explore Public Rooms": "Explorar salas públicas", "Create a Group Chat": "Crear un chat grupal", + "Explore": "Explorar", + "Filter": "Filtrar", + "Filter rooms…": "Filtrar salas…", "Self-verification request": "Solicitud de auto-verificación", "%(creator)s created and configured the room.": "Sala creada y configurada por %(creator)s.", "%(brand)s failed to get the protocol list from the homeserver. The homeserver may be too old to support third party networks.": "%(brand)s no logró obtener la lista de protocolo del servidor doméstico. El servidor doméstico puede ser demasiado viejo para admitir redes de terceros.", @@ -1928,6 +2012,7 @@ "Jump to first invite.": "Salte a la primera invitación.", "Add room": "Añadir sala", "Guest": "Invitado", + "Your profile": "Su perfil", "Could not load user profile": "No se pudo cargar el perfil de usuario", "Verify this login": "Verifique este inicio de sesión", "Session verified": "Sesión verificada", @@ -1970,5 +2055,25 @@ "You started a call": "Has iniciado una llamada", "%(senderName)s started a call": "%(senderName)s inicio una llamada", "Waiting for answer": "Esperado por una respuesta", - "%(senderName)s is calling": "%(senderName)s está llamando" + "%(senderName)s is calling": "%(senderName)s está llamando", + "%(senderName)s created the room": "%(senderName)s creo la sala", + "You were invited": "Has sido invitado", + "%(targetName)s was invited": "%(targetName)s ha sido invitado", + "%(targetName)s left": "%(targetName)s se ha ido", + "You were kicked (%(reason)s)": "Has sido expulsado por %(reason)s", + "You rejected the invite": "Has rechazado la invitación", + "%(targetName)s rejected the invite": "%(targetName)s rechazo la invitación", + "You were banned (%(reason)s)": "Has sido baneado por %(reason)s", + "%(targetName)s was banned (%(reason)s)": "%(targetName)s fue baneado por %(reason)s", + "You were banned": "Has sido baneado", + "%(targetName)s was banned": "%(targetName)s fue baneado", + "You joined": "Te has unido", + "%(targetName)s joined": "%(targetName)s se ha unido", + "You changed your name": "Has cambiado tu nombre", + "%(targetName)s changed their name": "%(targetName)s cambio su nombre", + "You changed your avatar": "Ha cambiado su avatar", + "%(targetName)s changed their avatar": "%(targetName)s ha cambiado su avatar", + "You changed the room name": "Has cambiado el nombre de la sala", + "%(senderName)s changed the room name": "%(senderName)s cambio el nombre de la sala", + "You invited %(targetName)s": "Has invitado a %(targetName)s" } diff --git a/src/i18n/strings/et.json b/src/i18n/strings/et.json index 9441839e22..95253f5256 100644 --- a/src/i18n/strings/et.json +++ b/src/i18n/strings/et.json @@ -68,6 +68,7 @@ "Send an encrypted message…": "Saada krüptitud sõnum…", "Send a message…": "Saada sõnum…", "The conversation continues here.": "Vestlus jätkub siin.", + "Recent rooms": "Hiljutised jututoad", "No rooms to show": "Ei saa kuvada ühtegi jututuba", "Direct Messages": "Isiklikud sõnumid", "Start chat": "Alusta vestlust", @@ -123,6 +124,8 @@ "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Neid jututubasid kuvatakse kogukonna liikmetele kogukonna lehel. Liikmed saavad nimetatud jututubadega liituda neil klõpsides.", "Featured Rooms:": "Esiletõstetud jututoad:", "Explore Public Rooms": "Sirvi avalikke jututubasid", + "Explore": "Uuri", + "Filter rooms…": "Filtreeri jututubasid…", "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Liites kokku kasutajaid ja jututubasid loo oma kogukond! Loo kogukonna koduleht, et märkida oma koht Matrix'i universumis.", "Explore rooms": "Uuri jututubasid", "If you've joined lots of rooms, this might take a while": "Kui oled liitunud paljude jututubadega, siis see võib natuke aega võtta", @@ -212,6 +215,7 @@ "Remove for me": "Eemalda minult", "User Status": "Kasutaja olek", "You must join the room to see its files": "Failide nägemiseks pead jututoaga liituma", + "There are no visible files in this room": "Jututoas pole nähtavaid faile", "Failed to remove the room from the summary of %(groupId)s": "Jututoa eemaldamine %(groupId)s kogukonna ülevaatelehelt ebaõnnestus", "Failed to remove a user from the summary of %(groupId)s": "Kasutaja eemaldamine %(groupId)s kogukonna ülevaatelehelt ebaõnnestus", "Create a Group Chat": "Loo rühmavestlus", @@ -269,6 +273,7 @@ "Share Community": "Jaga viidet kogukonna kohta", "Share Room Message": "Jaga jututoa sõnumit", "Link to selected message": "Viide valitud sõnumile", + "COPY": "KOPEERI", "Command Help": "Abiteave käskude kohta", "To help us prevent this in future, please send us logs.": "Tagamaks et sama ei juhtuks tulevikus, palun saada meile salvestatud logid.", "Missing session data": "Sessiooni andmed on puudu", @@ -287,6 +292,7 @@ "powered by Matrix": "põhineb Matrix'il", "Custom Server Options": "Serveri kohaldatud seadistused", "Missing captcha public key in homeserver configuration. Please report this to your homeserver administrator.": "Robotilõksu avalik võti on puudu koduserveri seadistustes. Palun teata sellest oma koduserveri haldurile.", + "Filter": "Filtreeri", "Clear filter": "Eemalda filter", "Copy": "Kopeeri", "Clear room list filter field": "Tühjenda jututubade filtriväli", @@ -402,6 +408,7 @@ "Forget room": "Unusta jututuba", "Search": "Otsing", "Share room": "Jaga jututuba", + "Community Invites": "Kutsed kogukonda", "Invites": "Kutsed", "Favourites": "Lemmikud", "Low priority": "Vähetähtis", @@ -547,6 +554,7 @@ "Unencrypted": "Krüptimata", "Encrypted by a deleted session": "Krüptitud kustutatud sessiooni poolt", "Please select the destination room for this message": "Palun vali jututuba, kuhu soovid seda sõnumit saata", + "Invite only": "Ainult kutse", "Scroll to most recent messages": "Mine viimaste sõnumite juurde", "Close preview": "Sulge eelvaade", "Disinvite": "Eemalda kutse", @@ -563,6 +571,7 @@ "Click to mute video": "Klõpsi video heli summutamiseks", "Click to unmute audio": "Klõpsi heli taastamiseks", "Click to mute audio": "Klõpsi heli summutamiseks", + "Your profile": "Sinu profiil", "How fast should messages be downloaded.": "Kui kiiresti peaksime sõnumeid alla laadima.", "Error downloading theme information.": "Viga teema teabefaili allalaadimisel.", "Close": "Sulge", @@ -773,6 +782,10 @@ "Show avatars in user and room mentions": "Näita avatare kasutajate ja jututubade mainimistes", "Manually verify all remote sessions": "Verifitseeri käsitsi kõik välised sessioonid", "Collecting app version information": "Kogun teavet rakenduse versiooni kohta", + "unknown caller": "tundmatu helistaja", + "Incoming voice call from %(name)s": "Saabuv häälkõne kasutajalt %(name)s", + "Incoming video call from %(name)s": "Saabuv videokõne kasutajalt %(name)s", + "Incoming call from %(name)s": "Saabuv kõne kasutajalt %(name)s", "Decline": "Keeldu", "Accept": "Võta vastu", "The other party cancelled the verification.": "Teine osapool tühistas verifitseerimise.", @@ -794,6 +807,70 @@ "They match": "Nad klapivad", "They don't match": "Nad ei klapi", "To be secure, do this in person or use a trusted way to communicate.": "Turvalisuse mõttes on oluline, et teed seda nii, et kas olete üheskoos või kasutate suhtluskanalit, mida mõlemad usaldate.", + "Dog": "Koer", + "Cat": "Kass", + "Lion": "Lõvi", + "Horse": "Hobune", + "Unicorn": "Ükssarvik", + "Pig": "Siga", + "Elephant": "Elevant", + "Rabbit": "Jänes", + "Panda": "Panda", + "Rooster": "Kukk", + "Penguin": "Pingviin", + "Turtle": "Kilpkonn", + "Fish": "Kala", + "Octopus": "Kaheksajalg", + "Butterfly": "Liblikas", + "Flower": "Lill", + "Tree": "Puu", + "Cactus": "Kaktus", + "Mushroom": "Seen", + "Globe": "Maakera", + "Moon": "Kuu", + "Cloud": "Pilv", + "Fire": "Tuli", + "Banana": "Banaan", + "Apple": "Õun", + "Strawberry": "Maasikas", + "Corn": "Mais", + "Pizza": "Pitsa", + "Cake": "Kook", + "Heart": "Süda", + "Smiley": "Smaili", + "Robot": "Robot", + "Hat": "Müts", + "Glasses": "Prillid", + "Spanner": "Mutrivõti", + "Santa": "Jõuluvana", + "Thumbs up": "Pöidlad püsti", + "Umbrella": "Vihmavari", + "Hourglass": "Liivakell", + "Clock": "Kell", + "Gift": "Kingitus", + "Light bulb": "Lambipirn", + "Book": "Raamat", + "Pencil": "Pliiats", + "Paperclip": "Kirjaklamber", + "Scissors": "Käärid", + "Lock": "Lukk", + "Key": "Võti", + "Hammer": "Haamer", + "Telephone": "Telefon", + "Flag": "Lipp", + "Train": "Rong", + "Bicycle": "Jalgratas", + "Aeroplane": "Lennuk", + "Rocket": "Rakett", + "Trophy": "Auhind", + "Ball": "Pall", + "Guitar": "Kitarr", + "Trumpet": "Trompet", + "Bell": "Kelluke", + "Anchor": "Ankur", + "Headphones": "Kõrvaklapid", + "Folder": "Kaust", + "Pin": "Knopka", "Verify all your sessions to ensure your account & messages are safe": "Selleks et sinu konto ja sõnumid oleks turvatud, verifitseeri kõik oma sessioonid", "Later": "Hiljem", "Review": "Vaata üle", @@ -894,6 +971,7 @@ "Logout": "Logi välja", "Your Communities": "Sinu kogukonnad", "Error whilst fetching joined communities": "Viga nende kogukondade laadimisel, millega sa oled liitunud", + "You have no visible notifications": "Sul ei ole nähtavaid teavitusi", "%(brand)s failed to get the protocol list from the homeserver. The homeserver may be too old to support third party networks.": "%(brand)s'il ei õnnestunud koduserverist laadida toetatud protokollide loendit. Toetamaks kolmandate osapoolte võrke võib koduserver olla liiga vana.", "%(brand)s failed to get the public room list.": "%(brand)s'il ei õnnestunud laadida avalike jututubade loendit.", "The homeserver may be unavailable or overloaded.": "Koduserver pole kas saadaval või on üle koormatud.", @@ -1013,6 +1091,7 @@ "%(count)s unread messages including mentions.|other": "%(count)s lugemata sõnumit kaasa arvatud mainimised.", "%(count)s unread messages.|other": "%(count)s lugemata teadet.", "%(count)s unread messages.|one": "1 lugemata teade.", + "Unread mentions.": "Lugemata mainimised.", "Unread messages.": "Lugemata sõnumid.", "Add a topic": "Lisa teema", "Upgrading this room will shut down the current instance of the room and create an upgraded room with the same name.": "Selle jututoa versiooni uuendamine sulgeb tema praeguse instantsi ja loob sama nimega uuendatud jututoa.", @@ -1250,6 +1329,9 @@ "Server may be unavailable, overloaded, or you hit a bug.": "Server kas pole võrgus või on üle koormatud, aga võib-olla oled komistanud süsteemivea otsa.", "The server does not support the room version specified.": "See server ei toeta antud jututoa versiooni.", "Failure to create room": "Jututoa loomine ei õnnestunud", + "If you cancel now, you won't complete verifying the other user.": "Kui sa katkestad nüüd, siis sul jääb teise kasutaja verifitseerimine lõpetamata.", + "If you cancel now, you won't complete verifying your other session.": "Kui sa katkestad nüüd, siis sul jääb oma muu sessiooni verifitseerimine lõpetamata.", + "If you cancel now, you won't complete your operation.": "Kui sa katkestad nüüd, siis sul jääb pooleliolev tegevus lõpetamata.", "Cancel entering passphrase?": "Kas katkestame paroolifraasi sisestamise?", "Enter passphrase": "Sisesta paroolifraas", "Setting up keys": "Võtamevõtmed kasutusele", @@ -1363,6 +1445,7 @@ "Sorry, your homeserver is too old to participate in this room.": "Vabandust, sinu koduserver on siin jututoas osalemiseks liiga vana.", "Please contact your homeserver administrator.": "Palun võta ühendust koduserveri haldajaga.", "Failed to join room": "Jututoaga liitumine ei õnnestunud", + "Font scaling": "Fontide skaleerimine", "Custom user status messages": "Kasutajate kohandatud olekuteated", "Font size": "Fontide suurus", "Enable automatic language detection for syntax highlighting": "Kasuta süntaksi esiletõstmisel automaatset keeletuvastust", @@ -1393,6 +1476,8 @@ "Italics": "Kaldkiri", "Strikethrough": "Läbikriipsutus", "Code block": "Koodiplokk", + "Show": "Näita", + "Message preview": "Sõnumi eelvaade", "List options": "Loendi valikud", "Show %(count)s more|other": "Näita veel %(count)s sõnumit", "Show %(count)s more|one": "Näita veel %(count)s sõnumit", @@ -1471,6 +1556,8 @@ "Submit": "Saada", "Start authentication": "Alusta autentimist", "Unable to validate homeserver/identity server": "Ei õnnestu valideerida koduserverit/isikutuvastusserverit", + "Your Modular server": "Sinu Modular-server", + "Enter the location of your Modular homeserver. It may use your own domain name or be a subdomain of modular.im.": "Sisesta oma Modular'i koduserveri aadress. See võib kasutada nii sinu oma domeeni, kui olla modular.im alamdomeen.", "Sign in with SSO": "Logi sisse kasutades SSO'd ehk ühekordset autentimist", "Failed to reject invitation": "Kutse tagasi lükkamine ei õnnestunud", "This room is not public. You will not be able to rejoin without an invite.": "See ei ole avalik jututuba. Ilma kutseta sa ei saa uuesti liituda.", @@ -1554,9 +1641,47 @@ "%(senderName)s started a call": "%(senderName)s alustas kõnet", "Waiting for answer": "Ootan kõnele vastamist", "%(senderName)s is calling": "%(senderName)s helistab", + "You created the room": "Sa lõid jututoa", + "%(senderName)s created the room": "%(senderName)s lõi jututoa", + "You made the chat encrypted": "Sina võtsid vestlusel kasutuse krüptimise", + "%(senderName)s made the chat encrypted": "%(senderName)s võttis vestlusel kasutuse krüptimise", + "You made history visible to new members": "Sina tegid jututoa ajaloo loetavaks uuetele liikmetele", + "%(senderName)s made history visible to new members": "%(senderName)s tegi jututoa ajaloo loetavaks uuetele liikmetele", + "You made history visible to anyone": "Sina tegi jututoa ajaloo loetavaks kõikidele", + "%(senderName)s made history visible to anyone": "%(senderName)s tegi jututoa ajaloo loetavaks kõikidele", + "You made history visible to future members": "Sina tegid jututoa ajaloo loetavaks tulevastele liikmetele", + "%(senderName)s made history visible to future members": "%(senderName)s tegi jututoa ajaloo loetavaks tulevastele liikmetele", + "You were invited": "Sina said kutse", + "%(targetName)s was invited": "%(targetName)s sai kutse", + "You left": "Sina lahkusid", + "%(targetName)s left": "%(targetName)s lahkus", + "You were kicked (%(reason)s)": "Sind müksati jututoast välja (%(reason)s)", + "%(targetName)s was kicked (%(reason)s)": "%(targetName)s müksati jututoast välja (%(reason)s)", + "You were kicked": "Sind müksati jututoast välja", + "%(targetName)s was kicked": "%(targetName)s müksati jututoast välja", + "You rejected the invite": "Sa lükkasid kutse tagasi", + "%(targetName)s rejected the invite": "%(targetName)s lükkas kutse tagasi", + "You were uninvited": "Sinult võeti kutse tagasi", + "%(targetName)s was uninvited": "%(targetName)s'lt võeti kutse tagasi", + "You joined": "Sina liitusid", + "%(targetName)s joined": "%(targetName)s liitus", + "You changed your name": "Sa muutsid oma nime", + "%(targetName)s changed their name": "%(targetName)s muutis oma nime", + "You changed your avatar": "Sa muutsid oma tunnuspilti", + "%(targetName)s changed their avatar": "%(targetName)s muutis oma tunnuspilti", + "%(senderName)s %(emote)s": "%(senderName)s %(emote)s", "%(senderName)s: %(message)s": "%(senderName)s: %(message)s", + "You changed the room name": "Sina muutsid jututoa nime", + "%(senderName)s changed the room name": "%(senderName)s muutis jututoa nime", "%(senderName)s: %(reaction)s": "%(senderName)s: %(reaction)s", "%(senderName)s: %(stickerName)s": "%(senderName)s: %(stickerName)s", + "You uninvited %(targetName)s": "Sina võtsid tagasi kutse kasutajalt %(targetName)s", + "%(senderName)s uninvited %(targetName)s": "%(senderName)s võttis kutse tagasi kasutajalt %(targetName)s", + "You invited %(targetName)s": "Sina kutsusid kasutajat %(targetName)s", + "%(senderName)s invited %(targetName)s": "%(senderName)s kutsus kasutajat %(targetName)s", + "You changed the room topic": "Sina muutsid jututoa teemat", + "%(senderName)s changed the room topic": "%(senderName)s muutis jututoa teemat", + "Use the improved room list (will refresh to apply changes)": "Kasuta parandaatud jututubade loendit (muudatuse jõustamine eeldab andmete uuesti laadimist)", "Use custom size": "Kasuta kohandatud suurust", "Use a more compact ‘Modern’ layout": "Kasuta veel kompaktsemat „moodsat“ paigutust", "Cross-signing public keys:": "Avalikud võtmed risttunnustamise jaoks:", @@ -1662,11 +1787,16 @@ "Ok": "Sobib", "Set password": "Määra salasõna", "To return to your account in future you need to set a password": "Selleks, et sa saaksid tulevikus oma konto juurde tagasi pöörduda, peaksid määrama salasõna", + "You were banned (%(reason)s)": "Sinule on seatud ligipääsukeeld %(reason)s", + "%(targetName)s was banned (%(reason)s)": "%(targetName)s seati ligipääsukeeld %(reason)s", + "You were banned": "Sinule seati ligipääsukeeld", + "%(targetName)s was banned": "%(targetName)s'le seati ligipääsukeeld", "New spinner design": "Uus vurri-moodi paigutus", "Message Pinning": "Sõnumite klammerdamine", "IRC display name width": "IRC kuvatava nime laius", "Enable experimental, compact IRC style layout": "Võta kasutusele katseline, IRC-stiilis kompaktne sõnumite paigutus", "My Ban List": "Minu poolt seatud ligipääsukeeldude loend", + "Active call (%(roomName)s)": "Käsilolev kõne (%(roomName)s)", "Unknown caller": "Tundmatu helistaja", "Incoming voice call": "Saabuv häälkõne", "Incoming video call": "Saabuv videokõne", @@ -1751,6 +1881,8 @@ "Room ID or address of ban list": "Ligipääsukeelu reeglite loendi jututoa tunnus või aadress", "Show tray icon and minimize window to it on close": "Näita süsteemisalve ikooni ja Element'i akna sulgemisel minimeeri ta salve", "Read Marker off-screen lifetime (ms)": "Lugemise markeri iga, kui Element pole fookuses (ms)", + "Make this room low priority": "Muuda see jututuba vähetähtsaks", + "Low priority rooms show up at the bottom of your room list in a dedicated section at the bottom of your room list": "Vähetähtsad jututoad kuvatakse jututubade loendi lõpus omaette grupina", "Failed to unban": "Ligipääsu taastamine ei õnnestunud", "Unban": "Taasta ligipääs", "Banned by %(displayName)s": "Ligipääs on keelatud %(displayName)s poolt", @@ -1777,7 +1909,10 @@ "Pinned Messages": "Klammerdatud sõnumid", "Unpin Message": "Eemalda sõnumi klammerdus", "No recently visited rooms": "Hiljuti külastatud jututubasid ei leidu", + "Create room": "Loo jututuba", "People": "Inimesed", + "Unread rooms": "Lugemata jututoad", + "Always show first": "Näita alati esimisena", "Error creating address": "Viga aadressi loomisel", "There was an error creating that address. It may not be allowed by the server or a temporary failure occurred.": "Aadressi loomisel tekkis viga. See kas on serveri poolt keelatud või tekkis ajutine tõrge.", "You don't have permission to delete the address.": "Sinul pole õigusi selle aadressi kustutamiseks.", @@ -1936,10 +2071,17 @@ "Access your secure message history and set up secure messaging by entering your recovery passphrase.": "Sisestades taastamiseks mõeldud paroolifraasi, saad ligipääsu oma turvatud sõnumitele ning sätid üles krüptitud sõnumivahetuse.", "If you've forgotten your recovery passphrase you can use your recovery key or set up new recovery options": "Kui sa oled unudtanud taastamiseks mõeldud paroolifraasi, siis sa saad kasutada oma taastevõtit või seadistada uued taastamise võimalused", "Warning: You should only set up key backup from a trusted computer.": "Hoiatus: Sa peaksid võtmete varundust seadistama vaid arvutist, mida sa usaldad.", + "We’re excited to announce Riot is now Element": "Meil on hea meel teatada, et Riot'i uus nimi on nüüd Element", + "Riot is now Element!": "Riot'i uus nimi on Element!", "Secret storage public key:": "Turvahoidla avalik võti:", "Verify User": "Verifitseeri kasutaja", "For extra security, verify this user by checking a one-time code on both of your devices.": "Lisaturvalisus mõttes verifitseeri see kasutaja võrreldes selleks üheks korraks loodud koodi mõlemas seadmes.", "Your messages are not secure": "Sinu sõnumid ei ole turvatud", + "Use your account to sign in to the latest version of the app at ": "Kasuta oma kontot logimaks sisse rakenduse viimasesse versiooni serveris", + "You’re already signed in and good to go here, but you can also grab the latest versions of the app on all platforms at element.io/get-started.": "Sa oled juba sisse loginud ja võid rahumeeli jätkata, kuid alati on hea mõte, kui kasutad viimast rakenduse versiooni, mille erinevate süsteemide jaoks leiad element.io/get-started lehelt.", + "Go to Element": "Võta Element kasutusele", + "We’re excited to announce Riot is now Element!": "Meil on hea meel teatada, et Riot'i uus nimi on nüüd Element!", + "Learn more at element.io/previously-riot": "Lisateavet leiad element.io/previously-riot lehelt", "Access your secure message history and set up secure messaging by entering your recovery key.": "Pääse ligi oma turvatud sõnumitele ning säti üles krüptitud sõnumivahetus.", "If you've forgotten your recovery key you can ": "Kui sa oled unustanud oma taastevõtme, siis sa võid ", "Custom": "Kohandatud", @@ -2016,6 +2158,8 @@ "Forget Room": "Unusta jututuba ära", "Which officially provided instance you are using, if any": "Mis iganes ametlikku klienti sa kasutad, kui üldse kasutad", "Whether you're using %(brand)s on a device where touch is the primary input mechanism": "Kui kasutad %(brand)s seadmes, kus puuteekraan on põhiline sisestusviis", + "Use your account to sign in to the latest version": "Kasuta oma kontot selleks, et sisse logida rakenduse viimasesse versiooni", + "Learn More": "Lisateave", "Upgrades a room to a new version": "Uuendab jututoa uue versioonini", "You do not have the required permissions to use this command.": "Sul ei ole piisavalt õigusi selle käsu käivitamiseks.", "Error upgrading room": "Viga jututoa uuendamisel", @@ -2200,6 +2344,7 @@ "%(brand)s Web": "%(brand)s Web", "%(brand)s Desktop": "%(brand)s Desktop", "%(brand)s iOS": "%(brand)s iOS", + "%(brand)s X for Android": "%(brand)s X Androidi jaoks", "Starting backup...": "Alusta varundamist...", "Success!": "Õnnestus!", "Create key backup": "Tee võtmetest varukoopia", diff --git a/src/i18n/strings/eu.json b/src/i18n/strings/eu.json index 2867dd0678..2740ea2079 100644 --- a/src/i18n/strings/eu.json +++ b/src/i18n/strings/eu.json @@ -97,6 +97,7 @@ "Moderator": "Moderatzailea", "Account": "Kontua", "Access Token:": "Sarbide tokena:", + "Active call (%(roomName)s)": "Dei aktiboa (%(roomName)s)", "Add": "Gehitu", "Add a topic": "Gehitu mintzagai bat", "Admin": "Kudeatzailea", @@ -169,12 +170,15 @@ "Fill screen": "Bete pantaila", "Forget room": "Ahaztu gela", "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s %(fromPowerLevel)s mailatik %(toPowerLevel)s mailara", + "Incoming call from %(name)s": "%(name)s erabiltzailearen deia jasotzen", + "Incoming video call from %(name)s": "%(name)s erabiltzailearen bideo deia jasotzen", "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s erabiltzaileak %(displayName)s erabiltzailearen gonbidapena onartu du.", "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Ezin da hasiera zerbitzarira konektatu, egiaztatu zure konexioa, ziurtatu zure hasiera zerbitzariaren SSL ziurtagiria fidagarritzat jotzen duela zure gailuak, eta nabigatzailearen pluginen batek ez dituela eskaerak blokeatzen.", "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Ezin zara hasiera zerbitzarira HTTP bidez konektatu zure nabigatzailearen barran dagoen URLa HTTS bada. Erabili HTTPS edo gaitu script ez seguruak.", "%(senderName)s changed their profile picture.": "%(senderName)s erabiltzaileak bere profileko argazkia aldatu du.", "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s erabiltzaileak botere mailaz aldatu du %(powerLevelDiffText)s.", "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s erabiltzaileak gelaren izena aldatu du, orain %(roomName)s da.", + "Incoming voice call from %(name)s": "%(name)s erabiltzailearen deia jasotzen", "Incorrect username and/or password.": "Erabiltzaile-izen edo pasahitz okerra.", "Incorrect verification code": "Egiaztaketa kode okerra", "Invalid Email Address": "E-mail helbide baliogabea", @@ -259,6 +263,7 @@ "%(senderName)s unbanned %(targetName)s.": "%(senderName)s erabiltzaileak debekua kendu dio %(targetName)s erabiltzaileari.", "Unable to capture screen": "Ezin izan da pantaila-argazkia atera", "Unable to enable Notifications": "Ezin izan dira jakinarazpenak gaitu", + "unknown caller": "deitzaile ezezaguna", "Unmute": "Audioa aktibatu", "Unnamed Room": "Izen gabeko gela", "Uploading %(filename)s and %(count)s others|zero": "%(filename)s igotzen", @@ -287,6 +292,7 @@ "You cannot place VoIP calls in this browser.": "Ezin dituzu VoIP deiak egin nabigatzaile honekin.", "You have disabled URL previews by default.": "Lehenetsita URLak aurreikustea desgaitu duzu.", "You have enabled URL previews by default.": "Lehenetsita URLak aurreikustea gaitu duzu.", + "You have no visible notifications": "Ez daukazu jakinarazpen ikusgairik", "You must register to use this functionality": "Funtzionaltasun hau erabiltzeko erregistratu", "You need to be able to invite users to do that.": "Erabiltzaileak gonbidatzeko baimena behar duzu hori egiteko.", "You need to be logged in.": "Saioa hasi duzu.", @@ -320,6 +326,7 @@ "Upload an avatar:": "Igo abatarra:", "This server does not support authentication with a phone number.": "Zerbitzari honek ez du telefono zenbakia erabiliz autentifikatzea onartzen.", "An error occurred: %(error_string)s": "Errore bat gertatu da: %(error_string)s", + "There are no visible files in this room": "Ez dago fitxategirik ikusgai gela honetan", "Sent messages will be stored until your connection has returned.": "Bidalitako mezuak zure konexioa berreskuratu arte gordeko dira.", "(~%(count)s results)|one": "(~%(count)s emaitza)", "(~%(count)s results)|other": "(~%(count)s emaitza)", @@ -462,6 +469,7 @@ "World readable": "Munduak irakurgarria", "Guests can join": "Bisitariak elkartu daitezke", "No rooms to show": "Ez dago gelarik erakusteko", + "Community Invites": "Komunitate gonbidapenak", "Members only (since the point in time of selecting this option)": "Kideek besterik ez (aukera hau hautatzen den unetik)", "Members only (since they were invited)": "Kideek besterik ez (gonbidatu zaienetik)", "Members only (since they joined)": "Kideek besterik ez (elkartu zirenetik)", @@ -809,6 +817,7 @@ "Share Community": "Partekatu komunitatea", "Share Room Message": "Partekatu gelako mezua", "Link to selected message": "Esteka hautatutako mezura", + "COPY": "KOPIATU", "Share Message": "Partekatu mezua", "No Audio Outputs detected": "Ez da audio irteerarik antzeman", "Audio Output": "Audio irteera", @@ -987,6 +996,51 @@ "Verified!": "Egiaztatuta!", "You've successfully verified this user.": "Ongi egiaztatu duzu erabiltzaile hau.", "Got It": "Ulertuta", + "Dog": "Txakurra", + "Cat": "Katua", + "Lion": "Lehoia", + "Horse": "Zaldia", + "Unicorn": "Unikornioa", + "Pig": "Txerria", + "Elephant": "Elefantea", + "Rabbit": "Untxia", + "Panda": "Panda hartza", + "Rooster": "Oilarra", + "Penguin": "Pinguinoa", + "Turtle": "Dordoka", + "Fish": "Arraina", + "Octopus": "Olagarroa", + "Butterfly": "Tximeleta", + "Flower": "Lorea", + "Tree": "Zuhaitza", + "Cactus": "Kaktusa", + "Mushroom": "Perretxikoa", + "Globe": "Lurra", + "Moon": "Ilargia", + "Cloud": "Hodeia", + "Fire": "Sua", + "Banana": "Banana", + "Apple": "Sagarra", + "Strawberry": "Marrubia", + "Corn": "Artoa", + "Pizza": "Pizza", + "Cake": "Pastela", + "Heart": "Bihotza", + "Smiley": "Irrifartxoa", + "Robot": "Robota", + "Hat": "Txanoa", + "Glasses": "Betaurrekoak", + "Spanner": "Giltza", + "Santa": "Santa", + "Umbrella": "Aterkia", + "Clock": "Erlojua", + "Gift": "Oparia", + "Light bulb": "Bonbilla", + "Book": "Liburua", + "Pencil": "Arkatza", + "Key": "Giltza", + "Hammer": "Mailua", + "Telephone": "Telefonoa", "Room avatar": "Gelaren abatarra", "Room Name": "Gelaren izena", "Room Topic": "Gelaren mintzagaia", @@ -995,6 +1049,8 @@ "Update status": "Eguneratu egoera", "Set status": "Ezarri egoera", "This homeserver would like to make sure you are not a robot.": "Hasiera-zerbitzari honek robota ez zarela egiaztatu nahi du.", + "Your Modular server": "Zure Modular zerbitzaria", + "Enter the location of your Modular homeserver. It may use your own domain name or be a subdomain of modular.im.": "Sartu zure Modular hasiera-zerbitzariaren helbidea. Zure domeinua erabili dezake edo modular.imren azpi-domeinua izan daiteke.", "Server Name": "Zerbitzariaren izena", "The username field must not be blank.": "Erabiltzaile-izena eremua ezin da hutsik egon.", "Username": "Erabiltzaile-izena", @@ -1060,6 +1116,19 @@ "Back up your keys before signing out to avoid losing them.": "Egin gakoen babes-kopia bat saioa amaitu aurretik, galdu nahi ez badituzu.", "Backing up %(sessionsRemaining)s keys...": "%(sessionsRemaining)s gakoen babes-kopia egiten…", "All keys backed up": "Gako guztien babes.kopia egin da", + "Headphones": "Aurikularrak", + "Folder": "Karpeta", + "Flag": "Bandera", + "Train": "Trena", + "Bicycle": "Bizikleta", + "Aeroplane": "Hegazkina", + "Rocket": "Kohetea", + "Trophy": "Saria", + "Ball": "Baloia", + "Guitar": "Gitarra", + "Trumpet": "Tronpeta", + "Bell": "Kanpaia", + "Anchor": "Aingura", "Credits": "Kredituak", "%(senderDisplayName)s changed the join rule to %(rule)s": "%(senderDisplayName)s erabiltzaileak elkartzeko araua aldatu du: %(rule)s", "%(senderDisplayName)s has allowed guests to join the room.": "%(senderDisplayName)s erabiltzaileak bisitariak gelara elkartzea baimendu du.", @@ -1069,6 +1138,10 @@ "Verify this user by confirming the following emoji appear on their screen.": "Egiaztatu erabiltzaile hau beheko emojiak bere pantailan agertzen direla baieztatuz.", "Verify this user by confirming the following number appears on their screen.": "Egiaztatu erabiltzaile hau honako zenbakia bere pantailan agertzen dela baieztatuz.", "Unable to find a supported verification method.": "Ezin izan da onartutako egiaztaketa metodorik aurkitu.", + "Thumbs up": "Ederto", + "Hourglass": "Harea-erlojua", + "Paperclip": "Klipa", + "Pin": "Txintxeta", "Yes": "Bai", "No": "Ez", "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.": "E-mail bat bidali dizugu zure helbidea egiaztatzeko. Jarraitu hango argibideak eta gero sakatu beheko botoia.", @@ -1124,6 +1197,7 @@ "User %(userId)s is already in the room": "%(userId)s erabiltzailea gelan dago jada", "The user must be unbanned before they can be invited.": "Erabiltzaileari debekua kendu behar zaio gonbidatu aurretik.", "Show read receipts sent by other users": "Erakutsi beste erabiltzaileek bidalitako irakurragiriak", + "Scissors": "Artaziak", "Upgrade to your own domain": "Eguneratu zure domeinu propiora", "Accept all %(invitedRooms)s invites": "Onartu %(invitedRooms)s gelako gonbidapen guztiak", "Change room avatar": "Aldatu gelaren abatarra", @@ -1266,6 +1340,7 @@ "Some characters not allowed": "Karaktere batzuk ez dira onartzen", "Create your Matrix account on ": "Sortu zure Matrix kontua zerbitzarian", "Add room": "Gehitu gela", + "Your profile": "Zure profila", "Your Matrix account on ": "Zure zerbitzariko Matrix kontua", "Homeserver URL does not appear to be a valid Matrix homeserver": "Hasiera-zerbitzariaren URL-a ez dirudi baliozko hasiera-zerbitzari batena", "Identity server URL does not appear to be a valid identity server": "Identitate-zerbitzariaren URL-a ez dirudi baliozko identitate-zerbitzari batena", @@ -1428,6 +1503,7 @@ "Share this email in Settings to receive invites directly in %(brand)s.": "Partekatu e-mail hau ezarpenetan gonbidapenak zuzenean %(brand)s-en jasotzeko.", "%(count)s unread messages including mentions.|other": "irakurri gabeko %(count)s mezu aipamenak barne.", "%(count)s unread messages.|other": "irakurri gabeko %(count)s mezu.", + "Unread mentions.": "Irakurri gabeko aipamenak.", "Show image": "Erakutsi irudia", "Please create a new issue on GitHub so that we can investigate this bug.": "Sortu txosten berri bat GitHub zerbitzarian arazo hau ikertu dezagun.", "e.g. my-room": "adib. nire-gela", @@ -1455,6 +1531,9 @@ "Set an email for account recovery. Use email to optionally be discoverable by existing contacts.": "Ezarri E-mail bat kontua berreskuratzeko. Erabili E-maila aukeran zure kontaktuek aurkitu zaitzaten.", "Enter your custom homeserver URL What does this mean?": "Sartu zure hasiera-zerbitzari pertsonalizatuaren URL-a Zer esan nahi du?", "Enter your custom identity server URL What does this mean?": "Sartu zure identitate-zerbitzari pertsonalizatuaren URL-a Zer esan nahi du?", + "Explore": "Arakatu", + "Filter": "Iragazi", + "Filter rooms…": "Iragazi gelak…", "%(creator)s created and configured the room.": "%(creator)s erabiltzaileak gela sortu eta konfiguratu du.", "Preview": "Aurrebista", "View": "Ikusi", @@ -1474,6 +1553,7 @@ "wait and try again later": "itxaron eta berriro saiatu", "Show tray icon and minimize window to it on close": "Erakutsi egoera-barrako ikonoa eta minimizatu leihoa itxi ordez", "Room %(name)s": "%(name)s gela", + "Recent rooms": "Azken gelak", "%(count)s unread messages including mentions.|one": "Irakurri gabeko aipamen 1.", "%(count)s unread messages.|one": "Irakurri gabeko mezu 1.", "Unread messages.": "Irakurri gabeko mezuak.", @@ -1659,6 +1739,7 @@ "Suggestions": "Proposamenak", "Failed to find the following users": "Ezin izan dira honako erabiltzaile hauek aurkitu", "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s": "Honako erabiltzaile hauek agian ez dira existitzen edo baliogabeak dira, eta ezin dira gonbidatu: %(csvNames)s", + "Lock": "Blokeatu", "Restore": "Berrezarri", "a few seconds ago": "duela segundo batzuk", "about a minute ago": "duela minutu bat inguru", @@ -1688,6 +1769,7 @@ "Go Back": "Joan atzera", "This room is end-to-end encrypted": "Gela hau muturretik muturrera zifratuta dago", "Everyone in this room is verified": "Gelako guztiak egiaztatuta daude", + "Invite only": "Gonbidapenez besterik ez", "Send a reply…": "Bidali erantzuna…", "Send a message…": "Bidali mezua…", "Reject & Ignore user": "Ukatu eta ezikusi erabiltzailea", @@ -1804,6 +1886,8 @@ "Your recovery key": "Zure berreskuratze gakoa", "Copy": "Kopiatu", "Make a copy of your recovery key": "Egin zure berreskuratze gakoaren kopia", + "If you cancel now, you won't complete verifying the other user.": "Orain ezeztatzen baduzu, ez duzu beste erabiltzailearen egiaztaketa burutuko.", + "If you cancel now, you won't complete verifying your other session.": "Orain ezeztatzen baduzu, ez duzu beste zure beste saioaren egiaztaketa burutuko.", "Cancel entering passphrase?": "Ezeztatu pasa-esaldiaren sarrera?", "Securely cache encrypted messages locally for them to appear in search results.": "Gorde zifratutako mezuak cachean modu seguruan bilaketen emaitzetan agertu daitezen.", "You have verified this user. This user has verified all of their sessions.": "Erabiltzaile hau egiaztatu duzu. Erabiltzaile honek bere saio guztiak egiaztatu ditu.", @@ -2039,6 +2123,7 @@ "Self-verification request": "Auto-egiaztaketa eskaria", "Delete sessions|other": "Ezabatu saioak", "Delete sessions|one": "Ezabatu saioa", + "If you cancel now, you won't complete your operation.": "Orain ezeztatzen baduzu, ez duzu eragiketa burutuko.", "Failed to set topic": "Ezin izan da mintzagaia ezarri", "Command failed": "Aginduak huts egin du", "Could not find user in room": "Ezin izan da erabiltzailea gelan aurkitu", @@ -2076,6 +2161,7 @@ "Sends a message to the given user": "Erabiltzaileari mezua bidaltzen dio", "You signed in to a new session without verifying it:": "Saio berria hasi duzu hau egiaztatu gabe:", "Verify your other session using one of the options below.": "Egiaztatu zure beste saioa beheko aukeretako batekin.", + "Font scaling": "Letren eskalatzea", "Font size": "Letra-tamaina", "IRC display name width": "IRC-ko pantaila izenaren zabalera", "Waiting for your other session to verify…": "Zure beste saioak egiaztatu bitartean zain…", @@ -2087,6 +2173,7 @@ "Appearance": "Itxura", "Where you’re logged in": "Non hasi duzun saioa", "Manage the names of and sign out of your sessions below or verify them in your User Profile.": "Kudeatu azpiko saioen izenak eta hauek amaitu edo egiaztatu zure erabiltzaile-profilean.", + "Create room": "Sortu gela", "You've successfully verified your device!": "Ongi egiaztatu duzu zure gailua!", "Message deleted": "Mezu ezabatuta", "Message deleted by %(name)s": "Mezua ezabatu du %(name)s erabiltzaileak", @@ -2131,6 +2218,10 @@ "Sort by": "Ordenatu honela", "Activity": "Jarduera", "A-Z": "A-Z", + "Unread rooms": "Irakurri gabeko gelak", + "Always show first": "Erakutsi lehenbizi", + "Show": "Erakutsi", + "Message preview": "Mezu-aurrebista", "List options": "Zerrenda-aukerak", "Show %(count)s more|other": "Erakutsi %(count)s gehiago", "Show %(count)s more|one": "Erakutsi %(count)s gehiago", @@ -2158,6 +2249,9 @@ "All settings": "Ezarpen guztiak", "Feedback": "Iruzkinak", "Use a different passphrase?": "Erabili pasa-esaldi desberdin bat?", + "We’re excited to announce Riot is now Element": "Pozik jakinarazten dizugu: Riot orain Element deitzen da", + "Riot is now Element!": "Riot orain Element da!", + "Learn More": "Ikasi gehiago", "Light": "Argia", "The person who invited you already left the room.": "Gonbidatu zaituen pertsonak dagoeneko gela utzi du.", "The person who invited you already left the room, or their server is offline.": "Gonbidatu zaituen pertsonak dagoeneko gela utzi du edo bere zerbitzaria lineaz kanpo dago.", @@ -2172,6 +2266,7 @@ "%(brand)s Web": "%(brand)s web", "%(brand)s Desktop": "%(brand)s Desktop", "%(brand)s iOS": "%(brand)s iOS", + "%(brand)s X for Android": "%(brand)s X for Android", "Change notification settings": "Aldatu jakinarazpenen ezarpenak", "Use custom size": "Erabili tamaina pertsonalizatua", "Use a more compact ‘Modern’ layout": "Erabili mezuen antolaketa 'Modernoa', konpaktuagoa da", @@ -2191,6 +2286,8 @@ "This room is public": "Gela hau publikoa da", "Away": "Kanpoan", "Click to view edits": "Klik egin edizioak ikusteko", + "Go to Element": "Joan Elementera", + "Learn more at element.io/previously-riot": "Ikasi gehiago element.io/previously-riot orrian", "The server is offline.": "Zerbitzaria lineaz kanpo dago.", "The server has denied your request.": "Zerbitzariak zure eskariari uko egin dio.", "Wrong file type": "Okerreko fitxategi-mota", diff --git a/src/i18n/strings/fi.json b/src/i18n/strings/fi.json index 3c5fc769f8..c6abfc0de7 100644 --- a/src/i18n/strings/fi.json +++ b/src/i18n/strings/fi.json @@ -20,6 +20,7 @@ "Failed to change password. Is your password correct?": "Salasanan vaihtaminen epäonnistui. Onko salasanasi oikein?", "Continue": "Jatka", "powered by Matrix": "moottorina Matrix", + "Active call (%(roomName)s)": "Aktiivinen puhelu (%(roomName)s)", "Add": "Lisää", "Add a topic": "Lisää aihe", "Admin": "Ylläpitäjä", @@ -115,6 +116,9 @@ "I have verified my email address": "Olen varmistanut sähköpostiosoitteeni", "Import": "Tuo", "Import E2E room keys": "Tuo olemassaolevat osapuolten välisen salauksen huoneavaimet", + "Incoming call from %(name)s": "Saapuva puhelu käyttäjältä %(name)s", + "Incoming video call from %(name)s": "Saapuva videopuhelu käyttäjältä %(name)s", + "Incoming voice call from %(name)s": "Saapuva äänipuhelu käyttäjältä %(name)s", "Incorrect username and/or password.": "Virheellinen käyttäjätunnus ja/tai salasana.", "Incorrect verification code": "Virheellinen varmennuskoodi", "Invalid Email Address": "Virheellinen sähköpostiosoite", @@ -179,6 +183,7 @@ "This room": "Tämä huone", "This room is not accessible by remote Matrix servers": "Tähän huoneeseen ei pääse ulkopuolisilta Matrix-palvelimilta", "Unban": "Poista porttikielto", + "unknown caller": "tuntematon soittaja", "Unmute": "Poista mykistys", "Unnamed Room": "Nimeämätön huone", "Uploading %(filename)s and %(count)s others|zero": "Ladataan %(filename)s", @@ -219,6 +224,7 @@ "You do not have permission to post to this room": "Sinulla ei ole oikeutta kirjoittaa tässä huoneessa", "You have disabled URL previews by default.": "Olet oletusarvoisesti ottanut URL-esikatselut pois käytöstä.", "You have enabled URL previews by default.": "Olet oletusarvoisesti ottanut URL-esikatselut käyttöön.", + "You have no visible notifications": "Sinulla ei ole näkyviä ilmoituksia", "You must register to use this functionality": "Sinun pitää rekisteröityä käyttääksesi tätä toiminnallisuutta", "You need to be able to invite users to do that.": "Sinun pitää pystyä kutsua käyttäjiä voidaksesi tehdä tuon.", "You need to be logged in.": "Sinun pitää olla kirjautunut.", @@ -233,6 +239,7 @@ "Set a display name:": "Aseta näyttönimi:", "This server does not support authentication with a phone number.": "Tämä palvelin ei tue autentikointia puhelinnumeron avulla.", "An error occurred: %(error_string)s": "Virhe: %(error_string)s", + "There are no visible files in this room": "Tässä huoneessa ei tiedostoja näkyvissä", "Room": "Huone", "Copied!": "Kopioitu!", "Failed to copy": "Kopiointi epäonnistui", @@ -419,6 +426,7 @@ "Guests can join": "Vierailijat voivat liittyä", "No rooms to show": "Ei näytettäviä huoneita", "Upload avatar": "Lataa profiilikuva", + "Community Invites": "Yhteisökutsut", "Banned by %(displayName)s": "%(displayName)s antoi porttikiellon", "Privileged Users": "Etuoikeutetut käyttäjät", "Members only (since the point in time of selecting this option)": "Vain jäsenet (tämän valinnan tekemisestä lähtien)", @@ -764,6 +772,66 @@ "Verify this user by confirming the following emoji appear on their screen.": "Varmenna tämä käyttäjä varmistamalla, että seuraava emoji ilmestyy hänen ruudulleen.", "Verify this user by confirming the following number appears on their screen.": "Varmenna tämä käyttäjä varmistamalla, että seuraava luku ilmestyy hänen ruudulleen.", "Unable to find a supported verification method.": "Tuettua varmennustapaa ei löydy.", + "Dog": "Koira", + "Cat": "Kissa", + "Lion": "Leijona", + "Horse": "Hevonen", + "Unicorn": "Yksisarvinen", + "Pig": "Sika", + "Rabbit": "Kani", + "Panda": "Panda", + "Rooster": "Kukko", + "Penguin": "Pingviini", + "Turtle": "Kilpikonna", + "Fish": "Kala", + "Octopus": "Tursas", + "Butterfly": "Perhonen", + "Flower": "Kukka", + "Tree": "Puu", + "Cactus": "Kaktus", + "Mushroom": "Sieni", + "Globe": "Maapallo", + "Moon": "Kuu", + "Cloud": "Pilvi", + "Fire": "Tuli", + "Banana": "Banaani", + "Apple": "Omena", + "Strawberry": "Mansikka", + "Corn": "Maissi", + "Pizza": "Pizza", + "Cake": "Kakku", + "Heart": "Sydän", + "Smiley": "Hymiö", + "Robot": "Robotti", + "Hat": "Hattu", + "Glasses": "Silmälasit", + "Spanner": "Jakoavain", + "Santa": "Joulupukki", + "Umbrella": "Sateenvarjo", + "Hourglass": "Tiimalasi", + "Clock": "Kello", + "Gift": "Lahja", + "Light bulb": "Hehkulamppu", + "Book": "Kirja", + "Pencil": "Lyijykynä", + "Paperclip": "Klemmari", + "Key": "Avain", + "Hammer": "Vasara", + "Telephone": "Puhelin", + "Flag": "Lippu", + "Train": "Juna", + "Bicycle": "Polkupyörä", + "Aeroplane": "Lentokone", + "Rocket": "Raketti", + "Trophy": "Palkinto", + "Ball": "Pallo", + "Guitar": "Kitara", + "Trumpet": "Trumpetti", + "Bell": "Soittokello", + "Anchor": "Ankkuri", + "Headphones": "Kuulokkeet", + "Folder": "Kansio", + "Pin": "Nuppineula", "Call in Progress": "Puhelu meneillään", "General": "Yleiset", "Security & Privacy": "Tietoturva ja -suoja", @@ -891,6 +959,7 @@ "Email Address": "Sähköpostiosoite", "Yes": "Kyllä", "No": "Ei", + "Elephant": "Norsu", "Add an email address to configure email notifications": "Lisää sähköpostiosoite määrittääksesi sähköposti-ilmoitukset", "Chat with %(brand)s Bot": "Keskustele %(brand)s-botin kanssa", "You'll lose access to your encrypted messages": "Menetät pääsyn salattuihin viesteihisi", @@ -958,6 +1027,7 @@ "Messages containing my username": "Viestit, jotka sisältävät käyttäjätunnukseni", "Messages containing @room": "Viestit, jotka sisältävät sanan ”@room”", "Secure messages with this user are end-to-end encrypted and not able to be read by third parties.": "Turvalliset viestit tämän käyttäjän kanssa ovat salattuja päästä päähän, eivätkä kolmannet osapuolet voi lukea niitä.", + "Thumbs up": "Peukut ylös", "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.": "Lähetimme sinulle sähköpostin osoitteesi vahvistamiseksi. Noudata sähköpostissa olevia ohjeita, ja klikkaa sen jälkeen alla olevaa painiketta.", "Are you sure? You will lose your encrypted messages if your keys are not backed up properly.": "Oletko varma? Et voi lukea salattuja viestejäsi, mikäli avaimesi eivät ole kunnolla varmuuskopioituna.", "Encrypted messages are secured with end-to-end encryption. Only you and the recipient(s) have the keys to read these messages.": "Salatut viestit turvataan kahdenkeskisellä salauksella. Vain sinä ja viestien vastaanottaja(t) omaavat avaimet näiden viestien lukemiseen.", @@ -996,6 +1066,7 @@ "Show a reminder to enable Secure Message Recovery in encrypted rooms": "Näytä muistutus suojatun viestien palautuksen käyttöönotosta salatuissa huoneissa", "Show avatars in user and room mentions": "Näytä profiilikuvat käyttäjä- ja huonemaininnoissa", "Got It": "Ymmärretty", + "Scissors": "Sakset", "Which officially provided instance you are using, if any": "Mitä virallisesti saatavilla olevaa instanssia käytät, jos mitään", "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s %(day)s. %(monthName)s %(fullYear)s", "Missing roomId.": "roomId puuttuu.", @@ -1079,6 +1150,7 @@ "Clear Storage and Sign Out": "Tyhjennä varasto ja kirjaudu ulos", "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Selaimen varaston tyhjentäminen saattaa korjata ongelman, mutta kirjaa sinut samalla ulos ja estää sinua lukemasta salattuja keskusteluita.", "A username can only contain lower case letters, numbers and '=_-./'": "Käyttäjätunnus voi sisältää vain pieniä kirjaimia, numeroita ja merkkejä ”=_-./”", + "COPY": "Kopioi", "Unable to load backup status": "Varmuuskopioinnin tilan lataaminen epäonnistui", "Failed to decrypt %(failedCount)s sessions!": "%(failedCount)s istunnon purkaminen epäonnistui!", "Warning: you should only set up key backup from a trusted computer.": "Varoitus: sinun pitäisi ottaa avainvarmuuskopio käyttöön vain luotetulla tietokoneella.", @@ -1090,6 +1162,8 @@ "Please review and accept all of the homeserver's policies": "Tarkistathan tämän kotipalvelimen käytännöt", "Please review and accept the policies of this homeserver:": "Tarkistathan tämän kotipalvelimen käytännöt:", "Code": "Koodi", + "Your Modular server": "Modular-palvelimesi", + "Enter the location of your Modular homeserver. It may use your own domain name or be a subdomain of modular.im.": "Syötä Modular-kotipalvelimesi sijainti. Se voi käyttää omaa verkkotunnustasi tai olla modular.im:n aliverkkotunnus.", "The username field must not be blank.": "Käyttäjätunnus ei voi olla tyhjä.", "Username": "Käyttäjätunnus", "Sign in to your Matrix account on %(serverName)s": "Kirjaudu sisään Matrix-tilillesi palvelimella %(serverName)s", @@ -1263,6 +1337,7 @@ "Unable to validate homeserver/identity server": "Kotipalvelinta/identiteettipalvelinta ei voida validoida", "Create your Matrix account on ": "Luo Matrix-tili palvelimelle ", "Add room": "Lisää huone", + "Your profile": "Oma profiilisi", "Your Matrix account on ": "Matrix-tilisi palvelimella ", "Cannot reach homeserver": "Kotipalvelinta ei voida tavoittaa", "Your %(brand)s is misconfigured": "%(brand)sin asetukset ovat pielessä", @@ -1392,6 +1467,8 @@ "Strikethrough": "Yliviivattu", "Code block": "Ohjelmakoodia", "This invite to %(roomName)s was sent to %(email)s which is not associated with your account": "Kutsu huoneeseen %(roomName)s lähetettiin osoitteeseen %(email)s, joka ei ole yhteydessä tiliisi", + "Filter": "Suodata", + "Filter rooms…": "Suodata huoneita…", "Changes the avatar of the current room": "Vaihtaa nykyisen huoneen kuvan", "Error changing power level requirement": "Virhe muutettaessa oikeustasovaatimusta", "An error occurred changing the room's power level requirements. Ensure you have sufficient permissions and try again.": "Huoneen oikeustasovaatimuksia muutettaessa tapahtui virhe. Varmista, että sinulla on riittävät oikeudet ja yritä uudelleen.", @@ -1406,6 +1483,7 @@ "Reporting this message will send its unique 'event ID' to the administrator of your homeserver. If messages in this room are encrypted, your homeserver administrator will not be able to read the message text or view any files or images.": "Tämän viestin ilmoittaminen lähettää sen yksilöllisen tapahtumatunnuksen (event ID) kotipalvelimesi ylläpitäjälle. Jos tämän huoneen viestit on salattu, kotipalvelimesi ylläpitäjä ei voi lukea viestin tekstiä tai nähdä tiedostoja tai kuvia.", "Send report": "Lähetä ilmoitus", "Report Content": "Ilmoita sisällöstä", + "Explore": "Selaa", "Preview": "Esikatsele", "View": "Näytä", "Find a room…": "Etsi huonetta…", @@ -1430,6 +1508,7 @@ "Clear cache and reload": "Tyhjennä välimuisti ja lataa uudelleen", "%(count)s unread messages including mentions.|other": "%(count)s lukematonta viestiä, sisältäen maininnat.", "%(count)s unread messages.|other": "%(count)s lukematonta viestiä.", + "Unread mentions.": "Lukemattomat maininnat.", "Show image": "Näytä kuva", "Please create a new issue on GitHub so that we can investigate this bug.": "Luo uusi issue GitHubissa, jotta voimme tutkia tätä ongelmaa.", "Close dialog": "Sulje dialogi", @@ -1444,6 +1523,7 @@ "You are about to remove %(count)s messages by %(user)s. This cannot be undone. Do you wish to continue?|one": "Olet poistamassa yhtä käyttäjän %(user)s kirjoittamaa viestiä. Tätä toimintoa ei voi kumota. Haluatko jatkaa?", "Remove %(count)s messages|one": "Poista yksi viesti", "Room %(name)s": "Huone %(name)s", + "Recent rooms": "Viimeaikaiset huoneet", "React": "Reagoi", "Frequently Used": "Usein käytetyt", "Smileys & People": "Hymiöt ja ihmiset", @@ -1656,6 +1736,7 @@ "Recent Conversations": "Viimeaikaiset keskustelut", "Direct Messages": "Yksityisviestit", "Go": "Mene", + "Lock": "Lukko", "Whether you're using %(brand)s on a device where touch is the primary input mechanism": "Käytätkö %(brand)sia laitteella, jossa kosketus on ensisijainen syöttömekanismi", "Whether you're using %(brand)s as an installed Progressive Web App": "Käytätkö %(brand)sia asennettuna PWA:na (Progressive Web App)", "Cancel entering passphrase?": "Peruuta salalauseen syöttäminen?", @@ -1761,6 +1842,8 @@ "Never send encrypted messages to unverified sessions from this session": "Älä koskaan lähetä salattuja viestejä vahvistamattomiin istuntoihin tästä istunnosta", "Never send encrypted messages to unverified sessions in this room from this session": "Älä lähetä salattuja viestejä vahvistamattomiin istuntoihin tässä huoneessa tässä istunnossa", "Order rooms by name": "Suodata huoneet nimellä", + "If you cancel now, you won't complete verifying the other user.": "Jo peruutat nyt, toista käyttäjää ei varmenneta.", + "If you cancel now, you won't complete verifying your other session.": "Jos peruutat nyt, toista istuntoasi ei varmenneta.", "Setting up keys": "Otetaan avaimet käyttöön", "Verifies a user, session, and pubkey tuple": "Varmentaa käyttäjän, istunnon ja julkiset avaimet", "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and session %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "VAROITUS: AVAIMEN VARMENTAMINEN EPÄONNISTUI! Käyttäjän %(userId)s ja laitteen %(deviceId)s istunnon allekirjoitusavain on ”%(fprint)s”, mikä ei täsmää annettuun avaimeen ”%(fingerprint)s”. Tämä voi tarkoittaa, että yhteyksiänne peukaloidaan!", @@ -1894,6 +1977,7 @@ "If you've joined lots of rooms, this might take a while": "Jos olet liittynyt moniin huoneisiin, tässä voi kestää hetken", "Click the button below to confirm adding this email address.": "Klikkaa alapuolella olevaa painiketta lisätäksesi tämän sähköpostiosoitteen.", "Click the button below to confirm adding this phone number.": "Klikkaa alapuolella olevaa painiketta lisätäksesi tämän puhelinnumeron.", + "If you cancel now, you won't complete your operation.": "Jos peruutat, toimintoa ei suoriteta loppuun.", "Review where you’re logged in": "Tarkasta missä olet sisäänkirjautuneena", "New login. Was this you?": "Uusi sisäänkirjautuminen. Olitko se sinä?", "%(name)s is requesting verification": "%(name)s pyytää varmennusta", @@ -1969,6 +2053,7 @@ "If your other sessions do not have the key for this message you will not be able to decrypt them.": "Jos muissa laitteissasi ei ole avainta tämän viestin purkamiseen, niillä istunnoilla ei voi lukea tätä viestiä.", "Encrypted by an unverified session": "Salattu varmentamattoman istunnon toimesta", "Encrypted by a deleted session": "Salattu poistetun istunnon toimesta", + "Create room": "Luo huone", "Reject & Ignore user": "Hylkää ja jätä käyttäjä huomiotta", "Start Verification": "Aloita varmennus", "Your messages are secured and only you and the recipient have the unique keys to unlock them.": "Viestisi ovat turvattu, ja vain sinulla ja vastaanottajalla on avaimet viestien lukemiseen.", @@ -2063,6 +2148,9 @@ "No recently visited rooms": "Ei hiljattain vierailtuja huoneita", "People": "Ihmiset", "Sort by": "Lajittelutapa", + "Unread rooms": "Lukemattomat huoneet", + "Always show first": "Näytä aina ensin", + "Show": "Näytä", "Leave Room": "Poistu huoneesta", "Switch to light mode": "Vaihda vaaleaan teemaan", "Switch to dark mode": "Vaihda tummaan teemaan", @@ -2082,9 +2170,39 @@ "%(senderName)s started a call": "%(senderName)s aloitti puhelun", "Waiting for answer": "Odotetaan vastausta", "%(senderName)s is calling": "%(senderName)s soittaa", + "You created the room": "Loit huoneen", + "%(senderName)s created the room": "%(senderName)s loi huoneen", + "You made the chat encrypted": "Otit salauksen käyttöön keskustelussa", + "%(senderName)s made the chat encrypted": "%(senderName)s otti salauksen käyttöön keskustelussa", + "You made history visible to new members": "Teit historiasta näkyvän uusille jäsenille", + "%(senderName)s made history visible to new members": "%(senderName)s teki historiasta näkyvän uusille jäsenille", + "You made history visible to anyone": "Teit historiasta näkyvän kaikille", + "%(senderName)s made history visible to anyone": "%(senderName)s teki historiasta näkyvän kaikille", + "You made history visible to future members": "Teit historiasta näkyvän tuleville jäsenille", + "%(senderName)s made history visible to future members": "%(senderName)s teki historiasta näkyvän tuleville jäsenille", + "You were invited": "Sinut kutsuttiin", + "%(targetName)s was invited": "%(targetName)s kutsuttiin", + "You left": "Poistuit", + "%(targetName)s left": "%(targetName)s poistui", + "You rejected the invite": "Hylkäsit kutsun", + "%(targetName)s rejected the invite": "%(targetName)s hylkäsi kutsun", + "You were banned (%(reason)s)": "Sait porttikiellon (%(reason)s)", + "%(targetName)s was banned (%(reason)s)": "%(targetName)s sai porttikiellon (%(reason)s)", + "You were banned": "Sait porttikiellon", + "%(targetName)s was banned": "%(targetName)s sai porttikiellon", + "You joined": "Liityit", + "%(targetName)s joined": "%(targetName)s liittyi", + "You changed your name": "Vaihdoit nimeäsi", + "%(targetName)s changed their name": "%(targetName)s vaihtoi nimeään", "%(senderName)s: %(message)s": "%(senderName)s: %(message)s", + "You changed the room name": "Vaihdoit huoneen nimeä", + "%(senderName)s changed the room name": "%(senderName)s vaihtoi huoneen nimeä", "%(senderName)s: %(reaction)s": "%(senderName)s: %(reaction)s", "%(senderName)s: %(stickerName)s": "%(senderName)s: %(stickerName)s", + "You invited %(targetName)s": "Kutsuit käyttäjän %(targetName)s", + "%(senderName)s invited %(targetName)s": "%(senderName)s kutsui käyttäjän %(targetName)s", + "You changed the room topic": "Vaihdoit huoneen aiheen", + "%(senderName)s changed the room topic": "%(senderName)s vaihtoi huoneen aiheen", "Use custom size": "Käytä mukautettua kokoa", "Use a more compact ‘Modern’ layout": "Käytä tiiviimpää 'modernia' asettelua", "Use a system font": "Käytä järjestelmän fonttia", @@ -2092,11 +2210,17 @@ "Message layout": "Viestiasettelu", "Compact": "Tiivis", "Modern": "Moderni", + "We’re excited to announce Riot is now Element": "Meillä on ilo ilmoittaa, että Riot on nyt Element", + "Riot is now Element!": "Riot on nyt Element!", + "Learn More": "Lue lisää", "Use default": "Käytä oletusta", "Mentions & Keywords": "Maininnat ja avainsanat", "Notification options": "Ilmoitusasetukset", "Room options": "Huoneen asetukset", "This room is public": "Tämä huone on julkinen", + "You’re already signed in and good to go here, but you can also grab the latest versions of the app on all platforms at element.io/get-started.": "Olet jo kirjautuneena eikä sinun tarvitse tehdä mitään, mutta voit myös hakea sovelluksen uusimman version kaikille alustoille osoitteesta element.io/get-started.", + "We’re excited to announce Riot is now Element!": "Meillä on ilo ilmoittaa, että Riot on nyt Element!", + "Learn more at element.io/previously-riot": "Lue lisää osoitteessa element.io/previously-riot", "Security & privacy": "Tietoturva ja -suoja", "User menu": "Käyttäjän valikko" } diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index 8345c35af7..42f9d74502 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -217,6 +217,7 @@ "You cannot place a call with yourself.": "Vous ne pouvez pas passer d'appel avec vous-même.", "You cannot place VoIP calls in this browser.": "Vous ne pouvez pas passer d'appel en Voix sur IP dans ce navigateur.", "You do not have permission to post to this room": "Vous n’avez pas la permission de poster dans ce salon", + "You have no visible notifications": "Vous n'avez pas de notification visible", "You need to be able to invite users to do that.": "Vous devez être capable d’inviter des utilisateurs pour faire ça.", "You need to be logged in.": "Vous devez être identifié.", "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Votre adresse e-mail ne semble pas être associée à un identifiant Matrix sur ce serveur d'accueil.", @@ -249,6 +250,7 @@ "Upload an avatar:": "Envoyer un avatar :", "This server does not support authentication with a phone number.": "Ce serveur ne prend pas en charge l’authentification avec un numéro de téléphone.", "An error occurred: %(error_string)s": "Une erreur est survenue : %(error_string)s", + "There are no visible files in this room": "Il n'y a pas de fichier visible dans ce salon", "Room": "Salon", "Connectivity to the server has been lost.": "La connectivité au serveur a été perdue.", "Sent messages will be stored until your connection has returned.": "Les messages envoyés seront stockés jusqu’à ce que votre connexion revienne.", @@ -345,12 +347,16 @@ "This will be your account name on the homeserver, or you can pick a different server.": "Cela sera le nom de votre compte sur le serveur d'accueil , ou vous pouvez sélectionner un autre serveur.", "If you already have a Matrix account you can log in instead.": "Si vous avez déjà un compte Matrix vous pouvez vous connecter à la place.", "Accept": "Accepter", + "Active call (%(roomName)s)": "Appel en cours (%(roomName)s)", "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Impossible de se connecter au serveur d’accueil - veuillez vérifier votre connexion, assurez-vous que le certificat SSL de votre serveur d’accueil est un certificat de confiance, et qu’aucune extension du navigateur ne bloque les requêtes.", "Close": "Fermer", "Custom": "Personnaliser", "Decline": "Refuser", "Drop File Here": "Déposer le fichier Ici", "Failed to upload profile picture!": "Échec de l'envoi de l'image de profil !", + "Incoming call from %(name)s": "Appel entrant de %(name)s", + "Incoming video call from %(name)s": "Appel vidéo entrant de %(name)s", + "Incoming voice call from %(name)s": "Appel vocal entrant de %(name)s", "No display name": "Pas de nom affiché", "Private Chat": "Discussion privée", "Public Chat": "Discussion publique", @@ -359,6 +365,7 @@ "Seen by %(userName)s at %(dateTime)s": "Vu par %(userName)s à %(dateTime)s", "Start authentication": "Commencer une authentification", "This room": "Ce salon", + "unknown caller": "appelant inconnu", "Unnamed Room": "Salon anonyme", "Username invalid: %(errMessage)s": "Nom d'utilisateur non valide : %(errMessage)s", "(~%(count)s results)|one": "(~%(count)s résultat)", @@ -571,6 +578,7 @@ "Visibility in Room List": "Visibilité dans la liste des salons", "Visible to everyone": "Visible pour tout le monde", "Only visible to community members": "Visible uniquement par les membres de la communauté", + "Community Invites": "Invitations de communauté", "Notify the whole room": "Notifier tout le salon", "Room Notification": "Notification du salon", "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Ces salons sont affichés aux membres de la communauté sur la page de la communauté. Les membres de la communauté peuvent rejoindre ces salons en cliquant dessus.", @@ -811,6 +819,7 @@ "Share Community": "Partager la communauté", "Share Room Message": "Partager le message du salon", "Link to selected message": "Lien vers le message sélectionné", + "COPY": "COPIER", "Share Message": "Partager le message", "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "Dans les salons chiffrés, comme celui-ci, l'aperçu des liens est désactivé par défaut pour s'assurer que le serveur d'accueil (où sont générés les aperçus) ne puisse pas collecter d'informations sur les liens qui apparaissent dans ce salon.", "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "Quand quelqu'un met un lien dans son message, un aperçu du lien peut être affiché afin de fournir plus d'informations sur ce lien comme le titre, la description et une image du site.", @@ -1047,6 +1056,8 @@ "Report bugs & give feedback": "Rapporter des anomalies & Donner son avis", "Update status": "Mettre à jour le statut", "Set status": "Définir le statut", + "Your Modular server": "Votre serveur Modular", + "Enter the location of your Modular homeserver. It may use your own domain name or be a subdomain of modular.im.": "Saisissez l'emplacement de votre serveur d'accueil Modular. Il peut utiliser votre nom de domaine personnel ou être un sous-domaine de modular.im.", "Server Name": "Nom du serveur", "The username field must not be blank.": "Le champ du nom d'utilisateur ne doit pas être vide.", "Username": "Nom d'utilisateur", @@ -1085,6 +1096,68 @@ "Group & filter rooms by custom tags (refresh to apply changes)": "Grouper et filtrer les salons grâce à des étiquettes personnalisées (actualiser pour appliquer les changements)", "Verify this user by confirming the following emoji appear on their screen.": "Vérifier cet utilisateur en confirmant que les émojis suivant apparaissent sur son écran.", "Unable to find a supported verification method.": "Impossible de trouver une méthode de vérification prise en charge.", + "Dog": "Chien", + "Cat": "Chat", + "Lion": "Lion", + "Horse": "Cheval", + "Unicorn": "Licorne", + "Pig": "Cochon", + "Elephant": "Éléphant", + "Rabbit": "Lapin", + "Panda": "Panda", + "Rooster": "Coq", + "Penguin": "Manchot", + "Turtle": "Tortue", + "Fish": "Poisson", + "Octopus": "Pieuvre", + "Butterfly": "Papillon", + "Flower": "Fleur", + "Tree": "Arbre", + "Cactus": "Cactus", + "Mushroom": "Champignon", + "Globe": "Terre", + "Moon": "Lune", + "Cloud": "Nuage", + "Fire": "Feu", + "Banana": "Banane", + "Apple": "Pomme", + "Strawberry": "Fraise", + "Corn": "Maïs", + "Pizza": "Pizza", + "Cake": "Gâteau", + "Heart": "Cœur", + "Smiley": "Smiley", + "Robot": "Robot", + "Hat": "Chapeau", + "Glasses": "Lunettes", + "Spanner": "Clé plate", + "Santa": "Père Noël", + "Thumbs up": "Pouce levé", + "Umbrella": "Parapluie", + "Hourglass": "Sablier", + "Clock": "Horloge", + "Gift": "Cadeau", + "Light bulb": "Ampoule", + "Book": "Livre", + "Pencil": "Crayon", + "Paperclip": "Trombone", + "Key": "Clé", + "Hammer": "Marteau", + "Telephone": "Téléphone", + "Flag": "Drapeau", + "Train": "Train", + "Bicycle": "Vélo", + "Aeroplane": "Avion", + "Rocket": "Fusée", + "Trophy": "Trophée", + "Ball": "Balle", + "Guitar": "Guitare", + "Trumpet": "Trompette", + "Bell": "Cloche", + "Anchor": "Ancre", + "Headphones": "Écouteurs", + "Folder": "Dossier", + "Pin": "Épingle", "This homeserver would like to make sure you are not a robot.": "Ce serveur d'accueil veut s'assurer que vous n'êtes pas un robot.", "Change": "Changer", "Couldn't load page": "Impossible de charger la page", @@ -1121,6 +1194,7 @@ "%(senderDisplayName)s disabled flair for %(groups)s in this room.": "%(senderDisplayName)s a désactivé le badge pour %(groups)s dans ce salon.", "%(senderDisplayName)s enabled flair for %(newGroups)s and disabled flair for %(oldGroups)s in this room.": "%(senderDisplayName)s a activé le badge pour %(newGroups)s et désactivé le badge pour %(oldGroups)s dans ce salon.", "Show read receipts sent by other users": "Afficher les accusés de lecture envoyés par les autres utilisateurs", + "Scissors": "Ciseaux", "Error updating main address": "Erreur lors de la mise à jour de l’adresse principale", "There was an error updating the room's main address. It may not be allowed by the server or a temporary failure occurred.": "Une erreur est survenue lors de la mise à jour de l’adresse principale de salon. Ce n’est peut-être pas autorisé par le serveur ou une erreur temporaire est survenue.", "Error updating flair": "Erreur lors de la mise à jour du badge", @@ -1263,6 +1337,7 @@ "Invalid base_url for m.identity_server": "base_url pour m.identity_server non valide", "Identity server URL does not appear to be a valid identity server": "L’URL du serveur d’identité ne semble pas être un serveur d’identité valide", "Show hidden events in timeline": "Afficher les évènements cachés dans l’historique", + "Your profile": "Votre profil", "Add room": "Ajouter un salon", "Edit message": "Éditer le message", "No homeserver URL provided": "Aucune URL de serveur d’accueil fournie", @@ -1421,6 +1496,9 @@ "Remove %(count)s messages|other": "Supprimer %(count)s messages", "Remove recent messages": "Supprimer les messages récents", "Send read receipts for messages (requires compatible homeserver to disable)": "Envoyer des accusés de lecture pour les messages (nécessite un serveur d’accueil compatible pour le désactiver)", + "Explore": "Explorer", + "Filter": "Filtrer", + "Filter rooms…": "Filtrer les salons…", "Preview": "Aperçu", "View": "Afficher", "Find a room…": "Trouver un salon…", @@ -1460,6 +1538,7 @@ "Clear cache and reload": "Vider le cache et recharger", "%(count)s unread messages including mentions.|other": "%(count)s messages non lus y compris les mentions.", "%(count)s unread messages.|other": "%(count)s messages non lus.", + "Unread mentions.": "Mentions non lues.", "Please create a new issue on GitHub so that we can investigate this bug.": "Veuillez créer un nouveau rapport sur GitHub afin que l’on enquête sur cette erreur.", "Missing captcha public key in homeserver configuration. Please report this to your homeserver administrator.": "Clé public du captcha manquante dans la configuration du serveur d’accueil. Veuillez le signaler à l’administrateur de votre serveur d’accueil.", "You are about to remove %(count)s messages by %(user)s. This cannot be undone. Do you wish to continue?|one": "Vous êtes sur le point de supprimer 1 message de %(user)s. Ça ne peut pas être annulé. Voulez-vous continuer ?", @@ -1494,6 +1573,7 @@ "Jump to first unread room.": "Sauter au premier salon non lu.", "Jump to first invite.": "Sauter à la première invitation.", "Room %(name)s": "Salon %(name)s", + "Recent rooms": "Salons récents", "No identity server is configured so you cannot add an email address in order to reset your password in the future.": "Aucun serveur d’identité n’est configuré donc vous ne pouvez pas ajouter une adresse e-mail afin de réinitialiser votre mot de passe dans l’avenir.", "%(count)s unread messages including mentions.|one": "1 mention non lue.", "%(count)s unread messages.|one": "1 message non lu.", @@ -1662,6 +1742,7 @@ "Suggestions": "Suggestions", "Failed to find the following users": "Impossible de trouver les utilisateurs suivants", "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s": "Les utilisateurs suivant n’existent peut-être pas ou ne sont pas valides, et ne peuvent pas être invités : %(csvNames)s", + "Lock": "Cadenas", "Restore": "Restaurer", "a few seconds ago": "il y a quelques secondes", "about a minute ago": "il y a environ une minute", @@ -1704,6 +1785,7 @@ "Set up encryption": "Configurer le chiffrement", "This room is end-to-end encrypted": "Ce salon est chiffré de bout en bout", "Everyone in this room is verified": "Tout le monde dans ce salon est vérifié", + "Invite only": "Uniquement sur invitation", "Send a reply…": "Envoyer une réponse…", "Send a message…": "Envoyer un message…", "Verify this session": "Vérifier cette session", @@ -1842,6 +1924,8 @@ "Message downloading sleep time(ms)": "Temps d’attente de téléchargement des messages (ms)", "Cancel entering passphrase?": "Annuler la saisie du mot de passe ?", "Indexed rooms:": "Salons indexés :", + "If you cancel now, you won't complete verifying the other user.": "Si vous annuler maintenant, vous ne terminerez pas la vérification de l’autre utilisateur.", + "If you cancel now, you won't complete verifying your other session.": "Si vous annulez maintenant, vous ne terminerez pas la vérification de votre autre session.", "Show typing notifications": "Afficher les notifications de saisie", "Reset cross-signing and secret storage": "Réinitialiser la signature croisée et le coffre secret", "Destroy cross-signing keys?": "Détruire les clés de signature croisée ?", @@ -2051,6 +2135,7 @@ "Syncing...": "Synchronisation…", "Signing In...": "Authentification…", "If you've joined lots of rooms, this might take a while": "Si vous avez rejoint beaucoup de salons, cela peut prendre du temps", + "If you cancel now, you won't complete your operation.": "Si vous annulez maintenant, vous ne pourrez par terminer votre opération.", "Verify other session": "Vérifier une autre session", "Unable to access secret storage. Please verify that you entered the correct recovery passphrase.": "Impossible d’accéder au coffre secret. Vérifiez que vous avez renseigné la bonne phrase secrète de récupération.", "Backup could not be decrypted with this recovery key: please verify that you entered the correct recovery key.": "La sauvegarde n’a pas pu être déchiffrée avec cette clé de récupération : vérifiez que vous avez renseigné la bonne clé de récupération.", @@ -2106,6 +2191,8 @@ "Jump to oldest unread message": "Aller au plus vieux message non lu", "Upload a file": "Envoyer un fichier", "IRC display name width": "Largeur du nom affiché IRC", + "Create room": "Créer un salon", + "Font scaling": "Mise à l’échelle de la police", "Font size": "Taille de la police", "Size must be a number": "La taille doit être un nombre", "Custom font size can only be between %(min)s pt and %(max)s pt": "La taille de police personnalisée doit être comprise entre %(min)s pt et %(max)s pt", @@ -2157,6 +2244,10 @@ "Feedback": "Commentaire", "No recently visited rooms": "Aucun salon visité récemment", "Sort by": "Trier par", + "Unread rooms": "Salons non lus", + "Always show first": "Toujours afficher en premier", + "Show": "Afficher", + "Message preview": "Aperçu de message", "List options": "Options de liste", "Show %(count)s more|other": "En afficher %(count)s de plus", "Show %(count)s more|one": "En afficher %(count)s de plus", @@ -2171,6 +2262,7 @@ "Looks good!": "Ça a l’air correct !", "Use Recovery Key or Passphrase": "Utiliser la clé ou la phrase secrète de récupération", "Use Recovery Key": "Utiliser la clé de récupération", + "Use the improved room list (will refresh to apply changes)": "Utiliser la liste de salons améliorée (actualisera pour appliquer les changements)", "Use custom size": "Utiliser une taille personnalisée", "Hey you. You're the best!": "Eh vous. Vous êtes les meilleurs !", "Message layout": "Mise en page des messages", @@ -2190,9 +2282,50 @@ "%(senderName)s started a call": "%(senderName)s a démarré un appel", "Waiting for answer": "En attente d’une réponse", "%(senderName)s is calling": "%(senderName)s appelle", + "You created the room": "Vous avez créé le salon", + "%(senderName)s created the room": "%(senderName)s a créé le salon", + "You made the chat encrypted": "Vous avez activé le chiffrement de la discussion", + "%(senderName)s made the chat encrypted": "%(senderName)s a activé le chiffrement de la discussion", + "You made history visible to new members": "Vous avez rendu l’historique visible aux nouveaux membres", + "%(senderName)s made history visible to new members": "%(senderName)s a rendu l’historique visible aux nouveaux membres", + "You made history visible to anyone": "Vous avez rendu l’historique visible à tout le monde", + "%(senderName)s made history visible to anyone": "%(senderName)s a rendu l’historique visible à tout le monde", + "You made history visible to future members": "Vous avez rendu l’historique visible aux futurs membres", + "%(senderName)s made history visible to future members": "%(senderName)s a rendu l’historique visible aux futurs membres", + "You were invited": "Vous avez été invité", + "%(targetName)s was invited": "%(targetName)s a été invité·e", + "You left": "Vous êtes parti·e", + "%(targetName)s left": "%(targetName)s est parti·e", + "You were kicked (%(reason)s)": "Vous avez été expulsé·e (%(reason)s)", + "%(targetName)s was kicked (%(reason)s)": "%(targetName)s a été expulsé·e (%(reason)s)", + "You were kicked": "Vous avez été expulsé·e", + "%(targetName)s was kicked": "%(targetName)s a été expulsé·e", + "You rejected the invite": "Vous avez rejeté l’invitation", + "%(targetName)s rejected the invite": "%(targetName)s a rejeté l’invitation", + "You were uninvited": "Votre invitation a été révoquée", + "%(targetName)s was uninvited": "L’invitation de %(targetName)s a été révoquée", + "You were banned (%(reason)s)": "Vous avez été banni·e (%(reason)s)", + "%(targetName)s was banned (%(reason)s)": "%(targetName)s a été banni·e (%(reason)s)", + "You were banned": "Vous avez été banni·e", + "%(targetName)s was banned": "%(targetName)s a été banni·e", + "You joined": "Vous avez rejoint le salon", + "%(targetName)s joined": "%(targetName)s a rejoint le salon", + "You changed your name": "Vous avez changé votre nom", + "%(targetName)s changed their name": "%(targetName)s a changé son nom", + "You changed your avatar": "Vous avez changé votre avatar", + "%(targetName)s changed their avatar": "%(targetName)s a changé son avatar", + "%(senderName)s %(emote)s": "%(senderName)s %(emote)s", "%(senderName)s: %(message)s": "%(senderName)s : %(message)s", + "You changed the room name": "Vous avez changé le nom du salon", + "%(senderName)s changed the room name": "%(senderName)s a changé le nom du salon", "%(senderName)s: %(reaction)s": "%(senderName)s : %(reaction)s", "%(senderName)s: %(stickerName)s": "%(senderName)s : %(stickerName)s", + "You uninvited %(targetName)s": "Vous avez révoqué l’invitation de %(targetName)s", + "%(senderName)s uninvited %(targetName)s": "%(senderName)s a révoqué l’invitation de %(targetName)s", + "You invited %(targetName)s": "Vous avez invité %(targetName)s", + "%(senderName)s invited %(targetName)s": "%(senderName)s a invité %(targetName)s", + "You changed the room topic": "Vous avez changé le sujet du salon", + "%(senderName)s changed the room topic": "%(senderName)s a changé le sujet du salon", "New spinner design": "Nouveau design du spinner", "Message deleted on %(date)s": "Message supprimé le %(date)s", "Wrong file type": "Mauvais type de fichier", @@ -2215,10 +2348,16 @@ "Set a Security Phrase": "Définir une phrase de sécurité", "Confirm Security Phrase": "Confirmer la phrase de sécurité", "Save your Security Key": "Sauvegarder votre clé de sécurité", + "Use your account to sign in to the latest version": "Connectez-vous à la nouvelle version", + "We’re excited to announce Riot is now Element": "Nous sommes heureux de vous annoncer que Riot est désormais Element", + "Riot is now Element!": "Riot est maintenant Element !", + "Learn More": "Plus d'infos", "Enable experimental, compact IRC style layout": "Disposition expérimentale compacte style IRC", "Incoming voice call": "Appel vocal entrant", "Incoming video call": "Appel vidéo entrant", "Incoming call": "Appel entrant", + "Make this room low priority": "Définir ce salon en priorité basse", + "Low priority rooms show up at the bottom of your room list in a dedicated section at the bottom of your room list": "Les salons de priorité basse s'affichent en bas de votre liste de salons, dans une section dédiée", "Show rooms with unread messages first": "Afficher les salons non lus en premier", "Show previews of messages": "Afficher un aperçu des messages", "Use default": "Utiliser la valeur par défaut", @@ -2230,9 +2369,13 @@ "This room is public": "Ce salon est public", "Edited at %(date)s": "Édité le %(date)s", "Click to view edits": "Cliquez pour éditer", + "Go to Element": "Aller à Element", + "We’re excited to announce Riot is now Element!": "Nous sommes heureux d'annoncer que Riot est désormais Element !", + "Learn more at element.io/previously-riot": "Plus d'infos sur element.io/previously-riot", "Search rooms": "Chercher des salons", "User menu": "Menu d'utilisateur", "%(brand)s Web": "%(brand)s Web", "%(brand)s Desktop": "%(brand)s Desktop", - "%(brand)s iOS": "%(brand)s iOS" + "%(brand)s iOS": "%(brand)s iOS", + "%(brand)s X for Android": "%(brand)s X pour Android" } diff --git a/src/i18n/strings/gl.json b/src/i18n/strings/gl.json index c3e85ba7a5..db8a8f8100 100644 --- a/src/i18n/strings/gl.json +++ b/src/i18n/strings/gl.json @@ -140,6 +140,11 @@ "Enable URL previews for this room (only affects you)": "Activar avista previa de URL nesta sala (só che afesta a ti)", "Enable URL previews by default for participants in this room": "Activar a vista previa de URL por defecto para as participantes nesta sala", "Room Colour": "Cor da sala", + "Active call (%(roomName)s)": "Chamada activa (%(roomName)s)", + "unknown caller": "interlocutora descoñecida", + "Incoming voice call from %(name)s": "Chamada de voz entrante de %(name)s", + "Incoming video call from %(name)s": "Chamada de vídeo entrante de %(name)s", + "Incoming call from %(name)s": "Chamada entrante de %(name)s", "Decline": "Rexeitar", "Accept": "Aceptar", "Error": "Fallo", @@ -248,6 +253,7 @@ "Forget room": "Esquecer sala", "Search": "Busca", "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "Non poderá desfacer este cambio xa que está a diminuír a súa autoridade, se é a única persoa con autorización na sala será imposible volver a obter privilexios.", + "Community Invites": "Convites da comunidade", "Invites": "Convites", "Favourites": "Favoritas", "Rooms": "Salas", @@ -458,6 +464,7 @@ "Name": "Nome", "You must register to use this functionality": "Debe rexistrarse para utilizar esta función", "You must join the room to see its files": "Debes unirte a sala para ver os seus ficheiros", + "There are no visible files in this room": "Non hai ficheiros visibles nesta sala", "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

HTML para a páxina da súa comunidade

\n

\n Utilice a descrición longa para presentar novos membros a comunidade, ou publicar algunha ligazón importante\n \n

\n

\n Tamén pode utilizar etiquetas 'img'\n

\n", "Add rooms to the community summary": "Engadir salas ao resumo da comunidade", "Which rooms would you like to add to this summary?": "Que salas desexa engadir a este resumo?", @@ -505,6 +512,7 @@ "Error whilst fetching joined communities": "Fallo mentres se obtiñas as comunidades unidas", "Create a new community": "Crear unha nova comunidade", "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Crea unha comunidade para agrupar usuarias e salas! Pon unha páxina de inicio personalizada para destacar o teu lugar no universo Matrix.", + "You have no visible notifications": "Non ten notificacións visibles", "%(count)s of your messages have not been sent.|other": "Algunha das súas mensaxes non foron enviadas.", "%(count)s of your messages have not been sent.|one": "A súa mensaxe non foi enviada.", "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.|other": "Reenviar todo ou bencancelar todo. Tamén pode seleccionar mensaxes individuais para reenviar ou cancelar.", @@ -804,6 +812,7 @@ "Share Community": "Compartir comunidade", "Share Room Message": "Compartir unha mensaxe da sala", "Link to selected message": "Ligazón á mensaxe escollida", + "COPY": "Copiar", "Share Message": "Compartir mensaxe", "Can't leave Server Notices room": "Non se pode saír da sala de información do servidor", "This room is used for important messages from the Homeserver, so you cannot leave it.": "Esta sala emprégase para mensaxes importantes do servidor da sala, as que non pode saír dela.", @@ -888,6 +897,9 @@ "The file '%(fileName)s' failed to upload.": "Fallou a subida do ficheiro '%(fileName)s'.", "The file '%(fileName)s' exceeds this homeserver's size limit for uploads": "O ficheiro '%(fileName)s' supera o tamaño máximo permitido polo servidor", "The server does not support the room version specified.": "O servidor non soporta a versión da sala indicada.", + "If you cancel now, you won't complete verifying the other user.": "Se cancelas agora non completarás a verificación da outra usuaria.", + "If you cancel now, you won't complete verifying your other session.": "Se cancelas agora non completarás o proceso de verificación da outra sesión.", + "If you cancel now, you won't complete your operation.": "Se cancelas agora, non completarás a operación.", "Cancel entering passphrase?": "Cancelar a escrita da frase de paso?", "Setting up keys": "Configurando as chaves", "Verify this session": "Verificar esta sesión", @@ -975,7 +987,9 @@ "Change room name": "Cambiar nome da sala", "Roles & Permissions": "Roles & Permisos", "Room %(name)s": "Sala %(name)s", + "Recent rooms": "Salas recentes", "Direct Messages": "Mensaxes Directas", + "Create room": "Crear sala", "You can use /help to list available commands. Did you mean to send this as a message?": "Podes usar axuda para ver os comandos dispoñibles. ¿Querías mellor enviar esto como unha mensaxe?", "Error updating flair": "Fallo ao actualizar popularidade", "There was an error updating the flair for this room. The server may not allow it or a temporary error occurred.": "Algo fallou cando se actualizaba a popularidade da sala. Pode ser un fallo temporal ou que o servidor non o permita.", @@ -986,6 +1000,9 @@ "To help us prevent this in future, please send us logs.": "Para axudarnos a previr esto no futuro, envíanos o rexistro.", "Help": "Axuda", "Explore Public Rooms": "Explorar Salas Públicas", + "Explore": "Explorar", + "Filter": "Filtrar", + "Filter rooms…": "Filtrar salas…", "%(creator)s created and configured the room.": "%(creator)s creou e configurou a sala.", "Explore rooms": "Explorar salas", "General failure": "Fallo xeral", @@ -1129,6 +1146,7 @@ "Upgrade your %(brand)s": "Mellora o teu %(brand)s", "A new version of %(brand)s is available!": "Hai unha nova versión de %(brand)s!", "There was an error joining the room": "Houbo un fallo ao unirte a sala", + "Font scaling": "Escalado da tipografía", "Custom user status messages": "Mensaxes de estado personalizados", "Render simple counters in room header": "Mostrar contadores simples na cabeceira da sala", "Multiple integration managers": "Múltiples xestores da integración", @@ -1219,6 +1237,70 @@ "They match": "Concordan", "They don't match": "Non concordan", "To be secure, do this in person or use a trusted way to communicate.": "Para estar seguro, fai esto en persoa ou utiliza un xeito seguro para comunicarte.", + "Dog": "Can", + "Cat": "Gato", + "Lion": "León", + "Horse": "Cabalo", + "Unicorn": "Unicorno", + "Pig": "Porco", + "Elephant": "Elefante", + "Rabbit": "Coello", + "Panda": "Panda", + "Rooster": "Galo", + "Penguin": "Pingüino", + "Turtle": "Tartaruga", + "Fish": "Peixe", + "Octopus": "Polbo", + "Butterfly": "Bolboreta", + "Flower": "Flor", + "Tree": "Árbore", + "Cactus": "Cacto", + "Mushroom": "Cogomelo", + "Globe": "Globo", + "Moon": "Lúa", + "Cloud": "Nube", + "Fire": "Lume", + "Banana": "Plátano", + "Apple": "Mazá", + "Strawberry": "Amorodo", + "Corn": "Millo", + "Pizza": "Pizza", + "Cake": "Biscoito", + "Heart": "Corazón", + "Smiley": "Sorriso", + "Robot": "Robot", + "Hat": "Sombreiro", + "Glasses": "Gafas", + "Spanner": "Ferramenta", + "Santa": "Nöel", + "Thumbs up": "Oká", + "Umbrella": "Paraugas", + "Hourglass": "Reloxo area", + "Clock": "Reloxo", + "Gift": "Agasallo", + "Light bulb": "Lámpada", + "Book": "Libro", + "Pencil": "Lápis", + "Paperclip": "Prendedor", + "Scissors": "Tesoiras", + "Lock": "Cadeado", + "Key": "Chave", + "Hammer": "Martelo", + "Telephone": "Teléfono", + "Flag": "Bandeira", + "Train": "Tren", + "Bicycle": "Bicicleta", + "Aeroplane": "Aeroplano", + "Rocket": "Foguete", + "Trophy": "Trofeo", + "Ball": "Bola", + "Guitar": "Guitarra", + "Trumpet": "Trompeta", + "Bell": "Campá", + "Anchor": "Áncora", + "Headphones": "Auriculares", + "Folder": "Cartafol", + "Pin": "Pin", "From %(deviceName)s (%(deviceId)s)": "Desde %(deviceName)s (%(deviceId)s)", "Decline (%(counter)s)": "Rexeitar (%(counter)s)", "Accept to continue:": "Acepta para continuar:", @@ -1505,6 +1587,7 @@ "Encrypted by an unverified session": "Cifrada por unha sesión non verificada", "Unencrypted": "Non cifrada", "Encrypted by a deleted session": "Cifrada por unha sesión eliminada", + "Invite only": "Só por convite", "Scroll to most recent messages": "Ir ás mensaxes máis recentes", "Close preview": "Pechar vista previa", "Emoji picker": "Selector Emoticona", @@ -1548,6 +1631,10 @@ "Sort by": "Orde por", "Activity": "Actividade", "A-Z": "A-Z", + "Unread rooms": "Salas non lidas", + "Always show first": "Mostrar sempre primeiro", + "Show": "Mostrar", + "Message preview": "Vista previa da mensaxe", "List options": "Opcións da listaxe", "Add room": "Engadir sala", "Show %(count)s more|other": "Mostrar %(count)s máis", @@ -1556,6 +1643,7 @@ "%(count)s unread messages including mentions.|one": "1 mención non lida.", "%(count)s unread messages.|other": "%(count)s mensaxe non lidas.", "%(count)s unread messages.|one": "1 mensaxe non lida.", + "Unread mentions.": "Mencións non lidas.", "Unread messages.": "Mensaxes non lidas.", "Leave Room": "Deixar a Sala", "Room options": "Opcións da Sala", @@ -1640,6 +1728,7 @@ "Almost there! Is %(displayName)s showing the same shield?": "Case feito! ¿está %(displayName)s mostrando as mesmas emoticonas?", "Yes": "Si", "Verify all users in a room to ensure it's secure.": "Verificar todas as usuarias da sala para asegurar que é segura.", + "Use the improved room list (will refresh to apply changes)": "Usa a lista de salas mellorada (actualizará para aplicar)", "Strikethrough": "Sobrescrito", "In encrypted rooms, verify all users to ensure it’s secure.": "En salas cifradas, verifica todas as usuarias para asegurar que é segura.", "You've successfully verified your device!": "Verificaches correctamente o teu dispositivo!", @@ -1954,6 +2043,8 @@ "Please review and accept all of the homeserver's policies": "Revisa e acepta todas as cláusulas do servidor", "Please review and accept the policies of this homeserver:": "Revisa e acepta as cláusulas deste servidor:", "Unable to validate homeserver/identity server": "Non se puido validar o servidor/servidor de identidade", + "Your Modular server": "O teu servidor Modular", + "Enter the location of your Modular homeserver. It may use your own domain name or be a subdomain of modular.im.": "Escribe a localización do teu servidor Modular. Podería utilizar o teu propio nome de dominio ou ser un subdominio de modular.im.", "Server Name": "Nome do Servidor", "Enter password": "Escribe contrasinal", "Nice, strong password!": "Ben, bo contrasinal!", @@ -2008,6 +2099,7 @@ "Jump to first invite.": "Vai ó primeiro convite.", "You have %(count)s unread notifications in a prior version of this room.|other": "Tes %(count)s notificacións non lidas nunha versión previa desta sala.", "You have %(count)s unread notifications in a prior version of this room.|one": "Tes %(count)s notificacións non lidas nunha versión previa desta sala.", + "Your profile": "Perfil", "Switch to light mode": "Cambiar a decorado claro", "Switch to dark mode": "Cambiar a decorado escuro", "Switch theme": "Cambiar decorado", @@ -2187,9 +2279,50 @@ "%(senderName)s started a call": "%(senderName)s iniciou unha chamada", "Waiting for answer": "Agardando resposta", "%(senderName)s is calling": "%(senderName)s está chamando", + "You created the room": "Creaches a sala", + "%(senderName)s created the room": "%(senderName)s creou a sala", + "You made the chat encrypted": "Cifraches a conversa", + "%(senderName)s made the chat encrypted": "%(senderName)s cifrou a conversa", + "You made history visible to new members": "Fixeches visible o historial para novos membros", + "%(senderName)s made history visible to new members": "%(senderName)s fixo o historial visible para novos membros", + "You made history visible to anyone": "Fixeches que o historial sexa visible para todas", + "%(senderName)s made history visible to anyone": "%(senderName)s fixo o historial visible para todas", + "You made history visible to future members": "Fixeches o historial visible para membros futuros", + "%(senderName)s made history visible to future members": "%(senderName)s fixo o historial visible para futuros membros", + "You were invited": "Foches convidada", + "%(targetName)s was invited": "%(targetName)s foi convidada", + "You left": "Saíches", + "%(targetName)s left": "%(targetName)s saíu", + "You were kicked (%(reason)s)": "Expulsáronte (%(reason)s)", + "%(targetName)s was kicked (%(reason)s)": "%(targetName)s foi expulsada (%(reason)s)", + "You were kicked": "Foches expulsada", + "%(targetName)s was kicked": "%(targetName)s foi expulsada", + "You rejected the invite": "Rexeitaches o convite", + "%(targetName)s rejected the invite": "%(targetName)s rexeitou o convite", + "You were uninvited": "Retiraronche o convite", + "%(targetName)s was uninvited": "Retirouse o convite para %(targetName)s", + "You were banned (%(reason)s)": "Foches bloqueada (%(reason)s)", + "%(targetName)s was banned (%(reason)s)": "%(targetName)s foi bloqueada (%(reason)s)", + "You were banned": "Foches bloqueada", + "%(targetName)s was banned": "%(targetName)s foi bloqueada", + "You joined": "Unícheste", + "%(targetName)s joined": "%(targetName)s uneuse", + "You changed your name": "Cambiaches o nome", + "%(targetName)s changed their name": "%(targetName)s cambiou o seu nome", + "You changed your avatar": "Cambiáchelo avatar", + "%(targetName)s changed their avatar": "%(targetName)s cambiou o seu avatar", + "%(senderName)s %(emote)s": "%(senderName)s %(emote)s", "%(senderName)s: %(message)s": "%(senderName)s: %(message)s", + "You changed the room name": "Cambiaches o nome da sala", + "%(senderName)s changed the room name": "%(senderName)s cambiou o nome da sala", "%(senderName)s: %(reaction)s": "%(senderName)s: %(reaction)s", "%(senderName)s: %(stickerName)s": "%(senderName)s: %(stickerName)s", + "You uninvited %(targetName)s": "Retiraches o convite para %(targetName)s", + "%(senderName)s uninvited %(targetName)s": "%(senderName)s retiroulle o convite a %(targetName)s", + "You invited %(targetName)s": "Convidaches a %(targetName)s", + "%(senderName)s invited %(targetName)s": "%(senderName)s convidou a %(targetName)s", + "You changed the room topic": "Cambiaches o tema da sala", + "%(senderName)s changed the room topic": "%(senderName)s cambiou o asunto da sala", "Message deleted on %(date)s": "Mensaxe eliminada o %(date)s", "Wrong file type": "Tipo de ficheiro erróneo", "Looks good!": "Pinta ben!", @@ -2212,6 +2345,10 @@ "Set a Security Phrase": "Establece a Frase de Seguridade", "Confirm Security Phrase": "Confirma a Frase de Seguridade", "Save your Security Key": "Garda a Chave de Seguridade", + "Use your account to sign in to the latest version": "Usa a túa conta para conectarte á última versión", + "We’re excited to announce Riot is now Element": "Emociónanos anunciar que Riot agora chámase Element", + "Riot is now Element!": "Riot agora é Element!", + "Learn More": "Saber máis", "Enable experimental, compact IRC style layout": "Activar o estilo experimental IRC compacto", "Unknown caller": "Descoñecido", "Incoming voice call": "Chamada de voz entrante", @@ -2221,12 +2358,19 @@ "There are advanced notifications which are not shown here.": "Existen notificacións avanzadas que non aparecen aquí.", "You might have configured them in a client other than %(brand)s. You cannot tune them in %(brand)s but they still apply.": "Deberialas ter configurado nun cliente diferente de %(brand)s. Non podes modificalas en %(brand)s pero aplícanse igualmente.", "Set the name of a font installed on your system & %(brand)s will attempt to use it.": "Escolle unha das tipografías instaladas no teu sistema e %(brand)s intentará utilizalas.", + "Make this room low priority": "Marcar a sala como de baixa prioridade", + "Low priority rooms show up at the bottom of your room list in a dedicated section at the bottom of your room list": "As salas de baixa prioridade aparecen abaixo na lista de salas, nunha sección dedicada no final da lista", "Use default": "Usar por omisión", "Mentions & Keywords": "Mencións e Palabras chave", "Notification options": "Opcións de notificación", "Favourited": "Con marca de Favorita", "Forget Room": "Esquecer sala", "If the other version of %(brand)s is still open in another tab, please close it as using %(brand)s on the same host with both lazy loading enabled and disabled simultaneously will cause issues.": "Se a outra versión de %(brand)s aínda está aberta noutra lapela, péchaa xa que usar %(brand)s no mesmo servidor con carga preguiceira activada e desactivada ao mesmo tempo causará problemas.", + "Use your account to sign in to the latest version of the app at ": "Usa a túa conta para conectarte á última versión da app en ", + "You’re already signed in and good to go here, but you can also grab the latest versions of the app on all platforms at element.io/get-started.": "Xa estás conectada e podes ir alá, pero tamén podes ir á última versión da app en tódalas plataformas en element.io/get-started.", + "Go to Element": "Ir a Element", + "We’re excited to announce Riot is now Element!": "Emociónanos comunicar que Riot agora é Element!", + "Learn more at element.io/previously-riot": "Coñece máis en element.io/previously-riot", "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use %(brand)s with an existing Matrix account on a different homeserver.": "Podes usar as opcións de servidor personalizado para conectar con outros servidores Matrix indicando un URL diferente para o servidor. Poderás usar %(brand)s cunha conta Matrix existente noutro servidor de inicio.", "Enter the location of your Element Matrix Services homeserver. It may use your own domain name or be a subdomain of element.io.": "Escribe a localización do teu servidor Element Matrix Services. Podería ser o teu propio dominio ou un subdominio de element.io.", "Search rooms": "Buscar salas", @@ -2234,6 +2378,7 @@ "%(brand)s Web": "Web %(brand)s", "%(brand)s Desktop": "%(brand)s Desktop", "%(brand)s iOS": "%(brand)s iOS", + "%(brand)s X for Android": "%(brand)s X para Android", "This room is public": "Esta é unha sala pública", "Away": "Fóra", "Enable advanced debugging for the room list": "Activar depuración avanzada para a lista da sala", diff --git a/src/i18n/strings/hi.json b/src/i18n/strings/hi.json index fc3eba0592..75b14cca18 100644 --- a/src/i18n/strings/hi.json +++ b/src/i18n/strings/hi.json @@ -202,6 +202,11 @@ "When I'm invited to a room": "जब मुझे एक रूम में आमंत्रित किया जाता है", "Call invitation": "कॉल आमंत्रण", "Messages sent by bot": "रोबॉट द्वारा भेजे गए संदेश", + "Active call (%(roomName)s)": "सक्रिय कॉल (%(roomName)s)", + "unknown caller": "अज्ञात फ़ोन करने वाला", + "Incoming voice call from %(name)s": "%(name)s से आने वाली ध्वनि कॉल", + "Incoming video call from %(name)s": "%(name)s से आने वाली वीडियो कॉल", + "Incoming call from %(name)s": "%(name)s से आने वाली कॉल", "Decline": "पतन", "Accept": "स्वीकार", "Error": "त्रुटि", @@ -407,6 +412,68 @@ "Verify this user by confirming the following emoji appear on their screen.": "इस उपयोगकर्ता की पुष्टि करें कि उनकी स्क्रीन पर निम्नलिखित इमोजी दिखाई देते हैं।", "Verify this user by confirming the following number appears on their screen.": "निम्न स्क्रीन पर दिखाई देने वाली संख्या की पुष्टि करके इस उपयोगकर्ता को सत्यापित करें।", "Unable to find a supported verification method.": "समर्थित सत्यापन विधि खोजने में असमर्थ।", + "Dog": "कुत्ता", + "Cat": "बिल्ली", + "Lion": "शेर", + "Horse": "घोड़ा", + "Unicorn": "यूनिकॉर्न", + "Pig": "शूकर", + "Elephant": "हाथी", + "Rabbit": "खरगोश", + "Panda": "पांडा", + "Rooster": "मुरग़ा", + "Penguin": "पेंगुइन", + "Turtle": "कछुए", + "Fish": "मछली", + "Octopus": "ऑक्टोपस", + "Butterfly": "तितली", + "Flower": "फूल", + "Tree": "वृक्ष", + "Cactus": "कैक्टस", + "Mushroom": "मशरूम", + "Globe": "ग्लोब", + "Moon": "चांद", + "Cloud": "मेघ", + "Fire": "आग", + "Banana": "केला", + "Apple": "सेब", + "Strawberry": "स्ट्रॉबेरी", + "Corn": "मक्का", + "Pizza": "पिज़्ज़ा", + "Cake": "केक", + "Heart": "दिल", + "Smiley": "स्माइली", + "Robot": "रोबोट", + "Hat": "टोपी", + "Glasses": "चश्मा", + "Spanner": "नापनेवाला", + "Santa": "सांता", + "Thumbs up": "थम्स अप", + "Umbrella": "छाता", + "Hourglass": "समय सूचक", + "Clock": "घड़ी", + "Gift": "उपहार", + "Light bulb": "लाइट बल्ब", + "Book": "पुस्तक", + "Pencil": "पेंसिल", + "Paperclip": "पेपर क्लिप", + "Key": "चाबी", + "Hammer": "हथौड़ा", + "Telephone": "टेलीफोन", + "Flag": "झंडा", + "Train": "रेल गाडी", + "Bicycle": "साइकिल", + "Aeroplane": "विमान", + "Rocket": "राकेट", + "Trophy": "ट्रॉफी", + "Ball": "गेंद", + "Guitar": "गिटार", + "Trumpet": "तुरही", + "Bell": "घंटी", + "Anchor": "लंगर", + "Headphones": "हेडफोन", + "Folder": "फ़ोल्डर", + "Pin": "पिन", "Unable to remove contact information": "संपर्क जानकारी निकालने में असमर्थ", "Yes": "हाँ", "No": "नहीं", @@ -479,6 +546,7 @@ "%(senderDisplayName)s disabled flair for %(groups)s in this room.": "%(senderDisplayName)s ने फ्लेयर %(groups)s के लिए अक्षम कर दिया।", "%(senderDisplayName)s enabled flair for %(newGroups)s and disabled flair for %(oldGroups)s in this room.": "%(senderDisplayName)s ने इस कमरे में %(newGroups)s के लिए फ्लेयर सक्षम किया और %(oldGroups)s के लिए फ्लेयर अक्षम किया।", "Show read receipts sent by other users": "अन्य उपयोगकर्ताओं द्वारा भेजी गई रसीदें दिखाएं", + "Scissors": "कैंची", "Timeline": "समयसीमा", "Room list": "कक्ष सूचि", "Autocomplete delay (ms)": "स्वत: पूर्ण विलंब (ms)", diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index 20559f6917..209c237c0c 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -19,6 +19,7 @@ "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s elfogadta a meghívást ide: %(displayName)s.", "Account": "Fiók", "Access Token:": "Elérési kulcs:", + "Active call (%(roomName)s)": "Hívás folyamatban (%(roomName)s)", "Add": "Hozzáad", "Add a topic": "Téma megadása", "Admin": "Admin", @@ -132,6 +133,9 @@ "I have verified my email address": "Ellenőriztem az e-mail címemet", "Import": "Betöltés", "Import E2E room keys": "E2E szoba kulcsok betöltése", + "Incoming call from %(name)s": "Beérkező hivás: %(name)s", + "Incoming video call from %(name)s": "Bejövő videóhívás: %(name)s", + "Incoming voice call from %(name)s": "Bejövő hívás: %(name)s", "Incorrect username and/or password.": "Helytelen felhasználó és/vagy jelszó.", "Incorrect verification code": "Hibás azonosítási kód", "Invalid Email Address": "Hibás e-mail cím", @@ -246,6 +250,7 @@ "%(senderName)s unbanned %(targetName)s.": "%(senderName)s visszaengedte %(targetName)s felhasználót.", "Unable to capture screen": "A képernyő felvétele sikertelen", "Unable to enable Notifications": "Az értesítések engedélyezése sikertelen", + "unknown caller": "ismeretlen hívó", "Unmute": "Némítás kikapcsolása", "Unnamed Room": "Névtelen szoba", "Uploading %(filename)s and %(count)s others|zero": "%(filename)s feltöltése", @@ -279,6 +284,7 @@ "You do not have permission to post to this room": "Nincs jogod írni ebben a szobában", "You have disabled URL previews by default.": "Az URL előnézet alapból tiltva van.", "You have enabled URL previews by default.": "Az URL előnézet alapból engedélyezve van.", + "You have no visible notifications": "Nincsenek látható értesítéseid", "You must register to use this functionality": "Regisztrálnod kell hogy ezt használhasd", "You need to be able to invite users to do that.": "Hogy ezt tehesd, meg kell tudnod hívni felhasználókat.", "You need to be logged in.": "Be kell jelentkezz.", @@ -312,6 +318,7 @@ "Upload an avatar:": "Avatar kép feltöltése:", "This server does not support authentication with a phone number.": "Ez a szerver nem támogatja a telefonszámmal való azonosítást.", "An error occurred: %(error_string)s": "Hiba történt: %(error_string)s", + "There are no visible files in this room": "Ebben a szobában láthatólag nincsenek fájlok", "Room": "Szoba", "Connectivity to the server has been lost.": "A szerverrel a kapcsolat megszakadt.", "Sent messages will be stored until your connection has returned.": "Az elküldött üzenetek addig lesznek tárolva amíg a kapcsolatod újra elérhető lesz.", @@ -571,6 +578,7 @@ "Visibility in Room List": "Láthatóság a szoba listában", "Visible to everyone": "Mindenki számára látható", "Only visible to community members": "Csak a közösség számára látható", + "Community Invites": "Közösségi meghívók", "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

HTML a közösségi oldalhoz

\n

\n Használj hosszú leírást az tagok közösségbe való bemutatásához vagy terjessz\n hasznos linkeket\n

\n

\n Még 'img' tagokat is használhatsz\n

\n", "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Ezek a szobák megjelennek a közösség tagjainak a közösségi oldalon. A közösség tagjai kattintással csatlakozhatnak a szobákhoz.", "Your community hasn't got a Long Description, a HTML page to show to community members.
Click here to open settings and give it one!": "A közösségednek nincs bő leírása, HTML oldala ami megjelenik a közösség tagjainak.
A létrehozáshoz kattints ide!", @@ -811,6 +819,7 @@ "Share Community": "Közösség megosztás", "Share Room Message": "Szoba üzenet megosztás", "Link to selected message": "Hivatkozás a kijelölt üzenetre", + "COPY": "Másol", "Share Message": "Üzenet megosztása", "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "Az olyan titkosított szobákban, mint ez is, az URL előnézet alapértelmezetten ki van kapcsolva, hogy biztosított legyen, hogy a Matrix szerver (ahol az előnézet készül) ne tudjon információt gyűjteni arról, hogy milyen linkeket látsz ebben a szobában.", "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "Ha valaki URL linket helyez az üzenetébe, lehetőség van egy előnézet megjelenítésére amivel további információt kaphatunk a linkről, mint cím, leírás és a weboldal képe.", @@ -1046,6 +1055,8 @@ "Go back": "Vissza", "Update status": "Állapot frissítése", "Set status": "Állapot beállítása", + "Your Modular server": "A te Modular servered", + "Enter the location of your Modular homeserver. It may use your own domain name or be a subdomain of modular.im.": "Add meg a Modular Matrix szerveredet. Ami vagy saját domaint használ vagy a modular.im aldomainját.", "Server Name": "Szerver neve", "The username field must not be blank.": "A felhasználói név mező nem lehet üres.", "Username": "Felhasználói név", @@ -1085,6 +1096,68 @@ "Group & filter rooms by custom tags (refresh to apply changes)": "Szobák csoportosítása és szűrése egyedi címkékkel (frissíts, hogy a változások érvényre jussanak)", "Verify this user by confirming the following emoji appear on their screen.": "Hitelesítheted a felhasználót, ha megerősíted, hogy az alábbi emodzsi az ami megjelent a képernyőjén.", "Unable to find a supported verification method.": "Nem található támogatott hitelesítési eljárás.", + "Dog": "Kutya", + "Cat": "Macska", + "Lion": "Oroszlán", + "Horse": "Ló", + "Unicorn": "Egyszarvú", + "Pig": "Disznó", + "Elephant": "Elefánt", + "Rabbit": "Nyúl", + "Panda": "Panda", + "Rooster": "Kakas", + "Penguin": "Pingvin", + "Turtle": "Teknős", + "Fish": "Hal", + "Octopus": "Polip", + "Butterfly": "Pillangó", + "Flower": "Virág", + "Tree": "Fa", + "Cactus": "Kaktusz", + "Mushroom": "Gomba", + "Globe": "Földgömb", + "Moon": "Hold", + "Cloud": "Felhő", + "Fire": "Tűz", + "Banana": "Banán", + "Apple": "Alma", + "Strawberry": "Eper", + "Corn": "Kukorica", + "Pizza": "Pizza", + "Cake": "Sütemény", + "Heart": "Szív", + "Smiley": "Smiley", + "Robot": "Robot", + "Hat": "Kalap", + "Glasses": "Szemüveg", + "Spanner": "Csavarhúzó", + "Santa": "Télapó", + "Thumbs up": "Hüvelykujj fel", + "Umbrella": "Esernyő", + "Hourglass": "Homokóra", + "Clock": "Óra", + "Gift": "Ajándék", + "Light bulb": "Égő", + "Book": "Könyv", + "Pencil": "Toll", + "Paperclip": "Gémkapocs", + "Key": "Kulcs", + "Hammer": "Kalapács", + "Telephone": "Telefon", + "Flag": "Zászló", + "Train": "Vonat", + "Bicycle": "Kerékpár", + "Aeroplane": "Repülőgép", + "Rocket": "Rakéta", + "Trophy": "Kupa", + "Ball": "Labda", + "Guitar": "Gitár", + "Trumpet": "Trombita", + "Bell": "Harang", + "Anchor": "Horgony", + "Headphones": "Fejhallgató", + "Folder": "Dosszié", + "Pin": "Gombostű", "This homeserver would like to make sure you are not a robot.": "A Matrix szerver meg kíván győződni arról, hogy nem vagy robot.", "Change": "Változtat", "Couldn't load page": "Az oldal nem tölthető be", @@ -1121,6 +1194,7 @@ "%(senderDisplayName)s disabled flair for %(groups)s in this room.": "%(senderDisplayName)s letiltotta a kitűzőket ebben a szobában az alábbi közösséghez: %(groups)s.", "%(senderDisplayName)s enabled flair for %(newGroups)s and disabled flair for %(oldGroups)s in this room.": "%(senderDisplayName)s engedélyezte a kitűzőket ebben a szobában az alábbi közösséghez: %(newGroups)s és letiltotta ehhez a közösséghez: %(oldGroups)s.", "Show read receipts sent by other users": "Mások által küldött olvasási visszajelzések mutatása", + "Scissors": "Ollók", "Error updating main address": "Az elsődleges cím frissítése sikertelen", "There was an error updating the room's main address. It may not be allowed by the server or a temporary failure occurred.": "A szoba elsődleges címének frissítésénél hiba történt. Vagy nincs engedélyezve a szerveren vagy átmeneti hiba történt.", "Error updating flair": "Kitűző frissítése sikertelen", @@ -1264,6 +1338,7 @@ "edited": "szerkesztve", "Show hidden events in timeline": "Rejtett események megmutatása az idővonalon", "Add room": "Szoba hozzáadása", + "Your profile": "Profilod", "No homeserver URL provided": "Hiányzó matrix szerver URL", "Unexpected error resolving homeserver configuration": "A matrix szerver konfiguráció betöltésekor ismeretlen hiba lépett fel", "Edit message": "Üzenet szerkesztése", @@ -1421,6 +1496,9 @@ "Error changing power level requirement": "A szükséges hozzáférési szint változtatás nem sikerült", "An error occurred changing the room's power level requirements. Ensure you have sufficient permissions and try again.": "A szoba szükséges hozzáférési szint változtatásakor hiba történt. Ellenőrizd, hogy megvan hozzá a megfelelő jogosultságod és próbáld újra.", "Send read receipts for messages (requires compatible homeserver to disable)": "Olvasás visszajelzés küldése üzenetekhez (a tiltáshoz kompatibilis matrix szerverre van szükség)", + "Explore": "Felderít", + "Filter": "Szűrés", + "Filter rooms…": "Szobák szűrése…", "Preview": "Előnézet", "View": "Nézet", "Find a room…": "Szoba keresése…", @@ -1452,6 +1530,7 @@ "Clear cache and reload": "Gyorsítótár ürítése és újratöltés", "%(count)s unread messages including mentions.|other": "%(count)s olvasatlan üzenet megemlítéssel.", "%(count)s unread messages.|other": "%(count)s olvasatlan üzenet.", + "Unread mentions.": "Olvasatlan megemlítés.", "Show image": "Képek megmutatása", "Please create a new issue on GitHub so that we can investigate this bug.": "Ahhoz hogy a hibát megvizsgálhassuk kérlek készíts egy új hibajegyet a GitHubon.", "To continue you need to accept the terms of this service.": "A folytatáshoz el kell fogadnod a felhasználási feltételeket.", @@ -1494,6 +1573,7 @@ "Jump to first unread room.": "Az első olvasatlan szobába ugrás.", "Jump to first invite.": "Az első meghívóra ugrás.", "Room %(name)s": "Szoba: %(name)s", + "Recent rooms": "Legutóbbi szobák", "No identity server is configured so you cannot add an email address in order to reset your password in the future.": "Azonosítási szerver nincs beállítva, így nem tudsz hozzáadni e-mail címet amivel vissza lehetne állítani a jelszót a későbbiekben.", "%(count)s unread messages including mentions.|one": "1 olvasatlan megemlítés.", "%(count)s unread messages.|one": "1 olvasatlan üzenet.", @@ -1662,6 +1742,7 @@ "Suggestions": "Javaslatok", "Failed to find the following users": "Az alábbi felhasználók nem találhatók", "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s": "Az alábbi felhasználók nem léteznek vagy hibásan vannak megadva és nem lehet őket meghívni: %(csvNames)s", + "Lock": "Zár", "a few seconds ago": "néhány másodperce", "about a minute ago": "percekkel ezelőtt", "%(num)s minutes ago": "%(num)s perccel ezelőtt", @@ -1699,6 +1780,7 @@ "Send as message": "Üzenet küldése", "This room is end-to-end encrypted": "Ez a szoba végpontok közötti titkosítást használ", "Everyone in this room is verified": "A szobába mindenki ellenőrizve van", + "Invite only": "Csak meghívóval", "Send a reply…": "Válasz küldése…", "Send a message…": "Üzenet küldése…", "Reject & Ignore user": "Felhasználó elutasítása és figyelmen kívül hagyása", @@ -1842,6 +1924,8 @@ "If you did this accidentally, you can setup Secure Messages on this session which will re-encrypt this session's message history with a new recovery method.": "Ha véletlenül tetted, beállíthatod a Biztonságos Üzeneteket ezen a munkameneten ami újra titkosítja a régi üzeneteket az visszaállítási eljárással.", "Indexed rooms:": "Indexált szobák:", "Message downloading sleep time(ms)": "Üzenet letöltés alvási idő (ms)", + "If you cancel now, you won't complete verifying the other user.": "A másik felhasználó ellenőrzését nem fejezed be, ha ezt most megszakítod.", + "If you cancel now, you won't complete verifying your other session.": "A másik munkameneted ellenőrzését nem fejezed be, ha ezt most megszakítod.", "Show typing notifications": "Gépelés visszajelzés megjelenítése", "Verify this session by completing one of the following:": "Ellenőrizd ezt a munkamenetet az alábbiak egyikével:", "Scan this unique code": "Ennek az egyedi kódnak a beolvasása", @@ -2038,6 +2122,7 @@ "Click the button below to confirm adding this phone number.": "Az telefonszám hozzáadásának megerősítéséhez kattints a gombra lent.", "Confirm adding this email address by using Single Sign On to prove your identity.": "Erősítsd meg, hogy az egyszeri bejelentkezésnél a személyazonosságod bizonyításaként használt e-mail címet hozzáadod.", "Confirm adding this phone number by using Single Sign On to prove your identity.": "Erősítsd meg, hogy az egyszeri bejelentkezésnél a személyazonosságod bizonyításaként használt telefonszámot hozzáadod.", + "If you cancel now, you won't complete your operation.": "A műveletet nem fejezed be, ha ezt most megszakítod.", "Failed to set topic": "A téma beállítása sikertelen", "Command failed": "A parancs sikertelen", "Could not find user in room": "A felhasználó nem található a szobában", @@ -2105,6 +2190,7 @@ "Room name or address": "A szoba neve vagy címe", "Joins room with given address": "Megadott címmel csatlakozik a szobához", "Unrecognised room address:": "Ismeretlen szoba cím:", + "Font scaling": "Betű nagyítás", "Font size": "Betűméret", "IRC display name width": "IRC megjelenítési név szélessége", "Size must be a number": "A méretnek számnak kell lennie", @@ -2127,6 +2213,7 @@ "Please verify the room ID or address and try again.": "Kérlek ellenőrizd a szoba azonosítót vagy címet és próbáld újra.", "Room ID or address of ban list": "Tiltó lista szoba azonosító vagy cím", "To link to this room, please add an address.": "Hogy linkelhess egy szobához, adj hozzá egy címet.", + "Create room": "Szoba létrehozása", "Error creating address": "Cím beállítási hiba", "There was an error creating that address. It may not be allowed by the server or a temporary failure occurred.": "A cím beállításánál hiba történt. Vagy nincs engedélyezve a szerveren vagy átmeneti hiba történt.", "You don't have permission to delete the address.": "A cím törléséhez nincs jogosultságod.", @@ -2148,6 +2235,10 @@ "No recently visited rooms": "Nincsenek nemrégiben meglátogatott szobák", "People": "Emberek", "Sort by": "Rendezve:", + "Unread rooms": "Olvasatlan szobák", + "Always show first": "Mindig az elsőt mutatja", + "Show": "Mutat", + "Message preview": "Üzenet előnézet", "List options": "Lista beállítások", "Show %(count)s more|other": "Még %(count)s megjelenítése", "Show %(count)s more|one": "Még %(count)s megjelenítése", @@ -2167,6 +2258,7 @@ "Looks good!": "Jól néz ki!", "Use Recovery Key or Passphrase": "Használd a visszaállítási kulcsot vagy jelmondatot", "Use Recovery Key": "Használd a Visszaállítási Kulcsot", + "Use the improved room list (will refresh to apply changes)": "Használd a fejlesztett szoba listát (a változások életbe lépéséhez újra fog tölteni)", "Use custom size": "Egyedi méret használata", "Use a system font": "Rendszer betűtípus használata", "System font name": "Rendszer betűtípus neve", @@ -2185,9 +2277,50 @@ "%(senderName)s started a call": "%(senderName)s hívást kezdeményezett", "Waiting for answer": "Válaszra várakozás", "%(senderName)s is calling": "%(senderName)s hív", + "You created the room": "Létrehoztál egy szobát", + "%(senderName)s created the room": "%(senderName)s létrehozott egy szobát", + "You made the chat encrypted": "A beszélgetést titkosítottá tetted", + "%(senderName)s made the chat encrypted": "%(senderName)s titkosítottá tette a beszélgetést", + "You made history visible to new members": "A régi beszélgetéseket láthatóvá tetted az új tagok számára", + "%(senderName)s made history visible to new members": "%(senderName)s a régi beszélgetéseket láthatóvá tette az új tagok számára", + "You made history visible to anyone": "A régi beszélgetéseket láthatóvá tette mindenki számára", + "%(senderName)s made history visible to anyone": "%(senderName)s a régi beszélgetéseket láthatóvá tette mindenki számára", + "You made history visible to future members": "A régi beszélgetéseket láthatóvá tetted a leendő tagok számára", + "%(senderName)s made history visible to future members": "%(senderName)s a régi beszélgetéseket láthatóvá tette a leendő tagok számára", + "You were invited": "Meghívtak", + "%(targetName)s was invited": "Meghívták őt: %(targetName)s", + "You left": "Távoztál", + "%(targetName)s left": "%(targetName)s távozott", + "You were kicked (%(reason)s)": "Kirúgtak (%(reason)s)", + "%(targetName)s was kicked (%(reason)s)": "Kirúgták őt: %(targetName)s (%(reason)s)", + "You were kicked": "Kirúgtak", + "%(targetName)s was kicked": "Kirúgták őt: %(targetName)s", + "You rejected the invite": "A meghívót elutasítottad", + "%(targetName)s rejected the invite": "%(targetName)s elutasította a meghívót", + "You were uninvited": "A meghívódat visszavonták", + "%(targetName)s was uninvited": "A meghívóját visszavonták neki: %(targetName)s", + "You were banned (%(reason)s)": "Kitiltottak (%(reason)s)", + "%(targetName)s was banned (%(reason)s)": "Kitiltották őt: %(targetName)s (%(reason)s)", + "You were banned": "Kitiltottak", + "%(targetName)s was banned": "Kitiltották őt: %(targetName)s", + "You joined": "Beléptél", + "%(targetName)s joined": "%(targetName)s belépett", + "You changed your name": "A neved megváltoztattad", + "%(targetName)s changed their name": "%(targetName)s megváltoztatta a nevét", + "You changed your avatar": "A profilképedet megváltoztattad", + "%(targetName)s changed their avatar": "%(targetName)s megváltoztatta a profilképét", + "%(senderName)s %(emote)s": "%(senderName)s %(emote)s", "%(senderName)s: %(message)s": "%(senderName)s: %(message)s", + "You changed the room name": "A szoba nevét megváltoztattad", + "%(senderName)s changed the room name": "%(senderName)s megváltoztatta a szoba nevét", "%(senderName)s: %(reaction)s": "%(senderName)s: %(reaction)s", "%(senderName)s: %(stickerName)s": "%(senderName)s: %(stickerName)s", + "You uninvited %(targetName)s": "A meghívóját visszavontad neki: %(targetName)s", + "%(senderName)s uninvited %(targetName)s": "%(senderName)s visszavonta a meghívóját neki: %(targetName)s", + "You invited %(targetName)s": "Meghívtad őt: %(targetName)s", + "%(senderName)s invited %(targetName)s": "%(senderName)s meghívta őt: %(targetName)s", + "You changed the room topic": "A szoba témáját megváltoztattad", + "%(senderName)s changed the room topic": "%(senderName)s megváltoztatta a szoba témáját", "New spinner design": "Új várakozási animáció", "Use a more compact ‘Modern’ layout": "Egyszerűbb 'Modern' kinézet használata", "Message deleted on %(date)s": "Az üzenetet ekkor törölték: %(date)s", @@ -2211,6 +2344,10 @@ "Set a Security Phrase": "Biztonsági Jelmondat beállítása", "Confirm Security Phrase": "Biztonsági Jelmondat megerősítése", "Save your Security Key": "Ments el a Biztonsági Kulcsodat", + "Use your account to sign in to the latest version": "A legutolsó verzióba való bejelentkezéshez használd a fiókodat", + "We’re excited to announce Riot is now Element": "Izgatottan jelentjük, hogy a Riot mostantól Element", + "Riot is now Element!": "Riot mostantól Element!", + "Learn More": "Tudj meg többet", "Enable experimental, compact IRC style layout": "Egyszerű (kísérleti) IRC stílusú kinézet engedélyezése", "Unknown caller": "Ismeretlen hívó", "Incoming voice call": "Bejövő hanghívás", @@ -2218,16 +2355,22 @@ "Incoming call": "Bejövő hívás", "There are advanced notifications which are not shown here.": "Vannak haladó értesítési beállítások amik itt nem jelennek meg.", "Appearance Settings only affect this %(brand)s session.": "A megjelenítési beállítások csak erre az %(brand)s munkamenetre lesznek érvényesek.", + "Make this room low priority": "Ez a szoba legyen alacsony prioritású", "Use default": "Alapértelmezett használata", "Mentions & Keywords": "Megemlítések és kulcsszavak", "Notification options": "Értesítési beállítások", "Favourited": "Kedvencek", "Forget Room": "Szoba elfelejtése", + "Use your account to sign in to the latest version of the app at ": "Az alkalmazás legutolsó verzióba való bejelentkezéshez itt használd a fiókodat", + "Go to Element": "Irány az Element", + "We’re excited to announce Riot is now Element!": "Izgatottan jelentjük, hogy a Riot mostantól Element!", + "Learn more at element.io/previously-riot": "Tudj meg többet: element.io/previously-riot", "Search rooms": "Szobák keresése", "User menu": "Felhasználói menü", "%(brand)s Web": "%(brand)s Web", "%(brand)s Desktop": "Asztali %(brand)s", "%(brand)s iOS": "%(brand)s iOS", + "%(brand)s X for Android": "%(brand)s X Android", "This room is public": "Ez egy nyilvános szoba", "Away": "Távol", "Are you sure you want to cancel entering passphrase?": "Biztos vagy benne, hogy megszakítod a jelmondat bevitelét?", @@ -2236,11 +2379,13 @@ "You might have configured them in a client other than %(brand)s. You cannot tune them in %(brand)s but they still apply.": "Valószínűleg egy %(brand)s klienstől eltérő programmal konfiguráltad. %(brand)s kliensben nem tudod módosítani de attól még érvényesek.", "Set the name of a font installed on your system & %(brand)s will attempt to use it.": "Add meg a rendszer által használt font nevét és %(brand)s megpróbálja majd azt használni.", "Add users and servers you want to ignore here. Use asterisks to have %(brand)s match any characters. For example, @bot:* would ignore all users that have the name 'bot' on any server.": "A figyelmen kívül hagyandó felhasználókat és szervereket itt add meg. %(brand)s kliensben használj csillagot hogy a helyén minden karakterre illeszkedjen a kifejezés. Például: @bot:* figyelmen kívül fog hagyni minden „bot” nevű felhasználót bármely szerverről.", + "Low priority rooms show up at the bottom of your room list in a dedicated section at the bottom of your room list": "Az alacsony prioritású szobák egy külön helyen a szobalista alján fognak megjelenni", "Custom Tag": "Egyedi címke", "Show rooms with unread messages first": "Olvasatlan üzeneteket tartalmazó szobák megjelenítése elől", "Show previews of messages": "Üzenet előnézet megjelenítése", "Edited at %(date)s": "Szerkesztve ekkor: %(date)s", "Click to view edits": "A szerkesztések megtekintéséhez kattints", + "You’re already signed in and good to go here, but you can also grab the latest versions of the app on all platforms at element.io/get-started.": "Már be vagy jelentkezve és ez rendben van, de minden platformon az alkalmazás legfrissebb verziójának beszerzéséhez látogass el ide: element.io/get-started.", "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use %(brand)s with an existing Matrix account on a different homeserver.": "Használhatod a más szerver opciót, hogy egy másik matrix szerverre jelentkezz be amihez megadod a szerver url címét. Ezzel használhatod %(brand)s klienst egy már létező Matrix fiókkal egy másik matrix szerveren.", "Enter the location of your Element Matrix Services homeserver. It may use your own domain name or be a subdomain of element.io.": "Add meg az Element Matrix Services matrix szerveredet. Használhatod a saját domain-edet vagy az element.io al-domain-jét.", "* %(senderName)s %(emote)s": "* %(senderName)s %(emote)s", diff --git a/src/i18n/strings/id.json b/src/i18n/strings/id.json index 85888a9b17..2de350bae3 100644 --- a/src/i18n/strings/id.json +++ b/src/i18n/strings/id.json @@ -105,6 +105,7 @@ "%(targetName)s accepted an invitation.": "%(targetName)s telah menerima undangan.", "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s menerima undangan untuk %(displayName)s.", "Access Token:": "Token Akses:", + "Active call (%(roomName)s)": "Panggilan aktif (%(roomName)s)", "Admin": "Admin", "Admin Tools": "Peralatan Admin", "No Webcams detected": "Tidak ada Webcam terdeteksi", diff --git a/src/i18n/strings/is.json b/src/i18n/strings/is.json index 7e9faccdc1..6f561331f6 100644 --- a/src/i18n/strings/is.json +++ b/src/i18n/strings/is.json @@ -73,6 +73,9 @@ "When I'm invited to a room": "Þegar mér er boðið á spjallrás", "Call invitation": "Boð um þátttöku", "Messages sent by bot": "Skilaboð send af vélmennum", + "unknown caller": "Óþekktur símnotandi", + "Incoming voice call from %(name)s": "Innhringing raddsamtals frá %(name)s", + "Incoming video call from %(name)s": "Innhringing myndsamtals frá %(name)s", "Decline": "Hafna", "Accept": "Samþykkja", "Error": "Villa", diff --git a/src/i18n/strings/it.json b/src/i18n/strings/it.json index b5fba31100..d86070018b 100644 --- a/src/i18n/strings/it.json +++ b/src/i18n/strings/it.json @@ -191,6 +191,11 @@ "Enable URL previews for this room (only affects you)": "Attiva le anteprime URL in questa stanza (riguarda solo te)", "Enable URL previews by default for participants in this room": "Attiva le anteprime URL in modo predefinito per i partecipanti in questa stanza", "Room Colour": "Colore della stanza", + "Active call (%(roomName)s)": "Chiamata attiva (%(roomName)s)", + "unknown caller": "Chiamante sconosciuto", + "Incoming voice call from %(name)s": "Telefonata in arrivo da %(name)s", + "Incoming video call from %(name)s": "Videochiamata in arrivo da %(name)s", + "Incoming call from %(name)s": "Chiamata in arrivo da %(name)s", "Decline": "Rifiuta", "Accept": "Accetta", "Incorrect verification code": "Codice di verifica sbagliato", @@ -283,6 +288,7 @@ "Join Room": "Entra nella stanza", "Upload avatar": "Invia avatar", "Forget room": "Dimentica la stanza", + "Community Invites": "Inviti della comunità", "Invites": "Inviti", "Favourites": "Preferiti", "Low priority": "Bassa priorità", @@ -484,6 +490,7 @@ "Name": "Nome", "You must register to use this functionality": "Devi registrarti per usare questa funzionalità", "You must join the room to see its files": "Devi entrare nella stanza per vederne i file", + "There are no visible files in this room": "Non ci sono file visibili in questa stanza", "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

HTML per la pagina della tua comunità

\n

\n Usa la descrizione estesa per introdurre i nuovi membri alla comunità, o distribuisci\n alcuni link importanti\n

\n

\n Puoi anche usare i tag 'img'\n

\n", "Add rooms to the community summary": "Aggiungi stanze nel sommario della comunità", "Which rooms would you like to add to this summary?": "Quali stanze vorresti aggiungere a questo sommario?", @@ -534,6 +541,7 @@ "Error whilst fetching joined communities": "Errore nella rilevazione delle comunità a cui ti sei unito", "Create a new community": "Crea una nuova comunità", "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Crea una comunità per raggruppare utenti e stanze! Crea una pagina iniziale personalizzata per stabilire il tuo spazio nell'universo di Matrix.", + "You have no visible notifications": "Non hai alcuna notifica visibile", "%(count)s of your messages have not been sent.|other": "Alcuni dei tuoi messaggi non sono stati inviati.", "%(count)s of your messages have not been sent.|one": "Il tuo messaggio non è stato inviato.", "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.|other": "Reinvia tutti o annulla tutti adesso. Puoi anche selezionare i singoli messaggi da reinviare o annullare.", @@ -809,6 +817,7 @@ "Share Community": "Condividi comunità", "Share Room Message": "Condividi messaggio stanza", "Link to selected message": "Link al messaggio selezionato", + "COPY": "COPIA", "Share Message": "Condividi messaggio", "No Audio Outputs detected": "Nessuna uscita audio rilevata", "Audio Output": "Uscita audio", @@ -1005,6 +1014,69 @@ "Verify this user by confirming the following emoji appear on their screen.": "Verifica questo utente confermando che la seguente emoji appare sul suo schermo.", "Verify this user by confirming the following number appears on their screen.": "Verifica questo utente confermando che il seguente numero appare sul suo schermo.", "Unable to find a supported verification method.": "Impossibile trovare un metodo di verifica supportato.", + "Dog": "Cane", + "Cat": "Gatto", + "Lion": "Leone", + "Horse": "Cavallo", + "Unicorn": "Unicorno", + "Pig": "Maiale", + "Elephant": "Elefante", + "Rabbit": "Coniglio", + "Panda": "Panda", + "Rooster": "Gallo", + "Penguin": "Pinguino", + "Turtle": "Tartaruga", + "Fish": "Pesce", + "Octopus": "Piovra", + "Butterfly": "Farfalla", + "Flower": "Fiore", + "Tree": "Albero", + "Cactus": "Cactus", + "Mushroom": "Fungo", + "Globe": "Globo", + "Moon": "Luna", + "Cloud": "Nuvola", + "Fire": "Fuoco", + "Banana": "Banana", + "Apple": "Mela", + "Strawberry": "Fragola", + "Corn": "Mais", + "Pizza": "Pizza", + "Cake": "Torta", + "Heart": "Cuore", + "Smiley": "Sorriso", + "Robot": "Robot", + "Hat": "Cappello", + "Glasses": "Occhiali", + "Spanner": "Chiave inglese", + "Santa": "Babbo Natale", + "Thumbs up": "Pollice in su", + "Umbrella": "Ombrello", + "Hourglass": "Clessidra", + "Clock": "Orologio", + "Gift": "Regalo", + "Light bulb": "Lampadina", + "Book": "Libro", + "Pencil": "Matita", + "Paperclip": "Graffetta", + "Scissors": "Forbici", + "Key": "Chiave", + "Hammer": "Martello", + "Telephone": "Telefono", + "Flag": "Bandiera", + "Train": "Treno", + "Bicycle": "Bicicletta", + "Aeroplane": "Aeroplano", + "Rocket": "Razzo", + "Trophy": "Trofeo", + "Ball": "Palla", + "Guitar": "Chitarra", + "Trumpet": "Tromba", + "Bell": "Campana", + "Anchor": "Ancora", + "Headphones": "Auricolari", + "Folder": "Cartella", + "Pin": "Spillo", "Yes": "Sì", "No": "No", "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.": "Ti abbiamo inviato un'email per verificare il tuo indirizzo. Segui le istruzioni contenute e poi clicca il pulsante sotto.", @@ -1116,6 +1188,8 @@ "Set status": "Imposta stato", "Hide": "Nascondi", "This homeserver would like to make sure you are not a robot.": "Questo homeserver vorrebbe assicurarsi che non sei un robot.", + "Your Modular server": "Il tuo server Modular", + "Enter the location of your Modular homeserver. It may use your own domain name or be a subdomain of modular.im.": "Inserisci l'indirizzo del tuo homeserver Modular. Potrebbe usare il tuo nome di dominio o essere un sottodominio di modular.im.", "Server Name": "Nome server", "The username field must not be blank.": "Il campo nome utente non deve essere vuoto.", "Username": "Nome utente", @@ -1260,6 +1334,7 @@ "Enter username": "Inserisci nome utente", "Some characters not allowed": "Alcuni caratteri non sono permessi", "Add room": "Aggiungi stanza", + "Your profile": "Il tuo profilo", "Failed to get autodiscovery configuration from server": "Ottenimento automatico configurazione dal server fallito", "Invalid base_url for m.homeserver": "Base_url per m.homeserver non valido", "Homeserver URL does not appear to be a valid Matrix homeserver": "L'URL dell'homeserver non sembra essere un homeserver Matrix valido", @@ -1440,6 +1515,9 @@ "Reporting this message will send its unique 'event ID' to the administrator of your homeserver. If messages in this room are encrypted, your homeserver administrator will not be able to read the message text or view any files or images.": "La segnalazione di questo messaggio invierà il suo 'ID evento' univoco all'amministratore del tuo homeserver. Se i messaggi della stanza sono cifrati, l'amministratore non potrà leggere il messaggio o vedere file e immagini.", "Send report": "Invia segnalazione", "Report Content": "Segnala contenuto", + "Explore": "Esplora", + "Filter": "Filtra", + "Filter rooms…": "Filtra stanze…", "Preview": "Anteprima", "View": "Vedi", "Find a room…": "Trova una stanza…", @@ -1450,6 +1528,7 @@ "Clear cache and reload": "Svuota la cache e ricarica", "%(count)s unread messages including mentions.|other": "%(count)s messaggi non letti incluse le menzioni.", "%(count)s unread messages.|other": "%(count)s messaggi non letti.", + "Unread mentions.": "Menzioni non lette.", "Show image": "Mostra immagine", "Please create a new issue on GitHub so that we can investigate this bug.": "Segnala un nuovo problema su GitHub in modo che possiamo indagare su questo errore.", "To continue you need to accept the terms of this service.": "Per continuare devi accettare le condizioni di servizio.", @@ -1494,6 +1573,7 @@ "Command Autocomplete": "Autocompletamento comando", "DuckDuckGo Results": "Risultati DuckDuckGo", "Room %(name)s": "Stanza %(name)s", + "Recent rooms": "Stanze recenti", "No identity server is configured so you cannot add an email address in order to reset your password in the future.": "Nessun server di identità configurato, perciò non puoi aggiungere un indirizzo email per ripristinare la tua password in futuro.", "%(count)s unread messages including mentions.|one": "1 citazione non letta.", "%(count)s unread messages.|one": "1 messaggio non letto.", @@ -1674,6 +1754,7 @@ "%(num)s hours from now": "%(num)s ore da adesso", "about a day from now": "circa un giorno da adesso", "%(num)s days from now": "%(num)s giorni da adesso", + "Lock": "Lucchetto", "Bootstrap cross-signing and secret storage": "Inizializza firma incrociata e archivio segreto", "Failed to find the following users": "Impossibile trovare i seguenti utenti", "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s": "I seguenti utenti potrebbero non esistere o non sono validi, perciò non possono essere invitati: %(csvNames)s", @@ -1695,6 +1776,7 @@ "Start Verification": "Inizia la verifica", "This room is end-to-end encrypted": "Questa stanza è cifrata end-to-end", "Everyone in this room is verified": "Tutti in questa stanza sono verificati", + "Invite only": "Solo a invito", "Send a reply…": "Invia risposta…", "Send a message…": "Invia un messaggio…", "Reject & Ignore user": "Rifiuta e ignora l'utente", @@ -1840,6 +1922,8 @@ "Disable": "Disattiva", "%(brand)s is securely caching encrypted messages locally for them to appear in search results:": "%(brand)s sta tenendo in cache localmente i messaggi cifrati in modo sicuro affinché appaiano nei risultati di ricerca:", "Message downloading sleep time(ms)": "Tempo di attesa scaricamento messaggi (ms)", + "If you cancel now, you won't complete verifying the other user.": "Se adesso annulli, non completerai la verifica dell'altro utente.", + "If you cancel now, you won't complete verifying your other session.": "Se adesso annulli, non completerai la verifica dell'altra tua sessione.", "Cancel entering passphrase?": "Annullare l'inserimento della password?", "Mod": "Moderatore", "Indexed rooms:": "Stanze indicizzate:", @@ -2052,6 +2136,7 @@ "Syncing...": "Sincronizzazione...", "Signing In...": "Accesso...", "If you've joined lots of rooms, this might take a while": "Se sei dentro a molte stanze, potrebbe impiegarci un po'", + "If you cancel now, you won't complete your operation.": "Se annulli adesso, non completerai l'operazione.", "Please supply a widget URL or embed code": "Inserisci un URL del widget o un codice di incorporamento", "Send a bug report with logs": "Invia una segnalazione di errore con i registri", "Can't load this message": "Impossibile caricare questo messaggio", @@ -2107,6 +2192,8 @@ "Jump to oldest unread message": "Salta al messaggio non letto più vecchio", "Upload a file": "Invia un file", "IRC display name width": "Larghezza nome di IRC", + "Create room": "Crea stanza", + "Font scaling": "Ridimensionamento carattere", "Font size": "Dimensione carattere", "Size must be a number": "La dimensione deve essere un numero", "Custom font size can only be between %(min)s pt and %(max)s pt": "La dimensione del carattere personalizzata può solo essere tra %(min)s pt e %(max)s pt", @@ -2158,6 +2245,9 @@ "Feedback": "Feedback", "No recently visited rooms": "Nessuna stanza visitata di recente", "Sort by": "Ordina per", + "Unread rooms": "Stanze non lette", + "Show": "Mostra", + "Message preview": "Anteprima messaggio", "List options": "Opzioni lista", "Show %(count)s more|other": "Mostra altri %(count)s", "Show %(count)s more|one": "Mostra %(count)s altro", @@ -2172,6 +2262,7 @@ "Looks good!": "Sembra giusta!", "Use Recovery Key or Passphrase": "Usa la chiave o password di recupero", "Use Recovery Key": "Usa chiave di recupero", + "Use the improved room list (will refresh to apply changes)": "Usa l'elenco stanze migliorato (verrà ricaricato per applicare le modifiche)", "Use custom size": "Usa dimensione personalizzata", "Hey you. You're the best!": "Ehi tu. Sei il migliore!", "Message layout": "Layout messaggio", @@ -2190,12 +2281,58 @@ "%(senderName)s started a call": "%(senderName)s ha iniziato una chiamata", "Waiting for answer": "In attesa di risposta", "%(senderName)s is calling": "%(senderName)s sta chiamando", + "You created the room": "Hai creato la stanza", + "%(senderName)s created the room": "%(senderName)s ha creato la stanza", + "You made the chat encrypted": "Hai reso la chat crittografata", + "%(senderName)s made the chat encrypted": "%(senderName)s ha reso la chat crittografata", + "You made history visible to new members": "Hai reso visibile la cronologia ai nuovi membri", + "%(senderName)s made history visible to new members": "%(senderName)s ha reso visibile la cronologia ai nuovi membri", + "You made history visible to anyone": "Hai reso visibile la cronologia a chiunque", + "%(senderName)s made history visible to anyone": "%(senderName)s ha reso visibile la cronologia a chiunque", + "You made history visible to future members": "Hai reso visibile la cronologia ai membri futuri", + "%(senderName)s made history visible to future members": "%(senderName)s ha reso visibile la cronologia ai membri futuri", + "You were invited": "Sei stato invitato", + "%(targetName)s was invited": "%(targetName)s è stato invitato", + "You left": "Sei uscito", + "%(targetName)s left": "%(targetName)s è uscito", + "You were kicked (%(reason)s)": "Sei stato buttato fuori (%(reason)s)", + "%(targetName)s was kicked (%(reason)s)": "%(targetName)s è stato buttato fuori (%(reason)s)", + "You were kicked": "Sei stato buttato fuori", + "%(targetName)s was kicked": "%(targetName)s è stato buttato fuori", + "You rejected the invite": "Hai rifiutato l'invito", + "%(targetName)s rejected the invite": "%(targetName)s ha rifiutato l'invito", + "You were uninvited": "Ti è stato revocato l'invito", + "%(targetName)s was uninvited": "È stato revocato l'invito a %(targetName)s", + "You were banned (%(reason)s)": "Sei stato bandito (%(reason)s)", + "%(targetName)s was banned (%(reason)s)": "%(targetName)s è stato bandito (%(reason)s)", + "You were banned": "Sei stato bandito", + "%(targetName)s was banned": "%(targetName)s è stato bandito", + "You joined": "Ti sei unito", + "%(targetName)s joined": "%(targetName)s si è unito", + "You changed your name": "Hai cambiato il tuo nome", + "%(targetName)s changed their name": "%(targetName)s ha cambiato il suo nome", + "You changed your avatar": "Hai cambiato il tuo avatar", + "%(targetName)s changed their avatar": "%(targetName)s ha cambiato il suo avatar", + "%(senderName)s %(emote)s": "%(senderName)s %(emote)s", "%(senderName)s: %(message)s": "%(senderName)s: %(message)s", + "You changed the room name": "Hai cambiato il nome della stanza", + "%(senderName)s changed the room name": "%(senderName)s ha cambiato il nome della stanza", "%(senderName)s: %(reaction)s": "%(senderName)s: %(reaction)s", "%(senderName)s: %(stickerName)s": "%(senderName)s: %(stickerName)s", + "You uninvited %(targetName)s": "Hai revocato l'invito a %(targetName)s", + "%(senderName)s uninvited %(targetName)s": "%(senderName)s ha revocato l'invito a %(targetName)s", + "You invited %(targetName)s": "Hai invitato %(targetName)s", + "%(senderName)s invited %(targetName)s": "%(senderName)s ha invitato %(targetName)s", + "You changed the room topic": "Hai cambiato l'argomento della stanza", + "%(senderName)s changed the room topic": "%(senderName)s ha cambiato l'argomento della stanza", "New spinner design": "Nuovo design dello spinner", "Use a more compact ‘Modern’ layout": "Usa un layout più compatto e moderno", + "Always show first": "Mostra sempre per prime", "Message deleted on %(date)s": "Messaggio eliminato il %(date)s", + "Use your account to sign in to the latest version": "Usa il tuo account per accedere alla versione più recente", + "We’re excited to announce Riot is now Element": "Siamo entusiasti di annunciare che Riot ora si chiama Element", + "Riot is now Element!": "Riot ora si chiama Element!", + "Learn More": "Maggiori info", "Enable experimental, compact IRC style layout": "Attiva il layout in stile IRC, sperimentale e compatto", "Unknown caller": "Chiamante sconosciuto", "Incoming voice call": "Telefonata in arrivo", @@ -2205,11 +2342,18 @@ "There are advanced notifications which are not shown here.": "Ci sono notifiche avanzate che non vengono mostrate qui.", "You might have configured them in a client other than %(brand)s. You cannot tune them in %(brand)s but they still apply.": "Potresti averle configurate in un client diverso da %(brand)s. Non puoi regolarle in %(brand)s ma sono comunque applicate.", "Set the name of a font installed on your system & %(brand)s will attempt to use it.": "Imposta il nome di un font installato nel tuo sistema e %(brand)s proverà ad usarlo.", + "Make this room low priority": "Rendi questa stanza a bassa priorità", + "Low priority rooms show up at the bottom of your room list in a dedicated section at the bottom of your room list": "Le stanze a bassa priorità vengono mostrate in fondo all'elenco stanze in una sezione dedicata", "Use default": "Usa predefinito", "Mentions & Keywords": "Citazioni e parole chiave", "Notification options": "Opzioni di notifica", "Favourited": "Preferito", "Forget Room": "Dimentica stanza", + "Use your account to sign in to the latest version of the app at ": "Usa il tuo account per accedere alla versione più recente dell'app in ", + "You’re already signed in and good to go here, but you can also grab the latest versions of the app on all platforms at element.io/get-started.": "Hai già fatto l'accesso e sei pronto ad iniziare, ma puoi anche ottenere le versioni più recenti dell'app su tutte le piattaforme in element.io/get-started.", + "Go to Element": "Vai su Element", + "We’re excited to announce Riot is now Element!": "Siamo entusiasti di annunciare che Riot ora si chiama Element!", + "Learn more at element.io/previously-riot": "Maggiori informazioni su element.io/previously-riot", "Wrong file type": "Tipo di file errato", "Wrong Recovery Key": "Chiave di ripristino errata", "Invalid Recovery Key": "Chiave di ripristino non valida", @@ -2224,6 +2368,7 @@ "%(brand)s Web": "%(brand)s Web", "%(brand)s Desktop": "%(brand)s Desktop", "%(brand)s iOS": "%(brand)s iOS", + "%(brand)s X for Android": "%(brand)s X per Android", "Safeguard against losing access to encrypted messages & data by backing up encryption keys on your server.": "Proteggiti contro la perdita dell'accesso ai messaggi e dati cifrati facendo un backup delle chiavi crittografiche sul tuo server.", "Generate a Security Key": "Genera una chiave di sicurezza", "We’ll generate a Security Key for you to store somewhere safe, like a password manager or a safe.": "Genereremo per te una chiave di sicurezza da conservare in un posto sicuro, come un gestore di password o una cassaforte.", diff --git a/src/i18n/strings/ja.json b/src/i18n/strings/ja.json index d1b7b2e32e..ff2afb67be 100644 --- a/src/i18n/strings/ja.json +++ b/src/i18n/strings/ja.json @@ -355,6 +355,11 @@ "Enable URL previews by default for participants in this room": "この部屋の参加者のためにデフォルトで URL プレビューを有効にする", "Room Colour": "部屋の色", "Enable widget screenshots on supported widgets": "サポートされているウィジェットでウィジェットのスクリーンショットを有効にする", + "Active call (%(roomName)s)": "アクティブな通話 (%(roomName)s)", + "unknown caller": "不明な発信者", + "Incoming voice call from %(name)s": "%(name)s からの音声通話の着信", + "Incoming video call from %(name)s": "%(name)s からのビデオ通話の着信", + "Incoming call from %(name)s": "%(name)s からの通話の着信", "Decline": "辞退", "Accept": "受諾", "Incorrect verification code": "認証コードの誤りです", @@ -450,6 +455,7 @@ "Join Room": "部屋に入る", "Forget room": "部屋を忘れる", "Share room": "部屋を共有する", + "Community Invites": "コミュニティへの招待", "Invites": "招待", "Unban": "ブロック解除", "Ban": "ブロックする", @@ -694,6 +700,7 @@ "Share Community": "コミュニティを共有", "Share Room Message": "部屋のメッセージを共有", "Link to selected message": "選択したメッセージにリンクする", + "COPY": "コピー", "Private Chat": "プライベートチャット", "Public Chat": "パブリックチャット", "Custom": "カスタム", @@ -705,6 +712,7 @@ "Name": "名前", "You must register to use this functionality": "この機能を使用するには登録する必要があります", "You must join the room to see its files": "そのファイルを見るために部屋に参加する必要があります", + "There are no visible files in this room": "この部屋に表示可能なファイルは存在しません", "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

コミュニティのページのHTML

\n

\n 詳細な説明を使用して、新しいメンバーをコミュニティに紹介する、または配布する\n 重要なリンク\n

\n

\n あなたは 'img'タグを使うことさえできます\n

\n", "Add rooms to the community summary": "コミュニティサマリーに部屋を追加する", "Which rooms would you like to add to this summary?": "このサマリーにどの部屋を追加したいですか?", @@ -764,6 +772,7 @@ "Error whilst fetching joined communities": "参加したコミュニティを取得中にエラーが発生しました", "Create a new community": "新しいコミュニティを作成する", "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "ユーザーと部屋をグループ化するコミュニティを作成してください! Matrixユニバースにあなたの空間を目立たせるためにカスタムホームページを作成してください。", + "You have no visible notifications": "通知はありません", "You can't send any messages until you review and agree to our terms and conditions.": "利用規約 を確認して同意するまでは、いかなるメッセージも送信できません。", "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "このホームサーバーが月間アクティブユーザー制限を超えたため、メッセージは送信されませんでした。 サービスを引き続き使用するには、サービス管理者にお問い合わせください。", "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.": "このホームサーバーがリソース制限を超えたため、メッセージは送信されませんでした。 サービスを引き続き使用するには、サービス管理者にお問い合わせください。", @@ -997,6 +1006,8 @@ "Show advanced": "高度な設定を表示", "Block users on other matrix homeservers from joining this room (This setting cannot be changed later!)": "他の Matrix ホームサーバーからの参加を禁止する (この設定はあとから変更できません!)", "Room Settings - %(roomName)s": "部屋の設定 - %(roomName)s", + "Explore": "探索", + "Filter": "フィルター", "Find a room… (e.g. %(exampleRoom)s)": "部屋を探す… (例: %(exampleRoom)s)", "If you can't find the room you're looking for, ask for an invite or Create a new room.": "もしお探しの部屋が見つからない場合、招待してもらうか部屋を作成しましょう。", "Enable room encryption": "部屋の暗号化を有効化", @@ -1127,6 +1138,7 @@ "Report Content": "コンテンツを報告", "Hide": "隠す", "Help": "ヘルプ", + "Filter rooms…": "部屋を検索…", "Preview": "プレビュー", "Your user agent": "あなたの User Agent", "Bold": "太字", @@ -1172,6 +1184,7 @@ "Verify yourself & others to keep your chats safe": "あなたと他の人々とのチャットの安全性を検証", "Upgrade": "アップグレード", "Verify": "検証", + "Invite only": "招待者のみ参加可能", "Trusted": "信頼済み", "Not trusted": "未信頼", "%(count)s verified sessions|other": "%(count)s 件の検証済みのセッション", @@ -1355,6 +1368,7 @@ "Use Single Sign On to continue": "シングルサインオンを使用して続行", "Accept to continue:": " に同意して続行:", "Always show the window menu bar": "常にウィンドウメニューバーを表示する", + "Create room": "部屋を作成", "Show %(count)s more|other": "さらに %(count)s 件を表示", "Show %(count)s more|one": "さらに %(count)s 件を表示", "%(num)s minutes ago": "%(num)s 分前", diff --git a/src/i18n/strings/jbo.json b/src/i18n/strings/jbo.json index 87d54edf08..f2c9dc6e43 100644 --- a/src/i18n/strings/jbo.json +++ b/src/i18n/strings/jbo.json @@ -191,6 +191,11 @@ "When I'm invited to a room": "nu da friti le ka ziljmina lo se zilbe'i kei do", "Call invitation": "nu da co'a fonjo'e do", "Messages sent by bot": "nu da zilbe'i fi pa sampre", + "Active call (%(roomName)s)": "le ca fonjo'e ne la'o ly. %(roomName)s .ly.", + "unknown caller": "lo fonjo'e noi na'e te djuno", + "Incoming voice call from %(name)s": ".i la'o ly. %(name)s .ly. ca'o snavi fonjo'e", + "Incoming video call from %(name)s": ".i la'o ly. %(name)s .ly. ca'o vidvi fonjo'e", + "Incoming call from %(name)s": ".i la'o ly. %(name)s .ly. ca'o fonjo'e", "Decline": "nu na fonjo'e", "Accept": "nu fonjo'e", "Error": "nabmi", @@ -261,6 +266,63 @@ "You signed in to a new session without verifying it:": ".i fe le di'e se samtcise'u pu co'a jaspu vau je za'o na lacri", "They match": "du", "They don't match": "na du", + "Dog": "gerku", + "Cat": "mlatu", + "Lion": "cinfo", + "Horse": "xirma", + "Unicorn": "pavyseljirna", + "Pig": "xarju", + "Elephant": "xanto", + "Rabbit": "ractu", + "Panda": "ribrmelanole'usa", + "Rooster": "jipci", + "Penguin": "zipcpi", + "Turtle": "cakyrespa", + "Fish": "finpe", + "Octopus": "dalroktopoda", + "Butterfly": "toldi", + "Flower": "xrula", + "Tree": "tricu", + "Cactus": "jesyspa", + "Mushroom": "mledi", + "Globe": "bolcartu", + "Moon": "lunra", + "Cloud": "dilnu", + "Fire": "fagri", + "Banana": "badna", + "Apple": "plise", + "Strawberry": "grutrananasa", + "Corn": "zumri", + "Pizza": "cidjrpitsa", + "Cake": "titnanba", + "Heart": "risna", + "Smiley": "cisma", + "Robot": "sampre", + "Hat": "mapku", + "Glasses": "vistci", + "Santa": "la santa", + "Umbrella": "santa", + "Hourglass": "canjunla", + "Clock": "junla", + "Light bulb": "te gusni", + "Book": "cukta", + "Pencil": "pinsi", + "Scissors": "jinci", + "Lock": "stela", + "Key": "ckiku", + "Hammer": "mruli", + "Telephone": "fonxa", + "Flag": "lanci", + "Train": "trene", + "Bicycle": "carvrama'e", + "Aeroplane": "vinji", + "Rocket": "jakne", + "Ball": "bolci", + "Guitar": "jgita", + "Trumpet": "tabra", + "Bell": "janbe", + "Headphones": "selsnapra", + "Pin": "pijne", "Upload": "nu kibdu'a", "Send an encrypted reply…": "nu pa mifra be pa jai te spuda cu zilbe'i", "Send a reply…": "nu pa jai te spuda cu zilbe'i", @@ -358,9 +420,38 @@ "%(senderName)s started a call": ".i la'o zoi. %(senderName)s .zoi co'a fonjo'e", "Waiting for answer": ".i ca'o denpa lo nu spuda", "%(senderName)s is calling": ".i la'o zoi. %(senderName)s .zoi co'a fonjo'e", + "You created the room": ".i do cupra le ve zilbe'i", + "%(senderName)s created the room": ".i la'o zoi. %(senderName)s .zoi cupra le ve zilbe'i", + "You made the chat encrypted": ".i gau do ro ba zilbe'i be fo le gai'o cu mifra", + "%(senderName)s made the chat encrypted": ".i gau la'o zoi. %(senderName)s .zoi ro ba zilbe'i be fo le gai'o cu mifra", + "You were invited": ".i da friti le ka ziljmina kei do", + "%(targetName)s was invited": ".i da friti le ka ziljmina kei la'o zoi. %(targetName)s .zoi", + "You left": ".i do zilvi'u", + "%(targetName)s left": ".i la'o zoi. %(targetName)s .zoi zilvi'u", + "You were kicked (%(reason)s)": ".i gau da do zilvi'u fi'o krinu lerpoi zoi zoi. %(reason)s .zoi", + "%(targetName)s was kicked (%(reason)s)": ".i gau da la'o zoi. %(targetName)s .zoi zilvi'u fi'o krinu lerpoi zoi zoi. %(reason)s .zoi", + "You were kicked": ".i gau da do zilvi'u", + "%(targetName)s was kicked": ".i gau da la'o zoi. %(targetName)s .zoi zilvi'u", + "You rejected the invite": ".i do zukte le ka na ckaji le se friti", + "%(targetName)s rejected the invite": ".i la'o zoi. %(targetName)s .zoi zukte le ka na ckaji le se friti", + "You were uninvited": ".i da co'u friti le ka ziljmina kei do", + "%(targetName)s was uninvited": ".i da co'u friti le ka ziljmina kei la'o zoi. %(targetName)s .zoi", + "You changed your name": ".i gau do da basti de le ka cmene do", + "%(targetName)s changed their name": ".i gau da zoi zoi. %(targetName)s .zoi basti de le ka cmene da", + "You changed your avatar": ".i gau do da basti de le ka pixra sinxa do", + "%(targetName)s changed their avatar": ".i gau la'o zoi. %(targetName)s .zoi da basti de le ka pixra sinxa ri", + "%(senderName)s %(emote)s": ".i la'o zoi. %(senderName)s .zoi ckaji le smuni be zoi zoi. %(emote)s .zoi", "%(senderName)s: %(message)s": "%(senderName)s: %(message)s", + "You changed the room name": ".i gau do da basti de le ka cmene le ve zilbe'i", + "%(senderName)s changed the room name": ".i gau la'o zoi. %(senderName)s .zoi da basti de le ka cmene le ve zilbe'i", "%(senderName)s: %(reaction)s": "%(senderName)s: %(reaction)s", "%(senderName)s: %(stickerName)s": "%(senderName)s: %(stickerName)s", + "You uninvited %(targetName)s": ".i do co'u friti le ka ziljmina kei la'o zoi. %(targetName)s .zoi", + "%(senderName)s uninvited %(targetName)s": ".i la'o zoi. %(senderName)s .zoi co'u friti le ka ziljmina kei la'o zoi. %(targetName)s .zoi", + "You invited %(targetName)s": ".i do friti le ka ziljmina kei la'o zoi. %(targetName)s .zoi", + "%(senderName)s invited %(targetName)s": ".i la'o zoi. %(senderName)s .zoi friti le ka ziljmina kei la'o zoi. %(targetName)s .zoi", + "You changed the room topic": ".i gau do da basti de le ka skicu be le ve zilbe'i be'o lerpoi", + "%(senderName)s changed the room topic": ".i gau la'o zoi. %(senderName)s .zoi da basti de le ka skicu be le ve zilbe'i be'o lerpoi", "Use a system font": "nu da pe le vanbi cu ci'artai", "System font name": "cmene le ci'artai pe le vanbi", "Never send encrypted messages to unverified sessions from this session": "nu na pa mifra be pa notci cu zilbe'i pa se samtcise'u poi na se lanli ku'o le se samtcise'u", @@ -377,6 +468,10 @@ " invited you": ".i la'o zoi. .zoi friti le ka ziljmina kei do", "Username": "judri cmene", "Enter username": ".i ko cuxna fo le ka judri cmene", + "We’re excited to announce Riot is now Element": ".i fizbu lo nu zo .elyment. basti zo .raiyt. le ka cmene", + "Riot is now Element!": ".i zo .elyment. basti zo .raiyt. le ka cmene", + "Learn More": "nu facki", + "We’re excited to announce Riot is now Element!": ".i fizbu lo nu gubni xusra le du'u zo .elyment. basti zo .raiyt. le ka cmene", "Messages in this room are secured with end-to-end encryption. Only you and the recipient(s) have the keys to read these messages.": ".i ro zilbe'i be fo le cei'i cu mifra .i le ka ka'e tcidu lo notci cu steci fi lu'i do je ro pagbu be le se zilbe'i", "Messages in this room are end-to-end encrypted.": ".i ro zilbe'i be fo le cei'i cu mifra", "Messages in this room are not end-to-end encrypted.": ".i na pa zilbe'i be fo le cei'i cu mifra", @@ -396,6 +491,7 @@ "This room is end-to-end encrypted": ".i ro zilbe'i be fo le cei'i cu mifra", "Everyone in this room is verified": ".i do lacri ro pagbu be le se zilbe'i", "Start chat": "nu co'a tavla", + "Create room": "nu cupra pa ve zilbe'i", "The file '%(fileName)s' failed to upload.": ".i da nabmi fi lo nu kibdu'a la'o zoi. %(fileName)s .zoi", "Invite users": "nu friti le ka ziljmina kei pa pilno", "Invite to this room": "nu friti le ka ziljmina le se zilbe'i", @@ -452,6 +548,9 @@ "React": "nu cinmo spuda", "Reply": "nu spuda", "In reply to ": ".i nu spuda tu'a la'o zoi. .zoi", + "%(senderName)s made history visible to anyone": ".i gau la'o zoi. %(senderName)s .zoi ro da ka'e tcidu ro pu zilbe'i", + "You joined": ".i do ziljmina", + "%(targetName)s joined": ".i la'o zoi. %(targetName)s .zoi ziljmina", "Show less": "nu viska so'u da", "Save": "nu co'a vreji", "Unable to share email address": ".i da nabmi fi lo nu jungau le du'u samymri judri", @@ -468,6 +567,8 @@ "Resend edit": "nu le basti cu za'u re'u zilbe'i", "Share Permalink": "nu jungau fi le du'u vitno judri", "Share Message": "nu jungau fi le du'u notci", + "%(senderName)s made history visible to new members": ".i gau la'o zoi. %(senderName)s .zoi ro cnino be fi le ka pagbu le se zilbe'i cu ka'e tcidu ro pu zilbe'i", + "%(senderName)s made history visible to future members": ".i gau la'o zoi. %(senderName)s .zoi ro ba pagbu be le se zilbe'i cu ka'e tcidu ro pu zilbe'i", "%(senderName)s sent an image": ".i pa pixra cu zilbe'i fi la'o zoi. %(senderName)s .zoi", "%(senderName)s sent a video": ".i pa se vidvi cu zilbe'i fi la'o zoi. %(senderName)s .zoi", "%(senderName)s uploaded a file": ".i pa vreji cu zilbe'i fi la'o zoi. %(senderName)s .zoi", diff --git a/src/i18n/strings/kab.json b/src/i18n/strings/kab.json index 6670423339..6073fbfd38 100644 --- a/src/i18n/strings/kab.json +++ b/src/i18n/strings/kab.json @@ -65,6 +65,22 @@ "Accept": "Qbel", "or": "neɣ", "Start": "Bdu", + "Cat": "Amcic", + "Lion": "Izem", + "Rabbit": "Awtul", + "Turtle": "Afekrun", + "Tree": "Aseklu", + "Clock": "Tamrint", + "Book": "Adlis", + "Lock": "Sekkeṛ", + "Key": "Tasarut", + "Telephone": "Tiliγri", + "Flag": "Anay", + "Bicycle": "Azlalam", + "Ball": "Balles", + "Anchor": "Tamdeyt", + "Headphones": "Wennez", + "Folder": "Akaram", "Upload": "Sali", "Remove": "Sfeḍ", "Show less": "Sken-d drus", @@ -138,6 +154,7 @@ "Sort by": "Semyizwer s", "Activity": "Armud", "A-Z": "A-Z", + "Show": "Sken", "Options": "Tixtiṛiyin", "Server error": "Tuccḍa n uqeddac", "Members": "Imettekkiyen", @@ -238,12 +255,15 @@ "Free": "Ilelli", "Failed to upload image": "Tegguma ad d-tali tugna", "Description": "Aglam", + "Explore": "Snirem", + "Filter": "Imsizdeg", "Explore rooms": "Snirem tixxamin", "Unknown error": "Tuccḍa tarussint", "Logout": "Tuffɣa", "Preview": "Taskant", "View": "Sken", "Guest": "Anerzaf", + "Your profile": "Amaɣnu-ik/im", "Feedback": "Takti", "Your password has been reset.": "Awal uffir-inek/inem yettuwennez.", "Syncing...": "Amtawi...", @@ -367,6 +387,7 @@ "Add to community": "Rnu ɣer temɣiwent", "Unnamed Room": "Taxxamt war isem", "The server does not support the room version specified.": "Aqeddac ur issefrek ara lqem n texxamt yettwafernen.", + "If you cancel now, you won't complete verifying the other user.": "Ma yella teffɣeḍ tura, asenqed n yiseqdacen-nniḍen ur ittemmed ara.", "Cancel entering passphrase?": "Sefsex tafyirt tuffirt n uεeddi?", "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Γur-k: yal amdan ara ternuḍ ɣer temɣiwent ad d-iban s wudem azayaz i yal yiwen yessnen asulay n temɣiwent", "Invite new community members": "Nced-d imttekkiyen imaynuten ɣer temɣiwent", @@ -436,6 +457,8 @@ "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Ma yili asebter-a degs talɣut tummilt, am texxamt neɣ aseqdac neɣ asulay n ugraw, isefka-a ad ttwakksen send ad ttwaznen i uqeddac.", "Unable to load! Check your network connectivity and try again.": "Yegguma ad d-yali! Senqed tuqqna-inek.inem ɣer uzeṭṭa syen tεerḍeḍ tikkelt-nniḍen.", "Failure to create room": "Timerna n texxamt ur teddi ara", + "If you cancel now, you won't complete verifying your other session.": "Ma yella teffɣeḍ tura, ur tessawaḍeḍ ara ad tesneqdeḍ akk tiɣimiyin-inek.inem.", + "If you cancel now, you won't complete your operation.": "Ma yella teffɣeḍ tura, tamhelt-ik.im ur tettemmed ara.", "Show these rooms to non-members on the community page and room list?": "Sken tixxamin-a i wid ur nettekka ara deg usebter n temɣiwent d tebdert n texxamt?", "The remote side failed to pick up": "Amazan ur yessaweḍ ara ad d-yerr", "Call failed due to misconfigured server": "Ur yeddi ara usiwel ssebba n uqeddac ur nettuswel ara akken iwata", @@ -448,8 +471,12 @@ "Are you sure you want to cancel entering passphrase?": "S tidet tebɣiḍ ad tesfesxeḍ asekcem n tefyirt tuffirt?", "This action requires accessing the default identity server to validate an email address or phone number, but the server does not have any terms of service.": "Tigawt-a tesra anekcum ɣer uqeddac n tmagit tamezwert i usentem n tansa n yimayl neɣ uṭṭun n tiliɣri, maca aqeddac ur yesεi ula d yiwet n twali n umeẓlu.", "Only continue if you trust the owner of the server.": "Ala ma tettekleḍ ɣef bab n uqeddac ara tkemmleḍ.", + "Use your account to sign in to the latest version": "Seqdec amiḍan-ik·im akken ad tkecmeḍ ɣer lqem aneggaru", + "Riot is now Element!": "Tura, Riot d aferdis!", + "Learn More": "Issin ugar", "Restricted": "Yesεa tilas", "Set up": "Sbadu", + "Pencil": "Akeryun", "Compact": "Akussem", "Modern": "Atrar", "Online": "Srid", @@ -478,6 +505,7 @@ "Alt Gr": "Alt Gr", "Super": "Ayuz", "Ctrl": "Ctrl", + "We’re excited to announce Riot is now Element": "S tumert meqqren ara d-nselɣu belli Riot tura d aferdis", "Operation failed": "Tamhelt ur teddi ara", "Failed to invite users to the room:": "Yegguma ad yeddu usnubget n yiseqdacen ɣer texxamt:", "Failed to invite the following users to the %(roomName)s room:": "Asnubget n yiseqdacen i d-iteddun ɣer taxxamt %(roomName)s ur yeddi ara:", @@ -563,9 +591,42 @@ "%(senderName)s started a call": "%(senderName)s yebda asiwel", "Waiting for answer": "Yettṛaǧu tiririt", "%(senderName)s is calling": "%(senderName)s yessawal", + "You created the room": "Terniḍ taxxamt", + "%(senderName)s created the room": "%(senderName)s yerna taxxamt", + "You made the chat encrypted": "Terriḍ adiwenni yettuwgelhen", + "%(senderName)s made the chat encrypted": "%(senderName)s yerra adiwenni yettuwgelhen", + "You made history visible to new members": "Terriḍ amazray yettban i yimttekkiyen imaynuten", + "%(senderName)s made history visible to new members": "%(senderName)s yerra amazray yettban i yimttekkiyen imaynuten", + "You made history visible to anyone": "Terriḍ amazray yettban i yal amdan", + "%(senderName)s made history visible to anyone": "%(senderName)s yerra amazray yettban i yal amdan", + "You made history visible to future members": "Terriḍ amazray yettban i yimttekkiyen ara d-yernun", + "%(senderName)s made history visible to future members": "%(senderName)s yerra amazray yettban i yimttekkiyen ara d-yernun", + "You were invited": "Tettusnubegteḍ", + "%(targetName)s was invited": "%(senderName)s yettusnubget", + "You left": "Truḥeḍ", + "%(targetName)s left": "%(targetName)s iṛuḥ", + "You rejected the invite": "Tugiḍ tinnubga", + "%(targetName)s rejected the invite": "%(targetName)s yugi tinnubga", + "You were uninvited": "Ur tettusnubegteḍ ara", + "%(targetName)s was uninvited": "%(senderName)s ur yettusnubget ara", + "You joined": "Terniḍ", + "%(targetName)s joined": "%(targetName)s yerna", + "You changed your name": "Tbeddleḍ isem-ik·im", + "%(targetName)s changed their name": "%(targetName)s ibeddel isem-is", + "You changed your avatar": "Tbeddleḍ avatar-inek·inem", + "%(targetName)s changed their avatar": "%(targetName)s ibeddel avatar-ines", + "%(senderName)s %(emote)s": "%(senderName)s %(emote)s", "%(senderName)s: %(message)s": "%(senderName)s: %(message)s", + "You changed the room name": "Tbeddleḍ isem n texxamt", + "%(senderName)s changed the room name": "%(senderName)s kksen isem n texxamt", "%(senderName)s: %(reaction)s": "%(senderName)s: %(reaction)s", "%(senderName)s: %(stickerName)s": "%(senderName)s: %(stickerName)s", + "You uninvited %(targetName)s": "Ur tettusnubegteḍ ara sɣur %(targetName)s", + "%(senderName)s uninvited %(targetName)s": "%(senderName)s ur yettusnubget ara sɣur %(targetName)s", + "You invited %(targetName)s": "Tettusnubegteḍ sɣur %(targetName)s", + "%(senderName)s invited %(targetName)s": "%(senderName)s yettusnubget %(targetName)s", + "You changed the room topic": "Tbeddleḍ asentel n texxamt", + "%(senderName)s changed the room topic": "%(senderName)s ibeddel asentel n texxamt", "Message Pinning": "Arezzi n yizen", "Group & filter rooms by custom tags (refresh to apply changes)": "Sdukkel tixxamin, tsizedgeḍ-tent s tebzimin tudmawanin (smiren akken ad alin yisnifal)", "Order rooms by name": "Semyizwer tixxamin s yisem", @@ -673,6 +734,32 @@ "Cancelling…": "Asefsex...", "They match": "Mṣadan", "They don't match": "Ur mṣadan ara", + "Dog": "Aqjun", + "Horse": "Aεewdiw", + "Pig": "Ilef", + "Elephant": "Ilu", + "Panda": "Apunda", + "Rooster": "Ayaziḍ", + "Fish": "Lḥut", + "Butterfly": "Aferteṭṭu", + "Flower": "Ajeǧǧig", + "Mushroom": "Agersal", + "Moon": "Ayyur", + "Cloud": "Agu", + "Fire": "Times", + "Banana": "Tabanant", + "Apple": "Tatteffaḥt", + "Strawberry": "Tazwelt", + "Corn": "Akbal", + "Cake": "Angul", + "Heart": "Ul", + "Smiley": "Acmumeḥ", + "Robot": "Aṛubut", + "Hat": "Acapun", + "Glasses": "Tisekkadin", + "Umbrella": "Tasiwant", + "Gift": "Asefk", + "Light bulb": "Taftilt", "Power level must be positive integer.": "Ilaq ad yili uswir n tezmert d ummid ufrir.", "Sends a message as plain text, without interpreting it as markdown": "Yuzen izen d aḍris aččuran war ma isegza-t s tukksa n tecreḍt", "You do not have the required permissions to use this command.": "Ur tesεiḍ ara tisirag akken ad tesqedceḍ taladna-a.", diff --git a/src/i18n/strings/ko.json b/src/i18n/strings/ko.json index 9fe3e41ffd..59bb68af94 100644 --- a/src/i18n/strings/ko.json +++ b/src/i18n/strings/ko.json @@ -54,6 +54,7 @@ "%(targetName)s accepted an invitation.": "%(targetName)s님이 초대를 수락했습니다.", "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s님이 %(displayName)s 초대를 수락했습니다.", "Access Token:": "접근 토큰:", + "Active call (%(roomName)s)": "현재 전화 (%(roomName)s 방)", "Add a topic": "주제 추가", "You may need to manually permit %(brand)s to access your microphone/webcam": "수동으로 %(brand)s에 마이크와 카메라를 허용해야 함", "%(items)s and %(lastItem)s": "%(items)s님과 %(lastItem)s님", @@ -134,6 +135,9 @@ "Import": "가져오기", "Import E2E room keys": "종단간 암호화 방 키 불러오기", "Import room keys": "방 키 가져오기", + "Incoming call from %(name)s": "%(name)s님으로부터 전화가 왔습니다", + "Incoming video call from %(name)s": "%(name)s님으로부터 영상 통화가 왔습니다", + "Incoming voice call from %(name)s": "%(name)s님으로부터 음성 통화가 왔습니다", "Incorrect username and/or password.": "사용자 이름 혹은 비밀번호가 맞지 않습니다.", "Incorrect verification code": "맞지 않은 인증 코드", "Invalid Email Address": "잘못된 이메일 주소", @@ -250,6 +254,7 @@ "%(senderName)s unbanned %(targetName)s.": "%(senderName)s님이 %(targetName)s님에 대한 출입 금지를 풀었습니다.", "Unable to capture screen": "화면을 찍을 수 없음", "Unable to enable Notifications": "알림을 사용할 수 없음", + "unknown caller": "알 수 없는 발신자", "Unmute": "음소거 끄기", "Unnamed Room": "이름 없는 방", "Uploading %(filename)s and %(count)s others|zero": "%(filename)s을(를) 올리는 중", @@ -282,6 +287,7 @@ "You do not have permission to post to this room": "이 방에 글을 올릴 권한이 없습니다", "You have disabled URL previews by default.": "기본으로 URL 미리 보기를 껐습니다.", "You have enabled URL previews by default.": "기본으로 URL 미리 보기를 켰습니다.", + "You have no visible notifications": "보여줄 수 있는 알림이 없습니다", "You must register to use this functionality": "이 기능을 쓰려면 등록해야 합니다", "You need to be able to invite users to do that.": "그러려면 사용자를 초대할 수 있어야 합니다.", "You need to be logged in.": "로그인을 해야 합니다.", @@ -314,6 +320,7 @@ "Upload an avatar:": "아바타 업로드:", "This server does not support authentication with a phone number.": "이 서버는 전화번호 인증을 지원하지 않습니다.", "An error occurred: %(error_string)s": "오류가 발생함: %(error_string)s", + "There are no visible files in this room": "이 방에는 보여줄 수 있는 파일이 없습니다", "Room": "방", "Connectivity to the server has been lost.": "서버 연결이 끊어졌습니다.", "Sent messages will be stored until your connection has returned.": "보낸 메시지는 연결이 돌아올 때까지 저장됩니다.", @@ -637,6 +644,7 @@ "Jump to read receipt": "읽은 기록으로 건너뛰기", "Jump to message": "메세지로 건너뛰기", "Share room": "방 공유하기", + "Community Invites": "커뮤니티 초대", "Members only (since they joined)": "구성원만(구성원들이 참여한 시점부터)", "%(severalUsers)sjoined %(count)s times|one": "%(severalUsers)s이 참가했습니다", "%(severalUsers)sjoined %(count)s times|other": "%(severalUsers)s이 %(count)s번 참가했습니다", @@ -739,6 +747,7 @@ "Share Community": "커뮤니티 공유", "Share Room Message": "방 메시지 공유", "Link to selected message": "선택한 메시지로 연결", + "COPY": "복사", "Unable to reject invite": "초대를 거절하지 못함", "Reply": "답장", "Pin Message": "메시지 고정하기", @@ -919,6 +928,69 @@ "Predictable substitutions like '@' instead of 'a' don't help very much": "'a'대신 '@'를 적는 등의 추측할 수 있는 대체제는 큰 도움이 되지 않습니다", "Add another word or two. Uncommon words are better.": "한 두 문자를 추가하세요. 흔하지 않은 문자일수록 좋습니다.", "Repeats like \"aaa\" are easy to guess": "\"aaa\"와 같은 반복은 쉽게 추측합니다", + "Dog": "개", + "Cat": "고양이", + "Lion": "사자", + "Horse": "말", + "Unicorn": "유니콘", + "Pig": "돼지", + "Elephant": "코끼리", + "Rabbit": "토끼", + "Panda": "판다", + "Rooster": "수탉", + "Penguin": "펭귄", + "Turtle": "거북", + "Fish": "물고기", + "Octopus": "문어", + "Butterfly": "나비", + "Flower": "꽃", + "Tree": "나무", + "Cactus": "선인장", + "Mushroom": "버섯", + "Globe": "지구본", + "Moon": "달", + "Cloud": "구름", + "Fire": "불", + "Banana": "바나나", + "Apple": "사과", + "Strawberry": "딸기", + "Corn": "옥수수", + "Pizza": "피자", + "Cake": "케이크", + "Heart": "하트", + "Smiley": "웃음", + "Robot": "로봇", + "Hat": "모자", + "Glasses": "안경", + "Spanner": "스패너", + "Santa": "산타클로스", + "Thumbs up": "좋아요", + "Umbrella": "우산", + "Hourglass": "모래시계", + "Clock": "시계", + "Gift": "선물", + "Light bulb": "전구", + "Book": "책", + "Pencil": "연필", + "Paperclip": "클립", + "Scissors": "가위", + "Key": "열쇠", + "Hammer": "망치", + "Telephone": "전화기", + "Flag": "깃발", + "Train": "기차", + "Bicycle": "자전거", + "Aeroplane": "비행기", + "Rocket": "로켓", + "Trophy": "트로피", + "Ball": "공", + "Guitar": "기타", + "Trumpet": "트럼펫", + "Bell": "종", + "Anchor": "닻", + "Headphones": "헤드폰", + "Folder": "폴더", + "Pin": "핀", "Accept to continue:": "계속하려면 을(를) 수락하세요:", "Power level": "권한 등급", "Repeats like \"abcabcabc\" are only slightly harder to guess than \"abc\"": "\"abcabcabc\"와 같은 반복은 \"abc\"에서 겨우 조금 더 어렵습니다", @@ -1269,6 +1341,8 @@ "Please review and accept all of the homeserver's policies": "모든 홈서버의 정책을 검토하고 수락해주세요", "Please review and accept the policies of this homeserver:": "이 홈서버의 정책을 검토하고 수락해주세요:", "Unable to validate homeserver/identity server": "홈서버/ID서버를 확인할 수 없음", + "Your Modular server": "당신의 Modular 서버", + "Enter the location of your Modular homeserver. It may use your own domain name or be a subdomain of modular.im.": "Modular 홈서버의 위치를 입력하세요. 고유 도메인 이름 혹은 modular.im의 하위 도메인으로 사용할 수 있습니다.", "Server Name": "서버 이름", "The username field must not be blank.": "사용자 이름을 반드시 입력해야 합니다.", "Username": "사용자 이름", @@ -1321,6 +1395,7 @@ "You have %(count)s unread notifications in a prior version of this room.|other": "이 방의 이전 버전에서 읽지 않은 %(count)s개의 알림이 있습니다.", "You have %(count)s unread notifications in a prior version of this room.|one": "이 방의 이전 버전에서 읽지 않은 %(count)s개의 알림이 있습니다.", "Guest": "손님", + "Your profile": "당신의 프로필", "Could not load user profile": "사용자 프로필을 불러올 수 없음", "Your Matrix account on %(serverName)s": "%(serverName)s에서 당신의 Matrix 계정", "Your Matrix account on ": "에서 당신의 Matrix 계정", @@ -1420,6 +1495,9 @@ "Remove %(count)s messages|other": "%(count)s개의 메시지 삭제", "Remove recent messages": "최근 메시지 삭제", "Send read receipts for messages (requires compatible homeserver to disable)": "메시지 읽은 기록 보내기 (이 기능을 끄려면 그것을 호환하는 홈서버이어야 함)", + "Explore": "검색", + "Filter": "필터", + "Filter rooms…": "방 필터…", "Preview": "미리 보기", "View": "보기", "Find a room…": "방 찾기…", @@ -1459,6 +1537,7 @@ "Clear cache and reload": "캐시 지우기 및 새로고침", "%(count)s unread messages including mentions.|other": "언급을 포함한 %(count)s개의 읽지 않은 메시지.", "%(count)s unread messages.|other": "%(count)s개의 읽지 않은 메시지.", + "Unread mentions.": "읽지 않은 언급.", "Please create a new issue on GitHub so that we can investigate this bug.": "이 버그를 조사할 수 있도록 GitHub에 새 이슈를 추가해주세요.", "You are about to remove %(count)s messages by %(user)s. This cannot be undone. Do you wish to continue?|one": "%(user)s님의 1개의 메시지를 삭제합니다. 이것은 되돌릴 수 없습니다. 계속하겠습니까?", "Remove %(count)s messages|one": "1개의 메시지 삭제", @@ -1493,6 +1572,7 @@ "Jump to first unread room.": "읽지 않은 첫 방으로 건너뜁니다.", "Jump to first invite.": "첫 초대로 건너뜁니다.", "Room %(name)s": "%(name)s 방", + "Recent rooms": "최근 방", "No identity server is configured so you cannot add an email address in order to reset your password in the future.": "설정된 ID 서버가 없어서 이후 비밀번호를 초기화하기 위한 이메일 주소를 추가할 수 없습니다.", "%(count)s unread messages including mentions.|one": "1개의 읽지 않은 언급.", "%(count)s unread messages.|one": "1개의 읽지 않은 메시지.", @@ -1570,6 +1650,8 @@ "Whether you're using %(brand)s on a device where touch is the primary input mechanism": "터치가 기본 입력 방식인 기기에서 %(brand)s을 사용하는지 여부", "Whether you're using %(brand)s as an installed Progressive Web App": "%(brand)s을 설치형 프로그레시브 웹 앱으로 사용하는지 여부", "Your user agent": "사용자 에이전트", + "If you cancel now, you won't complete verifying the other user.": "지금 취소하면 다른 사용자 확인이 완료될 수 없습니다.", + "If you cancel now, you won't complete verifying your other session.": "지금 취소하면 당신의 다른 세션을 검증할 수 없습니다.", "Cancel entering passphrase?": "암호 입력을 취소하시겠습니까?", "Setting up keys": "키 설정", "Verify this session": "이 세션 검증", diff --git a/src/i18n/strings/lt.json b/src/i18n/strings/lt.json index 77ea24f917..9bdbb7a6f7 100644 --- a/src/i18n/strings/lt.json +++ b/src/i18n/strings/lt.json @@ -293,6 +293,7 @@ "(~%(count)s results)|one": "(~%(count)s rezultatas)", "Upload avatar": "Įkelti pseudoportretą", "Settings": "Nustatymai", + "Community Invites": "Bendruomenės pakvietimai", "%(roomName)s does not exist.": "%(roomName)s neegzistuoja.", "%(roomName)s is not accessible at this time.": "%(roomName)s šiuo metu nėra pasiekiamas.", "Muted Users": "Nutildyti naudotojai", @@ -452,6 +453,9 @@ "Not a valid %(brand)s keyfile": "Negaliojantis %(brand)s rakto failas", "Authentication check failed: incorrect password?": "Autentifikavimo patikra nepavyko: neteisingas slaptažodis?", "Send analytics data": "Siųsti analitinius duomenis", + "Incoming voice call from %(name)s": "Įeinantis balso skambutis nuo %(name)s", + "Incoming video call from %(name)s": "Įeinantis vaizdo skambutis nuo %(name)s", + "Incoming call from %(name)s": "Įeinantis skambutis nuo %(name)s", "Change Password": "Keisti slaptažodį", "Authentication": "Tapatybės nustatymas", "The maximum permitted number of widgets have already been added to this room.": "Į šį kambarį jau yra pridėtas didžiausias leidžiamas valdiklių skaičius.", @@ -655,6 +659,7 @@ "Next": "Toliau", "Private Chat": "Privatus pokalbis", "Public Chat": "Viešas pokalbis", + "There are no visible files in this room": "Šiame kambaryje nėra matomų failų", "Add a Room": "Pridėti kambarį", "Add a User": "Pridėti naudotoją", "Long Description (HTML)": "Ilgasis aprašas (HTML)", @@ -665,6 +670,7 @@ "For security, this session has been signed out. Please sign in again.": "Saugumo sumetimais, šis seansas buvo atjungtas. Prisijunkite dar kartą.", "Your Communities": "Jūsų bendruomenės", "Create a new community": "Sukurti naują bendruomenę", + "You have no visible notifications": "Jūs neturite matomų pranešimų", "Failed to perform homeserver discovery": "Nepavyko atlikti serverio radimo", "Error: Problem communicating with the given homeserver.": "Klaida: Problemos susisiekiant su nurodytu namų serveriu.", "This server does not support authentication with a phone number.": "Šis serveris nepalaiko tapatybės nustatymo telefono numeriu.", @@ -813,6 +819,9 @@ "Upload %(count)s other files|one": "Įkelti %(count)s kitą failą", "Cancel All": "Atšaukti visus", "Upload Error": "Įkėlimo klaida", + "Explore": "Žvalgyti", + "Filter": "Filtruoti", + "Filter rooms…": "Filtruoti kambarius…", "This room is not public. You will not be able to rejoin without an invite.": "Šis kambarys nėra viešas. Jūs negalėsite vėl prie jo prisijungti be pakvietimo.", "Are you sure you want to leave the room '%(roomName)s'?": "Ar tikrai norite išeiti iš kambario %(roomName)s?", "%(creator)s created and configured the room.": "%(creator)s sukūrė ir sukonfigūravo kambarį.", @@ -924,6 +933,8 @@ "Shift": "Shift", "Super": "Super", "Ctrl": "Ctrl", + "If you cancel now, you won't complete verifying the other user.": "Jei atšauksite dabar, neužbaigsite kito vartotojo patvirtinimo.", + "If you cancel now, you won't complete verifying your other session.": "Jei atšauksite dabar, neužbaigsite kito seanso patvirtinimo.", "Verify this session": "Patvirtinti šį seansą", "%(senderDisplayName)s changed the room name from %(oldRoomName)s to %(newRoomName)s.": "%(senderDisplayName)s pakeitė kambario pavadinimą iš %(oldRoomName)s į %(newRoomName)s.", "Show display name changes": "Rodyti rodomo vardo pakeitimus", @@ -976,6 +987,7 @@ "Set a display name:": "Nustatyti rodomą vardą:", "For maximum security, this should be different from your account password.": "Maksimaliam saugumui užtikrinti ji turi skirtis nuo jūsų paskyros slaptažodžio.", "Set up encryption": "Nustatyti šifravimą", + "COPY": "Kopijuoti", "Enter recovery key": "Įveskite atgavimo raktą", "Keep going...": "Tęskite...", "Syncing...": "Sinchronizuojama...", @@ -1219,6 +1231,70 @@ "Cancelling…": "Atšaukiama…", "They match": "Jie sutampa", "They don't match": "Jie nesutampa", + "Dog": "Šuo", + "Cat": "Katė", + "Lion": "Liūtas", + "Horse": "Arklys", + "Unicorn": "Vienaragis", + "Pig": "Kiaulė", + "Elephant": "Dramblys", + "Rabbit": "Triušis", + "Panda": "Panda", + "Rooster": "Gaidys", + "Penguin": "Pingvinas", + "Turtle": "Vėžlys", + "Fish": "Žuvis", + "Octopus": "Aštunkojis", + "Butterfly": "Drugelis", + "Flower": "Gėlė", + "Tree": "Medis", + "Cactus": "Kaktusas", + "Mushroom": "Grybas", + "Globe": "Gaublys", + "Moon": "Mėnulis", + "Cloud": "Debesis", + "Fire": "Ugnis", + "Banana": "Bananas", + "Apple": "Obuolys", + "Strawberry": "Braškė", + "Corn": "Kukurūzas", + "Pizza": "Pica", + "Cake": "Tortas", + "Heart": "Širdis", + "Smiley": "Šypsenėlė", + "Robot": "Robotas", + "Hat": "Skrybėlė", + "Glasses": "Akiniai", + "Spanner": "Veržliaraktis", + "Santa": "Santa", + "Thumbs up": "Liuks", + "Umbrella": "Skėtis", + "Hourglass": "Smėlio laikrodis", + "Clock": "Laikrodis", + "Gift": "Dovana", + "Light bulb": "Lemputė", + "Book": "Knyga", + "Pencil": "Pieštukas", + "Paperclip": "Sąvaržėlė", + "Scissors": "Žirklės", + "Lock": "Spyna", + "Key": "Raktas", + "Hammer": "Plaktukas", + "Telephone": "Telefonas", + "Flag": "Vėliava", + "Train": "Traukinys", + "Bicycle": "Dviratis", + "Aeroplane": "Lėktuvas", + "Rocket": "Raketa", + "Trophy": "Trofėjus", + "Ball": "Kamuolys", + "Guitar": "Gitara", + "Trumpet": "Trimitas", + "Bell": "Varpas", + "Anchor": "Inkaras", + "Headphones": "Ausinės", + "Folder": "Aplankas", + "Pin": "Smeigtukas", "Other users may not trust it": "Kiti vartotojai gali nepasitikėti", "Upgrade": "Atnaujinti", "From %(deviceName)s (%(deviceId)s)": "Iš %(deviceName)s (%(deviceId)s)", @@ -1352,7 +1428,9 @@ "Unable to reject invite": "Nepavyko atmesti pakvietimo", "Whether you're using %(brand)s as an installed Progressive Web App": "Ar naudojate %(brand)s kaip įdiegtą progresyviąją žiniatinklio programą", "Your user agent": "Jūsų vartotojo agentas", + "Invite only": "Tik pakviestiems", "You can only join it with a working invite.": "Jūs galite prisijungti tik su veikiančiu pakvietimu.", + "If you cancel now, you won't complete your operation.": "Jei atšauksite dabar, jūs neužbaigsite savo operacijos.", "Cancel entering passphrase?": "Atšaukti slaptafrazės įvedimą?", "Room name or address": "Kambario pavadinimas arba adresas", "%(name)s is requesting verification": "%(name)s prašo patvirtinimo", diff --git a/src/i18n/strings/lv.json b/src/i18n/strings/lv.json index 759a57cd35..6369ffed82 100644 --- a/src/i18n/strings/lv.json +++ b/src/i18n/strings/lv.json @@ -4,6 +4,7 @@ "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s apstiprināja uzaicinājumu no %(displayName)s.", "Account": "Konts", "Access Token:": "Pieejas tokens:", + "Active call (%(roomName)s)": "Aktīvs zvans (%(roomName)s)", "Add": "Pievienot", "Add a topic": "Pievienot tematu", "Admin": "Administrators", @@ -118,6 +119,9 @@ "I have verified my email address": "Mana epasta adrese ir verificēta", "Import": "Importēt", "Import E2E room keys": "Importēt E2E istabas atslēgas", + "Incoming call from %(name)s": "Ienākošs zvans no %(name)s", + "Incoming video call from %(name)s": "Ienākošs VIDEO zvans no %(name)s", + "Incoming voice call from %(name)s": "Ienākošs AUDIO zvans no %(name)s", "Incorrect username and/or password.": "Nepareizs lietotājvārds un/vai parole.", "Incorrect verification code": "Nepareizs verifikācijas kods", "Invalid Email Address": "Nepareiza epasta adrese", @@ -188,6 +192,7 @@ "%(brand)s was not given permission to send notifications - please try again": "%(brand)s nav piešķirta atļauja nosūtīt paziņojumus. Lūdzu mēģini vēlreiz", "%(brand)s version:": "%(brand)s versija:", "Unable to enable Notifications": "Nav iespējams iespējot paziņojumus", + "You have no visible notifications": "Tev nav redzamo paziņojumu", "This will allow you to reset your password and receive notifications.": "Tas atļaus Tev atiestatīt paroli un saņemt paziņojumus.", "Room %(roomId)s not visible": "Istaba %(roomId)s nav redzama", "%(roomName)s does not exist.": "%(roomName)s neeksistē.", @@ -258,6 +263,7 @@ "Unable to verify email address.": "Nav iespējams apstiprināt epasta adresi.", "Unban": "Atbanot/atcelt pieejas liegumu", "Unable to capture screen": "Neizdevās uzņemt ekrānattēlu", + "unknown caller": "nezināms zvanītājs", "unknown error code": "nezināms kļūdas kods", "Unmute": "Ieslēgt skaņu", "Unnamed Room": "Istaba bez nosaukuma", @@ -318,6 +324,7 @@ "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s nomainīja istabas avataru uz ", "Upload an avatar:": "Augšuplādē avataru (profila attēlu):", "This server does not support authentication with a phone number.": "Šis serveris neatbalsta autentifikāciju pēc telefona numura.", + "There are no visible files in this room": "Nav redzamu failu šajā istabā", "Room": "Istaba", "Connectivity to the server has been lost.": "Savienojums ar serveri pārtrūka.", "Sent messages will be stored until your connection has returned.": "Nosūtītās ziņas tiks saglabātas tiklīdz savienojums tiks atjaunots.", @@ -478,6 +485,7 @@ "World readable": "Pieejama ikvienam un no visurienes", "Failed to remove tag %(tagName)s from room": "Neizdevās istabai noņemt birku %(tagName)s", "Failed to add tag %(tagName)s to room": "Neizdevās istabai pievienot birku %(tagName)s", + "Community Invites": "Uzaicinājums uz kopienu", "Banned by %(displayName)s": "Nobanojis/bloķējis (liedzis piekļuvi) %(displayName)s", "Members only (since the point in time of selecting this option)": "Tikai biedri (no šī parametra iestatīšanas brīža)", "Members only (since they were invited)": "Tikai biedri (no to uzaicināšanas brīža)", diff --git a/src/i18n/strings/nb_NO.json b/src/i18n/strings/nb_NO.json index 3b21517865..f0c9827c06 100644 --- a/src/i18n/strings/nb_NO.json +++ b/src/i18n/strings/nb_NO.json @@ -270,6 +270,37 @@ "Decline": "Avslå", "Accept": "Godta", "Start": "Begynn", + "Dog": "Hund", + "Cat": "Katt", + "Horse": "Hest", + "Unicorn": "Enhjørning", + "Elephant": "Elefant", + "Panda": "Panda", + "Penguin": "Pingvin", + "Fish": "Fisk", + "Octopus": "Blekksprut", + "Flower": "Blomst", + "Mushroom": "Sopp", + "Moon": "Måne", + "Banana": "Banan", + "Strawberry": "Jordbær", + "Pizza": "Pizza", + "Cake": "Kaker", + "Robot": "Robot", + "Glasses": "Briller", + "Umbrella": "Paraply", + "Clock": "Klokke", + "Pencil": "Blyant", + "Scissors": "Saks", + "Key": "Nøkkel", + "Hammer": "Hammer", + "Flag": "Flagg", + "Bicycle": "Sykkel", + "Trumpet": "Trompet", + "Bell": "Bjelle", + "Anchor": "Anker", + "Headphones": "Hodetelefoner", + "Folder": "Mappe", "Upgrade": "Oppgrader", "Verify": "Bekreft", "Review": "Gjennomgang", @@ -350,6 +381,7 @@ "Idle": "Rolig", "Offline": "Frakoblet", "Unknown": "Ukjent", + "Recent rooms": "Nylige rom", "Settings": "Innstillinger", "Search": "Søk", "Direct Messages": "Direktemeldinger", @@ -421,6 +453,7 @@ "Email address": "E-postadresse", "Skip": "Hopp over", "Share Room Message": "Del rommelding", + "COPY": "KOPIER", "Terms of Service": "Vilkår for bruk", "Service": "Tjeneste", "Summary": "Oppsummering", @@ -456,6 +489,8 @@ "Featured Rooms:": "Fremhevede rom:", "Everyone": "Alle", "Description": "Beskrivelse", + "Explore": "Utforsk", + "Filter": "Filter", "Logout": "Logg ut", "Preview": "Forhåndsvisning", "View": "Vis", @@ -520,6 +555,28 @@ "Got It": "Skjønner", "Scan this unique code": "Skann denne unike koden", "or": "eller", + "Lion": "Løve", + "Pig": "Gris", + "Rabbit": "Kanin", + "Rooster": "Hane", + "Turtle": "Skilpadde", + "Butterfly": "Sommerfugl", + "Tree": "Tre", + "Cactus": "Kaktus", + "Globe": "Klode", + "Heart": "Hjerte", + "Smiley": "Smilefjes", + "Hat": "Hatt", + "Thumbs up": "Tommel opp", + "Hourglass": "Timeglass", + "Gift": "Gave", + "Light bulb": "Lyspære", + "Paperclip": "Binders", + "Telephone": "Telefon", + "Rocket": "Rakett", + "Trophy": "Trofé", + "Ball": "Ball", + "Guitar": "Gitar", "Later": "Senere", "Accept to continue:": "Aksepter for å fortsette:", "Public Name": "Offentlig navn", @@ -729,6 +786,7 @@ "Search failed": "Søket mislyktes", "No more results": "Ingen flere resultater", "Fill screen": "Fyll skjermen", + "Your profile": "Din profil", "Session verified": "Økten er verifisert", "Sign in instead": "Logg inn i stedet", "I have verified my email address": "Jeg har verifisert E-postadressen min", @@ -827,6 +885,7 @@ "Room %(name)s": "Rom %(name)s", "Start chatting": "Begynn å chatte", "%(count)s unread messages.|one": "1 ulest melding.", + "Unread mentions.": "Uleste nevninger.", "Unread messages.": "Uleste meldinger.", "Send as message": "Send som en melding", "You don't currently have any stickerpacks enabled": "Du har ikke skrudd på noen klistremerkepakker for øyeblikket", @@ -924,11 +983,14 @@ "Doesn't look like a valid phone number": "Det ser ikke ut som et gyldig telefonnummer", "Use lowercase letters, numbers, dashes and underscores only": "Bruk kun småbokstaver, numre, streker og understreker", "You must join the room to see its files": "Du må bli med i rommet for å se filene dens", + "There are no visible files in this room": "Det er ingen synlig filer i dette rommet", "Failed to upload image": "Mislyktes i å laste opp bildet", "Featured Users:": "Fremhevede brukere:", + "Filter rooms…": "Filtrer rom …", "Signed Out": "Avlogget", "%(creator)s created and configured the room.": "%(creator)s opprettet og satte opp rommet.", "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Opprett et samfunn for å samle sammen brukere og rom! Lag en tilpasset hjemmeside for å markere territoriet ditt i Matrix-universet.", + "You have no visible notifications": "Du har ingen synlige varsler", "Find a room… (e.g. %(exampleRoom)s)": "Finn et rom… (f.eks. %(exampleRoom)s)", "If you can't find the room you're looking for, ask for an invite or Create a new room.": "Hvis du ikke finner rommet du leter etter, be om en invitasjon eller Opprett et nytt rom.", "Active call": "Aktiv samtale", @@ -963,6 +1025,7 @@ "Avoid sequences": "Unngå sekvenser", "Avoid recent years": "Unngå nylige år", "Failed to join room": "Mislyktes i å bli med i rommet", + "unknown caller": "ukjent oppringer", "Cancelling…": "Avbryter …", "They match": "De samsvarer", "They don't match": "De samsvarer ikke", @@ -1092,6 +1155,7 @@ "This is a top-10 common password": "Dette er et topp-10 vanlig passord", "This is a top-100 common password": "Dette er et topp-100 vanlig passord", "Message Pinning": "Meldingsklistring", + "Aeroplane": "Fly", "Verify all your sessions to ensure your account & messages are safe": "Verifiser alle øktene dine for å sikre at kontoen og meldingene dine er trygge", "From %(deviceName)s (%(deviceId)s)": "Fra %(deviceName)s (%(deviceId)s)", "Decline (%(counter)s)": "Avslå (%(counter)s)", @@ -1112,6 +1176,7 @@ "Muted Users": "Dempede brukere", "Incorrect verification code": "Ugyldig verifiseringskode", "Unable to add email address": "Klarte ikke å legge til E-postadressen", + "Invite only": "Kun ved invitasjon", "Close preview": "Lukk forhåndsvisning", "Failed to kick": "Mislyktes i å sparke ut", "Unban this user?": "Vil du oppheve bannlysingen av denne brukeren?", @@ -1213,6 +1278,7 @@ "Mention": "Nevn", "Community Name": "Samfunnets navn", "Dismiss read marker and jump to bottom": "Avføy lesekvitteringen og hopp ned til bunnen", + "If you cancel now, you won't complete verifying your other session.": "Hvis du avbryter nå, vil du ikke ha fullført verifiseringen av den andre økten din.", "Room name or address": "Rommets navn eller adresse", "Light": "Lys", "Dark": "Mørk", @@ -1225,10 +1291,12 @@ "Encryption upgrade available": "Krypteringsoppdatering tilgjengelig", "Verify the new login accessing your account: %(name)s": "Verifiser den nye påloggingen som vil ha tilgang til kontoen din: %(name)s", "Restart": "Start på nytt", + "Font scaling": "Skrifttypeskalering", "Font size": "Skriftstørrelse", "You've successfully verified this user.": "Du har vellykket verifisert denne brukeren.", "Waiting for your other session, %(deviceName)s (%(deviceId)s), to verify…": "Venter på at den andre økten din, %(deviceName)s (%(deviceId)s), skal verifisere …", "Waiting for your other session to verify…": "Venter på at den andre økten din skal verifisere …", + "Santa": "Julenisse", "Delete %(count)s sessions|other": "Slett %(count)s økter", "Delete %(count)s sessions|one": "Slett %(count)s økt", "Backup version: ": "Sikkerhetskopiversjon: ", @@ -1241,10 +1309,15 @@ "Remove %(phone)s?": "Vil du fjerne %(phone)s?", "Online for %(duration)s": "På nett i %(duration)s", "Favourites": "Favoritter", + "Create room": "Opprett et rom", "People": "Folk", "Sort by": "Sorter etter", "Activity": "Aktivitet", "A-Z": "A-Å", + "Unread rooms": "Uleste rom", + "Always show first": "Alltid vis først", + "Show": "Vis", + "Message preview": "Meldingsforhåndsvisning", "Leave Room": "Forlat rommet", "This room has no local addresses": "Dette rommet har ikke noen lokale adresser", "Waiting for you to accept on your other session…": "Venter på at du aksepterer på den andre økten din …", diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json index 2a2160efae..bb0fb5def6 100644 --- a/src/i18n/strings/nl.json +++ b/src/i18n/strings/nl.json @@ -43,6 +43,7 @@ "Continue": "Doorgaan", "Cancel": "Annuleren", "Accept": "Aannemen", + "Active call (%(roomName)s)": "Actieve oproep (%(roomName)s)", "Add": "Toevoegen", "Add a topic": "Voeg een onderwerp toe", "Admin Tools": "Beheerdersgereedschap", @@ -181,6 +182,9 @@ "I have verified my email address": "Ik heb mijn e-mailadres geverifieerd", "Import": "Inlezen", "Import E2E room keys": "E2E-gesprekssleutels inlezen", + "Incoming call from %(name)s": "Inkomende oproep van %(name)s", + "Incoming video call from %(name)s": "Inkomende video-oproep van %(name)s", + "Incoming voice call from %(name)s": "Inkomende spraakoproep van %(name)s", "Incorrect username and/or password.": "Onjuiste gebruikersnaam en/of wachtwoord.", "Incorrect verification code": "Onjuiste verificatiecode", "Invalid Email Address": "Ongeldig e-mailadres", @@ -271,6 +275,7 @@ "%(senderName)s unbanned %(targetName)s.": "%(senderName)s heeft %(targetName)s ontbannen.", "Unable to capture screen": "Kan geen schermafdruk maken", "Unable to enable Notifications": "Kan meldingen niet inschakelen", + "unknown caller": "onbekende beller", "Unmute": "Niet dempen", "Unnamed Room": "Naamloos gesprek", "Uploading %(filename)s and %(count)s others|zero": "%(filename)s wordt geüpload", @@ -304,6 +309,7 @@ "You do not have permission to post to this room": "U heeft geen toestemming actief aan dit gesprek deel te nemen", "You have disabled URL previews by default.": "U heeft URL-voorvertoningen standaard uitgeschakeld.", "You have enabled URL previews by default.": "U heeft URL-voorvertoningen standaard ingeschakeld.", + "You have no visible notifications": "U heeft geen zichtbare meldingen", "You must register to use this functionality": "U dient u te registreren om deze functie te gebruiken", "You need to be able to invite users to do that.": "Dit vereist de bevoegdheid gebruikers uit te nodigen.", "You need to be logged in.": "Hiervoor dient u aangemeld te zijn.", @@ -313,6 +319,7 @@ "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "U zult deze veranderingen niet terug kunnen draaien, daar u de gebruiker tot uw eigen niveau promoveert.", "This server does not support authentication with a phone number.": "Deze server biedt geen ondersteuning voor authenticatie met een telefoonnummer.", "An error occurred: %(error_string)s": "Er is een fout opgetreden: %(error_string)s", + "There are no visible files in this room": "Er zijn geen zichtbare bestanden in dit gesprek", "Room": "Gesprek", "Connectivity to the server has been lost.": "De verbinding met de server is verbroken.", "Sent messages will be stored until your connection has returned.": "Verstuurde berichten zullen opgeslagen worden totdat uw verbinding hersteld is.", @@ -468,6 +475,7 @@ "Unnamed room": "Naamloos gesprek", "World readable": "Leesbaar voor iedereen", "Guests can join": "Gasten kunnen toetreden", + "Community Invites": "Gemeenschapsuitnodigingen", "Banned by %(displayName)s": "Verbannen door %(displayName)s", "Members only (since the point in time of selecting this option)": "Alleen deelnemers (vanaf het moment dat deze optie wordt geselecteerd)", "Members only (since they were invited)": "Alleen deelnemers (vanaf het moment dat ze uitgenodigd zijn)", @@ -825,6 +833,7 @@ "Share Community": "Gemeenschap delen", "Share Room Message": "Bericht uit gesprek delen", "Link to selected message": "Koppeling naar geselecteerd bericht", + "COPY": "KOPIËREN", "Share Message": "Bericht delen", "You can't send any messages until you review and agree to our terms and conditions.": "U kunt geen berichten sturen totdat u onze algemene voorwaarden heeft gelezen en aanvaard.", "No Audio Outputs detected": "Geen geluidsuitgangen gedetecteerd", @@ -927,6 +936,69 @@ "Verify this user by confirming the following emoji appear on their screen.": "Verifieer deze gebruiker door te bevestigen dat hun scherm de volgende emoji toont.", "Verify this user by confirming the following number appears on their screen.": "Verifieer deze gebruiker door te bevestigen dat hun scherm het volgende getal toont.", "Unable to find a supported verification method.": "Kan geen ondersteunde verificatiemethode vinden.", + "Dog": "Hond", + "Cat": "Kat", + "Lion": "Leeuw", + "Horse": "Paard", + "Unicorn": "Eenhoorn", + "Pig": "Varken", + "Elephant": "Olifant", + "Rabbit": "Konijn", + "Panda": "Panda", + "Rooster": "Haan", + "Penguin": "Pinguïn", + "Turtle": "Schildpad", + "Fish": "Vis", + "Octopus": "Octopus", + "Butterfly": "Vlinder", + "Flower": "Bloem", + "Tree": "Boom", + "Cactus": "Cactus", + "Mushroom": "Paddenstoel", + "Globe": "Wereldbol", + "Moon": "Maan", + "Cloud": "Wolk", + "Fire": "Vuur", + "Banana": "Banaan", + "Apple": "Appel", + "Strawberry": "Aardbei", + "Corn": "Maïs", + "Pizza": "Pizza", + "Cake": "Taart", + "Heart": "Hart", + "Smiley": "Smiley", + "Robot": "Robot", + "Hat": "Hoed", + "Glasses": "Bril", + "Spanner": "Moersleutel", + "Santa": "Kerstman", + "Thumbs up": "Duim omhoog", + "Umbrella": "Paraplu", + "Hourglass": "Zandloper", + "Clock": "Klok", + "Gift": "Cadeau", + "Light bulb": "Gloeilamp", + "Book": "Boek", + "Pencil": "Potlood", + "Paperclip": "Paperclip", + "Scissors": "Schaar", + "Key": "Sleutel", + "Hammer": "Hamer", + "Telephone": "Telefoon", + "Flag": "Vlag", + "Train": "Trein", + "Bicycle": "Fiets", + "Aeroplane": "Vliegtuig", + "Rocket": "Raket", + "Trophy": "Trofee", + "Ball": "Bal", + "Guitar": "Gitaar", + "Trumpet": "Trompet", + "Bell": "Bel", + "Anchor": "Anker", + "Headphones": "Koptelefoon", + "Folder": "Map", + "Pin": "Speld", "Yes": "Ja", "No": "Nee", "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.": "We hebben u een e-mail gestuurd om uw adres te verifiëren. Gelieve de daarin gegeven aanwijzingen op te volgen en dan op de knop hieronder te klikken.", @@ -1089,6 +1161,8 @@ "This homeserver would like to make sure you are not a robot.": "Deze thuisserver wil graag weten of u geen robot bent.", "Please review and accept all of the homeserver's policies": "Gelieve het beleid van de thuisserver door te nemen en te aanvaarden", "Please review and accept the policies of this homeserver:": "Gelieve het beleid van deze thuisserver door te nemen en te aanvaarden:", + "Your Modular server": "Uw Modular-server", + "Enter the location of your Modular homeserver. It may use your own domain name or be a subdomain of modular.im.": "Voer de locatie van uw Modular-thuisserver in. Deze kan uw eigen domeinnaam gebruiken, of een subdomein van modular.im zijn.", "Server Name": "Servernaam", "The username field must not be blank.": "Het gebruikersnaamveld mag niet leeg zijn.", "Username": "Gebruikersnaam", @@ -1265,6 +1339,7 @@ "Some characters not allowed": "Sommige tekens zijn niet toegestaan", "Create your Matrix account on ": "Maak uw Matrix-account op aan", "Add room": "Gesprek toevoegen", + "Your profile": "Uw profiel", "Your Matrix account on ": "Uw Matrix-account op ", "Failed to get autodiscovery configuration from server": "Ophalen van auto-ontdekkingsconfiguratie van server is mislukt", "Invalid base_url for m.homeserver": "Ongeldige base_url voor m.homeserver", @@ -1431,6 +1506,9 @@ "Set an email for account recovery. Use email to optionally be discoverable by existing contacts.": "Stel een e-mailadres voor accountherstel in. Gebruik eventueel een e-mailadres om vindbaar te zijn voor bestaande contacten.", "Enter your custom homeserver URL What does this mean?": "Voer uw aangepaste thuisserver-URL in Wat betekent dit?", "Enter your custom identity server URL What does this mean?": "Voer uw aangepaste identiteitsserver-URL in Wat betekent dit?", + "Explore": "Ontdekken", + "Filter": "Filteren", + "Filter rooms…": "Filter de gesprekken…", "Preview": "Voorbeeld", "View": "Bekijken", "Find a room…": "Zoek een gesprek…", @@ -1443,6 +1521,7 @@ "Remove %(count)s messages|one": "1 bericht verwijderen", "%(count)s unread messages including mentions.|other": "%(count)s ongelezen berichten, inclusief vermeldingen.", "%(count)s unread messages.|other": "%(count)s ongelezen berichten.", + "Unread mentions.": "Ongelezen vermeldingen.", "Show image": "Afbeelding tonen", "Please create a new issue on GitHub so that we can investigate this bug.": "Maak een nieuw rapport aan op GitHub opdat we dit probleem kunnen onderzoeken.", "e.g. my-room": "bv. mijn-gesprek", @@ -1536,6 +1615,7 @@ "They match": "Ze komen overeen", "They don't match": "Ze komen niet overeen", "To be secure, do this in person or use a trusted way to communicate.": "Doe dit voor de zekerheid onder vier ogen, of via een betrouwbaar communicatiemedium.", + "Lock": "Hangslot", "Verify yourself & others to keep your chats safe": "Verifieer uzelf en anderen om uw gesprekken veilig te houden", "Other users may not trust it": "Mogelijk wantrouwen anderen het", "Upgrade": "Bijwerken", @@ -1559,6 +1639,8 @@ "Whether you're using %(brand)s on a device where touch is the primary input mechanism": "Of u %(brand)s op een apparaat gebruikt waarop een aanraakscherm de voornaamste invoermethode is", "Whether you're using %(brand)s as an installed Progressive Web App": "Of u %(brand)s gebruikt als een geïnstalleerde Progressive-Web-App", "Your user agent": "Uw gebruikersagent", + "If you cancel now, you won't complete verifying the other user.": "Als u nu annuleert zult u de andere gebruiker niet verifiëren.", + "If you cancel now, you won't complete verifying your other session.": "Als u nu annuleert zult u uw andere sessie niet verifiëren.", "Cancel entering passphrase?": "Wachtwoordinvoer annuleren?", "Show typing notifications": "Typmeldingen weergeven", "Verify this session by completing one of the following:": "Verifieer deze sessie door een van het volgende te doen:", @@ -1628,6 +1710,7 @@ "Everyone in this room is verified": "Iedereen in dit gesprek is geverifieerd", "Mod": "Mod", "rooms.": "gesprekken.", + "Recent rooms": "Actuele gesprekken", "Direct Messages": "Tweegesprekken", "If disabled, messages from encrypted rooms won't appear in search results.": "Dit moet aan staan om te kunnen zoeken in versleutelde gesprekken.", "Indexed rooms:": "Geïndexeerde gesprekken:", @@ -1685,6 +1768,7 @@ "Encrypted by an unverified session": "Versleuteld door een niet-geverifieerde sessie", "Unencrypted": "Onversleuteld", "Encrypted by a deleted session": "Versleuteld door een verwijderde sessie", + "Invite only": "Enkel op uitnodiging", "Close preview": "Voorbeeld sluiten", "Failed to deactivate user": "Deactiveren van gebruiker is mislukt", "Send a reply…": "Verstuur een antwoord…", @@ -1896,6 +1980,7 @@ "Confirm adding this phone number by using Single Sign On to prove your identity.": "Bevestig uw identiteit met Eenmalige Aanmelding om dit telefoonnummer toe te voegen.", "Confirm adding phone number": "Bevestig toevoegen van het telefoonnummer", "Click the button below to confirm adding this phone number.": "Klik op de knop hieronder om het toevoegen van dit telefoonnummer te bevestigen.", + "If you cancel now, you won't complete your operation.": "Als u de operatie afbreekt kunt u haar niet voltooien.", "Review where you’re logged in": "Kijk na waar u aangemeld bent", "New login. Was this you?": "Nieuwe aanmelding - was u dat?", "%(name)s is requesting verification": "%(name)s verzoekt om verificatie", @@ -1920,6 +2005,7 @@ "Support adding custom themes": "Sta maatwerkthema's toe", "Opens chat with the given user": "Start een tweegesprek met die gebruiker", "Sends a message to the given user": "Zendt die gebruiker een bericht", + "Font scaling": "Lettergrootte", "Verify all your sessions to ensure your account & messages are safe": "Controleer al uw sessies om zeker te zijn dat uw account & berichten veilig zijn", "Verify the new login accessing your account: %(name)s": "Verifieer de nieuwe aanmelding op uw account: %(name)s", "Confirm your account deactivation by using Single Sign On to prove your identity.": "Bevestig uw intentie deze account te sluiten door met Single Sign On uw identiteit te bewijzen.", diff --git a/src/i18n/strings/nn.json b/src/i18n/strings/nn.json index 971abe87e8..52cbfc75e1 100644 --- a/src/i18n/strings/nn.json +++ b/src/i18n/strings/nn.json @@ -182,6 +182,11 @@ "When I'm invited to a room": "Når eg blir invitert til eit rom", "Call invitation": "Samtaleinvitasjonar", "Messages sent by bot": "Meldingar sendt frå ein bot", + "Active call (%(roomName)s)": "Pågåande samtale (%(roomName)s)", + "unknown caller": "ukjend ringar", + "Incoming voice call from %(name)s": "Innkommande talesamtale frå %(name)s", + "Incoming video call from %(name)s": "%(name)s ynskjer ei videosamtale", + "Incoming call from %(name)s": "%(name)s ynskjer ei samtale", "Decline": "Sei nei", "Accept": "Sei ja", "Error": "Noko gjekk gale", @@ -315,6 +320,7 @@ "Forget room": "Gløym rom", "Search": "Søk", "Share room": "Del rom", + "Community Invites": "Fellesskapsinvitasjonar", "Invites": "Invitasjonar", "Favourites": "Yndlingar", "Rooms": "Rom", @@ -593,6 +599,7 @@ "Share Community": "Del Fellesskap", "Share Room Message": "Del Rommelding", "Link to selected message": "Lenk til den valde meldinga", + "COPY": "KOPIER", "Private Chat": "Lukka Samtale", "Public Chat": "Offentleg Samtale", "Reject invitation": "Sei nei til innbyding", @@ -627,6 +634,7 @@ "Name": "Namn", "You must register to use this functionality": "Du må melda deg inn for å bruka denne funksjonen", "You must join the room to see its files": "Du må fare inn i rommet for å sjå filene dets", + "There are no visible files in this room": "Det er ingen synlege filer i dette rommet", "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

HTML for fellesskapssida di

\n

\n Bruk den Lange Skildringa for å ynskja nye medlemmar velkomen, eller gje ut viktige lenkjer\n

\n

\n Du kan til og med bruka 'img' HTML-taggar!\n

\n", "Add rooms to the community summary": "Legg rom til i samandraget for fellesskapet", "Which rooms would you like to add to this summary?": "Kva rom ynskjer du å leggja til i samanfattinga?", @@ -683,6 +691,7 @@ "Your Communities": "Dine fellesskap", "Error whilst fetching joined communities": "Noko gjekk gale under innlasting av fellesskapa du med er i", "Create a new community": "Opprett nytt fellesskap", + "You have no visible notifications": "Du har ingen synlege varsel", "Members": "Medlemmar", "Invite to this room": "Inviter til dette rommet", "Files": "Filer", @@ -845,6 +854,7 @@ "You have %(count)s unread notifications in a prior version of this room.|other": "Du har %(count)s uleste varslingar i ein tidligare versjon av dette rommet.", "You have %(count)s unread notifications in a prior version of this room.|one": "Du har %(count)s ulest varsel i ein tidligare versjon av dette rommet.", "Guest": "Gjest", + "Your profile": "Din profil", "Could not load user profile": "Klarde ikkje å laste brukarprofilen", "Your Matrix account on %(serverName)s": "Din Matrix-konto på %(serverName)s", "Your Matrix account on ": "Din Matrix-konto på ", @@ -951,6 +961,8 @@ "Whether or not you're using the 'breadcrumbs' feature (avatars above the room list)": "Om du nyttar funksjonen 'breadcrumbs' (avatarane over romkatalogen)", "Whether you're using %(brand)s as an installed Progressive Web App": "Om din %(brand)s er installert som ein webapplikasjon (Progressive Web App)", "Your user agent": "Din nettlesar (User-Agent)", + "If you cancel now, you won't complete verifying the other user.": "Om du avbryter no, vil dette stoppe verifikasjonsprosessen for den andre brukaren.", + "If you cancel now, you won't complete verifying your other session.": "Om du avbryter no, vil dette stoppe verifikasjonsprosessen for den andre økta.", "Cancel entering passphrase?": "Avbryte inntasting av passfrase ?", "Setting up keys": "Setter opp nøklar", "Verify this session": "Stadfest denne økta", @@ -1010,6 +1022,7 @@ "Error changing power level": "Feil under endring av tilgangsnivå", "An error occurred changing the user's power level. Ensure you have sufficient permissions and try again.": "Ein feil skjedde under endring av tilgangsnivå. Sjekk at du har lov til dette, deretter prøv på nytt.", "Invite users": "Inviter brukarar", + "Invite only": "Berre invitasjonar", "Scroll to most recent messages": "Gå til dei nyaste meldingane", "Close preview": "Lukk førehandsvisninga", "No recent messages by %(user)s found": "Fann ingen nyare meldingar frå %(user)s", @@ -1033,6 +1046,7 @@ "Strikethrough": "Gjennomstreka", "Code block": "Kodeblokk", "Room %(name)s": "Rom %(name)s", + "Recent rooms": "Siste rom", "Direct Messages": "Folk", "Joining room …": "Blir med i rommet…", "Loading …": "Lastar…", @@ -1224,6 +1238,7 @@ "Access your secure message history and set up secure messaging by entering your recovery passphrase.": "Få tilgang til sikker meldingshistorikk og sett opp sikker meldingsutveksling, ved å skrive inn gjennopprettingspassfrasen.", "If you've forgotten your recovery passphrase you can use your recovery key or set up new recovery options": "Har du gløymt gjennopprettingspassfrasen kan du bruka ein gjennopprettingsnøkkel eller setta opp nye gjennopprettingsval", "Help": "Hjelp", + "Explore": "Utforsk", "%(creator)s created and configured the room.": "%(creator)s oppretta og konfiguerte dette rommet.", "%(brand)s failed to get the protocol list from the homeserver. The homeserver may be too old to support third party networks.": "%(brand)s klarde ikkje å hente protokolllister frå heimetenaren. Det kan hende at tenaren er for gammal til å støtte tredjeparts-nettverk", "The homeserver may be unavailable or overloaded.": "Heimetenaren kan vere overlasta eller utilgjengeleg.", @@ -1289,6 +1304,7 @@ "This room is end-to-end encrypted": "Dette rommet er ende-til-ende kryptert", "Encrypted by an unverified session": "Kryptert av ein ikkje-verifisert sesjon", "Encrypted by a deleted session": "Kryptert av ein sletta sesjon", + "Create room": "Lag rom", "Messages in this room are end-to-end encrypted.": "Meldingar i dette rommet er ende-til-ende kryptert.", "Messages in this room are not end-to-end encrypted.": "Meldingar i dette rommet er ikkje ende-til-ende kryptert.", "In encrypted rooms, your messages are secured and only you and the recipient have the unique keys to unlock them.": "Når du nyttar krypterte rom er meldingane din sikra. Berre du og mottakaren har unike nøklar som kan gjere meldingane lesbare.", diff --git a/src/i18n/strings/oc.json b/src/i18n/strings/oc.json index 0cf825eeac..124439a802 100644 --- a/src/i18n/strings/oc.json +++ b/src/i18n/strings/oc.json @@ -29,6 +29,7 @@ "Idle": "Inactiu", "Offline": "Fòra linha", "Unknown": "Desconegut", + "Recent rooms": "Salas recentas", "No rooms to show": "Cap de sala a mostrar", "Unnamed room": "Sala sens nom", "Settings": "Paramètres", diff --git a/src/i18n/strings/pl.json b/src/i18n/strings/pl.json index 5742cf348e..1343405781 100644 --- a/src/i18n/strings/pl.json +++ b/src/i18n/strings/pl.json @@ -75,6 +75,7 @@ "%(targetName)s accepted an invitation.": "%(targetName)s zaakceptował(a) zaproszenie.", "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s zaakceptował(a) zaproszenie dla %(displayName)s.", "Access Token:": "Jednorazowy kod dostępu:", + "Active call (%(roomName)s)": "Aktywne połączenie (%(roomName)s)", "Admin": "Administrator", "Admin Tools": "Narzędzia Administracyjne", "No Microphones detected": "Nie wykryto żadnego mikrofonu", @@ -177,6 +178,9 @@ "I have verified my email address": "Zweryfikowałem swój adres e-mail", "Import": "Importuj", "Import E2E room keys": "Importuj klucze pokoju E2E", + "Incoming call from %(name)s": "Połączenie przychodzące od %(name)s", + "Incoming video call from %(name)s": "Przychodzące połączenie wideo od %(name)s", + "Incoming voice call from %(name)s": "Przychodzące połączenie głosowe od %(name)s", "Incorrect username and/or password.": "Nieprawidłowa nazwa użytkownika i/lub hasło.", "Incorrect verification code": "Nieprawidłowy kod weryfikujący", "Invalid Email Address": "Nieprawidłowy adres e-mail", @@ -295,6 +299,7 @@ "Unable to capture screen": "Nie można zrobić zrzutu ekranu", "Unable to enable Notifications": "Nie można włączyć powiadomień", "To use it, just wait for autocomplete results to load and tab through them.": "Żeby tego użyć, należy poczekać na załadowanie się autouzupełnienia i naciskać przycisk \"Tab\", by wybierać.", + "unknown caller": "nieznany dzwoniący", "Unmute": "Wyłącz wyciszenie", "Unnamed Room": "Pokój bez nazwy", "Uploading %(filename)s and %(count)s others|zero": "Przesyłanie %(filename)s", @@ -324,6 +329,7 @@ "You cannot place VoIP calls in this browser.": "Nie możesz przeprowadzić rozmowy głosowej VoIP w tej przeglądarce.", "You do not have permission to post to this room": "Nie masz uprawnień do pisania w tym pokoju", "You have disabled URL previews by default.": "Masz domyślnie wyłączone podglądy linków.", + "You have no visible notifications": "Nie masz widocznych powiadomień", "You must register to use this functionality": "Musisz się zarejestrować aby móc używać tej funkcji", "You need to be able to invite users to do that.": "Aby to zrobić musisz mieć możliwość zapraszania użytkowników.", "You need to be logged in.": "Musisz być zalogowany.", @@ -332,6 +338,7 @@ "You seem to be uploading files, are you sure you want to quit?": "Wygląda na to, że jesteś w trakcie przesyłania plików; jesteś pewien, że chcesz wyjść?", "Set a display name:": "Ustaw nazwę ekranową:", "This server does not support authentication with a phone number.": "Ten serwer nie wspiera autentykacji za pomocą numeru telefonu.", + "There are no visible files in this room": "Nie ma widocznych plików w tym pokoju", "Connectivity to the server has been lost.": "Połączenie z serwerem zostało utracone.", "Create": "Utwórz", "Online": "Dostępny(-a)", @@ -632,6 +639,7 @@ "Share Link to User": "Udostępnij odnośnik do użytkownika", "Replying": "Odpowiadanie", "Share room": "Udostępnij pokój", + "Community Invites": "Zaproszenia do społeczności", "Banned by %(displayName)s": "Zbanowany przez %(displayName)s", "Muted Users": "Wyciszeni użytkownicy", "Invalid community ID": "Błędne ID społeczności", @@ -680,6 +688,7 @@ "Share Community": "Udostępnij Społeczność", "Share Room Message": "Udostępnij wiadomość w pokoju", "Link to selected message": "Link do zaznaczonej wiadomości", + "COPY": "KOPIUJ", "Unable to reject invite": "Nie udało się odrzucić zaproszenia", "Share Message": "Udostępnij wiadomość", "Collapse Reply Thread": "Zwiń wątek odpowiedzi", @@ -907,6 +916,60 @@ "I don't want my encrypted messages": "Nie chcę moich zaszyfrowanych wiadomości", "You'll lose access to your encrypted messages": "Utracisz dostęp do zaszyfrowanych wiadomości", "Verified!": "Zweryfikowano!", + "Dog": "Pies", + "Cat": "Kot", + "Lion": "Lew", + "Horse": "Koń", + "Unicorn": "Jednorożec", + "Pig": "Świnia", + "Elephant": "Słoń", + "Rabbit": "Królik", + "Panda": "Panda", + "Rooster": "Kogut", + "Penguin": "Pingwin", + "Turtle": "Żółw", + "Fish": "Ryba", + "Octopus": "Ośmiornica", + "Butterfly": "Motyl", + "Flower": "Kwiat", + "Tree": "Drzewo", + "Cactus": "Kaktus", + "Mushroom": "Grzyb", + "Moon": "Księżyc", + "Cloud": "Chmura", + "Fire": "Ogień", + "Banana": "Banan", + "Apple": "Jabłko", + "Strawberry": "Truskawka", + "Corn": "Kukurydza", + "Pizza": "Pizza", + "Cake": "Ciasto", + "Heart": "Serce", + "Robot": "Robot", + "Hat": "Kapelusz", + "Glasses": "Okulary", + "Umbrella": "Parasol", + "Hourglass": "Klepsydra", + "Clock": "Zegar", + "Light bulb": "Żarówka", + "Book": "Książka", + "Pencil": "Ołówek", + "Paperclip": "Spinacz", + "Scissors": "Nożyczki", + "Key": "Klucz", + "Telephone": "Telefon", + "Flag": "Flaga", + "Train": "Pociąg", + "Bicycle": "Rower", + "Aeroplane": "Samolot", + "Rocket": "Rakieta", + "Trophy": "Trofeum", + "Guitar": "Gitara", + "Trumpet": "Trąbka", + "Bell": "Dzwonek", + "Anchor": "Kotwica", + "Headphones": "Słuchawki", + "Folder": "Folder", "Phone Number": "Numer telefonu", "Display Name": "Wyświetlana nazwa", "Set a new account password...": "Ustaw nowe hasło do konta…", @@ -944,6 +1007,12 @@ "Power level": "Poziom uprawnień", "Room Settings - %(roomName)s": "Ustawienia pokoju - %(roomName)s", "Doesn't look like a valid phone number": "To nie wygląda na poprawny numer telefonu", + "Globe": "Ziemia", + "Smiley": "Uśmiech", + "Spanner": "Klucz francuski", + "Santa": "Mikołaj", + "Gift": "Prezent", + "Hammer": "Młotek", "Group & filter rooms by custom tags (refresh to apply changes)": "Grupuj i filtruj pokoje według niestandardowych znaczników (odśwież, aby zastosować zmiany)", "Prepends ¯\\_(ツ)_/¯ to a plain-text message": "Dodaje ¯\\_(ツ)_/¯ na początku wiadomości tekstowej", "Upgrades a room to a new version": "Aktualizuje pokój do nowej wersji", @@ -1055,6 +1124,9 @@ "Verify this user by confirming the following emoji appear on their screen.": "Sprawdź tego użytkownika potwierdzając, że następujące emotikony pojawiają się na ekranie rozmówcy.", "Verify this user by confirming the following number appears on their screen.": "Sprawdź tego użytkownika potwierdzając, że następujące liczby pojawiają się na ekranie rozmówcy.", "Unable to find a supported verification method.": "Nie można znaleźć wspieranej metody weryfikacji.", + "Thumbs up": "Kciuk w górę", + "Ball": "Piłka", + "Pin": "Pinezka", "Accept to continue:": "Zaakceptuj aby kontynuować:", "ID": "ID", "Public Name": "Nazwa publiczna", @@ -1133,6 +1205,8 @@ "eg: @bot:* or example.org": "np: @bot:* lub przykład.pl", "Composer": "Kompozytor", "Autocomplete delay (ms)": "Opóźnienie autouzupełniania (ms)", + "Explore": "Przeglądaj", + "Filter": "Filtruj", "Add room": "Dodaj pokój", "Request media permissions": "Zapytaj o uprawnienia", "Voice & Video": "Głos i wideo", @@ -1168,6 +1242,7 @@ "%(count)s unread messages including mentions.|one": "1 nieprzeczytana wzmianka.", "%(count)s unread messages.|other": "%(count)s nieprzeczytanych wiadomości.", "%(count)s unread messages.|one": "1 nieprzeczytana wiadomość.", + "Unread mentions.": "Nieprzeczytane wzmianki.", "Unread messages.": "Nieprzeczytane wiadomości.", "Join": "Dołącz", "%(creator)s created and configured the room.": "%(creator)s stworzył(a) i skonfigurował(a) pokój.", @@ -1182,6 +1257,7 @@ "e.g. my-room": "np. mój-pokój", "Some characters not allowed": "Niektóre znaki niedozwolone", "Report bugs & give feedback": "Zgłoś błędy & sugestie", + "Filter rooms…": "Filtruj pokoje…", "Find a room…": "Znajdź pokój…", "Find a room… (e.g. %(exampleRoom)s)": "Znajdź pokój… (np. %(exampleRoom)s)", "If you can't find the room you're looking for, ask for an invite or Create a new room.": "Jeżeli nie możesz znaleźć szukanego pokoju, poproś o zaproszenie albo stwórz nowy pokój.", @@ -1310,6 +1386,7 @@ "Other servers": "Inne serwery", "Sign in to your Matrix account on ": "Zaloguj się do swojego konta Matrix na ", "Explore rooms": "Przeglądaj pokoje", + "Your profile": "Twój profil", "Your Matrix account on %(serverName)s": "Twoje konto Matrix na %(serverName)s", "Your Matrix account on ": "Twoje konto Matrix na ", "A verification email will be sent to your inbox to confirm setting your new password.": "E-mail weryfikacyjny zostanie wysłany do skrzynki odbiorczej w celu potwierdzenia ustawienia nowego hasła.", @@ -1341,6 +1418,7 @@ "Session ID:": "Identyfikator sesji:", "Session key:": "Klucz sesji:", "Accept all %(invitedRooms)s invites": "Zaakceptuj wszystkie zaproszenia do %(invitedRooms)s", + "Invite only": "Tylko dla zaproszonych", "Close preview": "Zamknij podgląd", "Send a reply…": "Wyślij odpowiedź…", "Send a message…": "Wyślij wiadomość…", @@ -1386,6 +1464,7 @@ "Bold": "Pogrubienie", "Italics": "Kursywa", "Strikethrough": "Przekreślenie", + "Recent rooms": "Ostatnie pokoje", "Reason: %(reason)s": "Powód: %(reason)s", "Reject & Ignore user": "Odrzuć i zignoruj użytkownika", "Show image": "Pokaż obraz", @@ -1427,6 +1506,7 @@ "Confirm adding this email address by using Single Sign On to prove your identity.": "Potwierdź dodanie tego adresu e-mail przez użycie pojedynczego logowania, aby potwierdzić swoją tożsamość.", "Single Sign On": "Pojedyncze logowanie", "Confirm adding this phone number by using Single Sign On to prove your identity.": "Potwierdź dodanie tego numeru telefonu przez użycie pojedynczego logowania, aby potwierdzić swoją tożsamość.", + "Learn More": "Dowiedz się więcej", "Light": "Jasny", "Dark": "Ciemny", "Font size": "Rozmiar czcionki", diff --git a/src/i18n/strings/pt.json b/src/i18n/strings/pt.json index 021cbbc04a..f72edc150d 100644 --- a/src/i18n/strings/pt.json +++ b/src/i18n/strings/pt.json @@ -99,6 +99,7 @@ "Who can access this room?": "Quem pode acessar esta sala?", "Who can read history?": "Quem pode ler o histórico da sala?", "You do not have permission to post to this room": "Você não tem permissão de postar nesta sala", + "You have no visible notifications": "Voce não possui notificações visíveis", "Sun": "Dom", "Mon": "Seg", "Tue": "Ter", @@ -185,6 +186,7 @@ "Upload an avatar:": "Envie uma imagem de perfil para identificar você:", "This server does not support authentication with a phone number.": "Este servidor não permite a autenticação através de números de telefone.", "An error occurred: %(error_string)s": "Um erro ocorreu: %(error_string)s", + "There are no visible files in this room": "Não há arquivos públicos nesta sala", "Connectivity to the server has been lost.": "A conexão com o servidor foi perdida. Verifique sua conexão de internet.", "Sent messages will be stored until your connection has returned.": "Imagens enviadas ficarão armazenadas até que sua conexão seja reestabelecida.", "Active call": "Chamada ativa", @@ -338,20 +340,25 @@ "Public Chat": "Conversa pública", "Uploading %(filename)s and %(count)s others|zero": "Enviando o arquivo %(filename)s", "Admin Tools": "Ferramentas de administração", + "Incoming video call from %(name)s": "Chamada de vídeo de %(name)s recebida", + "Active call (%(roomName)s)": "Chamada ativa (%(roomName)s)", "Error: Problem communicating with the given homeserver.": "Erro: problema de comunicação com o Servidor de Base fornecido.", "Failed to upload profile picture!": "Falha ao enviar a imagem de perfil!", "Room directory": "Lista de salas", "Failed to fetch avatar URL": "Falha ao obter a URL da imagem de perfil", + "Incoming call from %(name)s": "Chamada de %(name)s recebida", "Last seen": "Último uso", "Drop File Here": "Arraste o arquivo aqui", "Seen by %(userName)s at %(dateTime)s": "Visto por %(userName)s em %(dateTime)s", "%(roomName)s does not exist.": "%(roomName)s não existe.", "Username not available": "Nome de usuária(o) indisponível", "(~%(count)s results)|other": "(~%(count)s resultados)", + "unknown caller": "a pessoa que está chamando é desconhecida", "Start authentication": "Iniciar autenticação", "(~%(count)s results)|one": "(~%(count)s resultado)", "New Password": "Nova senha", "Username invalid: %(errMessage)s": "Nome de usuária(o) inválido: %(errMessage)s", + "Incoming voice call from %(name)s": "Chamada de voz de %(name)s recebida", "If you already have a Matrix account you can log in instead.": "Se você já tem uma conta Matrix, pode também fazer login.", "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Não foi possível conectar ao Servidor de Base. Por favor, confira sua conectividade à internet, garanta que o certificado SSL do Servidor de Base é confiável, e que uma extensão do navegador não esteja bloqueando as requisições de rede.", "Join as voice or video.": "Participar por voz ou por vídeo.", diff --git a/src/i18n/strings/pt_BR.json b/src/i18n/strings/pt_BR.json index dd686edf56..4ed4ca1175 100644 --- a/src/i18n/strings/pt_BR.json +++ b/src/i18n/strings/pt_BR.json @@ -99,6 +99,7 @@ "Who can access this room?": "Quem pode acessar esta sala?", "Who can read history?": "Quem pode ler o histórico da sala?", "You do not have permission to post to this room": "Você não tem permissão de postar nesta sala", + "You have no visible notifications": "Voce não possui notificações visíveis", "Sun": "Dom", "Mon": "Seg", "Tue": "Ter", @@ -185,6 +186,7 @@ "Upload an avatar:": "Enviar uma foto de perfil:", "This server does not support authentication with a phone number.": "Este servidor não permite a autenticação através de números de telefone.", "An error occurred: %(error_string)s": "Um erro ocorreu: %(error_string)s", + "There are no visible files in this room": "Não há arquivos públicos nesta sala", "Connectivity to the server has been lost.": "A conexão com o servidor foi perdida. Verifique sua conexão de internet.", "Sent messages will be stored until your connection has returned.": "Imagens enviadas ficarão armazenadas até que sua conexão seja reestabelecida.", "Active call": "Chamada em andamento", @@ -347,6 +349,7 @@ "This will be your account name on the homeserver, or you can pick a different server.": "Esse será o nome da sua conta no servidor principal, ou então você pode escolher um servidor diferente.", "If you already have a Matrix account you can log in instead.": "Se você já tem uma conta Matrix, pode também fazer login.", "Accept": "Aceitar", + "Active call (%(roomName)s)": "Chamada ativa (%(roomName)s)", "Admin Tools": "Ferramentas de administração", "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Não foi possível conectar ao Servidor de Base. Por favor, confira sua conectividade à internet, garanta que o certificado SSL do Servidor de Base é confiável, e que uma extensão do navegador não esteja bloqueando as requisições de rede.", "Close": "Fechar", @@ -354,6 +357,9 @@ "Decline": "Recusar", "Drop File Here": "Arraste o arquivo aqui", "Failed to upload profile picture!": "Falha ao enviar a foto de perfil!", + "Incoming call from %(name)s": "Recebendo chamada de %(name)s", + "Incoming video call from %(name)s": "Recebendo chamada de vídeo de %(name)s", + "Incoming voice call from %(name)s": "Recebendo chamada de voz de %(name)s", "Join as voice or video.": "Participar por voz ou por vídeo.", "Last seen": "Visto por último às", "No display name": "Nenhum nome e sobrenome", @@ -364,6 +370,7 @@ "Seen by %(userName)s at %(dateTime)s": "Lida por %(userName)s em %(dateTime)s", "Start authentication": "Iniciar autenticação", "This room": "Esta sala", + "unknown caller": "a pessoa que está chamando é desconhecida", "Unnamed Room": "Sala sem nome", "Upload new:": "Enviar novo:", "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (nível de permissão %(powerLevelNumber)s)", @@ -462,6 +469,7 @@ "Unnamed room": "Sala sem nome", "World readable": "Aberto publicamente à leitura", "Guests can join": "Convidadas/os podem entrar", + "Community Invites": "Convites a comunidades", "Banned by %(displayName)s": "Banido por %(displayName)s", "Publish this room to the public in %(domain)s's room directory?": "Quer publicar esta sala na lista pública de salas em %(domain)s's?", "Members only (since the point in time of selecting this option)": "Apenas integrantes (a partir do momento em que esta opção for selecionada)", @@ -892,6 +900,7 @@ "Share Community": "Compartilhar Comunidade", "Share Room Message": "Compartilhar Mensagem da Sala", "Link to selected message": "Link para a mensagem selecionada", + "COPY": "COPIAR", "Unable to load backup status": "Não é possível carregar o status do backup", "Unable to restore backup": "Não é possível restaurar o backup", "No backup found!": "Nenhum backup encontrado!", @@ -997,12 +1006,75 @@ "Secure messages with this user are end-to-end encrypted and not able to be read by third parties.": "As mensagens com este usuário estão protegidas com a criptografia de ponta a ponta e não podem ser lidas por terceiros.", "Got It": "Ok, entendi", "Unable to find a supported verification method.": "Não é possível encontrar um método de confirmação suportado.", + "Dog": "Cachorro", + "Cat": "Gato", + "Lion": "Leão", + "Horse": "Cavalo", + "Unicorn": "Unicórnio", + "Pig": "Porco", + "Elephant": "Elefante", + "Rabbit": "Coelho", + "Panda": "Panda", + "Rooster": "Galo", + "Penguin": "Pinguim", + "Turtle": "Tartaruga", + "Fish": "Peixe", + "Octopus": "Polvo", + "Butterfly": "Borboleta", + "Flower": "Flor", + "Tree": "Árvore", + "Cactus": "Cacto", + "Mushroom": "Cogumelo", + "Globe": "Globo", + "Moon": "Lua", + "Cloud": "Nuvem", + "Fire": "Fogo", + "Banana": "Banana", + "Apple": "Maçã", + "Strawberry": "Morango", + "Corn": "Milho", + "Pizza": "Pizza", + "Cake": "Bolo", + "Heart": "Coração", + "Smiley": "Sorriso", + "Robot": "Robô", + "Hat": "Chapéu", + "Glasses": "Óculos", + "Spanner": "Chave inglesa", + "Santa": "Papai-noel", "Prepends ¯\\_(ツ)_/¯ to a plain-text message": "Adiciona ¯ \\ _ (ツ) _ / ¯ no início de uma mensagem de texto simples", "User %(userId)s is already in the room": "O usuário %(userId)s já está na sala", "The user must be unbanned before they can be invited.": "O banimento do usuário precisa ser removido antes de ser convidado.", "Show display name changes": "Mostrar alterações de nome e sobrenome", "Verify this user by confirming the following emoji appear on their screen.": "Verifique este usuário confirmando os emojis a seguir exibidos na tela dele.", "Verify this user by confirming the following number appears on their screen.": "Confirme este usuário confirmando se o número a seguir aparece na tela dele.", + "Thumbs up": "Joinha", + "Umbrella": "Guarda-chuva", + "Hourglass": "Ampulheta", + "Clock": "Relógio", + "Gift": "Presente", + "Light bulb": "Lâmpada", + "Book": "Livro", + "Pencil": "Lápis", + "Paperclip": "Clipe de papel", + "Scissors": "Tesoura", + "Key": "Chave", + "Hammer": "Martelo", + "Telephone": "Telefone", + "Flag": "Bandeira", + "Train": "Trem", + "Bicycle": "Bicicleta", + "Aeroplane": "Avião", + "Rocket": "Foguete", + "Trophy": "Troféu", + "Ball": "Bola", + "Guitar": "Guitarra", + "Trumpet": "Trombeta", + "Bell": "Sino", + "Anchor": "Âncora", + "Headphones": "Fones de ouvido", + "Folder": "Pasta", + "Pin": "Alfinete", "Yes": "Sim", "No": "Não", "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.": "Enviamos um e-mail para você confirmar seu endereço. Por favor, siga as instruções e clique no botão abaixo.", @@ -1097,6 +1169,10 @@ "Only continue if you trust the owner of the server.": "Continue apenas se você confia em quem possui este servidor.", "Trust": "Confiança", "%(name)s is requesting verification": "%(name)s está solicitando verificação", + "Use your account to sign in to the latest version": "Use sua conta para logar na última versão", + "We’re excited to announce Riot is now Element": "Estamos muito felizes em anunciar que Riot agora é Element", + "Riot is now Element!": "Riot agora é Element!", + "Learn More": "Saiba mais", "Sign In or Create Account": "Faça login ou crie uma conta", "Use your account or create a new one to continue.": "Use sua conta ou crie uma nova para continuar.", "Create Account": "Criar conta", @@ -1297,6 +1373,7 @@ "They match": "São coincidentes", "They don't match": "Elas não são correspondentes", "To be secure, do this in person or use a trusted way to communicate.": "Para sua segurança, faça isso pessoalmente ou use uma forma confiável de comunicação.", + "Lock": "Cadeado", "From %(deviceName)s (%(deviceId)s)": "De %(deviceName)s (%(deviceId)s)", "Decline (%(counter)s)": "Recusar (%(counter)s)", "Accept to continue:": "Aceitar para continuar:", @@ -1400,6 +1477,7 @@ "Encrypted by a deleted session": "Criptografada por uma sessão já apagada", "The authenticity of this encrypted message can't be guaranteed on this device.": "A autenticidade desta mensagem criptografada não pode ser garantida neste aparelho.", "People": "Pessoas", + "Create room": "Criar sala", "Start chatting": "Começar a conversa", "Try again later, or ask a room admin to check if you have access.": "Tente novamente mais tarde, ou peça a um(a) administrador(a) da sala para verificar se você tem acesso.", "Never lose encrypted messages": "Nunca perca mensagens criptografadas", @@ -1455,6 +1533,10 @@ "Verify session": "Verificar sessão", "We recommend you change your password and recovery key in Settings immediately": "Nós recomendamos que você altere imediatamente sua senha e chave de recuperação nas Configurações", "Use this session to verify your new one, granting it access to encrypted messages:": "Use esta sessão para verificar a sua nova sessão, dando a ela acesso às mensagens criptografadas:", + "You’re already signed in and good to go here, but you can also grab the latest versions of the app on all platforms at element.io/get-started.": "Você já está logada(o) e pode começar a usar à vontade, mas você também pode buscar pelas últimas versões do app em todas as plataformas em element.io/get-started.", + "Go to Element": "Ir a Element", + "We’re excited to announce Riot is now Element!": "Estamos muito felizes de anunciar que agora Riot é Element!", + "Learn more at element.io/previously-riot": "Saiba mais em element.io/previously-riot", "To help avoid duplicate issues, please view existing issues first (and add a +1) or create a new issue if you can't find it.": "Para evitar a duplicação de registro de problemas, por favor veja os problemas existentes antes e adicione um +1, ou então crie um novo item se seu problema ainda não foi reportado.", "Reporting this message will send its unique 'event ID' to the administrator of your homeserver. If messages in this room are encrypted, your homeserver administrator will not be able to read the message text or view any files or images.": "Reportar esta mensagem enviará o seu 'event ID' único para o/a administrador/a do seu Homeserver. Se as mensagens nesta sala são criptografadas, o/a administrador/a não conseguirá ler o texto da mensagem nem ver nenhuma imagem ou arquivo.", "Sign out and remove encryption keys?": "Fazer logout e remover as chaves de criptografia?", @@ -1963,6 +2045,7 @@ "Recent Conversations": "Conversas recentes", "Suggestions": "Sugestões", "Invite someone using their name, username (like ), email address or share this room.": "Convide alguém buscando o seu respectivo nome e sobrenome, nome de usuário (por exemplo: ), endereço de e-mail ou compartilhe esta sala.", + "Use your account to sign in to the latest version of the app at ": "Use sua conta para fazer login na versão mais recente do aplicativo em ", "Report bugs & give feedback": "Relatar erros & enviar comentários", "Room Settings - %(roomName)s": "Configurações da sala - %(roomName)s", "Automatically invite users": "Convidar usuários automaticamente", diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 76ae54d8c7..ed685cc6ce 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -77,6 +77,7 @@ "Who can access this room?": "Кто может войти в эту комнату?", "Who can read history?": "Кто может читать историю?", "You do not have permission to post to this room": "Вы не можете писать в эту комнату", + "You have no visible notifications": "Нет видимых уведомлений", "%(targetName)s accepted an invitation.": "%(targetName)s принял приглашение.", "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s принял приглашение от %(displayName)s.", "Active call": "Активный вызов", @@ -109,6 +110,7 @@ "(not supported by this browser)": "(не поддерживается этим браузером)", "Connectivity to the server has been lost.": "Связь с сервером потеряна.", "Sent messages will be stored until your connection has returned.": "Отправленные сообщения будут сохранены, пока соединение не восстановится.", + "There are no visible files in this room": "В этой комнате нет видимых файлов", "Set a display name:": "Введите отображаемое имя:", "This server does not support authentication with a phone number.": "Этот сервер не поддерживает аутентификацию по номеру телефона.", "An error occurred: %(error_string)s": "Произошла ошибка: %(error_string)s", @@ -347,10 +349,14 @@ "If you already have a Matrix account you can log in instead.": "Если у вас уже есть учётная запись Matrix, вы можете войти.", "Home": "Home", "Accept": "Принять", + "Active call (%(roomName)s)": "Текущий вызов (%(roomName)s)", "Admin Tools": "Инструменты администратора", "Close": "Закрыть", "Drop File Here": "Перетащите файл сюда", "Failed to upload profile picture!": "Не удалось загрузить аватар!", + "Incoming call from %(name)s": "Входящий вызов от %(name)s", + "Incoming video call from %(name)s": "Входящий видеовызов от %(name)s", + "Incoming voice call from %(name)s": "Входящий голосовой вызов от %(name)s", "Join as voice or video.": "Присоединиться с голосом или с видео.", "Last seen": "Последний вход", "No display name": "Нет отображаемого имени", @@ -364,6 +370,7 @@ "%(roomName)s does not exist.": "%(roomName)s не существует.", "%(roomName)s is not accessible at this time.": "%(roomName)s на данный момент недоступна.", "Seen by %(userName)s at %(dateTime)s": "Прочитано %(userName)s в %(dateTime)s", + "unknown caller": "неизвестный абонент", "Unnamed Room": "Комната без названия", "Upload new:": "Загрузить новый:", "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (уровень прав %(powerLevelNumber)s)", @@ -560,6 +567,7 @@ "%(items)s and %(count)s others|one": "%(items)s и еще кто-то", "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Сообщение отправлено на %(emailAddress)s. После перехода по ссылке в отправленном вам письме, щелкните ниже.", "Room Notification": "Уведомления комнаты", + "Community Invites": "Приглашения в сообщества", "Notify the whole room": "Уведомить всю комнату", "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Эти комнаты отображаются для участников сообщества на странице сообщества. Участники сообщества могут присоединиться к комнатам, щелкнув на них.", "Show these rooms to non-members on the community page and room list?": "Следует ли показывать эти комнаты посторонним на странице сообщества и в списке комнат?", @@ -810,6 +818,7 @@ "Share User": "Поделиться пользователем", "Share Community": "Поделиться сообществом", "Link to selected message": "Ссылка на выбранное сообщение", + "COPY": "КОПИРОВАТЬ", "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "В зашифрованных комнатах, подобных этой, предварительный просмотр URL-адресов отключен по умолчанию, чтобы гарантировать, что ваш сервер (где создаются предварительные просмотры) не может собирать информацию о ссылках, которые вы видите в этой комнате.", "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "Когда кто-то вставляет URL-адрес в свое сообщение, то можно просмотреть его, чтобы получить дополнительную информацию об этой ссылке, такую как название, описание и изображение с веб-сайта.", "The email field must not be blank.": "Поле email не должно быть пустым.", @@ -992,6 +1001,7 @@ "Not sure of your password? Set a new one": "Не помните пароль? Установите новый", "The username field must not be blank.": "Имя пользователя не должно быть пустым.", "Server Name": "Название сервера", + "Your Modular server": "Ваш Модульный сервер", "Email (optional)": "Адрес электронной почты (не обязательно)", "Phone (optional)": "Телефон (не обязательно)", "Confirm": "Подтвердить", @@ -1012,6 +1022,68 @@ "Save it on a USB key or backup drive": "Сохраните на USB-диске или на резервном диске", "This room has no topic.": "У этой комнаты нет темы.", "Group & filter rooms by custom tags (refresh to apply changes)": "Группировать и фильтровать комнаты по пользовательским тэгам (обновите для применения изменений)", + "Dog": "Собака", + "Cat": "Кошка", + "Lion": "Лев", + "Horse": "Конь", + "Unicorn": "Единорог", + "Pig": "Поросёнок", + "Elephant": "Слон", + "Rabbit": "Кролик", + "Panda": "Панда", + "Rooster": "Петух", + "Penguin": "Пингвин", + "Fish": "Рыба", + "Turtle": "Черепаха", + "Octopus": "Осьминог", + "Butterfly": "Бабочка", + "Flower": "Цветок", + "Tree": "Дерево", + "Cactus": "Кактус", + "Mushroom": "Гриб", + "Globe": "Земля", + "Moon": "Луна", + "Cloud": "Облако", + "Fire": "Огонь", + "Banana": "Банан", + "Apple": "Яблоко", + "Strawberry": "Клубника", + "Corn": "Кукуруза", + "Pizza": "Пицца", + "Cake": "Кекс", + "Heart": "Сердце", + "Smiley": "Смайлик", + "Robot": "Робот", + "Hat": "Шляпа", + "Glasses": "Очки", + "Spanner": "Гаечный ключ", + "Santa": "Санта", + "Thumbs up": "Большой палец вверх", + "Umbrella": "Зонтик", + "Hourglass": "Песочные часы", + "Clock": "Часы", + "Gift": "Подарок", + "Light bulb": "Лампочка", + "Book": "Книга", + "Pencil": "Карандаш", + "Paperclip": "Скрепка для бумаг", + "Key": "Ключ", + "Hammer": "Молоток", + "Telephone": "Телефон", + "Flag": "Флаг", + "Train": "Поезда", + "Bicycle": "Велосипед", + "Aeroplane": "Самолёт", + "Rocket": "Ракета", + "Trophy": "Трофей", + "Ball": "Мяч", + "Guitar": "Гитара", + "Trumpet": "Труба", + "Bell": "Колокол", + "Anchor": "Якорь", + "Headphones": "Наушники", + "Folder": "Папка", + "Pin": "Кнопка", "Your keys are being backed up (the first backup could take a few minutes).": "Выполняется резервная копия ключей (первый раз это может занять несколько минут).", "The file '%(fileName)s' exceeds this homeserver's size limit for uploads": "Размер файла '%(fileName)s' превышает допустимый размер для этого сервера", "Prepends ¯\\_(ツ)_/¯ to a plain-text message": "Добавляет смайл ¯\\_(ツ)_/¯ в начало сообщения", @@ -1028,6 +1100,7 @@ "Allow Peer-to-Peer for 1:1 calls": "Разрешить прямое соединение (p2p) для прямых звонков (один на один)", "Verify this user by confirming the following emoji appear on their screen.": "Проверьте собеседника, убедившись, что на его экране отображаются следующие символы (смайлы).", "Unable to find a supported verification method.": "Невозможно определить поддерживаемый метод верификации.", + "Scissors": "Ножницы", "Secure messages with this user are end-to-end encrypted and not able to be read by third parties.": "Защищённые сообщения с этим пользователем зашифрованы сквозным шифрованием и недоступны третьим лицам.", "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.": "Мы отправили вам сообщение для подтверждения адреса электронной почты. Пожалуйста, следуйте указаниям в сообщении, после чего нажмите кнопку ниже.", "Are you sure? You will lose your encrypted messages if your keys are not backed up properly.": "Вы уверены? Зашифрованные сообщения будут безвозвратно утеряны при отсутствии соответствующего резервного копирования ваших ключей.", @@ -1207,6 +1280,7 @@ "Please review and accept all of the homeserver's policies": "Пожалуйста, просмотрите и примите все правила сервера", "Please review and accept the policies of this homeserver:": "Пожалуйста, просмотрите и примите политику этого сервера:", "Unable to validate homeserver/identity server": "Невозможно проверить сервер/сервер идентификации", + "Enter the location of your Modular homeserver. It may use your own domain name or be a subdomain of modular.im.": "Введите местоположение вашего Modula homeserver. Он может использовать ваше собственное доменное имя или быть поддоменом modular.im.", "Sign in to your Matrix account on %(serverName)s": "Вход в учётную запись Matrix на сервере %(serverName)s", "Sign in to your Matrix account on ": "Вход в учётную запись Matrix на сервере ", "Change": "Изменить", @@ -1240,6 +1314,7 @@ "You have %(count)s unread notifications in a prior version of this room.|other": "У вас есть %(count)s непрочитанных уведомлений в предыдущей версии этой комнаты.", "You have %(count)s unread notifications in a prior version of this room.|one": "В предыдущей версии этой комнаты у вас есть непрочитанное уведомление %(count)s.", "Guest": "Гость", + "Your profile": "Ваш профиль", "Could not load user profile": "Не удалось загрузить профиль пользователя", "Your Matrix account on %(serverName)s": "Ваша учётная запись Matrix на сервере %(serverName)s", "Your Matrix account on ": "Ваша учётная запись Matrix на сервере ", @@ -1363,6 +1438,9 @@ "Add Phone Number": "Добавить номер телефона", "Changes the avatar of the current room": "Меняет аватарку текущей комнаты", "Change identity server": "Изменить сервер идентификации", + "Explore": "Обзор", + "Filter": "Поиск", + "Filter rooms…": "Поиск комнат…", "If you can't find the room you're looking for, ask for an invite or Create a new room.": "Если не удаётся найти комнату, то можно запросить приглашение или Создать новую комнату.", "Create a public room": "Создать публичную комнату", "Create a private room": "Создать приватную комнату", @@ -1430,6 +1508,7 @@ "Strikethrough": "Перечёркнутый", "Code block": "Блок кода", "%(count)s unread messages.|other": "%(count)s непрочитанные сообщения.", + "Unread mentions.": "Непрочитанные упоминания.", "Show image": "Показать изображение", "e.g. my-room": "например, моя-комната", "Close dialog": "Закрыть диалог", @@ -1492,6 +1571,7 @@ "React": "Реакция", "Cancel search": "Отменить поиск", "Room %(name)s": "Комната %(name)s", + "Recent rooms": "Недавние комнаты", "No identity server is configured so you cannot add an email address in order to reset your password in the future.": "Сервер идентификации не настроен, поэтому вы не можете добавить адрес электронной почты, чтобы в будущем сбросить пароль.", "Jump to first unread room.": "Перейти в первую непрочитанную комнату.", "Jump to first invite.": "Перейти к первому приглашению.", @@ -1524,6 +1604,7 @@ "Hide sessions": "Скрыть сессии", "Enable 'Manage Integrations' in Settings to do this.": "Включите «Управление интеграциями» в настройках, чтобы сделать это.", "Help": "Помощь", + "If you cancel now, you won't complete verifying your other session.": "Если вы отмените сейчас, вы не завершите проверку вашей другой сессии.", "Verify this session": "Проверьте эту сессию", "Verifies a user, session, and pubkey tuple": "Проверяет пользователя, сессию и публичные ключи", "Unknown (user, session) pair:": "Неизвестная пара (пользователь, сессия):", @@ -1535,6 +1616,7 @@ "Subscribed lists": "Подписанные списки", "Subscribe": "Подписаться", "A session's public name is visible to people you communicate with": "Ваши собеседники видят публичные имена сессий", + "If you cancel now, you won't complete verifying the other user.": "Если вы сейчас отмените, у вас не будет завершена проверка других пользователей.", "Cancel entering passphrase?": "Отмена ввода пароль?", "Setting up keys": "Настройка ключей", "Encryption upgrade available": "Доступно обновление шифрования", @@ -1578,6 +1660,7 @@ "They match": "Они совпадают", "They don't match": "Они не совпадают", "To be secure, do this in person or use a trusted way to communicate.": "Чтобы быть в безопасности, делайте это лично или используйте надежный способ связи.", + "Lock": "Заблокировать", "Verify yourself & others to keep your chats safe": "Подтвердите себя и других для безопасности ваших бесед", "Other users may not trust it": "Другие пользователи могут не доверять этому", "Upgrade": "Обновление", @@ -1748,6 +1831,7 @@ "Encrypted by an unverified session": "Зашифровано неподтверждённой сессией", "Unencrypted": "Не зашифровано", "Encrypted by a deleted session": "Зашифровано удалённой сессией", + "Invite only": "Только по приглашениям", "Scroll to most recent messages": "Перейти к последним сообщениям", "Close preview": "Закрыть предпросмотр", "Send a reply…": "Отправить ответ…", @@ -1871,6 +1955,7 @@ "Enter a recovery passphrase": "Введите пароль восстановления", "Enter your recovery passphrase a second time to confirm it.": "Введите пароль восстановления ещё раз для подтверждения.", "Please enter your recovery passphrase a second time to confirm.": "Введите пароль восстановления повторно для подтверждения.", + "If you cancel now, you won't complete your operation.": "Если вы отмените операцию сейчас, она не завершится.", "Failed to set topic": "Не удалось установить тему", "Could not find user in room": "Не удалось найти пользователя в комнате", "Please supply a widget URL or embed code": "Укажите URL или код вставки виджета", @@ -1909,6 +1994,10 @@ "Signature upload failed": "Сбой отправки отпечатка", "Room name or address": "Имя или адрес комнаты", "Unrecognised room address:": "Не удалось найти адрес комнаты:", + "Use your account to sign in to the latest version": "Используйте свой аккаунт для входа в последнюю версию", + "We’re excited to announce Riot is now Element": "Мы рады объявить, что Riot теперь Element", + "Riot is now Element!": "Riot теперь Element!", + "Learn More": "Узнать больше", "Joins room with given address": "Присоединиться к комнате с указанным адресом", "Opens chat with the given user": "Открыть чат с данным пользователем", "Sends a message to the given user": "Отправить сообщение данному пользователю", @@ -1942,6 +2031,39 @@ "%(senderName)s started a call": "%(senderName)s начал(а) звонок", "Waiting for answer": "Ждём ответа", "%(senderName)s is calling": "%(senderName)s звонит", + "You created the room": "Вы создали комнату", + "%(senderName)s created the room": "%(senderName)s создал(а) комнату", + "You made the chat encrypted": "Вы включили шифрование в комнате", + "%(senderName)s made the chat encrypted": "%(senderName)s включил(а) шифрование в комнате", + "You made history visible to new members": "Вы сделали историю видимой для новых участников", + "%(senderName)s made history visible to new members": "%(senderName)s сделал(а) историю видимой для новых участников", + "You made history visible to anyone": "Вы сделали историю видимой для всех", + "%(senderName)s made history visible to anyone": "%(senderName)s сделал(а) историю видимой для всех", + "You made history visible to future members": "Вы сделали историю видимой для будущих участников", + "%(senderName)s made history visible to future members": "%(senderName)s сделал(а) историю видимой для будущих участников", + "You were invited": "Вы были приглашены", + "%(targetName)s was invited": "%(targetName)s был(а) приглашен(а)", + "You left": "Вы покинули комнату", + "%(targetName)s left": "%(targetName)s покинул комнату", + "You were kicked (%(reason)s)": "Вас исключили из комнаты (%(reason)s)", + "%(targetName)s was kicked (%(reason)s)": "%(targetName)s был(а) исключен(а) из комнаты (%(reason)s)", + "You were kicked": "Вас исключили из комнаты", + "%(targetName)s was kicked": "%(targetName)s был(а) исключен(а) из комнаты", + "You rejected the invite": "Вы отклонили приглашение", + "%(targetName)s rejected the invite": "%(targetName)s отклонил(а) приглашение", + "You were uninvited": "Вам отменили приглашение", + "%(targetName)s was uninvited": "Приглашение для %(targetName)s отменено", + "You were banned (%(reason)s)": "Вас забанили (%(reason)s)", + "%(targetName)s was banned (%(reason)s)": "%(targetName)s был(а) исключен(а) из комнаты (%(reason)s)", + "You were banned": "Вас заблокировали", + "%(targetName)s was banned": "%(targetName)s был(а) забанен(а)", + "You joined": "Вы вошли", + "%(targetName)s joined": "%(targetName)s присоединился(ась)", + "You changed your name": "Вы поменяли своё имя", + "%(targetName)s changed their name": "%(targetName)s поменял(а) своё имя", + "You changed your avatar": "Вы поменяли свой аватар", + "%(targetName)s changed their avatar": "%(targetName)s поменял(а) свой аватар", + "You changed the room name": "Вы поменяли имя комнаты", "Enable experimental, compact IRC style layout": "Включите экспериментальный, компактный стиль IRC", "Unknown caller": "Неизвестный абонент", "Incoming call": "Входящий звонок", @@ -1965,9 +2087,17 @@ "Remove for me": "Убрать для меня", "User Status": "Статус пользователя", "Country Dropdown": "Выпадающий список стран", + "%(senderName)s %(emote)s": "%(senderName)s %(emote)s", "%(senderName)s: %(message)s": "%(senderName)s: %(message)s", + "%(senderName)s changed the room name": "%(senderName)s изменил(а) название комнаты", "%(senderName)s: %(reaction)s": "%(senderName)s: %(reaction)s", "%(senderName)s: %(stickerName)s": "%(senderName)s: %(stickerName)s", + "You uninvited %(targetName)s": "Вы отозвали приглашение %(targetName)s", + "%(senderName)s uninvited %(targetName)s": "%(senderName)s отозвал(а) приглашение %(targetName)s", + "You invited %(targetName)s": "Вы пригласили %(targetName)s", + "%(senderName)s invited %(targetName)s": "%(senderName)s пригласил(а) %(targetName)s", + "You changed the room topic": "Вы изменили тему комнаты", + "%(senderName)s changed the room topic": "%(senderName)s изменил(а) тему комнаты", "Enable advanced debugging for the room list": "Разрешить расширенную отладку списка комнат", "Font size": "Размер шрифта", "Use custom size": "Использовать другой размер", @@ -1978,12 +2108,15 @@ "Incoming video call": "Входящий видеозвонок", "Please verify the room ID or address and try again.": "Проверьте ID комнаты или адрес и попробуйте снова.", "Your server admin has disabled end-to-end encryption by default in private rooms & Direct Messages.": "Администратор вашего сервера отключил сквозное шифрование по умолчанию в приватных комнатах и диалогах.", + "Make this room low priority": "Сделать эту комнату маловажной", + "Low priority rooms show up at the bottom of your room list in a dedicated section at the bottom of your room list": "Маловажные комнаты отображаются в конце списка в отдельной секции", "People": "Люди", "%(networkName)s rooms": "Комнаты %(networkName)s", "Explore Public Rooms": "Просмотреть публичные комнаты", "Search rooms": "Поиск комнат", "Where you’re logged in": "Где вы вошли", "Manage the names of and sign out of your sessions below or verify them in your User Profile.": "Ниже вы можете изменить названия сессий или выйти из них, либо подтвердите их в своём профиле.", + "Create room": "Создать комнату", "Custom Tag": "Пользовательский тег", "Appearance": "Внешний вид", "Show rooms with unread messages first": "Комнаты с непрочитанными сообщениями в начале", @@ -2101,6 +2234,11 @@ "Use this session to verify your new one, granting it access to encrypted messages:": "Используйте эту сессию для проверки новой сессии, чтобы предоставить ей доступ к зашифрованным сообщениям:", "If you didn’t sign in to this session, your account may be compromised.": "Если вы не входили в эту сессию, ваша учетная запись может быть скомпрометирована.", "This wasn't me": "Это был не я", + "Use your account to sign in to the latest version of the app at ": "Используйте свою учетную запись для входа в последнюю версию приложения по адресу ", + "You’re already signed in and good to go here, but you can also grab the latest versions of the app on all platforms at element.io/get-started.": "Вы уже вошли в систему и можете остаться здесь, но вы также можете получить последние версии приложения на всех платформах по адресу element.io/get-started.", + "Go to Element": "Перейти к Element", + "We’re excited to announce Riot is now Element!": "Мы рады сообщить, что Riot теперь стал Element!", + "Learn more at element.io/previously-riot": "Узнайте больше на сайте element.io/previously-riot", "Automatically invite users": "Автоматически приглашать пользователей", "Upgrade private room": "Модернизировать приватную комнату", "Upgrade public room": "Модернизировать публичную комнату", @@ -2166,6 +2304,7 @@ "%(brand)s Web": "Веб-версия %(brand)s", "%(brand)s Desktop": "Настольный клиент %(brand)s", "%(brand)s iOS": "iOS клиент %(brand)s", + "%(brand)s X for Android": "%(brand)s X для Android", "or another cross-signing capable Matrix client": "или другой, поддерживаемый кросс-подпись Matrix клиент", "Your new session is now verified. It has access to your encrypted messages, and other users will see it as trusted.": "Ваша новая сессия теперь подтверждена. У неё есть доступ к вашим зашифрованным сообщениям, и другие пользователи будут считать её доверенной.", "Your new session is now verified. Other users will see it as trusted.": "Ваша новая сессия теперь проверена. Другие пользователи будут считать её доверенной.", diff --git a/src/i18n/strings/sk.json b/src/i18n/strings/sk.json index 830352458d..667768fd57 100644 --- a/src/i18n/strings/sk.json +++ b/src/i18n/strings/sk.json @@ -128,6 +128,11 @@ "Not a valid %(brand)s keyfile": "Toto nie je správny súbor s kľúčami %(brand)s", "Authentication check failed: incorrect password?": "Kontrola overenia zlyhala: Nesprávne heslo?", "Failed to join room": "Nepodarilo sa vstúpiť do miestnosti", + "Active call (%(roomName)s)": "Aktívny hovor (%(roomName)s)", + "unknown caller": "neznámeho volajúceho", + "Incoming voice call from %(name)s": "Prichádzajúci audio hovor od %(name)s", + "Incoming video call from %(name)s": "Prichádzajúci video hovor od %(name)s", + "Incoming call from %(name)s": "Prichádzajúci hovor od %(name)s", "Decline": "Odmietnuť", "Accept": "Prijať", "Error": "Chyba", @@ -222,6 +227,7 @@ "Settings": "Nastavenia", "Forget room": "Zabudnúť miestnosť", "Search": "Hľadať", + "Community Invites": "Pozvánky do komunity", "Invites": "Pozvánky", "Favourites": "Obľúbené", "Rooms": "Miestnosti", @@ -423,6 +429,7 @@ "Name": "Názov", "You must register to use this functionality": "Aby ste mohli použiť túto vlastnosť, musíte byť zaregistrovaný", "You must join the room to see its files": "Aby ste si mohli zobraziť zoznam súborov, musíte vstúpiť do miestnosti", + "There are no visible files in this room": "V tejto miestnosti nie sú žiadne viditeľné súbory", "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

HTML kód hlavnej stránky komunity

\n

\n Dlhý popis môžete použiť na predstavenie komunity novým členom, alebo uvedenie \n dôležitých odkazov\n

\n

\n Môžete tiež používať HTML značku 'img'\n

\n", "Add rooms to the community summary": "Pridať miestnosti do prehľadu komunity", "Which rooms would you like to add to this summary?": "Ktoré miestnosti si želáte pridať do tohoto prehľadu?", @@ -470,6 +477,7 @@ "Error whilst fetching joined communities": "Pri získavaní vašich komunít sa vyskytla chyba", "Create a new community": "Vytvoriť novú komunitu", "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Vytvorte si komunitu s cieľom zoskupiť miestnosti a používateľov! Zostavte si vlastnú domovskú stránku a vymedzte tak svoj priestor vo svete Matrix.", + "You have no visible notifications": "Nie sú k dispozícii žiadne oznámenia", "Connectivity to the server has been lost.": "Spojenie so serverom bolo prerušené.", "Sent messages will be stored until your connection has returned.": "Odoslané správy ostanú uložené, kým sa spojenie nenadviaže znovu.", "Active call": "Aktívny hovor", @@ -803,6 +811,7 @@ "Share User": "Zdieľať používateľa", "Share Community": "Zdieľať komunitu", "Link to selected message": "Odkaz na vybratú správu", + "COPY": "Kopírovať", "Share Message": "Zdieľať správu", "No Audio Outputs detected": "Neboli rozpoznané žiadne zariadenia pre výstup zvuku", "Audio Output": "Výstup zvuku", @@ -1000,6 +1009,69 @@ "Verify this user by confirming the following emoji appear on their screen.": "Overte tohto používateľa tak, že zistíte, či sa na jeho obrazovke objavia nasledujúce emoji.", "Verify this user by confirming the following number appears on their screen.": "Overte tohoto používateľa tým, že zistíte, či sa na jeho obrazovke objaví nasledujúce číslo.", "Unable to find a supported verification method.": "Nie je možné nájsť podporovanú metódu overenia.", + "Dog": "Hlava psa", + "Cat": "Hlava mačky", + "Lion": "Hlava leva", + "Horse": "Kôň", + "Unicorn": "Hlava jednorožca", + "Pig": "Hlava Prasaťa", + "Elephant": "Slon", + "Rabbit": "Hlava Zajaca", + "Panda": "Hlava Pandy", + "Rooster": "Kohút", + "Penguin": "Tučniak", + "Turtle": "Korytnačka", + "Fish": "Ryba", + "Octopus": "Chobotnica", + "Butterfly": "Motýľ", + "Flower": "Tulipán", + "Tree": "Listnatý strom", + "Cactus": "Kaktus", + "Mushroom": "Huba", + "Globe": "Zemeguľa", + "Moon": "Polmesiac", + "Cloud": "Oblak", + "Fire": "Oheň", + "Banana": "Banán", + "Apple": "Červené jablko", + "Strawberry": "Jahoda", + "Corn": "Kukuričný klas", + "Pizza": "Pizza", + "Cake": "Narodeninová torta", + "Heart": "Červené srdce", + "Smiley": "Škeriaca sa tvár", + "Robot": "Robot", + "Hat": "Cylinder", + "Glasses": "Okuliare", + "Spanner": "Francúzsky kľúč", + "Santa": "Santa Claus", + "Thumbs up": "palec nahor", + "Umbrella": "Dáždnik", + "Hourglass": "Presýpacie hodiny", + "Clock": "Budík", + "Gift": "Zabalený darček", + "Light bulb": "Žiarovka", + "Book": "Zatvorená kniha", + "Pencil": "Ceruzka", + "Paperclip": "Sponka na papier", + "Scissors": "Nožnice", + "Key": "Kľúč", + "Hammer": "Kladivo", + "Telephone": "Telefón", + "Flag": "Kockovaná zástava", + "Train": "Rušeň", + "Bicycle": "Bicykel", + "Aeroplane": "Lietadlo", + "Rocket": "Raketa", + "Trophy": "Trofej", + "Ball": "Futbal", + "Guitar": "Gitara", + "Trumpet": "Trúbka", + "Bell": "Zvon", + "Anchor": "Kotva", + "Headphones": "Slúchadlá", + "Folder": "Fascikel", + "Pin": "Špendlík", "Yes": "Áno", "No": "Nie", "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.": "Poslali sme vám email, aby sme mohli overiť vašu adresu. Postupujte podľa odoslaných inštrukcií a potom klepnite na nižšie zobrazené tlačidlo.", @@ -1111,6 +1183,8 @@ "Set status": "Nastaviť stav", "Hide": "Skryť", "This homeserver would like to make sure you are not a robot.": "Tento domovský server by sa rád uistil, že nie ste robot.", + "Your Modular server": "Váš server Modular", + "Enter the location of your Modular homeserver. It may use your own domain name or be a subdomain of modular.im.": "Zadajte umiestnenie vášho domovského servera modular. Môže to byť buď vaša doména alebo subdoména modular.im.", "Server Name": "Názov servera", "The username field must not be blank.": "Pole meno používateľa nesmie ostať prázdne.", "Username": "Meno používateľa", @@ -1314,6 +1388,9 @@ "Whether you're using %(brand)s on a device where touch is the primary input mechanism": "Či používate %(brand)s na zariadení, ktorého hlavným vstupným mechanizmom je dotyk (mobil, tablet,...)", "Whether you're using %(brand)s as an installed Progressive Web App": "Či používate %(brand)s ako nainštalovanú Progresívnu Webovú Aplikáciu", "Your user agent": "Identifikátor vášho prehliadača", + "If you cancel now, you won't complete verifying the other user.": "Pokiaľ teraz proces zrušíte, nedokončíte overenie druhého používateľa.", + "If you cancel now, you won't complete verifying your other session.": "Pokiaľ teraz proces zrušíte, nedokončíte overenie vašej druhej relácie.", + "If you cancel now, you won't complete your operation.": "Pokiaľ teraz proces zrušíte, nedokončíte ho.", "Cancel entering passphrase?": "Zrušiť zadávanie (dlhého) hesla.", "Setting up keys": "Príprava kľúčov", "Verify this session": "Overiť túto reláciu", @@ -1396,6 +1473,7 @@ "Failed to re-authenticate due to a homeserver problem": "Opätovná autentifikácia zlyhala kvôli problému domovského servera", "Failed to re-authenticate": "Opätovná autentifikácia zlyhala", "Regain access to your account and recover encryption keys stored in this session. Without them, you won’t be able to read all of your secure messages in any session.": "Znovuzískajte prístup k vášmu účtu a obnovte šifrovacie kľúče uložené v tejto relácií. Bez nich nebudete môcť čítať všetky vaše šifrované správy vo všetkých reláciach.", + "Font scaling": "Škálovanie písma", "Show info about bridges in room settings": "Zobraziť informácie o mostoch v Nastaveniach miestnosti", "Font size": "Veľkosť písma", "Show typing notifications": "Posielať oznámenia, keď píšete", @@ -1439,6 +1517,7 @@ "They match": "Zhodujú sa", "They don't match": "Nezhodujú sa", "To be secure, do this in person or use a trusted way to communicate.": "Aby ste si boli istý, urobte to osobne alebo použite dôveryhodný spôsob komunikácie.", + "Lock": "Zámok", "If you can't scan the code above, verify by comparing unique emoji.": "Pokiaľ nemôžete kód vyššie skenovať, overte sa porovnaním jedinečnej kombinácie emoji.", "Verify by comparing unique emoji.": "Overenie porovnaním jedinečnej kombinácie emoji", "Verify by emoji": "Overte pomocou emoji", @@ -1517,6 +1596,10 @@ "Upgrade your %(brand)s": "Upgradujte svoj %(brand)s", "A new version of %(brand)s is available!": "Nová verzia %(brand)su je dostupná!", "Which officially provided instance you are using, if any": "Ktorú oficiálne poskytovanú inštanciu používate, pokiaľ nejakú", + "Use your account to sign in to the latest version": "Použite svoj účet na prihlásenie sa do najnovšej verzie", + "We’re excited to announce Riot is now Element": "Sme nadšený oznámiť, že Riot je odteraz Element", + "Riot is now Element!": "Riot je odteraz Element!", + "Learn More": "Dozvedieť sa viac", "Light": "Svetlý", "Dark": "Tmavý", "Ask your %(brand)s admin to check your config for incorrect or duplicate entries.": "Požiadajte správcu vášho %(brand)su, aby skontroloval vašu konfiguráciu. Pravdepodobne obsahuje chyby alebo duplikáty.", @@ -1530,10 +1613,52 @@ "%(senderName)s started a call": "%(senderName)s začal/a hovor", "Waiting for answer": "Čakám na odpoveď", "%(senderName)s is calling": "%(senderName)s volá", + "You created the room": "Vytvorili ste miestnosť", + "%(senderName)s created the room": "%(senderName)s vytvoril/a miestnosť", + "You made the chat encrypted": "Zašifrovali ste čet", + "%(senderName)s made the chat encrypted": "%(senderName)s zašifroval/a čet", + "You made history visible to new members": "Zviditeľnili ste históriu pre nových členov", + "%(senderName)s made history visible to new members": "%(senderName)s zviditeľnil/a históriu pre nových členov", + "You made history visible to anyone": "Zviditeľnili ste históriu pre všetkých", + "%(senderName)s made history visible to anyone": "%(senderName)s zviditeľnil/a históriu pre všetkých", + "You made history visible to future members": "Zviditeľnili ste históriu pre budúcich členov", + "%(senderName)s made history visible to future members": "%(senderName)s zviditeľnil/a históriu pre budúcich členov", + "You were invited": "Boli ste pozvaný/á", + "%(targetName)s was invited": "%(targetName)s vás pozval/a", + "You left": "Odišli ste", + "%(targetName)s left": "%(targetName)s odišiel/odišla", + "You were kicked (%(reason)s)": "Boli ste vykopnutý/á (%(reason)s)", + "%(targetName)s was kicked (%(reason)s)": "%(targetName)s bol vykopnutý/á (%(reason)s)", + "You were kicked": "Boli ste vykopnutý/á", + "%(targetName)s was kicked": "%(targetName)s bol vykopnutý/á", + "You rejected the invite": "Odmietli ste pozvánku", + "%(targetName)s rejected the invite": "%(targetName)s odmietol/odmietla pozvánku", + "You were uninvited": "Boli ste odpozvaný/á", + "%(targetName)s was uninvited": "%(targetName)s bol odpozvaný/á", + "You were banned (%(reason)s)": "Boli ste vyhostený/á (%(reason)s)", + "%(targetName)s was banned (%(reason)s)": "%(targetName)s bol vyhostený/á (%(reason)s)", + "You were banned": "Boli ste vyhostený/á", + "%(targetName)s was banned": "%(targetName)s bol vyhostený/á", + "You joined": "Pridali ste sa", + "%(targetName)s joined": "%(targetName)s sa pridal/a", + "You changed your name": "Zmenili ste vaše meno", + "%(targetName)s changed their name": "%(targetName)s zmenil/a svoje meno", + "You changed your avatar": "Zmenili ste svojho avatara", + "%(targetName)s changed their avatar": "%(targetName)s zmenil/a svojho avatara", + "%(senderName)s %(emote)s": "%(senderName)s %(emote)s", "%(senderName)s: %(message)s": "%(senderName)s: %(message)s", + "You changed the room name": "Zmenili ste meno miestnosti", + "%(senderName)s changed the room name": "%(senderName)s zmenil/a meno miestnosti", "%(senderName)s: %(reaction)s": "%(senderName)s: %(reaction)s", "%(senderName)s: %(stickerName)s": "%(senderName)s: %(stickerName)s", + "You uninvited %(targetName)s": "Odpozvali ste používateľa %(targetName)s", + "%(senderName)s uninvited %(targetName)s": "%(senderName)s odpozval/a používateľa %(targetName)s", + "You invited %(targetName)s": "Pozvali ste používateľa %(targetName)s", + "%(senderName)s invited %(targetName)s": "%(senderName)s pozval/a používateľa %(targetName)s", + "You changed the room topic": "Zmenili ste tému miestnosti", + "%(senderName)s changed the room topic": "%(senderName)s zmenil/a tému miestnosti", "New spinner design": "Nový točivý štýl", + "Use the improved room list (will refresh to apply changes)": "Použiť vylepšený list miestností (obnový stránku, aby sa aplikovali zmeny)", "Use custom size": "Použiť vlastnú veľkosť", "Use a more compact ‘Modern’ layout": "Použiť kompaktnejšie 'moderné' rozloženie", "Use a system font": "Použiť systémové písmo", @@ -1605,6 +1730,8 @@ "Upgrade this room to the recommended room version": "Upgradujte túto miestnosť na odporúčanú verziu", "this room": "táto miestnosť", "View older messages in %(roomName)s.": "Zobraziť staršie správy v miestnosti %(roomName)s.", + "Make this room low priority": "Priradiť tejto miestnosti nízku prioritu", + "Low priority rooms show up at the bottom of your room list in a dedicated section at the bottom of your room list": "Miestnosti s nízkou prioritou sa zobrazia vo vyhradenej sekcií na konci vášho zoznamu miestností", "This room is bridging messages to the following platforms. Learn more.": "Táto miestnosť premosťuje správy s nasledujúcimi platformami. Viac informácií", "This room isn’t bridging messages to any platforms. Learn more.": "Táto miestnosť nepremosťuje správy so žiadnymi ďalšími platformami. Viac informácií", "Bridges": "Mosty", diff --git a/src/i18n/strings/sq.json b/src/i18n/strings/sq.json index 9b35fa7f3f..9d9be78fdf 100644 --- a/src/i18n/strings/sq.json +++ b/src/i18n/strings/sq.json @@ -254,6 +254,7 @@ "%(senderName)s made future room history visible to anyone.": "%(senderName)s e bëri historikun e ardhshëm të dhomës të dukshëm për këdo.", "Always show message timestamps": "Shfaq përherë vula kohore për mesazhet", "Room Colour": "Ngjyrë Dhome", + "unknown caller": "thirrës i panjohur", "Decline": "Hidhe poshtë", "Accept": "Pranoje", "Incorrect verification code": "Kod verifikimi i pasaktë", @@ -329,6 +330,7 @@ "Upload avatar": "Ngarkoni avatar", "Settings": "Rregullime", "Forget room": "Harroje dhomën", + "Community Invites": "Ftesa Bashkësie", "Invites": "Ftesa", "Favourites": "Të parapëlqyer", "Low priority": "Me përparësi të ulët", @@ -444,6 +446,7 @@ "Logout": "Dalje", "Your Communities": "Bashkësitë Tuaja", "Create a new community": "Krijoni një bashkësi të re", + "You have no visible notifications": "S’keni njoftime të dukshme", "%(count)s of your messages have not been sent.|other": "Disa nga mesazhet tuaj s’janë dërguar.", "%(count)s of your messages have not been sent.|one": "Mesazhi juaj s’u dërgua.", "Active call": "Thirrje aktive", @@ -504,6 +507,9 @@ "Missing user_id in request": "Mungon user_id te kërkesa", "Failed to join room": "S’u arrit të hyhej në dhomë", "Mirror local video feed": "Pasqyro prurje vendore videoje", + "Incoming voice call from %(name)s": "Thirrje audio ardhëse nga %(name)s", + "Incoming video call from %(name)s": "Thirrje video ardhëse nga %(name)s", + "Incoming call from %(name)s": "Thirrje ardhëse nga %(name)s", "Failed to upload profile picture!": "S’u arrit të ngarkohej foto profili!", "New community ID (e.g. +foo:%(localDomain)s)": "ID bashkësie të re (p.sh. +foo:%(localDomain)s)", "Ongoing conference call%(supportedText)s.": "Thirrje konference që po zhvillohet%(supportedText)s.", @@ -536,6 +542,7 @@ "Unable to add email address": "S’arrihet të shtohet adresë email", "Unable to verify email address.": "S’arrihet të verifikohet adresë email.", "To get started, please pick a username!": "Që t’ia filloni, ju lutemi, zgjidhni një emër përdoruesi!", + "There are no visible files in this room": "S’ka kartela të dukshme në këtë dhomë", "Failed to upload image": "S’u arrit të ngarkohej figurë", "Failed to update community": "S’u arrit të përditësohej bashkësia", "Unable to accept invite": "S’arrihet të pranohet ftesë", @@ -625,6 +632,7 @@ "Authentication check failed: incorrect password?": "Dështoi kontrolli i mirëfilltësimit: fjalëkalim i pasaktë?", "Message Pinning": "Fiksim Mesazhi", "Autoplay GIFs and videos": "Vetëluaj GIF-e dhe video", + "Active call (%(roomName)s)": "Thirrje aktive (%(roomName)s)", "%(senderName)s uploaded a file": "%(senderName)s ngarkoi një kartelë", "Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "Parë nga %(displayName)s (%(userName)s) më %(dateTime)s", "%(roomName)s is not accessible at this time.": "Te %(roomName)s s’hyhet dot tani.", @@ -672,6 +680,7 @@ "%(oneUser)schanged their avatar %(count)s times|other": "%(oneUser)sndryshoi avatarin e vet %(count)s herë", "Clear cache and resync": "Spastro fshehtinën dhe rinjëkohëso", "Clear Storage and Sign Out": "Spastro Depon dhe Dil", + "COPY": "KOPJOJE", "e.g. %(exampleValue)s": "p.sh., %(exampleValue)s", "e.g. ": "p.sh., ", "Permission Required": "Lypset Leje", @@ -1040,6 +1049,8 @@ "Go back": "Kthehu mbrapsht", "Update status": "Përditëso gendjen", "Set status": "Caktojini gjendjen", + "Your Modular server": "Shërbyesi juaj Modular", + "Enter the location of your Modular homeserver. It may use your own domain name or be a subdomain of modular.im.": "Jepni vendndodhjen e shërbyesit tuaj Home Modular. Mund të përdorë emrin e përkatësisë tuaj ose të jetë një nënpërkatësi e modular.im.", "Server Name": "Emër Shërbyesi", "The username field must not be blank.": "Fusha e emrit të përdoruesit s’duhet të jetë e zbrazët.", "Username": "Emër përdoruesi", @@ -1072,6 +1083,62 @@ "Gets or sets the room topic": "Merr ose cakton temën e dhomës", "This room has no topic.": "Kjo dhomë s’ka temë.", "Verify this user by confirming the following emoji appear on their screen.": "Verifikojeni këtë përdorues duke ripohuar shfaqjen e emoji-t vijues në skenën e tyre.", + "Dog": "Qen", + "Cat": "Mace", + "Lion": "Luan", + "Horse": "Kalë", + "Unicorn": "Njëbrirësh", + "Pig": "Derr", + "Elephant": "Elefant", + "Rabbit": "Lepur", + "Panda": "Panda", + "Rooster": "Këndes", + "Penguin": "Pinguin", + "Turtle": "Breshkë", + "Fish": "Peshk", + "Octopus": "Oktapod", + "Butterfly": "Flutur", + "Flower": "Lule", + "Tree": "Pemë", + "Cactus": "Kaktus", + "Mushroom": "Kërpudhë", + "Globe": "Rruzull", + "Moon": "Hëna", + "Cloud": "Re", + "Fire": "Zjarr", + "Banana": "Banane", + "Apple": "Mollë", + "Strawberry": "Luleshtrydhe", + "Corn": "Misër", + "Pizza": "Picë", + "Cake": "Tortë", + "Heart": "Zemër", + "Smiley": "Emotikon", + "Robot": "Robot", + "Hat": "Kapë", + "Glasses": "Syze", + "Umbrella": "Ombrellë", + "Clock": "Sahat", + "Gift": "Dhuratë", + "Light bulb": "Llambë", + "Book": "Libër", + "Pencil": "Laps", + "Paperclip": "Kapëse", + "Hammer": "Çekiç", + "Telephone": "Telefon", + "Flag": "Flamur", + "Train": "Tren", + "Bicycle": "Biçikletë", + "Aeroplane": "Avion", + "Rocket": "Raketë", + "Trophy": "Trofe", + "Ball": "Top", + "Guitar": "Kitarë", + "Trumpet": "Trombë", + "Bell": "Kambanë", + "Anchor": "Spirancë", + "Headphones": "Kufje", + "Folder": "Dosje", "Chat with %(brand)s Bot": "Fjalosuni me Robotin %(brand)s", "This homeserver would like to make sure you are not a robot.": "Ky Shërbyes Home do të donte të sigurohej se s’jeni robot.", "Change": "Ndërroje", @@ -1089,6 +1156,9 @@ "%(senderDisplayName)s changed guest access to %(rule)s": "%(senderDisplayName)s ndryshoi hyrjen për vizitorë në %(rule)s", "Group & filter rooms by custom tags (refresh to apply changes)": "Gruponi & filtroni dhoma sipas etiketash vetjake (që të hyjnë në fuqi ndryshimet, rifreskojeni)", "Unable to find a supported verification method.": "S’arrihet të gjendet metodë verifikimi e mbuluar.", + "Santa": "Babagjyshi i Vitit të Ri", + "Hourglass": "Klepsidër", + "Key": "Kyç", "Disinvite": "Hiqi ftesën", "Disinvite this user from community?": "T’i hiqet ftesa për në bashkësi këtij përdoruesi?", "A verification email will be sent to your inbox to confirm setting your new password.": "Te mesazhet tuaj do të dërgohet një email verifikimi, për të ripohuar caktimin e fjalëkalimit tuaj të ri.", @@ -1119,6 +1189,8 @@ "%(senderDisplayName)s disabled flair for %(groups)s in this room.": "%(senderDisplayName)s çaktivizoi flair-in për %(groups)s në këtë dhomë.", "%(senderDisplayName)s enabled flair for %(newGroups)s and disabled flair for %(oldGroups)s in this room.": "%(senderDisplayName)s aktivizoi flair-in për %(newGroups)s dhe çaktivizoi flair-in për %(oldGroups)s në këtë dhomë.", "Show read receipts sent by other users": "Shfaq dëftesa leximi dërguar nga përdorues të tjerë", + "Scissors": "Gërshërë", + "Pin": "Fiksoje", "Error updating main address": "Gabim gjatë përditësimit të adresës kryesore", "There was an error updating the room's main address. It may not be allowed by the server or a temporary failure occurred.": "Pati një gabim në përditësimin e adresës kryesore të dhomës. Mund të mos lejohet nga shërbyesi ose mund të ketë ndodhur një gabim i përkohshëm.", "Error updating flair": "Gabim gjatë përditësimit të flair-it", @@ -1227,6 +1299,7 @@ "%(brand)s failed to get the public room list.": "%(brand)s-i s’arriti të merrte listën e dhomave publike.", "The homeserver may be unavailable or overloaded.": "Shërbyesi Home mund të jetë i pakapshëm ose i mbingarkuar.", "Add room": "Shtoni dhomë", + "Your profile": "Profili juaj", "Your Matrix account on ": "Llogaria juaj Matrix te ", "Failed to get autodiscovery configuration from server": "S’u arrit të merrej formësim vetëzbulimi nga shërbyesi", "Invalid base_url for m.homeserver": "Parametër base_url i pavlefshëm për m.homeserver", @@ -1341,6 +1414,7 @@ "Sign in and regain access to your account.": "Bëni hyrjen dhe rifitoni hyrje në llogarinë tuaj.", "You cannot sign in to your account. Please contact your homeserver admin for more information.": "S’mund të bëni hyrjen në llogarinë tuaj. Ju lutemi, për më tepër hollësi, lidhuni me përgjegjësin e shërbyesit tuaj Home.", "Clear personal data": "Spastro të dhëna personale", + "Spanner": "Çelës", "Identity Server URL must be HTTPS": "URL-ja e Shërbyesit të Identiteteve duhet të jetë HTTPS", "Not a valid Identity Server (status code %(code)s)": "Shërbyes Identitetesh i pavlefshëm (kod gjendjeje %(code)s)", "Could not connect to Identity Server": "S’u lidh dot me Shërbyes Identitetesh", @@ -1419,6 +1493,9 @@ "For a large amount of messages, this might take some time. Please don't refresh your client in the meantime.": "Për një sasi të madhe mesazhesh, kjo mund të dojë ca kohë. Ju lutemi, mos e rifreskoni klientin tuaj gjatë kësaj kohe.", "Remove %(count)s messages|other": "Hiq %(count)s mesazhe", "Remove recent messages": "Hiq mesazhe së fundi", + "Explore": "Eksploroni", + "Filter": "Filtër", + "Filter rooms…": "Filtroni dhoma…", "Preview": "Paraparje", "View": "Shihni", "Find a room…": "Gjeni një dhomë…", @@ -1463,6 +1540,7 @@ "Remove %(count)s messages|one": "Hiq 1 mesazh", "%(count)s unread messages including mentions.|other": "%(count)s mesazhe të palexuar, përfshi përmendje.", "%(count)s unread messages.|other": "%(count)s mesazhe të palexuar.", + "Unread mentions.": "Përmendje të palexuara.", "Show image": "Shfaq figurë", "Please create a new issue on GitHub so that we can investigate this bug.": "Ju lutemi, krijoni një çështje të re në GitHub, që të mund ta hetojmë këtë të metë.", "Missing captcha public key in homeserver configuration. Please report this to your homeserver administrator.": "Mungon kyç publik captcha-je te formësimi i shërbyesit Home. Ju lutemi, njoftojani këtë përgjegjësit të shërbyesit tuaj Home.", @@ -1478,6 +1556,7 @@ "%(name)s (%(userId)s)": "%(name)s (%(userId)s)", "Show tray icon and minimize window to it on close": "Me mbylljen, shfaq ikonë paneli dhe minimizo dritaren", "Room %(name)s": "Dhoma %(name)s", + "Recent rooms": "Dhoma së fundi", "%(count)s unread messages including mentions.|one": "1 përmendje e palexuar.", "%(count)s unread messages.|one": "1 mesazh i palexuar.", "Unread messages.": "Mesazhe të palexuar.", @@ -1675,6 +1754,7 @@ "Complete": "E plotë", "This room is end-to-end encrypted": "Kjo dhomë është e fshehtëzuar skaj-më-skaj", "Everyone in this room is verified": "Gjithkush në këtë dhomë është verifikuar", + "Invite only": "Vetëm me ftesa", "Send a reply…": "Dërgoni një përgjigje…", "Send a message…": "Dërgoni një mesazh…", "Reject & Ignore user": "Hidhe poshtë & Shpërfille përdoruesin", @@ -1720,6 +1800,8 @@ "%(brand)s is securely caching encrypted messages locally for them to appear in search results:": "%(brand)s-i po ruan lokalisht në mënyrë të sigurt në fshehtinë mesazhet që të shfaqen në përfundime kërkimi:", "Space used:": "Hapësirë e përdorur:", "Indexed messages:": "Mesazhe të indeksuar:", + "If you cancel now, you won't complete verifying the other user.": "Nëse e anuloni tani, s’do të plotësoni verifikimin e përdoruesit tjetër.", + "If you cancel now, you won't complete verifying your other session.": "Nëse e anuloni tani, s’do të plotësoni verifikimin e sesionit tuaj tjetër.", "Cancel entering passphrase?": "Të anulohet dhënue frazëkalimi?", "Setting up keys": "Ujdisje kyçesh", "Verifies a user, session, and pubkey tuple": "Verifikon një përdorues, sesion dhe një set kyçesh publikë", @@ -2045,6 +2127,7 @@ "Server did not require any authentication": "Shërbyesi s’kërkoi ndonjë mirëfilltësim", "Server did not return valid authentication information.": "Shërbyesi s’ktheu ndonjë të dhënë të vlefshme mirëfilltësimi.", "There was a problem communicating with the server. Please try again.": "Pati një problem në komunikimin me shërbyesin. Ju lutemi, riprovoni.", + "If you cancel now, you won't complete your operation.": "Nëse e anuloni tani, s’do ta plotësoni veprimin tuaj.", "Verify other session": "Verifikoni tjetër sesion", "Unable to access secret storage. Please verify that you entered the correct recovery passphrase.": "S’arrihet të hyhet në depozitë të fshehtë. Ju lutemi, verifikoni se dhatë frazëkalimin e duhur për rimarrje.", "Backup could not be decrypted with this recovery key: please verify that you entered the correct recovery key.": "Kopjeruajtja s’u shfshehtëzua dot me këtë kyç rimarrjesh: ju lutemi, verifikoni se keni dhënë kyçin e saktë të rimarrjeve.", @@ -2067,6 +2150,7 @@ "Send a bug report with logs": "Dërgoni një njoftim të metash me regjistra", "You signed in to a new session without verifying it:": "Bëtë hyrjen në një sesion të ri pa e verifikuar:", "Verify your other session using one of the options below.": "Verifikoni sesionit tuaj tjetër duke përdorur një nga mundësitë më poshtë.", + "Lock": "Kyçje", "Verify all your sessions to ensure your account & messages are safe": "Verifikoni krejt sesionet tuaj që të siguroheni se llogaria & mesazhet tuaja janë të sigurt", "Verify the new login accessing your account: %(name)s": "Verifikoni kredencialet e reja për hyrje te llogaria juaj: %(name)s", "Cross-signing": "Cross-signing", @@ -2104,12 +2188,14 @@ "Dismiss read marker and jump to bottom": "Mos merr parasysh piketë leximi dhe hidhu te fundi", "Jump to oldest unread message": "Hidhu te mesazhi më i vjetër i palexuar", "Upload a file": "Ngarkoni një kartelë", + "Font scaling": "Përshkallëzim shkronjash", "Font size": "Madhësi shkronjash", "IRC display name width": "Gjerësi shfaqjeje emrash IRC", "Size must be a number": "Madhësia duhet të jetë një numër", "Custom font size can only be between %(min)s pt and %(max)s pt": "Madhësia vetjake për shkronjat mund të jetë vetëm mes vlerave %(min)s pt dhe %(max)s pt", "Use between %(min)s pt and %(max)s pt": "Përdor me %(min)s pt dhe %(max)s pt", "Appearance": "Dukje", + "Create room": "Krijo dhomë", "Room name or address": "Emër ose adresë dhome", "Joins room with given address": "Hyhet në dhomën me adresën e dhënë", "Unrecognised room address:": "Adresë dhome që s’njihet:", @@ -2157,6 +2243,10 @@ "Feedback": "Mendime", "No recently visited rooms": "S’ka dhoma të vizituara së fundi", "Sort by": "Renditi sipas", + "Unread rooms": "Dhoma të palexuara", + "Always show first": "Shfaq përherë të parën", + "Show": "Shfaqe", + "Message preview": "Paraparje mesazhi", "List options": "Mundësi liste", "Show %(count)s more|other": "Shfaq %(count)s të tjera", "Show %(count)s more|one": "Shfaq %(count)s tjetër", @@ -2171,6 +2261,7 @@ "Looks good!": "Mirë duket!", "Use Recovery Key or Passphrase": "Përdorni Kyç ose Frazëkalim Rimarrjesh", "Use Recovery Key": "Përdorni Kyç Rimarrjesh", + "Use the improved room list (will refresh to apply changes)": "Përdor listën e përmirësuar të dhomave (do të rifreskohet, që të aplikohen ndryshimet)", "Use custom size": "Përdor madhësi vetjake", "Hey you. You're the best!": "Hej, ju. S’u ka kush shokun!", "Message layout": "Skemë mesazhesh", @@ -2188,9 +2279,50 @@ "%(senderName)s started a call": "%(senderName)s filluat një thirrje", "Waiting for answer": "Po pritet për përgjigje", "%(senderName)s is calling": "%(senderName)s po thërret", + "You created the room": "Krijuat dhomën", + "%(senderName)s created the room": "%(senderName)s krijoi dhomën", + "You made the chat encrypted": "E bëtë të fshehtëzuar fjalosjen", + "%(senderName)s made the chat encrypted": "%(senderName)s e bëri të fshehtëzuar fjalosjen", + "You made history visible to new members": "E bëtë historikun të dukshëm për anëtarë të rinj", + "%(senderName)s made history visible to new members": "%(senderName)s e bëri historikun të dukshëm për anëtarë të rinj", + "You made history visible to anyone": "E bëtë historikun të dukshëm për këdo", + "%(senderName)s made history visible to anyone": "%(senderName)s e bëri historikun të dukshëm për këdo", + "You made history visible to future members": "E bëtë historikun të dukshëm për anëtarë të ardhshëm", + "%(senderName)s made history visible to future members": "%(senderName)s e bëri historikun të dukshëm për anëtarë të ardhshëm", + "You were invited": "U ftuat", + "%(targetName)s was invited": "%(targetName)s u ftua", + "You left": "Dolët", + "%(targetName)s left": "%(targetName)s doli", + "You were kicked (%(reason)s)": "U përzutë (%(reason)s)", + "%(targetName)s was kicked (%(reason)s)": "%(targetName)s u përzu (%(reason)s)", + "You were kicked": "U përzutë", + "%(targetName)s was kicked": "%(targetName)s u përzu", + "You rejected the invite": "S’pranuat ftesën", + "%(targetName)s rejected the invite": "%(targetName)s s’pranoi ftesën", + "You were uninvited": "Ju shfuqizuan ftesën", + "%(targetName)s was uninvited": "%(targetName)s i shfuqizuan ftesën", + "You were banned (%(reason)s)": "U dëbuat (%(reason)s)", + "%(targetName)s was banned (%(reason)s)": "%(targetName)s u dëbua (%(reason)s)", + "You were banned": "U dëbuat", + "%(targetName)s was banned": "%(targetName)s u dëbua", + "You joined": "U bëtë pjesë", + "%(targetName)s joined": "%(targetName)s u bë pjesë", + "You changed your name": "Ndryshuat emrin", + "%(targetName)s changed their name": "%(targetName)s ndryshoi emrin e vet", + "You changed your avatar": "Ndryshuat avatarin tuaj", + "%(targetName)s changed their avatar": "%(targetName)s ndryshoi avatarin e vet", + "%(senderName)s %(emote)s": "%(senderName)s %(emote)s", "%(senderName)s: %(message)s": "%(senderName)s: %(message)s", + "You changed the room name": "Ndryshuat emrin e dhomës", + "%(senderName)s changed the room name": "%(senderName)s ndryshoi emrin e dhomës", "%(senderName)s: %(reaction)s": "%(senderName)s: %(reaction)s", "%(senderName)s: %(stickerName)s": "%(senderName)s: %(stickerName)s", + "You uninvited %(targetName)s": "Shfuqizuat ftesën për %(targetName)s", + "%(senderName)s uninvited %(targetName)s": "%(senderName)s shfuqizoi ftesën për %(targetName)s", + "You invited %(targetName)s": "Ftuat %(targetName)s", + "%(senderName)s invited %(targetName)s": "%(senderName)s ftoi %(targetName)s", + "You changed the room topic": "Ndryshuat temën e dhomës", + "%(senderName)s changed the room topic": "%(senderName)s ndryshoi temën e dhomës", "Use a more compact ‘Modern’ layout": "Përdorni një skemë ‘Modern’ më kompakte", "The authenticity of this encrypted message can't be guaranteed on this device.": "Mirëfilltësia e këtij mesazhi të fshehtëzuar s’mund të garantohet në këtë pajisje.", "Message deleted on %(date)s": "Mesazh i fshirë më %(date)s", @@ -2214,6 +2346,10 @@ "Set a Security Phrase": "Caktoni një Frazë Sigurie", "Confirm Security Phrase": "Ripohoni Frazë Sigurie", "Save your Security Key": "Ruani Kyçin tuaj të Sigurisë", + "Use your account to sign in to the latest version": "Përdorni llogarinë tuaj për të bërë hyrjen te versioni më i ri", + "We’re excited to announce Riot is now Element": "Jemi të ngazëllyer t’ju njoftojmë se Riot tanimë është Element", + "Riot is now Element!": "Riot-i tani është Element!", + "Learn More": "Mësoni Më Tepër", "Are you sure you want to cancel entering passphrase?": "Jeni i sigurt se doni të anulohet dhënie frazëkalimi?", "Enable advanced debugging for the room list": "Aktivizo diagnostikim të thelluar për listën e dhomave", "Enable experimental, compact IRC style layout": "Aktivizo skemë eksperimentale, kompakte, IRC-je", @@ -2225,6 +2361,8 @@ "There are advanced notifications which are not shown here.": "Ka njoftime të thelluara që s’janë shfaqur këtu.", "You might have configured them in a client other than %(brand)s. You cannot tune them in %(brand)s but they still apply.": "Mund t’i keni formësuar në një klient tjetër nga %(brand)s. S’mund t’i përimtoni në %(brand)s, por janë ende të vlefshëm.", "Set the name of a font installed on your system & %(brand)s will attempt to use it.": "Caktoni emrin e një palë shkronjash të instaluara në sistemin tuaj & %(brand)s do të provojë t’i përdorë.", + "Make this room low priority": "Bëje këtë dhomë të përparësisë së ulët", + "Low priority rooms show up at the bottom of your room list in a dedicated section at the bottom of your room list": "Dhomat me përparësi të ulët shfaqen në fund të listës tuaj të dhomave, në një ndarje enkas në fund të listës tuaj të dhomave", "Show rooms with unread messages first": "Së pari shfaq dhoma me mesazhe të palexuar", "Show previews of messages": "Shfaq paraparje mesazhesh", "Use default": "Përdor parazgjedhjen", @@ -2235,6 +2373,11 @@ "Away": "I larguar", "Edited at %(date)s": "Përpunuar më %(date)s", "Click to view edits": "Klikoni që të shihni përpunime", + "Use your account to sign in to the latest version of the app at ": "Përdorni llogarinë tuaj për të hyrë te versioni më i ri i aplikacionit te ", + "You’re already signed in and good to go here, but you can also grab the latest versions of the app on all platforms at element.io/get-started.": "Keni bërë tashmë hyrjen këtu dhe jeni në rregull, por mundeni edhe të merrnit versionet më të reja të aplikacioneve në krejt platformat, te element.io/get-started.", + "Go to Element": "Shko te Element-i", + "We’re excited to announce Riot is now Element!": "Jemi të ngazëllyer të njoftojmë se Riot-i tani e tutje është Element-i!", + "Learn more at element.io/previously-riot": "Mësoni më tepër te element.io/previously-riot", "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use %(brand)s with an existing Matrix account on a different homeserver.": "Mund të përdorni mundësitë vetjake për shërbyesin Që të bëni hyrjen te shërbyes të tjerë Matrix, duke specifikuar një URL të një shërbyesi Home tjetër. Kjo ju lejon të përdorni %(brand)s në një tjetër shërbyes Home me një llogari Matrix ekzistuese.", "Enter the location of your Element Matrix Services homeserver. It may use your own domain name or be a subdomain of element.io.": "Jepni vendndodhjen e shërbyesit tuaj vatër Element Matrix Services. Mund të përdorë emrin e përkatësisë tuaj vetjake ose të jetë një nënpërkatësi e element.io.", "Search rooms": "Kërkoni në dhoma", @@ -2242,6 +2385,7 @@ "%(brand)s Web": "%(brand)s Web", "%(brand)s Desktop": "%(brand)s Desktop", "%(brand)s iOS": "%(brand)s iOS", + "%(brand)s X for Android": "%(brand)s X për Android", "* %(senderName)s %(emote)s": "* %(senderName)s %(emote)s", "Custom Tag": "Etiketë Vetjake", "The person who invited you already left the room.": "Personi që ju ftoi ka dalë nga dhoma tashmë.", diff --git a/src/i18n/strings/sr.json b/src/i18n/strings/sr.json index 5936904a0e..bce9fe6728 100644 --- a/src/i18n/strings/sr.json +++ b/src/i18n/strings/sr.json @@ -142,6 +142,11 @@ "Enable URL previews for this room (only affects you)": "Омогући претпрегледе адреса у овој соби (утиче само на вас)", "Enable URL previews by default for participants in this room": "Подразумевано омогући прегледе адреса за чланове ове собе", "Room Colour": "Боја собе", + "Active call (%(roomName)s)": "Активни позив (%(roomName)s)", + "unknown caller": "непознати позивалац", + "Incoming voice call from %(name)s": "Долазни гласовни позив од корисника %(name)s", + "Incoming video call from %(name)s": "Долазни видео позив од корисника %(name)s", + "Incoming call from %(name)s": "Долазни позив од корисника %(name)s", "Decline": "Одбиј", "Accept": "Прихвати", "Error": "Грешка", @@ -248,6 +253,7 @@ "Settings": "Подешавања", "Forget room": "Заборави собу", "Search": "Претрага", + "Community Invites": "Позивнице заједнице", "Invites": "Позивнице", "Favourites": "Омиљено", "Rooms": "Собе", @@ -463,6 +469,7 @@ "Name": "Име", "You must register to use this functionality": "Морате се регистровати да бисте користили ову могућност", "You must join the room to see its files": "Морате приступити соби да бисте видели њене датотеке", + "There are no visible files in this room": "Нема видљивих датотека у овој соби", "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

HTML за страницу ваше заједнице

\n

\n Користите дужи опис да бисте упознали нове чланове са заједницом, или поделили\n неке важне везе\n

\n

\n Можете чак користити \"img\" ознаке\n

\n", "Add rooms to the community summary": "Додај собе у кратак опис заједнице", "Which rooms would you like to add to this summary?": "Које собе желите додати у овај кратак опис?", @@ -526,6 +533,7 @@ "Error whilst fetching joined communities": "Грешка приликом добављања списка са приступљеним заједницама", "Create a new community": "Направи нову заједницу", "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Направите заједницу да бисте спојили кориснике и собе! Направите прилагођену почетну страницу да бисте означили ваш кутак у Матрикс универзуму.", + "You have no visible notifications": "Немате видљивих обавештења", "%(count)s of your messages have not been sent.|other": "Неке ваше поруке нису послате.", "%(count)s of your messages have not been sent.|one": "Ваша порука није послата.", "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.|other": "Пошаљи поново или откажи све сада. Такође можете изабрати појединачне поруке за поновно слање или отказивање.", @@ -809,6 +817,7 @@ "Share Community": "Подели заједницу", "Share Room Message": "Подели поруку у соби", "Link to selected message": "Веза ка изабраној поруци", + "COPY": "КОПИРАЈ", "Share Message": "Подели поруку", "No Audio Outputs detected": "Нема уочених излаза звука", "Audio Output": "Излаз звука", @@ -846,6 +855,8 @@ "Confirm": "Потврди", "A verification email will be sent to your inbox to confirm setting your new password.": "Мејл потврде ће бити послат у ваше сандуче да бисмо потврдили постављање ваше нове лозинке.", "Email (optional)": "Мејл (изборно)", + "Your Modular server": "Ваш Модулар сервер", + "Enter the location of your Modular homeserver. It may use your own domain name or be a subdomain of modular.im.": "Унесите адресу вашег Модулар кућног сервера. Можете користити ваш домен или унети поддомен на домену modular.im.", "Server Name": "Назив сервера", "Change": "Промени", "Messages containing my username": "Поруке које садрже моје корисничко", @@ -873,7 +884,11 @@ "You do not have permission to invite people to this room.": "Немате дозволу за позивање људи у ову собу.", "Set up encryption": "Подеси шифровање", "Encryption upgrade available": "Надоградња шифровања је доступна", + "You changed the room name": "Променили сте назив собе", + "%(senderName)s changed the room name": "Корисник %(senderName)s је променио назив собе", "%(senderName)s: %(reaction)s": "%(senderName)s: %(reaction)s", + "You changed the room topic": "Променили сте тему собе", + "%(senderName)s changed the room topic": "Корисник %(senderName)s је променио тему собе", "Multiple integration managers": "Више управника уградњи", "Try out new ways to ignore people (experimental)": "Испробајте нове начине за игнорисање људи (у пробној фази)", "Show info about bridges in room settings": "Прикажи податке о мостовима у подешавањима собе", @@ -906,6 +921,7 @@ "Emoji picker": "Бирач емоџија", "Send a message…": "Пошаљи поруку…", "Direct Messages": "Непосредне поруке", + "Create room": "Направи собу", "People": "Људи", "Forget this room": "Заборави ову собу", "Start chatting": "Започни ћаскање", @@ -964,6 +980,8 @@ "General failure": "Општа грешка", "Copy": "Копирај", "Go Back": "Назад", + "We’re excited to announce Riot is now Element": "Са радошћу објављујемо да је Рајот (Riot) сада Елемент (Element)", + "Riot is now Element!": "Рајот (Riot) је сада Елемент!", "Send a bug report with logs": "Пошаљи извештај о грешци са записницима", "Light": "Светла", "Dark": "Тамна", @@ -983,6 +1001,7 @@ "Show rooms with unread notifications first": "Прво прикажи собе са непрочитаним обавештењима", "Enable experimental, compact IRC style layout": "Омогући пробни, збијенији распоред у IRC стилу", "Got It": "Разумем", + "Light bulb": "Сијалица", "Algorithm: ": "Алгоритам: ", "Go back": "Назад", "Hey you. You're the best!": "Хеј! Само напред!", @@ -1019,6 +1038,9 @@ "Recently Direct Messaged": "Недавно послате непосредне поруке", "Start a conversation with someone using their name, username (like ) or email address.": "Започните разговор са неким користећи њихово име, корисничко име (као нпр.: ) или мејл адресу.", "Go": "Напред", + "Go to Element": "Иди у Елемент", + "We’re excited to announce Riot is now Element!": "Са одушевљењем објављујемо да је Рајот (Riot) сада Елемент (Element)!", + "Learn more at element.io/previously-riot": "Сазнајте више на страници element.io/previously-riot", "Looks good!": "Изгледа добро!", "Send a Direct Message": "Пошаљи непосредну поруку", "Switch theme": "Промени тему" diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index 90381c00cf..b2c7623fca 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -90,6 +90,7 @@ "Favourite": "Favorit", "Accept": "Godkänn", "Access Token:": "Åtkomsttoken:", + "Active call (%(roomName)s)": "Aktiv samtal (%(roomName)s)", "Add": "Lägg till", "Admin Tools": "Admin-verktyg", "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Det gick inte att ansluta till hemservern - kontrollera anslutningen, se till att hemserverns SSL-certifikat är betrott, och att inget webbläsartillägg blockerar förfrågningar.", @@ -118,6 +119,9 @@ "I have verified my email address": "Jag har verifierat min epostadress", "Import": "Importera", "Import E2E room keys": "Importera rumskrypteringsnycklar", + "Incoming call from %(name)s": "Inkommande samtal från %(name)s", + "Incoming video call from %(name)s": "Inkommande videosamtal från %(name)s", + "Incoming voice call from %(name)s": "Inkommande röstsamtal från %(name)s", "Incorrect username and/or password.": "Fel användarnamn och/eller lösenord.", "Incorrect verification code": "Fel verifieringskod", "Invalid Email Address": "Ogiltig epostadress", @@ -500,8 +504,10 @@ "If you already have a Matrix account you can log in instead.": "Om du redan har ett Matrix-konto kan du logga in istället.", "You must register to use this functionality": "Du måste registrera dig för att använda den här funktionaliteten", "You must join the room to see its files": "Du måste gå med i rummet för att se tillhörande filer", + "There are no visible files in this room": "Det finns inga synliga filer i det här rummet", "Start automatically after system login": "Starta automatiskt vid systeminloggning", "This will allow you to reset your password and receive notifications.": "Det här låter dig återställa lösenordet och ta emot aviseringar.", + "You have no visible notifications": "Du har inga synliga aviseringar", "Failed to upload image": "Det gick inte att ladda upp bild", "New Password": "Nytt lösenord", "Do you want to set an email address?": "Vill du ange en epostadress?", @@ -667,6 +673,7 @@ "Add to community": "Lägg till i community", "Failed to invite users to community": "Det gick inte att bjuda in användare till communityn", "Mirror local video feed": "Speglad lokal-video", + "Community Invites": "Community-inbjudningar", "Invalid community ID": "Ogiltigt community-ID", "'%(groupId)s' is not a valid community ID": "%(groupId)s är inte ett giltigt community-ID", "New community ID (e.g. +foo:%(localDomain)s)": "Nytt community-ID (t.ex. +foo:%(localDomain)s)", @@ -732,6 +739,7 @@ "Disinvite this user?": "Ta bort användarens inbjudan?", "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "Du kommer inte att kunna ångra den här ändringen eftersom du sänker din egen behörighetsnivå, om du är den sista privilegierade användaren i rummet blir det omöjligt att ändra behörigheter.", "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Du kommer inte att kunna ångra den här ändringen eftersom du höjer användaren till samma behörighetsnivå som dig själv.", + "unknown caller": "okänd uppringare", "To use it, just wait for autocomplete results to load and tab through them.": "För att använda detta, vänta på att autokompletteringen laddas och tabba igenom resultatet.", "Enable inline URL previews by default": "Aktivera URL-förhandsvisning som standard", "Enable URL previews for this room (only affects you)": "Aktivera URL-förhandsvisning för detta rum (påverkar bara dig)", @@ -809,6 +817,7 @@ "Share Community": "Dela community", "Share Room Message": "Dela rumsmeddelande", "Link to selected message": "Länk till valt meddelande", + "COPY": "KOPIERA", "Share Message": "Dela meddelande", "No Audio Outputs detected": "Inga ljudutgångar hittades", "Audio Output": "Ljudutgång", @@ -930,6 +939,69 @@ "Messages containing @room": "Meddelanden som innehåller @room", "Encrypted messages in one-to-one chats": "Krypterade meddelanden i privata chattar", "Encrypted messages in group chats": "Krypterade meddelanden i gruppchattar", + "Dog": "Hund", + "Cat": "Katt", + "Lion": "Lejon", + "Horse": "Häst", + "Unicorn": "Enhörning", + "Pig": "Gris", + "Elephant": "Elefant", + "Rabbit": "Kanin", + "Panda": "Panda", + "Rooster": "Tupp", + "Penguin": "Pingvin", + "Turtle": "Sköldpadda", + "Fish": "Fisk", + "Octopus": "Bläckfisk", + "Butterfly": "Fjäril", + "Flower": "Blomma", + "Tree": "Träd", + "Cactus": "Kaktus", + "Mushroom": "Svamp", + "Globe": "Jordglob", + "Moon": "Måne", + "Cloud": "Moln", + "Fire": "Eld", + "Banana": "Banan", + "Apple": "Äpple", + "Strawberry": "Jordgubbe", + "Corn": "Majs", + "Pizza": "Pizza", + "Cake": "Tårta", + "Heart": "Hjärta", + "Smiley": "Smiley", + "Robot": "Robot", + "Hat": "Hatt", + "Glasses": "Glasögon", + "Spanner": "Skruvnyckel", + "Santa": "Tomte", + "Thumbs up": "Tummen upp", + "Umbrella": "Paraply", + "Hourglass": "Timglas", + "Clock": "Klocka", + "Gift": "Present", + "Light bulb": "Glödlampa", + "Book": "Bok", + "Pencil": "Penna", + "Paperclip": "Gem", + "Scissors": "Sax", + "Key": "Nyckel", + "Hammer": "Hammare", + "Telephone": "Telefon", + "Flag": "Flagga", + "Train": "Tåg", + "Bicycle": "Cykel", + "Aeroplane": "Flygplan", + "Rocket": "Raket", + "Trophy": "Trofé", + "Ball": "Boll", + "Guitar": "Gitarr", + "Trumpet": "Trumpet", + "Bell": "Ringklocka", + "Anchor": "Ankare", + "Headphones": "Hörlurar", + "Folder": "Mapp", + "Pin": "Knappnål", "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.": "Vi har skickat ett mail till dig för att verifiera din adress. Följ instruktionerna där och klicka sedan på knappen nedan.", "Email Address": "Epostadress", "Add an email address to configure email notifications": "Lägg till en epostadress för att konfigurera epostaviseringar", @@ -1242,6 +1314,9 @@ "Couldn't load page": "Det gick inte att ladda sidan", "Want more than a community? Get your own server": "Vill du ha mer än en community? Skaffa din egen server", "This homeserver does not support communities": "Denna hemserver stöder inte communityn", + "Explore": "Utforska", + "Filter": "Filtrera", + "Filter rooms…": "Filtrera rum…", "Please ask the administrator of your homeserver (%(homeserverDomain)s) to configure a TURN server in order for calls to work reliably.": "Be administratören för din hemserver (%(homeserverDomain)s) att konfigurera en TURN-server för att samtal ska fungera pålitligt.", "Alternatively, you can try to use the public server at turn.matrix.org, but this will not be as reliable, and it will share your IP address with that server. You can also manage this in Settings.": "Alternativt kan du testa att använda den offentliga servern turn.matrix.org, men det är inte lika pålitligt och det kommer att dela din IP-adress med den servern. Du kan också hantera detta under Inställningar.", "Warning: Upgrading a room will not automatically migrate room members to the new version of the room. We'll post a link to the new room in the old version of the room - room members will have to click this link to join the new room.": "Varning: Uppgradering av ett rum flyttar inte automatiskt rumsmedlemmar till den nya versionen av rummet. Vi lägger ut en länk till det nya rummet i den gamla versionen av rummet - rumsmedlemmar måste klicka på den här länken för att gå med i det nya rummet.", @@ -1285,6 +1360,7 @@ "Integration Managers receive configuration data, and can modify widgets, send room invites, and set power levels on your behalf.": "Integrationshanterare får konfigurationsdata och kan ändra widgetar, skicka ruminbjudningar och ställa in behörighetsnivåer via ditt konto.", "Close preview": "Stäng förhandsvisning", "Room %(name)s": "Rum %(name)s", + "Recent rooms": "Senaste rummen", "Loading room preview": "Laddar förhandsvisning av rummet", "Re-join": "Gå med igen", "Try to join anyway": "Försök att gå med ändå", @@ -1380,6 +1456,8 @@ "Whether you're using %(brand)s on a device where touch is the primary input mechanism": "Om du använder %(brand)s på en enhet där pekskärm är den primära inmatningsmekanismen", "Whether you're using %(brand)s as an installed Progressive Web App": "Om du använder %(brand)s som en installerad progressiv webbapp", "Your user agent": "Din användaragent", + "If you cancel now, you won't complete verifying the other user.": "Om du avbryter nu kommer du inte att verifiera den andra användaren.", + "If you cancel now, you won't complete verifying your other session.": "Om du avbryter nu kommer du inte att verifiera din andra session.", "Cancel entering passphrase?": "Avbryta att ange lösenfras?", "Setting up keys": "Sätter upp nycklar", "Verify this session": "Verifiera denna session", @@ -1456,6 +1534,10 @@ "Go Back": "Gå tillbaka", "Room name or address": "Rum namn eller adress", "%(name)s is requesting verification": "%(name)s begär verifiering", + "Use your account to sign in to the latest version": "Använd ditt konto för att logga in till den senaste versionen", + "We’re excited to announce Riot is now Element": "Vi är glada att meddela att Riot är nu Element", + "Riot is now Element!": "Riot är nu Element!", + "Learn More": "Lär mer", "Sends a message as html, without interpreting it as markdown": "Skicka ett meddelande som html, utan att tolka det som markdown", "Failed to set topic": "Misslyckades med att ställa in ämnet" } diff --git a/src/i18n/strings/te.json b/src/i18n/strings/te.json index 878072cc38..431c4571ea 100644 --- a/src/i18n/strings/te.json +++ b/src/i18n/strings/te.json @@ -17,6 +17,7 @@ "Always show message timestamps": "ఎల్లప్పుడూ సందేశాల సమయ ముద్రలు చూపించు", "Authentication": "ప్రామాణీకరణ", "You do not have permission to post to this room": "మీకు ఈ గదికి పోస్ట్ చేయడానికి అనుమతి లేదు", + "Active call (%(roomName)s)": "క్రియాశీల కాల్ల్ (%(roomName)s)", "A new password must be entered.": "కొత్త పాస్ వర్డ్ ను తప్పక నమోదు చేయాలి.", "%(senderName)s answered the call.": "%(senderName)s కు సమాధానం ఇచ్చారు.", "An error has occurred.": "ఒక లోపము సంభవించినది.", @@ -40,6 +41,7 @@ "You cannot place a call with yourself.": "మీకు మీరే కాల్ చేయలేరు.", "You are already in a call.": "మీరు ఇప్పటికే కాల్లో ఉన్నారు.", "You cannot place VoIP calls in this browser.": "మీరు ఈ బ్రౌజర్లో కాల్లను చేయలేరు.", + "You have no visible notifications": "మీకు కనిపించే నోటిఫికేషన్లు లేవు", "You need to be able to invite users to do that.": "మీరు దీన్ని చేయడానికి వినియోగదారులను ఆహ్వానించగలరు.", "Click here to fix": "పరిష్కరించడానికి ఇక్కడ క్లిక్ చేయండి", "Click to mute audio": "ఆడియోను మ్యూట్ చేయడానికి క్లిక్ చేయండి", @@ -91,6 +93,7 @@ "Upload an avatar:": "అవతార్ను అప్లోడ్ చేయండి:", "This server does not support authentication with a phone number.": "ఈ సర్వర్ ఫోన్ నంబర్తో ప్రామాణీకరణకు మద్దతు ఇవ్వదు.", "New passwords don't match": "కొత్త పాస్వర్డ్లు సరిపోలడం లేదు", + "There are no visible files in this room": "ఈ గదిలో కనిపించే ఫైల్లు లేవు", "Connectivity to the server has been lost.": "సెర్వెర్ కనెక్టివిటీని కోల్పోయారు.", "Sent messages will be stored until your connection has returned.": "మీ కనెక్షన్ తిరిగి వచ్చే వరకు పంపిన సందేశాలు నిల్వ చేయబడతాయి.", "Cancel": "రద్దు", diff --git a/src/i18n/strings/th.json b/src/i18n/strings/th.json index 8d71e05a0e..811d549d54 100644 --- a/src/i18n/strings/th.json +++ b/src/i18n/strings/th.json @@ -261,6 +261,7 @@ "%(roomName)s does not exist.": "ไม่มีห้อง %(roomName)s อยู่จริง", "Enter passphrase": "กรอกรหัสผ่าน", "Seen by %(userName)s at %(dateTime)s": "%(userName)s เห็นแล้วเมื่อเวลา %(dateTime)s", + "unknown caller": "ไม่ทราบผู้โทร", "Upload new:": "อัปโหลดใหม่:", "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (ระดับอำนาจ %(powerLevelNumber)s)", "Users": "ผู้ใช้", diff --git a/src/i18n/strings/tr.json b/src/i18n/strings/tr.json index 2f855f384e..5a152eeab6 100644 --- a/src/i18n/strings/tr.json +++ b/src/i18n/strings/tr.json @@ -4,6 +4,7 @@ "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s %(displayName)s için davetiyeyi kabul etti.", "Account": "Hesap", "Access Token:": "Erişim Anahtarı:", + "Active call (%(roomName)s)": "Aktif çağrı (%(roomName)s)", "Add": "Ekle", "Add a topic": "Bir konu(topic) ekle", "Admin": "Admin", @@ -118,6 +119,9 @@ "I have verified my email address": "E-posta adresimi doğruladım", "Import": "İçe Aktar", "Import E2E room keys": "Uçtan uca Oda Anahtarlarını İçe Aktar", + "Incoming call from %(name)s": "%(name)s ' den gelen çağrı", + "Incoming video call from %(name)s": "%(name)s ' den görüntülü arama", + "Incoming voice call from %(name)s": "%(name)s ' den gelen sesli arama", "Incorrect username and/or password.": "Yanlış kullanıcı adı ve / veya şifre.", "Incorrect verification code": "Yanlış doğrulama kodu", "Invalid Email Address": "Geçersiz E-posta Adresi", @@ -239,6 +243,7 @@ "%(senderName)s unbanned %(targetName)s.": "%(senderName)s %(targetName)s 'in yasağını kaldırdı.", "Unable to capture screen": "Ekran yakalanamadı", "Unable to enable Notifications": "Bildirimler aktif edilemedi", + "unknown caller": "bilinmeyen arayıcı", "unknown error code": "bilinmeyen hata kodu", "Unmute": "Sesi aç", "Unnamed Room": "İsimsiz Oda", @@ -273,6 +278,7 @@ "You do not have permission to post to this room": "Bu odaya göndermeye izniniz yok", "You have disabled URL previews by default.": "URL önizlemelerini varsayılan olarak devre dışı bıraktınız.", "You have enabled URL previews by default.": "URL önizlemelerini varsayılan olarak etkinleştirdiniz.", + "You have no visible notifications": "Hiçbir görünür bildiriminiz yok", "You must register to use this functionality": "Bu işlevi kullanmak için Kayıt Olun ", "You need to be able to invite users to do that.": "Bunu yapmak için kullanıcıları davet etmeye ihtiyacınız var.", "You need to be logged in.": "Oturum açmanız gerekiyor.", @@ -306,6 +312,7 @@ "Upload an avatar:": "Bir Avatar yükle :", "This server does not support authentication with a phone number.": "Bu sunucu bir telefon numarası ile kimlik doğrulamayı desteklemez.", "An error occurred: %(error_string)s": "Bir hata oluştu : %(error_string)s", + "There are no visible files in this room": "Bu odada görünür hiçbir dosya yok", "Room": "Oda", "Connectivity to the server has been lost.": "Sunucuyla olan bağlantı kesildi.", "Sent messages will be stored until your connection has returned.": "Gönderilen iletiler bağlantınız geri gelene kadar saklanacak.", @@ -651,6 +658,7 @@ "Share Community": "Topluluk Paylaş", "Share Room Message": "Oda Mesajı Paylaş", "Link to selected message": "Seçili mesaja bağlantı", + "COPY": "KOPYA", "Command Help": "Komut Yardımı", "Missing session data": "Kayıp oturum verisi", "Integration Manager": "Bütünleştirme Yöneticisi", @@ -691,6 +699,7 @@ "Country Dropdown": "Ülke Listesi", "Code": "Kod", "Unable to validate homeserver/identity server": "Ana/kimlik sunucu doğrulanamıyor", + "Your Modular server": "Sizin Modüler sunucunuz", "Server Name": "Sunucu Adı", "The email field must not be blank.": "E-posta alanı boş bırakılamaz.", "The username field must not be blank.": "Kullanıcı adı alanı boş bırakılamaz.", @@ -737,6 +746,8 @@ "Community %(groupId)s not found": "%(groupId)s topluluğu bulunamıyor", "This homeserver does not support communities": "Bu ana sunucu toplulukları desteklemiyor", "Failed to load %(groupId)s": "%(groupId)s yükleme başarısız", + "Filter": "Filtre", + "Filter rooms…": "Odaları filtrele…", "Old cryptography data detected": "Eski kriptolama verisi tespit edildi", "Verification Request": "Doğrulama Talebi", "Your Communities": "Topluluklarınız", @@ -753,6 +764,7 @@ "Add room": "Oda ekle", "Clear filter": "Filtre temizle", "Guest": "Misafir", + "Your profile": "Profiliniz", "Could not load user profile": "Kullanıcı profili yüklenemedi", "Your Matrix account on %(serverName)s": "%(serverName)s sunucusundaki Matrix hesabınız", "Your password has been reset.": "Parolanız sıfırlandı.", @@ -826,6 +838,33 @@ "New Recovery Method": "Yeni Kurtarma Yöntemi", "Go to Settings": "Ayarlara Git", "Recovery Method Removed": "Kurtarma Yöntemi Silindi", + "Robot": "Robot", + "Hat": "Şapka", + "Glasses": "Gözlük", + "Umbrella": "Şemsiye", + "Hourglass": "Kum saati", + "Clock": "Saat", + "Gift": "Hediye", + "Light bulb": "Ampül", + "Book": "Kitap", + "Pencil": "Kalem", + "Paperclip": "Ataç", + "Scissors": "Makas", + "Key": "Anahtar", + "Hammer": "Çekiç", + "Telephone": "Telefon", + "Flag": "Bayrak", + "Train": "Tren", + "Bicycle": "Bisiklet", + "Aeroplane": "Uçak", + "Rocket": "Füze", + "Ball": "Top", + "Guitar": "Gitar", + "Trumpet": "Trampet", + "Bell": "Zil", + "Anchor": "Çıpa", + "Headphones": "Kulaklık", + "Folder": "Klasör", "Accept to continue:": "Devam etmek için i kabul ediniz:", "Upload": "Yükle", "not found": "bulunamadı", @@ -868,6 +907,36 @@ "Verified!": "Doğrulandı!", "You've successfully verified this user.": "Bu kullanıcıyı başarılı şekilde doğruladınız.", "Unable to find a supported verification method.": "Desteklenen doğrulama yöntemi bulunamadı.", + "Dog": "Köpek", + "Cat": "Kedi", + "Lion": "Aslan", + "Horse": "At", + "Unicorn": "Midilli", + "Pig": "Domuz", + "Elephant": "Fil", + "Rabbit": "Tavşan", + "Panda": "Panda", + "Penguin": "Penguen", + "Turtle": "Kaplumbağa", + "Fish": "Balık", + "Octopus": "Ahtapot", + "Butterfly": "Kelebek", + "Flower": "Çiçek", + "Tree": "Ağaç", + "Cactus": "Kaktüs", + "Mushroom": "Mantar", + "Globe": "Dünya", + "Moon": "Ay", + "Cloud": "Bulut", + "Fire": "Ateş", + "Banana": "Muz", + "Apple": "Elma", + "Strawberry": "Çilek", + "Corn": "Mısır", + "Pizza": "Pizza", + "Cake": "Kek", + "Heart": "Kalp", + "Trophy": "Ödül", "wait and try again later": "bekle ve tekrar dene", "Disconnect anyway": "Yinede bağlantıyı kes", "Go back": "Geri dön", @@ -971,6 +1040,7 @@ "Failed to invite users to %(groupId)s": "%(groupId)s grubuna kullanıcı daveti başarısız", "Failed to add the following rooms to %(groupId)s:": "%(groupId)s odalarına ekleme başarısız:", "Prepends ¯\\_(ツ)_/¯ to a plain-text message": "Düz-metin mesajına ¯\\_(ツ)_/¯ ifadesi ekler", + "Rooster": "Horoz", "Cross-signing public keys:": "Çarpraz-imzalama açık anahtarları:", "Cross-signing private keys:": "Çarpraz-imzalama gizli anahtarları:", "Backup has a valid signature from this user": "Yedek bu kullanıcıdan geçerli anahtara sahip", @@ -1009,6 +1079,7 @@ "Replying": "Cevap yazıyor", "Room %(name)s": "Oda %(name)s", "Share room": "Oda paylaş", + "Community Invites": "Topluluk Davetleri", "System Alerts": "Sistem Uyarıları", "Joining room …": "Odaya giriliyor …", "Loading …": "Yükleniyor …", @@ -1369,6 +1440,8 @@ "Someone is using an unknown session": "Birisi bilinmeyen bir oturum kullanıyor", "Everyone in this room is verified": "Bu odadaki herkes doğrulanmış", "Your user agent": "Kullanıcı aracınız", + "If you cancel now, you won't complete verifying the other user.": "Şimdi iptal ederseniz, diğer kullanıcıyı doğrulamayı tamamlamış olmayacaksınız.", + "If you cancel now, you won't complete verifying your other session.": "Şimdi iptal ederseniz, diğer oturumu doğrulamış olmayacaksınız.", "Setting up keys": "Anahtarları ayarla", "Custom (%(level)s)": "Özel (%(level)s)", "Upload %(count)s other files|other": "%(count)s diğer dosyaları yükle", @@ -1462,6 +1535,8 @@ "Scan this unique code": "Bu eşsiz kodu tara", "or": "veya", "Cancelling…": "İptal ediliyor…", + "Lock": "Kilit", + "Pin": "Şifre", "Your homeserver does not support cross-signing.": "Ana sunucunuz çapraz imzalamayı desteklemiyor.", "exists": "mevcut", "This session is backing up your keys. ": "Bu oturum anahtarlarınızı yedekliyor. ", @@ -1474,9 +1549,12 @@ "Re-request encryption keys from your other sessions.": "Diğer oturumlardan şifreleme anahtarlarını yeniden talep et.", "Encrypted by an unverified session": "Doğrulanmamış bir oturum tarafından şifrelenmiş", "Encrypted by a deleted session": "Silinen bir oturumla şifrelenmiş", + "Invite only": "Sadece davetliler", "Strikethrough": "Üstü çizili", + "Recent rooms": "Güncel odalar", "Reject & Ignore user": "Kullanıcı Reddet & Yoksay", "%(count)s unread messages including mentions.|one": "1 okunmamış bahis.", + "Unread mentions.": "Okunmamış bahisler.", "Could not revoke the invite. The server may be experiencing a temporary problem or you do not have sufficient permissions to revoke the invite.": "Davet geri çekilemiyor. Sunucu geçici bir problem yaşıyor olabilir yada daveti geri çekmek için gerekli izinlere sahip değilsin.", "Mark all as read": "Tümünü okunmuş olarak işaretle", "Incoming Verification Request": "Gelen Doğrulama İsteği", @@ -1622,6 +1700,10 @@ "Are you sure you want to cancel entering passphrase?": "Parola girmeyi iptal etmek istediğinizden emin misiniz?", "Room name or address": "Oda adı ya da adresi", "%(name)s is requesting verification": "%(name)s doğrulama istiyor", + "Use your account to sign in to the latest version": "En son sürümde oturum açmak için hesabınızı kullanın", + "We’re excited to announce Riot is now Element": "Riot'ın artık Element olduğunu duyurmaktan heyecan duyuyoruz", + "Riot is now Element!": "Riot artık Element!", + "Learn More": "", "Sends a message as html, without interpreting it as markdown": "İletiyi MarkDown olarak göndermek yerine HTML olarak gönderir", "Failed to set topic": "Konu belirlenemedi", "Joins room with given address": "Belirtilen adres ile odaya katılır", @@ -1655,5 +1737,25 @@ "You started a call": "Bir çağrı başlattınız", "%(senderName)s started a call": "%(senderName)s bir çağrı başlattı", "Waiting for answer": "Yanıt bekleniyor", - "%(senderName)s is calling": "%(senderName)s arıyor" + "%(senderName)s is calling": "%(senderName)s arıyor", + "You created the room": "Odayı oluşturdunuz", + "%(senderName)s created the room": "%(senderName)s odayı oluşturdu", + "You made the chat encrypted": "Sohbeti şifrelediniz", + "%(senderName)s made the chat encrypted": "%(senderName)s sohbeti şifreledi", + "You made history visible to new members": "Yeni üyelere sohbet geçmişini görünür yaptınız", + "%(senderName)s made history visible to new members": "%(senderName)s yeni üyelere sohbet geçmişini görünür yaptı", + "You made history visible to anyone": "Sohbet geçmişini herkese görünür yaptınız", + "%(senderName)s made history visible to anyone": "%(senderName)s sohbet geçmişini herkese görünür yaptı", + "You made history visible to future members": "Sohbet geçmişini gelecek kullanıcılara görünür yaptınız", + "%(senderName)s made history visible to future members": "%(senderName)s sohbet geçmişini gelecek kullanıcılara görünür yaptı", + "You were invited": "Davet edildiniz", + "%(targetName)s was invited": "%(targetName)s davet edildi", + "You left": "Ayrıldınız", + "%(targetName)s left": "%(targetName)s ayrıldı", + "You were kicked (%(reason)s)": "Atıldınız (%(reason)s)", + "%(targetName)s was kicked (%(reason)s)": "%(targetName)s atıldı (%(reason)s)", + "You were kicked": "Atıldınız", + "%(targetName)s was kicked": "%(targetName)s atıldı", + "You rejected the invite": "Daveti reddettiniz", + "%(targetName)s rejected the invite": "%(targetName)s daveti reddetti" } diff --git a/src/i18n/strings/uk.json b/src/i18n/strings/uk.json index 74d2ded71f..3bae709451 100644 --- a/src/i18n/strings/uk.json +++ b/src/i18n/strings/uk.json @@ -25,6 +25,7 @@ "%(targetName)s accepted an invitation.": "%(targetName)s приймає запрошення.", "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s приймає запрошення від %(displayName)s.", "Access Token:": "Токен доступу:", + "Active call (%(roomName)s)": "Активний виклик (%(roomName)s)", "Add": "Додати", "Add a topic": "Додати тему", "Admin": "Адміністратор", @@ -384,6 +385,9 @@ "Enable URL previews for this room (only affects you)": "Увімкнути попередній перегляд гіперпосилань в цій кімнаті (стосується тільки вас)", "Enable URL previews by default for participants in this room": "Увімкнути попередній перегляд гіперпосилань за умовчанням для учасників цієї кімнати", "Room Colour": "Колір кімнати", + "Incoming voice call from %(name)s": "Вхідний дзвінок від %(name)s", + "Incoming video call from %(name)s": "Вхідний відеодзвінок від %(name)s", + "Incoming call from %(name)s": "Вхідний дзвінок від %(name)s", "Decline": "Відхилити", "Incorrect verification code": "Неправильний код перевірки", "Submit": "Надіслати", @@ -511,6 +515,9 @@ "Send a Direct Message": "Надіслати особисте повідомлення", "Explore Public Rooms": "Дослідити прилюдні кімнати", "Create a Group Chat": "Створити групову балачку", + "Explore": "Дослідити", + "Filter": "Фільтрувати", + "Filter rooms…": "Фільтрувати кімнати…", "Failed to reject invitation": "Не вдалось відхилити запрошення", "This room is not public. You will not be able to rejoin without an invite.": "Ця кімната не є прилюдною. Ви не зможете перепід'єднатись без запрошення.", "Failed to leave room": "Не вдалось залишити кімнату", @@ -528,6 +535,9 @@ "Whether you're using %(brand)s on a device where touch is the primary input mechanism": "Чи використовуєте ви %(brand)s на пристрої, де основним засобом вводження є дотик", "Whether you're using %(brand)s as an installed Progressive Web App": "Чи використовуєте ви %(brand)s як встановлений Progressive Web App", "Your user agent": "Ваш user agent", + "If you cancel now, you won't complete verifying the other user.": "Якщо ви скасуєте зараз, то не завершите звіряння іншого користувача.", + "If you cancel now, you won't complete verifying your other session.": "Якщо ви скасуєте зараз, то не завершите звіряння вашої іншої сесії.", + "If you cancel now, you won't complete your operation.": "Якщо ви скасуєте зараз, то не завершите вашу дію.", "Cancel entering passphrase?": "Скасувати введення парольної фрази?", "Enter passphrase": "Введіть парольну фразу", "Setting up keys": "Налаштовування ключів", @@ -609,6 +619,10 @@ "Go Back": "Назад", "Room name or address": "Назва та адреса кімнати", "%(name)s is requesting verification": "%(name)s робить запит на звірення", + "Use your account to sign in to the latest version": "Увійдіть до останньої версії через свій обліковий запис", + "We’re excited to announce Riot is now Element": "Ми раді повідомити, що Riot тепер називається Element", + "Riot is now Element!": "Riot тепер - Element!", + "Learn More": "Дізнатися більше", "Command error": "Помилка команди", "Sends a message as html, without interpreting it as markdown": "Надсилає повідомлення як HTML, не інтерпритуючи Markdown", "Failed to set topic": "Не вдалося встановити тему", @@ -877,7 +891,68 @@ "Go to Settings": "Перейти до налаштувань", "Compare unique emoji": "Порівняйте унікальні емодзі", "Cancelling…": "Скасування…", + "Dog": "Пес", + "Cat": "Кіт", + "Lion": "Лев", + "Horse": "Кінь", + "Pig": "Свиня", + "Elephant": "Слон", + "Rabbit": "Кріль", + "Panda": "Панда", + "Rooster": "Когут", + "Penguin": "Пінгвін", + "Turtle": "Черепаха", + "Fish": "Риба", + "Octopus": "Восьминіг", + "Moon": "Місяць", + "Cloud": "Хмара", + "Fire": "Вогонь", + "Banana": "Банан", + "Apple": "Яблуко", + "Strawberry": "Полуниця", + "Corn": "Кукурудза", + "Pizza": "Піца", + "Heart": "Серце", + "Smiley": "Посмішка", + "Robot": "Робот", + "Hat": "Капелюх", + "Glasses": "Окуляри", + "Spanner": "Гайковий ключ", + "Thumbs up": "Великий палець вгору", + "Umbrella": "Парасолька", + "Hourglass": "Пісковий годинник", + "Clock": "Годинник", + "Light bulb": "Лампочка", + "Book": "Книга", + "Pencil": "Олівець", + "Paperclip": "Спиначка", + "Scissors": "Ножиці", + "Key": "Ключ", + "Hammer": "Молоток", + "Telephone": "Телефон", + "Flag": "Прапор", + "Train": "Потяг", + "Bicycle": "Велоcипед", + "Aeroplane": "Літак", + "Rocket": "Ракета", + "Trophy": "Приз", + "Ball": "М'яч", + "Guitar": "Гітара", + "Trumpet": "Труба", + "Bell": "Дзвін", + "Anchor": "Якір", + "Headphones": "Навушники", + "Folder": "Тека", + "Pin": "Кнопка", "Accept to continue:": "Прийміть для продовження:", + "Flower": "Квітка", + "Unicorn": "Єдиноріг", + "Butterfly": "Метелик", + "Cake": "Пиріг", + "Tree": "Дерево", + "Cactus": "Кактус", + "Mushroom": "Гриб", + "Globe": "Глобус", "This bridge was provisioned by .": "Цей місток був підготовленим .", "This bridge is managed by .": "Цей міст керується .", "Workspace: %(networkName)s": "Робочий простір: %(networkName)s", @@ -885,6 +960,9 @@ "Show less": "Згорнути", "Show more": "Розгорнути", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Змінення пароля призведе до скидання всіх ключів наскрізного шифрування та унеможливить читання історії листування, якщо тільки ви не експортуєте ваші ключі кімнати та не імпортуєте їх згодом. Це буде вдосконалено у майбутньому.", + "Santa": "Санта Клаус", + "Gift": "Подарунок", + "Lock": "Замок", "Cross-signing and secret storage are not yet set up.": "Перехресне підписування та таємне сховище ще не налагоджені.", "Your homeserver does not support cross-signing.": "Ваш домашній сервер не підтримує кросс-підпис.", "Cross-signing and secret storage are enabled.": "Кросс-підпис та секретне сховище дозволені.", @@ -1058,6 +1136,7 @@ "In encrypted rooms, verify all users to ensure it’s secure.": "У зашифрованих кімнатах звіряйте усіх користувачів щоб переконатись у безпеці спілкування.", "Failed to copy": "Не вдалось скопіювати", "Your display name": "Ваше видиме ім'я", + "COPY": "СКОПІЮВАТИ", "Set a display name:": "Зазначити видиме ім'я:", "Copy": "Скопіювати", "Cancel replying to a message": "Скасувати відповідання на повідомлення", diff --git a/src/i18n/strings/vls.json b/src/i18n/strings/vls.json index 5537d30d02..1172804efa 100644 --- a/src/i18n/strings/vls.json +++ b/src/i18n/strings/vls.json @@ -303,6 +303,11 @@ "Call invitation": "Iproep-uutnodigienge", "Messages sent by bot": "Berichtn verzoundn deur e robot", "When rooms are upgraded": "Wanneer da gesprekkn ipgewoardeerd wordn", + "Active call (%(roomName)s)": "Actieven iproep (%(roomName)s)", + "unknown caller": "ounbekende beller", + "Incoming voice call from %(name)s": "Inkommende sproakiproep van %(name)s", + "Incoming video call from %(name)s": "Inkommende video-iproep van %(name)s", + "Incoming call from %(name)s": "Inkommenden iproep van %(name)s", "Decline": "Weigern", "Accept": "Anveirdn", "The other party cancelled the verification.": "De tegenparty èt de verificoasje geannuleerd.", @@ -314,6 +319,69 @@ "Verify this user by confirming the following emoji appear on their screen.": "Verifieert deze gebruuker deur te bevestign da zyn/heur scherm de volgende emoji toogt.", "Verify this user by confirming the following number appears on their screen.": "Verifieert deze gebruuker deur te bevestign da zyn/heur scherm ’t volgend getal toogt.", "Unable to find a supported verification method.": "Kan geen oundersteunde verificoasjemethode viendn.", + "Dog": "Hound", + "Cat": "Katte", + "Lion": "Leeuw", + "Horse": "Peird", + "Unicorn": "Eenhoorn", + "Pig": "Zwyn", + "Elephant": "Olifant", + "Rabbit": "Keun", + "Panda": "Panda", + "Rooster": "Hoane", + "Penguin": "Pinguin", + "Turtle": "Schildpadde", + "Fish": "Vis", + "Octopus": "Octopus", + "Butterfly": "Beutervlieg", + "Flower": "Bloem", + "Tree": "Boom", + "Cactus": "Cactus", + "Mushroom": "Paddestoel", + "Globe": "Eirdbol", + "Moon": "Moane", + "Cloud": "Wolk", + "Fire": "Vier", + "Banana": "Banoan", + "Apple": "Appel", + "Strawberry": "Freize", + "Corn": "Mais", + "Pizza": "Pizza", + "Cake": "Toarte", + "Heart": "Herte", + "Smiley": "Smiley", + "Robot": "Robot", + "Hat": "Hoed", + "Glasses": "Bril", + "Spanner": "Moersleuter", + "Santa": "Kestman", + "Thumbs up": "Duum omhooge", + "Umbrella": "Paraplu", + "Hourglass": "Zandloper", + "Clock": "Klok", + "Gift": "Cadeau", + "Light bulb": "Gloeilampe", + "Book": "Boek", + "Pencil": "Potlood", + "Paperclip": "Paperclip", + "Scissors": "Schoar", + "Key": "Sleuter", + "Hammer": "Oamer", + "Telephone": "Telefong", + "Flag": "Vlagge", + "Train": "Tring", + "Bicycle": "Veloo", + "Aeroplane": "Vlieger", + "Rocket": "Rakette", + "Trophy": "Trofee", + "Ball": "Bolle", + "Guitar": "Gitoar", + "Trumpet": "Trompette", + "Bell": "Belle", + "Anchor": "Anker", + "Headphones": "Koptelefong", + "Folder": "Mappe", + "Pin": "Pinne", "Failed to upload profile picture!": "Iploaden van profielfoto es mislukt!", "Upload new:": "Loadt der e nieuwen ip:", "No display name": "Geen weergavenoame", @@ -594,6 +662,7 @@ "Forget room": "Gesprek vergeetn", "Search": "Zoekn", "Share room": "Gesprek deeln", + "Community Invites": "Gemeenschapsuutnodigiengn", "Invites": "Uutnodigiengn", "Favourites": "Favorietn", "Start chat": "Gesprek beginn", @@ -943,6 +1012,7 @@ "Share Community": "Gemeenschap deeln", "Share Room Message": "Bericht uut gesprek deeln", "Link to selected message": "Koppelienge noa geselecteerd bericht", + "COPY": "KOPIEERN", "To help us prevent this in future, please send us logs.": "Gelieve uus logboekn te stuurn vo dit in de toekomst t’helpn voorkomn.", "Missing session data": "Sessiegegeevns ountbreekn", "Some session data, including encrypted message keys, is missing. Sign out and sign in to fix this, restoring keys from backup.": "Sommige sessiegegeevns, inclusief sleuters vo versleuterde berichtn, ountbreekn. Meldt jen af en were an vo dit ip te lossn, en herstelt de sleuters uut den back-up.", @@ -1023,6 +1093,8 @@ "Submit": "Bevestign", "Start authentication": "Authenticoasje beginn", "Unable to validate homeserver/identity server": "Kostege de thuus-/identiteitsserver nie valideern", + "Your Modular server": "Joun Modular-server", + "Enter the location of your Modular homeserver. It may use your own domain name or be a subdomain of modular.im.": "Gift de locoasje van je Modular-thuusserver in. Deze kan jen eigen domeinnoame gebruukn, of e subdomein van modular.im zyn.", "Server Name": "Servernoame", "The email field must not be blank.": "’t E-mailveld meug nie leeg zyn.", "The username field must not be blank.": "’t Gebruukersnoamveld meug nie leeg zyn.", @@ -1072,6 +1144,7 @@ "Couldn't load page": "Kostege ’t blad nie loadn", "You must register to use this functionality": "Je moe je registreern vo deze functie te gebruukn", "You must join the room to see its files": "Je moe tout ’t gesprek toetreedn vo de bestandn te kunn zien", + "There are no visible files in this room": "’t Zyn geen zichtboare bestandn in dit gesprek", "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

HTML vo joun gemeenschapsblad

\n

\n Gebruukt de lange beschryvienge vo nieuwe leden in de gemeenschap t’introduceern of vo belangryke koppeliengn an te biedn.\n

\n

\n Je ku zelfst ‘img’-tags gebruukn.\n

\n", "Add rooms to the community summary": "Voegt gesprekkn an ’t gemeenschapsoverzicht toe", "Which rooms would you like to add to this summary?": "Welke gesprekkn zou j’an dit overzicht willn toevoegn?", @@ -1134,6 +1207,7 @@ "Error whilst fetching joined communities": "’t Is e foute ipgetreedn by ’t iphoaln van de gemeenschappn da je lid van zyt", "Create a new community": "Makt e nieuwe gemeenschap an", "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Makt e gemeenschap an vo gebruukers en gesprekkn by makoar te briengn! Schep met e startblad ip moet jen eigen pleksje in ’t Matrix-universum.", + "You have no visible notifications": "J’è geen zichtboare meldiengn", "%(brand)s failed to get the protocol list from the homeserver. The homeserver may be too old to support third party networks.": "%(brand)s kostege de protocollyste nie iphoaln van de thuusserver. Meugliks is de thuusserver te oud vo derdepartynetwerkn t’oundersteunn.", "%(brand)s failed to get the public room list.": "%(brand)s kostege de lyste met openboare gesprekkn nie verkrygn.", "The homeserver may be unavailable or overloaded.": "De thuusserver is meugliks ounbereikboar of overbelast.", @@ -1178,6 +1252,7 @@ "Tried to load a specific point in this room's timeline, but was unable to find it.": "Geprobeerd voor e gegeven punt in de tydslyn van dit gesprek te loadn, moar kostege dit nie viendn.", "Failed to load timeline position": "Loadn van tydslynpositie is mislukt", "Guest": "Gast", + "Your profile": "Joun profiel", "Uploading %(filename)s and %(count)s others|other": "%(filename)s en %(count)s andere wordn ipgeloadn", "Uploading %(filename)s and %(count)s others|zero": "%(filename)s wordt ipgeloadn", "Uploading %(filename)s and %(count)s others|one": "%(filename)s en %(count)s ander wordn ipgeloadn", diff --git a/src/i18n/strings/zh_Hans.json b/src/i18n/strings/zh_Hans.json index bdb5afb1f5..da53880409 100644 --- a/src/i18n/strings/zh_Hans.json +++ b/src/i18n/strings/zh_Hans.json @@ -149,6 +149,9 @@ "Failed to upload profile picture!": "头像上传失败!", "Home": "主页面", "Import": "导入", + "Incoming call from %(name)s": "来自 %(name)s 的通话请求", + "Incoming video call from %(name)s": "来自 %(name)s 的视频通话请求", + "Incoming voice call from %(name)s": "来自 %(name)s 的语音通话请求", "Incorrect username and/or password.": "用户名或密码错误。", "%(senderName)s invited %(targetName)s.": "%(senderName)s 邀请了 %(targetName)s。", "Invited": "已邀请", @@ -262,6 +265,7 @@ "Unban": "解除封禁", "Unable to capture screen": "无法录制屏幕", "Unable to enable Notifications": "无法启用通知", + "unknown caller": "未知呼叫者", "Unnamed Room": "未命名的聊天室", "Upload avatar": "上传头像", "Upload Failed": "上传失败", @@ -269,6 +273,7 @@ "Usage": "用法", "Who can read history?": "谁可以阅读历史消息?", "You are not in this room.": "您不在此聊天室中。", + "You have no visible notifications": "没有可见的通知", "Not a valid %(brand)s keyfile": "不是有效的 %(brand)s 密钥文件", "%(targetName)s accepted an invitation.": "%(targetName)s 已接受邀请。", "Publish this room to the public in %(domain)s's room directory?": "是否将此聊天室发布至 %(domain)s 的聊天室目录中?", @@ -279,6 +284,7 @@ "%(senderName)s requested a VoIP conference.": "%(senderName)s 已请求发起 VoIP 会议。", "Seen by %(userName)s at %(dateTime)s": "在 %(dateTime)s 被 %(userName)s 看到", "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s 接受了 %(displayName)s 的邀请。", + "Active call (%(roomName)s)": "当前通话 (来自聊天室 %(roomName)s)", "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s 将级别调整至 %(powerLevelDiffText)s 。", "Deops user with given id": "按照 ID 取消特定用户的管理员权限", "Join as voice or video.": "通过 语言 或者 视频加入.", @@ -311,6 +317,7 @@ "You seem to be uploading files, are you sure you want to quit?": "您似乎正在上传文件,确定要退出吗?", "Upload an avatar:": "上传头像:", "An error occurred: %(error_string)s": "发生了一个错误: %(error_string)s", + "There are no visible files in this room": "此聊天室中没有可见的文件", "Active call": "当前通话", "Error decrypting audio": "解密音频时出错", "Error decrypting image": "解密图像时出错", @@ -473,6 +480,7 @@ "Send an encrypted reply…": "发送加密回复…", "Send an encrypted message…": "发送加密消息…", "Replying": "正在回复", + "Community Invites": "社区邀请", "Banned by %(displayName)s": "被 %(displayName)s 封禁", "Members only (since the point in time of selecting this option)": "仅成员(从选中此选项时开始)", "Members only (since they were invited)": "只有成员(从他们被邀请开始)", @@ -800,6 +808,7 @@ "Add users to the community summary": "添加用户至社区简介", "Collapse Reply Thread": "收起回复", "Share Message": "分享消息", + "COPY": "复制", "Share Room Message": "分享聊天室消息", "Share Community": "分享社区", "Share User": "分享用户", @@ -957,6 +966,69 @@ "Verify this user by confirming the following emoji appear on their screen.": "通过在其屏幕上显示以下表情符号来验证此用户。", "Verify this user by confirming the following number appears on their screen.": "通过在其屏幕上显示以下数字来验证此用户。", "Unable to find a supported verification method.": "无法找到支持的验证方法。", + "Dog": "狗", + "Cat": "猫", + "Lion": "狮子", + "Horse": "马", + "Unicorn": "独角兽", + "Pig": "猪", + "Elephant": "大象", + "Rabbit": "兔子", + "Panda": "熊猫", + "Rooster": "公鸡", + "Penguin": "企鹅", + "Turtle": "乌龟", + "Fish": "鱼", + "Octopus": "章鱼", + "Butterfly": "蝴蝶", + "Flower": "花", + "Tree": "树", + "Cactus": "仙人掌", + "Mushroom": "蘑菇", + "Globe": "地球", + "Moon": "月亮", + "Cloud": "云", + "Fire": "火", + "Banana": "香蕉", + "Apple": "苹果", + "Strawberry": "草莓", + "Corn": "玉米", + "Pizza": "披萨", + "Cake": "蛋糕", + "Heart": "心", + "Smiley": "微笑", + "Robot": "机器人", + "Hat": "帽子", + "Glasses": "眼镜", + "Spanner": "扳手", + "Santa": "圣诞老人", + "Thumbs up": "竖大拇指", + "Umbrella": "伞", + "Hourglass": "沙漏", + "Clock": "时钟", + "Gift": "礼物", + "Light bulb": "灯泡", + "Book": "书", + "Pencil": "铅笔", + "Paperclip": "回形针", + "Scissors": "剪刀", + "Key": "钥匙", + "Hammer": "锤子", + "Telephone": "电话", + "Flag": "旗子", + "Train": "火车", + "Bicycle": "自行车", + "Aeroplane": "飞机", + "Rocket": "火箭", + "Trophy": "奖杯", + "Ball": "球", + "Guitar": "吉他", + "Trumpet": "喇叭", + "Bell": "铃铛", + "Anchor": "锚", + "Headphones": "耳机", + "Folder": "文件夹", + "Pin": "别针", "Yes": "是", "No": "拒绝", "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.": "我们已向您发送了一封电子邮件,以验证您的地址。 请按照里面的说明操作,然后单击下面的按钮。", @@ -1068,6 +1140,8 @@ "This homeserver would like to make sure you are not a robot.": "此主服务器想要确认您不是机器人。", "Please review and accept all of the homeserver's policies": "请阅读并接受该主服务器的所有政策", "Please review and accept the policies of this homeserver:": "请阅读并接受此主服务器的政策:", + "Your Modular server": "您的模组服务器", + "Enter the location of your Modular homeserver. It may use your own domain name or be a subdomain of modular.im.": "输入您的模组主服务器的位置。它可能使用的是您自己的域名或者 modular.im 的子域名。", "Server Name": "服务器名称", "The username field must not be blank.": "必须输入用户名。", "Username": "用户名", @@ -1200,6 +1274,9 @@ "At this time it is not possible to reply with a file. Would you like to upload this file without replying?": "当前无法在回复中附加文件。您想要仅上传此文件而不回复吗?", "The file '%(fileName)s' failed to upload.": "上传文件 ‘%(fileName)s’ 失败。", "The server does not support the room version specified.": "服务器不支持指定的聊天室版本。", + "If you cancel now, you won't complete verifying the other user.": "如果现在取消,您将无法完成验证其他用户。", + "If you cancel now, you won't complete verifying your other session.": "如果现在取消,您将无法完成验证您的其他会话。", + "If you cancel now, you won't complete your operation.": "如果现在取消,您将无法完成您的操作。", "Cancel entering passphrase?": "取消输入密码?", "Setting up keys": "设置按键", "Verify this session": "验证此会话", @@ -1299,6 +1376,9 @@ "Every page you use in the app": "您在应用中使用的每个页面", "Are you sure you want to cancel entering passphrase?": "确定要取消输入密码?", "Go Back": "后退", + "Use your account to sign in to the latest version": "使用您的帐户登录到最新版本", + "We’re excited to announce Riot is now Element": "我们很高兴地宣布Riot现在更名为Element", + "Learn More": "了解更多", "Unrecognised room address:": "无法识别的聊天室地址:", "Light": "浅色", "Dark": "深色", @@ -1356,6 +1436,14 @@ "%(senderName)s started a call": "%(senderName)s开始了通话", "Waiting for answer": "等待接听", "%(senderName)s is calling": "%(senderName)s正在通话", + "You created the room": "您创建了聊天室", + "%(senderName)s created the room": "%(senderName)s创建了聊天室", + "You made the chat encrypted": "您启用了聊天加密", + "%(senderName)s made the chat encrypted": "%(senderName)s启用了聊天加密", + "You made history visible to new members": "您设置了历史记录对新成员可见", + "%(senderName)s made history visible to new members": "%(senderName)s设置了历史记录对新成员可见", + "You made history visible to anyone": "您设置了历史记录对所有人可见", + "Riot is now Element!": "Riot现在是Element了!", "Support adding custom themes": "支持添加自定义主题", "Font size": "字体大小", "Use custom size": "使用自定义大小", @@ -1390,6 +1478,7 @@ "They match": "它们匹配", "They don't match": "它们不匹配", "To be secure, do this in person or use a trusted way to communicate.": "为了安全,请当面完成或使用信任的方法交流。", + "Lock": "锁", "Your server isn't responding to some requests.": "您的服务器没有响应一些请求。", "From %(deviceName)s (%(deviceId)s)": "来自 %(deviceName)s (%(deviceId)s)", "Decline (%(counter)s)": "拒绝 (%(counter)s)", @@ -1636,6 +1725,7 @@ "Room %(name)s": "聊天室 %(name)s", "No recently visited rooms": "没有最近访问过的聊天室", "People": "联系人", + "Create room": "创建聊天室", "Custom Tag": "自定义标签", "Joining room …": "正在加入聊天室…", "Loading …": "正在加载…", @@ -1950,6 +2040,11 @@ "Use this session to verify your new one, granting it access to encrypted messages:": "使用此会话以验证您的新会话,并允许其访问加密信息:", "If you didn’t sign in to this session, your account may be compromised.": "如果您没有登录进此会话,您的账户可能已受损。", "This wasn't me": "这不是我", + "Use your account to sign in to the latest version of the app at ": "使用您的账户在 登录此应用的最新版", + "You’re already signed in and good to go here, but you can also grab the latest versions of the app on all platforms at element.io/get-started.": "您已经登录且一切已就绪,但您也可以在 element.io/get-started 获取此应用在全平台上的最新版。", + "Go to Element": "前往 Element", + "We’re excited to announce Riot is now Element!": "我们很兴奋地宣布 Riot 现在是 Element 了!", + "Learn more at element.io/previously-riot": "访问 element.io/previously-riot 了解更多", "Please fill why you're reporting.": "请填写您为何做此报告。", "Report Content to Your Homeserver Administrator": "向您的主服务器管理员举报内容", "Reporting this message will send its unique 'event ID' to the administrator of your homeserver. If messages in this room are encrypted, your homeserver administrator will not be able to read the message text or view any files or images.": "举报此消息会将其唯一的「事件 ID」发送给您的主服务器的管理员。如果此聊天室中的消息被加密,您的主服务器管理员将不能阅读消息文本,也不能查看任何文件或图片。", @@ -2109,6 +2204,7 @@ "%(brand)s Web": "%(brand)s 网页版", "%(brand)s Desktop": "%(brand)s 桌面版", "%(brand)s iOS": "%(brand)s iOS", + "%(brand)s X for Android": "%(brand)s X for Android", "or another cross-signing capable Matrix client": "或者别的可以交叉签名的 Matrix 客户端", "Your new session is now verified. It has access to your encrypted messages, and other users will see it as trusted.": "您的新会话现已被验证。它可以访问您的加密消息,别的用户也会视其为受信任的。", "Your new session is now verified. Other users will see it as trusted.": "您的新会话现已被验证。别的用户会视其为受信任的。", diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json index 828b80417f..b8fc2b43fb 100644 --- a/src/i18n/strings/zh_Hant.json +++ b/src/i18n/strings/zh_Hant.json @@ -162,6 +162,7 @@ "Accept": "接受", "%(targetName)s accepted an invitation.": "%(targetName)s 已接受邀請。", "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s 已接受 %(displayName)s 的邀請。", + "Active call (%(roomName)s)": "活躍的通話(%(roomName)s)", "Add": "新增", "Admin Tools": "管理員工具", "No Microphones detected": "未偵測到麥克風", @@ -195,6 +196,9 @@ "Failed to upload profile picture!": "上傳基本資料圖片失敗!", "Home": "家", "Import": "匯入", + "Incoming call from %(name)s": "從 %(name)s 而來的來電", + "Incoming video call from %(name)s": "從 %(name)s 而來的視訊來電", + "Incoming voice call from %(name)s": "從 %(name)s 而來的語音來電", "Incorrect username and/or password.": "不正確的使用者名稱和/或密碼。", "%(senderName)s invited %(targetName)s.": "%(senderName)s 邀請了 %(targetName)s。", "Invited": "已邀請", @@ -265,6 +269,7 @@ "Unable to verify email address.": "無法驗證電子郵件。", "Unban": "解除禁止", "%(senderName)s unbanned %(targetName)s.": "%(senderName)s 解除阻擋 %(targetName)s。", + "unknown caller": "不明來電", "Unmute": "解除靜音", "Unnamed Room": "未命名的聊天室", "Uploading %(filename)s and %(count)s others|zero": "正在上傳 %(filename)s", @@ -295,6 +300,7 @@ "You do not have permission to post to this room": "您沒有權限在此房間發言", "You have disabled URL previews by default.": "您已預設停用 URL 預覽。", "You have enabled URL previews by default.": "您已預設啟用 URL 預覽。", + "You have no visible notifications": "您沒有可見的通知", "You must register to use this functionality": "您必須註冊以使用此功能", "You need to be able to invite users to do that.": "您需要邀請使用者來做這件事。", "You need to be logged in.": "您需要登入。", @@ -325,6 +331,7 @@ "Upload an avatar:": "上傳大頭貼:", "This server does not support authentication with a phone number.": "這個伺服器不支援以電話號碼認證。", "An error occurred: %(error_string)s": "遇到錯誤:%(error_string)s", + "There are no visible files in this room": "此房間中沒有可見的檔案", "Room": "房間", "Connectivity to the server has been lost.": "至伺服器的連線已遺失。", "Sent messages will be stored until your connection has returned.": "傳送的訊息會在您的連線恢復前先儲存起來。", @@ -464,6 +471,7 @@ "Unnamed room": "未命名的聊天室", "World readable": "所有人可讀", "Guests can join": "訪客可加入", + "Community Invites": "社群邀請", "Banned by %(displayName)s": "被 %(displayName)s 阻擋", "Members only (since the point in time of selecting this option)": "僅成員(自選取此選項開始)", "Members only (since they were invited)": "僅成員(自他們被邀請開始)", @@ -810,6 +818,7 @@ "Share Community": "分享社群", "Share Room Message": "分享聊天室訊息", "Link to selected message": "連結到選定的訊息", + "COPY": "複製", "Share Message": "分享訊息", "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "在加密的聊天室中(這個就是),URL 預覽會預設停用以確保您的家伺服器(預覽生成的地方)無法在這個聊天室中收集關於您看到的連結的資訊。", "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "當某人在他們的訊息中放置 URL 時,URL 預覽可以顯示如標題、描述與網頁上的圖片等等來給您更多關於該連結的資訊。", @@ -1045,6 +1054,8 @@ "Go back": "返回", "Update status": "更新狀態", "Set status": "設定狀態", + "Your Modular server": "您的模組化伺服器", + "Enter the location of your Modular homeserver. It may use your own domain name or be a subdomain of modular.im.": "輸入您模組化伺服器的位置。它可能會使用您自己的域名或是 modular.im 的子網域。", "Server Name": "伺服器名稱", "The username field must not be blank.": "使用者欄位不能留空。", "Username": "使用者名稱", @@ -1083,6 +1094,68 @@ "Group & filter rooms by custom tags (refresh to apply changes)": "透過自訂標籤篩選群組與聊天室(重新整理以套用變更)", "Verify this user by confirming the following emoji appear on their screen.": "透過確認顯示在他們螢幕下方的顏文字來確認使用者。", "Unable to find a supported verification method.": "找不到支援的驗證方式。", + "Dog": "狗", + "Cat": "貓", + "Lion": "獅", + "Horse": "馬", + "Unicorn": "獨角獸", + "Pig": "豬", + "Elephant": "象", + "Rabbit": "兔", + "Panda": "熊貓", + "Rooster": "公雞", + "Penguin": "企鵝", + "Turtle": "烏龜", + "Fish": "魚", + "Octopus": "章魚", + "Butterfly": "蝴蝶", + "Flower": "花", + "Tree": "樹", + "Cactus": "仙人掌", + "Mushroom": "蘑菇", + "Globe": "地球", + "Moon": "月亮", + "Cloud": "雲", + "Fire": "火", + "Banana": "香蕉", + "Apple": "蘋果", + "Strawberry": "草苺", + "Corn": "玉米", + "Pizza": "披薩", + "Cake": "蛋糕", + "Heart": "心", + "Smiley": "微笑", + "Robot": "機器人", + "Hat": "帽子", + "Glasses": "眼鏡", + "Spanner": "扳手", + "Santa": "聖誕老人", + "Thumbs up": "豎起大姆指", + "Umbrella": "雨傘", + "Hourglass": "沙漏", + "Clock": "時鐘", + "Gift": "禮物", + "Light bulb": "燈泡", + "Book": "書", + "Pencil": "鉛筆", + "Paperclip": "迴紋針", + "Key": "鑰匙", + "Hammer": "鎚子", + "Telephone": "電話", + "Flag": "旗子", + "Train": "火車", + "Bicycle": "腳踏車", + "Aeroplane": "飛機", + "Rocket": "火箭", + "Trophy": "獎盃", + "Ball": "球", + "Guitar": "吉他", + "Trumpet": "喇叭", + "Bell": "鈴", + "Anchor": "錨", + "Headphones": "耳機", + "Folder": "資料夾", + "Pin": "別針", "This homeserver would like to make sure you are not a robot.": "此家伺服器想要確保您不是機器人。", "Change": "變更", "Couldn't load page": "無法載入頁面", @@ -1119,6 +1192,7 @@ "%(senderDisplayName)s disabled flair for %(groups)s in this room.": "%(senderDisplayName)s 為此聊天室中的 %(groups)s 停用鑑別能力。", "%(senderDisplayName)s enabled flair for %(newGroups)s and disabled flair for %(oldGroups)s in this room.": "%(senderDisplayName)s 為此聊天室中的 %(newGroups)s 啟用鑑別能力,並為 %(oldGroups)s 停用。", "Show read receipts sent by other users": "顯示從其他使用者傳送的讀取回條", + "Scissors": "剪刀", "Error updating main address": "更新主要位置時發生錯誤", "There was an error updating the room's main address. It may not be allowed by the server or a temporary failure occurred.": "更新聊天室的主要位置時發生錯誤。可能是不被伺服器允許或是遇到暫時性的錯誤。", "Error updating flair": "更新鑑別能力時發生錯誤", @@ -1263,6 +1337,7 @@ "Some characters not allowed": "不允許某些字元", "Create your Matrix account on ": "在 上建立您的 Matrix 帳號", "Add room": "新增聊天室", + "Your profile": "您的簡介", "Your Matrix account on ": "您在 上的 Matrix 帳號", "Failed to get autodiscovery configuration from server": "從伺服器取得自動探索設定失敗", "Invalid base_url for m.homeserver": "無效的 m.homeserver base_url", @@ -1426,6 +1501,9 @@ "Reporting this message will send its unique 'event ID' to the administrator of your homeserver. If messages in this room are encrypted, your homeserver administrator will not be able to read the message text or view any files or images.": "回報此訊息將會傳送其獨一無二的「活動 ID」給您家伺服器的管理員。如果此聊天室中的訊息已加密,您的家伺服器管理員將無法閱讀訊息文字或檢視任何檔案或圖片。", "Send report": "傳送回報", "Report Content": "回報內容", + "Explore": "探索", + "Filter": "過濾器", + "Filter rooms…": "過濾聊天室……", "Preview": "預覽", "View": "檢視", "Find a room…": "尋找聊天室……", @@ -1457,6 +1535,7 @@ "Clear cache and reload": "清除快取並重新載入", "%(count)s unread messages including mentions.|other": "包含提及有 %(count)s 則未讀訊息。", "%(count)s unread messages.|other": "%(count)s 則未讀訊息。", + "Unread mentions.": "未讀提及。", "Show image": "顯示圖片", "Please create a new issue on GitHub so that we can investigate this bug.": "請在 GitHub 上建立新議題,這樣我們才能調查這個臭蟲。", "Missing captcha public key in homeserver configuration. Please report this to your homeserver administrator.": "家伺服器設定中遺失驗證碼公開金鑰。請向您的家伺服器管理員回報。", @@ -1492,6 +1571,7 @@ "Jump to first unread room.": "跳到第一個未讀的聊天室。", "Jump to first invite.": "跳到第一個邀請。", "Room %(name)s": "聊天室 %(name)s", + "Recent rooms": "最近的聊天室", "No identity server is configured so you cannot add an email address in order to reset your password in the future.": "未設定身份識別伺服器,所以您無法新增電子郵件以在未來重設您的密碼。", "%(count)s unread messages including mentions.|one": "1 則未讀的提及。", "%(count)s unread messages.|one": "1 則未讀的訊息。", @@ -1661,6 +1741,7 @@ "Suggestions": "建議", "Failed to find the following users": "找不到以下使用者", "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s": "以下使用者可能不存在或無效,且無法被邀請:%(csvNames)s", + "Lock": "鎖定", "Restore": "還原", "a few seconds ago": "數秒前", "about a minute ago": "大約一分鐘前", @@ -1698,6 +1779,7 @@ "Send as message": "以訊息傳送", "This room is end-to-end encrypted": "此聊天室已端到端加密", "Everyone in this room is verified": "此聊天室中每個人都已驗證", + "Invite only": "僅邀請", "Send a reply…": "傳送回覆……", "Send a message…": "傳送訊息……", "Reject & Ignore user": "回絕並忽略使用者", @@ -1840,6 +1922,8 @@ "Create key backup": "建立金鑰備份", "Message downloading sleep time(ms)": "訊息下載休眠時間(毫秒)", "Indexed rooms:": "已索引的聊天室:", + "If you cancel now, you won't complete verifying the other user.": "如果您現在取消,您將無法完成驗證其他使用者。", + "If you cancel now, you won't complete verifying your other session.": "如果您現在取消,您將無法完成驗證您其他的工作階段。", "Cancel entering passphrase?": "取消輸入通關密語?", "Show typing notifications": "顯示打字通知", "Reset cross-signing and secret storage": "重設交叉簽章與秘密儲存空間", @@ -2050,6 +2134,7 @@ "Syncing...": "正在同步……", "Signing In...": "正在登入……", "If you've joined lots of rooms, this might take a while": "如果您已加入很多聊天室,這可能需要一點時間", + "If you cancel now, you won't complete your operation.": "如果您現在取消,您將無法完成您的操作。", "Verify other session": "驗證其他工作階段", "Unable to access secret storage. Please verify that you entered the correct recovery passphrase.": "無法存取秘密儲存空間。請驗證您是否輸入正確的復原通關密語。", "Backup could not be decrypted with this recovery key: please verify that you entered the correct recovery key.": "備份無法使用此復原金鑰解密:請驗證您是否輸入正確的復原金鑰。", @@ -2105,6 +2190,8 @@ "Jump to oldest unread message": "跳至最舊的未讀訊息", "Upload a file": "上傳檔案", "IRC display name width": "IRC 顯示名稱寬度", + "Create room": "建立聊天室", + "Font scaling": "字型縮放", "Font size": "字型大小", "Size must be a number": "大小必須為數字", "Custom font size can only be between %(min)s pt and %(max)s pt": "自訂字型大小僅能為 %(min)s 點至 %(max)s 點間", @@ -2156,6 +2243,10 @@ "Feedback": "回饋", "No recently visited rooms": "沒有最近造訪過的聊天室", "Sort by": "排序方式", + "Unread rooms": "未讀聊天室", + "Always show first": "一律先顯示", + "Show": "顯示", + "Message preview": "訊息預覽", "List options": "列表選項", "Show %(count)s more|other": "再顯示 %(count)s 個", "Show %(count)s more|one": "再顯示 %(count)s 個", @@ -2170,6 +2261,7 @@ "Looks good!": "看起來不錯!", "Use Recovery Key or Passphrase": "使用復原金鑰或通關密語", "Use Recovery Key": "使用復原金鑰", + "Use the improved room list (will refresh to apply changes)": "使用改進的聊天室清單(將會重新整理以套用變更)", "Use custom size": "使用自訂大小", "Hey you. You're the best!": "你是最棒的!", "Message layout": "訊息佈局", @@ -2188,9 +2280,50 @@ "%(senderName)s started a call": "%(senderName)s 開始了通話", "Waiting for answer": "正在等待回應", "%(senderName)s is calling": "%(senderName)s 正在通話", + "You created the room": "您建立了聊天室", + "%(senderName)s created the room": "%(senderName)s 建立了聊天室", + "You made the chat encrypted": "您讓聊天加密", + "%(senderName)s made the chat encrypted": "%(senderName)s 讓聊天加密", + "You made history visible to new members": "您讓歷史紀錄對新成員可見", + "%(senderName)s made history visible to new members": "%(senderName)s 讓歷史紀錄對新成員可見", + "You made history visible to anyone": "您讓歷史紀錄對所有人可見", + "%(senderName)s made history visible to anyone": "%(senderName)s 讓歷史紀錄對所有人可見", + "You made history visible to future members": "您讓歷史紀錄對未來成員可見", + "%(senderName)s made history visible to future members": "%(senderName)s 讓歷史紀錄對未來成員可見", + "You were invited": "您被邀請", + "%(targetName)s was invited": "%(targetName)s 被邀請", + "You left": "您離開", + "%(targetName)s left": "%(targetName)s 離開", + "You were kicked (%(reason)s)": "您被踢除(%(reason)s)", + "%(targetName)s was kicked (%(reason)s)": "%(targetName)s 被踢除(%(reason)s)", + "You were kicked": "您被踢除", + "%(targetName)s was kicked": "%(targetName)s 被踢除", + "You rejected the invite": "您回絕了邀請", + "%(targetName)s rejected the invite": "%(targetName)s 回絕了邀請", + "You were uninvited": "您被取消邀請", + "%(targetName)s was uninvited": "%(targetName)s 被取消邀請", + "You were banned (%(reason)s)": "您被封鎖(%(reason)s)", + "%(targetName)s was banned (%(reason)s)": "%(targetName)s 被封鎖(%(reason)s)", + "You were banned": "您被封鎖", + "%(targetName)s was banned": "%(targetName)s 被封鎖", + "You joined": "您加入", + "%(targetName)s joined": "%(targetName)s 加入", + "You changed your name": "您變更了您的名稱", + "%(targetName)s changed their name": "%(targetName)s 變更了他們的名稱", + "You changed your avatar": "您變更了您的大頭貼", + "%(targetName)s changed their avatar": "%(targetName)s 變更了他們的大頭貼", + "%(senderName)s %(emote)s": "%(senderName)s %(emote)s", "%(senderName)s: %(message)s": "%(senderName)s: %(message)s", + "You changed the room name": "您變更了聊天室名稱", + "%(senderName)s changed the room name": "%(senderName)s 變更了聊天室名稱", "%(senderName)s: %(reaction)s": "%(senderName)s: %(reaction)s", "%(senderName)s: %(stickerName)s": "%(senderName)s: %(stickerName)s", + "You uninvited %(targetName)s": "您取消邀請了 %(targetName)s", + "%(senderName)s uninvited %(targetName)s": "%(senderName)s 取消邀請了 %(targetName)s", + "You invited %(targetName)s": "您邀請了 %(targetName)s", + "%(senderName)s invited %(targetName)s": "%(senderName)s 邀請了 %(targetName)s", + "You changed the room topic": "您變更了聊天室主題", + "%(senderName)s changed the room topic": "%(senderName)s 變更了聊天室主題", "New spinner design": "新的微調器設計", "Use a more compact ‘Modern’ layout": "使用更簡潔的「現代」佈局", "Message deleted on %(date)s": "訊息刪除於 %(date)s", @@ -2215,6 +2348,10 @@ "Confirm Security Phrase": "確認安全密語", "Save your Security Key": "儲存您的安全金鑰", "Are you sure you want to cancel entering passphrase?": "您確定您想要取消輸入通關密語嗎?", + "Use your account to sign in to the latest version": "使用您的帳號以登入到最新版本", + "We’re excited to announce Riot is now Element": "我們很高興地宣佈 Riot 現在變為 Element 了", + "Riot is now Element!": "Riot 現在變為 Element 了!", + "Learn More": "取得更多資訊", "Enable advanced debugging for the room list": "啟用聊天室清單的進階除錯", "Enable experimental, compact IRC style layout": "啟用實驗性、簡潔的 IRC 風格佈局", "Unknown caller": "未知的來電者", @@ -2226,6 +2363,8 @@ "You might have configured them in a client other than %(brand)s. You cannot tune them in %(brand)s but they still apply.": "您可能已在 %(brand)s 以外的客戶端設定它們了。您無法以 %(brand)s 調整,但仍然適用。", "Set the name of a font installed on your system & %(brand)s will attempt to use it.": "設定您系統上安裝的字型名稱,%(brand)s 將會嘗試使用它。", "%(brand)s version:": "%(brand)s 版本:", + "Make this room low priority": "將此聊天室設為較低優先程度", + "Low priority rooms show up at the bottom of your room list in a dedicated section at the bottom of your room list": "低優先程度的聊天室會顯示在您聊天室清單底部的專用區域中", "Show rooms with unread messages first": "先顯示有未讀訊息的聊天室", "Show previews of messages": "顯示訊息預覽", "Use default": "使用預設值", @@ -2238,6 +2377,11 @@ "Edited at %(date)s": "編輯於 %(date)s", "Click to view edits": "點擊以檢視編輯", "If the other version of %(brand)s is still open in another tab, please close it as using %(brand)s on the same host with both lazy loading enabled and disabled simultaneously will cause issues.": "如果其他版本的 %(brand)s 仍在其他分頁中開啟,請關閉它,因為在同一主機上使用同時啟用與停用惰性載入的 %(brand)s 可能會造成問題。", + "Use your account to sign in to the latest version of the app at ": "使用您的帳號以登入到最新版本的應用程式於 ", + "You’re already signed in and good to go here, but you can also grab the latest versions of the app on all platforms at element.io/get-started.": "您已登入並可在此處進行存取,但您可以在 element.io/get-started 取得所有平臺的最新版本的應用程式。", + "Go to Element": "到 Element", + "We’re excited to announce Riot is now Element!": "我們很高興地宣佈 Riot 現在變為 Element 了!", + "Learn more at element.io/previously-riot": "在 element.io/previously-riot 取得更多資訊", "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use %(brand)s with an existing Matrix account on a different homeserver.": "您可以透過指定不同的家伺服器 URL 來使用自訂伺服器選項以登入到其他 Matrix 伺服器。這讓您可以與既有的 Matrix 帳號在不同的家伺服器一起使用 %(brand)s。", "Enter the location of your Element Matrix Services homeserver. It may use your own domain name or be a subdomain of element.io.": "輸入您的 Element Matrix 服務家伺服器位置。它可能使用您的域名或 element.io 的子網域。", "Search rooms": "搜尋聊天室", @@ -2245,6 +2389,7 @@ "%(brand)s Web": "%(brand)s 網頁版", "%(brand)s Desktop": "%(brand)s 桌面版", "%(brand)s iOS": "%(brand)s iOS", + "%(brand)s X for Android": "Android 的 %(brand)s X", "Custom Tag": "自訂標籤", "* %(senderName)s %(emote)s": "* %(senderName)s %(emote)s", "The person who invited you already left the room.": "邀請您的人已離開聊天室。", diff --git a/src/languageHandler.tsx b/src/languageHandler.tsx index dd541df254..59edc8766c 100644 --- a/src/languageHandler.tsx +++ b/src/languageHandler.tsx @@ -27,7 +27,6 @@ import PlatformPeg from "./PlatformPeg"; // @ts-ignore - $webapp is a webpack resolve alias pointing to the output directory, see webpack config import webpackLangJsonUrl from "$webapp/i18n/languages.json"; import { SettingLevel } from "./settings/SettingLevel"; -import { SASEmojiV1 } from "matrix-js-sdk/src/crypto/verification/SASEmojiV1"; const i18nFolder = 'i18n/'; @@ -40,14 +39,6 @@ counterpart.setSeparator('|'); // Fall back to English counterpart.setFallbackLocale('en'); -for (const emoji of SASEmojiV1.getAllEmoji()) { - const translations = SASEmojiV1.getTranslationsFor(emoji); - for (const lang of Object.keys(translations)) { - const tempObject = {[SASEmojiV1.getNameFor(emoji)]: translations[lang]}; - counterpart.registerTranslations(lang, tempObject); - } -} - interface ITranslatableError extends Error { translatedMessage: string; } @@ -153,11 +144,6 @@ export function _t(text: string, variables?: IVariables, tags?: Tags): string | } } -export function _tSasV1(emoji: string): string { - const name = SASEmojiV1.getNameFor(emoji); - return _t(name); -} - /* * Similar to _t(), except only does substitutions, and no translation * @param {string} text The text, e.g "click here now to %(foo)s". From 0bda80c57d95c748fba11146bb69c9a12a49bec7 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Wed, 19 Aug 2020 10:32:24 +0100 Subject: [PATCH 246/424] Consider tab completions as modifications for editing purposes to unlock sending --- src/components/views/rooms/BasicMessageComposer.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/components/views/rooms/BasicMessageComposer.tsx b/src/components/views/rooms/BasicMessageComposer.tsx index 58dd82341e..6024f272ec 100644 --- a/src/components/views/rooms/BasicMessageComposer.tsx +++ b/src/components/views/rooms/BasicMessageComposer.tsx @@ -93,7 +93,7 @@ interface IProps { initialCaret?: DocumentOffset; onChange(); - onPaste(event: ClipboardEvent, model: EditorModel): boolean; + onPaste?(event: ClipboardEvent, model: EditorModel): boolean; } interface IState { @@ -554,10 +554,12 @@ export default class BasicMessageEditor extends React.Component } private onAutoCompleteConfirm = (completion: ICompletion) => { + this.modifiedFlag = true; this.props.model.autoComplete.onComponentConfirm(completion); }; private onAutoCompleteSelectionChange = (completion: ICompletion, completionIndex: number) => { + this.modifiedFlag = true; this.props.model.autoComplete.onComponentSelectionChange(completion); this.setState({completionIndex}); }; From b95956a3a446e79738d2781a912ae0ff6f5b0af7 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Wed, 19 Aug 2020 10:38:26 +0100 Subject: [PATCH 247/424] Clear url previews if they all get edited out of the event --- src/components/views/messages/TextualBody.js | 2 ++ src/components/views/rooms/LinkPreviewWidget.js | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/components/views/messages/TextualBody.js b/src/components/views/messages/TextualBody.js index 5f9e5e7db1..df72398b1c 100644 --- a/src/components/views/messages/TextualBody.js +++ b/src/components/views/messages/TextualBody.js @@ -172,6 +172,8 @@ export default createReactClass({ const hidden = global.localStorage.getItem("hide_preview_" + this.props.mxEvent.getId()); this.setState({ widgetHidden: hidden }); } + } else if (this.state.links.length) { + this.setState({ links: [] }); } } }, diff --git a/src/components/views/rooms/LinkPreviewWidget.js b/src/components/views/rooms/LinkPreviewWidget.js index 1fe70dc61c..d1c1ce04f9 100644 --- a/src/components/views/rooms/LinkPreviewWidget.js +++ b/src/components/views/rooms/LinkPreviewWidget.js @@ -134,7 +134,7 @@ export default createReactClass({ const AccessibleButton = sdk.getComponent('elements.AccessibleButton'); return ( -
+
{ img }
From ad6f2f0db25cfe3cbb788f24906f27a58f5686ca Mon Sep 17 00:00:00 2001 From: Besnik Bleta Date: Wed, 19 Aug 2020 10:09:46 +0000 Subject: [PATCH 248/424] Translated using Weblate (Albanian) Currently translated at 99.7% (2334 of 2340 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/sq/ --- src/i18n/strings/sq.json | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/sq.json b/src/i18n/strings/sq.json index 270912f8a7..726508ebb2 100644 --- a/src/i18n/strings/sq.json +++ b/src/i18n/strings/sq.json @@ -2409,5 +2409,13 @@ "Master private key:": "Kyç privat i përgjithshëm:", "%(brand)s Android": "%(brand)s Android", "Show message previews for reactions in DMs": "Shfaq paraparje mesazhi për reagime në MD", - "Show message previews for reactions in all rooms": "Shfaq paraparje mesazhi për reagime në krejt dhomat" + "Show message previews for reactions in all rooms": "Shfaq paraparje mesazhi për reagime në krejt dhomat", + "Uploading logs": "Po ngarkohen regjistra", + "Downloading logs": "Po shkarkohen regjistra", + "Explore public rooms": "Eksploroni dhoma publike", + "Can't see what you’re looking for?": "S’shihni ç’po kërkoni?", + "Explore all public rooms": "Eksploroni krejt dhomat publike", + "%(count)s results|other": "%(count)s përfundime", + "Preparing to download logs": "Po bëhet gati për shkarkim regjistrash", + "Download logs": "Shkarko regjistra" } From af5d16485c3bcf34b5e33a24926ff3d97e21a9c1 Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Wed, 19 Aug 2020 05:43:32 +0000 Subject: [PATCH 249/424] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (2340 of 2340 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/zh_Hant/ --- src/i18n/strings/zh_Hant.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json index cef1d21701..d5eacd1141 100644 --- a/src/i18n/strings/zh_Hant.json +++ b/src/i18n/strings/zh_Hant.json @@ -2416,5 +2416,12 @@ "Master private key:": "主控私鑰:", "Show message previews for reactions in DMs": "在直接訊息中顯示反應的訊息預覽", "Show message previews for reactions in all rooms": "在所有聊天室中顯示反應的訊息預覽", - "Explore public rooms": "探索公開聊天室" + "Explore public rooms": "探索公開聊天室", + "Uploading logs": "正在上傳紀錄檔", + "Downloading logs": "正在下載紀錄檔", + "Can't see what you’re looking for?": "看不到您要找的東西嗎?", + "Explore all public rooms": "探索所有公開聊天室", + "%(count)s results|other": "%(count)s 個結果", + "Preparing to download logs": "正在準備下載紀錄檔", + "Download logs": "下載紀錄檔" } From 0acdef27fef8d54cb1ab34848ded914cd1901a8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Priit=20J=C3=B5er=C3=BC=C3=BCt?= Date: Tue, 18 Aug 2020 22:21:18 +0000 Subject: [PATCH 250/424] Translated using Weblate (Estonian) Currently translated at 100.0% (2340 of 2340 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/et/ --- src/i18n/strings/et.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/et.json b/src/i18n/strings/et.json index e00a5e0ecc..2d6b11d769 100644 --- a/src/i18n/strings/et.json +++ b/src/i18n/strings/et.json @@ -650,7 +650,7 @@ "Where you’re logged in": "Kus sa oled võrku loginud", "Manage the names of and sign out of your sessions below or verify them in your User Profile.": "Halda alljärgnevas oma sessioonide nimesid, logi neist välja või verifitseeri neid oma kasutajaprofiilis.", "A session's public name is visible to people you communicate with": "Sessiooni avalik nimi on nähtav neile, kellega sa suhtled", - "%(brand)s collects anonymous analytics to allow us to improve the application.": "Võimaldamaks meil rakendust parandada kogub %(brand)s anonüümset analüütikat.", + "%(brand)s collects anonymous analytics to allow us to improve the application.": "Võimaldamaks meil rakendust parandada kogub %(brand)s anonüümset teavet rakenduse kasutuse kohta.", "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "Privaatsus on meile oluline ning seega me ei kogu ei isiklikke ega isikustatavaid andmeid.", "Learn more about how we use analytics.": "Loe lisaks kuidas me kasutama analüütikat.", "No media permissions": "Meediaõigused puuduvad", From 1cc36d9ea2329f11401961fa7a034bdf707b7a2c Mon Sep 17 00:00:00 2001 From: XoseM Date: Wed, 19 Aug 2020 06:12:15 +0000 Subject: [PATCH 251/424] Translated using Weblate (Galician) Currently translated at 100.0% (2340 of 2340 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/gl/ --- src/i18n/strings/gl.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/gl.json b/src/i18n/strings/gl.json index e023ce9801..0075550412 100644 --- a/src/i18n/strings/gl.json +++ b/src/i18n/strings/gl.json @@ -2413,5 +2413,12 @@ "Master private key:": "Chave mestra principal:", "Show message previews for reactions in DMs": "Mostrar vista previa das mensaxes para reaccións en MDs", "Show message previews for reactions in all rooms": "Mostrar vista previa das mensaxes para reaccións en todas as salas", - "Explore public rooms": "Explorar salas públicas" + "Explore public rooms": "Explorar salas públicas", + "Uploading logs": "Subindo o rexistro", + "Downloading logs": "Descargando o rexistro", + "Can't see what you’re looking for?": "¿Non atopas o que buscas?", + "Explore all public rooms": "Explora todas as salas públicas", + "%(count)s results|other": "%(count)s resultados", + "Preparing to download logs": "Preparándose para descargar rexistro", + "Download logs": "Descargar rexistro" } From 016866cd986a70cbd75c6f2e670c92ec7e9d859f Mon Sep 17 00:00:00 2001 From: random Date: Wed, 19 Aug 2020 08:35:24 +0000 Subject: [PATCH 252/424] Translated using Weblate (Italian) Currently translated at 100.0% (2340 of 2340 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/it/ --- src/i18n/strings/it.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/it.json b/src/i18n/strings/it.json index fb76f3a621..8cea189ff6 100644 --- a/src/i18n/strings/it.json +++ b/src/i18n/strings/it.json @@ -2416,5 +2416,12 @@ "%(brand)s Android": "%(brand)s Android", "Show message previews for reactions in DMs": "Mostra anteprime messaggi per le reazioni nei messaggi diretti", "Show message previews for reactions in all rooms": "Mostra anteprime messaggi per le reazioni in tutte le stanze", - "Explore public rooms": "Esplora stanze pubbliche" + "Explore public rooms": "Esplora stanze pubbliche", + "Uploading logs": "Invio dei log", + "Downloading logs": "Scaricamento dei log", + "Can't see what you’re looking for?": "Non vedi quello che cerchi?", + "Explore all public rooms": "Esplora tutte le stanze pubbliche", + "%(count)s results|other": "%(count)s risultati", + "Preparing to download logs": "Preparazione al download dei log", + "Download logs": "Scarica i log" } From 4ba97c5dcc0ec5e728f694a8c1ab04dfb6789769 Mon Sep 17 00:00:00 2001 From: ziriSut Date: Tue, 18 Aug 2020 21:36:31 +0000 Subject: [PATCH 253/424] Translated using Weblate (Kabyle) Currently translated at 64.8% (1516 of 2340 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/kab/ --- src/i18n/strings/kab.json | 182 +++++++++++++++++++++++++++++++------- 1 file changed, 149 insertions(+), 33 deletions(-) diff --git a/src/i18n/strings/kab.json b/src/i18n/strings/kab.json index 2ec5616ddf..2117158ed8 100644 --- a/src/i18n/strings/kab.json +++ b/src/i18n/strings/kab.json @@ -354,7 +354,7 @@ "Please check your email and click on the link it contains. Once this is done, click continue.": "Ma ulac aɣilif, senqed imayl-ik/im syen sit ɣef useɣwen i yellan. Akken ara yemmed waya, sit ad tkemmleḍ.", "This will allow you to reset your password and receive notifications.": "Ayagi ad ak(akem)-yeǧǧ ad twennzeḍ awal-ik/im uffir yerna ad d-tremseḍ ilɣa.", "A username can only contain lower case letters, numbers and '=_-./'": "Isem n useqdac yezmer kan ad yegber isekkilen imeẓyanen, izwilen neɣ '=_-./'", - "Username invalid: %(errMessage)s": "Isem n useqdac d armeɣtu", + "Username invalid: %(errMessage)s": "Isem n useqdac d arameɣtu: %(errMessage)s", "An error occurred: %(error_string)s": "Tella-d tuccḍa: %(error_string)s", "To get started, please pick a username!": "I wakken ad tebduḍ, ttxil-k/m fren isem n useqdac!", "This will be your account name on the homeserver, or you can pick a different server.": "Wagi ad yili d isem-ik/im deg usebter agejdan, neɣ tzemreḍ ad tferneḍ aqeddac-nniḍen.", @@ -532,16 +532,16 @@ "Session already verified!": "Tiɣimit tettwasenqed yakan!", "Verified key": "Tasarut tettwasenqed", "Displays information about a user": "Yeskan talɣut ɣef useqdac", - "Send a bug report with logs": "Azen aneqqis n ubug s yiɣmisen", + "Send a bug report with logs": "Azen aneqqis n wabug s yiɣƔisen", "Logs sent": "Iɣmisen ttewaznen", "Opens chat with the given user": "Yeldi adiwenni d useqdac i d-yettunefken", - "Sends a message to the given user": "Yettazen izen i useqdac i d-yettunefken", + "Sends a message to the given user": "Yuzen iznan i useqdac i d-yettunefken", "Displays action": "Yeskan tigawt", "%(targetName)s accepted an invitation.": "%(targetName)s yeqbel tinnubga.", "%(senderName)s invited %(targetName)s.": "%(senderName)s inced-d %(targetName)s.", "%(senderName)s banned %(targetName)s.": "%(senderName)s yugi %(targetName)s.", "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s kksen isem ara d-ibanen (%(oldDisplayName)s).", - "%(senderName)s removed their profile picture.": "%(senderName)s yekkes tawlaft n umaɣnu-ines.", + "%(senderName)s removed their profile picture.": "%(senderName)s yekkes tawlaft n umaqnu-ines.", "%(senderName)s changed their profile picture.": "%(senderName)s ibeddel tawlaft n umaɣnu-ines.", "%(senderName)s set a profile picture.": "%(senderName)s yesbadu tawlaft n umaɣnu.", "%(senderName)s made no change.": "%(senderName)s ur yegi ara ula d yiwen n ubeddel.", @@ -568,9 +568,9 @@ "%(displayName)s is typing …": "%(displayName)s yettaru-d …", "%(names)s and %(count)s others are typing …|other": "%(names)s d %(count)s wiyaḍ ttarun-d …", "%(names)s and %(count)s others are typing …|one": "%(names)s d wayeḍ-nniḍen yettaru-d …", - "%(names)s and %(lastPerson)s are typing …": "%(names)s d %(count)s ttarun-d …", - "%(items)s and %(count)s others|other": "%(names)s d %(count)s wiyaḍ", - "%(items)s and %(count)s others|one": "%(names)s d wayeḍ-nniḍen", + "%(names)s and %(lastPerson)s are typing …": "%(names)s d %(lastPerson)s ttarun-d …", + "%(items)s and %(count)s others|other": "%(items)s d %(count)s wiyaḍ", + "%(items)s and %(count)s others|one": "%(items)s d wayeḍ-nniḍen", "%(items)s and %(lastItem)s": "%(items)s d %(lastItem)s", "a few seconds ago": "kra n tesinin seg yimir-nni", "about a minute ago": "tasdidt seg yimir-nni", @@ -731,7 +731,7 @@ "Avoid dates and years that are associated with you": "Zgel izmaz akked iseggasen i icudden ɣur-k", "System font name": "Isem n tsefsit n unagraw", "Send analytics data": "Azen isefka n tesleḍt", - "Cancelling…": "Asefsex...", + "Cancelling…": "Asefsex…", "They match": "Mṣadan", "They don't match": "Ur mṣadan ara", "Dog": "Aqjun", @@ -947,13 +947,13 @@ "and %(count)s others...|one": "d wayeḍ-nniḍen...", "Invite to this room": "Nced-d ɣer texxamt-a", "Filter room members": "Sizdeg iɛeggalen n texxamt", - "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (power %(powerLevelNumber)s)", + "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (i iǧehden %(powerLevelNumber)s", "Voice call": "Asiwel s taɣect", "Video call": "Asiwel s tvidyut", - "Send an encrypted reply…": "Azen tiririt yettuwgelhen...", - "Send a reply…": "Azen tiririt...", - "Send an encrypted message…": "Azen izen yettuwgelhen...", - "Send a message…": "Azen izen...", + "Send an encrypted reply…": "Azen tiririt yettuwgelhen…", + "Send a reply…": "Azen tiririt…", + "Send an encrypted message…": "Azen izen yettuwgelhen…", + "Send a message…": "Azen izen…", "Italics": "Uknan", "No pinned messages.": "Ulac iznan yerzin.", "Pinned Messages": "Iznan yerzin", @@ -963,21 +963,21 @@ "Seen by %(userName)s at %(dateTime)s": "Iwala-t %(userName)s at %(dateTime)s", "Replying": "Tiririt", "Guests can join": "Inebgawen zemren ad ttekkin", - "(~%(count)s results)|one": "(~%(count)s result)", + "(~%(count)s results)|one": "(~%(count)s igmaḍ)", "Join Room": "Rnu ɣer texxamt", "Forget room": "Tettuḍ taxxamt", "Rooms": "Timɣiwent", "Custom Tag": "Sagen tabzimt", "This room": "Taxxamt-a", "Loading …": "La d-yettali…", - "Rejecting invite …": "Tigtin n tinnubga...", + "Rejecting invite …": "Tigtin n tinnubga…", "Join the conversation with an account": "Ttekki deg udiwenni s umiḍan", "Loading room preview": "Taskant n texxamt i la d-tettali", "Re-join": "Ales attekki", "Try to join anyway": "Ɣas akken ɛreḍ ad tettekkiḍ", "Join the discussion": "Ttekki deg udiwenni", "Start chatting": "Bdu adiwenni", - "%(roomName)s is not accessible at this time.": "%(weekDayName)s ulac anekcum ɣer-s akka tura.", + "%(roomName)s is not accessible at this time.": "%(roomName)s ulac anekcum ɣer-s akka tura.", "Show previews of messages": "Sken tiskanin n yiznan", "Jump to first unread room.": "Ɛeddi ɣer texxamt tamezwarut ur nettwaɣra ara.", "Jump to first invite.": "Ɛreddi ɣer tinnubga tamezwarut.", @@ -988,7 +988,7 @@ "Leave Room": "Ffeɣ seg texxamt", "Add a topic": "Rnu asentel", "This Room": "Taxxamt-a", - "Search…": "Ffeɣ seg unadi...", + "Search…": "Nadi…", "Send as message": "Azen-it d izen", "Add some now": "Rnu kra tura", "Hide Stickers": "Ffer istikiyen", @@ -1023,7 +1023,7 @@ "Verify by scanning": "Senqed s usiggez", "Verify by emoji": "Senqed s yimujit", "Verification timed out.": "Yemmed wakud n usenqed.", - "%(displayName)s cancelled verification.": "%(name)s isefsex asenqed.", + "%(displayName)s cancelled verification.": "%(displayName)s isefsex asenqed.", "You cancelled verification.": "Tesfesxeḍ asenqed.", "Verification cancelled": "Yefsex usenqed", "Encryption enabled": "Awgelhen ur yeddi ara", @@ -1207,9 +1207,9 @@ "Continue with previous account": "Kemmel s umiḍan yezrin", "Log in to your new account.": "Kcem ɣer umiḍan-ik·im amaynut.", "%(brand)s Web": "%(brand)s Web", - "%(brand)s Desktop": "Tanarit n %(tecreḍt)s", - "%(brand)s iOS": "%(tacreḍt)s iOS", - "%(brand)s Android": "%(tacreḍt)s Andriod", + "%(brand)s Desktop": "%(brand)s n tnarit", + "%(brand)s iOS": "%(brand)s iOS", + "%(brand)s Android": "%(brand)s Andriod", "Incorrect password": "Awal uffir d arameɣtu", "Failed to re-authenticate": "Aɛiwed n usesteb ur yeddi ara", "Command Autocomplete": "Asmad awurman n tiludna", @@ -1287,9 +1287,9 @@ "Room Name": "Isem n texxamt", "Room Topic": "Asentel n texxamt", "Room avatar": "Avaṭar n texxamt", - "Accepting…": "Aqbal...", + "Accepting…": "Aqbal…", "Your homeserver": "Aqeddac-ik·im agejdan", - "Accepting …": "Aqbal...", + "Accepting …": "Aqbal…", "Your display name": "Isem-ik·im yettwaskanen", "Your avatar URL": "URL n avatar-inek·inem", "%(brand)s URL": "%(brand)s URL", @@ -1309,7 +1309,7 @@ "Please create a new issue on GitHub so that we can investigate this bug.": "Ttxil-k·m rnu ugur amaynut deg GitHub akken ad nessiweḍ ad nezrew abug-a.", "expand": "snefli", "You cannot delete this image. (%(code)s)": "Ur tezmireḍ ara ad tekkseḍ tugna-a. (%(code)s)", - "Uploaded on %(date)s by %(user)s": "Uploaded on %(date)s by %(user)s", + "Uploaded on %(date)s by %(user)s": "Yuli-d deg %(date)s sɣur %(user)s", "Rotate Left": "Zzi ɣer uzelmaḍ", "Rotate Right": "Zzi ɣer uyeffus", "Language Dropdown": "Tabdart n udrurem n tutlayin", @@ -1318,9 +1318,9 @@ "%(oneUser)sjoined %(count)s times|other": "%(oneUser)syerna-d %(count)s tikkal", "%(oneUser)sjoined %(count)s times|one": "%(oneUser)syerna-d", "%(severalUsers)sleft %(count)s times|other": "%(severalUsers)sffɣen %(count)s tikkal", - "%(severalUsers)sleft %(count)s times|one": "%(severalUsers)sffɣen %(count)s", - "%(oneUser)sleft %(count)s times|other": "%(oneUsers)syeffeɣ %(count)s tikkal", - "%(oneUser)sleft %(count)s times|one": "%(oneUsers)syeffeɣ", + "%(severalUsers)sleft %(count)s times|one": "%(severalUsers)s ffɣen", + "%(oneUser)sleft %(count)s times|other": "%(oneUser)s yeffeɣ %(count)s tikkal", + "%(oneUser)sleft %(count)s times|one": "%(oneUser)s yeffeɣ", "%(severalUsers)sjoined and left %(count)s times|other": "%(severalUsers)srnan-d syen ffɣen %(count)s tikkal", "%(severalUsers)sjoined and left %(count)s times|one": "%(severalUsers)srnan-d syen ffɣen", "%(oneUser)sjoined and left %(count)s times|other": "%(oneUser)syerna-d syen yeffeɣ %(count)s tikkal", @@ -1397,7 +1397,7 @@ "Remove %(name)s from the directory?": "Kkes %(name)s seg ukaram?", "delete the address.": "kkes tansa.", "Room not found": "Ur tettwaf ara texxamt", - "Find a room…": "Af-d taxxamt...", + "Find a room…": "Af-d taxxamt…", "Search rooms": "Nadi tixxamin", "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s yuzen tinubga i %(targetDisplayName)s i wakken ad d-yernu ɣer texxamt.", "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s yerra amazray n texxamt tamaynut yettban i meṛṛa iɛeggalen n texxamt, segmi ara d-ttwanecden.", @@ -1411,10 +1411,10 @@ "%(senderName)s removed the rule banning servers matching %(glob)s": "%(senderName)s yekkes alugen i yugin iqeddacen yemṣadan d %(glob)s", "%(senderName)s removed a ban rule matching %(glob)s": "%(senderName)s yekkes alugen n tigtin yemṣadan d %(glob)s", "%(senderName)s updated an invalid ban rule": "%(senderName)s ileqqem alugen n tigtin arameɣtu", - "%(senderName)s updated the rule banning users matching %(glob)s for %(reason)s": "%(senderName)s ileqqem alugen i yugin iseqdacen yemṣadan d %(glob)s", - "%(senderName)s updated the rule banning rooms matching %(glob)s for %(reason)s": "%(senderName)s ileqqem alugen i yugin tixxamin yemṣadan d %(glob)s", - "%(senderName)s updated the rule banning servers matching %(glob)s for %(reason)s": "%(senderName)s ileqqem alugen i yugin iqeddacen yemṣadan d %(glob)s", - "%(senderName)s updated a ban rule matching %(glob)s for %(reason)s": "%(senderName)s ileqqem alugen n tigtin yemṣadan d %(glob)s", + "%(senderName)s updated the rule banning users matching %(glob)s for %(reason)s": "%(senderName)s ileqqem alugen i yugin iseqdacen yemṣadan d %(glob)s i %(reason)s", + "%(senderName)s updated the rule banning rooms matching %(glob)s for %(reason)s": "%(senderName)s ileqqem alugen i yugin tixxamin yemṣadan d %(glob)s i %(reason)s", + "%(senderName)s updated the rule banning servers matching %(glob)s for %(reason)s": "%(senderName)s ileqqem alugen i yugin iqeddacen yemṣadan d %(glob)s i %(reason)s", + "%(senderName)s updated a ban rule matching %(glob)s for %(reason)s": "%(senderName)s ileqqem alugen n tigtin yemṣadan d %(glob)s i %(reason)s", "%(senderName)s created a rule banning users matching %(glob)s for %(reason)s": "%(senderName)s yerna alugen i yugin iseqdacen yemṣadan d %(glob)s i %(reason)s", "%(senderName)s created a rule banning rooms matching %(glob)s for %(reason)s": "%(senderName)s yerna alugen i yugin tixxamin yemṣadan d %(glob)s i %(reason)s", "%(senderName)s created a rule banning servers matching %(glob)s for %(reason)s": "%(senderName)s yerna alugen i yugin iqeddacen yemṣadan d %(glob)s i %(reason)s", @@ -1444,5 +1444,121 @@ "If disabled, messages from encrypted rooms won't appear in search results.": "Ma yella tensa, iznan n texxamin tiwgelhanin ur d-ttbanen ara deg yigmaḍ n unadi.", "%(brand)s is securely caching encrypted messages locally for them to appear in search results:": "%(brand)s iteffer iznan iwgelhanen idiganen s wudem aɣelsan i wakken ad d-banen deg yigmaḍ n unadi:", "Message downloading sleep time(ms)": "Akud n usgunfu n usali n yiznan (ms)", - "Dismiss read marker and jump to bottom": "Zgel ticreḍt n tɣuri, tɛeddiḍ d akessar" + "Dismiss read marker and jump to bottom": "Zgel ticreḍt n tɣuri, tɛeddiḍ d akessar", + "Show display name changes": "Sken isnifal n yisem yettwaskanen", + "Show read receipts sent by other users": "Sken awwaḍen n tɣuri yettwaznen sɣur yiseqdacen-nniḍen", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "Sken azemzakud s umasal 12 yisragen (am. 14:30)", + "Always show message timestamps": "Sken yal tikkelt azemzakud n yiznan", + "Autoplay GIFs and videos": "Taɣuri tawurmant n GIFs d tvidyutin", + "When I'm invited to a room": "Mi ara d-ttunecdeɣ ɣer texxamt", + "This is your list of users/servers you have blocked - don't leave the room!": "Tagi d tabdart-ik·im n yiseqdacen/yiqeddacen i tesweḥleḍ - ur teffeɣ ara seg texxamt!", + "Active call": "Asiwel urmid", + "Verified!": "Yettwasenqed!", + "Scan this unique code": "Ḍumm tangalt-a tasuft", + "Compare unique emoji": "Serwes gar yimujiten asufen", + "in secret storage": "deg uklas uffir", + "Master private key:": "Tasarut tusligt tagejdant:", + "cached locally": "yettwaffer s wudem adigan", + "not found locally": "Ulac s wudem adigan", + "Self signing private key:": "Tasarut tusligt n uzmul awurman:", + "User signing private key:": "Tasarut tusligt n uzmul n useqdac:", + "Session backup key:": "Tasarut n uḥraz n tɣimit:", + "Secret storage public key:": "Tasarut tazayezt n uḥraz uffir:", + "Homeserver feature support:": "Asefrek n tmahilt n Homeserver:", + "exists": "yella", + "Your homeserver does not support session management.": "Aqeddac-ik·im agejdan ur yessefrak ara asefrek n tɣimit.", + "Unable to load session list": "Asali n tebdart n tɣimit ur yeddi ara", + "Click the button below to confirm deleting these sessions.|other": "Sit ɣef tqeffalt ddaw akken ad tesnetmeḍ tukksa n tɣimiyin-a.", + "Click the button below to confirm deleting these sessions.|one": "Sit ɣef tqeffalt ddaw akken ad tesnetmeḍ tukksa n tɣimit-a.", + "Unable to load key backup status": "Asali n waddad n uḥraz n tsarut ur yeddi ara", + "not stored": "ur yettusekles ara", + "Backing up %(sessionsRemaining)s keys...": "Aḥraz n tsura %(sessionsRemaining)s...", + "Backup has a valid signature from this user": "Aḥraz ɣer-s azmul ameɣtu sɣur aseqdac-a", + "Backup has a invalid signature from this user": "Aḥraz ɣer-s azmul arameɣtu sɣur aseqdac-a", + "Backup has a signature from unknown user with ID %(deviceId)s": "Aḥraz ɣer-s azmul sɣur useqdac arussin s usulay %(deviceId)s", + "Backup has a signature from unknown session with ID %(deviceId)s": "Aḥraz ɣer-s azmul seg tiɣimit arussin s usulay %(deviceId)s", + "Backup has a valid signature from this session": "Aḥraz ɣer-s azmul ameɣtu seg tɣimit-a", + "Backup has an invalid signature from this session": "Aḥraz ɣer-s azmul arameɣtu seg tɣimit-a", + "Backup has a valid signature from verified session ": "Aḥraz ɣer-s azmul ameɣtu seg tɣimit yettwasneqden ", + "Backup has a valid signature from unverified session ": "Aḥraz ɣer-s azmul ameɣtu seg tɣimit ur yettwasneqden ara ", + "Backup has an invalid signature from verified session ": "Aḥraz ɣer-s azmul arameɣtu seg tɣimit yettwasneqden ", + "Backup has an invalid signature from unverified session ": "Aḥraz ɣer-s azmul arameɣtu seg tɣimit ur yettwasneqden ara ", + "Backup is not signed by any of your sessions": "Aḥraz ur yettuzmel ara ula seg yiwet n tɣimit-ik·im", + "Algorithm: ": "Alguritm: ", + "Backup key stored: ": "Tasarut n uḥraz tettwasekles: ", + "Your keys are not being backed up from this session.": "Tisura-inek·inem ur ttwaḥrazent ara seg tɣimit-a.", + "Start using Key Backup": "Bdu aseqdec n uḥraz n tsarut", + "Flair": "Lbenna", + "Failed to change password. Is your password correct?": "Asnifel n wawal uffir ur yeddi ara. Awal-ik·im d ameɣtu?", + "Email addresses": "Tansiwin n yimayl", + "Phone numbers": "Uṭṭunen n tiliɣri", + "Language and region": "Tutlayt d temnaḍt", + "Yours, or the other users’ session": "Tiɣimit-ik·im neɣ tin n yiseqdacen wiyaḍ", + "Not trusted": "Ur yettwattkal ara", + "%(count)s verified sessions|other": "%(count)s isenqed tiɣimiyin", + "%(count)s verified sessions|one": "1 n tɣimit i yettwasneqden", + "%(count)s sessions|one": "Tiɣimit n %(count)s", + "Direct message": "Izen uslig", + "Demote yourself?": "Ṣubb deg usellun-ik·im?", + "Demote": "Ṣubb deg usellun", + "Disinvite": "Kkes-d tinnubga", + "Kick": "Suffeɣ", + "Failed to kick": "Asuffeɣ ur yeddi ara", + "No recent messages by %(user)s found": "Ulac iznan i yettwafen sɣur %(user)s", + "Try scrolling up in the timeline to see if there are any earlier ones.": "Ɛreḍ adrurem deg wazemzakud i wakken ad twaliḍ ma yella llan wid yellan uqbel.", + "Remove recent messages by %(user)s": "Kkes iznan n melmi kan sɣur %(user)s", + "You are about to remove %(count)s messages by %(user)s. This cannot be undone. Do you wish to continue?|other": "Aql-ak·akem akken ara tekkseḍ iznan n %(count)s sɣur %(user)s. Ulac tuɣalin ɣer deffir deg waya. Tebɣiḍ ad tkemmleḍ?", + "You are about to remove %(count)s messages by %(user)s. This cannot be undone. Do you wish to continue?|one": "Aql-ak·akem akken ara tekkseḍ 1 yizen sɣur %(user)s. Ulac tuɣalin ɣer deffir deg waya. Tebɣiḍ ad tkemmleḍ?", + "For a large amount of messages, this might take some time. Please don't refresh your client in the meantime.": "I tugget meqqren n yiznan, ayagi yezmer ad yeṭṭef kra n wakud. Ṛǧu ur sirin ara amsaɣ-ik·im deg leɛḍil.", + "Remove %(count)s messages|other": "Kkes iznan n %(count)s", + "Ban": "Agi", + "Failed to ban user": "Tigtin n useqdac ur yeddi ara", + "Failed to remove user from community": "Tukksa n useqdac seg temɣiwent ur yeddi ara", + "%(role)s in %(roomName)s": "%(role)s deg %(roomName)s", + "Failed to change power level": "Asnifel n uswir afellay ur yeddi ara", + "Failed to deactivate user": "Asensi n useqdac ur yeddi ara", + "This client does not support end-to-end encryption.": "Amsaɣ-a ur yessefrak ara awgelhen seg yixef ɣer yixef.", + "Ask %(displayName)s to scan your code:": "Suter deg %(displayName)s aḍummu n tengalt-ik·im:", + "If you can't scan the code above, verify by comparing unique emoji.": "Ma yella ur tezmireḍ ara ad tḍummeḍ tangalt nnig, senqed s userwes s yimujiten asufen.", + "Verify by comparing unique emoji.": "Senqed s userwes s yimujiten asufen.", + "Almost there! Is your other session showing the same shield?": "Qrib ad tawḍeḍ! Wissen ma yella tiɣimit-ik·im-nniḍen kifkif aɣar i d-teskanay?", + "Almost there! Is %(displayName)s showing the same shield?": "Qrib ad tawḍeḍ! Wissen ma yella%(displayName)s kifkif aɣar i d-yeskanay?", + "Verify all users in a room to ensure it's secure.": "Senqed akk iseqdacen yellan deg texxamt i wakken ad tḍemneḍ d taɣelsant.", + "In encrypted rooms, verify all users to ensure it’s secure.": "Deg texxamin tiwgelhanin, senqed akk iseqdacen i wakken ad tḍemneḍ d tiɣelsanin.", + "You've successfully verified your device!": "Tesneqdeḍ akken iwata ibenk-inek·inem!", + "You've successfully verified %(deviceName)s (%(deviceId)s)!": "Tesneqdeḍ akken iwata %(deviceName)s (%(deviceId)s)!", + "You've successfully verified %(displayName)s!": "Tesneqdeḍ akken iwata %(displayName)s!", + "Start verification again from the notification.": "Bdu asenqed daɣen seg ulɣu.", + "Start verification again from their profile.": "Bdu asenqed daɣen seg umaɣnu-nsen.", + "You cancelled verification on your other session.": "Tesfesxeḍ asenqed deg tɣimiyin tiyaḍ.", + "Compare emoji": "Serwes imujiten", + "Encryption not enabled": "Awgelhen ur yermid ara", + "The encryption used by this room isn't supported.": "Awgelhen yettusqedcen ur yettusefrak ara s texxamt-a.", + "Error decrypting audio": "Tuccḍa deg uwgelhen n umeslaw", + "React": "Sedmer", + "Message Actions": "Tigawin n yizen", + "Invalid file%(extra)s": "D afaylu %(extra)s arameɣtu", + "Error decrypting image": "Tuccḍa deg uwgelhen n tugna", + "Show image": "Sken tugna", + "Invalid base_url for m.identity_server": "base_url d arameɣtu i m.identity_server", + "Signing In...": "Anekcum ɣer...", + "If you've joined lots of rooms, this might take a while": "Ma yella tettekkaḍ deg waṭas n texxamin, ayagi yezmer ad yeṭṭef kra n wakud", + "Set a display name:": "Sbadu isem n uskan:", + "Upload an avatar:": "Sali-d avaṭar:", + "Use Recovery Key": "Seqdec tasarut n uɛeddi", + "Emoji": "Imujit", + "For maximum security, this should be different from your account password.": "I wugar n tɣellist, wagi ilaq ad yemgarad ɣef wawal uffir n umiḍan-ik·im.", + "Set up with a recovery key": "Sbadu s tsarut n uɛeddi", + "Please enter your recovery passphrase a second time to confirm.": "Ttxil-ik·im sekcem tafyirt-ik·im tuffirt n uɛeddi tikkelt tis sant i usentem.", + "Repeat your recovery passphrase...": "Ales-as i tefyirt-ik·im tuffirt n uɛeddi...", + "Keep a copy of it somewhere secure, like a password manager or even a safe.": "Ḥrez anɣal-ines deg wadeg aɣelsan, am umsefrak n wawalen uffiren neɣ am usenduq iǧehden.", + "Your recovery key": "Tasarut-ik·im n uɛeddi", + "Your recovery key has been copied to your clipboard, paste it to:": "Tasarut-ik·im n uɛeddi tettwanɣel ɣer ɣef wafus, senteḍ-itt deg:", + "Your recovery key is in your Downloads folder.": "Tasarut-ik·im n tririt ha-tt-an deg ufaylu n yisidar.", + "Print it and store it somewhere safe": "Siggez-itt syen kles-itt deg wadeg aɣelsan", + "Save it on a USB key or backup drive": "Sekles-itt ɣef tsarut USB neɣ deg yibenk n uḥraz", + "Copy it to your personal cloud storage": "Nɣel-itt ɣer uklas-ik·im n usigna udmawan", + "Your keys are being backed up (the first backup could take a few minutes).": "Tisura-ik·im la ttwaḥrazent (aḥraz amezwaru yezmer ad yeṭṭef kra n tesdidin).", + "Set up Secure Message Recovery": "Sbadu iznan iɣelsanen n tririt", + "Secure your backup with a recovery passphrase": "Ḍmen aḥrazen-inek·inem s tefyirt tuffirt n uɛeddi" } From ad4ca8af96e97e1883bc01d1671671fb76267565 Mon Sep 17 00:00:00 2001 From: Marcelo Filho Date: Tue, 18 Aug 2020 20:19:10 +0000 Subject: [PATCH 254/424] Translated using Weblate (Portuguese (Brazil)) Currently translated at 96.8% (2265 of 2340 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/pt_BR/ --- src/i18n/strings/pt_BR.json | 249 ++++++++++++++++++------------------ 1 file changed, 126 insertions(+), 123 deletions(-) diff --git a/src/i18n/strings/pt_BR.json b/src/i18n/strings/pt_BR.json index 9db2be4b14..c16e7a980d 100644 --- a/src/i18n/strings/pt_BR.json +++ b/src/i18n/strings/pt_BR.json @@ -20,7 +20,7 @@ "Current password": "Senha atual", "Deactivate Account": "Desativar minha conta", "Default": "Padrão", - "Deops user with given id": "Retirar função de moderador do usuário com o identificador informado", + "Deops user with given id": "Retirar nível de moderador do usuário com o identificador informado", "Displays action": "Visualizar atividades", "Emoji": "Emoji", "Error": "Erro", @@ -39,7 +39,7 @@ "Historical": "Histórico", "Homeserver is": "Servidor padrão é", "Identity Server is": "O servidor de identificação é", - "I have verified my email address": "Eu verifiquei o meu endereço de e-mail", + "I have verified my email address": "Eu confirmei o meu endereço de e-mail", "Import E2E room keys": "Importar chave de criptografia ponta-a-ponta (E2E) da sala", "Invalid Email Address": "Endereço de e-mail inválido", "Invites": "Convidar", @@ -62,7 +62,7 @@ "Passwords can't be empty": "As senhas não podem estar em branco", "Permissions": "Permissões", "Phone": "Telefone", - "Please check your email and click on the link it contains. Once this is done, click continue.": "Por favor, verifique o seu e-mail e clique no link enviado. Feito isso, clique em continuar.", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Por favor, confirme o seu e-mail e clique no link enviado. Feito isso, clique em continuar.", "Privileged Users": "Usuárias/os privilegiadas/os", "Profile": "Perfil", "Reject invitation": "Recusar o convite", @@ -85,13 +85,13 @@ "This room is not accessible by remote Matrix servers": "Esta sala não é acessível para servidores Matrix remotos", "Unable to add email address": "Não foi possível adicionar um endereço de e-mail", "Unable to remove contact information": "Não foi possível remover informação de contato", - "Unable to verify email address.": "Não foi possível verificar o endereço de e-mail.", + "Unable to verify email address.": "Não foi possível confirmar o endereço de e-mail.", "Unban": "Remover banimento", "unknown error code": "código de erro desconhecido", "Upload avatar": "Enviar uma foto de perfil", "Upload file": "Enviar arquivo", "Users": "Usuários", - "Verification Pending": "Verificação pendente", + "Verification Pending": "Confirmação pendente", "Video call": "Chamada de vídeo", "Voice call": "Chamada de voz", "VoIP conference finished.": "Chamada em grupo encerrada.", @@ -135,7 +135,7 @@ "Existing Call": "Chamada em andamento", "Failed to send email": "Não foi possível enviar e-mail", "Failed to send request.": "Não foi possível mandar requisição.", - "Failed to verify email address: make sure you clicked the link in the email": "Falha ao verificar o endereço de e-mail: certifique-se de clicar no link do e-mail", + "Failed to verify email address: make sure you clicked the link in the email": "Falha ao confirmar o endereço de e-mail: certifique-se de clicar no link do e-mail", "Failure to create room": "Não foi possível criar a sala", "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s de %(fromPowerLevel)s para %(toPowerLevel)s", "%(senderName)s invited %(targetName)s.": "%(senderName)s convidou %(targetName)s.", @@ -156,7 +156,7 @@ "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s removeu o nome e sobrenome (%(oldDisplayName)s).", "%(senderName)s removed their profile picture.": "%(senderName)s removeu a foto de perfil.", "%(senderName)s requested a VoIP conference.": "%(senderName)s deseja iniciar uma chamada em grupo.", - "%(brand)s does not have permission to send you notifications - please check your browser settings": "%(brand)s não tem permissão para lhe enviar notificações - verifique as configurações do seu navegador", + "%(brand)s does not have permission to send you notifications - please check your browser settings": "%(brand)s não tem permissão para lhe enviar notificações - confirme as configurações do seu navegador", "%(brand)s was not given permission to send notifications - please try again": "%(brand)s não tem permissão para lhe enviar notificações - tente novamente", "Room %(roomId)s not visible": "A sala %(roomId)s não está visível", "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s enviou uma imagem.", @@ -168,7 +168,7 @@ "The remote side failed to pick up": "A pessoa não atendeu a chamada", "This room is not recognised.": "Esta sala não é reconhecida.", "This phone number is already in use": "Este número de telefone já está sendo usado", - "To use it, just wait for autocomplete results to load and tab through them.": "Para usar esta funcionalidade, aguarde o carregamento dos resultados de autocompletar e então escolha entre as opções.", + "To use it, just wait for autocomplete results to load and tab through them.": "Para usar este recurso, aguarde o carregamento dos resultados de autocompletar e então escolha entre as opções.", "%(senderName)s unbanned %(targetName)s.": "%(senderName)s removeu o banimento de %(targetName)s.", "Unable to capture screen": "Não foi possível capturar a imagem da tela", "Unable to enable Notifications": "Não foi possível ativar as notificações", @@ -217,7 +217,7 @@ "Failed to reject invite": "Não foi possível recusar o convite", "Failed to set display name": "Falha ao definir o nome e sobrenome", "Fill screen": "Tela cheia", - "Incorrect verification code": "Código de verificação incorreto", + "Incorrect verification code": "Código de confirmação incorreto", "Join Room": "Ingressar na sala", "Jump to first unread message.": "Ir diretamente para a primeira das mensagens não lidas.", "Kick": "Remover da sala", @@ -285,7 +285,7 @@ "Add User": "Adicionar usuária(o)", "Custom Server Options": "Opções para Servidor Personalizado", "Dismiss": "Descartar", - "Please check your email to continue registration.": "Por favor, verifique o seu e-mail para continuar a inscrição.", + "Please check your email to continue registration.": "Por favor, confirme o seu e-mail para continuar a inscrição.", "Token incorrect": "Token incorreto", "Please enter the code it contains:": "Por favor, entre com o código que está na mensagem:", "powered by Matrix": "oferecido por Matrix", @@ -310,7 +310,7 @@ "Incorrect username and/or password.": "Nome de usuário e/ou senha incorreto.", "Invited": "Convidada(o)", "Results from DuckDuckGo": "Resultados de DuckDuckGo", - "Verified key": "Chave verificada", + "Verified key": "Chave confirmada", "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s removeu a foto da sala.", "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s alterou a foto da sala %(roomName)s", "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s alterou a foto da sala para ", @@ -338,7 +338,7 @@ "Uploading %(filename)s and %(count)s others|one": "Enviando o arquivo %(filename)s e %(count)s outros arquivos", "Uploading %(filename)s and %(count)s others|other": "Enviando o arquivo %(filename)s e %(count)s outros arquivos", "Username invalid: %(errMessage)s": "Nome de usuário inválido: %(errMessage)s", - "You must register to use this functionality": "Você deve se registrar para poder usar esta funcionalidade", + "You must register to use this functionality": "Você deve se registrar para usar este recurso", "Create new room": "Criar nova sala", "Room directory": "Lista pública de salas", "Start chat": "Iniciar conversa", @@ -411,7 +411,7 @@ "Call Failed": "A chamada falhou", "PM": "PM", "AM": "AM", - "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(day)s de %(monthName)s de%(fullYear)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(day)s de %(monthName)s de %(fullYear)s", "Who would you like to add to this community?": "Quem você gostaria de adicionar a esta comunidade?", "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Atenção: qualquer pessoa que você adicionar a esta comunidade estará publicamente visível para todas as pessoas que conheçam o ID da comunidade", "Invite new community members": "Convidar novos integrantes para a comunidade", @@ -471,7 +471,7 @@ "Guests can join": "Convidadas/os podem entrar", "Community Invites": "Convites a comunidades", "Banned by %(displayName)s": "Banido por %(displayName)s", - "Publish this room to the public in %(domain)s's room directory?": "Quer publicar esta sala na lista pública de salas em %(domain)s's?", + "Publish this room to the public in %(domain)s's room directory?": "Quer publicar esta sala na lista pública de salas da %(domain)s?", "Members only (since the point in time of selecting this option)": "Apenas integrantes (a partir do momento em que esta opção for selecionada)", "Members only (since they were invited)": "Apenas integrantes (desde que foram convidadas/os)", "Members only (since they joined)": "Apenas integrantes (desde que entraram na sala)", @@ -696,7 +696,7 @@ "Search…": "Buscar…", "You have successfully set a password and an email address!": "Você definiu uma senha e um endereço de e-mail com sucesso!", "Remove %(name)s from the directory?": "Remover %(name)s da lista pública de salas?", - "%(brand)s uses many advanced browser features, some of which are not available or experimental in your current browser.": "%(brand)s usa muitas funcionalidades avançadas do navegador, algumas das quais não estão disponíveis ou ainda são experimentais no seu navegador atual.", + "%(brand)s uses many advanced browser features, some of which are not available or experimental in your current browser.": "%(brand)s usa muitos recursos avançados, e alguns deles não estão disponíveis ou ainda são experimentais no seu navegador de internet atual.", "Developer Tools": "Ferramentas do desenvolvedor", "Explore Account Data": "Explorar dados da conta", "Remove from Directory": "Remover da lista pública de salas", @@ -758,7 +758,7 @@ "Event Content": "Conteúdo do Evento", "Thank you!": "Obrigado!", "Quote": "Citar", - "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Com o seu navegador atual, a aparência e sensação de uso da aplicação podem estar completamente incorretas, e algumas das funcionalidades poderão não funcionar. Se você quiser tentar de qualquer maneira, pode continuar, mas aí vai ter que se virar sozinho(a) com os problemas que porventura encontrar!", + "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Com o seu navegador atual, a aparência e sensação de uso da aplicação podem estar completamente incorretas, e alguns dos recursos poderão não funcionar. Você ainda pode prosseguir, mas estará sozinho diante de problemas que possam surgir!", "Checking for an update...": "Verificando se há atualizações...", "Every page you use in the app": "Toda a página que você usa no aplicativo", "e.g. ": "por exemplo: ", @@ -768,7 +768,7 @@ "A call is already in progress!": "Uma chamada já está em andamento!", "Permission Required": "Permissão necessária", "You do not have permission to start a conference call in this room": "Você não tem permissão para iniciar uma chamada em grupo nesta sala", - "Unable to load! Check your network connectivity and try again.": "Incapaz de carregar! Verifique sua conectividade de rede e tente novamente.", + "Unable to load! Check your network connectivity and try again.": "Não foi possível carregar! Verifique sua conexão de rede e tente novamente.", "Failed to invite users to the room:": "Não foi possível convidar usuários para a sala:", "Missing roomId.": "RoomId ausente.", "Opens the Developer Tools dialog": "Abre a caixa de diálogo Ferramentas do desenvolvedor", @@ -1000,12 +1000,12 @@ "Enable Community Filter Panel": "Ativar o painel de comunidades", "Allow Peer-to-Peer for 1:1 calls": "Permitir Peer-to-Peer para chamadas 1:1", "Messages containing my username": "Mensagens contendo meu nome de usuário", - "The other party cancelled the verification.": "Seu contato cancelou a verificação.", - "Verified!": "Verificado!", + "The other party cancelled the verification.": "Seu contato cancelou a confirmação.", + "Verified!": "Confirmado!", "You've successfully verified this user.": "Você confirmou este usuário com sucesso.", "Secure messages with this user are end-to-end encrypted and not able to be read by third parties.": "As mensagens com este usuário estão protegidas com a criptografia de ponta a ponta e não podem ser lidas por terceiros.", "Got It": "Ok, entendi", - "Unable to find a supported verification method.": "Não é possível encontrar um método de confirmação suportado.", + "Unable to find a supported verification method.": "Não há um método de confirmação suportado.", "Dog": "Cachorro", "Cat": "Gato", "Lion": "Leão", @@ -1046,8 +1046,8 @@ "User %(userId)s is already in the room": "O usuário %(userId)s já está na sala", "The user must be unbanned before they can be invited.": "O banimento do usuário precisa ser removido antes de ser convidado.", "Show display name changes": "Mostrar alterações de nome e sobrenome", - "Verify this user by confirming the following emoji appear on their screen.": "Verifique este usuário confirmando os emojis a seguir exibidos na tela dele.", - "Verify this user by confirming the following number appears on their screen.": "Confirme este usuário confirmando se o número a seguir aparece na tela dele.", + "Verify this user by confirming the following emoji appear on their screen.": "Confirme este usuário confirmando os emojis a seguir exibidos na tela dele.", + "Verify this user by confirming the following number appears on their screen.": "Confirme este usuário, comparando os números a seguir que serão exibidos na sua e na tela dele.", "Thumbs up": "Joinha", "Umbrella": "Guarda-chuva", "Hourglass": "Ampulheta", @@ -1087,8 +1087,8 @@ "All keys backed up": "O Backup de todas as chaves foi realizado", "Start using Key Backup": "Comece a usar o Backup de chave", "Add an email address to configure email notifications": "Adicione um endereço de e-mail para configurar notificações por e-mail", - "Unable to verify phone number.": "Não é possível verificar o número de telefone.", - "Verification code": "Código de verificação", + "Unable to verify phone number.": "Não foi possível confirmar o número de telefone.", + "Verification code": "Código de confirmação", "Phone Number": "Número de telefone", "Profile picture": "Foto de perfil", "Upgrade to your own domain": "Atualize para seu próprio domínio", @@ -1168,7 +1168,7 @@ "This action requires accessing the default identity server to validate an email address or phone number, but the server does not have any terms of service.": "Esta ação requer acesso ao servidor de identidade padrão para poder validar um endereço de e-mail ou número de telefone, mas este servidor não tem nenhum termo de uso.", "Only continue if you trust the owner of the server.": "Continue apenas se você confia em quem possui este servidor.", "Trust": "Confiança", - "%(name)s is requesting verification": "%(name)s está solicitando verificação", + "%(name)s is requesting verification": "%(name)s está solicitando confirmação", "Use your account to sign in to the latest version": "Use sua conta para logar na última versão", "We’re excited to announce Riot is now Element": "Estamos muito felizes em anunciar que Riot agora é Element", "Riot is now Element!": "Riot agora é Element!", @@ -1185,7 +1185,7 @@ "Sends a message as html, without interpreting it as markdown": "Envia uma mensagem como HTML, sem interpretá-la como markdown", "You do not have the required permissions to use this command.": "Você não tem as permissões necessárias para usar este comando.", "Error upgrading room": "Erro atualizando a sala", - "Double check that your server supports the room version chosen and try again.": "Verifique mais uma ver se seu servidor suporta a versão de sala escolhida e tente novamente.", + "Double check that your server supports the room version chosen and try again.": "Verifique se seu servidor suporta a versão de sala escolhida e tente novamente.", "Changes the avatar of the current room": "Altera a foto da sala atual", "Changes your avatar in this current room only": "Altera a sua foto de perfil apenas nesta sala", "Changes your avatar in all rooms": "Altera a sua foto de perfil em todas as salas", @@ -1201,12 +1201,12 @@ "Please supply a widget URL or embed code": "Forneça o link de um widget ou de um código de incorporação", "Please supply a https:// or http:// widget URL": "Forneça o link de um widget com https:// ou http://", "You cannot modify widgets in this room.": "Você não pode modificar widgets nesta sala.", - "Verifies a user, session, and pubkey tuple": "Verifica um(a) usuário(a), e a tupla de chave pública", + "Verifies a user, session, and pubkey tuple": "Confirma um usuário, sessão, e chave criptografada pública", "Unknown (user, session) pair:": "Par (usuária(o), sessão) desconhecido:", - "Session already verified!": "Sessão já verificada!", - "WARNING: Session already verified, but keys do NOT MATCH!": "ATENÇÃO: Sessão já verificada, mas as chaves NÃO SE CORRESPONDEM!", - "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and session %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "ATENÇÃO: A VERIFICAÇÃO DA CHAVE FALHOU! A chave de assinatura para %(userId)s e sessão %(deviceId)s é \"%(fprint)s\", o que não corresponde à chave fornecida \"%(fingerprint)s\". Isso pode significar que suas comunicações estejam sendo interceptadas por terceiros!", - "The signing key you provided matches the signing key you received from %(userId)s's session %(deviceId)s. Session marked as verified.": "A chave de assinatura que você forneceu corresponde à chave de assinatura que você recebeu da sessão %(deviceId)s da(do) usuária(o) %(userId)s. Esta sessão foi marcada como verificada.", + "Session already verified!": "Sessão já confirmada!", + "WARNING: Session already verified, but keys do NOT MATCH!": "ATENÇÃO: Sessão já confirmada, mas as chaves NÃO SÃO IGUAIS!", + "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and session %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "ATENÇÃO: A CONFIRMAÇÃO DA CHAVE FALHOU! A chave de assinatura para %(userId)s e sessão %(deviceId)s é \"%(fprint)s\", o que não corresponde à chave fornecida \"%(fingerprint)s\". Isso pode significar que suas comunicações estejam sendo interceptadas por terceiros!", + "The signing key you provided matches the signing key you received from %(userId)s's session %(deviceId)s. Session marked as verified.": "A chave de assinatura que você forneceu corresponde à chave de assinatura que você recebeu da sessão %(deviceId)s do usuário %(userId)s. Esta sessão foi marcada como confirmada.", "Sends the given message coloured as a rainbow": "Envia a mensagem colorida como arco-íris", "Sends the given emote coloured as a rainbow": "Envia o emoji colorido como um arco-íris", "Displays list of commands with usages and descriptions": "Exibe a lista de comandos com usos e descrições", @@ -1247,22 +1247,22 @@ "%(senderName)s updated a ban rule that was matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s alterou uma regra que bania o que correspondia a %(oldGlob)s para corresponder a %(newGlob)s devido à %(reason)s", "Light": "Claro", "Dark": "Escuro", - "You signed in to a new session without verifying it:": "Você entrou em uma nova sessão sem verificá-la:", - "Verify your other session using one of the options below.": "Verifique suas outras sessões usando uma das opções abaixo.", - "%(name)s (%(userId)s) signed in to a new session without verifying it:": "%(name)s (%(userId)s) entrou em uma nova sessão sem verificá-la:", - "Ask this user to verify their session, or manually verify it below.": "Peça a este usuário para verificar a sessão, ou verifique manualmente abaixo.", + "You signed in to a new session without verifying it:": "Você entrou em uma nova sessão sem confirmá-la:", + "Verify your other session using one of the options below.": "Confirme suas outras sessões usando uma das opções abaixo.", + "%(name)s (%(userId)s) signed in to a new session without verifying it:": "%(name)s (%(userId)s) entrou em uma nova sessão sem confirmá-la:", + "Ask this user to verify their session, or manually verify it below.": "Peça a este usuário para confirmar a sessão dele, ou confirme-a manualmente abaixo.", "Not Trusted": "Não confiável", - "Manually Verify by Text": "Verifique manualmente por texto", - "Interactively verify by Emoji": "Verifiquem interativamente por emojis", - "Done": "Pronto", + "Manually Verify by Text": "Confirme manualmente por texto", + "Interactively verify by Emoji": "Confirme interativamente por emojis", + "Done": "Fechar", "Cannot reach homeserver": "Não consigo acessar o servidor", "Ensure you have a stable internet connection, or get in touch with the server admin": "Verifique se está com uma conexão de internet estável, ou entre em contato com os administradores do servidor", "Your %(brand)s is misconfigured": "O %(brand)s está mal configurado", "Ask your %(brand)s admin to check your config for incorrect or duplicate entries.": "Entre em contato com o administrador do %(brand)s para verificar se há entradas inválidas ou duplicadas nas suas configurações.", "Cannot reach identity server": "Não consigo acessar o servidor de identidade", - "You can register, but some features will be unavailable until the identity server is back online. If you keep seeing this warning, check your configuration or contact a server admin.": "Você pode se registrar, mas algumas funcionalidades não estarão disponíveis até que o servidor de identidade esteja de volta online. Se você continuar vendo este alerta, verifique sua configuração ou entre em contato com um dos administradores do servidor.", - "You can reset your password, but some features will be unavailable until the identity server is back online. If you keep seeing this warning, check your configuration or contact a server admin.": "Você pode trocar sua senha, mas algumas das funcionalidades não estarão mais disponíveis até que o servidor de identidade esteja de volta ao ar. Se você seguir vendo este alerta, verifique suas configurações ou entre em contato com um dos administradores do servidor.", - "You can log in, but some features will be unavailable until the identity server is back online. If you keep seeing this warning, check your configuration or contact a server admin.": "Você pode fazer login, mas algumas funcionalidades estarão indisponíveis até que o servidor de identidade estiver de volta. Se você continuar vendo este alerta, verifique suas configurações ou entre em contato com os administradores do servidor.", + "You can register, but some features will be unavailable until the identity server is back online. If you keep seeing this warning, check your configuration or contact a server admin.": "Você pode se registrar, mas alguns recursos não estarão disponíveis até que o servidor de identidade esteja no ar novamente. Se você continuar vendo este alerta, verifique sua configuração ou entre em contato com um dos administradores do servidor.", + "You can reset your password, but some features will be unavailable until the identity server is back online. If you keep seeing this warning, check your configuration or contact a server admin.": "Você pode trocar sua senha, mas alguns recursos não estarão disponíveis até que o servidor de identidade esteja no ar novamente. Se você seguir vendo este alerta, verifique suas configurações ou entre em contato com um dos administradores do servidor.", + "You can log in, but some features will be unavailable until the identity server is back online. If you keep seeing this warning, check your configuration or contact a server admin.": "Você pode fazer login, mas alguns recursos estarão indisponíveis até que o servidor de identidade estiver no ar novamente. Se você continuar vendo este alerta, verifique suas configurações ou entre em contato com os administradores do servidor.", "No homeserver URL provided": "Nenhum endereço fornecido do servidor local", "Unexpected error resolving homeserver configuration": "Erro inesperado buscando a configuração do servidor", "Unexpected error resolving identity server configuration": "Erro inesperado buscando a configuração do servidor de identidade", @@ -1287,7 +1287,7 @@ "Send anonymous usage data which helps us improve %(brand)s. This will use a cookie.": "Envie dados anônimos de uso que nos ajudam a melhorar o %(brand)s. Isso necessitará do uso de um cookie.", "I want to help": "Quero ajudar", "Review where you’re logged in": "Revisar onde você está logada(o)", - "Verify all your sessions to ensure your account & messages are safe": "Verifique todas as suas sessões para garantir que sua conta e mensagens estão seguras", + "Verify all your sessions to ensure your account & messages are safe": "Confirme todas as suas sessões para garantir que sua conta e mensagens estão seguras", "Review": "Revisar", "Later": "Mais tarde", "Your homeserver has exceeded its user limit.": "Seu servidor ultrapassou seu limite de usuárias(os).", @@ -1298,10 +1298,10 @@ "To return to your account in future you need to set a password": "Para retornar à sua conta no futuro, você precisa definir uma senha", "Set up encryption": "Configurar a criptografia", "Encryption upgrade available": "Atualização de criptografia disponível", - "Verify this session": "Verificar esta sessão", + "Verify this session": "Confirmar esta sessão", "Upgrade": "Atualizar", - "Verify": "Verificar", - "Verify yourself & others to keep your chats safe": "Verifique a sua conta e as dos seus contatos, para manter suas conversas seguras", + "Verify": "Confirmar", + "Verify yourself & others to keep your chats safe": "Confirme a sua conta e as dos seus contatos, para manter suas conversas seguras", "Other users may not trust it": "Outras(os) usuárias(os) podem não confiar nela", "New login. Was this you?": "Novo login. Foi você?", "Verify the new login accessing your account: %(name)s": "Verifique o novo login na sua conta: %(name)s", @@ -1336,8 +1336,8 @@ "Match system theme": "Se adaptar ao tema do sistema", "Use a system font": "Usar uma fonte do sistema", "System font name": "Nome da fonte do sistema", - "Never send encrypted messages to unverified sessions from this session": "Nunca envie mensagens criptografadas para sessões não verificadas desta sessão", - "Never send encrypted messages to unverified sessions in this room from this session": "Nunca envie mensagens criptografadas para sessões não verificadas nesta sala, desta sessão", + "Never send encrypted messages to unverified sessions from this session": "Nunca envie mensagens criptografadas a partir desta sessão para sessões não confirmadas", + "Never send encrypted messages to unverified sessions in this room from this session": "Nunca envie mensagens criptografadas a partir desta sessão para sessões não confirmadas nessa sala", "Order rooms by name": "Ordenar salas por nome", "Show rooms with unread notifications first": "Mostrar primeiro as salas com notificações não lidas", "Show shortcuts to recently viewed rooms above the room list": "Mostrar atalhos para salas recentemente visualizadas acima da lista de salas", @@ -1358,7 +1358,7 @@ "Incoming voice call": "Recebendo chamada de voz", "Incoming video call": "Recebendo chamada de vídeo", "Incoming call": "Recebendo chamada", - "Verify this session by completing one of the following:": "Verifique esta sessão completando um dos seguintes:", + "Verify this session by completing one of the following:": "Confirme esta sessão completando um dos seguintes:", "Scan this unique code": "Escaneie este código único", "or": "ou", "Compare unique emoji": "Comparar emojis únicos", @@ -1366,9 +1366,9 @@ "Start": "Iniciar", "Confirm the emoji below are displayed on both sessions, in the same order:": "Confirme que os emojis abaixo estão sendo exibidos nas duas sessões, na mesma ordem:", "Verify this session by confirming the following number appears on its screen.": "Verifique esta sessão confirmando que o seguinte número aparece na sua tela.", - "Waiting for your other session, %(deviceName)s (%(deviceId)s), to verify…": "Aguardando a outra sessão, %(deviceName)s (%(deviceId)s), verificar…", - "Waiting for your other session to verify…": "Aguardando a outra sessão verificar…", - "Waiting for %(displayName)s to verify…": "Aguardando %(displayName)s verificar…", + "Waiting for your other session, %(deviceName)s (%(deviceId)s), to verify…": "Aguardando a outra sessão, %(deviceName)s (%(deviceId)s), confirmar…", + "Waiting for your other session to verify…": "Aguardando a outra sessão confirmar…", + "Waiting for %(displayName)s to verify…": "Aguardando %(displayName)s confirmar…", "Cancelling…": "Cancelando…", "They match": "São coincidentes", "They don't match": "Elas não são correspondentes", @@ -1405,7 +1405,7 @@ "Session backup key:": "Chave de cópia (backup) da sessão:", "Secret storage public key:": "Chave pública do armazenamento secreto:", "in account data": "nos dados de conta", - "Homeserver feature support:": "Funcionalidades suportadas pelo servidor:", + "Homeserver feature support:": "Recursos suportados pelo servidor:", "exists": "existe", "Your homeserver does not support session management.": "Seu servidor não suporta gerenciamento de sessões.", "Unable to load session list": "Não foi possível carregar a lista de sessões", @@ -1420,7 +1420,7 @@ "Delete %(count)s sessions|one": "Apagar %(count)s sessão", "ID": "ID", "Public Name": "Nome público", - "Individually verify each session used by a user to mark it as trusted, not trusting cross-signed devices.": "Verificar individualmente cada sessão usada por um usuário para marcá-la como confiável, em vez de confiar em aparelhos autoverificados.", + "Individually verify each session used by a user to mark it as trusted, not trusting cross-signed devices.": "Verifique individualmente cada sessão usada por um usuário para marcá-la como confiável, em vez de confirmar em aparelhos autoverificados.", "Securely cache encrypted messages locally for them to appear in search results, using ": "Armazene mensagens criptografadas localmente para que elas apareçam nas buscas, usando· ", " to store messages from ": " para armazenar mensagens de ", "rooms.": "salas.", @@ -1439,14 +1439,14 @@ "not stored": "não armazenado", "Backup has a valid signature from this user": "A cópia de segurança (backup) tem uma assinatura válida deste(a) usuário(a)", "Backup has a invalid signature from this user": "A cópia de segurança (backup) tem uma assinatura inválida deste(a) usuário(a)", - "Backup has a signature from unknown user with ID %(deviceId)s": "A cópia de segurança tem uma assinatura de um(a) usuário desconhecido com ID %(deviceId)s", + "Backup has a signature from unknown user with ID %(deviceId)s": "A cópia de segurança tem uma assinatura de um usuário desconhecido com ID %(deviceId)s", "Backup has a signature from unknown session with ID %(deviceId)s": "A cópia de segurança tem uma assinatura de uma sessão desconhecida com ID %(deviceId)s", "Backup has a valid signature from this session": "A cópia de segurança (backup) tem uma assinatura válida desta sessão", "Backup has an invalid signature from this session": "A cópia de segurança (backup) tem uma assinatura inválida desta sessão", - "Backup has a valid signature from verified session ": "A cópia de segurança (backup) tem uma assinatura válida da sessão verificada ", - "Backup has a valid signature from unverified session ": "A cópia de segurança tem uma assinatura válida de uma sessão não verificada ", - "Backup has an invalid signature from verified session ": "A cópia de segurança tem uma assinatura inválida de uma sessão verificada ", - "Backup has an invalid signature from unverified session ": "A cópia de segurança (backup) tem uma assinatura inválida de uma sessão não verificada ", + "Backup has a valid signature from verified session ": "A cópia de segurança (backup) tem uma assinatura válida da sessão confirmada ", + "Backup has a valid signature from unverified session ": "A cópia de segurança tem uma assinatura válida de uma sessão não confirmada ", + "Backup has an invalid signature from verified session ": "A cópia de segurança tem uma assinatura inválida de uma sessão confirmada ", + "Backup has an invalid signature from unverified session ": "A cópia de segurança (backup) tem uma assinatura inválida de uma sessão não confirmada ", "Backup is not signed by any of your sessions": "A cópia de segurança (backup) não foi assinada por nenhuma de suas sessões", "This backup is trusted because it has been restored on this session": "Esta cópia de segurança (backup) é confiável, pois foi restaurada nesta sessão", "Backup key stored: ": "Chave de segurança (backup) armazenada: ", @@ -1464,15 +1464,15 @@ "Encryption": "Criptografia", "Once enabled, encryption cannot be disabled.": "Uma vez ativada, a criptografia não poderá ser desativada.", "Encrypted": "Criptografada", - "Click the link in the email you received to verify and then click continue again.": "Clique no link no e-mail que você recebeu para verificar e então clique novamente em continuar.", + "Click the link in the email you received to verify and then click continue again.": "Clique no link no e-mail que você recebeu para confirmar e então clique novamente em continuar.", "Verify the link in your inbox": "Verifique o link na sua caixa de e-mails", "This room is end-to-end encrypted": "Esta sala é criptografada de ponta a ponta", - "Your key share request has been sent - please check your other sessions for key share requests.": "Sua solicitação de compartilhamento de chaves foi enviada - por favor, verifique a existência de solicitações de compartilhamento de chaves em suas outras sessões .", + "Your key share request has been sent - please check your other sessions for key share requests.": "Sua solicitação de compartilhamento de chaves foi enviada - por favor, confirme a existência de solicitações de compartilhamento de chaves em suas outras sessões.", "Key share requests are sent to your other sessions automatically. If you rejected or dismissed the key share request on your other sessions, click here to request the keys for this session again.": "Solicitações de compartilhamento de chaves são enviadas para suas outras sessões automaticamente. Se você recusou ou ignorou a solicitação de compartilhamento de chaves em suas outras sessões, clique aqui para solicitar as chaves para esta sessão novamente.", "If your other sessions do not have the key for this message you will not be able to decrypt them.": "Se suas outras sessões não possuem a chave para esta mensagem, você não será capaz de descriptografá-la.", "Re-request encryption keys from your other sessions.": "Solicitar novamente as chaves de criptografia das suas outras sessões.", "This message cannot be decrypted": "Esta mensagem não pode ser descriptografada", - "Encrypted by an unverified session": "Criptografada por uma sessão não verificada", + "Encrypted by an unverified session": "Criptografada por uma sessão não confirmada", "Unencrypted": "Descriptografada", "Encrypted by a deleted session": "Criptografada por uma sessão já apagada", "The authenticity of this encrypted message can't be guaranteed on this device.": "A autenticidade desta mensagem criptografada não pode ser garantida neste aparelho.", @@ -1484,29 +1484,29 @@ "Messages in this room are secured with end-to-end encryption. Only you and the recipient(s) have the keys to read these messages.": "As mensagens nesta sala estão protegidas com a criptografia de ponta a ponta. Apenas você e a(s) demais pessoa(s) desta sala têm a chave para ler estas mensagens.", "Upgrading this room will shut down the current instance of the room and create an upgraded room with the same name.": "Atualizar esta sala irá fechar a instância atual da sala e criar uma sala atualizada com o mesmo nome.", "Hint: Begin your message with // to start it with a slash.": "Dica: Inicie sua mensagem com // para iniciar com uma barra.", - "Start Verification": "Iniciar verificação", + "Start Verification": "Iniciar confirmação", "Messages in this room are end-to-end encrypted.": "As mensagens nesta sala estão criptografadas de ponta a ponta.", "Messages in this room are not end-to-end encrypted.": "As mensagens nesta sala não estão criptografadas de ponta a ponta.", "In encrypted rooms, your messages are secured and only you and the recipient have the unique keys to unlock them.": "Em salas criptografadas, suas mensagens estão seguras e apenas você e a pessoa que a recebe têm as chaves únicas que permitem a sua leitura.", - "Verify User": "Verificar usuária(o)", - "For extra security, verify this user by checking a one-time code on both of your devices.": "Para maior segurança, verifique esta(e) usuária(o) verificando um código único em ambos aparelhos.", + "Verify User": "Confirmar usuário", + "For extra security, verify this user by checking a one-time code on both of your devices.": "Para maior segurança, confirme este usuário comparando um código único em ambos os aparelhos.", "You are about to remove %(count)s messages by %(user)s. This cannot be undone. Do you wish to continue?|other": "Você apagará para todos as %(count)s mensagens de %(user)s na sala. Isso não pode ser desfeito. Deseja continuar?", "You are about to remove %(count)s messages by %(user)s. This cannot be undone. Do you wish to continue?|one": "Você está a ponto de remover 1 mensagem de %(user)s. Isso não poderá ser desfeito. Quer continuar?", "This client does not support end-to-end encryption.": "A sua versão do aplicativo não suporta a criptografia de ponta a ponta.", - "The session you are trying to verify doesn't support scanning a QR code or emoji verification, which is what %(brand)s supports. Try with a different client.": "A sessão que você deseja verificar não é compatível com o escaneamento de código QR ou a verificação via emojis do %(brand)s. Tente verificar a partir de outro aplicativo do Element.", - "Verify by scanning": "Verificar através de QR Code", - "If you can't scan the code above, verify by comparing unique emoji.": "Se você não consegue escanear o código acima, verifique comparando os emojis únicos.", - "Verify by comparing unique emoji.": "Verificar comparando emoji único.", - "Verify by emoji": "Verificar por emoji", - "Verify all users in a room to ensure it's secure.": "Verificar todas(os) as(os) usuárias(os) em uma sala para se certificar que ela é segura.", - "In encrypted rooms, verify all users to ensure it’s secure.": "Em salas criptografadas, verificar todas(os) as(os) usuárias(os) para garantir que elas são seguras.", - "Start verification again from the notification.": "Iniciar verificação novamente, após a notificação.", - "Start verification again from their profile.": "Iniciar a verificação novamente a partir do perfil deste usuário.", + "The session you are trying to verify doesn't support scanning a QR code or emoji verification, which is what %(brand)s supports. Try with a different client.": "A sessão que você deseja confirmar não é compatível com o escaneamento de código QR ou a confirmação via emojis do %(brand)s. Tente confirmar a partir de outro aplicativo do Element.", + "Verify by scanning": "Confirmar através de QR Code", + "If you can't scan the code above, verify by comparing unique emoji.": "Se você não consegue escanear o código acima, confirme comparando emojis únicos.", + "Verify by comparing unique emoji.": "Confirmar comparando emojis únicos.", + "Verify by emoji": "Confirmar por emojis", + "Verify all users in a room to ensure it's secure.": "Verifique todos os usuários em uma sala para se certificar de que ela está segura.", + "In encrypted rooms, verify all users to ensure it’s secure.": "Em salas criptografadas, verifique todos os usuários para garantir que a sala está segura.", + "Start verification again from the notification.": "Iniciar a confirmação novamente, após a notificação.", + "Start verification again from their profile.": "Iniciar a confirmação novamente, a partir do perfil deste usuário.", "Encryption enabled": "Criptografia ativada", - "Messages in this room are end-to-end encrypted. Learn more & verify this user in their user profile.": "As mensagens nesta sala estão criptografadas de ponta a ponta. Lembre-se de verificar este usuário no perfil dele/dela.", + "Messages in this room are end-to-end encrypted. Learn more & verify this user in their user profile.": "As mensagens nesta sala estão criptografadas de ponta a ponta. Lembre-se de confirmar este usuário no perfil dele/dela.", "Encryption not enabled": "Criptografia desativada", "The encryption used by this room isn't supported.": "A criptografia usada nesta sala não é suportada.", - "%(name)s wants to verify": "%(name)s deseja verificar", + "%(name)s wants to verify": "%(name)s solicita confirmação", "Smileys & People": "Sorrisos e pessoas", "Widgets do not use message encryption.": "Widgets não usam criptografia de mensagens.", "Please create a new issue on GitHub so that we can investigate this bug.": "Por favor, crie um novo bilhete de erro no GitHub para que possamos investigar esta falha.", @@ -1520,9 +1520,9 @@ "Create a private room": "Criar uma sala privada", "Block users on other matrix homeservers from joining this room (This setting cannot be changed later!)": "Impedir usuários de outros servidores na rede Matrix de entrarem nesta sala (Essa configuração não pode ser alterada posteriormente!)", "You've previously used a newer version of %(brand)s with this session. To use this version again with end to end encryption, you will need to sign out and back in again.": "Você já usou uma versão mais recente do %(brand)s nesta sessão. Para usar esta versão novamente com a criptografia de ponta a ponta, você terá que se desconectar e entrar novamente.", - "Verify this user to mark them as trusted. Trusting users gives you extra peace of mind when using end-to-end encrypted messages.": "Verifique este usuário para torná-lo confiável. Confiar nos usuários fornece segurança adicional ao trocar mensagens criptografadas de ponta a ponta.", - "Verify this device to mark it as trusted. Trusting this device gives you and other users extra peace of mind when using end-to-end encrypted messages.": "Verifique este aparelho para torná-lo confiável. Confiar neste aparelho fornecerá segurança adicional para você e aos outros ao trocarem mensagens criptografadas de ponta a ponta.", - "We couldn't create your DM. Please check the users you want to invite and try again.": "Não conseguimos criar sua mensagem direta. Por favor, verifique as(os) usuárias(os) que você quer convidar e tente novamente.", + "Verify this user to mark them as trusted. Trusting users gives you extra peace of mind when using end-to-end encrypted messages.": "Confirme este usuário para torná-lo confiável. Confiar nos usuários fornece segurança adicional ao trocar mensagens criptografadas de ponta a ponta.", + "Verify this device to mark it as trusted. Trusting this device gives you and other users extra peace of mind when using end-to-end encrypted messages.": "Confirme este aparelho para torná-lo confiável. Confiar neste aparelho fornecerá segurança adicional para você e aos outros ao trocarem mensagens criptografadas de ponta a ponta.", + "We couldn't create your DM. Please check the users you want to invite and try again.": "Não conseguimos criar sua mensagem direta. Por favor, verifique os usuários que você deseja convidar e tente novamente.", "Start a conversation with someone using their name, username (like ) or email address.": "Comece uma conversa com alguém usando o seu respectivo nome e sobrenome, nome de usuário (por exemplo: ) ou endereço de e-mail.", "a new master key signature": "uma nova chave mestra de assinatura", "a new cross-signing key signature": "uma nova chave de autoverificação", @@ -1530,9 +1530,9 @@ "I don't want my encrypted messages": "Não quero minhas mensagens criptografadas", "You'll lose access to your encrypted messages": "Você perderá acesso às suas mensagens criptografadas", "Session key": "Chave da sessão", - "Verify session": "Verificar sessão", + "Verify session": "Confirmar sessão", "We recommend you change your password and recovery key in Settings immediately": "Nós recomendamos que você altere imediatamente sua senha e chave de recuperação nas Configurações", - "Use this session to verify your new one, granting it access to encrypted messages:": "Use esta sessão para verificar a sua nova sessão, dando a ela acesso às mensagens criptografadas:", + "Use this session to verify your new one, granting it access to encrypted messages:": "Use esta sessão para confirmar a sua nova sessão, dando a ela acesso às mensagens criptografadas:", "You’re already signed in and good to go here, but you can also grab the latest versions of the app on all platforms at element.io/get-started.": "Você já está logada(o) e pode começar a usar à vontade, mas você também pode buscar pelas últimas versões do app em todas as plataformas em element.io/get-started.", "Go to Element": "Ir a Element", "We’re excited to announce Riot is now Element!": "Estamos muito felizes de anunciar que agora Riot é Element!", @@ -1541,18 +1541,18 @@ "Reporting this message will send its unique 'event ID' to the administrator of your homeserver. If messages in this room are encrypted, your homeserver administrator will not be able to read the message text or view any files or images.": "Reportar esta mensagem enviará o seu 'event ID' único para o/a administrador/a do seu Homeserver. Se as mensagens nesta sala são criptografadas, o/a administrador/a não conseguirá ler o texto da mensagem nem ver nenhuma imagem ou arquivo.", "Sign out and remove encryption keys?": "Fazer logout e remover as chaves de criptografia?", "Some session data, including encrypted message keys, is missing. Sign out and sign in to fix this, restoring keys from backup.": "Alguns dados de sessão, incluindo chaves de mensagens criptografadas, estão faltando. Faça logout e entre novamente para resolver isso, restaurando as chaves do backup.", - "Verify other session": "Verificar outra sessão", - "A widget would like to verify your identity": "Um Widget quer verificar sua identidade", - "A widget located at %(widgetUrl)s would like to verify your identity. By allowing this, the widget will be able to verify your user ID, but not perform actions as you.": "Um widget localizado em %(widgetUrl)s deseja verificar sua identidade. Permitindo isso, o widget poderá verificar sua ID de usuário, mas não poderá realizar nenhuma ação em seu nome.", + "Verify other session": "Confirmar outra sessão", + "A widget would like to verify your identity": "Um widget deseja confirmar sua identidade", + "A widget located at %(widgetUrl)s would like to verify your identity. By allowing this, the widget will be able to verify your user ID, but not perform actions as you.": "Um widget localizado em %(widgetUrl)s deseja confirmar sua identidade. Permitindo isso, o widget poderá verificar sua ID de usuário, mas não poderá realizar nenhuma ação em seu nome.", "Wrong Recovery Key": "Chave de recuperação errada", "Invalid Recovery Key": "Chave de recuperação inválida", - "Unable to access secret storage. Please verify that you entered the correct recovery passphrase.": "Não foi possível acessar o armazenamento secreto. Por favor, verifique que você entrou com a frase de recuperação correta.", + "Unable to access secret storage. Please verify that you entered the correct recovery passphrase.": "Não foi possível acessar o armazenamento secreto. Por favor, verifique que você digitou a frase de recuperação correta.", "Enter your Security Phrase or to continue.": "Entre com sua Frase de Segurança ou para continuar.", "Security Key": "Chave de Segurança", "Use your Security Key to continue.": "Use sua Chave de Segurança para continuar.", "Recovery key mismatch": "Chave de recuperação incorreta", - "Backup could not be decrypted with this recovery key: please verify that you entered the correct recovery key.": "O backup não pôde ser descriptografado com esta chave de recuperação: por favor, verifique se você entrou com a chave de recuperação correta.", - "Backup could not be decrypted with this recovery passphrase: please verify that you entered the correct recovery passphrase.": "O backup não pôde ser descriptografado com esta frase de recuperação: por favor, verifique se você entrou com a frase de recuperação correta.", + "Backup could not be decrypted with this recovery key: please verify that you entered the correct recovery key.": "O backup não pôde ser descriptografado com esta chave de recuperação: por favor, verifique se você digitou a chave de recuperação correta.", + "Backup could not be decrypted with this recovery passphrase: please verify that you entered the correct recovery passphrase.": "O backup não pôde ser descriptografado com esta frase de recuperação: por favor, verifique se você digitou a frase de recuperação correta.", "Warning: you should only set up key backup from a trusted computer.": "Atenção: você só deve configurar a cópia de segurança (backup) das chaves em um computador de sua confiança.", "Enter recovery key": "Digite a chave de recuperação", "Warning: You should only set up key backup from a trusted computer.": "Atenção: Você só deve configurar a cópia de segurança (backup) das chaves em um computador de sua confiança.", @@ -1570,14 +1570,14 @@ "Data from an older version of %(brand)s has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Detectamos uma versão mais antiga do %(brand)s. Isso fará com que a criptografia de ponta a ponta não funcione corretamente. As mensagens criptografadas de ponta a ponta trocadas recentemente, enquanto você usava a versão mais antiga, talvez não sejam descriptografáveis na nova versão. Isso também poderá fazer com que as mensagens trocadas nesta sessão falhem na mais atual. Se você tiver problemas, desconecte-se e entre novamente. Para manter o histórico de mensagens, exporte e reimporte suas chaves.", "%(creator)s created and configured the room.": "%(creator)s criou e configurou esta sala.", "If you can't find the room you're looking for, ask for an invite or Create a new room.": "Se você não conseguir encontrar a sala que está procurando, peça um convite para a sala ou Crie uma nova sala.", - "Verify this login": "Verificar este login", + "Verify this login": "Confirmar este login", "Changing your password will reset any end-to-end encryption keys on all of your sessions, making encrypted chat history unreadable. Set up Key Backup or export your room keys from another session before resetting your password.": "Alterar a sua senha redefinirá todas as chaves de criptografia de ponta a ponta existentes em todas as suas sessões, tornando o histórico de mensagens criptografadas ilegível. Faça uma cópia (backup) das suas chaves, ou exporte as chaves de outra sessão antes de alterar a sua senha.", "Create account": "Criar conta", "Create your account": "Criar sua conta", "Use Recovery Key or Passphrase": "Use a chave de recuperação, ou a frase de recuperação", "Use Recovery Key": "Usar a chave de recuperação", - "Confirm your identity by verifying this login from one of your other sessions, granting it access to encrypted messages.": "Confirme sua identidade através da verificação deste login em qualquer uma de suas outras sessões, garantindo a elas acesso a mensagens criptografadas.", - "Your new session is now verified. It has access to your encrypted messages, and other users will see it as trusted.": "Sua nova sessão está agora verificada. Ela tem acesso às suas mensagens criptografadas, e outras(os) usuárias(os) poderão ver esta sessão como confiável.", + "Confirm your identity by verifying this login from one of your other sessions, granting it access to encrypted messages.": "Confirme sua identidade através da confirmação deste login em qualquer uma de suas outras sessões, garantindo a elas acesso a mensagens criptografadas.", + "Your new session is now verified. It has access to your encrypted messages, and other users will see it as trusted.": "Sua nova sessão está agora confirmada. Ela tem acesso às suas mensagens criptografadas, e outros usuários poderão ver esta sessão como confiável.", "Without completing security on this session, it won’t have access to encrypted messages.": "Sem completar os procedimentos de segurança nesta sessão, você não terá acesso a mensagens criptografadas.", "Regain access to your account and recover encryption keys stored in this session. Without them, you won’t be able to read all of your secure messages in any session.": "Recupere acesso à sua conta e restaure as chaves de criptografia armazenadas nesta sessão. Sem elas, você não conseguirá ler todas as suas mensagens seguras em nenhuma sessão.", "Warning: Your personal data (including encryption keys) is still stored in this session. Clear it if you're finished using this session, or want to sign in to another account.": "Atenção: Seus dados pessoais (incluindo chaves de criptografia) ainda estão armazenados nesta sessão. Apague-os quando tiver finalizado esta sessão, ou se quer entrar com outra conta.", @@ -1588,7 +1588,7 @@ "We’ll generate a Security Key for you to store somewhere safe, like a password manager or a safe.": "Nós geramos uma Chave de Segurança para você. Por favor, guarde-a em um lugar seguro, como um gerenciador de senhas ou um cofre.", "Use a secret phrase only you know, and optionally save a Security Key to use for backup.": "Use uma frase secreta que apenas você conhece, e opcionalmente salve uma Chave de Segurança para usar como cópia de segurança (backup).", "Restore your key backup to upgrade your encryption": "Restaurar a sua cópia segura (backup) de chaves para atualizar a sua criptografia", - "Upgrade this session to allow it to verify other sessions, granting them access to encrypted messages and marking them as trusted for other users.": "Atualize esta sessão para permitir que ela verifique outras sessões, dando a elas acesso às mensagens criptografadas e marcando-as como confiáveis para as(os) demais usuárias(os).", + "Upgrade this session to allow it to verify other sessions, granting them access to encrypted messages and marking them as trusted for other users.": "Atualize esta sessão para permitir que ela confirme outras sessões, dando a elas acesso às mensagens criptografadas e marcando-as como confiáveis para os seus contatos.", "Store your Security Key somewhere safe, like a password manager or a safe, as it’s used to safeguard your encrypted data.": "Guarde sua Chave de Segurança em algum lugar seguro, como por exemplo um gestor de senhas ou um cofre, já que esta chave é a proteção para seus dados criptografados.", "If you cancel now, you may lose encrypted messages & data if you lose access to your logins.": "Se você cancelar agora, poderá perder mensagens e dados criptografados se você perder acesso aos seus logins atuais.", "Upgrade your encryption": "Atualizar sua criptografia", @@ -1620,7 +1620,7 @@ "Leave Room": "Sair da sala", "Forget Room": "Esquecer Sala", "Favourited": "Favoritado", - "You cancelled verifying %(name)s": "Você cancelou a verificação do %(name)s", + "You cancelled verifying %(name)s": "Você cancelou a confirmação de %(name)s", "You accepted": "Você aceitou", "%(name)s accepted": "%(name)s aceitou", "You declined": "Você recusou", @@ -1629,7 +1629,7 @@ "%(name)s cancelled": "%(name)s cancelou", "Accepting …": "Aceitando…", "Declining …": "Recusando…", - "You sent a verification request": "Você enviou uma solicitação de verificação", + "You sent a verification request": "Você enviou uma solicitação de confirmação", "Show all": "Mostrar tudo", "Reactions": "Reações", " reacted with %(content)s": " reagiu com %(content)s", @@ -1697,7 +1697,7 @@ "Confirm account deactivation": "Confirmar desativação da conta", "Server did not return valid authentication information.": "O servidor não retornou informações de autenticação válidas.", "View Servers in Room": "Ver Servidores na Sala", - "Verification Requests": "Solicitações de verificação", + "Verification Requests": "Solicitações de confirmação", "Integrations are disabled": "As integrações estão desativadas", "Integrations not allowed": "As integrações não estão permitidas", "End": "Fim", @@ -1724,7 +1724,7 @@ "Other published addresses:": "Outros endereços publicados:", "New published address (e.g. #alias:server)": "Novo endereço publicado (por exemplo, #apelido:server)", "Local Addresses": "Endereços locais", - "%(name)s cancelled verifying": "%(name)s cancelou a verificação", + "%(name)s cancelled verifying": "%(name)s cancelou a confirmação", "Your display name": "Seu nome e sobrenome", "Your avatar URL": "Link da sua foto de perfil", "Your user ID": "Sua ID de usuário", @@ -1747,8 +1747,8 @@ "Topic (optional)": "Descrição (opcional)", "There was a problem communicating with the server. Please try again.": "Ocorreu um problema na comunicação com o servidor. Por favor, tente novamente.", "Server did not require any authentication": "O servidor não exigiu autenticação", - "Verifying this user will mark their session as trusted, and also mark your session as trusted to them.": "Se você verificar esse usuário, a sessão será marcada como confiável para você e para ele.", - "Verifying this device will mark it as trusted, and users who have verified with you will trust this device.": "Verificar este aparelho o marcará como confiável, e os usuários que confirmaram com você também confiarão neste aparelho.", + "Verifying this user will mark their session as trusted, and also mark your session as trusted to them.": "Se você confirmar esse usuário, a sessão será marcada como confiável para você e para ele.", + "Verifying this device will mark it as trusted, and users who have verified with you will trust this device.": "Confirmar este aparelho o marcará como confiável para você e para os usuários que se confirmaram com você.", "Keep going...": "Continue...", "The username field must not be blank.": "O campo do nome de usuário não pode ficar em branco.", "Username": "Nome de usuário", @@ -1867,9 +1867,9 @@ "Securely back up your keys to avoid losing them. Learn more.": "Faça backup de suas chaves com segurança para evitar perdê-las. Saiba mais.", "Not now": "Agora não", "Don't ask me again": "Não pergunte novamente", - "Appearance": "Mostrar", - "Show rooms with unread messages first": "Salas não lidas primeiro", - "Show previews of messages": "Pré-visualizações de mensagens", + "Appearance": "Aparência", + "Show rooms with unread messages first": "Mostrar salas não lidas em primeiro", + "Show previews of messages": "Mostrar pré-visualizações de mensagens", "Sort by": "Ordenar por", "Activity": "Atividade recente", "A-Z": "A-Z", @@ -1954,20 +1954,20 @@ "Ban users": "Banir usuários", "Remove messages": "Apagar mensagens dos outros", "Notify everyone": "Notificar todos", - "Your email address hasn't been verified yet": "Seu endereço de e-mail ainda não foi verificado", + "Your email address hasn't been verified yet": "Seu endereço de e-mail ainda não foi confirmado", "Revoke": "Revogar", "Share": "Compartilhar", "Unable to revoke sharing for phone number": "Não foi possível revogar o compartilhamento do número de celular", "Unable to share phone number": "Não foi possível compartilhar o número de celular", - "Please enter verification code sent via text.": "Digite o código de verificação enviado por mensagem de texto.", + "Please enter verification code sent via text.": "Digite o código de confirmação enviado por mensagem de texto.", "Remove %(email)s?": "Remover %(email)s?", "Remove %(phone)s?": "Remover %(phone)s?", - "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains.": "Digite o código de verificação enviado por mensagem de texto para +%(msisdn)s.", - "This user has not verified all of their sessions.": "Este usuário não verificou todas as próprias sessões.", - "You have not verified this user.": "Você não verificou este usuário.", - "You have verified this user. This user has verified all of their sessions.": "Você confirmou este usuário. Este usuário verificou todas as próprias sessões.", + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains.": "Digite o código de confirmação enviado por mensagem de texto para +%(msisdn)s.", + "This user has not verified all of their sessions.": "Este usuário não confirmou todas as próprias sessões.", + "You have not verified this user.": "Você não confirmou este usuário.", + "You have verified this user. This user has verified all of their sessions.": "Você confirmou este usuário. Este usuário confirmou todas as próprias sessões.", "Someone is using an unknown session": "Alguém está usando uma sessão desconhecida", - "Everyone in this room is verified": "Todos nesta sala estão verificados", + "Everyone in this room is verified": "Todos nesta sala estão confirmados", "Edit message": "Editar mensagem", "Mod": "Moderador", "Scroll to most recent messages": "Ir para as mensagens mais recentes", @@ -2003,9 +2003,9 @@ "Your homeserver": "Seu servidor local", "Trusted": "Confiável", "Not trusted": "Não confiável", - "%(count)s verified sessions|other": "%(count)s sessões verificadas", - "%(count)s verified sessions|one": "1 sessão verificada", - "Hide verified sessions": "Esconder sessões verificadas", + "%(count)s verified sessions|other": "%(count)s sessões confirmadas", + "%(count)s verified sessions|one": "1 sessão confirmada", + "Hide verified sessions": "Esconder sessões confirmadas", "%(count)s sessions|other": "%(count)s sessões", "%(count)s sessions|one": "%(count)s sessão", "Hide sessions": "Esconder sessões", @@ -2019,16 +2019,16 @@ "Deactivate user": "Desativar usuário", "Failed to deactivate user": "Falha ao desativar o usuário", "Security": "Segurança", - "You've successfully verified your device!": "Você verificou o seu aparelho com êxito!", - "Verification timed out.": "O tempo de verificação se esgotou.", - "You cancelled verification on your other session.": "Você cancelou a verificação em sua outra sessão.", - "%(displayName)s cancelled verification.": "%(displayName)s cancelou a verificação.", - "You cancelled verification.": "Você cancelou a verificação.", - "Verification cancelled": "Verificação cancelada", + "You've successfully verified your device!": "Você confirmou o seu aparelho com êxito!", + "Verification timed out.": "O tempo de confirmação se esgotou.", + "You cancelled verification on your other session.": "Você cancelou a confirmação em sua outra sessão.", + "%(displayName)s cancelled verification.": "%(displayName)s cancelou a confirmação.", + "You cancelled verification.": "Você cancelou a confirmação.", + "Verification cancelled": "Confirmação cancelada", "Compare emoji": "Compare os emojis", "Show image": "Mostrar imagem", "You have ignored this user, so their message is hidden. Show anyways.": "Você bloqueou este usuário, portanto, a mensagem dele foi escondida. Mostrar mesmo assim.", - "You verified %(name)s": "Você verificou %(name)s", + "You verified %(name)s": "Você confirmou %(name)s", "Use an identity server to invite by email. Use the default (%(defaultIdentityServerName)s) or manage in Settings.": "Use um servidor de identidade para convidar por e-mail. Use o padrão (%(defaultIdentityServerName)s) ou um servidor personalizado em Configurações.", "Use an identity server to invite by email. Manage in Settings.": "Use um servidor de identidade para convidar por e-mail. Gerencie o servidor em Configurações.", "Destroy cross-signing keys?": "Destruir chaves autoverificadas?", @@ -2076,7 +2076,7 @@ "Upload %(count)s other files|one": "Enviar %(count)s outros arquivos", "Cancel All": "Cancelar tudo", "Upload Error": "Erro no envio", - "Verification Request": "Solicitação de verificação", + "Verification Request": "Solicitação de confirmação", "Remember my selection for this widget": "Lembrar minha escolha para este widget", "Deny": "Rejeitar", "Wrong file type": "Tipo errado de arquivo", @@ -2125,7 +2125,7 @@ "Feedback": "Fale conosco", "User menu": "Menu do usuário", "Could not load user profile": "Não foi possível carregar o perfil do usuário", - "Session verified": "Sessão verificada", + "Session verified": "Sessão confirmada", "Your Matrix account on %(serverName)s": "Sua conta Matrix em %(serverName)s", "Your Matrix account on ": "Sua conta Matrix em ", "No identity server is configured: add one in server settings to reset your password.": "Nenhum servidor de identidade está configurado: adicione um nas configurações do servidor para redefinir sua senha.", @@ -2164,7 +2164,7 @@ "Unable to revoke sharing for email address": "Não foi possível revogar o compartilhamento do endereço de e-mail", "Unable to share email address": "Não foi possível compartilhar o endereço de e-mail", "Direct message": "Enviar mensagem", - "Incoming Verification Request": "Recebendo solicitação de verificação", + "Incoming Verification Request": "Recebendo solicitação de confirmação", "Recently Direct Messaged": "Conversas recentes", "Direct Messages": "Conversas", "Your account is not secure": "Sua conta não está segura", @@ -2209,7 +2209,7 @@ "Changes to who can read history will only apply to future messages in this room. The visibility of existing history will be unchanged.": "Alterações em quem pode ler o histórico de conversas aplica-se apenas para mensagens futuras nesta sala. A visibilidade do histórico existente não será alterada.", "Ask %(displayName)s to scan your code:": "Peça para %(displayName)s escanear o seu código:", "Almost there! Is %(displayName)s showing the same shield?": "Quase lá! Este escudo também aparece para %(displayName)s?", - "You've successfully verified %(displayName)s!": "Você verificou %(displayName)s com sucesso!", + "You've successfully verified %(displayName)s!": "Você confirmou %(displayName)s com sucesso!", "Confirm this user's session by comparing the following with their User Settings:": "Confirme a sessão deste usuário comparando o seguinte com as configurações deste usuário:", "Report Content to Your Homeserver Administrator": "Denunciar conteúdo ao administrador do seu servidor principal", "Cross-signing": "Autoverificação", @@ -2217,7 +2217,7 @@ "Error updating flair": "Falha ao atualizar o ícone", "There was an error updating the flair for this room. The server may not allow it or a temporary error occurred.": "Ocorreu um erro ao atualizar o ícone nesta sala. O servidor pode não permitir ou ocorreu um erro temporário.", "Deactivating this user will log them out and prevent them from logging back in. Additionally, they will leave all the rooms they are in. This action cannot be reversed. Are you sure you want to deactivate this user?": "Desativar este usuário irá desconectá-lo e impedi-lo de fazer o login novamente. Além disso, ele sairá de todas as salas em que estiver. Esta ação não pode ser revertida. Tem certeza de que deseja desativar este usuário?", - "Deleting cross-signing keys is permanent. Anyone you have verified with will see security alerts. You almost certainly don't want to do this, unless you've lost every device you can cross-sign from.": "Apagar chaves de autoverificação é permanente. Qualquer pessoa com quem você fez a verificação receberá alertas de segurança. Não é aconselhável fazer isso, a menos que você tenha perdido todos os aparelhos nos quais fez a autoverificação.", + "Deleting cross-signing keys is permanent. Anyone you have verified with will see security alerts. You almost certainly don't want to do this, unless you've lost every device you can cross-sign from.": "Apagar chaves de autoverificação é permanente. Qualquer pessoa com quem você se confirmou receberá alertas de segurança. Não é aconselhável fazer isso, a menos que você tenha perdido todos os aparelhos nos quais fez a autoverificação.", "Clear cross-signing keys": "Limpar chaves autoverificadas", "a device cross-signing signature": "um aparelho autoverificado", "Homeserver URL does not appear to be a valid Matrix homeserver": "O endereço do servidor local não parece indicar um servidor local válido na Matrix", @@ -2235,7 +2235,7 @@ "No other published addresses yet, add one below": "Nenhum endereço publicado ainda, adicione um abaixo", "Set addresses for this room so users can find this room through your homeserver (%(localDomain)s)": "Defina endereços para esta sala, de modo que os usuários possam encontrar esta sala em seu servidor local (%(localDomain)s)", "One of the following may be compromised:": "Um dos seguintes pode estar comprometido:", - "The homeserver the user you’re verifying is connected to": "O servidor local no qual o usuário que você está verificando está conectado", + "The homeserver the user you’re verifying is connected to": "O servidor local no qual o usuário que você está confirmando está conectado", "Yours, or the other users’ internet connection": "A sua conexão de internet ou a dos outros usuários", "Yours, or the other users’ session": "A sua sessão ou a dos outros usuários", "Got it": "Ok, entendi", @@ -2280,5 +2280,8 @@ "Enter your recovery passphrase a second time to confirm it.": "Digite sua senha de recuperação uma segunda vez para confirmá-la.", "Confirm your recovery passphrase": "Confirme a sua frase de recuperação", "Page Up": "Page Up", - "Page Down": "Page Down" + "Page Down": "Page Down", + "You've successfully verified %(deviceName)s (%(deviceId)s)!": "Você confirmou %(deviceName)s (%(deviceId)s) com êxito!", + "Verified": "Confirmado", + "Close dialog or context menu": "Fechar caixa de diálogo ou menu" } From 2ffc99fa7109f3f28823f632e6e2e3cb7ec77a2d Mon Sep 17 00:00:00 2001 From: Nikita Epifanov Date: Wed, 19 Aug 2020 10:13:35 +0000 Subject: [PATCH 255/424] Translated using Weblate (Russian) Currently translated at 100.0% (2340 of 2340 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/ru/ --- src/i18n/strings/ru.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 214648eea7..7a6d4c3866 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -2408,5 +2408,12 @@ "Master private key:": "Приватный мастер-ключ:", "Show message previews for reactions in DMs": "Показывать превью сообщений для реакций в ЛС", "Show message previews for reactions in all rooms": "Показывать предварительный просмотр сообщений для реакций во всех комнатах", - "Explore public rooms": "Просмотреть публичные комнаты" + "Explore public rooms": "Просмотреть публичные комнаты", + "Uploading logs": "Загрузка журналов", + "Downloading logs": "Скачивание журналов", + "Can't see what you’re looking for?": "Не видите то, что ищете?", + "Explore all public rooms": "Просмотреть все публичные комнаты", + "%(count)s results|other": "%(count)s результатов", + "Preparing to download logs": "Подготовка к загрузке журналов", + "Download logs": "Скачать журналы" } From b293ef067442c157b39760fb7506b6fcf3c770b7 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Fri, 14 Aug 2020 13:01:43 +0100 Subject: [PATCH 256/424] Check for .well-known E2EE settings under new key This adds an extra check for `.well-known` E2EE settings under the key `im.vector.e2ee`. The older key `im.vector.riot.e2ee` is kept for historical compatibility. Part of https://github.com/vector-im/element-web/issues/14954 --- src/createRoom.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/createRoom.ts b/src/createRoom.ts index 23a664a4c4..b9f30476e4 100644 --- a/src/createRoom.ts +++ b/src/createRoom.ts @@ -27,7 +27,8 @@ import * as Rooms from "./Rooms"; import DMRoomMap from "./utils/DMRoomMap"; import {getAddressType} from "./UserAddress"; -const E2EE_WK_KEY = "im.vector.riot.e2ee"; +const E2EE_WK_KEY = "im.vector.e2ee"; +const E2EE_WK_KEY_DEPRECATED = "im.vector.riot.e2ee"; // we define a number of interfaces which take their names from the js-sdk /* eslint-disable camelcase */ @@ -300,6 +301,10 @@ export function privateShouldBeEncrypted() { const defaultDisabled = clientWellKnown[E2EE_WK_KEY]["default"] === false; return !defaultDisabled; } + if (clientWellKnown && clientWellKnown[E2EE_WK_KEY_DEPRECATED]) { + const defaultDisabled = clientWellKnown[E2EE_WK_KEY_DEPRECATED]["default"] === false; + return !defaultDisabled; + } return true; } From 2b0865e89c3377ac66035e9c4873757614417835 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Fri, 14 Aug 2020 13:27:12 +0100 Subject: [PATCH 257/424] Move E2EE well-known access to utils --- src/createRoom.ts | 17 +++++------------ src/utils/WellKnownUtils.ts | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 12 deletions(-) create mode 100644 src/utils/WellKnownUtils.ts diff --git a/src/createRoom.ts b/src/createRoom.ts index b9f30476e4..78d0cf1356 100644 --- a/src/createRoom.ts +++ b/src/createRoom.ts @@ -26,9 +26,7 @@ import dis from "./dispatcher/dispatcher"; import * as Rooms from "./Rooms"; import DMRoomMap from "./utils/DMRoomMap"; import {getAddressType} from "./UserAddress"; - -const E2EE_WK_KEY = "im.vector.e2ee"; -const E2EE_WK_KEY_DEPRECATED = "im.vector.riot.e2ee"; +import { getE2EEWellKnown } from "./utils/WellKnownUtils"; // we define a number of interfaces which take their names from the js-sdk /* eslint-disable camelcase */ @@ -295,16 +293,11 @@ export async function ensureDMExists(client: MatrixClient, userId: string): Prom return roomId; } -export function privateShouldBeEncrypted() { - const clientWellKnown = MatrixClientPeg.get().getClientWellKnown(); - if (clientWellKnown && clientWellKnown[E2EE_WK_KEY]) { - const defaultDisabled = clientWellKnown[E2EE_WK_KEY]["default"] === false; +export function privateShouldBeEncrypted(): boolean { + const e2eeWellKnown = getE2EEWellKnown(); + if (e2eeWellKnown) { + const defaultDisabled = e2eeWellKnown["default"] === false; return !defaultDisabled; } - if (clientWellKnown && clientWellKnown[E2EE_WK_KEY_DEPRECATED]) { - const defaultDisabled = clientWellKnown[E2EE_WK_KEY_DEPRECATED]["default"] === false; - return !defaultDisabled; - } - return true; } diff --git a/src/utils/WellKnownUtils.ts b/src/utils/WellKnownUtils.ts new file mode 100644 index 0000000000..2712570396 --- /dev/null +++ b/src/utils/WellKnownUtils.ts @@ -0,0 +1,35 @@ +/* +Copyright 2020 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +import {MatrixClientPeg} from '../MatrixClientPeg'; + +const E2EE_WK_KEY = "im.vector.e2ee"; +const E2EE_WK_KEY_DEPRECATED = "im.vector.riot.e2ee"; + +export interface IE2EEWellKnown { + default?: boolean; +} + +export function getE2EEWellKnown(): IE2EEWellKnown { + const clientWellKnown = MatrixClientPeg.get().getClientWellKnown(); + if (clientWellKnown && clientWellKnown[E2EE_WK_KEY]) { + return clientWellKnown[E2EE_WK_KEY]; + } + if (clientWellKnown && clientWellKnown[E2EE_WK_KEY_DEPRECATED]) { + return clientWellKnown[E2EE_WK_KEY_DEPRECATED] + } + return null; +} From 941cbc47c8f6e656a30801e6cb2407b5596780e4 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Fri, 14 Aug 2020 16:40:46 +0100 Subject: [PATCH 258/424] Fix casing of Secure Backup to match designs --- .../views/dialogs/secretstorage/CreateSecretStorageDialog.js | 2 +- src/i18n/strings/en_EN.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/async-components/views/dialogs/secretstorage/CreateSecretStorageDialog.js b/src/async-components/views/dialogs/secretstorage/CreateSecretStorageDialog.js index 53b3033330..bb231c24a0 100644 --- a/src/async-components/views/dialogs/secretstorage/CreateSecretStorageDialog.js +++ b/src/async-components/views/dialogs/secretstorage/CreateSecretStorageDialog.js @@ -714,7 +714,7 @@ export default class CreateSecretStorageDialog extends React.PureComponent { _titleForPhase(phase) { switch (phase) { case PHASE_CHOOSE_KEY_PASSPHRASE: - return _t('Set up Secure backup'); + return _t('Set up Secure Backup'); case PHASE_MIGRATE: return _t('Upgrade your encryption'); case PHASE_PASSPHRASE: diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 8bfc3ed703..51132179cf 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -2241,7 +2241,7 @@ "Retry": "Retry", "If you cancel now, you may lose encrypted messages & data if you lose access to your logins.": "If you cancel now, you may lose encrypted messages & data if you lose access to your logins.", "You can also set up Secure Backup & manage your keys in Settings.": "You can also set up Secure Backup & manage your keys in Settings.", - "Set up Secure backup": "Set up Secure backup", + "Set up Secure Backup": "Set up Secure Backup", "Upgrade your encryption": "Upgrade your encryption", "Set a Security Phrase": "Set a Security Phrase", "Confirm Security Phrase": "Confirm Security Phrase", From 1932505d3b6cbab5a5035f61d3eae73e91a4c23f Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Fri, 14 Aug 2020 18:06:35 +0100 Subject: [PATCH 259/424] Enforce Secure Backup completion when requested by HS This removes all buttons to escape the Secure Backup setup flow when the matching `.well-known` setting is set by homeserver. Part of https://github.com/vector-im/element-web/issues/14954 --- src/CrossSigningManager.js | 14 +++++++++++++- .../secretstorage/CreateSecretStorageDialog.js | 9 +++++---- src/utils/WellKnownUtils.ts | 5 +++++ 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/CrossSigningManager.js b/src/CrossSigningManager.js index 676c41d7d7..46f0284776 100644 --- a/src/CrossSigningManager.js +++ b/src/CrossSigningManager.js @@ -21,6 +21,7 @@ import { deriveKey } from 'matrix-js-sdk/src/crypto/key_passphrase'; import { decodeRecoveryKey } from 'matrix-js-sdk/src/crypto/recoverykey'; import { _t } from './languageHandler'; import {encodeBase64} from "matrix-js-sdk/src/crypto/olmlib"; +import { isSecureBackupRequired } from './utils/WellKnownUtils'; // This stores the secret storage private keys in memory for the JS SDK. This is // only meant to act as a cache to avoid prompting the user multiple times @@ -208,7 +209,18 @@ export async function accessSecretStorage(func = async () => { }, forceReset = f { force: forceReset, }, - null, /* priority = */ false, /* static = */ true, + null, + /* priority = */ false, + /* static = */ true, + /* options = */ { + onBeforeClose(reason) { + // If Secure Backup is required, you cannot leave the modal. + if (reason === "backgroundClick") { + return !isSecureBackupRequired(); + } + return true; + }, + }, ); const [confirmed] = await finished; if (!confirmed) { diff --git a/src/async-components/views/dialogs/secretstorage/CreateSecretStorageDialog.js b/src/async-components/views/dialogs/secretstorage/CreateSecretStorageDialog.js index bb231c24a0..47faa35df4 100644 --- a/src/async-components/views/dialogs/secretstorage/CreateSecretStorageDialog.js +++ b/src/async-components/views/dialogs/secretstorage/CreateSecretStorageDialog.js @@ -30,6 +30,7 @@ import StyledRadioButton from '../../../../components/views/elements/StyledRadio import AccessibleButton from "../../../../components/views/elements/AccessibleButton"; import DialogButtons from "../../../../components/views/elements/DialogButtons"; import InlineSpinner from "../../../../components/views/elements/InlineSpinner"; +import { isSecureBackupRequired } from '../../../../utils/WellKnownUtils'; const PHASE_LOADING = 0; const PHASE_LOADERROR = 1; @@ -85,8 +86,8 @@ export default class CreateSecretStorageDialog extends React.PureComponent { canUploadKeysWithPasswordOnly: null, accountPassword: props.accountPassword || "", accountPasswordCorrect: null, - passPhraseKeySelected: CREATE_STORAGE_OPTION_KEY, + canSkip: !isSecureBackupRequired(), }; this._passphraseField = createRef(); @@ -470,7 +471,7 @@ export default class CreateSecretStorageDialog extends React.PureComponent { primaryButton={_t("Continue")} onPrimaryButtonClick={this._onChooseKeyPassphraseFormSubmit} onCancel={this._onCancelClick} - hasCancel={true} + hasCancel={this.state.canSkip} /> ; } @@ -687,7 +688,7 @@ export default class CreateSecretStorageDialog extends React.PureComponent {
@@ -742,7 +743,7 @@ export default class CreateSecretStorageDialog extends React.PureComponent {
diff --git a/src/utils/WellKnownUtils.ts b/src/utils/WellKnownUtils.ts index 2712570396..f16acdb408 100644 --- a/src/utils/WellKnownUtils.ts +++ b/src/utils/WellKnownUtils.ts @@ -33,3 +33,8 @@ export function getE2EEWellKnown(): IE2EEWellKnown { } return null; } + +export function isSecureBackupRequired(): boolean { + const wellKnown = getE2EEWellKnown(); + return wellKnown && wellKnown["secure_backup_required"] === true; +} From fed7ebb6bc3a9549b62cedaa94041d220a7c5605 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Mon, 17 Aug 2020 16:00:30 +0100 Subject: [PATCH 260/424] Hide Delete Backup button when Secure Backup required If Secure Backup is required by the HS admin, then this hides the Delete Backup button in Settings to ensure everyone keeps their backup per policy. Part of https://github.com/vector-im/element-web/issues/14954 --- src/components/views/settings/KeyBackupPanel.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/components/views/settings/KeyBackupPanel.js b/src/components/views/settings/KeyBackupPanel.js index a7a2c768db..8a74276f58 100644 --- a/src/components/views/settings/KeyBackupPanel.js +++ b/src/components/views/settings/KeyBackupPanel.js @@ -21,6 +21,7 @@ import * as sdk from '../../../index'; import {MatrixClientPeg} from '../../../MatrixClientPeg'; import { _t } from '../../../languageHandler'; import Modal from '../../../Modal'; +import { isSecureBackupRequired } from '../../../utils/WellKnownUtils'; export default class KeyBackupPanel extends React.PureComponent { constructor(props) { @@ -315,14 +316,19 @@ export default class KeyBackupPanel extends React.PureComponent { trustedLocally = _t("This backup is trusted because it has been restored on this session"); } + let deleteBackupButton; + if (!isSecureBackupRequired()) { + deleteBackupButton = + {_t("Delete Backup")} + ; + } + const buttonRow = (
{restoreButtonCaption}     - - {_t("Delete Backup")} - + {deleteBackupButton}
); From e8e691b746b2c8e4b6573c6407d6caec09a69db1 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Wed, 19 Aug 2020 13:28:03 +0100 Subject: [PATCH 261/424] Avoid adding setup toast in the middle of setup This improves the experience of going through secret storage setup / reset flows by avoiding intermittent toasts that appear and disappear in the middle of the operation. --- src/CrossSigningManager.js | 11 +++++++++++ src/DeviceListener.ts | 6 +++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/CrossSigningManager.js b/src/CrossSigningManager.js index 46f0284776..da09a436e9 100644 --- a/src/CrossSigningManager.js +++ b/src/CrossSigningManager.js @@ -35,6 +35,17 @@ function isCachingAllowed() { return secretStorageBeingAccessed; } +/** + * This can be used by other components to check if secret storage access is in + * progress, so that we can e.g. avoid intermittently showing toasts during + * secret storage setup. + * + * @returns {bool} + */ +export function isSecretStorageBeingAccessed() { + return secretStorageBeingAccessed; +} + export class AccessCancelledError extends Error { constructor() { super("Secret storage access canceled"); diff --git a/src/DeviceListener.ts b/src/DeviceListener.ts index a37521118f..aa9580834f 100644 --- a/src/DeviceListener.ts +++ b/src/DeviceListener.ts @@ -28,7 +28,8 @@ import { hideToast as hideUnverifiedSessionsToast, showToast as showUnverifiedSessionsToast, } from "./toasts/UnverifiedSessionToast"; -import {privateShouldBeEncrypted} from "./createRoom"; +import { privateShouldBeEncrypted } from "./createRoom"; +import { isSecretStorageBeingAccessed } from "./CrossSigningManager"; const KEY_BACKUP_POLL_INTERVAL = 5 * 60 * 1000; @@ -170,6 +171,9 @@ export default class DeviceListener { } private shouldShowSetupEncryptionToast() { + // If we're in the middle of a secret storage operation, we're likely + // modifying the state involved here, so don't add new toasts to setup. + if (isSecretStorageBeingAccessed()) return false; // In a default configuration, show the toasts. If the well-known config causes e2ee default to be false // then do not show the toasts until user is in at least one encrypted room. if (privateShouldBeEncrypted()) return true; From e56a61ec68a5baf63295ac22fd95697324f53620 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Wed, 19 Aug 2020 16:13:29 +0100 Subject: [PATCH 262/424] Invoke Secure Backup flow inside the app when requested by HS If the Secure Backup required mode is set the client `.well-known` file, then this will ensure that everyone already inside the app is required to complete setup matching that policy. Fixes https://github.com/vector-im/element-web/issues/14954 --- src/@types/global.d.ts | 2 ++ src/DeviceListener.ts | 27 ++++++++++++++++++++++-- src/components/structures/MatrixChat.tsx | 7 ++++++ src/utils/WellKnownUtils.ts | 8 +++++++ 4 files changed, 42 insertions(+), 2 deletions(-) diff --git a/src/@types/global.d.ts b/src/@types/global.d.ts index 86ee995a13..84340d8219 100644 --- a/src/@types/global.d.ts +++ b/src/@types/global.d.ts @@ -27,10 +27,12 @@ import {ModalManager} from "../Modal"; import SettingsStore from "../settings/SettingsStore"; import {ActiveRoomObserver} from "../ActiveRoomObserver"; import {Notifier} from "../Notifier"; +import type {Renderer} from "react-dom"; declare global { interface Window { Modernizr: ModernizrStatic; + matrixChat: ReturnType; mxMatrixClientPeg: IMatrixClientPeg; Olm: { init: () => Promise; diff --git a/src/DeviceListener.ts b/src/DeviceListener.ts index aa9580834f..41daa74376 100644 --- a/src/DeviceListener.ts +++ b/src/DeviceListener.ts @@ -15,6 +15,7 @@ limitations under the License. */ import {MatrixClientPeg} from './MatrixClientPeg'; +import dis from "./dispatcher/dispatcher"; import { hideToast as hideBulkUnverifiedSessionsToast, showToast as showBulkUnverifiedSessionsToast, @@ -29,11 +30,15 @@ import { showToast as showUnverifiedSessionsToast, } from "./toasts/UnverifiedSessionToast"; import { privateShouldBeEncrypted } from "./createRoom"; -import { isSecretStorageBeingAccessed } from "./CrossSigningManager"; +import { isSecretStorageBeingAccessed, accessSecretStorage } from "./CrossSigningManager"; +import { ensureClientWellKnown, isSecureBackupRequired } from './utils/WellKnownUtils'; +import { isLoggedIn } from './components/structures/MatrixChat'; + const KEY_BACKUP_POLL_INTERVAL = 5 * 60 * 1000; export default class DeviceListener { + private dispatcherRef: string; // device IDs for which the user has dismissed the verify toast ('Later') private dismissed = new Set(); // has the user dismissed any of the various nag toasts to setup encryption on this device? @@ -61,6 +66,7 @@ export default class DeviceListener { MatrixClientPeg.get().on('crossSigning.keysChanged', this._onCrossSingingKeysChanged); MatrixClientPeg.get().on('accountData', this._onAccountData); MatrixClientPeg.get().on('sync', this._onSync); + this.dispatcherRef = dis.register(this._onAction); this._recheck(); } @@ -74,6 +80,10 @@ export default class DeviceListener { MatrixClientPeg.get().removeListener('accountData', this._onAccountData); MatrixClientPeg.get().removeListener('sync', this._onSync); } + if (this.dispatcherRef) { + dis.unregister(this.dispatcherRef); + this.dispatcherRef = null; + } this.dismissed.clear(); this.dismissedThisDeviceToast = false; this.keyBackupInfo = null; @@ -159,6 +169,11 @@ export default class DeviceListener { if (state === 'PREPARED' && prevState === null) this._recheck(); }; + _onAction = ({ action }) => { + if (action !== "on_logged_in") return; + this._recheck(); + }; + // The server doesn't tell us when key backup is set up, so we poll // & cache the result async _getKeyBackupInfo() { @@ -211,7 +226,15 @@ export default class DeviceListener { showSetupEncryptionToast(SetupKind.UPGRADE_ENCRYPTION); } else { // No cross-signing or key backup on account (set up encryption) - showSetupEncryptionToast(SetupKind.SET_UP_ENCRYPTION); + await ensureClientWellKnown(); + if (isSecureBackupRequired() && isLoggedIn()) { + // If we're meant to set up, and Secure Backup is required, + // trigger the flow directly without a toast once logged in. + hideSetupEncryptionToast(); + accessSecretStorage(); + } else { + showSetupEncryptionToast(SetupKind.SET_UP_ENCRYPTION); + } } } } diff --git a/src/components/structures/MatrixChat.tsx b/src/components/structures/MatrixChat.tsx index ce96847d28..9929cc523e 100644 --- a/src/components/structures/MatrixChat.tsx +++ b/src/components/structures/MatrixChat.tsx @@ -2085,3 +2085,10 @@ export default class MatrixChat extends React.PureComponent { ; } } + +export function isLoggedIn(): boolean { + // JRS: Maybe we should move the step that writes this to the window out of + // `element-web` and into this file? + const app = window.matrixChat; + return app && (app as MatrixChat).state.view === Views.LOGGED_IN; +} diff --git a/src/utils/WellKnownUtils.ts b/src/utils/WellKnownUtils.ts index f16acdb408..1fe28f2b0c 100644 --- a/src/utils/WellKnownUtils.ts +++ b/src/utils/WellKnownUtils.ts @@ -23,6 +23,14 @@ export interface IE2EEWellKnown { default?: boolean; } +export async function ensureClientWellKnown() { + const cli = MatrixClientPeg.get(); + if (cli.haveAttemptedFetchingClientWellKnown()) return; + return new Promise(resolve => { + cli.once("WellKnown.attempted", resolve); + }); +} + export function getE2EEWellKnown(): IE2EEWellKnown { const clientWellKnown = MatrixClientPeg.get().getClientWellKnown(); if (clientWellKnown && clientWellKnown[E2EE_WK_KEY]) { From 0fef86cc743916ed0124e6f4ef9e25d5b98e1554 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Wed, 19 Aug 2020 11:52:02 -0600 Subject: [PATCH 263/424] Fix find & replace error --- docs/settings.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/settings.md b/docs/settings.md index 40c3e6a7d6..4172c72c15 100644 --- a/docs/settings.md +++ b/docs/settings.md @@ -15,7 +15,7 @@ order of priority, are: * `room-account` - The current user's account, but only when in a specific room * `account` - The current user's account * `room` - A specific room (setting for all members of the room) -* `config` - Values are defined by the `settingDefaults` key (usually) in `config.tson` +* `config` - Values are defined by the `settingDefaults` key (usually) in `config.json` * `default` - The hardcoded default for the settings Individual settings may control which levels are appropriate for them as part of the defaults. This is often to ensure From 2a68cb0cb843cdd3bc7b2623b4a076b50aa1ce88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Priit=20J=C3=B5er=C3=BC=C3=BCt?= Date: Wed, 19 Aug 2020 11:22:56 +0000 Subject: [PATCH 264/424] Translated using Weblate (Estonian) Currently translated at 100.0% (2340 of 2340 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/et/ --- src/i18n/strings/et.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/et.json b/src/i18n/strings/et.json index 2d6b11d769..8690811f3d 100644 --- a/src/i18n/strings/et.json +++ b/src/i18n/strings/et.json @@ -2289,8 +2289,8 @@ "All keys backed up": "Kõik krüptovõtmed on varundatud", "Backup has a valid signature from this user": "Varukoopial on selle kasutaja kehtiv allkiri", "Backup has a invalid signature from this user": "Varukoopial on selle kasutaja vigane allkiri", - "Backup has a signature from unknown user with ID %(deviceId)s": "Varukoopial tundmatu kasutaja allkiri seadme tunnusega %(deviceId)s", - "Backup has a signature from unknown session with ID %(deviceId)s": "Varukoopial tundmatu sessiooni allkiri seadme tunnusega %(deviceId)s", + "Backup has a signature from unknown user with ID %(deviceId)s": "Varukoopial on tundmatu kasutaja allkiri seadme tunnusega %(deviceId)s", + "Backup has a signature from unknown session with ID %(deviceId)s": "Varukoopial on tundmatu sessiooni allkiri seadme tunnusega %(deviceId)s", "Backup has a valid signature from this session": "Varukoopial on selle sessiooni kehtiv allkiri", "Backup has an invalid signature from this session": "Varukoopial on selle sessiooni vigane allkiri", "Backup is not signed by any of your sessions": "Varunduse andmetel pole mitte ühegi sinu sessiooni allkirja", From 499f7bf0fd0fb83fbd2e91006b029147b235a94d Mon Sep 17 00:00:00 2001 From: Michael Albert Date: Wed, 19 Aug 2020 13:43:20 +0000 Subject: [PATCH 265/424] Translated using Weblate (German) Currently translated at 100.0% (2340 of 2340 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index ab424c7b31..05b8775f6f 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1633,7 +1633,7 @@ "Sends a message as html, without interpreting it as markdown": "Verschickt eine Nachricht im html-Format, ohne sie in Markdown zu formatieren", "Show rooms with unread notifications first": "Räume mit nicht gelesenen Benachrichtungen zuerst zeigen", "Show shortcuts to recently viewed rooms above the room list": "Kurzbefehlezu den kürzlich gesichteteten Räumen über der Raumliste anzeigen", - "Use Single Sign On to continue": " Verwende Single-Sign-On um fortzufahren", + "Use Single Sign On to continue": "Verwende Single-Sign-On um fortzufahren", "Confirm adding this email address by using Single Sign On to prove your identity.": "Bestätige die hinzugefügte E-Mail-Adresse mit Single-Sign-On, um deine Identität nachzuweisen.", "Single Sign On": "Single Sign-On", "Confirm adding email": "Bestätige hinzugefügte E-Mail-Addresse", @@ -2410,5 +2410,13 @@ "You can also set up Secure Backup & manage your keys in Settings.": "Du kannst auch in den Einstellungen eine Sicherung erstellen & deine Schlüssel verwalten.", "Set up Secure backup": "Sicheres Backup einrichten", "Show message previews for reactions in DMs": "Anzeigen einer Nachrichtenvorschau für Reaktionen in DMs", - "Show message previews for reactions in all rooms": "Zeigen Sie eine Nachrichtenvorschau für Reaktionen in allen Räumen an" + "Show message previews for reactions in all rooms": "Zeigen Sie eine Nachrichtenvorschau für Reaktionen in allen Räumen an", + "Uploading logs": "Protokolle werden hochgeladen", + "Downloading logs": "Protokolle werden heruntergeladen", + "Explore public rooms": "Erkunde öffentliche Räume", + "Can't see what you’re looking for?": "Kannst du nicht finden wonach du suchst?", + "Explore all public rooms": "Erkunde alle öffentlichen Räume", + "%(count)s results|other": "%(count)s Ergebnisse", + "Preparing to download logs": "Bereite das Herunterladen der Protokolle vor", + "Download logs": "Protokolle herunterladen" } From d1bca2838ffe201011b6fd64c64ce6fbc80f8148 Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 19 Aug 2020 19:07:12 +0100 Subject: [PATCH 266/424] Add clarifying comment in media device selection Hopefully explain the confusing mismatch. --- .../views/settings/tabs/user/VoiceUserSettingsTab.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/components/views/settings/tabs/user/VoiceUserSettingsTab.js b/src/components/views/settings/tabs/user/VoiceUserSettingsTab.js index 4114f6bb22..a78cc10b92 100644 --- a/src/components/views/settings/tabs/user/VoiceUserSettingsTab.js +++ b/src/components/views/settings/tabs/user/VoiceUserSettingsTab.js @@ -157,6 +157,9 @@ export default class VoiceUserSettingsTab extends React.Component { label: _t('Default Device'), }; const getDefaultDevice = (devices) => { + // Note we're looking for a device with deviceId 'default' but adding a device + // with deviceId == the empty string: this is because Chrome gives us a device + // with deviceId 'default', so we're looking for this, not the one we are adding. if (!devices.some((i) => i.deviceId === 'default')) { devices.unshift(defaultOption); return ''; From e0b8343088153642cd5a383666ce1ca57dac750d Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Wed, 19 Aug 2020 19:21:40 -0600 Subject: [PATCH 267/424] Run all room leaving behaviour through a single function Fixes https://github.com/vector-im/element-web/issues/14999 Fixes https://github.com/vector-im/element-web/issues/10380 We were failing to handle errors when `/part`ing a room, though the leave room button was fine. This runs both the button and command through the same function for handling, including the 'view next room' behaviour. --- src/SlashCommands.tsx | 8 +-- src/components/structures/MatrixChat.tsx | 42 ++------------- src/i18n/strings/en_EN.json | 9 ++-- src/utils/membership.ts | 68 ++++++++++++++++++++++++ 4 files changed, 78 insertions(+), 49 deletions(-) diff --git a/src/SlashCommands.tsx b/src/SlashCommands.tsx index 50a49ccf1c..d674634109 100644 --- a/src/SlashCommands.tsx +++ b/src/SlashCommands.tsx @@ -43,7 +43,7 @@ import SdkConfig from "./SdkConfig"; import { ensureDMExists } from "./createRoom"; import { ViewUserPayload } from "./dispatcher/payloads/ViewUserPayload"; import { Action } from "./dispatcher/actions"; -import { EffectiveMembership, getEffectiveMembership } from "./utils/membership"; +import { EffectiveMembership, getEffectiveMembership, leaveRoomBehaviour } from "./utils/membership"; // XXX: workaround for https://github.com/microsoft/TypeScript/issues/31816 interface HTMLInputEvent extends Event { @@ -601,11 +601,7 @@ export const Commands = [ } if (!targetRoomId) targetRoomId = roomId; - return success( - cli.leaveRoomChain(targetRoomId).then(function() { - dis.dispatch({action: 'view_next_room'}); - }), - ); + return success(leaveRoomBehaviour(targetRoomId)); }, category: CommandCategories.actions, }), diff --git a/src/components/structures/MatrixChat.tsx b/src/components/structures/MatrixChat.tsx index ce96847d28..460148045c 100644 --- a/src/components/structures/MatrixChat.tsx +++ b/src/components/structures/MatrixChat.tsx @@ -76,6 +76,7 @@ import { OpenToTabPayload } from "../../dispatcher/payloads/OpenToTabPayload"; import ErrorDialog from "../views/dialogs/ErrorDialog"; import { RoomNotificationStateStore } from "../../stores/notifications/RoomNotificationStateStore"; import { SettingLevel } from "../../settings/SettingLevel"; +import { leaveRoomBehaviour } from "../../utils/membership"; /** constants for MatrixChat.state.view */ export enum Views { @@ -1082,50 +1083,13 @@ export default class MatrixChat extends React.PureComponent { button: _t("Leave"), onFinished: (shouldLeave) => { if (shouldLeave) { - const d = MatrixClientPeg.get().leaveRoomChain(roomId); + const d = leaveRoomBehaviour(roomId); // FIXME: controller shouldn't be loading a view :( const Loader = sdk.getComponent("elements.Spinner"); const modal = Modal.createDialog(Loader, null, 'mx_Dialog_spinner'); - d.then((errors) => { - modal.close(); - - for (const leftRoomId of Object.keys(errors)) { - const err = errors[leftRoomId]; - if (!err) continue; - - console.error("Failed to leave room " + leftRoomId + " " + err); - let title = _t("Failed to leave room"); - let message = _t("Server may be unavailable, overloaded, or you hit a bug."); - if (err.errcode === 'M_CANNOT_LEAVE_SERVER_NOTICE_ROOM') { - title = _t("Can't leave Server Notices room"); - message = _t( - "This room is used for important messages from the Homeserver, " + - "so you cannot leave it.", - ); - } else if (err && err.message) { - message = err.message; - } - Modal.createTrackedDialog('Failed to leave room', '', ErrorDialog, { - title: title, - description: message, - }); - return; - } - - if (this.state.currentRoomId === roomId) { - dis.dispatch({action: 'view_next_room'}); - } - }, (err) => { - // This should only happen if something went seriously wrong with leaving the chain. - modal.close(); - console.error("Failed to leave room " + roomId + " " + err); - Modal.createTrackedDialog('Failed to leave room', '', ErrorDialog, { - title: _t("Failed to leave room"), - description: _t("Unknown error"), - }); - }); + d.finally(() => modal.close()); } }, }); diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 8bfc3ed703..4c0557ac70 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -347,6 +347,10 @@ "Your browser does not support the required cryptography extensions": "Your browser does not support the required cryptography extensions", "Not a valid %(brand)s keyfile": "Not a valid %(brand)s keyfile", "Authentication check failed: incorrect password?": "Authentication check failed: incorrect password?", + "Unexpected server error trying to leave the room": "Unexpected server error trying to leave the room", + "Can't leave Server Notices room": "Can't leave Server Notices room", + "This room is used for important messages from the Homeserver, so you cannot leave it.": "This room is used for important messages from the Homeserver, so you cannot leave it.", + "Error leaving room": "Error leaving room", "Unrecognised address": "Unrecognised address", "You do not have permission to invite people to this room.": "You do not have permission to invite people to this room.", "User %(userId)s is already in the room": "User %(userId)s is already in the room", @@ -2028,10 +2032,6 @@ "Failed to reject invitation": "Failed to reject invitation", "This room is not public. You will not be able to rejoin without an invite.": "This room is not public. You will not be able to rejoin without an invite.", "Are you sure you want to leave the room '%(roomName)s'?": "Are you sure you want to leave the room '%(roomName)s'?", - "Failed to leave room": "Failed to leave room", - "Can't leave Server Notices room": "Can't leave Server Notices room", - "This room is used for important messages from the Homeserver, so you cannot leave it.": "This room is used for important messages from the Homeserver, so you cannot leave it.", - "Unknown error": "Unknown error", "Signed Out": "Signed Out", "For security, this session has been signed out. Please sign in again.": "For security, this session has been signed out. Please sign in again.", "Terms and Conditions": "Terms and Conditions", @@ -2203,6 +2203,7 @@ "User Autocomplete": "User Autocomplete", "Passphrases must match": "Passphrases must match", "Passphrase must not be empty": "Passphrase must not be empty", + "Unknown error": "Unknown error", "Export room keys": "Export room keys", "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.", "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.", diff --git a/src/utils/membership.ts b/src/utils/membership.ts index 9534623d62..a8abacbeaa 100644 --- a/src/utils/membership.ts +++ b/src/utils/membership.ts @@ -15,6 +15,13 @@ limitations under the License. */ import { Room } from "matrix-js-sdk/src/models/room"; +import { MatrixClientPeg } from "../MatrixClientPeg"; +import { _t } from "../languageHandler"; +import Modal from "../Modal"; +import ErrorDialog from "../components/views/dialogs/ErrorDialog"; +import React from "react"; +import dis from "../dispatcher/dispatcher"; +import RoomViewStore from "../stores/RoomViewStore"; /** * Approximation of a membership status for a given room. @@ -70,3 +77,64 @@ export function getEffectiveMembership(membership: string): EffectiveMembership return EffectiveMembership.Leave; } } + +export async function leaveRoomBehaviour(roomId: string): Promise { + let leavingAllVersions = true; + const history = await MatrixClientPeg.get().getRoomUpgradeHistory(roomId); + if (history && history.length > 0) { + const currentRoom = history[history.length - 1]; + if (currentRoom.roomId !== roomId) { + // The user is trying to leave an older version of the room. Let them through + // without making them leave the current version of the room. + leavingAllVersions = false; + } + } + + let results: { [roomId: string]: Error & { errcode: string, message: string } } = {}; + if (!leavingAllVersions || true) { + try { + await MatrixClientPeg.get().leave(roomId); + } catch (e) { + if (e && e.data && e.data.errcode) { + const message = e.data.error || _t("Unexpected server error trying to leave the room"); + results[roomId] = Object.assign(new Error(message), {errcode: e.data.errcode}); + } else { + results[roomId] = e || new Error("Failed to leave room for unknown causes"); + } + } + } else { + results = await MatrixClientPeg.get().leaveRoomChain(roomId); + } + + const errors = Object.entries(results).filter(r => !!r[1]); + if (errors.length > 0) { + let messages = []; + for (const err of errors) { + let message = _t("Unexpected server error trying to leave the room"); + if (results[roomId].errcode && results[roomId].message) { + if (results[roomId].errcode === 'M_CANNOT_LEAVE_SERVER_NOTICE_ROOM') { + Modal.createTrackedDialog('Error Leaving Room', '', ErrorDialog, { + title: _t("Can't leave Server Notices room"), + description: _t( + "This room is used for important messages from the Homeserver, " + + "so you cannot leave it.", + ), + }); + return false; + } + message = results[roomId].message; + } + messages.push(message, React.createElement('BR')); // createElement to avoid using a tsx file in utils + } + Modal.createTrackedDialog('Error Leaving Room', '', ErrorDialog, { + title: _t("Error leaving room"), + description: messages, + }); + return false; + } + + if (RoomViewStore.getRoomId() === roomId) { + dis.dispatch({action: 'view_next_room'}); + } + return true; +} From 309c32700b32e06ce8c282014b258fe5553a1c08 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Wed, 19 Aug 2020 19:23:27 -0600 Subject: [PATCH 268/424] Remove unused success state --- src/utils/membership.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/utils/membership.ts b/src/utils/membership.ts index a8abacbeaa..2693d816a5 100644 --- a/src/utils/membership.ts +++ b/src/utils/membership.ts @@ -78,7 +78,7 @@ export function getEffectiveMembership(membership: string): EffectiveMembership } } -export async function leaveRoomBehaviour(roomId: string): Promise { +export async function leaveRoomBehaviour(roomId: string) { let leavingAllVersions = true; const history = await MatrixClientPeg.get().getRoomUpgradeHistory(roomId); if (history && history.length > 0) { @@ -120,7 +120,7 @@ export async function leaveRoomBehaviour(roomId: string): Promise { "so you cannot leave it.", ), }); - return false; + return; } message = results[roomId].message; } @@ -130,11 +130,10 @@ export async function leaveRoomBehaviour(roomId: string): Promise { title: _t("Error leaving room"), description: messages, }); - return false; + return; } if (RoomViewStore.getRoomId() === roomId) { dis.dispatch({action: 'view_next_room'}); } - return true; } From 8fffce8a303c764ce61a968109e0c5ddb70024d7 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Wed, 19 Aug 2020 19:42:36 -0600 Subject: [PATCH 269/424] Appease the linter --- src/utils/membership.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/utils/membership.ts b/src/utils/membership.ts index 2693d816a5..14a3ced739 100644 --- a/src/utils/membership.ts +++ b/src/utils/membership.ts @@ -108,11 +108,12 @@ export async function leaveRoomBehaviour(roomId: string) { const errors = Object.entries(results).filter(r => !!r[1]); if (errors.length > 0) { - let messages = []; - for (const err of errors) { + const messages = []; + for (const roomErr of errors) { + const err = roomErr[1]; // [0] is the roomId let message = _t("Unexpected server error trying to leave the room"); - if (results[roomId].errcode && results[roomId].message) { - if (results[roomId].errcode === 'M_CANNOT_LEAVE_SERVER_NOTICE_ROOM') { + if (err.errcode && err.message) { + if (err.errcode === 'M_CANNOT_LEAVE_SERVER_NOTICE_ROOM') { Modal.createTrackedDialog('Error Leaving Room', '', ErrorDialog, { title: _t("Can't leave Server Notices room"), description: _t( From 42988d373bb030d44d707c07ff80ef17ffb8fc93 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Wed, 19 Aug 2020 19:42:58 -0600 Subject: [PATCH 270/424] Remove debugging --- src/utils/membership.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/membership.ts b/src/utils/membership.ts index 14a3ced739..68ac958490 100644 --- a/src/utils/membership.ts +++ b/src/utils/membership.ts @@ -91,7 +91,7 @@ export async function leaveRoomBehaviour(roomId: string) { } let results: { [roomId: string]: Error & { errcode: string, message: string } } = {}; - if (!leavingAllVersions || true) { + if (!leavingAllVersions) { try { await MatrixClientPeg.get().leave(roomId); } catch (e) { From 0c80db882027708350fb9d47f8d17091781c1a44 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Thu, 20 Aug 2020 19:44:59 -0600 Subject: [PATCH 271/424] Add feature flag for prototypes --- src/i18n/strings/en_EN.json | 1 + src/settings/Settings.ts | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 4c0557ac70..3ffc11b5b8 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -444,6 +444,7 @@ "%(senderName)s: %(reaction)s": "%(senderName)s: %(reaction)s", "%(senderName)s: %(stickerName)s": "%(senderName)s: %(stickerName)s", "Change notification settings": "Change notification settings", + "Communities v2 prototypes. Requires compatible homeserver. Highly experimental - use with caution.": "Communities v2 prototypes. Requires compatible homeserver. Highly experimental - use with caution.", "New spinner design": "New spinner design", "Message Pinning": "Message Pinning", "Custom user status messages": "Custom user status messages", diff --git a/src/settings/Settings.ts b/src/settings/Settings.ts index 3d18c14e16..838df51ea3 100644 --- a/src/settings/Settings.ts +++ b/src/settings/Settings.ts @@ -109,6 +109,12 @@ export interface ISetting { } export const SETTINGS: {[setting: string]: ISetting} = { + "feature_communities_v2_prototypes": { + isFeature: true, + displayName: _td("Communities v2 prototypes. Requires compatible homeserver. Highly experimental - use with caution."), + supportedLevels: LEVELS_FEATURE, + default: false, + }, "feature_new_spinner": { isFeature: true, displayName: _td("New spinner design"), From beb5c2627c6ebe7da5f05765b66e7455b5f78658 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Thu, 20 Aug 2020 19:45:22 -0600 Subject: [PATCH 272/424] Disable CTRL+Click and SHIFT+Click actions on tag panel --- src/stores/TagOrderStore.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/stores/TagOrderStore.js b/src/stores/TagOrderStore.js index 2acf531d86..3cd3f796cc 100644 --- a/src/stores/TagOrderStore.js +++ b/src/stores/TagOrderStore.js @@ -115,9 +115,11 @@ class TagOrderStore extends Store { break; } case 'select_tag': { + const allowMultiple = !SettingsStore.getValue("feature_communities_v2_prototypes") + let newTags = []; // Shift-click semantics - if (payload.shiftKey) { + if (payload.shiftKey && allowMultiple) { // Select range of tags let start = this._state.orderedTags.indexOf(this._state.anchorTag); let end = this._state.orderedTags.indexOf(payload.tag); @@ -135,7 +137,7 @@ class TagOrderStore extends Store { this._state.orderedTags.slice(start, end + 1).concat(newTags), )]; } else { - if (payload.ctrlOrCmdKey) { + if (payload.ctrlOrCmdKey && allowMultiple) { // Toggle individual tag if (this._state.selectedTags.includes(payload.tag)) { newTags = this._state.selectedTags.filter((t) => t !== payload.tag); From 81a7be29aaaafb798ad0ecfab4b84a70af65790d Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Thu, 20 Aug 2020 19:45:54 -0600 Subject: [PATCH 273/424] Show the selected community in the top left menu --- src/components/structures/UserMenu.tsx | 50 +++++++++++++++++++++++--- 1 file changed, 46 insertions(+), 4 deletions(-) diff --git a/src/components/structures/UserMenu.tsx b/src/components/structures/UserMenu.tsx index e782618872..839d4bccda 100644 --- a/src/components/structures/UserMenu.tsx +++ b/src/components/structures/UserMenu.tsx @@ -42,6 +42,9 @@ import IconizedContextMenu, { IconizedContextMenuOption, IconizedContextMenuOptionList } from "../views/context_menus/IconizedContextMenu"; +import TagOrderStore from "../../stores/TagOrderStore"; +import * as fbEmitter from "fbemitter"; +import FlairStore from "../../stores/FlairStore"; interface IProps { isMinimized: boolean; @@ -52,11 +55,16 @@ type PartialDOMRect = Pick; interface IState { contextMenuPosition: PartialDOMRect; isDarkTheme: boolean; + selectedCommunityProfile: { + displayName: string; + avatarMxc: string; + }; } export default class UserMenu extends React.Component { private dispatcherRef: string; private themeWatcherRef: string; + private tagStoreRef: fbEmitter.EventSubscription; private buttonRef: React.RefObject = createRef(); constructor(props: IProps) { @@ -65,6 +73,7 @@ export default class UserMenu extends React.Component { this.state = { contextMenuPosition: null, isDarkTheme: this.isUserOnDarkTheme(), + selectedCommunityProfile: null, }; OwnProfileStore.instance.on(UPDATE_EVENT, this.onProfileUpdate); @@ -77,6 +86,7 @@ export default class UserMenu extends React.Component { public componentDidMount() { this.dispatcherRef = defaultDispatcher.register(this.onAction); this.themeWatcherRef = SettingsStore.watchSetting("theme", null, this.onThemeChanged); + this.tagStoreRef = TagOrderStore.addListener(this.onTagStoreUpdate); } public componentWillUnmount() { @@ -93,6 +103,25 @@ export default class UserMenu extends React.Component { return theme === "dark"; } + private onTagStoreUpdate = async () => { + if (!SettingsStore.getValue("feature_communities_v2_prototypes")) { + return; + } + + const selectedId = TagOrderStore.getSelectedTags()[0]; + if (!selectedId) { + this.setState({selectedCommunityProfile: null}); + return; + } + + // For some reason the group's profile info isn't on the js-sdk Group object but + // is in the flair store, so get it from there. + const profile = await FlairStore.getGroupProfileCached(MatrixClientPeg.get(), selectedId); + const displayName = profile.name || selectedId; + const avatarMxc = profile.avatarUrl; + this.setState({selectedCommunityProfile: {displayName, avatarMxc}}); + }; + private onProfileUpdate = async () => { // the store triggered an update, so force a layout update. We don't // have any state to store here for that to magically happen. @@ -295,7 +324,20 @@ export default class UserMenu extends React.Component { public render() { const avatarSize = 32; // should match border-radius of the avatar - let name = {OwnProfileStore.instance.displayName}; + let displayName = OwnProfileStore.instance.displayName || MatrixClientPeg.get().getUserId(); + let avatarUrl = OwnProfileStore.instance.getHttpAvatarUrl(avatarSize); + + if (this.state.selectedCommunityProfile) { + displayName = this.state.selectedCommunityProfile.displayName + const mxc = this.state.selectedCommunityProfile.avatarMxc; + if (mxc) { + avatarUrl = MatrixClientPeg.get().mxcUrlToHttp(mxc, avatarSize, avatarSize); + } else { + avatarUrl = null; + } + } + + let name = {displayName}; let buttons = ( {/* masked image in CSS */} @@ -324,9 +366,9 @@ export default class UserMenu extends React.Component {
Date: Thu, 20 Aug 2020 19:54:09 -0600 Subject: [PATCH 274/424] Disable context menu for v2 communities --- src/components/views/elements/TagTile.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/components/views/elements/TagTile.js b/src/components/views/elements/TagTile.js index c59aaeefa4..6a12c87024 100644 --- a/src/components/views/elements/TagTile.js +++ b/src/components/views/elements/TagTile.js @@ -30,6 +30,7 @@ import GroupStore from '../../../stores/GroupStore'; import TagOrderStore from '../../../stores/TagOrderStore'; import MatrixClientContext from "../../../contexts/MatrixClientContext"; import AccessibleButton from "./AccessibleButton"; +import SettingsStore from "../../../settings/SettingsStore"; // A class for a child of TagPanel (possibly wrapped in a DNDTagTile) that represents // a thing to click on for the user to filter the visible rooms in the RoomList to: @@ -112,6 +113,7 @@ export default createReactClass({ }, onMouseOver: function() { + if (SettingsStore.getValue("feature_communities_v2_prototypes")) return; this.setState({ hover: true }); }, @@ -123,6 +125,7 @@ export default createReactClass({ // Prevent the TagTile onClick event firing as well e.stopPropagation(); e.preventDefault(); + if (SettingsStore.getValue("feature_communities_v2_prototypes")) return; this.setState({ hover: false }); this.props.openMenu(); }, From ae04c5ce9d1d28f96eb0919d455a43c7f9417513 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Thu, 20 Aug 2020 19:59:44 -0600 Subject: [PATCH 275/424] Appease the linter --- src/settings/Settings.ts | 5 ++++- src/stores/TagOrderStore.js | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/settings/Settings.ts b/src/settings/Settings.ts index 838df51ea3..95861e11df 100644 --- a/src/settings/Settings.ts +++ b/src/settings/Settings.ts @@ -111,7 +111,10 @@ export interface ISetting { export const SETTINGS: {[setting: string]: ISetting} = { "feature_communities_v2_prototypes": { isFeature: true, - displayName: _td("Communities v2 prototypes. Requires compatible homeserver. Highly experimental - use with caution."), + displayName: _td( + "Communities v2 prototypes. Requires compatible homeserver. " + + "Highly experimental - use with caution.", + ), supportedLevels: LEVELS_FEATURE, default: false, }, diff --git a/src/stores/TagOrderStore.js b/src/stores/TagOrderStore.js index 3cd3f796cc..2b72a963b0 100644 --- a/src/stores/TagOrderStore.js +++ b/src/stores/TagOrderStore.js @@ -115,7 +115,7 @@ class TagOrderStore extends Store { break; } case 'select_tag': { - const allowMultiple = !SettingsStore.getValue("feature_communities_v2_prototypes") + const allowMultiple = !SettingsStore.getValue("feature_communities_v2_prototypes"); let newTags = []; // Shift-click semantics From c815a370e7cec593c57a3f4d03c80e0b023070de Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Thu, 20 Aug 2020 20:46:31 -0600 Subject: [PATCH 276/424] Remove some unused components We no longer have tinting support, so remove it. We still need the `Tinter` to exist though as it's used in quite a few places (though does nothing). Similarly, we have to keep the `roomColor` setting due to it being used in a few places - another PR can take away the tinter support properly. The room tile context menu and top left menu are artifacts of the old room list. The end to end tests weren't failing before as the code path is unused, however it seems worthwhile to keep it as we will eventually need it. --- res/css/_components.scss | 3 - .../context_menus/_RoomTileContextMenu.scss | 114 ----- res/css/views/context_menus/_TopLeftMenu.scss | 96 ----- .../views/room_settings/_ColorSettings.scss | 39 -- .../context_menus/RoomTileContextMenu.js | 404 ------------------ .../views/context_menus/TopLeftMenu.js | 155 ------- .../views/room_settings/ColorSettings.js | 154 ------- .../end-to-end-tests/src/usecases/settings.js | 4 +- 8 files changed, 2 insertions(+), 967 deletions(-) delete mode 100644 res/css/views/context_menus/_RoomTileContextMenu.scss delete mode 100644 res/css/views/context_menus/_TopLeftMenu.scss delete mode 100644 res/css/views/room_settings/_ColorSettings.scss delete mode 100644 src/components/views/context_menus/RoomTileContextMenu.js delete mode 100644 src/components/views/context_menus/TopLeftMenu.js delete mode 100644 src/components/views/room_settings/ColorSettings.js diff --git a/res/css/_components.scss b/res/css/_components.scss index aedb5c1334..5145133127 100644 --- a/res/css/_components.scss +++ b/res/css/_components.scss @@ -53,10 +53,8 @@ @import "./views/avatars/_PulsedAvatar.scss"; @import "./views/context_menus/_IconizedContextMenu.scss"; @import "./views/context_menus/_MessageContextMenu.scss"; -@import "./views/context_menus/_RoomTileContextMenu.scss"; @import "./views/context_menus/_StatusMessageContextMenu.scss"; @import "./views/context_menus/_TagTileContextMenu.scss"; -@import "./views/context_menus/_TopLeftMenu.scss"; @import "./views/context_menus/_WidgetContextMenu.scss"; @import "./views/dialogs/_AddressPickerDialog.scss"; @import "./views/dialogs/_Analytics.scss"; @@ -157,7 +155,6 @@ @import "./views/right_panel/_UserInfo.scss"; @import "./views/right_panel/_VerificationPanel.scss"; @import "./views/room_settings/_AliasSettings.scss"; -@import "./views/room_settings/_ColorSettings.scss"; @import "./views/rooms/_AppsDrawer.scss"; @import "./views/rooms/_Autocomplete.scss"; @import "./views/rooms/_AuxPanel.scss"; diff --git a/res/css/views/context_menus/_RoomTileContextMenu.scss b/res/css/views/context_menus/_RoomTileContextMenu.scss deleted file mode 100644 index 9697ac9bef..0000000000 --- a/res/css/views/context_menus/_RoomTileContextMenu.scss +++ /dev/null @@ -1,114 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_RoomTileContextMenu { - padding: 6px; -} - -.mx_RoomTileContextMenu_tag_icon { - padding-right: 8px; - padding-left: 4px; - display: inline-block; -} - -.mx_RoomTileContextMenu_tag_icon_set { - padding-right: 8px; - padding-left: 4px; - display: none; -} - -.mx_RoomTileContextMenu_tag_field, .mx_RoomTileContextMenu_leave { - padding-top: 8px; - padding-right: 20px; - padding-bottom: 8px; - cursor: pointer; - white-space: nowrap; - display: flex; - align-items: center; - line-height: $font-16px; -} - -.mx_RoomTileContextMenu_tag_field.mx_RoomTileContextMenu_tag_fieldSet { - font-weight: bold; -} - -.mx_RoomTileContextMenu_tag_field.mx_RoomTileContextMenu_tag_fieldSet .mx_RoomTileContextMenu_tag_icon { - display: none; -} - -.mx_RoomTileContextMenu_tag_field.mx_RoomTileContextMenu_tag_fieldSet .mx_RoomTileContextMenu_tag_icon_set { - display: inline-block; -} - -.mx_RoomTileContextMenu_tag_field.mx_RoomTileContextMenu_tag_fieldDisabled { - color: rgba(0, 0, 0, 0.2); -} - -.mx_RoomTileContextMenu_separator { - margin-top: 0; - margin-bottom: 0; - border-bottom-style: none; - border-left-style: none; - border-right-style: none; - border-top-style: solid; - border-top-width: 1px; - border-color: $menu-border-color; -} - -.mx_RoomTileContextMenu_leave { - color: $warning-color; -} - -.mx_RoomTileContextMenu_notif_picker { - position: absolute; - top: 16px; - left: 5px; -} - -.mx_RoomTileContextMenu_notif_field { - padding-top: 4px; - padding-right: 6px; - padding-bottom: 10px; - padding-left: 8px; /* 20px */ - cursor: pointer; - white-space: nowrap; - display: flex; - align-items: center; -} - -.mx_RoomTileContextMenu_notif_field.mx_RoomTileContextMenu_notif_fieldSet { - font-weight: bold; -} - -.mx_RoomTileContextMenu_notif_field.mx_RoomTileContextMenu_notif_fieldDisabled { - color: rgba(0, 0, 0, 0.2); -} - -.mx_RoomTileContextMenu_notif_icon { - padding-right: 4px; - padding-left: 4px; -} - -.mx_RoomTileContextMenu_notif_activeIcon { - display: inline-block; - opacity: 0; - position: relative; - left: -5px; -} - -.mx_RoomTileContextMenu_notif_fieldSet .mx_RoomTileContextMenu_notif_activeIcon { - opacity: 1; -} diff --git a/res/css/views/context_menus/_TopLeftMenu.scss b/res/css/views/context_menus/_TopLeftMenu.scss deleted file mode 100644 index e0f5dd47bd..0000000000 --- a/res/css/views/context_menus/_TopLeftMenu.scss +++ /dev/null @@ -1,96 +0,0 @@ -/* -Copyright 2018 New Vector Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_TopLeftMenu { - min-width: 210px; - border-radius: 4px; - - .mx_TopLeftMenu_greyedText { - font-size: $font-12px; - opacity: 0.5; - } - - .mx_TopLeftMenu_upgradeLink { - font-size: $font-12px; - - img { - margin-left: 5px; - } - } - - .mx_TopLeftMenu_section:not(:last-child) { - border-bottom: 1px solid $menu-border-color; - } - - .mx_TopLeftMenu_section_noIcon { - margin: 5px 0; - padding: 5px 20px 5px 15px; - - div:not(:first-child) { - margin-top: 5px; - } - } - - .mx_TopLeftMenu_section_withIcon { - margin: 5px 0; - padding: 0; - list-style: none; - - .mx_TopLeftMenu_icon_home::after { - mask-image: url('$(res)/img/feather-customised/home.svg'); - } - - .mx_TopLeftMenu_icon_help::after { - mask-image: url('$(res)/img/feather-customised/life-buoy.svg'); - } - - .mx_TopLeftMenu_icon_settings::after { - mask-image: url('$(res)/img/feather-customised/settings.svg'); - } - - .mx_TopLeftMenu_icon_signin::after { - mask-image: url('$(res)/img/feather-customised/sign-in.svg'); - } - - .mx_TopLeftMenu_icon_signout::after { - mask-image: url('$(res)/img/feather-customised/sign-out.svg'); - } - - .mx_AccessibleButton::after { - mask-repeat: no-repeat; - mask-position: 0 center; - mask-size: $font-16px; - position: absolute; - width: $font-16px; - height: $font-16px; - content: ""; - top: 5px; - left: 14px; - background-color: $primary-fg-color; - } - - .mx_AccessibleButton { - position: relative; - cursor: pointer; - white-space: nowrap; - padding: 5px 20px 5px 43px; - } - - .mx_AccessibleButton:hover { - background-color: $menu-selected-color; - } - } -} diff --git a/res/css/views/room_settings/_ColorSettings.scss b/res/css/views/room_settings/_ColorSettings.scss deleted file mode 100644 index fc6a4443ad..0000000000 --- a/res/css/views/room_settings/_ColorSettings.scss +++ /dev/null @@ -1,39 +0,0 @@ -/* -Copyright 2019 New Vector Ltd. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_ColorSettings_roomColor { - display: inline-block; - position: relative; - width: 37px; - height: 37px; - border: 1px solid #979797; - margin-right: 13px; - cursor: pointer; -} - -.mx_ColorSettings_roomColor_selected { - position: absolute; - left: 10px; - top: 4px; - cursor: default !important; -} - -.mx_ColorSettings_roomColorPrimary { - height: 10px; - position: absolute; - bottom: 0px; - width: 100%; -} diff --git a/src/components/views/context_menus/RoomTileContextMenu.js b/src/components/views/context_menus/RoomTileContextMenu.js deleted file mode 100644 index b08cf3be60..0000000000 --- a/src/components/views/context_menus/RoomTileContextMenu.js +++ /dev/null @@ -1,404 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd -Copyright 2017 Vector Creations Ltd -Copyright 2019 Michael Telatynski <7t3chguy@gmail.com> -Copyright 2019 The Matrix.org Foundation C.I.C. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -import React from 'react'; -import PropTypes from 'prop-types'; -import createReactClass from 'create-react-class'; -import classNames from 'classnames'; -import * as sdk from '../../../index'; -import { _t, _td } from '../../../languageHandler'; -import {MatrixClientPeg} from '../../../MatrixClientPeg'; -import dis from '../../../dispatcher/dispatcher'; -import DMRoomMap from '../../../utils/DMRoomMap'; -import * as Rooms from '../../../Rooms'; -import * as RoomNotifs from '../../../RoomNotifs'; -import Modal from '../../../Modal'; -import RoomListActions from '../../../actions/RoomListActions'; -import RoomViewStore from '../../../stores/RoomViewStore'; -import {sleep} from "../../../utils/promise"; -import {MenuItem, MenuItemCheckbox, MenuItemRadio} from "../../structures/ContextMenu"; - -const RoomTagOption = ({active, onClick, src, srcSet, label}) => { - const classes = classNames('mx_RoomTileContextMenu_tag_field', { - 'mx_RoomTileContextMenu_tag_fieldSet': active, - 'mx_RoomTileContextMenu_tag_fieldDisabled': false, - }); - - return ( - - - - { label } - - ); -}; - -const NotifOption = ({active, onClick, src, label}) => { - const classes = classNames('mx_RoomTileContextMenu_notif_field', { - 'mx_RoomTileContextMenu_notif_fieldSet': active, - }); - - return ( - - - - { label } - - ); -}; - -export default createReactClass({ - displayName: 'RoomTileContextMenu', - - propTypes: { - room: PropTypes.object.isRequired, - /* callback called when the menu is dismissed */ - onFinished: PropTypes.func, - }, - - getInitialState() { - const dmRoomMap = new DMRoomMap(MatrixClientPeg.get()); - return { - roomNotifState: RoomNotifs.getRoomNotifsState(this.props.room.roomId), - isFavourite: this.props.room.tags.hasOwnProperty("m.favourite"), - isLowPriority: this.props.room.tags.hasOwnProperty("m.lowpriority"), - isDirectMessage: Boolean(dmRoomMap.getUserIdForRoomId(this.props.room.roomId)), - }; - }, - - componentDidMount: function() { - this._unmounted = false; - }, - - componentWillUnmount: function() { - this._unmounted = true; - }, - - _toggleTag: function(tagNameOn, tagNameOff) { - if (!MatrixClientPeg.get().isGuest()) { - sleep(500).then(() => { - dis.dispatch(RoomListActions.tagRoom( - MatrixClientPeg.get(), - this.props.room, - tagNameOff, tagNameOn, - undefined, 0, - ), true); - - this.props.onFinished(); - }); - } - }, - - _onClickFavourite: function() { - // Tag room as 'Favourite' - if (!this.state.isFavourite && this.state.isLowPriority) { - this.setState({ - isFavourite: true, - isLowPriority: false, - }); - this._toggleTag("m.favourite", "m.lowpriority"); - } else if (this.state.isFavourite) { - this.setState({isFavourite: false}); - this._toggleTag(null, "m.favourite"); - } else if (!this.state.isFavourite) { - this.setState({isFavourite: true}); - this._toggleTag("m.favourite"); - } - }, - - _onClickLowPriority: function() { - // Tag room as 'Low Priority' - if (!this.state.isLowPriority && this.state.isFavourite) { - this.setState({ - isFavourite: false, - isLowPriority: true, - }); - this._toggleTag("m.lowpriority", "m.favourite"); - } else if (this.state.isLowPriority) { - this.setState({isLowPriority: false}); - this._toggleTag(null, "m.lowpriority"); - } else if (!this.state.isLowPriority) { - this.setState({isLowPriority: true}); - this._toggleTag("m.lowpriority"); - } - }, - - _onClickDM: function() { - if (MatrixClientPeg.get().isGuest()) return; - - const newIsDirectMessage = !this.state.isDirectMessage; - this.setState({ - isDirectMessage: newIsDirectMessage, - }); - - Rooms.guessAndSetDMRoom( - this.props.room, newIsDirectMessage, - ).then(sleep(500)).finally(() => { - // Close the context menu - if (this.props.onFinished) { - this.props.onFinished(); - } - }, (err) => { - const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); - Modal.createTrackedDialog('Failed to set Direct Message status of room', '', ErrorDialog, { - title: _t('Failed to set Direct Message status of room'), - description: ((err && err.message) ? err.message : _t('Operation failed')), - }); - }); - }, - - _onClickLeave: function() { - // Leave room - dis.dispatch({ - action: 'leave_room', - room_id: this.props.room.roomId, - }); - - // Close the context menu - if (this.props.onFinished) { - this.props.onFinished(); - } - }, - - _onClickReject: function() { - dis.dispatch({ - action: 'reject_invite', - room_id: this.props.room.roomId, - }); - - // Close the context menu - if (this.props.onFinished) { - this.props.onFinished(); - } - }, - - _onClickForget: function() { - // FIXME: duplicated with RoomSettings (and dead code in RoomView) - MatrixClientPeg.get().forget(this.props.room.roomId).then(() => { - // Switch to another room view if we're currently viewing the - // historical room - if (RoomViewStore.getRoomId() === this.props.room.roomId) { - dis.dispatch({ action: 'view_next_room' }); - } - }, function(err) { - const errCode = err.errcode || _td("unknown error code"); - const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); - Modal.createTrackedDialog('Failed to forget room', '', ErrorDialog, { - title: _t('Failed to forget room %(errCode)s', {errCode: errCode}), - description: ((err && err.message) ? err.message : _t('Operation failed')), - }); - }); - - // Close the context menu - if (this.props.onFinished) { - this.props.onFinished(); - } - }, - - _saveNotifState: function(newState) { - if (MatrixClientPeg.get().isGuest()) return; - - const oldState = this.state.roomNotifState; - const roomId = this.props.room.roomId; - - this.setState({ - roomNotifState: newState, - }); - RoomNotifs.setRoomNotifsState(roomId, newState).then(() => { - // delay slightly so that the user can see their state change - // before closing the menu - return sleep(500).then(() => { - if (this._unmounted) return; - // Close the context menu - if (this.props.onFinished) { - this.props.onFinished(); - } - }); - }, (error) => { - // TODO: some form of error notification to the user - // to inform them that their state change failed. - // For now we at least set the state back - if (this._unmounted) return; - this.setState({ - roomNotifState: oldState, - }); - }); - }, - - _onClickAlertMe: function() { - this._saveNotifState(RoomNotifs.ALL_MESSAGES_LOUD); - }, - - _onClickAllNotifs: function() { - this._saveNotifState(RoomNotifs.ALL_MESSAGES); - }, - - _onClickMentions: function() { - this._saveNotifState(RoomNotifs.MENTIONS_ONLY); - }, - - _onClickMute: function() { - this._saveNotifState(RoomNotifs.MUTE); - }, - - _renderNotifMenu: function() { - return ( -
-
- -
- - - - - -
- ); - }, - - _onClickSettings: function() { - dis.dispatch({ - action: 'open_room_settings', - room_id: this.props.room.roomId, - }); - if (this.props.onFinished) { - this.props.onFinished(); - } - }, - - _renderSettingsMenu: function() { - return ( -
- - - { _t('Settings') } - -
- ); - }, - - _renderLeaveMenu: function(membership) { - if (!membership) { - return null; - } - - let leaveClickHandler = null; - let leaveText = null; - - switch (membership) { - case "join": - leaveClickHandler = this._onClickLeave; - leaveText = _t('Leave'); - break; - case "leave": - case "ban": - leaveClickHandler = this._onClickForget; - leaveText = _t('Forget'); - break; - case "invite": - leaveClickHandler = this._onClickReject; - leaveText = _t('Reject'); - break; - } - - return ( -
- - - { leaveText } - -
- ); - }, - - _renderRoomTagMenu: function() { - return ( -
- - - -
- ); - }, - - render: function() { - const myMembership = this.props.room.getMyMembership(); - - switch (myMembership) { - case 'join': - return
- { this._renderNotifMenu() } -
- { this._renderLeaveMenu(myMembership) } -
- { this._renderRoomTagMenu() } -
- { this._renderSettingsMenu() } -
; - case 'invite': - return
- { this._renderLeaveMenu(myMembership) } -
; - default: - return
- { this._renderLeaveMenu(myMembership) } -
- { this._renderSettingsMenu() } -
; - } - }, -}); diff --git a/src/components/views/context_menus/TopLeftMenu.js b/src/components/views/context_menus/TopLeftMenu.js deleted file mode 100644 index ec99c63724..0000000000 --- a/src/components/views/context_menus/TopLeftMenu.js +++ /dev/null @@ -1,155 +0,0 @@ -/* -Copyright 2018, 2019 New Vector Ltd -Copyright 2019 The Matrix.org Foundation C.I.C. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -import React from 'react'; -import PropTypes from 'prop-types'; -import dis from '../../../dispatcher/dispatcher'; -import { _t } from '../../../languageHandler'; -import LogoutDialog from "../dialogs/LogoutDialog"; -import Modal from "../../../Modal"; -import SdkConfig from '../../../SdkConfig'; -import { getHostingLink } from '../../../utils/HostingLink'; -import {MatrixClientPeg} from '../../../MatrixClientPeg'; -import {MenuItem} from "../../structures/ContextMenu"; -import * as sdk from "../../../index"; -import {getHomePageUrl} from "../../../utils/pages"; -import {Action} from "../../../dispatcher/actions"; - -export default class TopLeftMenu extends React.Component { - static propTypes = { - displayName: PropTypes.string.isRequired, - userId: PropTypes.string.isRequired, - onFinished: PropTypes.func, - - // Optional function to collect a reference to the container - // of this component directly. - containerRef: PropTypes.func, - }; - - constructor() { - super(); - this.viewHomePage = this.viewHomePage.bind(this); - this.openSettings = this.openSettings.bind(this); - this.signIn = this.signIn.bind(this); - this.signOut = this.signOut.bind(this); - } - - hasHomePage() { - return !!getHomePageUrl(SdkConfig.get()); - } - - render() { - const isGuest = MatrixClientPeg.get().isGuest(); - - const hostingSignupLink = getHostingLink('user-context-menu'); - let hostingSignup = null; - if (hostingSignupLink) { - hostingSignup =
- {_t( - "Upgrade to your own domain", {}, - { - a: sub => - {sub}, - }, - )} - - - -
; - } - - let homePageItem = null; - if (this.hasHomePage()) { - homePageItem = ( - - {_t("Home")} - - ); - } - - let signInOutItem; - if (isGuest) { - signInOutItem = ( - - {_t("Sign in")} - - ); - } else { - signInOutItem = ( - - {_t("Sign out")} - - ); - } - - const helpItem = ( - - {_t("Help")} - - ); - - const settingsItem = ( - - {_t("Settings")} - - ); - - return
-
-
{this.props.displayName}
-
{this.props.userId}
- {hostingSignup} -
-
    - {homePageItem} - {settingsItem} - {helpItem} - {signInOutItem} -
-
; - } - - openHelp = () => { - this.closeMenu(); - const RedesignFeedbackDialog = sdk.getComponent("views.dialogs.RedesignFeedbackDialog"); - Modal.createTrackedDialog('Report bugs & give feedback', '', RedesignFeedbackDialog); - }; - - viewHomePage() { - dis.dispatch({action: 'view_home_page'}); - this.closeMenu(); - } - - openSettings() { - dis.fire(Action.ViewUserSettings); - this.closeMenu(); - } - - signIn() { - dis.dispatch({action: 'start_login'}); - this.closeMenu(); - } - - signOut() { - Modal.createTrackedDialog('Logout E2E Export', '', LogoutDialog); - this.closeMenu(); - } - - closeMenu() { - if (this.props.onFinished) this.props.onFinished(); - } -} diff --git a/src/components/views/room_settings/ColorSettings.js b/src/components/views/room_settings/ColorSettings.js deleted file mode 100644 index 2179bd905e..0000000000 --- a/src/components/views/room_settings/ColorSettings.js +++ /dev/null @@ -1,154 +0,0 @@ -/* -Copyright 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -import React from 'react'; -import PropTypes from 'prop-types'; -import createReactClass from 'create-react-class'; - -import Tinter from '../../../Tinter'; -import dis from '../../../dispatcher/dispatcher'; -import SettingsStore from "../../../settings/SettingsStore"; -import {SettingLevel} from "../../../settings/SettingLevel"; - -const ROOM_COLORS = [ - // magic room default values courtesy of Ribot - [Tinter.getKeyRgb()[0], Tinter.getKeyRgb()[1]], - ["#81bddb", "#eaf1f4"], - ["#bd79cb", "#f3eaf5"], - ["#c65d94", "#f5eaef"], - ["#e55e5e", "#f5eaea"], - ["#eca46f", "#f5eeea"], - ["#dad658", "#f5f4ea"], - ["#80c553", "#eef5ea"], - ["#bb814e", "#eee8e3"], - //["#595959", "#ececec"], // Grey makes everything appear disabled, so remove it for now -]; - -// Dev note: this component is not attached anywhere, but is left here as it -// has a high possibility of being used in the nearish future. -// Ref: https://github.com/vector-im/element-web/issues/8421 - -export default createReactClass({ - displayName: 'ColorSettings', - - propTypes: { - room: PropTypes.object.isRequired, - }, - - getInitialState: function() { - const data = { - index: 0, - primary_color: ROOM_COLORS[0][0], - secondary_color: ROOM_COLORS[0][1], - hasChanged: false, - }; - const scheme = SettingsStore.getValueAt(SettingLevel.ROOM_ACCOUNT, "roomColor", this.props.room.roomId); - - if (scheme.primary_color && scheme.secondary_color) { - // We only use the user's scheme if the scheme is valid. - data.primary_color = scheme.primary_color; - data.secondary_color = scheme.secondary_color; - } - data.index = this._getColorIndex(data); - - if (data.index === -1) { - // append the unrecognised colours to our palette - data.index = ROOM_COLORS.length; - ROOM_COLORS.push([ - scheme.primary_color, scheme.secondary_color, - ]); - } - return data; - }, - - saveSettings: function() { // : Promise - if (!this.state.hasChanged) { - return Promise.resolve(); // They didn't explicitly give a color to save. - } - const originalState = this.getInitialState(); - if (originalState.primary_color !== this.state.primary_color || - originalState.secondary_color !== this.state.secondary_color) { - console.log("ColorSettings: Saving new color"); - // We would like guests to be able to set room colour but currently - // they can't, so we still send the request but display a sensible - // error if it fails. - // TODO: Support guests for room color. Technically this is possible via granular settings - // Granular settings would mean the guest is forced to use the DEVICE level though. - SettingsStore.setValue("roomColor", this.props.room.roomId, SettingLevel.ROOM_ACCOUNT, { - primary_color: this.state.primary_color, - secondary_color: this.state.secondary_color, - }).catch(function(err) { - if (err.errcode === 'M_GUEST_ACCESS_FORBIDDEN') { - dis.dispatch({action: 'require_registration'}); - } - }); - } - return Promise.resolve(); // no color diff - }, - - _getColorIndex: function(scheme) { - if (!scheme || !scheme.primary_color || !scheme.secondary_color) { - return -1; - } - // XXX: we should validate these values - for (let i = 0; i < ROOM_COLORS.length; i++) { - const room_color = ROOM_COLORS[i]; - if (room_color[0] === String(scheme.primary_color).toLowerCase() && - room_color[1] === String(scheme.secondary_color).toLowerCase()) { - return i; - } - } - return -1; - }, - - _onColorSchemeChanged: function(index) { - // preview what the user just changed the scheme to. - Tinter.tint(ROOM_COLORS[index][0], ROOM_COLORS[index][1]); - this.setState({ - index: index, - primary_color: ROOM_COLORS[index][0], - secondary_color: ROOM_COLORS[index][1], - hasChanged: true, - }); - }, - - render: function() { - return ( -
- { ROOM_COLORS.map((room_color, i) => { - let selected; - if (i === this.state.index) { - selected = ( -
- ./ -
- ); - } - const boundClick = this._onColorSchemeChanged.bind(this, i); - return ( -
- { selected } -
-
- ); - }) } -
- ); - }, -}); diff --git a/test/end-to-end-tests/src/usecases/settings.js b/test/end-to-end-tests/src/usecases/settings.js index a405fde9fb..52e4bb7e0a 100644 --- a/test/end-to-end-tests/src/usecases/settings.js +++ b/test/end-to-end-tests/src/usecases/settings.js @@ -18,9 +18,9 @@ limitations under the License. const assert = require('assert'); async function openSettings(session, section) { - const menuButton = await session.query(".mx_TopLeftMenuButton_name"); + const menuButton = await session.query(".mx_UserMenu"); await menuButton.click(); - const settingsItem = await session.query(".mx_TopLeftMenu_icon_settings"); + const settingsItem = await session.query(".mx_UserMenu_iconSettings"); await settingsItem.click(); if (section) { const sectionButton = await session.query( From fd062720623c65a0896a7efeb7fd02ccbc0d547f Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Thu, 20 Aug 2020 20:50:28 -0600 Subject: [PATCH 277/424] Update i18n --- src/i18n/strings/en_EN.json | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 4c0557ac70..85c587426a 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -1883,23 +1883,12 @@ "Source URL": "Source URL", "Collapse Reply Thread": "Collapse Reply Thread", "Report Content": "Report Content", - "Failed to set Direct Message status of room": "Failed to set Direct Message status of room", - "Failed to forget room %(errCode)s": "Failed to forget room %(errCode)s", - "Notification settings": "Notification settings", - "All messages (noisy)": "All messages (noisy)", - "Mentions only": "Mentions only", - "Leave": "Leave", - "Forget": "Forget", - "Direct Chat": "Direct Chat", "Clear status": "Clear status", "Update status": "Update status", "Set status": "Set status", "Set a new status...": "Set a new status...", "View Community": "View Community", "Hide": "Hide", - "Home": "Home", - "Sign in": "Sign in", - "Help": "Help", "Reload": "Reload", "Take picture": "Take picture", "Remove for everyone": "Remove for everyone", @@ -1940,6 +1929,7 @@ "Phone": "Phone", "Not sure of your password? Set a new one": "Not sure of your password? Set a new one", "Sign in with": "Sign in with", + "Sign in": "Sign in", "No identity server is configured so you cannot add an email address in order to reset your password in the future.": "No identity server is configured so you cannot add an email address in order to reset your password in the future.", "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "If you don't specify an email address, you won't be able to reset your password. Are you sure?", "Use an email address to recover your account": "Use an email address to recover your account", @@ -2002,6 +1992,7 @@ "You are an administrator of this community. You will not be able to rejoin without an invite from another administrator.": "You are an administrator of this community. You will not be able to rejoin without an invite from another administrator.", "Leave Community": "Leave Community", "Leave %(groupName)s?": "Leave %(groupName)s?", + "Leave": "Leave", "Unable to leave community": "Unable to leave community", "Community Settings": "Community Settings", "Want more than a community? Get your own server": "Want more than a community? Get your own server", @@ -2032,6 +2023,7 @@ "Failed to reject invitation": "Failed to reject invitation", "This room is not public. You will not be able to rejoin without an invite.": "This room is not public. You will not be able to rejoin without an invite.", "Are you sure you want to leave the room '%(roomName)s'?": "Are you sure you want to leave the room '%(roomName)s'?", + "Failed to forget room %(errCode)s": "Failed to forget room %(errCode)s", "Signed Out": "Signed Out", "For security, this session has been signed out. Please sign in again.": "For security, this session has been signed out. Please sign in again.", "Terms and Conditions": "Terms and Conditions", @@ -2103,9 +2095,11 @@ "Uploading %(filename)s and %(count)s others|other": "Uploading %(filename)s and %(count)s others", "Uploading %(filename)s and %(count)s others|zero": "Uploading %(filename)s", "Uploading %(filename)s and %(count)s others|one": "Uploading %(filename)s and %(count)s other", + "Home": "Home", "Switch to light mode": "Switch to light mode", "Switch to dark mode": "Switch to dark mode", "Switch theme": "Switch theme", + "Notification settings": "Notification settings", "Security & privacy": "Security & privacy", "All settings": "All settings", "Feedback": "Feedback", From 6a03c0a3c00ae288cd3c73013a1698cc9eee690d Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 21 Aug 2020 10:32:51 +0100 Subject: [PATCH 278/424] Send mx_local_settings in rageshake Perhaps ideally we should get a complete dump of the settings in effect out of the settings manager, but all I want for now is the webrtc audio inputs and outputs, so let's send the ones stored locally. --- src/rageshake/submit-rageshake.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/rageshake/submit-rageshake.ts b/src/rageshake/submit-rageshake.ts index 76b0444052..04a0ad934d 100644 --- a/src/rageshake/submit-rageshake.ts +++ b/src/rageshake/submit-rageshake.ts @@ -182,6 +182,8 @@ export default async function sendBugReport(bugReportEndpoint: string, opts: IOp } } + body.append("mx_local_settings", localStorage.getItem('mx_local_settings')); + if (opts.sendLogs) { progressCallback(_t("Collecting logs")); const logs = await rageshake.getLogsForReport(); From 1e1770d01c626b616b6090f67f6087121220a62a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Priit=20J=C3=B5er=C3=BC=C3=BCt?= Date: Thu, 20 Aug 2020 13:27:59 +0000 Subject: [PATCH 279/424] Translated using Weblate (Estonian) Currently translated at 100.0% (2341 of 2341 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/et/ --- src/i18n/strings/et.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/et.json b/src/i18n/strings/et.json index 8690811f3d..89df7c4f26 100644 --- a/src/i18n/strings/et.json +++ b/src/i18n/strings/et.json @@ -1334,7 +1334,7 @@ "If you cancel now, you won't complete your operation.": "Kui sa katkestad nüüd, siis sul jääb pooleliolev tegevus lõpetamata.", "Cancel entering passphrase?": "Kas katkestame paroolifraasi sisestamise?", "Enter passphrase": "Sisesta paroolifraas", - "Setting up keys": "Võtamevõtmed kasutusele", + "Setting up keys": "Võtame krüptovõtmed kasutusele", "Room name or address": "Jututoa nimi või aadress", "Unable to enable Notifications": "Teavituste kasutusele võtmine ei õnnestunud", "This email address was not found": "Seda e-posti aadressi ei leidunud", @@ -2420,5 +2420,7 @@ "Explore all public rooms": "Sirvi kõiki avalikke jututubasid", "%(count)s results|other": "%(count)s tulemust", "Preparing to download logs": "Valmistun logikirjete allalaadimiseks", - "Download logs": "Lae logikirjed alla" + "Download logs": "Lae logikirjed alla", + "Unexpected server error trying to leave the room": "Jututoast lahkumisel tekkis serveris ootamatu viga", + "Error leaving room": "Viga jututoast lahkumisel" } From a3ce4377212e328bf51066dfab9caa6c5c41ac1f Mon Sep 17 00:00:00 2001 From: XoseM Date: Fri, 21 Aug 2020 05:14:11 +0000 Subject: [PATCH 280/424] Translated using Weblate (Galician) Currently translated at 100.0% (2341 of 2341 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/gl/ --- src/i18n/strings/gl.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/gl.json b/src/i18n/strings/gl.json index 0075550412..7843a416df 100644 --- a/src/i18n/strings/gl.json +++ b/src/i18n/strings/gl.json @@ -2420,5 +2420,7 @@ "Explore all public rooms": "Explora todas as salas públicas", "%(count)s results|other": "%(count)s resultados", "Preparing to download logs": "Preparándose para descargar rexistro", - "Download logs": "Descargar rexistro" + "Download logs": "Descargar rexistro", + "Unexpected server error trying to leave the room": "Fallo non agardado no servidor ó intentar saír da sala", + "Error leaving room": "Erro ó saír da sala" } From a0b2c1c34bb1352bdb5ec19b83c66ced381211e9 Mon Sep 17 00:00:00 2001 From: rkfg Date: Fri, 21 Aug 2020 08:27:41 +0000 Subject: [PATCH 281/424] Translated using Weblate (Russian) Currently translated at 99.9% (2339 of 2341 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/ru/ --- src/i18n/strings/ru.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 7a6d4c3866..80327bd1e6 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -1590,7 +1590,7 @@ "Error subscribing to list": "Ошибка при подписке на список", "Error upgrading room": "Ошибка обновления комнаты", "Match system theme": "Тема системы", - "Show tray icon and minimize window to it on close": "Показать иконку в панели задач и свернуть окно при закрытии", + "Show tray icon and minimize window to it on close": "Показать иконку в трее и сворачивать окно при закрытии", "Show typing notifications": "Показывать уведомления о наборе", "Delete %(count)s sessions|other": "Удалить %(count)s сессий", "Enable desktop notifications for this session": "Включить уведомления для рабочего стола для этой сессии", From 9193c81008056dac32272aa9ce04bda411566bb1 Mon Sep 17 00:00:00 2001 From: Heiko Carrasco Date: Fri, 21 Aug 2020 11:36:57 +0200 Subject: [PATCH 282/424] Fix image avatar view for 1:1 rooms Signed-off-by: Heiko Carrasco --- src/components/views/avatars/RoomAvatar.tsx | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/components/views/avatars/RoomAvatar.tsx b/src/components/views/avatars/RoomAvatar.tsx index 3317ed3a60..e37dff4bfe 100644 --- a/src/components/views/avatars/RoomAvatar.tsx +++ b/src/components/views/avatars/RoomAvatar.tsx @@ -114,9 +114,12 @@ export default class RoomAvatar extends React.Component { } private onRoomAvatarClick = () => { - const avatarUrl = this.props.room.getAvatarUrl( - MatrixClientPeg.get().getHomeserverUrl(), - null, null, null, false); + const avatarUrl = Avatar.avatarUrlForRoom( + this.props.room, + null, + null, + null, + ); const params = { src: avatarUrl, name: this.props.room.name, From 1b5abdab23ab00c95ebff6ab3944a90e2e42e768 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Fri, 21 Aug 2020 15:56:54 -0600 Subject: [PATCH 283/424] Override the room directory with the selected group's rooms --- src/components/structures/RoomDirectory.js | 117 ++++++++++++++++----- 1 file changed, 88 insertions(+), 29 deletions(-) diff --git a/src/components/structures/RoomDirectory.js b/src/components/structures/RoomDirectory.js index 5b12dae7df..11d3508ee5 100644 --- a/src/components/structures/RoomDirectory.js +++ b/src/components/structures/RoomDirectory.js @@ -30,6 +30,10 @@ import { instanceForInstanceId, protocolNameForInstanceId } from '../../utils/Di import Analytics from '../../Analytics'; import {getHttpUriForMxc} from "matrix-js-sdk/src/content-repo"; import {ALL_ROOMS} from "../views/directory/NetworkDropdown"; +import SettingsStore from "../../settings/SettingsStore"; +import TagOrderStore from "../../stores/TagOrderStore"; +import GroupStore from "../../stores/GroupStore"; +import FlairStore from "../../stores/FlairStore"; const MAX_NAME_LENGTH = 80; const MAX_TOPIC_LENGTH = 160; @@ -46,6 +50,7 @@ export default createReactClass({ }, getInitialState: function() { + const selectedCommunityId = TagOrderStore.getSelectedTags()[0]; return { publicRooms: [], loading: true, @@ -54,6 +59,10 @@ export default createReactClass({ instanceId: undefined, roomServer: MatrixClientPeg.getHomeserverName(), filterString: null, + selectedCommunityId: SettingsStore.getValue("feature_communities_v2_prototypes") + ? selectedCommunityId + : null, + communityName: null, }; }, @@ -71,28 +80,39 @@ export default createReactClass({ this.setState({protocolsLoading: false}); return; } - MatrixClientPeg.get().getThirdpartyProtocols().then((response) => { - this.protocols = response; - this.setState({protocolsLoading: false}); - }, (err) => { - console.warn(`error loading third party protocols: ${err}`); - this.setState({protocolsLoading: false}); - if (MatrixClientPeg.get().isGuest()) { - // Guests currently aren't allowed to use this API, so - // ignore this as otherwise this error is literally the - // thing you see when loading the client! - return; - } - track('Failed to get protocol list from homeserver'); - const brand = SdkConfig.get().brand; - this.setState({ - error: _t( - '%(brand)s failed to get the protocol list from the homeserver. ' + - 'The homeserver may be too old to support third party networks.', - { brand }, - ), + + if (!this.state.selectedCommunityId) { + MatrixClientPeg.get().getThirdpartyProtocols().then((response) => { + this.protocols = response; + this.setState({protocolsLoading: false}); + }, (err) => { + console.warn(`error loading third party protocols: ${err}`); + this.setState({protocolsLoading: false}); + if (MatrixClientPeg.get().isGuest()) { + // Guests currently aren't allowed to use this API, so + // ignore this as otherwise this error is literally the + // thing you see when loading the client! + return; + } + track('Failed to get protocol list from homeserver'); + const brand = SdkConfig.get().brand; + this.setState({ + error: _t( + '%(brand)s failed to get the protocol list from the homeserver. ' + + 'The homeserver may be too old to support third party networks.', + {brand}, + ), + }); }); - }); + } else { + // We don't use the protocols in the communities v2 prototype experience + this.setState({protocolsLoading: false}); + + // Grab the profile info async + FlairStore.getGroupProfileCached(MatrixClientPeg.get(), this.state.selectedCommunityId).then(profile => { + this.setState({communityName: profile.name}); + }); + } this.refreshRoomList(); }, @@ -105,6 +125,33 @@ export default createReactClass({ }, refreshRoomList: function() { + if (this.state.selectedCommunityId) { + this.setState({ + publicRooms: GroupStore.getGroupRooms(this.state.selectedCommunityId).map(r => { + return { + // Translate all the group properties to the directory format + room_id: r.roomId, + name: r.name, + topic: r.topic, + canonical_alias: r.canonicalAlias, + num_joined_members: r.numJoinedMembers, + avatarUrl: r.avatarUrl, + world_readable: r.worldReadable, + guest_can_join: r.guestsCanJoin, + }; + }).filter(r => { + const filterString = this.state.filterString; + if (filterString) { + const containedIn = (s: string) => (s || "").toLowerCase().includes(filterString.toLowerCase()); + return containedIn(r.name) || containedIn(r.topic) || containedIn(r.canonical_alias); + } + return true; + }), + loading: false, + }); + return; + } + this.nextBatch = null; this.setState({ publicRooms: [], @@ -114,6 +161,7 @@ export default createReactClass({ }, getMoreRooms: function() { + if (this.state.selectedCommunityId) return Promise.resolve(); // no more rooms if (!MatrixClientPeg.get()) return Promise.resolve(); this.setState({ @@ -239,7 +287,7 @@ export default createReactClass({ }, onRoomClicked: function(room, ev) { - if (ev.shiftKey) { + if (ev.shiftKey && !this.state.selectedCommunityId) { ev.preventDefault(); this.removeFromDirectory(room); } else { @@ -610,6 +658,18 @@ export default createReactClass({ } } + let dropdown = ( + + ); + if (this.state.selectedCommunityId) { + dropdown = null; + } + listHeader =
- + {dropdown}
; } const explanation = @@ -637,12 +692,16 @@ export default createReactClass({ }}, ); + const title = this.state.selectedCommunityId + ? _t("Explore rooms in %(communityName)s", { + communityName: this.state.communityName || this.state.selectedCommunityId, + }) : _t("Explore rooms"); return (
{explanation} From 276ed90884d03be7a0ff745f24213a869d3c4191 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Fri, 21 Aug 2020 18:10:05 -0600 Subject: [PATCH 284/424] Add a personal group for an all-communities state Design is approximate and needs review, though being completed out of band. --- res/css/structures/_TagPanel.scss | 10 +- res/themes/dark/css/_dark.scss | 2 + res/themes/legacy-dark/css/_legacy-dark.scss | 2 + .../legacy-light/css/_legacy-light.scss | 2 + res/themes/light/css/_light.scss | 2 + src/components/structures/TagPanel.js | 15 ++- src/components/views/elements/TagTile.js | 1 + src/components/views/elements/UserTagTile.tsx | 99 +++++++++++++++++++ 8 files changed, 129 insertions(+), 4 deletions(-) create mode 100644 src/components/views/elements/UserTagTile.tsx diff --git a/res/css/structures/_TagPanel.scss b/res/css/structures/_TagPanel.scss index b2d05ad7e6..6c85341aaf 100644 --- a/res/css/structures/_TagPanel.scss +++ b/res/css/structures/_TagPanel.scss @@ -51,9 +51,9 @@ limitations under the License. .mx_TagPanel .mx_TagPanel_divider { height: 0px; - width: 34px; - border-bottom: 1px solid $panel-divider-color; - display: none; + width: 90%; + border: none; + border-bottom: 1px solid $tagpanel-divider-color; } .mx_TagPanel .mx_TagPanel_scroller { @@ -116,6 +116,10 @@ limitations under the License. border-radius: 0 3px 3px 0; } +.mx_TagPanel .mx_TagTile.mx_TagTile_large.mx_TagTile_selected::before { + left: -10px; +} + .mx_TagPanel .mx_TagTile.mx_AccessibleButton:focus { filter: none; } diff --git a/res/themes/dark/css/_dark.scss b/res/themes/dark/css/_dark.scss index d48abf6a4c..a3b03c777e 100644 --- a/res/themes/dark/css/_dark.scss +++ b/res/themes/dark/css/_dark.scss @@ -119,6 +119,8 @@ $roomlist-bg-color: rgba(33, 38, 44, 0.90); $roomlist-header-color: $tertiary-fg-color; $roomsublist-divider-color: $primary-fg-color; +$tagpanel-divider-color: $roomlist-header-color; + $roomtile-preview-color: $secondary-fg-color; $roomtile-default-badge-bg-color: #61708b; $roomtile-selected-bg-color: rgba(141, 151, 165, 0.2); diff --git a/res/themes/legacy-dark/css/_legacy-dark.scss b/res/themes/legacy-dark/css/_legacy-dark.scss index 4ab5f99942..2741dcebf8 100644 --- a/res/themes/legacy-dark/css/_legacy-dark.scss +++ b/res/themes/legacy-dark/css/_legacy-dark.scss @@ -116,6 +116,8 @@ $roomlist-bg-color: $header-panel-bg-color; $roomsublist-divider-color: $primary-fg-color; +$tagpanel-divider-color: $roomlist-header-color; + $roomtile-preview-color: #9e9e9e; $roomtile-default-badge-bg-color: #61708b; $roomtile-selected-bg-color: #1A1D23; diff --git a/res/themes/legacy-light/css/_legacy-light.scss b/res/themes/legacy-light/css/_legacy-light.scss index 6e66964fdf..4fd2a3615b 100644 --- a/res/themes/legacy-light/css/_legacy-light.scss +++ b/res/themes/legacy-light/css/_legacy-light.scss @@ -183,6 +183,8 @@ $roomlist-bg-color: $header-panel-bg-color; $roomlist-header-color: $primary-fg-color; $roomsublist-divider-color: $primary-fg-color; +$tagpanel-divider-color: $roomlist-header-color; + $roomtile-preview-color: #9e9e9e; $roomtile-default-badge-bg-color: #61708b; $roomtile-selected-bg-color: #fff; diff --git a/res/themes/light/css/_light.scss b/res/themes/light/css/_light.scss index ceb8d5677c..05302a2a80 100644 --- a/res/themes/light/css/_light.scss +++ b/res/themes/light/css/_light.scss @@ -177,6 +177,8 @@ $roomlist-bg-color: rgba(245, 245, 245, 0.90); $roomlist-header-color: $tertiary-fg-color; $roomsublist-divider-color: $primary-fg-color; +$tagpanel-divider-color: $roomlist-header-color; + $roomtile-preview-color: $secondary-fg-color; $roomtile-default-badge-bg-color: #61708b; $roomtile-selected-bg-color: #FFF; diff --git a/src/components/structures/TagPanel.js b/src/components/structures/TagPanel.js index 4f8a051e62..3acec417f2 100644 --- a/src/components/structures/TagPanel.js +++ b/src/components/structures/TagPanel.js @@ -29,6 +29,8 @@ import { Droppable } from 'react-beautiful-dnd'; import classNames from 'classnames'; import MatrixClientContext from "../../contexts/MatrixClientContext"; import AutoHideScrollbar from "./AutoHideScrollbar"; +import SettingsStore from "../../settings/SettingsStore"; +import UserTagTile from "../views/elements/UserTagTile"; const TagPanel = createReactClass({ displayName: 'TagPanel', @@ -102,6 +104,17 @@ const TagPanel = createReactClass({ dis.dispatch({action: 'deselect_tags'}); }, + renderGlobalIcon() { + if (!SettingsStore.getValue("feature_communities_v2_prototypes")) return null; + + return ( +
+ +
+
+ ); + }, + render() { const DNDTagTile = sdk.getComponent('elements.DNDTagTile'); const AccessibleButton = sdk.getComponent('elements.AccessibleButton'); @@ -137,7 +150,6 @@ const TagPanel = createReactClass({
{ clearButton }
-
+ { this.renderGlobalIcon() } { tags }
{ + private tagStoreRef: fbEmitter.EventSubscription; + + constructor(props: IProps) { + super(props); + + this.state = { + selected: TagOrderStore.getSelectedTags().length === 0, + }; + } + + public componentDidMount() { + OwnProfileStore.instance.on(UPDATE_EVENT, this.onProfileUpdate); + this.tagStoreRef = TagOrderStore.addListener(this.onTagStoreUpdate); + } + + public componentWillUnmount() { + OwnProfileStore.instance.off(UPDATE_EVENT, this.onProfileUpdate); + } + + private onProfileUpdate = () => { + this.forceUpdate(); + }; + + private onTagStoreUpdate = () => { + const selected = TagOrderStore.getSelectedTags().length === 0; + this.setState({selected}); + }; + + private onTileClick = (ev) => { + ev.preventDefault(); + ev.stopPropagation(); + + // Deselect all tags + defaultDispatcher.dispatch({action: "deselect_tags"}); + }; + + public render() { + // XXX: We reuse TagTile classes for ease of demonstration - we should probably generify + // TagTile instead if we continue to use this component. + const avatarHeight = 36; + const name = OwnProfileStore.instance.displayName || MatrixClientPeg.get().getUserId(); + const className = classNames({ + mx_TagTile: true, + mx_TagTile_selected: this.state.selected, + mx_TagTile_large: true, + }); + return ( + +
+ +
+
+ ); + } +} From f0bd4d3625e3f38c6b4f8935fed1f3bd808b644a Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Fri, 21 Aug 2020 18:17:57 -0600 Subject: [PATCH 285/424] Show the group's room if one is returned --- .../views/dialogs/CreateGroupDialog.js | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/components/views/dialogs/CreateGroupDialog.js b/src/components/views/dialogs/CreateGroupDialog.js index 10285ccee0..d8a8b96961 100644 --- a/src/components/views/dialogs/CreateGroupDialog.js +++ b/src/components/views/dialogs/CreateGroupDialog.js @@ -83,11 +83,18 @@ export default createReactClass({ localpart: this.state.groupId, profile: profile, }).then((result) => { - dis.dispatch({ - action: 'view_group', - group_id: result.group_id, - group_is_new: true, - }); + if (result.room_id) { + dis.dispatch({ + action: 'view_room', + room_id: result.room_id, + }); + } else { + dis.dispatch({ + action: 'view_group', + group_id: result.group_id, + group_is_new: true, + }); + } this.props.onFinished(true); }).catch((e) => { this.setState({createError: e}); From 8e23b1072fdd6d4147ac4c30a5e62ae747db4e92 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Fri, 21 Aug 2020 18:27:49 -0600 Subject: [PATCH 286/424] Add i18n it's probably important --- src/i18n/strings/en_EN.json | 1 + 1 file changed, 1 insertion(+) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 3ffc11b5b8..c66211ff41 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -2072,6 +2072,7 @@ "Find a room…": "Find a room…", "Find a room… (e.g. %(exampleRoom)s)": "Find a room… (e.g. %(exampleRoom)s)", "If you can't find the room you're looking for, ask for an invite or Create a new room.": "If you can't find the room you're looking for, ask for an invite or Create a new room.", + "Explore rooms in %(communityName)s": "Explore rooms in %(communityName)s", "Clear filter": "Clear filter", "Search rooms": "Search rooms", "You can't send any messages until you review and agree to our terms and conditions.": "You can't send any messages until you review and agree to our terms and conditions.", From 531030e180699aa5f97848f961ea9a3329fa8c26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Priit=20J=C3=B5er=C3=BC=C3=BCt?= Date: Fri, 21 Aug 2020 22:13:10 +0000 Subject: [PATCH 287/424] Translated using Weblate (Estonian) Currently translated at 100.0% (2335 of 2335 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/et/ --- src/i18n/strings/et.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/et.json b/src/i18n/strings/et.json index 89df7c4f26..2eb000d7b5 100644 --- a/src/i18n/strings/et.json +++ b/src/i18n/strings/et.json @@ -170,7 +170,7 @@ "Are you sure you want to remove %(serverName)s": "Kas sa oled kindel et soovid eemadlada %(serverName)s", "Remove server": "Eemalda server", "%(networkName)s rooms": "%(networkName)s jututoad", - "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Kas sa oled kindel et soovid eemaldada (kustutada) seda sündmust? Pane tähele, et see muutus võib tagasi pöörduda, kui muudad hiljem jututoa nime või teemanime.", + "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Kas sa oled kindel et soovid eemaldada (kustutada) seda sündmust? Pane tähele, et see muutus võib tagasi pöörduda, kui muudad hiljem jututoa nime või teema nime.", "Sign out and remove encryption keys?": "Logi välja ja eemalda krüptimisvõtmed?", "Upload files (%(current)s of %(total)s)": "Lae failid üles (%(current)s / %(total)s)", "Upload files": "Lae failid üles", From 449bcc1c45e20d9840b3c1810f90c4467bb58178 Mon Sep 17 00:00:00 2001 From: ziriSut Date: Sat, 22 Aug 2020 07:24:29 +0000 Subject: [PATCH 288/424] Translated using Weblate (Kabyle) Currently translated at 75.7% (1768 of 2335 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/kab/ --- src/i18n/strings/kab.json | 247 +++++++++++++++++++++++++++++++++++++- 1 file changed, 244 insertions(+), 3 deletions(-) diff --git a/src/i18n/strings/kab.json b/src/i18n/strings/kab.json index 2117158ed8..2c65421910 100644 --- a/src/i18n/strings/kab.json +++ b/src/i18n/strings/kab.json @@ -1459,7 +1459,7 @@ "in secret storage": "deg uklas uffir", "Master private key:": "Tasarut tusligt tagejdant:", "cached locally": "yettwaffer s wudem adigan", - "not found locally": "Ulac s wudem adigan", + "not found locally": "ulac s wudem adigan", "Self signing private key:": "Tasarut tusligt n uzmul awurman:", "User signing private key:": "Tasarut tusligt n uzmul n useqdac:", "Session backup key:": "Tasarut n uḥraz n tɣimit:", @@ -1540,7 +1540,7 @@ "Invalid file%(extra)s": "D afaylu %(extra)s arameɣtu", "Error decrypting image": "Tuccḍa deg uwgelhen n tugna", "Show image": "Sken tugna", - "Invalid base_url for m.identity_server": "base_url d arameɣtu i m.identity_server", + "Invalid base_url for m.identity_server": "D arameɣtu base_url i m.identity_server", "Signing In...": "Anekcum ɣer...", "If you've joined lots of rooms, this might take a while": "Ma yella tettekkaḍ deg waṭas n texxamin, ayagi yezmer ad yeṭṭef kra n wakud", "Set a display name:": "Sbadu isem n uskan:", @@ -1560,5 +1560,246 @@ "Copy it to your personal cloud storage": "Nɣel-itt ɣer uklas-ik·im n usigna udmawan", "Your keys are being backed up (the first backup could take a few minutes).": "Tisura-ik·im la ttwaḥrazent (aḥraz amezwaru yezmer ad yeṭṭef kra n tesdidin).", "Set up Secure Message Recovery": "Sbadu iznan iɣelsanen n tririt", - "Secure your backup with a recovery passphrase": "Ḍmen aḥrazen-inek·inem s tefyirt tuffirt n uɛeddi" + "Secure your backup with a recovery passphrase": "Ḍmen aḥrazen-inek·inem s tefyirt tuffirt n uɛeddi", + "Unexpected error resolving homeserver configuration": "Tuccḍa ur nettwaṛǧa ara lawan n uṣeggem n twila n uqeddac agejdan", + "Unexpected error resolving identity server configuration": "Tuccḍa ur nettwaṛǧa ara lawan n uṣeggem n uqeddac n timagit", + "This homeserver has exceeded one of its resource limits.": "Aqeddac-a agejdan iɛedda yiwet seg tlisa-ines tiɣbula.", + "Your browser does not support the required cryptography extensions": "Iminig-ik·im ur issefrak ara iseɣzaf n uwgelhen yettusran", + "Authentication check failed: incorrect password?": "Asenqed n usesteb ur yeddi ara: awal uffir d arameɣtu?", + "Can't leave Server Notices room": "Ur nezmir ara ad neǧǧ taxxamt n yiwenniten n uqeddac", + "This room is used for important messages from the Homeserver, so you cannot leave it.": "Taxxamt-a tettuseqdac i yiznan yesɛan azal sɣur aqeddac agejdan, ɣef waya ur tezmireḍ ara ad tt-teǧǧeḍ.", + "Error leaving room": "Tuccaḍa deg tuffɣa seg texxamt", + "The user must be unbanned before they can be invited.": "Aseqdac ilaq ad yettwakkes uqbel ad izmiren ad t-id-snubegten.", + "Use a longer keyboard pattern with more turns": "Seqdec talɣa n unasiw ɣezzifen s wugar n tuzzyiwin", + "Capitalization doesn't help very much": "Tira timeqqranin ur tettɛawan ara aṭas", + "Reversed words aren't much harder to guess": "Awalen imettiyen ur weɛrit ara i tifin", + "Predictable substitutions like '@' instead of 'a' don't help very much": "Isnifal yettbeddilen am '@' deg wadeg n 'a' ur ttɛawanen ara aṭas", + "Repeats like \"aaa\" are easy to guess": "Allus am \"aaa\" fessus i usumer", + "Repeats like \"abcabcabc\" are only slightly harder to guess than \"abc\"": "Allus am \"abcabcabc\" yewɛer cwiṭ i tifin ɣef \"abc\"", + "Sequences like abc or 6543 are easy to guess": "Asemyizwer am abc neɣ 6543 fessus i usumer", + "This is similar to a commonly used password": "Wagi kifkif am wawal uffir yettwaseqdacen acḥal n tikkal", + "A word by itself is easy to guess": "Awal s timmad-is fessus i usumer", + "Names and surnames by themselves are easy to guess": "Ismawen d yismawen n useqdac s timmad-nsen fessusit i usumer", + "Common names and surnames are easy to guess": "Ismawen d yismawen n useqdac yettwassnen fessusit i usumer", + "Straight rows of keys are easy to guess": "Idurren ubdisen n tsura fessusit i ussumer", + "Short keyboard patterns are easy to guess": "Tinerufin n unasiw amecṭuḥ fessusit i ussumer", + "Help us improve %(brand)s": "Mudd-aɣ-d tallalt ad nesnerni %(brand)s", + "Send anonymous usage data which helps us improve %(brand)s. This will use a cookie.": "Azen inesfka n useqdec udrig ayen ara aɣ-iɛawnen ad nesnerni %(brand)s. Ayagi ad isseqdec inagan n tuqqna.", + "Review where you’re logged in": "Senqed ansi i d-tkecmeḍ", + "Verify all your sessions to ensure your account & messages are safe": "Senqed akk tiqimiyin-ik·im i wakken ad tḍemneḍ amiḍan-ik·m & yiznan d iɣelsanen", + "You are not receiving desktop notifications": "Ur d-termiseḍ ara ilɣa n tnarit", + "Your homeserver has exceeded its user limit.": "Aqeddac-inek·inem agejdan yewweḍ ɣer talast n useqdac.", + "Your homeserver has exceeded one of its resource limits.": "Aqeddac-inek·inem agejdan iɛedda yiwet seg tlisa-ines tiɣbula.", + "Contact your server admin.": "Nermes anedbal-inek·inem n uqeddac.", + "To return to your account in future you need to set a password": "Akken ad tuɣaleḍ ɣer umiḍan-ik·im ɣer sdat tesriḍ ad tesbaduḍ awal uffir", + "New spinner design": "Afeṣṣel amaynut n usezzay", + "Render simple counters in room header": "Err amsiḍen afessa ɣef uqerru n texxamt", + "Multiple integration managers": "Imsefrak n waṭas n yimsidaf", + "Try out new ways to ignore people (experimental)": "Ɛreḍ iberdan-nniḍen i tigtin n yimdanen (armitan)", + "Show message previews for reactions in DMs": "Sken timeẓriwin n yiznan i tsedmirin deg DMs", + "Show message previews for reactions in all rooms": "Sken timeẓriwin n yiznan i tsedmirin deg meṛṛa tixxamin", + "Enable advanced debugging for the room list": "Rmed tamseɣtayt leqqayen i tebdart n texxamt", + "Enable big emoji in chat": "Rmed imujit ameqqran deg udiwenni", + "Automatically replace plain text Emoji": "Semselsi iujit n uḍris aččuran s wudem awurman", + "Enable Community Filter Panel": "Rmed agalis n umsizdeg n temɣiwent", + "Use a system font": "Seqdec tasefsit n unagraw", + "Size must be a number": "Teɣzi ilaq ad tili d uṭṭun", + "Message layout": "Talɣa n yizen", + "Discovery": "Tagrut ", + "Help & About": "Tallalt & Ɣef", + "Homeserver is": "Aqeddac agejdan d", + "Identity Server is": "Aqeddac n timagit d", + "Access Token:": "Ajuṭu n unekcum:", + "click to reveal": "sit i ubeggen", + "Labs": "Tinarimin", + "Customise your experience with experimental labs features. Learn more.": "Sagen tarmit-ik·im s tmahilin n tinarimin tirmitanin. Issin ugar.", + "Error adding ignored user/server": "Tuccḍa deg tmerna n useqdac/uqeddac yettwanfen", + "Something went wrong. Please try again or view your console for hints.": "Yella wayen ur nteddu ara akken iwata, ma ulac aɣilif ales tikkelt-nniḍen neɣ senqed tadiwent-ik·im i yiwellihen.", + "Error subscribing to list": "Tuccḍa deg ujerred ɣef tebdart", + "Please verify the room ID or address and try again.": "Ma ulac aɣilif senqed asulay n texxamt neɣ tansa syen ɛreḍ tikkelt-nniḍen.", + "Error removing ignored user/server": "Tuccḍa deg tukksa n useqdac/uqeddac yettwanfen", + "Please try again or view your console for hints.": "Ma ulac aɣilif ales tikkelt-nniḍen neɣ senqed tadiwent-ik·im i yiwellihen.", + "Ban list rules - %(roomName)s": "Ilugan n tebdart n tigtin - %(roomName)s", + "You have not ignored anyone.": "Ur tunifeḍ ula i yiwen.", + "You are not subscribed to any lists": "Ur tettwajerrdeḍ ula deg yiwet n tebdart", + "View rules": "Senqed ilugan", + "You are currently subscribed to:": "Aql-ak·akem akka tura tjerrdeḍ ɣer:", + "⚠ These settings are meant for advanced users.": "⚠ Iɣewwaren-a n yiseqdac ifazen.", + "Subscribed lists": "Tibdarin n ujerred", + "Import E2E room keys": "Kter tisura n texxamt E2E", + "Cryptography": "Awgelhan", + "Session key:": "Tasarut n tɣimit:", + "Bulk options": "Tixtiṛiyin s ubleɣ", + "Accept all %(invitedRooms)s invites": "Qbel akk tinubgiwin %(invitedRooms)s", + "Reject all %(invitedRooms)s invites": "Agi akk tinubgiwin %(invitedRooms)s", + "Key backup": "Araz n tsarut", + "Cross-signing": "Azmul anmidag", + "Security & Privacy": "Taɣellist & tbaḍnit", + "Where you’re logged in": "Ansi i d-tkecmeḍ", + "Learn more about how we use analytics.": "Issin ugar ɣef wamek i nesseqdac tasleḍt.", + "No media permissions": "Ulac tisirag n umidyat", + "Missing media permissions, click the button below to request.": "Ulac tisirag n umidyat, sit ɣef tqeffalt ddaw i usentem.", + "Request media permissions": "Suter tisirag n umidyat", + "No Audio Outputs detected": "Ulac tuffɣiwin n umeslaw i d-yettwafen", + "No Microphones detected": "Ulac isawaḍen i d-yettwafen", + "No Webcams detected": "Ulac tikamiṛatin i d-yettwafen", + "Audio Output": "Tuffɣa n umeslaw", + "View older messages in %(roomName)s.": "Senqed iznan iqburen deg %(roomName)s.", + "Room information": "Talɣut n texxamt", + "Developer options": "Tixtiṛiyin s uneflay", + "This room is bridging messages to the following platforms. Learn more.": "Taxxamt-a tettcuddu iznan ɣer tɣerɣar i d-iteddun. Issin ugar.", + "This room isn’t bridging messages to any platforms. Learn more.": "Taxxamt-a ur tettcuddu ara iznan ɣer tɣerɣar i d-iteddun. Issin ugar.", + "Bridges": "Tileggiyin", + "Room Addresses": "Tansiwin n texxamt", + "URL Previews": "Tiskanin n URL", + "Uploaded sound": "Ameslaw i d-yulin", + "Set a new custom sound": "Sbadu ameslaw udmawan amaynut", + "Change room avatar": "Beddel avaṭar n texxamt", + "Change room name": "Beddel isem n texxamt", + "Change history visibility": "Beddel amazray n texxamt", + "Modify widgets": "Snifel iwiǧiten", + "Unban": "Asefsex n tigtin", + "Error changing power level requirement": "Tuccḍa deg usnifel n tuttra n uswir afellay", + "Error changing power level": "Tuccḍa deg usnifel n uswir afellay", + "Notify everyone": "Selɣu yal yiwen", + "Send %(eventType)s events": "Azen tidyanin n %(eventType)s", + "Roles & Permissions": "Timlellay & Tisirag", + "Click here to fix": "Sit dagi i uṣeggem", + "To link to this room, please add an address.": "I ucuddu ɣer texxamt-a, ttxil-k·m rnu tansa.", + "Only people who have been invited": "Ala imdanen i d-yettusnubegten", + "Anyone who knows the room's link, apart from guests": "Yal win·tin yessnen aseɣwen n texxamt slid inebgawen", + "Anyone who knows the room's link, including guests": "Yal win·tin yessnen aseɣwen n texxamt rnu-d ɣer-sen inebgawen", + "Members only (since the point in time of selecting this option)": "Iɛeggalen kan (segmi yebda ufran n textiṛit-a)", + "Members only (since they were invited)": "Iɛeggalen kan (segmi ara d-ttwanecden)", + "Members only (since they joined)": "Iɛeggalen kan (segmi ara d-ttwarnun)", + "Encrypted": "Yettwawgelhen", + "Who can access this room?": "Anwa i izemren ad d-yernu ɣer texxamt-a?", + "Who can read history?": "Anwa i izemren ad d-iɣer amazray?", + "Unable to revoke sharing for email address": "Asefsex n beṭṭu n tansa n yimayl ur yeddi ara", + "Unable to share email address": "Beṭṭu n tansa n yimayl ur yeddi ara", + "Your email address hasn't been verified yet": "Tansa n yimayl-ik·im ur tettwasenqed ara akka ar tura", + "Unable to verify email address.": "Asenqed n tansa n yimayl ur yeddi ara.", + "Verify the link in your inbox": "Senqed aseɣwen deg tbewwaḍt-ik·im n yimayl", + "Revoke": "Ḥwi", + "Unable to revoke sharing for phone number": "Aḥwi n beṭṭu n tansa n yimayl ur yeddi ara", + "Unable to share phone number": "Beṭṭu n wuṭṭun n tilifun ur yeddi ara", + "Unable to verify phone number.": "Asenqed n wuṭṭun n tilifun ur yeddi ara.", + "Incorrect verification code": "Tangalt n usenqed d tarussint", + "Please enter verification code sent via text.": "Ttxil-k·m sekcem tangalt n usenqed i ak·am-d-yettwaznen s SMS.", + "Unable to remove contact information": "Tukksa n talɣut n unermas ur teddi ara", + "Invalid Email Address": "Tansa n yimayl d tarameɣtut", + "This doesn't appear to be a valid email address": "Tagi ur tettban ara d tansa n yimayl tameɣtut", + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains.": "Izen n uḍris yettwazen ɣer +%(msisdn)s. Ttxil-k·m sekcem tangalt n usenqed yellan deg-s.", + "Cannot add any more widgets": "Ur yezmir ara ad yernu ugar n yiwiǧiten", + "Add a widget": "Rnu awiǧit", + "Drop File Here": "Sers afaylu dagi", + "Drop file here to upload": "Eǧǧ afaylu dagi i usali", + " (unsupported)": " ·(ur yettwasefrak ara)", + "Join as voice or video.": "Ttekki d taɣuct neɣ tavidyut.", + "Ongoing conference call%(supportedText)s.": "Asarag s usiwel iteddu%(supportedText)s.", + "This user has not verified all of their sessions.": "Aseqdac-a ur issenqed ara akk tiɣimiyin-ines.", + "You have not verified this user.": "Ur tesneqdeḍ aea aseqdac-a.", + "You have verified this user. This user has verified all of their sessions.": "Tesneqdeḍ aseqdac-a. Aseqdac-a issenqed akk tiɣimiyin-ines.", + "Someone is using an unknown session": "Yella win yesseqdacen tiɣimit tarussint", + "Everyone in this room is verified": "Yal yiwen deg taxxamt-a yettwasenqed", + "Mod": "Atrar", + "This event could not be displayed": "Tadyant-a ur tezmir ad d-tettwaskan", + "%(senderName)s sent an image": "%(senderName)s yuzen-d tugna", + "%(senderName)s sent a video": "%(senderName)s yuzen-d tavidyut", + "%(senderName)s uploaded a file": "%(senderName)s yessuli-d afaylu", + "Your key share request has been sent - please check your other sessions for key share requests.": "Asuter-ik·im n beṭṭ n tsarut yettwazen - ttxil-k·m senqed tiɣimiyin-ik·im-nniḍen i yisutar n beṭṭu n tsarut.", + "Re-request encryption keys from your other sessions.": "Suter i tikkelt-nniḍen tisura n uwgelhen seg tɣimiyin-ik·im tiyaḍ.", + "Encrypted by an unverified session": "Yettuwgelhen s tɣimit ur nettwasenqed ara", + "Unencrypted": "Ur yettwawgelhen ara", + "The authenticity of this encrypted message can't be guaranteed on this device.": "Asesteb n yizen-a awgelhen ur yettwaḍman ara deg yibenk-a.", + "Please select the destination room for this message": "Ttxil-k·m fren taxxamt n userken n yizen-a", + "Invited": "Yettwancad", + "Hangup": "Ɛelleq", + "Emoji picker": "Amefran n yimujit", + "The conversation continues here.": "Adiwenni yettkemmil dagi.", + "This room has been replaced and is no longer active.": "Taxxamt-a ad tettusmelsi, dayen d tarurmidt.", + "You do not have permission to post to this room": "Ur tesεiḍ ara tasiregt ad d-tsuffɣeḍ deg texxamt-a", + "Code block": "Iḥder n tengalt", + "Unpin Message": "Senser-d izen", + "Jump to message": "Ɛeddi ɣer yizen", + "%(duration)ss": "%(duration)ss", + "%(duration)sm": "%(duration)sm", + "%(duration)sh": "%(duration)sh", + "%(duration)sd": "%(duration)sd", + "Unknown for %(duration)s": "D arussin azal n %(duration)s", + "Offline": "Beṛṛa n tuqqna", + "Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "Iwala-t %(displayName)s (%(userName)s) ɣef %(dateTime)s", + "Room %(name)s": "Taxxamt %(name)s", + "No recently visited rooms": "Ulac taxxamt yemmeẓren melmi kan", + "No rooms to show": "Ulac tixxamin i uskan", + "Unnamed room": "Taxxamt war isem", + "World readable": "Amaḍal yettwaɣran", + "(~%(count)s results)|other": "(~%(count)s igmaḍ)", + "Share room": "Bḍu taxxamt", + "Invites": "Inced-d", + "Start chat": "Bdu adiwenni", + "Create new room": "Rnu taxxamt tamaynut", + "Explore public rooms": "Snirem tixxamin tizuyaz", + "Low priority": "Tazwart taddayt", + "Historical": "Amazray", + "Can't see what you’re looking for?": "Ur yezmir ara ad iwali acu i tettnadiḍ?", + "Explore all public rooms": "Snirem akk tixxamin tizuyaz", + "%(count)s results|other": "%(count)s yigmaḍ", + "Joining room …": "Rnu ɣer texxamt…", + "You were kicked from %(roomName)s by %(memberName)s": "Tettwasuffɣeḍ-d seg %(roomName)s sɣur %(memberName)s", + "Reason: %(reason)s": "Taɣzint: %(reason)s", + "You were banned from %(roomName)s by %(memberName)s": "Tettwaɛezleḍ-d seg %(roomName)s sɣur %(memberName)s", + "Something went wrong with your invite to %(roomName)s": "Yella wayen ur nteddu ara akken ilaq d tinubga-ik·im ɣer %(roomName)s", + "unknown error code": "Tangalt n tuccḍa tarussint", + "You can only join it with a working invite.": "Tzemreḍ kan ad ternuḍ ɣer-s ala s tinubga n uxeddim.", + "You can still join it because this is a public room.": "Mazal tzemreḍ ad ternuḍ ɣer-s acku taxxamt-a d tazayezt.", + "This invite to %(roomName)s was sent to %(email)s which is not associated with your account": "Tinubga-a ɣer %(roomName)s tettwazen i %(email)s ur nettwacudd ara d umiḍan-ik·im", + "Link this email with your account in Settings to receive invites directly in %(brand)s.": "Qqen imayl-a ɣer umiḍan-ik·im deg yiɣewwaren i wakken ad d-tremseḍ tinubgiwin srid deg %(brand)s.", + "This invite to %(roomName)s was sent to %(email)s": "Tinubga-a ɣer %(roomName)s tettwazen i %(email)s", + "Use an identity server in Settings to receive invites directly in %(brand)s.": "Seqdec aqeddac n timagit deg yiɣewwaren i wakken ad d-tremseḍ tinubgiwin srid deg %(brand)s.", + "Share this email in Settings to receive invites directly in %(brand)s.": "Bḍu imayl-a deg yiɣewwaren i wakken ad d-tremseḍ tinubgiwin srid deg %(brand)s.", + "Do you want to chat with %(user)s?": "Tebɣiḍ ad temmeslayeḍ d %(user)s?", + " wants to chat": " yebɣa ad immeslay", + "Do you want to join %(roomName)s?": "Tebɣiḍ ad tettekkiḍ deg %(roomName)s?", + " invited you": " inced-ik·im", + "You're previewing %(roomName)s. Want to join it?": "Tessenqadeḍ %(roomName)s. Tebɣiḍ ad ternuḍ ɣur-s?", + "%(roomName)s can't be previewed. Do you want to join it?": "%(roomName)s ur tezmir ara ad tettwasenqed. Tebɣiḍ ad ternuḍ ɣer-s?", + "Favourited": "Yettusmenyaf", + "Favourite": "Asmenyif", + "Low Priority": "Tazwart taddayt", + "%(count)s unread messages including mentions.|other": "%(count)s yiznan ur nettwaɣra ara rnu ɣer-sen ibdaren.", + "This room has already been upgraded.": "Taxxamt-a tettuleqqam yakan.", + "This room is running room version , which this homeserver has marked as unstable.": "Taxxamt-a tesedday lqem n texxamt , i yecreḍ uqeddac-a agejdan ur yerkid ara.", + "Only room administrators will see this warning": "Ala inedbalen kan n texxamt ara iwalin tuccḍa-a", + "Server unavailable, overloaded, or something else went wrong.": "Aqeddac ulac-it, neɣ iɛebba aṭas neɣ yella wayen ur nteddu ara akken ilaq.", + "You're all caught up.": "Tessawḍeḍ ad tqeḍɛeḍ kullec.", + "The server has denied your request.": "Aqeddac yugi asuter-ik·im.", + "Your area is experiencing difficulties connecting to the internet.": "Tamnaḍt-ik·im temlal-d uguren n tuqqna ɣer internet.", + "A connection error occurred while trying to contact the server.": "Tuccḍa deg tuqqna lawan n uneɛruḍ ad nnermes aqeddac.", + "The server is not configured to indicate what the problem is (CORS).": "Aqeddac ur yettusesteb ara i wakken ad d-imel anida-t wugur (CORPS).", + "Recent changes that have not yet been received": "Isnifal imaynuten ur d-newwiḍ ara akka ar tura", + "Sign out and remove encryption keys?": "Ffeɣ syen kkes tisura tiwgelhanin?", + "You have successfully set a password!": "Tesbaduḍ akken iwata awal uffir!", + "You have successfully set a password and an email address!": "Tesbaduḍ akken iwata awal uffird tansa n yimayl!", + "You can now return to your account after signing out, and sign in on other devices.": "Tzemreḍ tura ad tuɣaleḍ ɣer umiḍan-ik·im mbeɛd mi d-teffɣeḍ, syen kcem ɣer yibenkan-nniḍen.", + "Remember, you can always set an email address in user settings if you change your mind.": "Cfu, tzemreḍ melmi i ak-yehwa ad tesbaduḍ tansa n yimayl deg yiɣewwaren n useqdac ma yella tbeddleḍ ṛṛay-ik·im.", + "(HTTP status %(httpStatus)s)": "(HTTP addad %(httpStatus)s)", + "Please set a password!": "Ttxil-ik·im sbadu awal uffir!", + "This will allow you to return to your account after signing out, and sign in on other sessions.": "Ayagi ad ak·akem-yeǧǧ ad tuɣaleḍ ɣer umiḍan-ik·im mbeɛd mi d-teffɣeḍ, syen kcem ɣer yibenkan-nniḍen.", + "Share Room": "Bḍu taxxamt", + "Link to most recent message": "Aseɣwen n yizen akk aneggaru", + "Share Room Message": "Bḍu izen n texxamt", + "Command Help": "Tallalt n tiludna", + "Integration Manager": "Amsefrak n umsidef", + "Find others by phone or email": "Af-d wiyaḍ s tiliɣri neɣ s yimayl", + "Be found by phone or email": "Ad d-yettwaf s tiliɣri neɣ s yimayl", + "Upload files (%(current)s of %(total)s)": "Sali-d ifuyla (%(current)s ɣef %(total)s)", + "Liberate your communication": "Serreḥ i teywalt-ik·im", + "Explore Public Rooms": "Snirem tixxamin tizuyaz", + "Create a Group Chat": "Rnu adiwenni n ugraw", + "This room is not public. You will not be able to rejoin without an invite.": "Taxxamt-a mačči d tazayezt. Ur tezmireḍ ara ad ternuḍ ɣer-s war tinubga.", + "Are you sure you want to leave the room '%(roomName)s'?": "S tidet tebɣiḍ ad teǧǧeḍ taxxamt '%(roomName)s'?", + "For security, this session has been signed out. Please sign in again.": "Ɣef ssebba n tɣellist, taxxamt-a ad temdel. Ttxil-k·m ɛreḍ tikkelt-nniḍen.", + "Old cryptography data detected": "Ala isefka iweglehnen i d-iteffɣen", + "%(creator)s created and configured the room.": "%(creator)s yerna-d taxxamt syen yeswel taxxamt." } From 05d2bc80911bf968675bcbfe813d9fbe1d52aa6b Mon Sep 17 00:00:00 2001 From: Kahina Messaoudi Date: Sat, 22 Aug 2020 17:15:36 +0000 Subject: [PATCH 289/424] Translated using Weblate (Kabyle) Currently translated at 75.7% (1768 of 2335 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/kab/ --- src/i18n/strings/kab.json | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/src/i18n/strings/kab.json b/src/i18n/strings/kab.json index 2c65421910..f91615e1d8 100644 --- a/src/i18n/strings/kab.json +++ b/src/i18n/strings/kab.json @@ -60,7 +60,7 @@ "What's New": "D acu-t umaynut", "Update": "Leqqem", "Restart": "Ales tanekra", - "Font size": "Tuɣzi n tsefsit", + "Font size": "Teɣzi n tsefsit", "Decline": "Agwi", "Accept": "Qbel", "or": "neɣ", @@ -441,7 +441,7 @@ "Please contact your homeserver administrator.": "Ttxil-k/m nermes anedbal-ik/im n usebter agejdan.", "Failed to join room": "Anekcum ɣer texxamt ur yeddi ara", "Custom user status messages": "Sagen addaden n yiznan n useqdac", - "Support adding custom themes": "Tallalt n tmerna n yisental udmawanen", + "Support adding custom themes": "Tallelt n tmerna n yisental udmawanen", "Use custom size": "Seqdec teɣzi tudmawant", "Show avatar changes": "Sken isnifal n avatar", "Always show encryption icons": "Sken yal tikkelt tignitin tiwgelhanen", @@ -532,8 +532,8 @@ "Session already verified!": "Tiɣimit tettwasenqed yakan!", "Verified key": "Tasarut tettwasenqed", "Displays information about a user": "Yeskan talɣut ɣef useqdac", - "Send a bug report with logs": "Azen aneqqis n wabug s yiɣƔisen", - "Logs sent": "Iɣmisen ttewaznen", + "Send a bug report with logs": "Azen aneqqis n ubug s yiɣmisen", + "Logs sent": "Iɣmisen yettwaznen", "Opens chat with the given user": "Yeldi adiwenni d useqdac i d-yettunefken", "Sends a message to the given user": "Yuzen iznan i useqdac i d-yettunefken", "Displays action": "Yeskan tigawt", @@ -541,14 +541,14 @@ "%(senderName)s invited %(targetName)s.": "%(senderName)s inced-d %(targetName)s.", "%(senderName)s banned %(targetName)s.": "%(senderName)s yugi %(targetName)s.", "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s kksen isem ara d-ibanen (%(oldDisplayName)s).", - "%(senderName)s removed their profile picture.": "%(senderName)s yekkes tawlaft n umaqnu-ines.", + "%(senderName)s removed their profile picture.": "%(senderName)s yekkes tawlaft n umaɣnu-ines.", "%(senderName)s changed their profile picture.": "%(senderName)s ibeddel tawlaft n umaɣnu-ines.", "%(senderName)s set a profile picture.": "%(senderName)s yesbadu tawlaft n umaɣnu.", - "%(senderName)s made no change.": "%(senderName)s ur yegi ara ula d yiwen n ubeddel.", + "%(senderName)s made no change.": "%(senderName)s ur igi ara ula d yiwen n ubeddel.", "VoIP conference started.": "Asarag VoIP yebda.", "%(targetName)s joined the room.": "%(targetName)s yerna-d ɣer texxamt.", "VoIP conference finished.": "Asarag VoIP yekfa.", - "%(targetName)s rejected the invitation.": "%(targetName)s yeugi tinnubga.", + "%(targetName)s rejected the invitation.": "%(targetName)s yugi tinnubga.", "%(targetName)s left the room.": "%(targetName)s yeǧǧa texxamt.", "%(senderName)s unbanned %(targetName)s.": "%(senderName)s yeqbel %(targetName)s.", "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s yekkes-d tinnubga n %(targetName)s.", @@ -583,7 +583,7 @@ "Other users may not trust it": "Iseqdacen-nniḍen yezmer ur tettamnen ara", "You joined the call": "Terniḍ ɣer usiwel", "%(senderName)s joined the call": "%(senderName)s yerna ɣer usiwel", - "Call in progress": "Asiwel la iteddu", + "Call in progress": "Asiwel la itteddu", "You left the call": "Teǧǧiḍ asiwel", "%(senderName)s left the call": "%(senderName)s yeǧǧa asiwel", "Call ended": "Asiwel yekfa", @@ -787,7 +787,7 @@ "%(senderName)s set the main address for this room to %(address)s.": "%(senderName)s yesbadu tansa tagejdant i texxamt-a s %(address)s.", "%(senderName)s added the alternative addresses %(addresses)s for this room.|one": "%(senderName)s yerna tansa-nniḍen %(addresses)s i texxamt-a.", "%(senderName)s removed the alternative addresses %(addresses)s for this room.|other": "%(senderName)s yekkes tansa-nni-nniḍen %(addresses)s i texxamt-a.", - "%(senderName)s removed the alternative addresses %(addresses)s for this room.|one": "%(senderName)s yekkes tansa-nni tayeḍ %(addresses)s i texxamt-a.", + "%(senderName)s removed the alternative addresses %(addresses)s for this room.|one": "%(senderName)s yekkes tansa-nni-nniḍen %(addresses)s i texxamt-a.", "%(senderName)s changed the alternative addresses for this room.": "%(senderName)s ibeddel tansa-nni tayeḍ n texxamt-a.", "%(senderName)s changed the main and alternative addresses for this room.": "%(senderName)s ibeddel tansa tagejdant d tansa-nni tayeḍ i texxamt-a.", "Sends a message as html, without interpreting it as markdown": "Yuzen izen d html war ma isegza-t s tukksa n tecreḍt", @@ -1801,5 +1801,20 @@ "Are you sure you want to leave the room '%(roomName)s'?": "S tidet tebɣiḍ ad teǧǧeḍ taxxamt '%(roomName)s'?", "For security, this session has been signed out. Please sign in again.": "Ɣef ssebba n tɣellist, taxxamt-a ad temdel. Ttxil-k·m ɛreḍ tikkelt-nniḍen.", "Old cryptography data detected": "Ala isefka iweglehnen i d-iteffɣen", - "%(creator)s created and configured the room.": "%(creator)s yerna-d taxxamt syen yeswel taxxamt." + "%(creator)s created and configured the room.": "%(creator)s yerna-d taxxamt syen yeswel taxxamt.", + "You can register, but some features will be unavailable until the identity server is back online. If you keep seeing this warning, check your configuration or contact a server admin.": "Tzemreḍ ad tjerrdeḍ, maca kra n tmahilin ur ttilint ara almi yuɣal-d uqeddac n tmagit. Ma mazal tettwaliḍ alɣu-a, senqed tawila-inek•inem neɣ nermes anedbal n uqeddac.", + "You can reset your password, but some features will be unavailable until the identity server is back online. If you keep seeing this warning, check your configuration or contact a server admin.": "Tzemreḍ ad talseḍ awennez i wawal-ik•im uffir, maca kra n tmahilin ur ttilint ara almi yuɣal-d uqeddac n tmagit. Ma mazal tettwaliḍ alɣu-a, senqed tawila-inek•inem neɣ nermes anedbal n uqeddac.", + "You can log in, but some features will be unavailable until the identity server is back online. If you keep seeing this warning, check your configuration or contact a server admin.": "Tzemreḍ ad teqqneḍ, maca kra n tmahilin ur ttilint ara almi yuɣal-d uqeddac n tmagit. Ma mazal tettwaliḍ alɣu-a senqed tawila-inek•inem neɣ nermes anedbal n uqeddac.", + "Verify yourself & others to keep your chats safe": "Senqed iman-ik•im d wiyaḍ akken ad qqimen yidiwenniyen-ik•im d iɣellsanen", + "The person who invited you already left the room.": "Amdan i k•kem-iɛerḍen dayen yeǧǧa taxxamt.", + "The person who invited you already left the room, or their server is offline.": "Amdan i k•kem-iɛerḍen dayen yeǧǧa taxxamt, neɣ d aqeddac-is i d aruqqin.", + "Show info about bridges in room settings": "Sken-d tilɣa ɣef teqneṭrin deg yiɣewwaṛen n texxamt", + "Enable Emoji suggestions while typing": "Rmed asumer n yimujiten deg wakud n tira", + "Use a more compact ‘Modern’ layout": "Seqdec taneɣruft 'tatrart' yessden ugar", + "Show a placeholder for removed messages": "Sken-d iznan yettwakksen", + "Show join/leave messages (invites/kicks/bans unaffected)": "Sken iznan n tmerna d tuffɣa (tinubgiwin/asufeɣ/anfay ur ttwaḥsaben ara)", + "Enable automatic language detection for syntax highlighting": "Rmed tifin tawurmant n tutlayt i useɣti n tira", + "Show avatars in user and room mentions": "Sken ivataren deg ubdar n useqdac d texxamt", + "Never send encrypted messages to unverified sessions in this room from this session": "Ur ttɛawad ara ad d-tazneḍ iznan yettwawgelhen ɣer tɣimiyin ur nettwasenqed ara deg texxamt-a seg tɣimit-a", + "Enable URL previews by default for participants in this room": "Rmed taskant n URL amezwer i yimettekkiyen n texxamt-a" } From ef59b350e2911b3242c675d9caa05acdbd82ef01 Mon Sep 17 00:00:00 2001 From: ziriSut Date: Sat, 22 Aug 2020 18:07:54 +0000 Subject: [PATCH 290/424] Translated using Weblate (Kabyle) Currently translated at 77.9% (1820 of 2335 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/kab/ --- src/i18n/strings/kab.json | 59 +++++++++++++++++++++++++++++---------- 1 file changed, 44 insertions(+), 15 deletions(-) diff --git a/src/i18n/strings/kab.json b/src/i18n/strings/kab.json index f91615e1d8..a1951e9cb2 100644 --- a/src/i18n/strings/kab.json +++ b/src/i18n/strings/kab.json @@ -60,7 +60,7 @@ "What's New": "D acu-t umaynut", "Update": "Leqqem", "Restart": "Ales tanekra", - "Font size": "Teɣzi n tsefsit", + "Font size": "Tuɣzi n tsefsit", "Decline": "Agwi", "Accept": "Qbel", "or": "neɣ", @@ -441,7 +441,7 @@ "Please contact your homeserver administrator.": "Ttxil-k/m nermes anedbal-ik/im n usebter agejdan.", "Failed to join room": "Anekcum ɣer texxamt ur yeddi ara", "Custom user status messages": "Sagen addaden n yiznan n useqdac", - "Support adding custom themes": "Tallelt n tmerna n yisental udmawanen", + "Support adding custom themes": "Tallalt n tmerna n yisental udmawanen", "Use custom size": "Seqdec teɣzi tudmawant", "Show avatar changes": "Sken isnifal n avatar", "Always show encryption icons": "Sken yal tikkelt tignitin tiwgelhanen", @@ -532,8 +532,8 @@ "Session already verified!": "Tiɣimit tettwasenqed yakan!", "Verified key": "Tasarut tettwasenqed", "Displays information about a user": "Yeskan talɣut ɣef useqdac", - "Send a bug report with logs": "Azen aneqqis n ubug s yiɣmisen", - "Logs sent": "Iɣmisen yettwaznen", + "Send a bug report with logs": "Azen aneqqis n wabug s yiɣƔisen", + "Logs sent": "Iɣmisen ttewaznen", "Opens chat with the given user": "Yeldi adiwenni d useqdac i d-yettunefken", "Sends a message to the given user": "Yuzen iznan i useqdac i d-yettunefken", "Displays action": "Yeskan tigawt", @@ -541,14 +541,14 @@ "%(senderName)s invited %(targetName)s.": "%(senderName)s inced-d %(targetName)s.", "%(senderName)s banned %(targetName)s.": "%(senderName)s yugi %(targetName)s.", "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s kksen isem ara d-ibanen (%(oldDisplayName)s).", - "%(senderName)s removed their profile picture.": "%(senderName)s yekkes tawlaft n umaɣnu-ines.", + "%(senderName)s removed their profile picture.": "%(senderName)s yekkes tawlaft n umaqnu-ines.", "%(senderName)s changed their profile picture.": "%(senderName)s ibeddel tawlaft n umaɣnu-ines.", "%(senderName)s set a profile picture.": "%(senderName)s yesbadu tawlaft n umaɣnu.", - "%(senderName)s made no change.": "%(senderName)s ur igi ara ula d yiwen n ubeddel.", + "%(senderName)s made no change.": "%(senderName)s ur yegi ara ula d yiwen n ubeddel.", "VoIP conference started.": "Asarag VoIP yebda.", "%(targetName)s joined the room.": "%(targetName)s yerna-d ɣer texxamt.", "VoIP conference finished.": "Asarag VoIP yekfa.", - "%(targetName)s rejected the invitation.": "%(targetName)s yugi tinnubga.", + "%(targetName)s rejected the invitation.": "%(targetName)s yeugi tinnubga.", "%(targetName)s left the room.": "%(targetName)s yeǧǧa texxamt.", "%(senderName)s unbanned %(targetName)s.": "%(senderName)s yeqbel %(targetName)s.", "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s yekkes-d tinnubga n %(targetName)s.", @@ -583,7 +583,7 @@ "Other users may not trust it": "Iseqdacen-nniḍen yezmer ur tettamnen ara", "You joined the call": "Terniḍ ɣer usiwel", "%(senderName)s joined the call": "%(senderName)s yerna ɣer usiwel", - "Call in progress": "Asiwel la itteddu", + "Call in progress": "Asiwel la iteddu", "You left the call": "Teǧǧiḍ asiwel", "%(senderName)s left the call": "%(senderName)s yeǧǧa asiwel", "Call ended": "Asiwel yekfa", @@ -787,7 +787,7 @@ "%(senderName)s set the main address for this room to %(address)s.": "%(senderName)s yesbadu tansa tagejdant i texxamt-a s %(address)s.", "%(senderName)s added the alternative addresses %(addresses)s for this room.|one": "%(senderName)s yerna tansa-nniḍen %(addresses)s i texxamt-a.", "%(senderName)s removed the alternative addresses %(addresses)s for this room.|other": "%(senderName)s yekkes tansa-nni-nniḍen %(addresses)s i texxamt-a.", - "%(senderName)s removed the alternative addresses %(addresses)s for this room.|one": "%(senderName)s yekkes tansa-nni-nniḍen %(addresses)s i texxamt-a.", + "%(senderName)s removed the alternative addresses %(addresses)s for this room.|one": "%(senderName)s yekkes tansa-nni tayeḍ %(addresses)s i texxamt-a.", "%(senderName)s changed the alternative addresses for this room.": "%(senderName)s ibeddel tansa-nni tayeḍ n texxamt-a.", "%(senderName)s changed the main and alternative addresses for this room.": "%(senderName)s ibeddel tansa tagejdant d tansa-nni tayeḍ i texxamt-a.", "Sends a message as html, without interpreting it as markdown": "Yuzen izen d html war ma isegza-t s tukksa n tecreḍt", @@ -1592,7 +1592,7 @@ "Your homeserver has exceeded one of its resource limits.": "Aqeddac-inek·inem agejdan iɛedda yiwet seg tlisa-ines tiɣbula.", "Contact your server admin.": "Nermes anedbal-inek·inem n uqeddac.", "To return to your account in future you need to set a password": "Akken ad tuɣaleḍ ɣer umiḍan-ik·im ɣer sdat tesriḍ ad tesbaduḍ awal uffir", - "New spinner design": "Afeṣṣel amaynut n usezzay", + "New spinner design": "Afeṣṣel amaynut n usezzay ", "Render simple counters in room header": "Err amsiḍen afessa ɣef uqerru n texxamt", "Multiple integration managers": "Imsefrak n waṭas n yimsidaf", "Try out new ways to ignore people (experimental)": "Ɛreḍ iberdan-nniḍen i tigtin n yimdanen (armitan)", @@ -1605,7 +1605,7 @@ "Use a system font": "Seqdec tasefsit n unagraw", "Size must be a number": "Teɣzi ilaq ad tili d uṭṭun", "Message layout": "Talɣa n yizen", - "Discovery": "Tagrut ", + "Discovery": "Tagrut", "Help & About": "Tallalt & Ɣef", "Homeserver is": "Aqeddac agejdan d", "Identity Server is": "Aqeddac n timagit d", @@ -1750,7 +1750,7 @@ "Reason: %(reason)s": "Taɣzint: %(reason)s", "You were banned from %(roomName)s by %(memberName)s": "Tettwaɛezleḍ-d seg %(roomName)s sɣur %(memberName)s", "Something went wrong with your invite to %(roomName)s": "Yella wayen ur nteddu ara akken ilaq d tinubga-ik·im ɣer %(roomName)s", - "unknown error code": "Tangalt n tuccḍa tarussint", + "unknown error code": "tangalt n tuccḍa tarussint", "You can only join it with a working invite.": "Tzemreḍ kan ad ternuḍ ɣer-s ala s tinubga n uxeddim.", "You can still join it because this is a public room.": "Mazal tzemreḍ ad ternuḍ ɣer-s acku taxxamt-a d tazayezt.", "This invite to %(roomName)s was sent to %(email)s which is not associated with your account": "Tinubga-a ɣer %(roomName)s tettwazen i %(email)s ur nettwacudd ara d umiḍan-ik·im", @@ -1814,7 +1814,36 @@ "Show a placeholder for removed messages": "Sken-d iznan yettwakksen", "Show join/leave messages (invites/kicks/bans unaffected)": "Sken iznan n tmerna d tuffɣa (tinubgiwin/asufeɣ/anfay ur ttwaḥsaben ara)", "Enable automatic language detection for syntax highlighting": "Rmed tifin tawurmant n tutlayt i useɣti n tira", - "Show avatars in user and room mentions": "Sken ivataren deg ubdar n useqdac d texxamt", - "Never send encrypted messages to unverified sessions in this room from this session": "Ur ttɛawad ara ad d-tazneḍ iznan yettwawgelhen ɣer tɣimiyin ur nettwasenqed ara deg texxamt-a seg tɣimit-a", - "Enable URL previews by default for participants in this room": "Rmed taskant n URL amezwer i yimettekkiyen n texxamt-a" + "Show avatars in user and room mentions": "Sken ivaṭaren deg yibdaren n useqdac neɣ n texxamt", + "Never send encrypted messages to unverified sessions in this room from this session": "Ur ttazen ara akk iznan yettwawgelhen ɣer tɣimiyin ur nettusenqad ara seg tɣimit-a", + "Enable URL previews by default for participants in this room": "Rmed tiskanin n URL s wudem amezwer i yimttekkiyen deg texxamt-a", + "Allow Peer-to-Peer for 1:1 calls": "Sireg isawalen udem s udem i 1:1 ", + "Enable inline URL previews by default": "Rmed tiskanin n URL srid s wudem amezwer", + "Enable URL previews for this room (only affects you)": "Rmed tiskanin n URL i texxamt-a (i ak·akem-yeɛnan kan)", + "Enable widget screenshots on supported widgets": "Rmed tuṭṭfiwin n ugdil n uwiǧit deg yiwiǧiten yettwasferken", + "Identity Server (%(server)s)": "Aqeddac n timagit (%(server)s)", + "Identity Server": "Aqeddac n timagit", + "Enter a new identity server": "Sekcem aqeddac n timagit amaynut", + "No update available.": "Ulac lqem i yellan.", + "Hey you. You're the best!": "Kečč·kemm. Ulac win i ak·akem-yifen?", + "Use between %(min)s pt and %(max)s pt": "Seqdec gar %(min)s pt d %(max)s pt", + "Explore Room State": "Snirem addad n texxamt", + "Explore Account Data": "Snirem isefka n umiḍan", + "View Servers in Room": "Senqed iqeddacen deg texxamt", + "Toolbox": "Tabewwaḍt n yifecka", + "Developer Tools": "Ifecka n uneflay", + "An error has occurred.": "Tella-d tuccḍa.", + "Integrations are disabled": "Imsidaf ttwasensen", + "Integrations not allowed": "Imsidaf ur ttusirgen ara", + "a new master key signature": "tasarut tusligt tagejdant tamaynut", + "a new cross-signing key signature": "azmul amaynut n tsarut n uzmul amdigan", + "a device cross-signing signature": "azmul n uzmul amdigan n yibenk", + "a key signature": "azmul n tsarut", + "%(brand)s encountered an error during upload of:": "%(brand)s yemlal-d d tuccḍa mi ara d-yessalay:", + "Cancelled signature upload": "Asali n uzmul yettwasefsex", + "Unable to upload": "Yegguma ad d-yali", + "Signature upload failed": "Asali n uzmul ur yeddi ara", + "Incompatible local cache": "Tuffra tadigant ur temṣada ara", + "Room Settings - %(roomName)s": "Iɣewwaren n texxamt - %(roomName)s", + "The room upgrade could not be completed": "Aleqqem n texxamt yegguma ad yemmed" } From b6a3271ecc544434b95c7a400e57a7edf20dee9b Mon Sep 17 00:00:00 2001 From: Kahina Messaoudi Date: Sat, 22 Aug 2020 21:50:37 +0000 Subject: [PATCH 291/424] Translated using Weblate (Kabyle) Currently translated at 77.9% (1820 of 2335 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/kab/ --- src/i18n/strings/kab.json | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/src/i18n/strings/kab.json b/src/i18n/strings/kab.json index a1951e9cb2..7503f486ff 100644 --- a/src/i18n/strings/kab.json +++ b/src/i18n/strings/kab.json @@ -732,8 +732,8 @@ "System font name": "Isem n tsefsit n unagraw", "Send analytics data": "Azen isefka n tesleḍt", "Cancelling…": "Asefsex…", - "They match": "Mṣadan", - "They don't match": "Ur mṣadan ara", + "They match": "Msaḍan", + "They don't match": "Ur msaḍan ara", "Dog": "Aqjun", "Horse": "Aεewdiw", "Pig": "Ilef", @@ -1845,5 +1845,28 @@ "Signature upload failed": "Asali n uzmul ur yeddi ara", "Incompatible local cache": "Tuffra tadigant ur temṣada ara", "Room Settings - %(roomName)s": "Iɣewwaren n texxamt - %(roomName)s", - "The room upgrade could not be completed": "Aleqqem n texxamt yegguma ad yemmed" + "The room upgrade could not be completed": "Aleqqem n texxamt yegguma ad yemmed", + "Show a reminder to enable Secure Message Recovery in encrypted rooms": "Sken asmekti i urmed n tririt n yiznan iɣellsanen deg texxamin yettwawgelhen", + "Show hidden events in timeline": "Sken-d ineḍruyen yeffren deg uzray", + "Enable message search in encrypted rooms": "Rmed anadi n yiznan deg texxamin yettwawgelhen", + "Manually verify all remote sessions": "Senqed s ufus akk tiɣimiyin tinmeggagin", + "IRC display name width": "Tehri n yisem i d-yettwaseknen IRC", + "Collecting app version information": "Alqaḍ n telɣa n lqem n usnas", + "Uploading logs": "Asali n yiɣmisen", + "Downloading logs": "Asader n yiɣmisen", + "Messages in one-to-one chats": "Iznan deg yidiwenniyen usriden", + "Encrypted messages in one-to-one chats": "Iznan yettwawgelhen deg yidiwenniyen usriden", + "Encrypted messages in group chats": "Iznan yettwawgelhen deg yidiwenniyen n ugraw", + "Unknown caller": "Asiwel arussin", + "The other party cancelled the verification.": "Wayeḍ issefsex asenqed.", + "You've successfully verified this user.": "Tesneqdeḍ aseqdac-a akken iwata.", + "Secure messages with this user are end-to-end encrypted and not able to be read by third parties.": "Iznan iɣellsanen akked useqdac-a ttwawgelhen seg yixef ɣer yixef yerna yiwen ur yezmir ad ten-iɣeṛ.", + "Verify this session by completing one of the following:": "Senqed tiɣimit-a s usmad n tigawin-a:", + "Confirm the emoji below are displayed on both sessions, in the same order:": "Sentem dakken imujiten seddaw ttbanen-d deg tɣimiyin i snat, s yiwen n umyizwer:", + "Verify this user by confirming the following emoji appear on their screen.": "Senqed aseqdac-a s usentem dakken imujiten-a ttbanen-d ɣef ugdil-is.", + "Verify this session by confirming the following number appears on its screen.": "Senqed tiɣimit-a s usentem dakken amḍan-a ittban-d ɣef ugdil-is.", + "Verify this user by confirming the following number appears on their screen.": "Senqed aseqdac-a s usentem dakken amḍan-a ittban-d ɣef ugdil-is.", + "Waiting for your other session to verify…": "Deg uraǧu n usenqed n tɣimit-ik•im-nniḍen…", + "Thumbs up": "Adebbuz d asawen", + "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Abeddel n wawal uffir ad yales awennez i tsura akk n uwgelhen seg yixef ɣer yixef deg tɣimiyin akk, d ayen ara yerren amazray n udiwenni ur yettwaɣer ara, anagar ma tsifḍeḍ tisura-inek•inem n uwgelhen seg tazwara ad tɛawdeḍ ad tent-tketreḍ. Ɣer sdat, aya ad yennerni." } From 7cb75ff26539866ae21d333e4242cf4dd9409b5c Mon Sep 17 00:00:00 2001 From: Jonathan Date: Sun, 23 Aug 2020 16:18:03 +0000 Subject: [PATCH 292/424] Translated using Weblate (German) Currently translated at 99.9% (2333 of 2335 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 05b8775f6f..85ef8778c6 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1633,7 +1633,7 @@ "Sends a message as html, without interpreting it as markdown": "Verschickt eine Nachricht im html-Format, ohne sie in Markdown zu formatieren", "Show rooms with unread notifications first": "Räume mit nicht gelesenen Benachrichtungen zuerst zeigen", "Show shortcuts to recently viewed rooms above the room list": "Kurzbefehlezu den kürzlich gesichteteten Räumen über der Raumliste anzeigen", - "Use Single Sign On to continue": "Verwende Single-Sign-On um fortzufahren", + "Use Single Sign On to continue": "Verwende Single Sign on um fortzufahren", "Confirm adding this email address by using Single Sign On to prove your identity.": "Bestätige die hinzugefügte E-Mail-Adresse mit Single-Sign-On, um deine Identität nachzuweisen.", "Single Sign On": "Single Sign-On", "Confirm adding email": "Bestätige hinzugefügte E-Mail-Addresse", From 6ab14ab403ec75b1636cdefa9bc00affbb0c8913 Mon Sep 17 00:00:00 2001 From: toastbroot Date: Sun, 23 Aug 2020 16:18:09 +0000 Subject: [PATCH 293/424] Translated using Weblate (German) Currently translated at 99.9% (2333 of 2335 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 85ef8778c6..4dc5fbcd6b 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1634,7 +1634,7 @@ "Show rooms with unread notifications first": "Räume mit nicht gelesenen Benachrichtungen zuerst zeigen", "Show shortcuts to recently viewed rooms above the room list": "Kurzbefehlezu den kürzlich gesichteteten Räumen über der Raumliste anzeigen", "Use Single Sign On to continue": "Verwende Single Sign on um fortzufahren", - "Confirm adding this email address by using Single Sign On to prove your identity.": "Bestätige die hinzugefügte E-Mail-Adresse mit Single-Sign-On, um deine Identität nachzuweisen.", + "Confirm adding this email address by using Single Sign On to prove your identity.": "Bestätige die hinzugefügte E-Mail-Adresse mit Single Sign-On, um deine Identität nachzuweisen.", "Single Sign On": "Single Sign-On", "Confirm adding email": "Bestätige hinzugefügte E-Mail-Addresse", "Confirm adding this phone number by using Single Sign On to prove your identity.": "Bestätige die hinzugefügte Telefonnummer, indem du deine Identität mittels Single Sign-On nachweist.", From 1478d5997331df411483b7460d06f21ae92c273d Mon Sep 17 00:00:00 2001 From: aWeinzierl Date: Sun, 23 Aug 2020 16:26:24 +0000 Subject: [PATCH 294/424] Translated using Weblate (German) Currently translated at 99.9% (2333 of 2335 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 4dc5fbcd6b..1757dc0008 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1652,7 +1652,7 @@ "Manually Verify by Text": "Verifiziere manuell mit einem Text", "Interactively verify by Emoji": "Verifiziere interaktiv mit Emojis", "Support adding custom themes": "Unterstütze das Hinzufügen von benutzerdefinierten Designs", - "Ask this user to verify their session, or manually verify it below.": "Bitte diese/n Nutzer!n, seine/ihre Sitzung zu verifizieren, oder verifiziere diese unten manuell.", + "Ask this user to verify their session, or manually verify it below.": "Bitte diesen Nutzer, seine Sitzung zu verifizieren, oder verifiziere diesen unten manuell.", "a few seconds from now": "in ein paar Sekunden", "Manually verify all remote sessions": "Verifiziere alle Remotesitzungen", "Confirm the emoji below are displayed on both sessions, in the same order:": "Bestätige, dass die unten angezeigten Emojis auf beiden Sitzungen in der selben Reihenfolge angezeigt werden:", @@ -1724,7 +1724,7 @@ "Upgrade this room to the recommended room version": "Aktualisiere diesen Raum auf die empfohlene Raumversion", "this room": "Dieser Raum", "View older messages in %(roomName)s.": "Zeige alte Nachrichten in %(roomName)s.", - "Send a bug report with logs": "Sende Fehlermeldung mit Protokoll", + "Send a bug report with logs": "Sende einen Fehlerbericht mit Logs", "Verify all your sessions to ensure your account & messages are safe": "Verifiziere alle deine Sitzungen, um dein Konto und deine Nachrichten zu schützen", "Verify your other session using one of the options below.": "Verifiziere deine andere Sitzung mit einer der folgenden Optionen.", "You signed in to a new session without verifying it:": "Du hast dich in einer neuen Sitzung angemeldet ohne sie zu verifizieren:", From 943a71b698231102e19756ed2eda9bef1a717618 Mon Sep 17 00:00:00 2001 From: BenjaminVettori Date: Sun, 23 Aug 2020 16:28:28 +0000 Subject: [PATCH 295/424] Translated using Weblate (German) Currently translated at 99.9% (2333 of 2335 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 1757dc0008..84718631a4 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1034,7 +1034,7 @@ "%(senderDisplayName)s made the room invite only.": "%(senderDisplayName)s hat den Raum auf eingeladene User beschränkt.", "%(senderDisplayName)s changed the join rule to %(rule)s": "%(senderDisplayName)s änderte die Zutrittsregel auf '%(rule)s'", "%(senderDisplayName)s has allowed guests to join the room.": "%(senderDisplayName)s erlaubte Gäste diesem Raum beizutreten.", - "%(senderDisplayName)s has prevented guests from joining the room.": "%(senderDisplayName)s hat verboten, dass Gäste diesem Raum beitreten.", + "%(senderDisplayName)s has prevented guests from joining the room.": "%(senderDisplayName)s hat Gästen verboten diesem Raum beizutreten.", "%(senderDisplayName)s changed guest access to %(rule)s": "%(senderDisplayName)s änderte den Gastzugriff auf '%(rule)s'", "Group & filter rooms by custom tags (refresh to apply changes)": "Gruppiere & filtere Räume nach eigenen Tags (neu laden um Änderungen zu übernehmen)", "Unable to find a supported verification method.": "Konnte kein unterstützte Verifikationsmethode finden.", From 90a34f37c72869342c3a888d2fc563aaa4a9920e Mon Sep 17 00:00:00 2001 From: Bamstam Date: Sun, 23 Aug 2020 16:41:54 +0000 Subject: [PATCH 296/424] Translated using Weblate (German) Currently translated at 99.9% (2333 of 2335 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 84718631a4..e57f776e98 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -572,7 +572,7 @@ "was unbanned %(count)s times|one": "wurde entbannt", "%(oneUser)schanged their name %(count)s times|one": "%(oneUser)shat den Namen geändert", "%(items)s and %(count)s others|other": "%(items)s und %(count)s andere", - "%(items)s and %(count)s others|one": "%(items)s und noch jemand", + "%(items)s and %(count)s others|one": "%(items)s und ein weiteres Raum-Mitglied", "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Eine E-Mail wurde an %(emailAddress)s gesendet. Folge dem in der E-Mail enthaltenen Link und klicke dann unten.", "The visibility of '%(roomName)s' in %(groupId)s could not be updated.": "Die Sichtbarkeit von '%(roomName)s' in %(groupId)s konnte nicht aktualisiert werden.", "Visibility in Room List": "Sichtbarkeit in Raum-Liste", From 916820ba7e920235eed28eebd3b362568acdb51a Mon Sep 17 00:00:00 2001 From: aWeinzierl Date: Sun, 23 Aug 2020 16:42:03 +0000 Subject: [PATCH 297/424] Translated using Weblate (German) Currently translated at 99.9% (2333 of 2335 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index e57f776e98..1459743271 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -572,7 +572,7 @@ "was unbanned %(count)s times|one": "wurde entbannt", "%(oneUser)schanged their name %(count)s times|one": "%(oneUser)shat den Namen geändert", "%(items)s and %(count)s others|other": "%(items)s und %(count)s andere", - "%(items)s and %(count)s others|one": "%(items)s und ein weiteres Raum-Mitglied", + "%(items)s and %(count)s others|one": "%(items)s und ein weiteres Raummitglied", "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Eine E-Mail wurde an %(emailAddress)s gesendet. Folge dem in der E-Mail enthaltenen Link und klicke dann unten.", "The visibility of '%(roomName)s' in %(groupId)s could not be updated.": "Die Sichtbarkeit von '%(roomName)s' in %(groupId)s konnte nicht aktualisiert werden.", "Visibility in Room List": "Sichtbarkeit in Raum-Liste", @@ -1632,7 +1632,7 @@ "Make a copy of your recovery key": "Speichere deinen Wiederherstellungsschlüssel", "Sends a message as html, without interpreting it as markdown": "Verschickt eine Nachricht im html-Format, ohne sie in Markdown zu formatieren", "Show rooms with unread notifications first": "Räume mit nicht gelesenen Benachrichtungen zuerst zeigen", - "Show shortcuts to recently viewed rooms above the room list": "Kurzbefehlezu den kürzlich gesichteteten Räumen über der Raumliste anzeigen", + "Show shortcuts to recently viewed rooms above the room list": "Kurzbefehle zu den kürzlich gesichteteten Räumen über der Raumliste anzeigen", "Use Single Sign On to continue": "Verwende Single Sign on um fortzufahren", "Confirm adding this email address by using Single Sign On to prove your identity.": "Bestätige die hinzugefügte E-Mail-Adresse mit Single Sign-On, um deine Identität nachzuweisen.", "Single Sign On": "Single Sign-On", From 7a187fa47ca217902eada238688542656516e39b Mon Sep 17 00:00:00 2001 From: "@a2sc:matrix.org" Date: Sun, 23 Aug 2020 16:54:40 +0000 Subject: [PATCH 298/424] Translated using Weblate (German) Currently translated at 99.9% (2333 of 2335 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 1459743271..e9d2a3926c 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1587,7 +1587,7 @@ "Reject & Ignore user": "Ablehnen & Nutzer ignorieren", "%(senderName)s changed a rule that was banning users matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s ändert eine Ausschluss-Regel von %(oldGlob)s nach %(newGlob)s, wegen %(reason)s", "%(senderName)s changed a rule that was banning rooms matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s ändert eine Ausschluss-Regel für Räume von %(oldGlob)s nach %(newGlob)s, wegen %(reason)s", - "Allow fallback call assist server turn.matrix.org when your homeserver does not offer one (your IP address would be shared during a call)": "Erlaube den Standard-Server zur Anrufunterstützung (turn.matrix.org) zu verwenden wenn dein Heimserver keinen eigenen anbietet (deine IP Adresse wird bei dem Anruf übermittelt)", + "Allow fallback call assist server turn.matrix.org when your homeserver does not offer one (your IP address would be shared during a call)": "Auf den Server turn.matrix.org zurückgreifen, falls deine Heimserver keine Anruf-Assistenz anbietet (Deine IP-Adresse wird während eines Anrufs geteilt).", "Show more": "mehr", "This session is not backing up your keys, but you do have an existing backup you can restore from and add to going forward.": "Diese Sitzung speichert deine Schlüssel nicht, du kannst sie aber an die Schlüsselsicherung anschließen.", "Connect this session to key backup before signing out to avoid losing any keys that may only be on this session.": "Verbinde diese Sitzung mit deiner Schlüsselsicherung bevor du dich abmeldest, um den Verlust von Schlüsseln zu vermeiden.", From 761e88ce6f0e71af1cccae8271b0f2ac72905b36 Mon Sep 17 00:00:00 2001 From: aWeinzierl Date: Sun, 23 Aug 2020 16:54:46 +0000 Subject: [PATCH 299/424] Translated using Weblate (German) Currently translated at 99.9% (2333 of 2335 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index e9d2a3926c..736f861f3c 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1587,7 +1587,7 @@ "Reject & Ignore user": "Ablehnen & Nutzer ignorieren", "%(senderName)s changed a rule that was banning users matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s ändert eine Ausschluss-Regel von %(oldGlob)s nach %(newGlob)s, wegen %(reason)s", "%(senderName)s changed a rule that was banning rooms matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s ändert eine Ausschluss-Regel für Räume von %(oldGlob)s nach %(newGlob)s, wegen %(reason)s", - "Allow fallback call assist server turn.matrix.org when your homeserver does not offer one (your IP address would be shared during a call)": "Auf den Server turn.matrix.org zurückgreifen, falls deine Heimserver keine Anruf-Assistenz anbietet (Deine IP-Adresse wird während eines Anrufs geteilt).", + "Allow fallback call assist server turn.matrix.org when your homeserver does not offer one (your IP address would be shared during a call)": "Auf den Server turn.matrix.org zurückgreifen, falls deine Heimserver keine Anruf-Assistenz anbietet (deine IP-Adresse wird während eines Anrufs geteilt).", "Show more": "mehr", "This session is not backing up your keys, but you do have an existing backup you can restore from and add to going forward.": "Diese Sitzung speichert deine Schlüssel nicht, du kannst sie aber an die Schlüsselsicherung anschließen.", "Connect this session to key backup before signing out to avoid losing any keys that may only be on this session.": "Verbinde diese Sitzung mit deiner Schlüsselsicherung bevor du dich abmeldest, um den Verlust von Schlüsseln zu vermeiden.", From 77decd4e097539b73a6fb681cdb9d7d0dc0cf4e4 Mon Sep 17 00:00:00 2001 From: Michael Albert Date: Sun, 23 Aug 2020 16:58:20 +0000 Subject: [PATCH 300/424] Translated using Weblate (German) Currently translated at 99.9% (2333 of 2335 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 736f861f3c..8aa0146c8c 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1337,7 +1337,7 @@ "Use an identity server to invite by email. Manage in Settings.": "Nutze einen Identitätsserver, um über E-Mail Einladungen zu verschicken. Verwalte es in den Einstellungen.", "%(name)s (%(userId)s)": "%(name)s (%(userId)s)", "Try out new ways to ignore people (experimental)": "Versuche neue Möglichkeiten, um Menschen zu ignorieren (experimentell)", - "Send read receipts for messages (requires compatible homeserver to disable)": "Schicke Lesebestätigungen für Nachrichten (erfordert kompatiblen Heimserver zum Deaktivieren)", + "Send read receipts for messages (requires compatible homeserver to disable)": "Lesebestätigungen für Nachrichten senden (erfordert einen kompatiblen Heimserver zum deaktivieren)", "My Ban List": "Meine Bannliste", "This is your list of users/servers you have blocked - don't leave the room!": "Dies ist die Liste von Benutzer*innen/Servern, die du blockiert hast - verlasse den Raum nicht!", "Accept to continue:": "Akzeptiere , um fortzufahren:", From 21d2eb95cd484478e77396218a2acc2b24dddba7 Mon Sep 17 00:00:00 2001 From: linsui Date: Mon, 24 Aug 2020 10:44:52 +0000 Subject: [PATCH 301/424] Translated using Weblate (Chinese (Simplified)) Currently translated at 99.9% (2333 of 2335 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/zh_Hans/ --- src/i18n/strings/zh_Hans.json | 68 ++++++++++++++++++++++++++++++++--- 1 file changed, 63 insertions(+), 5 deletions(-) diff --git a/src/i18n/strings/zh_Hans.json b/src/i18n/strings/zh_Hans.json index da53880409..beb465d9d5 100644 --- a/src/i18n/strings/zh_Hans.json +++ b/src/i18n/strings/zh_Hans.json @@ -1530,8 +1530,8 @@ "Backup has a valid signature from this session": "备份有来自此会话的有效签名", "Backup has an invalid signature from this session": "备份有来自此会话的无效签名", "Backup has a valid signature from verified session ": "备份有来自已验证的会话 有效签名", - "Backup has a valid signature from unverified session ": "备份有来自未验证的会话 无效签名", - "Backup has an invalid signature from verified session ": "备份有来自已验证的会话 无效签名", + "Backup has a valid signature from unverified session ": "备份有来自未验证会话 无效签名", + "Backup has an invalid signature from verified session ": "备份有来自已验证会话 无效签名", "Backup has an invalid signature from unverified session ": "备份有来自未验证的会话 无效签名", "Backup is not signed by any of your sessions": "备份没有被您的任何一个会话签名", "This backup is trusted because it has been restored on this session": "此备份是受信任的因为它被恢复到了此会话上", @@ -2307,9 +2307,67 @@ "Page Up": "Page Up", "Page Down": "Page Down", "Esc": "Esc", - "Enter": "Enter", - "Space": "Space", + "Enter": "回车", + "Space": "空格", "How fast should messages be downloaded.": "消息下载速度。", "IRC display name width": "IRC 显示名称宽度", - "When rooms are upgraded": "聊天室升级时间" + "When rooms are upgraded": "聊天室升级时间", + "Unexpected server error trying to leave the room": "试图离开聊天室时发生意外服务器错误", + "Error leaving room": "离开聊天室时出错", + "New spinner design": "新的下拉列表设计", + "Show message previews for reactions in DMs": "显示私聊消息预览以回复", + "Show message previews for reactions in all rooms": "显示所有聊天室的消息预览以回复", + "Uploading logs": "正在上传日志", + "Downloading logs": "正在下载日志", + "This bridge was provisioned by .": "桥接由 准备。", + "Workspace: %(networkName)s": "工作区:%(networkName)s", + "Channel: %(channelName)s": "频道:%(channelName)s", + "well formed": "格式正确", + "Master private key:": "主私钥:", + "Self signing private key:": "自签名私钥:", + "User signing private key:": "用户签名私钥:", + "Securely cache encrypted messages locally for them to appear in search results, using ": "在本地安全缓存已加密消息以使其出现在搜索结果中,使用 ", + " to store messages from ": " 存储来自 ", + "rooms.": "聊天室的消息。", + "This session is not backing up your keys, but you do have an existing backup you can restore from and add to going forward.": "此会话未备份您的密钥,但您已有备份,您可以继续并从中恢复和向其添加。", + "Invalid theme schema.": "无效主题方案。", + "Read Marker lifetime (ms)": "已读标记生存期 (ms)", + "Read Marker off-screen lifetime (ms)": "已读标记屏幕外生存期 (ms)", + "Unable to revoke sharing for email address": "无法撤消电子邮件地址共享", + "Revoke": "撤销", + "Unable to revoke sharing for phone number": "无法撤销电话号码共享", + "Mod": "管理员", + "Explore public rooms": "探索公共聊天室", + "Can't see what you’re looking for?": "看不到您要找的吗?", + "Explore all public rooms": "探索所有公共聊天室", + "%(count)s results|other": "%(count)s 个结果", + "You can only join it with a working invite.": "您只能通过有效邀请加入。", + "The session you are trying to verify doesn't support scanning a QR code or emoji verification, which is what %(brand)s supports. Try with a different client.": "您尝试验证的会话不支持 %(brand)s 支持的扫描二维码或表情符号验证。尝试使用其他客户端。", + "Language Dropdown": "语言下拉菜单", + "%(severalUsers)smade no changes %(count)s times|other": "%(severalUsers)s %(count)s 次未做更改", + "%(severalUsers)smade no changes %(count)s times|one": "%(severalUsers)s 未做更改", + "%(oneUser)smade no changes %(count)s times|other": "%(oneUser)s %(count)s 次未做更改", + "%(oneUser)smade no changes %(count)s times|one": "%(oneUser)s 未做更改", + "Preparing to download logs": "正在准备下载日志", + "Download logs": "下载日志", + "We couldn't create your DM. Please check the users you want to invite and try again.": "我们无法创建您的私聊。请检查您想要邀请的用户并重试。", + "%(brand)s encountered an error during upload of:": "%(brand)s 在上传此文件时出错:", + "Country Dropdown": "国家下拉菜单", + "Attach files from chat or just drag and drop them anywhere in a room.": "附加聊天中的文件,或将其拖放到聊天室的任何地方。", + "Changing your password will reset any end-to-end encryption keys on all of your sessions, making encrypted chat history unreadable. Set up Key Backup or export your room keys from another session before resetting your password.": "更改密码将重置所有会话上的所有端到端加密密钥,从而使加密的聊天记录不可读。在重置密码之前,请设置密钥备份或从其他会话导出聊天室密钥。", + "%(brand)s Android": "%(brand)s Android", + "Message downloading sleep time(ms)": "消息下载休眠时间 (ms)", + "Toggle Bold": "切换粗体", + "Toggle Italics": "切换斜体", + "Toggle Quote": "切换引用", + "Navigate recent messages to edit": "浏览最近的消息以进行编辑", + "Toggle microphone mute": "切换麦克风静音", + "Toggle video on/off": "切换视频开/关", + "Navigate up/down in the room list": "在聊天室列表中上/下导航", + "Previous/next unread room or DM": "上一个/下一个未读聊天室或私聊消息", + "Previous/next room or DM": "上一个/下一个聊天室或私聊消息", + "Toggle the top left menu": "切换左上方的菜单", + "Toggle right panel": "切换右侧面板", + "Toggle this dialog": "切换此对话框", + "End": "End" } From bdbe7cd7ec6cf7cab21d05d1004fceeeb3cb583d Mon Sep 17 00:00:00 2001 From: tusooa Date: Mon, 24 Aug 2020 11:08:59 +0000 Subject: [PATCH 302/424] Translated using Weblate (Chinese (Simplified)) Currently translated at 99.9% (2333 of 2335 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/zh_Hans/ --- src/i18n/strings/zh_Hans.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/zh_Hans.json b/src/i18n/strings/zh_Hans.json index beb465d9d5..f1a3af31d7 100644 --- a/src/i18n/strings/zh_Hans.json +++ b/src/i18n/strings/zh_Hans.json @@ -2369,5 +2369,7 @@ "Toggle the top left menu": "切换左上方的菜单", "Toggle right panel": "切换右侧面板", "Toggle this dialog": "切换此对话框", - "End": "End" + "End": "End", + "The server is not configured to indicate what the problem is (CORS).": "服务器没有配置为提示错误是什么(CORS)。", + "Activate selected button": "激活选择的按钮" } From e46074117a9b3d5efcba8a9e3b575c4fd472a6dc Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Sat, 22 Aug 2020 03:48:09 +0000 Subject: [PATCH 303/424] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (2335 of 2335 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/zh_Hant/ --- src/i18n/strings/zh_Hant.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json index d5eacd1141..12437b8fa6 100644 --- a/src/i18n/strings/zh_Hant.json +++ b/src/i18n/strings/zh_Hant.json @@ -2423,5 +2423,7 @@ "Explore all public rooms": "探索所有公開聊天室", "%(count)s results|other": "%(count)s 個結果", "Preparing to download logs": "正在準備下載紀錄檔", - "Download logs": "下載紀錄檔" + "Download logs": "下載紀錄檔", + "Unexpected server error trying to leave the room": "試圖離開聊天室時發生意外的伺服器錯誤", + "Error leaving room": "離開聊天室時發生錯誤" } From 4c812ded6920d7f7ca12816de9ecafd04936039d Mon Sep 17 00:00:00 2001 From: aWeinzierl Date: Sun, 23 Aug 2020 16:58:32 +0000 Subject: [PATCH 304/424] Translated using Weblate (German) Currently translated at 100.0% (2335 of 2335 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 8aa0146c8c..c48de25af5 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1337,7 +1337,7 @@ "Use an identity server to invite by email. Manage in Settings.": "Nutze einen Identitätsserver, um über E-Mail Einladungen zu verschicken. Verwalte es in den Einstellungen.", "%(name)s (%(userId)s)": "%(name)s (%(userId)s)", "Try out new ways to ignore people (experimental)": "Versuche neue Möglichkeiten, um Menschen zu ignorieren (experimentell)", - "Send read receipts for messages (requires compatible homeserver to disable)": "Lesebestätigungen für Nachrichten senden (erfordert einen kompatiblen Heimserver zum deaktivieren)", + "Send read receipts for messages (requires compatible homeserver to disable)": "Lesebestätigungen für Nachrichten senden (Deaktivieren erfordert einen kompatiblen Heimserver)", "My Ban List": "Meine Bannliste", "This is your list of users/servers you have blocked - don't leave the room!": "Dies ist die Liste von Benutzer*innen/Servern, die du blockiert hast - verlasse den Raum nicht!", "Accept to continue:": "Akzeptiere , um fortzufahren:", @@ -1732,11 +1732,11 @@ "Upgrade": "Hochstufen", "Verify the new login accessing your account: %(name)s": "Verifiziere die neue Anmeldung an deinem Konto: %(name)s", "From %(deviceName)s (%(deviceId)s)": "Von %(deviceName)s (%(deviceId)s)", - "Your homeserver does not support cross-signing.": "Dein Heimserver unterstützt cross-signing nicht.", + "Your homeserver does not support cross-signing.": "Dein Heimserver unterstützt Cross-Signing nicht.", "Cross-signing and secret storage are enabled.": "Cross-signing und der sichere Speicher wurden eingerichtet.", - "Your account has a cross-signing identity in secret storage, but it is not yet trusted by this session.": "Dein Konto hat eine cross-signing Identität im sicheren Speicher aber diese Sitzung wird noch nicht vertraut.", - "Cross-signing and secret storage are not yet set up.": "Cross-signing und der sichere Speicher wurden noch nicht eingerichtet.", - "Reset cross-signing and secret storage": "Setze cross-signing und den sicheren Speicher zurück", + "Your account has a cross-signing identity in secret storage, but it is not yet trusted by this session.": "Dein Konto hat eine Cross-Signing Identität im sicheren Speicher, aber dieser wird von dieser Sitzung noch nicht vertraut.", + "Cross-signing and secret storage are not yet set up.": "Cross-Signing und der sichere Speicher sind noch nicht eingerichtet.", + "Reset cross-signing and secret storage": "Setze Cross-Signing und den sicheren Speicher zurück", "Bootstrap cross-signing and secret storage": "Richte cross-signing und den sicheren Speicher ein", "unexpected type": "unbekannter Typ", "Cross-signing public keys:": "Öffentliche Cross-signing Schlüssel:", @@ -1754,7 +1754,7 @@ "exists": "existiert", "Delete sessions|other": "Lösche Sitzungen", "Delete sessions|one": "Lösche Sitzung", - "Individually verify each session used by a user to mark it as trusted, not trusting cross-signed devices.": "Sitzungen eines Benutzers einzeln verifizieren. Geräten, die ein Benutzer als vertrauenswürdig markiert hat, wird nicht automatisch vertraut (cross-signing).", + "Individually verify each session used by a user to mark it as trusted, not trusting cross-signed devices.": "Alle Sitzungen einzeln verifizieren, anstatt auch Sitzungen zu vertrauen, die durch Cross-Signing verifiziert sind.", "Securely cache encrypted messages locally for them to appear in search results, using ": "Der Zwischenspeicher für die lokale Suche in verschlüsselten Nachrichten benötigt ", " to store messages from ": " um Nachrichten aus ", "%(brand)s is missing some components required for securely caching encrypted messages locally. If you'd like to experiment with this feature, build a custom %(brand)s Desktop with search components added.": "%(brand)s benötigt weitere Komponenten um verschlüsselte Nachrichten lokal zu durchsuchen. Wenn du diese Funktion testen möchtest kannst du dir deine eigene Version von %(brand)s Desktop mit der integrierten Suchfunktion bauen.", From 129bae6b5e36e5ab72ba9c68faa99d59b0b950b3 Mon Sep 17 00:00:00 2001 From: "@a2sc:matrix.org" Date: Sun, 23 Aug 2020 17:02:37 +0000 Subject: [PATCH 305/424] Translated using Weblate (German) Currently translated at 100.0% (2335 of 2335 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index c48de25af5..f5026a8ed4 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1588,7 +1588,7 @@ "%(senderName)s changed a rule that was banning users matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s ändert eine Ausschluss-Regel von %(oldGlob)s nach %(newGlob)s, wegen %(reason)s", "%(senderName)s changed a rule that was banning rooms matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s ändert eine Ausschluss-Regel für Räume von %(oldGlob)s nach %(newGlob)s, wegen %(reason)s", "Allow fallback call assist server turn.matrix.org when your homeserver does not offer one (your IP address would be shared during a call)": "Auf den Server turn.matrix.org zurückgreifen, falls deine Heimserver keine Anruf-Assistenz anbietet (deine IP-Adresse wird während eines Anrufs geteilt).", - "Show more": "mehr", + "Show more": "Mehr zeigen", "This session is not backing up your keys, but you do have an existing backup you can restore from and add to going forward.": "Diese Sitzung speichert deine Schlüssel nicht, du kannst sie aber an die Schlüsselsicherung anschließen.", "Connect this session to key backup before signing out to avoid losing any keys that may only be on this session.": "Verbinde diese Sitzung mit deiner Schlüsselsicherung bevor du dich abmeldest, um den Verlust von Schlüsseln zu vermeiden.", "This backup is trusted because it has been restored on this session": "Dieser Sicherung wird vertraut, da sie während dieser Sitzung wiederhergestellt wurde", @@ -1739,9 +1739,9 @@ "Reset cross-signing and secret storage": "Setze Cross-Signing und den sicheren Speicher zurück", "Bootstrap cross-signing and secret storage": "Richte cross-signing und den sicheren Speicher ein", "unexpected type": "unbekannter Typ", - "Cross-signing public keys:": "Öffentliche Cross-signing Schlüssel:", + "Cross-signing public keys:": "Öffentliche Cross-Signing-Schlüssel:", "in memory": "im Speicher", - "Cross-signing private keys:": "Private Cross-signing Schlüssel:", + "Cross-signing private keys:": "Private Cross-Signing-Schlüssel:", "in secret storage": "im sicheren Speicher", "Self signing private key:": "Selbst signierter privater Schlüssel:", "cached locally": "lokal zwischengespeichert", From 9efaa8590a26f494656e1986304a7d8dcf5a6af1 Mon Sep 17 00:00:00 2001 From: Michael Albert Date: Mon, 24 Aug 2020 07:51:57 +0000 Subject: [PATCH 306/424] Translated using Weblate (German) Currently translated at 100.0% (2335 of 2335 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index f5026a8ed4..300d694ea3 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1587,7 +1587,7 @@ "Reject & Ignore user": "Ablehnen & Nutzer ignorieren", "%(senderName)s changed a rule that was banning users matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s ändert eine Ausschluss-Regel von %(oldGlob)s nach %(newGlob)s, wegen %(reason)s", "%(senderName)s changed a rule that was banning rooms matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s ändert eine Ausschluss-Regel für Räume von %(oldGlob)s nach %(newGlob)s, wegen %(reason)s", - "Allow fallback call assist server turn.matrix.org when your homeserver does not offer one (your IP address would be shared during a call)": "Auf den Server turn.matrix.org zurückgreifen, falls deine Heimserver keine Anruf-Assistenz anbietet (deine IP-Adresse wird während eines Anrufs geteilt).", + "Allow fallback call assist server turn.matrix.org when your homeserver does not offer one (your IP address would be shared during a call)": "Auf den Server turn.matrix.org zurückgreifen, falls deine Heimserver keine Anruf-Assistenz anbietet (deine IP-Adresse wird während eines Anrufs geteilt)", "Show more": "Mehr zeigen", "This session is not backing up your keys, but you do have an existing backup you can restore from and add to going forward.": "Diese Sitzung speichert deine Schlüssel nicht, du kannst sie aber an die Schlüsselsicherung anschließen.", "Connect this session to key backup before signing out to avoid losing any keys that may only be on this session.": "Verbinde diese Sitzung mit deiner Schlüsselsicherung bevor du dich abmeldest, um den Verlust von Schlüsseln zu vermeiden.", @@ -2418,5 +2418,7 @@ "Explore all public rooms": "Erkunde alle öffentlichen Räume", "%(count)s results|other": "%(count)s Ergebnisse", "Preparing to download logs": "Bereite das Herunterladen der Protokolle vor", - "Download logs": "Protokolle herunterladen" + "Download logs": "Protokolle herunterladen", + "Unexpected server error trying to leave the room": "Unerwarteter Server-Fehler beim Versuch den Raum zu verlassen", + "Error leaving room": "Fehler beim Verlassen des Raums" } From 5628349a410437b87660a4b8581d175b2b70f8c8 Mon Sep 17 00:00:00 2001 From: ziriSut Date: Sun, 23 Aug 2020 06:31:35 +0000 Subject: [PATCH 307/424] Translated using Weblate (Kabyle) Currently translated at 81.9% (1913 of 2335 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/kab/ --- src/i18n/strings/kab.json | 97 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 94 insertions(+), 3 deletions(-) diff --git a/src/i18n/strings/kab.json b/src/i18n/strings/kab.json index 7503f486ff..0883775e19 100644 --- a/src/i18n/strings/kab.json +++ b/src/i18n/strings/kab.json @@ -1817,7 +1817,7 @@ "Show avatars in user and room mentions": "Sken ivaṭaren deg yibdaren n useqdac neɣ n texxamt", "Never send encrypted messages to unverified sessions in this room from this session": "Ur ttazen ara akk iznan yettwawgelhen ɣer tɣimiyin ur nettusenqad ara seg tɣimit-a", "Enable URL previews by default for participants in this room": "Rmed tiskanin n URL s wudem amezwer i yimttekkiyen deg texxamt-a", - "Allow Peer-to-Peer for 1:1 calls": "Sireg isawalen udem s udem i 1:1 ", + "Allow Peer-to-Peer for 1:1 calls": "Sireg isawalen udem e wudem i 1:1", "Enable inline URL previews by default": "Rmed tiskanin n URL srid s wudem amezwer", "Enable URL previews for this room (only affects you)": "Rmed tiskanin n URL i texxamt-a (i ak·akem-yeɛnan kan)", "Enable widget screenshots on supported widgets": "Rmed tuṭṭfiwin n ugdil n uwiǧit deg yiwiǧiten yettwasferken", @@ -1825,7 +1825,7 @@ "Identity Server": "Aqeddac n timagit", "Enter a new identity server": "Sekcem aqeddac n timagit amaynut", "No update available.": "Ulac lqem i yellan.", - "Hey you. You're the best!": "Kečč·kemm. Ulac win i ak·akem-yifen?", + "Hey you. You're the best!": "Kečč·kemm. Ulac win i ak·akem-yifen!", "Use between %(min)s pt and %(max)s pt": "Seqdec gar %(min)s pt d %(max)s pt", "Explore Room State": "Snirem addad n texxamt", "Explore Account Data": "Snirem isefka n umiḍan", @@ -1868,5 +1868,96 @@ "Verify this user by confirming the following number appears on their screen.": "Senqed aseqdac-a s usentem dakken amḍan-a ittban-d ɣef ugdil-is.", "Waiting for your other session to verify…": "Deg uraǧu n usenqed n tɣimit-ik•im-nniḍen…", "Thumbs up": "Adebbuz d asawen", - "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Abeddel n wawal uffir ad yales awennez i tsura akk n uwgelhen seg yixef ɣer yixef deg tɣimiyin akk, d ayen ara yerren amazray n udiwenni ur yettwaɣer ara, anagar ma tsifḍeḍ tisura-inek•inem n uwgelhen seg tazwara ad tɛawdeḍ ad tent-tketreḍ. Ɣer sdat, aya ad yennerni." + "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Abeddel n wawal uffir ad yales awennez i tsura akk n uwgelhen seg yixef ɣer yixef deg tɣimiyin akk, d ayen ara yerren amazray n udiwenni ur yettwaɣer ara, anagar ma tsifḍeḍ tisura-inek•inem n uwgelhen seg tazwara ad tɛawdeḍ ad tent-tketreḍ. Ɣer sdat, aya ad yennerni.", + "Forces the current outbound group session in an encrypted room to be discarded": "Ḥettem tiɣimit n ugraw ara d-yeffɣen akka tura deg texxamt tawgelhant ad tettwakkes", + "Unexpected server error trying to leave the room": "Tuccḍa n uqeddac ur nettwaṛǧa ara lawan n tuffɣa seg texxamt", + "Prompt before sending invites to potentially invalid matrix IDs": "Suter send tuzna n tnubgiwin i yisulayen i izmren ad ilin d arimeɣta", + "Show shortcuts to recently viewed rooms above the room list": "Sken inegzumen i texxamin i d-ibanen melmi kan nnig tebdart n texxamt", + "Send read receipts for messages (requires compatible homeserver to disable)": "Azen inagan n tɣuri i yiznan (yesra aqeddac agejdan yemṣadan i wakken ad yens)", + "Show previews/thumbnails for images": "Sken tiskanin/tinfulin i tugniwin", + "How fast should messages be downloaded.": "Acḥal i ilaq ad yili urured i wakken ad d-adren yiznan.", + "Enable experimental, compact IRC style layout": "Rmed aseflu n wanaw n IRC armitan, ussid ", + "Waiting for %(displayName)s to verify…": "Aṛaǧu n %(displayName)s i usenqed...", + "Securely cache encrypted messages locally for them to appear in search results, using ": "Ḥrez iznan iwgelhanen idiganen s wudem awurman i wakken ad d-banen deg yigmaḍ n unadi, s useqdec ", + "Securely cache encrypted messages locally for them to appear in search results.": "Ḥrez iznan iwgelhanen idiganen s wudem awurman i wakken ad d-banen deg yigmaḍ n unadi.", + "The integration manager is offline or it cannot reach your homeserver.": "Amsefrak n umsidef ha-t-an beṛṛa n tuqqna neɣ ur yezmir ara ad yaweḍ ɣer uqeddac-ik·im agejdan.", + "This backup is trusted because it has been restored on this session": "Aḥraz yettwaḍman acku yuɣal-d seg tɣimit-a ", + "Back up your keys before signing out to avoid losing them.": "Ḥrez tisura-ik·im send tuffɣa i wakken ur ttruḥunt ara.", + "Error saving email notification preferences": "Tuccḍa deg usekles n yismenyaf n ulɣu n yimayl", + "An error occurred whilst saving your email notification preferences.": "Tella-d tuccḍa lawan n usekles n yismenyaf n ulɣu n yimayl.", + "Can't update user notification settings": "D awezɣi ad ttwaleqqmen iɣewwaren n yilɣa n useqdac", + "Messages containing keywords": "Iznan ideg llan awalen ufrinen", + "Notify for all other messages/rooms": "Ṭṭef-d ilɣa i meṛṛa iznan/tixxamin", + "Notify me for anything else": "Azen-iyi-d ilɣa i wayen akk ara yellan", + "All notifications are currently disabled for all targets.": "Meṛṛa ilɣa nsan akka tura i meṛṛa isaḍasen.", + "On": "Yermed", + "Noisy": "Sɛan ṣṣut", + "wait and try again later": "ṛǧu syen ɛreḍ tikkelt-nniḍen", + "You must specify an event type!": "Ilaq ad d-tferneḍ anaw n tedyant!", + "Failed to send custom event.": "Ur teddi ara tuzna n tedyant tudmawant.", + "Event Type": "Anaw n tedyant", + "State Key": "Tasarut n waddad", + "Event Content": "Agbur n tedyant", + "This session, or the other session": "Tiɣimita, neɣ tiɣimit tayeḍ", + "If you didn’t sign in to this session, your account may be compromised.": "Ma yella ur teqqineḍ ara ɣer tɣimit-a, amiḍan-ik·im yezmer ad yettwaker.", + "Please fill why you're reporting.": "Ttxil-k·m ini-aɣ-d ayɣer i d-tettazneḍ alɣu.", + "Report Content to Your Homeserver Administrator": "Ttxil-k·m azen aneqqis i unedbal-ik·im n usebter agejdan.", + "Wrong Recovery Key": "Mačči d tasarut-ik·im n uɛeddi tagi", + "Invalid Recovery Key": "Tasarut-ik·im n uɛeddi d tarameɣtut", + "Security Phrase": "Tafyirt n tɣellist", + "Restoring keys from backup": "Tiririt n tsura seg uḥraz", + "Fetching keys from server...": "Tiririt n tsura seg uḥraz...", + "%(completed)s of %(total)s keys restored": "%(completed)s n %(total)s tsura i yettwarran", + "Unable to load backup status": "Yegguma ad d-yali waddad n uḥraz", + "Recovery key mismatch": "Tasarut n tririt ur temṣada ara", + "No backup found!": "Ulac aḥraz yettwafen!", + "Failed to decrypt %(failedCount)s sessions!": "Awgelhen n tɣimiyin %(failedCount)s ur yeddi ara", + "Successfully restored %(sessionCount)s keys": "Tiririt n tsura n %(sessionCount)s yedda akken iwata", + "This looks like a valid recovery key!": "Ayagi yettban am wakken tasarut n tririt d tameɣtut!", + "Not a valid recovery key": "Tasarut n tririt mačči d tameɣtut", + "Are you sure you want to reject the invitation?": "S tidet tebɣiḍ ad tesfesxeḍ tinubga?", + "Resend %(unsentCount)s reaction(s)": "Ales tuzna n tsedmirt (tsedmirin) %(unsentCount)s", + "Forward Message": "Welleh izen", + "Pin Message": "Rzi izen", + "View Decrypted Source": "Senqed taɣbalut tawgelhent", + "Unhide Preview": "Sban-d taskant", + "Take picture": "Ṭṭef-d tawleft", + "Away": "Akin", + "This homeserver would like to make sure you are not a robot.": "Aqeddac-a aqejdan yesra ad iẓer ma mačči d aṛubut i telliḍ.", + "Country Dropdown": "Tabdart n udrurem n tmura", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use %(brand)s with an existing Matrix account on a different homeserver.": "Tzemreḍ ad tesqedceḍ tixtiṛiyin n uqeddac udmawan i wakken ad teqqneḍ ɣer iqeddacen-nniḍen n Matrix s ufran n URL n uqeddac agejdan yemgaraden. Ayagi ad ak-yeǧǧ ad tesqedceḍ %(brand)s s umiḍan n Matrix yellan ɣef uqeddac agejdan yemgaraden.", + "Confirm your identity by entering your account password below.": "Sentem timagit-ik·im s usekcem n wawal uffir n umiḍan-ik·im ddaw.", + "Please review and accept all of the homeserver's policies": "Ttxil-k·m senqed syen qbel tisertiyin akk n uqeddac agejdan", + "Please review and accept the policies of this homeserver:": "Ttxil-k·m senqed syen qbel tisertiyin n uqeddac-a agejdan", + "An email has been sent to %(emailAddress)s": "Yettwazen yimayl ɣer %(emailAddress)s", + "Token incorrect": "Ajuṭu d arameɣtu", + "Identity Server URL": "URL n uqeddac n timagit", + "Other servers": "Iqeddacen wiya", + "Sign in to your Matrix account on %(serverName)s": "Qqen ɣer umiḍan-ik·im n Matrix deg %(serverName)s", + "Sorry, your browser is not able to run %(brand)s.": "Suref-aɣ, iminig-ik·im ur yezmir ara ad iseddu %(brand)s.", + "You must register to use this functionality": "Ilaq-ak·am ad teskelseḍ i wakken ad tesxedmeḍ tamahilt-a", + "No files visible in this room": "Ulac ifuyla i d-ibanen deg texxamt-a", + "Featured Rooms:": "Tixxamin i ifazen:", + "Upload avatar": "Sali-d avaṭar", + "Failed to forget room %(errCode)s": "Tatut n texxamt %(errCode)s ur teddi ara", + "Find a room… (e.g. %(exampleRoom)s)": "Af-d taxxamt… (am. %(exampleRoom)s)", + "Search failed": "Ur iddi ara unadi", + "No more results": "Ulac ugar n yigmaḍ", + "Fill screen": "Agdil aččuran", + "Uploading %(filename)s and %(count)s others|other": "Asali n %(filename)s d %(count)s wiyaḍ-nniḍen", + "Uploading %(filename)s and %(count)s others|zero": "Asali n %(filename)s", + "Uploading %(filename)s and %(count)s others|one": "Asali n %(filename)s d %(count)s wayeḍ-nniḍen", + "Security & privacy": "Taɣellist & tbaḍnit", + "User menu": "Umuɣ n useqdac", + "Could not load user profile": "Yegguma ad d-yali umaɣnu n useqdac", + "Session verified": "Tiɣimit tettwasenqed", + "Failed to send email": "Tuzna n yimayl ur teddi ara", + "New passwords must match each other.": "Awalen uffiren imaynuten ilaq ad mṣadan.", + "Your Matrix account on %(serverName)s": "Amiḍan-ik·im Matrix deg %(serverName)s", + "I have verified my email address": "Sneqdeɣ tansa-inu n yimayl", + "Return to login screen": "Uɣal ɣer ugdil n tuqqna", + "Incorrect username and/or password.": "Isem n uqeddac d/neɣ awal uffir d arameɣtu.", + "Registration Successful": "Asekles yemmed akken iwata", + "Save your Security Key": "Sekles tasarut-ik·im n tɣellist", + "Unable to set up secret storage": "Asbadu n uklas uffir d awezɣi" } From b821c294bf3a1262b364f76c47d303ea1717ca10 Mon Sep 17 00:00:00 2001 From: Kahina Messaoudi Date: Sun, 23 Aug 2020 18:06:16 +0000 Subject: [PATCH 308/424] Translated using Weblate (Kabyle) Currently translated at 81.9% (1913 of 2335 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/kab/ --- src/i18n/strings/kab.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/kab.json b/src/i18n/strings/kab.json index 0883775e19..861ed40033 100644 --- a/src/i18n/strings/kab.json +++ b/src/i18n/strings/kab.json @@ -1959,5 +1959,7 @@ "Incorrect username and/or password.": "Isem n uqeddac d/neɣ awal uffir d arameɣtu.", "Registration Successful": "Asekles yemmed akken iwata", "Save your Security Key": "Sekles tasarut-ik·im n tɣellist", - "Unable to set up secret storage": "Asbadu n uklas uffir d awezɣi" + "Unable to set up secret storage": "Asbadu n uklas uffir d awezɣi", + "Paperclip": "Tamessakt n lkaɣeḍ", + "Are you sure? You will lose your encrypted messages if your keys are not backed up properly.": "Tettḥeqqeḍ? Ad tesruḥeḍ iznan-ik•im yettwawgelhen ma tisura-k•m ur klisent ara akken ilaq." } From 663481124cfd2c9aa146a75b8b9694c730352452 Mon Sep 17 00:00:00 2001 From: Imre Kristoffer Eilertsen Date: Sun, 23 Aug 2020 06:26:41 +0000 Subject: [PATCH 309/424] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 59.7% (1393 of 2335 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/nb_NO/ --- src/i18n/strings/nb_NO.json | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/nb_NO.json b/src/i18n/strings/nb_NO.json index f0c9827c06..1f6720f613 100644 --- a/src/i18n/strings/nb_NO.json +++ b/src/i18n/strings/nb_NO.json @@ -1407,5 +1407,14 @@ "Sign in to your Matrix account on %(serverName)s": "Logg inn på Matrix-kontoen din på %(serverName)s", "Sign in to your Matrix account on ": "Logg inn på Matrix-kontoen din på ", "If you've joined lots of rooms, this might take a while": "Hvis du har blitt med i mange rom, kan dette ta en stund", - "Your new session is now verified. It has access to your encrypted messages, and other users will see it as trusted.": "Den nye økten din er nå verifisert. Den har tilgang til dine krypterte meldinger, og andre brukere vil se at den blir stolt på." + "Your new session is now verified. It has access to your encrypted messages, and other users will see it as trusted.": "Den nye økten din er nå verifisert. Den har tilgang til dine krypterte meldinger, og andre brukere vil se at den blir stolt på.", + "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s gjorde fremtidig romhistorikk synlig for alle rommedlemmer, fra det tidspunktet de ble/blir invitert.", + "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s gjorde fremtidig romhistorikk synlig for alle rommedlemmer, fra det tidspunktet de ble med.", + "%(senderName)s made future room history visible to all room members.": "%(senderName)s gjorde fremtidig romhistorikk synlig for alle rommedlemmer.", + "%(senderName)s made future room history visible to anyone.": "%(senderName)s gjorde fremtidig romhistorikk synlig for alle.", + "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s gjorde fremtidig romhistorikk synlig for alle rommedlemmer (%(visibility)s).", + "To return to your account in future you need to set a password": "For å komme tilbake til kontoen din senere, må du velge et passord", + "Please forget all messages I have sent when my account is deactivated (Warning: this will cause future users to see an incomplete view of conversations)": "Vennligst glem alle meldingene jeg har sendt når kontoen min er deaktivert (Advarsel: Dette vil føre til at fremtidige brukere ser en ufullstendig visning av samtaler)", + "To help us prevent this in future, please send us logs.": "For å hjelpe oss med å forhindre dette i fremtiden, vennligst send oss loggfiler.", + "No identity server is configured so you cannot add an email address in order to reset your password in the future.": "Ingen identitetstjener er satt opp, så du kan ikke bruke en E-postadresse til å tilbakestille passordet ditt senere." } From 758a06c03d7f37daa5aa0ec2689b19d306b02f1b Mon Sep 17 00:00:00 2001 From: Nikita Epifanov Date: Sat, 22 Aug 2020 13:10:02 +0000 Subject: [PATCH 310/424] Translated using Weblate (Russian) Currently translated at 100.0% (2335 of 2335 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/ru/ --- src/i18n/strings/ru.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 80327bd1e6..bc4bd073d9 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -2415,5 +2415,7 @@ "Explore all public rooms": "Просмотреть все публичные комнаты", "%(count)s results|other": "%(count)s результатов", "Preparing to download logs": "Подготовка к загрузке журналов", - "Download logs": "Скачать журналы" + "Download logs": "Скачать журналы", + "Unexpected server error trying to leave the room": "Неожиданная ошибка сервера при попытке покинуть комнату", + "Error leaving room": "Ошибка при выходе из комнаты" } From 2ea68577d243fe7852d8d99bdf67c2a2c5c98dc1 Mon Sep 17 00:00:00 2001 From: LinAGKar Date: Sun, 23 Aug 2020 17:26:03 +0000 Subject: [PATCH 311/424] Translated using Weblate (Swedish) Currently translated at 61.9% (1445 of 2335 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/sv/ --- src/i18n/strings/sv.json | 133 ++++++++++++++++++++------------------- 1 file changed, 67 insertions(+), 66 deletions(-) diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index b2c7623fca..0f9f367638 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -274,7 +274,7 @@ "Oct": "Okt", "Nov": "Nov", "Dec": "Dec", - "Invite to Community": "Bjud in till community", + "Invite to Community": "Bjud in till gemenskap", "Unable to enable Notifications": "Det går inte att aktivera aviseringar", "The information being sent to us to help make %(brand)s better includes:": "Informationen som skickas till oss för att förbättra %(brand)s inkluderar:", "VoIP is unsupported": "VoIP stöds ej", @@ -664,64 +664,64 @@ "collapse": "fäll ihop", "expand": "fäll ut", "In reply to ": "Som svar på ", - "Who would you like to add to this community?": "Vem vill du lägga till i denna community?", - "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Varning: En person du lägger till i en community kommer att vara synlig för alla som känner till community-ID:t", - "Invite new community members": "Bjud in nya community-medlemmar", - "Which rooms would you like to add to this community?": "Vilka rum vill du lägga till i denna community?", - "Show these rooms to non-members on the community page and room list?": "Visa dessa rum för icke-medlemmar på community-sidan och -rumslistan?", - "Add rooms to the community": "Lägg till rum i communityn", - "Add to community": "Lägg till i community", - "Failed to invite users to community": "Det gick inte att bjuda in användare till communityn", + "Who would you like to add to this community?": "Vem vill du lägga till i denna gemenskap?", + "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Varning: En person du lägger till i en gemenskap kommer att vara synlig för alla som känner till gemenskaps-ID:t", + "Invite new community members": "Bjud in nya gemenskapsmedlemmar", + "Which rooms would you like to add to this community?": "Vilka rum vill du lägga till i denna gemenskap?", + "Show these rooms to non-members on the community page and room list?": "Visa dessa rum för icke-medlemmar på gemenskapssidan och -rumslistan?", + "Add rooms to the community": "Lägg till rum i gemenskapen", + "Add to community": "Lägg till i gemenskap", + "Failed to invite users to community": "Det gick inte att bjuda in användare till gemenskapen", "Mirror local video feed": "Speglad lokal-video", "Community Invites": "Community-inbjudningar", - "Invalid community ID": "Ogiltigt community-ID", - "'%(groupId)s' is not a valid community ID": "%(groupId)s är inte ett giltigt community-ID", - "New community ID (e.g. +foo:%(localDomain)s)": "Nytt community-ID (t.ex. +foo:%(localDomain)s)", - "Remove from community": "Ta bort från community", - "Disinvite this user from community?": "Ta bort användarens inbjudan till community?", - "Remove this user from community?": "Ta bort användaren från community?", - "Failed to remove user from community": "Det gick inte att ta bort användaren från community", - "Filter community members": "Filtrera community-medlemmar", - "Removing a room from the community will also remove it from the community page.": "Om du tar bort ett rum från communityn tas det även bort från communityns sida.", - "Failed to remove room from community": "Det gick inte att ta bort rum från community", - "Only visible to community members": "Endast synlig för community-medlemmar", - "Filter community rooms": "Filtrera community-rum", - "Community IDs cannot be empty.": "Community-ID kan inte vara tomt.", - "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "Community-ID får endast innehålla tecknen a-z, 0-9 och '=_-./'", - "Something went wrong whilst creating your community": "Något gick fel när din community skapades", - "Create Community": "Skapa community", - "Community Name": "Community-namn", - "Community ID": "Community-ID", - "View Community": "Visa community", - "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

HTML för din community-sida

\n

\n Använd den långa beskrivningen för att introducera nya medlemmar till communityn, eller dela\n några viktiga länkar\n

\n

\n Du kan även använda 'img'-taggar\n

\n", - "Add rooms to the community summary": "Lägg till rum i community-översikten", - "Add users to the community summary": "Lägg till användare i community-översikten", - "Failed to update community": "Det gick inte att uppdatera community", - "Unable to join community": "Det gick inte att gå med i communityn", - "Leave Community": "Lämna community", - "Unable to leave community": "Det gick inte att lämna community", - "Community Settings": "Community-inställningar", - "Changes made to your community name and avatar might not be seen by other users for up to 30 minutes.": "Det kan dröja upp till 30 minuter innan ändringar på communityns namn och avatar blir synliga för andra användare.", - "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Dessa rum visas för community-medlemmar på community-sidan. Community-medlemmar kan gå med i rummen genom att klicka på dem.", - "Add rooms to this community": "Lägg till rum i denna community", - "%(inviter)s has invited you to join this community": "%(inviter)s har bjudit in dig till denna community", - "Join this community": "Gå med i denna community", - "Leave this community": "Lämna denna community", - "You are an administrator of this community": "Du är administratör för denna community", - "You are a member of this community": "Du är medlem i denna community", - "Who can join this community?": "Vem kan gå med i denna community?", - "Your community hasn't got a Long Description, a HTML page to show to community members.
Click here to open settings and give it one!": "Din community har ingen lång beskrivning eller HTML-sida att visa för medlemmar.
Klicka här för att öppna inställningar och lägga till det!", - "Community %(groupId)s not found": "Community %(groupId)s hittades inte", - "To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.": "För att skapa ett filter, dra en community-avatar till filterpanelen längst till vänster på skärmen. Du kan när som helst klicka på en avatar i filterpanelen för att bara se rum och personer som är associerade med den communityn.", - "Create a new community": "Skapa en ny community", - "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Skapa en community för att gruppera användare och rum! Bygg en anpassad hemsida för att markera er plats i Matrix-universumet.", - "Invite to this community": "Bjud in till denna community", - "Something went wrong when trying to get your communities.": "Något gick fel vid hämtning av dina communityn.", - "You're not currently a member of any communities.": "Du är för närvarande inte medlem i någon community.", - "Communities": "Communityn", - "Your Communities": "Dina communityn", - "Did you know: you can use communities to filter your %(brand)s experience!": "Visste du att: du kan använda communityn för att filtrera din %(brand)s-upplevelse!", - "Error whilst fetching joined communities": "Fel vid hämtning av anslutna communityn", + "Invalid community ID": "Ogiltigt gemenskaps-ID", + "'%(groupId)s' is not a valid community ID": "%(groupId)s är inte ett giltigt gemenskaps-ID", + "New community ID (e.g. +foo:%(localDomain)s)": "Nytt gemenskaps-ID (t.ex. +foo:%(localDomain)s)", + "Remove from community": "Ta bort från gemenskapen", + "Disinvite this user from community?": "Ta bort användarens inbjudan till gemenskapen?", + "Remove this user from community?": "Ta bort användaren från gemenskapen?", + "Failed to remove user from community": "Det gick inte att ta bort användaren från gemenskapen", + "Filter community members": "Filtrera gemenskapsmedlemmar", + "Removing a room from the community will also remove it from the community page.": "Om du tar bort ett rum från gemenskapen tas det även bort från gemenskapens sida.", + "Failed to remove room from community": "Det gick inte att ta bort rummet från gemenskapen", + "Only visible to community members": "Endast synlig för gemenskapsmedlemmar", + "Filter community rooms": "Filtrera gemenskapsrum", + "Community IDs cannot be empty.": "Gemenskaps-ID kan inte vara tomt.", + "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "Gemenskaps-ID får endast innehålla tecknen a-z, 0-9 och '=_-./'", + "Something went wrong whilst creating your community": "Något gick fel när din gemenskap skapades", + "Create Community": "Skapa gemenskap", + "Community Name": "Gemenskapsnamn", + "Community ID": "Gemenskaps-ID", + "View Community": "Visa gemenskap", + "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

HTML för din gemenskapssida

\n

\n Använd den långa beskrivningen för att introducera nya medlemmar till gemenskapen, eller dela\n några viktiga länkar\n

\n

\n Du kan även använda 'img'-taggar\n

\n", + "Add rooms to the community summary": "Lägg till rum i gemenskapsöversikten", + "Add users to the community summary": "Lägg till användare i gemenskapsöversikten", + "Failed to update community": "Det gick inte att uppdatera gemenskapen", + "Unable to join community": "Det gick inte att gå med i gemenskapen", + "Leave Community": "Lämna gemenskapen", + "Unable to leave community": "Det gick inte att lämna gemenskap", + "Community Settings": "Gemenskapsinställningar", + "Changes made to your community name and avatar might not be seen by other users for up to 30 minutes.": "Det kan dröja upp till 30 minuter innan ändringar på gemenskapens namn och avatar blir synliga för andra användare.", + "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Dessa rum visas för gemenskapsmedlemmar på gemenskapssidan. Gemenskapsmedlemmar kan gå med i rummen genom att klicka på dem.", + "Add rooms to this community": "Lägg till rum i denna gemenskap", + "%(inviter)s has invited you to join this community": "%(inviter)s har bjudit in dig till denna gemenskap", + "Join this community": "Gå med i denna gemenskap", + "Leave this community": "Lämna denna gemenskap", + "You are an administrator of this community": "Du är administratör för denna gemenskap", + "You are a member of this community": "Du är medlem i denna gemenskap", + "Who can join this community?": "Vem kan gå med i denna gemenskap?", + "Your community hasn't got a Long Description, a HTML page to show to community members.
Click here to open settings and give it one!": "Din gemenskap har ingen lång beskrivning eller HTML-sida att visa för medlemmar.
Klicka här för att öppna inställningarna och lägga till det!", + "Community %(groupId)s not found": "Gemenskapen %(groupId)s hittades inte", + "To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.": "För att skapa ett filter, dra en gemenskapsavatar till filterpanelen längst till vänster på skärmen. Du kan när som helst klicka på en avatar i filterpanelen för att bara se rum och personer som är associerade med den gemenskapen.", + "Create a new community": "Skapa en ny gemenskap", + "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Skapa en gemenskap för att gruppera användare och rum! Bygg en anpassad hemsida för att markera er plats i Matrix-universumet.", + "Invite to this community": "Bjud in till denna gemenskap", + "Something went wrong when trying to get your communities.": "Något gick fel vid hämtning av dina gemenskaper.", + "You're not currently a member of any communities.": "Du är för närvarande inte medlem i någon gemenskap.", + "Communities": "Gemenskaper", + "Your Communities": "Dina gemenskaper", + "Did you know: you can use communities to filter your %(brand)s experience!": "Visste du att: du kan använda gemenskaper för att filtrera din %(brand)s-upplevelse!", + "Error whilst fetching joined communities": "Fel vid hämtning av anslutna gemenskaper", "Featured Rooms:": "Utvalda rum:", "Featured Users:": "Utvalda användare:", "Everyone": "Alla", @@ -806,15 +806,15 @@ "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Denna process möjliggör import av krypteringsnycklar som tidigare exporterats från en annan Matrix-klient. Du kommer då kunna dekryptera alla meddelanden som den andra klienten kunde dekryptera.", "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Den exporterade filen kommer vara skyddad med en lösenfras. Du måste ange lösenfrasen här, för att dekryptera filen.", "Flair": "Emblem", - "Showing flair for these communities:": "Visar emblem för dessa communityn:", - "This room is not showing flair for any communities": "Detta rum visar inte emblem för några communityn", - "Display your community flair in rooms configured to show it.": "Visa ditt community-emblem i rum som är konfigurerade för att visa det.", + "Showing flair for these communities:": "Visar emblem för dessa gemenskaper:", + "This room is not showing flair for any communities": "Detta rum visar inte emblem för några gemenskaper", + "Display your community flair in rooms configured to show it.": "Visa ditt gemenskapsemblem i rum som är konfigurerade för att visa det.", "Share Link to User": "Dela länk till användare", "Share room": "Dela rum", "Share Room": "Dela rum", "Link to most recent message": "Länk till senaste meddelandet", "Share User": "Dela användare", - "Share Community": "Dela community", + "Share Community": "Dela gemenskap", "Share Room Message": "Dela rumsmeddelande", "Link to selected message": "Länk till valt meddelande", "COPY": "KOPIERA", @@ -870,7 +870,7 @@ "Updating %(brand)s": "Uppdaterar %(brand)s", "Open Devtools": "Öppna Devtools", "Show developer tools": "Visa utvecklingsverktyg", - "You are an administrator of this community. You will not be able to rejoin without an invite from another administrator.": "Du är administratör för denna community. Du kommer inte kunna gå med igen utan en inbjudan från en annan administratör.", + "You are an administrator of this community. You will not be able to rejoin without an invite from another administrator.": "Du är administratör för denna gemenskap. Du kommer inte kunna gå med igen utan en inbjudan från en annan administratör.", "The file '%(fileName)s' exceeds this homeserver's size limit for uploads": "Filen '%(fileName)s' överstiger denna hemserverns storleksgräns för uppladdningar", "Unable to load! Check your network connectivity and try again.": "Kan inte ladda! Kolla din nätverksuppkoppling och försök igen.", "Whether or not you're logged in (we don't record your username)": "Om du är inloggad eller inte (vi sparar inte ditt användarnamn)", @@ -933,7 +933,7 @@ "Show avatars in user and room mentions": "Visa avatarer i användar- och rumsnämningar", "Enable big emoji in chat": "Aktivera stor emoji i chatt", "Send typing notifications": "Skicka \"skriver\"-statusar", - "Enable Community Filter Panel": "Aktivera community-filterpanel", + "Enable Community Filter Panel": "Aktivera gemenskapsfilterpanel", "Allow Peer-to-Peer for 1:1 calls": "Tillåt peer-to-peer kommunikation för 1:1 samtal", "Messages containing my username": "Meddelanden som innehåller mitt användarnamn", "Messages containing @room": "Meddelanden som innehåller @room", @@ -1312,8 +1312,8 @@ "Sign in to your Matrix account on ": "Logga in med ditt Matrix-konto på ", "Please install Chrome, Firefox, or Safari for the best experience.": "Installera Chrome, Firefox, eller Safari för den bästa upplevelsen.", "Couldn't load page": "Det gick inte att ladda sidan", - "Want more than a community? Get your own server": "Vill du ha mer än en community? Skaffa din egen server", - "This homeserver does not support communities": "Denna hemserver stöder inte communityn", + "Want more than a community? Get your own server": "Vill du ha mer än en gemenskap? Skaffa din egen server", + "This homeserver does not support communities": "Denna hemserver stöder inte gemenskaper", "Explore": "Utforska", "Filter": "Filtrera", "Filter rooms…": "Filtrera rum…", @@ -1539,5 +1539,6 @@ "Riot is now Element!": "Riot är nu Element!", "Learn More": "Lär mer", "Sends a message as html, without interpreting it as markdown": "Skicka ett meddelande som html, utan att tolka det som markdown", - "Failed to set topic": "Misslyckades med att ställa in ämnet" + "Failed to set topic": "Misslyckades med att ställa in ämnet", + "Community Autocomplete": "Autokomplettering av gemenskaper" } From 2e2f60c20b2a42e902edadabb6bbcdfd5c0c4299 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Mon, 24 Aug 2020 16:11:35 +0100 Subject: [PATCH 312/424] Use updated `waitFor` API with well-known --- src/DeviceListener.ts | 4 ++-- src/utils/WellKnownUtils.ts | 8 -------- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/src/DeviceListener.ts b/src/DeviceListener.ts index 41daa74376..6b667ae54d 100644 --- a/src/DeviceListener.ts +++ b/src/DeviceListener.ts @@ -31,7 +31,7 @@ import { } from "./toasts/UnverifiedSessionToast"; import { privateShouldBeEncrypted } from "./createRoom"; import { isSecretStorageBeingAccessed, accessSecretStorage } from "./CrossSigningManager"; -import { ensureClientWellKnown, isSecureBackupRequired } from './utils/WellKnownUtils'; +import { isSecureBackupRequired } from './utils/WellKnownUtils'; import { isLoggedIn } from './components/structures/MatrixChat'; @@ -226,7 +226,7 @@ export default class DeviceListener { showSetupEncryptionToast(SetupKind.UPGRADE_ENCRYPTION); } else { // No cross-signing or key backup on account (set up encryption) - await ensureClientWellKnown(); + await cli.waitForClientWellKnown(); if (isSecureBackupRequired() && isLoggedIn()) { // If we're meant to set up, and Secure Backup is required, // trigger the flow directly without a toast once logged in. diff --git a/src/utils/WellKnownUtils.ts b/src/utils/WellKnownUtils.ts index 1fe28f2b0c..f16acdb408 100644 --- a/src/utils/WellKnownUtils.ts +++ b/src/utils/WellKnownUtils.ts @@ -23,14 +23,6 @@ export interface IE2EEWellKnown { default?: boolean; } -export async function ensureClientWellKnown() { - const cli = MatrixClientPeg.get(); - if (cli.haveAttemptedFetchingClientWellKnown()) return; - return new Promise(resolve => { - cli.once("WellKnown.attempted", resolve); - }); -} - export function getE2EEWellKnown(): IE2EEWellKnown { const clientWellKnown = MatrixClientPeg.get().getClientWellKnown(); if (clientWellKnown && clientWellKnown[E2EE_WK_KEY]) { From b601a025b58200ac04bedf738fdd9898c462a251 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Mon, 24 Aug 2020 16:33:23 +0100 Subject: [PATCH 313/424] Use `io.element` instead of `im.vector` --- src/utils/WellKnownUtils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/WellKnownUtils.ts b/src/utils/WellKnownUtils.ts index f16acdb408..46d9638ecd 100644 --- a/src/utils/WellKnownUtils.ts +++ b/src/utils/WellKnownUtils.ts @@ -16,7 +16,7 @@ limitations under the License. import {MatrixClientPeg} from '../MatrixClientPeg'; -const E2EE_WK_KEY = "im.vector.e2ee"; +const E2EE_WK_KEY = "io.element.e2ee"; const E2EE_WK_KEY_DEPRECATED = "im.vector.riot.e2ee"; export interface IE2EEWellKnown { From 35f19d53a54f0d090fac11c173a2ca55249bd219 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Mon, 24 Aug 2020 16:44:47 +0100 Subject: [PATCH 314/424] Mention issue for view state store --- src/components/structures/MatrixChat.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/components/structures/MatrixChat.tsx b/src/components/structures/MatrixChat.tsx index 9929cc523e..b1c3a1c16e 100644 --- a/src/components/structures/MatrixChat.tsx +++ b/src/components/structures/MatrixChat.tsx @@ -2088,7 +2088,9 @@ export default class MatrixChat extends React.PureComponent { export function isLoggedIn(): boolean { // JRS: Maybe we should move the step that writes this to the window out of - // `element-web` and into this file? + // `element-web` and into this file? Better yet, we should probably create a + // store to hold this state. + // See also https://github.com/vector-im/element-web/issues/15034. const app = window.matrixChat; return app && (app as MatrixChat).state.view === Views.LOGGED_IN; } From 1339014abef50524b6888434fcb88de0240792a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Priit=20J=C3=B5er=C3=BC=C3=BCt?= Date: Mon, 24 Aug 2020 13:56:26 +0000 Subject: [PATCH 315/424] Translated using Weblate (Estonian) Currently translated at 100.0% (2337 of 2337 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/et/ --- src/i18n/strings/et.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/et.json b/src/i18n/strings/et.json index 2eb000d7b5..d3f1fcff6e 100644 --- a/src/i18n/strings/et.json +++ b/src/i18n/strings/et.json @@ -2422,5 +2422,7 @@ "Preparing to download logs": "Valmistun logikirjete allalaadimiseks", "Download logs": "Lae logikirjed alla", "Unexpected server error trying to leave the room": "Jututoast lahkumisel tekkis serveris ootamatu viga", - "Error leaving room": "Viga jututoast lahkumisel" + "Error leaving room": "Viga jututoast lahkumisel", + "Communities v2 prototypes. Requires compatible homeserver. Highly experimental - use with caution.": "Kogukondade v2 prototüüp. Eeldab, et koduserver toetab sellist funktsionaalsust. Lahendus on esialgne ja katseline - kui kasutad, siis väga ettevaatlikult.", + "Explore rooms in %(communityName)s": "Uuri jututubasid %(communityName)s kogukonnas" } From f8d099f66b0f7cc54377820e8b8cc17126ce874d Mon Sep 17 00:00:00 2001 From: LinAGKar Date: Mon, 24 Aug 2020 17:55:50 +0000 Subject: [PATCH 316/424] Translated using Weblate (Swedish) Currently translated at 62.3% (1455 of 2337 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/sv/ --- src/i18n/strings/sv.json | 117 ++++++++++++++++++++------------------- 1 file changed, 61 insertions(+), 56 deletions(-) diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index 0f9f367638..6f17b2f2cd 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -29,7 +29,7 @@ "Are you sure you want to reject the invitation?": "Är du säker på att du vill avböja inbjudan?", "%(senderName)s banned %(targetName)s.": "%(senderName)s bannade %(targetName)s.", "Banned users": "Bannade användare", - "Bans user with given id": "Bannar användare med givet id", + "Bans user with given id": "Bannar användaren med givet ID", "Ban": "Banna", "Attachment": "Bilaga", "Call Timeout": "Samtalstimeout", @@ -57,7 +57,7 @@ "/ddg is not a command": "/ddg är inte ett kommando", "Deactivate Account": "Inaktivera konto", "Decrypt %(text)s": "Dekryptera %(text)s", - "Deops user with given id": "Degraderar användare med givet id", + "Deops user with given id": "Degraderar användaren med givet ID", "Default": "Standard", "Disinvite": "Häv inbjudan", "Displays action": "Visar åtgärd", @@ -86,7 +86,7 @@ "Failed to send request.": "Det gick inte att sända begäran.", "Failed to set display name": "Det gick inte att ange visningsnamn", "Failed to unban": "Det gick inte att avbanna", - "Failed to verify email address: make sure you clicked the link in the email": "Det gick inte att bekräfta e-postadressen, klicka på länken i e-postmeddelandet", + "Failed to verify email address: make sure you clicked the link in the email": "Det gick inte att bekräfta e-postadressen: set till att du klickade på länken i e-postmeddelandet", "Favourite": "Favorit", "Accept": "Godkänn", "Access Token:": "Åtkomsttoken:", @@ -103,7 +103,7 @@ "Error: Problem communicating with the given homeserver.": "Fel: Det gick inte att kommunicera med den angivna hemservern.", "Failed to fetch avatar URL": "Det gick inte att hämta avatar-URL", "Failed to upload profile picture!": "Det gick inte att ladda upp profilbild!", - "Failure to create room": "Det gick inte att skapa rum", + "Failure to create room": "Det gick inte att skapa rummet", "Favourites": "Favoriter", "Fill screen": "Fyll skärmen", "Filter room members": "Filtrera rumsmedlemmar", @@ -129,7 +129,7 @@ "%(senderName)s invited %(targetName)s.": "%(senderName)s bjöd in %(targetName)s.", "Invited": "Inbjuden", "Invites": "Inbjudningar", - "Invites user with given id to current room": "Bjuder in användare med givet id till nuvarande rum", + "Invites user with given id to current room": "Bjuder in användare med givet ID till detta rum", "Sign in with": "Logga in med", "Join as voice or video.": "Gå med som röst eller video.", "Join Room": "Gå med i rum", @@ -137,7 +137,7 @@ "Jump to first unread message.": "Hoppa till första olästa meddelande.", "%(senderName)s kicked %(targetName)s.": "%(senderName)s kickade %(targetName)s.", "Kick": "Kicka", - "Kicks user with given id": "Kickar användaren med givet id", + "Kicks user with given id": "Kickar användaren med givet ID", "Labs": "Labb", "Last seen": "Senast sedd", "Leave room": "Lämna rummet", @@ -185,7 +185,7 @@ "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s tog bort sitt visningsnamn (%(oldDisplayName)s).", "%(senderName)s removed their profile picture.": "%(senderName)s tog bort sin profilbild.", "Remove": "Ta bort", - "%(senderName)s requested a VoIP conference.": "%(senderName)s begärde en VoIP-konferens.", + "%(senderName)s requested a VoIP conference.": "%(senderName)s begärde ett VoIP-gruppsamtal.", "Results from DuckDuckGo": "Resultat från DuckDuckGo", "Return to login screen": "Tillbaka till login-skärmen", "%(brand)s does not have permission to send you notifications - please check your browser settings": "%(brand)s har inte tillstånd att skicka aviseringar - kontrollera webbläsarens inställningar", @@ -206,7 +206,7 @@ "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s bjöd in %(targetDisplayName)s med i rummet.", "Server error": "Serverfel", "Server may be unavailable, overloaded, or search timed out :(": "Servern kan vara otillgänglig, överbelastad, eller så tog sökningen för lång tid :(", - "Server may be unavailable, overloaded, or you hit a bug.": "Servern kan vara otillgänglig, överbelastad, eller så stötte du på en bugg.", + "Server may be unavailable, overloaded, or you hit a bug.": "Servern kan vara otillgänglig eller överbelastad, eller så stötte du på en bugg.", "Server unavailable, overloaded, or something else went wrong.": "Servern är otillgänglig, överbelastad, eller så gick något annat fel.", "Session ID": "Sessions-ID", "%(senderName)s set a profile picture.": "%(senderName)s satte en profilbild.", @@ -235,13 +235,13 @@ "Edit": "Ändra", "Enable automatic language detection for syntax highlighting": "Aktivera automatisk språkdetektering för syntaxmarkering", "Publish this room to the public in %(domain)s's room directory?": "Publicera rummet i den offentliga rumskatalogen på %(domain)s?", - "AM": "AM", - "PM": "PM", + "AM": "FM", + "PM": "EM", "Submit": "Lämna in", "The maximum permitted number of widgets have already been added to this room.": "Den största tillåtna mängden widgetar har redan tillsats till rummet.", "The phone number entered looks invalid": "Det angivna telefonnumret är ogiltigt", "This email address is already in use": "Den här e-postadressen används redan", - "This email address was not found": "Den här epostadressen finns inte", + "This email address was not found": "Den här e-postadressen finns inte", "The email address linked to your account must be entered.": "Epostadressen som är kopplad till ditt konto måste anges.", "Online": "Online", "Unnamed room": "Namnlöst rum", @@ -280,7 +280,7 @@ "VoIP is unsupported": "VoIP stöds ej", "Failed to invite": "Inbjudan misslyckades", "You need to be logged in.": "Du måste vara inloggad.", - "You need to be able to invite users to do that.": "Du måste kunna bjuda in användare för att göra det.", + "You need to be able to invite users to do that.": "Du behöver kunna bjuda in användare för att göra det där.", "You are not in this room.": "Du är inte i det här rummet.", "You do not have permission to do that in this room.": "Du har inte behörighet att göra det i det här rummet.", "Fetching third party location failed": "Det gick inte att hämta platsdata från tredje part", @@ -404,17 +404,17 @@ "The platform you're on": "Plattformen du använder", "Your homeserver's URL": "Din hemservers URL", "Every page you use in the app": "Varje sida du använder i appen", - "Whether or not you're using the Richtext mode of the Rich Text Editor": "Om du använder Richtext-läget i Rich-Text-editorn eller inte", + "Whether or not you're using the Richtext mode of the Rich Text Editor": "Om du använder Richtext-läget i Richtext-redigeraren eller inte", "e.g. ": "t.ex. ", - "Your device resolution": "Din enhetsupplösning", + "Your device resolution": "Din skärmupplösning", "You cannot place VoIP calls in this browser.": "Du kan inte ringa VoIP-samtal i den här webbläsaren.", - "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Din epostadress verkar inte vara kopplad till något Matrix-ID på den här hemservern.", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Din e-postadress verkar inte vara kopplad till något Matrix-ID på den här hemservern.", "Restricted": "Begränsad", - "Failed to invite the following users to the %(roomName)s room:": "Det gick inte att bjuda in följande användare till %(roomName)s-rummet:", - "Unable to create widget.": "Det går inte att skapa widget.", + "Failed to invite the following users to the %(roomName)s room:": "Det gick inte att bjuda in följande användare till rummet %(roomName)s:", + "Unable to create widget.": "Det gick inte att skapa widgeten.", "Ignored user": "Ignorerad användare", "You are now ignoring %(userId)s": "Du ignorerar nu %(userId)s", - "Unignored user": "Oignorerad användare", + "Unignored user": "Avignorerad användare", "You are no longer ignoring %(userId)s": "Du ignorerar inte längre %(userId)s", "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s bytte sitt visningsnamn till %(displayName)s.", "%(senderName)s unbanned %(targetName)s.": "%(senderName)s avbannade %(targetName)s.", @@ -550,7 +550,7 @@ "Failed to invite users to %(groupId)s": "Det gick inte att bjuda in användare till %(groupId)s", "This room is not public. You will not be able to rejoin without an invite.": "Detta rum är inte offentligt. Du kommer inte kunna gå med igen utan en inbjudan.", "Ignores a user, hiding their messages from you": "Ignorerar en användare och döljer dess meddelanden för dig", - "Stops ignoring a user, showing their messages going forward": "Slutar ignorera en användare och visar dess meddelanden för framöver", + "Stops ignoring a user, showing their messages going forward": "Slutar ignorera en användare och visar dess meddelanden framöver", "Opens the Developer Tools dialog": "Öppna dialogrutan Utvecklarverktyg", "Notify the whole room": "Meddela hela rummet", "Room Notification": "Rumsavisering", @@ -563,7 +563,7 @@ "(could not connect media)": "(det gick inte ansluta media)", " (unsupported)": " (stöds ej)", "Drop file here to upload": "Släpp fil här för att ladda upp", - "Ongoing conference call%(supportedText)s.": "Pågående konferenssamtal%(supportedText)s.", + "Ongoing conference call%(supportedText)s.": "Pågående gruppsamtal%(supportedText)s.", "%(senderName)s sent an image": "%(senderName)s skickade en bild", "%(senderName)s sent a video": "%(senderName)s skickade en video", "%(senderName)s uploaded a file": "%(senderName)s laddade upp en fil", @@ -610,11 +610,11 @@ "This room is not recognised.": "Detta rum känns inte igen.", "Usage": "Användning", "Verified key": "Verifierad nyckel", - "VoIP conference started.": "VoIP-konferens startad.", - "VoIP conference finished.": "VoIP-konferens avslutad.", + "VoIP conference started.": "VoIP-gruppsamtal startat.", + "VoIP conference finished.": "VoIP-gruppsamtal avslutat.", "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s gjorde framtida rumshistorik synligt för okänd (%(visibility)s).", - "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Där denna sida innehåller identifierbar information, till exempel ett rums-, användar- eller grupp-ID, tas data bort innan den skickas till servern.", - "The remote side failed to pick up": "Mottagaren kunde inte svara", + "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Där denna sida innehåller identifierbar information, till exempel ett rums-, användar- eller grupp-ID, tas datan bort innan den skickas till servern.", + "The remote side failed to pick up": "Mottagaren svarade inte", "Jump to read receipt": "Hoppa till läskvitto", "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Denna process låter dig exportera nycklarna för meddelanden som du har fått i krypterade rum till en lokal fil. Du kommer sedan att kunna importera filen i en annan Matrix-klient i framtiden, så att den klienten också kan dekryptera meddelandena.", "Unknown for %(duration)s": "Okänt i %(duration)s", @@ -791,7 +791,7 @@ "%(brand)s collects anonymous analytics to allow us to improve the application.": "%(brand)s samlar in anonym analysdata för att vi ska kunna förbättra applikationen.", "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "Integritet är viktig för oss, så vi samlar inte in några personliga eller identifierbara uppgifter för våra analyser.", "Learn more about how we use analytics.": "Läs mer om hur vi använder analysdata.", - "Analytics": "Analysdata", + "Analytics": "Statistik", "Send analytics data": "Skicka analysdata", "Passphrases must match": "Passfraser måste matcha", "Passphrase must not be empty": "Lösenfras får inte vara tom", @@ -825,7 +825,7 @@ "A call is currently being placed!": "Ett samtal håller på att upprättas!", "A call is already in progress!": "Ett samtal pågår redan!", "Permission Required": "Behörighet krävs", - "You do not have permission to start a conference call in this room": "Du har inte behörighet att starta ett konferenssamtal i detta rum", + "You do not have permission to start a conference call in this room": "Du har inte behörighet att starta ett gruppsamtal i detta rum", "This event could not be displayed": "Den här händelsen kunde inte visas", "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "I krypterade rum, som detta, är URL-förhandsvisning inaktiverad som standard för att säkerställa att din hemserver (där förhandsvisningar genereras) inte kan samla information om länkar du ser i rummet.", "The email field must not be blank.": "Epost-fältet får inte vara tomt.", @@ -875,10 +875,10 @@ "Unable to load! Check your network connectivity and try again.": "Kan inte ladda! Kolla din nätverksuppkoppling och försök igen.", "Whether or not you're logged in (we don't record your username)": "Om du är inloggad eller inte (vi sparar inte ditt användarnamn)", "Failed to invite users to the room:": "Kunde inte bjuda in användare till rummet:", - "Upgrades a room to a new version": "Uppgraderar ett num till en ny version", - "Gets or sets the room topic": "Ger eller sätter ämnet för ett rum", + "Upgrades a room to a new version": "Uppgraderar ett rum till en ny version", + "Gets or sets the room topic": "Hämtar eller sätter ämnet för ett rum", "This room has no topic.": "Det här rummet har inget ämne.", - "Sets the room name": "Sätter rumnamnet", + "Sets the room name": "Sätter rumsnamnet", "%(senderDisplayName)s upgraded this room.": "%(senderDisplayName)s uppgraderade det här rummet.", "%(senderDisplayName)s made the room public to whoever knows the link.": "%(senderDisplayName)s gjorde rummet publikt för alla som kan länken.", "%(senderDisplayName)s has allowed guests to join the room.": "%(senderDisplayName)s har tillåtit gäster att gå med i rummet.", @@ -921,7 +921,7 @@ "Straight rows of keys are easy to guess": "Tangenter i rad på tangentbordet är enkla att gissa", "Short keyboard patterns are easy to guess": "Korta tangentbordsmönster är enkla att gissa", "There was an error joining the room": "Det gick fel när vi försökte gå med i rummet", - "Changes your display nickname in the current room only": "Ändrar ditt visningsnamn endast i det aktuella rummet", + "Changes your display nickname in the current room only": "Ändrar ditt visningsnamn endast i detta rum", "Use a longer keyboard pattern with more turns": "Använd ett längre tangentbordsmönster med fler varv", "Custom user status messages": "Anpassade användarstatusmeddelanden", "Enable Emoji suggestions while typing": "Aktivera Emoji-förslag medan du skriver", @@ -1062,7 +1062,7 @@ "Join millions for free on the largest public server": "Bli medlem gratis på den största offentliga servern", "Premium": "Premium", "Premium hosting for organisations Learn more": "Premium-hosting för organisationer Läs mer", - "Other": "Andra", + "Other": "Annat", "Find other public servers or use a custom server": "Hitta andra offentliga servrar eller använd en anpassad server", "Your Matrix account on %(serverName)s": "Ditt Matrix-konto på %(serverName)s", "Sign in instead": "Logga in istället", @@ -1160,7 +1160,7 @@ "Unable to load backup status": "Det går inte att ladda backupstatus", "Guest": "Gäst", "Could not load user profile": "Kunde inte ladda användarprofil", - "Whether or not you're using the 'breadcrumbs' feature (avatars above the room list)": "Om du använder 'breadcrumbs' eller inte (avatarer ovanför rumslistan)", + "Whether or not you're using the 'breadcrumbs' feature (avatars above the room list)": "Om du använder 'brödsmulor' eller inte (avatarer ovanför rumslistan)", "Replying With Files": "Svarar med filer", "At this time it is not possible to reply with a file. Would you like to upload this file without replying?": "Just nu är det inte möjligt att svara med en fil. Vill du ladda upp filen utan att svara?", "The file '%(fileName)s' failed to upload.": "Filen '%(fileName)s' kunde inte laddas upp.", @@ -1208,19 +1208,19 @@ "Upload %(count)s other files|one": "Ladda upp %(count)s annan fil", "Cancel All": "Avbryt alla", "Upload Error": "Uppladdningsfel", - "Name or Matrix ID": "Namn eller Martix-ID", + "Name or Matrix ID": "Namn eller Matrix-ID", "Your %(brand)s is misconfigured": "%(brand)s är felkonfigurerat", "Call failed due to misconfigured server": "Anrop misslyckades på grund av felkonfigurerad server", "Try using turn.matrix.org": "Prova att använda turn.matrix.org", "The server does not support the room version specified.": "Servern stöder inte den angivna rumsversionen.", "Messages": "Meddelanden", "Actions": "Åtgärder", - "Sends a message as plain text, without interpreting it as markdown": "Skickar ett meddelande som vanlig text, utan att tolka det som markdown", + "Sends a message as plain text, without interpreting it as markdown": "Skickar ett meddelande som vanlig text, utan att tolka det som Markdown", "You do not have the required permissions to use this command.": "Du har inte de behörigheter som krävs för att använda det här kommandot.", - "Changes your avatar in this current room only": "Ändrar din avatar endast i det aktuella rummet", + "Changes your avatar in this current room only": "Ändrar din avatar endast i detta rum", "Changes your avatar in all rooms": "Ändrar din avatar i alla rum", "Use an identity server": "Använd en identitetsserver", - "Unbans user with given ID": "Avbannar användare med givet id", + "Unbans user with given ID": "Avbannar användaren med givet ID", "Sends the given message coloured as a rainbow": "Skickar angivet meddelandet färgat som en regnbåge", "Sends the given emote coloured as a rainbow": "Skickar angiven emoji färgad som en regnbåge", "Displays list of commands with usages and descriptions": "Visar lista över kommandon med beskrivningar", @@ -1320,9 +1320,9 @@ "Please ask the administrator of your homeserver (%(homeserverDomain)s) to configure a TURN server in order for calls to work reliably.": "Be administratören för din hemserver (%(homeserverDomain)s) att konfigurera en TURN-server för att samtal ska fungera pålitligt.", "Alternatively, you can try to use the public server at turn.matrix.org, but this will not be as reliable, and it will share your IP address with that server. You can also manage this in Settings.": "Alternativt kan du testa att använda den offentliga servern turn.matrix.org, men det är inte lika pålitligt och det kommer att dela din IP-adress med den servern. Du kan också hantera detta under Inställningar.", "Warning: Upgrading a room will not automatically migrate room members to the new version of the room. We'll post a link to the new room in the old version of the room - room members will have to click this link to join the new room.": "Varning: Uppgradering av ett rum flyttar inte automatiskt rumsmedlemmar till den nya versionen av rummet. Vi lägger ut en länk till det nya rummet i den gamla versionen av rummet - rumsmedlemmar måste klicka på den här länken för att gå med i det nya rummet.", - "Changes the avatar of the current room": "Ändrar avataren i det aktuella rummet", - "Use an identity server to invite by email. Click continue to use the default identity server (%(defaultIdentityServerName)s) or manage in Settings.": "Använd en identitetsserver för att bjuda in via epost. Klicka på Fortsätt för att använda standardidentitetsservern (%(defaultIdentityServerName)s) eller hantera det i Inställningar.", - "Use an identity server to invite by email. Manage in Settings.": "Använd en identitetsserver för att bjuda in via epost. Hantera det i inställningar.", + "Changes the avatar of the current room": "Ändrar avataren i detta rum", + "Use an identity server to invite by email. Click continue to use the default identity server (%(defaultIdentityServerName)s) or manage in Settings.": "Använd en identitetsserver för att bjuda in via e-post. Klicka på Fortsätt för att använda standardidentitetsservern (%(defaultIdentityServerName)s) eller hantera det i Inställningar.", + "Use an identity server to invite by email. Manage in Settings.": "Använd en identitetsserver för att bjuda in via e-post. Hantera det i inställningar.", "Unexpected error resolving homeserver configuration": "Oväntat fel vid inläsning av hemserverkonfiguration", "Unexpected error resolving identity server configuration": "Oväntat fel vid inläsning av identitetsserverkonfiguration", "Allow fallback call assist server turn.matrix.org when your homeserver does not offer one (your IP address would be shared during a call)": "Tillåt samtalsserver turn.matrix.org som reserv när din hemserver inte erbjuder en (din IP-adress delades under ett samtal)", @@ -1332,8 +1332,8 @@ "All keys backed up": "Alla nycklar säkerhetskopierade", "Add Email Address": "Lägg till e-postadress", "Add Phone Number": "Lägg till telefonnummer", - "Identity server has no terms of service": "Identitetsserver har inga användarvillkor", - "This action requires accessing the default identity server to validate an email address or phone number, but the server does not have any terms of service.": "Den här åtgärden kräver åtkomst till standardidentitetsservern för att validera en e-postadress eller telefonnummer, men servern har inga användarvillkor.", + "Identity server has no terms of service": "Identitetsservern har inga användarvillkor", + "This action requires accessing the default identity server to validate an email address or phone number, but the server does not have any terms of service.": "Den här åtgärden kräver åtkomst till standardidentitetsservern för att validera en e-postadress eller ett telefonnummer, men servern har inga användarvillkor.", "Trust": "Förtroende", "%(name)s (%(userId)s)": "%(name)s (%(userId)s)", "Try out new ways to ignore people (experimental)": "Testa nya sätt att ignorera personer (experimentalt)", @@ -1458,7 +1458,7 @@ "Your user agent": "Din användaragent", "If you cancel now, you won't complete verifying the other user.": "Om du avbryter nu kommer du inte att verifiera den andra användaren.", "If you cancel now, you won't complete verifying your other session.": "Om du avbryter nu kommer du inte att verifiera din andra session.", - "Cancel entering passphrase?": "Avbryta att ange lösenfras?", + "Cancel entering passphrase?": "Avbryta inmatning av lösenfras?", "Setting up keys": "Sätter upp nycklar", "Verify this session": "Verifiera denna session", "Encryption upgrade available": "Krypteringsuppgradering tillgänglig", @@ -1466,8 +1466,8 @@ "Sign In or Create Account": "Logga in eller skapa konto", "Use your account or create a new one to continue.": "Använd ditt konto eller skapa ett nytt för att fortsätta.", "Create Account": "Skapa konto", - "Verifies a user, session, and pubkey tuple": "Verifierar en användar-, session- och pubkey-tupel", - "Unknown (user, session) pair:": "Okänt par (användare, session):", + "Verifies a user, session, and pubkey tuple": "Verifierar en användar-, sessions- och pubkey-tupel", + "Unknown (user, session) pair:": "Okänt (användare, session)-par:", "Session already verified!": "Sessionen är redan verifierad!", "WARNING: Session already verified, but keys do NOT MATCH!": "VARNING: Sessionen har redan verifierats, men nycklarna MATCHAR INTE!", "Unable to revoke sharing for email address": "Det gick inte att återkalla delning för e-postadress", @@ -1522,23 +1522,28 @@ "Space": "Space", "End": "End", "You have been logged out of all sessions and will no longer receive push notifications. To re-enable notifications, sign in again on each device.": "Du har blivit utloggad från alla dina sessioner och kommer inte längre att motta pushnotiser. För att återaktivera pushnotiser, logga in igen på varje enhet.", - "Use Single Sign On to continue": "Använd Engångs Inloggning för att fortsätta", - "Confirm adding this email address by using Single Sign On to prove your identity.": "Bekräfta att du lägger till e-postadressen genom att använda Engångs Inloggning för att bevisa din identitet.", - "Single Sign On": "Engångs Inloggning", - "Confirm adding email": "Bekräfta att du lägger till e-posten", - "Click the button below to confirm adding this email address.": "Klicka på knappen nedan för att bekräfta att du lägger till e-postadressen.", - "Confirm adding this phone number by using Single Sign On to prove your identity.": "Bekräfta att du lägger till telefon numret genom att använda Engångs Inloggning för att bevisa din identitet.", - "Confirm adding phone number": "Bekräfta att du lägger till telefon numret", - "Click the button below to confirm adding this phone number.": "Klicka på knappen nedan för att bekräfta att du lägger till telefon numret.", - "Are you sure you want to cancel entering passphrase?": "Är du säker på att du bill avbryta inmatning av lösenordet?", + "Use Single Sign On to continue": "Använd single sign-on för att fortsätta", + "Confirm adding this email address by using Single Sign On to prove your identity.": "Bekräfta tilläggning av e-postadressen genom att använda single sign-on för att bevisa din identitet.", + "Single Sign On": "Single sign-on", + "Confirm adding email": "Bekräfta tilläggning av e-postadressen", + "Click the button below to confirm adding this email address.": "Klicka på knappen nedan för att bekräfta tilläggning av e-postadressen.", + "Confirm adding this phone number by using Single Sign On to prove your identity.": "Bekräfta tilläggning av telefonnumret genom att använda single sign-on för att bevisa din identitet.", + "Confirm adding phone number": "Bekräfta tilläggning av telefonnumret", + "Click the button below to confirm adding this phone number.": "Klicka på knappen nedan för att bekräfta tilläggning av telefonnumret.", + "Are you sure you want to cancel entering passphrase?": "Är du säker på att du vill avbryta inmatning av lösenfrasen?", "Go Back": "Gå tillbaka", - "Room name or address": "Rum namn eller adress", + "Room name or address": "Rummets namn eller adress", "%(name)s is requesting verification": "%(name)s begär verifiering", "Use your account to sign in to the latest version": "Använd ditt konto för att logga in till den senaste versionen", "We’re excited to announce Riot is now Element": "Vi är glada att meddela att Riot är nu Element", "Riot is now Element!": "Riot är nu Element!", "Learn More": "Lär mer", - "Sends a message as html, without interpreting it as markdown": "Skicka ett meddelande som html, utan att tolka det som markdown", + "Sends a message as html, without interpreting it as markdown": "Skicka ett meddelande som HTML, utan att tolka det som Markdown", "Failed to set topic": "Misslyckades med att ställa in ämnet", - "Community Autocomplete": "Autokomplettering av gemenskaper" + "Community Autocomplete": "Autokomplettering av gemenskaper", + "Joins room with given address": "Går med i rummet med den givna adressen", + "Unrecognised room address:": "Okänd rumsadress:", + "Command failed": "Kommandot misslyckades", + "Could not find user in room": "Kunde inte hitta användaren i rummet", + "Please supply a widget URL or embed code": "Ange en widget-URL eller inbäddningskod" } From a3eb4e0417e6c2fab9fa9389844de93879e1fe75 Mon Sep 17 00:00:00 2001 From: stuve20 Date: Mon, 24 Aug 2020 18:40:19 +0000 Subject: [PATCH 317/424] Translated using Weblate (Swedish) Currently translated at 62.3% (1455 of 2337 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/sv/ --- src/i18n/strings/sv.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index 6f17b2f2cd..e1b109c11c 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -608,7 +608,7 @@ "Failed to add the following rooms to %(groupId)s:": "Det gick inte att lägga till följande rum till %(groupId)s:", "Missing roomId.": "Rums-ID saknas.", "This room is not recognised.": "Detta rum känns inte igen.", - "Usage": "Användning", + "Usage": "Användande", "Verified key": "Verifierad nyckel", "VoIP conference started.": "VoIP-gruppsamtal startat.", "VoIP conference finished.": "VoIP-gruppsamtal avslutat.", From 44246dc96b7440385f2df6a08e6471d585bcb798 Mon Sep 17 00:00:00 2001 From: purjolini Date: Mon, 24 Aug 2020 18:53:47 +0000 Subject: [PATCH 318/424] Translated using Weblate (Swedish) Currently translated at 62.3% (1455 of 2337 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/sv/ --- src/i18n/strings/sv.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index e1b109c11c..13560c2cdd 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -1545,5 +1545,6 @@ "Unrecognised room address:": "Okänd rumsadress:", "Command failed": "Kommandot misslyckades", "Could not find user in room": "Kunde inte hitta användaren i rummet", - "Please supply a widget URL or embed code": "Ange en widget-URL eller inbäddningskod" + "Please supply a widget URL or embed code": "Ange en widget-URL eller inbäddningskod", + "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and session %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "VARNING: NYCKEL VARIFIERING MYSSLYCKADES! Den signerade nyckeln för %(userId)s och session %(deviceId)s är \"%(fprint)s\" vilket inte matchar nyckel \"%(fingerprint)s\". Det kan betyda att kommunikationen är övervakad!" } From 186374a95061cd26c1192324b0b441f50d75eaa6 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Mon, 24 Aug 2020 21:08:07 +0100 Subject: [PATCH 319/424] BaseAvatar avoid initial render with default avatar --- src/components/views/avatars/BaseAvatar.tsx | 41 +++++++++++---------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/src/components/views/avatars/BaseAvatar.tsx b/src/components/views/avatars/BaseAvatar.tsx index 4c6fde19eb..7860857c55 100644 --- a/src/components/views/avatars/BaseAvatar.tsx +++ b/src/components/views/avatars/BaseAvatar.tsx @@ -42,34 +42,35 @@ interface IProps { className?: string; } +const calculateUrls = (url, urls) => { + // work out the full set of urls to try to load. This is formed like so: + // imageUrls: [ props.url, ...props.urls ] + + let _urls = []; + if (!SettingsStore.getValue("lowBandwidth")) { + _urls = urls || []; + + if (url) { + _urls.unshift(url); // put in urls[0] + } + } + + // deduplicate URLs + return Array.from(new Set(_urls)); +}; + const useImageUrl = ({url, urls}): [string, () => void] => { - const [imageUrls, setUrls] = useState([]); - const [urlsIndex, setIndex] = useState(); + const [imageUrls, setUrls] = useState(calculateUrls(url, urls)); + const [urlsIndex, setIndex] = useState(0); const onError = useCallback(() => { setIndex(i => i + 1); // try the next one }, []); - const memoizedUrls = useMemo(() => urls, [JSON.stringify(urls)]); // eslint-disable-line react-hooks/exhaustive-deps useEffect(() => { - // work out the full set of urls to try to load. This is formed like so: - // imageUrls: [ props.url, ...props.urls ] - - let _urls = []; - if (!SettingsStore.getValue("lowBandwidth")) { - _urls = memoizedUrls || []; - - if (url) { - _urls.unshift(url); // put in urls[0] - } - } - - // deduplicate URLs - _urls = Array.from(new Set(_urls)); - + setUrls(calculateUrls(url, urls)); setIndex(0); - setUrls(_urls); - }, [url, memoizedUrls]); // eslint-disable-line react-hooks/exhaustive-deps + }, [url, JSON.stringify(urls)]); // eslint-disable-line react-hooks/exhaustive-deps const cli = useContext(MatrixClientContext); const onClientSync = useCallback((syncState, prevState) => { From eab4e5ae6502443b01441bb4e12deec958e7b348 Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Tue, 25 Aug 2020 07:17:00 +0000 Subject: [PATCH 320/424] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (2337 of 2337 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/zh_Hant/ --- src/i18n/strings/zh_Hant.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json index 12437b8fa6..ad845dfb78 100644 --- a/src/i18n/strings/zh_Hant.json +++ b/src/i18n/strings/zh_Hant.json @@ -2425,5 +2425,8 @@ "Preparing to download logs": "正在準備下載紀錄檔", "Download logs": "下載紀錄檔", "Unexpected server error trying to leave the room": "試圖離開聊天室時發生意外的伺服器錯誤", - "Error leaving room": "離開聊天室時發生錯誤" + "Error leaving room": "離開聊天室時發生錯誤", + "Communities v2 prototypes. Requires compatible homeserver. Highly experimental - use with caution.": "社群 v2 原型。需要相容的家伺服器。高度實驗性,小心使用。", + "Explore rooms in %(communityName)s": "在 %(communityName)s 中探索聊天室", + "Set up Secure Backup": "設定安全備份" } From 310ff1c93894ecbbe1a603445c397d1f386cf156 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Priit=20J=C3=B5er=C3=BC=C3=BCt?= Date: Mon, 24 Aug 2020 17:19:46 +0000 Subject: [PATCH 321/424] Translated using Weblate (Estonian) Currently translated at 100.0% (2337 of 2337 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/et/ --- src/i18n/strings/et.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/et.json b/src/i18n/strings/et.json index d3f1fcff6e..8a0ba7f54b 100644 --- a/src/i18n/strings/et.json +++ b/src/i18n/strings/et.json @@ -2424,5 +2424,6 @@ "Unexpected server error trying to leave the room": "Jututoast lahkumisel tekkis serveris ootamatu viga", "Error leaving room": "Viga jututoast lahkumisel", "Communities v2 prototypes. Requires compatible homeserver. Highly experimental - use with caution.": "Kogukondade v2 prototüüp. Eeldab, et koduserver toetab sellist funktsionaalsust. Lahendus on esialgne ja katseline - kui kasutad, siis väga ettevaatlikult.", - "Explore rooms in %(communityName)s": "Uuri jututubasid %(communityName)s kogukonnas" + "Explore rooms in %(communityName)s": "Uuri jututubasid %(communityName)s kogukonnas", + "Set up Secure Backup": "Võta kasutusele turvaline varundus" } From 1f6370ca983510ce96026e5f3e9769183d6d3c6f Mon Sep 17 00:00:00 2001 From: XoseM Date: Tue, 25 Aug 2020 05:31:49 +0000 Subject: [PATCH 322/424] Translated using Weblate (Galician) Currently translated at 100.0% (2337 of 2337 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/gl/ --- src/i18n/strings/gl.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/gl.json b/src/i18n/strings/gl.json index 7843a416df..0f2c83fd55 100644 --- a/src/i18n/strings/gl.json +++ b/src/i18n/strings/gl.json @@ -2422,5 +2422,8 @@ "Preparing to download logs": "Preparándose para descargar rexistro", "Download logs": "Descargar rexistro", "Unexpected server error trying to leave the room": "Fallo non agardado no servidor ó intentar saír da sala", - "Error leaving room": "Erro ó saír da sala" + "Error leaving room": "Erro ó saír da sala", + "Communities v2 prototypes. Requires compatible homeserver. Highly experimental - use with caution.": "Prototipos de Comunidades v2. Require un servidor compatible. Característica experimental - usa con tino.", + "Explore rooms in %(communityName)s": "Explorar salas en %(communityName)s", + "Set up Secure Backup": "Configurar Copia de apoio Segura" } From 1251d9216d3d1fa63c17133e639bdad63bb1f34e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matija=20=C5=A0uklje?= Date: Mon, 24 Aug 2020 19:01:59 +0000 Subject: [PATCH 323/424] Translated using Weblate (Slovenian) Currently translated at 0.5% (12 of 2337 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/sl/ --- src/i18n/strings/sl.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/sl.json b/src/i18n/strings/sl.json index 764b80e449..985e4a39d1 100644 --- a/src/i18n/strings/sl.json +++ b/src/i18n/strings/sl.json @@ -9,5 +9,7 @@ "Sign In": "Prijava", "powered by Matrix": "poganja Matrix", "Custom Server Options": "Možnosti strežnika po meri", - "Your language of choice": "Vaš jezik po izbiri" + "Your language of choice": "Vaš jezik po izbiri", + "Use Single Sign On to continue": "Uporabi Single Sign On za prijavo", + "Confirm adding this email address by using Single Sign On to prove your identity.": "" } From fad4fe5c7d3f1acf41220e3e4bc70227ae4cf419 Mon Sep 17 00:00:00 2001 From: LinAGKar Date: Mon, 24 Aug 2020 18:54:57 +0000 Subject: [PATCH 324/424] Translated using Weblate (Swedish) Currently translated at 63.1% (1475 of 2337 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/sv/ --- src/i18n/strings/sv.json | 44 +++++++++++++++++++++++++++++----------- 1 file changed, 32 insertions(+), 12 deletions(-) diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index 13560c2cdd..58279124fc 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -203,7 +203,7 @@ "Seen by %(userName)s at %(dateTime)s": "Sedd av %(userName)s %(dateTime)s", "Send Reset Email": "Skicka återställningsmeddelande", "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s skickade en bild.", - "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s bjöd in %(targetDisplayName)s med i rummet.", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s bjöd in %(targetDisplayName)s att gå med i rummet.", "Server error": "Serverfel", "Server may be unavailable, overloaded, or search timed out :(": "Servern kan vara otillgänglig, överbelastad, eller så tog sökningen för lång tid :(", "Server may be unavailable, overloaded, or you hit a bug.": "Servern kan vara otillgänglig eller överbelastad, eller så stötte du på en bugg.", @@ -609,10 +609,10 @@ "Missing roomId.": "Rums-ID saknas.", "This room is not recognised.": "Detta rum känns inte igen.", "Usage": "Användande", - "Verified key": "Verifierad nyckel", + "Verified key": "Verifierade nyckeln", "VoIP conference started.": "VoIP-gruppsamtal startat.", "VoIP conference finished.": "VoIP-gruppsamtal avslutat.", - "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s gjorde framtida rumshistorik synligt för okänd (%(visibility)s).", + "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s satte framtida rumshistorik till okänd synlighet (%(visibility)s).", "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Där denna sida innehåller identifierbar information, till exempel ett rums-, användar- eller grupp-ID, tas datan bort innan den skickas till servern.", "The remote side failed to pick up": "Mottagaren svarade inte", "Jump to read receipt": "Hoppa till läskvitto", @@ -880,11 +880,11 @@ "This room has no topic.": "Det här rummet har inget ämne.", "Sets the room name": "Sätter rumsnamnet", "%(senderDisplayName)s upgraded this room.": "%(senderDisplayName)s uppgraderade det här rummet.", - "%(senderDisplayName)s made the room public to whoever knows the link.": "%(senderDisplayName)s gjorde rummet publikt för alla som kan länken.", + "%(senderDisplayName)s made the room public to whoever knows the link.": "%(senderDisplayName)s gjorde rummet publikt för alla som har länken.", "%(senderDisplayName)s has allowed guests to join the room.": "%(senderDisplayName)s har tillåtit gäster att gå med i rummet.", "%(senderDisplayName)s changed the join rule to %(rule)s": "%(senderDisplayName)s ändrade regeln för att gå med till %(rule)s", "%(senderDisplayName)s has prevented guests from joining the room.": "%(senderDisplayName)s har nekat gäster att gå med i rummet.", - "%(senderDisplayName)s changed guest access to %(rule)s": "%(senderDisplayName)s ändrade gäst-åtkomst till %(rule)s", + "%(senderDisplayName)s changed guest access to %(rule)s": "%(senderDisplayName)s ändrade gäståtkomst till %(rule)s", "%(displayName)s is typing …": "%(displayName)s skriver …", "%(names)s and %(count)s others are typing …|other": "%(names)s och %(count)s andra skriver …", "%(names)s and %(count)s others are typing …|one": "%(names)s och en till skriver …", @@ -1221,9 +1221,9 @@ "Changes your avatar in all rooms": "Ändrar din avatar i alla rum", "Use an identity server": "Använd en identitetsserver", "Unbans user with given ID": "Avbannar användaren med givet ID", - "Sends the given message coloured as a rainbow": "Skickar angivet meddelandet färgat som en regnbåge", - "Sends the given emote coloured as a rainbow": "Skickar angiven emoji färgad som en regnbåge", - "Displays list of commands with usages and descriptions": "Visar lista över kommandon med beskrivningar", + "Sends the given message coloured as a rainbow": "Skickar angivet meddelande i regnbågsfärg", + "Sends the given emote coloured as a rainbow": "Skickar angiven emoji i regnbågsfärg", + "Displays list of commands with usages and descriptions": "Visar lista över kommandon med användande beskrivningar", "%(senderName)s made no change.": "%(senderName)s gjorde ingen ändring.", "Cannot reach homeserver": "Kan inte nå hemservern", "Ensure you have a stable internet connection, or get in touch with the server admin": "Se till att du har en stabil internetanslutning, eller kontakta serveradministratören", @@ -1354,8 +1354,8 @@ "Connecting to integration manager...": "Ansluter till integrationshanterare...", "Cannot connect to integration manager": "Det går inte att ansluta till integrationshanterare", "The integration manager is offline or it cannot reach your homeserver.": "Integrationshanteraren är offline eller kan inte nå din hemserver.", - "Use an Integration Manager (%(serverName)s) to manage bots, widgets, and sticker packs.": "Använd en Integrationshanterare (%(serverName)s) för att hantera bots, widgets och klistermärkespaket.", - "Use an Integration Manager to manage bots, widgets, and sticker packs.": "Använd en Integrationshanterare för att hantera bots, widgets och klistermärkespaket.", + "Use an Integration Manager (%(serverName)s) to manage bots, widgets, and sticker packs.": "Använd en integrationshanterare (%(serverName)s) för att hantera bottar, widgets och dekalpaket.", + "Use an Integration Manager to manage bots, widgets, and sticker packs.": "Använd en integrationshanterare för att hantera bottar, widgets och dekalpaket.", "Manage integrations": "Hantera integrationer", "Integration Managers receive configuration data, and can modify widgets, send room invites, and set power levels on your behalf.": "Integrationshanterare får konfigurationsdata och kan ändra widgetar, skicka ruminbjudningar och ställa in behörighetsnivåer via ditt konto.", "Close preview": "Stäng förhandsvisning", @@ -1519,7 +1519,7 @@ "Page Down": "Page Down", "Esc": "Esc", "Enter": "Enter", - "Space": "Space", + "Space": "Mellanslag", "End": "End", "You have been logged out of all sessions and will no longer receive push notifications. To re-enable notifications, sign in again on each device.": "Du har blivit utloggad från alla dina sessioner och kommer inte längre att motta pushnotiser. För att återaktivera pushnotiser, logga in igen på varje enhet.", "Use Single Sign On to continue": "Använd single sign-on för att fortsätta", @@ -1546,5 +1546,25 @@ "Command failed": "Kommandot misslyckades", "Could not find user in room": "Kunde inte hitta användaren i rummet", "Please supply a widget URL or embed code": "Ange en widget-URL eller inbäddningskod", - "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and session %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "VARNING: NYCKEL VARIFIERING MYSSLYCKADES! Den signerade nyckeln för %(userId)s och session %(deviceId)s är \"%(fprint)s\" vilket inte matchar nyckel \"%(fingerprint)s\". Det kan betyda att kommunikationen är övervakad!" + "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and session %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "VARNING: NYCKELVERIFIERING MISSLYCKADES! Den signerade nyckeln för %(userId)s och sessionen %(deviceId)s är \"%(fprint)s\" vilket inte matchar den givna nyckeln \"%(fingerprint)s\". Detta kan betyda att kommunikationen är övervakad!", + "The signing key you provided matches the signing key you received from %(userId)s's session %(deviceId)s. Session marked as verified.": "Signeringsnyckeln du gav matchar signeringsnyckeln du fick av %(userId)ss session %(deviceId)s. Sessionen markerades som verifierad.", + "Displays information about a user": "Visar information om en användare", + "Send a bug report with logs": "Skicka en buggrapport med loggar", + "Opens chat with the given user": "Öppnar en chatt med den valda användaren", + "Sends a message to the given user": "Skickar ett meddelande till den valda användaren", + "%(senderDisplayName)s changed the room name from %(oldRoomName)s to %(newRoomName)s.": "%(senderDisplayName)s bytte rummets namn från %(oldRoomName)s till %(newRoomName)s.", + "%(senderName)s added the alternative addresses %(addresses)s for this room.|other": "%(senderName)s lade till de alternativa adresserna %(addresses)s till det här rummet.", + "%(senderName)s added the alternative addresses %(addresses)s for this room.|one": "%(senderName)s lade till den alternativa adressen %(addresses)s till det här rummet.", + "%(senderName)s removed the alternative addresses %(addresses)s for this room.|other": "%(senderName)s tog bort de alternativa adresserna %(addresses)s från det här rummet.", + "%(senderName)s removed the alternative addresses %(addresses)s for this room.|one": "%(senderName)s tog bort den alternativa adressen %(addresses)s från det här rummet.", + "%(senderName)s changed the alternative addresses for this room.": "%(senderName)s ändrade de alternativa adresserna för det här rummet.", + "%(senderName)s changed the main and alternative addresses for this room.": "%(senderName)s ändrade huvudadressen och de alternativa adresserna för det här rummet.", + "%(senderName)s changed the addresses for this room.": "%(senderName)s ändrade adresserna för det här rummet.", + "%(senderName)s removed a ban rule matching %(glob)s": "%(senderName)s tog bort en bannregel som matchar %(glob)s", + "%(senderName)s updated an invalid ban rule": "%(senderName)s uppdaterade en ogiltig bannregel", + "%(senderName)s updated the rule banning users matching %(glob)s for %(reason)s": "%(senderName)s uppdaterade regeln som bannar användare som matchar %(glob)s på grund av %(reason)s", + "%(senderName)s updated the rule banning rooms matching %(glob)s for %(reason)s": "%(senderName)s uppdaterade regeln som bannar rum som matchar %(glob)s på grund av %(reason)s", + "%(senderName)s updated the rule banning servers matching %(glob)s for %(reason)s": "%(senderName)s uppdaterade regeln som bannar servrar som matchar %(glob)s på grund av %(reason)s", + "%(senderName)s updated a ban rule matching %(glob)s for %(reason)s": "%(senderName)s uppdaterade en bannregel som matchar %(glob)s på grund av %(reason)s", + "Use bots, bridges, widgets and sticker packs": "Använd bottar, bryggor, widgets och dekalpaket" } From a732c55797599446c131e46ccc937859978ce5c6 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Fri, 21 Aug 2020 18:22:05 +0100 Subject: [PATCH 325/424] Add secret storage readiness checks This visits all places that were checking for cross-siging readiness and adapts them to also check for secret storage readiness if needed. Part of https://github.com/vector-im/element-web/issues/13895 --- src/DeviceListener.ts | 6 +++++- .../views/settings/CrossSigningPanel.js | 16 ++++++++++++---- src/i18n/strings/en_EN.json | 3 ++- src/rageshake/submit-rageshake.ts | 1 + 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/DeviceListener.ts b/src/DeviceListener.ts index 6b667ae54d..b05f0fcd68 100644 --- a/src/DeviceListener.ts +++ b/src/DeviceListener.ts @@ -207,9 +207,13 @@ export default class DeviceListener { // (we add a listener on sync to do once check after the initial sync is done) if (!cli.isInitialSyncComplete()) return; + // JRS: This will change again in the next PR which moves secret storage + // later in the process. const crossSigningReady = await cli.isCrossSigningReady(); + const secretStorageReady = await cli.isSecretStorageReady(); + const allSystemsReady = crossSigningReady && secretStorageReady; - if (this.dismissedThisDeviceToast || crossSigningReady) { + if (this.dismissedThisDeviceToast || allSystemsReady) { hideSetupEncryptionToast(); } else if (this.shouldShowSetupEncryptionToast()) { // make sure our keys are finished downloading diff --git a/src/components/views/settings/CrossSigningPanel.js b/src/components/views/settings/CrossSigningPanel.js index 1c6baee9af..847bcf3da3 100644 --- a/src/components/views/settings/CrossSigningPanel.js +++ b/src/components/views/settings/CrossSigningPanel.js @@ -89,6 +89,7 @@ export default class CrossSigningPanel extends React.PureComponent { const homeserverSupportsCrossSigning = await cli.doesServerSupportUnstableFeature("org.matrix.e2e_cross_signing"); const crossSigningReady = await cli.isCrossSigningReady(); + const secretStorageReady = await cli.isSecretStorageReady(); this.setState({ crossSigningPublicKeysOnDevice, @@ -101,6 +102,7 @@ export default class CrossSigningPanel extends React.PureComponent { secretStorageKeyInAccount, homeserverSupportsCrossSigning, crossSigningReady, + secretStorageReady, }); } @@ -151,6 +153,7 @@ export default class CrossSigningPanel extends React.PureComponent { secretStorageKeyInAccount, homeserverSupportsCrossSigning, crossSigningReady, + secretStorageReady, } = this.state; let errorSection; @@ -166,14 +169,19 @@ export default class CrossSigningPanel extends React.PureComponent { summarisedStatus =

{_t( "Your homeserver does not support cross-signing.", )}

; - } else if (crossSigningReady) { + } else if (crossSigningReady && secretStorageReady) { summarisedStatus =

✅ {_t( - "Cross-signing and secret storage are enabled.", + "Cross-signing and secret storage are ready for use.", + )}

; + } else if (crossSigningReady && !secretStorageReady) { + summarisedStatus =

✅ {_t( + "Cross-signing is ready for use, but secret storage is " + + "currently not being used to backup your keys.", )}

; } else if (crossSigningPrivateKeysInStorage) { summarisedStatus =

{_t( - "Your account has a cross-signing identity in secret storage, but it " + - "is not yet trusted by this session.", + "Your account has a cross-signing identity in secret storage, " + + "but it is not yet trusted by this session.", )}

; } else { summarisedStatus =

{_t( diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index c12b57c033..dc2669e20f 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -645,7 +645,8 @@ "Confirm password": "Confirm password", "Change Password": "Change Password", "Your homeserver does not support cross-signing.": "Your homeserver does not support cross-signing.", - "Cross-signing and secret storage are enabled.": "Cross-signing and secret storage are enabled.", + "Cross-signing and secret storage are ready for use.": "Cross-signing and secret storage are ready for use.", + "Cross-signing is ready for use, but secret storage is currently not being used to backup your keys.": "Cross-signing is ready for use, but secret storage is currently not being used to backup your keys.", "Your account has a cross-signing identity in secret storage, but it is not yet trusted by this session.": "Your account has a cross-signing identity in secret storage, but it is not yet trusted by this session.", "Cross-signing and secret storage are not yet set up.": "Cross-signing and secret storage are not yet set up.", "Reset cross-signing and secret storage": "Reset cross-signing and secret storage", diff --git a/src/rageshake/submit-rageshake.ts b/src/rageshake/submit-rageshake.ts index 74292749b9..448562b68a 100644 --- a/src/rageshake/submit-rageshake.ts +++ b/src/rageshake/submit-rageshake.ts @@ -115,6 +115,7 @@ async function collectBugReport(opts: IOpts = {}, gzipLogs = true) { body.append("cross_signing_supported_by_hs", String(await client.doesServerSupportUnstableFeature("org.matrix.e2e_cross_signing"))); body.append("cross_signing_ready", String(await client.isCrossSigningReady())); + body.append("secret_storage_ready", String(await client.isSecretStorageReady())); } } From d1150cd115906a1598988bc8cb6d8f34ba383753 Mon Sep 17 00:00:00 2001 From: LinAGKar Date: Tue, 25 Aug 2020 11:01:51 +0000 Subject: [PATCH 326/424] Translated using Weblate (Swedish) Currently translated at 64.0% (1495 of 2337 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/sv/ --- src/i18n/strings/sv.json | 40 +++++++++++++++++++++++++++++----------- 1 file changed, 29 insertions(+), 11 deletions(-) diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index 58279124fc..dcd0a8732a 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -659,8 +659,8 @@ "%(severalUsers)schanged their avatar %(count)s times|one": "%(severalUsers)sändrade sin avatar", "%(oneUser)schanged their avatar %(count)s times|other": "%(oneUser)sändrade sin avatar %(count)s gånger", "%(oneUser)schanged their avatar %(count)s times|one": "%(oneUser)sändrade sin avatar", - "%(items)s and %(count)s others|other": "%(items)s och %(count)s andra", - "%(items)s and %(count)s others|one": "%(items)s och en annan", + "%(items)s and %(count)s others|other": "%(items)s och %(count)s till", + "%(items)s and %(count)s others|one": "%(items)s och en till", "collapse": "fäll ihop", "expand": "fäll ut", "In reply to ": "Som svar på ", @@ -788,11 +788,11 @@ "Please forget all messages I have sent when my account is deactivated (Warning: this will cause future users to see an incomplete view of conversations)": "Glöm alla meddelanden som jag har skickat när mitt konto inaktiveras (Varning: detta kommer att göra så att framtida användare får se ofullständiga konversationer)", "To continue, please enter your password:": "För att fortsätta, ange ditt lösenord:", "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Om du har anmält en bugg via GitHub, kan felsökningsloggar hjälpa oss spåra problemet. Felsökningsloggarna innehåller användningsdata för applikationen inklusive ditt användarnamn, ID eller alias för rum och grupper du besökt och användarnamn för andra användare. De innehåller inte meddelanden.", - "%(brand)s collects anonymous analytics to allow us to improve the application.": "%(brand)s samlar in anonym analysdata för att vi ska kunna förbättra applikationen.", - "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "Integritet är viktig för oss, så vi samlar inte in några personliga eller identifierbara uppgifter för våra analyser.", - "Learn more about how we use analytics.": "Läs mer om hur vi använder analysdata.", + "%(brand)s collects anonymous analytics to allow us to improve the application.": "%(brand)s samlar in anonym statistik för att vi ska kunna förbättra applikationen.", + "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "Integritet är viktig för oss, så vi samlar inte in några personliga eller identifierbara uppgifter i våran statistik.", + "Learn more about how we use analytics.": "Läs mer om hur vi använder statistik.", "Analytics": "Statistik", - "Send analytics data": "Skicka analysdata", + "Send analytics data": "Skicka statistik", "Passphrases must match": "Passfraser måste matcha", "Passphrase must not be empty": "Lösenfras får inte vara tom", "Confirm passphrase": "Bekräfta lösenfrasen", @@ -840,7 +840,7 @@ "System Alerts": "Systemvarningar", "Sorry, your homeserver is too old to participate in this room.": "Tyvärr, din hemserver är för gammal för att delta i detta rum.", "Please contact your homeserver administrator.": "Vänligen kontakta din hemserver-administratör.", - "Please contact your service administrator to continue using the service.": "Kontakta din serviceadministratör för att fortsätta använda tjänsten.", + "Please contact your service administrator to continue using the service.": "Kontakta din tjänstadministratör för att fortsätta använda tjänsten.", "This homeserver has hit its Monthly Active User limit.": "Hemservern har nått sin månatliga gräns för användaraktivitet.", "This homeserver has exceeded one of its resource limits.": "Hemservern har överskridit en av sina resursgränser.", "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Ditt meddelande skickades inte för hemservern har nått sin månatliga gräns för användaraktivitet. Kontakta din serviceadministratör för att fortsätta använda servicen.", @@ -861,7 +861,7 @@ "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "Hindra användare från att prata i den gamla rumsversionen och posta ett meddelande som rekommenderar användare att flytta till det nya rummet", "Put a link back to the old room at the start of the new room so people can see old messages": "Sätta en länk tillbaka till det gamla rummet i början av det nya rummet så att folk kan se gamla meddelanden", "Forces the current outbound group session in an encrypted room to be discarded": "Tvingar den aktuella utgående gruppsessionen i ett krypterat rum att överges", - "Unable to connect to Homeserver. Retrying...": "Det gick inte att ansluta till hemserver. Försöker igen ...", + "Unable to connect to Homeserver. Retrying...": "Det gick inte att ansluta till hemservern. Försöker igen…", "%(senderName)s set the main address for this room to %(address)s.": "%(senderName)s satte huvudadressen för detta rum till %(address)s.", "%(senderName)s removed the main address for this room.": "%(senderName)s tog bort huvudadressen för detta rum.", "Add some now": "Lägg till några nu", @@ -1209,7 +1209,7 @@ "Cancel All": "Avbryt alla", "Upload Error": "Uppladdningsfel", "Name or Matrix ID": "Namn eller Matrix-ID", - "Your %(brand)s is misconfigured": "%(brand)s är felkonfigurerat", + "Your %(brand)s is misconfigured": "Din %(brand)s är felkonfigurerad", "Call failed due to misconfigured server": "Anrop misslyckades på grund av felkonfigurerad server", "Try using turn.matrix.org": "Prova att använda turn.matrix.org", "The server does not support the room version specified.": "Servern stöder inte den angivna rumsversionen.", @@ -1227,7 +1227,7 @@ "%(senderName)s made no change.": "%(senderName)s gjorde ingen ändring.", "Cannot reach homeserver": "Kan inte nå hemservern", "Ensure you have a stable internet connection, or get in touch with the server admin": "Se till att du har en stabil internetanslutning, eller kontakta serveradministratören", - "Ask your %(brand)s admin to check your config for incorrect or duplicate entries.": "Be din %(brand)s-administratör att kontrollera din konfiguration efter felaktiga eller duplicerade poster.", + "Ask your %(brand)s admin to check your config for incorrect or duplicate entries.": "Be din %(brand)s-administratör att kolla din konfiguration efter felaktiga eller duplicerade poster.", "Cannot reach identity server": "Kan inte nå identitetsservern", "You can register, but some features will be unavailable until the identity server is back online. If you keep seeing this warning, check your configuration or contact a server admin.": "Du kan registrera dig, men vissa funktioner kommer inte att vara tillgängliga förrän identitetsservern är online igen. Om du fortsätter att se den här varningen, kontrollera din konfiguration eller kontakta en serveradministratör.", "You can reset your password, but some features will be unavailable until the identity server is back online. If you keep seeing this warning, check your configuration or contact a server admin.": "Du kan återställa ditt lösenord, men vissa funktioner kommer inte att vara tillgängliga förrän identitetsservern är online igen. Om du fortsätter att se den här varningen, kontrollera din konfiguration eller kontakta en serveradministratör.", @@ -1566,5 +1566,23 @@ "%(senderName)s updated the rule banning rooms matching %(glob)s for %(reason)s": "%(senderName)s uppdaterade regeln som bannar rum som matchar %(glob)s på grund av %(reason)s", "%(senderName)s updated the rule banning servers matching %(glob)s for %(reason)s": "%(senderName)s uppdaterade regeln som bannar servrar som matchar %(glob)s på grund av %(reason)s", "%(senderName)s updated a ban rule matching %(glob)s for %(reason)s": "%(senderName)s uppdaterade en bannregel som matchar %(glob)s på grund av %(reason)s", - "Use bots, bridges, widgets and sticker packs": "Använd bottar, bryggor, widgets och dekalpaket" + "Use bots, bridges, widgets and sticker packs": "Använd bottar, bryggor, widgets och dekalpaket", + "%(senderName)s created a rule banning users matching %(glob)s for %(reason)s": "%(senderName)s skapade en regel som bannar användare som matchar %(glob)s på grund av %(reason)s", + "%(senderName)s created a rule banning rooms matching %(glob)s for %(reason)s": "%(senderName)s skapade en regel som bannar rum som matchar %(glob)s på grund av %(reason)s", + "%(senderName)s created a rule banning servers matching %(glob)s for %(reason)s": "%(senderName)s skapade en regel som bannar servrar som matchar %(glob)s på grund av %(reason)s", + "%(senderName)s created a ban rule matching %(glob)s for %(reason)s": "%(senderName)s skapade en bannregel som matchar %(glob)s på grund av %(reason)s", + "%(senderName)s changed a rule that was banning users matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s ändrade en regel som bannade användare som matchade %(oldGlob)s till att matcha %(newGlob)s på grund av %(reason)s", + "%(senderName)s changed a rule that was banning rooms matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s ändrade en regel som bannade rum som matchade %(oldGlob)s till att matcha %(newGlob)s på grund av %(reason)s", + "%(senderName)s changed a rule that was banning servers matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s ändrade en regel som bannade servrar som matchade %(oldGlob)s till att matcha %(newGlob)s på grund av %(reason)s", + "%(senderName)s updated a ban rule that was matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s uppdaterade en bannregel som matchade %(oldGlob)s till att matcha %(newGlob)s på grund av %(reason)s", + "Light": "Ljust", + "Dark": "Mörkt", + "You signed in to a new session without verifying it:": "Du loggade in i en ny session utan att verifiera den:", + "Verify your other session using one of the options below.": "Verifiera din andra session med ett av alternativen nedan.", + "%(name)s (%(userId)s) signed in to a new session without verifying it:": "%(name)s (%(userId)s) loggade in i en ny session utan att verifiera den:", + "Ask this user to verify their session, or manually verify it below.": "Be den här användaren att verifiera sin session, eller verifiera den manuellt nedan.", + "Not Trusted": "Inte betrodd", + "Manually Verify by Text": "Verifiera manuellt med text", + "Interactively verify by Emoji": "Verifiera interaktivt med emoji", + "Done": "Klar" } From 6929b9af4140be6ac5a6f9f713335129e8354390 Mon Sep 17 00:00:00 2001 From: purjolini Date: Tue, 25 Aug 2020 15:02:28 +0000 Subject: [PATCH 327/424] Translated using Weblate (Swedish) Currently translated at 64.0% (1495 of 2337 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/sv/ --- src/i18n/strings/sv.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index dcd0a8732a..883b26f601 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -1584,5 +1584,6 @@ "Not Trusted": "Inte betrodd", "Manually Verify by Text": "Verifiera manuellt med text", "Interactively verify by Emoji": "Verifiera interaktivt med emoji", - "Done": "Klar" + "Done": "Klar", + "a few seconds ago": "Några sekunder sedan" } From d77d17d36c8043cface4ff6dcc6575748dda20fd Mon Sep 17 00:00:00 2001 From: LinAGKar Date: Tue, 25 Aug 2020 15:02:34 +0000 Subject: [PATCH 328/424] Translated using Weblate (Swedish) Currently translated at 64.0% (1496 of 2337 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/sv/ --- src/i18n/strings/sv.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index 883b26f601..2144ccaa3b 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -1585,5 +1585,5 @@ "Manually Verify by Text": "Verifiera manuellt med text", "Interactively verify by Emoji": "Verifiera interaktivt med emoji", "Done": "Klar", - "a few seconds ago": "Några sekunder sedan" + "a few seconds ago": "några sekunder sedan" } From 58cbcb6cb4dd3151d6f4f6e4e5b566315e84cc6d Mon Sep 17 00:00:00 2001 From: purjolini Date: Tue, 25 Aug 2020 15:02:41 +0000 Subject: [PATCH 329/424] Translated using Weblate (Swedish) Currently translated at 64.0% (1496 of 2337 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/sv/ --- src/i18n/strings/sv.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index 2144ccaa3b..a91df57eae 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -1585,5 +1585,6 @@ "Manually Verify by Text": "Verifiera manuellt med text", "Interactively verify by Emoji": "Verifiera interaktivt med emoji", "Done": "Klar", - "a few seconds ago": "några sekunder sedan" + "a few seconds ago": "några sekunder sedan", + "about a minute ago": "ca en minut sedan" } From aa84aae75b204bceaca1b65e37a7ddb3a24a3994 Mon Sep 17 00:00:00 2001 From: LinAGKar Date: Tue, 25 Aug 2020 15:03:47 +0000 Subject: [PATCH 330/424] Translated using Weblate (Swedish) Currently translated at 64.1% (1497 of 2337 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/sv/ --- src/i18n/strings/sv.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index a91df57eae..677daa7fb7 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -1586,5 +1586,5 @@ "Interactively verify by Emoji": "Verifiera interaktivt med emoji", "Done": "Klar", "a few seconds ago": "några sekunder sedan", - "about a minute ago": "ca en minut sedan" + "about a minute ago": "cirka en minut sedan" } From d95ea83f5173ed92729c7d73d92ff09c92b73750 Mon Sep 17 00:00:00 2001 From: purjolini Date: Tue, 25 Aug 2020 15:03:56 +0000 Subject: [PATCH 331/424] Translated using Weblate (Swedish) Currently translated at 64.1% (1497 of 2337 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/sv/ --- src/i18n/strings/sv.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index 677daa7fb7..c3a1fc1499 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -1586,5 +1586,6 @@ "Interactively verify by Emoji": "Verifiera interaktivt med emoji", "Done": "Klar", "a few seconds ago": "några sekunder sedan", - "about a minute ago": "cirka en minut sedan" + "about a minute ago": "cirka en minut sedan", + "%(num)s minutes ago": "minuter sedan" } From 13b5f8c844955e84e117006c0d36abd55ac035ff Mon Sep 17 00:00:00 2001 From: LinAGKar Date: Tue, 25 Aug 2020 15:04:06 +0000 Subject: [PATCH 332/424] Translated using Weblate (Swedish) Currently translated at 64.1% (1498 of 2337 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/sv/ --- src/i18n/strings/sv.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index c3a1fc1499..c7822b1100 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -1587,5 +1587,5 @@ "Done": "Klar", "a few seconds ago": "några sekunder sedan", "about a minute ago": "cirka en minut sedan", - "%(num)s minutes ago": "minuter sedan" + "%(num)s minutes ago": "%(num)s minuter sedan" } From a2917edd79c0a014d98a34b14aa81adcc286e378 Mon Sep 17 00:00:00 2001 From: purjolini Date: Tue, 25 Aug 2020 15:04:52 +0000 Subject: [PATCH 333/424] Translated using Weblate (Swedish) Currently translated at 64.1% (1498 of 2337 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/sv/ --- src/i18n/strings/sv.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index c7822b1100..43ce727fd9 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -1587,5 +1587,6 @@ "Done": "Klar", "a few seconds ago": "några sekunder sedan", "about a minute ago": "cirka en minut sedan", - "%(num)s minutes ago": "%(num)s minuter sedan" + "%(num)s minutes ago": "%(num)s minuter sedan", + "about an hour ago": "runt en timme sedan" } From db56eea18d13a240612c2a9e116d0954a7cc2846 Mon Sep 17 00:00:00 2001 From: LinAGKar Date: Tue, 25 Aug 2020 15:04:57 +0000 Subject: [PATCH 334/424] Translated using Weblate (Swedish) Currently translated at 64.1% (1499 of 2337 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/sv/ --- src/i18n/strings/sv.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index 43ce727fd9..e812cc9e9c 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -1588,5 +1588,5 @@ "a few seconds ago": "några sekunder sedan", "about a minute ago": "cirka en minut sedan", "%(num)s minutes ago": "%(num)s minuter sedan", - "about an hour ago": "runt en timme sedan" + "about an hour ago": "cirka en timme sedan" } From 654b861dfd8c47c06010ca61d92ea4cb4e800952 Mon Sep 17 00:00:00 2001 From: purjolini Date: Tue, 25 Aug 2020 15:05:04 +0000 Subject: [PATCH 335/424] Translated using Weblate (Swedish) Currently translated at 64.1% (1499 of 2337 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/sv/ --- src/i18n/strings/sv.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index e812cc9e9c..b71cfb5575 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -1588,5 +1588,6 @@ "a few seconds ago": "några sekunder sedan", "about a minute ago": "cirka en minut sedan", "%(num)s minutes ago": "%(num)s minuter sedan", - "about an hour ago": "cirka en timme sedan" + "about an hour ago": "cirka en timme sedan", + "%(num)s hours ago": "timmar sedan" } From 9ff3944adf7fffa183170dcd2eddfd7df09634bc Mon Sep 17 00:00:00 2001 From: LinAGKar Date: Tue, 25 Aug 2020 15:05:10 +0000 Subject: [PATCH 336/424] Translated using Weblate (Swedish) Currently translated at 64.2% (1500 of 2337 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/sv/ --- src/i18n/strings/sv.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index b71cfb5575..f31c835cdc 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -1589,5 +1589,5 @@ "about a minute ago": "cirka en minut sedan", "%(num)s minutes ago": "%(num)s minuter sedan", "about an hour ago": "cirka en timme sedan", - "%(num)s hours ago": "timmar sedan" + "%(num)s hours ago": "%(num)s timmar sedan" } From d88444e45ff0f128fa2ac60a76341378af7caa7c Mon Sep 17 00:00:00 2001 From: purjolini Date: Tue, 25 Aug 2020 15:05:18 +0000 Subject: [PATCH 337/424] Translated using Weblate (Swedish) Currently translated at 64.2% (1500 of 2337 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/sv/ --- src/i18n/strings/sv.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index f31c835cdc..5ddb1745a9 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -1589,5 +1589,6 @@ "about a minute ago": "cirka en minut sedan", "%(num)s minutes ago": "%(num)s minuter sedan", "about an hour ago": "cirka en timme sedan", - "%(num)s hours ago": "%(num)s timmar sedan" + "%(num)s hours ago": "%(num)s timmar sedan", + "about a day ago": "runt en dag sedan" } From aabe21c38af8b473d8d88be51bc0f8769c9b21b3 Mon Sep 17 00:00:00 2001 From: LinAGKar Date: Tue, 25 Aug 2020 15:05:23 +0000 Subject: [PATCH 338/424] Translated using Weblate (Swedish) Currently translated at 64.2% (1501 of 2337 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/sv/ --- src/i18n/strings/sv.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index 5ddb1745a9..48ff697bc7 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -1590,5 +1590,5 @@ "%(num)s minutes ago": "%(num)s minuter sedan", "about an hour ago": "cirka en timme sedan", "%(num)s hours ago": "%(num)s timmar sedan", - "about a day ago": "runt en dag sedan" + "about a day ago": "cirka en dag sedan" } From e8b5ebf8eea71aaa62465ada65b9769ba7dfa8d0 Mon Sep 17 00:00:00 2001 From: purjolini Date: Tue, 25 Aug 2020 15:05:26 +0000 Subject: [PATCH 339/424] Translated using Weblate (Swedish) Currently translated at 64.2% (1501 of 2337 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/sv/ --- src/i18n/strings/sv.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index 48ff697bc7..ac99e1cf00 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -1590,5 +1590,6 @@ "%(num)s minutes ago": "%(num)s minuter sedan", "about an hour ago": "cirka en timme sedan", "%(num)s hours ago": "%(num)s timmar sedan", - "about a day ago": "cirka en dag sedan" + "about a day ago": "cirka en dag sedan", + "%(num)s days ago": "dagar sedan" } From a50fac3a6bd5e27b6130502136c8fc2fdc2beabd Mon Sep 17 00:00:00 2001 From: LinAGKar Date: Tue, 25 Aug 2020 15:05:31 +0000 Subject: [PATCH 340/424] Translated using Weblate (Swedish) Currently translated at 64.3% (1502 of 2337 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/sv/ --- src/i18n/strings/sv.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index ac99e1cf00..aa6511be83 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -1591,5 +1591,5 @@ "about an hour ago": "cirka en timme sedan", "%(num)s hours ago": "%(num)s timmar sedan", "about a day ago": "cirka en dag sedan", - "%(num)s days ago": "dagar sedan" + "%(num)s days ago": "%(num)s dagar sedan" } From 66ca67bc67866893f038239ca79e31aeaab79482 Mon Sep 17 00:00:00 2001 From: purjolini Date: Tue, 25 Aug 2020 15:06:39 +0000 Subject: [PATCH 341/424] Translated using Weblate (Swedish) Currently translated at 64.3% (1502 of 2337 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/sv/ --- src/i18n/strings/sv.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index aa6511be83..73e32d98ae 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -1591,5 +1591,6 @@ "about an hour ago": "cirka en timme sedan", "%(num)s hours ago": "%(num)s timmar sedan", "about a day ago": "cirka en dag sedan", - "%(num)s days ago": "%(num)s dagar sedan" + "%(num)s days ago": "%(num)s dagar sedan", + "a few seconds from now": "några sekunder från nu" } From 2d4ac548d0e709b594c08d0358fbea0d364f044f Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Mon, 24 Aug 2020 19:19:28 -0600 Subject: [PATCH 342/424] Override invite metadata if the server wants a group profile --- src/components/views/rooms/RoomPreviewBar.js | 28 +++++- src/components/views/rooms/RoomTile.tsx | 28 ++++-- src/stores/CommunityPrototypeStore.ts | 100 +++++++++++++++++++ 3 files changed, 148 insertions(+), 8 deletions(-) create mode 100644 src/stores/CommunityPrototypeStore.ts diff --git a/src/components/views/rooms/RoomPreviewBar.js b/src/components/views/rooms/RoomPreviewBar.js index d52bbbb0d0..dc3893785d 100644 --- a/src/components/views/rooms/RoomPreviewBar.js +++ b/src/components/views/rooms/RoomPreviewBar.js @@ -26,6 +26,8 @@ import classNames from 'classnames'; import { _t } from '../../../languageHandler'; import SdkConfig from "../../../SdkConfig"; import IdentityAuthClient from '../../../IdentityAuthClient'; +import {CommunityPrototypeStore} from "../../../stores/CommunityPrototypeStore"; +import {UPDATE_EVENT} from "../../../stores/AsyncStore"; const MessageCase = Object.freeze({ NotLoggedIn: "NotLoggedIn", @@ -100,6 +102,7 @@ export default createReactClass({ componentDidMount: function() { this._checkInvitedEmail(); + CommunityPrototypeStore.instance.on(UPDATE_EVENT, this._onCommunityUpdate); }, componentDidUpdate: function(prevProps, prevState) { @@ -108,6 +111,10 @@ export default createReactClass({ } }, + componentWillUnmount: function() { + CommunityPrototypeStore.instance.off(UPDATE_EVENT, this._onCommunityUpdate); + }, + _checkInvitedEmail: async function() { // If this is an invite and we've been told what email address was // invited, fetch the user's account emails and discovery bindings so we @@ -143,6 +150,13 @@ export default createReactClass({ } }, + _onCommunityUpdate: function (roomId) { + if (this.props.room && this.props.room.roomId !== roomId) { + return; + } + this.forceUpdate(); // we have nothing to update + }, + _getMessageCase() { const isGuest = MatrixClientPeg.get().isGuest(); @@ -219,8 +233,15 @@ export default createReactClass({ } }, + _communityProfile: function() { + if (this.props.room) return CommunityPrototypeStore.instance.getInviteProfile(this.props.room.roomId); + return {displayName: null, avatarMxc: null}; + }, + _roomName: function(atStart = false) { - const name = this.props.room ? this.props.room.name : this.props.roomAlias; + let name = this.props.room ? this.props.room.name : this.props.roomAlias; + const profile = this._communityProfile(); + if (profile.displayName) name = profile.displayName; if (name) { return name; } else if (atStart) { @@ -439,7 +460,10 @@ export default createReactClass({ } case MessageCase.Invite: { const RoomAvatar = sdk.getComponent("views.avatars.RoomAvatar"); - const avatar = ; + const oobData = Object.assign({}, this.props.oobData, { + avatarUrl: this._communityProfile().avatarMxc, + }); + const avatar = ; const inviteMember = this._getInviteMember(); let inviterElement; diff --git a/src/components/views/rooms/RoomTile.tsx b/src/components/views/rooms/RoomTile.tsx index 0c99b98e1a..a09853d762 100644 --- a/src/components/views/rooms/RoomTile.tsx +++ b/src/components/views/rooms/RoomTile.tsx @@ -27,7 +27,7 @@ import defaultDispatcher from '../../../dispatcher/dispatcher'; import { Key } from "../../../Keyboard"; import ActiveRoomObserver from "../../../ActiveRoomObserver"; import { _t } from "../../../languageHandler"; -import { ChevronFace, ContextMenuTooltipButton, MenuItemRadio } from "../../structures/ContextMenu"; +import { ChevronFace, ContextMenuTooltipButton } from "../../structures/ContextMenu"; import { DefaultTagID, TagID } from "../../../stores/room-list/models"; import { MessagePreviewStore, ROOM_PREVIEW_CHANGED } from "../../../stores/room-list/MessagePreviewStore"; import DecoratedRoomAvatar from "../avatars/DecoratedRoomAvatar"; @@ -47,8 +47,11 @@ import { PROPERTY_UPDATED } from "../../../stores/local-echo/GenericEchoChamber" import IconizedContextMenu, { IconizedContextMenuCheckbox, IconizedContextMenuOption, - IconizedContextMenuOptionList, IconizedContextMenuRadio + IconizedContextMenuOptionList, + IconizedContextMenuRadio } from "../context_menus/IconizedContextMenu"; +import { CommunityPrototypeStore, IRoomProfile } from "../../../stores/CommunityPrototypeStore"; +import { UPDATE_EVENT } from "../../../stores/AsyncStore"; interface IProps { room: Room; @@ -101,6 +104,7 @@ export default class RoomTile extends React.PureComponent { this.notificationState.on(NOTIFICATION_STATE_UPDATE, this.onNotificationUpdate); this.roomProps = EchoChamber.forRoom(this.props.room); this.roomProps.on(PROPERTY_UPDATED, this.onRoomPropertyUpdate); + CommunityPrototypeStore.instance.on(UPDATE_EVENT, this.onCommunityUpdate); } private onNotificationUpdate = () => { @@ -140,6 +144,7 @@ export default class RoomTile extends React.PureComponent { defaultDispatcher.unregister(this.dispatcherRef); MessagePreviewStore.instance.off(ROOM_PREVIEW_CHANGED, this.onRoomPreviewChanged); this.notificationState.off(NOTIFICATION_STATE_UPDATE, this.onNotificationUpdate); + CommunityPrototypeStore.instance.off(UPDATE_EVENT, this.onCommunityUpdate); } private onAction = (payload: ActionPayload) => { @@ -150,6 +155,11 @@ export default class RoomTile extends React.PureComponent { } }; + private onCommunityUpdate = (roomId: string) => { + if (roomId !== this.props.room.roomId) return; + this.forceUpdate(); // we don't have anything to actually update + }; + private onRoomPreviewChanged = (room: Room) => { if (this.props.room && room.roomId === this.props.room.roomId) { // generatePreview() will return nothing if the user has previews disabled @@ -461,11 +471,21 @@ export default class RoomTile extends React.PureComponent { 'mx_RoomTile_minimized': this.props.isMinimized, }); + let roomProfile: IRoomProfile = {displayName: null, avatarMxc: null}; + if (this.props.tag === DefaultTagID.Invite) { + roomProfile = CommunityPrototypeStore.instance.getInviteProfile(this.props.room.roomId); + } + + let name = roomProfile.displayName || this.props.room.name; + if (typeof name !== 'string') name = ''; + name = name.replace(":", ":\u200b"); // add a zero-width space to allow linewrapping after the colon + const roomAvatar = ; let badge: React.ReactNode; @@ -482,10 +502,6 @@ export default class RoomTile extends React.PureComponent { ); } - let name = this.props.room.name; - if (typeof name !== 'string') name = ''; - name = name.replace(":", ":\u200b"); // add a zero-width space to allow linewrapping after the colon - let messagePreview = null; if (this.showMessagePreview && this.state.messagePreview) { messagePreview = ( diff --git a/src/stores/CommunityPrototypeStore.ts b/src/stores/CommunityPrototypeStore.ts new file mode 100644 index 0000000000..581f8a97c8 --- /dev/null +++ b/src/stores/CommunityPrototypeStore.ts @@ -0,0 +1,100 @@ +/* +Copyright 2020 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +import { AsyncStoreWithClient } from "./AsyncStoreWithClient"; +import defaultDispatcher from "../dispatcher/dispatcher"; +import { ActionPayload } from "../dispatcher/payloads"; +import { Room } from "matrix-js-sdk/src/models/room"; +import { EffectiveMembership, getEffectiveMembership } from "../utils/membership"; +import SettingsStore from "../settings/SettingsStore"; +import * as utils from "matrix-js-sdk/src/utils"; +import { UPDATE_EVENT } from "./AsyncStore"; + +interface IState { + // nothing of value - we use account data +} + +export interface IRoomProfile { + displayName: string; + avatarMxc: string; +} + +export class CommunityPrototypeStore extends AsyncStoreWithClient { + private static internalInstance = new CommunityPrototypeStore(); + + private constructor() { + super(defaultDispatcher, {}); + } + + public static get instance(): CommunityPrototypeStore { + return CommunityPrototypeStore.internalInstance; + } + + protected async onAction(payload: ActionPayload): Promise { + if (!this.matrixClient || !SettingsStore.getValue("feature_communities_v2_prototypes")) { + return; + } + + if (payload.action === "MatrixActions.Room.myMembership") { + const room: Room = payload.room; + const membership = getEffectiveMembership(payload.membership); + const oldMembership = getEffectiveMembership(payload.oldMembership); + if (membership === oldMembership) return; + + if (membership === EffectiveMembership.Invite) { + try { + const path = utils.encodeUri("/rooms/$roomId/group_info", {$roomId: room.roomId}); + const profile = await this.matrixClient._http.authedRequest( + undefined, "GET", path, + undefined, undefined, + {prefix: "/_matrix/client/unstable/im.vector.custom"}); + // we use global account data because per-room account data on invites is unreliable + await this.matrixClient.setAccountData("im.vector.group_info." + room.roomId, profile); + } catch (e) { + console.warn("Non-fatal error getting group information for invite:", e); + } + } + } else if (payload.action === "MatrixActions.accountData") { + if (payload.event_type.startsWith("im.vector.group_info.")) { + this.emit(UPDATE_EVENT, payload.event_type.substring("im.vector.group_info.".length)); + } + } + } + + public getInviteProfile(roomId: string): IRoomProfile { + if (!this.matrixClient) return {displayName: null, avatarMxc: null}; + const room = this.matrixClient.getRoom(roomId); + if (SettingsStore.getValue("feature_communities_v2_prototypes")) { + const data = this.matrixClient.getAccountData("im.vector.group_info." + roomId); + if (data && data.getContent()) { + return {displayName: data.getContent().name, avatarMxc: data.getContent().avatar_url}; + } + } + return {displayName: room.name, avatarMxc: room.avatar_url}; + } + + protected async onReady(): Promise { + for (const room of this.matrixClient.getRooms()) { + const myMember = room.currentState.getMembers().find(m => m.userId === this.matrixClient.getUserId()); + if (!myMember) continue; + if (getEffectiveMembership(myMember.membership) === EffectiveMembership.Invite) { + // Fake an update for anything that might have started listening before the invite + // data was available (eg: RoomPreviewBar after a refresh) + this.emit(UPDATE_EVENT, room.roomId); + } + } + } +} From 65fe562cbf54db4b8da8ef67d15a659dea225ef8 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Mon, 24 Aug 2020 22:38:24 -0600 Subject: [PATCH 343/424] Select new tag after creating the group --- src/components/views/dialogs/CreateGroupDialog.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/components/views/dialogs/CreateGroupDialog.js b/src/components/views/dialogs/CreateGroupDialog.js index d8a8b96961..2b22054947 100644 --- a/src/components/views/dialogs/CreateGroupDialog.js +++ b/src/components/views/dialogs/CreateGroupDialog.js @@ -88,6 +88,13 @@ export default createReactClass({ action: 'view_room', room_id: result.room_id, }); + + // Ensure the tag gets selected now that we've created it + dis.dispatch({action: 'deselect_tags'}, true); + dis.dispatch({ + action: 'select_tag', + tag: result.group_id, + }); } else { dis.dispatch({ action: 'view_group', From 8feda74156263680e0f39c46cffb6a271503ab35 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Mon, 24 Aug 2020 22:40:43 -0600 Subject: [PATCH 344/424] Wire up TagPanel's create button to the dialog --- src/components/structures/TagPanel.js | 24 +++++++++++++++++++----- src/i18n/strings/en_EN.json | 1 + 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/components/structures/TagPanel.js b/src/components/structures/TagPanel.js index 3acec417f2..4acbc49d4d 100644 --- a/src/components/structures/TagPanel.js +++ b/src/components/structures/TagPanel.js @@ -146,6 +146,24 @@ const TagPanel = createReactClass({ mx_TagPanel_items_selected: itemsSelected, }); + let createButton = ( + + ); + + if (SettingsStore.getValue("feature_communities_v2_prototypes")) { + createButton = ( + + ); + } + return

{ clearButton } @@ -168,11 +186,7 @@ const TagPanel = createReactClass({ { this.renderGlobalIcon() } { tags }
- + {createButton}
{ provided.placeholder }
diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index c12b57c033..d052ba5a51 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -2091,6 +2091,7 @@ "Click to mute video": "Click to mute video", "Click to unmute audio": "Click to unmute audio", "Click to mute audio": "Click to mute audio", + "Create community": "Create community", "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.", "Tried to load a specific point in this room's timeline, but was unable to find it.": "Tried to load a specific point in this room's timeline, but was unable to find it.", "Failed to load timeline position": "Failed to load timeline position", From 7c1a9993e3c47c90abb6ec7557578908d5f96901 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Tue, 25 Aug 2020 13:58:15 -0600 Subject: [PATCH 345/424] Add new create group dialog --- res/css/_components.scss | 2 + .../dialogs/_PrototypeCreateGroupDialog.scss | 102 ++++++++ res/css/views/elements/_InfoTooltip.scss | 34 +++ res/img/element-icons/add-photo.svg | 5 + res/img/element-icons/info.svg | 4 + src/components/structures/MatrixChat.tsx | 6 +- src/components/views/dialogs/IDialogProps.ts | 19 ++ .../dialogs/PrototypeCreateGroupDialog.tsx | 217 ++++++++++++++++++ .../views/dialogs/ServerOfflineDialog.tsx | 4 +- src/components/views/dialogs/ShareDialog.tsx | 4 +- src/components/views/elements/InfoTooltip.tsx | 73 ++++++ src/i18n/strings/en_EN.json | 9 + 12 files changed, 474 insertions(+), 5 deletions(-) create mode 100644 res/css/views/dialogs/_PrototypeCreateGroupDialog.scss create mode 100644 res/css/views/elements/_InfoTooltip.scss create mode 100644 res/img/element-icons/add-photo.svg create mode 100644 res/img/element-icons/info.svg create mode 100644 src/components/views/dialogs/IDialogProps.ts create mode 100644 src/components/views/dialogs/PrototypeCreateGroupDialog.tsx create mode 100644 src/components/views/elements/InfoTooltip.tsx diff --git a/res/css/_components.scss b/res/css/_components.scss index 5145133127..60725ff5d4 100644 --- a/res/css/_components.scss +++ b/res/css/_components.scss @@ -72,6 +72,7 @@ @import "./views/dialogs/_KeyboardShortcutsDialog.scss"; @import "./views/dialogs/_MessageEditHistoryDialog.scss"; @import "./views/dialogs/_NewSessionReviewDialog.scss"; +@import "./views/dialogs/_PrototypeCreateGroupDialog.scss"; @import "./views/dialogs/_RoomSettingsDialog.scss"; @import "./views/dialogs/_RoomSettingsDialogBridges.scss"; @import "./views/dialogs/_RoomUpgradeDialog.scss"; @@ -106,6 +107,7 @@ @import "./views/elements/_FormButton.scss"; @import "./views/elements/_IconButton.scss"; @import "./views/elements/_ImageView.scss"; +@import "./views/elements/_InfoTooltip.scss"; @import "./views/elements/_InlineSpinner.scss"; @import "./views/elements/_ManageIntegsButton.scss"; @import "./views/elements/_PowerSelector.scss"; diff --git a/res/css/views/dialogs/_PrototypeCreateGroupDialog.scss b/res/css/views/dialogs/_PrototypeCreateGroupDialog.scss new file mode 100644 index 0000000000..a0f505b1ff --- /dev/null +++ b/res/css/views/dialogs/_PrototypeCreateGroupDialog.scss @@ -0,0 +1,102 @@ +/* +Copyright 2020 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +.mx_PrototypeCreateGroupDialog { + .mx_Dialog_content { + display: flex; + flex-direction: row; + margin-bottom: 12px; + + .mx_PrototypeCreateGroupDialog_colName { + flex-basis: 66.66%; + padding-right: 100px; + + .mx_Field input { + font-size: $font-16px; + line-height: $font-20px; + } + + .mx_PrototypeCreateGroupDialog_subtext { + display: block; + color: $muted-fg-color; + margin-bottom: 16px; + + &:last-child { + margin-top: 16px; + } + + &.mx_PrototypeCreateGroupDialog_subtext_error { + color: $warning-color; + } + } + + .mx_PrototypeCreateGroupDialog_communityId { + position: relative; + + .mx_InfoTooltip { + float: right; + } + } + + .mx_AccessibleButton { + display: block; + height: 32px; + font-size: $font-16px; + line-height: 32px; + } + } + + .mx_PrototypeCreateGroupDialog_colAvatar { + flex-basis: 33.33%; + + .mx_PrototypeCreateGroupDialog_avatarContainer { + margin-top: 12px; + margin-bottom: 20px; + + .mx_PrototypeCreateGroupDialog_avatar, + .mx_PrototypeCreateGroupDialog_placeholderAvatar { + width: 96px; + height: 96px; + border-radius: 96px; + } + + .mx_PrototypeCreateGroupDialog_placeholderAvatar { + background-color: #368BD6; // hardcoded for both themes + + &::before { + display: inline-block; + background-color: #fff; // hardcoded because the background is + mask-repeat: no-repeat; + mask-size: 96px; + width: 96px; + height: 96px; + mask-position: center; + content: ''; + vertical-align: middle; + mask-image: url('$(res)/img/element-icons/add-photo.svg'); + } + } + } + + .mx_PrototypeCreateGroupDialog_tip { + &>b, &>span { + display: block; + color: $muted-fg-color; + } + } + } + } +} diff --git a/res/css/views/elements/_InfoTooltip.scss b/res/css/views/elements/_InfoTooltip.scss new file mode 100644 index 0000000000..5858a60629 --- /dev/null +++ b/res/css/views/elements/_InfoTooltip.scss @@ -0,0 +1,34 @@ +/* +Copyright 2020 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +.mx_InfoTooltip_icon { + width: 16px; + height: 16px; + display: inline-block; +} + +.mx_InfoTooltip_icon::before { + display: inline-block; + background-color: $muted-fg-color; + mask-repeat: no-repeat; + mask-size: 16px; + width: 16px; + height: 16px; + mask-position: center; + content: ''; + vertical-align: middle; + mask-image: url('$(res)/img/element-icons/info.svg'); +} diff --git a/res/img/element-icons/add-photo.svg b/res/img/element-icons/add-photo.svg new file mode 100644 index 0000000000..bde5253bea --- /dev/null +++ b/res/img/element-icons/add-photo.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/res/img/element-icons/info.svg b/res/img/element-icons/info.svg new file mode 100644 index 0000000000..b5769074ab --- /dev/null +++ b/res/img/element-icons/info.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/components/structures/MatrixChat.tsx b/src/components/structures/MatrixChat.tsx index a10af429b9..2b764d00c9 100644 --- a/src/components/structures/MatrixChat.tsx +++ b/src/components/structures/MatrixChat.tsx @@ -77,6 +77,7 @@ import ErrorDialog from "../views/dialogs/ErrorDialog"; import { RoomNotificationStateStore } from "../../stores/notifications/RoomNotificationStateStore"; import { SettingLevel } from "../../settings/SettingLevel"; import { leaveRoomBehaviour } from "../../utils/membership"; +import PrototypeCreateGroupDialog from "../views/dialogs/PrototypeCreateGroupDialog"; /** constants for MatrixChat.state.view */ export enum Views { @@ -620,7 +621,10 @@ export default class MatrixChat extends React.PureComponent { this.createRoom(payload.public); break; case 'view_create_group': { - const CreateGroupDialog = sdk.getComponent("dialogs.CreateGroupDialog"); + let CreateGroupDialog = sdk.getComponent("dialogs.CreateGroupDialog") + if (SettingsStore.getValue("feature_communities_v2_prototypes")) { + CreateGroupDialog = PrototypeCreateGroupDialog; + } Modal.createTrackedDialog('Create Community', '', CreateGroupDialog); break; } diff --git a/src/components/views/dialogs/IDialogProps.ts b/src/components/views/dialogs/IDialogProps.ts new file mode 100644 index 0000000000..1027ca7607 --- /dev/null +++ b/src/components/views/dialogs/IDialogProps.ts @@ -0,0 +1,19 @@ +/* +Copyright 2020 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +export interface IDialogProps { + onFinished: (bool) => void; +} diff --git a/src/components/views/dialogs/PrototypeCreateGroupDialog.tsx b/src/components/views/dialogs/PrototypeCreateGroupDialog.tsx new file mode 100644 index 0000000000..7427b2737c --- /dev/null +++ b/src/components/views/dialogs/PrototypeCreateGroupDialog.tsx @@ -0,0 +1,217 @@ +/* +Copyright 2020 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +import React, { ChangeEvent } from 'react'; +import BaseDialog from "./BaseDialog"; +import { _t } from "../../../languageHandler"; +import { IDialogProps } from "./IDialogProps"; +import Field from "../elements/Field"; +import AccessibleButton from "../elements/AccessibleButton"; +import { MatrixClientPeg } from "../../../MatrixClientPeg"; +import InfoTooltip from "../elements/InfoTooltip"; +import dis from "../../../dispatcher/dispatcher"; + +interface IProps extends IDialogProps { +} + +interface IState { + name: string; + localpart: string; + error: string; + busy: boolean; + avatarFile: File; + avatarPreview: string; +} + +export default class PrototypeCreateGroupDialog extends React.PureComponent { + private avatarUploadRef: React.RefObject = React.createRef(); + + constructor(props: IProps) { + super(props); + + this.state = { + name: "", + localpart: "", + error: null, + busy: false, + avatarFile: null, + avatarPreview: null, + }; + } + + private onNameChange = (ev: ChangeEvent) => { + const localpart = (ev.target.value || "").toLowerCase().replace(/[^a-z0-9.\-_]/g, '-'); + this.setState({name: ev.target.value, localpart}); + }; + + private onSubmit = async (ev) => { + ev.preventDefault(); + ev.stopPropagation(); + + if (this.state.busy) return; + + // We'll create the community now to see if it's taken, leaving it active in + // the background for the user to look at while they invite people. + this.setState({busy: true}); + try { + let avatarUrl = null; + if (this.state.avatarFile) { + avatarUrl = await MatrixClientPeg.get().uploadContent(this.state.avatarFile); + } + + const result = await MatrixClientPeg.get().createGroup({ + localpart: this.state.localpart, + profile: { + name: this.state.name, + avatar_url: avatarUrl, + }, + }); + + // Ensure the tag gets selected now that we've created it + dis.dispatch({action: 'deselect_tags'}, true); + dis.dispatch({ + action: 'select_tag', + tag: result.group_id, + }); + + if (result.room_id) { + dis.dispatch({ + action: 'view_room', + room_id: result.room_id, + }); + } else { + dis.dispatch({ + action: 'view_group', + group_id: result.group_id, + group_is_new: true, + }); + } + + // TODO: Show invite dialog + } catch (e) { + console.error(e); + this.setState({ + busy: false, + error: _t( + "There was an error creating your community. The name may be taken or the " + + "server is unable to process your request.", + ), + }); + } + }; + + private onAvatarChanged = (e: ChangeEvent) => { + if (!e.target.files || !e.target.files.length) { + this.setState({avatarFile: null}); + } else { + this.setState({busy: true}); + const file = e.target.files[0]; + const reader = new FileReader(); + reader.onload = (ev: ProgressEvent) => { + this.setState({avatarFile: file, busy: false, avatarPreview: ev.target.result as string}); + }; + reader.readAsDataURL(file); + } + }; + + private onChangeAvatar = () => { + if (this.avatarUploadRef.current) this.avatarUploadRef.current.click(); + }; + + public render() { + let communityId = null; + if (this.state.localpart) { + communityId = ( + + {_t("Community ID: +:%(domain)s", { + domain: MatrixClientPeg.getHomeserverName(), + }, { + localpart: () => {this.state.localpart}, + })} + + + ); + } + + let helpText = ( + + {_t("You can change this later if needed.")} + + ); + if (this.state.error) { + helpText = ( + + {this.state.error} + + ); + } + + let preview = ; + if (!this.state.avatarPreview) { + preview =
+ } + + return ( + +
+
+
+ + {helpText} + + {/*nbsp is to reserve the height of this element when there's nothing*/} +  {communityId} + + + {_t("Create")} + +
+
+ + + {preview} + +
+ {_t("PRO TIP")} + + {_t("An image will help people identify your community.")} + +
+
+
+
+
+ ); + } +} diff --git a/src/components/views/dialogs/ServerOfflineDialog.tsx b/src/components/views/dialogs/ServerOfflineDialog.tsx index f6767dcb8d..81f628343b 100644 --- a/src/components/views/dialogs/ServerOfflineDialog.tsx +++ b/src/components/views/dialogs/ServerOfflineDialog.tsx @@ -27,9 +27,9 @@ import Spinner from "../elements/Spinner"; import AccessibleButton from "../elements/AccessibleButton"; import { UPDATE_EVENT } from "../../../stores/AsyncStore"; import { MatrixClientPeg } from "../../../MatrixClientPeg"; +import { IDialogProps } from "./IDialogProps"; -interface IProps { - onFinished: (bool) => void; +interface IProps extends IDialogProps { } export default class ServerOfflineDialog extends React.PureComponent { diff --git a/src/components/views/dialogs/ShareDialog.tsx b/src/components/views/dialogs/ShareDialog.tsx index dc2a987f13..22f83d391c 100644 --- a/src/components/views/dialogs/ShareDialog.tsx +++ b/src/components/views/dialogs/ShareDialog.tsx @@ -31,6 +31,7 @@ import {toRightOf} from "../../structures/ContextMenu"; import {copyPlaintext, selectText} from "../../../utils/strings"; import StyledCheckbox from '../elements/StyledCheckbox'; import AccessibleTooltipButton from '../elements/AccessibleTooltipButton'; +import { IDialogProps } from "./IDialogProps"; const socials = [ { @@ -60,8 +61,7 @@ const socials = [ }, ]; -interface IProps { - onFinished: () => void; +interface IProps extends IDialogProps { target: Room | User | Group | RoomMember | MatrixEvent; permalinkCreator: RoomPermalinkCreator; } diff --git a/src/components/views/elements/InfoTooltip.tsx b/src/components/views/elements/InfoTooltip.tsx new file mode 100644 index 0000000000..645951aab9 --- /dev/null +++ b/src/components/views/elements/InfoTooltip.tsx @@ -0,0 +1,73 @@ +/* +Copyright 2019 Michael Telatynski <7t3chguy@gmail.com> +Copyright 2019 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +import React from 'react'; +import classNames from 'classnames'; + +import AccessibleButton from "./AccessibleButton"; +import Tooltip from './Tooltip'; +import { _t } from "../../../languageHandler"; + +interface ITooltipProps { + tooltip?: React.ReactNode; + tooltipClassName?: string; +} + +interface IState { + hover: boolean; +} + +export default class InfoTooltip extends React.PureComponent { + constructor(props: ITooltipProps) { + super(props); + this.state = { + hover: false, + }; + } + + onMouseOver = () => { + this.setState({ + hover: true, + }); + }; + + onMouseLeave = () => { + this.setState({ + hover: false, + }); + }; + + render() { + const {tooltip, children, tooltipClassName} = this.props; + const title = _t("Information"); + + // Tooltip are forced on the right for a more natural feel to them on info icons + const tip = this.state.hover ? :
; + return ( +
+ + {children} + {tip} +
+ ); + } +} diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index d052ba5a51..9a246a421d 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -1484,6 +1484,7 @@ "Rotate Right": "Rotate Right", "Rotate clockwise": "Rotate clockwise", "Download this file": "Download this file", + "Information": "Information", "Language Dropdown": "Language Dropdown", "Manage Integrations": "Manage Integrations", "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s", @@ -1728,6 +1729,14 @@ "Use this session to verify your new one, granting it access to encrypted messages:": "Use this session to verify your new one, granting it access to encrypted messages:", "If you didn’t sign in to this session, your account may be compromised.": "If you didn’t sign in to this session, your account may be compromised.", "This wasn't me": "This wasn't me", + "There was an error creating your community. The name may be taken or the server is unable to process your request.": "There was an error creating your community. The name may be taken or the server is unable to process your request.", + "Community ID: +:%(domain)s": "Community ID: +:%(domain)s", + "Use this when referencing your community to others. The community ID cannot be changed.": "Use this when referencing your community to others. The community ID cannot be changed.", + "You can change this later if needed.": "You can change this later if needed.", + "What's the name of your community or team?": "What's the name of your community or team?", + "Enter name": "Enter name", + "PRO TIP": "PRO TIP", + "An image will help people identify your community.": "An image will help people identify your community.", "If you run into any bugs or have feedback you'd like to share, please let us know on GitHub.": "If you run into any bugs or have feedback you'd like to share, please let us know on GitHub.", "To help avoid duplicate issues, please view existing issues first (and add a +1) or create a new issue if you can't find it.": "To help avoid duplicate issues, please view existing issues first (and add a +1) or create a new issue if you can't find it.", "Report bugs & give feedback": "Report bugs & give feedback", From 56c7f8698330569367de839f45f36c944eff6f16 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Tue, 25 Aug 2020 21:02:32 -0600 Subject: [PATCH 346/424] Add an invite users to community step to dialog flow --- res/css/_components.scss | 1 + .../_PrototypeCommunityInviteDialog.scss | 88 ++++++ src/RoomInvite.js | 16 +- src/components/views/dialogs/InviteDialog.js | 4 +- .../PrototypeCommunityInviteDialog.tsx | 252 ++++++++++++++++++ .../dialogs/PrototypeCreateGroupDialog.tsx | 9 +- src/i18n/strings/en_EN.json | 12 +- 7 files changed, 371 insertions(+), 11 deletions(-) create mode 100644 res/css/views/dialogs/_PrototypeCommunityInviteDialog.scss create mode 100644 src/components/views/dialogs/PrototypeCommunityInviteDialog.tsx diff --git a/res/css/_components.scss b/res/css/_components.scss index 60725ff5d4..88fbbb5c3e 100644 --- a/res/css/_components.scss +++ b/res/css/_components.scss @@ -72,6 +72,7 @@ @import "./views/dialogs/_KeyboardShortcutsDialog.scss"; @import "./views/dialogs/_MessageEditHistoryDialog.scss"; @import "./views/dialogs/_NewSessionReviewDialog.scss"; +@import "./views/dialogs/_PrototypeCommunityInviteDialog.scss"; @import "./views/dialogs/_PrototypeCreateGroupDialog.scss"; @import "./views/dialogs/_RoomSettingsDialog.scss"; @import "./views/dialogs/_RoomSettingsDialogBridges.scss"; diff --git a/res/css/views/dialogs/_PrototypeCommunityInviteDialog.scss b/res/css/views/dialogs/_PrototypeCommunityInviteDialog.scss new file mode 100644 index 0000000000..8d2ff598d8 --- /dev/null +++ b/res/css/views/dialogs/_PrototypeCommunityInviteDialog.scss @@ -0,0 +1,88 @@ +/* +Copyright 2020 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +.mx_PrototypeCommunityInviteDialog { + &.mx_Dialog_fixedWidth { + width: 360px; + } + + .mx_Dialog_content { + margin-bottom: 0; + + .mx_PrototypeCommunityInviteDialog_people { + position: relative; + margin-bottom: 4px; + + .mx_AccessibleButton { + display: inline-block; + background-color: $focus-bg-color; // XXX: Abuse of variables + border-radius: 4px; + padding: 3px 5px; + font-size: $font-12px; + float: right; + } + } + + .mx_PrototypeCommunityInviteDialog_morePeople { + margin-top: 8px; + } + + .mx_PrototypeCommunityInviteDialog_person { + position: relative; + margin-top: 4px; + + & > * { + vertical-align: middle; + } + + .mx_Checkbox { + position: absolute; + right: 0; + top: calc(50% - 8px); // checkbox is 16px high + width: 16px; // to force a square + } + + .mx_PrototypeCommunityInviteDialog_personIdentifiers { + display: inline-block; + + & > * { + display: block; + } + + .mx_PrototypeCommunityInviteDialog_personName { + font-weight: 600; + font-size: $font-14px; + color: $primary-fg-color; + margin-left: 7px; + } + + .mx_PrototypeCommunityInviteDialog_personId { + font-size: $font-12px; + color: $muted-fg-color; + margin-left: 7px; + } + } + } + + .mx_PrototypeCommunityInviteDialog_primaryButton { + display: block; + font-size: $font-13px; + line-height: 20px; + height: 20px; + margin-top: 24px; + } + } +} diff --git a/src/RoomInvite.js b/src/RoomInvite.js index 839d677069..3347a8288d 100644 --- a/src/RoomInvite.js +++ b/src/RoomInvite.js @@ -23,6 +23,7 @@ import Modal from './Modal'; import * as sdk from './'; import { _t } from './languageHandler'; import {KIND_DM, KIND_INVITE} from "./components/views/dialogs/InviteDialog"; +import PrototypeCommunityInviteDialog from "./components/views/dialogs/PrototypeCommunityInviteDialog"; /** * Invites multiple addresses to a room @@ -56,6 +57,13 @@ export function showRoomInviteDialog(roomId) { ); } +export function showCommunityRoomInviteDialog(roomId, communityName) { + Modal.createTrackedDialog( + 'Invite Users to Community', '', PrototypeCommunityInviteDialog, {communityName, roomId}, + /*className=*/null, /*isPriority=*/false, /*isStatic=*/true, + ); +} + /** * Checks if the given MatrixEvent is a valid 3rd party user invite. * @param {MatrixEvent} event The event to check @@ -77,7 +85,7 @@ export function isValid3pidInvite(event) { export function inviteUsersToRoom(roomId, userIds) { return inviteMultipleToRoom(roomId, userIds).then((result) => { const room = MatrixClientPeg.get().getRoom(roomId); - return _showAnyInviteErrors(result.states, room, result.inviter); + showAnyInviteErrors(result.states, room, result.inviter); }).catch((err) => { console.error(err.stack); const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); @@ -88,7 +96,7 @@ export function inviteUsersToRoom(roomId, userIds) { }); } -function _showAnyInviteErrors(addrs, room, inviter) { +export function showAnyInviteErrors(addrs, room, inviter) { // Show user any errors const failedUsers = Object.keys(addrs).filter(a => addrs[a] === 'error'); if (failedUsers.length === 1 && inviter.fatal) { @@ -100,6 +108,7 @@ function _showAnyInviteErrors(addrs, room, inviter) { title: _t("Failed to invite users to the room:", {roomName: room.name}), description: inviter.getErrorText(failedUsers[0]), }); + return false; } else { const errorList = []; for (const addr of failedUsers) { @@ -118,8 +127,9 @@ function _showAnyInviteErrors(addrs, room, inviter) { title: _t("Failed to invite the following users to the %(roomName)s room:", {roomName: room.name}), description, }); + return false; } } - return addrs; + return true; } diff --git a/src/components/views/dialogs/InviteDialog.js b/src/components/views/dialogs/InviteDialog.js index c90811ed5a..6cd0b22505 100644 --- a/src/components/views/dialogs/InviteDialog.js +++ b/src/components/views/dialogs/InviteDialog.js @@ -327,7 +327,7 @@ export default class InviteDialog extends React.PureComponent { this.state = { targets: [], // array of Member objects (see interface above) filterText: "", - recents: this._buildRecents(alreadyInvited), + recents: InviteDialog.buildRecents(alreadyInvited), numRecentsShown: INITIAL_ROOMS_SHOWN, suggestions: this._buildSuggestions(alreadyInvited), numSuggestionsShown: INITIAL_ROOMS_SHOWN, @@ -344,7 +344,7 @@ export default class InviteDialog extends React.PureComponent { this._editorRef = createRef(); } - _buildRecents(excludedTargetIds: Set): {userId: string, user: RoomMember, lastActive: number} { + static buildRecents(excludedTargetIds: Set): {userId: string, user: RoomMember, lastActive: number} { const rooms = DMRoomMap.shared().getUniqueRoomsWithIndividuals(); // map of userId => js-sdk Room // Also pull in all the rooms tagged as DefaultTagID.DM so we don't miss anything. Sometimes the diff --git a/src/components/views/dialogs/PrototypeCommunityInviteDialog.tsx b/src/components/views/dialogs/PrototypeCommunityInviteDialog.tsx new file mode 100644 index 0000000000..08d3f0208a --- /dev/null +++ b/src/components/views/dialogs/PrototypeCommunityInviteDialog.tsx @@ -0,0 +1,252 @@ +/* +Copyright 2020 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +import React, { ChangeEvent, FormEvent } from 'react'; +import BaseDialog from "./BaseDialog"; +import { _t } from "../../../languageHandler"; +import { IDialogProps } from "./IDialogProps"; +import Field from "../elements/Field"; +import AccessibleButton from "../elements/AccessibleButton"; +import { MatrixClientPeg } from "../../../MatrixClientPeg"; +import InfoTooltip from "../elements/InfoTooltip"; +import dis from "../../../dispatcher/dispatcher"; +import {showCommunityRoomInviteDialog} from "../../../RoomInvite"; +import { arrayFastClone } from "../../../utils/arrays"; +import SdkConfig from "../../../SdkConfig"; +import { RoomMember } from "matrix-js-sdk/src/models/room-member"; +import InviteDialog from "./InviteDialog"; +import BaseAvatar from "../avatars/BaseAvatar"; +import {getHttpUriForMxc} from "matrix-js-sdk/src/content-repo"; +import {inviteMultipleToRoom, showAnyInviteErrors} from "../../../RoomInvite"; +import {humanizeTime} from "../../../utils/humanize"; +import StyledCheckbox from "../elements/StyledCheckbox"; +import Modal from "../../../Modal"; +import ErrorDialog from "./ErrorDialog"; + +interface IProps extends IDialogProps { + roomId: string; + communityName: string; +} + +interface IPerson { + userId: string; + user: RoomMember; + lastActive: number; +} + +interface IState { + emailTargets: string[]; + userTargets: string[]; + showPeople: boolean; + people: IPerson[]; + numPeople: number; + busy: boolean; +} + +export default class PrototypeCommunityInviteDialog extends React.PureComponent { + constructor(props: IProps) { + super(props); + + this.state = { + emailTargets: [], + userTargets: [], + showPeople: false, + people: this.buildSuggestions(), + numPeople: 5, // arbitrary default + busy: false, + }; + } + + private buildSuggestions(): IPerson[] { + const alreadyInvited = new Set([MatrixClientPeg.get().getUserId(), SdkConfig.get()['welcomeUserId']]); + if (this.props.roomId) { + const room = MatrixClientPeg.get().getRoom(this.props.roomId); + if (!room) throw new Error("Room ID given to InviteDialog does not look like a room"); + room.getMembersWithMembership('invite').forEach(m => alreadyInvited.add(m.userId)); + room.getMembersWithMembership('join').forEach(m => alreadyInvited.add(m.userId)); + // add banned users, so we don't try to invite them + room.getMembersWithMembership('ban').forEach(m => alreadyInvited.add(m.userId)); + } + + return InviteDialog.buildRecents(alreadyInvited); + } + + private onSubmit = async (ev: FormEvent) => { + ev.preventDefault(); + ev.stopPropagation(); + + this.setState({busy: true}); + try { + const targets = [...this.state.emailTargets, ...this.state.userTargets]; + const result = await inviteMultipleToRoom(this.props.roomId, targets); + const room = MatrixClientPeg.get().getRoom(this.props.roomId); + const success = showAnyInviteErrors(result.states, room, result.inviter); + if (success) { + this.props.onFinished(true); + } else { + this.setState({busy: false}); + } + } catch (e) { + this.setState({busy: false}); + console.error(e); + Modal.createTrackedDialog('Failed to invite', '', ErrorDialog, { + title: _t("Failed to invite"), + description: ((e && e.message) ? e.message : _t("Operation failed")), + }); + } + }; + + private onAddressChange = (ev: ChangeEvent, index: number) => { + const targets = arrayFastClone(this.state.emailTargets); + if (index >= targets.length) { + targets.push(ev.target.value); + } else { + targets[index] = ev.target.value; + } + this.setState({emailTargets: targets}); + }; + + private onAddressBlur = (index: number) => { + const targets = arrayFastClone(this.state.emailTargets); + if (index >= targets.length) return; // not important + if (targets[index].trim() === "") { + targets.splice(index, 1); + this.setState({emailTargets: targets}); + } + }; + + private onShowPeopleClick = () => { + this.setState({showPeople: !this.state.showPeople}); + }; + + private setPersonToggle = (person: IPerson, selected: boolean) => { + const targets = arrayFastClone(this.state.userTargets); + if (selected && !targets.includes(person.userId)) { + targets.push(person.userId); + } else if (!selected && targets.includes(person.userId)) { + targets.splice(targets.indexOf(person.userId), 1); + } + this.setState({userTargets: targets}); + }; + + private renderPerson(person: IPerson, key: any) { + const avatarSize = 36; + return ( +
+ +
+ {person.user.name} + {person.userId} +
+ this.setPersonToggle(person, e.target.checked)} /> +
+ ); + } + + private onShowMorePeople = () => { + this.setState({numPeople: this.state.numPeople + 5}); // arbitrary increase + }; + + public render() { + const emailAddresses = []; + this.state.emailTargets.forEach((address, i) => { + emailAddresses.push( + this.onAddressChange(e, i)} + label={_t("Email address")} + placeholder={_t("Email address")} + onBlur={() => this.onAddressBlur(i)} + /> + ); + }); + + // Push a clean input + emailAddresses.push( + this.onAddressChange(e, emailAddresses.length)} + label={emailAddresses.length > 0 ? _t("Add another email") : _t("Email address")} + placeholder={emailAddresses.length > 0 ? _t("Add another email") : _t("Email address")} + /> + ); + + let peopleIntro = null; + let people = []; + if (this.state.showPeople) { + const humansToPresent = this.state.people.slice(0, this.state.numPeople); + humansToPresent.forEach((person, i) => { + people.push(this.renderPerson(person, i)); + }); + if (humansToPresent.length < this.state.people.length) { + people.push( + {_t("Show more")} + ); + } + } + if (this.state.people.length > 0) { + peopleIntro = ( +
+ {_t("People you know on %(brand)s", {brand: SdkConfig.get().brand})} + + {this.state.showPeople ? _t("Hide") : _t("Show")} + +
+ ); + } + + let buttonText = _t("Skip"); + const targetCount = this.state.userTargets.length + this.state.emailTargets.length; + if (targetCount > 0) { + buttonText = _t("Send %(count)s invites", {count: targetCount}); + } + + return ( + +
+
+ {emailAddresses} + {peopleIntro} + {people} + {buttonText} +
+
+
+ ); + } +} diff --git a/src/components/views/dialogs/PrototypeCreateGroupDialog.tsx b/src/components/views/dialogs/PrototypeCreateGroupDialog.tsx index 7427b2737c..8978b9cf0d 100644 --- a/src/components/views/dialogs/PrototypeCreateGroupDialog.tsx +++ b/src/components/views/dialogs/PrototypeCreateGroupDialog.tsx @@ -23,6 +23,7 @@ import AccessibleButton from "../elements/AccessibleButton"; import { MatrixClientPeg } from "../../../MatrixClientPeg"; import InfoTooltip from "../elements/InfoTooltip"; import dis from "../../../dispatcher/dispatcher"; +import {showCommunityRoomInviteDialog} from "../../../RoomInvite"; interface IProps extends IDialogProps { } @@ -67,7 +68,7 @@ export default class PrototypeCreateGroupDialog extends React.PureComponent:%(domain)s": "Community ID: +:%(domain)s", "Use this when referencing your community to others. The community ID cannot be changed.": "Use this when referencing your community to others. The community ID cannot be changed.", @@ -1783,9 +1792,7 @@ "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.", "Verification Pending": "Verification Pending", "Please check your email and click on the link it contains. Once this is done, click continue.": "Please check your email and click on the link it contains. Once this is done, click continue.", - "Email address": "Email address", "This will allow you to reset your password and receive notifications.": "This will allow you to reset your password and receive notifications.", - "Skip": "Skip", "A username can only contain lower case letters, numbers and '=_-./'": "A username can only contain lower case letters, numbers and '=_-./'", "Username not available": "Username not available", "Username invalid: %(errMessage)s": "Username invalid: %(errMessage)s", @@ -1898,7 +1905,6 @@ "Set status": "Set status", "Set a new status...": "Set a new status...", "View Community": "View Community", - "Hide": "Hide", "Reload": "Reload", "Take picture": "Take picture", "Remove for everyone": "Remove for everyone", From 5ea11e90b2d5289619b42390b439605832067fee Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Tue, 25 Aug 2020 21:17:35 -0600 Subject: [PATCH 347/424] Appease the style linter --- res/css/views/dialogs/_PrototypeCreateGroupDialog.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/res/css/views/dialogs/_PrototypeCreateGroupDialog.scss b/res/css/views/dialogs/_PrototypeCreateGroupDialog.scss index a0f505b1ff..3235575a88 100644 --- a/res/css/views/dialogs/_PrototypeCreateGroupDialog.scss +++ b/res/css/views/dialogs/_PrototypeCreateGroupDialog.scss @@ -74,7 +74,7 @@ limitations under the License. } .mx_PrototypeCreateGroupDialog_placeholderAvatar { - background-color: #368BD6; // hardcoded for both themes + background-color: #368bd6; // hardcoded for both themes &::before { display: inline-block; @@ -92,7 +92,7 @@ limitations under the License. } .mx_PrototypeCreateGroupDialog_tip { - &>b, &>span { + & > b, & > span { display: block; color: $muted-fg-color; } From c9e967f05cb3abd9884064bcfb5f7dabaae8f0b7 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Tue, 25 Aug 2020 14:23:18 -0600 Subject: [PATCH 348/424] Don't override UserMenu with group changes --- src/components/structures/UserMenu.tsx | 43 ++------------------------ 1 file changed, 2 insertions(+), 41 deletions(-) diff --git a/src/components/structures/UserMenu.tsx b/src/components/structures/UserMenu.tsx index 839d4bccda..30be71abcb 100644 --- a/src/components/structures/UserMenu.tsx +++ b/src/components/structures/UserMenu.tsx @@ -42,9 +42,6 @@ import IconizedContextMenu, { IconizedContextMenuOption, IconizedContextMenuOptionList } from "../views/context_menus/IconizedContextMenu"; -import TagOrderStore from "../../stores/TagOrderStore"; -import * as fbEmitter from "fbemitter"; -import FlairStore from "../../stores/FlairStore"; interface IProps { isMinimized: boolean; @@ -55,16 +52,11 @@ type PartialDOMRect = Pick; interface IState { contextMenuPosition: PartialDOMRect; isDarkTheme: boolean; - selectedCommunityProfile: { - displayName: string; - avatarMxc: string; - }; } export default class UserMenu extends React.Component { private dispatcherRef: string; private themeWatcherRef: string; - private tagStoreRef: fbEmitter.EventSubscription; private buttonRef: React.RefObject = createRef(); constructor(props: IProps) { @@ -73,7 +65,6 @@ export default class UserMenu extends React.Component { this.state = { contextMenuPosition: null, isDarkTheme: this.isUserOnDarkTheme(), - selectedCommunityProfile: null, }; OwnProfileStore.instance.on(UPDATE_EVENT, this.onProfileUpdate); @@ -86,7 +77,6 @@ export default class UserMenu extends React.Component { public componentDidMount() { this.dispatcherRef = defaultDispatcher.register(this.onAction); this.themeWatcherRef = SettingsStore.watchSetting("theme", null, this.onThemeChanged); - this.tagStoreRef = TagOrderStore.addListener(this.onTagStoreUpdate); } public componentWillUnmount() { @@ -103,25 +93,6 @@ export default class UserMenu extends React.Component { return theme === "dark"; } - private onTagStoreUpdate = async () => { - if (!SettingsStore.getValue("feature_communities_v2_prototypes")) { - return; - } - - const selectedId = TagOrderStore.getSelectedTags()[0]; - if (!selectedId) { - this.setState({selectedCommunityProfile: null}); - return; - } - - // For some reason the group's profile info isn't on the js-sdk Group object but - // is in the flair store, so get it from there. - const profile = await FlairStore.getGroupProfileCached(MatrixClientPeg.get(), selectedId); - const displayName = profile.name || selectedId; - const avatarMxc = profile.avatarUrl; - this.setState({selectedCommunityProfile: {displayName, avatarMxc}}); - }; - private onProfileUpdate = async () => { // the store triggered an update, so force a layout update. We don't // have any state to store here for that to magically happen. @@ -324,18 +295,8 @@ export default class UserMenu extends React.Component { public render() { const avatarSize = 32; // should match border-radius of the avatar - let displayName = OwnProfileStore.instance.displayName || MatrixClientPeg.get().getUserId(); - let avatarUrl = OwnProfileStore.instance.getHttpAvatarUrl(avatarSize); - - if (this.state.selectedCommunityProfile) { - displayName = this.state.selectedCommunityProfile.displayName - const mxc = this.state.selectedCommunityProfile.avatarMxc; - if (mxc) { - avatarUrl = MatrixClientPeg.get().mxcUrlToHttp(mxc, avatarSize, avatarSize); - } else { - avatarUrl = null; - } - } + const displayName = OwnProfileStore.instance.displayName || MatrixClientPeg.get().getUserId(); + const avatarUrl = OwnProfileStore.instance.getHttpAvatarUrl(avatarSize); let name = {displayName}; let buttons = ( From 20c562c2086fed80fd4dfa111c4e7e7f06507e85 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Tue, 25 Aug 2020 21:45:38 -0600 Subject: [PATCH 349/424] Change user avatar to a home icon --- res/css/structures/_TagPanel.scss | 44 +++++++++++++++++-- res/img/element-icons/home.svg | 3 ++ src/components/views/elements/TagTile.js | 4 +- src/components/views/elements/UserTagTile.tsx | 31 ++++--------- 4 files changed, 54 insertions(+), 28 deletions(-) create mode 100644 res/img/element-icons/home.svg diff --git a/res/css/structures/_TagPanel.scss b/res/css/structures/_TagPanel.scss index 6c85341aaf..e7f67c8ace 100644 --- a/res/css/structures/_TagPanel.scss +++ b/res/css/structures/_TagPanel.scss @@ -75,6 +75,7 @@ limitations under the License. .mx_TagPanel .mx_TagTile { // opacity: 0.5; position: relative; + padding: 3px; } .mx_TagPanel .mx_TagTile:focus, .mx_TagPanel .mx_TagTile:hover, @@ -82,6 +83,45 @@ limitations under the License. // opacity: 1; } +.mx_TagPanel .mx_TagTile.mx_TagTile_selected_prototype { + background-color: $primary-bg-color; + border-radius: 6px; +} + +.mx_TagTile_selected_prototype { + .mx_TagTile_homeIcon::before { + background-color: $primary-fg-color; // dark-on-light + } +} + +.mx_TagTile:not(.mx_TagTile_selected_prototype) .mx_TagTile_homeIcon { + background-color: $icon-button-color; // XXX: Variable abuse + border-radius: 48px; + + &::before { + background-color: $primary-bg-color; // light-on-grey + } +} + +.mx_TagTile_homeIcon { + width: 32px; + height: 32px; + position: relative; + + &::before { + mask-image: url('$(res)/img/element-icons/home.svg'); + mask-position: center; + mask-repeat: no-repeat; + width: 21px; + height: 21px; + content: ''; + display: inline-block; + position: absolute; + top: calc(50% - 10.5px); + left: calc(50% - 10.5px); + } +} + .mx_TagPanel .mx_TagTile_plus { margin-bottom: 12px; height: 32px; @@ -116,10 +156,6 @@ limitations under the License. border-radius: 0 3px 3px 0; } -.mx_TagPanel .mx_TagTile.mx_TagTile_large.mx_TagTile_selected::before { - left: -10px; -} - .mx_TagPanel .mx_TagTile.mx_AccessibleButton:focus { filter: none; } diff --git a/res/img/element-icons/home.svg b/res/img/element-icons/home.svg new file mode 100644 index 0000000000..d65812cafd --- /dev/null +++ b/res/img/element-icons/home.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/views/elements/TagTile.js b/src/components/views/elements/TagTile.js index 49b336a577..562a478976 100644 --- a/src/components/views/elements/TagTile.js +++ b/src/components/views/elements/TagTile.js @@ -141,9 +141,11 @@ export default createReactClass({ profile.avatarUrl, avatarHeight, avatarHeight, "crop", ) : null; + const isPrototype = SettingsStore.getValue("feature_communities_v2_prototypes"); const className = classNames({ mx_TagTile: true, - mx_TagTile_selected: this.props.selected, + mx_TagTile_selected: this.props.selected && !isPrototype, + mx_TagTile_selected_prototype: this.props.selected && isPrototype, }); const badge = TagOrderStore.getGroupBadge(this.props.tag); diff --git a/src/components/views/elements/UserTagTile.tsx b/src/components/views/elements/UserTagTile.tsx index c652423753..635c537324 100644 --- a/src/components/views/elements/UserTagTile.tsx +++ b/src/components/views/elements/UserTagTile.tsx @@ -16,16 +16,14 @@ limitations under the License. import React from "react"; import defaultDispatcher from "../../../dispatcher/dispatcher"; -import { OwnProfileStore } from "../../../stores/OwnProfileStore"; -import { UPDATE_EVENT } from "../../../stores/AsyncStore"; import * as fbEmitter from "fbemitter"; import TagOrderStore from "../../../stores/TagOrderStore"; import AccessibleTooltipButton from "./AccessibleTooltipButton"; -import BaseAvatar from "../avatars/BaseAvatar"; -import { MatrixClientPeg } from "../../../MatrixClientPeg"; import classNames from "classnames"; +import { _t } from "../../../languageHandler"; -interface IProps{} +interface IProps { +} interface IState { selected: boolean; @@ -43,18 +41,13 @@ export default class UserTagTile extends React.PureComponent { } public componentDidMount() { - OwnProfileStore.instance.on(UPDATE_EVENT, this.onProfileUpdate); this.tagStoreRef = TagOrderStore.addListener(this.onTagStoreUpdate); } public componentWillUnmount() { - OwnProfileStore.instance.off(UPDATE_EVENT, this.onProfileUpdate); + this.tagStoreRef.remove(); } - private onProfileUpdate = () => { - this.forceUpdate(); - }; - private onTagStoreUpdate = () => { const selected = TagOrderStore.getSelectedTags().length === 0; this.setState({selected}); @@ -71,27 +64,19 @@ export default class UserTagTile extends React.PureComponent { public render() { // XXX: We reuse TagTile classes for ease of demonstration - we should probably generify // TagTile instead if we continue to use this component. - const avatarHeight = 36; - const name = OwnProfileStore.instance.displayName || MatrixClientPeg.get().getUserId(); const className = classNames({ mx_TagTile: true, - mx_TagTile_selected: this.state.selected, - mx_TagTile_large: true, + mx_TagTile_selected_prototype: this.state.selected, + mx_TagTile_home: true, }); return (
- +
); From 55001f319327d16acbbed92ecdd1da023bd3c52b Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Tue, 25 Aug 2020 21:52:48 -0600 Subject: [PATCH 350/424] Select the general chat for a community when viewing it --- src/stores/TagOrderStore.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/stores/TagOrderStore.js b/src/stores/TagOrderStore.js index 2b72a963b0..f02fce0769 100644 --- a/src/stores/TagOrderStore.js +++ b/src/stores/TagOrderStore.js @@ -166,6 +166,25 @@ class TagOrderStore extends Store { selectedTags: newTags, }); + if (!allowMultiple && newTags.length === 1) { + // We're in prototype behaviour: select the general chat for the community + const rooms = GroupStore.getGroupRooms(newTags[0]) + .map(r => MatrixClientPeg.get().getRoom(r.roomId)) + .filter(r => !!r); + let chat = rooms.find(r => { + const idState = r.currentState.getStateEvents("im.vector.general_chat", ""); + if (!idState || idState.getContent()['groupId'] !== newTags[0]) return false; + return true; + }); + if (!chat) chat = rooms[0]; + if (chat) { + dis.dispatch({ + action: 'view_room', + room_id: chat.roomId, + }); + } + } + Analytics.trackEvent('FilterStore', 'select_tag'); } break; From c68636bd32c4d2bae47d8efc5d7020542232f48a Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Tue, 25 Aug 2020 21:59:09 -0600 Subject: [PATCH 351/424] i18n updates --- src/i18n/strings/en_EN.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index c12b57c033..1fed9e0619 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -1555,6 +1555,7 @@ "And %(count)s more...|other": "And %(count)s more...", "ex. @bob:example.com": "ex. @bob:example.com", "Add User": "Add User", + "Home": "Home", "Enter a server name": "Enter a server name", "Looks good": "Looks good", "Can't find this server or its room list": "Can't find this server or its room list", @@ -2097,7 +2098,6 @@ "Uploading %(filename)s and %(count)s others|other": "Uploading %(filename)s and %(count)s others", "Uploading %(filename)s and %(count)s others|zero": "Uploading %(filename)s", "Uploading %(filename)s and %(count)s others|one": "Uploading %(filename)s and %(count)s other", - "Home": "Home", "Switch to light mode": "Switch to light mode", "Switch to dark mode": "Switch to dark mode", "Switch theme": "Switch theme", From a5606c505192002e8811d4ac9daf437691caaa70 Mon Sep 17 00:00:00 2001 From: Besnik Bleta Date: Tue, 25 Aug 2020 08:46:59 +0000 Subject: [PATCH 352/424] Translated using Weblate (Albanian) Currently translated at 99.7% (2331 of 2337 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/sq/ --- src/i18n/strings/sq.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/sq.json b/src/i18n/strings/sq.json index 726508ebb2..c156e3bad3 100644 --- a/src/i18n/strings/sq.json +++ b/src/i18n/strings/sq.json @@ -2417,5 +2417,10 @@ "Explore all public rooms": "Eksploroni krejt dhomat publike", "%(count)s results|other": "%(count)s përfundime", "Preparing to download logs": "Po bëhet gati për shkarkim regjistrash", - "Download logs": "Shkarko regjistra" + "Download logs": "Shkarko regjistra", + "Unexpected server error trying to leave the room": "Gabim i papritur shërbyesi në përpjekje për dalje nga dhoma", + "Error leaving room": "Gabim në dalje nga dhoma", + "Communities v2 prototypes. Requires compatible homeserver. Highly experimental - use with caution.": "Prototipe bashkësie v2. Lyp shërbyes Home të përputhshëm. Tejet eksperimentale - përdoreni me kujdes.", + "Explore rooms in %(communityName)s": "Eksploroni dhoma në %(communityName)s", + "Set up Secure Backup": "Ujdisni Kopjeruajtje të Sigurt" } From 252e5e6aff416fc2be3782c96a2bf8c798282c3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stanislav=20Luke=C5=A1?= Date: Tue, 25 Aug 2020 21:16:13 +0000 Subject: [PATCH 353/424] Translated using Weblate (Czech) Currently translated at 93.2% (2179 of 2337 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/cs/ --- src/i18n/strings/cs.json | 51 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/cs.json b/src/i18n/strings/cs.json index 7f799072cb..4d9d27363f 100644 --- a/src/i18n/strings/cs.json +++ b/src/i18n/strings/cs.json @@ -2164,5 +2164,54 @@ "Add users and servers you want to ignore here. Use asterisks to have %(brand)s match any characters. For example, @bot:* would ignore all users that have the name 'bot' on any server.": "Sem přídejte servery a uživatele, které chcete ignorovat. Hvězdička pro %(brand)s zastupuje libovolný počet kterýchkoliv znaků. Např. @bot:* bude ignorovat všechny uživatele se jménem „bot“ na kterémkoliv serveru.", "Signature upload success": "Podpis úspěšně nahrán", "Signature upload failed": "Podpis se nepodařilo nahrát", - "If the other version of %(brand)s is still open in another tab, please close it as using %(brand)s on the same host with both lazy loading enabled and disabled simultaneously will cause issues.": "Je-li jiná verze programu %(brand)s stále otevřená na jiné kartě, tak ji prosím zavřete, neboť užívání programu %(brand)s stejným hostitelem se zpožděným nahráváním současně povoleným i zakázaným bude působit problémy." + "If the other version of %(brand)s is still open in another tab, please close it as using %(brand)s on the same host with both lazy loading enabled and disabled simultaneously will cause issues.": "Je-li jiná verze programu %(brand)s stále otevřená na jiné kartě, tak ji prosím zavřete, neboť užívání programu %(brand)s stejným hostitelem se zpožděným nahráváním současně povoleným i zakázaným bude působit problémy.", + "Unexpected server error trying to leave the room": "Neočekávaná chyba serveru při odcházení z místnosti", + "The person who invited you already left the room.": "Uživatel který vás pozval už místnosti není.", + "The person who invited you already left the room, or their server is offline.": "Uživatel který vás pozvat už odešel z místnosti a nebo je jeho server offline.", + "You left the call": "Odešli jste z hovoru", + "%(senderName)s left the call": "%(senderName)s opustil/a hovor", + "Call ended": "Hovor skončil", + "You started a call": "Začali jste hovor", + "%(senderName)s started a call": "%(senderName)s začal/a hovor", + "Waiting for answer": "Čekání na odpověď", + "%(senderName)s is calling": "%(senderName)s volá", + "* %(senderName)s %(emote)s": "* %(senderName)s %(emote)s", + "%(senderName)s: %(message)s": "%(senderName)s: %(message)s", + "%(senderName)s: %(reaction)s": "%(senderName)s: %(reaction)s", + "%(senderName)s: %(stickerName)s": "%(senderName)s: %(stickerName)s", + "Change notification settings": "Upravit nastavení oznámení", + "Communities v2 prototypes. Requires compatible homeserver. Highly experimental - use with caution.": "Prototyp komunit verze 2. Vyžaduje kompatibilní domovský server. Experimentální - používejte opatrně.", + "Use custom size": "Použít vlastní velikost", + "Use a more compact ‘Modern’ layout": "Používat kompaktní ‘Moderní’ vzhled", + "Use a system font": "Používat systémové nastavení písma", + "System font name": "Jméno systémového písma", + "Uploading logs": "Nahrávání záznamů", + "Downloading logs": "Stahování záznamů", + "Unknown caller": "Neznámý volající", + "Incoming voice call": "Příchozí hovor", + "Incoming video call": "Příchozí videohovor", + "Incoming call": "Příchozí hovor", + "Your server isn't responding to some requests.": "Váš server neodpovídá na některé požadavky.", + "Master private key:": "Hlavní soukromý klíč:", + "%(brand)s can't securely cache encrypted messages locally while running in a web browser. Use %(brand)s Desktop for encrypted messages to appear in search results.": "%(brand)s nemůže v prohlížeči lokálně bezpečně uložit zprávy. Použijte %(brand)s Desktop aby fungovalo vyhledávání v šifrovaných zprávách.", + "Your server admin has disabled end-to-end encryption by default in private rooms & Direct Messages.": "Váš administrátor vypnul šifrování ve výchozím nastavení soukromých místností a přímých chatů.", + "To link to this room, please add an address.": "Přidejte prosím místnosti adresu aby na ní šlo odkazovat.", + "The authenticity of this encrypted message can't be guaranteed on this device.": "Pravost této šifrované zprávy nelze na tomto zařízení ověřit.", + "Emoji picker": "Výběr emoji", + "No recently visited rooms": "Žádné nedávno navštívené místnosti", + "People": "Lidé", + "Explore public rooms": "Prozkoumat veřejné místnosti", + "Custom Tag": "Vlastní štítek", + "Can't see what you’re looking for?": "Nikde nevidíte co hledáte?", + "Explore all public rooms": "Prozkoumat všechny veřejné místnosti", + "%(count)s results|other": "%(count)s výsledků", + "Preparing to download logs": "Příprava na stažení záznamů", + "Download logs": "Stáhnout záznamy", + "a new cross-signing key signature": "nový podpis klíče pro cross-signing", + "a key signature": "podpis klíče", + "%(brand)s encountered an error during upload of:": "%(brand)s narazil na chybu při nahrávání:", + "Upload completed": "Nahrávání dokončeno", + "Cancelled signature upload": "Nahrávání podpisu zrušeno", + "Unable to upload": "Nelze nahrát", + "Server isn't responding": "Server neodpovídá" } From efdffb096d5ae85bf6bea0c27a23dcd08c9299d8 Mon Sep 17 00:00:00 2001 From: Michael Albert Date: Tue, 25 Aug 2020 08:40:38 +0000 Subject: [PATCH 354/424] Translated using Weblate (German) Currently translated at 100.0% (2337 of 2337 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 300d694ea3..9515a57f8f 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -2420,5 +2420,8 @@ "Preparing to download logs": "Bereite das Herunterladen der Protokolle vor", "Download logs": "Protokolle herunterladen", "Unexpected server error trying to leave the room": "Unerwarteter Server-Fehler beim Versuch den Raum zu verlassen", - "Error leaving room": "Fehler beim Verlassen des Raums" + "Error leaving room": "Fehler beim Verlassen des Raums", + "Communities v2 prototypes. Requires compatible homeserver. Highly experimental - use with caution.": "Communities v2 Prototyp. Benötigt einen kompatiblen Heimserver. Höchst experimentell - mit Vorsicht verwenden.", + "Explore rooms in %(communityName)s": "Erkunde Räume in %(communityName)s", + "Set up Secure Backup": "Sicherung einrichten" } From bd434bcf8870fbec6a7ef1b23784e8bb0abb0c49 Mon Sep 17 00:00:00 2001 From: notramo Date: Tue, 25 Aug 2020 09:00:19 +0000 Subject: [PATCH 355/424] Translated using Weblate (Hungarian) Currently translated at 99.5% (2325 of 2337 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/hu/ --- src/i18n/strings/hu.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index d2581b4405..71dab37a55 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -1630,7 +1630,7 @@ "%(role)s in %(roomName)s": "%(role)s a szobában: %(roomName)s", "Messages in this room are end-to-end encrypted.": "Az üzenetek a szobában végponttól végpontig titkosítottak.", "Security": "Biztonság", - "Verify": "Ellenőriz", + "Verify": "Ellenőrzés", "Any of the following data may be shared:": "Az alábbi adatok közül bármelyik megosztásra kerülhet:", "Your display name": "Megjelenítési neved", "Your avatar URL": "Profilképed URL-je", @@ -2234,7 +2234,7 @@ "Emoji picker": "Emodzsi választó", "No recently visited rooms": "Nincsenek nemrégiben meglátogatott szobák", "People": "Emberek", - "Sort by": "Rendezve:", + "Sort by": "Rendezés", "Unread rooms": "Olvasatlan szobák", "Always show first": "Mindig az elsőt mutatja", "Show": "Mutat", From 5857ebcb03ddd1d4e03608d3a8d029d0365adced Mon Sep 17 00:00:00 2001 From: ziriSut Date: Tue, 25 Aug 2020 08:12:34 +0000 Subject: [PATCH 356/424] Translated using Weblate (Kabyle) Currently translated at 86.6% (2025 of 2337 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/kab/ --- src/i18n/strings/kab.json | 115 +++++++++++++++++++++++++++++++++++++- 1 file changed, 114 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/kab.json b/src/i18n/strings/kab.json index 861ed40033..9af55c0793 100644 --- a/src/i18n/strings/kab.json +++ b/src/i18n/strings/kab.json @@ -1961,5 +1961,118 @@ "Save your Security Key": "Sekles tasarut-ik·im n tɣellist", "Unable to set up secret storage": "Asbadu n uklas uffir d awezɣi", "Paperclip": "Tamessakt n lkaɣeḍ", - "Are you sure? You will lose your encrypted messages if your keys are not backed up properly.": "Tettḥeqqeḍ? Ad tesruḥeḍ iznan-ik•im yettwawgelhen ma tisura-k•m ur klisent ara akken ilaq." + "Are you sure? You will lose your encrypted messages if your keys are not backed up properly.": "Tettḥeqqeḍ? Ad tesruḥeḍ iznan-ik•im yettwawgelhen ma tisura-k•m ur klisent ara akken ilaq.", + "Cactus": "Akermus", + "Enter keywords separated by a comma:": "Sekcem awalen uffiren gar-asen tafrayt:", + "Add an email address to configure email notifications": "Rnu tansa n yimayl i uswel n yilɣa s yimayl", + "Notifications on the following keywords follow rules which can’t be displayed here:": "Ilɣa deg wawalen-a ufranen i d-iteddun ṭṭafaren ilugan ur yezmiren ara ad d-ttwaskanen ara da:", + "Unable to fetch notification target list": "D awazɣi ad d-nerr tabdart n yisaḍasen n yilɣa", + "There are advanced notifications which are not shown here.": "Llan yilɣa leqqayen ur d-nettwaskan ara da.", + "You might have configured them in a client other than %(brand)s. You cannot tune them in %(brand)s but they still apply.": "Ahat tsewleḍ-ten deg yimsaɣ-nniḍen mačči deg %(brand)s. Ur tezmireḍ ara ad ten-tṣeggmeḍ deg %(brand)s maca mazal-iten teddun.", + "Show message in desktop notification": "Sken-d iznan deg yilɣa n tnarit", + "Identity Server URL must be HTTPS": "URL n uqeddac n timagit ilaq ad yili d HTTPS", + "Not a valid Identity Server (status code %(code)s)": "Aqeddac n timagit mačči d ameɣtu (status code %(code)s)", + "Could not connect to Identity Server": "Ur izmir ara ad yeqqen ɣer uqeddac n timagit", + "Disconnect from the identity server and connect to instead?": "Ffeɣ seg tuqqna n uqeddac n timagit syen qqen ɣer deg wadeg-is?", + "Terms of service not accepted or the identity server is invalid.": "Tiwtilin n uqeddac ur ttwaqbalent ara neɣ aqeddac n timagit d arameɣtu.", + "The identity server you have chosen does not have any terms of service.": "Aqeddac n timagit i tferneḍ ulac akk ɣer-s tiwtilin n uqeddac.", + "Disconnect identity server": "Ffeɣ seg tuqqna n uqeddac n timagit", + "Disconnect from the identity server ?": "Ffeɣ seg tuqqna n uqeddac n timagi t?", + "You should remove your personal data from identity server before disconnecting. Unfortunately, identity server is currently offline or cannot be reached.": "Ilaq-ak·am ad tekkseḍ isefka-inek·inem udmawanen seg uqeddac n timagit send ad teffɣeḍ seg tuqqna. Nesḥassef, aqeddac n timagit akka tura ha-t beṛṛa n tuqqna neɣ awwaḍ ɣer-s ulamek.", + "check your browser plugins for anything that might block the identity server (such as Privacy Badger)": "senqed izegrar n yiming-ik·im i kra n wayen i izemren ad isewḥel aqeddac n timagit (am Privacy Badger)", + "contact the administrators of identity server ": "nermes inedbalen n uqeddac n timagit ", + "You are still sharing your personal data on the identity server .": "Mazal-ik·ikem tbeṭṭuḍ isefka-inek·inem udmawanen ɣef uqeddac n timagit .", + "Error encountered (%(errorDetail)s).": "Tuccaḍ i d-yettwamuggren (%(errorDetail)s).", + "Custom font size can only be between %(min)s pt and %(max)s pt": "Teɣzi n tsefsit tudmawant tezmer kan ad tili gar %(min)s pt d %(max)s pt", + "Error downloading theme information.": "Tuccḍa deg usali n telɣut n usentel.", + "Set the name of a font installed on your system & %(brand)s will attempt to use it.": "Sbadu isem n tsefsit yettwasbedden ɣef unagraw-ik·im & %(brand)s ad yeɛreḍ ad t-isseqdec.", + "Appearance Settings only affect this %(brand)s session.": "Ala iɣewwaren n urwes i izemren ad beddlen kra deg tɣimit-a %(brand)s.", + "Deactivating your account is a permanent action - be careful!": "Asensi n umiḍan-inek·inem d ayen ara yilin i lebda - Ɣur-k·m!", + "For help with using %(brand)s, click here.": "I tallalt n useqdec n %(brand)s, sit dagi.", + "For help with using %(brand)s, click here or start a chat with our bot using the button below.": "I tallalt ɣef useqdec n %(brand)s, sit dagi neɣ bdu adiwenni d wabuṭ-nneɣ s useqdec n tqeffalt ddaw.", + "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Ma yella tuzneḍ ugur deg Github, iɣmisen n temseɣtit zemren ad aɣ-ɛiwnen ad negzu ugur. Iɣmisen n temseɣtit deg-sen isefka n useqdec n usnas am yisem n useqdec, am yisulayen neɣ am yismawen i yettunefken i texxamin neɣ i yigrawen ɣer wuɣur terziḍ d yismawen n useqdac n yiseqdacen-nniḍen. Ulac deg-sen iznan.", + "To report a Matrix-related security issue, please read the Matrix.org Security Disclosure Policy.": "I wakken ad d-tazneḍ ugur n tɣellist i icudden ɣer Matrix, ttxil-k·m ɣer tasertit n ukcaf n tɣellist deg Matrix.org.", + "Add users and servers you want to ignore here. Use asterisks to have %(brand)s match any characters. For example, @bot:* would ignore all users that have the name 'bot' on any server.": "Rnu dagi iseqdacen d yiqeddacen i tebɣiḍ ad tzegleḍ. Seqdec izamelen n yitran i wakken %(brand)s ad yemṣada d yal asekkil. D amedya, @bot:* izeggel akk iseqdacen i yesɛan isem \"abuṭ\" ɣef yal aqeddac.", + "Subscribing to a ban list will cause you to join it!": "Amulteɣ ɣer tebdart n tegtin ad ak·akem-yawi ad tettekkiḍ deg-s!", + "If this isn't what you want, please use a different tool to ignore users.": "Ma yella ayagi mačči d ayen i tebɣiḍ, ttxil-k·m seqdec afecku-nniḍen i wakken ad tzegleḍ iseqdacen.", + "Room ID or address of ban list": "Asulay n texxamt neɣ tansa n tebdart n tegtin", + "Start automatically after system login": "Bdu s wudem awurman seld tuqqna ɣer unagraw", + "Always show the window menu bar": "Afeggag n wumuɣ n usfaylu eǧǧ-it yettban", + "Show tray icon and minimize window to it on close": "Sken tagnit n ufeggag n waddad, tsemziḍ asfaylu n umdal", + "Read Marker lifetime (ms)": "Ɣer tanzagt n tudert n tecreḍt (ms)", + "Read Marker off-screen lifetime (ms)": "Ɣer tanzagt n tudert n tecreḍt beṛṛa n ugdil (ms)", + "Unignore": "Ur yettwazgel ara", + "Your server admin has disabled end-to-end encryption by default in private rooms & Direct Messages.": "Anedbal-ik·im n uqeddac issens awgelhen seg yixef ɣer yixef s wudem amezwer deg texxamin tusligin & yiznan usriden.", + "Manage the names of and sign out of your sessions below or verify them in your User Profile.": "Sefrek ismawen syen ffeɣ seg tɣimiyin-ik·im ddaw neɣ senqed-itent deg umaɣnu-ik·im n useqdac.", + "A session's public name is visible to people you communicate with": "Isem n tiɣimit tazayezt yettban i yimdanen wukud tettmeslayeḍ", + "%(brand)s collects anonymous analytics to allow us to improve the application.": "%(brand)s ileqqeḍ tasleḍt tudrigt i wakken ad aɣ-iɛawen ad nesnerni asnas.", + "You have ignored this user, so their message is hidden. Show anyways.": "Tzegleḍ useqdac-a, ihi iznan-ines ffren. Ɣas akken sken-iten-id.", + "You cancelled verifying %(name)s": "Tesfesxeḍ asenqed n %(name)s", + "Declining …": "Tigtin...", + "You sent a verification request": "Tuzneḍ asuter n usenqed", + "Error decrypting video": "Tuccḍa deg uwgelhen n tvidyut", + "Reactions": "Tisedmirin", + " reacted with %(content)s": " isedmer s %(content)s", + "reacted with %(shortName)s": "issedmer s %(shortName)s", + "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s ibeddel avaṭar i %(roomName)s", + "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s yekkes avaṭar n texxamt.", + "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s ibeddel avaṭar n texxamt i ", + "This room is a continuation of another conversation.": "Taxxamt-a d akemmel n udiwenni-nniḍen.", + "Click here to see older messages.": "Sit da i wakken ad twaliḍ iznan iqdimen.", + "Failed to copy": "Anɣal ur yeddi ara", + "Edited at %(date)s": "Yettwaẓreg deg %(date)s", + "Click to view edits": "Sit i wakken ad twaliḍ aseẓreg", + "Edited at %(date)s. Click to view edits.": "Yettwaẓreg deg %(date)s. Sit i wakken ad twaliḍ iseẓrag.", + "Failed to load group members": "Ur yeddi ara usali n yiɛeggalen n ugraw", + "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "Tebɣiḍ s tidet ad tekkseḍ '%(roomName)s' seg %(groupId)s?", + "Removing a room from the community will also remove it from the community page.": "Tukksa n texxamt seg temɣiwent ad tt-yekkes ula seg usebter n temɣiwent.", + "Failed to remove room from community": "Tukksa n texxamt seg temɣiwent ur yeddi ara", + "Failed to remove '%(roomName)s' from %(groupId)s": "Ur teddi ara tukksa n '%(roomName)s' seg %(groupId)s", + "Something went wrong!": "Yella wayen ur nteddu ara akken iwata!", + "The visibility of '%(roomName)s' in %(groupId)s could not be updated.": "Abani n '%(roomName)s' deg %(groupId)s yegguma ad ttuleqqem.", + "Visible to everyone": "Iban i medden akk", + "Something went wrong when trying to get your communities.": "Yella wayen ur nteddu ara akken deg uneɛruḍ n wawwaḍ ɣer temɣiwnin-ik·im.", + "Display your community flair in rooms configured to show it.": "Sken lbenna n temɣiwent-ik·im deg texxamin yettusewlen ad ttwaskanent.", + "You're not currently a member of any communities.": "Akka tura ur telliḍ d aɛeggal ula deg yiwet temɣiwent.", + "Frequently Used": "Yettuseqdac s waṭas", + "Quick Reactions": "Tisedmirin tiruradin", + "Unknown Address": "D tansa tarussint", + "Any of the following data may be shared:": "Yal yiwen seg yisefka i d-iteddun zemren ad ttwabḍun:", + "Invite anyway and never warn me again": "Ɣas akken nced-d yerna ur iyi-id-ttɛeggin ara akk", + "Please tell us what went wrong or, better, create a GitHub issue that describes the problem.": "Ttxil-k·m ini-aɣ-d acu ur nteddu ara akken ilaq neɣ, akken i igerrez, rnu ugur deg Github ara ad d-igelmen ugur.", + "Preparing to download logs": "Aheyyi i usali n yiɣmisen", + "There's no one else here! Would you like to invite others or stop warning about the empty room?": "Ulac ula d yiwen da! Tebɣiḍ ad d-necdeḍ wiyaḍ neɣ aḥbas n uɛeggen ɣef texxamt tilemt?", + "You seem to be in a call, are you sure you want to quit?": "Tettbaneḍ aql-ak·akem deg useiwel, tebɣiḍ s tidet ad teffɣeḍ?", + "Failed to load timeline position": "Asali n yideg n tesnakudt ur yeddi ara", + "Sign in instead": "Kcem axiṛ", + "Invalid homeserver discovery response": "Tiririt n usnirem n uqeddac agejdan d tarameɣtut", + "Failed to get autodiscovery configuration from server": "Awway n uswel n usnirem awurman seg uqeddac ur yeddi ara", + "Invalid base_url for m.homeserver": "D arameɣtu base_url i m.homeserver", + "Homeserver URL does not appear to be a valid Matrix homeserver": "URL n uqeddac agejdan ur yettban ara d aqeddac agejdan n Matrix ameɣtu", + "Invalid identity server discovery response": "Tiririt n usnirem n uqeddac n timagitn d tarameɣtut", + "Identity server URL does not appear to be a valid identity server": "URL n uqeddac n timagit ur yettban ara d aqeddac n timagit ameɣtu", + "This homeserver does not support login using email address.": "Aqeddac-a agejdan ur yessefrak ara inekcum s useqdec n tansa n yimayl.", + "Please contact your service administrator to continue using this service.": "Ttxil-k·m nermes anedbal-ik·im n uqeddac i wakken ad tkemmleḍ aseqdec n yibenk-a.", + "Failed to fetch avatar URL": "Tiririt n URL ur teddi ara", + "Unable to query for supported registration methods.": "Anadi n tarrayin n usekles yettusefraken d awezi.", + "Registration has been disabled on this homeserver.": "Aklas yensa deg uqeddac-a agejdan.", + "This server does not support authentication with a phone number.": "Aqeddac-a ur yessefrak ara asesteb s wuṭṭun n tilifun.", + "You can now close this window or log in to your new account.": "Tzemreḍ tura ad tmedleḍ asfaylu-a neɣ kcem ɣer umiḍan-ik·im amaynut.", + "Use Recovery Key or Passphrase": "Seqdec tasarut tuffirt neɣ tafyirt tuffirt n uεeddi", + "This requires the latest %(brand)s on your other devices:": "Ayagi yesra %(brand)s tineggura ɣef yibenkan-ik·im wiyaḍ:", + "or another cross-signing capable Matrix client": "neɣ amsaɣ-nniḍen n Matrix yemṣadan d uzmul amdigan", + "Your new session is now verified. Other users will see it as trusted.": "Tiɣimit-ik·im tamaynut tettwasenqed tura. Ad tt-walin wiyaḍ tettwaḍman.", + "Failed to re-authenticate due to a homeserver problem": "Allus n usesteb ur yeddi ara ssebbba n wugur deg uqeddac agejdan", + "Enter your password to sign in and regain access to your account.": "Sekcem awal-ik·im uffir i wakken ad teqqneḍ syen ad tkecmeḍ i tikkelt tayeḍ ɣer umiḍan-ik·im.", + "Use a secret phrase only you know, and optionally save a Security Key to use for backup.": "Seqdec tafyirt tuffirt i tessneḍ kan kečč·kemm, syen sekles ma tebɣiḍ tasarut n tɣellist i useqdec-ines i uḥraz.", + "Restore your key backup to upgrade your encryption": "Err-d aḥraz n tsarut-ik·im akken ad tleqqmeḍ awgelhen-ik·im", + "You'll need to authenticate with the server to confirm the upgrade.": "Ad teḥqiǧeḍ asesteb s uqeddac i wakken ad tesnetmeḍ lqem.", + "Unable to query secret storage status": "Tuttra n waddad n uklas uffir ur teddi ara", + "You can also set up Secure Backup & manage your keys in Settings.": "Tzemreḍ daɣen aḥraz uffir & tesferkeḍ tisura-ik·im deg yiɣewwaren.", + "We'll store an encrypted copy of your keys on our server. Secure your backup with a recovery passphrase.": "Ad d-terreḍ anɣal awgelhan n tsura-ik·im ɣef uqeddac-nneɣ. Ḥrez aḥrazen s tefyirt tuffirt n uɛeddi.", + "Without setting up Secure Message Recovery, you won't be able to restore your encrypted message history if you log out or use another session.": "War aswel n Secure Message Recovery, ur tettizmireḍ ara ad d-terreḍ amazray-ik·im n yiznan iwgelhanen ma yella teffɣeḍ neɣ tesqedceḍ tiɣimit-nniḍen.", + "Without setting up Secure Message Recovery, you'll lose your secure message history when you log out.": "War aswel n Secure Message Recovery, ad tmedleḍ amazray-ik·im n yiznan uffiren ma yella teffɣeḍ.", + "If you didn't set the new recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings.": "Ma yella ur tesbaduḍ ara tarrayt n tririt tamaynut, yezmer ad yili umaker ara iɛerḍen ad yekcem ɣer umiḍan-ik·im. Beddel awal uffir n umiḍan-ik·im syen sbadu tarrayt n tririt tamaynut din din deg yiɣewwaren.", + "This session has detected that your recovery passphrase and key for Secure Messages have been removed.": "Tiɣimit-a tufa-d tafyirt-ik·im tuffirt n tririt d tsarut-ik·im n yiznan uffiren ttwakksent.", + "If you didn't remove the recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings.": "Ma yella ur tekkiseḍ ara tarrayt n tririt tamaynut, yezmer ad yili umaker ara iɛerḍen ad yekcem ɣer umiḍan-ik·im. Beddel awal uffir n umiḍan-ik·im syen sbadu tarrayt n tririt tamaynut din din deg yiɣewwaren." } From de233090eced848cfe924ca082168b2e8ba6f517 Mon Sep 17 00:00:00 2001 From: Nikita Epifanov Date: Tue, 25 Aug 2020 13:53:36 +0000 Subject: [PATCH 357/424] Translated using Weblate (Russian) Currently translated at 100.0% (2337 of 2337 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/ru/ --- src/i18n/strings/ru.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index bc4bd073d9..e0be2f9820 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -2417,5 +2417,8 @@ "Preparing to download logs": "Подготовка к загрузке журналов", "Download logs": "Скачать журналы", "Unexpected server error trying to leave the room": "Неожиданная ошибка сервера при попытке покинуть комнату", - "Error leaving room": "Ошибка при выходе из комнаты" + "Error leaving room": "Ошибка при выходе из комнаты", + "Communities v2 prototypes. Requires compatible homeserver. Highly experimental - use with caution.": "Прототипы сообщества v2. Требуется совместимый домашний сервер. Очень экспериментально - используйте с осторожностью.", + "Explore rooms in %(communityName)s": "Посмотреть комнаты в %(communityName)s", + "Set up Secure Backup": "Настроить безопасное резервное копирование" } From b1f7a161275a418424ebfefde95a891cbeaae4c8 Mon Sep 17 00:00:00 2001 From: LinAGKar Date: Tue, 25 Aug 2020 15:06:45 +0000 Subject: [PATCH 358/424] Translated using Weblate (Swedish) Currently translated at 67.6% (1579 of 2337 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/sv/ --- src/i18n/strings/sv.json | 163 ++++++++++++++++++++++++++++----------- 1 file changed, 118 insertions(+), 45 deletions(-) diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index 73e32d98ae..9dd4c69840 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -12,7 +12,7 @@ "Microphone": "Mikrofon", "Camera": "Kamera", "Advanced": "Avancerat", - "Always show message timestamps": "Visa alltid tidsstämpel för meddelanden", + "Always show message timestamps": "Visa alltid tidsstämplar för meddelanden", "Authentication": "Autentisering", "%(items)s and %(lastItem)s": "%(items)s och %(lastItem)s", "and %(count)s others...|other": "och %(count)s andra...", @@ -25,7 +25,7 @@ "An error has occurred.": "Ett fel har inträffat.", "Are you sure?": "Är du säker?", "Are you sure you want to leave the room '%(roomName)s'?": "Vill du lämna rummet '%(roomName)s'?", - "Autoplay GIFs and videos": "Spela automatiskt upp GIFar och videor", + "Autoplay GIFs and videos": "Spela automatiskt upp GIF:ar och videor", "Are you sure you want to reject the invitation?": "Är du säker på att du vill avböja inbjudan?", "%(senderName)s banned %(targetName)s.": "%(senderName)s bannade %(targetName)s.", "Banned users": "Bannade användare", @@ -212,7 +212,7 @@ "%(senderName)s set a profile picture.": "%(senderName)s satte en profilbild.", "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s bytte sitt visningnamn till %(displayName)s.", "Settings": "Inställningar", - "Show timestamps in 12 hour format (e.g. 2:30pm)": "Visa tidsstämplar i 12-timmarsformat (t.ex. 2:30pm)", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "Visa tidsstämplar i 12-timmarsformat (t.ex. 2:30em)", "Signed Out": "Loggade ut", "Sign in": "Logga in", "Sign out": "Logga ut", @@ -320,7 +320,7 @@ "An error occurred whilst saving your email notification preferences.": "Ett fel uppstod då epostaviseringsinställningarna sparades.", "Explore Room State": "Utforska rumläget", "Source URL": "Käll-URL", - "Failed to add tag %(tagName)s to room": "Det gick inte att lägga till \"%(tagName)s\" till rummet", + "Failed to add tag %(tagName)s to room": "Det gick inte att lägga till etiketten \"%(tagName)s\" till rummet", "Filter results": "Filtrera resultaten", "Members": "Medlemmar", "No update available.": "Ingen uppdatering tillgänglig.", @@ -383,7 +383,7 @@ "Off": "Av", "%(brand)s does not know how to join a room on this network": "%(brand)s kan inte gå med i ett rum på det här nätverket", "Mentions only": "Endast omnämnande", - "Failed to remove tag %(tagName)s from room": "Det gick inte att radera taggen %(tagName)s från rummet", + "Failed to remove tag %(tagName)s from room": "Det gick inte att radera etiketten %(tagName)s från rummet", "You can now return to your account after signing out, and sign in on other devices.": "Du kan nu återgå till ditt konto efter att ha loggat ut och logga in på andra enheter.", "Enable email notifications": "Aktivera epostaviseringar", "Download this file": "Ladda ner filen", @@ -517,7 +517,7 @@ "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s bytte avatar för %(roomName)s", "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s tog bort rummets avatar.", "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s ändrade rummets avatar till ", - "Automatically replace plain text Emoji": "Ersätt text-emojis automatiskt", + "Automatically replace plain text Emoji": "Ersätt automatiskt textemotikoner med emojier", "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(day)s %(monthName)s %(time)s", "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(day)s %(monthName)s %(fullYear)s", @@ -615,7 +615,7 @@ "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s satte framtida rumshistorik till okänd synlighet (%(visibility)s).", "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Där denna sida innehåller identifierbar information, till exempel ett rums-, användar- eller grupp-ID, tas datan bort innan den skickas till servern.", "The remote side failed to pick up": "Mottagaren svarade inte", - "Jump to read receipt": "Hoppa till läskvitto", + "Jump to read receipt": "Hoppa till läsindikation", "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Denna process låter dig exportera nycklarna för meddelanden som du har fått i krypterade rum till en lokal fil. Du kommer sedan att kunna importera filen i en annan Matrix-klient i framtiden, så att den klienten också kan dekryptera meddelandena.", "Unknown for %(duration)s": "Okänt i %(duration)s", "Unknown": "Okänt", @@ -672,7 +672,7 @@ "Add rooms to the community": "Lägg till rum i gemenskapen", "Add to community": "Lägg till i gemenskap", "Failed to invite users to community": "Det gick inte att bjuda in användare till gemenskapen", - "Mirror local video feed": "Speglad lokal-video", + "Mirror local video feed": "Spegla den lokala videoströmmen", "Community Invites": "Community-inbjudningar", "Invalid community ID": "Ogiltigt gemenskaps-ID", "'%(groupId)s' is not a valid community ID": "%(groupId)s är inte ett giltigt gemenskaps-ID", @@ -741,7 +741,7 @@ "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Du kommer inte att kunna ångra den här ändringen eftersom du höjer användaren till samma behörighetsnivå som dig själv.", "unknown caller": "okänd uppringare", "To use it, just wait for autocomplete results to load and tab through them.": "För att använda detta, vänta på att autokompletteringen laddas och tabba igenom resultatet.", - "Enable inline URL previews by default": "Aktivera URL-förhandsvisning som standard", + "Enable inline URL previews by default": "Aktivera inbäddad URL-förhandsvisning som standard", "Enable URL previews for this room (only affects you)": "Aktivera URL-förhandsvisning för detta rum (påverkar bara dig)", "Enable URL previews by default for participants in this room": "Aktivera URL-förhandsvisning som standard för deltagare i detta rum", "You have enabled URL previews by default.": "Du har aktiverat URL-förhandsvisning som standard.", @@ -797,7 +797,7 @@ "Passphrase must not be empty": "Lösenfras får inte vara tom", "Confirm passphrase": "Bekräfta lösenfrasen", "%(senderName)s changed the pinned messages for the room.": "%(senderName)s ändrade fastnålade meddelanden för rummet.", - "Message Pinning": "Nåla fast meddelanden", + "Message Pinning": "Fastnålning av meddelanden", "Unpin Message": "Ta bort fastnålning", "No pinned messages.": "Inga fastnålade meddelanden.", "Pinned Messages": "Fastnålade meddelanden", @@ -838,8 +838,8 @@ "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "När någon postar en URL i sitt meddelande, kan URL-förhandsvisning ge mer information om länken, såsom titel, beskrivning, och en bild från webbplatsen.", "You can't send any messages until you review and agree to our terms and conditions.": "Du kan inte skicka några meddelanden innan du granskar och godkänner våra villkor.", "System Alerts": "Systemvarningar", - "Sorry, your homeserver is too old to participate in this room.": "Tyvärr, din hemserver är för gammal för att delta i detta rum.", - "Please contact your homeserver administrator.": "Vänligen kontakta din hemserver-administratör.", + "Sorry, your homeserver is too old to participate in this room.": "Tyvärr, din hemserver är för gammal för att delta i det här rummet.", + "Please contact your homeserver administrator.": "Vänligen kontakta din hemserveradministratör.", "Please contact your service administrator to continue using the service.": "Kontakta din tjänstadministratör för att fortsätta använda tjänsten.", "This homeserver has hit its Monthly Active User limit.": "Hemservern har nått sin månatliga gräns för användaraktivitet.", "This homeserver has exceeded one of its resource limits.": "Hemservern har överskridit en av sina resursgränser.", @@ -869,7 +869,7 @@ "Before submitting logs, you must create a GitHub issue to describe your problem.": "Innan du skickar in loggar måste du skapa en GitHub-bugg för att beskriva problemet.", "Updating %(brand)s": "Uppdaterar %(brand)s", "Open Devtools": "Öppna Devtools", - "Show developer tools": "Visa utvecklingsverktyg", + "Show developer tools": "Visa utvecklarverktyg", "You are an administrator of this community. You will not be able to rejoin without an invite from another administrator.": "Du är administratör för denna gemenskap. Du kommer inte kunna gå med igen utan en inbjudan från en annan administratör.", "The file '%(fileName)s' exceeds this homeserver's size limit for uploads": "Filen '%(fileName)s' överstiger denna hemserverns storleksgräns för uppladdningar", "Unable to load! Check your network connectivity and try again.": "Kan inte ladda! Kolla din nätverksuppkoppling och försök igen.", @@ -889,19 +889,19 @@ "%(names)s and %(count)s others are typing …|other": "%(names)s och %(count)s andra skriver …", "%(names)s and %(count)s others are typing …|one": "%(names)s och en till skriver …", "%(names)s and %(lastPerson)s are typing …": "%(names)s och %(lastPerson)s skriver …", - "Unrecognised address": "Okänd address", - "You do not have permission to invite people to this room.": "Du har inte tillåtelse att bjuda in användare till det här rummet.", - "User %(user_id)s does not exist": "Användare %(user_id)s existerar inte", - "User %(user_id)s may or may not exist": "Användare %(user_id)s existerar möjligtvis", - "Unknown server error": "Okänt server-fel", - "Use a few words, avoid common phrases": "Använd ett par ord, undvik vanliga fraser", - "No need for symbols, digits, or uppercase letters": "Symboler, siffror eller stora bokstäver krävs ej", + "Unrecognised address": "Okänd adress", + "You do not have permission to invite people to this room.": "Du har inte behörighet att bjuda in användare till det här rummet.", + "User %(user_id)s does not exist": "Användaren %(user_id)s existerar inte", + "User %(user_id)s may or may not exist": "Användaren %(user_id)s kanske eller kanske inte existerar", + "Unknown server error": "Okänt serverfel", + "Use a few words, avoid common phrases": "Använd några ord, undvik vanliga fraser", + "No need for symbols, digits, or uppercase letters": "Specialtecken, siffror eller stora bokstäver behövs inte", "Avoid repeated words and characters": "Undvik upprepade ord och bokstäver", "Avoid sequences": "Undvik sekvenser", - "Avoid recent years": "Undvik senare år", + "Avoid recent years": "Undvik nyliga år", "Avoid years that are associated with you": "Undvik årtal som associeras med dig", "Avoid dates and years that are associated with you": "Undvik datum och årtal som associeras med dig", - "Capitalization doesn't help very much": "Kapitalisering hjälper inte särskilt mycket", + "Capitalization doesn't help very much": "Versaler hjälper inte särskilt mycket", "All-uppercase is almost as easy to guess as all-lowercase": "Endast stora bokstäver är nästan lika enkelt att gissa som endast små bokstäver", "Reversed words aren't much harder to guess": "Ord skrivna baklänges är inte mycket svårare att gissa", "Predictable substitutions like '@' instead of 'a' don't help very much": "Förutsägbara ersättningar som '@' istället för 'a' hjälper inte särskilt mycket", @@ -909,32 +909,32 @@ "Repeats like \"aaa\" are easy to guess": "Upprepningar som \"aaa\" är enkla att gissa", "Repeats like \"abcabcabc\" are only slightly harder to guess than \"abc\"": "Upprepningar som \"abcabcabc\" är bara aningen svårare att gissa än \"abc\"", "Sequences like abc or 6543 are easy to guess": "Sekvenser som abc eller 6543 är enkla att gissa", - "Recent years are easy to guess": "Senare årtal är enka att gissa", + "Recent years are easy to guess": "Nyliga årtal är enkla att gissa", "Dates are often easy to guess": "Datum är ofta enkla att gissa", - "This is a top-10 common password": "Det här är ett av de topp 10 vanligaste lösenorden", - "This is a top-100 common password": "Det här är ett av de topp 100 vanligaste lösenorden", + "This is a top-10 common password": "Det här är ett av de 10 vanligaste lösenorden", + "This is a top-100 common password": "Det här är ett av de 100 vanligaste lösenorden", "This is a very common password": "Det här är ett väldigt vanligt lösenord", "This is similar to a commonly used password": "Det här liknar ett vanligt lösenord", "A word by itself is easy to guess": "Enstaka ord är enkla att gissa", "Names and surnames by themselves are easy to guess": "Enstaka för- och efternamn är enkla att gissa", - "Common names and surnames are easy to guess": "Vanliga namn och efternamn är enkla att gissa", - "Straight rows of keys are easy to guess": "Tangenter i rad på tangentbordet är enkla att gissa", + "Common names and surnames are easy to guess": "Vanliga för- och efternamn är enkla att gissa", + "Straight rows of keys are easy to guess": "Raka rader på tangentbordet är enkla att gissa", "Short keyboard patterns are easy to guess": "Korta tangentbordsmönster är enkla att gissa", - "There was an error joining the room": "Det gick fel när vi försökte gå med i rummet", + "There was an error joining the room": "Ett fel inträffade vid försök att gå med i rummet", "Changes your display nickname in the current room only": "Ändrar ditt visningsnamn endast i detta rum", - "Use a longer keyboard pattern with more turns": "Använd ett längre tangentbordsmönster med fler varv", + "Use a longer keyboard pattern with more turns": "Använd ett längre tangentbordsmönster med fler riktningsbyten", "Custom user status messages": "Anpassade användarstatusmeddelanden", - "Enable Emoji suggestions while typing": "Aktivera Emoji-förslag medan du skriver", + "Enable Emoji suggestions while typing": "Aktivera emojiförslag medan du skriver", "Show a placeholder for removed messages": "Visa en platshållare för borttagna meddelanden", "Show join/leave messages (invites/kicks/bans unaffected)": "Visa \"gå med\"/lämna-meddelanden (inbjudningar/kickningar/banningar opåverkat)", "Show avatar changes": "Visa avatarändringar", "Show display name changes": "Visa visningsnamnsändringar", - "Show read receipts sent by other users": "Visa läskvitton som skickats av andra användare", - "Show avatars in user and room mentions": "Visa avatarer i användar- och rumsnämningar", - "Enable big emoji in chat": "Aktivera stor emoji i chatt", + "Show read receipts sent by other users": "Visa läsindikationer som skickats av andra användare", + "Show avatars in user and room mentions": "Visa avatarer i användar- och rumsbenämningar", + "Enable big emoji in chat": "Aktivera stora emojier i chatt", "Send typing notifications": "Skicka \"skriver\"-statusar", "Enable Community Filter Panel": "Aktivera gemenskapsfilterpanel", - "Allow Peer-to-Peer for 1:1 calls": "Tillåt peer-to-peer kommunikation för 1:1 samtal", + "Allow Peer-to-Peer for 1:1 calls": "Tillåt peer-to-peer-kommunikation för 1:1-samtal", "Messages containing my username": "Meddelanden som innehåller mitt användarnamn", "Messages containing @room": "Meddelanden som innehåller @room", "Encrypted messages in one-to-one chats": "Krypterade meddelanden i privata chattar", @@ -1081,9 +1081,9 @@ "%(senderDisplayName)s enabled flair for %(groups)s in this room.": "%(senderDisplayName)s aktiverade emblem för %(groups)s i detta rum.", "%(senderDisplayName)s disabled flair for %(groups)s in this room.": "%(senderDisplayName)s inaktiverade emblem för %(groups)s i detta rum.", "%(senderDisplayName)s enabled flair for %(newGroups)s and disabled flair for %(oldGroups)s in this room.": "%(senderDisplayName)s aktiverade emblem för %(newGroups)s och inaktiverade emblem för %(oldGroups)s i detta rum.", - "User %(userId)s is already in the room": "Användare %(userId)s är redan i rummet", - "The user must be unbanned before they can be invited.": "Användare behöver avbannas innan de kan bjudas in.", - "Group & filter rooms by custom tags (refresh to apply changes)": "Gruppera och filtrera rum med anpassade taggar (ladda om för att visa ändringar)", + "User %(userId)s is already in the room": "Användaren %(userId)s är redan i rummet", + "The user must be unbanned before they can be invited.": "Användaren behöver avbannas innan den kan bjudas in.", + "Group & filter rooms by custom tags (refresh to apply changes)": "Gruppera och filtrera rum med anpassade etiketter (ladda om för att visa ändringar)", "Render simple counters in room header": "Rendera enkla räknare i rumsrubriken", "Yes": "Ja", "No": "Nej", @@ -1124,7 +1124,7 @@ "Please supply a https:// or http:// widget URL": "Ange en widget-URL med https:// eller http://", "You cannot modify widgets in this room.": "Du kan inte ändra widgets i detta rum.", "%(senderName)s revoked the invitation for %(targetDisplayName)s to join the room.": "%(senderName)s återkallade inbjudan för %(targetDisplayName)s att gå med i rummet.", - "Show a reminder to enable Secure Message Recovery in encrypted rooms": "Visa en påminnelse för att sätta på säker meddelande återhämtning i krypterade rum", + "Show a reminder to enable Secure Message Recovery in encrypted rooms": "Visa en påminnelse att sätta på säker meddelandeåterställning i krypterade rum", "The other party cancelled the verification.": "Den andra parten avbröt verifieringen.", "Verified!": "Verifierad!", "You've successfully verified this user.": "Du har verifierat den här användaren.", @@ -1237,7 +1237,7 @@ "Multiple integration managers": "Flera integrationshanterare", "Show hidden events in timeline": "Visa dolda händelser i tidslinjen", "Low bandwidth mode": "Läge för låg bandbredd", - "Send read receipts for messages (requires compatible homeserver to disable)": "Skicka läskvitton för meddelanden (kräver kompatibel hemserver för att inaktivera)", + "Send read receipts for messages (requires compatible homeserver to disable)": "Skicka läsindikationer för meddelanden (kräver kompatibel hemserver för att inaktivera)", "When rooms are upgraded": "När rum uppgraderas", "Accept to continue:": "Acceptera för att fortsätta:", "ID": "ID", @@ -1304,7 +1304,7 @@ "Join the conversation with an account": "Gå med i konversationen med ett konto", "Sign Up": "Registrera dig", "Sign In": "Logga in", - "Prompt before sending invites to potentially invalid matrix IDs": "Fråga innan inbjudningar skickas till potentiellt ogiltiga matrix-IDn", + "Prompt before sending invites to potentially invalid matrix IDs": "Fråga innan inbjudningar skickas till potentiellt ogiltiga Matrix-ID:n", "Show all": "Visa alla", "reacted with %(shortName)s": "reagerade med %(shortName)s", "Edited at %(date)s. Click to view edits.": "Ändrad %(date)s. Klicka för att visa ändringar.", @@ -1325,7 +1325,7 @@ "Use an identity server to invite by email. Manage in Settings.": "Använd en identitetsserver för att bjuda in via e-post. Hantera det i inställningar.", "Unexpected error resolving homeserver configuration": "Oväntat fel vid inläsning av hemserverkonfiguration", "Unexpected error resolving identity server configuration": "Oväntat fel vid inläsning av identitetsserverkonfiguration", - "Allow fallback call assist server turn.matrix.org when your homeserver does not offer one (your IP address would be shared during a call)": "Tillåt samtalsserver turn.matrix.org som reserv när din hemserver inte erbjuder en (din IP-adress delades under ett samtal)", + "Allow fallback call assist server turn.matrix.org when your homeserver does not offer one (your IP address would be shared during a call)": "Tillåt assistansservern turn.matrix.org för samtal som reserv när din hemserver inte erbjuder en (din IP-adress kommer delas under ett samtal)", "Unable to load key backup status": "Det går inte att ladda status för nyckelsäkerhetskopiering", "Restore from Backup": "Återställ från säkerhetskopiering", "Backing up %(sessionsRemaining)s keys...": "Säkerhetskopierar %(sessionsRemaining)s nycklar...", @@ -1336,8 +1336,8 @@ "This action requires accessing the default identity server to validate an email address or phone number, but the server does not have any terms of service.": "Den här åtgärden kräver åtkomst till standardidentitetsservern för att validera en e-postadress eller ett telefonnummer, men servern har inga användarvillkor.", "Trust": "Förtroende", "%(name)s (%(userId)s)": "%(name)s (%(userId)s)", - "Try out new ways to ignore people (experimental)": "Testa nya sätt att ignorera personer (experimentalt)", - "Show previews/thumbnails for images": "Visa förhandsvisning/tumnagel för bilder", + "Try out new ways to ignore people (experimental)": "Testa nya sätt att ignorera personer (experimentellt)", + "Show previews/thumbnails for images": "Visa förhandsvisning/miniatyr för bilder", "Custom (%(level)s)": "Anpassad (%(level)s)", "Error upgrading room": "Fel vid uppgradering av rum", "Double check that your server supports the room version chosen and try again.": "Dubbelkolla att din server stöder den valda rumsversionen och försök igen.", @@ -1462,7 +1462,7 @@ "Setting up keys": "Sätter upp nycklar", "Verify this session": "Verifiera denna session", "Encryption upgrade available": "Krypteringsuppgradering tillgänglig", - "Set up encryption": "Ställ in kryptering", + "Set up encryption": "Sätt upp kryptering", "Sign In or Create Account": "Logga in eller skapa konto", "Use your account or create a new one to continue.": "Använd ditt konto eller skapa ett nytt för att fortsätta.", "Create Account": "Skapa konto", @@ -1592,5 +1592,78 @@ "%(num)s hours ago": "%(num)s timmar sedan", "about a day ago": "cirka en dag sedan", "%(num)s days ago": "%(num)s dagar sedan", - "a few seconds from now": "några sekunder från nu" + "a few seconds from now": "om några sekunder", + "about a minute from now": "om cirka en minut", + "%(num)s minutes from now": "om %(num)s minuter", + "about an hour from now": "om cirka en timme", + "%(num)s hours from now": "om %(num)s timmar", + "about a day from now": "om cirka en dag", + "%(num)s days from now": "om %(num)s dagar", + "Unexpected server error trying to leave the room": "Oväntat serverfel vid försök att lämna rummet", + "Error leaving room": "Fel när rummet lämnades", + "Help us improve %(brand)s": "Hjälp oss att förbättra %(brand)s", + "Send anonymous usage data which helps us improve %(brand)s. This will use a cookie.": "Skicka anonym användningsdata vilken hjälper oss att förbättra %(brand)s. Detta kommer att använda en kaka.", + "I want to help": "Jag vill hjälpa till", + "Review where you’re logged in": "Granska var du är inloggad", + "Verify all your sessions to ensure your account & messages are safe": "Verifiera alla dina sessioner för att försäkra att ditt konto och dina meddelanden är säkra", + "Review": "Granska", + "Later": "Senare", + "Your homeserver has exceeded its user limit.": "Din hemserver har överskridit sin användargräns.", + "Your homeserver has exceeded one of its resource limits.": "Din hemserver har överskridit en av sina resursgränser.", + "Contact your server admin.": "Kontakta din serveradministratör.", + "Ok": "OK", + "Set password": "Sätt lösenord", + "To return to your account in future you need to set a password": "För att komma tillbaka till ditt konto i framtiden behöver du sätta ett lösenord", + "Set up": "Sätt upp", + "Upgrade": "Uppgradera", + "Verify": "Verifiera", + "Verify yourself & others to keep your chats safe": "Verifiera dig själv och andra för att hålla dina chattar säkra", + "Other users may not trust it": "Andra användare kanske inta litar på den", + "New login. Was this you?": "Ny inloggning. Var det du?", + "Verify the new login accessing your account: %(name)s": "Verifiera den nya inloggningen på ditt konto: %(name)s", + "Restart": "Starta om", + "Upgrade your %(brand)s": "Uppgradera din %(brand)s", + "A new version of %(brand)s is available!": "En ny version av %(brand)s är tillgänglig!", + "The person who invited you already left the room.": "Personen som bjöd in dig har redan lämnat rummet.", + "The person who invited you already left the room, or their server is offline.": "Personen som bjöd in dig har redan lämnat rummet, eller så är deras server offline.", + "You joined the call": "Du gick med i samtalet", + "%(senderName)s joined the call": "%(senderName)s gick med i samtalet", + "Call in progress": "Samtal pågår", + "You left the call": "Du lämnade samtalet", + "%(senderName)s left the call": "%(senderName)s lämnade samtalet", + "Call ended": "Samtalet avslutades", + "You started a call": "Du startade ett samtal", + "%(senderName)s started a call": "%(senderName)s startade ett samtal", + "Waiting for answer": "Väntar på svar", + "%(senderName)s is calling": "%(senderName)s ringer", + "* %(senderName)s %(emote)s": "* %(senderName)s %(emote)s", + "%(senderName)s: %(message)s": "%(senderName)s: %(message)s", + "%(senderName)s: %(reaction)s": "%(senderName)s: %(reaction)s", + "%(senderName)s: %(stickerName)s": "%(senderName)s: %(stickerName)s", + "Change notification settings": "Ändra aviseringsinställningar", + "Communities v2 prototypes. Requires compatible homeserver. Highly experimental - use with caution.": "Gemenskap-v2-prototyper. Kräver kompatibel hemserver. Väldigt experimentellt - använd varsamt.", + "New spinner design": "Ny spinnerdesign", + "Support adding custom themes": "Stöd tilläggning av anpassade teman", + "Show message previews for reactions in DMs": "Visa meddelandeförhandsvisningar för reaktioner i DM:er", + "Show message previews for reactions in all rooms": "Visa meddelandeförhandsvisningar för reaktioner i alla rum", + "Enable advanced debugging for the room list": "Aktivera avancerad avbuggning för rumslistan", + "Show info about bridges in room settings": "Visa info om bryggor i rumsinställningar", + "Font size": "Teckenstorlek", + "Use custom size": "Använd anpassad storlek", + "Use a more compact ‘Modern’ layout": "Använd ett mer kompakt ‘modernt’ arrangemang", + "Show typing notifications": "Visa \"skriver\"-statusar", + "Use a system font": "Använd systemets teckensnitt", + "System font name": "Namn på systemets teckensnitt", + "Never send encrypted messages to unverified sessions from this session": "Skicka aldrig krypterade meddelanden till overifierade sessioner från den här sessionen", + "Never send encrypted messages to unverified sessions in this room from this session": "Skicka aldrig krypterade meddelanden till overifierade sessioner i det här rummet från den här sessionen", + "Order rooms by name": "Sortera rum efter namn", + "Show rooms with unread notifications first": "Visa rum med olästa aviseringar först", + "Show shortcuts to recently viewed rooms above the room list": "Visa genvägar till nyligen visade rum över rumslistan", + "Enable message search in encrypted rooms": "Aktivera meddelandesökning i krypterade rum", + "How fast should messages be downloaded.": "Hur snabbt ska meddelanden laddas ner.", + "Manually verify all remote sessions": "Verifiera alla fjärrsessioner manuellt", + "IRC display name width": "Bredd för IRC-visningsnamn", + "Enable experimental, compact IRC style layout": "Aktivera experimentellt kompakt IRC-likt arrangemang", + "Uploading logs": "Laddar upp loggar", + "Downloading logs": "Laddar ner loggar" } From 85c1e41def4a0d1ccbc1e622e219f24189c9aa0f Mon Sep 17 00:00:00 2001 From: strix aluco Date: Tue, 25 Aug 2020 23:08:31 +0000 Subject: [PATCH 359/424] Translated using Weblate (Ukrainian) Currently translated at 51.7% (1209 of 2337 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/element-web/matrix-react-sdk/uk/ --- src/i18n/strings/uk.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/uk.json b/src/i18n/strings/uk.json index 62bfe2f1ab..4499d6d124 100644 --- a/src/i18n/strings/uk.json +++ b/src/i18n/strings/uk.json @@ -812,7 +812,7 @@ "Submit debug logs": "Надіслати журнал зневадження", "Clear cache and reload": "Очистити кеш та перезавантажити", "To report a Matrix-related security issue, please read the Matrix.org Security Disclosure Policy.": "Щоб повідомити про проблеми безпеки Matrix, будь ласка, прочитайте Політику розкриття інформації Matrix.org.", - "FAQ": "Часті питання", + "FAQ": "ЧаПи", "Keyboard Shortcuts": "Гарячі клавіші", "Versions": "Версії", "%(brand)s version:": "версія %(brand)s:", From b142d72e972e39db467528ea440cb81d423fb81d Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Wed, 26 Aug 2020 11:52:28 +0100 Subject: [PATCH 360/424] Upgrade matrix-js-sdk to 8.2.0-rc.1 --- package.json | 2 +- yarn.lock | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index ab71f68b08..fc24a79b48 100644 --- a/package.json +++ b/package.json @@ -79,7 +79,7 @@ "is-ip": "^2.0.0", "linkifyjs": "^2.1.9", "lodash": "^4.17.19", - "matrix-js-sdk": "github:matrix-org/matrix-js-sdk#develop", + "matrix-js-sdk": "8.2.0-rc.1", "minimist": "^1.2.5", "pako": "^1.0.11", "parse5": "^5.1.1", diff --git a/yarn.lock b/yarn.lock index 9ee9374945..12c29e98a7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6475,9 +6475,10 @@ mathml-tag-names@^2.0.1: resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3" integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg== -"matrix-js-sdk@github:matrix-org/matrix-js-sdk#develop": - version "8.1.0" - resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/64cdd73b93a475d10284977b69ef73138315b3be" +matrix-js-sdk@8.2.0-rc.1: + version "8.2.0-rc.1" + resolved "https://registry.yarnpkg.com/matrix-js-sdk/-/matrix-js-sdk-8.2.0-rc.1.tgz#1870ab25af7062def4b757ca5da04199df269241" + integrity sha512-vZTZOIoYXTFTO+NgBnP+mJMdwNwlIF8GQPeqra+esyoKcas7jVumAwektu3SXhFJPy9vnmufs7zXx4geiNNkpA== dependencies: "@babel/runtime" "^7.8.3" another-json "^0.2.0" From af76a1213d19f41ab8a41398eedec8a17de50f5e Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Wed, 26 Aug 2020 12:02:10 +0100 Subject: [PATCH 361/424] Prepare changelog for v3.3.0-rc.1 --- CHANGELOG.md | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 29cbb040f4..ae9027696c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,66 @@ +Changes in [3.3.0-rc.1](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v3.3.0-rc.1) (2020-08-26) +============================================================================================================= +[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v3.2.0...v3.3.0-rc.1) + + * Upgrade to JS SDK 8.2.0-rc.1 + * Update from Weblate + [\#5146](https://github.com/matrix-org/matrix-react-sdk/pull/5146) + * BaseAvatar avoid initial render with default avatar + [\#5142](https://github.com/matrix-org/matrix-react-sdk/pull/5142) + * Enforce Secure Backup completion when requested by HS + [\#5130](https://github.com/matrix-org/matrix-react-sdk/pull/5130) + * Communities v2 prototype: Explore rooms, global state, and default room + [\#5139](https://github.com/matrix-org/matrix-react-sdk/pull/5139) + * Add communities v2 prototyping feature flag + initial tag panel prototypes + [\#5133](https://github.com/matrix-org/matrix-react-sdk/pull/5133) + * Remove some unused components + [\#5134](https://github.com/matrix-org/matrix-react-sdk/pull/5134) + * Allow avatar image view for 1:1 rooms + [\#5137](https://github.com/matrix-org/matrix-react-sdk/pull/5137) + * Send mx_local_settings in rageshake + [\#5136](https://github.com/matrix-org/matrix-react-sdk/pull/5136) + * Run all room leaving behaviour through a single function + [\#5132](https://github.com/matrix-org/matrix-react-sdk/pull/5132) + * Add clarifying comment in media device selection + [\#5131](https://github.com/matrix-org/matrix-react-sdk/pull/5131) + * Settings v3: Feature flag changes + [\#5124](https://github.com/matrix-org/matrix-react-sdk/pull/5124) + * Clear url previews if they all get edited out of the event + [\#5129](https://github.com/matrix-org/matrix-react-sdk/pull/5129) + * Consider tab completions as modifications for editing purposes to unlock + sending + [\#5128](https://github.com/matrix-org/matrix-react-sdk/pull/5128) + * Use matrix-doc for SAS emoji translations + [\#5125](https://github.com/matrix-org/matrix-react-sdk/pull/5125) + * Add a rageshake function to download the logs locally + [\#3849](https://github.com/matrix-org/matrix-react-sdk/pull/3849) + * Room List filtering visual tweaks + [\#5123](https://github.com/matrix-org/matrix-react-sdk/pull/5123) + * Make reply preview not an overlay so you can see new messages + [\#5072](https://github.com/matrix-org/matrix-react-sdk/pull/5072) + * Allow room tile context menu when minimized using right click + [\#5113](https://github.com/matrix-org/matrix-react-sdk/pull/5113) + * Add null guard to group inviter for corrupted groups + [\#5121](https://github.com/matrix-org/matrix-react-sdk/pull/5121) + * Room List styling tweaks + [\#5118](https://github.com/matrix-org/matrix-react-sdk/pull/5118) + * Fix corner rounding on images not always affecting right side + [\#5120](https://github.com/matrix-org/matrix-react-sdk/pull/5120) + * Change add room action for rooms to context menu + [\#5108](https://github.com/matrix-org/matrix-react-sdk/pull/5108) + * Switch out the globe icon and colour it depending on theme + [\#5106](https://github.com/matrix-org/matrix-react-sdk/pull/5106) + * Message Action Bar watch for event send changes + [\#5115](https://github.com/matrix-org/matrix-react-sdk/pull/5115) + * Put message previews for Emoji behind Labs + [\#5110](https://github.com/matrix-org/matrix-react-sdk/pull/5110) + * Fix styling for selected community marker + [\#5107](https://github.com/matrix-org/matrix-react-sdk/pull/5107) + * Fix action bar safe area regression + [\#5111](https://github.com/matrix-org/matrix-react-sdk/pull/5111) + * Fix /op slash command + [\#5109](https://github.com/matrix-org/matrix-react-sdk/pull/5109) + Changes in [3.2.0](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v3.2.0) (2020-08-17) =================================================================================================== [Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v3.2.0-rc.1...v3.2.0) From d0358ab19640a3c369e3dd72e1be40bbc6fe2d8c Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Wed, 26 Aug 2020 12:02:11 +0100 Subject: [PATCH 362/424] v3.3.0-rc.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index fc24a79b48..b59c32f121 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "matrix-react-sdk", - "version": "3.2.0", + "version": "3.3.0-rc.1", "description": "SDK for matrix.org using React", "author": "matrix.org", "repository": { From 0c67a42b0f16283bb7354b5868246240d308feeb Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Wed, 26 Aug 2020 08:42:26 -0600 Subject: [PATCH 363/424] Make padding only on the prototype tag panel --- res/css/structures/_TagPanel.scss | 4 ++++ src/components/views/elements/TagTile.js | 1 + src/components/views/elements/UserTagTile.tsx | 1 + 3 files changed, 6 insertions(+) diff --git a/res/css/structures/_TagPanel.scss b/res/css/structures/_TagPanel.scss index e7f67c8ace..2683a32dae 100644 --- a/res/css/structures/_TagPanel.scss +++ b/res/css/structures/_TagPanel.scss @@ -75,8 +75,12 @@ limitations under the License. .mx_TagPanel .mx_TagTile { // opacity: 0.5; position: relative; +} + +.mx_TagPanel .mx_TagTile.mx_TagTile_prototype { padding: 3px; } + .mx_TagPanel .mx_TagTile:focus, .mx_TagPanel .mx_TagTile:hover, .mx_TagPanel .mx_TagTile.mx_TagTile_selected { diff --git a/src/components/views/elements/TagTile.js b/src/components/views/elements/TagTile.js index 562a478976..db5eedc274 100644 --- a/src/components/views/elements/TagTile.js +++ b/src/components/views/elements/TagTile.js @@ -144,6 +144,7 @@ export default createReactClass({ const isPrototype = SettingsStore.getValue("feature_communities_v2_prototypes"); const className = classNames({ mx_TagTile: true, + mx_TagTile_prototype: isPrototype, mx_TagTile_selected: this.props.selected && !isPrototype, mx_TagTile_selected_prototype: this.props.selected && isPrototype, }); diff --git a/src/components/views/elements/UserTagTile.tsx b/src/components/views/elements/UserTagTile.tsx index 635c537324..912f54edc7 100644 --- a/src/components/views/elements/UserTagTile.tsx +++ b/src/components/views/elements/UserTagTile.tsx @@ -66,6 +66,7 @@ export default class UserTagTile extends React.PureComponent { // TagTile instead if we continue to use this component. const className = classNames({ mx_TagTile: true, + mx_TagTile_prototype: true, mx_TagTile_selected_prototype: this.state.selected, mx_TagTile_home: true, }); From 3e7d82b42137febf3961a87d9df3e3def3ee9760 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Wed, 26 Aug 2020 08:48:01 -0600 Subject: [PATCH 364/424] Change tip copy --- src/components/views/dialogs/PrototypeCreateGroupDialog.tsx | 2 +- src/i18n/strings/en_EN.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/views/dialogs/PrototypeCreateGroupDialog.tsx b/src/components/views/dialogs/PrototypeCreateGroupDialog.tsx index 8978b9cf0d..d37301b573 100644 --- a/src/components/views/dialogs/PrototypeCreateGroupDialog.tsx +++ b/src/components/views/dialogs/PrototypeCreateGroupDialog.tsx @@ -206,7 +206,7 @@ export default class PrototypeCreateGroupDialog extends React.PureComponent
- {_t("PRO TIP")} + {_t("Add image (optional)")} {_t("An image will help people identify your community.")} diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index b42a5fadd3..c24a5537a3 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -1744,7 +1744,7 @@ "You can change this later if needed.": "You can change this later if needed.", "What's the name of your community or team?": "What's the name of your community or team?", "Enter name": "Enter name", - "PRO TIP": "PRO TIP", + "Add image (optional)": "Add image (optional)", "An image will help people identify your community.": "An image will help people identify your community.", "If you run into any bugs or have feedback you'd like to share, please let us know on GitHub.": "If you run into any bugs or have feedback you'd like to share, please let us know on GitHub.", "To help avoid duplicate issues, please view existing issues first (and add a +1) or create a new issue if you can't find it.": "To help avoid duplicate issues, please view existing issues first (and add a +1) or create a new issue if you can't find it.", From 82b015bd5f84b2c8ecaee14d572c6f1b8a3b7657 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Wed, 26 Aug 2020 08:50:32 -0600 Subject: [PATCH 365/424] Rename components to match prior convention --- res/css/_components.scss | 4 +-- ...s => _CommunityPrototypeInviteDialog.scss} | 16 ++++----- ...s => _CreateCommunityPrototypeDialog.scss} | 22 ++++++------ src/RoomInvite.js | 4 +-- src/components/structures/MatrixChat.tsx | 4 +-- ...tsx => CommunityPrototypeInviteDialog.tsx} | 18 +++++----- ...tsx => CreateCommunityPrototypeDialog.tsx} | 24 ++++++------- src/i18n/strings/en_EN.json | 36 +++++++++---------- 8 files changed, 64 insertions(+), 64 deletions(-) rename res/css/views/dialogs/{_PrototypeCommunityInviteDialog.scss => _CommunityPrototypeInviteDialog.scss} (82%) rename res/css/views/dialogs/{_PrototypeCreateGroupDialog.scss => _CreateCommunityPrototypeDialog.scss} (79%) rename src/components/views/dialogs/{PrototypeCommunityInviteDialog.tsx => CommunityPrototypeInviteDialog.tsx} (94%) rename src/components/views/dialogs/{PrototypeCreateGroupDialog.tsx => CreateCommunityPrototypeDialog.tsx} (88%) diff --git a/res/css/_components.scss b/res/css/_components.scss index 88fbbb5c3e..24d2ffa2b0 100644 --- a/res/css/_components.scss +++ b/res/css/_components.scss @@ -61,7 +61,9 @@ @import "./views/dialogs/_BugReportDialog.scss"; @import "./views/dialogs/_ChangelogDialog.scss"; @import "./views/dialogs/_ChatCreateOrReuseChatDialog.scss"; +@import "./views/dialogs/_CommunityPrototypeInviteDialog.scss"; @import "./views/dialogs/_ConfirmUserActionDialog.scss"; +@import "./views/dialogs/_CreateCommunityPrototypeDialog.scss"; @import "./views/dialogs/_CreateGroupDialog.scss"; @import "./views/dialogs/_CreateRoomDialog.scss"; @import "./views/dialogs/_DeactivateAccountDialog.scss"; @@ -72,8 +74,6 @@ @import "./views/dialogs/_KeyboardShortcutsDialog.scss"; @import "./views/dialogs/_MessageEditHistoryDialog.scss"; @import "./views/dialogs/_NewSessionReviewDialog.scss"; -@import "./views/dialogs/_PrototypeCommunityInviteDialog.scss"; -@import "./views/dialogs/_PrototypeCreateGroupDialog.scss"; @import "./views/dialogs/_RoomSettingsDialog.scss"; @import "./views/dialogs/_RoomSettingsDialogBridges.scss"; @import "./views/dialogs/_RoomUpgradeDialog.scss"; diff --git a/res/css/views/dialogs/_PrototypeCommunityInviteDialog.scss b/res/css/views/dialogs/_CommunityPrototypeInviteDialog.scss similarity index 82% rename from res/css/views/dialogs/_PrototypeCommunityInviteDialog.scss rename to res/css/views/dialogs/_CommunityPrototypeInviteDialog.scss index 8d2ff598d8..beae03f00f 100644 --- a/res/css/views/dialogs/_PrototypeCommunityInviteDialog.scss +++ b/res/css/views/dialogs/_CommunityPrototypeInviteDialog.scss @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -.mx_PrototypeCommunityInviteDialog { +.mx_CommunityPrototypeInviteDialog { &.mx_Dialog_fixedWidth { width: 360px; } @@ -22,7 +22,7 @@ limitations under the License. .mx_Dialog_content { margin-bottom: 0; - .mx_PrototypeCommunityInviteDialog_people { + .mx_CommunityPrototypeInviteDialog_people { position: relative; margin-bottom: 4px; @@ -36,11 +36,11 @@ limitations under the License. } } - .mx_PrototypeCommunityInviteDialog_morePeople { + .mx_CommunityPrototypeInviteDialog_morePeople { margin-top: 8px; } - .mx_PrototypeCommunityInviteDialog_person { + .mx_CommunityPrototypeInviteDialog_person { position: relative; margin-top: 4px; @@ -55,21 +55,21 @@ limitations under the License. width: 16px; // to force a square } - .mx_PrototypeCommunityInviteDialog_personIdentifiers { + .mx_CommunityPrototypeInviteDialog_personIdentifiers { display: inline-block; & > * { display: block; } - .mx_PrototypeCommunityInviteDialog_personName { + .mx_CommunityPrototypeInviteDialog_personName { font-weight: 600; font-size: $font-14px; color: $primary-fg-color; margin-left: 7px; } - .mx_PrototypeCommunityInviteDialog_personId { + .mx_CommunityPrototypeInviteDialog_personId { font-size: $font-12px; color: $muted-fg-color; margin-left: 7px; @@ -77,7 +77,7 @@ limitations under the License. } } - .mx_PrototypeCommunityInviteDialog_primaryButton { + .mx_CommunityPrototypeInviteDialog_primaryButton { display: block; font-size: $font-13px; line-height: 20px; diff --git a/res/css/views/dialogs/_PrototypeCreateGroupDialog.scss b/res/css/views/dialogs/_CreateCommunityPrototypeDialog.scss similarity index 79% rename from res/css/views/dialogs/_PrototypeCreateGroupDialog.scss rename to res/css/views/dialogs/_CreateCommunityPrototypeDialog.scss index 3235575a88..81babc4c38 100644 --- a/res/css/views/dialogs/_PrototypeCreateGroupDialog.scss +++ b/res/css/views/dialogs/_CreateCommunityPrototypeDialog.scss @@ -14,13 +14,13 @@ See the License for the specific language governing permissions and limitations under the License. */ -.mx_PrototypeCreateGroupDialog { +.mx_CreateCommunityPrototypeDialog { .mx_Dialog_content { display: flex; flex-direction: row; margin-bottom: 12px; - .mx_PrototypeCreateGroupDialog_colName { + .mx_CreateCommunityPrototypeDialog_colName { flex-basis: 66.66%; padding-right: 100px; @@ -29,7 +29,7 @@ limitations under the License. line-height: $font-20px; } - .mx_PrototypeCreateGroupDialog_subtext { + .mx_CreateCommunityPrototypeDialog_subtext { display: block; color: $muted-fg-color; margin-bottom: 16px; @@ -38,12 +38,12 @@ limitations under the License. margin-top: 16px; } - &.mx_PrototypeCreateGroupDialog_subtext_error { + &.mx_CreateCommunityPrototypeDialog_subtext_error { color: $warning-color; } } - .mx_PrototypeCreateGroupDialog_communityId { + .mx_CreateCommunityPrototypeDialog_communityId { position: relative; .mx_InfoTooltip { @@ -59,21 +59,21 @@ limitations under the License. } } - .mx_PrototypeCreateGroupDialog_colAvatar { + .mx_CreateCommunityPrototypeDialog_colAvatar { flex-basis: 33.33%; - .mx_PrototypeCreateGroupDialog_avatarContainer { + .mx_CreateCommunityPrototypeDialog_avatarContainer { margin-top: 12px; margin-bottom: 20px; - .mx_PrototypeCreateGroupDialog_avatar, - .mx_PrototypeCreateGroupDialog_placeholderAvatar { + .mx_CreateCommunityPrototypeDialog_avatar, + .mx_CreateCommunityPrototypeDialog_placeholderAvatar { width: 96px; height: 96px; border-radius: 96px; } - .mx_PrototypeCreateGroupDialog_placeholderAvatar { + .mx_CreateCommunityPrototypeDialog_placeholderAvatar { background-color: #368bd6; // hardcoded for both themes &::before { @@ -91,7 +91,7 @@ limitations under the License. } } - .mx_PrototypeCreateGroupDialog_tip { + .mx_CreateCommunityPrototypeDialog_tip { & > b, & > span { display: block; color: $muted-fg-color; diff --git a/src/RoomInvite.js b/src/RoomInvite.js index 3347a8288d..420561ea41 100644 --- a/src/RoomInvite.js +++ b/src/RoomInvite.js @@ -23,7 +23,7 @@ import Modal from './Modal'; import * as sdk from './'; import { _t } from './languageHandler'; import {KIND_DM, KIND_INVITE} from "./components/views/dialogs/InviteDialog"; -import PrototypeCommunityInviteDialog from "./components/views/dialogs/PrototypeCommunityInviteDialog"; +import CommunityPrototypeInviteDialog from "./components/views/dialogs/CommunityPrototypeInviteDialog"; /** * Invites multiple addresses to a room @@ -59,7 +59,7 @@ export function showRoomInviteDialog(roomId) { export function showCommunityRoomInviteDialog(roomId, communityName) { Modal.createTrackedDialog( - 'Invite Users to Community', '', PrototypeCommunityInviteDialog, {communityName, roomId}, + 'Invite Users to Community', '', CommunityPrototypeInviteDialog, {communityName, roomId}, /*className=*/null, /*isPriority=*/false, /*isStatic=*/true, ); } diff --git a/src/components/structures/MatrixChat.tsx b/src/components/structures/MatrixChat.tsx index 2b764d00c9..9d51062b7d 100644 --- a/src/components/structures/MatrixChat.tsx +++ b/src/components/structures/MatrixChat.tsx @@ -77,7 +77,7 @@ import ErrorDialog from "../views/dialogs/ErrorDialog"; import { RoomNotificationStateStore } from "../../stores/notifications/RoomNotificationStateStore"; import { SettingLevel } from "../../settings/SettingLevel"; import { leaveRoomBehaviour } from "../../utils/membership"; -import PrototypeCreateGroupDialog from "../views/dialogs/PrototypeCreateGroupDialog"; +import CreateCommunityPrototypeDialog from "../views/dialogs/CreateCommunityPrototypeDialog"; /** constants for MatrixChat.state.view */ export enum Views { @@ -623,7 +623,7 @@ export default class MatrixChat extends React.PureComponent { case 'view_create_group': { let CreateGroupDialog = sdk.getComponent("dialogs.CreateGroupDialog") if (SettingsStore.getValue("feature_communities_v2_prototypes")) { - CreateGroupDialog = PrototypeCreateGroupDialog; + CreateGroupDialog = CreateCommunityPrototypeDialog; } Modal.createTrackedDialog('Create Community', '', CreateGroupDialog); break; diff --git a/src/components/views/dialogs/PrototypeCommunityInviteDialog.tsx b/src/components/views/dialogs/CommunityPrototypeInviteDialog.tsx similarity index 94% rename from src/components/views/dialogs/PrototypeCommunityInviteDialog.tsx rename to src/components/views/dialogs/CommunityPrototypeInviteDialog.tsx index 08d3f0208a..7a500cd053 100644 --- a/src/components/views/dialogs/PrototypeCommunityInviteDialog.tsx +++ b/src/components/views/dialogs/CommunityPrototypeInviteDialog.tsx @@ -56,7 +56,7 @@ interface IState { busy: boolean; } -export default class PrototypeCommunityInviteDialog extends React.PureComponent { +export default class CommunityPrototypeInviteDialog extends React.PureComponent { constructor(props: IProps) { super(props); @@ -145,7 +145,7 @@ export default class PrototypeCommunityInviteDialog extends React.PureComponent< private renderPerson(person: IPerson, key: any) { const avatarSize = 36; return ( -
+
-
- {person.user.name} - {person.userId} +
+ {person.user.name} + {person.userId}
this.setPersonToggle(person, e.target.checked)} />
@@ -206,14 +206,14 @@ export default class PrototypeCommunityInviteDialog extends React.PureComponent< {_t("Show more")} ); } } if (this.state.people.length > 0) { peopleIntro = ( -
+
{_t("People you know on %(brand)s", {brand: SdkConfig.get().brand})} {this.state.showPeople ? _t("Hide") : _t("Show")} @@ -230,7 +230,7 @@ export default class PrototypeCommunityInviteDialog extends React.PureComponent< return ( @@ -242,7 +242,7 @@ export default class PrototypeCommunityInviteDialog extends React.PureComponent< {buttonText}
diff --git a/src/components/views/dialogs/PrototypeCreateGroupDialog.tsx b/src/components/views/dialogs/CreateCommunityPrototypeDialog.tsx similarity index 88% rename from src/components/views/dialogs/PrototypeCreateGroupDialog.tsx rename to src/components/views/dialogs/CreateCommunityPrototypeDialog.tsx index d37301b573..5f8321fd7d 100644 --- a/src/components/views/dialogs/PrototypeCreateGroupDialog.tsx +++ b/src/components/views/dialogs/CreateCommunityPrototypeDialog.tsx @@ -37,7 +37,7 @@ interface IState { avatarPreview: string; } -export default class PrototypeCreateGroupDialog extends React.PureComponent { +export default class CreateCommunityPrototypeDialog extends React.PureComponent { private avatarUploadRef: React.RefObject = React.createRef(); constructor(props: IProps) { @@ -138,7 +138,7 @@ export default class PrototypeCreateGroupDialog extends React.PureComponent + {_t("Community ID: +:%(domain)s", { domain: MatrixClientPeg.getHomeserverName(), }, { @@ -155,32 +155,32 @@ export default class PrototypeCreateGroupDialog extends React.PureComponent + {_t("You can change this later if needed.")} ); if (this.state.error) { helpText = ( - + {this.state.error} ); } - let preview = ; + let preview = ; if (!this.state.avatarPreview) { - preview =
+ preview =
} return (
-
+
{helpText} - + {/*nbsp is to reserve the height of this element when there's nothing*/}  {communityId} @@ -196,16 +196,16 @@ export default class PrototypeCreateGroupDialog extends React.PureComponent
-
+
- + {preview} -
+
{_t("Add image (optional)")} {_t("An image will help people identify your community.")} diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index c24a5537a3..f3cd1d80b7 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -1598,6 +1598,15 @@ "Unable to load commit detail: %(msg)s": "Unable to load commit detail: %(msg)s", "Unavailable": "Unavailable", "Changelog": "Changelog", + "Email address": "Email address", + "Add another email": "Add another email", + "People you know on %(brand)s": "People you know on %(brand)s", + "Hide": "Hide", + "Show": "Show", + "Skip": "Skip", + "Send %(count)s invites|other": "Send %(count)s invites", + "Send %(count)s invites|one": "Send %(count)s invite", + "Invite people to join %(communityName)s": "Invite people to join %(communityName)s", "You cannot delete this message. (%(code)s)": "You cannot delete this message. (%(code)s)", "Removing…": "Removing…", "Destroy cross-signing keys?": "Destroy cross-signing keys?", @@ -1608,6 +1617,15 @@ "Clear all data in this session?": "Clear all data in this session?", "Clearing all data from this session is permanent. Encrypted messages will be lost unless their keys have been backed up.": "Clearing all data from this session is permanent. Encrypted messages will be lost unless their keys have been backed up.", "Clear all data": "Clear all data", + "There was an error creating your community. The name may be taken or the server is unable to process your request.": "There was an error creating your community. The name may be taken or the server is unable to process your request.", + "Community ID: +:%(domain)s": "Community ID: +:%(domain)s", + "Use this when referencing your community to others. The community ID cannot be changed.": "Use this when referencing your community to others. The community ID cannot be changed.", + "You can change this later if needed.": "You can change this later if needed.", + "What's the name of your community or team?": "What's the name of your community or team?", + "Enter name": "Enter name", + "Create": "Create", + "Add image (optional)": "Add image (optional)", + "An image will help people identify your community.": "An image will help people identify your community.", "Community IDs cannot be empty.": "Community IDs cannot be empty.", "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "Community IDs may only contain characters a-z, 0-9, or '=_-./'", "Something went wrong whilst creating your community": "Something went wrong whilst creating your community", @@ -1616,7 +1634,6 @@ "Example": "Example", "Community ID": "Community ID", "example": "example", - "Create": "Create", "Please enter a name for the room": "Please enter a name for the room", "Set a room address to easily share your room with other people.": "Set a room address to easily share your room with other people.", "This room is private, and can only be joined by invitation.": "This room is private, and can only be joined by invitation.", @@ -1729,23 +1746,6 @@ "Use this session to verify your new one, granting it access to encrypted messages:": "Use this session to verify your new one, granting it access to encrypted messages:", "If you didn’t sign in to this session, your account may be compromised.": "If you didn’t sign in to this session, your account may be compromised.", "This wasn't me": "This wasn't me", - "Email address": "Email address", - "Add another email": "Add another email", - "People you know on %(brand)s": "People you know on %(brand)s", - "Hide": "Hide", - "Show": "Show", - "Skip": "Skip", - "Send %(count)s invites|other": "Send %(count)s invites", - "Send %(count)s invites|one": "Send %(count)s invite", - "Invite people to join %(communityName)s": "Invite people to join %(communityName)s", - "There was an error creating your community. The name may be taken or the server is unable to process your request.": "There was an error creating your community. The name may be taken or the server is unable to process your request.", - "Community ID: +:%(domain)s": "Community ID: +:%(domain)s", - "Use this when referencing your community to others. The community ID cannot be changed.": "Use this when referencing your community to others. The community ID cannot be changed.", - "You can change this later if needed.": "You can change this later if needed.", - "What's the name of your community or team?": "What's the name of your community or team?", - "Enter name": "Enter name", - "Add image (optional)": "Add image (optional)", - "An image will help people identify your community.": "An image will help people identify your community.", "If you run into any bugs or have feedback you'd like to share, please let us know on GitHub.": "If you run into any bugs or have feedback you'd like to share, please let us know on GitHub.", "To help avoid duplicate issues, please view existing issues first (and add a +1) or create a new issue if you can't find it.": "To help avoid duplicate issues, please view existing issues first (and add a +1) or create a new issue if you can't find it.", "Report bugs & give feedback": "Report bugs & give feedback", From fd71bca7c0af97ab496a3d320900498256af0dc4 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Wed, 26 Aug 2020 10:33:05 -0600 Subject: [PATCH 366/424] Change menu label if in a community --- src/components/views/rooms/RoomList.tsx | 5 ++++- src/i18n/strings/en_EN.json | 1 + src/stores/TagOrderStore.js | 7 +++++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/components/views/rooms/RoomList.tsx b/src/components/views/rooms/RoomList.tsx index 3274e0e49f..92c5982276 100644 --- a/src/components/views/rooms/RoomList.tsx +++ b/src/components/views/rooms/RoomList.tsx @@ -45,6 +45,7 @@ import { arrayFastClone, arrayHasDiff } from "../../../utils/arrays"; import { objectShallowClone, objectWithOnly } from "../../../utils/objects"; import { IconizedContextMenuOption, IconizedContextMenuOptionList } from "../context_menus/IconizedContextMenu"; import AccessibleButton from "../elements/AccessibleButton"; +import TagOrderStore from "../../../stores/TagOrderStore"; interface IProps { onKeyDown: (ev: React.KeyboardEvent) => void; @@ -129,7 +130,9 @@ const TAG_AESTHETICS: { }} /> { e.preventDefault(); diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index d6ba736a76..da4e298f0f 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -1121,6 +1121,7 @@ "Rooms": "Rooms", "Add room": "Add room", "Create new room": "Create new room", + "Explore community rooms": "Explore community rooms", "Explore public rooms": "Explore public rooms", "Low priority": "Low priority", "System Alerts": "System Alerts", diff --git a/src/stores/TagOrderStore.js b/src/stores/TagOrderStore.js index f02fce0769..2eb35e6dc2 100644 --- a/src/stores/TagOrderStore.js +++ b/src/stores/TagOrderStore.js @@ -285,6 +285,13 @@ class TagOrderStore extends Store { getSelectedTags() { return this._state.selectedTags; } + + getSelectedPrototypeTag() { + if (SettingsStore.getValue("feature_communities_v2_prototypes")) { + return this.getSelectedTags()[0]; + } + return null; // no selection as far as this function is concerned + } } if (global.singletonTagOrderStore === undefined) { From c28134eb11bb3f1fab540c83cf9a512d1209f3e0 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Wed, 26 Aug 2020 10:53:06 -0600 Subject: [PATCH 367/424] Associate created rooms with the selected community --- src/components/views/dialogs/CreateRoomDialog.js | 13 ++++++++++++- src/createRoom.ts | 6 ++++++ src/i18n/strings/en_EN.json | 1 + 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/components/views/dialogs/CreateRoomDialog.js b/src/components/views/dialogs/CreateRoomDialog.js index ce7ac6e59c..9726c44fac 100644 --- a/src/components/views/dialogs/CreateRoomDialog.js +++ b/src/components/views/dialogs/CreateRoomDialog.js @@ -25,6 +25,8 @@ import { _t } from '../../../languageHandler'; import {MatrixClientPeg} from '../../../MatrixClientPeg'; import {Key} from "../../../Keyboard"; import {privateShouldBeEncrypted} from "../../../createRoom"; +import TagOrderStore from "../../../stores/TagOrderStore"; +import GroupStore from "../../../stores/GroupStore"; export default createReactClass({ displayName: 'CreateRoomDialog', @@ -70,6 +72,10 @@ export default createReactClass({ opts.encryption = this.state.isEncrypted; } + if (TagOrderStore.getSelectedPrototypeTag()) { + opts.associatedWithCommunity = TagOrderStore.getSelectedPrototypeTag(); + } + return opts; }, @@ -212,7 +218,12 @@ export default createReactClass({ ; } - const title = this.state.isPublic ? _t('Create a public room') : _t('Create a private room'); + let title = this.state.isPublic ? _t('Create a public room') : _t('Create a private room'); + if (TagOrderStore.getSelectedPrototypeTag()) { + const summary = GroupStore.getSummary(TagOrderStore.getSelectedPrototypeTag()); + const name = summary?.profile?.name || TagOrderStore.getSelectedPrototypeTag(); + title = _t("Create a room in %(communityName)s", {communityName: name}); + } return ( { } else { return Promise.resolve(); } + }).then(() => { + if (opts.associatedWithCommunity) { + return GroupStore.addRoomToGroup(opts.associatedWithCommunity, roomId, false); + } }).then(function() { // NB createRoom doesn't block on the client seeing the echo that the // room has been created, so we race here with the client knowing that diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index da4e298f0f..0ec12a4d6a 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -1643,6 +1643,7 @@ "Enable end-to-end encryption": "Enable end-to-end encryption", "Create a public room": "Create a public room", "Create a private room": "Create a private room", + "Create a room in %(communityName)s": "Create a room in %(communityName)s", "Name": "Name", "Topic (optional)": "Topic (optional)", "Make this room public": "Make this room public", From 027f263589a767830120b18b83829d8ca8c42bab Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Wed, 26 Aug 2020 11:01:58 -0600 Subject: [PATCH 368/424] Remove prototype code from CreateGroupDialog The prototype code paths prevent users from ending up here, so we don't need custom code. --- .../views/dialogs/CreateGroupDialog.js | 24 ++++--------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/src/components/views/dialogs/CreateGroupDialog.js b/src/components/views/dialogs/CreateGroupDialog.js index 2b22054947..10285ccee0 100644 --- a/src/components/views/dialogs/CreateGroupDialog.js +++ b/src/components/views/dialogs/CreateGroupDialog.js @@ -83,25 +83,11 @@ export default createReactClass({ localpart: this.state.groupId, profile: profile, }).then((result) => { - if (result.room_id) { - dis.dispatch({ - action: 'view_room', - room_id: result.room_id, - }); - - // Ensure the tag gets selected now that we've created it - dis.dispatch({action: 'deselect_tags'}, true); - dis.dispatch({ - action: 'select_tag', - tag: result.group_id, - }); - } else { - dis.dispatch({ - action: 'view_group', - group_id: result.group_id, - group_is_new: true, - }); - } + dis.dispatch({ + action: 'view_group', + group_id: result.group_id, + group_is_new: true, + }); this.props.onFinished(true); }).catch((e) => { this.setState({createError: e}); From 4f29770adb8880e451067d58574b6d1f06e02de1 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Wed, 26 Aug 2020 11:02:14 -0600 Subject: [PATCH 369/424] Force the GroupStore to update after creating a prototype community --- .../views/dialogs/CreateCommunityPrototypeDialog.tsx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/components/views/dialogs/CreateCommunityPrototypeDialog.tsx b/src/components/views/dialogs/CreateCommunityPrototypeDialog.tsx index 5f8321fd7d..58412c23d6 100644 --- a/src/components/views/dialogs/CreateCommunityPrototypeDialog.tsx +++ b/src/components/views/dialogs/CreateCommunityPrototypeDialog.tsx @@ -24,6 +24,7 @@ import { MatrixClientPeg } from "../../../MatrixClientPeg"; import InfoTooltip from "../elements/InfoTooltip"; import dis from "../../../dispatcher/dispatcher"; import {showCommunityRoomInviteDialog} from "../../../RoomInvite"; +import GroupStore from "../../../stores/GroupStore"; interface IProps extends IDialogProps { } @@ -92,6 +93,8 @@ export default class CreateCommunityPrototypeDialog extends React.PureComponent< this.props.onFinished(true); if (result.room_id) { + // Force the group store to update as it might have missed the general chat + await GroupStore.refreshGroupRooms(result.group_id); dis.dispatch({ action: 'view_room', room_id: result.room_id, From 2c20afc04729f157698a51471d47e4b1edd66fff Mon Sep 17 00:00:00 2001 From: resynth1943 Date: Wed, 26 Aug 2020 23:04:56 +0100 Subject: [PATCH 370/424] Fix lodash imports Signed-off-by: resynth1943 --- src/Markdown.js | 2 +- src/SendHistoryManager.js | 2 +- src/autocomplete/CommunityProvider.tsx | 2 +- src/autocomplete/RoomProvider.tsx | 3 ++- src/components/structures/RoomSearch.tsx | 1 - src/components/structures/SearchBox.js | 2 +- .../views/dialogs/secretstorage/AccessSecretStorageDialog.js | 2 +- src/components/views/elements/Field.tsx | 2 +- src/components/views/rooms/Autocomplete.tsx | 2 +- src/emojipicker/recent.ts | 2 +- src/ratelimitedfunc.js | 2 +- src/stores/CustomRoomTagStore.js | 2 +- src/stores/OwnProfileStore.ts | 2 +- src/stores/room-list/filters/NameFilterCondition.ts | 2 +- src/utils/DMRoomMap.js | 2 +- src/utils/ResizeNotifier.js | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/Markdown.js b/src/Markdown.js index e57507b4de..7a573996c3 100644 --- a/src/Markdown.js +++ b/src/Markdown.js @@ -15,7 +15,7 @@ limitations under the License. */ import commonmark from 'commonmark'; -import escape from 'lodash/escape'; +import escape from "lodash/escape"; const ALLOWED_HTML_TAGS = ['sub', 'sup', 'del', 'u']; diff --git a/src/SendHistoryManager.js b/src/SendHistoryManager.js index 794a58ad6f..d38227ae76 100644 --- a/src/SendHistoryManager.js +++ b/src/SendHistoryManager.js @@ -15,7 +15,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -import _clamp from 'lodash/clamp'; +import _clamp from "lodash/clamp"; export default class SendHistoryManager { history: Array = []; diff --git a/src/autocomplete/CommunityProvider.tsx b/src/autocomplete/CommunityProvider.tsx index f34fee890e..e2baa29026 100644 --- a/src/autocomplete/CommunityProvider.tsx +++ b/src/autocomplete/CommunityProvider.tsx @@ -23,7 +23,7 @@ import {MatrixClientPeg} from '../MatrixClientPeg'; import QueryMatcher from './QueryMatcher'; import {PillCompletion} from './Components'; import * as sdk from '../index'; -import _sortBy from 'lodash/sortBy'; +import _sortBy from "lodash/sortBy"; import {makeGroupPermalink} from "../utils/permalinks/Permalinks"; import {ICompletion, ISelectionRange} from "./Autocompleter"; import FlairStore from "../stores/FlairStore"; diff --git a/src/autocomplete/RoomProvider.tsx b/src/autocomplete/RoomProvider.tsx index b18b2d132c..30a322d6b1 100644 --- a/src/autocomplete/RoomProvider.tsx +++ b/src/autocomplete/RoomProvider.tsx @@ -27,7 +27,8 @@ import {PillCompletion} from './Components'; import * as sdk from '../index'; import {makeRoomPermalink} from "../utils/permalinks/Permalinks"; import {ICompletion, ISelectionRange} from "./Autocompleter"; -import { uniqBy, sortBy } from 'lodash'; +import uniqBy from "lodash/uniqBy"; +import sortBy from "lodash/sortBy"; const ROOM_REGEX = /\B#\S*/g; diff --git a/src/components/structures/RoomSearch.tsx b/src/components/structures/RoomSearch.tsx index f6b8d42c30..fc8b7a3a12 100644 --- a/src/components/structures/RoomSearch.tsx +++ b/src/components/structures/RoomSearch.tsx @@ -20,7 +20,6 @@ import classNames from "classnames"; import defaultDispatcher from "../../dispatcher/dispatcher"; import { _t } from "../../languageHandler"; import { ActionPayload } from "../../dispatcher/payloads"; -import { throttle } from 'lodash'; import { Key } from "../../Keyboard"; import AccessibleButton from "../views/elements/AccessibleButton"; import { Action } from "../../dispatcher/actions"; diff --git a/src/components/structures/SearchBox.js b/src/components/structures/SearchBox.js index 7e9d290bce..ef0ee38ce6 100644 --- a/src/components/structures/SearchBox.js +++ b/src/components/structures/SearchBox.js @@ -20,7 +20,7 @@ import createReactClass from 'create-react-class'; import PropTypes from 'prop-types'; import { Key } from '../../Keyboard'; import dis from '../../dispatcher/dispatcher'; -import { throttle } from 'lodash'; +import throttle from 'lodash/throttle'; import AccessibleButton from '../../components/views/elements/AccessibleButton'; import classNames from 'classnames'; diff --git a/src/components/views/dialogs/secretstorage/AccessSecretStorageDialog.js b/src/components/views/dialogs/secretstorage/AccessSecretStorageDialog.js index 5c01a6907f..2d556aa597 100644 --- a/src/components/views/dialogs/secretstorage/AccessSecretStorageDialog.js +++ b/src/components/views/dialogs/secretstorage/AccessSecretStorageDialog.js @@ -15,7 +15,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -import { debounce } from 'lodash'; +import debounce from "lodash/debounce"; import classNames from 'classnames'; import React from 'react'; import PropTypes from "prop-types"; diff --git a/src/components/views/elements/Field.tsx b/src/components/views/elements/Field.tsx index d9fd59dc11..935d452aaa 100644 --- a/src/components/views/elements/Field.tsx +++ b/src/components/views/elements/Field.tsx @@ -17,7 +17,7 @@ limitations under the License. import React, {InputHTMLAttributes, SelectHTMLAttributes, TextareaHTMLAttributes} from 'react'; import classNames from 'classnames'; import * as sdk from '../../../index'; -import { debounce } from 'lodash'; +import debounce from "lodash/debounce"; import {IFieldState, IValidationResult} from "./Validation"; // Invoke validation from user input (when typing, etc.) at most once every N ms. diff --git a/src/components/views/rooms/Autocomplete.tsx b/src/components/views/rooms/Autocomplete.tsx index 70f7556550..8fa623bd91 100644 --- a/src/components/views/rooms/Autocomplete.tsx +++ b/src/components/views/rooms/Autocomplete.tsx @@ -17,7 +17,7 @@ limitations under the License. import React, {createRef, KeyboardEvent} from 'react'; import classNames from 'classnames'; -import flatMap from 'lodash/flatMap'; +import flatMap from "lodash/flatMap"; import {ICompletion, ISelectionRange, IProviderCompletions} from '../../../autocomplete/Autocompleter'; import {Room} from 'matrix-js-sdk/src/models/room'; diff --git a/src/emojipicker/recent.ts b/src/emojipicker/recent.ts index d86aad660d..0f005214a3 100644 --- a/src/emojipicker/recent.ts +++ b/src/emojipicker/recent.ts @@ -16,7 +16,7 @@ limitations under the License. */ import SettingsStore from "../settings/SettingsStore"; -import {orderBy} from "lodash"; +import orderBy from "lodash/orderBy"; import { SettingLevel } from "../settings/SettingLevel"; interface ILegacyFormat { diff --git a/src/ratelimitedfunc.js b/src/ratelimitedfunc.js index 1f15f11d91..691671a086 100644 --- a/src/ratelimitedfunc.js +++ b/src/ratelimitedfunc.js @@ -26,7 +26,7 @@ limitations under the License. * on unmount or similar to cancel any pending update. */ -import { throttle } from "lodash"; +import throttle from "lodash/throttle"; export default function ratelimitedfunc(fn, time) { const throttledFn = throttle(fn, time, { diff --git a/src/stores/CustomRoomTagStore.js b/src/stores/CustomRoomTagStore.js index 39177181b4..ceee67c1e1 100644 --- a/src/stores/CustomRoomTagStore.js +++ b/src/stores/CustomRoomTagStore.js @@ -17,7 +17,7 @@ limitations under the License. import dis from '../dispatcher/dispatcher'; import EventEmitter from 'events'; -import {throttle} from "lodash"; +import throttle from "lodash/throttle"; import SettingsStore from "../settings/SettingsStore"; import RoomListStore, {LISTS_UPDATE_EVENT} from "./room-list/RoomListStore"; import {RoomNotificationStateStore} from "./notifications/RoomNotificationStateStore"; diff --git a/src/stores/OwnProfileStore.ts b/src/stores/OwnProfileStore.ts index 1aa761e1c4..af615b07b6 100644 --- a/src/stores/OwnProfileStore.ts +++ b/src/stores/OwnProfileStore.ts @@ -19,7 +19,7 @@ import { AsyncStoreWithClient } from "./AsyncStoreWithClient"; import defaultDispatcher from "../dispatcher/dispatcher"; import { MatrixEvent } from "matrix-js-sdk/src/models/event"; import { User } from "matrix-js-sdk/src/models/user"; -import { throttle } from "lodash"; +import throttle from "lodash/throttle"; import { MatrixClientPeg } from "../MatrixClientPeg"; import { _t } from "../languageHandler"; diff --git a/src/stores/room-list/filters/NameFilterCondition.ts b/src/stores/room-list/filters/NameFilterCondition.ts index 88edaecfb6..13c75f3d4d 100644 --- a/src/stores/room-list/filters/NameFilterCondition.ts +++ b/src/stores/room-list/filters/NameFilterCondition.ts @@ -18,7 +18,7 @@ import { Room } from "matrix-js-sdk/src/models/room"; import { FILTER_CHANGED, FilterPriority, IFilterCondition } from "./IFilterCondition"; import { EventEmitter } from "events"; import { removeHiddenChars } from "matrix-js-sdk/src/utils"; -import { throttle } from "lodash"; +import throttle from "lodash/throttle"; /** * A filter condition for the room list which reveals rooms of a particular diff --git a/src/utils/DMRoomMap.js b/src/utils/DMRoomMap.js index 6ce92a0458..c6ba0d4d83 100644 --- a/src/utils/DMRoomMap.js +++ b/src/utils/DMRoomMap.js @@ -16,7 +16,7 @@ limitations under the License. */ import {MatrixClientPeg} from '../MatrixClientPeg'; -import _uniq from 'lodash/uniq'; +import _uniq from "lodash/uniq"; import {Room} from "matrix-js-sdk/src/matrix"; /** diff --git a/src/utils/ResizeNotifier.js b/src/utils/ResizeNotifier.js index 5467716576..c43e2c8250 100644 --- a/src/utils/ResizeNotifier.js +++ b/src/utils/ResizeNotifier.js @@ -23,7 +23,7 @@ limitations under the License. * @event module:utils~ResizeNotifier#"middlePanelResizedNoisy" */ import { EventEmitter } from "events"; -import { throttle } from "lodash"; +import throttle from "lodash/throttle"; export default class ResizeNotifier extends EventEmitter { constructor() { From 4a807f9385fd3e755b46b897761f77cac1107e63 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Thu, 27 Aug 2020 13:41:03 +0100 Subject: [PATCH 371/424] Migrate to new, separate APIs for cross-signing and secret storage This migrates to the new JS SDK APIs, which now use separate paths for cross-signing and secret storage setup. There should be no functional change here. Part of https://github.com/vector-im/element-web/issues/13895 --- src/CrossSigningManager.js | 6 ++++-- .../dialogs/secretstorage/CreateSecretStorageDialog.js | 9 +++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/CrossSigningManager.js b/src/CrossSigningManager.js index da09a436e9..a7b494dc26 100644 --- a/src/CrossSigningManager.js +++ b/src/CrossSigningManager.js @@ -239,7 +239,7 @@ export async function accessSecretStorage(func = async () => { }, forceReset = f } } else { const InteractiveAuthDialog = sdk.getComponent("dialogs.InteractiveAuthDialog"); - await cli.bootstrapSecretStorage({ + await cli.bootstrapCrossSigning({ authUploadDeviceSigningKeys: async (makeRequest) => { const { finished } = Modal.createTrackedDialog( 'Cross-signing keys dialog', '', InteractiveAuthDialog, @@ -254,7 +254,9 @@ export async function accessSecretStorage(func = async () => { }, forceReset = f throw new Error("Cross-signing key upload auth canceled"); } }, - getBackupPassphrase: promptForBackupPassphrase, + }); + await cli.bootstrapSecretStorage({ + getKeyBackupPassphrase: promptForBackupPassphrase, }); } diff --git a/src/async-components/views/dialogs/secretstorage/CreateSecretStorageDialog.js b/src/async-components/views/dialogs/secretstorage/CreateSecretStorageDialog.js index 47faa35df4..19c0c79448 100644 --- a/src/async-components/views/dialogs/secretstorage/CreateSecretStorageDialog.js +++ b/src/async-components/views/dialogs/secretstorage/CreateSecretStorageDialog.js @@ -282,15 +282,20 @@ export default class CreateSecretStorageDialog extends React.PureComponent { try { if (force) { console.log("Forcing secret storage reset"); // log something so we can debug this later - await cli.bootstrapSecretStorage({ + await cli.bootstrapCrossSigning({ authUploadDeviceSigningKeys: this._doBootstrapUIAuth, + setupNewCrossSigning: true, + }); + await cli.bootstrapSecretStorage({ createSecretStorageKey: async () => this._recoveryKey, setupNewKeyBackup: true, setupNewSecretStorage: true, }); } else { - await cli.bootstrapSecretStorage({ + await cli.bootstrapCrossSigning({ authUploadDeviceSigningKeys: this._doBootstrapUIAuth, + }); + await cli.bootstrapSecretStorage({ createSecretStorageKey: async () => this._recoveryKey, keyBackupInfo: this.state.backupInfo, setupNewKeyBackup: !this.state.backupInfo, From 3a98b4b4e948b9993d8f063049c5338e42fefd21 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Thu, 27 Aug 2020 13:50:50 +0100 Subject: [PATCH 372/424] Rename reset secret storage prop The bare word `force` has bothered me, so this adds a tiny amount more meaning. --- src/CrossSigningManager.js | 2 +- .../secretstorage/CreateSecretStorageDialog.js | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/CrossSigningManager.js b/src/CrossSigningManager.js index a7b494dc26..b15290b9c3 100644 --- a/src/CrossSigningManager.js +++ b/src/CrossSigningManager.js @@ -218,7 +218,7 @@ export async function accessSecretStorage(func = async () => { }, forceReset = f const { finished } = Modal.createTrackedDialogAsync('Create Secret Storage dialog', '', import("./async-components/views/dialogs/secretstorage/CreateSecretStorageDialog"), { - force: forceReset, + forceReset, }, null, /* priority = */ false, diff --git a/src/async-components/views/dialogs/secretstorage/CreateSecretStorageDialog.js b/src/async-components/views/dialogs/secretstorage/CreateSecretStorageDialog.js index 19c0c79448..00216e3765 100644 --- a/src/async-components/views/dialogs/secretstorage/CreateSecretStorageDialog.js +++ b/src/async-components/views/dialogs/secretstorage/CreateSecretStorageDialog.js @@ -56,12 +56,12 @@ export default class CreateSecretStorageDialog extends React.PureComponent { static propTypes = { hasCancel: PropTypes.bool, accountPassword: PropTypes.string, - force: PropTypes.bool, + forceReset: PropTypes.bool, }; static defaultProps = { hasCancel: true, - force: false, + forceReset: false, }; constructor(props) { @@ -118,8 +118,8 @@ export default class CreateSecretStorageDialog extends React.PureComponent { MatrixClientPeg.get().isCryptoEnabled() && await MatrixClientPeg.get().isKeyBackupTrusted(backupInfo) ); - const { force } = this.props; - const phase = (backupInfo && !force) ? PHASE_MIGRATE : PHASE_CHOOSE_KEY_PASSPHRASE; + const { forceReset } = this.props; + const phase = (backupInfo && !forceReset) ? PHASE_MIGRATE : PHASE_CHOOSE_KEY_PASSPHRASE; this.setState({ phase, @@ -277,11 +277,11 @@ export default class CreateSecretStorageDialog extends React.PureComponent { const cli = MatrixClientPeg.get(); - const { force } = this.props; + const { forceReset } = this.props; try { - if (force) { - console.log("Forcing secret storage reset"); // log something so we can debug this later + if (forceReset) { + console.log("Forcing cross-signing and secret storage reset"); await cli.bootstrapCrossSigning({ authUploadDeviceSigningKeys: this._doBootstrapUIAuth, setupNewCrossSigning: true, From 13e9f7b9128b99c11970d4ca76ffd0063b085c02 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Thu, 27 Aug 2020 13:18:52 -0600 Subject: [PATCH 373/424] Update home icon --- res/css/structures/_TagPanel.scss | 13 +++++++------ res/img/element-icons/home.svg | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/res/css/structures/_TagPanel.scss b/res/css/structures/_TagPanel.scss index 2683a32dae..dc27da7102 100644 --- a/res/css/structures/_TagPanel.scss +++ b/res/css/structures/_TagPanel.scss @@ -99,11 +99,11 @@ limitations under the License. } .mx_TagTile:not(.mx_TagTile_selected_prototype) .mx_TagTile_homeIcon { - background-color: $icon-button-color; // XXX: Variable abuse + background-color: $roomheader-addroom-bg-color; border-radius: 48px; &::before { - background-color: $primary-bg-color; // light-on-grey + background-color: $roomheader-addroom-fg-color; } } @@ -116,13 +116,14 @@ limitations under the License. mask-image: url('$(res)/img/element-icons/home.svg'); mask-position: center; mask-repeat: no-repeat; - width: 21px; - height: 21px; + mask-size: 21px; content: ''; display: inline-block; + width: 32px; + height: 32px; position: absolute; - top: calc(50% - 10.5px); - left: calc(50% - 10.5px); + top: calc(50% - 16px); + left: calc(50% - 16px); } } diff --git a/res/img/element-icons/home.svg b/res/img/element-icons/home.svg index d65812cafd..a6c15456ff 100644 --- a/res/img/element-icons/home.svg +++ b/res/img/element-icons/home.svg @@ -1,3 +1,3 @@ - + From be1de1d2952e845542b45c900d0235e2d8039114 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Thu, 27 Aug 2020 13:49:40 -0600 Subject: [PATCH 374/424] Update create room dialog copy --- .../views/dialogs/CreateRoomDialog.js | 38 ++++++++++++++++--- src/i18n/strings/en_EN.json | 8 ++-- 2 files changed, 38 insertions(+), 8 deletions(-) diff --git a/src/components/views/dialogs/CreateRoomDialog.js b/src/components/views/dialogs/CreateRoomDialog.js index 9726c44fac..d334438d58 100644 --- a/src/components/views/dialogs/CreateRoomDialog.js +++ b/src/components/views/dialogs/CreateRoomDialog.js @@ -184,18 +184,25 @@ export default createReactClass({ const LabelledToggleSwitch = sdk.getComponent('views.elements.LabelledToggleSwitch'); const RoomAliasField = sdk.getComponent('views.elements.RoomAliasField'); - let publicPrivateLabel; let aliasField; if (this.state.isPublic) { - publicPrivateLabel = (

{_t("Set a room address to easily share your room with other people.")}

); const domain = MatrixClientPeg.get().getDomain(); aliasField = (
this._aliasFieldRef = ref} onChange={this.onAliasChange} domain={domain} value={this.state.alias} />
); - } else { - publicPrivateLabel = (

{_t("This room is private, and can only be joined by invitation.")}

); + } + + let publicPrivateLabel =

{_t( + "Private rooms can be found and joined by invitation only. Public rooms can be " + + "found and joined by anyone.", + )}

; + if (TagOrderStore.getSelectedPrototypeTag()) { + publicPrivateLabel =

{_t( + "Private rooms can be found and joined by invitation only. Public rooms can be " + + "found and joined by anyone in this community.", + )}

; } let e2eeSection; @@ -218,6 +225,19 @@ export default createReactClass({ ; } + let federateLabel = _t( + "You might enable this if the room will be only be used for collaborating with internal " + + "teams on your homeserver. This setting cannot be changed later.", + ); + if (SdkConfig.get().default_federate === false) { + // We only change the label if the default setting is different to avoid jarring text changes to the + // user. They will have read the implications of turning this off/on, so no need to rephrase for them. + federateLabel = _t( + "You might disable this if the room will be used for collaborating with external " + + "teams who have their own homeserver. This setting cannot be changed later.", + ); + } + let title = this.state.isPublic ? _t('Create a public room') : _t('Create a private room'); if (TagOrderStore.getSelectedPrototypeTag()) { const summary = GroupStore.getSummary(TagOrderStore.getSelectedPrototypeTag()); @@ -238,7 +258,15 @@ export default createReactClass({ { aliasField }
{ this.state.detailsOpen ? _t('Hide advanced') : _t('Show advanced') } - + +

{federateLabel}

diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 0ec12a4d6a..b92af49fad 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -1637,10 +1637,12 @@ "Community ID": "Community ID", "example": "example", "Please enter a name for the room": "Please enter a name for the room", - "Set a room address to easily share your room with other people.": "Set a room address to easily share your room with other people.", - "This room is private, and can only be joined by invitation.": "This room is private, and can only be joined by invitation.", + "Private rooms can be found and joined by invitation only. Public rooms can be found and joined by anyone.": "Private rooms can be found and joined by invitation only. Public rooms can be found and joined by anyone.", + "Private rooms can be found and joined by invitation only. Public rooms can be found and joined by anyone in this community.": "Private rooms can be found and joined by invitation only. Public rooms can be found and joined by anyone in this community.", "You can’t disable this later. Bridges & most bots won’t work yet.": "You can’t disable this later. Bridges & most bots won’t work yet.", "Enable end-to-end encryption": "Enable end-to-end encryption", + "You might enable this if the room will be only be used for collaborating with internal teams on your homeserver. This setting cannot be changed later.": "You might enable this if the room will be only be used for collaborating with internal teams on your homeserver. This setting cannot be changed later.", + "You might disable this if the room will be used for collaborating with external teams who have their own homeserver. This setting cannot be changed later.": "You might disable this if the room will be used for collaborating with external teams who have their own homeserver. This setting cannot be changed later.", "Create a public room": "Create a public room", "Create a private room": "Create a private room", "Create a room in %(communityName)s": "Create a room in %(communityName)s", @@ -1649,7 +1651,7 @@ "Make this room public": "Make this room public", "Hide advanced": "Hide advanced", "Show advanced": "Show advanced", - "Block users on other matrix homeservers from joining this room (This setting cannot be changed later!)": "Block users on other matrix homeservers from joining this room (This setting cannot be changed later!)", + "Block anyone not part of %(serverName)s from ever joining this room.": "Block anyone not part of %(serverName)s from ever joining this room.", "Create Room": "Create Room", "Sign out": "Sign out", "To avoid losing your chat history, you must export your room keys before logging out. You will need to go back to the newer version of %(brand)s to do this": "To avoid losing your chat history, you must export your room keys before logging out. You will need to go back to the newer version of %(brand)s to do this", From bbd343f414fec4cd1035d053c49556cf048175a3 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Thu, 27 Aug 2020 14:17:55 -0600 Subject: [PATCH 375/424] Fix clicking the background of the tag panel not clearing the filter Fixes https://github.com/vector-im/element-web/issues/12988 --- src/components/structures/TagPanel.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/structures/TagPanel.js b/src/components/structures/TagPanel.js index 4acbc49d4d..40b5d04a0a 100644 --- a/src/components/structures/TagPanel.js +++ b/src/components/structures/TagPanel.js @@ -164,7 +164,7 @@ const TagPanel = createReactClass({ ); } - return
+ return
{ clearButton }
From 3c176f762ed9d20f8ffe6529ce23c5a200451308 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Thu, 27 Aug 2020 14:26:55 -0600 Subject: [PATCH 376/424] Remove disabled clear button from tag panel + dead code --- res/css/structures/_TagPanel.scss | 19 ------------------- src/components/structures/TagPanel.js | 21 --------------------- 2 files changed, 40 deletions(-) diff --git a/res/css/structures/_TagPanel.scss b/res/css/structures/_TagPanel.scss index 2683a32dae..0c8857e1ef 100644 --- a/res/css/structures/_TagPanel.scss +++ b/res/css/structures/_TagPanel.scss @@ -30,25 +30,6 @@ limitations under the License. cursor: pointer; } -.mx_TagPanel .mx_TagPanel_clearButton_container { - /* Constant height within flex mx_TagPanel */ - height: 70px; - width: 56px; - - flex: none; - - justify-content: center; - align-items: flex-start; - - display: none; -} - -.mx_TagPanel .mx_TagPanel_clearButton object { - /* Same as .mx_SearchBox padding-top */ - margin-top: 24px; - pointer-events: none; -} - .mx_TagPanel .mx_TagPanel_divider { height: 0px; width: 90%; diff --git a/src/components/structures/TagPanel.js b/src/components/structures/TagPanel.js index 40b5d04a0a..a714b126ec 100644 --- a/src/components/structures/TagPanel.js +++ b/src/components/structures/TagPanel.js @@ -95,11 +95,6 @@ const TagPanel = createReactClass({ } }, - onCreateGroupClick(ev) { - ev.stopPropagation(); - dis.dispatch({action: 'view_create_group'}); - }, - onClearFilterClick(ev) { dis.dispatch({action: 'deselect_tags'}); }, @@ -117,9 +112,7 @@ const TagPanel = createReactClass({ render() { const DNDTagTile = sdk.getComponent('elements.DNDTagTile'); - const AccessibleButton = sdk.getComponent('elements.AccessibleButton'); const ActionButton = sdk.getComponent('elements.ActionButton'); - const TintableSvg = sdk.getComponent('elements.TintableSvg'); const tags = this.state.orderedTags.map((tag, index) => { return 0; - - let clearButton; - if (itemsSelected) { - clearButton = - - ; - } - const classes = classNames('mx_TagPanel', { mx_TagPanel_items_selected: itemsSelected, }); @@ -165,9 +147,6 @@ const TagPanel = createReactClass({ } return
-
- { clearButton } -
Date: Fri, 28 Aug 2020 12:10:17 +0100 Subject: [PATCH 377/424] Add secret storage cache callback to avoid prompts This supplies a cache callback to the JS SDK so that we can be notified if a new storage key is created e.g. by resetting secret storage. This allows it to be supplied automatically in case it's needed in the same user operation, as it is when resetting both secret storage and cross-signing together. --- src/CrossSigningManager.js | 27 +++++++++++-------- .../CreateSecretStorageDialog.js | 8 +++--- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/src/CrossSigningManager.js b/src/CrossSigningManager.js index b15290b9c3..0353bfc5ae 100644 --- a/src/CrossSigningManager.js +++ b/src/CrossSigningManager.js @@ -69,19 +69,19 @@ async function getSecretStorageKey({ keys: keyInfos }, ssssItemName) { if (keyInfoEntries.length > 1) { throw new Error("Multiple storage key requests not implemented"); } - const [name, info] = keyInfoEntries[0]; + const [keyId, keyInfo] = keyInfoEntries[0]; // Check the in-memory cache - if (isCachingAllowed() && secretStorageKeys[name]) { - return [name, secretStorageKeys[name]]; + if (isCachingAllowed() && secretStorageKeys[keyId]) { + return [keyId, secretStorageKeys[keyId]]; } const inputToKey = async ({ passphrase, recoveryKey }) => { if (passphrase) { return deriveKey( passphrase, - info.passphrase.salt, - info.passphrase.iterations, + keyInfo.passphrase.salt, + keyInfo.passphrase.iterations, ); } else { return decodeRecoveryKey(recoveryKey); @@ -93,10 +93,10 @@ async function getSecretStorageKey({ keys: keyInfos }, ssssItemName) { AccessSecretStorageDialog, /* props= */ { - keyInfo: info, + keyInfo, checkPrivateKey: async (input) => { const key = await inputToKey(input); - return await MatrixClientPeg.get().checkSecretStorageKey(key, info); + return await MatrixClientPeg.get().checkSecretStorageKey(key, keyInfo); }, }, /* className= */ null, @@ -118,11 +118,15 @@ async function getSecretStorageKey({ keys: keyInfos }, ssssItemName) { const key = await inputToKey(input); // Save to cache to avoid future prompts in the current session - if (isCachingAllowed()) { - secretStorageKeys[name] = key; - } + cacheSecretStorageKey(keyId, key); - return [name, key]; + return [keyId, key]; +} + +function cacheSecretStorageKey(keyId, key) { + if (isCachingAllowed()) { + secretStorageKeys[keyId] = key; + } } const onSecretRequested = async function({ @@ -170,6 +174,7 @@ const onSecretRequested = async function({ export const crossSigningCallbacks = { getSecretStorageKey, + cacheSecretStorageKey, onSecretRequested, }; diff --git a/src/async-components/views/dialogs/secretstorage/CreateSecretStorageDialog.js b/src/async-components/views/dialogs/secretstorage/CreateSecretStorageDialog.js index 00216e3765..0a1a0b02b3 100644 --- a/src/async-components/views/dialogs/secretstorage/CreateSecretStorageDialog.js +++ b/src/async-components/views/dialogs/secretstorage/CreateSecretStorageDialog.js @@ -282,15 +282,15 @@ export default class CreateSecretStorageDialog extends React.PureComponent { try { if (forceReset) { console.log("Forcing cross-signing and secret storage reset"); - await cli.bootstrapCrossSigning({ - authUploadDeviceSigningKeys: this._doBootstrapUIAuth, - setupNewCrossSigning: true, - }); await cli.bootstrapSecretStorage({ createSecretStorageKey: async () => this._recoveryKey, setupNewKeyBackup: true, setupNewSecretStorage: true, }); + await cli.bootstrapCrossSigning({ + authUploadDeviceSigningKeys: this._doBootstrapUIAuth, + setupNewCrossSigning: true, + }); } else { await cli.bootstrapCrossSigning({ authUploadDeviceSigningKeys: this._doBootstrapUIAuth, From f038103f97b0b9625a711e7a839420b2c7fc475c Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Fri, 28 Aug 2020 09:47:36 -0600 Subject: [PATCH 378/424] Fix copy --- src/components/views/dialogs/CreateRoomDialog.js | 6 +++--- src/i18n/strings/en_EN.json | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/components/views/dialogs/CreateRoomDialog.js b/src/components/views/dialogs/CreateRoomDialog.js index d334438d58..4890626527 100644 --- a/src/components/views/dialogs/CreateRoomDialog.js +++ b/src/components/views/dialogs/CreateRoomDialog.js @@ -226,15 +226,15 @@ export default createReactClass({ } let federateLabel = _t( - "You might enable this if the room will be only be used for collaborating with internal " + - "teams on your homeserver. This setting cannot be changed later.", + "You might enable this if the room will only be used for collaborating with internal " + + "teams on your homeserver. This cannot be changed later.", ); if (SdkConfig.get().default_federate === false) { // We only change the label if the default setting is different to avoid jarring text changes to the // user. They will have read the implications of turning this off/on, so no need to rephrase for them. federateLabel = _t( "You might disable this if the room will be used for collaborating with external " + - "teams who have their own homeserver. This setting cannot be changed later.", + "teams who have their own homeserver. This cannot be changed later.", ); } diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index b92af49fad..f65e75d2b9 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -1641,8 +1641,8 @@ "Private rooms can be found and joined by invitation only. Public rooms can be found and joined by anyone in this community.": "Private rooms can be found and joined by invitation only. Public rooms can be found and joined by anyone in this community.", "You can’t disable this later. Bridges & most bots won’t work yet.": "You can’t disable this later. Bridges & most bots won’t work yet.", "Enable end-to-end encryption": "Enable end-to-end encryption", - "You might enable this if the room will be only be used for collaborating with internal teams on your homeserver. This setting cannot be changed later.": "You might enable this if the room will be only be used for collaborating with internal teams on your homeserver. This setting cannot be changed later.", - "You might disable this if the room will be used for collaborating with external teams who have their own homeserver. This setting cannot be changed later.": "You might disable this if the room will be used for collaborating with external teams who have their own homeserver. This setting cannot be changed later.", + "You might enable this if the room will only be used for collaborating with internal teams on your homeserver. This cannot be changed later.": "You might enable this if the room will only be used for collaborating with internal teams on your homeserver. This cannot be changed later.", + "You might disable this if the room will be used for collaborating with external teams who have their own homeserver. This cannot be changed later.": "You might disable this if the room will be used for collaborating with external teams who have their own homeserver. This cannot be changed later.", "Create a public room": "Create a public room", "Create a private room": "Create a private room", "Create a room in %(communityName)s": "Create a room in %(communityName)s", From cc2fc911afc82915067bc6ee5790e419dd6d83dc Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Fri, 28 Aug 2020 10:03:27 -0600 Subject: [PATCH 379/424] Minor copy addition to DM dialog for communities prototype --- res/css/views/dialogs/_InviteDialog.scss | 7 +++++++ src/components/views/dialogs/InviteDialog.js | 10 ++++++++++ src/i18n/strings/en_EN.json | 1 + 3 files changed, 18 insertions(+) diff --git a/res/css/views/dialogs/_InviteDialog.scss b/res/css/views/dialogs/_InviteDialog.scss index a77d0bfbba..a0f98d74e9 100644 --- a/res/css/views/dialogs/_InviteDialog.scss +++ b/res/css/views/dialogs/_InviteDialog.scss @@ -89,6 +89,13 @@ limitations under the License. font-weight: bold; text-transform: uppercase; } + + .mx_InviteDialog_subname { + margin-bottom: 10px; + margin-top: -10px; // HACK: Positioning with margins is bad + font-size: $font-12px; + color: $muted-fg-color; + } } .mx_InviteDialog_roomTile { diff --git a/src/components/views/dialogs/InviteDialog.js b/src/components/views/dialogs/InviteDialog.js index 6cd0b22505..ba4abb31a7 100644 --- a/src/components/views/dialogs/InviteDialog.js +++ b/src/components/views/dialogs/InviteDialog.js @@ -37,6 +37,8 @@ import {Key} from "../../../Keyboard"; import {Action} from "../../../dispatcher/actions"; import {DefaultTagID} from "../../../stores/room-list/models"; import RoomListStore from "../../../stores/room-list/RoomListStore"; +import TagOrderStore from "../../../stores/TagOrderStore"; +import GroupStore from "../../../stores/GroupStore"; // we have a number of types defined from the Matrix spec which can't reasonably be altered here. /* eslint-disable camelcase */ @@ -915,6 +917,13 @@ export default class InviteDialog extends React.PureComponent { const showMoreFn = kind === 'recents' ? this._showMoreRecents.bind(this) : this._showMoreSuggestions.bind(this); const lastActive = (m) => kind === 'recents' ? m.lastActive : null; let sectionName = kind === 'recents' ? _t("Recent Conversations") : _t("Suggestions"); + let sectionSubname = null; + + if (kind === 'suggestions' && TagOrderStore.getSelectedPrototypeTag()) { + const summary = GroupStore.getSummary(TagOrderStore.getSelectedPrototypeTag()); + const communityName = summary?.profile?.name || TagOrderStore.getSelectedPrototypeTag(); + sectionSubname = _t("May include members not in %(communityName)s", {communityName}); + } if (this.props.kind === KIND_INVITE) { sectionName = kind === 'recents' ? _t("Recently Direct Messaged") : _t("Suggestions"); @@ -993,6 +1002,7 @@ export default class InviteDialog extends React.PureComponent { return (

{sectionName}

+ {sectionSubname ?

{sectionSubname}

: null} {tiles} {showMore}
diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 442f07499c..2a914641f1 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -1709,6 +1709,7 @@ "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s": "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s", "Recent Conversations": "Recent Conversations", "Suggestions": "Suggestions", + "May include members not in %(communityName)s": "May include members not in %(communityName)s", "Recently Direct Messaged": "Recently Direct Messaged", "Direct Messages": "Direct Messages", "Start a conversation with someone using their name, username (like ) or email address.": "Start a conversation with someone using their name, username (like ) or email address.", From b9cfa95ceb31d8333c0cb9884212821ebc797336 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Fri, 28 Aug 2020 17:06:56 +0100 Subject: [PATCH 380/424] Add display-capture to iframe allow --- src/components/views/elements/AppTile.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/elements/AppTile.js b/src/components/views/elements/AppTile.js index 75946f19c1..0813faee54 100644 --- a/src/components/views/elements/AppTile.js +++ b/src/components/views/elements/AppTile.js @@ -735,7 +735,7 @@ export default class AppTile extends React.Component { // Additional iframe feature pemissions // (see - https://sites.google.com/a/chromium.org/dev/Home/chromium-security/deprecating-permissions-in-cross-origin-iframes and https://wicg.github.io/feature-policy/) - const iframeFeatures = "microphone; camera; encrypted-media; autoplay;"; + const iframeFeatures = "microphone; camera; encrypted-media; autoplay; display-capture;"; const appTileBodyClass = 'mx_AppTileBody' + (this.props.miniMode ? '_mini ' : ' '); From 1fc55b33c1d03423395ad5d149a8796d0fe4f52b Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Fri, 28 Aug 2020 18:53:43 +0100 Subject: [PATCH 381/424] Stash lodash import optimization --- src/Markdown.js | 2 +- src/SendHistoryManager.js | 4 ++-- src/autocomplete/CommunityProvider.tsx | 4 ++-- src/autocomplete/EmojiProvider.tsx | 5 ++--- src/autocomplete/QueryMatcher.ts | 7 +++---- src/autocomplete/RoomProvider.tsx | 3 +-- src/autocomplete/UserProvider.tsx | 4 ++-- src/components/structures/SearchBox.js | 2 +- .../dialogs/secretstorage/AccessSecretStorageDialog.js | 2 +- src/components/views/elements/Field.tsx | 2 +- src/components/views/rooms/Autocomplete.tsx | 2 +- src/emojipicker/recent.ts | 2 +- src/ratelimitedfunc.js | 2 +- src/stores/CustomRoomTagStore.js | 2 +- src/stores/OwnProfileStore.ts | 2 +- src/stores/room-list/filters/NameFilterCondition.ts | 2 +- src/utils/DMRoomMap.js | 4 ++-- src/utils/ResizeNotifier.js | 2 +- 18 files changed, 25 insertions(+), 28 deletions(-) diff --git a/src/Markdown.js b/src/Markdown.js index 7a573996c3..492450e87d 100644 --- a/src/Markdown.js +++ b/src/Markdown.js @@ -15,7 +15,7 @@ limitations under the License. */ import commonmark from 'commonmark'; -import escape from "lodash/escape"; +import {escape} from "lodash"; const ALLOWED_HTML_TAGS = ['sub', 'sup', 'del', 'u']; diff --git a/src/SendHistoryManager.js b/src/SendHistoryManager.js index d38227ae76..d9955727a4 100644 --- a/src/SendHistoryManager.js +++ b/src/SendHistoryManager.js @@ -15,7 +15,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -import _clamp from "lodash/clamp"; +import {clamp} from "lodash"; export default class SendHistoryManager { history: Array = []; @@ -54,7 +54,7 @@ export default class SendHistoryManager { } getItem(offset: number): ?HistoryItem { - this.currentIndex = _clamp(this.currentIndex + offset, 0, this.history.length - 1); + this.currentIndex = clamp(this.currentIndex + offset, 0, this.history.length - 1); return this.history[this.currentIndex]; } } diff --git a/src/autocomplete/CommunityProvider.tsx b/src/autocomplete/CommunityProvider.tsx index e2baa29026..43217cc1bb 100644 --- a/src/autocomplete/CommunityProvider.tsx +++ b/src/autocomplete/CommunityProvider.tsx @@ -23,7 +23,7 @@ import {MatrixClientPeg} from '../MatrixClientPeg'; import QueryMatcher from './QueryMatcher'; import {PillCompletion} from './Components'; import * as sdk from '../index'; -import _sortBy from "lodash/sortBy"; +import {sortBy} from "lodash"; import {makeGroupPermalink} from "../utils/permalinks/Permalinks"; import {ICompletion, ISelectionRange} from "./Autocompleter"; import FlairStore from "../stores/FlairStore"; @@ -81,7 +81,7 @@ export default class CommunityProvider extends AutocompleteProvider { const matchedString = command[0]; completions = this.matcher.match(matchedString); - completions = _sortBy(completions, [ + completions = sortBy(completions, [ (c) => score(matchedString, c.groupId), (c) => c.groupId.length, ]).map(({avatarUrl, groupId, name}) => ({ diff --git a/src/autocomplete/EmojiProvider.tsx b/src/autocomplete/EmojiProvider.tsx index 147d68f5ff..1ccbc41bd6 100644 --- a/src/autocomplete/EmojiProvider.tsx +++ b/src/autocomplete/EmojiProvider.tsx @@ -23,8 +23,7 @@ import AutocompleteProvider from './AutocompleteProvider'; import QueryMatcher from './QueryMatcher'; import {PillCompletion} from './Components'; import {ICompletion, ISelectionRange} from './Autocompleter'; -import _uniq from 'lodash/uniq'; -import _sortBy from 'lodash/sortBy'; +import {uniq, sortBy} from 'lodash'; import SettingsStore from "../settings/SettingsStore"; import { shortcodeToUnicode } from '../HtmlUtils'; import { EMOJI, IEmoji } from '../emoji'; @@ -115,7 +114,7 @@ export default class EmojiProvider extends AutocompleteProvider { } // Finally, sort by original ordering sorters.push((c) => c._orderBy); - completions = _sortBy(_uniq(completions), sorters); + completions = sortBy(uniq(completions), sorters); completions = completions.map(({shortname}) => { const unicode = shortcodeToUnicode(shortname); diff --git a/src/autocomplete/QueryMatcher.ts b/src/autocomplete/QueryMatcher.ts index 9c91414556..a07ed29c7e 100644 --- a/src/autocomplete/QueryMatcher.ts +++ b/src/autocomplete/QueryMatcher.ts @@ -16,8 +16,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -import _at from 'lodash/at'; -import _uniq from 'lodash/uniq'; +import {at, uniq} from 'lodash'; import {removeHiddenChars} from "matrix-js-sdk/src/utils"; interface IOptions { @@ -73,7 +72,7 @@ export default class QueryMatcher { // type for their values. We assume that those values who's keys have // been specified will be string. Also, we cannot infer all the // types of the keys of the objects at compile. - const keyValues = _at(object, this._options.keys); + const keyValues = at(object, this._options.keys); if (this._options.funcs) { for (const f of this._options.funcs) { @@ -137,7 +136,7 @@ export default class QueryMatcher { }); // Now map the keys to the result objects. Also remove any duplicates. - return _uniq(matches.map((match) => match.object)); + return uniq(matches.map((match) => match.object)); } private processQuery(query: string): string { diff --git a/src/autocomplete/RoomProvider.tsx b/src/autocomplete/RoomProvider.tsx index 30a322d6b1..de16e68e01 100644 --- a/src/autocomplete/RoomProvider.tsx +++ b/src/autocomplete/RoomProvider.tsx @@ -27,8 +27,7 @@ import {PillCompletion} from './Components'; import * as sdk from '../index'; import {makeRoomPermalink} from "../utils/permalinks/Permalinks"; import {ICompletion, ISelectionRange} from "./Autocompleter"; -import uniqBy from "lodash/uniqBy"; -import sortBy from "lodash/sortBy"; +import {uniqBy, sortBy} from "lodash"; const ROOM_REGEX = /\B#\S*/g; diff --git a/src/autocomplete/UserProvider.tsx b/src/autocomplete/UserProvider.tsx index c957b5e597..d592421ef2 100644 --- a/src/autocomplete/UserProvider.tsx +++ b/src/autocomplete/UserProvider.tsx @@ -23,7 +23,7 @@ import AutocompleteProvider from './AutocompleteProvider'; import {PillCompletion} from './Components'; import * as sdk from '../index'; import QueryMatcher from './QueryMatcher'; -import _sortBy from 'lodash/sortBy'; +import {sortBy} from 'lodash'; import {MatrixClientPeg} from '../MatrixClientPeg'; import MatrixEvent from "matrix-js-sdk/src/models/event"; @@ -151,7 +151,7 @@ export default class UserProvider extends AutocompleteProvider { const currentUserId = MatrixClientPeg.get().credentials.userId; this.users = this.room.getJoinedMembers().filter(({userId}) => userId !== currentUserId); - this.users = _sortBy(this.users, (member) => 1E20 - lastSpoken[member.userId] || 1E20); + this.users = sortBy(this.users, (member) => 1E20 - lastSpoken[member.userId] || 1E20); this.matcher.setObjects(this.users); } diff --git a/src/components/structures/SearchBox.js b/src/components/structures/SearchBox.js index ef0ee38ce6..e4befee863 100644 --- a/src/components/structures/SearchBox.js +++ b/src/components/structures/SearchBox.js @@ -20,7 +20,7 @@ import createReactClass from 'create-react-class'; import PropTypes from 'prop-types'; import { Key } from '../../Keyboard'; import dis from '../../dispatcher/dispatcher'; -import throttle from 'lodash/throttle'; +import {throttle} from 'lodash'; import AccessibleButton from '../../components/views/elements/AccessibleButton'; import classNames from 'classnames'; diff --git a/src/components/views/dialogs/secretstorage/AccessSecretStorageDialog.js b/src/components/views/dialogs/secretstorage/AccessSecretStorageDialog.js index 2d556aa597..85ace249a3 100644 --- a/src/components/views/dialogs/secretstorage/AccessSecretStorageDialog.js +++ b/src/components/views/dialogs/secretstorage/AccessSecretStorageDialog.js @@ -15,7 +15,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -import debounce from "lodash/debounce"; +import {debounce} from "lodash"; import classNames from 'classnames'; import React from 'react'; import PropTypes from "prop-types"; diff --git a/src/components/views/elements/Field.tsx b/src/components/views/elements/Field.tsx index 935d452aaa..8c4e6aed31 100644 --- a/src/components/views/elements/Field.tsx +++ b/src/components/views/elements/Field.tsx @@ -17,7 +17,7 @@ limitations under the License. import React, {InputHTMLAttributes, SelectHTMLAttributes, TextareaHTMLAttributes} from 'react'; import classNames from 'classnames'; import * as sdk from '../../../index'; -import debounce from "lodash/debounce"; +import {debounce} from "lodash"; import {IFieldState, IValidationResult} from "./Validation"; // Invoke validation from user input (when typing, etc.) at most once every N ms. diff --git a/src/components/views/rooms/Autocomplete.tsx b/src/components/views/rooms/Autocomplete.tsx index 8fa623bd91..15af75084a 100644 --- a/src/components/views/rooms/Autocomplete.tsx +++ b/src/components/views/rooms/Autocomplete.tsx @@ -17,7 +17,7 @@ limitations under the License. import React, {createRef, KeyboardEvent} from 'react'; import classNames from 'classnames'; -import flatMap from "lodash/flatMap"; +import {flatMap} from "lodash"; import {ICompletion, ISelectionRange, IProviderCompletions} from '../../../autocomplete/Autocompleter'; import {Room} from 'matrix-js-sdk/src/models/room'; diff --git a/src/emojipicker/recent.ts b/src/emojipicker/recent.ts index 0f005214a3..d86aad660d 100644 --- a/src/emojipicker/recent.ts +++ b/src/emojipicker/recent.ts @@ -16,7 +16,7 @@ limitations under the License. */ import SettingsStore from "../settings/SettingsStore"; -import orderBy from "lodash/orderBy"; +import {orderBy} from "lodash"; import { SettingLevel } from "../settings/SettingLevel"; interface ILegacyFormat { diff --git a/src/ratelimitedfunc.js b/src/ratelimitedfunc.js index 691671a086..3df3db615e 100644 --- a/src/ratelimitedfunc.js +++ b/src/ratelimitedfunc.js @@ -26,7 +26,7 @@ limitations under the License. * on unmount or similar to cancel any pending update. */ -import throttle from "lodash/throttle"; +import {throttle} from "lodash"; export default function ratelimitedfunc(fn, time) { const throttledFn = throttle(fn, time, { diff --git a/src/stores/CustomRoomTagStore.js b/src/stores/CustomRoomTagStore.js index ceee67c1e1..39177181b4 100644 --- a/src/stores/CustomRoomTagStore.js +++ b/src/stores/CustomRoomTagStore.js @@ -17,7 +17,7 @@ limitations under the License. import dis from '../dispatcher/dispatcher'; import EventEmitter from 'events'; -import throttle from "lodash/throttle"; +import {throttle} from "lodash"; import SettingsStore from "../settings/SettingsStore"; import RoomListStore, {LISTS_UPDATE_EVENT} from "./room-list/RoomListStore"; import {RoomNotificationStateStore} from "./notifications/RoomNotificationStateStore"; diff --git a/src/stores/OwnProfileStore.ts b/src/stores/OwnProfileStore.ts index af615b07b6..1aa761e1c4 100644 --- a/src/stores/OwnProfileStore.ts +++ b/src/stores/OwnProfileStore.ts @@ -19,7 +19,7 @@ import { AsyncStoreWithClient } from "./AsyncStoreWithClient"; import defaultDispatcher from "../dispatcher/dispatcher"; import { MatrixEvent } from "matrix-js-sdk/src/models/event"; import { User } from "matrix-js-sdk/src/models/user"; -import throttle from "lodash/throttle"; +import { throttle } from "lodash"; import { MatrixClientPeg } from "../MatrixClientPeg"; import { _t } from "../languageHandler"; diff --git a/src/stores/room-list/filters/NameFilterCondition.ts b/src/stores/room-list/filters/NameFilterCondition.ts index 13c75f3d4d..88edaecfb6 100644 --- a/src/stores/room-list/filters/NameFilterCondition.ts +++ b/src/stores/room-list/filters/NameFilterCondition.ts @@ -18,7 +18,7 @@ import { Room } from "matrix-js-sdk/src/models/room"; import { FILTER_CHANGED, FilterPriority, IFilterCondition } from "./IFilterCondition"; import { EventEmitter } from "events"; import { removeHiddenChars } from "matrix-js-sdk/src/utils"; -import throttle from "lodash/throttle"; +import { throttle } from "lodash"; /** * A filter condition for the room list which reveals rooms of a particular diff --git a/src/utils/DMRoomMap.js b/src/utils/DMRoomMap.js index c6ba0d4d83..4e219b1611 100644 --- a/src/utils/DMRoomMap.js +++ b/src/utils/DMRoomMap.js @@ -16,7 +16,7 @@ limitations under the License. */ import {MatrixClientPeg} from '../MatrixClientPeg'; -import _uniq from "lodash/uniq"; +import {uniq} from "lodash"; import {Room} from "matrix-js-sdk/src/matrix"; /** @@ -111,7 +111,7 @@ export default class DMRoomMap { userToRooms[userId] = [roomId]; } else { roomIds.push(roomId); - userToRooms[userId] = _uniq(roomIds); + userToRooms[userId] = uniq(roomIds); } }); return true; diff --git a/src/utils/ResizeNotifier.js b/src/utils/ResizeNotifier.js index c43e2c8250..5467716576 100644 --- a/src/utils/ResizeNotifier.js +++ b/src/utils/ResizeNotifier.js @@ -23,7 +23,7 @@ limitations under the License. * @event module:utils~ResizeNotifier#"middlePanelResizedNoisy" */ import { EventEmitter } from "events"; -import throttle from "lodash/throttle"; +import { throttle } from "lodash"; export default class ResizeNotifier extends EventEmitter { constructor() { From e58b514803d934005434ae1745fcfddb677d73d3 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Fri, 28 Aug 2020 13:22:20 -0600 Subject: [PATCH 382/424] Add clarifying text to DM dialog about what is about to happen --- res/css/views/dialogs/_InviteDialog.scss | 4 ++++ src/RoomInvite.js | 20 +++++++++++++++++ src/components/views/dialogs/InviteDialog.js | 23 +++++++++++++++++++- src/i18n/strings/en_EN.json | 1 + 4 files changed, 47 insertions(+), 1 deletion(-) diff --git a/res/css/views/dialogs/_InviteDialog.scss b/res/css/views/dialogs/_InviteDialog.scss index a0f98d74e9..b9063f46b9 100644 --- a/res/css/views/dialogs/_InviteDialog.scss +++ b/res/css/views/dialogs/_InviteDialog.scss @@ -233,3 +233,7 @@ limitations under the License. .mx_InviteDialog_addressBar { margin-right: 45px; } + +.mx_InviteDialog_helpText .mx_AccessibleButton_kind_link { + padding: 0; +} diff --git a/src/RoomInvite.js b/src/RoomInvite.js index 420561ea41..408b4c9c6c 100644 --- a/src/RoomInvite.js +++ b/src/RoomInvite.js @@ -24,6 +24,8 @@ import * as sdk from './'; import { _t } from './languageHandler'; import {KIND_DM, KIND_INVITE} from "./components/views/dialogs/InviteDialog"; import CommunityPrototypeInviteDialog from "./components/views/dialogs/CommunityPrototypeInviteDialog"; +import GroupStore from "./stores/GroupStore"; +import dis from "./dispatcher/dispatcher"; /** * Invites multiple addresses to a room @@ -64,6 +66,24 @@ export function showCommunityRoomInviteDialog(roomId, communityName) { ); } +export function showCommunityInviteDialog(communityId) { + const rooms = GroupStore.getGroupRooms(communityId) + .map(r => MatrixClientPeg.get().getRoom(r.roomId)) + .filter(r => !!r); + let chat = rooms.find(r => { + const idState = r.currentState.getStateEvents("im.vector.general_chat", ""); + if (!idState || idState.getContent()['groupId'] !== communityId) return false; + return true; + }); + if (!chat) chat = rooms[0]; + if (chat) { + const summary = GroupStore.getSummary(communityId); + showCommunityRoomInviteDialog(chat.roomId, summary?.profile?.name || communityId); + } else { + throw new Error("Failed to locate appropriate room to start an invite in"); + } +} + /** * Checks if the given MatrixEvent is a valid 3rd party user invite. * @param {MatrixEvent} event The event to check diff --git a/src/components/views/dialogs/InviteDialog.js b/src/components/views/dialogs/InviteDialog.js index ba4abb31a7..b70f2fee10 100644 --- a/src/components/views/dialogs/InviteDialog.js +++ b/src/components/views/dialogs/InviteDialog.js @@ -32,7 +32,7 @@ import IdentityAuthClient from "../../../IdentityAuthClient"; import Modal from "../../../Modal"; import {humanizeTime} from "../../../utils/humanize"; import createRoom, {canEncryptToAllUsers, privateShouldBeEncrypted} from "../../../createRoom"; -import {inviteMultipleToRoom} from "../../../RoomInvite"; +import {inviteMultipleToRoom, showCommunityInviteDialog} from "../../../RoomInvite"; import {Key} from "../../../Keyboard"; import {Action} from "../../../dispatcher/actions"; import {DefaultTagID} from "../../../stores/room-list/models"; @@ -911,6 +911,11 @@ export default class InviteDialog extends React.PureComponent { this.props.onFinished(); }; + _onCommunityInviteClick = (e) => { + this.props.onFinished(); + showCommunityInviteDialog(TagOrderStore.getSelectedPrototypeTag()); + }; + _renderSection(kind: "recents"|"suggestions") { let sourceMembers = kind === 'recents' ? this.state.recents : this.state.suggestions; let showNum = kind === 'recents' ? this.state.numRecentsShown : this.state.numSuggestionsShown; @@ -1093,6 +1098,22 @@ export default class InviteDialog extends React.PureComponent { return {userId}; }}, ); + if (TagOrderStore.getSelectedPrototypeTag()) { + const communityId = TagOrderStore.getSelectedPrototypeTag(); + const communityName = GroupStore.getSummary(communityId)?.profile?.name || communityId; + helpText = _t( + "Start a conversation with someone using their name, username (like ) or email address. " + + "This won't invite them to %(communityName)s. To invite someone to %(communityName)s, click here.", + {communityName}, { + userId: () => { + return {userId}; + }, + a: (sub) => { + return {sub} + }, + }, + ) + } buttonText = _t("Go"); goButtonFn = this._startDm; } else { // KIND_INVITE diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 2a914641f1..0d01fd47c8 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -1713,6 +1713,7 @@ "Recently Direct Messaged": "Recently Direct Messaged", "Direct Messages": "Direct Messages", "Start a conversation with someone using their name, username (like ) or email address.": "Start a conversation with someone using their name, username (like ) or email address.", + "Start a conversation with someone using their name, username (like ) or email address. This won't invite them to %(communityName)s. To invite someone to %(communityName)s, click here.": "Start a conversation with someone using their name, username (like ) or email address. This won't invite them to %(communityName)s. To invite someone to %(communityName)s, click here.", "Go": "Go", "Invite someone using their name, username (like ), email address or share this room.": "Invite someone using their name, username (like ), email address or share this room.", "a new master key signature": "a new master key signature", From 6f237161fd841ee181fd38bfd3b8452020494c05 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Fri, 28 Aug 2020 13:28:54 -0600 Subject: [PATCH 383/424] Appease the linter --- src/components/views/dialogs/InviteDialog.js | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/components/views/dialogs/InviteDialog.js b/src/components/views/dialogs/InviteDialog.js index b70f2fee10..934ed12ac1 100644 --- a/src/components/views/dialogs/InviteDialog.js +++ b/src/components/views/dialogs/InviteDialog.js @@ -1103,16 +1103,28 @@ export default class InviteDialog extends React.PureComponent { const communityName = GroupStore.getSummary(communityId)?.profile?.name || communityId; helpText = _t( "Start a conversation with someone using their name, username (like ) or email address. " + - "This won't invite them to %(communityName)s. To invite someone to %(communityName)s, click here.", + "This won't invite them to %(communityName)s. To invite someone to %(communityName)s, click " + + "here.", {communityName}, { userId: () => { - return {userId}; + return ( + {userId} + ); }, a: (sub) => { - return {sub} + return ( + {sub} + ); }, }, - ) + ); } buttonText = _t("Go"); goButtonFn = this._startDm; From fb54b62be99ba4ae1f2c2a2bf9ffd448aeab72a2 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Fri, 28 Aug 2020 13:42:19 -0600 Subject: [PATCH 384/424] Appease the rest of the linter --- src/RoomInvite.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/RoomInvite.js b/src/RoomInvite.js index 408b4c9c6c..cae4501901 100644 --- a/src/RoomInvite.js +++ b/src/RoomInvite.js @@ -25,7 +25,6 @@ import { _t } from './languageHandler'; import {KIND_DM, KIND_INVITE} from "./components/views/dialogs/InviteDialog"; import CommunityPrototypeInviteDialog from "./components/views/dialogs/CommunityPrototypeInviteDialog"; import GroupStore from "./stores/GroupStore"; -import dis from "./dispatcher/dispatcher"; /** * Invites multiple addresses to a room From 90d9d7128d2ccd7767aee6a8ef4053f38174fdd4 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Fri, 28 Aug 2020 14:56:59 -0600 Subject: [PATCH 385/424] Use FlairStore's cache for group naming Turns out GroupStore doesn't really know much. --- src/RoomInvite.js | 4 ++-- src/components/views/dialogs/CreateRoomDialog.js | 5 ++--- src/components/views/dialogs/InviteDialog.js | 8 +++----- src/stores/CommunityPrototypeStore.ts | 11 +++++++++++ src/stores/FlairStore.js | 16 ++++++++++++++++ 5 files changed, 34 insertions(+), 10 deletions(-) diff --git a/src/RoomInvite.js b/src/RoomInvite.js index cae4501901..7f2eec32f3 100644 --- a/src/RoomInvite.js +++ b/src/RoomInvite.js @@ -76,8 +76,8 @@ export function showCommunityInviteDialog(communityId) { }); if (!chat) chat = rooms[0]; if (chat) { - const summary = GroupStore.getSummary(communityId); - showCommunityRoomInviteDialog(chat.roomId, summary?.profile?.name || communityId); + const name = CommunityPrototypeInviteDialog.instance.getCommunityName(communityId); + showCommunityRoomInviteDialog(chat.roomId, name); } else { throw new Error("Failed to locate appropriate room to start an invite in"); } diff --git a/src/components/views/dialogs/CreateRoomDialog.js b/src/components/views/dialogs/CreateRoomDialog.js index 4890626527..bdd3de07c0 100644 --- a/src/components/views/dialogs/CreateRoomDialog.js +++ b/src/components/views/dialogs/CreateRoomDialog.js @@ -26,7 +26,7 @@ import {MatrixClientPeg} from '../../../MatrixClientPeg'; import {Key} from "../../../Keyboard"; import {privateShouldBeEncrypted} from "../../../createRoom"; import TagOrderStore from "../../../stores/TagOrderStore"; -import GroupStore from "../../../stores/GroupStore"; +import {CommunityPrototypeStore} from "../../../stores/CommunityPrototypeStore"; export default createReactClass({ displayName: 'CreateRoomDialog', @@ -240,8 +240,7 @@ export default createReactClass({ let title = this.state.isPublic ? _t('Create a public room') : _t('Create a private room'); if (TagOrderStore.getSelectedPrototypeTag()) { - const summary = GroupStore.getSummary(TagOrderStore.getSelectedPrototypeTag()); - const name = summary?.profile?.name || TagOrderStore.getSelectedPrototypeTag(); + const name = CommunityPrototypeStore.instance.getSelectedCommunityName(); title = _t("Create a room in %(communityName)s", {communityName: name}); } return ( diff --git a/src/components/views/dialogs/InviteDialog.js b/src/components/views/dialogs/InviteDialog.js index 934ed12ac1..c2fd7e5b0e 100644 --- a/src/components/views/dialogs/InviteDialog.js +++ b/src/components/views/dialogs/InviteDialog.js @@ -38,7 +38,7 @@ import {Action} from "../../../dispatcher/actions"; import {DefaultTagID} from "../../../stores/room-list/models"; import RoomListStore from "../../../stores/room-list/RoomListStore"; import TagOrderStore from "../../../stores/TagOrderStore"; -import GroupStore from "../../../stores/GroupStore"; +import {CommunityPrototypeStore} from "../../../stores/CommunityPrototypeStore"; // we have a number of types defined from the Matrix spec which can't reasonably be altered here. /* eslint-disable camelcase */ @@ -925,8 +925,7 @@ export default class InviteDialog extends React.PureComponent { let sectionSubname = null; if (kind === 'suggestions' && TagOrderStore.getSelectedPrototypeTag()) { - const summary = GroupStore.getSummary(TagOrderStore.getSelectedPrototypeTag()); - const communityName = summary?.profile?.name || TagOrderStore.getSelectedPrototypeTag(); + const communityName = CommunityPrototypeStore.instance.getCommunityName(TagOrderStore.getSelectedPrototypeTag()); sectionSubname = _t("May include members not in %(communityName)s", {communityName}); } @@ -1099,8 +1098,7 @@ export default class InviteDialog extends React.PureComponent { }}, ); if (TagOrderStore.getSelectedPrototypeTag()) { - const communityId = TagOrderStore.getSelectedPrototypeTag(); - const communityName = GroupStore.getSummary(communityId)?.profile?.name || communityId; + const communityName = CommunityPrototypeStore.instance.getSelectedCommunityName(); helpText = _t( "Start a conversation with someone using their name, username (like ) or email address. " + "This won't invite them to %(communityName)s. To invite someone to %(communityName)s, click " + diff --git a/src/stores/CommunityPrototypeStore.ts b/src/stores/CommunityPrototypeStore.ts index 581f8a97c8..eec0a8aab8 100644 --- a/src/stores/CommunityPrototypeStore.ts +++ b/src/stores/CommunityPrototypeStore.ts @@ -22,6 +22,8 @@ import { EffectiveMembership, getEffectiveMembership } from "../utils/membership import SettingsStore from "../settings/SettingsStore"; import * as utils from "matrix-js-sdk/src/utils"; import { UPDATE_EVENT } from "./AsyncStore"; +import FlairStore from "./FlairStore"; +import TagOrderStore from "./TagOrderStore"; interface IState { // nothing of value - we use account data @@ -43,6 +45,15 @@ export class CommunityPrototypeStore extends AsyncStoreWithClient { return CommunityPrototypeStore.internalInstance; } + public getSelectedCommunityName(): string { + return CommunityPrototypeStore.instance.getCommunityName(TagOrderStore.getSelectedPrototypeTag()); + } + + public getCommunityName(communityId: string): string { + const profile = FlairStore.getGroupProfileCachedFast(this.matrixClient, communityId); + return profile?.name || communityId; + } + protected async onAction(payload: ActionPayload): Promise { if (!this.matrixClient || !SettingsStore.getValue("feature_communities_v2_prototypes")) { return; diff --git a/src/stores/FlairStore.js b/src/stores/FlairStore.js index 94b81c1ba5..10a4d96921 100644 --- a/src/stores/FlairStore.js +++ b/src/stores/FlairStore.js @@ -148,6 +148,22 @@ class FlairStore extends EventEmitter { }); } + /** + * Gets the profile for the given group if known, otherwise returns null. + * This triggers `getGroupProfileCached` if needed, though the result of the + * call will not be returned by this function. + * @param matrixClient The matrix client to use to fetch the profile, if needed. + * @param groupId The group ID to get the profile for. + * @returns The profile if known, otherwise null. + */ + getGroupProfileCachedFast(matrixClient, groupId) { + if (this._groupProfiles[groupId]) { + return this._groupProfiles[groupId]; + } + this.getGroupProfileCached(matrixClient, groupId); + return null; + } + async getGroupProfileCached(matrixClient, groupId) { if (this._groupProfiles[groupId]) { return this._groupProfiles[groupId]; From 0ffa5488647a29682fe91391126eee3d2703ba09 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Fri, 28 Aug 2020 15:37:23 -0600 Subject: [PATCH 386/424] Change the menu button to a chevron by design request --- res/css/structures/_UserMenu.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/res/css/structures/_UserMenu.scss b/res/css/structures/_UserMenu.scss index 78795c85a2..b4e3a08e18 100644 --- a/res/css/structures/_UserMenu.scss +++ b/res/css/structures/_UserMenu.scss @@ -16,7 +16,7 @@ limitations under the License. .mx_UserMenu { - // to make the ... button sort of aligned with the explore button below + // to make the menu button sort of aligned with the explore button below padding-right: 6px; .mx_UserMenu_headerButtons { @@ -36,7 +36,7 @@ limitations under the License. mask-size: contain; mask-repeat: no-repeat; background: $primary-fg-color; - mask-image: url('$(res)/img/element-icons/context-menu.svg'); + mask-image: url('$(res)/img/feather-customised/chevron-down.svg'); } } From 01b0acbe62c2ad2d3113df7d92957ce33b55cb9c Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Fri, 28 Aug 2020 16:14:08 -0600 Subject: [PATCH 387/424] Make the UserMenu echo the current community name --- res/css/structures/_UserMenu.scss | 46 ++++++++++++++++++++++++++ src/components/structures/UserMenu.tsx | 35 +++++++++++++++++++- src/i18n/strings/en_EN.json | 1 + 3 files changed, 81 insertions(+), 1 deletion(-) diff --git a/res/css/structures/_UserMenu.scss b/res/css/structures/_UserMenu.scss index b4e3a08e18..08fb1f49f0 100644 --- a/res/css/structures/_UserMenu.scss +++ b/res/css/structures/_UserMenu.scss @@ -19,6 +19,30 @@ limitations under the License. // to make the menu button sort of aligned with the explore button below padding-right: 6px; + &.mx_UserMenu_prototype { + // The margin & padding combination between here and the ::after is to + // align the border line with the tag panel. + margin-bottom: 6px; + + padding-right: 0; // make the right edge line up with the explore button + + .mx_UserMenu_headerButtons { + // considering we've eliminated right padding on the menu itself, we need to + // push the chevron in slightly (roughly lining up with the center of the + // plus buttons) + margin-right: 2px; + } + + // we cheat opacity on the theme colour with an after selector here + &::after { + content: ''; + border-bottom: 1px solid $roomsublist-divider-color; + opacity: 0.2; + display: block; + padding-top: 8px; + } + } + .mx_UserMenu_headerButtons { width: 16px; height: 16px; @@ -56,6 +80,28 @@ limitations under the License. } } + .mx_UserMenu_doubleName { + flex: 1; + min-width: 0; // make flexbox aware that it can crush this to a tiny width + + .mx_UserMenu_userName, + .mx_UserMenu_subUserName { + display: block; + } + + .mx_UserMenu_subUserName { + color: $muted-fg-color; + font-size: $font-13px; + line-height: $font-18px; + flex: 1; + + // Ellipsize any text overflow + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + } + } + .mx_UserMenu_userName { font-weight: 600; font-size: $font-15px; diff --git a/src/components/structures/UserMenu.tsx b/src/components/structures/UserMenu.tsx index 30be71abcb..a1039f23b9 100644 --- a/src/components/structures/UserMenu.tsx +++ b/src/components/structures/UserMenu.tsx @@ -42,6 +42,9 @@ import IconizedContextMenu, { IconizedContextMenuOption, IconizedContextMenuOptionList } from "../views/context_menus/IconizedContextMenu"; +import { CommunityPrototypeStore } from "../../stores/CommunityPrototypeStore"; +import * as fbEmitter from "fbemitter"; +import TagOrderStore from "../../stores/TagOrderStore"; interface IProps { isMinimized: boolean; @@ -58,6 +61,7 @@ export default class UserMenu extends React.Component { private dispatcherRef: string; private themeWatcherRef: string; private buttonRef: React.RefObject = createRef(); + private tagStoreRef: fbEmitter.EventSubscription; constructor(props: IProps) { super(props); @@ -77,14 +81,20 @@ export default class UserMenu extends React.Component { public componentDidMount() { this.dispatcherRef = defaultDispatcher.register(this.onAction); this.themeWatcherRef = SettingsStore.watchSetting("theme", null, this.onThemeChanged); + this.tagStoreRef = TagOrderStore.addListener(this.onTagStoreUpdate); } public componentWillUnmount() { if (this.themeWatcherRef) SettingsStore.unwatchSetting(this.themeWatcherRef); if (this.dispatcherRef) defaultDispatcher.unregister(this.dispatcherRef); OwnProfileStore.instance.off(UPDATE_EVENT, this.onProfileUpdate); + this.tagStoreRef.remove(); } + private onTagStoreUpdate = () => { + this.forceUpdate(); // we don't have anything useful in state to update + }; + private isUserOnDarkTheme(): boolean { const theme = SettingsStore.getValue("theme"); if (theme.startsWith("custom-")) { @@ -298,12 +308,34 @@ export default class UserMenu extends React.Component { const displayName = OwnProfileStore.instance.displayName || MatrixClientPeg.get().getUserId(); const avatarUrl = OwnProfileStore.instance.getHttpAvatarUrl(avatarSize); + const prototypeCommunityName = CommunityPrototypeStore.instance.getSelectedCommunityName(); + + let isPrototype = false; + let menuName = _t("User menu"); let name = {displayName}; let buttons = ( {/* masked image in CSS */} ); + if (prototypeCommunityName) { + name = ( +
+ {prototypeCommunityName} + {displayName} +
+ ); + menuName = _t("Community and user menu"); + isPrototype = true; + } else if (SettingsStore.getValue("feature_communities_v2_prototypes")) { + name = ( +
+ {_t("Home")} + {displayName} +
+ ); + isPrototype = true; + } if (this.props.isMinimized) { name = null; buttons = null; @@ -312,6 +344,7 @@ export default class UserMenu extends React.Component { const classes = classNames({ 'mx_UserMenu': true, 'mx_UserMenu_minimized': this.props.isMinimized, + 'mx_UserMenu_prototype': isPrototype, }); return ( @@ -320,7 +353,7 @@ export default class UserMenu extends React.Component { className={classes} onClick={this.onOpenMenuClick} inputRef={this.buttonRef} - label={_t("User menu")} + label={menuName} isExpanded={!!this.state.contextMenuPosition} onContextMenu={this.onContextMenu} > diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 0d01fd47c8..3589c2ba76 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -2129,6 +2129,7 @@ "All settings": "All settings", "Feedback": "Feedback", "User menu": "User menu", + "Community and user menu": "Community and user menu", "Could not load user profile": "Could not load user profile", "Verify this login": "Verify this login", "Session verified": "Session verified", From 02095389e7b82ceeaba192e6099689d93eada97d Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Fri, 28 Aug 2020 17:03:17 -0600 Subject: [PATCH 388/424] Add structure for mixed prototype UserMenu --- res/css/structures/_UserMenu.scss | 46 ++++++ src/components/structures/UserMenu.tsx | 197 +++++++++++++++++++------ src/i18n/strings/en_EN.json | 6 +- 3 files changed, 199 insertions(+), 50 deletions(-) diff --git a/res/css/structures/_UserMenu.scss b/res/css/structures/_UserMenu.scss index 08fb1f49f0..8c944935ed 100644 --- a/res/css/structures/_UserMenu.scss +++ b/res/css/structures/_UserMenu.scss @@ -135,6 +135,44 @@ limitations under the License. .mx_UserMenu_contextMenu { width: 247px; + // These override the styles already present on the user menu rather than try to + // define a new menu. They are specifically for the stacked menu when a community + // is being represented as a prototype. + &.mx_UserMenu_contextMenu_prototype { + padding-bottom: 16px; + + .mx_UserMenu_contextMenu_header { + padding-bottom: 0; + padding-top: 16px; + + &:nth-child(n + 2) { + padding-top: 8px; + } + } + + hr { + width: 85%; + opacity: 0.2; + border: none; + border-bottom: 1px solid $roomsublist-divider-color; + } + + &.mx_IconizedContextMenu { + > .mx_IconizedContextMenu_optionList { + margin-top: 4px; + + &::before { + border: none; + } + + > .mx_AccessibleButton { + padding-top: 2px; + padding-bottom: 2px; + } + } + } + } + &.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList_red { .mx_AccessibleButton { padding-top: 16px; @@ -239,4 +277,12 @@ limitations under the License. .mx_UserMenu_iconSignOut::before { mask-image: url('$(res)/img/element-icons/leave.svg'); } + + .mx_UserMenu_iconMembers::before { + mask-image: url('$(res)/img/element-icons/room/members.svg'); + } + + .mx_UserMenu_iconInvite::before { + mask-image: url('$(res)/img/element-icons/room/invite.svg'); + } } diff --git a/src/components/structures/UserMenu.tsx b/src/components/structures/UserMenu.tsx index a1039f23b9..5db5371842 100644 --- a/src/components/structures/UserMenu.tsx +++ b/src/components/structures/UserMenu.tsx @@ -199,9 +199,32 @@ export default class UserMenu extends React.Component { defaultDispatcher.dispatch({action: 'view_home_page'}); }; + private onCommunitySettingsClick = (ev: ButtonEvent) => { + ev.preventDefault(); + ev.stopPropagation(); + + console.log("TODO@onCommunitySettingsClick"); + }; + + private onCommunityMembersClick = (ev: ButtonEvent) => { + ev.preventDefault(); + ev.stopPropagation(); + + console.log("TODO@onCommunityMembersClick"); + }; + + private onCommunityInviteClick = (ev: ButtonEvent) => { + ev.preventDefault(); + ev.stopPropagation(); + + console.log("TODO@onCommunityInviteClick"); + }; + private renderContextMenu = (): React.ReactNode => { if (!this.state.contextMenuPosition) return null; + const prototypeCommunityName = CommunityPrototypeStore.instance.getSelectedCommunityName(); + let hostingLink; const signupLink = getHostingLink("user-context-menu"); if (signupLink) { @@ -235,22 +258,135 @@ export default class UserMenu extends React.Component { ); } + let primaryHeader = ( +
+ + {OwnProfileStore.instance.displayName} + + + {MatrixClientPeg.get().getUserId()} + +
+ ); + let primaryOptionList = ( + + + {homeButton} + this.onSettingsOpen(e, USER_NOTIFICATIONS_TAB)} + /> + this.onSettingsOpen(e, USER_SECURITY_TAB)} + /> + this.onSettingsOpen(e, null)} + /> + {/* */} + + + + + + + ); + let secondarySection = null; + + if (prototypeCommunityName) { + primaryHeader = ( +
+ + {prototypeCommunityName} + +
+ ); + primaryOptionList = ( + + + + + + ); + secondarySection = ( + +
+
+
+ + {OwnProfileStore.instance.displayName} + + + {MatrixClientPeg.get().getUserId()} + +
+
+ + this.onSettingsOpen(e, null)} + /> + + + + + +
+ ) + } + + const classes = classNames({ + "mx_UserMenu_contextMenu": true, + "mx_UserMenu_contextMenu_prototype": !!prototypeCommunityName, + }); + return
-
- - {OwnProfileStore.instance.displayName} - - - {MatrixClientPeg.get().getUserId()} - -
+ {primaryHeader} {
{hostingLink} - - {homeButton} - this.onSettingsOpen(e, USER_NOTIFICATIONS_TAB)} - /> - this.onSettingsOpen(e, USER_SECURITY_TAB)} - /> - this.onSettingsOpen(e, null)} - /> - {/* */} - - - - - + {primaryOptionList} + {secondarySection}
; }; diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 3589c2ba76..39b6061f27 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -2121,13 +2121,13 @@ "Uploading %(filename)s and %(count)s others|other": "Uploading %(filename)s and %(count)s others", "Uploading %(filename)s and %(count)s others|zero": "Uploading %(filename)s", "Uploading %(filename)s and %(count)s others|one": "Uploading %(filename)s and %(count)s other", - "Switch to light mode": "Switch to light mode", - "Switch to dark mode": "Switch to dark mode", - "Switch theme": "Switch theme", "Notification settings": "Notification settings", "Security & privacy": "Security & privacy", "All settings": "All settings", "Feedback": "Feedback", + "Switch to light mode": "Switch to light mode", + "Switch to dark mode": "Switch to dark mode", + "Switch theme": "Switch theme", "User menu": "User menu", "Community and user menu": "Community and user menu", "Could not load user profile": "Could not load user profile", From 9ba33c7f80e3c812825415923994eaf98181524f Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Sat, 29 Aug 2020 01:11:08 +0100 Subject: [PATCH 389/424] Fix eslint ts override tsx matching and delint --- .eslintrc.js | 2 +- src/ContentMessages.tsx | 20 ++++--- src/HtmlUtils.tsx | 11 +++- src/Modal.tsx | 8 +-- src/SlashCommands.tsx | 14 ++--- src/accessibility/KeyboardShortcuts.tsx | 2 +- src/accessibility/RovingTabIndex.tsx | 2 +- src/accessibility/Toolbar.tsx | 3 +- .../context_menu/ContextMenuTooltipButton.tsx | 2 +- .../roving/RovingAccessibleTooltipButton.tsx | 3 +- .../roving/RovingTabIndexWrapper.tsx | 1 - src/autocomplete/CommandProvider.tsx | 6 ++- src/autocomplete/CommunityProvider.tsx | 12 ++--- src/autocomplete/Components.tsx | 12 ++--- src/autocomplete/EmojiProvider.tsx | 6 ++- src/autocomplete/RoomProvider.tsx | 4 +- src/autocomplete/UserProvider.tsx | 15 ++++-- src/components/structures/ContextMenu.tsx | 3 +- src/components/structures/LeftPanel.tsx | 2 +- src/components/structures/LoggedInView.tsx | 37 +++++++------ src/components/structures/MatrixChat.tsx | 17 +++--- src/components/structures/RoomSearch.tsx | 3 +- src/components/structures/TabbedView.tsx | 1 - src/components/structures/UserMenu.tsx | 12 ++--- src/components/views/avatars/BaseAvatar.tsx | 4 +- .../views/avatars/DecoratedRoomAvatar.tsx | 2 +- src/components/views/avatars/GroupAvatar.tsx | 2 +- src/components/views/avatars/PulsedAvatar.tsx | 2 +- .../CommunityPrototypeInviteDialog.tsx | 52 ++++++++----------- .../CreateCommunityPrototypeDialog.tsx | 10 +++- src/components/views/dialogs/ShareDialog.tsx | 20 +++---- src/components/views/elements/Draggable.tsx | 4 +- .../views/elements/EventTilePreview.tsx | 14 +++-- src/components/views/elements/Field.tsx | 6 +-- .../elements/IRCTimelineProfileResizer.tsx | 7 ++- src/components/views/elements/InfoTooltip.tsx | 1 - src/components/views/elements/QRCode.tsx | 2 +- src/components/views/elements/Slider.tsx | 19 ++++--- .../views/elements/StyledCheckbox.tsx | 7 ++- .../views/right_panel/EncryptionInfo.tsx | 6 ++- .../views/right_panel/HeaderButtons.tsx | 16 +++--- .../views/right_panel/VerificationPanel.tsx | 23 ++++---- .../views/rooms/NotificationBadge.tsx | 1 + src/components/views/rooms/RoomList.tsx | 32 ++++++------ src/components/views/rooms/RoomSublist.tsx | 25 +++++---- src/components/views/rooms/RoomTile.tsx | 6 +-- src/components/views/rooms/TemporaryTile.tsx | 2 - .../views/settings/UpdateCheckButton.tsx | 2 +- .../tabs/user/AppearanceUserSettingsTab.tsx | 4 +- .../views/toasts/GenericExpiringToast.tsx | 10 +++- src/components/views/toasts/GenericToast.tsx | 8 ++- src/components/views/voip/CallView.tsx | 5 +- src/components/views/voip/IncomingCallBox.tsx | 3 +- src/languageHandler.tsx | 6 +-- 54 files changed, 268 insertions(+), 231 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index fc82e75ce2..bc2a142c2d 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -19,7 +19,7 @@ module.exports = { }, overrides: [{ - "files": ["src/**/*.{ts, tsx}"], + "files": ["src/**/*.{ts,tsx}"], "extends": ["matrix-org/ts"], "rules": { // We disable this while we're transitioning diff --git a/src/ContentMessages.tsx b/src/ContentMessages.tsx index 6f55a75d0c..eb8fff0eb1 100644 --- a/src/ContentMessages.tsx +++ b/src/ContentMessages.tsx @@ -70,6 +70,7 @@ interface IContent { interface IThumbnail { info: { + // eslint-disable-next-line camelcase thumbnail_info: { w: number; h: number; @@ -104,7 +105,12 @@ interface IAbortablePromise extends Promise { * @return {Promise} A promise that resolves with an object with an info key * and a thumbnail key. */ -function createThumbnail(element: ThumbnailableElement, inputWidth: number, inputHeight: number, mimeType: string): Promise { +function createThumbnail( + element: ThumbnailableElement, + inputWidth: number, + inputHeight: number, + mimeType: string, +): Promise { return new Promise((resolve) => { let targetWidth = inputWidth; let targetHeight = inputHeight; @@ -437,11 +443,13 @@ export default class ContentMessages { for (let i = 0; i < okFiles.length; ++i) { const file = okFiles[i]; if (!uploadAll) { - const {finished} = Modal.createTrackedDialog<[boolean, boolean]>('Upload Files confirmation', '', UploadConfirmDialog, { - file, - currentIndex: i, - totalFiles: okFiles.length, - }); + const {finished} = Modal.createTrackedDialog<[boolean, boolean]>('Upload Files confirmation', + '', UploadConfirmDialog, { + file, + currentIndex: i, + totalFiles: okFiles.length, + }, + ); const [shouldContinue, shouldUploadAll] = await finished; if (!shouldContinue) break; if (shouldUploadAll) { diff --git a/src/HtmlUtils.tsx b/src/HtmlUtils.tsx index 5d33645bb7..2ce9e40aa6 100644 --- a/src/HtmlUtils.tsx +++ b/src/HtmlUtils.tsx @@ -339,6 +339,7 @@ class HtmlHighlighter extends BaseHighlighter { } } +// eslint-disable-next-line @typescript-eslint/no-unused-vars class TextHighlighter extends BaseHighlighter { private key = 0; @@ -366,6 +367,7 @@ class TextHighlighter extends BaseHighlighter { interface IContent { format?: string; + // eslint-disable-next-line camelcase formatted_body?: string; body: string; } @@ -474,8 +476,13 @@ export function bodyToHtml(content: IContent, highlights: string[], opts: IOpts }); return isDisplayedWithHtml ? - : - { strippedBody }; + : { strippedBody }; } /** diff --git a/src/Modal.tsx b/src/Modal.tsx index 82ed33b794..0a36813961 100644 --- a/src/Modal.tsx +++ b/src/Modal.tsx @@ -151,7 +151,7 @@ export class ModalManager { prom: Promise, props?: IProps, className?: string, - options?: IOptions + options?: IOptions, ) { const modal: IModal = { onFinished: props ? props.onFinished : null, @@ -182,7 +182,7 @@ export class ModalManager { private getCloseFn( modal: IModal, - props: IProps + props: IProps, ): [IHandle["close"], IHandle["finished"]] { const deferred = defer(); return [async (...args: T) => { @@ -264,7 +264,7 @@ export class ModalManager { className?: string, isPriorityModal = false, isStaticModal = false, - options: IOptions = {} + options: IOptions = {}, ): IHandle { const {modal, closeDialog, onFinishedProm} = this.buildModal(prom, props, className, options); if (isPriorityModal) { @@ -287,7 +287,7 @@ export class ModalManager { private appendDialogAsync( prom: Promise, props?: IProps, - className?: string + className?: string, ): IHandle { const {modal, closeDialog, onFinishedProm} = this.buildModal(prom, props, className, {}); diff --git a/src/SlashCommands.tsx b/src/SlashCommands.tsx index d674634109..661ab74e6f 100644 --- a/src/SlashCommands.tsx +++ b/src/SlashCommands.tsx @@ -860,12 +860,12 @@ export const Commands = [ _t('WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and session' + ' %(deviceId)s is "%(fprint)s" which does not match the provided key ' + '"%(fingerprint)s". This could mean your communications are being intercepted!', - { - fprint, - userId, - deviceId, - fingerprint, - })); + { + fprint, + userId, + deviceId, + fingerprint, + })); } await cli.setDeviceVerified(userId, deviceId, true); @@ -879,7 +879,7 @@ export const Commands = [ { _t('The signing key you provided matches the signing key you received ' + 'from %(userId)s\'s session %(deviceId)s. Session marked as verified.', - {userId, deviceId}) + {userId, deviceId}) }

, diff --git a/src/accessibility/KeyboardShortcuts.tsx b/src/accessibility/KeyboardShortcuts.tsx index f527ab4a14..58d8124122 100644 --- a/src/accessibility/KeyboardShortcuts.tsx +++ b/src/accessibility/KeyboardShortcuts.tsx @@ -168,7 +168,7 @@ const shortcuts: Record = { key: Key.U, }], description: _td("Upload a file"), - } + }, ], [Categories.ROOM_LIST]: [ diff --git a/src/accessibility/RovingTabIndex.tsx b/src/accessibility/RovingTabIndex.tsx index 5a650d4b6e..b1dbb56a01 100644 --- a/src/accessibility/RovingTabIndex.tsx +++ b/src/accessibility/RovingTabIndex.tsx @@ -190,7 +190,7 @@ export const RovingTabIndexProvider: React.FC = ({children, handleHomeEn ev.preventDefault(); ev.stopPropagation(); } else if (onKeyDown) { - return onKeyDown(ev, state); + return onKeyDown(ev, context.state); } }, [context.state, onKeyDown, handleHomeEnd]); diff --git a/src/accessibility/Toolbar.tsx b/src/accessibility/Toolbar.tsx index 0e968461a8..cc2a1769c7 100644 --- a/src/accessibility/Toolbar.tsx +++ b/src/accessibility/Toolbar.tsx @@ -30,6 +30,7 @@ const Toolbar: React.FC = ({children, ...props}) => { const target = ev.target as HTMLElement; let handled = true; + // HOME and END are handled by RovingTabIndexProvider switch (ev.key) { case Key.ARROW_UP: case Key.ARROW_DOWN: @@ -47,8 +48,6 @@ const Toolbar: React.FC = ({children, ...props}) => { } break; - // HOME and END are handled by RovingTabIndexProvider - default: handled = false; } diff --git a/src/accessibility/context_menu/ContextMenuTooltipButton.tsx b/src/accessibility/context_menu/ContextMenuTooltipButton.tsx index abc5412100..49f57ca7b6 100644 --- a/src/accessibility/context_menu/ContextMenuTooltipButton.tsx +++ b/src/accessibility/context_menu/ContextMenuTooltipButton.tsx @@ -20,7 +20,7 @@ import React from "react"; import AccessibleTooltipButton from "../../components/views/elements/AccessibleTooltipButton"; -interface IProps extends React.ComponentProps { +interface IProps extends React.ComponentProps { // whether or not the context menu is currently open isExpanded: boolean; } diff --git a/src/accessibility/roving/RovingAccessibleTooltipButton.tsx b/src/accessibility/roving/RovingAccessibleTooltipButton.tsx index cc824fef22..2cb974d60e 100644 --- a/src/accessibility/roving/RovingAccessibleTooltipButton.tsx +++ b/src/accessibility/roving/RovingAccessibleTooltipButton.tsx @@ -20,7 +20,8 @@ import AccessibleTooltipButton from "../../components/views/elements/AccessibleT import {useRovingTabIndex} from "../RovingTabIndex"; import {Ref} from "./types"; -interface IProps extends Omit, "onFocus" | "inputRef" | "tabIndex"> { +type ATBProps = React.ComponentProps; +interface IProps extends Omit { inputRef?: Ref; } diff --git a/src/accessibility/roving/RovingTabIndexWrapper.tsx b/src/accessibility/roving/RovingTabIndexWrapper.tsx index c826b74497..5211f30215 100644 --- a/src/accessibility/roving/RovingTabIndexWrapper.tsx +++ b/src/accessibility/roving/RovingTabIndexWrapper.tsx @@ -16,7 +16,6 @@ limitations under the License. import React from "react"; -import AccessibleButton from "../../components/views/elements/AccessibleButton"; import {useRovingTabIndex} from "../RovingTabIndex"; import {FocusHandler, Ref} from "./types"; diff --git a/src/autocomplete/CommandProvider.tsx b/src/autocomplete/CommandProvider.tsx index e7a6f44536..3ff8ff0469 100644 --- a/src/autocomplete/CommandProvider.tsx +++ b/src/autocomplete/CommandProvider.tsx @@ -89,7 +89,11 @@ export default class CommandProvider extends AutocompleteProvider { renderCompletions(completions: React.ReactNode[]): React.ReactNode { return ( -
+
{ completions }
); diff --git a/src/autocomplete/CommunityProvider.tsx b/src/autocomplete/CommunityProvider.tsx index f34fee890e..031fcd6169 100644 --- a/src/autocomplete/CommunityProvider.tsx +++ b/src/autocomplete/CommunityProvider.tsx @@ -91,15 +91,15 @@ export default class CommunityProvider extends AutocompleteProvider { href: makeGroupPermalink(groupId), component: ( - + ), range, - })) - .slice(0, 4); + })).slice(0, 4); } return completions; } diff --git a/src/autocomplete/Components.tsx b/src/autocomplete/Components.tsx index 6ac2f4db14..4b0d35698d 100644 --- a/src/autocomplete/Components.tsx +++ b/src/autocomplete/Components.tsx @@ -34,9 +34,9 @@ export const TextualCompletion = forwardRef((props const {title, subtitle, description, className, ...restProps} = props; return (
{ title } { subtitle } @@ -53,9 +53,9 @@ export const PillCompletion = forwardRef((props, ref) const {title, subtitle, description, className, children, ...restProps} = props; return (
{ children } { title } diff --git a/src/autocomplete/EmojiProvider.tsx b/src/autocomplete/EmojiProvider.tsx index 147d68f5ff..eaca42b0dd 100644 --- a/src/autocomplete/EmojiProvider.tsx +++ b/src/autocomplete/EmojiProvider.tsx @@ -139,7 +139,11 @@ export default class EmojiProvider extends AutocompleteProvider { renderCompletions(completions: React.ReactNode[]): React.ReactNode { return ( -
+
{ completions }
); diff --git a/src/autocomplete/RoomProvider.tsx b/src/autocomplete/RoomProvider.tsx index b18b2d132c..defbc8c47f 100644 --- a/src/autocomplete/RoomProvider.tsx +++ b/src/autocomplete/RoomProvider.tsx @@ -110,9 +110,7 @@ export default class RoomProvider extends AutocompleteProvider { ), range, }; - }) - .filter((completion) => !!completion.completion && completion.completion.length > 0) - .slice(0, 4); + }).filter((completion) => !!completion.completion && completion.completion.length > 0).slice(0, 4); } return completions; } diff --git a/src/autocomplete/UserProvider.tsx b/src/autocomplete/UserProvider.tsx index c957b5e597..3bde4b1d07 100644 --- a/src/autocomplete/UserProvider.tsx +++ b/src/autocomplete/UserProvider.tsx @@ -71,8 +71,13 @@ export default class UserProvider extends AutocompleteProvider { } } - private onRoomTimeline = (ev: MatrixEvent, room: Room, toStartOfTimeline: boolean, removed: boolean, - data: IRoomTimelineData) => { + private onRoomTimeline = ( + ev: MatrixEvent, + room: Room, + toStartOfTimeline: boolean, + removed: boolean, + data: IRoomTimelineData, + ) => { if (!room) return; if (removed) return; if (room.roomId !== this.room.roomId) return; @@ -171,7 +176,11 @@ export default class UserProvider extends AutocompleteProvider { renderCompletions(completions: React.ReactNode[]): React.ReactNode { return ( -
+
{ completions }
); diff --git a/src/components/structures/ContextMenu.tsx b/src/components/structures/ContextMenu.tsx index 587ae2cb6b..64e0160d83 100644 --- a/src/components/structures/ContextMenu.tsx +++ b/src/components/structures/ContextMenu.tsx @@ -233,8 +233,7 @@ export class ContextMenu extends React.PureComponent { switch (ev.key) { case Key.TAB: case Key.ESCAPE: - // close on left and right arrows too for when it is a context menu on a - case Key.ARROW_LEFT: + case Key.ARROW_LEFT: // close on left and right arrows too for when it is a context menu on a case Key.ARROW_RIGHT: this.props.onFinished(); break; diff --git a/src/components/structures/LeftPanel.tsx b/src/components/structures/LeftPanel.tsx index 899dfe222d..1c2295384c 100644 --- a/src/components/structures/LeftPanel.tsx +++ b/src/components/structures/LeftPanel.tsx @@ -377,7 +377,7 @@ export default class LeftPanel extends React.Component { public render(): React.ReactNode { const tagPanel = !this.state.showTagPanel ? null : (
- + {SettingsStore.getValue("feature_custom_tags") ? : null}
); diff --git a/src/components/structures/LoggedInView.tsx b/src/components/structures/LoggedInView.tsx index d7f2c73a0b..e427eb92cb 100644 --- a/src/components/structures/LoggedInView.tsx +++ b/src/components/structures/LoggedInView.tsx @@ -43,11 +43,11 @@ import PlatformPeg from "../../PlatformPeg"; import { DefaultTagID } from "../../stores/room-list/models"; import { showToast as showSetPasswordToast, - hideToast as hideSetPasswordToast + hideToast as hideSetPasswordToast, } from "../../toasts/SetPasswordToast"; import { showToast as showServerLimitToast, - hideToast as hideServerLimitToast + hideToast as hideServerLimitToast, } from "../../toasts/ServerLimitToast"; import { Action } from "../../dispatcher/actions"; import LeftPanel from "./LeftPanel"; @@ -79,6 +79,7 @@ interface IProps { initialEventPixelOffset: number; leftDisabled: boolean; rightDisabled: boolean; + // eslint-disable-next-line camelcase page_type: string; autoJoin: boolean; thirdPartyInvite?: object; @@ -98,7 +99,9 @@ interface IProps { } interface IUsageLimit { + // eslint-disable-next-line camelcase limit_type: "monthly_active_user" | string; + // eslint-disable-next-line camelcase admin_contact?: string; } @@ -316,10 +319,10 @@ class LoggedInView extends React.Component { } }; - _calculateServerLimitToast(syncErrorData: IState["syncErrorData"], usageLimitEventContent?: IUsageLimit) { - const error = syncErrorData && syncErrorData.error && syncErrorData.error.errcode === "M_RESOURCE_LIMIT_EXCEEDED"; + _calculateServerLimitToast(syncError: IState["syncErrorData"], usageLimitEventContent?: IUsageLimit) { + const error = syncError && syncError.error && syncError.error.errcode === "M_RESOURCE_LIMIT_EXCEEDED"; if (error) { - usageLimitEventContent = syncErrorData.error.data; + usageLimitEventContent = syncError.error.data; } if (usageLimitEventContent) { @@ -620,18 +623,18 @@ class LoggedInView extends React.Component { switch (this.props.page_type) { case PageTypes.RoomView: pageElement = ; + ref={this._roomView} + autoJoin={this.props.autoJoin} + onRegistered={this.props.onRegistered} + thirdPartyInvite={this.props.thirdPartyInvite} + oobData={this.props.roomOobData} + viaServers={this.props.viaServers} + eventPixelOffset={this.props.initialEventPixelOffset} + key={this.props.currentRoomId || 'roomview'} + disabled={this.props.middleDisabled} + ConferenceHandler={this.props.ConferenceHandler} + resizeNotifier={this.props.resizeNotifier} + />; break; case PageTypes.MyGroups: diff --git a/src/components/structures/MatrixChat.tsx b/src/components/structures/MatrixChat.tsx index 9d51062b7d..176aaf95a3 100644 --- a/src/components/structures/MatrixChat.tsx +++ b/src/components/structures/MatrixChat.tsx @@ -69,7 +69,7 @@ import { ViewUserPayload } from "../../dispatcher/payloads/ViewUserPayload"; import { Action } from "../../dispatcher/actions"; import { showToast as showAnalyticsToast, - hideToast as hideAnalyticsToast + hideToast as hideAnalyticsToast, } from "../../toasts/AnalyticsToast"; import {showToast as showNotificationsToast} from "../../toasts/DesktopNotificationsToast"; import { OpenToTabPayload } from "../../dispatcher/payloads/OpenToTabPayload"; @@ -129,6 +129,7 @@ interface IScreen { params?: object; } +/* eslint-disable camelcase */ interface IRoomInfo { room_id?: string; room_alias?: string; @@ -140,6 +141,7 @@ interface IRoomInfo { oob_data?: object; via_servers?: string[]; } +/* eslint-enable camelcase */ interface IProps { // TODO type things better config: Record; @@ -165,6 +167,7 @@ interface IState { // the master view we are showing. view: Views; // What the LoggedInView would be showing if visible + // eslint-disable-next-line camelcase page_type?: PageTypes; // The ID of the room we're viewing. This is either populated directly // in the case where we view a room by ID or by RoomView when it resolves @@ -180,8 +183,11 @@ interface IState { middleDisabled: boolean; // the right panel's disabled state is tracked in its store. // Parameters used in the registration dance with the IS + // eslint-disable-next-line camelcase register_client_secret?: string; + // eslint-disable-next-line camelcase register_session_id?: string; + // eslint-disable-next-line camelcase register_id_sid?: string; // When showing Modal dialogs we need to set aria-hidden on the root app element // and disable it when there are no dialogs @@ -341,6 +347,7 @@ export default class MatrixChat extends React.PureComponent { } // TODO: [REACT-WARNING] Replace with appropriate lifecycle stage + // eslint-disable-next-line camelcase UNSAFE_componentWillUpdate(props, state) { if (this.shouldTrackPageChange(this.state, state)) { this.startPageChangeTimer(); @@ -610,8 +617,7 @@ export default class MatrixChat extends React.PureComponent { const UserSettingsDialog = sdk.getComponent("dialogs.UserSettingsDialog"); Modal.createTrackedDialog('User settings', '', UserSettingsDialog, {initialTabId: tabPayload.initialTabId}, - /*className=*/null, /*isPriority=*/false, /*isStatic=*/true - ); + /*className=*/null, /*isPriority=*/false, /*isStatic=*/true); // View the welcome or home page if we need something to look at this.viewSomethingBehindModal(); @@ -1080,7 +1086,7 @@ export default class MatrixChat extends React.PureComponent { title: _t("Leave room"), description: ( - { _t("Are you sure you want to leave the room '%(roomName)s'?", {roomName: roomToLeave.name}) } + { _t("Are you sure you want to leave the room '%(roomName)s'?", {roomName: roomToLeave.name}) } { warnings } ), @@ -1433,7 +1439,6 @@ export default class MatrixChat extends React.PureComponent { cli.on("crypto.warning", (type) => { switch (type) { case 'CRYPTO_WARNING_OLD_VERSION_DETECTED': - const brand = SdkConfig.get().brand; Modal.createTrackedDialog('Crypto migrated', '', ErrorDialog, { title: _t('Old cryptography data detected'), description: _t( @@ -1444,7 +1449,7 @@ export default class MatrixChat extends React.PureComponent { "in this version. This may also cause messages exchanged with this " + "version to fail. If you experience problems, log out and back in " + "again. To retain message history, export and re-import your keys.", - { brand }, + { brand: SdkConfig.get().brand }, ), }); break; diff --git a/src/components/structures/RoomSearch.tsx b/src/components/structures/RoomSearch.tsx index f6b8d42c30..768bc38d23 100644 --- a/src/components/structures/RoomSearch.tsx +++ b/src/components/structures/RoomSearch.tsx @@ -20,7 +20,6 @@ import classNames from "classnames"; import defaultDispatcher from "../../dispatcher/dispatcher"; import { _t } from "../../languageHandler"; import { ActionPayload } from "../../dispatcher/payloads"; -import { throttle } from 'lodash'; import { Key } from "../../Keyboard"; import AccessibleButton from "../views/elements/AccessibleButton"; import { Action } from "../../dispatcher/actions"; @@ -137,7 +136,7 @@ export default class RoomSearch extends React.PureComponent { }); let icon = ( -
+
); let input = ( { >
- - {OwnProfileStore.instance.displayName} - + + {OwnProfileStore.instance.displayName} + - {MatrixClientPeg.get().getUserId()} - + {MatrixClientPeg.get().getUserId()} +
{ urls, width = 40, height = 40, - resizeMethod = "crop", // eslint-disable-line no-unused-vars + resizeMethod = "crop", // eslint-disable-line @typescript-eslint/no-unused-vars defaultToInitialLetter = true, onClick, inputRef, diff --git a/src/components/views/avatars/DecoratedRoomAvatar.tsx b/src/components/views/avatars/DecoratedRoomAvatar.tsx index e6dadf676c..d7e012467b 100644 --- a/src/components/views/avatars/DecoratedRoomAvatar.tsx +++ b/src/components/views/avatars/DecoratedRoomAvatar.tsx @@ -126,7 +126,7 @@ export default class DecoratedRoomAvatar extends React.PureComponent { if (this.isUnmounted) return; - let newIcon = this.getPresenceIcon(); + const newIcon = this.getPresenceIcon(); if (newIcon !== this.state.icon) this.setState({icon: newIcon}); }; diff --git a/src/components/views/avatars/GroupAvatar.tsx b/src/components/views/avatars/GroupAvatar.tsx index e55e2e6fac..51327605c0 100644 --- a/src/components/views/avatars/GroupAvatar.tsx +++ b/src/components/views/avatars/GroupAvatar.tsx @@ -47,7 +47,7 @@ export default class GroupAvatar extends React.Component { render() { // extract the props we use from props so we can pass any others through // should consider adding this as a global rule in js-sdk? - /*eslint no-unused-vars: ["error", { "ignoreRestSiblings": true }]*/ + /* eslint @typescript-eslint/no-unused-vars: ["error", { "ignoreRestSiblings": true }] */ const {groupId, groupAvatarUrl, groupName, ...otherProps} = this.props; return ( diff --git a/src/components/views/avatars/PulsedAvatar.tsx b/src/components/views/avatars/PulsedAvatar.tsx index 94a6c87687..b4e876b9f6 100644 --- a/src/components/views/avatars/PulsedAvatar.tsx +++ b/src/components/views/avatars/PulsedAvatar.tsx @@ -25,4 +25,4 @@ const PulsedAvatar: React.FC = (props) => {
; }; -export default PulsedAvatar; \ No newline at end of file +export default PulsedAvatar; diff --git a/src/components/views/dialogs/CommunityPrototypeInviteDialog.tsx b/src/components/views/dialogs/CommunityPrototypeInviteDialog.tsx index 7a500cd053..4a454c8cbb 100644 --- a/src/components/views/dialogs/CommunityPrototypeInviteDialog.tsx +++ b/src/components/views/dialogs/CommunityPrototypeInviteDialog.tsx @@ -21,9 +21,6 @@ import { IDialogProps } from "./IDialogProps"; import Field from "../elements/Field"; import AccessibleButton from "../elements/AccessibleButton"; import { MatrixClientPeg } from "../../../MatrixClientPeg"; -import InfoTooltip from "../elements/InfoTooltip"; -import dis from "../../../dispatcher/dispatcher"; -import {showCommunityRoomInviteDialog} from "../../../RoomInvite"; import { arrayFastClone } from "../../../utils/arrays"; import SdkConfig from "../../../SdkConfig"; import { RoomMember } from "matrix-js-sdk/src/models/room-member"; @@ -31,7 +28,6 @@ import InviteDialog from "./InviteDialog"; import BaseAvatar from "../avatars/BaseAvatar"; import {getHttpUriForMxc} from "matrix-js-sdk/src/content-repo"; import {inviteMultipleToRoom, showAnyInviteErrors} from "../../../RoomInvite"; -import {humanizeTime} from "../../../utils/humanize"; import StyledCheckbox from "../elements/StyledCheckbox"; import Modal from "../../../Modal"; import ErrorDialog from "./ErrorDialog"; @@ -171,44 +167,38 @@ export default class CommunityPrototypeInviteDialog extends React.PureComponent< public render() { const emailAddresses = []; this.state.emailTargets.forEach((address, i) => { - emailAddresses.push( - this.onAddressChange(e, i)} - label={_t("Email address")} - placeholder={_t("Email address")} - onBlur={() => this.onAddressBlur(i)} - /> - ); + emailAddresses.push( this.onAddressChange(e, i)} + label={_t("Email address")} + placeholder={_t("Email address")} + onBlur={() => this.onAddressBlur(i)} + />); }); // Push a clean input - emailAddresses.push( - this.onAddressChange(e, emailAddresses.length)} - label={emailAddresses.length > 0 ? _t("Add another email") : _t("Email address")} - placeholder={emailAddresses.length > 0 ? _t("Add another email") : _t("Email address")} - /> - ); + emailAddresses.push( this.onAddressChange(e, emailAddresses.length)} + label={emailAddresses.length > 0 ? _t("Add another email") : _t("Email address")} + placeholder={emailAddresses.length > 0 ? _t("Add another email") : _t("Email address")} + />); let peopleIntro = null; - let people = []; + const people = []; if (this.state.showPeople) { const humansToPresent = this.state.people.slice(0, this.state.numPeople); humansToPresent.forEach((person, i) => { people.push(this.renderPerson(person, i)); }); if (humansToPresent.length < this.state.people.length) { - people.push( - {_t("Show more")} - ); + people.push({_t("Show more")}); } } if (this.state.people.length > 0) { diff --git a/src/components/views/dialogs/CreateCommunityPrototypeDialog.tsx b/src/components/views/dialogs/CreateCommunityPrototypeDialog.tsx index 58412c23d6..dbfc208583 100644 --- a/src/components/views/dialogs/CreateCommunityPrototypeDialog.tsx +++ b/src/components/views/dialogs/CreateCommunityPrototypeDialog.tsx @@ -164,7 +164,10 @@ export default class CreateCommunityPrototypeDialog extends React.PureComponent< ); if (this.state.error) { helpText = ( - + {this.state.error} ); @@ -205,7 +208,10 @@ export default class CreateCommunityPrototypeDialog extends React.PureComponent< ref={this.avatarUploadRef} accept="image/*" onChange={this.onAvatarChanged} /> - + {preview}
diff --git a/src/components/views/dialogs/ShareDialog.tsx b/src/components/views/dialogs/ShareDialog.tsx index 22f83d391c..e849f7efe3 100644 --- a/src/components/views/dialogs/ShareDialog.tsx +++ b/src/components/views/dialogs/ShareDialog.tsx @@ -186,8 +186,8 @@ export default class ShareDialog extends React.PureComponent { title = _t('Share Room Message'); checkbox =
{ _t('Link to selected message') } @@ -198,16 +198,18 @@ export default class ShareDialog extends React.PureComponent { const encodedUrl = encodeURIComponent(matrixToUrl); const BaseDialog = sdk.getComponent('views.dialogs.BaseDialog'); - return
- { matrixToUrl } diff --git a/src/components/views/elements/Draggable.tsx b/src/components/views/elements/Draggable.tsx index 3397fd901c..a6eb8323f3 100644 --- a/src/components/views/elements/Draggable.tsx +++ b/src/components/views/elements/Draggable.tsx @@ -34,7 +34,6 @@ export interface ILocationState { } export default class Draggable extends React.Component { - constructor(props: IProps) { super(props); @@ -77,5 +76,4 @@ export default class Draggable extends React.Component { render() { return
; } - -} \ No newline at end of file +} diff --git a/src/components/views/elements/EventTilePreview.tsx b/src/components/views/elements/EventTilePreview.tsx index 7d8b774955..98f6850e6b 100644 --- a/src/components/views/elements/EventTilePreview.tsx +++ b/src/components/views/elements/EventTilePreview.tsx @@ -39,6 +39,7 @@ interface IProps { className: string; } +/* eslint-disable camelcase */ interface IState { userId: string; displayname: string; @@ -72,7 +73,6 @@ export default class EventTilePreview extends React.Component { displayname: profileInfo.displayname, avatar_url, }); - } private fakeEvent({userId, displayname, avatar_url}: IState) { @@ -114,16 +114,14 @@ export default class EventTilePreview extends React.Component { public render() { const event = this.fakeEvent(this.state); - let className = classnames( - this.props.className, - { - "mx_IRCLayout": this.props.useIRCLayout, - "mx_GroupLayout": !this.props.useIRCLayout, - } - ); + const className = classnames(this.props.className, { + "mx_IRCLayout": this.props.useIRCLayout, + "mx_GroupLayout": !this.props.useIRCLayout, + }); return
; } } +/* eslint-enable camelcase */ diff --git a/src/components/views/elements/Field.tsx b/src/components/views/elements/Field.tsx index d9fd59dc11..d2869f68c8 100644 --- a/src/components/views/elements/Field.tsx +++ b/src/components/views/elements/Field.tsx @@ -198,11 +198,9 @@ export default class Field extends React.PureComponent { } } - - public render() { - const { - element, prefixComponent, postfixComponent, className, onValidate, children, + /* eslint @typescript-eslint/no-unused-vars: ["error", { "ignoreRestSiblings": true }] */ + const { element, prefixComponent, postfixComponent, className, onValidate, children, tooltipContent, forceValidity, tooltipClassName, list, ...inputProps} = this.props; // Set some defaults for the element diff --git a/src/components/views/elements/IRCTimelineProfileResizer.tsx b/src/components/views/elements/IRCTimelineProfileResizer.tsx index 1098d0293e..ecd63816de 100644 --- a/src/components/views/elements/IRCTimelineProfileResizer.tsx +++ b/src/components/views/elements/IRCTimelineProfileResizer.tsx @@ -78,7 +78,12 @@ export default class IRCTimelineProfileResizer extends React.Component = ({data, className, ...options}) => { return () => { cancelled = true; }; - }, [JSON.stringify(data), options]); + }, [JSON.stringify(data), options]); // eslint-disable-line react-hooks/exhaustive-deps return
{ dataUri ? {_t("QR : } diff --git a/src/components/views/elements/Slider.tsx b/src/components/views/elements/Slider.tsx index a88c581d07..b7c8e1b533 100644 --- a/src/components/views/elements/Slider.tsx +++ b/src/components/views/elements/Slider.tsx @@ -45,7 +45,7 @@ export default class Slider extends React.Component { // non linear slider. private offset(values: number[], value: number): number { // the index of the first number greater than value. - let closest = values.reduce((prev, curr) => { + const closest = values.reduce((prev, curr) => { return (value > curr ? prev + 1 : prev); }, 0); @@ -68,17 +68,16 @@ export default class Slider extends React.Component { const linearInterpolation = (value - closestLessValue) / (closestGreaterValue - closestLessValue); return 100 * (closest - 1 + linearInterpolation) * intervalWidth; - } render(): React.ReactNode { - const dots = this.props.values.map(v => - {} : () => this.props.onSelectionChange(v)} - key={v} - disabled={this.props.disabled} - />); + const dots = this.props.values.map(v => {} : () => this.props.onSelectionChange(v)} + key={v} + disabled={this.props.disabled} + />); let selection = null; @@ -93,7 +92,7 @@ export default class Slider extends React.Component { return
-
{} : this.onClick.bind(this)}/> +
{} : this.onClick.bind(this)} /> { selection }
diff --git a/src/components/views/elements/StyledCheckbox.tsx b/src/components/views/elements/StyledCheckbox.tsx index be983828ff..f8d2665d07 100644 --- a/src/components/views/elements/StyledCheckbox.tsx +++ b/src/components/views/elements/StyledCheckbox.tsx @@ -17,8 +17,6 @@ limitations under the License. import React from "react"; import { randomString } from "matrix-js-sdk/src/randomstring"; -const CHECK_BOX_SVG = require("../../../../res/img/feather-customised/check.svg"); - interface IProps extends React.InputHTMLAttributes { } @@ -39,13 +37,14 @@ export default class StyledCheckbox extends React.PureComponent } public render() { + /* eslint @typescript-eslint/no-unused-vars: ["error", { "ignoreRestSiblings": true }] */ const { children, className, ...otherProps } = this.props; return