{ _t("Send a Direct Message") }
diff --git a/src/components/structures/LoggedInView.tsx b/src/components/structures/LoggedInView.tsx
index 03277a84f9..ab5b93794c 100644
--- a/src/components/structures/LoggedInView.tsx
+++ b/src/components/structures/LoggedInView.tsx
@@ -88,6 +88,7 @@ interface IProps {
currentUserId?: string;
currentGroupId?: string;
currentGroupIsNew?: boolean;
+ justRegistered?: boolean;
}
interface IUsageLimit {
@@ -573,7 +574,7 @@ class LoggedInView extends React.Component {
break;
case PageTypes.HomePage:
- pageElement = ;
+ pageElement = ;
break;
case PageTypes.UserView:
diff --git a/src/components/structures/MatrixChat.tsx b/src/components/structures/MatrixChat.tsx
index f37da03e47..22cd73eff7 100644
--- a/src/components/structures/MatrixChat.tsx
+++ b/src/components/structures/MatrixChat.tsx
@@ -62,7 +62,7 @@ import DMRoomMap from '../../utils/DMRoomMap';
import ThemeWatcher from "../../settings/watchers/ThemeWatcher";
import { FontWatcher } from '../../settings/watchers/FontWatcher';
import { storeRoomAliasInCache } from '../../RoomAliasCache';
-import { defer, IDeferred } from "../../utils/promise";
+import { defer, IDeferred, sleep } from "../../utils/promise";
import ToastStore from "../../stores/ToastStore";
import * as StorageManager from "../../utils/StorageManager";
import type LoggedInViewType from "./LoggedInView";
@@ -201,6 +201,7 @@ interface IState {
roomOobData?: object;
viaServers?: string[];
pendingInitialSync?: boolean;
+ justRegistered?: boolean;
}
export default class MatrixChat extends React.PureComponent {
@@ -479,6 +480,7 @@ export default class MatrixChat extends React.PureComponent {
}
const newState = {
currentUserId: null,
+ justRegistered: false,
};
Object.assign(newState, state);
this.setState(newState);
@@ -669,7 +671,7 @@ export default class MatrixChat extends React.PureComponent {
this.viewWelcome();
break;
case 'view_home_page':
- this.viewHome();
+ this.viewHome(payload.justRegistered);
break;
case 'view_start_chat_or_reuse':
this.chatCreateOrReuse(payload.user_id);
@@ -953,10 +955,11 @@ export default class MatrixChat extends React.PureComponent {
this.themeWatcher.recheck();
}
- private viewHome() {
+ private viewHome(justRegistered = false) {
// The home page requires the "logged in" view, so we'll set that.
this.setStateForNewView({
view: Views.LOGGED_IN,
+ justRegistered,
});
this.setPage(PageTypes.HomePage);
this.notifyNewScreen('home');
@@ -1190,7 +1193,7 @@ export default class MatrixChat extends React.PureComponent {
if (welcomeUserRoom === null) {
// We didn't redirect to the welcome user room, so show
// the homepage.
- dis.dispatch({action: 'view_home_page'});
+ dis.dispatch({action: 'view_home_page', justRegistered: true});
}
} else if (ThreepidInviteStore.instance.pickBestInvite()) {
// The user has a 3pid invite pending - show them that
@@ -1203,7 +1206,7 @@ export default class MatrixChat extends React.PureComponent {
} else {
// The user has just logged in after registering,
// so show the homepage.
- dis.dispatch({action: 'view_home_page'});
+ dis.dispatch({action: 'view_home_page', justRegistered: true});
}
} else {
this.showScreenAfterLogin();
@@ -1211,6 +1214,8 @@ export default class MatrixChat extends React.PureComponent {
StorageManager.tryPersistStorage();
+ // defer the following actions by 30 seconds to not throw them at the user immediately
+ await sleep(30);
if (SettingsStore.getValue("showCookieBar") &&
(Analytics.canEnable() || CountlyAnalytics.instance.canEnable())
) {
@@ -1343,8 +1348,8 @@ export default class MatrixChat extends React.PureComponent {
this.firstSyncComplete = true;
this.firstSyncPromise.resolve();
- if (Notifier.shouldShowPrompt()) {
- showNotificationsToast();
+ if (Notifier.shouldShowPrompt() && !MatrixClientPeg.userRegisteredWithinLastHours(24)) {
+ showNotificationsToast(false);
}
dis.fire(Action.FocusComposer);
@@ -1407,6 +1412,7 @@ export default class MatrixChat extends React.PureComponent {
const dft = new DecryptionFailureTracker((total, errorCode) => {
Analytics.trackEvent('E2E', 'Decryption failure', errorCode, total);
+ CountlyAnalytics.instance.track("decryption_failure", { errorCode }, null, { sum: total });
}, (errorCode) => {
// Map JS-SDK error codes to tracker codes for aggregation
switch (errorCode) {
diff --git a/src/components/structures/MessagePanel.js b/src/components/structures/MessagePanel.js
index e2e3592536..375545f819 100644
--- a/src/components/structures/MessagePanel.js
+++ b/src/components/structures/MessagePanel.js
@@ -30,6 +30,8 @@ import {_t} from "../../languageHandler";
import {haveTileForEvent} from "../views/rooms/EventTile";
import {textForEvent} from "../../TextForEvent";
import IRCTimelineProfileResizer from "../views/elements/IRCTimelineProfileResizer";
+import DMRoomMap from "../../utils/DMRoomMap";
+import NewRoomIntro from "../views/rooms/NewRoomIntro";
const CONTINUATION_MAX_INTERVAL = 5 * 60 * 1000; // 5 minutes
const continuedTypes = ['m.sticker', 'm.room.message'];
@@ -952,15 +954,25 @@ class CreationGrouper {
}).reduce((a, b) => a.concat(b), []);
// Get sender profile from the latest event in the summary as the m.room.create doesn't contain one
const ev = this.events[this.events.length - 1];
+
+ let summaryText;
+ const roomId = ev.getRoomId();
+ const creator = ev.sender ? ev.sender.name : ev.getSender();
+ if (DMRoomMap.shared().getUserIdForRoomId(roomId)) {
+ summaryText = _t("%(creator)s created this DM.", { creator });
+ } else {
+ summaryText = _t("%(creator)s created and configured the room.", { creator });
+ }
+
+ ret.push();
+
ret.push(
{ eventTiles }
,
diff --git a/src/components/structures/RoomStatusBar.js b/src/components/structures/RoomStatusBar.js
index e390be6979..e6d2985073 100644
--- a/src/components/structures/RoomStatusBar.js
+++ b/src/components/structures/RoomStatusBar.js
@@ -41,9 +41,6 @@ export default class RoomStatusBar extends React.Component {
static propTypes = {
// the room this statusbar is representing.
room: PropTypes.object.isRequired,
- // This is true when the user is alone in the room, but has also sent a message.
- // Used to suggest to the user to invite someone
- sentMessageAndIsAlone: PropTypes.bool,
// The active call in the room, if any (means we show the call bar
// along with the status of the call)
@@ -68,10 +65,6 @@ export default class RoomStatusBar extends React.Component {
// 'you are alone' bar
onInviteClick: PropTypes.func,
- // callback for when the user clicks on the 'stop warning me' button in the
- // 'you are alone' bar
- onStopWarningClick: PropTypes.func,
-
// callback for when we do something that changes the size of the
// status bar. This is used to trigger a re-layout in the parent
// component.
@@ -159,10 +152,7 @@ export default class RoomStatusBar extends React.Component {
// changed - so we use '0' to indicate normal size, and other values to
// indicate other sizes.
_getSize() {
- if (this._shouldShowConnectionError() ||
- this._showCallBar() ||
- this.props.sentMessageAndIsAlone
- ) {
+ if (this._shouldShowConnectionError() || this._showCallBar()) {
return STATUS_BAR_EXPANDED;
} else if (this.state.unsentMessages.length > 0) {
return STATUS_BAR_EXPANDED_LARGE;
@@ -325,24 +315,6 @@ export default class RoomStatusBar extends React.Component {
);
}
- // If you're alone in the room, and have sent a message, suggest to invite someone
- if (this.props.sentMessageAndIsAlone && !this.props.isPeeking) {
- return (
-
- { _t("There's no one else here! Would you like to invite others " +
- "or stop warning about the empty room?",
- {},
- {
- 'inviteText': (sub) =>
- { sub },
- 'nowarnText': (sub) =>
- { sub },
- },
- ) }
-
- );
- }
-
return null;
}
diff --git a/src/components/structures/RoomView.tsx b/src/components/structures/RoomView.tsx
index 160e9c0ec6..de7ae347dd 100644
--- a/src/components/structures/RoomView.tsx
+++ b/src/components/structures/RoomView.tsx
@@ -71,9 +71,11 @@ import RoomHeader from "../views/rooms/RoomHeader";
import TintableSvg from "../views/elements/TintableSvg";
import {XOR} from "../../@types/common";
import { IThreepidInvite } from "../../stores/ThreepidInviteStore";
-import { CallState, CallType, MatrixCall } from "matrix-js-sdk/lib/webrtc/call";
+import { CallState, CallType, MatrixCall } from "matrix-js-sdk/src/webrtc/call";
import WidgetStore from "../../stores/WidgetStore";
import {UPDATE_EVENT} from "../../stores/AsyncStore";
+import Notifier from "../../Notifier";
+import {showToast as showNotificationsToast} from "../../toasts/DesktopNotificationsToast";
const DEBUG = false;
let debuglog = function(msg: string) {};
@@ -148,7 +150,6 @@ export interface IState {
guestsCanJoin: boolean;
canPeek: boolean;
showApps: boolean;
- isAlone: boolean;
isPeeking: boolean;
showingPinned: boolean;
showReadReceipts: boolean;
@@ -221,7 +222,6 @@ export default class RoomView extends React.Component {
guestsCanJoin: false,
canPeek: false,
showApps: false,
- isAlone: false,
isPeeking: false,
showingPinned: false,
showReadReceipts: true,
@@ -703,9 +703,8 @@ export default class RoomView extends React.Component {
private onAction = payload => {
switch (payload.action) {
- case 'message_send_failed':
case 'message_sent':
- this.checkIfAlone(this.state.room);
+ this.checkDesktopNotifications();
break;
case 'post_sticker_message':
this.injectSticker(
@@ -1023,33 +1022,17 @@ export default class RoomView extends React.Component {
}
// rate limited because a power level change will emit an event for every member in the room.
- private updateRoomMembers = rateLimitedFunc((dueToMember) => {
+ private updateRoomMembers = rateLimitedFunc(() => {
this.updateDMState();
-
- let memberCountInfluence = 0;
- if (dueToMember && dueToMember.membership === "invite" && this.state.room.getInvitedMemberCount() === 0) {
- // A member got invited, but the room hasn't detected that change yet. Influence the member
- // count by 1 to counteract this.
- memberCountInfluence = 1;
- }
- this.checkIfAlone(this.state.room, memberCountInfluence);
-
this.updateE2EStatus(this.state.room);
}, 500);
- private checkIfAlone(room: Room, countInfluence?: number) {
- let warnedAboutLonelyRoom = false;
- if (localStorage) {
- warnedAboutLonelyRoom = Boolean(localStorage.getItem('mx_user_alone_warned_' + this.state.room.roomId));
+ private checkDesktopNotifications() {
+ const memberCount = this.state.room.getJoinedMemberCount() + this.state.room.getInvitedMemberCount();
+ // if they are not alone prompt the user about notifications so they don't miss replies
+ if (memberCount > 1 && Notifier.shouldShowPrompt()) {
+ showNotificationsToast(true);
}
- if (warnedAboutLonelyRoom) {
- if (this.state.isAlone) this.setState({isAlone: false});
- return;
- }
-
- let joinedOrInvitedMemberCount = room.getJoinedMemberCount() + room.getInvitedMemberCount();
- if (countInfluence) joinedOrInvitedMemberCount += countInfluence;
- this.setState({isAlone: joinedOrInvitedMemberCount === 1});
}
private updateDMState() {
@@ -1084,14 +1067,6 @@ export default class RoomView extends React.Component {
action: 'view_invite',
roomId: this.state.room.roomId,
});
- this.setState({isAlone: false}); // there's a good chance they'll invite someone
- };
-
- private onStopAloneWarningClick = () => {
- if (localStorage) {
- localStorage.setItem('mx_user_alone_warned_' + this.state.room.roomId, String(true));
- }
- this.setState({isAlone: false});
};
private onJoinButtonClicked = () => {
@@ -1140,16 +1115,9 @@ export default class RoomView extends React.Component {
ev.dataTransfer.dropEffect = 'none';
- const items = [...ev.dataTransfer.items];
- if (items.length >= 1) {
- const isDraggingFiles = items.every(function(item) {
- return item.kind == 'file';
- });
-
- if (isDraggingFiles) {
- this.setState({ draggingFile: true });
- ev.dataTransfer.dropEffect = 'copy';
- }
+ if (ev.dataTransfer.types.includes("Files") || ev.dataTransfer.types.includes("application/x-moz-file")) {
+ this.setState({ draggingFile: true });
+ ev.dataTransfer.dropEffect = 'copy';
}
};
@@ -1790,12 +1758,10 @@ export default class RoomView extends React.Component {
isStatusAreaExpanded = this.state.statusBarVisible;
statusBar = ;
diff --git a/src/components/structures/UserMenu.tsx b/src/components/structures/UserMenu.tsx
index 4847d41fa8..75208b8cfe 100644
--- a/src/components/structures/UserMenu.tsx
+++ b/src/components/structures/UserMenu.tsx
@@ -190,11 +190,18 @@ export default class UserMenu extends React.Component {
this.setState({contextMenuPosition: null}); // also close the menu
};
- private onSignOutClick = (ev: ButtonEvent) => {
+ private onSignOutClick = async (ev: ButtonEvent) => {
ev.preventDefault();
ev.stopPropagation();
- Modal.createTrackedDialog('Logout from LeftPanel', '', LogoutDialog);
+ const cli = MatrixClientPeg.get();
+ if (!cli || !cli.isCryptoEnabled() || !(await cli.exportRoomKeys())?.length) {
+ // log out without user prompt if they have no local megolm sessions
+ dis.dispatch({action: 'logout'});
+ } else {
+ Modal.createTrackedDialog('Logout from LeftPanel', '', LogoutDialog);
+ }
+
this.setState({contextMenuPosition: null}); // also close the menu
};
@@ -203,6 +210,7 @@ export default class UserMenu extends React.Component {
ev.stopPropagation();
defaultDispatcher.dispatch({action: 'view_home_page'});
+ this.setState({contextMenuPosition: null}); // also close the menu
};
private onCommunitySettingsClick = (ev: ButtonEvent) => {
diff --git a/src/components/structures/auth/ForgotPassword.js b/src/components/structures/auth/ForgotPassword.js
index 54d4b5de83..f9f5263f7e 100644
--- a/src/components/structures/auth/ForgotPassword.js
+++ b/src/components/structures/auth/ForgotPassword.js
@@ -314,7 +314,7 @@ export default class ForgotPassword extends React.Component {
CountlyAnalytics.instance.track("onboarding_forgot_password_newPassword_focus")}
diff --git a/src/components/views/auth/CountryDropdown.js b/src/components/views/auth/CountryDropdown.js
index 37b1967c48..3296b574a4 100644
--- a/src/components/views/auth/CountryDropdown.js
+++ b/src/components/views/auth/CountryDropdown.js
@@ -123,7 +123,7 @@ export default class CountryDropdown extends React.Component {
const options = displayedCountries.map((country) => {
return
);
@@ -663,12 +669,21 @@ export default class InviteDialog extends React.PureComponent {
};
_onKeyDown = (e) => {
- // when the field is empty and the user hits backspace remove the right-most target
- if (!e.target.value && !this.state.busy && this.state.targets.length > 0 && e.key === Key.BACKSPACE &&
- !e.ctrlKey && !e.shiftKey && !e.metaKey
- ) {
+ if (this.state.busy) return;
+ const value = e.target.value.trim();
+ const hasModifiers = e.ctrlKey || e.shiftKey || e.metaKey;
+ if (!value && this.state.targets.length > 0 && e.key === Key.BACKSPACE && !hasModifiers) {
+ // when the field is empty and the user hits backspace remove the right-most target
e.preventDefault();
this._removeMember(this.state.targets[this.state.targets.length - 1]);
+ } else if (value && e.key === Key.ENTER && !hasModifiers) {
+ // when the user hits enter with something in their field try to convert it
+ e.preventDefault();
+ this._convertFilter();
+ } else if (value && e.key === Key.SPACE && !hasModifiers && value.includes("@") && !value.includes(" ")) {
+ // when the user hits space and their input looks like an e-mail/MXID then try to convert it
+ e.preventDefault();
+ this._convertFilter();
}
};
@@ -811,6 +826,10 @@ export default class InviteDialog extends React.PureComponent {
filterText = ""; // clear the filter when the user accepts a suggestion
}
this.setState({targets, filterText});
+
+ if (this._editorRef && this._editorRef.current) {
+ this._editorRef.current.focus();
+ }
};
_removeMember = (member: Member) => {
@@ -820,6 +839,10 @@ export default class InviteDialog extends React.PureComponent {
targets.splice(idx, 1);
this.setState({targets});
}
+
+ if (this._editorRef && this._editorRef.current) {
+ this._editorRef.current.focus();
+ }
};
_onPaste = async (e) => {
@@ -829,7 +852,7 @@ export default class InviteDialog extends React.PureComponent {
return;
}
- // Prevent the text being pasted into the textarea
+ // Prevent the text being pasted into the input
e.preventDefault();
// Process it as a list of addresses to add instead
@@ -1024,8 +1047,8 @@ export default class InviteDialog extends React.PureComponent {
));
const input = (
-
);
return (
@@ -1103,7 +1127,7 @@ export default class InviteDialog extends React.PureComponent {
if (identityServersEnabled) {
helpText = _t(
- "Start a conversation with someone using their name, username (like ) or email address.",
+ "Start a conversation with someone using their name, email address or username (like ).",
{},
{userId: () => {
return (
@@ -1158,7 +1182,7 @@ export default class InviteDialog extends React.PureComponent {
if (identityServersEnabled) {
helpText = _t(
- "Invite someone using their name, username (like ), email address or " +
+ "Invite someone using their name, email address, username (like ) or " +
"share this room.",
{},
{
diff --git a/src/components/views/dialogs/ModalWidgetDialog.tsx b/src/components/views/dialogs/ModalWidgetDialog.tsx
index 16cf89c340..652c04c043 100644
--- a/src/components/views/dialogs/ModalWidgetDialog.tsx
+++ b/src/components/views/dialogs/ModalWidgetDialog.tsx
@@ -23,6 +23,11 @@ import {
IModalWidgetCloseRequest,
IModalWidgetOpenRequestData,
IModalWidgetReturnData,
+ ISetModalButtonEnabledActionRequest,
+ IWidgetApiAcknowledgeResponseData,
+ IWidgetApiErrorResponseData,
+ BuiltInModalButtonID,
+ ModalButtonID,
ModalButtonKind,
Widget,
WidgetApiFromWidgetAction,
@@ -31,6 +36,7 @@ import {StopGapWidgetDriver} from "../../../stores/widgets/StopGapWidgetDriver";
import {MatrixClientPeg} from "../../../MatrixClientPeg";
import RoomViewStore from "../../../stores/RoomViewStore";
import {OwnProfileStore} from "../../../stores/OwnProfileStore";
+import { arrayFastClone } from "../../../utils/arrays";
interface IProps {
widgetDefinition: IModalWidgetOpenRequestData;
@@ -40,15 +46,19 @@ interface IProps {
interface IState {
messaging?: ClientWidgetApi;
+ disabledButtonIds: ModalButtonID[];
}
const MAX_BUTTONS = 3;
export default class ModalWidgetDialog extends React.PureComponent {
private readonly widget: Widget;
+ private readonly possibleButtons: ModalButtonID[];
private appFrame: React.RefObject = React.createRef();
- state: IState = {};
+ state: IState = {
+ disabledButtonIds: [],
+ };
constructor(props) {
super(props);
@@ -58,6 +68,7 @@ export default class ModalWidgetDialog extends React.PureComponent b.id);
}
public componentDidMount() {
@@ -79,12 +90,35 @@ export default class ModalWidgetDialog extends React.PureComponent {
this.state.messaging.once("ready", this.onReady);
this.state.messaging.on(`action:${WidgetApiFromWidgetAction.CloseModalWidget}`, this.onWidgetClose);
+ this.state.messaging.on(`action:${WidgetApiFromWidgetAction.SetModalButtonEnabled}`, this.onButtonEnableToggle);
};
private onWidgetClose = (ev: CustomEvent) => {
this.props.onFinished(true, ev.detail.data);
}
+ private onButtonEnableToggle = (ev: CustomEvent) => {
+ ev.preventDefault();
+ const isClose = ev.detail.data.button === BuiltInModalButtonID.Close;
+ if (isClose || !this.possibleButtons.includes(ev.detail.data.button)) {
+ return this.state.messaging.transport.reply(ev.detail, {
+ error: {message: "Invalid button"},
+ } as IWidgetApiErrorResponseData);
+ }
+
+ let buttonIds: ModalButtonID[];
+ if (ev.detail.data.enabled) {
+ buttonIds = arrayFastClone(this.state.disabledButtonIds).filter(i => i !== ev.detail.data.button);
+ } else {
+ // use a set to swap the operation to avoid memory leaky arrays.
+ const tempSet = new Set(this.state.disabledButtonIds);
+ tempSet.add(ev.detail.data.button);
+ buttonIds = Array.from(tempSet);
+ }
+ this.setState({disabledButtonIds: buttonIds});
+ this.state.messaging.transport.reply(ev.detail, {} as IWidgetApiAcknowledgeResponseData);
+ };
+
public render() {
const templated = this.widget.getCompleteUrl({
currentRoomId: RoomViewStore.getRoomId(),
diff --git a/src/components/views/elements/AccessibleButton.tsx b/src/components/views/elements/AccessibleButton.tsx
index ae822204df..e634057a21 100644
--- a/src/components/views/elements/AccessibleButton.tsx
+++ b/src/components/views/elements/AccessibleButton.tsx
@@ -39,7 +39,7 @@ interface IProps extends React.InputHTMLAttributes {
tabIndex?: number;
disabled?: boolean;
className?: string;
- onClick?(e?: ButtonEvent): void;
+ onClick(e?: ButtonEvent): void;
}
interface IAccessibleButtonProps extends React.InputHTMLAttributes {
diff --git a/src/components/views/elements/IconButton.js b/src/components/views/elements/IconButton.js
deleted file mode 100644
index ef7b4a8399..0000000000
--- a/src/components/views/elements/IconButton.js
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-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 AccessibleButton from "./AccessibleButton";
-
-export default function IconButton(props) {
- const {icon, className, ...restProps} = props;
-
- let newClassName = (className || "") + " mx_IconButton";
- newClassName = newClassName + " mx_IconButton_icon_" + icon;
-
- const allProps = Object.assign({}, restProps, {className: newClassName});
-
- return React.createElement(AccessibleButton, allProps);
-}
-
-IconButton.propTypes = Object.assign({
- icon: PropTypes.string,
-}, AccessibleButton.propTypes);
diff --git a/src/components/views/elements/MiniAvatarUploader.tsx b/src/components/views/elements/MiniAvatarUploader.tsx
new file mode 100644
index 0000000000..b5e117b42a
--- /dev/null
+++ b/src/components/views/elements/MiniAvatarUploader.tsx
@@ -0,0 +1,90 @@
+/*
+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, {useContext, useRef, useState} from 'react';
+import classNames from 'classnames';
+
+import AccessibleButton from "./AccessibleButton";
+import Tooltip from './Tooltip';
+import MatrixClientContext from "../../../contexts/MatrixClientContext";
+import {useTimeout} from "../../../hooks/useTimeout";
+
+export const AVATAR_SIZE = 52;
+
+interface IProps {
+ hasAvatar: boolean;
+ noAvatarLabel?: string;
+ hasAvatarLabel?: string;
+ setAvatarUrl(url: string): Promise;
+}
+
+const MiniAvatarUploader: React.FC = ({ hasAvatar, hasAvatarLabel, noAvatarLabel, setAvatarUrl, children }) => {
+ const cli = useContext(MatrixClientContext);
+ const [busy, setBusy] = useState(false);
+ const [hover, setHover] = useState(false);
+ const [show, setShow] = useState(false);
+
+ useTimeout(() => {
+ setShow(true);
+ }, 3000); // show after 3 seconds
+ useTimeout(() => {
+ setShow(false);
+ }, 13000); // hide after being shown for 10 seconds
+
+ const uploadRef = useRef();
+
+ const label = (hasAvatar || busy) ? hasAvatarLabel : noAvatarLabel;
+
+ return
+ {
+ if (!ev.target.files?.length) return;
+ setBusy(true);
+ const file = ev.target.files[0];
+ const uri = await cli.uploadContent(file);
+ await setAvatarUrl(uri);
+ setBusy(false);
+ }}
+ accept="image/*"
+ />
+
+ {
+ uploadRef.current.click();
+ }}
+ onMouseOver={() => setHover(true)}
+ onMouseLeave={() => setHover(false)}
+ >
+ { children }
+
+
+
+ ;
+};
+
+export default MiniAvatarUploader;
diff --git a/src/components/views/elements/Validation.tsx b/src/components/views/elements/Validation.tsx
index 55e5714719..31f7c866b1 100644
--- a/src/components/views/elements/Validation.tsx
+++ b/src/components/views/elements/Validation.tsx
@@ -33,6 +33,7 @@ interface IRule {
interface IArgs {
rules: IRule[];
description(this: T, derivedData: D): React.ReactChild;
+ hideDescriptionIfValid?: boolean;
deriveData?(data: Data): Promise;
}
@@ -54,6 +55,8 @@ export interface IValidationResult {
* @param {Function} description
* Function that returns a string summary of the kind of value that will
* meet the validation rules. Shown at the top of the validation feedback.
+ * @param {Boolean} hideDescriptionIfValid
+ * If true, don't show the description if the validation passes validation.
* @param {Function} deriveData
* Optional function that returns a Promise to an object of generic type D.
* The result of this Promise is passed to rule methods `skip`, `test`, `valid`, and `invalid`.
@@ -71,7 +74,9 @@ export interface IValidationResult {
* A validation function that takes in the current input value and returns
* the overall validity and a feedback UI that can be rendered for more detail.
*/
-export default function withValidation({ description, deriveData, rules }: IArgs) {
+export default function withValidation({
+ description, hideDescriptionIfValid, deriveData, rules,
+}: IArgs) {
return async function onValidate({ value, focused, allowEmpty = true }: IFieldState): Promise {
if (!value && allowEmpty) {
return {
@@ -156,7 +161,7 @@ export default function withValidation({ description, d
}
let summary;
- if (description) {
+ if (description && (details || !hideDescriptionIfValid)) {
// We're setting `this` to whichever component holds the validation
// function. That allows rules to access the state of the component.
const content = description.call(this, derivedData);
diff --git a/src/components/views/messages/EncryptionEvent.js b/src/components/views/messages/EncryptionEvent.js
deleted file mode 100644
index a9ce10d202..0000000000
--- a/src/components/views/messages/EncryptionEvent.js
+++ /dev/null
@@ -1,63 +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 PropTypes from 'prop-types';
-import { _t } from '../../../languageHandler';
-import { MatrixClientPeg } from '../../../MatrixClientPeg';
-
-export default class EncryptionEvent extends React.Component {
- render() {
- const {mxEvent} = this.props;
-
- let body;
- let classes = "mx_EventTile_bubble mx_cryptoEvent mx_cryptoEvent_icon";
- const isRoomEncrypted = MatrixClientPeg.get().isRoomEncrypted(mxEvent.getRoomId());
- if (mxEvent.getContent().algorithm === 'm.megolm.v1.aes-sha2' && isRoomEncrypted) {
- body =
-
{_t("Encryption enabled")}
-
- {_t(
- "Messages in this room are end-to-end encrypted. " +
- "Learn more & verify this user in their user profile.",
- )}
-
-
;
- } else if (isRoomEncrypted) {
- body =
-
{_t("Encryption enabled")}
-
- {_t("Ignored attempt to disable encryption")}
-
-
;
- } else {
- body =
-
{_t("Encryption not enabled")}
-
{_t("The encryption used by this room isn't supported.")}
);
- }
-}
-
-EncryptionEvent.propTypes = {
- /* the MatrixEvent to show */
- mxEvent: PropTypes.object.isRequired,
-};
diff --git a/src/components/views/messages/EncryptionEvent.tsx b/src/components/views/messages/EncryptionEvent.tsx
new file mode 100644
index 0000000000..3af9c463c9
--- /dev/null
+++ b/src/components/views/messages/EncryptionEvent.tsx
@@ -0,0 +1,68 @@
+/*
+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, {forwardRef, useContext} from 'react';
+import {MatrixEvent} from "matrix-js-sdk/src/models/event";
+
+import { _t } from '../../../languageHandler';
+import { MatrixClientPeg } from '../../../MatrixClientPeg';
+import EventTileBubble from "./EventTileBubble";
+import MatrixClientContext from "../../../contexts/MatrixClientContext";
+import DMRoomMap from "../../../utils/DMRoomMap";
+
+interface IProps {
+ mxEvent: MatrixEvent;
+}
+
+const EncryptionEvent = forwardRef(({mxEvent}, ref) => {
+ const cli = useContext(MatrixClientContext);
+ const roomId = mxEvent.getRoomId();
+ const isRoomEncrypted = MatrixClientPeg.get().isRoomEncrypted(roomId);
+
+ if (mxEvent.getContent().algorithm === 'm.megolm.v1.aes-sha2' && isRoomEncrypted) {
+ let subtitle: string;
+ const dmPartner = DMRoomMap.shared().getUserIdForRoomId(roomId);
+ if (dmPartner) {
+ const displayName = cli?.getRoom(roomId)?.getMember(dmPartner)?.rawDisplayName || dmPartner;
+ subtitle = _t("Messages here are end-to-end encrypted. " +
+ "Verify %(displayName)s in their profile - tap on their avatar.", { displayName });
+ } else {
+ subtitle = _t("Messages in this room are end-to-end encrypted. " +
+ "When people join, you can verify them in their profile, just tap on their avatar.");
+ }
+
+ return ;
+ } else if (isRoomEncrypted) {
+ return ;
+ }
+
+ return ;
+});
+
+export default EncryptionEvent;
diff --git a/src/components/views/messages/EventTileBubble.tsx b/src/components/views/messages/EventTileBubble.tsx
new file mode 100644
index 0000000000..f797a97a3d
--- /dev/null
+++ b/src/components/views/messages/EventTileBubble.tsx
@@ -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.
+*/
+
+import React, {forwardRef, ReactNode} from "react";
+import classNames from "classnames";
+
+interface IProps {
+ className: string;
+ title: string;
+ subtitle?: ReactNode;
+}
+
+const EventTileBubble = forwardRef(({ className, title, subtitle, children }, ref) => {
+ return
+
{ title }
+ { subtitle &&
{ subtitle }
}
+ { children }
+
;
+});
+
+export default EventTileBubble;
diff --git a/src/components/views/messages/MJitsiWidgetEvent.tsx b/src/components/views/messages/MJitsiWidgetEvent.tsx
index 3d191209f9..82aa32d3b7 100644
--- a/src/components/views/messages/MJitsiWidgetEvent.tsx
+++ b/src/components/views/messages/MJitsiWidgetEvent.tsx
@@ -18,6 +18,7 @@ import React from 'react';
import { MatrixEvent } from "matrix-js-sdk/src/models/event";
import { _t } from "../../../languageHandler";
import WidgetStore from "../../../stores/WidgetStore";
+import EventTileBubble from "./EventTileBubble";
interface IProps {
mxEvent: MatrixEvent;
@@ -40,37 +41,24 @@ export default class MJitsiWidgetEvent extends React.PureComponent {
if (!url) {
// removed
- return (
-
-
- {_t('Video conference ended by %(senderName)s', {senderName})}
-
+ { _t("You will not be able to undo this change as you are promoting the user " +
+ "to have the same power level as yourself.") }
+ { _t("Are you sure?") }
+
,
+ button: _t("Continue"),
+ });
- const roomId = user.roomId;
- const target = user.userId;
-
- const powerLevelEvent = room.currentState.getStateEvents("m.room.power_levels", "");
- if (!powerLevelEvent) return;
-
- if (!powerLevelEvent.getContent().users) {
- _applyPowerChange(roomId, target, powerLevel, powerLevelEvent);
- return;
- }
-
- const myUserId = cli.getUserId();
+ const [confirmed] = await finished;
+ if (!confirmed) return;
+ } else if (myUserId === target) {
// If we are changing our own PL it can only ever be decreasing, which we cannot reverse.
- if (myUserId === target) {
- try {
- if (!(await warnSelfDemote())) return;
- } catch (e) {
- console.error("Failed to warn about self demotion: ", e);
- }
- await _applyPowerChange(roomId, target, powerLevel, powerLevelEvent);
- return;
+ try {
+ if (!(await warnSelfDemote())) return;
+ } catch (e) {
+ console.error("Failed to warn about self demotion: ", e);
}
-
- const myPower = powerLevelEvent.getContent().users[myUserId];
- if (parseInt(myPower) === powerLevel) {
- const {finished} = Modal.createTrackedDialog('Promote to PL100 Warning', '', QuestionDialog, {
- title: _t("Warning!"),
- description:
-
- { _t("You will not be able to undo this change as you are promoting the user " +
- "to have the same power level as yourself.") }
- { _t("Are you sure?") }
-
);
};
@@ -1339,13 +1304,17 @@ const BasicUserInfo: React.FC<{
}
let memberDetails;
- if (room && member.roomId) {
- memberDetails = ;
+ // hide the Roles section for DMs as it doesn't make sense there
+ if (room && member.roomId && !DMRoomMap.shared().getUserIdForRoomId(member.roomId)) {
+ memberDetails =
+
{ _t("Role") }
+
+
;
}
// only display the devices list if our client supports E2E
@@ -1415,12 +1384,7 @@ const BasicUserInfo: React.FC<{
);
return
- { memberDetails &&
-
-
- { memberDetails }
-
-
}
+ { memberDetails }
{ securitySection }
{
+ const cli = useContext(MatrixClientContext);
+ const {room, roomId} = useContext(RoomContext);
+
+ const dmPartner = DMRoomMap.shared().getUserIdForRoomId(roomId);
+ let body;
+ if (dmPartner) {
+ let caption;
+ if ((room.getJoinedMemberCount() + room.getInvitedMemberCount()) === 2) {
+ caption = _t("Only the two of you are in this conversation, unless either of you invites anyone to join.");
+ }
+
+ const member = room?.getMember(dmPartner);
+ const displayName = member?.rawDisplayName || dmPartner;
+ body =
+ {
+ defaultDispatcher.dispatch({
+ action: Action.ViewUser,
+ // XXX: We should be using a real member object and not assuming what the receiver wants.
+ member: member || {userId: dmPartner},
+ });
+ }} />
+
+
{ room.name }
+
+
{_t("This is the beginning of your direct message history with .", {}, {
+ displayName: () => { displayName },
+ })}
+ { caption &&
{ caption }
}
+ ;
+ } else {
+ const topic = room.currentState.getStateEvents(EventType.RoomTopic, "")?.getContent()?.topic;
+ const canAddTopic = room.currentState.maySendStateEvent(EventType.RoomTopic, cli.getUserId());
+
+ const onTopicClick = () => {
+ dis.dispatch({
+ action: "open_room_settings",
+ room_id: roomId,
+ }, true);
+ // focus the topic field to help the user find it as it'll gain an outline
+ setImmediate(() => {
+ window.document.getElementById("profileTopic").focus();
+ });
+ };
+
+ let topicText;
+ if (canAddTopic && topic) {
+ topicText = _t("Topic: %(topic)s (edit)", { topic }, {
+ a: sub => { sub },
+ });
+ } else if (topic) {
+ topicText = _t("Topic: %(topic)s ", { topic });
+ } else if (canAddTopic) {
+ topicText = _t("Add a topic to help people know what it is about.", {}, {
+ a: sub => { sub },
+ });
+ }
+
+ const creator = room.currentState.getStateEvents(EventType.RoomCreate, "")?.getSender();
+ const creatorName = room?.getMember(creator)?.rawDisplayName || creator;
+
+ let createdText;
+ if (creator === cli.getUserId()) {
+ createdText = _t("You created this room.");
+ } else {
+ createdText = _t("%(displayName)s created this room.", {
+ displayName: creatorName,
+ });
+ }
+
+ const onInviteClick = () => {
+ dis.dispatch({ action: "view_invite", roomId });
+ };
+
+ const avatarUrl = room.currentState.getStateEvents(EventType.RoomAvatar, "")?.getContent()?.url;
+ body =
+ cli.sendStateEvent(roomId, EventType.RoomAvatar, { url }, '')}
+ >
+
+
+
+
{ room.name }
+
+
{createdText} {_t("This is the start of .", {}, {
+ roomName: () => { room.name },
+ })}
+
{topicText}
+
+
+ {_t("Invite to this room")}
+
+
+ ;
+ }
+
+ return
+ { body }
+
;
+};
+
+export default NewRoomIntro;
diff --git a/src/components/views/rooms/RoomList.tsx b/src/components/views/rooms/RoomList.tsx
index 3a4d27e666..d952c137cd 100644
--- a/src/components/views/rooms/RoomList.tsx
+++ b/src/components/views/rooms/RoomList.tsx
@@ -332,6 +332,9 @@ export default class RoomList extends React.PureComponent {
return p;
}, [] as TagID[]);
+ // show a skeleton UI if the user is in no rooms
+ const showSkeleton = Object.values(RoomListStore.instance.unfilteredLists).every(list => !list?.length);
+
for (const orderedTagId of tagOrder) {
const orderedRooms = this.state.sublists[orderedTagId] || [];
const extraTiles = orderedTagId === DefaultTagID.Invite ? this.renderCommunityInvites() : null;
@@ -356,6 +359,7 @@ export default class RoomList extends React.PureComponent {
addRoomContextMenu={aesthetics.addRoomContextMenu}
isMinimized={this.props.isMinimized}
onResize={this.props.onResize}
+ showSkeleton={showSkeleton}
extraBadTilesThatShouldntExist={extraTiles}
/>);
}
@@ -365,13 +369,28 @@ export default class RoomList extends React.PureComponent {
public render() {
let explorePrompt: JSX.Element;
- if (!this.props.isMinimized && RoomListStore.instance.getFirstNameFilterCondition()) {
- explorePrompt =
-
{_t("Can't see what you’re looking for?")}
-
- {_t("Explore all public rooms")}
-
-
;
+ if (!this.props.isMinimized) {
+ if (RoomListStore.instance.getFirstNameFilterCondition()) {
+ explorePrompt =
+
{_t("Can't see what you’re looking for?")}
+
+ {_t("Explore all public rooms")}
+
+
;
+ } else if (Object.values(this.state.sublists).some(list => list.length > 0)) {
+ const unfilteredLists = RoomListStore.instance.unfilteredLists
+ const unfilteredRooms = unfilteredLists[DefaultTagID.Untagged] || [];
+ const unfilteredHistorical = unfilteredLists[DefaultTagID.Archived] || [];
+ // show a prompt to join/create rooms if the user is in 0 rooms and no historical
+ if (unfilteredRooms.length < 1 && unfilteredHistorical < 1) {
+ explorePrompt =
+
{_t("Use the + to make a new room or explore existing ones below")}
+
+ {_t("Explore all public rooms")}
+
+
;
+ }
+ }
}
const sublists = this.renderSublists();
diff --git a/src/components/views/rooms/RoomSublist.tsx b/src/components/views/rooms/RoomSublist.tsx
index d93de47d6b..b5ae3285b9 100644
--- a/src/components/views/rooms/RoomSublist.tsx
+++ b/src/components/views/rooms/RoomSublist.tsx
@@ -71,6 +71,7 @@ interface IProps {
isMinimized: boolean;
tagId: TagID;
onResize: () => void;
+ showSkeleton?: boolean;
// TODO: Don't use this. It's for community invites, and community invites shouldn't be here.
// You should feel bad if you use this.
@@ -877,6 +878,8 @@ export default class RoomSublist extends React.Component {
);
+ } else if (this.props.showSkeleton && this.state.isExpanded) {
+ content = ;
}
return (
diff --git a/src/components/views/rooms/SendMessageComposer.js b/src/components/views/rooms/SendMessageComposer.js
index 9438cceef5..78b1dd85db 100644
--- a/src/components/views/rooms/SendMessageComposer.js
+++ b/src/components/views/rooms/SendMessageComposer.js
@@ -308,6 +308,9 @@ export default class SendMessageComposer extends React.Component {
const startTime = CountlyAnalytics.getTimestamp();
const {roomId} = this.props.room;
const content = createMessageContent(this.model, this.props.permalinkCreator, replyToEvent);
+ // don't bother sending an empty message
+ if (!content.body.trim()) return;
+
const prom = this.context.sendMessage(roomId, content);
if (replyToEvent) {
// Clear reply_to_event as we put the message into the queue
diff --git a/src/components/views/settings/EventIndexPanel.js b/src/components/views/settings/EventIndexPanel.js
index 8598a2a966..1fe18cb207 100644
--- a/src/components/views/settings/EventIndexPanel.js
+++ b/src/components/views/settings/EventIndexPanel.js
@@ -129,11 +129,13 @@ export default class EventIndexPanel extends React.Component {
eventIndexingSettings = (
- {_t( "Securely cache encrypted messages locally for them " +
- "to appear in search results, using ")
- } {formatBytes(this.state.eventIndexSize, 0)}
- {_t( " to store messages from ")}
- {formatCountLong(this.state.roomCount)} {_t("rooms.")}
+ {_t("Securely cache encrypted messages locally for them " +
+ "to appear in search results, using %(size)s to store messages from %(count)s rooms.",
+ {
+ size: formatBytes(this.state.eventIndexSize, 0),
+ count: formatCountLong(this.state.roomCount),
+ },
+ )}
diff --git a/src/components/views/settings/Notifications.js b/src/components/views/settings/Notifications.js
index cd87803d84..1337991dc3 100644
--- a/src/components/views/settings/Notifications.js
+++ b/src/components/views/settings/Notifications.js
@@ -31,6 +31,7 @@ import SdkConfig from "../../../SdkConfig";
import LabelledToggleSwitch from "../elements/LabelledToggleSwitch";
import AccessibleButton from "../elements/AccessibleButton";
import {SettingLevel} from "../../../settings/SettingLevel";
+import {UIFeature} from "../../../settings/UIFeature";
// TODO: this "view" component still has far too much application logic in it,
// which should be factored out to other files.
@@ -783,14 +784,14 @@ export default class Notifications extends React.Component {
const emailThreepids = this.state.threepids.filter((tp) => tp.medium === "email");
let emailNotificationsRows;
- if (emailThreepids.length === 0) {
- emailNotificationsRows =
- { _t('Add an email address to configure email notifications') }
-
+ { _t('Add an email address to configure email notifications') }
+
;
}
// Build external push rules
diff --git a/src/components/views/settings/ProfileSettings.js b/src/components/views/settings/ProfileSettings.js
index 92851ccaa0..c11a2e3a5e 100644
--- a/src/components/views/settings/ProfileSettings.js
+++ b/src/components/views/settings/ProfileSettings.js
@@ -84,6 +84,9 @@ export default class ProfileSettings extends React.Component {
}
if (this.state.avatarFile) {
+ console.log(
+ `Uploading new avatar, ${this.state.avatarFile.name} of type ${this.state.avatarFile.type},` +
+ ` (${this.state.avatarFile.size}) bytes`);
const uri = await client.uploadContent(this.state.avatarFile);
await client.setAvatarUrl(uri);
newState.avatarUrl = client.mxcUrlToHttp(uri, 96, 96, 'crop', false);
@@ -93,6 +96,7 @@ export default class ProfileSettings extends React.Component {
await client.setAvatarUrl(""); // use empty string as Synapse 500s on undefined
}
} catch (err) {
+ console.log("Failed to save profile", err);
Modal.createTrackedDialog('Failed to save profile', '', ErrorDialog, {
title: _t("Failed to save your profile"),
description: ((err && err.message) ? err.message : _t("The operation could not be completed")),
diff --git a/src/components/views/voip/CallPreview.tsx b/src/components/views/voip/CallPreview.tsx
index ca2b510f20..3d9235792b 100644
--- a/src/components/views/voip/CallPreview.tsx
+++ b/src/components/views/voip/CallPreview.tsx
@@ -24,7 +24,7 @@ import dis from '../../../dispatcher/dispatcher';
import { ActionPayload } from '../../../dispatcher/payloads';
import PersistentApp from "../elements/PersistentApp";
import SettingsStore from "../../../settings/SettingsStore";
-import { CallState, MatrixCall } from 'matrix-js-sdk/lib/webrtc/call';
+import { CallState, MatrixCall } from 'matrix-js-sdk/src/webrtc/call';
interface IProps {
}
diff --git a/src/components/views/voip/CallView.tsx b/src/components/views/voip/CallView.tsx
index 3e1833a903..653a72cca0 100644
--- a/src/components/views/voip/CallView.tsx
+++ b/src/components/views/voip/CallView.tsx
@@ -15,17 +15,18 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-import React, {createRef} from 'react';
+import React, { createRef } from 'react';
import Room from 'matrix-js-sdk/src/models/room';
import dis from '../../../dispatcher/dispatcher';
import CallHandler from '../../../CallHandler';
import {MatrixClientPeg} from '../../../MatrixClientPeg';
import { _t } from '../../../languageHandler';
import AccessibleButton from '../elements/AccessibleButton';
-import VideoView from "./VideoView";
+import VideoFeed, { VideoFeedType } from "./VideoFeed";
import RoomAvatar from "../avatars/RoomAvatar";
import PulsedAvatar from '../avatars/PulsedAvatar';
-import { CallState, MatrixCall } from 'matrix-js-sdk/lib/webrtc/call';
+import { CallState, CallType, MatrixCall } from 'matrix-js-sdk/src/webrtc/call';
+import { CallEvent } from 'matrix-js-sdk/src/webrtc/call';
interface IProps {
// js-sdk room object. If set, we will only show calls for the given
@@ -50,53 +51,104 @@ interface IProps {
}
interface IState {
- call: any;
+ call: MatrixCall;
+ isLocalOnHold: boolean,
+}
+
+function getFullScreenElement() {
+ return (
+ document.fullscreenElement ||
+ // moz omitted because firefox supports this unprefixed now (webkit here for safari)
+ document.webkitFullscreenElement ||
+ document.msFullscreenElement
+ );
+}
+
+function requestFullscreen(element: Element) {
+ const method = (
+ element.requestFullscreen ||
+ // moz omitted since firefox supports unprefixed now
+ element.webkitRequestFullScreen ||
+ element.msRequestFullscreen
+ );
+ if (method) method.call(element);
+}
+
+function exitFullscreen() {
+ const exitMethod = (
+ document.exitFullscreen ||
+ document.webkitExitFullscreen ||
+ document.msExitFullscreen
+ );
+ if (exitMethod) exitMethod.call(document);
}
export default class CallView extends React.Component {
- private videoref: React.RefObject;
private dispatcherRef: string;
- public call: any;
+ private container = createRef();
constructor(props: IProps) {
super(props);
+ const call = this.getCall();
this.state = {
- // the call this view is displaying (if any)
- call: null,
- };
+ call,
+ isLocalOnHold: call ? call.isLocalOnHold() : null,
+ }
- this.videoref = createRef();
+ this.updateCallListeners(null, call);
}
public componentDidMount() {
this.dispatcherRef = dis.register(this.onAction);
- this.showCall();
}
public componentWillUnmount() {
+ this.updateCallListeners(this.state.call, null);
dis.unregister(this.dispatcherRef);
}
private onAction = (payload) => {
- // don't filter out payloads for room IDs other than props.room because
- // we may be interested in the conf 1:1 room
- if (payload.action !== 'call_state') {
- return;
+ switch (payload.action) {
+ case 'video_fullscreen': {
+ if (!this.container.current) {
+ return;
+ }
+ if (payload.fullscreen) {
+ requestFullscreen(this.container.current);
+ } else if (getFullScreenElement()) {
+ exitFullscreen();
+ }
+ break;
+ }
+ case 'call_state': {
+ const newCall = this.getCall();
+ if (newCall !== this.state.call) {
+ this.updateCallListeners(this.state.call, newCall);
+ this.setState({
+ call: newCall,
+ isLocalOnHold: newCall ? newCall.isLocalOnHold() : null,
+ });
+ }
+ if (!newCall && getFullScreenElement()) {
+ exitFullscreen();
+ }
+ break;
+ }
}
- this.showCall();
};
- private showCall() {
+ private getCall(): MatrixCall {
let call: MatrixCall;
if (this.props.room) {
const roomId = this.props.room.roomId;
call = CallHandler.sharedInstance().getCallForRoom(roomId);
- if (this.call) {
- this.setState({ call: call });
- }
+ // We don't currently show voice calls in this view when in the room:
+ // they're represented in the room status bar at the bottom instead
+ // (but this will all change with the new designs)
+ if (call && call.type == CallType.Voice) call = null;
} else {
call = CallHandler.sharedInstance().getAnyActiveCall();
// Ignore calls if we can't get the room associated with them.
@@ -106,65 +158,68 @@ export default class CallView extends React.Component {
if (MatrixClientPeg.get().getRoom(call.roomId) === null) {
call = null;
}
- this.setState({ call: call });
}
- if (call) {
- if (this.getVideoView()) {
- call.setLocalVideoElement(this.getVideoView().getLocalVideoElement());
- call.setRemoteVideoElement(this.getVideoView().getRemoteVideoElement());
-
- // always use a separate element for audio stream playback.
- // this is to let us move CallView around the DOM without interrupting remote audio
- // during playback, by having the audio rendered by a top-level element.
- // rather than being rendered by the main remoteVideo element.
- call.setRemoteAudioElement(this.getVideoView().getRemoteAudioElement());
- }
- }
- if (call && call.type === "video" && call.state !== CallState.Ended && call.state !== CallState.Ringing) {
- this.getVideoView().getLocalVideoElement().style.display = "block";
- this.getVideoView().getRemoteVideoElement().style.display = "block";
- } else {
- this.getVideoView().getLocalVideoElement().style.display = "none";
- this.getVideoView().getRemoteVideoElement().style.display = "none";
- dis.dispatch({action: 'video_fullscreen', fullscreen: false});
- }
-
- if (this.props.onResize) {
- this.props.onResize();
- }
+ if (call && call.state == CallState.Ended) return null;
+ return call;
}
- private getVideoView() {
- return this.videoref.current;
+ private updateCallListeners(oldCall: MatrixCall, newCall: MatrixCall) {
+ if (oldCall === newCall) return;
+
+ if (oldCall) oldCall.removeListener(CallEvent.HoldUnhold, this.onCallHoldUnhold);
+ if (newCall) newCall.on(CallEvent.HoldUnhold, this.onCallHoldUnhold);
}
+ private onCallHoldUnhold = () => {
+ this.setState({
+ isLocalOnHold: this.state.call ? this.state.call.isLocalOnHold() : null,
+ });
+ };
+
public render() {
let view: React.ReactNode;
- if (this.state.call && this.state.call.type === "voice") {
- const client = MatrixClientPeg.get();
- const callRoom = client.getRoom(this.state.call.roomId);
- view =
-
-
+
+
+
+
+
{callRoom.name}
+
{ caption }
+
+ ;
+ } else {
+ // For video calls, we currently ignore the call hold state altogether
+ // (the video will just go black)
+
+ // if we're fullscreen, we don't want to set a maxHeight on the video element.
+ const maxVideoHeight = getFullScreenElement() ? null : this.props.maxVideoHeight;
+ view =
;
}
}
-
diff --git a/src/components/views/voip/VideoFeed.js b/src/components/views/voip/VideoFeed.js
deleted file mode 100644
index a0330f8cb1..0000000000
--- a/src/components/views/voip/VideoFeed.js
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
-Copyright 2015, 2016 OpenMarket 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, {createRef} from 'react';
-import PropTypes from 'prop-types';
-
-export default class VideoFeed extends React.Component {
- static propTypes = {
- // maxHeight style attribute for the video element
- maxHeight: PropTypes.number,
-
- // a callback which is called when the video element is resized
- // due to a change in video metadata
- onResize: PropTypes.func,
- };
-
- constructor(props) {
- super(props);
-
- this._vid = createRef();
- }
-
- componentDidMount() {
- this._vid.current.addEventListener('resize', this.onResize);
- }
-
- componentWillUnmount() {
- this._vid.current.removeEventListener('resize', this.onResize);
- }
-
- onResize = (e) => {
- if (this.props.onResize) {
- this.props.onResize(e);
- }
- };
-
- render() {
- return (
-
- );
- }
-}
-
diff --git a/src/components/views/voip/VideoFeed.tsx b/src/components/views/voip/VideoFeed.tsx
new file mode 100644
index 0000000000..9dba9fa9c8
--- /dev/null
+++ b/src/components/views/voip/VideoFeed.tsx
@@ -0,0 +1,80 @@
+/*
+Copyright 2015, 2016, 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 classnames from 'classnames';
+import { MatrixCall } from 'matrix-js-sdk/src/webrtc/call';
+import React, {createRef} from 'react';
+import SettingsStore from "../../../settings/SettingsStore";
+
+export enum VideoFeedType {
+ Local,
+ Remote,
+}
+
+interface IProps {
+ call: MatrixCall,
+
+ type: VideoFeedType,
+
+ // maxHeight style attribute for the video element
+ maxHeight?: number,
+
+ // a callback which is called when the video element is resized
+ // due to a change in video metadata
+ onResize?: (e: Event) => void,
+}
+
+export default class VideoFeed extends React.Component {
+ private vid = createRef();
+
+ componentDidMount() {
+ this.vid.current.addEventListener('resize', this.onResize);
+ if (this.props.type === VideoFeedType.Local) {
+ this.props.call.setLocalVideoElement(this.vid.current);
+ } else {
+ this.props.call.setRemoteVideoElement(this.vid.current);
+ }
+ }
+
+ componentWillUnmount() {
+ this.vid.current.removeEventListener('resize', this.onResize);
+ }
+
+ onResize = (e) => {
+ if (this.props.onResize) {
+ this.props.onResize(e);
+ }
+ };
+
+ render() {
+ const videoClasses = {
+ mx_VideoFeed: true,
+ mx_VideoFeed_local: this.props.type === VideoFeedType.Local,
+ mx_VideoFeed_remote: this.props.type === VideoFeedType.Remote,
+ mx_VideoFeed_mirror: (
+ this.props.type === VideoFeedType.Local &&
+ SettingsStore.getValue('VideoView.flipVideoHorizontally')
+ ),
+ };
+
+ let videoStyle = {};
+ if (this.props.maxHeight) videoStyle = { maxHeight: this.props.maxHeight };
+
+ return
+
+
;
+ }
+}
diff --git a/src/components/views/voip/VideoView.js b/src/components/views/voip/VideoView.js
deleted file mode 100644
index 374a12e82d..0000000000
--- a/src/components/views/voip/VideoView.js
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
-Copyright 2015, 2016 OpenMarket 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, {createRef} from 'react';
-import ReactDOM from 'react-dom';
-import PropTypes from 'prop-types';
-import classNames from 'classnames';
-
-import * as sdk from '../../../index';
-import dis from '../../../dispatcher/dispatcher';
-
-import SettingsStore from "../../../settings/SettingsStore";
-
-function getFullScreenElement() {
- return (
- document.fullscreenElement ||
- document.mozFullScreenElement ||
- document.webkitFullscreenElement ||
- document.msFullscreenElement
- );
-}
-
-export default class VideoView extends React.Component {
- static propTypes = {
- // maxHeight style attribute for the video element
- maxHeight: PropTypes.number,
-
- // a callback which is called when the user clicks on the video div
- onClick: PropTypes.func,
-
- // a callback which is called when the video element is resized due to
- // a change in video metadata
- onResize: PropTypes.func,
- };
-
- constructor(props) {
- super(props);
-
- this._local = createRef();
- this._remote = createRef();
- }
-
- componentDidMount() {
- this.dispatcherRef = dis.register(this.onAction);
- }
-
- componentWillUnmount() {
- dis.unregister(this.dispatcherRef);
- }
-
- getRemoteVideoElement = () => {
- return ReactDOM.findDOMNode(this._remote.current);
- };
-
- getRemoteAudioElement = () => {
- // this needs to be somewhere at the top of the DOM which
- // always exists to avoid audio interruptions.
- // Might as well just use DOM.
- const remoteAudioElement = document.getElementById("remoteAudio");
- if (!remoteAudioElement) {
- console.error("Failed to find remoteAudio element - cannot play audio!"
- + "You need to add an to the DOM.");
- }
- return remoteAudioElement;
- };
-
- getLocalVideoElement = () => {
- return ReactDOM.findDOMNode(this._local.current);
- };
-
- setContainer = (c) => {
- this.container = c;
- };
-
- onAction = (payload) => {
- switch (payload.action) {
- case 'video_fullscreen': {
- if (!this.container) {
- return;
- }
- const element = this.container;
- if (payload.fullscreen) {
- const requestMethod = (
- element.requestFullScreen ||
- element.webkitRequestFullScreen ||
- element.mozRequestFullScreen ||
- element.msRequestFullscreen
- );
- requestMethod.call(element);
- } else if (getFullScreenElement()) {
- const exitMethod = (
- document.exitFullscreen ||
- document.mozCancelFullScreen ||
- document.webkitExitFullscreen ||
- document.msExitFullscreen
- );
- if (exitMethod) {
- exitMethod.call(document);
- }
- }
- break;
- }
- }
- };
-
- render() {
- const VideoFeed = sdk.getComponent('voip.VideoFeed');
-
- // if we're fullscreen, we don't want to set a maxHeight on the video element.
- const maxVideoHeight = getFullScreenElement() ? null : this.props.maxHeight;
- const localVideoFeedClasses = classNames("mx_VideoView_localVideoFeed",
- { "mx_VideoView_localVideoFeed_flipped":
- SettingsStore.getValue('VideoView.flipVideoHorizontally'),
- },
- );
- return (
-
-
-
-
-
-
-
-
- );
- }
-}
diff --git a/src/contexts/RoomContext.ts b/src/contexts/RoomContext.ts
index e8eb0c23b4..082dcc4e6b 100644
--- a/src/contexts/RoomContext.ts
+++ b/src/contexts/RoomContext.ts
@@ -29,7 +29,6 @@ const RoomContext = createContext({
guestsCanJoin: false,
canPeek: false,
showApps: false,
- isAlone: false,
isPeeking: false,
showingPinned: false,
showReadReceipts: true,
diff --git a/src/customisations/Security.ts b/src/customisations/Security.ts
index 8fb0978375..eb7c27dcc5 100644
--- a/src/customisations/Security.ts
+++ b/src/customisations/Security.ts
@@ -16,6 +16,7 @@ limitations under the License.
import { IMatrixClientCreds } from "../MatrixClientPeg";
import { Kind as SetupEncryptionKind } from "../toasts/SetupEncryptionToast";
+import { ISecretStorageKeyInfo } from 'matrix-js-sdk/src/matrix';
/* eslint-disable-next-line @typescript-eslint/no-unused-vars */
function examineLoginResponse(
@@ -44,6 +45,13 @@ function getSecretStorageKey(): Uint8Array {
return null;
}
+/* eslint-disable-next-line @typescript-eslint/no-unused-vars */
+function getDehydrationKey(
+ keyInfo: ISecretStorageKeyInfo,
+): Promise {
+ return Promise.resolve(null);
+}
+
/* eslint-disable-next-line @typescript-eslint/no-unused-vars */
function catchAccessSecretStorageError(e: Error): void {
// E.g. notify the user in some way
@@ -74,6 +82,9 @@ export interface ISecurityCustomisations {
setupEncryptionNeeded?: (
kind: SetupEncryptionKind,
) => boolean,
+ getDehydrationKey?: (
+ keyInfo: ISecretStorageKeyInfo,
+ ) => Promise,
}
// A real customisation module will define and export one or more of the
diff --git a/src/i18n/strings/bg.json b/src/i18n/strings/bg.json
index 9cc53f5a9c..980e3117eb 100644
--- a/src/i18n/strings/bg.json
+++ b/src/i18n/strings/bg.json
@@ -2322,5 +2322,30 @@
"End conference": "Прекрати конфетентният разговор",
"Call Declined": "Обаждането е отказано",
"The call could not be established": "Обаждането не може да бъде осъществено",
- "The other party declined the call.": "Другата страна отказа обаждането."
+ "The other party declined the call.": "Другата страна отказа обаждането.",
+ "Answered Elsewhere": "Отговорено на друго място",
+ "%(senderDisplayName)s set the server ACLs for this room.": "%(senderDisplayName)s зададе ACLs на сървър за тази стая.",
+ "Incoming call": "Входящ разговор",
+ "Incoming video call": "Входящ видео разговор",
+ "Incoming voice call": "Входящ гласов разговор",
+ "Unknown caller": "Непознат абонат",
+ "Downloading logs": "Изтегляне на логове",
+ "Uploading logs": "Качване на логове",
+ "Enable experimental, compact IRC style layout": "Включи експериментално, компактно IRC оформление",
+ "Use a more compact ‘Modern’ layout": "Използвай по-компактно 'Модерно' оформление",
+ "Enable advanced debugging for the room list": "Включи разрешен debugging за списъка със стаите",
+ "Offline encrypted messaging using dehydrated devices": "Офлайн шифровани съобщения чрез използването на дехидратирани устройства",
+ "Show message previews for reactions in all rooms": "Показвай преглед на реакциите за всички стаи",
+ "Show message previews for reactions in DMs": "Показвай преглед на реакциите за директни съобщения",
+ "New spinner design": "Нов дизайн на индикатора за активност",
+ "Communities v2 prototypes. Requires compatible homeserver. Highly experimental - use with caution.": "Протипи за Общности v2. Изисква сървър съвместим с това. Много експериментално - използвайте с повишено внимание.",
+ "Change notification settings": "Промяна на настройките за уведомление",
+ "%(senderName)s: %(stickerName)s": "%(senderName)s: %(stickerName)s",
+ "%(senderName)s: %(reaction)s": "%(senderName)s: %(reaction)s",
+ "Unexpected server error trying to leave the room": "Възникна неочаквана сървърна грешка при опит за напускане на стаята",
+ "(an error occurred)": "(възникна грешка)",
+ "🎉 All servers are banned from participating! This room can no longer be used.": "🎉 Всички сървъри за възбранени от участие! Тази стая вече не може да бъде използвана.",
+ "%(senderDisplayName)s changed the server ACLs for this room.": "%(senderDisplayName)s промени сървърните разрешения за контрол на достъпа до тази стая.",
+ "Prepends ( ͡° ͜ʖ ͡°) to a plain-text message": "Добавя ( ͡° ͜ʖ ͡°) в началото на текстовото съобщение",
+ "The call was answered on another device.": "На обаждането беше отговорено от друго устройство."
}
diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json
index 07eb46e40b..b2e65e3f32 100644
--- a/src/i18n/strings/de_DE.json
+++ b/src/i18n/strings/de_DE.json
@@ -809,13 +809,13 @@
"Terms and Conditions": "Geschäftsbedingungen",
"To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "Um den %(homeserverDomain)s -Heimserver weiter zu verwenden, musst du die Geschäftsbedingungen sichten und ihnen zustimmen.",
"Review terms and conditions": "Geschäftsbedingungen anzeigen",
- "Share Link to User": "Sende Link an Benutzer",
- "Share room": "Teile Raum",
- "Share Room": "Teile Raum",
+ "Share Link to User": "Link zum Benutzer teilen",
+ "Share room": "Raum teilen",
+ "Share Room": "Raum teilen",
"Link to most recent message": "Link zur aktuellsten Nachricht",
"Share User": "Teile Benutzer",
"Share Community": "Teile Community",
- "Share Room Message": "Teile Raumnachricht",
+ "Share Room Message": "Raumnachricht teilen",
"Link to selected message": "Link zur ausgewählten Nachricht",
"COPY": "KOPIEREN",
"Share Message": "Nachricht teilen",
@@ -1218,7 +1218,7 @@
"Send %(eventType)s events": "Sende %(eventType)s-Ereignisse",
"Select the roles required to change various parts of the room": "Wähle Rollen die benötigt werden um einige Teile des Raumes zu ändern",
"Enable encryption?": "Verschlüsselung aktivieren?",
- "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.": "Sobald aktiviert, kann die Verschlüsselung für einen Raum nicht mehr deaktiviert werden. Nachrichten in einem verschlüsselten Raum können nur noch von Teilnehmern aber nicht mehr vom Server gelesen werden. Einige Bots und Brücken werden vielleicht nicht mehr funktionieren. Lerne mehr über Verschlüsselung",
+ "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.": "Sobald aktiviert, kann die Verschlüsselung für einen Raum nicht mehr deaktiviert werden. Nachrichten in einem verschlüsselten Raum können nur noch von Teilnehmern aber nicht mehr vom Server gelesen werden. Einige Bots und Brücken werden vielleicht nicht mehr funktionieren. Erfahre mehr über Verschlüsselung.",
"Error updating main address": "Fehler beim Aktualisieren der Hauptadresse",
"There was an error updating the room's main address. It may not be allowed by the server or a temporary failure occurred.": "Es gab ein Problem beim Aktualisieren der Raum-Hauptadresse. Es kann sein, dass es vom Server verboten ist oder ein temporäres Problem auftrat.",
"Error updating flair": "Konnte Abzeichen nicht aktualisieren",
@@ -1247,7 +1247,7 @@
"Sends the given message coloured as a rainbow": "Sendet die Nachricht in Regenbogenfarben",
"Adds a custom widget by URL to the room": "Fügt ein Benutzer-Widget über eine URL zum Raum hinzu",
"Please supply a https:// or http:// widget URL": "Bitte gib eine https:// oder http:// Widget-URL an",
- "Sends the given emote coloured as a rainbow": "Sendet das Emoji in Regenbogenfarben",
+ "Sends the given emote coloured as a rainbow": "Zeigt Aktionen in Regenbogenfarben",
"%(senderName)s made no change.": "%(senderName)s hat keine Änderung vorgenommen.",
"%(senderName)s revoked the invitation for %(targetDisplayName)s to join the room.": "%(senderName)s hat die Einladung zum Raumbeitritt für %(targetDisplayName)s zurückgezogen.",
"Cannot reach homeserver": "Der Heimserver ist nicht erreichbar",
@@ -1325,8 +1325,8 @@
"Deactivate account": "Benutzerkonto deaktivieren",
"Show previews/thumbnails for images": "Zeige Vorschauen/Thumbnails für Bilder",
"View": "Vorschau",
- "Find a room…": "Suche einen Raum…",
- "Find a room… (e.g. %(exampleRoom)s)": "Suche einen Raum… (z.B. %(exampleRoom)s)",
+ "Find a room…": "Einen Raum suchen…",
+ "Find a room… (e.g. %(exampleRoom)s)": "Einen Raum suchen… (z.B. %(exampleRoom)s)",
"If you can't find the room you're looking for, ask for an invite or Create a new room.": "Wenn du den gesuchten Raum nicht finden kannst, frage nach einer Einladung für den Raum oder Erstelle einen neuen Raum.",
"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.": "Alternativ kannst du versuchen, den öffentlichen Server unter turn.matrix.org zu verwenden. Allerdings wird dieser nicht so zuverlässig sein, und deine IP-Adresse mit diesem Server teilen. Du kannst dies auch in den Einstellungen konfigurieren.",
"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.": "Diese Handlung erfordert es, auf den Standard-Identitätsserver zuzugreifen, um eine E-Mail Adresse oder Telefonnummer zu validieren, aber der Server hat keine Nutzungsbedingungen.",
@@ -1528,7 +1528,7 @@
"Summary": "Zusammenfassung",
"Document": "Dokument",
"Explore": "Erkunde",
- "Explore rooms": "Erkunde Räume",
+ "Explore rooms": "Räume erkunden",
"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.",
"Match system theme": "An System-Design anpassen",
@@ -1756,7 +1756,7 @@
"Delete sessions|one": "Lösche Sitzung",
"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 zu speichern von ",
+ " to store messages from ": " um Nachrichten von ",
"%(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.",
"Backup has a valid signature from this user": "Die Sicherung hat eine gültige Signatur dieses Benutzers",
"Backup has a invalid signature from this user": "Die Sicherung hat eine ungültige Signatur dieses Benutzers",
@@ -2098,7 +2098,7 @@
"Nice, strong password!": "Super, ein starkes Passwort!",
"Other users can invite you to rooms using your contact details": "Andere Benutzer können dich mit deinen Kontaktdaten in Räume einladen",
"Set an email for account recovery. Use email or phone to optionally be discoverable by existing contacts.": "Lege eine E-Mail für die Kontowiederherstellung fest. Verwende optional E-Mail oder Telefon, um von Anderen gefunden zu werden.",
- "Explore Public Rooms": "Erkunde öffentliche Räume",
+ "Explore Public Rooms": "Öffentliche Räume erkunden",
"If you've joined lots of rooms, this might take a while": "Du bist einer Menge Räumen beigetreten, das kann eine Weile dauern",
"%(brand)s failed to get the protocol list from the homeserver. The homeserver may be too old to support third party networks.": "%(brand)s konnte die Protokollliste nicht vom Heimserver abrufen. Der Heimserver ist möglicherweise zu alt, um Netzwerke von Drittanbietern zu unterstützen.",
"No identity server is configured: add one in server settings to reset your password.": "Kein Identitätsserver konfiguriert: Füge einen in den Servereinstellungen hinzu, um dein Kennwort zurückzusetzen.",
@@ -2413,16 +2413,16 @@
"Show message previews for reactions in all rooms": "Zeige 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",
+ "Explore public rooms": "Öffentliche Räume erkunden",
"Can't see what you’re looking for?": "Kannst du nicht finden wonach du suchst?",
- "Explore all public rooms": "Erkunde alle öffentlichen Räume",
+ "Explore all public rooms": "Alle öffentlichen Räume erkunden",
"%(count)s results|other": "%(count)s Ergebnisse",
"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",
"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",
+ "Explore rooms in %(communityName)s": "Räume in %(communityName)s erkunden",
"Set up Secure Backup": "Schlüsselsicherung einrichten",
"Information": "Information",
"Add another email": "Weitere E-Mail-Adresse hinzufügen",
@@ -2525,5 +2525,32 @@
"Starting camera...": "Starte Kamera...",
"Call connecting...": "Verbinde den Anruf...",
"Calling...": "Rufe an...",
- "Starting microphone...": "Starte Mikrofon..."
+ "Starting microphone...": "Starte Mikrofon...",
+ "Move right": "Nach rechts schieben",
+ "Move left": "Nach links schieben",
+ "Revoke permissions": "Berechtigungen widerrufen",
+ "Unpin a widget to view it in this panel": "Widget nicht mehr anheften, um es in diesem Bereich anzuzeigen",
+ "You can only pin up to %(count)s widgets|other": "Du kannst nur bis zu %(count)s Widgets anheften",
+ "Show Widgets": "Widgets anzeigen",
+ "Hide Widgets": "Widgets verstecken",
+ "%(senderName)s declined the call.": "%(senderName)s hat den Anruf abgelehnt.",
+ "(an error occurred)": "(ein Fehler ist aufgetreten)",
+ "(their device couldn't start the camera / microphone)": "(ihr/sein Gerät konnte Kamera / Mikrophon nicht starten)",
+ "(connection failed)": "(Verbindung fehlgeschlagen)",
+ "🎉 All servers are banned from participating! This room can no longer be used.": "🎉 Alle Server sind von der Teilnahme ausgeschlossen! Dieser Raum kann nicht mehr genutzt werden.",
+ "%(senderDisplayName)s changed the server ACLs for this room.": "%(senderDisplayName)s hat die Server-ACLs für diesen Raum geändert.",
+ "%(senderDisplayName)s set the server ACLs for this room.": "%(senderDisplayName)s hat die Server-ACLs für diesen Raum gesetzt.",
+ "The call was answered on another device.": "Der Anruf wurde an einem anderen Gerät angenommen.",
+ "Answered Elsewhere": "Anderswo beantwortet",
+ "The call could not be established": "Der Anruf konnte nicht hergestellt werden",
+ "The other party declined the call.": "Die andere Seite hat den Anruf abgelehnt.",
+ "Call Declined": "Anruf abgelehnt",
+ "Data on this screen is shared with %(widgetDomain)s": "Daten auf diesem Bildschirm werden mit %(widgetDomain)s geteilt",
+ "Modal Widget": "Modales Widget",
+ "Offline encrypted messaging using dehydrated devices": "Offline verschlüsselte Kommunikation mit Hilfe von dehydrierten Geräten",
+ "Send feedback": "Feedback senden",
+ "Report a bug": "Einen Fehler melden",
+ "Add comment": "Kommentar hinzufügen",
+ "Rate %(brand)s": "%(brand)s bewerten",
+ "Feedback sent": "Feedback gesendet"
}
diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json
index a461937875..e6ba79295e 100644
--- a/src/i18n/strings/en_EN.json
+++ b/src/i18n/strings/en_EN.json
@@ -117,6 +117,255 @@
"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.",
+ "United Kingdom": "United Kingdom",
+ "United States": "United States",
+ "Afghanistan": "Afghanistan",
+ "Åland Islands": "Åland Islands",
+ "Albania": "Albania",
+ "Algeria": "Algeria",
+ "American Samoa": "American Samoa",
+ "Andorra": "Andorra",
+ "Angola": "Angola",
+ "Anguilla": "Anguilla",
+ "Antarctica": "Antarctica",
+ "Antigua & Barbuda": "Antigua & Barbuda",
+ "Argentina": "Argentina",
+ "Armenia": "Armenia",
+ "Aruba": "Aruba",
+ "Australia": "Australia",
+ "Austria": "Austria",
+ "Azerbaijan": "Azerbaijan",
+ "Bahamas": "Bahamas",
+ "Bahrain": "Bahrain",
+ "Bangladesh": "Bangladesh",
+ "Barbados": "Barbados",
+ "Belarus": "Belarus",
+ "Belgium": "Belgium",
+ "Belize": "Belize",
+ "Benin": "Benin",
+ "Bermuda": "Bermuda",
+ "Bhutan": "Bhutan",
+ "Bolivia": "Bolivia",
+ "Bosnia": "Bosnia",
+ "Botswana": "Botswana",
+ "Bouvet Island": "Bouvet Island",
+ "Brazil": "Brazil",
+ "British Indian Ocean Territory": "British Indian Ocean Territory",
+ "British Virgin Islands": "British Virgin Islands",
+ "Brunei": "Brunei",
+ "Bulgaria": "Bulgaria",
+ "Burkina Faso": "Burkina Faso",
+ "Burundi": "Burundi",
+ "Cambodia": "Cambodia",
+ "Cameroon": "Cameroon",
+ "Canada": "Canada",
+ "Cape Verde": "Cape Verde",
+ "Caribbean Netherlands": "Caribbean Netherlands",
+ "Cayman Islands": "Cayman Islands",
+ "Central African Republic": "Central African Republic",
+ "Chad": "Chad",
+ "Chile": "Chile",
+ "China": "China",
+ "Christmas Island": "Christmas Island",
+ "Cocos (Keeling) Islands": "Cocos (Keeling) Islands",
+ "Colombia": "Colombia",
+ "Comoros": "Comoros",
+ "Congo - Brazzaville": "Congo - Brazzaville",
+ "Congo - Kinshasa": "Congo - Kinshasa",
+ "Cook Islands": "Cook Islands",
+ "Costa Rica": "Costa Rica",
+ "Croatia": "Croatia",
+ "Cuba": "Cuba",
+ "Curaçao": "Curaçao",
+ "Cyprus": "Cyprus",
+ "Czech Republic": "Czech Republic",
+ "Côte d’Ivoire": "Côte d’Ivoire",
+ "Denmark": "Denmark",
+ "Djibouti": "Djibouti",
+ "Dominica": "Dominica",
+ "Dominican Republic": "Dominican Republic",
+ "Ecuador": "Ecuador",
+ "Egypt": "Egypt",
+ "El Salvador": "El Salvador",
+ "Equatorial Guinea": "Equatorial Guinea",
+ "Eritrea": "Eritrea",
+ "Estonia": "Estonia",
+ "Ethiopia": "Ethiopia",
+ "Falkland Islands": "Falkland Islands",
+ "Faroe Islands": "Faroe Islands",
+ "Fiji": "Fiji",
+ "Finland": "Finland",
+ "France": "France",
+ "French Guiana": "French Guiana",
+ "French Polynesia": "French Polynesia",
+ "French Southern Territories": "French Southern Territories",
+ "Gabon": "Gabon",
+ "Gambia": "Gambia",
+ "Georgia": "Georgia",
+ "Germany": "Germany",
+ "Ghana": "Ghana",
+ "Gibraltar": "Gibraltar",
+ "Greece": "Greece",
+ "Greenland": "Greenland",
+ "Grenada": "Grenada",
+ "Guadeloupe": "Guadeloupe",
+ "Guam": "Guam",
+ "Guatemala": "Guatemala",
+ "Guernsey": "Guernsey",
+ "Guinea": "Guinea",
+ "Guinea-Bissau": "Guinea-Bissau",
+ "Guyana": "Guyana",
+ "Haiti": "Haiti",
+ "Heard & McDonald Islands": "Heard & McDonald Islands",
+ "Honduras": "Honduras",
+ "Hong Kong": "Hong Kong",
+ "Hungary": "Hungary",
+ "Iceland": "Iceland",
+ "India": "India",
+ "Indonesia": "Indonesia",
+ "Iran": "Iran",
+ "Iraq": "Iraq",
+ "Ireland": "Ireland",
+ "Isle of Man": "Isle of Man",
+ "Israel": "Israel",
+ "Italy": "Italy",
+ "Jamaica": "Jamaica",
+ "Japan": "Japan",
+ "Jersey": "Jersey",
+ "Jordan": "Jordan",
+ "Kazakhstan": "Kazakhstan",
+ "Kenya": "Kenya",
+ "Kiribati": "Kiribati",
+ "Kosovo": "Kosovo",
+ "Kuwait": "Kuwait",
+ "Kyrgyzstan": "Kyrgyzstan",
+ "Laos": "Laos",
+ "Latvia": "Latvia",
+ "Lebanon": "Lebanon",
+ "Lesotho": "Lesotho",
+ "Liberia": "Liberia",
+ "Libya": "Libya",
+ "Liechtenstein": "Liechtenstein",
+ "Lithuania": "Lithuania",
+ "Luxembourg": "Luxembourg",
+ "Macau": "Macau",
+ "Macedonia": "Macedonia",
+ "Madagascar": "Madagascar",
+ "Malawi": "Malawi",
+ "Malaysia": "Malaysia",
+ "Maldives": "Maldives",
+ "Mali": "Mali",
+ "Malta": "Malta",
+ "Marshall Islands": "Marshall Islands",
+ "Martinique": "Martinique",
+ "Mauritania": "Mauritania",
+ "Mauritius": "Mauritius",
+ "Mayotte": "Mayotte",
+ "Mexico": "Mexico",
+ "Micronesia": "Micronesia",
+ "Moldova": "Moldova",
+ "Monaco": "Monaco",
+ "Mongolia": "Mongolia",
+ "Montenegro": "Montenegro",
+ "Montserrat": "Montserrat",
+ "Morocco": "Morocco",
+ "Mozambique": "Mozambique",
+ "Myanmar": "Myanmar",
+ "Namibia": "Namibia",
+ "Nauru": "Nauru",
+ "Nepal": "Nepal",
+ "Netherlands": "Netherlands",
+ "New Caledonia": "New Caledonia",
+ "New Zealand": "New Zealand",
+ "Nicaragua": "Nicaragua",
+ "Niger": "Niger",
+ "Nigeria": "Nigeria",
+ "Niue": "Niue",
+ "Norfolk Island": "Norfolk Island",
+ "North Korea": "North Korea",
+ "Northern Mariana Islands": "Northern Mariana Islands",
+ "Norway": "Norway",
+ "Oman": "Oman",
+ "Pakistan": "Pakistan",
+ "Palau": "Palau",
+ "Palestine": "Palestine",
+ "Panama": "Panama",
+ "Papua New Guinea": "Papua New Guinea",
+ "Paraguay": "Paraguay",
+ "Peru": "Peru",
+ "Philippines": "Philippines",
+ "Pitcairn Islands": "Pitcairn Islands",
+ "Poland": "Poland",
+ "Portugal": "Portugal",
+ "Puerto Rico": "Puerto Rico",
+ "Qatar": "Qatar",
+ "Romania": "Romania",
+ "Russia": "Russia",
+ "Rwanda": "Rwanda",
+ "Réunion": "Réunion",
+ "Samoa": "Samoa",
+ "San Marino": "San Marino",
+ "Saudi Arabia": "Saudi Arabia",
+ "Senegal": "Senegal",
+ "Serbia": "Serbia",
+ "Seychelles": "Seychelles",
+ "Sierra Leone": "Sierra Leone",
+ "Singapore": "Singapore",
+ "Sint Maarten": "Sint Maarten",
+ "Slovakia": "Slovakia",
+ "Slovenia": "Slovenia",
+ "Solomon Islands": "Solomon Islands",
+ "Somalia": "Somalia",
+ "South Africa": "South Africa",
+ "South Georgia & South Sandwich Islands": "South Georgia & South Sandwich Islands",
+ "South Korea": "South Korea",
+ "South Sudan": "South Sudan",
+ "Spain": "Spain",
+ "Sri Lanka": "Sri Lanka",
+ "St. Barthélemy": "St. Barthélemy",
+ "St. Helena": "St. Helena",
+ "St. Kitts & Nevis": "St. Kitts & Nevis",
+ "St. Lucia": "St. Lucia",
+ "St. Martin": "St. Martin",
+ "St. Pierre & Miquelon": "St. Pierre & Miquelon",
+ "St. Vincent & Grenadines": "St. Vincent & Grenadines",
+ "Sudan": "Sudan",
+ "Suriname": "Suriname",
+ "Svalbard & Jan Mayen": "Svalbard & Jan Mayen",
+ "Swaziland": "Swaziland",
+ "Sweden": "Sweden",
+ "Switzerland": "Switzerland",
+ "Syria": "Syria",
+ "São Tomé & Príncipe": "São Tomé & Príncipe",
+ "Taiwan": "Taiwan",
+ "Tajikistan": "Tajikistan",
+ "Tanzania": "Tanzania",
+ "Thailand": "Thailand",
+ "Timor-Leste": "Timor-Leste",
+ "Togo": "Togo",
+ "Tokelau": "Tokelau",
+ "Tonga": "Tonga",
+ "Trinidad & Tobago": "Trinidad & Tobago",
+ "Tunisia": "Tunisia",
+ "Turkey": "Turkey",
+ "Turkmenistan": "Turkmenistan",
+ "Turks & Caicos Islands": "Turks & Caicos Islands",
+ "Tuvalu": "Tuvalu",
+ "U.S. Virgin Islands": "U.S. Virgin Islands",
+ "Uganda": "Uganda",
+ "Ukraine": "Ukraine",
+ "United Arab Emirates": "United Arab Emirates",
+ "Uruguay": "Uruguay",
+ "Uzbekistan": "Uzbekistan",
+ "Vanuatu": "Vanuatu",
+ "Vatican City": "Vatican City",
+ "Venezuela": "Venezuela",
+ "Vietnam": "Vietnam",
+ "Wallis & Futuna": "Wallis & Futuna",
+ "Western Sahara": "Western Sahara",
+ "Yemen": "Yemen",
+ "Zambia": "Zambia",
+ "Zimbabwe": "Zimbabwe",
"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",
@@ -213,6 +462,8 @@
"Send a bug report with logs": "Send a bug report with logs",
"Opens chat with the given user": "Opens chat with the given user",
"Sends a message to the given user": "Sends a message to the given user",
+ "Places the call in the current room on hold": "Places the call in the current room on hold",
+ "Takes the call in the current room off hold": "Takes the call in the current room off hold",
"Displays action": "Displays action",
"Reason": "Reason",
"%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s accepted the invitation for %(displayName)s.",
@@ -403,10 +654,10 @@
"Verify all your sessions to ensure your account & messages are safe": "Verify all your sessions to ensure your account & messages are safe",
"Review": "Review",
"Later": "Later",
+ "Don't miss a reply": "Don't miss a reply",
"Notifications": "Notifications",
- "You are not receiving desktop notifications": "You are not receiving desktop notifications",
- "Enable them now": "Enable them now",
- "Close": "Close",
+ "Enable desktop notifications": "Enable desktop notifications",
+ "Enable": "Enable",
"Your homeserver has exceeded its user limit.": "Your homeserver has exceeded its user limit.",
"Your homeserver has exceeded one of its resource limits.": "Your homeserver has exceeded one of its resource limits.",
"Contact your server admin.": "Contact your server admin.",
@@ -424,9 +675,8 @@
"What's new?": "What's new?",
"What's New": "What's New",
"Update": "Update",
- "Restart": "Restart",
- "Upgrade your %(brand)s": "Upgrade your %(brand)s",
- "A new version of %(brand)s is available!": "A new version of %(brand)s is available!",
+ "Update %(brand)s": "Update %(brand)s",
+ "New version of %(brand)s is available": "New version of %(brand)s is available",
"Guest": "Guest",
"There was an error joining the room": "There was an error joining the room",
"Sorry, your homeserver is too old to participate in this room.": "Sorry, your homeserver is too old to participate in this room.",
@@ -437,8 +687,8 @@
"You joined the call": "You joined the call",
"%(senderName)s joined the call": "%(senderName)s joined the call",
"Call in progress": "Call in progress",
- "You left the call": "You left the call",
- "%(senderName)s left the call": "%(senderName)s left the call",
+ "You ended the call": "You ended the call",
+ "%(senderName)s ended the call": "%(senderName)s ended the call",
"Call ended": "Call ended",
"You started a call": "You started a call",
"%(senderName)s started a call": "%(senderName)s started a call",
@@ -529,6 +779,7 @@
"My Ban List": "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!",
"Active call": "Active call",
+ "Call Paused": "Call Paused",
"Unknown caller": "Unknown caller",
"Incoming voice call": "Incoming voice call",
"Incoming video call": "Incoming video call",
@@ -684,12 +935,10 @@
"Failed to set display name": "Failed to set display name",
"Encryption": "Encryption",
"Individually verify each session used by a user to mark it as trusted, not trusting cross-signed devices.": "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 ": "Securely cache encrypted messages locally for them to appear in search results, using ",
- " to store messages from ": " to store messages from ",
- "rooms.": "rooms.",
+ "Securely cache encrypted messages locally for them to appear in search results, using %(size)s to store messages from %(count)s rooms.|other": "Securely cache encrypted messages locally for them to appear in search results, using %(size)s to store messages from %(count)s rooms.",
+ "Securely cache encrypted messages locally for them to appear in search results, using %(size)s to store messages from %(count)s rooms.|one": "Securely cache encrypted messages locally for them to appear in search results, using %(size)s to store messages from %(count)s room.",
"Manage": "Manage",
"Securely cache encrypted messages locally for them to appear in search results.": "Securely cache encrypted messages locally for them to appear in search results.",
- "Enable": "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 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 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 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.",
"Connecting to integration manager...": "Connecting to integration manager...",
@@ -708,8 +957,8 @@
"Enable notifications for this account": "Enable notifications for this account",
"Clear notifications": "Clear notifications",
"All notifications are currently disabled for all targets.": "All notifications are currently disabled for all targets.",
- "Add an email address to configure email notifications": "Add an email address to configure email notifications",
"Enable email notifications": "Enable email notifications",
+ "Add an email address to configure email notifications": "Add an email address to configure email notifications",
"Notifications on the following keywords follow rules which can’t be displayed here:": "Notifications on the following keywords follow rules which can’t be displayed here:",
"Unable to fetch notification target list": "Unable to fetch notification target list",
"Notification targets": "Notification targets",
@@ -872,6 +1121,7 @@
"Ban list rules - %(roomName)s": "Ban list rules - %(roomName)s",
"Server rules": "Server rules",
"User rules": "User rules",
+ "Close": "Close",
"You have not ignored anyone.": "You have not ignored anyone.",
"You are currently ignoring:": "You are currently ignoring:",
"You are not subscribed to any lists": "You are not subscribed to any lists",
@@ -1084,6 +1334,15 @@
"Strikethrough": "Strikethrough",
"Code block": "Code block",
"Quote": "Quote",
+ "Only the two of you are in this conversation, unless either of you invites anyone to join.": "Only the two of you are in this conversation, unless either of you invites anyone to join.",
+ "This is the beginning of your direct message history with .": "This is the beginning of your direct message history with .",
+ "Topic: %(topic)s (edit)": "Topic: %(topic)s (edit)",
+ "Topic: %(topic)s ": "Topic: %(topic)s ",
+ "Add a topic to help people know what it is about.": "Add a topic to help people know what it is about.",
+ "You created this room.": "You created this room.",
+ "%(displayName)s created this room.": "%(displayName)s created this room.",
+ "Add a photo, so people can easily spot your room.": "Add a photo, so people can easily spot your room.",
+ "This is the start of .": "This is the start of .",
"No pinned messages.": "No pinned messages.",
"Loading...": "Loading...",
"Pinned Messages": "Pinned Messages",
@@ -1132,6 +1391,7 @@
"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",
+ "Use the + to make a new room or explore existing ones below": "Use the + to make a new room or explore existing ones below",
"%(count)s results|other": "%(count)s results",
"%(count)s results|one": "%(count)s result",
"This room": "This room",
@@ -1337,7 +1597,6 @@
"Remove this user from community?": "Remove this user from community?",
"Failed to withdraw invitation": "Failed to withdraw invitation",
"Failed to remove user from community": "Failed to remove user from community",
- "%(role)s in %(roomName)s": "%(role)s in %(roomName)s",
"Failed to change power level": "Failed to change power level",
"You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.",
"Are you sure?": "Are you sure?",
@@ -1345,6 +1604,7 @@
"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?": "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": "Deactivate user",
"Failed to deactivate user": "Failed to deactivate user",
+ "Role": "Role",
"This client does not support end-to-end encryption.": "This client does not support end-to-end encryption.",
"Security": "Security",
"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.": "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.",
@@ -1381,8 +1641,9 @@
"Today": "Today",
"Yesterday": "Yesterday",
"View Source": "View Source",
+ "Messages here are end-to-end encrypted. Verify %(displayName)s in their profile - tap on their avatar.": "Messages here are end-to-end encrypted. Verify %(displayName)s in their profile - tap on their avatar.",
+ "Messages in this room are end-to-end encrypted. When people join, you can verify them in their profile, just tap on their avatar.": "Messages in this room are end-to-end encrypted. When people join, you can verify them in their profile, just tap on their avatar.",
"Encryption enabled": "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.",
"Ignored attempt to disable encryption": "Ignored attempt to disable encryption",
"Encryption not enabled": "Encryption not enabled",
"The encryption used by this room isn't supported.": "The encryption used by this room isn't supported.",
@@ -1428,8 +1689,8 @@
"%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s changed the avatar for %(roomName)s",
"%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s removed the room avatar.",
"%(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.",
+ "This room is a continuation of another conversation.": "This room is a continuation of another conversation.",
"Copied!": "Copied!",
"Failed to copy": "Failed to copy",
"Add an Integration": "Add an Integration",
@@ -1724,6 +1985,7 @@
"To continue, use Single Sign On to prove your identity.": "To continue, use Single Sign On to prove your identity.",
"Confirm to continue": "Confirm to continue",
"Click the button below to confirm your identity.": "Click the button below to confirm your identity.",
+ "Invite by email": "Invite by email",
"Failed to invite the following users to chat: %(csvUsers)s": "Failed to invite the following users to chat: %(csvUsers)s",
"We couldn't create your DM. Please check the users you want to invite and try again.": "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.": "Something went wrong trying to invite the users.",
@@ -1735,11 +1997,11 @@
"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.",
+ "Start a conversation with someone using their name, email address or username (like ).": "Start a conversation with someone using their name, email address or username (like ).",
"Start a conversation with someone using their name or username (like ).": "Start a conversation with someone using their name or username (like ).",
"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",
"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.",
+ "Invite someone using their name, email address, username (like ) or share this room.": "Invite someone using their name, email address, username (like ) or share this room.",
"Invite someone using their name, username (like ) or share this room.": "Invite someone using their name, username (like ) or share this room.",
"a new master key signature": "a new master key signature",
"a new cross-signing key signature": "a new cross-signing key signature",
@@ -2053,6 +2315,10 @@
"Community %(groupId)s not found": "Community %(groupId)s not found",
"This homeserver does not support communities": "This homeserver does not support communities",
"Failed to load %(groupId)s": "Failed to load %(groupId)s",
+ "Great, that'll help people know it's you": "Great, that'll help people know it's you",
+ "Add a photo so people know it's you.": "Add a photo so people know it's you.",
+ "Welcome %(name)s": "Welcome %(name)s",
+ "Now, let's help you get started": "Now, let's help you get started",
"Welcome to %(appName)s": "Welcome to %(appName)s",
"Liberate your communication": "Liberate your communication",
"Send a Direct Message": "Send a Direct Message",
@@ -2074,6 +2340,7 @@
"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.": "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.",
"Self-verification request": "Self-verification request",
"Logout": "Logout",
+ "%(creator)s created this DM.": "%(creator)s created this DM.",
"%(creator)s created and configured the room.": "%(creator)s created and configured the room.",
"Your Communities": "Your Communities",
"Did you know: you can use communities to filter your %(brand)s experience!": "Did you know: you can use communities to filter your %(brand)s experience!",
@@ -2119,7 +2386,6 @@
"Starting microphone...": "Starting microphone...",
"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.",
- "There's no one else here! Would you like to invite others or stop warning about the empty room?": "There's no one else here! Would you like to invite others or stop warning about the empty room?",
"You seem to be uploading files, are you sure you want to quit?": "You seem to be uploading files, are you sure you want to quit?",
"You seem to be in a call, are you sure you want to quit?": "You seem to be in a call, are you sure you want to quit?",
"Search failed": "Search failed",
diff --git a/src/i18n/strings/eo.json b/src/i18n/strings/eo.json
index aec575b8b4..7157c7db7c 100644
--- a/src/i18n/strings/eo.json
+++ b/src/i18n/strings/eo.json
@@ -1,7 +1,7 @@
{
"This email address is already in use": "Tiu ĉi retpoŝtadreso jam estas uzata",
"This phone number is already in use": "Tiu ĉi telefonnumero jam estas uzata",
- "Failed to verify email address: make sure you clicked the link in the email": "Kontrolo de via retpoŝtadreso malsukcesis: certigu, ke vi alklakis la ligilon en la retmesaĝo",
+ "Failed to verify email address: make sure you clicked the link in the email": "Kontrolo de via retpoŝtadreso malsukcesis: certigu, ke vi klakis la ligilon en la retmesaĝo",
"Call Timeout": "Voka tempolimo",
"The remote side failed to pick up": "La defora flanko malsukcesis respondi",
"Unable to capture screen": "Ne povas registri ekranon",
@@ -278,7 +278,7 @@
"Only people who have been invited": "Nur invititaj uzantoj",
"Anyone who knows the room's link, apart from guests": "Iu ajn kun la ligilo, krom gastoj",
"Anyone who knows the room's link, including guests": "Iu ajn kun la ligilo, inkluzive gastojn",
- "Publish this room to the public in %(domain)s's room directory?": "Ĉu publikigi ĉi tiun ĉambron al la publika listo de ĉambroj de %(domain)s?",
+ "Publish this room to the public in %(domain)s's room directory?": "Ĉu publikigi ĉi tiun ĉambron per la katalogo de ĉambroj de %(domain)s?",
"Who can read history?": "Kiu povas legi la historion?",
"Anyone": "Iu ajn",
"Members only (since the point in time of selecting this option)": "Nur ĉambranoj (ekde ĉi tiu elekto)",
@@ -365,7 +365,7 @@
"%(severalUsers)sleft %(count)s times|other": "%(severalUsers)s%(count)s-foje foriris",
"%(severalUsers)sleft %(count)s times|one": "%(severalUsers)sforiris",
"%(oneUser)sleft %(count)s times|other": "%(oneUser)s%(count)s-foje foriris",
- "%(oneUser)sleft %(count)s times|one": "%(oneUser)sforiris",
+ "%(oneUser)sleft %(count)s times|one": "%(oneUser)s foriris",
"%(severalUsers)sjoined and left %(count)s times|other": "%(severalUsers)s%(count)s-foje aliĝis kaj foriris",
"%(severalUsers)sjoined and left %(count)s times|one": "%(severalUsers)saliĝis kaj foriris",
"%(oneUser)sjoined and left %(count)s times|other": "%(oneUser)s%(count)s-foje aliĝis kaj foriris",
@@ -412,7 +412,7 @@
"collapse": "maletendi",
"expand": "etendi",
"Custom level": "Propra nivelo",
- "Room directory": "Listo de ĉambroj",
+ "Room directory": "Katalogo de ĉambroj",
"Username not available": "Uzantonomo ne disponeblas",
"Username invalid: %(errMessage)s": "Uzantonomo ne validas: %(errMessage)s",
"Username available": "Uzantonomo disponeblas",
@@ -448,7 +448,7 @@
"Invalid Email Address": "Malvalida retpoŝtadreso",
"This doesn't appear to be a valid email address": "Tio ĉi ne ŝajnas esti valida retpoŝtadreso",
"Verification Pending": "Atendante kontrolon",
- "Please check your email and click on the link it contains. Once this is done, click continue.": "Bonvolu kontroli vian retpoŝton, kaj alklaki la ligilon enhavatan en la sendita mesaĝo. Farinte tion, klaku je 'daŭrigi'.",
+ "Please check your email and click on the link it contains. Once this is done, click continue.": "Bonvolu kontroli vian retpoŝton, kaj klaki la ligilon enhavatan en la sendita mesaĝo. Farinte tion, klaku je «daŭrigi».",
"Unable to add email address": "Ne povas aldoni retpoŝtadreson",
"Unable to verify email address.": "Retpoŝtadreso ne kontroleblas.",
"This will allow you to reset your password and receive notifications.": "Tio ĉi permesos al vi restarigi vian pasvorton kaj ricevi sciigojn.",
@@ -484,7 +484,7 @@
"Leave Community": "Forlasi komunumon",
"Leave %(groupName)s?": "Ĉu foriri el %(groupName)s?",
"Community Settings": "Komunumaj agordoj",
- "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Tiuj ĉi ĉambroj montriĝas al komunumanoj sur la paĝo de la komunumo. Ili povas aliĝi al la ĉambroj per alklakoj.",
+ "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Ĉi tiuj ĉambroj montriĝas al komunumanoj sur la paĝo de la komunumo. Komunumanoj povas klaki ĉambrojn por aliĝi.",
"Featured Rooms:": "Elstarigitaj ĉambroj:",
"Featured Users:": "Elstarigitaj uzantoj:",
"%(inviter)s has invited you to join this community": "%(inviter)s invitis vin al tiu ĉi komunumo",
@@ -640,7 +640,7 @@
"Friday": "Vendredo",
"Update": "Ĝisdatigi",
"What's New": "Kio novas",
- "On": "Ek",
+ "On": "Jes",
"Changelog": "Protokolo de ŝanĝoj",
"Waiting for response from server": "Atendante respondon el la servilo",
"Send Custom Event": "Sendi propran okazon",
@@ -649,14 +649,14 @@
"You cannot delete this image. (%(code)s)": "Vi ne povas forigi tiun ĉi bildon. (%(code)s)",
"Cancel Sending": "Nuligi sendon",
"This Room": "Ĉi tiu ĉambro",
- "Noisy": "Brua",
+ "Noisy": "Brue",
"Room not found": "Ĉambro ne troviĝis",
"Messages containing my display name": "Mesaĝoj enhavantaj mian vidigan nomon",
"Messages in one-to-one chats": "Mesaĝoj en duopaj babiloj",
"Unavailable": "Nedisponebla",
"View Decrypted Source": "Vidi malĉifritan fonton",
"Failed to update keywords": "Malsukcesis ĝisdatigi la ŝlosilvortojn",
- "remove %(name)s from the directory.": "forigi %(name)s de la ujo.",
+ "remove %(name)s from the directory.": "forigi %(name)s de la katalogo.",
"Notifications on the following keywords follow rules which can’t be displayed here:": "La sciigoj de la jenaj ŝlosilvortoj sekvas regulojn kiuj ne povas esti montrataj ĉi tie:",
"Please set a password!": "Bonvolu agordi pasvorton!",
"You have successfully set a password!": "Vi sukcese agordis pasvorton!",
@@ -677,7 +677,7 @@
"Enter keywords separated by a comma:": "Entajpu ŝlosilvortojn apartigitajn per komoj:",
"Search…": "Serĉi…",
"You have successfully set a password and an email address!": "Vi sukcese agordis pasvorton kaj retpoŝtadreson!",
- "Remove %(name)s from the directory?": "Ĉu forigi %(name)s de la ujo?",
+ "Remove %(name)s from the directory?": "Ĉu forigi %(name)s de la katalogo?",
"%(brand)s uses many advanced browser features, some of which are not available or experimental in your current browser.": "%(brand)s uzas multajn specialajn funkciojn, el kiuj kelkaj ne disponeblas aŭ estas eksperimentaj en via nuna foliumilo.",
"Event sent!": "Okazo sendiĝis!",
"Explore Account Data": "Esplori kontajn datumojn",
@@ -689,7 +689,7 @@
"Reject": "Rifuzi",
"Failed to set Direct Message status of room": "Malsukcesis agordi staton de rekteco al la ĉambro",
"Monday": "Lundo",
- "Remove from Directory": "Forigi de ujo",
+ "Remove from Directory": "Forigi de katalogo",
"Enable them now": "Ŝalti ilin nun",
"Toolbox": "Ilaro",
"Collecting logs": "Kolektante protokolon",
@@ -730,7 +730,7 @@
"Low Priority": "Malalta prioritato",
"Unable to fetch notification target list": "Ne povas akiri la liston de celoj por sciigoj",
"Set Password": "Agordi pasvorton",
- "Off": "For",
+ "Off": "Ne",
"%(brand)s does not know how to join a room on this network": "%(brand)s ne scias aliĝi al ĉambroj en tiu ĉi reto",
"Mentions only": "Nur mencioj",
"Failed to remove tag %(tagName)s from room": "Malsukcesis forigi etikedon %(tagName)s el la ĉambro",
@@ -771,7 +771,7 @@
"This homeserver has hit its Monthly Active User limit.": "Tiu ĉi hejmservilo atingis sian monatan limon de aktivaj uzantoj.",
"This homeserver has exceeded one of its resource limits.": "Tiu ĉi hejmservilo superis je unu el siaj risurcaj limoj.",
"Unable to connect to Homeserver. Retrying...": "Ne povas konektiĝi al hejmservilo. Reprovante…",
- "You do not have permission to invite people to this room.": "Vi ne havas permeson inviti homojn al la ĉambro.",
+ "You do not have permission to invite people to this room.": "Vi ne havas permeson inviti personojn al la ĉambro.",
"User %(user_id)s does not exist": "Uzanto %(user_id)s ne ekzistas",
"Unknown server error": "Nekonata servila eraro",
"Use a few words, avoid common phrases": "Uzu malmultajn vortojn, kaj evitu oftajn frazojn",
@@ -888,8 +888,8 @@
"Phone numbers": "Telefonnumeroj",
"Legal": "Jura",
"Credits": "Dankoj",
- "For help with using %(brand)s, click here.": "Por helpo kun uzo de %(brand)s, alklaku ĉi tie.",
- "For help with using %(brand)s, click here or start a chat with our bot using the button below.": "Por helpo kun uzo de %(brand)s, alklaku ĉi tie aŭ komencu babilon kun nia roboto uzante la butonon sube.",
+ "For help with using %(brand)s, click here.": "Por helpo pri uzado de %(brand)s, klaku ĉi tien.",
+ "For help with using %(brand)s, click here or start a chat with our bot using the button below.": "Por helpo pri uzado de %(brand)s, klaku ĉi tien aŭ komencu babilon kun nia roboto per la butono sube.",
"Chat with %(brand)s Bot": "Babilu kun la roboto %(brand)s Bot",
"Help & About": "Helpo kaj Prio",
"Bug reporting": "Cim-raportado",
@@ -1159,7 +1159,7 @@
"Create a new room with the same name, description and avatar": "Kreos novan ĉàmbron kun la sama nomo, priskribo, kaj profilbildo",
"Update any local room aliases to point to the new room": "Religos ĉiujn lokajn kromnomojn al la nova ĉambro",
"Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "Haltigos parolojn al la malnova versio de al ĉambro, kaj konsilos uzantojn pri la nova per mesaĝo",
- "Put a link back to the old room at the start of the new room so people can see old messages": "Metos en la novan ĉambron ligilon al la malnova, por ke homoj povu rigardi la malnovajn mesaĝojn",
+ "Put a link back to the old room at the start of the new room so people can see old messages": "Metos en la novan ĉambron ligilon al la malnova, por ke oni povu rigardi la malnovajn mesaĝojn",
"Sign out and remove encryption keys?": "Ĉu adiaŭi kaj forigi ĉifrajn ŝlosilojn?",
"Send Logs": "Sendi protokolon",
"A username can only contain lower case letters, numbers and '=_-./'": "Uzantonomo povas enhavi nur minusklojn, numerojn, kaj la signojn: =_-./",
@@ -1342,7 +1342,7 @@
"To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "Por daŭre uzadi la hejmservilon %(homeserverDomain)s, vi devas tralegi kaj konsenti niajn uzokondiĉojn.",
"Review terms and conditions": "Tralegi uzokondiĉojn",
"Did you know: you can use communities to filter your %(brand)s experience!": "Ĉu vi sciis: vi povas uzi komunumojn por filtri vian sperton de %(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.": "Por agordi filtrilon, tiru komunuman profilbildon sur la filtran panelon je la maldekstra flanko. Vi povas klaki sur profilbildon en la filtra panelo iam ajn, por vidi nur ĉambrojn kaj homojn ligitaj al ties komunumo.",
+ "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.": "Por agordi filtrilon, tiru komunuman profilbildon sur la filtran panelon je la maldekstra flanko. Vi povas klaki profilbildon en la filtra panelo iam ajn, por vidi nur ĉambrojn kaj personojn ligitajn al ties komunumo.",
"%(brand)s failed to get the protocol list from the homeserver. The homeserver may be too old to support third party networks.": "%(brand)s malsukcesis akiri liston de protokoloj de la hejmservilo. Eble la hejmservilo estas tro malnova por subteni eksterajn retojn.",
"%(brand)s failed to get the public room list.": "%(brand)s malsukcesis akiri la liston de publikaj ĉambroj.",
"The homeserver may be unavailable or overloaded.": "La hejmservilo eble estas neatingebla aŭ troŝarĝita.",
@@ -1407,7 +1407,7 @@
"Please ask the administrator of your homeserver (%(homeserverDomain)s) to configure a TURN server in order for calls to work reliably.": "Bonvolu peti la administranton de via hejmservilo (%(homeserverDomain)s) agordi TURN-servilon, por ke vokoj funkciu dependeble.",
"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.": "Alternative, vi povas prove uzi la publikan servilon je turn.matrix.org, sed tio ne estas same dependebla, kaj ĝi havigos vian IP-adreson al tiu servilo. Vi povas administri tion ankaŭ en Agordoj.",
"Try using turn.matrix.org": "Provu uzi servilon turn.matrix.org",
- "Sends a message as plain text, without interpreting it as markdown": "Sendas mesaĝon kiel platan tekston, sen interpreto al MarkDown",
+ "Sends a message as plain text, without interpreting it as markdown": "Sendas mesaĝon kiel platan tekston, sen interpreto al Markdown",
"You do not have the required permissions to use this command.": "Vi ne havas sufiĉajn permesojn por uzi ĉi tiun komandon.",
"Changes the avatar of the current room": "Ŝanĝas la profilbildon de la nuna ĉambro",
"Use an identity server": "Uzi identigan servilon",
@@ -1595,7 +1595,7 @@
"%(senderName)s placed a voice call. (not supported by this browser)": "%(senderName)s metis voĉvokon. (mankas subteno en ĉi tiu foliumilo)",
"%(senderName)s placed a video call.": "%(senderName)s metis vidvokon.",
"%(senderName)s placed a video call. (not supported by this browser)": "%(senderName)s metis vidvokon. (mankas subteno en ĉi tiu foliumilo)",
- "Try out new ways to ignore people (experimental)": "Elprovi novajn manierojn malatenti homojn (eksperimente)",
+ "Try out new ways to ignore people (experimental)": "Elprovi novajn manierojn malatenti personojn (eksperimente)",
"Match system theme": "Similiĝi la sisteman haŭton",
"My Ban List": "Mia listo de forbaroj",
"This is your list of users/servers you have blocked - don't leave the room!": "Ĉi tio estas la listo de uzantoj/serviloj, kiujn vi blokis – ne eliru el la ĉambro!",
@@ -1675,7 +1675,7 @@
"Automatically invite users": "Memage inviti uzantojn",
"Upgrade private room": "Gradaltigi privatan ĉambron",
"Upgrade public room": "Gradaltigi publikan ĉambron",
- "Notification settings": "Sciigaj agordoj",
+ "Notification settings": "Agordoj pri sciigoj",
"Take picture": "Foti",
"Start": "Komenci",
"Done": "Fini",
@@ -1827,7 +1827,7 @@
"Server rules": "Servilaj reguloj",
"User rules": "Uzantulaj reguloj",
"You are currently ignoring:": "Vi nun malatentas:",
- "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.": "Malatento de homoj okazas per listoj de forbaroj, kiuj enhavas regulojn pri tio, kiun forbari. Abono de listo de forbaroj signifas, ke la uzantoj/serviloj blokataj de la listo estos kaŝitaj de vi.",
+ "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.": "Malatentado de personoj okazas per listoj de forbaroj, kiuj enhavas regulojn pri tio, kiun forbari. Abonado de listo de forbaroj signifas, ke la uzantoj/serviloj blokataj de la listo estos kaŝitaj de vi.",
"Personal ban list": "Persona listo de forbaroj",
"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.": "Via persona listo de forbaroj tenas ĉiujn uzantojn/servilojn, kies mesaĝoj vi persone ne volas vidi. Post via unua malatento, nova ĉambro aperos en via listo de ĉambroj, nomita «Mia listo de forbaroj» – restu en ĝi por efikigi la liston de forbaroj.",
"Server or user ID to ignore": "Malatentota servilo aŭ identigilo de uzanto",
@@ -1838,7 +1838,7 @@
"Session key:": "Ŝlosilo de salutaĵo:",
"Message search": "Serĉado de mesaĝoj",
"Cross-signing": "Delegaj subskriboj",
- "A session's public name is visible to people you communicate with": "Publika nomo de salutaĵo estas videbla al homoj, kun kiuj vi komunikas",
+ "A session's public name is visible to people you communicate with": "Publika nomo de salutaĵo estas videbla al personoj, kun kiuj vi komunikas",
"This room is bridging messages to the following platforms. Learn more.": "Ĉi tiu ĉambro transpontigas mesaĝojn al la jenaj platformoj. Eksciu plion.",
"This room isn’t bridging messages to any platforms. Learn more.": "Ĉi tiu ĉambro transpontigas mesaĝojn al neniu platformo. Eksciu plion.",
"Bridges": "Pontoj",
@@ -1939,7 +1939,7 @@
"Incorrect recovery passphrase": "Malĝusta rehava pasfrazo",
"Enter recovery passphrase": "Enigu la rehavan pasfrazon",
"Enter recovery key": "Enigu la rehavan ŝlosilon",
- "Warning: You should only set up key backup from a trusted computer.": "Averto: savkopiadon de ŝlosiloj vi starigu nur el fidata komputilo.",
+ "Warning: You should only set up key backup from a trusted computer.": "Averto: savkopiadon de ŝlosiloj vi starigu nur per fidata komputilo.",
"If you've forgotten your recovery key you can ": "Se vi forgesis vian rehavan ŝlosilon, vi povas ",
"Reload": "Relegi",
"Remove for everyone": "Forigi por ĉiuj",
@@ -2025,7 +2025,7 @@
"Confirm by comparing the following with the User Settings in your other session:": "Konfirmu per komparo de la sekva kun la agardoj de uzanto en via alia salutaĵo:",
"Confirm this user's session by comparing the following with their User Settings:": "Konfirmu la salutaĵon de ĉi tiu uzanto per komparo de la sekva kun ĝiaj agordoj de uzanto:",
"If they don't match, the security of your communication may be compromised.": "Se ili ne akordas, la sekureco de via komunikado eble estas rompita.",
- "Navigation": "Navigado",
+ "Navigation": "Navigacio",
"Calls": "Vokoj",
"Room List": "Listo de ĉambroj",
"Autocomplete": "Memkompletigo",
@@ -2038,13 +2038,13 @@
"Toggle Italics": "Ŝalti kursivon",
"Toggle Quote": "Ŝalti citaĵon",
"New line": "Nova linio",
- "Navigate recent messages to edit": "Navigi freŝajn mesaĝojn redaktotajn",
+ "Navigate recent messages to edit": "Trairi freŝajn mesaĝojn redaktotajn",
"Jump to start/end of the composer": "Salti al komenco/fino de la komponilo",
- "Navigate composer history": "Navigi historion de la komponilo",
+ "Navigate composer history": "Trairi historion de la komponilo",
"Toggle microphone mute": "Baskuligi silentigon de mikrofono",
"Toggle video on/off": "Baskuligi filmojn",
"Jump to room search": "Salti al serĉo de ĉambroj",
- "Navigate up/down in the room list": "Navigi supren/malsupren en la listo de ĉambroj",
+ "Navigate up/down in the room list": "Iri supren/malsupren en la listo de ĉambroj",
"Select room from the room list": "Elekti ĉambron el la listo de ĉambroj",
"Collapse room list section": "Maletendi parton kun listo de ĉambroj",
"Expand room list section": "Etendi parton kun listo de ĉambroj",
@@ -2089,7 +2089,7 @@
"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",
- "Sends a message as html, without interpreting it as markdown": "Sendas mesaĝon kiel HTML, ne interpretante ĝin kiel MarkDown",
+ "Sends a message as html, without interpreting it as markdown": "Sendas mesaĝon kiel HTML, ne interpretante ĝin kiel Markdown",
"Failed to set topic": "Malsukcesis agordi temon",
"Command failed": "Komando malsukcesis",
"Could not find user in room": "Ne povis trovi uzanton en ĉambro",
@@ -2214,7 +2214,7 @@
"Set a room address to easily share your room with other people.": "Agordu adreson de ĉambro por facile konigi la ĉambron al aliuloj.",
"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.": "Vi antaŭe uzis pli novan version de %(brand)s kun tiu ĉi salutaĵo. Por ree uzi ĉi tiun version kun tutvoja ĉifrado, vi devos adiaŭi kaj resaluti.",
"Address (optional)": "Adreso (malnepra)",
- "Delete the room address %(alias)s and remove %(name)s from the directory?": "Ĉu forigi la adreson de ĉambro %(alias)s kaj forigi %(name)s de la listo?",
+ "Delete the room address %(alias)s and remove %(name)s from the directory?": "Ĉu forigi la adreson de ĉambro %(alias)s kaj forigi %(name)s de la katalogo?",
"delete the address.": "forigi la adreson.",
"Use a different passphrase?": "Ĉu uzi alian pasfrazon?",
"Help us improve %(brand)s": "Helpu al ni plibonigi %(brand)son",
@@ -2317,7 +2317,7 @@
"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",
+ "People": "Personoj",
"Unread rooms": "Nelegitaj ĉambroj",
"Always show first": "Ĉiam montri unuaj",
"Show": "Montri",
@@ -2407,5 +2407,136 @@
"Recent changes that have not yet been received": "Freŝaj ŝanĝoj ankoraŭ ne ricevitaj",
"No files visible in this room": "Neniuj dosieroj videblas en ĉi tiu ĉambro",
"You have no visible notifications in this room.": "Vi havas neniujn videblajn sciigojn en ĉi tiu ĉambro.",
- "%(brand)s Android": "%(brand)s por Android"
+ "%(brand)s Android": "%(brand)s por Android",
+ "Community and user menu": "Menuo de komunumo kaj uzanto",
+ "User settings": "Agordoj de uzanto",
+ "Community settings": "Agordoj de komunumo",
+ "Failed to find the general chat for this community": "Malsukcesis trovi la ĝeneralan babilejon por ĉi tiu komunumo",
+ "Starting camera...": "Pretigante filmilon…",
+ "Starting microphone...": "Pretigante mikrofonon…",
+ "Call connecting...": "Konektante vokon…",
+ "Calling...": "Vokante…",
+ "Explore rooms in %(communityName)s": "Esploru ĉambrojn en %(communityName)s",
+ "You do not have permission to create rooms in this community.": "Vi ne havas permeson krei ĉambrojn en ĉi tiu komunumo.",
+ "Cannot create rooms in this community": "Ne povas krei ĉambrojn en ĉi tiu komunumo",
+ "Create community": "Krei komunumon",
+ "Attach files from chat or just drag and drop them anywhere in a room.": "Kunsendu dosierojn per la babilujo, aŭ trenu ilin kien ajn en ĉambro vi volas.",
+ "Enter the location of your Element Matrix Services homeserver. It may use your own domain name or be a subdomain of element.io.": "Enigu la lokon de via hejmservilo de «Element Matrix Services». Ĝi povas uzi vian propran retnomon aŭ esti subretnomo de element.io.",
+ "Move right": "Movi dekstren",
+ "Move left": "Movi maldekstren",
+ "Revoke permissions": "Nuligi permesojn",
+ "Take a picture": "Foti",
+ "Unable to set up keys": "Ne povas agordi ŝlosilojn",
+ "You're all caught up.": "Sen sciigoj.",
+ "Invite someone using their name, username (like ) or share this room.": "Invitu iun per ĝia nomo, uzantonomo (kiel ), aŭ diskonigu la ĉambron.",
+ "This won't invite them to %(communityName)s. To invite someone to %(communityName)s, click here": "Ĉi tio ne invitos ĝin al %(communityName)s. Por inviti iun al %(communityName)s, klaku ĉi tien",
+ "Start a conversation with someone using their name or username (like ).": "Komencu interparolon kun iu per ĝia nomo aŭ uzantonomo (kiel ).",
+ "May include members not in %(communityName)s": "Povas inkluzivi anojn ekster %(communityName)s",
+ "Update community": "Ĝisdatigi komunumon",
+ "There was an error updating your community. The server is unable to process your request.": "Eraris ĝisdatigo de via komunumo. La servilo ne povas trakti vian peton.",
+ "Block anyone not part of %(serverName)s from ever joining this room.": "Bloki de la ĉambro ĉiun ekster %(serverName)s.",
+ "Create a room in %(communityName)s": "Krei ĉambron en %(communityName)s",
+ "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.": "Vi povas malŝalti ĉi tion se la ĉambro estos uzata por kunlaborado kun eksteraj skipoj, kun iliaj propraj hejmserviloj. Ĝi ne povas ŝanĝiĝi poste.",
+ "You might enable this if the room will only be used for collaborating with internal teams on your homeserver. This cannot be changed later.": "Vi povus ŝalti ĉi tion se la ĉambro estus uzota nur por kunlaborado de internaj skipoj je via hejmservilo. Ĝi ne ŝanĝeblas poste.",
+ "Your server requires encryption to be enabled in private rooms.": "Via servilo postulas ŝaltitan ĉifradon en privataj ĉambroj.",
+ "Private rooms can be found and joined by invitation only. Public rooms can be found and joined by anyone in this community.": "Privataj ĉambroj povas esti trovitaj kaj aliĝitaj nur per invito. Publikaj ĉambroj povas esti trovitaj kaj aliĝitaj de iu ajn en ĉi tiu komunumo.",
+ "Private rooms can be found and joined by invitation only. Public rooms can be found and joined by anyone.": "Privataj ĉambroj povas esti trovitaj kaj aliĝitaj nur per invito. Publikaj ĉambroj povas esti trovitaj kaj aliĝitaj de iu ajn.",
+ "An image will help people identify your community.": "Bildo helpos al aliuloj rekoni vian komunumon.",
+ "Add image (optional)": "Aldonu bildon (se vi volas)",
+ "Enter name": "Enigu nomon",
+ "What's the name of your community or team?": "Kio estas la nomo de via komunumo aŭ skipo?",
+ "You can change this later if needed.": "Vi povas ŝanĝi ĉi tion poste, laŭbezone.",
+ "Use this when referencing your community to others. The community ID cannot be changed.": "Uzu ĉi tion kiam vi montras vian komunumon al aliuloj. La identigilo ne povas ŝanĝiĝi.",
+ "Community ID: +:%(domain)s": "Identigilo de komunumo: +:%(domain)s",
+ "There was an error creating your community. The name may be taken or the server is unable to process your request.": "Eraris kreado de via komunumo. Eble la nomo jam estas prenita, aŭ la servilo ne povas trakti vian peton.",
+ "Invite people to join %(communityName)s": "Inviti personojn al komunumo %(communityName)s",
+ "Send %(count)s invites|one": "Sendi %(count)s inviton",
+ "Send %(count)s invites|other": "Sendi %(count)s invitojn",
+ "People you know on %(brand)s": "Personoj, kiujn vi scias je %(brand)s",
+ "Add another email": "Aldoni alian retpoŝtadreson",
+ "Preparing to download logs": "Preparante elŝuton de protokolo",
+ "Download logs": "Elŝuti protokolon",
+ "Information": "Informoj",
+ "This version of %(brand)s does not support searching encrypted messages": "Ĉi tiu versio de %(brand)s ne subtenas serĉadon de ĉifritaj mesaĝoj",
+ "This version of %(brand)s does not support viewing some encrypted files": "Ĉi tiu versio de %(brand)s ne subtenas montradon de iuj ĉifritaj dosieroj",
+ "Use the Desktop app to search encrypted messages": "Uzu la labortablan aplikaĵon por serĉi ĉifritajn mesaĝojn",
+ "Use the Desktop app to see all encrypted files": "Uzu la labortablan aplikaĵon por vidi ĉiujn ĉifritajn dosierojn",
+ "Video conference started by %(senderName)s": "Grupan vidvokon komencis %(senderName)s",
+ "Video conference updated by %(senderName)s": "Grupan vidvokon ĝisdatigis %(senderName)s",
+ "Video conference ended by %(senderName)s": "Grupan vidvokon finis %(senderName)s",
+ "Join the conference from the room information card on the right": "Aliĝu al la grupa voko per la dekstraflanka karto kun informoj pri ĉambro",
+ "Join the conference at the top of this room": "Aliĝu al la grupa voko supre je la ĉambro",
+ "Ignored attempt to disable encryption": "Malatentis provon malŝalti ĉifradon",
+ "Room settings": "Agordoj de ĉambro",
+ "Show files": "Montri dosierojn",
+ "%(count)s people|one": "%(count)s persono",
+ "%(count)s people|other": "%(count)s personoj",
+ "About": "Prio",
+ "Not encrypted": "Neĉifrita",
+ "Add widgets, bridges & bots": "Aldonu fenestraĵojn, pontojn, kaj robotojn",
+ "Edit widgets, bridges & bots": "Redakti fenestraĵojn, pontojn, kaj robotojn",
+ "Widgets": "Fenestraĵoj",
+ "Unpin a widget to view it in this panel": "Malfiksu fenestraĵon por vidi ĝin sur ĉi tiu breto",
+ "Unpin": "Malfiksi",
+ "You can only pin up to %(count)s widgets|other": "Vi povas fiksi maksimume %(count)s fenestraĵojn",
+ "Room Info": "Informoj pri ĉambro",
+ "%(count)s results|one": "%(count)s rezulto",
+ "%(count)s results|other": "%(count)s rezultoj",
+ "Explore all public rooms": "Esplori ĉiujn publiajn ĉambrojn",
+ "Can't see what you’re looking for?": "Ĉu vi ne sukcesas trovi la serĉaton?",
+ "Explore public rooms": "Esplori publikajn ĉambrojn",
+ "Explore community rooms": "Esplori komunumajn ĉambrojn",
+ "Show Widgets": "Montri fenestraĵojn",
+ "Hide Widgets": "Kaŝi fenestraĵojn",
+ "Remove messages sent by others": "Forigi mesaĝojn senditajn de aliaj",
+ "Privacy": "Privateco",
+ "Secure Backup": "Sekura savkopiado",
+ "not ready": "neprete",
+ "ready": "prete",
+ "Secret storage:": "Sekreta deponejo:",
+ "Backup key cached:": "Kaŝmemorita Savkopia ŝlosilo:",
+ "Backup key stored:": "Deponita Savkopia ŝlosilo:",
+ "Back up your encryption keys with your account data in case you lose access to your sessions. Your keys will be secured with a unique Recovery Key.": "Savkopiu viajn ĉifrajn ŝlosilojn kun la datumoj de via konto, pro eblo ke vi perdus aliron al viaj salutaĵoj. Viaj ŝlosiloj estos sekurigitaj per unika Rehava ŝlosilo.",
+ "Algorithm:": "Algoritmo:",
+ "Backup version:": "Repaŝa versio:",
+ "The operation could not be completed": "La ago ne povis finiĝi",
+ "Failed to save your profile": "Malsukcesis konservi vian profilon",
+ "Master private key:": "Ĉefa privata ŝlosilo:",
+ "not found in storage": "netrovite en deponejo",
+ "Cross-signing is not set up.": "Delegaj subskriboj ne estas agorditaj.",
+ "Cross-signing is ready for use.": "Delegaj subskriboj estas pretaj por uzado.",
+ "Downloading logs": "Elŝutante protokolon",
+ "Uploading logs": "Alŝutante protokolon",
+ "Safeguard against losing access to encrypted messages & data": "Malhelpu perdon de aliro al ĉifritaj mesaĝoj kaj datumoj",
+ "Set up Secure Backup": "Agordi Sekuran savkopiadon",
+ "Unknown App": "Nekonata aplikaĵo",
+ "Error leaving room": "Eraro dum foriro de la ĉambro",
+ "Unexpected server error trying to leave the room": "Neatendita servila eraro dum foriro de ĉambro",
+ "%(senderName)s declined the call.": "%(senderName)s rifuzis la vokon.",
+ "(an error occurred)": "(okazis eraro)",
+ "(their device couldn't start the camera / microphone)": "(ĝia aparato ne povis funkciigi la filmilon / mikrofonon)",
+ "(connection failed)": "(konekto malsukcesis)",
+ "🎉 All servers are banned from participating! This room can no longer be used.": "🎉 Ĉiuj serviloj estas forbaritaj de partoprenado! La ĉambro ne plu povas esti uzata.",
+ "Prepends ( ͡° ͜ʖ ͡°) to a plain-text message": "Antaŭmetas ( ͡° ͜ʖ ͡°) al platteksta mesaĝo",
+ "This will end the conference for everyone. Continue?": "Ĉi tio finos la grupan vokon por ĉiuj. Ĉu daŭrigi?",
+ "End conference": "Fini grupan vokon",
+ "The call was answered on another device.": "La voko estis respondita per alia aparato.",
+ "Answered Elsewhere": "Respondita aliloke",
+ "The call could not be established": "Ne povis meti la vokon",
+ "The other party declined the call.": "La alia persono rifuzis la vokon.",
+ "Call Declined": "Voko rifuziĝis",
+ "Rate %(brand)s": "Taksu pri %(brand)s",
+ "Feedback sent": "Prikomentoj sendiĝis",
+ "You’re all caught up": "Vi nenion preterpasis",
+ "Data on this screen is shared with %(widgetDomain)s": "Datumoj sur tiu ĉi ekrano estas havigataj al %(widgetDomain)s",
+ "Send feedback": "Prikomenti",
+ "PRO TIP: If you start a bug, please submit debug logs to help us track down the problem.": "KONSILO: Kiam vi raportas eraron, bonvolu kunsendi erarserĉan protokolon, por ke ni povu pli facile trovi la problemon.",
+ "Please view existing bugs on Github first. No match? Start a new one.": "Bonvolu unue vidi jamajn erarojn en GitHub. Ĉu neniu akordas la vian? Raportu novan.",
+ "Report a bug": "Raporti eraron",
+ "There are two ways you can provide feedback and help us improve %(brand)s.": "Ekzistas du manieroj, kiel vi povas prikomenti kaj helpi nin plibonigi la programon %(brand)s.",
+ "Comment": "Komento",
+ "Add comment": "Aldoni komenton",
+ "Please go into as much detail as you like, so we can track down the problem.": "Bonvolu detaligi tiel multe, kiel vi volas, por ke ni povu pli facile trovi la problemon.",
+ "Tell us below how you feel about %(brand)s so far.": "Diru al ni, kion vi ĝis nun pensas pri %(brand)s.",
+ "Communities v2 prototypes. Requires compatible homeserver. Highly experimental - use with caution.": "Pratipoj de la 2-a versio de komunumoj. Bezonas konforman hejmservilon. Tre eksperimenta – uzu nur zorge."
}
diff --git a/src/i18n/strings/et.json b/src/i18n/strings/et.json
index b4531b8ee7..0c90b2b196 100644
--- a/src/i18n/strings/et.json
+++ b/src/i18n/strings/et.json
@@ -45,7 +45,7 @@
"Failed to add the following rooms to %(groupId)s:": "Järgnevate jututubade lisamine %(groupId)s kogukonda ebaõnnestus:",
"Changes your avatar in all rooms": "Muuda oma tunnuspilti kõikides jututubades",
"Ask this user to verify their session, or manually verify it below.": "Palu nimetatud kasutajal verifitseerida see sessioon või tee seda alljärgnevas käsitsi.",
- "Manually Verify by Text": "Verifitseeri käsitsi etteantud teksti abil",
+ "Manually Verify by Text": "Verifitseeri käsitsi etteantud teksti abil",
"Interactively verify by Emoji": "Verifitseeri interaktiivselt Emoji abil",
"Enable big emoji in chat": "Kasuta vestlustes suuri emoji'sid",
"Order rooms by name": "Järjesta jututoad nime alusel",
@@ -306,7 +306,7 @@
"Use your account or create a new one to continue.": "Jätkamaks kasuta oma kontot või loo uus konto.",
"Anyone": "Kõik kasutajad",
"Encryption": "Krüptimine",
- "Once enabled, encryption cannot be disabled.": "Kui krüptimine on juba kasutusele võetud, siis ei saa seda enam eemaldada.",
+ "Once enabled, encryption cannot be disabled.": "Kui krüptimine on juba kasutusele võetud, siis ei saa seda enam eemaldada.",
"Encrypted": "Krüptitud",
"Who can access this room?": "Kes pääsevad ligi siia jututuppa?",
"Who can read history?": "Kes võivad lugeda ajalugu?",
@@ -443,7 +443,7 @@
"Sat": "Laupäev",
"%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(time)s",
"%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(day)s %(monthName)s %(fullYear)s",
- "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(day)s %(monthName)s %(fullYear)s %(time)s",
+ "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(day)s %(monthName)s %(fullYear)s %(time)s",
"Encryption upgrade available": "Krüptimise uuendus on saadaval",
"Set up encryption": "Seadista krüptimine",
"Review where you’re logged in": "Vaata üle, kust sa oled Matrix'i võrku loginud",
@@ -806,7 +806,7 @@
"Cancelling…": "Tühistan…",
"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.",
+ "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",
@@ -942,7 +942,7 @@
"This homeserver doesn't offer any login flows which are supported by this client.": "See koduserver ei paku ühtegi sisselogimislahendust, mida see klient toetab.",
"Error: Problem communicating with the given homeserver.": "Viga: Suhtlusel koduserveriga tekkis probleem.",
"Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Kui aadressiribal on HTTPS-aadress, siis HTTP-protokolli kasutades ei saa ühendust koduserveriga. Palun pruugi HTTPS-protokolli või luba brauseris ebaturvaliste skriptide kasutamine.",
- "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.": "Ei sa ühendust koduserveriga. Palun kontrolli, et sinu koduserveri SSL sertifikaat oleks usaldusväärne ning mõni brauseri lisamoodul ei blokeeri päringuid.",
+ "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.": "Ei sa ühendust koduserveriga. Palun kontrolli, et sinu koduserveri SSL sertifikaat oleks usaldusväärne ning mõni brauseri lisamoodul ei blokeeri päringuid.",
"Syncing...": "Sünkroniseerin...",
"Signing In...": "Login sisse...",
"Create account": "Loo kasutajakonto",
@@ -999,7 +999,7 @@
"Leave %(groupName)s?": "Lahku %(groupName)s kogukonnast?",
"Unable to leave community": "Kogukonnast lahkumine ei õnnestunud",
"Community Settings": "Kogukonna seadistused",
- "Want more than a community? Get your own server": "Soovid enamat kui kogukond? Pane üles oma server",
+ "Want more than a community? Get your own server": "Soovid enamat kui kogukond? Pane üles oma server",
"Changes made to your community name and avatar might not be seen by other users for up to 30 minutes.": "Oma kogukonnas tehtud nime ja avatari muudatused ei pruugi teistele näha olla kuni 30 minuti jooksul.",
"Featured Users:": "Esiletõstetud kasutajad:",
"%(inviter)s has invited you to join this community": "%(inviter)s on kutsunud sind kogukonna liikmeks",
@@ -1177,7 +1177,7 @@
"Recently Direct Messaged": "Viimased otsesõnumite saajad",
"Invite someone using their name, username (like ), email address or share this room.": "Kutsu kedagi tema nime, kasutajanime (nagu ), e-posti aadressi alusel või jaga seda jututuba.",
"Upload completed": "Üleslaadimine valmis",
- "%(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 kasutab varasemaga võrreldes 3-5 korda vähem mälu, sest laeb teavet kasutajate kohta vaid siis, kui vaja. Palun oota hetke, kuni sünkroniseerime andmeid serveriga!",
+ "%(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 kasutab varasemaga võrreldes 3-5 korda vähem mälu, sest laeb teavet kasutajate kohta vaid siis, kui vaja. Palun oota hetke, kuni sünkroniseerime andmeid serveriga!",
"Updating %(brand)s": "Uuendan rakendust %(brand)s",
"I don't want my encrypted messages": "Ma ei soovi oma krüptitud sõnumeid",
"Manually export keys": "Ekspordi võtmed käsitsi",
@@ -1268,7 +1268,7 @@
"Fill screen": "Täida ekraan",
"No identity server is configured: add one in server settings to reset your password.": "Ühtegi isikutuvastusserverit pole seadistatud: salasõna taastamiseks määra see serveri sätetes.",
"Sign in instead": "Pigem logi sisse",
- "A verification email will be sent to your inbox to confirm setting your new password.": "Kontrollimaks, et just sina sina ise sisestasid uue salasõna, siis saadame sulle kinnituskirja.",
+ "A verification email will be sent to your inbox to confirm setting your new password.": "Kontrollimaks, et just sina ise sisestasid uue salasõna, saadame sulle kinnituskirja.",
"Send Reset Email": "Saada salasõna taastamise e-kiri",
"An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Saatsime kirja %(emailAddress)s aadressile. Kui sa oled klõpsinud kirjas olnud linki, siis jätka alljärgnevaga.",
"I have verified my email address": "Ma olen teinud läbi oma e-posti aadressi kontrolli",
@@ -1876,7 +1876,7 @@
"⚠ These settings are meant for advanced users.": "⚠ Need seadistused on mõeldud kogenud kasutajatele.",
"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.": "Kasutajate eiramine toimub ligipääsukeelu reeglite loendite alusel ning seal on kirjas blokeeritavad kasutajad, jututoad või serverid. Sellise loendi kasutusele võtmine tähendab et blokeeritud kasutajad või serverid ei ole sulle nähtavad.",
"Personal ban list": "Minu isiklik ligipääsukeelu reeglite loend",
- "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.": "Sinu isiklikus ligipääsukeelu reeglite loendis on kasutajad ja serverid, kellelt sa ei soovi sõnumeid saada. Peale esimese kasutaja või serveri blokeerimist tekib sinu jututubade loendisse uus jututuba „Minu isiklik ligipääsukeelu reeglite loend“ ning selle jõustamiseks ära logi nimetatud jututoast välja.",
+ "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.": "Sinu isiklikus ligipääsukeelu reeglite loendis on kasutajad ja serverid, kellelt sa ei soovi sõnumeid saada. Peale esimese kasutaja või serveri blokeerimist tekib sinu jututubade loendisse uus jututuba „Minu isiklik ligipääsukeelu reeglite loend“ ning selle jõustamiseks ära logi nimetatud jututoast välja.",
"Subscribing to a ban list will cause you to join it!": "Ligipääsukeelu reeglite loendi tellimine tähendab sellega liitumist!",
"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",
@@ -2239,7 +2239,7 @@
"Away": "Eemal",
"Room avatar": "Jututoa tunnuspilt ehk avatar",
"Publish this room to the public in %(domain)s's room directory?": "Kas avaldame selle jututoa %(domain)s jututubade loendis?",
- "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.": "Kui keegi lisab oma sõnumisse URL'i, siis võidakse näidata selle URL'i eelvaadet, mis annab lisateavet tema kohta, nagu näiteks pealkiri, kirjeldus ja kuidas ta välja näeb.",
+ "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.": "Kui keegi lisab oma sõnumisse URL'i, siis võidakse näidata selle URL'i eelvaadet, mis annab lisateavet tema kohta, nagu näiteks pealkiri, kirjeldus ja kuidas ta välja näeb.",
"Waiting for you to accept on your other session…": "Ootan, et sa nõustuksid teises sessioonis…",
"Waiting for %(displayName)s to accept…": "Ootan, et %(displayName)s nõustuks…",
"Accepting…": "Nõustun …",
@@ -2432,7 +2432,7 @@
"Send %(count)s invites|other": "Saada %(count)s kutset",
"Send %(count)s invites|one": "Saada %(count)s kutse",
"Invite people to join %(communityName)s": "Kutsu kasutajaid %(communityName)s kogukonna liikmeks",
- "There was an error creating your community. The name may be taken or the server is unable to process your request.": "Kogukonna loomisel tekkis viga. Selline nimi kas on juba kasutusel või server ei saa hetkel seda päringut töödelda.",
+ "There was an error creating your community. The name may be taken or the server is unable to process your request.": "Kogukonna loomisel tekkis viga. Selline nimi kas on juba kasutusel või server ei saa hetkel seda päringut töödelda.",
"Community ID: +:%(domain)s": "Kogukonna tunnus: +:%(domain)s",
"Use this when referencing your community to others. The community ID cannot be changed.": "Viidates kogukonnale kasuta seda tunnust. Kogukonna tunnust ei ole võimalik muuta.",
"You can change this later if needed.": "Kui vaja, siis sa saad seda hiljem muuta.",
@@ -2538,5 +2538,29 @@
"The call could not be established": "Kõnet ei saa korraldada",
"%(senderName)s declined the call.": "%(senderName)s ei võtnud kõnet vastu.",
"The other party declined the call.": "Teine osapool ei võtnud kõnet vastu.",
- "Call Declined": "Kõne on tagasilükatud"
+ "Call Declined": "Kõne on tagasilükatud",
+ "Move right": "Liigu paremale",
+ "Move left": "Liigu vasakule",
+ "Revoke permissions": "Tühista õigused",
+ "Unpin a widget to view it in this panel": "Sellel paneelil kuvamiseks eemaldage vidin lemmikutest",
+ "You can only pin up to %(count)s widgets|other": "Sa saad kinnitada kuni %(count)s vidinat",
+ "Show Widgets": "Näita vidinaid",
+ "Hide Widgets": "Peida vidinad",
+ "The call was answered on another device.": "Kõnele vastati teises seadmes.",
+ "Answered Elsewhere": "Vastatud mujal",
+ "Data on this screen is shared with %(widgetDomain)s": "Andmeid selles vaates jagatakse %(widgetDomain)s serveriga",
+ "Modal Widget": "Modaalne vidin",
+ "PRO TIP: If you start a bug, please submit debug logs to help us track down the problem.": "SOOVITUS: Kui sa koostad uut veateadet, siis meil on lihtsam vea põhjuseni leida, kui sa lisad juurde ka silumislogid.",
+ "Send feedback": "Saada tagasiside",
+ "Please view existing bugs on Github first. No match? Start a new one.": "Palun esmalt vaata, kas Githubis on selline viga juba kirjeldatud. Sa ei leidnud midagi? Siis saada uus veateade.",
+ "Report a bug": "Teata veast",
+ "There are two ways you can provide feedback and help us improve %(brand)s.": "On olemas kaks viisi, kuidas sa saad meile tagasisidet jagada ning aidata teha %(brand)s rakendust paremaks.",
+ "Comment": "Kommentaar",
+ "Add comment": "Lisa kommentaar",
+ "Please go into as much detail as you like, so we can track down the problem.": "Selleks, et saaksime probleemi põhjuse leida, lisa nii palju lisateavet kui soovid.",
+ "Tell us below how you feel about %(brand)s so far.": "Kirjelda meile, mis mulje sulle on %(brand)s rakendusest seni jäänud.",
+ "Rate %(brand)s": "Hinda %(brand)s rakendust",
+ "Feedback sent": "Tagasiside on saadetud",
+ "%(senderName)s ended the call": "%(senderName)s lõpetas kõne",
+ "You ended the call": "Sina lõpetasid kõne"
}
diff --git a/src/i18n/strings/fi.json b/src/i18n/strings/fi.json
index d7aa91346e..6c20ed2fae 100644
--- a/src/i18n/strings/fi.json
+++ b/src/i18n/strings/fi.json
@@ -2244,5 +2244,24 @@
"You can only pin 2 widgets at a time": "Vain kaksi sovelmaa voi olla kiinnitettynä samaan aikaan",
"Add widgets, bridges & bots": "Lisää sovelmia, siltoja ja botteja",
"Edit widgets, bridges & bots": "Muokkaa sovelmia, siltoja ja botteja",
- "Widgets": "Sovelmat"
+ "Widgets": "Sovelmat",
+ "Communities v2 prototypes. Requires compatible homeserver. Highly experimental - use with caution.": "Yhteisöjen v2 prototyypit. Vaatii yhteensopivan kotipalvelimen. Erittäin kokeellinen — käytä varoen.",
+ "Change notification settings": "Muokkaa ilmoitusasetuksia",
+ "The person who invited you already left the room, or their server is offline.": "Henkilö, joka kutsui sinut, on jo lähtenyt huoneesta, tai hänen palvelin on pois verkosta.",
+ "The person who invited you already left the room.": "Henkilö, joka kutsui sinut, lähti jo huoneesta.",
+ "Unknown App": "Tuntematon sovellus",
+ "Error leaving room": "Virhe poistuessa huoneesta",
+ "Unexpected server error trying to leave the room": "Huoneesta poistuessa tapahtui odottamaton palvelinvirhe",
+ "%(senderName)s declined the call.": "%(senderName)s hylkäsi puhelun.",
+ "(an error occurred)": "(virhe tapahtui)",
+ "(their device couldn't start the camera / microphone)": "(hänen laitteensa ei voinut käynnistää kameraa tai mikrofonia)",
+ "(connection failed)": "(yhteys katkesi)",
+ "🎉 All servers are banned from participating! This room can no longer be used.": "Kaikki palvelimet ovat saaneet porttikiellon huoneeseen! Tätä huonetta ei voi enää käyttää.",
+ "Prepends ( ͡° ͜ʖ ͡°) to a plain-text message": "Lisää hymiön ( ͡° ͜ʖ ͡°) viestin alkuun",
+ "Are you sure you want to cancel entering passphrase?": "Haluatko varmasti peruuttaa salalauseen syöttämisen?",
+ "The call was answered on another device.": "Puheluun vastattiin toisessa laitteessa.",
+ "Answered Elsewhere": "Vastattu muualla",
+ "The call could not be established": "Puhelua ei voitu aloittaa",
+ "The other party declined the call.": "Toinen osapuoli hylkäsi puhelun.",
+ "Call Declined": "Puhelu hylätty"
}
diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json
index 42eead2057..29af11cb58 100644
--- a/src/i18n/strings/fr.json
+++ b/src/i18n/strings/fr.json
@@ -377,7 +377,7 @@
"%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (rang %(powerLevelNumber)s)",
"(could not connect media)": "(impossible de se connecter au média)",
"(no answer)": "(pas de réponse)",
- "(unknown failure: %(reason)s)": "(erreur inconnue : %(reason)s)",
+ "(unknown failure: %(reason)s)": "(erreur inconnue : %(reason)s)",
"Your browser does not support the required cryptography extensions": "Votre navigateur ne supporte pas les extensions cryptographiques nécessaires",
"Not a valid %(brand)s keyfile": "Fichier de clé %(brand)s non valide",
"Authentication check failed: incorrect password?": "Erreur d’authentification : mot de passe incorrect ?",
@@ -1126,7 +1126,7 @@
"Pizza": "Pizza",
"Cake": "Gâteau",
"Heart": "Cœur",
- "Smiley": "Smiley",
+ "Smiley": "Émoticône",
"Robot": "Robot",
"Hat": "Chapeau",
"Glasses": "Lunettes",
@@ -1759,7 +1759,7 @@
"about a day from now": "dans un jour environ",
"%(num)s days from now": "dans %(num)s jours",
"Failed to invite the following users to chat: %(csvUsers)s": "Échec de l’invitation des utilisateurs suivants à discuter : %(csvUsers)s",
- "We couldn't create your DM. Please check the users you want to invite and try again.": "Impossible de créer votre Message direct. Vérifiez les utilisateurs que vous souhaitez inviter et réessayez.",
+ "We couldn't create your DM. Please check the users you want to invite and try again.": "Impossible de créer votre message direct. Vérifiez les utilisateurs que vous souhaitez inviter et réessayez.",
"Something went wrong trying to invite the users.": "Une erreur est survenue en essayant d’inviter les utilisateurs.",
"We couldn't invite those users. Please check the users you want to invite and try again.": "Impossible d’inviter ces utilisateurs. Vérifiez les utilisateurs que vous souhaitez inviter et réessayez.",
"Recently Direct Messaged": "Messages directs récents",
@@ -1903,7 +1903,7 @@
"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.": "Récupérez l’accès à votre compte et restaurez les clés de chiffrement dans cette session. Sans elles, vous ne pourrez pas lire tous vos messages chiffrés dans n’importe quelle 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.": "Attention : Vos données personnelles (y compris les clés de chiffrement) seront stockées dans cette session. Effacez-les si vous n’utilisez plus cette session ou si vous voulez vous connecter à un autre compte.",
"Upgrade this session to allow it to verify other sessions, granting them access to encrypted messages and marking them as trusted for other users.": "Mettez à niveau cette session pour l’autoriser à vérifier d’autres sessions, ce qui leur permettra d’accéder aux messages chiffrés et de les marquer comme fiables pour les autres utilisateurs.",
- "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.": "Si vous ne configurez pas la récupération de messages sécurisée, vous ne pourrez pas restaurer l’historique de vos messages chiffrés si vous vous déconnectez ou si vous utilisez une autre 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.": "Si vous ne configurez pas la récupération de messages sécurisée, vous ne pourrez pas restaurer l’historique de vos messages chiffrés si vous vous déconnectez ou si vous utilisez une autre session.",
"This session is encrypting history using the new recovery method.": "Cette session chiffre l’historique en utilisant la nouvelle méthode de récupération.",
"This session has detected that your recovery passphrase and key for Secure Messages have been removed.": "Cette session a détecté que votre mot de passe et votre clé de récupération pour les messages chiffrés ont été supprimés.",
"Setting up keys": "Configuration des clés",
@@ -2395,5 +2395,155 @@
"Cross-signing is ready for use, but secret storage is currently not being used to backup your keys.": "La signature croisée est prête à l'emploi, mais le coffre secret n'est pas actuellement utilisé pour sauvegarder vos clés.",
"Master private key:": "Clé privée maîtresse :",
"%(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 ne peut actuellement mettre en cache vos messages chiffrés localement de manière sécurisée via le navigateur Web. Utilisez %(brand)s Desktop pour que les messages chiffrés apparaissent dans vos résultats de recherche.",
- "There are advanced notifications which are not shown here.": "Des notifications avancées ne sont pas affichées ici."
+ "There are advanced notifications which are not shown here.": "Des notifications avancées ne sont pas affichées ici.",
+ "ready": "prêt",
+ "The operation could not be completed": "L'opération n'a pas pu être terminée",
+ "Failed to save your profile": "Erreur lors de l'enregistrement du profile",
+ "Unknown App": "Application inconnue",
+ "%(senderName)s declined the call.": "%(senderName)s a refusé l'appel.",
+ "(an error occurred)": "(une erreur est survenue)",
+ "(connection failed)": "(échec de connexion)",
+ "%(senderDisplayName)s changed the server ACLs for this room.": "%(senderDisplayName)s a changé les paramètres d'accès du serveur pour ce salon.",
+ "%(senderDisplayName)s set the server ACLs for this room.": "%(senderDisplayName)s a défini les paramètres d'accès du serveur pour ce salon.",
+ "Prepends ( ͡° ͜ʖ ͡°) to a plain-text message": "Ajoute ( ͡° ͜ʖ ͡°) devant un message en texte brut",
+ "This will end the conference for everyone. Continue?": "Ceci arrêtera la téléconférence pour tout le monde. Continuer ?",
+ "End conference": "Finir la téléconférence",
+ "The call was answered on another device.": "L'appel a été répondu sur un autre appareil.",
+ "Answered Elsewhere": "Répondu autre-part",
+ "The call could not be established": "L'appel n'a pas pu être établi",
+ "The other party declined the call.": "L'autre personne a décliné l'appel.",
+ "Call Declined": "Appel rejeté",
+ "Ignored attempt to disable encryption": "Essai de désactiver le chiffrement ignoré",
+ "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.": "Ajoutez les utilisateurs et les serveurs que vous voulez ignorer ici. Utilisez des astérisques pour que %(brand)s comprenne tous les caractères. Par exemple, @bot:* va ignorer tous les utilisateurs ayant le nom 'bot' sur n'importe quel serveur.",
+ "not ready": "pas prêt",
+ "Secret storage:": "Coffre secret :",
+ "Backup key cached:": "Clé de sauvegarde mise en cache :",
+ "Backup key stored:": "Clé de sauvegarde enregistrée :",
+ "Back up your encryption keys with your account data in case you lose access to your sessions. Your keys will be secured with a unique Recovery Key.": "Sauvegarder vos clés de chiffrement avec les données de votre compte dans le cas où vous perdez l'accès à vos sessions. Vos clés seront sécurisées grâce à une unique clé de récupération.",
+ "Backup version:": "Version de la sauvegarde :",
+ "You might have configured them in a client other than %(brand)s. You cannot tune them in %(brand)s but they still apply.": "Vous les avez peut-être configurés dans un autre client que %(brand)s. Vous ne pouvez pas les configurer dans %(brand)s mais ils s'appliquent quand même.",
+ "not found in storage": "non trouvé dans le coffre",
+ "Cross-signing is not set up.": "La signature croisée n'est pas configurée.",
+ "Cross-signing is ready for use.": "La signature croisée est prête à être utilisée.",
+ "Offline encrypted messaging using dehydrated devices": "Messagerie hors-ligne chiffrée utilisant des appareils déshydratés",
+ "Communities v2 prototypes. Requires compatible homeserver. Highly experimental - use with caution.": "Prototype de communautés v2. Requiert un serveur d'accueil compatible. Très expérimental - à utiliser avec précaution.",
+ "Safeguard against losing access to encrypted messages & data": "Sécurité contre la perte d'accès aux messages & données chiffrées",
+ "(their device couldn't start the camera / microphone)": "(son appareil ne peut pas démarrer la caméra / le microphone)",
+ "🎉 All servers are banned from participating! This room can no longer be used.": "🎉 Tous les serveurs sont interdits de participation ! Ce salon ne peut plus être utilisé.",
+ "What's the name of your community or team?": "Quel est le nom de votre communauté ou équipe ?",
+ "You can change this later if needed.": "Vous pouvez modifier ceci après si besoin.",
+ "Use this when referencing your community to others. The community ID cannot be changed.": "Utilisez ceci lorsque vous faites référence à votre communauté aux autres. L'identifiant de la communauté ne peut pas être modifié.",
+ "There was an error creating your community. The name may be taken or the server is unable to process your request.": "Une erreur est survenue lors de la création de votre communauté. Le nom est peut-être pris ou le serveur ne peut pas exécuter votre requête.",
+ "This version of %(brand)s does not support searching encrypted messages": "Cette version de %(brand)s ne prend pas en charge la recherche dans les messages chiffrés",
+ "This version of %(brand)s does not support viewing some encrypted files": "Cette version de %(brand)s ne prend pas en charge l'affichage de certains fichiers chiffrés",
+ "Use the Desktop app to search encrypted messages": "Utilisez une Application de bureau pour rechercher dans tous les messages chiffrés",
+ "Use the Desktop app to see all encrypted files": "Utilisez une Application de bureau pour voir tous les fichiers chiffrés",
+ "Join the conference at the top of this room": "Rejoignez la téléconférence en haut de ce salon",
+ "Join the conference from the room information card on the right": "Rejoignez la téléconférence à partir de la carte d'informations sur la droite",
+ "Set the name of a font installed on your system & %(brand)s will attempt to use it.": "Définissez le nom d'une police de caractères installée sur votre système et %(brand)s essaiera de l'utiliser.",
+ "Create a room in %(communityName)s": "Créer un salon dans %(communityName)s",
+ "An image will help people identify your community.": "Une image aidera les personnes à identifier votre communauté.",
+ "Add image (optional)": "Ajouter une image (facultatif)",
+ "Enter name": "Saisir un nom",
+ "Community ID: +:%(domain)s": "Identifiant de la communauté : +:%(domain)s",
+ "Invite people to join %(communityName)s": "Inviter des personnes à rejoindre %(communityName)s",
+ "Send %(count)s invites|one": "Envoyer %(count)s invitation",
+ "Send %(count)s invites|other": "Envoyer %(count)s invitations",
+ "People you know on %(brand)s": "Les personnes que vous connaissez dans %(brand)s",
+ "Add another email": "Ajouter un autre e-mail",
+ "Download logs": "Télécharger les journaux",
+ "Preparing to download logs": "Préparation du téléchargement des journaux",
+ "Information": "Informations",
+ "Video conference started by %(senderName)s": "vidéoconférence démarrée par %(senderName)s",
+ "Video conference updated by %(senderName)s": "vidéoconférence mise à jour par %(senderName)s",
+ "Video conference ended by %(senderName)s": "vidéoconférence terminée par %(senderName)s",
+ "Room settings": "Paramètres du salon",
+ "Show files": "Afficher les fichiers",
+ "%(count)s people|other": "%(count)s personnes",
+ "%(count)s people|one": "%(count)s personne",
+ "About": "À propos",
+ "Not encrypted": "Non-chiffré",
+ "Add widgets, bridges & bots": "Ajouter des widgets, ponts et bots",
+ "Edit widgets, bridges & bots": "Modifier les widgets, ponts et bots",
+ "Widgets": "Widgets",
+ "Unpin a widget to view it in this panel": "Dépingler un widget pour l'afficher dans ce panneau",
+ "Unpin": "Dépingler",
+ "You can only pin up to %(count)s widgets|other": "Vous ne pouvez épingler que jusqu'à %(count)s widgets",
+ "Room Info": "Informations sur le salon",
+ "%(count)s results|one": "%(count)s résultat",
+ "%(count)s results|other": "%(count)s résultats",
+ "Explore all public rooms": "Explorer tous les salons publiques",
+ "Can't see what you’re looking for?": "Vous ne voyez pas ce que vous cherchez ?",
+ "Custom Tag": "Étiquette personnalisée",
+ "Explore public rooms": "Explorer les salons publiques",
+ "Explore community rooms": "Explorer les salons de la communauté",
+ "Show Widgets": "Afficher les widgets",
+ "Hide Widgets": "Masquer les widgets",
+ "Remove messages sent by others": "Supprimer les messages envoyés par d'autres",
+ "Privacy": "Vie privée",
+ "Secure Backup": "Sauvegarde sécurisée",
+ "Algorithm:": "Algorithme :",
+ "Set up Secure Backup": "Configurer la sauvegarde sécurisée",
+ "%(brand)s Android": "%(brand)s Android",
+ "Community and user menu": "Menu de la communauté et de l'utilisateur",
+ "User settings": "Paramètres de l'utilisateur",
+ "Community settings": "Paramètres de la communauté",
+ "Failed to find the general chat for this community": "Impossible de trouver le chat général de cette communauté",
+ "Starting microphone...": "Allumage du microphone …",
+ "Starting camera...": "Allumage de la caméra ...",
+ "Call connecting...": "Connexion à l'appel …",
+ "Calling...": "Appel en cours …",
+ "Explore rooms in %(communityName)s": "Explorer les salons dans %(communityName)s",
+ "You have no visible notifications in this room.": "Vous n'avez pas de notification visible dans ce salon.",
+ "You’re all caught up": "Vous êtes à jour",
+ "You do not have permission to create rooms in this community.": "Vous n'avez pas la permission de créer des salons dans cette communauté.",
+ "Cannot create rooms in this community": "Impossible de créer des salons dans cette communauté",
+ "Create community": "Créer une communauté",
+ "Attach files from chat or just drag and drop them anywhere in a room.": "Envoyez des fichiers depuis le chat ou juste glissez et déposez-les n'importe où dans le salon.",
+ "No files visible in this room": "Aucun fichier visible dans ce salon",
+ "Enter the location of your Element Matrix Services homeserver. It may use your own domain name or be a subdomain of element.io.": "Entrez l'emplacement de votre serveur d'accueil Element Matrix Services. Cela peut utiliser votre propre nom de domaine ou être un sous-domaine de element.io.",
+ "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.": "Vous pouvez utiliser l'option de serveur personnalisé pour vous connecter à d'autres serveurs Matrix en spécifiant une URL de serveur d'accueil différente. Cela vous permet d'utiliser %(brand)s avec un compte Matrix existant sur un serveur d'accueil différent.",
+ "Away": "Tout droit",
+ "Move right": "Aller à droite",
+ "Move left": "Aller à gauche",
+ "Revoke permissions": "Révoquer les permissions",
+ "Take a picture": "Prendre une photo",
+ "Unable to set up keys": "Impossible de configurer les clés",
+ "Recent changes that have not yet been received": "Changements récents qui n'ont pas encore été reçus",
+ "The server is not configured to indicate what the problem is (CORS).": "Le n'est n'est pas configuré pour indiquer quel est le problème (CORS).",
+ "A connection error occurred while trying to contact the server.": "Une erreur de connexion est survenue en essayant de contacter le serveur.",
+ "Your area is experiencing difficulties connecting to the internet.": "Votre emplacement connaît des difficultés à se connecter à Internet.",
+ "The server has denied your request.": "Le serveur a refusé votre requête.",
+ "The server is offline.": "Le serveur est éteint.",
+ "A browser extension is preventing the request.": "Une extension du navigateur bloque la requête.",
+ "Your firewall or anti-virus is blocking the request.": "Votre pare-feu ou votre antivirus bloque la requête.",
+ "The server (%(serverName)s) took too long to respond.": "Le serveur (%(serverName)s) met trop de temps à répondre.",
+ "Your server isn't responding to some of your requests. Below are some of the most likely reasons.": "Votre serveur ne répond pas à certaines requêtes. Vous trouverez ci-dessus quelles sont la plupart des raisons.",
+ "Server isn't responding": "Le serveur ne répond pas",
+ "You're all caught up.": "Vous êtes à jour.",
+ "Data on this screen is shared with %(widgetDomain)s": "Les données sur cet écran sont partagées avec %(widgetDomain)s",
+ "Modal Widget": "Fenêtre de widget",
+ "Invite someone using their name, username (like ) or share this room.": "Invitez quelqu'un à partir de son nom, pseudo (comme ) ou partagez ce salon.",
+ "This won't invite them to %(communityName)s. To invite someone to %(communityName)s, click here": "Cela ne va pas l'inviter à %(communityName)s. Pour inviter quelqu'un à %(communityName)s, cliquez ici",
+ "Start a conversation with someone using their name or username (like ).": "Démarrer une conversation avec quelqu'un en utilisant son nom ou son pseudo (comme ).",
+ "May include members not in %(communityName)s": "Peut inclure des membres qui ne sont pas dans %(communityName)s",
+ "Send feedback": "Envoyer un commentaire",
+ "PRO TIP: If you start a bug, please submit debug logs to help us track down the problem.": "CONSEIL : si vous reportez un bug, merci d'envoyer les logs de débogage pour nous aider à identifier le problème.",
+ "Please view existing bugs on Github first. No match? Start a new one.": "Merci de regarder d'abord les bugs déjà répertoriés sur Github. Pas de résultat ? Reportez un nouveau bug.",
+ "Report a bug": "Reporter un bug",
+ "There are two ways you can provide feedback and help us improve %(brand)s.": "Il y a deux manières pour que vous puissiez faire vos retour et nous aider à améliorer %(brand)s.",
+ "Comment": "Commentaire",
+ "Add comment": "Ajouter un commentaire",
+ "Please go into as much detail as you like, so we can track down the problem.": "Merci d'ajouter le plus de détails possible, pour que nous puissions mieux identifier le problème.",
+ "Tell us below how you feel about %(brand)s so far.": "Dites-nous ci-dessous quel est votre ressenti à propos de %(brand)s jusque là.",
+ "Rate %(brand)s": "Noter %(brand)s",
+ "Feedback sent": "Commentaire envoyé",
+ "Update community": "Modifier la communauté",
+ "There was an error updating your community. The server is unable to process your request.": "Une erreur est survenue lors de la mise à jour de votre communauté. Le serveur est incapable de traiter votre requête.",
+ "Block anyone not part of %(serverName)s from ever joining this room.": "Bloque n'importe qui qui n'est pas membre de %(serverName)s de rejoindre ce salon.",
+ "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.": "Vous devriez le déactiver si le salon est utilisé pour collaborer avec des équipes externes qui ont leur propre serveur d'accueil. Ce ne peut pas être changé plus tard.",
+ "You might enable this if the room will only be used for collaborating with internal teams on your homeserver. This cannot be changed later.": "Vous devriez l'activer si le salon n'est utilisé que pour collaborer avec des équipes internes sur votre serveur d'accueil. Ce ne peut pas être changé plus tard.",
+ "Your server requires encryption to be enabled in private rooms.": "Votre serveur requiert d'activer le chiffrement dans les salons privés.",
+ "Private rooms can be found and joined by invitation only. Public rooms can be found and joined by anyone in this community.": "Les salons privés ne peuvent être trouvés et rejoints seulement par invitation. Les salons publics peut être trouvés et rejoints par n'importe qui dans cette communauté.",
+ "Private rooms can be found and joined by invitation only. Public rooms can be found and joined by anyone.": "Les salons privés ne peuvent être trouvés et rejoints seulement par invitation. Les salons publics peut être trouvés et rejoints par n'importe qui."
}
diff --git a/src/i18n/strings/gl.json b/src/i18n/strings/gl.json
index e32874dd82..dc3e0ff1e4 100644
--- a/src/i18n/strings/gl.json
+++ b/src/i18n/strings/gl.json
@@ -137,7 +137,7 @@
"Enable automatic language detection for syntax highlighting": "Activar a detección automática de idioma para o resalte da sintaxe",
"Automatically replace plain text Emoji": "Substituír automaticamente Emoji en texto plano",
"Enable inline URL previews by default": "Activar por defecto as vistas previas en liña de URL",
- "Enable URL previews for this room (only affects you)": "Activar avista previa de URL nesta sala (só che afesta a ti)",
+ "Enable URL previews for this room (only affects you)": "Activar vista previa de URL nesta sala (só che afecta 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)",
@@ -2537,5 +2537,29 @@
"(connection failed)": "(fallou a conexión)",
"The call could not be established": "Non se puido establecer a chamada",
"The other party declined the call.": "A outra persoa rexeitou a chamada.",
- "Call Declined": "Chamada rexeitada"
+ "Call Declined": "Chamada rexeitada",
+ "Move right": "Mover á dereita",
+ "Move left": "Mover á esquerda",
+ "Revoke permissions": "Revogar permisos",
+ "Unpin a widget to view it in this panel": "Desafixar un widget para velo neste panel",
+ "You can only pin up to %(count)s widgets|other": "Só podes fixar ata %(count)s widgets",
+ "Show Widgets": "Mostrar Widgets",
+ "Hide Widgets": "Agochar Widgets",
+ "The call was answered on another device.": "A chamada foi respondida noutro dispositivo.",
+ "Answered Elsewhere": "Respondido noutro lugar",
+ "Data on this screen is shared with %(widgetDomain)s": "Os datos nesta pantalla compártense con %(widgetDomain)s",
+ "Modal Widget": "Widget modal",
+ "Tell us below how you feel about %(brand)s so far.": "Cóntanos que opinas acerca de %(brand)s ata o momento.",
+ "Rate %(brand)s": "Valora %(brand)s",
+ "Feedback sent": "Comentario enviado",
+ "Send feedback": "Enviar comentario",
+ "PRO TIP: If you start a bug, please submit debug logs to help us track down the problem.": "PRO TIP: se inicias un novo informe, envía rexistros de depuración para axudarnos a investigar o problema.",
+ "Please view existing bugs on Github first. No match? Start a new one.": "Primeiro revisa a lista existente de fallo en Github. Non hai nada? Abre un novo.",
+ "Report a bug": "Informar dun fallo",
+ "There are two ways you can provide feedback and help us improve %(brand)s.": "Podes axudarnos a mellorar %(brand)s contactando destos dous xeitos.",
+ "Comment": "Comentar",
+ "Add comment": "Engadir comentario",
+ "Please go into as much detail as you like, so we can track down the problem.": "Podes entrar en detalle canto desexes, así poderemos entender mellor o problema.",
+ "%(senderName)s ended the call": "%(senderName)s finalizou a chamada",
+ "You ended the call": "Finalizaches a chamada"
}
diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json
index e7735dcf79..edd2cc5d21 100644
--- a/src/i18n/strings/hu.json
+++ b/src/i18n/strings/hu.json
@@ -330,7 +330,7 @@
"Start automatically after system login": "Rendszerindításkor automatikus elindítás",
"Analytics": "Analitika",
"Options": "Opciók",
- "%(brand)s collects anonymous analytics to allow us to improve the application.": "%(brand)s személytelen analitikai adatokat gyűjt annak érdekében, hogy fejleszteni tudjuk az alkalmazást.",
+ "%(brand)s collects anonymous analytics to allow us to improve the application.": "A(z) %(brand)s névtelen analitikai adatokat gyűjt annak érdekében, hogy fejleszteni tudjuk az alkalmazást.",
"Passphrases must match": "A jelmondatoknak meg kell egyezniük",
"Passphrase must not be empty": "A jelmondat nem lehet üres",
"Export room keys": "Szoba kulcsok mentése",
@@ -339,7 +339,7 @@
"File to import": "Fájl betöltése",
"The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "A kimentett fájl jelmondattal van védve. A kibontáshoz add meg a jelmondatot.",
"You must join the room to see its files": "Ahhoz hogy lásd a fájlokat be kell lépned a szobába",
- "Reject all %(invitedRooms)s invites": "Minden %(invitedRooms)s meghívó elutasítása",
+ "Reject all %(invitedRooms)s invites": "Mind a(z) %(invitedRooms)s meghívó elutasítása",
"Failed to invite": "Meghívás sikertelen",
"Failed to invite the following users to the %(roomName)s room:": "Az alábbi felhasználókat nem sikerült meghívni a(z) %(roomName)s szobába:",
"Confirm Removal": "Törlés megerősítése",
@@ -645,7 +645,7 @@
"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.": "A szűrő beállításához húzd a közösség avatarját a szűrő panel fölé a képernyő bal szélén. A szűrő panelen az avatarra kattintva bármikor leszűrheted azokat a szobákat és embereket akik a megadott közösséghez tartoznak.",
"Key request sent.": "Kulcs kérés elküldve.",
"Code": "Kód",
- "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.": "Ha a GitHubon keresztül küldted be a hibát, a hibakeresési napló segíthet nekünk a javításban. A napló felhasználási adatokat tartalmaz mint a felhasználói neved, az általad meglátogatott szobák vagy csoportok azonosítóját vagy alternatív nevét és mások felhasználói nevét. De nem tartalmazzák az üzeneteket.",
+ "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.": "Ha a GitHubon keresztül küldted be a hibát, a hibakeresési napló segíthet nekünk a javításban. A napló felhasználási adatokat tartalmaz, mint például a felhasználói neved, az általad meglátogatott szobák vagy csoportok azonosítóját vagy alternatív nevét és mások felhasználói nevét. De nem tartalmazzák az üzeneteket.",
"Submit debug logs": "Hibakeresési napló küldése",
"Opens the Developer Tools dialog": "Megnyitja a fejlesztői eszközök ablakát",
"Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "%(displayName)s (%(userName)s) az alábbi időpontban látta: %(dateTime)s",
@@ -1210,7 +1210,7 @@
"User %(userId)s is already in the room": "%(userId)s felhasználó már a szobában van",
"The user must be unbanned before they can be invited.": "A felhasználó kitiltását először vissza kell vonni mielőtt újra meghívható lesz.",
"Upgrade to your own domain": "Frissíts a saját domain-re",
- "Accept all %(invitedRooms)s invites": "Minden meghívást elfogad: %(invitedRooms)s",
+ "Accept all %(invitedRooms)s invites": "Mind a(z) %(invitedRooms)s meghívás elfogadása",
"Change room avatar": "Szoba profilképének megváltoztatása",
"Change room name": "Szoba nevének megváltoztatása",
"Change main address for the room": "A szoba elsődleges címének megváltoztatása",
@@ -1458,7 +1458,7 @@
"Set an email for account recovery. Use email to optionally be discoverable by existing contacts.": "E-mail cím beállítása a fiók visszaállításához. E-mail cím, hogy ismerősök megtalálhassanak.",
"Enter your custom homeserver URL What does this mean?": "Add meg a matrix szervered URL-jét Mit jelent ez?",
"Enter your custom identity server URL What does this mean?": "Add meg az azonosítási szervered URL-jét Mit jelent ez?",
- "Use an identity server to invite by email. Use the default (%(defaultIdentityServerName)s) or manage in Settings.": "Használj azonosítási szervert e-mail címmel való meghíváshoz. Használd az alapértelmezett szervert (%(defaultIdentityServerName)s) vagy adj meg mást a Beállításokban.",
+ "Use an identity server to invite by email. Use the default (%(defaultIdentityServerName)s) or manage in Settings.": "Használj azonosítási szervert az e-mail címmel való meghíváshoz. Használd az alapértelmezett szervert (%(defaultIdentityServerName)s) vagy adj meg mást a Beállításokban.",
"Use an identity server to invite by email. Manage in Settings.": "Használj azonosítási szervert e-mail címmel való meghíváshoz. Megadása a Beállításokban.",
"Enable room encryption": "Szoba titkosításának bekapcsolása",
"Use an identity server": "Azonosítási kiszolgáló használata",
@@ -1590,7 +1590,7 @@
"%(name)s accepted": "%(name)s elfogadta",
"You cancelled": "Megszakítottad",
"%(name)s cancelled": "%(name)s megszakította",
- "%(name)s wants to verify": "%(name)s ellenőrizni szeretné",
+ "%(name)s wants to verify": "%(name)s ellenőrizni szeretne",
"You sent a verification request": "Ellenőrzési kérést küldtél",
"Try out new ways to ignore people (experimental)": "Emberek figyelmen kívül hagyásához próbálj ki új utakat (kísérleti)",
"My Ban List": "Tiltólistám",
@@ -1797,9 +1797,9 @@
"Channel: %(channelName)s": "Csatorna: %(channelName)s",
"Show less": "Kevesebbet mutat",
"Securely cache encrypted messages locally for them to appear in search results, using ": "A titkosított üzenetek kereséséhez azokat biztonságos módon helyileg kell tárolnod, felhasználva: ",
- " to store messages from ": " üzenetek eltárolásához innen ",
- "rooms.": "szobák.",
- "Manage": "Kezel",
+ " to store messages from ": " üzenetek tárolásához ",
+ "rooms.": "szobából.",
+ "Manage": "Kezelés",
"Securely cache encrypted messages locally for them to appear in search results.": "A titkosított üzenetek kereséséhez azokat biztonságos módon helyileg kell tárolnod.",
"Enable": "Engedélyez",
"%(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.": "A %(brand)sból a titkosított üzenetek biztonságos helyi tárolásához hiányzik néhány dolog. Ha kísérletezni szeretnél ezzel a lehetőséggel fordíts le egy saját %(brand)sot a kereső komponens hozzáadásával.",
@@ -2375,7 +2375,7 @@
"Away": "Távol",
"Are you sure you want to cancel entering passphrase?": "Biztos vagy benne, hogy megszakítod a jelmondat bevitelét?",
"Enable advanced debugging for the room list": "Kibővített hibakeresés bekapcsolása a szoba listához",
- "%(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 képes a web böngészőben futva biztonságosan elmenteni a titkosított üzeneteket helyben. Használd az Asztali %(brand)s ahhoz, hogy az üzenetekben való keresésekkor a titkosított üzenetek is megjelenhessenek.",
+ "%(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.": "A(z) %(brand)s nem képes a web böngészőben futva biztonságosan elmenteni a titkosított üzeneteket helyben. Használd az Asztali %(brand)s alkalmazást ahhoz, hogy az üzenetekben való keresésekkor a titkosított üzenetek is megjelenhessenek.",
"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.",
@@ -2484,7 +2484,7 @@
"Cross-signing is not set up.": "Eszközök közötti hitelesítés nincs beállítva.",
"Backup version:": "Mentés verzió:",
"Algorithm:": "Algoritmus:",
- "Back up your encryption keys with your account data in case you lose access to your sessions. Your keys will be secured with a unique Recovery Key.": "Ments el a titkosítási kulcsaidat a fiókadatokkal arra az esetre ha levesztenéd a hozzáférést a munkameneteidhez. A kulcsok egy egyedi visszaállítási kulccsal lesznek védve.",
+ "Back up your encryption keys with your account data in case you lose access to your sessions. Your keys will be secured with a unique Recovery Key.": "Ments el a titkosítási kulcsaidat a fiókadatokkal arra az esetre ha elvesztenéd a hozzáférést a munkameneteidhez. A kulcsok egy egyedi visszaállítási kulccsal lesznek védve.",
"Backup key stored:": "Mentési kulcs tár:",
"Backup key cached:": "Mentési kulcs gyorsítótár:",
"Secret storage:": "Biztonsági tároló:",
@@ -2507,7 +2507,7 @@
"not found in storage": "a tárban nem található",
"Widgets": "Kisalkalmazások",
"Edit widgets, bridges & bots": "Kisalkalmazások, hidak és botok szerkesztése",
- "Use the Desktop app to see all encrypted files": "Minden titkosított fájl eléréséhez használd az Asztali alkalmazást",
+ "Use the Desktop app to see all encrypted files": "Ahhoz, hogy elérd az összes titkosított fájlt, használd az Asztali alkalmazást",
"Use the Desktop app to search encrypted messages": "A titkosított üzenetek kereséséhez használd az Asztali alkalmazást",
"This version of %(brand)s does not support viewing some encrypted files": "%(brand)s ezen verziója nem minden titkosított fájl megjelenítését támogatja",
"This version of %(brand)s does not support searching encrypted messages": "%(brand)s ezen verziója nem támogatja a keresést a titkosított üzenetekben",
@@ -2538,5 +2538,16 @@
"(connection failed)": "(kapcsolódás sikertelen)",
"The call could not be established": "A hívás kapcsolatot nem lehet felépíteni",
"The other party declined the call.": "A másik fél elutasította a hívást.",
- "Call Declined": "Hívás elutasítva"
+ "Call Declined": "Hívás elutasítva",
+ "Move right": "Jobbra mozgat",
+ "Move left": "Balra mozgat",
+ "Revoke permissions": "Jogosultságok visszavonása",
+ "Data on this screen is shared with %(widgetDomain)s": "Az adatok erről a képernyőről megosztásra kerülnek ezzel: %(widgetDomain)s",
+ "Modal Widget": "Előugró kisalkalmazás",
+ "Unpin a widget to view it in this panel": "Kisalkalmazás megjelenítése ezen a panelen",
+ "You can only pin up to %(count)s widgets|other": "Csak %(count)s kisalkalmazást tudsz kitűzni",
+ "Show Widgets": "Kisalkalmazások megjelenítése",
+ "Hide Widgets": "Kisalkalmazások elrejtése",
+ "The call was answered on another device.": "A hívás másik eszközön lett fogadva.",
+ "Answered Elsewhere": "Máshol lett felvéve"
}
diff --git a/src/i18n/strings/it.json b/src/i18n/strings/it.json
index d6f7cc714e..9138bb86f9 100644
--- a/src/i18n/strings/it.json
+++ b/src/i18n/strings/it.json
@@ -2540,5 +2540,29 @@
"(connection failed)": "(connessione fallita)",
"The call could not be established": "Impossibile stabilire la chiamata",
"The other party declined the call.": "Il destinatario ha rifiutato la chiamata.",
- "Call Declined": "Chiamata rifiutata"
+ "Call Declined": "Chiamata rifiutata",
+ "Offline encrypted messaging using dehydrated devices": "Messaggistica offline criptata usando dispositivi \"disidratati\"",
+ "Move right": "Sposta a destra",
+ "Move left": "Sposta a sinistra",
+ "Revoke permissions": "Revoca autorizzazioni",
+ "Unpin a widget to view it in this panel": "Sblocca un widget per vederlo in questo pannello",
+ "You can only pin up to %(count)s widgets|other": "Puoi ancorare al massimo %(count)s widget",
+ "Show Widgets": "Mostra i widget",
+ "Hide Widgets": "Nascondi i widget",
+ "The call was answered on another device.": "La chiamata è stata accettata su un altro dispositivo.",
+ "Answered Elsewhere": "Risposto altrove",
+ "Data on this screen is shared with %(widgetDomain)s": "I dati in questa schermata vengono condivisi con %(widgetDomain)s",
+ "Send feedback": "Invia feedback",
+ "PRO TIP: If you start a bug, please submit debug logs to help us track down the problem.": "CONSIGLIO: se segnali un errore, invia i log di debug per aiutarci ad individuare il problema.",
+ "Please view existing bugs on Github first. No match? Start a new one.": "Prima controlla gli errori esistenti su Github. Non l'hai trovato? Apri una segnalazione.",
+ "Report a bug": "Segnala un errore",
+ "There are two ways you can provide feedback and help us improve %(brand)s.": "Ci sono due modi per fornire un feedback ed aiutarci a migliorare %(brand)s.",
+ "Comment": "Commento",
+ "Add comment": "Aggiungi commento",
+ "Please go into as much detail as you like, so we can track down the problem.": "Cerca di aggiungere più dettagli possibile, in modo che possiamo individuare il problema.",
+ "Tell us below how you feel about %(brand)s so far.": "Dicci qua sotto come ti sembra %(brand)s finora.",
+ "Rate %(brand)s": "Valuta %(brand)s",
+ "Feedback sent": "Feedback inviato",
+ "%(senderName)s ended the call": "%(senderName)s ha terminato la chiamata",
+ "You ended the call": "Hai terminato la chiamata"
}
diff --git a/src/i18n/strings/lt.json b/src/i18n/strings/lt.json
index 9bdbb7a6f7..cdee2c3549 100644
--- a/src/i18n/strings/lt.json
+++ b/src/i18n/strings/lt.json
@@ -8,7 +8,7 @@
"Which officially provided instance you are using, if any": "Kurią oficialiai teikiamą instanciją naudojate, jei tokių yra",
"Whether or not you're using the Richtext mode of the Rich Text Editor": "Ar jūs naudojate Raiškiojo Teksto Redaktoriaus Raiškiojo Teksto režimą ar ne",
"Your homeserver's URL": "Jūsų serverio URL",
- "Analytics": "Statistika",
+ "Analytics": "Analitika",
"The information being sent to us to help make %(brand)s better includes:": "Informacija, siunčiama mums siekiant pagerinti %(brand)s, yra:",
"Fetching third party location failed": "Nepavyko gauti trečios šalies vietos",
"I understand the risks and wish to continue": "Suprantu šią riziką ir noriu tęsti",
@@ -28,7 +28,7 @@
"On": "Įjungta",
"Changelog": "Keitinių žurnalas",
"Waiting for response from server": "Laukiama atsakymo iš serverio",
- "Failed to change password. Is your password correct?": "Nepavyko pakeisti slaptažodžio. Ar Jūsų slaptažodis teisingas?",
+ "Failed to change password. Is your password correct?": "Nepavyko pakeisti slaptažodžio. Ar jūsų slaptažodis teisingas?",
"Uploaded on %(date)s by %(user)s": "Atnaujinta %(date)s vartotojo %(user)s",
"OK": "Gerai",
"Send Custom Event": "Siųsti pasirinktinį įvykį",
@@ -46,26 +46,26 @@
"Downloading update...": "Atsiunčiamas atnaujinimas...",
"Messages in one-to-one chats": "Žinutės privačiuose pokalbiuose",
"Unavailable": "Neprieinamas",
- "Error saving email notification preferences": "Klaida išsaugant pranešimų el. paštu nuostatas",
+ "Error saving email notification preferences": "Klaida saugojant el. pašto pranešimų nuostatas",
"View Decrypted Source": "Peržiūrėti iššifruotą šaltinį",
"Failed to update keywords": "Nepavyko atnaujinti raktažodžių",
"Notifications on the following keywords follow rules which can’t be displayed here:": "Pranešimai šiems raktažodžiams yra uždrausti taisyklėmis:",
"Please set a password!": "Prašau įrašykite slaptažodį!",
"powered by Matrix": "veikia su Matrix",
"You have successfully set a password!": "Jūs sėkmingai įrašėte slaptažodį!",
- "Favourite": "Favoritai",
+ "Favourite": "Mėgstamas",
"All Rooms": "Visi pokalbių kambariai",
"Explore Room State": "Peržiūrėti kambario būseną",
"Source URL": "Šaltinio URL adresas",
- "Messages sent by bot": "Roboto siunčiamos žinutės",
+ "Messages sent by bot": "Boto siųstos žinutės",
"Cancel": "Atšaukti",
"Filter results": "Išfiltruoti rezultatus",
"Members": "Nariai",
"No update available.": "Nėra galimų atnaujinimų.",
"Noisy": "Triukšmingas",
- "Collecting app version information": "Renkama programėlės versijos informacija",
+ "Collecting app version information": "Renkama programos versijos informacija",
"Keywords": "Raktažodžiai",
- "Unpin Message": "Atsegti žinutę",
+ "Unpin Message": "Atsegti Žinutę",
"Enable notifications for this account": "Įjungti pranešimus šiai paskyrai",
"Remove": "Pašalinti",
"Invite to this community": "Pakviesti į šią bendruomenę",
@@ -79,9 +79,9 @@
"%(brand)s uses many advanced browser features, some of which are not available or experimental in your current browser.": "%(brand)s naudoja daug išplėstinių naršyklės funkcijų, kai kurios iš jų yra neprieinamos arba eksperimentinės jūsų esamoje naršyklėje.",
"Event sent!": "Įvykis išsiųstas!",
"Unnamed room": "Kambarys be pavadinimo",
- "Dismiss": "Atmesti",
+ "Dismiss": "Atsisakyti",
"Explore Account Data": "Peržiūrėti paskyros duomenis",
- "Remove from Directory": "Pašalinti iš katalogo",
+ "Remove from Directory": "Pašalinti iš Katalogo",
"Download this file": "Atsisiųsti šį failą",
"Saturday": "Šeštadienis",
"Remember, you can always set an email address in user settings if you change your mind.": "Nepamirškite, kad jei persigalvosite, tai bet kada galite nustatyti el. pašto adresą vartotojo nustatymuose.",
@@ -99,7 +99,7 @@
"You must specify an event type!": "Privalote nurodyti įvykio tipą!",
"(HTTP status %(httpStatus)s)": "(HTTP būsena %(httpStatus)s)",
"Failed to forget room %(errCode)s": "Nepavyko pamiršti kambario %(errCode)s",
- "What's New": "Kas naujo",
+ "What's New": "Kas Naujo",
"Wednesday": "Trečiadienis",
"Send": "Siųsti",
"Error": "Klaida",
@@ -113,7 +113,7 @@
"What's new?": "Kas naujo?",
"Notify me for anything else": "Pranešti man apie visa kita",
"View Source": "Peržiūrėti šaltinį",
- "Close": "Užverti",
+ "Close": "Uždaryti",
"Can't update user notification settings": "Nepavyksta atnaujinti naudotojo pranešimų nustatymų",
"Notify for all other messages/rooms": "Pranešti apie visas kitas žinutes/pokalbių kambarius",
"Unable to look up room ID from server": "Nepavyko gauti kambario ID iš serverio",
@@ -124,17 +124,17 @@
"Forward Message": "Persiųsti žinutę",
"Back": "Atgal",
"Reply": "Atsakyti",
- "Show message in desktop notification": "Rodyti žinutes darbalaukio pranešimuose",
+ "Show message in desktop notification": "Rodyti žinutę darbalaukio pranešime",
"Reject": "Atmesti",
"Sorry, your browser is not able to run %(brand)s.": "Atleiskite, jūsų naršyklė negali paleisti %(brand)s.",
"Quote": "Cituoti",
- "Messages in group chats": "Žinutės grupės pokalbiuose",
+ "Messages in group chats": "Žinutės grupiniuose pokalbiuose",
"Yesterday": "Vakar",
"Error encountered (%(errorDetail)s).": "Susidurta su klaida (%(errorDetail)s).",
"Low Priority": "Žemo prioriteto",
"%(brand)s does not know how to join a room on this network": "%(brand)s nežino kaip prisijungti prie kambario šiame tinkle",
"Set Password": "Nustatyti slaptažodį",
- "An error occurred whilst saving your email notification preferences.": "Išsaugant pranešimų el. paštu nuostatas, įvyko klaida.",
+ "An error occurred whilst saving your email notification preferences.": "Saugojant jūsų el. pašto pranešimų nuostatas, įvyko klaida.",
"Unable to join network": "Nepavyko prisijungti prie tinklo",
"Register": "Registruotis",
"Off": "Išjungta",
@@ -143,7 +143,7 @@
"remove %(name)s from the directory.": "pašalinti %(name)s iš katalogo.",
"You can now return to your account after signing out, and sign in on other devices.": "Po atsijungimo galite grįžti prie savo paskyros ir prisijungti kituose įrenginiuose.",
"Continue": "Tęsti",
- "Enable email notifications": "Įjungti el. pašto pranešimus",
+ "Enable email notifications": "Įjungti pranešimus el. paštu",
"Event Type": "Įvykio tipas",
"No rooms to show": "Nėra kambarių rodymui",
"Add rooms to this community": "Įtraukti kambarius į šią bendruomenę",
@@ -151,7 +151,7 @@
"Failed to change settings": "Nepavyko pakeisti nustatymų",
"Leave": "Išeiti",
"View Community": "Peržiūrėti bendruomenes",
- "Developer Tools": "Programuotojo įrankiai",
+ "Developer Tools": "Programuotojo Įrankiai",
"Unhide Preview": "Rodyti paržiūrą",
"Custom Server Options": "Pasirinktiniai Serverio Nustatymai",
"Event Content": "Įvykio turinys",
@@ -160,13 +160,13 @@
"Checking for an update...": "Tikrinama ar yra atnaujinimų...",
"e.g. %(exampleValue)s": "pvz., %(exampleValue)s",
"e.g. ": "pvz., ",
- "Your device resolution": "Jūsų įrenginio raiška",
- "Call Failed": "Skambutis nepavyko",
+ "Your device resolution": "Jūsų įrenginio skyra",
+ "Call Failed": "Skambutis Nepavyko",
"Unable to capture screen": "Nepavyko nufotografuoti ekrano",
- "You are already in a call.": "Jūs jau dalyvaujate skambutyje.",
+ "You are already in a call.": "Jūs jau esate skambutyje.",
"VoIP is unsupported": "VoIP yra nepalaikoma",
- "Permission Required": "Reikalingas leidimas",
- "Upload Failed": "Įkėlimas nepavyko",
+ "Permission Required": "Reikalingas Leidimas",
+ "Upload Failed": "Įkėlimas Nepavyko",
"Sun": "Sek",
"Mon": "Pir",
"Tue": "Ant",
@@ -192,27 +192,27 @@
"%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(time)s",
"%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(fullYear)s %(monthName)s %(day)s",
"%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(fullYear)s %(monthName)s %(day)s %(time)s",
- "Who would you like to add to this community?": "Ką norėtumėte pridėti į šią bendruomenę?",
+ "Who would you like to add to this community?": "Ką norėtumėte pridėti prie šios bendruomenės?",
"Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Įspėjimas: bet kuris jūsų pridėtas asmuo bus viešai matomas visiems, žinantiems bendruomenės ID",
- "Invite to Community": "Pakviesti į bendruomenę",
- "Which rooms would you like to add to this community?": "Kuriuos kambarius norėtumėte pridėti į šią bendruomenę?",
- "Add rooms to the community": "Pridėti kambarius į bendruomenę",
- "Add to community": "Pridėti į bendruomenę",
+ "Invite to Community": "Pakviesti į Bendruomenę",
+ "Which rooms would you like to add to this community?": "Kuriuos kambarius norėtumėte pridėti prie šios bendruomenės?",
+ "Add rooms to the community": "Pridėti kambarius prie bendruomenės",
+ "Add to community": "Pridėti prie bendruomenės",
"Failed to invite the following users to %(groupId)s:": "Nepavyko pakviesti šių vartotojų į %(groupId)s:",
"Failed to invite users to community": "Nepavyko pakviesti vartotojų į bendruomenę",
"Failed to invite users to %(groupId)s": "Nepavyko pakviesti vartotojų į %(groupId)s",
- "Failed to add the following rooms to %(groupId)s:": "Nepavyko pridėti šių kambarių į %(groupId)s:",
+ "Failed to add the following rooms to %(groupId)s:": "Nepavyko pridėti šių kambarių prie %(groupId)s:",
"%(brand)s does not have permission to send you notifications - please check your browser settings": "%(brand)s neturi leidimo siųsti jums pranešimus - patikrinkite savo naršyklės nustatymus",
"%(brand)s was not given permission to send notifications - please try again": "%(brand)s nebuvo suteiktas leidimas siųsti pranešimus - bandykite dar kartą",
- "Unable to enable Notifications": "Nepavyko įjungti pranešimų",
- "This email address was not found": "Šis el. pašto adresas nebuvo rastas",
+ "Unable to enable Notifications": "Nepavyko įjungti Pranešimų",
+ "This email address was not found": "Šis el. pašto adresas buvo nerastas",
"Admin": "Administratorius",
"Failed to invite": "Nepavyko pakviesti",
"Failed to invite the following users to the %(roomName)s room:": "Nepavyko pakviesti šių vartotojų į kambarį %(roomName)s:",
- "You need to be logged in.": "Turite būti prisijungę.",
+ "You need to be logged in.": "Jūs turite būti prisijungę.",
"Unable to create widget.": "Nepavyko sukurti valdiklio.",
"Failed to send request.": "Nepavyko išsiųsti užklausos.",
- "This room is not recognised.": "Šis kambarys neatpažintas.",
+ "This room is not recognised.": "Šis kambarys yra neatpažintas.",
"You are not in this room.": "Jūs nesate šiame kambaryje.",
"You do not have permission to do that in this room.": "Jūs neturite leidimo tai atlikti šiame kambaryje.",
"Room %(roomId)s not visible": "Kambarys %(roomId)s nematomas",
@@ -220,7 +220,7 @@
"Changes your display nickname": "Pakeičia jūsų rodomą slapyvardį",
"Invites user with given id to current room": "Pakviečia naudotoją su nurodytu id į esamą kambarį",
"You are now ignoring %(userId)s": "Dabar ignoruojate %(userId)s",
- "Opens the Developer Tools dialog": "Atveria programuotojo įrankių dialogą",
+ "Opens the Developer Tools dialog": "Atveria Programuotojo Įrankių dialogą",
"Verified key": "Patvirtintas raktas",
"Displays action": "Rodo veiksmą",
"Reason": "Priežastis",
@@ -229,9 +229,9 @@
"%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s pakeitė savo rodomą vardą į %(displayName)s.",
"%(senderName)s set their display name to %(displayName)s.": "%(senderName)s nustatė savo rodomą vardą į %(displayName)s.",
"%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s pašalino savo rodomą vardą (%(oldDisplayName)s).",
- "%(senderName)s removed their profile picture.": "%(senderName)s pašalino savo profilio paveikslą.",
- "%(senderName)s changed their profile picture.": "%(senderName)s pakeitė savo profilio paveikslą.",
- "%(senderName)s set a profile picture.": "%(senderName)s nustatė profilio paveikslą.",
+ "%(senderName)s removed their profile picture.": "%(senderName)s pašalino savo profilio paveikslėlį.",
+ "%(senderName)s changed their profile picture.": "%(senderName)s pakeitė savo profilio paveikslėlį.",
+ "%(senderName)s set a profile picture.": "%(senderName)s nustatė profilio paveikslėlį.",
"%(targetName)s rejected the invitation.": "%(targetName)s atmetė pakvietimą.",
"%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s pakeitė temą į \"%(topic)s\".",
"%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s pakeitė kambario pavadinimą į %(roomName)s.",
@@ -240,18 +240,18 @@
"%(senderName)s answered the call.": "%(senderName)s atsiliepė į skambutį.",
"(unknown failure: %(reason)s)": "(nežinoma klaida: %(reason)s)",
"%(senderName)s ended the call.": "%(senderName)s užbaigė skambutį.",
- "Unnamed Room": "Bevardis kambarys",
+ "Unnamed Room": "Bevardis Kambarys",
"Show timestamps in 12 hour format (e.g. 2:30pm)": "Rodyti laiko žymes 12 valandų formatu (pvz. 2:30pm)",
"Always show message timestamps": "Visada rodyti žinučių laiko žymes",
"Always show encryption icons": "Visada rodyti šifravimo piktogramas",
- "Room Colour": "Kambario spalva",
+ "Room Colour": "Kambario Spalva",
"Decline": "Atmesti",
"Accept": "Priimti",
"Incorrect verification code": "Neteisingas patvirtinimo kodas",
"Submit": "Pateikti",
"Phone": "Telefonas",
"Add": "Pridėti",
- "Failed to upload profile picture!": "Nepavyko įkelti profilio paveikslą!",
+ "Failed to upload profile picture!": "Nepavyko įkelti profilio paveikslėlio!",
"Upload new:": "Įkelti naują:",
"No display name": "Nėra rodomo vardo",
"New passwords don't match": "Nauji slaptažodžiai nesutampa",
@@ -260,7 +260,7 @@
"Do you want to set an email address?": "Ar norite nustatyti el. pašto adresą?",
"Current password": "Dabartinis slaptažodis",
"Password": "Slaptažodis",
- "New Password": "Naujas slaptažodis",
+ "New Password": "Naujas Slaptažodis",
"Failed to set display name": "Nepavyko nustatyti rodomo vardo",
"Cannot add any more widgets": "Nepavyksta pridėti daugiau valdiklių",
"Add a widget": "Pridėti valdiklį",
@@ -347,7 +347,7 @@
"Sent messages will be stored until your connection has returned.": "Išsiųstos žinutės bus saugomos tol, kol atsiras ryšys.",
"Active call": "Aktyvus skambutis",
"There's no one else here! Would you like to invite others or stop warning about the empty room?": "Čia daugiau nieko nėra! Ar norėtumėte pakviesti kitus ar išjungti įspėjimą apie tuščią kambarį?",
- "You seem to be uploading files, are you sure you want to quit?": "Panašu, kad jūs įkelinėjate failus, ar tikrai norite išeiti?",
+ "You seem to be uploading files, are you sure you want to quit?": "Panašu, kad jūs įkeliate failus, ar tikrai norite išeiti?",
"You seem to be in a call, are you sure you want to quit?": "Panašu, kad jūs dalyvaujate skambutyje, ar tikrai norite išeiti?",
"Search failed": "Paieška nepavyko",
"Server may be unavailable, overloaded, or search timed out :(": "Gali būti, kad serveris neprieinamas, perkrautas arba pasibaigė paieškai skirtas laikas :(",
@@ -417,9 +417,9 @@
"%(widgetName)s widget modified by %(senderName)s": "%(senderName)s modifikavo %(widgetName)s valdiklį",
"%(widgetName)s widget added by %(senderName)s": "%(senderName)s pridėjo %(widgetName)s valdiklį",
"%(widgetName)s widget removed by %(senderName)s": "%(senderName)s pašalino %(widgetName)s valdiklį",
- "Failure to create room": "Nepavyko sukurti kambarį",
+ "Failure to create room": "Nepavyko sukurti kambario",
"Server may be unavailable, overloaded, or you hit a bug.": "Serveris gali būti neprieinamas, per daug apkrautas, arba susidūrėte su klaida.",
- "Autoplay GIFs and videos": "Automatiškai atkurti GIF ir vaizdo įrašus",
+ "Autoplay GIFs and videos": "Automatiškai paleisti GIF ir vaizdo įrašus",
"This event could not be displayed": "Nepavyko parodyti šio įvykio",
"Kick": "Išmesti",
"Kick this user?": "Išmesti šį naudotoją?",
@@ -436,8 +436,8 @@
"%(duration)sm": "%(duration)s min",
"%(duration)sh": "%(duration)s val",
"%(duration)sd": "%(duration)s d",
- "Seen by %(userName)s at %(dateTime)s": "%(userName)s matė ties %(dateTime)s",
- "Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "%(displayName)s (%(userName)s) matė ties %(dateTime)s",
+ "Seen by %(userName)s at %(dateTime)s": "%(userName)s matė %(dateTime)s",
+ "Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "%(displayName)s (%(userName)s) matė %(dateTime)s",
"Show these rooms to non-members on the community page and room list?": "Rodyti šiuos kambarius ne nariams bendruomenės puslapyje ir kambarių sąraše?",
"Kicks user with given id": "Išmeta vartotoją su nurodytu id",
"Bans user with given id": "Užblokuoja vartotoją su nurodytu id",
@@ -446,7 +446,7 @@
"%(senderName)s kicked %(targetName)s.": "%(senderName)s išmetė %(targetName)s.",
"(not supported by this browser)": "(nėra palaikoma šios naršyklės)",
"(no answer)": "(nėra atsakymo)",
- "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s padarė būsimą kambario istoriją matomą visiems kambario dalyviams, nuo pat jų pakvietimo.",
+ "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s padarė būsimą kambario istoriją matomą visiems kambario dalyviams, nuo jų pakvietimo momento.",
"%(senderName)s made future room history visible to all room members.": "%(senderName)s padarė būsimą kambario istoriją matomą visiems kambario dalyviams.",
"%(senderName)s made future room history visible to anyone.": "%(senderName)s padarė būsimą kambario istoriją matomą bet kam.",
"Your browser does not support the required cryptography extensions": "Jūsų naršyklė nepalaiko reikalingų kriptografijos plėtinių",
@@ -456,8 +456,8 @@
"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",
+ "Change Password": "Keisti Slaptažodį",
+ "Authentication": "Autentifikavimas",
"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.",
"Please select the destination room for this message": "Pasirinkite šiai žinutei paskirties kambarį",
"Hangup": "Padėti ragelį",
@@ -471,11 +471,11 @@
"Share room": "Bendrinti kambarį",
"Usage": "Naudojimas",
"Searches DuckDuckGo for results": "Atlieka rezultatų paiešką sistemoje DuckDuckGo",
- "To use it, just wait for autocomplete results to load and tab through them.": "Norėdami tai naudoti, tiesiog palaukite, kol bus įkelti automatiškai užbaigti rezultatai, tuomet pereikite per juos naudodami Tab klavišą.",
+ "To use it, just wait for autocomplete results to load and tab through them.": "Norėdami tai naudoti, tiesiog palaukite, kol bus įkelti automatiškai užbaigti rezultatai, tuomet pereikite per juos naudodami tab klavišą.",
"%(targetName)s left the room.": "%(targetName)s išėjo iš kambario.",
"%(senderName)s changed the pinned messages for the room.": "%(senderName)s pakeitė prisegtas kambario žinutes.",
"Sorry, your homeserver is too old to participate in this room.": "Atleiskite, jūsų serverio versija yra per sena dalyvauti šiame kambaryje.",
- "Please contact your homeserver administrator.": "Prašome susisiekti su savo serverio administratoriumi.",
+ "Please contact your homeserver administrator.": "Susisiekite su savo serverio administratoriumi.",
"Enable inline URL previews by default": "Įjungti URL nuorodų peržiūras kaip numatytasias",
"Enable URL previews for this room (only affects you)": "Įjungti URL nuorodų peržiūras šiame kambaryje (įtakoja tik jus)",
"Enable URL previews by default for participants in this room": "Įjungti URL nuorodų peržiūras kaip numatytasias šiame kambaryje esantiems dalyviams",
@@ -486,14 +486,14 @@
"The conversation continues here.": "Pokalbis tęsiasi čia.",
"Jump to message": "Pereiti prie žinutės",
"Favourites": "Mėgstami",
- "Banned users": "Užblokuoti naudotojai",
+ "Banned users": "Užblokuoti vartotojai",
"This room is not accessible by remote Matrix servers": "Šis kambarys nėra pasiekiamas nuotoliniams Matrix serveriams",
"Who can read history?": "Kas gali skaityti istoriją?",
"Only room administrators will see this warning": "Šį įspėjimą matys tik kambario administratoriai",
- "You have enabled URL previews by default.": "Jūs esate įjungę URL nuorodų peržiūras kaip numatytasias.",
- "You have disabled URL previews by default.": "Jūs esate išjungę URL nuorodų peržiūras kaip numatytasias.",
- "URL previews are enabled by default for participants in this room.": "URL nuorodų peržiūros yra įjungtos kaip numatytasios šio kambario dalyviams.",
- "URL previews are disabled by default for participants in this room.": "URL nuorodų peržiūros yra išjungtos kaip numatytosios šio kambario dalyviams.",
+ "You have enabled URL previews by default.": "Jūs įjungėte URL nuorodų peržiūras kaip numatytasias.",
+ "You have disabled URL previews by default.": "Jūs išjungėte URL nuorodų peržiūras kaip numatytasias.",
+ "URL previews are enabled by default for participants in this room.": "URL nuorodų peržiūros šio kambario dalyviams yra įjungtos kaip numatytosios.",
+ "URL previews are disabled by default for participants in this room.": "URL nuorodų peržiūros šio kambario dalyviams yra išjungtos kaip numatytosios.",
"Invalid file%(extra)s": "Neteisingas failas %(extra)s",
"This room is a continuation of another conversation.": "Šis kambarys yra kito pokalbio pratęsimas.",
"Click here to see older messages.": "Spustelėkite čia, norėdami matyti senesnes žinutes.",
@@ -532,8 +532,8 @@
"Incorrect password": "Neteisingas slaptažodis",
"To continue, please enter your password:": "Norėdami tęsti, įveskite savo slaptažodį:",
"An error has occurred.": "Įvyko klaida.",
- "Failed to upgrade room": "Nepavyko atnaujinti kambarį",
- "The room upgrade could not be completed": "Nepavyko užbaigti kambario naujinimo",
+ "Failed to upgrade room": "Nepavyko atnaujinti kambario",
+ "The room upgrade could not be completed": "Nepavyko užbaigti kambario atnaujinimo",
"Sign out": "Atsijungti",
"Send Logs": "Siųsti žurnalus",
"Refresh": "Įkelti iš naujo",
@@ -544,11 +544,11 @@
"Missing roomId.": "Trūksta kambario ID.",
"Leave room": "Išeiti iš kambario",
"(could not connect media)": "(nepavyko prijungti medijos)",
- "This homeserver has hit its Monthly Active User limit.": "Šis serveris pasiekė savo mėnesinį aktyvių naudotojų limitą.",
+ "This homeserver has hit its Monthly Active User limit.": "Šis serveris pasiekė savo Mėnesinį Aktyvių Vartotojų limitą.",
"This homeserver has exceeded one of its resource limits.": "Šis serveris viršijo vieno iš savo išteklių limitą.",
"Unable to connect to Homeserver. Retrying...": "Nepavyksta prisijungti prie serverio. Bandoma iš naujo...",
"Enable widget screenshots on supported widgets": "Įjungti valdiklių ekrano kopijas palaikomuose valdikliuose",
- "Export E2E room keys": "Eksportuoti E2E kambarių raktus",
+ "Export E2E room keys": "Eksportuoti E2E (visapusio šifravimo) kambarių raktus",
"Last seen": "Paskutinį kartą matytas",
"Unignore": "Nebeignoruoti",
"and %(count)s others...|other": "ir %(count)s kitų...",
@@ -578,7 +578,7 @@
"%(severalUsers)schanged their avatar %(count)s times|other": "%(severalUsers)s pasikeitė pseudoportretus %(count)s kartų(-us)",
"%(oneUser)schanged their avatar %(count)s times|other": "%(oneUser)s pasikeitė pseudoportretą %(count)s kartų(-us)",
"And %(count)s more...|other": "Ir dar %(count)s...",
- "Existing Call": "Esamas skambutis",
+ "Existing Call": "Esamas Skambutis",
"A call is already in progress!": "Skambutis jau vyksta!",
"Default": "Numatytas",
"Restricted": "Apribotas",
@@ -599,7 +599,7 @@
"User %(user_id)s does not exist": "Vartotojas %(user_id)s neegzistuoja",
"Unknown server error": "Nežinoma serverio klaida",
"Avoid sequences": "Venkite sekų",
- "Avoid recent years": "Venkite paskiausių metų",
+ "Avoid recent years": "Venkite pastarųjų metų",
"Avoid years that are associated with you": "Venkite su jumis susijusių metų",
"Avoid dates and years that are associated with you": "Venkite su jumis susijusių metų ir datų",
"Capitalization doesn't help very much": "Rašymas didžiosiomis raidėmis nelabai padeda",
@@ -611,7 +611,7 @@
"Repeats like \"abcabcabc\" are only slightly harder to guess than \"abc\"": "Tokius pasikartojimus kaip \"abcabcabc\" yra tik truputėlį sunkiau atspėti nei \"abc\"",
"Sequences like abc or 6543 are easy to guess": "Tokias sekas kaip \"abc\" ar \"6543\" yra lengva atspėti",
"Recent years are easy to guess": "Paskiausius metus yra lengva atspėti",
- "Dates are often easy to guess": "Datas, dažniausiai, yra lengva atspėti",
+ "Dates are often easy to guess": "Datas dažniausiai yra lengva atspėti",
"This is a top-10 common password": "Tai yra vienas iš 10 dažniausiai naudojamų slaptažodžių",
"This is a top-100 common password": "Tai yra vienas iš 100 dažniausiai naudojamų slaptažodžių",
"This is a very common password": "Tai yra labai dažnai naudojamas slaptažodis",
@@ -624,8 +624,8 @@
"Avoid repeated words and characters": "Venkite pasikartojančių žodžių ir simbolių",
"Use a few words, avoid common phrases": "Naudokite keletą žodžių, venkite dažnai naudojamų frazių",
"No need for symbols, digits, or uppercase letters": "Nereikia simbolių, skaitmenų ar didžiųjų raidžių",
- "Encrypted messages in group chats": "Šifruotos žinutės grupės pokalbiuose",
- "Delete Backup": "Ištrinti atsarginę kopiją",
+ "Encrypted messages in group chats": "Šifruotos žinutės grupiniuose pokalbiuose",
+ "Delete Backup": "Ištrinti Atsarginę Kopiją",
"Backup version: ": "Atsarginės kopijos versija: ",
"Algorithm: ": "Algoritmas: ",
"Don't ask again": "Daugiau nebeklausti",
@@ -638,7 +638,7 @@
"That doesn't look like a valid email address": "Tai nepanašu į teisingą el. pašto adresą",
"Preparing to send logs": "Ruošiamasi išsiųsti žurnalus",
"Incompatible Database": "Nesuderinama duomenų bazė",
- "Deactivate Account": "Deaktyvuoti paskyrą",
+ "Deactivate Account": "Deaktyvuoti Paskyrą",
"Incompatible local cache": "Nesuderinamas vietinis podėlis",
"Updating %(brand)s": "Atnaujinama %(brand)s",
"This doesn't appear to be a valid email address": "Tai nepanašu į teisingą el. pašto adresą",
@@ -676,8 +676,8 @@
"This server does not support authentication with a phone number.": "Šis serveris nepalaiko tapatybės nustatymo telefono numeriu.",
"Download": "Atsisiųsti",
"Retry": "Bandyti dar kartą",
- "Add Email Address": "Pridėti el. pašto adresą",
- "Add Phone Number": "Pridėti telefono numerį",
+ "Add Email Address": "Pridėti El. Pašto Adresą",
+ "Add Phone Number": "Pridėti Telefono Numerį",
"Whether or not you're logged in (we don't record your username)": "Ar jūs prisijungę ar ne (mes neįrašome jūsų vartotojo vardo)",
"Chat with %(brand)s Bot": "Kalbėtis su %(brand)s Botu",
"Sign In": "Prisijungti",
@@ -687,15 +687,15 @@
"Sign in to your Matrix account on ": "Prisijunkite prie savo paskyros serveryje",
"Whether or not you're using the 'breadcrumbs' feature (avatars above the room list)": "Ar jūs naudojate 'duonos trupinių' funkciją ar ne (pseudoportretai virš kambarių sąrašo)",
"Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Ten, kur šis puslapis įtraukia identifikuojamą informaciją, kaip kambarys, vartotojas ar grupės ID, tie duomenys yra pašalinami prieš siunčiant į serverį.",
- "The remote side failed to pick up": "Nuotolinėi pusėi nepavyko atsiliepti",
+ "The remote side failed to pick up": "Nuotolinei pusei nepavyko atsiliepti",
"Call failed due to misconfigured server": "Skambutis nepavyko dėl neteisingai sukonfigūruoto serverio",
"Please ask the administrator of your homeserver (%(homeserverDomain)s) to configure a TURN server in order for calls to work reliably.": "Paprašykite savo serverio administratoriaus (%(homeserverDomain)s) sukonfiguruoti TURN serverį, kad skambučiai veiktų patikimai.",
"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.": "Alternatyviai, jūs galite bandyti naudoti viešą serverį turn.matrix.org, bet tai nebus taip patikima, ir tai atskleis jūsų IP adresą šiam serveriui. Jūs taip pat galite tvarkyti tai Nustatymuose.",
- "Try using turn.matrix.org": "Bandykite naudoti turn.matrix.org",
- "Call in Progress": "Vykstantis skambutis",
+ "Try using turn.matrix.org": "Bandyti naudojant turn.matrix.org",
+ "Call in Progress": "Vykstantis Skambutis",
"A call is currently being placed!": "Šiuo metu skambinama!",
- "Replying With Files": "Atsakyti su failais",
- "At this time it is not possible to reply with a file. Would you like to upload this file without replying?": "Šiuo metu neįmanoma atsakyti su failu. Ar norite įkelti šį failą neatsakydami?",
+ "Replying With Files": "Atsakyti Su Failais",
+ "At this time it is not possible to reply with a file. Would you like to upload this file without replying?": "Šiuo metu neįmanoma atsakyti su failu. Ar norėtumėte įkelti šį failą neatsakydami?",
"The file '%(fileName)s' failed to upload.": "Failo '%(fileName)s' nepavyko įkelti.",
"The file '%(fileName)s' exceeds this homeserver's size limit for uploads": "Failas '%(fileName)s' viršyja šio serverio įkeliamų failų dydžio limitą",
"The server does not support the room version specified.": "Serveris nepalaiko nurodytos kambario versijos.",
@@ -703,7 +703,7 @@
"Name or Matrix ID": "Vardas arba Matrix ID",
"Identity server has no terms of service": "Tapatybės serveris neturi paslaugų teikimo sąlygų",
"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.": "Šiam veiksmui reikalinga pasiekti numatytąjį tapatybės serverį , kad patvirtinti el. pašto adresą arba telefono numerį, bet serveris neturi jokių paslaugos teikimo sąlygų.",
- "Only continue if you trust the owner of the server.": "Tęskite tik tada, jei pasitikite serverio savininku.",
+ "Only continue if you trust the owner of the server.": "Tęskite tik tuo atveju, jei pasitikite serverio savininku.",
"Trust": "Pasitikėti",
"Failed to invite users to the room:": "Nepavyko pakviesti vartotojų į kambarį:",
"You need to be able to invite users to do that.": "Norėdami tai atlikti jūs turite turėti galimybę pakviesti vartotojus.",
@@ -711,7 +711,7 @@
"Messages": "Žinutės",
"Actions": "Veiksmai",
"Other": "Kitas",
- "Prepends ¯\\_(ツ)_/¯ to a plain-text message": "Prideda ¯\\_(ツ)_/¯ prie paprasto teksto pranešimo",
+ "Prepends ¯\\_(ツ)_/¯ to a plain-text message": "Prideda ¯\\_(ツ)_/¯ prie paprasto teksto žinutės",
"Sends a message as plain text, without interpreting it as markdown": "SIunčia žinutę, kaip paprastą tekstą, jo neinterpretuodamas kaip pažymėto",
"Upgrades a room to a new version": "Atnaujina kambarį į naują versiją",
"You do not have the required permissions to use this command.": "Jūs neturite reikalingų leidimų naudoti šią komandą.",
@@ -724,7 +724,7 @@
"This room has no topic.": "Šis kambarys neturi temos.",
"Sets the room name": "Nustato kambario pavadinimą",
"Use an identity server": "Naudoti tapatybės serverį",
- "Use an identity server to invite by email. Click continue to use the default identity server (%(defaultIdentityServerName)s) or manage in Settings.": "Norėdami pakviesti nurodydami el. paštą, naudokite tapatybės serverį. Tam, kad toliau būtų naudojamas numatytasis tapatybės serveris %(defaultIdentityServerName)s, spauskite tęsti, arba tvarkykite nustatymuose.",
+ "Use an identity server to invite by email. Click continue to use the default identity server (%(defaultIdentityServerName)s) or manage in Settings.": "Norėdami pakviesti nurodydami el. paštą, naudokite tapatybės serverį. Tam, kad toliau būtų naudojamas numatytasis tapatybės serveris %(defaultIdentityServerName)s, spauskite tęsti, arba tvarkykite Nustatymuose.",
"Use an identity server to invite by email. Manage in Settings.": "Norėdami pakviesti nurodydami el. paštą, naudokite tapatybės serverį. Tvarkykite nustatymuose.",
"Unbans user with given ID": "Atblokuoja vartotoją su nurodytu id",
"Ignored user": "Ignoruojamas vartotojas",
@@ -733,8 +733,8 @@
"Define the power level of a user": "Nustatykite vartotojo galios lygį",
"Deops user with given id": "Deop'ina vartotoją su nurodytu id",
"Adds a custom widget by URL to the room": "Į kambarį prideda pasirinktinį valdiklį pagal URL",
- "Please supply a https:// or http:// widget URL": "Prašome pateikti https:// arba http:// valdiklio URL",
- "You cannot modify widgets in this room.": "Jūs negalite keisti valdiklių šiame kambaryje.",
+ "Please supply a https:// or http:// widget URL": "Pateikite https:// arba http:// valdiklio URL",
+ "You cannot modify widgets in this room.": "Jūs negalite modifikuoti valdiklių šiame kambaryje.",
"Forces the current outbound group session in an encrypted room to be discarded": "Priverčia išmesti esamą užsibaigiantį grupės seansą užšifruotame kambaryje",
"Sends the given message coloured as a rainbow": "Išsiunčia nurodytą žinutę nuspalvintą kaip vaivorykštė",
"Sends the given emote coloured as a rainbow": "Išsiunčia nurodytą emociją nuspalvintą kaip vaivorykštė",
@@ -746,21 +746,21 @@
"%(senderDisplayName)s upgraded this room.": "%(senderDisplayName)s atnaujino šį kambarį.",
"%(senderDisplayName)s made the room public to whoever knows the link.": "%(senderDisplayName)s padarė kambarį viešą visiems žinantiems nuorodą.",
"%(senderDisplayName)s made the room invite only.": "%(senderDisplayName)s padarė kambarį tik pakviestiems.",
- "%(senderDisplayName)s changed the join rule to %(rule)s": "%(senderDisplayName)s pakeitė prisijungimo normą į %(rule)s",
+ "%(senderDisplayName)s changed the join rule to %(rule)s": "%(senderDisplayName)s pakeitė prisijungimo taisyklę į %(rule)s",
"%(senderDisplayName)s has allowed guests to join the room.": "%(senderDisplayName)s leido svečiams prisijungti prie kambario.",
"%(senderDisplayName)s has prevented guests from joining the room.": "%(senderDisplayName)s uždraudė svečiams prisijungti prie kambario.",
"%(senderDisplayName)s changed guest access to %(rule)s": "%(senderDisplayName)s pakeitė svečių prieigą prie %(rule)s",
- "%(senderDisplayName)s enabled flair for %(groups)s in this room.": "%(senderDisplayName)s įjungė ženkliukus bendruomenėi %(groups)s šiame kambaryje.",
- "%(senderDisplayName)s disabled flair for %(groups)s in this room.": "%(senderDisplayName)s išjungė ženkliukus bendruomenėi %(groups)s šiame kambaryje.",
- "%(senderDisplayName)s enabled flair for %(newGroups)s and disabled flair for %(oldGroups)s in this room.": "%(senderDisplayName)s įjungė ženkliukus bendruomenėi %(newGroups)s ir išjungė ženkliukus bendruomenėi %(oldGroups)s šiame kambaryje.",
+ "%(senderDisplayName)s enabled flair for %(groups)s in this room.": "%(senderDisplayName)s įjungė ženkliukus bendruomenei %(groups)s šiame kambaryje.",
+ "%(senderDisplayName)s disabled flair for %(groups)s in this room.": "%(senderDisplayName)s išjungė ženkliukus bendruomenei %(groups)s šiame kambaryje.",
+ "%(senderDisplayName)s enabled flair for %(newGroups)s and disabled flair for %(oldGroups)s in this room.": "%(senderDisplayName)s įjungė ženkliukus bendruomenei %(newGroups)s ir išjungė ženkliukus bendruomenei %(oldGroups)s šiame kambaryje.",
"%(senderName)s revoked the invitation for %(targetDisplayName)s to join the room.": "%(senderName)s atšaukė pakvietimą %(targetDisplayName)s prisijungti prie kambario.",
"%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s išsiuntė pakvietimą %(targetDisplayName)s prisijungti prie kambario.",
- "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s padarė būsimą kambario istoriją matomą visiems kambario dalyviams, nuo pat jų prisijungimo.",
+ "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s padarė būsimą kambario istoriją matomą visiems kambario dalyviams, nuo jų prisijungimo momento.",
"%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s padarė būsimą kambario istoriją matomą nežinomam (%(visibility)s).",
"%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s galios lygį iš %(fromPowerLevel)s į %(toPowerLevel)s",
"%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s pakeitė %(powerLevelDiffText)s.",
"%(displayName)s is typing …": "%(displayName)s rašo …",
- "%(names)s and %(count)s others are typing …|other": "%(names)s ir %(count)s kiti rašo …",
+ "%(names)s and %(count)s others are typing …|other": "%(names)s ir %(count)s kiti(-ų) rašo …",
"%(names)s and %(count)s others are typing …|one": "%(names)s ir dar vienas rašo …",
"%(names)s and %(lastPerson)s are typing …": "%(names)s ir %(lastPerson)s rašo …",
"Cannot reach homeserver": "Serveris nepasiekiamas",
@@ -771,21 +771,21 @@
"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.": "Jūs galite iš naujo nustatyti savo slaptažodį, tačiau kai kurios funkcijos bus nepasiekiamos, kol tapatybės serveris prisijungs. Jei ir toliau matote šį įspėjimą, patikrinkite savo konfigūraciją arba susisiekite su serverio administratoriumi.",
"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.": "Jūs galite prisijungti, tačiau kai kurios funkcijos bus nepasiekiamos, kol tapatybės serveris prisijungs. Jei ir toliau matote šį įspėjimą, patikrinkite savo konfigūraciją arba susisiekite su serverio administratoriumi.",
"No homeserver URL provided": "Nepateiktas serverio URL",
- "Unexpected error resolving homeserver configuration": "Netikėta klaida nustatant serverio konfigūraciją",
- "Unexpected error resolving identity server configuration": "Netikėta klaida nustatant tapatybės serverio konfigūraciją",
- "%(items)s and %(count)s others|other": "%(items)s ir %(count)s kiti",
+ "Unexpected error resolving homeserver configuration": "Netikėta klaida nusistatant serverio konfigūraciją",
+ "Unexpected error resolving identity server configuration": "Netikėta klaida nusistatant tapatybės serverio konfigūraciją",
+ "%(items)s and %(count)s others|other": "%(items)s ir %(count)s kiti(-ų)",
"%(items)s and %(count)s others|one": "%(items)s ir dar vienas",
"%(items)s and %(lastItem)s": "%(items)s ir %(lastItem)s",
"Unrecognised address": "Neatpažintas adresas",
"You do not have permission to invite people to this room.": "Jūs neturite leidimo pakviesti žmones į šį kambarį.",
"User %(userId)s is already in the room": "Vartotojas %(userId)s jau yra kambaryje",
"User %(user_id)s may or may not exist": "Vartotojas %(user_id)s gali ir neegzistuoti",
- "The user must be unbanned before they can be invited.": "Norint pakviesti vartotoją, pirmiausia turi būti pašalintas draudimas.",
+ "The user must be unbanned before they can be invited.": "Norint pakviesti vartotoją, prieš tai reikia pašalinti jo draudimą.",
"The user's homeserver does not support the version of the room.": "Vartotojo serveris nepalaiko kambario versijos.",
"Use a longer keyboard pattern with more turns": "Naudokite ilgesnį klaviatūros modelį su daugiau vijų",
"There was an error joining the room": "Prisijungiant prie kambario įvyko klaida",
"Failed to join room": "Prisijungti prie kambario nepavyko",
- "Message Pinning": "Žinutės prisegimas",
+ "Message Pinning": "Žinutės Prisegimas",
"Custom user status messages": "Pasirinktinės vartotojo būsenos žinutės",
"Group & filter rooms by custom tags (refresh to apply changes)": "Grupuoti ir filtruoti kambarius pagal pasirinktines žymas (atnaujinkite, kad pritaikytumėte pakeitimus)",
"Render simple counters in room header": "Užkrauti paprastus skaitiklius kambario antraštėje",
@@ -804,7 +804,7 @@
" invited you": " jus pakvietė",
"You're previewing %(roomName)s. Want to join it?": "Jūs peržiūrite %(roomName)s. Norite prie jo prisijungti?",
"%(roomName)s can't be previewed. Do you want to join it?": "%(roomName)s negali būti peržiūrėtas. Ar jūs norite prie jo prisijungti?",
- "This room doesn't exist. Are you sure you're at the right place?": "Šis kambarys neegzistuoja. Ar jūs tikras, kad esate tinkamoje vietoje?",
+ "This room doesn't exist. Are you sure you're at the right place?": "Šis kambarys neegzistuoja. Ar jūs tikri, kad esate tinkamoje vietoje?",
"Create a public room": "Sukurti viešą kambarį",
"Make this room public": "Padaryti šį kambarį viešu",
"Room Settings - %(roomName)s": "Kambario nustatymai - %(roomName)s",
@@ -822,7 +822,7 @@
"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.",
+ "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 prisijungti iš naujo 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į.",
"%(brand)s failed to get the public room list.": "%(brand)s nepavyko gauti viešų kambarių sąrašo.",
@@ -941,7 +941,7 @@
"Show read receipts sent by other users": "Rodyti kitų vartotojų siųstus perskaitymo kvitus",
"Order rooms by name": "Rūšiuoti kambarius pagal pavadinimą",
"The other party cancelled the verification.": "Kita šalis atšaukė patvirtinimą.",
- "Public Name": "Viešas pavadinimas",
+ "Public Name": "Viešas Vardas",
"Encrypted messages are secured with end-to-end encryption. Only you and the recipient(s) have the keys to read these messages.": "Užšifruotos žinutės yra apsaugotos visapusiu šifravimu. Tik jūs ir gavėjas(-ai) turi raktus šioms žinutėms perskaityti.",
"Back up your keys before signing out to avoid losing them.": "Prieš atsijungdami sukurkite atsarginę savo raktų kopiją, kad išvengtumėte jų praradimo.",
"Start using Key Backup": "Pradėti naudoti atsarginę raktų kopiją",
@@ -1016,7 +1016,7 @@
"Send as message": "Siųsti kaip žinutę",
"Messages in this room are end-to-end encrypted.": "Žinutės šiame kambaryje yra visapusiškai užšifruotos.",
"Messages in this room are not end-to-end encrypted.": "Žinutės šiame kambaryje nėra visapusiškai užšifruotos.",
- "Messages in this room are end-to-end encrypted. Learn more & verify this user in their user profile.": "Žinutės šiame kambaryje yra visapusiškai užšifruotos. Sužinokite daugiau ir patvirtinkite vartotojus jų profilyje.",
+ "Messages in this room are end-to-end encrypted. Learn more & verify this user in their user profile.": "Žinutės šiame kambaryje yra visapusiškai užšifruotos. Sužinokite daugiau ir patvirtinkite šį vartotoją jo vartotojo profilyje.",
"Confirm Removal": "Patvirtinkite pašalinimą",
"Manually export keys": "Eksportuoti raktus rankiniu būdu",
"Send a Direct Message": "Siųsti tiesioginę žinutę",
@@ -1024,12 +1024,12 @@
"Go back to set it again.": "Grįžti atgal, kad nustatyti iš naujo.",
"Click the button below to confirm adding this email address.": "Paspauskite mygtuką žemiau, kad patvirtintumėte šio el. pašto pridėjimą.",
"Add an email address to configure email notifications": "Pridėkite el. pašto adresą, kad nustatytumėte el. pašto pranešimus",
- "We recommend that you remove your email addresses and phone numbers from the identity server before disconnecting.": "Rekomenduojame, prieš atsijungiant, iš tapatybės serverio pašalinti savo el. pašto adresus ir telefono numerius.",
+ "We recommend that you remove your email addresses and phone numbers from the identity server before disconnecting.": "Prieš atsijungiant rekomenduojame iš tapatybės serverio pašalinti savo el. pašto adresus ir telefono numerius.",
"Email addresses": "El. pašto adresai",
- "Account management": "Paskyros valdymas",
+ "Account management": "Paskyros tvarkymas",
"Deactivating your account is a permanent action - be careful!": "Paskyros deaktyvavimas yra neatšaukiamas veiksmas - būkite atsargūs!",
"Your email address hasn't been verified yet": "Jūsų el. pašto adresas dar nebuvo patvirtintas",
- "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.": "Išsiuntėme jums el. laišką, kad patvirtintumėme jūsų adresą. Sekite ten esančiais nurodymais ir tada paspauskite žemiau esantį mygtuką.",
+ "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.": "Išsiuntėme jums el. laišką, kad patvirtintumėme savo adresą. Sekite ten pateiktas instrukcijas ir tada paspauskite žemiau esantį mygtuką.",
"Email Address": "El. pašto adresas",
"Enter your custom homeserver URL What does this mean?": "Įveskite pasirinktinio serverio URL Ką tai reiškia?",
"Homeserver URL": "Serverio URL",
@@ -1076,7 +1076,7 @@
"Messages containing @room": "Žinutės, kuriose yra @kambarys",
"Waiting for your other session, %(deviceName)s (%(deviceId)s), to verify…": "Laukiama, kol jūsų kitas seansas, %(deviceName)s (%(deviceId)s), patvirtins…",
"Waiting for your other session to verify…": "Laukiama, kol jūsų kitas seansas patvirtins…",
- "To be secure, do this in person or use a trusted way to communicate.": "Norėdami būti saugūs, darykite tai asmeniškai arba naudodamiesi patikimu bendravimo būdu.",
+ "To be secure, do this in person or use a trusted way to communicate.": "Norėdami užtikrinti saugumą, darykite tai asmeniškai arba naudokite patikimą komunikacijos būdą.",
"Verify": "Patvirtinti",
"Verify the new login accessing your account: %(name)s": "Patvirtinkite naują prisijungimą prie jūsų paskyros: %(name)s",
"Confirm deleting these sessions": "Patvirtinkite šių seansų ištrinimą",
@@ -1085,9 +1085,9 @@
"Delete %(count)s sessions|other": "Ištrinti %(count)s seansus(-ų)",
"Delete %(count)s sessions|one": "Ištrinti %(count)s seansą",
"ID": "ID",
- "Restore from Backup": "Atkurti iš atsarginės kopijos",
+ "Restore from Backup": "Atkurti iš Atsarginės Kopijos",
"Flair": "Ženkliukai",
- "Access Token:": "Prieigos talonas:",
+ "Access Token:": "Prieigos Talonas:",
"Preferences": "Nuostatos",
"Cryptography": "Kriptografija",
"Security & Privacy": "Saugumas ir Privatumas",
@@ -1110,7 +1110,7 @@
"Waiting for you to accept on your other session…": "Laukiama kol jūs priimsite kitame savo seanse…",
"Start Verification": "Pradėti patvirtinimą",
"In encrypted rooms, your messages are secured and only you and the recipient have the unique keys to unlock them.": "Šifruotuose kambariuose jūsų žinutės yra apsaugotos ir tik jūs ir gavėjas turite unikalius raktus joms atrakinti.",
- "Verify User": "Patvirtinti vartotoją",
+ "Verify User": "Patvirtinti Vartotoją",
"For extra security, verify this user by checking a one-time code on both of your devices.": "Dėl papildomo saugumo patvirtinkite šį vartotoją patikrindami vienkartinį kodą abiejuose jūsų įrenginiuose.",
"%(count)s verified sessions|other": "%(count)s patvirtintų seansų",
"Hide verified sessions": "Slėpti patvirtintus seansus",
@@ -1135,7 +1135,7 @@
"Are you sure you want to deactivate your account? This is irreversible.": "Ar tikrai norite deaktyvuoti savo paskyrą? Tai yra negrįžtama.",
"Verify session": "Patvirtinti seansą",
"Are you sure you want to sign out?": "Ar tikrai norite atsijungti?",
- "Use this session to verify your new one, granting it access to encrypted messages:": "Panaudoti šį seansą naujo patvirtinimui, suteikant jam prieigą prie šifruotų žinučių:",
+ "Use this session to verify your new one, granting it access to encrypted messages:": "Panaudoti šį seansą naujo patvirtinimui, suteikiant jam prieigą prie šifruotų žinučių:",
"If you didn’t sign in to this session, your account may be compromised.": "Jei jūs nesijungėte prie šios sesijos, jūsų paskyra gali būti sukompromituota.",
"This wasn't me": "Tai ne aš",
"If you run into any bugs or have feedback you'd like to share, please let us know on GitHub.": "Jei jūs susidūrėte su klaidomis arba norėtumėte palikti atsiliepimą, praneškite mums GitHub'e.",
@@ -1153,36 +1153,36 @@
"Verify this login": "Patvirtinkite šį prisijungimą",
"Registration has been disabled on this homeserver.": "Registracija šiame serveryje išjungta.",
"You can now close this window or log in to your new account.": "Jūs galite uždaryti šį langą arba prisijungti į savo naują paskyrą.",
- "Confirm your identity by verifying this login from one of your other sessions, granting it access to encrypted messages.": "Identifikuokite save patvirtindami šį prisijungimą viename iš kitų jūsų seansų ir suteikdami jam prieigą prie šifruotų žinučių.",
+ "Confirm your identity by verifying this login from one of your other sessions, granting it access to encrypted messages.": "Identifikuokite save, patvirtindami šį prisijungimą viename iš kitų jūsų seansų, ir suteikdami jam prieigą prie šifruotų žinučių.",
"This requires the latest %(brand)s on your other devices:": "Tam reikia naujausios %(brand)s versijos kituose jūsų įrenginiuose:",
"or another cross-signing capable Matrix client": "arba kito kryžminį pasirašymą palaikančio Matrix kliento",
"Upgrade this session to allow it to verify other sessions, granting them access to encrypted messages and marking them as trusted for other users.": "Atnaujinkite šį seansą, kad jam būtų leista patvirtinti kitus seansus, suteikiant jiems prieigą prie šifruotų žinučių ir juos pažymint kaip patikimus kitiems vartotojams.",
- "Use Single Sign On to continue": "Norėdami tęsti naudokite Vieno Prisijungimo sistemą",
- "Confirm adding this email address by using Single Sign On to prove your identity.": "Patvirtinkite šio el. pašto adreso pridėjimą naudodami Vieno Prisijungimo sistemą, patvirtinančią jūsų tapatybę.",
- "Single Sign On": "Vieno Prisijungimo sistema",
+ "Use Single Sign On to continue": "Norėdami tęsti naudokite Vieną Prisijungimą",
+ "Confirm adding this email address by using Single Sign On to prove your identity.": "Patvirtinkite šio el. pašto adreso pridėjimą naudodami Vieną Prisijungimą, kad įrodytumėte savo tapatybę.",
+ "Single Sign On": "Vienas Prisijungimas",
"Confirm adding email": "Patvirtinkite el. pašto pridėjimą",
- "Confirm adding this phone number by using Single Sign On to prove your identity.": "Patvirtinkite šio telefono numerio pridėjimą naudodami Vieno Prisijungimo sistemą, patvirtinančią jūsų tapatybę.",
+ "Confirm adding this phone number by using Single Sign On to prove your identity.": "Patvirtinkite šio tel. nr. pridėjimą naudodami Vieną Prisijungimą, kad įrodytumėte savo tapatybę.",
"Confirm adding phone number": "Patvirtinkite telefono numerio pridėjimą",
"Click the button below to confirm adding this phone number.": "Paspauskite žemiau esantį mygtuką, kad patvirtintumėte šio numerio pridėjimą.",
"Match system theme": "Suderinti su sistemos tema",
- "Identity Server URL must be HTTPS": "Tapatybės serverio URL privalo būti HTTPS",
- "Not a valid Identity Server (status code %(code)s)": "Netinkamas tapatybės serveris (statuso kodas %(code)s)",
- "Could not connect to Identity Server": "Nepavyko prisijungti prie tapatybės serverio",
+ "Identity Server URL must be HTTPS": "Tapatybės Serverio URL privalo būti HTTPS",
+ "Not a valid Identity Server (status code %(code)s)": "Netinkamas Tapatybės Serveris (statuso kodas %(code)s)",
+ "Could not connect to Identity Server": "Nepavyko prisijungti prie Tapatybės Serverio",
"Disconnect from the identity server and connect to instead?": "Atsijungti nuo tapatybės serverio ir jo vietoje prisijungti prie ?",
"Terms of service not accepted or the identity server is invalid.": "Nesutikta su paslaugų teikimo sąlygomis arba tapatybės serveris yra klaidingas.",
"The identity server you have chosen does not have any terms of service.": "Jūsų pasirinktas tapatybės serveris neturi jokių paslaugų teikimo sąlygų.",
"Disconnect identity server": "Atjungti tapatybės serverį",
"Disconnect from the identity server ?": "Atsijungti nuo tapatybės serverio ?",
"You should remove your personal data from identity server before disconnecting. Unfortunately, identity server is currently offline or cannot be reached.": "Prieš atsijungdami jūs turėtumėte pašalinti savo asmeninius duomenis iš tapatybės serverio . Deja, tapatybės serveris šiuo metu yra išjungtas arba nepasiekiamas.",
- "check your browser plugins for anything that might block the identity server (such as Privacy Badger)": "patikrinkite ar tarp jūsų naršyklės įskiepių nėra nieko kas galėtų blokuoti tapatybės serverį (pavyzdžiui \"Privacy Badger\")",
- "contact the administrators of identity server ": "susisiekite su tapatybės serverio administratoriais",
+ "check your browser plugins for anything that might block the identity server (such as Privacy Badger)": "patikrinti ar tarp jūsų naršyklės įskiepių nėra nieko kas galėtų blokuoti tapatybės serverį (pavyzdžiui \"Privacy Badger\")",
+ "contact the administrators of identity server ": "susisiekti su tapatybės serverio administratoriais",
"You are still sharing your personal data on the identity server .": "Jūs vis dar dalijatės savo asmeniniais duomenimis tapatybės serveryje .",
- "Identity Server (%(server)s)": "Tapatybės serveris (%(server)s)",
+ "Identity Server (%(server)s)": "Tapatybės Serveris (%(server)s)",
"Enter a new identity server": "Pridėkite naują tapatybės serverį",
- "Use an Integration Manager (%(serverName)s) to manage bots, widgets, and sticker packs.": "Naudokite integracijų tvarkytuvą (%(serverName)s) botų, valdiklių ir lipdukų valdymui.",
- "Use an Integration Manager to manage bots, widgets, and sticker packs.": "Naudokite integracijų tvarkytuvą botų, valdiklių ir lipdukų valdymui.",
+ "Use an Integration Manager (%(serverName)s) to manage bots, widgets, and sticker packs.": "Naudokite Integracijų Tvarkytuvą (%(serverName)s) botų, valdiklių ir lipdukų pakuočių tvarkymui.",
+ "Use an Integration Manager to manage bots, widgets, and sticker packs.": "Naudokite Integracijų Tvarkytuvą botų, valdiklių ir lipdukų pakuočių tvarkymui.",
"Manage integrations": "Valdyti integracijas",
- "Integration Managers receive configuration data, and can modify widgets, send room invites, and set power levels on your behalf.": "Integracijų valdikliai gauna konfigūracijos duomenis ir jūsų vardu gali keisti valdiklius, siųsti kambario pakvietimus ir nustatyti galios lygius.",
+ "Integration Managers receive configuration data, and can modify widgets, send room invites, and set power levels on your behalf.": "Integracijų Tvarkytuvai gauna konfigūracijos duomenis ir jūsų vardu gali keisti valdiklius, siųsti kambario pakvietimus ir nustatyti galios lygius.",
"Invalid theme schema.": "Klaidinga temos schema.",
"Error downloading theme information.": "Klaida parsisiunčiant temos informaciją.",
"Theme added!": "Tema pridėta!",
@@ -1196,13 +1196,13 @@
"Discovery options will appear once you have added an email above.": "Radimo parinktys atsiras jums aukščiau pridėjus el. pašto adresą.",
"Unable to revoke sharing for phone number": "Neina atšaukti telefono numerio bendrinimo",
"Unable to share phone number": "Neina bendrinti telefono numerio",
- "Unable to verify phone number.": "Neina patvirtinti telefono numerio.",
+ "Unable to verify phone number.": "Nepavyko patvirtinti telefono numerio.",
"Discovery options will appear once you have added a phone number above.": "Radimo parinktys atsiras jums aukščiau pridėjus telefono numerį.",
"Phone Number": "Telefono Numeris",
"Room Topic": "Kambario Tema",
"Your theme": "Jūsų tema",
"Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Valdiklio ištrinimas pašalina jį visiems kambaryje esantiems vartotojams. Ar tikrai norite ištrinti šį valdiklį?",
- "Enable 'Manage Integrations' in Settings to do this.": "Įjunkite 'Valdyti integracijas' nustatymuose, kad tai atliktumėte.",
+ "Enable 'Manage Integrations' in Settings to do this.": "Įjunkite 'Valdyti integracijas' Nustatymuose, kad tai atliktumėte.",
"Your %(brand)s doesn't allow you to use an Integration Manager to do this. Please contact an admin.": "Jūsų %(brand)s neleidžia jums naudoti integracijų tvarkytuvo tam atlikti. Susisiekite su administratoriumi.",
"Enter phone number (required on this homeserver)": "Įveskite telefono numerį (privaloma šiame serveryje)",
"Doesn't look like a valid phone number": "Tai nepanašu į veikiantį telefono numerį",
@@ -1210,14 +1210,14 @@
"Invalid identity server discovery response": "Klaidingas tapatybės serverio radimo atsakas",
"The phone number entered looks invalid": "Įvestas telefono numeris atrodo klaidingas",
"Double check that your server supports the room version chosen and try again.": "Dar kartą įsitikinkite, kad jūsų serveris palaiko pasirinktą kambario versiją ir bandykite iš naujo.",
- "Whether you're using %(brand)s on a device where touch is the primary input mechanism": "Ar naudojate %(brand)s įrenginyje, kuriame pagrindinis įvesties mechanizmas yra lietimas",
+ "Whether you're using %(brand)s on a device where touch is the primary input mechanism": "Ar jūs naudojate %(brand)s įrenginyje, kuriame pagrindinis įvesties mechanizmas yra lietimas",
"Session already verified!": "Seansas jau patvirtintas!",
"WARNING: Session already verified, but keys do NOT MATCH!": "ĮSPĖJIMAS: Seansas jau patvirtintas, bet raktai NESUTAMPA!",
- "Enable Emoji suggestions while typing": "Įjungti jaustukų pasiūlymus rašant",
+ "Enable Emoji suggestions while typing": "Įjungti Jaustukų pasiūlymus rašant",
"Show a reminder to enable Secure Message Recovery in encrypted rooms": "Rodyti priminimą įjungti saugių žinučių atgavimą šifruotuose kambariuose",
"Enable automatic language detection for syntax highlighting": "Įjungti automatinį kalbos aptikimą sintaksės paryškinimui",
"Enable big emoji in chat": "Įjungti didelius jaustukus pokalbiuose",
- "Enable Community Filter Panel": "Įjungti bendruomenės filtrų skydelį",
+ "Enable Community Filter Panel": "Įjungti Bendruomenės Filtrų Skydelį",
"Enable message search in encrypted rooms": "Įjungti žinučių paiešką užšifruotuose kambariuose",
"Verified!": "Patvirtinta!",
"You've successfully verified this user.": "Jūs sėkmingai patvirtinote šį vartotoją.",
@@ -1267,7 +1267,7 @@
"Glasses": "Akiniai",
"Spanner": "Veržliaraktis",
"Santa": "Santa",
- "Thumbs up": "Liuks",
+ "Thumbs up": "Liuksas",
"Umbrella": "Skėtis",
"Hourglass": "Smėlio laikrodis",
"Clock": "Laikrodis",
@@ -1317,7 +1317,7 @@
"Backup has an invalid signature from unverified session ": "Atsarginė kopija turi negaliojantįnepatvirtinto seanso parašą",
"Enable desktop notifications for this session": "Įjungti darbalaukio pranešimus šiam seansui",
"Enable audible notifications for this session": "Įjungti garsinius pranešimus šiam seansui",
- "wait and try again later": "palaukite ir bandykite vėliau dar kartą",
+ "wait and try again later": "palaukti ir bandyti vėliau dar kartą",
"If you don't want to use to discover and be discoverable by existing contacts you know, enter another identity server below.": "Jei jūs nenorite naudoti serverio radimui ir tam, kad būtumėte randamas esamų, jums žinomų kontaktų, žemiau įveskite kitą tapatybės serverį.",
"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.": "Tapatybės serverio naudojimas yra pasirinktinis. Jei jūs pasirinksite jo nenaudoti, jūs nebūsite randamas kitų vartotojų ir neturėsite galimybės pakviesti kitų nurodydamas el. paštą ar telefoną.",
"Do not use an identity server": "Nenaudoti tapatybės serverio",
@@ -1346,8 +1346,8 @@
"Destroy cross-signing keys?": "Sunaikinti kryžminio pasirašymo raktus?",
"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.": "Kryžminio pasirašymo raktų ištrinimas yra neatšaukiamas. Visi, kurie buvo jais patvirtinti, matys saugumo įspėjimus. Jūs greičiausiai nenorite to daryti, nebent praradote visus įrenginius, iš kurių galite patvirtinti kryžminiu pasirašymu.",
"Clear cross-signing keys": "Valyti kryžminio pasirašymo raktus",
- "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.": "Patvirtinkite šį įrenginį, kad pažymėtumėte jį kaip patikimą. Pasitikėjimas šiuo įrenginiu suteikia jums ir kitiems vartotojams papildomos ramybės, kai naudojate visapusiškai užšifruotas žinutes.",
- "Verifying this device will mark it as trusted, and users who have verified with you will trust this device.": "Šio įrenginio patvirtinimas pažymės jį kaip patikimą ir vartotojai, kurie patvirtino su jumis, pasitikės šiuo įrenginiu.",
+ "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.": "Patvirtinkite šį įrenginį, kad pažymėtumėte jį kaip patikimą. Įrenginio pažymėjimas patikimu jums ir kitiems vartotojams suteikia papildomos ramybės naudojant visapusiškai užšifruotas žinutes.",
+ "Verifying this device will mark it as trusted, and users who have verified with you will trust this device.": "Šio įrenginio patvirtinimas pažymės jį kaip patikimą, ir vartotojai, kurie patvirtino su jumis, pasitikės šiuo įrenginiu.",
"a new cross-signing key signature": "naujas kryžminio pasirašymo rakto parašas",
"a device cross-signing signature": "įrenginio kryžminio pasirašymo parašas",
"Session verified": "Seansas patvirtintas",
@@ -1362,14 +1362,14 @@
"Almost there! Is %(displayName)s showing the same shield?": "Beveik atlikta! Ar %(displayName)s rodo tokį patį skydą?",
"No": "Ne",
"Yes": "Taip",
- "Interactively verify by Emoji": "Patvirtinti interaktyviai, naudojant jaustukus",
+ "Interactively verify by Emoji": "Patvirtinti interaktyviai, naudojant Jaustukus",
"The message you are trying to send is too large.": "Žinutė, kurią jūs bandote siųsti, yra per didelė.",
"Show a placeholder for removed messages": "Rodyti pašalintų žinučių žymeklį",
"Show join/leave messages (invites/kicks/bans unaffected)": "Rodyti prisijungimo/išėjimo žinutes (pakvietimai/išmetimai/draudimai nepaveikti)",
"Show avatar changes": "Rodyti pseudoportretų pakeitimus",
"Show avatars in user and room mentions": "Rodyti pseudoportretus vartotojo ir kambario paminėjimuose",
"Send typing notifications": "Siųsti spausdinimo pranešimus",
- "Automatically replace plain text Emoji": "Automatiškai pakeisti paprasto teksto jaustukus",
+ "Automatically replace plain text Emoji": "Automatiškai pakeisti paprasto teksto Jaustukus",
"Mirror local video feed": "Atkartoti lokalų video tiekimą",
"Allow Peer-to-Peer for 1:1 calls": "Leisti tiesioginį \"Peer-to-Peer\" sujungimą 1:1 skambučiams",
"Prompt before sending invites to potentially invalid matrix IDs": "Klausti prieš siunčiant pakvietimus galimai netinkamiems matrix ID",
@@ -1381,8 +1381,8 @@
"Encrypted messages in one-to-one chats": "Šifruotos žinutės privačiuose pokalbiuose",
"When rooms are upgraded": "Kai atnaujinami kambariai",
"My Ban List": "Mano Draudimų Sąrašas",
- "This is your list of users/servers you have blocked - don't leave the room!": "Tai jūsų užblokuotų vartotojų/serverių sąrašas - nepalikite kambario!",
- "Verify this user by confirming the following emoji appear on their screen.": "Patvirtinkite šį vartotoją, įsitikindami, kad šie jaustukai rodomi jo ekrane.",
+ "This is your list of users/servers you have blocked - don't leave the room!": "Tai yra jūsų užblokuotų vartotojų/serverių sąrašas - neišeikite iš kambario!",
+ "Verify this user by confirming the following emoji appear on their screen.": "Patvirtinkite šį vartotoją, įsitikindami, kad jo ekrane rodomas toliau esantis jaustukas.",
"⚠ These settings are meant for advanced users.": "⚠ Šie nustatymai yra skirti pažengusiems vartotojams.",
"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.": "Jūsų asmeniniame draudimų sąraše yra visi vartotojai/serveriai, iš kurių jūs asmeniškai nenorite matyti pranešimų. Po pirmojo jūsų vartotojo/serverio ignoravimo, jūsų kambarių sąraše pasirodys naujas kambarys pavadinimu 'Mano Draudimų Sąrašas' - likite šiame kambaryje, kad draudimų sąrašas veiktų.",
"Room list": "Kambarių sąrašas",
@@ -1392,7 +1392,7 @@
"Read Marker off-screen lifetime (ms)": "Skaitymo žymeklio ne ekraninis veikimo laikas (ms)",
"You can use /help to list available commands. Did you mean to send this as a message?": "Jūs galite naudoti /help, kad pamatytumėte galimų komandų sąrašą. Ar norėjote siųsti tai kaip žinutę?",
"Room avatar": "Kambario pseudoportretas",
- "Verify by comparing unique emoji.": "Patvirtinkite palygindami unikalius jaustukus.",
+ "Verify by comparing unique emoji.": "Patvirtinti palyginant unikalius jaustukus.",
"Verify by emoji": "Patvirtinti naudojant jaustukus",
"Compare emoji": "Palyginkite jaustukus",
"Show image": "Rodyti vaizdą",
@@ -1419,14 +1419,14 @@
"Failed to reject invitation": "Nepavyko atmesti pakvietimo",
"Failed to leave room": "Nepavyko išeiti iš kambario",
"Can't leave Server Notices room": "Negalima išeiti iš Serverio Pranešimų kambario",
- "This room is used for important messages from the Homeserver, so you cannot leave it.": "Šis kambarys yra naudojamas svarbioms žinutėms iš serverio, todėl jūs negalite jo palikti.",
+ "This room is used for important messages from the Homeserver, so you cannot leave it.": "Šis kambarys yra naudojamas svarbioms žinutėms iš serverio, tad jūs negalite iš jo išeiti.",
"Terms and Conditions": "Taisyklės ir Sąlygos",
"Self-verification request": "Savarankiško patvirtinimo užklausa",
"Logout": "Atsijungti",
"Reject & Ignore user": "Atmesti ir ignoruoti vartotoją",
"Reject invitation": "Atmesti pakvietimą",
"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ą",
+ "Whether you're using %(brand)s as an installed Progressive Web App": "Ar jūs 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.",
@@ -1436,11 +1436,11 @@
"%(name)s is requesting verification": "%(name)s prašo patvirtinimo",
"Sign In or Create Account": "Prisijungti arba Sukurti Paskyrą",
"Use your account or create a new one to continue.": "Norėdami tęsti naudokite savo paskyrą arba sukurkite naują.",
- "Create Account": "Sukurti paskyrą",
+ "Create Account": "Sukurti Paskyrą",
"Custom (%(level)s)": "Pasirinktinis (%(level)s)",
- "Ask this user to verify their session, or manually verify it below.": "Paprašykite šio vartotojo patvirtinti savo seansą arba patvirtinkite jį rankiniu būdu žemiau.",
+ "Ask this user to verify their session, or manually verify it below.": "Paprašykite šio vartotojo patvirtinti savo seansą, arba patvirtinkite jį rankiniu būdu žemiau.",
"Encryption upgrade available": "Galimas šifravimo atnaujinimas",
- "Verify this user by confirming the following number appears on their screen.": "Patvirtinkite šį vartotoją įsitikindami, kad jo ekrane rodomas toliau esantis skaičius.",
+ "Verify this user by confirming the following number appears on their screen.": "Patvirtinkite šį vartotoją, įsitikindami, kad jo ekrane rodomas toliau esantis skaičius.",
"Backup has a signature from unknown user with ID %(deviceId)s": "Atsarginė kopija turi nežinomo vartotojo parašą su ID %(deviceId)s",
"Manage the names of and sign out of your sessions below or verify them in your User Profile.": "Tvarkykite savo seansų pavadinimus ir iš jų atsijunkite žemiau, arba patvirtinkite juos savo Vartotojo Profilyje.",
"Please enter verification code sent via text.": "Įveskite patvirtinimo kodą išsiųstą teksto žinute.",
@@ -1455,7 +1455,7 @@
"You sent a verification request": "Jūs išsiuntėte patvirtinimo užklausą",
"Widgets do not use message encryption.": "Valdikliai nenaudoja žinučių šifravimo.",
"Continue With Encryption Disabled": "Tęsti išjungus šifravimą",
- "Verify this user to mark them as trusted. Trusting users gives you extra peace of mind when using end-to-end encrypted messages.": "Patvirtinkite šį vartotoją, kad pažymėtumėte jį kaip patikimą. Pažymint vartotojus kaip patikimus suteikia papildomos ramybės naudojant visapusiškai užšifruotas žinutes.",
+ "Verify this user to mark them as trusted. Trusting users gives you extra peace of mind when using end-to-end encrypted messages.": "Patvirtinkite šį vartotoją, kad pažymėtumėte jį kaip patikimą. Vartotojų pažymėjimas patikimais suteikia jums papildomos ramybės naudojant visapusiškai užšifruotas žinutes.",
"Waiting for partner to confirm...": "Laukiama kol partneris patvirtins...",
"Start a conversation with someone using their name, username (like ) or email address.": "Pradėkite pokalbį su kuo nors naudodami jų vardą, vartotojo vardą (kaip ) arba el. pašto adresą.",
"Invite someone using their name, username (like ), email address or share this room.": "Pakvieskite ką nors naudodami jų vardą, vartotojo vardą (kaip ), el. pašto adresą arba bendrinkite šį kambarį.",
@@ -1476,15 +1476,15 @@
"Session backup key:": "Seanso atsarginės kopijos raktas:",
"Unable to load key backup status": "Nepavyko įkelti atsarginės raktų kopijos būklės",
"Connect this session to key backup before signing out to avoid losing any keys that may only be on this session.": "Prieš atsijungdami prijunkite šį seansą prie atsarginės raktų kopijos, kad neprarastumėte raktų, kurie gali būti tik šiame seanse.",
- "Connect this session to Key Backup": "Prijungtii šį seansą prie atsarginės raktų kopijos",
+ "Connect this session to Key Backup": "Prijungti šį seansą prie Atsarginės Raktų Kopijos",
"Backup key stored: ": "Atsarginės kopijos raktas saugomas: ",
"You are currently using to discover and be discoverable by existing contacts you know. You can change your identity server below.": "Tam, kad galėtumėte rasti ir tam, kad būtumėte randamas esamų, jums žinomų kontaktų, jūs šiuo metu naudojate tapatybės serverį. Jį pakeisti galite žemiau.",
- "Identity Server": "Tapatybės serveris",
+ "Identity Server": "Tapatybės Serveris",
"You are not currently using an identity server. To discover and be discoverable by existing contacts you know, add one below.": "Šiuo metu jūs nenaudojate tapatybės serverio. Tam, kad galėtumėte rasti ir tam, kad būtumėte randamas esamų, jums žinomų kontaktų, pridėkite jį žemiau.",
"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.": "Atsijungimas nuo tapatybės serverio reikš, kad jūs nebebūsite randamas kitų vartotojų ir jūs nebegalėsite pakviesti kitų, naudodami jų el. paštą arba telefoną.",
"Appearance": "Išvaizda",
"Deactivate account": "Deaktyvuoti paskyrą",
- "Identity Server is": "Tapatybės serveris yra",
+ "Identity Server is": "Tapatybės Serveris yra",
"Timeline": "Laiko juosta",
"Key backup": "Atsarginė raktų kopija",
"Where you’re logged in": "Kur esate prisijungę",
@@ -1502,7 +1502,7 @@
"No identity server is configured: add one in server settings to reset your password.": "Nesukonfigūruotas joks tapatybės serveris: pridėkite jį serverio nustatymuose, kad iš naujo nustatytumėte slaptažodį.",
"Identity server URL does not appear to be a valid identity server": "Tapatybės serverio URL neatrodo kaip tinkamas tapatybės serveris",
"Scroll up/down in the timeline": "Slinkti aukštyn/žemyn laiko juostoje",
- "Show developer tools": "Rodyti vystytojo įrankius",
+ "Show developer tools": "Rodyti programuotojo įrankius",
"Low bandwidth mode": "Žemo duomenų pralaidumo režimas",
"Send read receipts for messages (requires compatible homeserver to disable)": "Siųsti žinučių perskaitymo kvitus (norint išjungti reikalingas suderinamas serveris)",
"How fast should messages be downloaded.": "Kaip greitai žinutės turi būti parsiųstos.",
@@ -1522,7 +1522,7 @@
"exists": "yra",
"This session is backing up your keys. ": "Šis seansas kuria atsargines jūsų raktų kopijas. ",
"This session is not backing up your keys, but you do have an existing backup you can restore from and add to going forward.": "Šis seansas nekuria atsarginių raktų kopijų, bet jūs jau turite atsarginę kopiją iš kurios galite atkurti ir pridėti.",
- "All keys backed up": "Atsarginė kopija sukurta visiems raktams",
+ "All keys backed up": "Atsarginės kopijos sukurtos visiems raktams",
"Backup has a valid signature from this user": "Atsarginė kopija turi galiojantį šio vartotojo parašą",
"Backup has a invalid signature from this user": "Atsarginė kopija turi negaliojantį šio vartotojo parašą",
"Backup has a signature from unknown session with ID %(deviceId)s": "Atsarginė kopija turi nežinomo seanso parašą su ID %(deviceId)s",
@@ -1544,8 +1544,8 @@
"Your homeserver does not support session management.": "Jūsų serveris nepalaiko seansų tvarkymo.",
"Your homeserver has exceeded its user limit.": "Jūsų serveris pasiekė savo vartotojų limitą.",
"Your homeserver has exceeded one of its resource limits.": "Jūsų serveris pasiekė vieną iš savo resursų limitų.",
- "Never send encrypted messages to unverified sessions from this session": "Niekada iš šio seanso nesiųsti šifruotų žinučių nepatvirtintiems seansams",
- "Never send encrypted messages to unverified sessions in this room from this session": "Niekada iš šio seanso nesiųsti šifruotų žinučių šiame kambaryje nepatvirtintiems seansams",
+ "Never send encrypted messages to unverified sessions from this session": "Niekada nesiųsti šifruotų žinučių nepatvirtintiems seansams iš šio seanso",
+ "Never send encrypted messages to unverified sessions in this room from this session": "Niekada nesiųsti šifruotų žinučių nepatvirtintiems seansams šiame kambaryje iš šio seanso",
"Unable to load session list": "Neįmanoma įkelti seansų sąrašo",
"Confirm deleting these sessions by using Single Sign On to prove your identity.|other": "Patvirtinkite šių seansų ištrinimą, naudodamiesi Vienu Prisijungimu, kad įrodytumėte savo tapatybę.",
"Confirm deleting these sessions by using Single Sign On to prove your identity.|one": "Patvirtinkite šio seanso ištrinimą, naudodamiesi Vienu Prisijungimu, kad įrodytumėte savo tapatybę.",
@@ -1563,13 +1563,13 @@
"Clear cache and reload": "Išvalyti podėlį ir perkrauti",
"To report a Matrix-related security issue, please read the Matrix.org Security Disclosure Policy.": "Norėdami pranešti apie su Matrix susijusią saugos problemą, perskaitykite Matrix.org Saugumo Atskleidimo Poliiką.",
"FAQ": "DUK",
- "Keyboard Shortcuts": "Spartieji klavišai",
+ "Keyboard Shortcuts": "Spartieji Klavišai",
"Versions": "Versijos",
"Homeserver is": "Serveris yra",
- "Import E2E room keys": "Importuoti E2E kambarių raktus",
+ "Import E2E room keys": "Importuoti E2E (visapusio šifravimo) kambarių raktus",
"Session ID:": "Seanso ID:",
"Session key:": "Seanso raktas:",
- "%(brand)s collects anonymous analytics to allow us to improve the application.": "%(brand)s renka anoniminę analizę, kad galėtume patobulinti programą.",
+ "%(brand)s collects anonymous analytics to allow us to improve the application.": "%(brand)s renka anoniminius duomenis, kad mes galėtume tobulinti programą.",
"Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "Privatumas mums yra svarbus, todėl mes nerenkame jokių asmeninių ar identifikuojamų duomenų savo analitikai.",
"Learn more about how we use analytics.": "Sužinokite daugiau apie tai, kaip mes naudojame analitiką.",
"Reset": "Iš naujo nustatyti",
@@ -1602,7 +1602,7 @@
"New Recovery Method": "Naujas atgavimo metodas",
"A new recovery passphrase and key for Secure Messages have been detected.": "Buvo aptikta nauja atgavimo slaptafrazė ir saugių žinučių raktas.",
"This session is encrypting history using the new recovery method.": "Šis seansas šifruoja istoriją naudodamas naują atgavimo metodą.",
- "Recovery Method Removed": "Atgavimo metodas pašalintas",
+ "Recovery Method Removed": "Atgavimo Metodas Pašalintas",
"This session has detected that your recovery passphrase and key for Secure Messages have been removed.": "Ši seansas aptiko, kad buvo pašalinta jūsų atgavimo slaptafrazė ir saugių žinučių raktas.",
"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.": "Jei tai padarėte netyčia, šiame seanse galite nustatyti saugias žinutes, kurios pakartotinai užšifruos šio seanso žinučių istoriją nauju atgavimo metodu.",
"Toggle Bold": "Perjungti paryškinimą",
@@ -1627,5 +1627,388 @@
"Move autocomplete selection up/down": "Perkelti automatinio užbaigimo pasirinkimą aukštyn/žemyn",
"Cancel autocomplete": "Atšaukti automatinį užbaigimą",
"Please install Chrome, Firefox, or Safari for the best experience.": "Geriausiam veikimui suinstaliuokite Chrome, Firefox, arba Safari.",
- "Use Recovery Key or Passphrase": "Naudoti atgavimo raktą arba slaptafrazę"
+ "Use Recovery Key or Passphrase": "Naudoti atgavimo raktą arba slaptafrazę",
+ "Error upgrading room": "Klaida atnaujinant kambarį",
+ "Sends a message as html, without interpreting it as markdown": "SIunčia žinutę, kaip html, jo neinterpretuodamas kaip pažymėto",
+ "Prepends ( ͡° ͜ʖ ͡°) to a plain-text message": "Prideda ( ͡° ͜ʖ ͡°) prie paprasto teksto žinutės",
+ "Are you sure you want to cancel entering passphrase?": "Ar tikrai norite atšaukti slaptafrazės įvedimą?",
+ "Offline encrypted messaging using dehydrated devices": "Šifruoti pranešimai neprisijungus naudojant dehidruotus įrenginius",
+ "Clear notifications": "Išvalyti pranešimus",
+ "Feedback": "Atsiliepimai",
+ "All settings": "Visi nustatymai",
+ "Security & privacy": "Saugumas ir privatumas",
+ "Notification settings": "Pranešimų nustatymai",
+ "Change notification settings": "Keisti pranešimų nustatymus",
+ "Upgrade to your own domain": "Perkelti į savo domeną",
+ "Room Info": "Kambario info",
+ "Open Devtools": "Atverti Įrankius",
+ "Developer options": "Programuotojo parinktys",
+ "View older messages in %(roomName)s.": "Peržiūrėti senesnes žinutes %(roomName)s.",
+ "Room version:": "Kambario versija:",
+ "Room version": "Kambario versija",
+ "Upgrade this room to the recommended room version": "Atnaujinti šį kambarį į rekomenduojamą kambario versiją",
+ "Internal room ID:": "Vidinis kambario ID:",
+ "Room information": "Kambario informacija",
+ "Browse": "Naršyti",
+ "Set a new custom sound": "Nustatyti naują pasirinktinį garsą",
+ "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.": "Paskyros deaktyvavimas, pagal nutylėjimą, nepriverčia mūsų sistemos užmiršti jūsų siųstų žinučių. Jei norite, kad jūsų žinutės mūsų sistemos būtų užmirštos, pažymėkite žemiau esantį laukelį.",
+ "Use default": "Naudoti numatytąjį",
+ "Your server admin has disabled end-to-end encryption by default in private rooms & Direct Messages.": "Serverio administratorius išjungė visapusį šifravimą, kaip numatytą, privačiuose kambariuose ir Tiesioginėse Žinutėse.",
+ "Notification sound": "Pranešimo garsas",
+ "Sounds": "Garsai",
+ "Privileged Users": "Privilegijuoti Nariai",
+ "Roles & Permissions": "Rolės ir Leidimai",
+ "Members only (since the point in time of selecting this option)": "Tik nariai (nuo šios parinkties pasirinkimo momento)",
+ "Members only (since they were invited)": "Tik nariai (nuo jų pakvietimo)",
+ "Only visible to community members": "Matoma tik bendruomenės nariams",
+ "Members only (since they joined)": "Tik nariai (nuo jų prisijungimo)",
+ "Changes to who can read history will only apply to future messages in this room. The visibility of existing history will be unchanged.": "Kas gali skaityti istoriją nustatymų pakeitimai bus taikomi tik būsimoms šio kambario žinutėms. Esamos istorijos matomumas nepakis.",
+ "The authenticity of this encrypted message can't be guaranteed on this device.": "Šiame įrenginyje negalima užtikrinti šios užšifruotos žinutės autentiškumo.",
+ "Unencrypted": "Neužšifruota",
+ "Encrypted by an unverified session": "Užšifruota nepatvirtinto seanso",
+ "Encrypted": "Užšifruota",
+ "Securely cache encrypted messages locally for them to appear in search results.": "Šifruotas žinutes saugiai talpinkite lokaliai, kad jos būtų rodomos paieškos rezultatuose.",
+ "Securely cache encrypted messages locally for them to appear in search results, using ": "Šifruotas žinutes saugiai talpinkite lokaliai, kad jos būtų rodomos paieškos rezultatuose, naudojant ",
+ "Secure messages with this user are end-to-end encrypted and not able to be read by third parties.": "Saugios žinutės su šiuo vartotoju yra visapusiškai užšifruotos ir negali būti perskaitytos trečiųjų šalių.",
+ "Safeguard against losing access to encrypted messages & data": "Apsisaugokite nuo prieigos prie šifruotų žinučių ir duomenų praradimo",
+ "Main address": "Pagrindinis adresas",
+ "There was an error updating the room's main address. It may not be allowed by the server or a temporary failure occurred.": "Atnaujinant pagrindinį kambario adresą įvyko klaida. Gali būti, kad serveris to neleidžia arba įvyko laikina klaida.",
+ "Error updating main address": "Atnaujinant pagrindinį adresą įvyko klaida",
+ "Published Addresses": "Paskelbti Adresai",
+ "There was an error updating the room's alternative addresses. It may not be allowed by the server or a temporary failure occurred.": "Atnaujinant kambario alternatyvius adresus įvyko klaida. Gali būti, kad serveris to neleidžia arba įvyko laikina klaida.",
+ "Room Addresses": "Kambario Adresai",
+ "%(senderName)s changed the addresses for this room.": "%(senderName)s pakeitė šio kambario adresus.",
+ "%(senderName)s changed the main and alternative addresses for this room.": "%(senderName)s pakeitė pagrindinį ir alternatyvius šio kambario adresus.",
+ "%(senderName)s changed the alternative addresses for this room.": "%(senderName)s pakeitė alternatyvius šio kambario adresus.",
+ "%(senderName)s added the alternative addresses %(addresses)s for this room.|one": "%(senderName)s pridėjo alternatyvų šio kambario adresą %(addresses)s.",
+ "%(senderName)s added the alternative addresses %(addresses)s for this room.|other": "%(senderName)s pridėjo alternatyvius šio kambario adresus %(addresses)s.",
+ "%(senderName)s removed the alternative addresses %(addresses)s for this room.|one": "%(senderName)s pašalino alternatyvų šio kambario adresą %(addresses)s.",
+ "%(senderName)s removed the alternative addresses %(addresses)s for this room.|other": "%(senderName)s pašalino alternatyvius šio kambario adresus %(addresses)s.",
+ "Room settings": "Kambario nustatymai",
+ "Link to most recent message": "Nuoroda į naujausią žinutę",
+ "Invite someone using their name, username (like ) or share this room.": "Pakviesti ką nors naudojant jų vardą, vartotojo vardą (pavyzdžiui ) arba bendrinti šį kambarį.",
+ "Share Room Message": "Bendrinti Kambario Žinutę",
+ "Share Room": "Bendrinti Kambarį",
+ "Use bots, bridges, widgets and sticker packs": "Naudoti botus, tiltus, valdiklius ir lipdukų pakuotes",
+ "Add widgets, bridges & bots": "Pridėti valdiklius, tiltus ir botus",
+ "Edit widgets, bridges & bots": "Redaguoti valdiklius, tiltus ir botus",
+ "Widgets": "Valdikliai",
+ "You can only pin up to %(count)s widgets|other": "Galite prisegti tik iki %(count)s valdiklių",
+ "Hide Widgets": "Slėpti Valdiklius",
+ "Modify widgets": "Keisti valdiklius",
+ "%(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 dabar naudoja 3-5 kartus mažiau atminties, įkeliant vartotojų informaciją tik prireikus. Palaukite, kol mes iš naujo sinchronizuosime su serveriu!",
+ "You are about to remove %(count)s messages by %(user)s. This cannot be undone. Do you wish to continue?|other": "Jūs ketinate pašalinti %(count)s %(user)s žinutes(-ų). To negalima anuliuoti. Ar norite tęsti?",
+ "You are about to remove %(count)s messages by %(user)s. This cannot be undone. Do you wish to continue?|one": "Jūs ketinate pašalinti 1 %(user)s žinutę. To negalima anuliuoti. Ar norite tęsti?",
+ "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?": "Jūs būsite nukreipti į trečiosios šalies svetainę, kad galėtumėte patvirtinti savo paskyrą naudojimui su %(integrationsUrl)s. Ar norite tęsti?",
+ "About": "Apie",
+ "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.": "Įjungus kambario šifravimą jo išjungti negalima. Žinutės, siunčiamos šifruotame kambaryje, nėra matomos serverio. Jas gali matyti tik kambario dalyviai. Įjungus šifravimą, daugelis botų ir tiltų gali veikti netinkamai. Sužinoti daugiau apie šifravimą.",
+ "about a day from now": "apie dieną nuo dabar",
+ "about an hour from now": "apie valandą nuo dabar",
+ "about a minute from now": "apie minutę nuo dabar",
+ "about a day ago": "maždaug prieš dieną",
+ "about an hour ago": "maždaug prieš valandą",
+ "about a minute ago": "maždaug prieš minutę",
+ "Displays information about a user": "Parodo informaciją apie vartotoją",
+ "Error whilst fetching joined communities": "Gaunant prisijungtas bendruomenes įvyko klaida",
+ "Who can join this community?": "Kas gali prisijungti prie šios bendruomenės?",
+ "Join this community": "Prisijungti prie šios bendruomenės",
+ "%(inviter)s has invited you to join this community": "%(inviter)s pakvietė jus prisijungti prie šios bendruomenės",
+ "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Šie kambariai rodomi bendruomenės nariams bendruomenės puslapyje. Bendruomenės nariai gali prisijungti prie kambarių paspausdami ant jų.",
+ "You are an administrator of this community. You will not be able to rejoin without an invite from another administrator.": "Jūs esate šios bendruomenės administratorius. Jūs negalėsite prisijungti iš naujo be kito administratoriaus kvietimo.",
+ "Unable to join community": "Nepavyko prisijungti prie bendruomenės",
+ "You must join the room to see its files": "Norėdami pamatyti jo failus, turite prisijungti prie kambario",
+ "Join millions for free on the largest public server": "Prisijunkite prie milijonų didžiausiame viešame serveryje nemokamai",
+ "Block anyone not part of %(serverName)s from ever joining this room.": "Blokuoti bet ką, kas nėra iš %(serverName)s, niekada nebeleidžiant prisijungti prie šio kambario.",
+ "Private rooms can be found and joined by invitation only. Public rooms can be found and joined by anyone in this community.": "Privačius kambarius rasti ir prie jų prisijungti galima tik su pakvietimu. Viešus kambarius rasti ir prie jų prisijungti gali visi šioje bendruomenėje.",
+ "Private rooms can be found and joined by invitation only. Public rooms can be found and joined by anyone.": "Privačius kambarius rasti ir prie jų prisijungti galima tik su pakvietimu. Viešus kambarius rasti ir prie jų prisijungti gali visi.",
+ "Join": "Prisijungti",
+ "Join the conference from the room information card on the right": "Prisijunkite prie konferencijos kambario informacijos kortelėje dešinėje",
+ "Join the conference at the top of this room": "Prisijunkite prie konferencijos šio kambario viršuje",
+ "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.": "Paskelbtus adresus gali naudoti bet kas, bet kuriame serveryje, kad prisijungtų prie jūsų kambario. Tam, kad paskelbtumėte adresą, visų pirma jis turi būti nustatytas kaip lokalus adresas.",
+ "Join the discussion": "Prisijungti prie diskusijos",
+ "Joining room …": "Jungiamasi prie kambario …",
+ "Try to join anyway": "Vis tiek bandyti prisijungti",
+ "Re-join": "Prisijungti iš naujo",
+ "Join the conversation with an account": "Prisijunkite prie pokalbio su paskyra",
+ "Join Room": "Prisijungti prie kambario",
+ "Guests cannot join this room even if explicitly invited.": "Svečiai negali prisijungti prie šio kambario, net jei jie yra pakviesti.",
+ "Subscribing to a ban list will cause you to join it!": "Užsiprenumeravus draudimų sąrašą, būsite prie jo prijungtas!",
+ "%(senderName)s joined the call": "%(senderName)s prisijungė prie skambučio",
+ "You joined the call": "Jūs prisijungėte prie skambučio",
+ "Joins room with given address": "Prisijungia prie kambario su nurodytu adresu",
+ "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!": "Jūsų bendruomenė neturi ilgo aprašymo, HTML puslapio, kuris galėtų būti rodomas bendruomenės nariams. Spauskite čia, norėdami atidaryti nustatymus ir tai pridėti!",
+ "Show": "Rodyti",
+ "Show all": "Rodyti viską",
+ "You have ignored this user, so their message is hidden. Show anyways.": "Jūs ignoravote šį vartotoją, todėl jo žinutė yra paslėpta. Rodyti vistiek.",
+ "Show files": "Rodyti failus",
+ "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.": "Kai kas nors į savo žinutę įtraukia URL, gali būti rodoma URL peržiūra, suteikianti daugiau informacijos apie tą nuorodą, tokios kaip pavadinimas, aprašymas ir vaizdas iš svetainės.",
+ "Show Stickers": "Rodyti Lipdukus",
+ "Show %(count)s more|one": "Rodyti dar %(count)s",
+ "Show %(count)s more|other": "Rodyti dar %(count)s",
+ "Show previews of messages": "Rodyti žinučių peržiūras",
+ "Show rooms with unread messages first": "Pirmiausia rodyti kambarius su neperskaitytomis žinutėmis",
+ "Show Widgets": "Rodyti Valdiklius",
+ "Show tray icon and minimize window to it on close": "Rodyti dėklo piktogramą ir sumažinti langą į jį, kai uždaroma",
+ "Always show the window menu bar": "Visada rodyti lango meniu juostą",
+ "There are advanced notifications which are not shown here.": "Yra išplėstinių pranešimų, kurie čia nerodomi.",
+ "Show less": "Rodyti mažiau",
+ "Show message previews for reactions in all rooms": "Rodyti žinučių peržiūras reakcijoms visuose kambariuose",
+ "Show message previews for reactions in DMs": "Rodyti žinučių peržiūras reakcijoms tiesioginėse žinutėse",
+ "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "Neleisti vartotojams kalbėti senoje kambario versijoje ir paskelbti pranešimą, kuriame vartotojams patariama persikelti į naują kambarį",
+ "Update any local room aliases to point to the new room": "Atnaujinkite vietinių kambarių slapyvardžius, kad nurodytumėte į naująjį kambarį",
+ "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:": "Norint atnaujinti šį kambarį, reikia uždaryti esamą kambario instanciją ir vietoje jo sukurti naują kambarį. Norėdami suteikti kambario nariams kuo geresnę patirtį, mes:",
+ "Upgrade Room Version": "Atnaujinti Kambario Versiją",
+ "Upgrade this room to version %(version)s": "Atnaujinti šį kambarį į %(version)s versiją",
+ "Please fill why you're reporting.": "Įrašykite kodėl pranešate.",
+ "Put a link back to the old room at the start of the new room so people can see old messages": "Naujojo kambario pradžioje įdėkite nuorodą į senąjį kambarį, kad žmonės galėtų matyti senas žinutes",
+ "An image will help people identify your community.": "Atvaizdas padės žmonėms atpažinti jūsų bendruomenę.",
+ "Invite people to join %(communityName)s": "Pakviesti žmones jungtis prie %(communityName)s",
+ "People you know on %(brand)s": "Žmonės, kuriuos pažįstate %(brand)s",
+ "Smileys & People": "Šypsenėlės ir Žmonės",
+ "%(count)s people|one": "%(count)s žmogus",
+ "%(count)s people|other": "%(count)s žmonės(-ų)",
+ "People": "Žmonės",
+ "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.": "Žmonių ignoravimas atliekamas naudojant draudimų sąrašus, kuriuose yra taisyklės, nurodančios kas turi būti draudžiami. Užsiprenumeravus draudimų sąrašą, vartotojai/serveriai, užblokuoti šio sąrašo, bus nuo jūsų paslėpti.",
+ "Try out new ways to ignore people (experimental)": "Išbandykite naujus žmonių ignoravimo būdus (eksperimentiniai)",
+ "This will end the conference for everyone. Continue?": "Tai baigs konferenciją visiems. Tęsti?",
+ "End conference": "Baigti konferenciją",
+ "The call was answered on another device.": "Į skambutį buvo atsiliepta kitame įrenginyje.",
+ "Answered Elsewhere": "Atsiliepta Kitur",
+ "The call could not be established": "Nepavyko pradėti skambučio",
+ "The other party declined the call.": "Kita šalis atsisakė skambučio.",
+ "Call Declined": "Skambutis Atmestas",
+ "🎉 All servers are banned from participating! This room can no longer be used.": "🎉 Visiems serveriams uždrausta dalyvauti! Šis kambarys nebegali būti naudojamas.",
+ "%(senderName)s removed a ban rule matching %(glob)s": "%(senderName)s pašalino draudimo taisyklę, sutampančią su %(glob)s",
+ "%(senderName)s removed the rule banning servers matching %(glob)s": "%(senderName)s pašalino taisyklę, draudžiančią serverius, sutampančius su %(glob)s",
+ "%(senderName)s removed the rule banning rooms matching %(glob)s": "%(senderName)s pašalino taisyklę, draudžiančią kambarius, sutampančius su %(glob)s",
+ "%(senderName)s removed the rule banning users matching %(glob)s": "%(senderName)s pašalino taisyklę, draudžiančią vartotojus, sutampančius su %(glob)s",
+ "%(senderName)s updated an invalid ban rule": "%(senderName)s atnaujino klaidingą draudimo taisyklę",
+ "%(senderName)s declined the call.": "%(senderName)s atmetė skambutį.",
+ "(an error occurred)": "(įvyko klaida)",
+ "(their device couldn't start the camera / microphone)": "(jų įrenginys negalėjo pradėti kameros / mikrofono)",
+ "(connection failed)": "(prisijungimas nepavyko)",
+ "%(senderDisplayName)s changed the server ACLs for this room.": "%(senderDisplayName)s pakeitė serverio prieigos kontrolės sąrašus šiam kambariui.",
+ "%(senderDisplayName)s set the server ACLs for this room.": "%(senderDisplayName)s nustatė serverio prieigos kontrolės sąrašus šiam kambariui.",
+ "Sends a message to the given user": "Siunčia žinutę nurodytam vartotojui",
+ "Opens chat with the given user": "Atidaro pokalbį su nurodytu vartotoju",
+ "Send a bug report with logs": "Siųsti pranešimą apie klaidą kartu su žurnalu",
+ "The signing key you provided matches the signing key you received from %(userId)s's session %(deviceId)s. Session marked as verified.": "Jūsų pateiktas pasirašymo raktas sutampa su pasirašymo raktu, gautu iš vartotojo %(userId)s seanso %(deviceId)s. Seansas pažymėtas kaip patikrintas.",
+ "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!": "ĮSPĖJIMAS: RAKTŲ PATIKRINIMAS NEPAVYKO! Pasirašymo raktas vartotojui %(userId)s ir seansui %(deviceId)s yra \"%(fprint)s\", kuris nesutampa su pateiktu raktu \"%(fingerprint)s\". Tai gali reikšti, kad jūsų komunikacijos yra perimamos!",
+ "Unknown (user, session) pair:": "Nežinoma (vartotojo, seanso) pora:",
+ "Verifies a user, session, and pubkey tuple": "Patvirtina vartotojo, seanso ir pubkey daugiadalę duomenų struktūrą",
+ "Please supply a widget URL or embed code": "Pateikite valdiklio URL arba įterpimo kodą",
+ "Could not find user in room": "Vartotojo rasti kambaryje nepavyko",
+ "Command failed": "Komanda nepavyko",
+ "Unrecognised room address:": "Neatpažintas kambario adresas:",
+ "You signed in to a new session without verifying it:": "Jūs prisijungėte prie naujo seanso, jo nepatvirtinę:",
+ "You can also set up Secure Backup & manage your keys in Settings.": "Jūs taip pat galite nustatyti Saugią Atsarginę Kopiją ir tvarkyti savo raktus Nustatymuose.",
+ "Secure Backup": "Saugi Atsarginė Kopija",
+ "Set up Secure Backup": "Nustatyti Saugią Atsarginę Kopiją",
+ "Ok": "Gerai",
+ "Contact your server admin.": "Susisiekite su savo serverio administratoriumi.",
+ "I want to help": "Aš noriu padėti",
+ "Send anonymous usage data which helps us improve %(brand)s. This will use a cookie.": "Siųsti anoniminius naudojimo duomenis, kurie padeda mums tobulinti %(brand)s. Tam bus naudojamas slapukas.",
+ "Help us improve %(brand)s": "Padėkite mums tobulinti %(brand)s",
+ "Unknown App": "Nežinoma Programa",
+ "Error leaving room": "Klaida išeinant iš kambario",
+ "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?": "Šio vartotojo deaktyvavimas atjungs juos ir neleis jiems vėl prisijungti atgal. Taip pat jie išeis iš visų kambarių, kuriuose jie yra. Šis veiksmas negali būti atšauktas. Ar tikrai norite deaktyvuoti šį vartotoją?",
+ "Unexpected server error trying to leave the room": "Netikėta serverio klaida bandant išeiti iš kambario",
+ "%(num)s days from now": "%(num)s dienas(-ų) nuo dabar",
+ "%(num)s hours from now": "%(num)s valandas(-ų) nuo dabar",
+ "%(num)s minutes from now": "%(num)s minutes(-ų) nuo dabar",
+ "a few seconds from now": "keletą sekundžių nuo dabar",
+ "%(num)s days ago": "prieš %(num)s dienas(-ų)",
+ "%(num)s hours ago": "prieš %(num)s valandas(-ų)",
+ "%(num)s minutes ago": "prieš %(num)s minutes(-ų)",
+ "a few seconds ago": "prieš kelias sekundes",
+ "Manually Verify by Text": "Patvirtinti rankiniu būdu, naudojant Tekstą",
+ "Not Trusted": "Nepatikimas",
+ "%(name)s (%(userId)s) signed in to a new session without verifying it:": "%(name)s (%(userId)s) prisijungė prie naujo seanso jo nepatvirtinę:",
+ "Dark": "Tamsi",
+ "Light": "Šviesi",
+ "%(senderName)s updated a ban rule that was matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s atnaujino draudimo taisyklę, kuri sutapo su %(oldGlob)s į sutampančią su %(newGlob)s dėl %(reason)s",
+ "%(senderName)s changed a rule that was banning servers matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s pakeitė taisyklę, kuri draudė serverius, sutampančius su %(oldGlob)s į sutampančius su %(newGlob)s dėl %(reason)s",
+ "%(senderName)s changed a rule that was banning rooms matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s pakeitė taisyklę, kuri draudė kambarius, sutampančius su %(oldGlob)s į sutampančius su %(newGlob)s dėl %(reason)s",
+ "%(senderName)s changed a rule that was banning users matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s pakeitė taisyklę, kuri draudė vartotojus, sutampančius su %(oldGlob)s į sutampančius su %(newGlob)s dėl %(reason)s",
+ "%(senderName)s created a ban rule matching %(glob)s for %(reason)s": "%(senderName)s sukūrė draudimo taisyklę, sutampančią su %(glob)s dėl %(reason)s",
+ "%(senderName)s created a rule banning servers matching %(glob)s for %(reason)s": "%(senderName)s sukūrė taisyklę, draudžiančią serverius, sutampančius su %(glob)s dėl %(reason)s",
+ "%(senderName)s created a rule banning rooms matching %(glob)s for %(reason)s": "%(senderName)s sukūrė taisyklę, draudžiančią kambarius, sutampančius su %(glob)s dėl %(reason)s",
+ "%(senderName)s created a rule banning users matching %(glob)s for %(reason)s": "%(senderName)s sukūrė taisyklę, draudžiančią vartotojus, sutampančius su %(glob)s dėl %(reason)s",
+ "%(senderName)s updated a ban rule matching %(glob)s for %(reason)s": "%(senderName)s atnaujino draudimo taisyklę, sutampančią su %(glob)s dėl %(reason)s",
+ "%(senderName)s updated the rule banning servers matching %(glob)s for %(reason)s": "%(senderName)s atnaujino taisyklę, draudžiančią serverius, sutampančius su %(glob)s dėl %(reason)s",
+ "%(senderName)s updated the rule banning rooms matching %(glob)s for %(reason)s": "%(senderName)s atnaujino taisyklę, draudžiančią kambarius, sutampančius su %(glob)s dėl %(reason)s",
+ "%(senderName)s updated the rule banning users matching %(glob)s for %(reason)s": "%(senderName)s atnaujino taisyklę, draudžiančią vartotojus, sutampančius su %(glob)s dėl %(reason)s",
+ "Emoji picker": "Jaustukų rinkėjas",
+ "Failed to remove tag %(tagName)s from room": "Nepavyko pašalinti žymos %(tagName)s iš kambario",
+ "The user '%(displayName)s' could not be removed from the summary.": "Vartotojas '%(displayName)s' negali būti pašalintas iš santraukos.",
+ "Failed to remove a user from the summary of %(groupId)s": "Nepavyko pašalinti vartotojo iš %(groupId)s santraukos",
+ "The room '%(roomName)s' could not be removed from the summary.": "Kambarys '%(roomName)s' negali būti pašalintas iš santraukos.",
+ "Failed to remove the room from the summary of %(groupId)s": "Nepavyko pašalinti kambario iš %(groupId)s santraukos",
+ "Your browser likely removed this data when running low on disk space.": "Jūsų naršyklė greičiausiai pašalino šiuos duomenis pritrūkus vietos diske.",
+ "Remove server": "Pašalinti serverį",
+ "Remove %(count)s messages|one": "Pašalinti 1 žinutę",
+ "Remove %(count)s messages|other": "Pašalinti %(count)s žinutes(-ų)",
+ "Remove %(phone)s?": "Pašalinti %(phone)s?",
+ "Remove %(email)s?": "Pašalinti %(email)s?",
+ "Remove messages sent by others": "Pašalinti kitų siųstas žinutes",
+ "Remove for everyone": "Pašalinti visiems",
+ "Popout widget": "Iššokti valdiklį",
+ "Unpin a widget to view it in this panel": "Atsekite valdiklį, kad galėtumėte jį peržiūrėti šiame skydelyje",
+ "Unpin": "Atsegti",
+ "Video conference started by %(senderName)s": "%(senderName)s pradėjo video konferenciją",
+ "Video conference updated by %(senderName)s": "%(senderName)s atnaujino video konferenciją",
+ "Video conference ended by %(senderName)s": "%(senderName)s užbaigė video konferenciją",
+ "Start automatically after system login": "Pradėti automatiškai prisijungus prie sistemos",
+ "Subscribe": "Prenumeruoti",
+ "Room ID or address of ban list": "Kambario ID arba draudimų sąrašo adresas",
+ "If this isn't what you want, please use a different tool to ignore users.": "Jei tai nėra ko jūs norite, naudokite kitą įrankį vartotojams ignoruoti.",
+ "Subscribed lists": "Prenumeruojami sąrašai",
+ "eg: @bot:* or example.org": "pvz.: @botas:* arba pavyzdys.org",
+ "Server or user ID to ignore": "Norimo ignoruoti serverio arba vartotojo ID",
+ "Personal ban list": "Asmeninis draudimų sąrašas",
+ "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.": "Čia pridėkite vartotojus ir serverius, kuriuos norite ignoruoti. Naudokite žvaigždutes, kad %(brand)s atitiktų bet kokius simbolius. Pavyzdžiui, @botas:* ignoruotų visus vartotojus, turinčius vardą 'botas' bet kuriame serveryje.",
+ "Ignored users": "Ignoruojami vartotojai",
+ "View rules": "Peržiūrėti taisykles",
+ "Unsubscribe": "Atsisakyti prenumeratos",
+ "You have not ignored anyone.": "Jūs nieko neignoruojate.",
+ "User rules": "Vartotojo taisyklės",
+ "Server rules": "Serverio taisyklės",
+ "Ban list rules - %(roomName)s": "Draudimo sąrašo taisyklės - %(roomName)s",
+ "None": "Nė vienas",
+ "Please try again or view your console for hints.": "Bandykite dar kartą arba peržiūrėkite konsolę, kad rastumėte užuominų.",
+ "Error unsubscribing from list": "Klaida atsisakant sąrašo prenumeratos",
+ "Error removing ignored user/server": "Klaida pašalinant ignoruojamą vartotoją/serverį",
+ "Error subscribing to list": "Klaida užsiprenumeruojant sąrašą",
+ "Something went wrong. Please try again or view your console for hints.": "Kažkas ne taip. Bandykite dar kartą arba peržiūrėkite konsolę, kad rastumėte užuominų.",
+ "Error adding ignored user/server": "Klaida pridedant ignoruojamą vartotoją/serverį",
+ "Ignored/Blocked": "Ignoruojami/Blokuojami",
+ "Customise your experience with experimental labs features. Learn more.": "Tinkinkite savo patirtį su eksperimentinėmis laboratorijų funkcijomis. Sužinoti daugiau.",
+ "Labs": "Laboratorijos",
+ "Legal": "Teisiniai",
+ "Appearance Settings only affect this %(brand)s session.": "Išvaizdos Nustatymai įtakoja tik šį %(brand)s seansą.",
+ "Customise your appearance": "Tinkinti savo išvaizdą",
+ "Set the name of a font installed on your system & %(brand)s will attempt to use it.": "Nustatykite sistemoje įdiegto šrifto pavadinimą ir %(brand)s bandys jį naudoti.",
+ "Modern": "Modernus",
+ "Compact": "Kompaktiškas",
+ "Message layout": "Žinutės išdėstymas",
+ "Use between %(min)s pt and %(max)s pt": "Naudokite dydį tarp %(min)s pt ir %(max)s pt",
+ "Custom font size can only be between %(min)s pt and %(max)s pt": "Pasirinktinis šrifto dydis gali būti tik tarp %(min)s pt ir %(max)s pt",
+ "Size must be a number": "Dydis turi būti skaičius",
+ "Hey you. You're the best!": "Labukas. Tu geriausias(-a)!",
+ "New version available. Update now.": "Galima nauja versija. Atnaujinti dabar.",
+ "You should:": "Jūs turėtumėte:",
+ "Checking server": "Tikrinamas serveris",
+ "not ready": "neparuošta",
+ "ready": "paruošta",
+ "Secret storage:": "Slapta saugykla:",
+ "Backup key cached:": "Atsarginis raktas išsaugotas talpykloje:",
+ "not stored": "nesaugomas",
+ "Backup key stored:": "Atsarginis raktas saugomas:",
+ "Back up your encryption keys with your account data in case you lose access to your sessions. Your keys will be secured with a unique Recovery Key.": "Sukurkite šifravimo raktų atsarginę kopiją su savo paskyros duomenimis, jei prarastumėte prieigą prie savo seansų. Jūsų raktai bus apsaugoti unikaliu Atkūrimo Raktu.",
+ "Algorithm:": "Algoritmas:",
+ "Backup version:": "Atsarginės kopijos versija:",
+ "Backup is not signed by any of your sessions": "Atsarginė kopija nepasirašyta nė vieno jūsų seanso",
+ "Backing up %(sessionsRemaining)s keys...": "Daromos atsarginės %(sessionsRemaining)s raktų kopijos...",
+ "Profile picture": "Profilio paveikslėlis",
+ "The operation could not be completed": "Nepavyko užbaigti operacijos",
+ "Failed to save your profile": "Nepavyko išsaugoti jūsų profilio",
+ "You might have configured them in a client other than %(brand)s. You cannot tune them in %(brand)s but they still apply.": "Galbūt juos sukonfigūravote ne %(brand)s kliente, o kitame. Jūs negalite derinti jų %(brand)s, bet jie vis tiek taikomi.",
+ "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)": "Prašau pamiršti visas mano siųstas žinutes, kai mano paskyra bus deaktyvuota (Įspėjimas: tai neleis būsimiems vartotojams pamatyti pilnų pokalbių vaizdo)",
+ "Forget Room": "Pamiršti Kambarį",
+ "Forget this room": "Pamiršti šį kambarį",
+ "You are a member of this community": "Jūs esate šios bendruomenės narys",
+ "You are an administrator of this community": "Jūs esate šios bendruomenės administratorius",
+ "This homeserver would like to make sure you are not a robot.": "Šis serveris norėtų įsitikinti, kad jūs nesate robotas.",
+ "Your area is experiencing difficulties connecting to the internet.": "Jūsų vietovėje kyla sunkumų prisijungiant prie interneto.",
+ "Your server isn't responding to some of your requests. Below are some of the most likely reasons.": "Jūsų serveris neatsako į kai kurias jūsų užklausas. Žemiau pateikiamos kelios labiausiai tikėtinos priežastys.",
+ "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.": "Žinučių matomumas Matrix yra panašus į el. paštą. Jūsų žinučių užmiršimas reiškia, kad žinutėmis, kurias jūs išsiuntėte, nebus dalijamasi su jokiais naujais arba neregistruotais vartotojais, bet registruoti vartotojai, kurie jau turi prieigą prie šių žinučių, vis tiek turės prieigą prie savo kopijų.",
+ "Your messages are not secure": "Jūsų žinutės nėra saugios",
+ "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.": "Raktų bendrinimo užklausos jūsų kitiems seansams yra siunčiamos automatiškai. Jei jūs atmetėte arba nutraukėte raktų bendrinimo užklausą kitame savo seanse, spauskite čia, kad vėl paprašytumėte šio seanso raktų.",
+ "Your key share request has been sent - please check your other sessions for key share requests.": "Jūsų raktų bendrinimo užklausa buvo išsiųsta - patikrinkite, ar kituose jūsų seansuose nėra raktų bendrinimo užklausų.",
+ "You are currently subscribed to:": "Šiuo metu esate užsiprenumeravę:",
+ "You are not subscribed to any lists": "Nesate užsiprenumeravę jokių sąrašų",
+ "You are currently ignoring:": "Šiuo metu ignoruojate:",
+ "Are you sure? You will lose your encrypted messages if your keys are not backed up properly.": "Ar tikrai? Jūs prarasite savo šifruotas žinutes, jei jūsų raktams nebus tinkamai sukurtos atsarginės kopijos.",
+ "Your keys are not being backed up from this session.": "Jūsų raktams nėra daromos atsarginės kopijos iš šio seanso.",
+ "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "Bendruomenės ID gali turėti tik šiuos simbolius a-z, 0-9, or '=_-./'",
+ "A-Z": "A-Ž",
+ "Activity": "Aktyvumą",
+ "Sort by": "Rūšiuoti pagal",
+ "List options": "Sąrašo parinktys",
+ "Notification Autocomplete": "Pranešimo Automatinis Užbaigimas",
+ "Room Notification": "Kambario Pranešimas",
+ "You have %(count)s unread notifications in a prior version of this room.|one": "Jūs turite %(count)s neperskaitytą pranešimą ankstesnėje šio kambario versijoje.",
+ "You have %(count)s unread notifications in a prior version of this room.|other": "Jūs turite %(count)s neperskaitytus(-ų) pranešimus(-ų) ankstesnėje šio kambario versijoje.",
+ "You have no visible notifications in this room.": "Šiame kambaryje neturite matomų pranešimų.",
+ "Notification options": "Pranešimų parinktys",
+ "Leave Room": "Išeiti Iš Kambario",
+ "Favourited": "Mėgstamas",
+ "Room options": "Kambario parinktys",
+ "%(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 negali saugiai talpinti šifruotų žinučių lokaliai, kai veikia interneto naršyklėje. Naudokite %(brand)s Desktop (darbastalio versija), kad šifruotos žinutės būtų rodomos paieškos rezultatuose.",
+ "%(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 trūksta kai kurių komponentų, reikalingų saugiai talpinti šifruotas žinutes lokaliai. Jei norite eksperimentuoti su šia funkcija, sukurkite pasirinktinį %(brand)s Desktop (darbastalio versiją), su pridėtais paieškos komponentais.",
+ "Manage": "Tvarkyti",
+ "rooms.": "kambarių.",
+ " to store messages from ": " saugoti žinutes iš ",
+ "Master private key:": "Pagrindinis privatus raktas:",
+ "not found in storage": "saugykloje nerasta",
+ "Cross-signing is not set up.": "Kryžminis pasirašymas nenustatytas.",
+ "Cross-signing is ready for use.": "Kryžminis pasirašymas yra paruoštas naudoti.",
+ "Channel: %(channelName)s": "Kanalas: %(channelName)s",
+ "Workspace: %(networkName)s": "Darbo sritis: %(networkName)s",
+ "This bridge is managed by .": "Šis tiltas yra tvarkomas .",
+ "This bridge was provisioned by .": "Šis tiltas buvo parūpintas .",
+ "Your server isn't responding to some requests.": "Jūsų serveris neatsako į kai kurias užklausas.",
+ "Unable to find a supported verification method.": "Nepavyko rasti palaikomo patvirtinimo metodo.",
+ "Start": "Pradėti",
+ "or": "arba",
+ "Incoming call": "Įeinantis skambutis",
+ "Incoming video call": "Įeinantis video skambutis",
+ "Incoming voice call": "Įeinantis balso skambutis",
+ "Unknown caller": "Nežinomas skambintojas",
+ "Downloading logs": "Parsiunčiami žurnalai",
+ "Uploading logs": "Įkeliami žurnalai",
+ "System font name": "Sistemos šrifto pavadinimas",
+ "Use a system font": "Naudoti sistemos šriftą",
+ "Use a more compact ‘Modern’ layout": "Naudoti labiau kompaktišką 'Modernų' išdėstymą",
+ "Use custom size": "Naudoti pasirinktinį dydį",
+ "Font size": "Šrifto dydis",
+ "Enable advanced debugging for the room list": "Įjungti išplėstinį kambarių sąrašo derinimą",
+ "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.": "Jei kita %(brand)s versija vis dar yra atidaryta kitame skirtuke, uždarykite jį, nes %(brand)s naudojimas tame pačiame serveryje, tuo pačiu metu įjungus ir išjungus tingų įkėlimą, sukelks problemų.",
+ "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.": "Jūs anksčiau naudojote %(brand)s ant %(host)s įjungę tingų narių įkėlimą. Šioje versijoje tingus įkėlimas yra išjungtas. Kadangi vietinė talpykla nesuderinama tarp šių dviejų nustatymų, %(brand)s reikia iš naujo sinchronizuoti jūsų paskyrą.",
+ "You might enable this if the room will only be used for collaborating with internal teams on your homeserver. This cannot be changed later.": "Jūs galite tai įjungti, jei kambarys bus naudojamas tik bendradarbiavimui su vidinėmis komandomis jūsų serveryje. Tai negali būti vėliau pakeista.",
+ "Your server requires encryption to be enabled in private rooms.": "Jūsų serveris reikalauja, kad šifravimas būtų įjungtas privačiuose kambariuose.",
+ "You don't currently have any stickerpacks enabled": "Jūs šiuo metu neturite jokių įjungtų lipdukų paketų",
+ "Enable experimental, compact IRC style layout": "Įjungti eksperimentinį, kompaktišką IRC stiliaus išdėstymą",
+ "Support adding custom themes": "Palaikykite pridėdami pasirinktines temas",
+ "New spinner design": "Naujas suktuko dizainas",
+ "Communities v2 prototypes. Requires compatible homeserver. Highly experimental - use with caution.": "Bendruomenių v2 prototipai. Reikalingas suderinamas serveris. Itin eksperimentiniai - naudokite atsargiai.",
+ "%(senderName)s: %(stickerName)s": "%(senderName)s: %(stickerName)s",
+ "%(senderName)s: %(reaction)s": "%(senderName)s: %(reaction)s",
+ "%(senderName)s: %(message)s": "%(senderName)s: %(message)s",
+ "* %(senderName)s %(emote)s": "* %(senderName)s %(emote)s",
+ "%(senderName)s is calling": "%(senderName)s skambina",
+ "Waiting for answer": "Laukiama atsakymo",
+ "%(senderName)s started a call": "%(senderName)s pradėjo skambutį",
+ "You started a call": "Jūs pradėjote skambutį",
+ "Call ended": "Skambutis baigtas",
+ "%(senderName)s left the call": "%(senderName)s paliko skambutį",
+ "You left the call": "Jūs palikote skambutį",
+ "Call in progress": "Vykdomas skambutis",
+ "The person who invited you already left the room, or their server is offline.": "Asmuo, kuris jus pakvietė, jau išėjo iš kambario, arba jo serveris yra neprisijungęs.",
+ "The person who invited you already left the room.": "Asmuo, kuris jus pakvietė, jau išėjo iš kambario.",
+ "Guest": "Svečias",
+ "A new version of %(brand)s is available!": "Galima nauja %(brand)s versija!",
+ "Upgrade your %(brand)s": "Atnaujinti jūsų %(brand)s",
+ "Restart": "Perkrauti",
+ "A widget would like to verify your identity": "Valdiklis nori patvirtinti jūsų tapatybę",
+ "Verifying this user will mark their session as trusted, and also mark your session as trusted to them.": "Patvirtinant šį vartotoją, jo seansas bus pažymėtas kaip patikimas, taip pat jūsų seansas bus pažymėtas kaip patikimas jam.",
+ "In encrypted rooms, verify all users to ensure it’s secure.": "Užšifruotuose kambariuose, patvirtinkite visus vartotojus, kad užtikrintumėte jo saugumą.",
+ "The homeserver the user you’re verifying is connected to": "Serveris, prie kurio yra prisijungęs jūsų tvirtinamas vartotojas",
+ "Verify the link in your inbox": "Patvirtinkite nuorodą savo el. pašto dėžutėje",
+ "Click the link in the email you received to verify and then click continue again.": "Paspauskite nuorodą gautame el. laiške, kad patvirtintumėte, tada dar kartą spustelėkite tęsti.",
+ "Please verify the room ID or address and try again.": "Patikrinkite kambario ID arba adresą ir bandykite dar kartą.",
+ "Verify this session by confirming the following number appears on its screen.": "Patvirtinkite šį seansą, įsitikindami, kad jo ekrane rodomas toliau esantis skaičius.",
+ "Privacy": "Privatumas",
+ "Accept all %(invitedRooms)s invites": "Priimti visus %(invitedRooms)s pakvietimus",
+ "Bulk options": "Grupinės parinktys"
}
diff --git a/src/i18n/strings/nb_NO.json b/src/i18n/strings/nb_NO.json
index f8f0d890be..6388983f77 100644
--- a/src/i18n/strings/nb_NO.json
+++ b/src/i18n/strings/nb_NO.json
@@ -1422,8 +1422,8 @@
"Compact": "Kompakt",
"Modern": "Moderne",
"Server or user ID to ignore": "Tjener- eller bruker-ID-en som skal ignoreres",
- "Show %(count)s more|other": "Vis %(count) til",
- "Show %(count)s more|one": "Vis %(count) til",
+ "Show %(count)s more|other": "Vis %(count)s til",
+ "Show %(count)s more|one": "Vis %(count)s til",
"Use default": "Bruk standarden",
"Notification options": "Varselsinnstillinger",
"Room options": "Rominnstillinger",
diff --git a/src/i18n/strings/nn.json b/src/i18n/strings/nn.json
index 52cbfc75e1..be785e3f11 100644
--- a/src/i18n/strings/nn.json
+++ b/src/i18n/strings/nn.json
@@ -1331,5 +1331,6 @@
"Join millions for free on the largest public server": "Kom ihop med millionar av andre på den største offentlege tenaren",
"Order rooms by name": "Sorter rom etter namn",
"Show rooms with unread notifications first": "Vis rom med ulesne varsel fyrst",
- "Show rooms with unread messages first": "Vis rom med ulesne meldingar fyrst"
+ "Show rooms with unread messages first": "Vis rom med ulesne meldingar fyrst",
+ "People": "Folk"
}
diff --git a/src/i18n/strings/pt_BR.json b/src/i18n/strings/pt_BR.json
index f7dc067a1a..d44ea4d014 100644
--- a/src/i18n/strings/pt_BR.json
+++ b/src/i18n/strings/pt_BR.json
@@ -492,7 +492,7 @@
"Remove this user from community?": "Remover esta pessoa da comunidade?",
"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",
+ "Filter community members": "Pesquisar participantes da comunidade",
"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",
@@ -581,7 +581,7 @@
"example": "exemplo",
"Create": "Criar",
"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 participantes, ou compartilhe links importantes.\n
\n
\n Você pode até mesmo usar tags 'img' em HTML\n
\n",
+ "
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 participantes,\n ou compartilhe links importantes.\n
\n
\n Você pode até mesmo usar tags 'img' em 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?",
"Add to summary": "Adicionar ao índice",
@@ -870,8 +870,8 @@
"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ê precisa exportar as chaves da sua sala antes de se desconectar. Quando entrar novamente, você precisará usar a versão mais atual do %(brand)s",
"Incompatible Database": "Banco de dados incompatível",
"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. b>",
- "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. B> Se você quiser que esqueçamos suas mensagens, marque a caixa abaixo.",
+ "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 opção 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 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:",
@@ -928,7 +928,7 @@
"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.",
+ "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "Para continuar usando o servidor local %(homeserverDomain)s, você deve ler e concordar com nossos termos e condições.",
"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.",
@@ -947,9 +947,9 @@
"That doesn't match.": "Isto não corresponde.",
"Go back to set it again.": "Voltar para configurar novamente.",
"Download": "Baixar",
- "Print it and store it somewhere safe": "Imprima-o b> e armazene-o em algum lugar seguro",
- "Save it on a USB key or backup drive": "Salve isto b> em uma chave USB ou unidade de backup",
- "Copy it to your personal cloud storage": "Copie isto b> para seu armazenamento em nuvem pessoal",
+ "Print it and store it somewhere safe": "Imprima-o e armazene-o em algum lugar seguro",
+ "Save it on a USB key or backup drive": "Salve isto em uma chave USB ou unidade de backup",
+ "Copy it to your personal cloud storage": "Copie isto para o seu armazenamento em nuvem pessoal",
"Set up Secure Message Recovery": "Configurar Recuperação Segura de Mensagens",
"Unable to create key backup": "Não foi possível criar backup da chave",
"Retry": "Tentar novamente",
@@ -1042,7 +1042,7 @@
"Glasses": "Óculos",
"Spanner": "Chave inglesa",
"Santa": "Papai-noel",
- "Prepends ¯\\_(ツ)_/¯ to a plain-text message": "Adiciona ¯ \\ _ (ツ) _ / ¯ a uma mensagem de texto",
+ "Prepends ¯\\_(ツ)_/¯ to a plain-text message": "Adiciona ¯ \\ _ (ツ) _ / ¯ a uma mensagem de texto",
"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",
@@ -1206,7 +1206,7 @@
"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.",
+ "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",
@@ -2469,5 +2469,29 @@
"(an error occurred)": "(ocorreu um erro)",
"(connection failed)": "(a conexão falhou)",
"🎉 All servers are banned from participating! This room can no longer be used.": "🎉 Todos os servidores foram banidos desta sala! Esta sala não pode mais ser utilizada.",
- "Call Declined": "Chamada recusada"
+ "Call Declined": "Chamada recusada",
+ "You can only pin up to %(count)s widgets|other": "Você pode fixar até %(count)s widgets",
+ "Move right": "Mover para a direita",
+ "Move left": "Mover para a esquerda",
+ "Revoke permissions": "Revogar permissões",
+ "Unpin a widget to view it in this panel": "Desafixe um widget para exibi-lo neste painel",
+ "Show Widgets": "Mostrar widgets",
+ "Hide Widgets": "Esconder widgets",
+ "The call was answered on another device.": "A chamada foi atendida em outro aparelho.",
+ "Answered Elsewhere": "Respondido em algum lugar",
+ "Modal Widget": "Popup do widget",
+ "Data on this screen is shared with %(widgetDomain)s": "Dados nessa tela são compartilhados com %(widgetDomain)s",
+ "Send feedback": "Enviar comentário",
+ "PRO TIP: If you start a bug, please submit debug logs to help us track down the problem.": "DICA: se você nos informar um erro, envie relatórios de erro para nos ajudar a rastrear o problema.",
+ "Please view existing bugs on Github first. No match? Start a new one.": "Por favor, consulte os erros conhecidos no Github antes de enviar o seu. Se ninguém tiver mencionado o seu erro, informe-nos sobre um erro novo .",
+ "Feedback sent": "Comentário enviado",
+ "Report a bug": "Reportar um erro",
+ "There are two ways you can provide feedback and help us improve %(brand)s.": "Há duas maneiras para fornecer seu comentário e nos ajudar a aprimorar o %(brand)s.",
+ "Comment": "Comentário",
+ "Add comment": "Comentar",
+ "Please go into as much detail as you like, so we can track down the problem.": "Detalhe o quanto for necessário, para que possamos rastrear o problema.",
+ "Tell us below how you feel about %(brand)s so far.": "Conte-nos abaixo o que você sente sobre o %(brand)s até o momento.",
+ "Rate %(brand)s": "Avalie o %(brand)s",
+ "%(senderName)s ended the call": "%(senderName)s encerrou a chamada",
+ "You ended the call": "Você encerrou a chamada"
}
diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json
index 70a96a87bf..8bf1ee15d3 100644
--- a/src/i18n/strings/ru.json
+++ b/src/i18n/strings/ru.json
@@ -98,7 +98,7 @@
"click to reveal": "нажмите для открытия",
"%(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.",
+ "%(senderName)s kicked %(targetName)s.": "%(senderName)s исключил(а) %(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 сделал(а) историю разговора видимой для всех собеседников с момента их входа в комнату.",
@@ -1085,7 +1085,7 @@
"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' превышает допустимый размер для этого сервера",
+ "The file '%(fileName)s' exceeds this homeserver's size limit for uploads": "Размер файла '%(fileName)s' превышает ограничения сервера для загрузки.",
"Prepends ¯\\_(ツ)_/¯ to a plain-text message": "Добавляет смайл ¯\\_(ツ)_/¯ в начало сообщения",
"Changes your display nickname in the current room only": "Изменяет ваш псевдоним только для текущей комнаты",
"Gets or sets the room topic": "Читает или устанавливает тему комнаты",
@@ -1153,7 +1153,7 @@
"No homeserver URL provided": "URL-адрес домашнего сервера не указан",
"Unexpected error resolving homeserver configuration": "Неожиданная ошибка в настройках домашнего сервера",
"The user's homeserver does not support the version of the room.": "Домашний сервер пользователя не поддерживает версию комнаты.",
- "Show read receipts sent by other users": "Показывать отметки о прочтении, посылаемые другими пользователями",
+ "Show read receipts sent by other users": "Показывать информацию о прочтении, посылаемую другими пользователями",
"Show hidden events in timeline": "Показать скрытые события в хронологии",
"When rooms are upgraded": "При обновлении комнат",
"Upgrade to your own domain": "Обновление до собственного домена",
@@ -2522,5 +2522,41 @@
"Call connecting...": "Устанавливается соединение…",
"Starting camera...": "Запуск камеры…",
"Starting microphone...": "Запуск микрофона…",
- "🎉 All servers are banned from participating! This room can no longer be used.": "🎉 Все серверы запрещены к участию! Эта комната больше не может быть использована."
+ "🎉 All servers are banned from participating! This room can no longer be used.": "🎉 Все серверы запрещены к участию! Эта комната больше не может быть использована.",
+ "Remove messages sent by others": "Удалить сообщения, отправленные другими",
+ "Offline encrypted messaging using dehydrated devices": "Автономный обмен зашифрованными сообщениями с сохраненными устройствами",
+ "Move right": "Сдвинуть вправо",
+ "Move left": "Сдвинуть влево",
+ "Revoke permissions": "Отозвать разрешения",
+ "Data on this screen is shared with %(widgetDomain)s": "Данные на этом экране используются %(widgetDomain)s",
+ "Modal Widget": "Модальный виджет",
+ "Ignored attempt to disable encryption": "Игнорируемая попытка отключить шифрование",
+ "Unpin a widget to view it in this panel": "Открепите виджет, чтобы просмотреть его на этой панели",
+ "You can only pin up to %(count)s widgets|other": "Вы можете закрепить не более %(count)s виджетов",
+ "Show Widgets": "Показать виджеты",
+ "Hide Widgets": "Скрыть виджеты",
+ "%(senderName)s declined the call.": "%(senderName)s отклонил(а) вызов.",
+ "(an error occurred)": "(произошла ошибка)",
+ "(their device couldn't start the camera / microphone)": "(их устройство не может запустить камеру / микрофон)",
+ "(connection failed)": "(ошибка соединения)",
+ "%(senderDisplayName)s changed the server ACLs for this room.": "%(senderDisplayName)s изменил(а) серверные разрешения для этой комнаты.",
+ "%(senderDisplayName)s set the server ACLs for this room.": "%(senderDisplayName)s устанавливает серверные разрешения для этой комнаты.",
+ "The call was answered on another device.": "На звонок ответили на другом устройстве.",
+ "Answered Elsewhere": "Ответил в другом месте",
+ "The call could not be established": "Звонок не может быть установлен",
+ "The other party declined the call.": "Другой абонент отклонил звонок.",
+ "Call Declined": "Вызов отклонён",
+ "Send feedback": "Отправить отзыв",
+ "PRO TIP: If you start a bug, please submit debug logs to help us track down the problem.": "СОВЕТ ДЛЯ ПРОФЕССИОНАЛОВ: если вы запустите ошибку, отправьте журналы отладки, чтобы помочь нам отследить проблему.",
+ "Please view existing bugs on Github first. No match? Start a new one.": "Сначала просмотрите существующий список ошибок в Github. Нет совпадений? Открыть новую.",
+ "Report a bug": "Сообщить об ошибке",
+ "There are two ways you can provide feedback and help us improve %(brand)s.": "Вы можете оставить отзыв и помочь нам улучшить %(brand)s двумя способами.",
+ "Comment": "Комментарий",
+ "Add comment": "Добавить комментарий",
+ "Please go into as much detail as you like, so we can track down the problem.": "Пожалуйста, расскажите как можно более подробно, чтобы мы могли отследить проблему.",
+ "Tell us below how you feel about %(brand)s so far.": "Расскажите нам ниже, что вы думаете о %(brand)s на данный момент.",
+ "Rate %(brand)s": "Оценить %(brand)s",
+ "Feedback sent": "Отзыв отправлен",
+ "%(senderName)s ended the call": "%(senderName)s завершил(а) звонок",
+ "You ended the call": "Вы закончили звонок"
}
diff --git a/src/i18n/strings/sq.json b/src/i18n/strings/sq.json
index 84a8ac2786..3f4a79b3f6 100644
--- a/src/i18n/strings/sq.json
+++ b/src/i18n/strings/sq.json
@@ -2534,5 +2534,27 @@
"(connection failed)": "(dështoi lidhja)",
"The call could not be established": "Thirrja s’u nis dot",
"The other party declined the call.": "Pala tjetër hodhi poshtë thirrjen.",
- "Call Declined": "Thirrja u Hodh Poshtë"
+ "Call Declined": "Thirrja u Hodh Poshtë",
+ "Move right": "Lëvize djathtas",
+ "Move left": "Lëvize majtas",
+ "Revoke permissions": "Shfuqizoji lejet",
+ "Unpin a widget to view it in this panel": "Që ta shihni te ku panel, shfiksojeni një widget",
+ "You can only pin up to %(count)s widgets|other": "Mundeni të fiksoni deri në %(count)s widget-e",
+ "Show Widgets": "Shfaqi Widget-et",
+ "Hide Widgets": "Fshihi Widget-et",
+ "The call was answered on another device.": "Thirrjes iu përgjigj në një tjetër pajisje.",
+ "Answered Elsewhere": "Përgjigjur Gjetkë",
+ "Data on this screen is shared with %(widgetDomain)s": "Të dhënat në këtë skenë ndahen me %(widgetDomain)s",
+ "Modal Widget": "Widget Modal",
+ "Send feedback": "Dërgoni përshtypjet",
+ "PRO TIP: If you start a bug, please submit debug logs to help us track down the problem.": "NDIHMËZ PROFESIONISTËSH: Nëse nisni një njoftim të mete, ju lutemi, parashtroni regjistra diagnostikimi, që të na ndihmoni të gjejmë problemin.",
+ "Please view existing bugs on Github first. No match? Start a new one.": "Ju lutemi, shihni të meta ekzistuese në Github së pari. S’ka përputhje? Nisni një të re.",
+ "Report a bug": "Njoftoni një të metë",
+ "There are two ways you can provide feedback and help us improve %(brand)s.": "Ka dy rrugë se si mund të jepni përshtypjet dhe të na ndihmoni të përmirësojmë %(brand)s.",
+ "Comment": "Koment",
+ "Add comment": "Shtoni koment",
+ "Please go into as much detail as you like, so we can track down the problem.": "Ju lutemi, shkoni aq thellë sa doni, që të mund të ndjekim problemin.",
+ "Tell us below how you feel about %(brand)s so far.": "Tregonani më poshtë se si ndiheni rreth %(brand)s deri këtu.",
+ "Rate %(brand)s": "Vlerësojeni %(brand)s",
+ "Feedback sent": "Përshtypjet u dërguan"
}
diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json
index 4a74d88918..ebd1e0b56b 100644
--- a/src/i18n/strings/sv.json
+++ b/src/i18n/strings/sv.json
@@ -2471,5 +2471,27 @@
"(connection failed)": "(anslutning misslyckad)",
"The call could not be established": "Samtalet kunde inte etableras",
"The other party declined the call.": "Den andra parten avböjde samtalet.",
- "Call Declined": "Samtal avböjt"
+ "Call Declined": "Samtal avböjt",
+ "Move right": "Flytta till höger",
+ "Move left": "Flytta till vänster",
+ "Revoke permissions": "Återkalla behörigheter",
+ "Data on this screen is shared with %(widgetDomain)s": "Data på den här skärmen delas med %(widgetDomain)s",
+ "Modal Widget": "Dialogruta",
+ "Unpin a widget to view it in this panel": "Avfäst en widget för att visa den i den här panelen",
+ "You can only pin up to %(count)s widgets|other": "Du kan bara fästa upp till %(count)s widgets",
+ "Show Widgets": "Visa widgets",
+ "Hide Widgets": "Dölj widgets",
+ "The call was answered on another device.": "Samtalet mottogs på en annan enhet.",
+ "Answered Elsewhere": "Mottaget någon annanstans",
+ "Send feedback": "Skicka återkoppling",
+ "PRO TIP: If you start a bug, please submit debug logs to help us track down the problem.": "TIPS: Om du startar en bugg, vänligen inkludera avbuggninsloggar för att hjälpa oss att hitta problemet.",
+ "Please view existing bugs on Github first. No match? Start a new one.": "Vänligen se existerade buggar på GitHub först. Finns det ingen som matchar? Starta en ny.",
+ "Report a bug": "Rapportera en bugg",
+ "There are two ways you can provide feedback and help us improve %(brand)s.": "Det finns två sätt du kan ge återkoppling och hjälpa oss att förbättra %(brand)s.",
+ "Comment": "Kommentera",
+ "Add comment": "Lägg till kommentar",
+ "Please go into as much detail as you like, so we can track down the problem.": "Vänligen gå in i hur mycket detalj du vill, så att vi kan hitta problemet.",
+ "Tell us below how you feel about %(brand)s so far.": "Berätta för oss vad du tycker om %(brand)s än så länge.",
+ "Rate %(brand)s": "Betygsätt %(brand)s",
+ "Feedback sent": "Återkoppling skickad"
}
diff --git a/src/i18n/strings/tzm.json b/src/i18n/strings/tzm.json
new file mode 100644
index 0000000000..8363c2d7c6
--- /dev/null
+++ b/src/i18n/strings/tzm.json
@@ -0,0 +1,38 @@
+{
+ "%(senderDisplayName)s sent an image.": "yuzen %(senderDisplayName)s yat twelaft.",
+ "Other": "Yaḍn",
+ "Actions": "Tugawin",
+ "Messages": "Tuzinin",
+ "Cancel": "Sser",
+ "Create Account": "Ssenflul amiḍan",
+ "Sign In": "Kcem",
+ "Name or Matrix ID": "Isem neɣ ID Matrix",
+ "Dec": "Duj",
+ "Nov": "Nuw",
+ "Oct": "Kṭu",
+ "Sep": "Cut",
+ "Aug": "Ɣuc",
+ "Jul": "Yul",
+ "Jun": "Yun",
+ "May": "May",
+ "Apr": "Ibr",
+ "Mar": "Maṛ",
+ "Sat": "Asḍ",
+ "Fri": "Asm",
+ "Thu": "Akw",
+ "Wed": "Akṛ",
+ "Tue": "Asn",
+ "Mon": "Ayn",
+ "Sun": "Asa",
+ "You are already in a call.": "tsuld Tellid g uɣuri.",
+ "OK": "WAX",
+ "Call Declined": "Aɣuri issern",
+ "Dismiss": "Nexxel",
+ "Error": "Tazgelt",
+ "e.g. ": "a.m. ",
+ "Every page you use in the app": "Akk tasna tssemrsed g tsensi",
+ "e.g. %(exampleValue)s": "a.m. %(exampleValue)s",
+ "The version of %(brand)s": "Taleqqemt n %(brand)s",
+ "Add Phone Number": "Rnu uṭṭun n utilifun",
+ "Add Email Address": "Rnu tasna imayl"
+}
diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json
index 0ae9b7edb0..f1af2f3719 100644
--- a/src/i18n/strings/zh_Hant.json
+++ b/src/i18n/strings/zh_Hant.json
@@ -1231,7 +1231,7 @@
"Power level": "權力等級",
"Want more than a community? Get your own server": "想要的不只是社群?架設您自己的伺服器",
"Please install Chrome, Firefox, or Safari for the best experience.": "請安裝 Chrome、Firefox 或 Safari 以取得最佳體驗。",
- "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.": "警告:升級聊天室不會自動將聊天室成員遷移到新版的聊天室。我們會在舊版聊天室中貼出到新聊天室的連結,聊天室成員必須點選此連結以加入新聊天室。",
"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.": "您無法在此聊天室中修改小工具。",
@@ -2541,5 +2541,29 @@
"(connection failed)": "(連線失敗)",
"The call could not be established": "無法建立通話",
"The other party declined the call.": "對方拒絕了電話。",
- "Call Declined": "通話已拒絕"
+ "Call Declined": "通話已拒絕",
+ "Move right": "向右移動",
+ "Move left": "向左移動",
+ "Revoke permissions": "撤銷權限",
+ "Unpin a widget to view it in this panel": "取消釘選小工具以在此面板檢視",
+ "You can only pin up to %(count)s widgets|other": "您最多只能釘選 %(count)s 個小工具",
+ "Show Widgets": "顯示小工具",
+ "Hide Widgets": "隱藏小工具",
+ "The call was answered on another device.": "通話已在其他裝置上回應。",
+ "Answered Elsewhere": "在其他地方回答",
+ "Data on this screen is shared with %(widgetDomain)s": "在此畫面上的資料會與 %(widgetDomain)s 分享",
+ "Modal Widget": "程式小工具",
+ "Send feedback": "傳送回饋",
+ "PRO TIP: If you start a bug, please submit debug logs to help us track down the problem.": "專業建議:如果您開始了一個新臭蟲,請遞交除錯紀錄檔以協助我們尋找問題。",
+ "Please view existing bugs on Github first. No match? Start a new one.": "請先檢視 GitHub 上既有的臭蟲。沒有符合的嗎?開始新的。",
+ "Report a bug": "回報臭蟲",
+ "There are two ways you can provide feedback and help us improve %(brand)s.": "您有兩種方式可以提供回饋並協助我們改善 %(brand)s。",
+ "Comment": "評論",
+ "Add comment": "新增評論",
+ "Please go into as much detail as you like, so we can track down the problem.": "請盡可能地描述問題,讓握們可以找出問題所在。",
+ "Tell us below how you feel about %(brand)s so far.": "請在下面告訴我們您到目前為止對 %(brand)s 的看法。",
+ "Rate %(brand)s": "評價 %(brand)s",
+ "Feedback sent": "已傳送回饋",
+ "%(senderName)s ended the call": "%(senderName)s 結束了通話",
+ "You ended the call": "您結束了通話"
}
diff --git a/src/phonenumber.ts b/src/phonenumber.ts
index 6dd44a3c12..ea008cf2f0 100644
--- a/src/phonenumber.ts
+++ b/src/phonenumber.ts
@@ -14,6 +14,8 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
+import { _td } from './languageHandler';
+
const PHONE_NUMBER_REGEXP = /^[0-9 -.]+$/;
/*
@@ -43,1247 +45,1247 @@ export const getEmojiFlag = (countryCode: string) => {
export const COUNTRIES = [
{
"iso2": "GB",
- "name": "United Kingdom",
+ "name": _td("United Kingdom"),
"prefix": "44",
},
{
"iso2": "US",
- "name": "United States",
+ "name": _td("United States"),
"prefix": "1",
},
{
"iso2": "AF",
- "name": "Afghanistan",
+ "name": _td("Afghanistan"),
"prefix": "93",
},
{
"iso2": "AX",
- "name": "\u00c5land Islands",
+ "name": _td("\u00c5land Islands"),
"prefix": "358",
},
{
"iso2": "AL",
- "name": "Albania",
+ "name": _td("Albania"),
"prefix": "355",
},
{
"iso2": "DZ",
- "name": "Algeria",
+ "name": _td("Algeria"),
"prefix": "213",
},
{
"iso2": "AS",
- "name": "American Samoa",
+ "name": _td("American Samoa"),
"prefix": "1",
},
{
"iso2": "AD",
- "name": "Andorra",
+ "name": _td("Andorra"),
"prefix": "376",
},
{
"iso2": "AO",
- "name": "Angola",
+ "name": _td("Angola"),
"prefix": "244",
},
{
"iso2": "AI",
- "name": "Anguilla",
+ "name": _td("Anguilla"),
"prefix": "1",
},
{
"iso2": "AQ",
- "name": "Antarctica",
+ "name": _td("Antarctica"),
"prefix": "672",
},
{
"iso2": "AG",
- "name": "Antigua & Barbuda",
+ "name": _td("Antigua & Barbuda"),
"prefix": "1",
},
{
"iso2": "AR",
- "name": "Argentina",
+ "name": _td("Argentina"),
"prefix": "54",
},
{
"iso2": "AM",
- "name": "Armenia",
+ "name": _td("Armenia"),
"prefix": "374",
},
{
"iso2": "AW",
- "name": "Aruba",
+ "name": _td("Aruba"),
"prefix": "297",
},
{
"iso2": "AU",
- "name": "Australia",
+ "name": _td("Australia"),
"prefix": "61",
},
{
"iso2": "AT",
- "name": "Austria",
+ "name": _td("Austria"),
"prefix": "43",
},
{
"iso2": "AZ",
- "name": "Azerbaijan",
+ "name": _td("Azerbaijan"),
"prefix": "994",
},
{
"iso2": "BS",
- "name": "Bahamas",
+ "name": _td("Bahamas"),
"prefix": "1",
},
{
"iso2": "BH",
- "name": "Bahrain",
+ "name": _td("Bahrain"),
"prefix": "973",
},
{
"iso2": "BD",
- "name": "Bangladesh",
+ "name": _td("Bangladesh"),
"prefix": "880",
},
{
"iso2": "BB",
- "name": "Barbados",
+ "name": _td("Barbados"),
"prefix": "1",
},
{
"iso2": "BY",
- "name": "Belarus",
+ "name": _td("Belarus"),
"prefix": "375",
},
{
"iso2": "BE",
- "name": "Belgium",
+ "name": _td("Belgium"),
"prefix": "32",
},
{
"iso2": "BZ",
- "name": "Belize",
+ "name": _td("Belize"),
"prefix": "501",
},
{
"iso2": "BJ",
- "name": "Benin",
+ "name": _td("Benin"),
"prefix": "229",
},
{
"iso2": "BM",
- "name": "Bermuda",
+ "name": _td("Bermuda"),
"prefix": "1",
},
{
"iso2": "BT",
- "name": "Bhutan",
+ "name": _td("Bhutan"),
"prefix": "975",
},
{
"iso2": "BO",
- "name": "Bolivia",
+ "name": _td("Bolivia"),
"prefix": "591",
},
{
"iso2": "BA",
- "name": "Bosnia",
+ "name": _td("Bosnia"),
"prefix": "387",
},
{
"iso2": "BW",
- "name": "Botswana",
+ "name": _td("Botswana"),
"prefix": "267",
},
{
"iso2": "BV",
- "name": "Bouvet Island",
+ "name": _td("Bouvet Island"),
"prefix": "47",
},
{
"iso2": "BR",
- "name": "Brazil",
+ "name": _td("Brazil"),
"prefix": "55",
},
{
"iso2": "IO",
- "name": "British Indian Ocean Territory",
+ "name": _td("British Indian Ocean Territory"),
"prefix": "246",
},
{
"iso2": "VG",
- "name": "British Virgin Islands",
+ "name": _td("British Virgin Islands"),
"prefix": "1",
},
{
"iso2": "BN",
- "name": "Brunei",
+ "name": _td("Brunei"),
"prefix": "673",
},
{
"iso2": "BG",
- "name": "Bulgaria",
+ "name": _td("Bulgaria"),
"prefix": "359",
},
{
"iso2": "BF",
- "name": "Burkina Faso",
+ "name": _td("Burkina Faso"),
"prefix": "226",
},
{
"iso2": "BI",
- "name": "Burundi",
+ "name": _td("Burundi"),
"prefix": "257",
},
{
"iso2": "KH",
- "name": "Cambodia",
+ "name": _td("Cambodia"),
"prefix": "855",
},
{
"iso2": "CM",
- "name": "Cameroon",
+ "name": _td("Cameroon"),
"prefix": "237",
},
{
"iso2": "CA",
- "name": "Canada",
+ "name": _td("Canada"),
"prefix": "1",
},
{
"iso2": "CV",
- "name": "Cape Verde",
+ "name": _td("Cape Verde"),
"prefix": "238",
},
{
"iso2": "BQ",
- "name": "Caribbean Netherlands",
+ "name": _td("Caribbean Netherlands"),
"prefix": "599",
},
{
"iso2": "KY",
- "name": "Cayman Islands",
+ "name": _td("Cayman Islands"),
"prefix": "1",
},
{
"iso2": "CF",
- "name": "Central African Republic",
+ "name": _td("Central African Republic"),
"prefix": "236",
},
{
"iso2": "TD",
- "name": "Chad",
+ "name": _td("Chad"),
"prefix": "235",
},
{
"iso2": "CL",
- "name": "Chile",
+ "name": _td("Chile"),
"prefix": "56",
},
{
"iso2": "CN",
- "name": "China",
+ "name": _td("China"),
"prefix": "86",
},
{
"iso2": "CX",
- "name": "Christmas Island",
+ "name": _td("Christmas Island"),
"prefix": "61",
},
{
"iso2": "CC",
- "name": "Cocos (Keeling) Islands",
+ "name": _td("Cocos (Keeling) Islands"),
"prefix": "61",
},
{
"iso2": "CO",
- "name": "Colombia",
+ "name": _td("Colombia"),
"prefix": "57",
},
{
"iso2": "KM",
- "name": "Comoros",
+ "name": _td("Comoros"),
"prefix": "269",
},
{
"iso2": "CG",
- "name": "Congo - Brazzaville",
+ "name": _td("Congo - Brazzaville"),
"prefix": "242",
},
{
"iso2": "CD",
- "name": "Congo - Kinshasa",
+ "name": _td("Congo - Kinshasa"),
"prefix": "243",
},
{
"iso2": "CK",
- "name": "Cook Islands",
+ "name": _td("Cook Islands"),
"prefix": "682",
},
{
"iso2": "CR",
- "name": "Costa Rica",
+ "name": _td("Costa Rica"),
"prefix": "506",
},
{
"iso2": "HR",
- "name": "Croatia",
+ "name": _td("Croatia"),
"prefix": "385",
},
{
"iso2": "CU",
- "name": "Cuba",
+ "name": _td("Cuba"),
"prefix": "53",
},
{
"iso2": "CW",
- "name": "Cura\u00e7ao",
+ "name": _td("Cura\u00e7ao"),
"prefix": "599",
},
{
"iso2": "CY",
- "name": "Cyprus",
+ "name": _td("Cyprus"),
"prefix": "357",
},
{
"iso2": "CZ",
- "name": "Czech Republic",
+ "name": _td("Czech Republic"),
"prefix": "420",
},
{
"iso2": "CI",
- "name": "C\u00f4te d\u2019Ivoire",
+ "name": _td("C\u00f4te d\u2019Ivoire"),
"prefix": "225",
},
{
"iso2": "DK",
- "name": "Denmark",
+ "name": _td("Denmark"),
"prefix": "45",
},
{
"iso2": "DJ",
- "name": "Djibouti",
+ "name": _td("Djibouti"),
"prefix": "253",
},
{
"iso2": "DM",
- "name": "Dominica",
+ "name": _td("Dominica"),
"prefix": "1",
},
{
"iso2": "DO",
- "name": "Dominican Republic",
+ "name": _td("Dominican Republic"),
"prefix": "1",
},
{
"iso2": "EC",
- "name": "Ecuador",
+ "name": _td("Ecuador"),
"prefix": "593",
},
{
"iso2": "EG",
- "name": "Egypt",
+ "name": _td("Egypt"),
"prefix": "20",
},
{
"iso2": "SV",
- "name": "El Salvador",
+ "name": _td("El Salvador"),
"prefix": "503",
},
{
"iso2": "GQ",
- "name": "Equatorial Guinea",
+ "name": _td("Equatorial Guinea"),
"prefix": "240",
},
{
"iso2": "ER",
- "name": "Eritrea",
+ "name": _td("Eritrea"),
"prefix": "291",
},
{
"iso2": "EE",
- "name": "Estonia",
+ "name": _td("Estonia"),
"prefix": "372",
},
{
"iso2": "ET",
- "name": "Ethiopia",
+ "name": _td("Ethiopia"),
"prefix": "251",
},
{
"iso2": "FK",
- "name": "Falkland Islands",
+ "name": _td("Falkland Islands"),
"prefix": "500",
},
{
"iso2": "FO",
- "name": "Faroe Islands",
+ "name": _td("Faroe Islands"),
"prefix": "298",
},
{
"iso2": "FJ",
- "name": "Fiji",
+ "name": _td("Fiji"),
"prefix": "679",
},
{
"iso2": "FI",
- "name": "Finland",
+ "name": _td("Finland"),
"prefix": "358",
},
{
"iso2": "FR",
- "name": "France",
+ "name": _td("France"),
"prefix": "33",
},
{
"iso2": "GF",
- "name": "French Guiana",
+ "name": _td("French Guiana"),
"prefix": "594",
},
{
"iso2": "PF",
- "name": "French Polynesia",
+ "name": _td("French Polynesia"),
"prefix": "689",
},
{
"iso2": "TF",
- "name": "French Southern Territories",
+ "name": _td("French Southern Territories"),
"prefix": "262",
},
{
"iso2": "GA",
- "name": "Gabon",
+ "name": _td("Gabon"),
"prefix": "241",
},
{
"iso2": "GM",
- "name": "Gambia",
+ "name": _td("Gambia"),
"prefix": "220",
},
{
"iso2": "GE",
- "name": "Georgia",
+ "name": _td("Georgia"),
"prefix": "995",
},
{
"iso2": "DE",
- "name": "Germany",
+ "name": _td("Germany"),
"prefix": "49",
},
{
"iso2": "GH",
- "name": "Ghana",
+ "name": _td("Ghana"),
"prefix": "233",
},
{
"iso2": "GI",
- "name": "Gibraltar",
+ "name": _td("Gibraltar"),
"prefix": "350",
},
{
"iso2": "GR",
- "name": "Greece",
+ "name": _td("Greece"),
"prefix": "30",
},
{
"iso2": "GL",
- "name": "Greenland",
+ "name": _td("Greenland"),
"prefix": "299",
},
{
"iso2": "GD",
- "name": "Grenada",
+ "name": _td("Grenada"),
"prefix": "1",
},
{
"iso2": "GP",
- "name": "Guadeloupe",
+ "name": _td("Guadeloupe"),
"prefix": "590",
},
{
"iso2": "GU",
- "name": "Guam",
+ "name": _td("Guam"),
"prefix": "1",
},
{
"iso2": "GT",
- "name": "Guatemala",
+ "name": _td("Guatemala"),
"prefix": "502",
},
{
"iso2": "GG",
- "name": "Guernsey",
+ "name": _td("Guernsey"),
"prefix": "44",
},
{
"iso2": "GN",
- "name": "Guinea",
+ "name": _td("Guinea"),
"prefix": "224",
},
{
"iso2": "GW",
- "name": "Guinea-Bissau",
+ "name": _td("Guinea-Bissau"),
"prefix": "245",
},
{
"iso2": "GY",
- "name": "Guyana",
+ "name": _td("Guyana"),
"prefix": "592",
},
{
"iso2": "HT",
- "name": "Haiti",
+ "name": _td("Haiti"),
"prefix": "509",
},
{
"iso2": "HM",
- "name": "Heard & McDonald Islands",
+ "name": _td("Heard & McDonald Islands"),
"prefix": "672",
},
{
"iso2": "HN",
- "name": "Honduras",
+ "name": _td("Honduras"),
"prefix": "504",
},
{
"iso2": "HK",
- "name": "Hong Kong",
+ "name": _td("Hong Kong"),
"prefix": "852",
},
{
"iso2": "HU",
- "name": "Hungary",
+ "name": _td("Hungary"),
"prefix": "36",
},
{
"iso2": "IS",
- "name": "Iceland",
+ "name": _td("Iceland"),
"prefix": "354",
},
{
"iso2": "IN",
- "name": "India",
+ "name": _td("India"),
"prefix": "91",
},
{
"iso2": "ID",
- "name": "Indonesia",
+ "name": _td("Indonesia"),
"prefix": "62",
},
{
"iso2": "IR",
- "name": "Iran",
+ "name": _td("Iran"),
"prefix": "98",
},
{
"iso2": "IQ",
- "name": "Iraq",
+ "name": _td("Iraq"),
"prefix": "964",
},
{
"iso2": "IE",
- "name": "Ireland",
+ "name": _td("Ireland"),
"prefix": "353",
},
{
"iso2": "IM",
- "name": "Isle of Man",
+ "name": _td("Isle of Man"),
"prefix": "44",
},
{
"iso2": "IL",
- "name": "Israel",
+ "name": _td("Israel"),
"prefix": "972",
},
{
"iso2": "IT",
- "name": "Italy",
+ "name": _td("Italy"),
"prefix": "39",
},
{
"iso2": "JM",
- "name": "Jamaica",
+ "name": _td("Jamaica"),
"prefix": "1",
},
{
"iso2": "JP",
- "name": "Japan",
+ "name": _td("Japan"),
"prefix": "81",
},
{
"iso2": "JE",
- "name": "Jersey",
+ "name": _td("Jersey"),
"prefix": "44",
},
{
"iso2": "JO",
- "name": "Jordan",
+ "name": _td("Jordan"),
"prefix": "962",
},
{
"iso2": "KZ",
- "name": "Kazakhstan",
+ "name": _td("Kazakhstan"),
"prefix": "7",
},
{
"iso2": "KE",
- "name": "Kenya",
+ "name": _td("Kenya"),
"prefix": "254",
},
{
"iso2": "KI",
- "name": "Kiribati",
+ "name": _td("Kiribati"),
"prefix": "686",
},
{
"iso2": "XK",
- "name": "Kosovo",
+ "name": _td("Kosovo"),
"prefix": "383",
},
{
"iso2": "KW",
- "name": "Kuwait",
+ "name": _td("Kuwait"),
"prefix": "965",
},
{
"iso2": "KG",
- "name": "Kyrgyzstan",
+ "name": _td("Kyrgyzstan"),
"prefix": "996",
},
{
"iso2": "LA",
- "name": "Laos",
+ "name": _td("Laos"),
"prefix": "856",
},
{
"iso2": "LV",
- "name": "Latvia",
+ "name": _td("Latvia"),
"prefix": "371",
},
{
"iso2": "LB",
- "name": "Lebanon",
+ "name": _td("Lebanon"),
"prefix": "961",
},
{
"iso2": "LS",
- "name": "Lesotho",
+ "name": _td("Lesotho"),
"prefix": "266",
},
{
"iso2": "LR",
- "name": "Liberia",
+ "name": _td("Liberia"),
"prefix": "231",
},
{
"iso2": "LY",
- "name": "Libya",
+ "name": _td("Libya"),
"prefix": "218",
},
{
"iso2": "LI",
- "name": "Liechtenstein",
+ "name": _td("Liechtenstein"),
"prefix": "423",
},
{
"iso2": "LT",
- "name": "Lithuania",
+ "name": _td("Lithuania"),
"prefix": "370",
},
{
"iso2": "LU",
- "name": "Luxembourg",
+ "name": _td("Luxembourg"),
"prefix": "352",
},
{
"iso2": "MO",
- "name": "Macau",
+ "name": _td("Macau"),
"prefix": "853",
},
{
"iso2": "MK",
- "name": "Macedonia",
+ "name": _td("Macedonia"),
"prefix": "389",
},
{
"iso2": "MG",
- "name": "Madagascar",
+ "name": _td("Madagascar"),
"prefix": "261",
},
{
"iso2": "MW",
- "name": "Malawi",
+ "name": _td("Malawi"),
"prefix": "265",
},
{
"iso2": "MY",
- "name": "Malaysia",
+ "name": _td("Malaysia"),
"prefix": "60",
},
{
"iso2": "MV",
- "name": "Maldives",
+ "name": _td("Maldives"),
"prefix": "960",
},
{
"iso2": "ML",
- "name": "Mali",
+ "name": _td("Mali"),
"prefix": "223",
},
{
"iso2": "MT",
- "name": "Malta",
+ "name": _td("Malta"),
"prefix": "356",
},
{
"iso2": "MH",
- "name": "Marshall Islands",
+ "name": _td("Marshall Islands"),
"prefix": "692",
},
{
"iso2": "MQ",
- "name": "Martinique",
+ "name": _td("Martinique"),
"prefix": "596",
},
{
"iso2": "MR",
- "name": "Mauritania",
+ "name": _td("Mauritania"),
"prefix": "222",
},
{
"iso2": "MU",
- "name": "Mauritius",
+ "name": _td("Mauritius"),
"prefix": "230",
},
{
"iso2": "YT",
- "name": "Mayotte",
+ "name": _td("Mayotte"),
"prefix": "262",
},
{
"iso2": "MX",
- "name": "Mexico",
+ "name": _td("Mexico"),
"prefix": "52",
},
{
"iso2": "FM",
- "name": "Micronesia",
+ "name": _td("Micronesia"),
"prefix": "691",
},
{
"iso2": "MD",
- "name": "Moldova",
+ "name": _td("Moldova"),
"prefix": "373",
},
{
"iso2": "MC",
- "name": "Monaco",
+ "name": _td("Monaco"),
"prefix": "377",
},
{
"iso2": "MN",
- "name": "Mongolia",
+ "name": _td("Mongolia"),
"prefix": "976",
},
{
"iso2": "ME",
- "name": "Montenegro",
+ "name": _td("Montenegro"),
"prefix": "382",
},
{
"iso2": "MS",
- "name": "Montserrat",
+ "name": _td("Montserrat"),
"prefix": "1",
},
{
"iso2": "MA",
- "name": "Morocco",
+ "name": _td("Morocco"),
"prefix": "212",
},
{
"iso2": "MZ",
- "name": "Mozambique",
+ "name": _td("Mozambique"),
"prefix": "258",
},
{
"iso2": "MM",
- "name": "Myanmar",
+ "name": _td("Myanmar"),
"prefix": "95",
},
{
"iso2": "NA",
- "name": "Namibia",
+ "name": _td("Namibia"),
"prefix": "264",
},
{
"iso2": "NR",
- "name": "Nauru",
+ "name": _td("Nauru"),
"prefix": "674",
},
{
"iso2": "NP",
- "name": "Nepal",
+ "name": _td("Nepal"),
"prefix": "977",
},
{
"iso2": "NL",
- "name": "Netherlands",
+ "name": _td("Netherlands"),
"prefix": "31",
},
{
"iso2": "NC",
- "name": "New Caledonia",
+ "name": _td("New Caledonia"),
"prefix": "687",
},
{
"iso2": "NZ",
- "name": "New Zealand",
+ "name": _td("New Zealand"),
"prefix": "64",
},
{
"iso2": "NI",
- "name": "Nicaragua",
+ "name": _td("Nicaragua"),
"prefix": "505",
},
{
"iso2": "NE",
- "name": "Niger",
+ "name": _td("Niger"),
"prefix": "227",
},
{
"iso2": "NG",
- "name": "Nigeria",
+ "name": _td("Nigeria"),
"prefix": "234",
},
{
"iso2": "NU",
- "name": "Niue",
+ "name": _td("Niue"),
"prefix": "683",
},
{
"iso2": "NF",
- "name": "Norfolk Island",
+ "name": _td("Norfolk Island"),
"prefix": "672",
},
{
"iso2": "KP",
- "name": "North Korea",
+ "name": _td("North Korea"),
"prefix": "850",
},
{
"iso2": "MP",
- "name": "Northern Mariana Islands",
+ "name": _td("Northern Mariana Islands"),
"prefix": "1",
},
{
"iso2": "NO",
- "name": "Norway",
+ "name": _td("Norway"),
"prefix": "47",
},
{
"iso2": "OM",
- "name": "Oman",
+ "name": _td("Oman"),
"prefix": "968",
},
{
"iso2": "PK",
- "name": "Pakistan",
+ "name": _td("Pakistan"),
"prefix": "92",
},
{
"iso2": "PW",
- "name": "Palau",
+ "name": _td("Palau"),
"prefix": "680",
},
{
"iso2": "PS",
- "name": "Palestine",
+ "name": _td("Palestine"),
"prefix": "970",
},
{
"iso2": "PA",
- "name": "Panama",
+ "name": _td("Panama"),
"prefix": "507",
},
{
"iso2": "PG",
- "name": "Papua New Guinea",
+ "name": _td("Papua New Guinea"),
"prefix": "675",
},
{
"iso2": "PY",
- "name": "Paraguay",
+ "name": _td("Paraguay"),
"prefix": "595",
},
{
"iso2": "PE",
- "name": "Peru",
+ "name": _td("Peru"),
"prefix": "51",
},
{
"iso2": "PH",
- "name": "Philippines",
+ "name": _td("Philippines"),
"prefix": "63",
},
{
"iso2": "PN",
- "name": "Pitcairn Islands",
+ "name": _td("Pitcairn Islands"),
"prefix": "870",
},
{
"iso2": "PL",
- "name": "Poland",
+ "name": _td("Poland"),
"prefix": "48",
},
{
"iso2": "PT",
- "name": "Portugal",
+ "name": _td("Portugal"),
"prefix": "351",
},
{
"iso2": "PR",
- "name": "Puerto Rico",
+ "name": _td("Puerto Rico"),
"prefix": "1",
},
{
"iso2": "QA",
- "name": "Qatar",
+ "name": _td("Qatar"),
"prefix": "974",
},
{
"iso2": "RO",
- "name": "Romania",
+ "name": _td("Romania"),
"prefix": "40",
},
{
"iso2": "RU",
- "name": "Russia",
+ "name": _td("Russia"),
"prefix": "7",
},
{
"iso2": "RW",
- "name": "Rwanda",
+ "name": _td("Rwanda"),
"prefix": "250",
},
{
"iso2": "RE",
- "name": "R\u00e9union",
+ "name": _td("R\u00e9union"),
"prefix": "262",
},
{
"iso2": "WS",
- "name": "Samoa",
+ "name": _td("Samoa"),
"prefix": "685",
},
{
"iso2": "SM",
- "name": "San Marino",
+ "name": _td("San Marino"),
"prefix": "378",
},
{
"iso2": "SA",
- "name": "Saudi Arabia",
+ "name": _td("Saudi Arabia"),
"prefix": "966",
},
{
"iso2": "SN",
- "name": "Senegal",
+ "name": _td("Senegal"),
"prefix": "221",
},
{
"iso2": "RS",
- "name": "Serbia",
+ "name": _td("Serbia"),
"prefix": "381 p",
},
{
"iso2": "SC",
- "name": "Seychelles",
+ "name": _td("Seychelles"),
"prefix": "248",
},
{
"iso2": "SL",
- "name": "Sierra Leone",
+ "name": _td("Sierra Leone"),
"prefix": "232",
},
{
"iso2": "SG",
- "name": "Singapore",
+ "name": _td("Singapore"),
"prefix": "65",
},
{
"iso2": "SX",
- "name": "Sint Maarten",
+ "name": _td("Sint Maarten"),
"prefix": "1",
},
{
"iso2": "SK",
- "name": "Slovakia",
+ "name": _td("Slovakia"),
"prefix": "421",
},
{
"iso2": "SI",
- "name": "Slovenia",
+ "name": _td("Slovenia"),
"prefix": "386",
},
{
"iso2": "SB",
- "name": "Solomon Islands",
+ "name": _td("Solomon Islands"),
"prefix": "677",
},
{
"iso2": "SO",
- "name": "Somalia",
+ "name": _td("Somalia"),
"prefix": "252",
},
{
"iso2": "ZA",
- "name": "South Africa",
+ "name": _td("South Africa"),
"prefix": "27",
},
{
"iso2": "GS",
- "name": "South Georgia & South Sandwich Islands",
+ "name": _td("South Georgia & South Sandwich Islands"),
"prefix": "500",
},
{
"iso2": "KR",
- "name": "South Korea",
+ "name": _td("South Korea"),
"prefix": "82",
},
{
"iso2": "SS",
- "name": "South Sudan",
+ "name": _td("South Sudan"),
"prefix": "211",
},
{
"iso2": "ES",
- "name": "Spain",
+ "name": _td("Spain"),
"prefix": "34",
},
{
"iso2": "LK",
- "name": "Sri Lanka",
+ "name": _td("Sri Lanka"),
"prefix": "94",
},
{
"iso2": "BL",
- "name": "St. Barth\u00e9lemy",
+ "name": _td("St. Barth\u00e9lemy"),
"prefix": "590",
},
{
"iso2": "SH",
- "name": "St. Helena",
+ "name": _td("St. Helena"),
"prefix": "290 n",
},
{
"iso2": "KN",
- "name": "St. Kitts & Nevis",
+ "name": _td("St. Kitts & Nevis"),
"prefix": "1",
},
{
"iso2": "LC",
- "name": "St. Lucia",
+ "name": _td("St. Lucia"),
"prefix": "1",
},
{
"iso2": "MF",
- "name": "St. Martin",
+ "name": _td("St. Martin"),
"prefix": "590",
},
{
"iso2": "PM",
- "name": "St. Pierre & Miquelon",
+ "name": _td("St. Pierre & Miquelon"),
"prefix": "508",
},
{
"iso2": "VC",
- "name": "St. Vincent & Grenadines",
+ "name": _td("St. Vincent & Grenadines"),
"prefix": "1",
},
{
"iso2": "SD",
- "name": "Sudan",
+ "name": _td("Sudan"),
"prefix": "249",
},
{
"iso2": "SR",
- "name": "Suriname",
+ "name": _td("Suriname"),
"prefix": "597",
},
{
"iso2": "SJ",
- "name": "Svalbard & Jan Mayen",
+ "name": _td("Svalbard & Jan Mayen"),
"prefix": "47",
},
{
"iso2": "SZ",
- "name": "Swaziland",
+ "name": _td("Swaziland"),
"prefix": "268",
},
{
"iso2": "SE",
- "name": "Sweden",
+ "name": _td("Sweden"),
"prefix": "46",
},
{
"iso2": "CH",
- "name": "Switzerland",
+ "name": _td("Switzerland"),
"prefix": "41",
},
{
"iso2": "SY",
- "name": "Syria",
+ "name": _td("Syria"),
"prefix": "963",
},
{
"iso2": "ST",
- "name": "S\u00e3o Tom\u00e9 & Pr\u00edncipe",
+ "name": _td("S\u00e3o Tom\u00e9 & Pr\u00edncipe"),
"prefix": "239",
},
{
"iso2": "TW",
- "name": "Taiwan",
+ "name": _td("Taiwan"),
"prefix": "886",
},
{
"iso2": "TJ",
- "name": "Tajikistan",
+ "name": _td("Tajikistan"),
"prefix": "992",
},
{
"iso2": "TZ",
- "name": "Tanzania",
+ "name": _td("Tanzania"),
"prefix": "255",
},
{
"iso2": "TH",
- "name": "Thailand",
+ "name": _td("Thailand"),
"prefix": "66",
},
{
"iso2": "TL",
- "name": "Timor-Leste",
+ "name": _td("Timor-Leste"),
"prefix": "670",
},
{
"iso2": "TG",
- "name": "Togo",
+ "name": _td("Togo"),
"prefix": "228",
},
{
"iso2": "TK",
- "name": "Tokelau",
+ "name": _td("Tokelau"),
"prefix": "690",
},
{
"iso2": "TO",
- "name": "Tonga",
+ "name": _td("Tonga"),
"prefix": "676",
},
{
"iso2": "TT",
- "name": "Trinidad & Tobago",
+ "name": _td("Trinidad & Tobago"),
"prefix": "1",
},
{
"iso2": "TN",
- "name": "Tunisia",
+ "name": _td("Tunisia"),
"prefix": "216",
},
{
"iso2": "TR",
- "name": "Turkey",
+ "name": _td("Turkey"),
"prefix": "90",
},
{
"iso2": "TM",
- "name": "Turkmenistan",
+ "name": _td("Turkmenistan"),
"prefix": "993",
},
{
"iso2": "TC",
- "name": "Turks & Caicos Islands",
+ "name": _td("Turks & Caicos Islands"),
"prefix": "1",
},
{
"iso2": "TV",
- "name": "Tuvalu",
+ "name": _td("Tuvalu"),
"prefix": "688",
},
{
"iso2": "VI",
- "name": "U.S. Virgin Islands",
+ "name": _td("U.S. Virgin Islands"),
"prefix": "1",
},
{
"iso2": "UG",
- "name": "Uganda",
+ "name": _td("Uganda"),
"prefix": "256",
},
{
"iso2": "UA",
- "name": "Ukraine",
+ "name": _td("Ukraine"),
"prefix": "380",
},
{
"iso2": "AE",
- "name": "United Arab Emirates",
+ "name": _td("United Arab Emirates"),
"prefix": "971",
},
{
"iso2": "UY",
- "name": "Uruguay",
+ "name": _td("Uruguay"),
"prefix": "598",
},
{
"iso2": "UZ",
- "name": "Uzbekistan",
+ "name": _td("Uzbekistan"),
"prefix": "998",
},
{
"iso2": "VU",
- "name": "Vanuatu",
+ "name": _td("Vanuatu"),
"prefix": "678",
},
{
"iso2": "VA",
- "name": "Vatican City",
+ "name": _td("Vatican City"),
"prefix": "39",
},
{
"iso2": "VE",
- "name": "Venezuela",
+ "name": _td("Venezuela"),
"prefix": "58",
},
{
"iso2": "VN",
- "name": "Vietnam",
+ "name": _td("Vietnam"),
"prefix": "84",
},
{
"iso2": "WF",
- "name": "Wallis & Futuna",
+ "name": _td("Wallis & Futuna"),
"prefix": "681",
},
{
"iso2": "EH",
- "name": "Western Sahara",
+ "name": _td("Western Sahara"),
"prefix": "212",
},
{
"iso2": "YE",
- "name": "Yemen",
+ "name": _td("Yemen"),
"prefix": "967",
},
{
"iso2": "ZM",
- "name": "Zambia",
+ "name": _td("Zambia"),
"prefix": "260",
},
{
"iso2": "ZW",
- "name": "Zimbabwe",
+ "name": _td("Zimbabwe"),
"prefix": "263",
},
];
diff --git a/src/stores/room-list/previews/CallHangupEvent.ts b/src/stores/room-list/previews/CallHangupEvent.ts
index adc7d1aac8..fdab8a9de5 100644
--- a/src/stores/room-list/previews/CallHangupEvent.ts
+++ b/src/stores/room-list/previews/CallHangupEvent.ts
@@ -24,9 +24,9 @@ export class CallHangupEvent implements IPreview {
public getTextFor(event: MatrixEvent, tagId?: TagID): string {
if (shouldPrefixMessagesIn(event.getRoomId(), tagId)) {
if (isSelf(event)) {
- return _t("You left the call");
+ return _t("You ended the call");
} else {
- return _t("%(senderName)s left the call", {senderName: getSenderName(event)});
+ return _t("%(senderName)s ended the call", {senderName: getSenderName(event)});
}
} else {
return _t("Call ended");
diff --git a/src/toasts/DesktopNotificationsToast.ts b/src/toasts/DesktopNotificationsToast.ts
index d8aa7647a3..e10a6d46c6 100644
--- a/src/toasts/DesktopNotificationsToast.ts
+++ b/src/toasts/DesktopNotificationsToast.ts
@@ -29,15 +29,15 @@ const onReject = () => {
const TOAST_KEY = "desktopnotifications";
-export const showToast = () => {
+export const showToast = (fromMessageSend: boolean) => {
ToastStore.sharedInstance().addOrReplaceToast({
key: TOAST_KEY,
- title: _t("Notifications"),
+ title: fromMessageSend ? _t("Don't miss a reply") : _t("Notifications"),
props: {
- description: _t("You are not receiving desktop notifications"),
- acceptLabel: _t("Enable them now"),
+ description: _t("Enable desktop notifications"),
+ acceptLabel: _t("Enable"),
onAccept,
- rejectLabel: _t("Close"),
+ rejectLabel: _t("Dismiss"),
onReject,
},
component: GenericToast,
diff --git a/src/toasts/UpdateToast.tsx b/src/toasts/UpdateToast.tsx
index dfd06cf3a0..eb35c41512 100644
--- a/src/toasts/UpdateToast.tsx
+++ b/src/toasts/UpdateToast.tsx
@@ -74,18 +74,18 @@ export const showToast = (version: string, newVersion: string, releaseNotes?: st
};
} else {
onAccept = installUpdate;
- acceptLabel = _t("Restart");
+ acceptLabel = _t("Update");
}
const brand = SdkConfig.get().brand;
ToastStore.sharedInstance().addOrReplaceToast({
key: TOAST_KEY,
- title: _t("Upgrade your %(brand)s", { brand }),
+ title: _t("Update %(brand)s", { brand }),
props: {
- description: _t("A new version of %(brand)s is available!", { brand }),
+ description: _t("New version of %(brand)s is available", { brand }),
acceptLabel,
onAccept,
- rejectLabel: _t("Later"),
+ rejectLabel: _t("Dismiss"),
onReject,
},
component: GenericToast,
diff --git a/src/utils/permalinks/RiotPermalinkConstructor.js b/src/utils/permalinks/ElementPermalinkConstructor.js
similarity index 77%
rename from src/utils/permalinks/RiotPermalinkConstructor.js
rename to src/utils/permalinks/ElementPermalinkConstructor.js
index 176100aa8b..5ef0598ba1 100644
--- a/src/utils/permalinks/RiotPermalinkConstructor.js
+++ b/src/utils/permalinks/ElementPermalinkConstructor.js
@@ -19,32 +19,32 @@ import PermalinkConstructor, {PermalinkParts} from "./PermalinkConstructor";
/**
* Generates permalinks that self-reference the running webapp
*/
-export default class RiotPermalinkConstructor extends PermalinkConstructor {
- _riotUrl: string;
+export default class ElementPermalinkConstructor extends PermalinkConstructor {
+ _elementUrl: string;
- constructor(riotUrl: string) {
+ constructor(elementUrl: string) {
super();
- this._riotUrl = riotUrl;
+ this._elementUrl = elementUrl;
- if (!this._riotUrl.startsWith("http:") && !this._riotUrl.startsWith("https:")) {
- throw new Error("Riot prefix URL does not appear to be an HTTP(S) URL");
+ if (!this._elementUrl.startsWith("http:") && !this._elementUrl.startsWith("https:")) {
+ throw new Error("Element prefix URL does not appear to be an HTTP(S) URL");
}
}
forEvent(roomId: string, eventId: string, serverCandidates: string[]): string {
- return `${this._riotUrl}/#/room/${roomId}/${eventId}${this.encodeServerCandidates(serverCandidates)}`;
+ return `${this._elementUrl}/#/room/${roomId}/${eventId}${this.encodeServerCandidates(serverCandidates)}`;
}
forRoom(roomIdOrAlias: string, serverCandidates: string[]): string {
- return `${this._riotUrl}/#/room/${roomIdOrAlias}${this.encodeServerCandidates(serverCandidates)}`;
+ return `${this._elementUrl}/#/room/${roomIdOrAlias}${this.encodeServerCandidates(serverCandidates)}`;
}
forUser(userId: string): string {
- return `${this._riotUrl}/#/user/${userId}`;
+ return `${this._elementUrl}/#/user/${userId}`;
}
forGroup(groupId: string): string {
- return `${this._riotUrl}/#/group/${groupId}`;
+ return `${this._elementUrl}/#/group/${groupId}`;
}
forEntity(entityId: string): string {
@@ -58,7 +58,7 @@ export default class RiotPermalinkConstructor extends PermalinkConstructor {
}
isPermalinkHost(testHost: string): boolean {
- const parsedUrl = new URL(this._riotUrl);
+ const parsedUrl = new URL(this._elementUrl);
return testHost === (parsedUrl.host || parsedUrl.hostname); // one of the hosts should match
}
@@ -69,13 +69,13 @@ export default class RiotPermalinkConstructor extends PermalinkConstructor {
// Heavily inspired by/borrowed from the matrix-bot-sdk (with permission):
// https://github.com/turt2live/matrix-js-bot-sdk/blob/7c4665c9a25c2c8e0fe4e509f2616505b5b66a1c/src/Permalinks.ts#L33-L61
- // Adapted for Riot's URL format
+ // Adapted for Element's URL format
parsePermalink(fullUrl: string): PermalinkParts {
- if (!fullUrl || !fullUrl.startsWith(this._riotUrl)) {
+ if (!fullUrl || !fullUrl.startsWith(this._elementUrl)) {
throw new Error("Does not appear to be a permalink");
}
- const parts = fullUrl.substring(`${this._riotUrl}/#/`.length).split("/");
+ const parts = fullUrl.substring(`${this._elementUrl}/#/`.length).split("/");
if (parts.length < 2) { // we're expecting an entity and an ID of some kind at least
throw new Error("URL is missing parts");
}
@@ -100,7 +100,7 @@ export default class RiotPermalinkConstructor extends PermalinkConstructor {
const eventId = secondaryParts[0];
const query = secondaryParts.length > 1 ? secondaryParts[1] : "";
- // TODO: Verify Riot works with via args
+ // TODO: Verify Element works with via args
const via = query.split("via=").filter(p => !!p);
return PermalinkParts.forEvent(entity, eventId, via);
diff --git a/src/utils/permalinks/Permalinks.js b/src/utils/permalinks/Permalinks.js
index 3e510ffee9..0f54bcce05 100644
--- a/src/utils/permalinks/Permalinks.js
+++ b/src/utils/permalinks/Permalinks.js
@@ -19,7 +19,7 @@ import isIp from "is-ip";
import * as utils from 'matrix-js-sdk/src/utils';
import SpecPermalinkConstructor, {baseUrl as matrixtoBaseUrl} from "./SpecPermalinkConstructor";
import PermalinkConstructor, {PermalinkParts} from "./PermalinkConstructor";
-import RiotPermalinkConstructor from "./RiotPermalinkConstructor";
+import ElementPermalinkConstructor from "./ElementPermalinkConstructor";
import matrixLinkify from "../../linkify-matrix";
import SdkConfig from "../../SdkConfig";
@@ -325,7 +325,7 @@ export function tryTransformPermalinkToLocalHref(permalink: string): string {
return m[1];
}
- // A bit of a hack to convert permalinks of unknown origin to Riot links
+ // A bit of a hack to convert permalinks of unknown origin to Element links
try {
const permalinkParts = parsePermalink(permalink);
if (permalinkParts) {
@@ -357,7 +357,7 @@ export function getPrimaryPermalinkEntity(permalink: string): string {
const m = permalink.match(matrixLinkify.VECTOR_URL_PATTERN);
if (m) {
// A bit of a hack, but it gets the job done
- const handler = new RiotPermalinkConstructor("http://localhost");
+ const handler = new ElementPermalinkConstructor("http://localhost");
const entityInfo = m[1].split('#').slice(1).join('#');
permalinkParts = handler.parsePermalink(`http://localhost/#${entityInfo}`);
}
@@ -375,20 +375,20 @@ export function getPrimaryPermalinkEntity(permalink: string): string {
}
function getPermalinkConstructor(): PermalinkConstructor {
- const riotPrefix = SdkConfig.get()['permalinkPrefix'];
- if (riotPrefix && riotPrefix !== matrixtoBaseUrl) {
- return new RiotPermalinkConstructor(riotPrefix);
+ const elementPrefix = SdkConfig.get()['permalinkPrefix'];
+ if (elementPrefix && elementPrefix !== matrixtoBaseUrl) {
+ return new ElementPermalinkConstructor(elementPrefix);
}
return new SpecPermalinkConstructor();
}
export function parsePermalink(fullUrl: string): PermalinkParts {
- const riotPrefix = SdkConfig.get()['permalinkPrefix'];
+ const elementPrefix = SdkConfig.get()['permalinkPrefix'];
if (fullUrl.startsWith(matrixtoBaseUrl)) {
return new SpecPermalinkConstructor().parsePermalink(fullUrl);
- } else if (riotPrefix && fullUrl.startsWith(riotPrefix)) {
- return new RiotPermalinkConstructor(riotPrefix).parsePermalink(fullUrl);
+ } else if (elementPrefix && fullUrl.startsWith(elementPrefix)) {
+ return new ElementPermalinkConstructor(elementPrefix).parsePermalink(fullUrl);
}
return null; // not a permalink we can handle
diff --git a/test/components/structures/MessagePanel-test.js b/test/components/structures/MessagePanel-test.js
index 235ae94010..f40f8c5187 100644
--- a/test/components/structures/MessagePanel-test.js
+++ b/test/components/structures/MessagePanel-test.js
@@ -38,6 +38,7 @@ import { configure, mount } from "enzyme";
import Velocity from 'velocity-animate';
import MatrixClientContext from "../../../src/contexts/MatrixClientContext";
import RoomContext from "../../../src/contexts/RoomContext";
+import DMRoomMap from "../../../src/utils/DMRoomMap";
configure({ adapter: new Adapter() });
@@ -52,7 +53,7 @@ class WrappedMessagePanel extends React.Component {
render() {
return
-
+ ;
@@ -79,6 +80,8 @@ describe('MessagePanel', function() {
// complete without this even if we mock the clock and tick it
// what should be the correct amount of time).
Velocity.mock = true;
+
+ DMRoomMap.makeShared();
});
afterEach(function() {
@@ -433,8 +436,8 @@ describe('MessagePanel', function() {
const rm = res.find('.mx_RoomView_myReadMarker_container').getDOMNode();
const rows = res.find('.mx_RoomView_MessageList').children();
- expect(rows.length).toEqual(6);
- expect(rm.previousSibling).toEqual(rows.at(4).getDOMNode());
+ expect(rows.length).toEqual(7); // 6 events + the NewRoomIntro
+ expect(rm.previousSibling).toEqual(rows.at(5).getDOMNode());
// read marker should be hidden given props and at the last event
expect(isReadMarkerVisible(rm)).toBeFalsy();
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 e05edbc051..35b9d5879e 100644
--- a/test/end-to-end-tests/src/usecases/create-room.js
+++ b/test/end-to-end-tests/src/usecases/create-room.js
@@ -64,7 +64,7 @@ async function createDm(session, invitees) {
const startChatButton = await dmsSublist.$(".mx_RoomSublist_auxButton");
await startChatButton.click();
- const inviteesEditor = await session.query('.mx_InviteDialog_editor textarea');
+ const inviteesEditor = await session.query('.mx_InviteDialog_editor input');
for (const target of invitees) {
await session.replaceInputText(inviteesEditor, target);
await session.delay(1000); // give it a moment to figure out a suggestion
diff --git a/test/end-to-end-tests/src/usecases/invite.js b/test/end-to-end-tests/src/usecases/invite.js
index 75ebc61a88..07c9595fe2 100644
--- a/test/end-to-end-tests/src/usecases/invite.js
+++ b/test/end-to-end-tests/src/usecases/invite.js
@@ -31,7 +31,7 @@ module.exports = async function invite(session, userId) {
}
const inviteButton = await session.query(".mx_MemberList_invite");
await inviteButton.click();
- const inviteTextArea = await session.query(".mx_InviteDialog_editor textarea");
+ const inviteTextArea = await session.query(".mx_InviteDialog_editor input");
await inviteTextArea.type(userId);
const selectUserItem = await session.query(".mx_InviteDialog_roomTile");
await selectUserItem.click();
diff --git a/test/test-utils.js b/test/test-utils.js
index d006eee823..c8e623b1d9 100644
--- a/test/test-utils.js
+++ b/test/test-utils.js
@@ -242,6 +242,7 @@ export function mkStubRoom(roomId = null) {
setBlacklistUnverifiedDevices: jest.fn(),
on: jest.fn(),
removeListener: jest.fn(),
+ getDMInviter: jest.fn(),
};
}
diff --git a/yarn.lock b/yarn.lock
index 4d4152c659..3c163b7c2f 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -6506,8 +6506,8 @@ mathml-tag-names@^2.0.1:
integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==
"matrix-js-sdk@github:matrix-org/matrix-js-sdk#develop":
- version "9.0.1"
- resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/f8863d5c2488a31a093f5a1b11761d7ac3829470"
+ version "9.1.0"
+ resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/5ac00e346593f29f324b3af8e322928a6e1c427a"
dependencies:
"@babel/runtime" "^7.11.2"
another-json "^0.2.0"
@@ -6532,10 +6532,10 @@ matrix-react-test-utils@^0.2.2:
resolved "https://registry.yarnpkg.com/matrix-react-test-utils/-/matrix-react-test-utils-0.2.2.tgz#c87144d3b910c7edc544a6699d13c7c2bf02f853"
integrity sha512-49+7gfV6smvBIVbeloql+37IeWMTD+fiywalwCqk8Dnz53zAFjKSltB3rmWHso1uecLtQEcPtCijfhzcLXAxTQ==
-matrix-widget-api@^0.1.0-beta.5:
- version "0.1.0-beta.5"
- resolved "https://registry.yarnpkg.com/matrix-widget-api/-/matrix-widget-api-0.1.0-beta.5.tgz#dd7f24a177aa590d812bd4e92e2c3ac225c5557e"
- integrity sha512-J3GBJtVMFuEM/EWFylc0IlkPjdgmWxrkGYPaZ0LSmxp+OlNJxYfnWPR6F6HveW+Z8C1i0vq+BTueofSqKv2zDg==
+matrix-widget-api@^0.1.0-beta.8:
+ version "0.1.0-beta.8"
+ resolved "https://registry.yarnpkg.com/matrix-widget-api/-/matrix-widget-api-0.1.0-beta.8.tgz#17e85c03c46353373890b869b1fd46162bdb0026"
+ integrity sha512-sWqyWs0RQqny/BimZUOxUd9BTJBzQmJlJ1i3lsSh1JBygV+aK5xQsONL97fc4i6/nwQPK72uCVDF+HwTtkpAbQ==
dependencies:
events "^3.2.0"